(57)【要約】  通常のタグ計算の効率を損なうことなく、あらゆるブロック単位の編集に対応できるインクリメンタルなタグ計算を可能としたインクリメンタルＭＡＣタグ生成装置を提供する。パディング部１１は、複数のブロックに分割された平文Ｍの最終ブロックのパディングを行う。キャッシュ参照付き並列暗号化部１２は、平文Ｍの最終ブロック以外のブロック、キャッシュされた平文Ｍ’、及びＭ’を暗号化した中間変数Ｓ’を入力し、中間変数Ｓを算出する。スクランブルハッシュ部１３は、スクランブル処理を行い、ハッシュ値Ｖを算出する。タグ生成部１４は、ハッシュ値Ｖを暗号化してタグを算出する。
2013065241.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロックに分割された平文Ｍの最終ブロックを入力し、当該平文Ｍの最終ブロックの長さが所定のビット数に満たない場合にパディングを行うパディング手段と、
前記平文Ｍの最終ブロック以外のブロック、キャッシュされた平文Ｍ’、及びＭ’を暗号化した中間変数Ｓ’を入力し、中間変数Ｓを算出するキャッシュ参照付き並列暗号化手段と、
前記中間変数Ｓのスクランブル処理を行い、スクランブル処理された前記中間変数Ｓの各ブロック、及び前記パディング手段により出力された前記平文Ｍの最終ブロックの排他的論理和であるハッシュ値Ｖを算出するスクランブルハッシュ手段と、
前記パディング手段によるパディングの有無をパラメータとして前記ハッシュ値Ｖを暗号化してタグを算出するタグ生成手段とを備え、
前記キャッシュ参照付き並列暗号化手段は、
前記平文Ｍの最終ブロック以外のブロックと前記平文Ｍ’の各ブロックとを比較し、
前記平文Ｍのブロックと一致する前記平文Ｍ’のブロックが存在する場合、当該平文Ｍ’のブロックに対応する前記中間変数Ｓ’のブロックを前記中間変数Ｓに用い、
前記平文Ｍのブロックと一致する前記平文Ｍ’のブロックが存在しない場合、当該平文Ｍのブロックを暗号化して前記中間変数Ｓに用いる
ことを特徴とするインクリメンタルＭＡＣタグ生成装置。
【請求項２】
スクランブルハッシュ手段のスクランブル処理は、
入力された中間変数Ｓの各ブロックの特定の素数長の部分系列を巡回シフトさせる
請求項１に記載のインクリメンタルＭＡＣタグ生成装置。
【請求項３】
スクランブルハッシュ手段のスクランブル処理は、
入力された中間変数Ｓの各ブロックに、特定の有限体上の定数であってそれぞれ異なる数値を乗算する
請求項１に記載のインクリメンタルＭＡＣタグ生成装置。
【請求項４】
スクランブルハッシュ手段のスクランブル処理は、
入力された中間変数Ｓの各ブロックを、線形シフトレジスタへ与え、入力されたブロックの数と同数回動作させる
請求項１に記載のインクリメンタルＭＡＣタグ生成装置。
【請求項５】
請求項１から請求項４のうちのいずれか１項に記載されたインクリメンタルＭＡＣタグ生成装置と、
平文Ｍ、当該平文Ｍに対応したタグＴ、キャッシュされた平文Ｍ’及びＭ’を暗号化した中間変数Ｓ’を入力する入力手段と、
前記平文Ｍ、前記平文Ｍ’及び前記中間変数Ｓ’を用いて前記インクリメンタルＭＡＣタグ生成装置により生成されたローカルタグＺと前記入力手段により入力されたタグＴとを比較し検証するローカルタグ検証手段と、
前記ローカルタグ検証手段の検証結果を出力する出力手段とを備えた
ことを特徴とするメッセージ認証装置。
【請求項６】
複数のブロックに分割された平文Ｍの最終ブロックを入力し、当該平文Ｍの最終ブロックの長さが所定のビット数に満たない場合にパディングを行い、
前記平文Ｍの最終ブロック以外のブロック、キャッシュされた平文Ｍ’、及びＭ’を暗号化した中間変数Ｓ’を入力し、
前記平文Ｍの最終ブロック以外のブロックと前記平文Ｍ’の各ブロックとを比較し、
前記平文Ｍのブロックと一致する前記平文Ｍ’のブロックが存在する場合、当該平文Ｍ’のブロックに対応する前記中間変数Ｓ’のブロックを前記中間変数Ｓに用い、
前記平文Ｍのブロックと一致する前記平文Ｍ’のブロックが存在しない場合、当該平文Ｍのブロックを暗号化して中間変数Ｓを算出し、
前記中間変数Ｓへスクランブル処理を行い、スクランブル処理された前記中間変数Ｓの各ブロック、及び前記平文Ｍの最終ブロックの排他的論理和であるハッシュ値Ｖを算出し、
パディングの有無をパラメータとして前記ハッシュ値Ｖを暗号化してタグを算出する
ことを特徴とするインクリメンタルＭＡＣタグ生成方法。
【請求項７】
コンピュータに、
複数のブロックに分割された平文Ｍの最終ブロックを入力し、当該平文Ｍの最終ブロックの長さが所定のビット数に満たない場合にパディングを行う処理と、
前記平文Ｍの最終ブロック以外のブロック、キャッシュされた平文Ｍ’、及びＭ’を暗号化した中間変数Ｓ’を入力し、
前記平文Ｍの最終ブロック以外のブロックと前記平文Ｍ’の各ブロックとを比較し、
前記平文Ｍのブロックと一致する前記平文Ｍ’のブロックが存在する場合、当該平文Ｍ’のブロックに対応する前記中間変数Ｓ’のブロックを前記中間変数Ｓに用い、
前記平文Ｍのブロックと一致する前記平文Ｍ’のブロックが存在しない場合、当該平文Ｍのブロックを暗号化して中間変数Ｓを算出する処理と、
前記中間変数Ｓへスクランブル処理を行い、スクランブル処理された前記中間変数Ｓの各ブロック、及び前記平文Ｍの最終ブロックの排他的論理和であるハッシュ値Ｖを算出する処理と、
パディングの有無をパラメータとして前記ハッシュ値Ｖを暗号化してタグを算出する処理と
を実行させることを特徴とするインクリメンタルＭＡＣタグ生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共通鍵を用いたメッセージ認証に用いられるインクリメンタルＭＡＣタグ生成装置、方法及びプログラム並びにメッセージ認証装置に関する。
【背景技術】
【０００２】
メッセージ認証コード（Message Authentication Code、以下、ＭＡＣと呼ぶ）方式は、メッセージに対して秘密鍵を知るものだけが計算できるタグを付与することで、メッセージが正当であることを保証する方式である。ＭＡＣ方式を用いれば、例えば、秘密鍵を共有した２者の通信において、通信の間に行われた、第３者による改ざんを検知することが可能となる。【０００３】
具体的には、例えば、メッセージの送信者と受信者で共有される秘密鍵をＫとし、平文ＭについてＭＡＣ関数ＦへＭとＫを与えることで計算されるタグをＴ＝ＭＡＣ（Ｋ，Ｍ）とする。そして、受信者が例えば平文Ｍ’とタグＴ’を受け取った場合、Ｍ’と共有する鍵ＫとからタグＴ''を計算する。そして、受信したタグＴ'と計算したＴ''とが一致した場合、平文Ｍ'が正当な送信者から送られたものであると判断する。【０００４】
通常のＭＡＣ方式では、ある平文Ｍに対して既にタグＴ＝ＭＡＣ（Ｋ，Ｍ）を計算してあったとしても、他のいかなる平文Ｍ’についても、タグの再計算を一から行う必要がある。そのため、平文Ｍ’が平文Ｍの一部を変更したものであっても、平文Ｍ’に対応するタグＴ’＝ＭＡＣ（Ｋ，Ｍ）の計算を高速化することは難しい。【０００５】
一方、送られたＭ’が、予め送られていたＭに特定の編集処理を施して得られたメッセージである場合、Ｍについて行ったタグＴの計算結果を再利用して、Ｍ’についてのタグＴ''の計算を高速に処理することが可能となる方式がある。このようなＭＡＣ方式は、（その処理について）インクリメンタルであると呼ばれる。【０００６】
インクリメンタルＭＡＣ方式では、タグＴの計算結果が再利用される。よって、インクリメンタルＭＡＣ方式は、メッセージが部分的、逐次的に変化していく場合や、比較的変化の少ないメッセージが連続する場合において、計算量の大幅な削減を可能とする。具体的な応用例として、インクリメンタルＭＡＣ方式は、コンピュータ上の書類の真正性保証や、ゲーム機などのハードウェアにおける大容量のメモリをハッキングから保護する用途などに用いられる。【０００７】
インクリメンタルＭＡＣとして、非特許文献１に記載されたＰＭＡＣ（Ｐａｒａｌｌｅｌｉｚａｂｌｅ  ＭＡＣ）や非特許文献２に記載されたＸＯＲＭＡＣなどが知られている。ここで、非特許文献１に記載されているＰＭＡＣを説明する。図８は、ＰＭＡＣを用いた一般的なタグ生成装置の動作を示すブロック図である。ｎビットブロック暗号Ｅ（Ｋ，＊）を部品とする。メッセージがＭ＝（Ｍ［１］，Ｍ［２］，．．．，Ｍ［Ｌ］)、各ブロックＭ［１］，．．．，Ｍ［Ｌ−１］がｎビット、Ｍ［Ｌ］がｎビット以下とする。その場合、タグＴを下記のように求めることができる。【０００８】
（式ＰＭＡＣ）
Ｓ［ｉ］＝Ｅ（Ｋ，ｆ＿ｉ（Ｕ）＋Ｍ［ｉ］）  ｆｏｒ  ｉ＝１，．．．，Ｌ−１
Ｓ［Ｌ］＝Ｍ［Ｌ］  ｉｆ｜Ｍ［Ｌ］｜＝ｎ，  Ｓ［Ｌ］＝Ｍ［Ｌ］||０＊  ｏｔｈｅｒｗｉｓｅ
Ｖ＝Ｓ［１］＋Ｓ［１］＋．．．＋Ｓ［Ｌ］
Ｔ＝Ｅ（Ｋ，Ｖ＋ｆｆ＿０（Ｕ））  ｉｆ｜Ｍ［Ｌ］｜＝ｎ，  Ｔ＝Ｅ（Ｋ，Ｖ＋ｆｆ＿１（Ｕ））  ｏｔｈｅｒｗｉｓｅ【０００９】
ここで、＋はビットごとの排他的論理和（ＸＯＲ）を表す。||はビット系列の連結を表す。｜Ｍ［Ｌ］｜はＭ［Ｌ］のビット長を表す。また、Ｅ（Ｋ，Ｍ［ｉ］）はブロック暗号Ｅの鍵Ｋによる平文Ｍ［ｉ］の暗号化、Ｕは定数０＾ｎ（オールゼロのｎビット系列）の暗号文Ｅ（Ｋ，０＾ｎ）を表す。関数ｆ＿ｉは入力値と有限体上の定数２＾（ｉ−１）との乗算を表す。関数ｆｆ＿ｉ（ただし、ｉ＝０，１）は入力値と有限体上の定数３＾（ｉ＋１）との乗算に相当する。なお、ＰＭＡＣは一般的なＣＢＣ−ＭＡＣ（Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ−ＭＡＣ）とは異なり、並列実行可能である。【００１０】
上述したようにＰＭＡＣにおいては、ブロックの変更に関してインクリメンタルな処理が可能である。ただし、Ｍ’のあるブロックが、予め与えられたＭの該当するブロックと異なる場合、再計算を行う必要がある。例えば、（Ｍ＝（Ｍ［１］，Ｍ［２］，．．．，Ｍ［Ｌ］），Ｔ＝ＭＡＣ（Ｋ，Ｍ））が与えられたもとで、Ｍ’＝（Ｍ’［１］，Ｍ［２］，．．．，Ｍ［Ｌ］），  Ｍ’［１］≠Ｍ［１］なる平文Ｍ’のタグＴ’は、次式のように求められる。【００１１】
（式ＰＭＡＣ−ｉｎｃ）
Ｖ＝Ｄ（Ｋ，Ｔ）＋ｆｆ＿ｗ（Ｕ）
Ｖ’＝Ｖ＋Ｅ（Ｋ，ｆ＿１（Ｕ）＋Ｍ［１］）＋Ｅ（Ｋ，ｆ＿１（Ｕ）＋Ｍ’［１］）
Ｔ’＝Ｅ（Ｋ，Ｖ’＋ｆｆ＿ｗ（Ｕ））【００１２】
Ｄ（Ｋ，＊）は、ブロック暗号の復号関数である。ｗ（０又は１）は、｜Ｍ［Ｌ］｜の長さに依存する。従って、再計算にはブロック暗号による１回の復号及び数回の暗号化処理のみを要する。一般には、再計算のコストは、元のメッセージと処理したいメッセージでの、ブロック単位でのハミング重み（違い）に比例する。
【先行技術文献】
【非特許文献】
【００１３】
【非特許文献１】P. Rogaway. Efficient Instantiations of Tweakable Blockciphers and Refinements to Modes OCB and PMAC. Advances in Cryptology- ASIACRYPT'04. LNCS 3329, pp. 16-31, 2004.
【非特許文献２】M. Bellare, O. Goldreich, and S. Goldwasser. Incremental Cryptography and Application to Virus Protection. Proceedings of the 27th ACM Symposium on the Theory of Computing, May 1995
【非特許文献３】David McGrew, Efficient Authentication of large, dynamic data sets using Galois/Counter Mode (GCM), 3rd International IEEE Security in Storage Workshop, December 13, 2005.
【非特許文献４】Marc Fischlin: Incremental Cryptography and Memory Checkers. EUROCRYPT 1997: 293-408
【非特許文献５】T. Iwata, K. Kurosawa, OMAC: One-Key CBC MAC、Fast Software Encryption, Internatioanl Workshop, FSE 2003, Lecture Notes in Computer Science; Vol. 2887, Feb. 2003
【非特許文献６】T. Iwata: New Blockcipher Modes of Operation with Beyond the Birthday Bound Security. FSE 2006: 310-327.
【非特許文献７】Cees J.A. Jansen,Stream Cipher Design based on Jumping Finite State Machines, Cryptology ePrint Archive: Report 2005/267
【発明の概要】
【発明が解決しようとする課題】
【００１４】
しかし、上記ＰＭＡＣの例において、マスク変数ｆ＿ｉがＥ（Ｋ，＊）への入力値Ｍを暗号化の前に攪拌する。具体的には、ＰＭＡＣでは、ブロックの変更以外の処理、例えばブロックの挿入、削除、カットアンドペーストなどが行われる場合がある。その場合、ＰＭＡＣでは、インクリメンタルな処理ができない。例えば、Ｍ＝（Ｍ［１］，Ｍ［２］，．．．，Ｍ［Ｌ］）のタグ計算を行ったのち、先頭ブロックを削除したＭ’＝（Ｍ［２］，．．．，Ｍ［Ｌ］）についてタグ計算を行う場合、ＭとＭ’でのＥ（Ｋ，＊）への入力値はそれぞれ、
Ｍ：ｆ＿１＋Ｍ［１］，ｆ＿２＋Ｍ［２］，．．．，ｆ＿Ｌ−１＋Ｍ［Ｌ−１］
Ｍ’：ｆ＿１＋Ｍ［２］，ｆ＿２＋Ｍ［３］，．．．，ｆ＿Ｌ−１＋Ｍ［Ｌ−２］
となる。【００１５】
上記の例において、Ｍ及びＭ’のそれぞれの対応するブロックの値は、Ｍ［１］＝Ｍ［２］＝Ｍ［３］などの特殊な関係がない限り、異なる値となる。従って、Ｍでのタグ計算結果をＭ’でのタグ計算に使用することは一般に不可能であるという問題点がある。これは、メッセージ受信者の装置内部での各ブロックの暗号化結果をキャッシュしておいたとしても同様である。非特許文献２に記載されたＸＯＲＭＡＣ及び非特許文献３に記載されたＧＭＡＣなどの他の既存のインクリメンタルＭＡＣにおいても同様の問題点がある。【００１６】
また，非特許文献４に記載されたＩｎｃＸＭＡＣＣなどのように、ブロック単位の変更以外のいくつかの処理に対応した方法もある。しかし、インクリメンタルでない通常のタグ計算において、一般的な方式と比べ効率が悪いなどの問題点がある上、ブロック単位の編集全てに対応はできていない。【００１７】
なお、非特許文献５には、メッセージをｎビット単位のブロックに分割し、あるブロックがｎビットに満たない場合にパディングを行う方法が記載されている。また、非特許文献６には、暗号化関数の例として、ブロック暗号ベースの擬似ランダム関数が記載されている。また、非特許文献７には、後述するスクランブル関数に用いられる処理の例として、線形シフトレジスタが記載されている。【００１８】
以上のように、一般的なメッセージ認証方法としては、効率は良いがブロック単位の変更にのみ対応する方法、又はブロック単位での変更以外の処理にも対応可能であるが通常のタグ計算の効率が悪い方法しか知られていない。【００１９】
本発明は、通常のタグ計算の効率を損なうことなく、あらゆるブロック単位の編集に対応できるインクリメンタルなタグ計算を可能としたインクリメンタルＭＡＣタグ生成装置、方法及びプログラム並びにメッセージ認証装置を提供することを目的とする。
【課題を解決するための手段】
【００２０】
本発明によるインクリメンタルＭＡＣタグ生成装置は、複数のブロックに分割された平文Ｍの最終ブロックを入力し、当該平文Ｍの最終ブロックの長さが所定のビット数に満たない場合にパディングを行うパディング手段と、平文Ｍの最終ブロック以外のブロック、キャッシュされた平文Ｍ’、及びＭ’を暗号化した中間変数Ｓ’を入力し、中間変数Ｓを算出するキャッシュ参照付き並列暗号化手段と、中間変数Ｓへスクランブル処理を行い、スクランブル処理された中間変数Ｓの各ブロック、及びパディング手段により出力された平文Ｍの最終ブロックの排他的論理和であるハッシュ値Ｖを算出するスクランブルハッシュ手段と、パディング手段によるパディングの有無をパラメータとしてハッシュ値Ｖを暗号化してタグを算出するタグ生成手段とを備え、キャッシュ参照付き並列暗号化手段は、平文Ｍの最終ブロック以外のブロックと平文Ｍ’の各ブロックとを比較し、平文Ｍのブロックと一致する平文Ｍ’のブロックが存在する場合、当該平文Ｍ’のブロックに対応する中間変数Ｓ’のブロックを中間変数Ｓに用い、平文Ｍのブロックと一致する平文Ｍ’のブロックが存在しない場合、当該平文Ｍのブロックを暗号化して中間変数Ｓに用いることを特徴とする。【００２１】
本発明によるインクリメンタルＭＡＣタグ生成方法は、複数のブロックに分割された平文Ｍの最終ブロックを入力し、当該平文Ｍの最終ブロックの長さが所定のビット数に満たない場合にパディングを行い、平文Ｍの最終ブロック以外のブロック、キャッシュされた平文Ｍ’、及びＭ’を暗号化した中間変数Ｓ’を入力し、平文Ｍの最終ブロック以外のブロックと平文Ｍ’の各ブロックとを比較し、平文Ｍのブロックと一致する平文Ｍ’のブロックが存在する場合、当該平文Ｍ’のブロックに対応する中間変数Ｓ’のブロックを中間変数Ｓに用い、平文Ｍのブロックと一致する平文Ｍ’のブロックが存在しない場合、当該平文Ｍのブロックを暗号化して中間変数Ｓを算出し、中間変数Ｓへスクランブル処理を行い、スクランブル処理された中間変数Ｓの各ブロック、及び平文Ｍの最終ブロックの排他的論理和であるハッシュ値Ｖを算出し、パディングの有無をパラメータとしてハッシュ値Ｖを暗号化してタグを算出することを特徴とする。【００２２】
本発明によるインクリメンタルＭＡＣタグ生成プログラムは、コンピュータに、複数のブロックに分割された平文Ｍの最終ブロックを入力し、当該平文Ｍの最終ブロックの長さが所定のビット数に満たない場合にパディングを行う処理と、平文Ｍの最終ブロック以外のブロック、キャッシュされた平文Ｍ’、及びＭ’を暗号化した中間変数Ｓ’を入力し、平文Ｍの最終ブロック以外のブロックと平文Ｍ’の各ブロックとを比較し、平文Ｍのブロックと一致する平文Ｍ’のブロックが存在する場合、当該平文Ｍ’のブロックに対応する中間変数Ｓ’のブロックを中間変数Ｓに用い、平文Ｍのブロックと一致する平文Ｍ’のブロックが存在しない場合、当該平文Ｍのブロックを暗号化して中間変数Ｓを算出する処理と、中間変数Ｓへスクランブル処理を行い、スクランブル処理された中間変数Ｓの各ブロック、及び平文Ｍの最終ブロックの排他的論理和であるハッシュ値Ｖを算出する処理と、パディングの有無をパラメータとしてハッシュ値Ｖを暗号化してタグを算出する処理とを実行させることを特徴とする。
【発明の効果】
【００２３】
本発明によれば、通常のタグ計算の効率を損なうことなく、あらゆるブロック単位の編集に対応できるインクリメンタルなタグ計算を可能とすることができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の実施形態１のインクリメンタルＭＡＣタグ生成装置の構成を示すブロック図である。
【図２】本発明の実施形態１のインクリメンタルＭＡＣタグ生成装置の処理を示すブロック図である。
【図３】本発明の実施形態１のインクリメンタルＭＡＣタグ生成装置のデータの流れを示すブロック図である。
【図４】本発明の実施形態１のインクリメンタルＭＡＣタグ生成装置の動作を示すフローチャートである。
【図５】本発明の実施形態２のメッセージ認証装置の構成を示すブロック図である。
【図６】本発明の実施形態２のメッセージ認証装置の動作を示すフローチャートである。
【図７】本発明のインクリメンタルＭＡＣタグ生成装置の主要部を示すブロック図である。
【図８】ＰＭＡＣを用いた一般的なタグ生成装置の動作を示すブロック図である。
【発明を実施するための形態】
【００２５】
以下、本発明の実施形態を図面を参照して説明する。
【００２６】
実施形態１．
図１は、本発明の実施形態１のインクリメンタルＭＡＣタグ生成装置の構成を示すブロック図である。図２は、本発明の実施形態１のインクリメンタルＭＡＣタグ生成装置の処理を示すブロック図である。図３は、本発明の実施形態１のインクリメンタルＭＡＣタグ生成装置のデータの流れを示すブロック図である。なお、以下の説明において、特に指定しない限り、＋はビットごとの排他的論理和を表すものとし、メッセージの１ブロックの長さはｎビットとする。
【００２７】
本実施形態のインクリメンタルＭＡＣタグ生成装置１０は、パディング手段１０１と、キャッシュ参照付き並列暗号化手段１０２と、スクランブルハッシュ手段１０３と、タグ生成手段１０４とを含む。また、インクリメンタルＭＡＣタグ生成装置１０には、入力手段１００と、出力手段１０５とが接続されている。インクリメンタルＭＡＣタグ生成装置１０は、例えばＣＰＵ、メモリ及びディスク等により実現される。インクリメンタルＭＡＣタグ生成装置１０の各手段は、例えば、プログラムをコンピュータのディスクに格納しておき、このプログラムをＣＰＵ上で動作させることにより実現される。
【００２８】
入力手段１００は、認証の対象となる平文Ｍ＝（Ｍ［１］，．．．，Ｍ［Ｌ］）と、キャッシュされた平文Ｍ’＝（Ｍ’［１］，．．．，Ｍ’［Ｎ］）と、キャッシュされた中間変数Ｓ’＝（Ｓ’［１］，．．．，Ｓ’［Ｎ］）とを入力する。平文Ｍ及び平文Ｍ’は、ｎビットのブロック単位に分割されている。入力手段１００は、例えばキーボードなどの文字入力装置により実現される。また、入力手段１００は、例えば、コンピュータのＬＡＮやＵＳＢなどの通信インタフェース、又はプログラム上の入力インタフェースであってもよい。
【００２９】
パディング手段１０１は、入力手段１００から、平文Ｍの最終ブロックＭ［Ｌ］を入力し、ブロックＭ［Ｌ］のブロック長がｎ未満であった場合、ｎビットまでパディングを行う。具体的には、パディング関数をｐａｄとし、メッセージの最終ブロックをＭ［Ｌ］とした場合、パディング手段１０１は、中間変数の最終ブロックをＳ［Ｌ］＝ｐａｄ（Ｍ［Ｌ］）とし、これを出力する。パディング手段１０１のパディングの形式は任意であり、例えば、全ゼロを連結するものでよい。ただし、最後のブロックがｎビットちょうどであった場合には何も処理を行わない。具体的には、Ｍ［Ｌ］がｎビットの場合、Ｓ［Ｌ］＝Ｍ［Ｌ］とし、ｎビット未満の場合、例えばＳ［Ｌ］＝Ｍ［Ｌ］｜｜０＊(｜｜０＊はゼロ詰めを表す）とする。これは、非特許文献５に記載されたＯＭＡＣ等で用いられる、標準的なパディングの形式である。
【００３０】
キャッシュ参照付き並列暗号化手段１０２は、キャッシュを参照しつつ、入力した平文Ｍを必要なブロックについてのみブロック単位で並列に暗号化する。具体的には、まず入力手段１００から、平文Ｍ＝（Ｍ［１］，．．．，Ｍ［Ｌ−１］）、キャッシュされた平文Ｍ’及びキャッシュされた中間変数Ｓ’＝（Ｓ’［１］，．．．，Ｓ’［Ｎ］）を入力する。
【００３１】
そして、秘密鍵をＫとし、暗号化関数をＥ（Ｋ，＊）とした場合、キャッシュ参照付き並列暗号化手段１０２は、Ｍの各ブロックＭ［１］，．．．，Ｍ［Ｌ−１］について、キャッシュされた平文Ｍ’＝（Ｍ’［１］，．．．，Ｍ’［Ｎ］）（ただしＭ’［１］，．．．，Ｍ’［Ｎ］は全てｎビット）及びキャッシュされた中間変数Ｓ’＝（Ｓ’［１］，．．．，Ｓ’［Ｎ］）（ただしＳ’［ｉ］＝Ｅ（Ｋ，Ｍ’［ｉ］），  ｆｏｒ  ａｌｌ  ｉ＝１，．．．，Ｎ）を用いて次式Ｓｃｏｍｐのように中間変数Ｓ［ｉ］を計算する。
【００３２】
（式Ｓｃｏｍｐ）
Ｓ［ｉ］＝Ｓ’［ｊ］  ｉｆ  Ｍ［ｉ］＝Ｍ’［ｊ］  ｆｏｒ  ｓｏｍｅ  ｊ，Ｓ［ｉ］＝Ｅ（Ｋ，Ｍ［ｉ］）  ｏｔｈｅｒｗｉｓｅ
キャッシュ参照付き並列暗号化手段１０２は、この処理をｉ＝１，．．．，Ｌ−１について行い、中間変数Ｓ＝（Ｓ［１］，．．．，Ｓ［Ｌ−１］）を出力する。この場合、Ｓ［ｉ］もＭ［ｉ］もｎビットであり、Ｅの処理としてはｎビットブロック暗号の暗号化が考えられる。この処理は、Ｍ［１］，．．．，Ｍ［Ｌ−１］に対するＥＣＢ(Electric Code Book)モードに相当する。
【００３３】
このように、キャッシュ参照付き並列暗号化手段１０２は、キャッシュされた平文Ｍ’［ｊ］の全てのブロックの中から、送られた平文Ｍ［ｉ］のブロックと一致するものを探して、一致すればそのＭ’［ｊ］に該当するＳ’［ｊ］を使用する。従って、Ｍ［ｉ］がブロック単位の変更以外の処理、例えばブロックの挿入、削除、カットアンドペーストなどが行われていたとしても、インクリメンタルなタグ計算を行うことが可能になる。
【００３４】
あるいは、Ｍのブロックを複数、ｃ個まとめてＳ［ｉ］＝Ｅ（Ｋ，（Ｍ［ｃ×（ｉ−１）＋１］，Ｍ［（ｃ×（ｉ−１））＋２］，．．，Ｍ［（ｃ×（ｉ−１））＋ｃ］）としてもよい（ここで、＋は和を表している）。キャッシュ参照付き並列暗号化手段１０２は、この処理をｉ＝１，．．．，Ｌ／ｃ−１について行い、中間変数Ｓ＝（Ｓ［１］，．．．，Ｓ［Ｌ／ｃ−１］）を出力する。Ｓ［ｉ］もＭ［ｉ］もｎビットであるが、Ｅの入力長は出力長よりも長い。このような場合、Ｅの処理としてはｎビットブロック暗号によるＣＢＣ−ＭＡＣやＣＭＡＣなどが考えられる。
【００３５】
さらに、Ｅの入力はｎビットのＭ［ｉ］であるが、出力であるＳ［ｉ］の長さがｎビットより長いケースも考えられる。このような場合、Ｅの処理としてはＩＶ（initialization vector）付きストリーム暗号の鍵ストリーム生成関数とし、ＩＶの代わりにＭ［ｉ］を入力とし、出力をＳ［ｉ］とすることが可能である。あるいは、非特許文献６に記載されているＣＥＮＣなど、ブロック暗号ベースの疑似ランダム関数を用いることも可能である。いずれの場合においても、キャッシュされた平文と中間変数が存在しない場合はすべての平文ブロックを暗号化すればよい。
【００３６】
スクランブルハッシュ手段１０３は、並列暗号化手段１０２が出力した中間変数Ｓをブロックごとにスクランブルし、ハッシュ値Ｖを求める。スクランブルハッシュ手段１０３は、具体的には、Ｓ＝（Ｓ［１］，．．．，Ｓ［Ｌ−１］）であった場合、スクランブル関数ｇ＿ｉ  ｆｏｒ  ｉ＝１，．．．，Ｌ−１を用いて次式のようにハッシュ値Ｖを求め、出力する。
【００３７】
（式ｓｃｒｍ）
Ｖ＝ｇ＿１（Ｓ［１］）＋ｇ＿２（Ｓ［２］）＋．．．＋ｇ＿Ｌ−１（Ｓ［Ｌ−１］）＋Ｓ［Ｌ］
ここでＳ［Ｌ］は、パディング手段１０１から出力されたものであり、メッセージの最終ブロックＭ［Ｌ］へ必要に応じパディングを行った値である。
【００３８】
ここで、スクランブル関数ｇ＿ｉについて、具体的な例を用いて詳細に説明する。スクランブル関数ｇ＿ｉ  ｆｏｒ  ｉ＝１，．．．，Ｌ−１、ｕ＿０及びｕ＿１は、安全性を確保するために次の式ｓｃｒｃｏｎｄに示される条件を満たすように定められる。
【００３９】
（式ｓｃｒｃｏｎｄ）
Ｐｒ［ｓｕｍ＿｛ｉ  ｉｎ  Ｇｓｅｔ｝ｇ＿ｉ（ｒａｎｄ）  ＋  ｓｕｍ＿｛ｊ  ｉｎ  Ｕｓｅｔ｝  ｕ＿ｊ（ｒａｎｄ）＝ｙ］
ここで、Ｐｒ［Ｘ＝ｘ］という表記は、確率変数Ｘが値ｘをとる確率を表す。スクランブル関数ｇ＿ｉは、この式が、ｒａｎｄをｎビット一様乱数としたとき、ゼロ集合を除いたあらゆる｛１，．．．，Ｌ−１｝の部分集合Ｇｓｅｔと、ゼロ集合を含めたあらゆる｛０，１｝の部分集合（すなわち｛０｝，｛１｝，｛０，１｝）Ｕｓｅｔとに対して得られる、あらゆるｎビット値ｙが十分小さい数値となればよい。
【００４０】
上記の式ｓｃｒｃｏｎｄに示すような条件を満たすには、例えばｇ＿ｉ，ｕ＿ｊは、ｎビットの素数長の部分系列の巡回シフトを用いて構成する。例えば、Ｘをｎビットとし、Ｘ［ａ−ｂ］をそのａビット目からｂビット目までの部分系列、ｒｏｔ（ｉ，Ｙ）をＹのｉビット左（ないし右）巡回シフトとする。その場合、ｇ＿ｉ（Ｘ）、ｕ＿０（Ｘ）及びｕ＿１（Ｘ）を次式のように定めることができる（次式ｒｏｔの＋は、和を表している）。
【００４１】
（式ｒｏｔ）
ｇ＿ｉ（Ｘ）＝ｒｏｔ（ｉ，Ｘ［１−ｐ］）｜｜Ｘ［ｐ＋１−ｎ］，  ｆｏｒ  ｉ＝１，．．．，Ｌｍａｘ−１
ｕ＿０（Ｘ）＝ｒｏｔ（Ｌｍａｘ，Ｘ［１−ｐ］）｜｜Ｘ［ｐ＋１−ｎ］
ｕ＿１（Ｘ）＝ｒｏｔ（Ｌｍａｘ＋１，Ｘ［１−ｐ］）｜｜Ｘ［ｐ＋１−ｎ］  
【００４２】
ｇ＿ｉは、このように定められることで、メッセージのブロック長最大Ｌｍａｘまで対応が可能である。ただしｐは素数で、ｐ≦Ｌｍａｘ＋１≦ｎの関係を満たす必要がある。このような処理は、複雑な演算を多数繰り返すブロック暗号と比べ、巡回シフトのみの処理で済むので非常に高速に実行可能である。また、（式ｒｏｔ）におけるＸ［ｐ＋１−ｎ］は全ゼロなど任意の固定系列でもよい。さらにｎの約数である正整数ｃについてｃｐ≦ｎの場合には、Ｘをｃ個に分割しておき、各ｎ／ｃビットの部分系列に対して（式ｒｏｔ）と同様の処理を独立に適用してもよい。
【００４３】
また、ｇ＿ｉ，ｕ＿ｊは、例えば有限体ＧＦ（２＾ｎ）上の定数との乗算によっても実現可能である。適当な定数ａ＿ｉを定め、集合｛ａ＿１，．．．，ａ＿Ｌｍａｘ＋１｝が有限体ＧＦ（２＾ｎ）上で基底をなす（線形独立）ならば、ｇ＿ｉ（Ｘ）、ｕ＿０（Ｘ）及びｕ＿１（Ｘ）を次式のように定めることができる（次式ｍｕｌの＋は、和を表している）。
【００４４】
（式ｍｕｌ）
ｇ＿ｉ（Ｘ）＝ｍｕｌ（ａ＿ｉ，Ｘ）  ｆｏｒ  ｉ＝１，．．．，Ｌｍａｘ−１
ｕ＿０（Ｘ）＝ｍｕｌ（ａ＿Ｌｍａｘ，Ｘ）
ｕ＿１（Ｘ）＝ｍｕｌ（ａ＿Ｌｍａｘ＋１，Ｘ）
ここで、ｍｕｌ（Ａ，Ｂ）は有限体上の要素Ａ，Ｂの乗算を表す。ｇ＿ｉは、このように定めることで、メッセージのブロック長最大Ｌｍａｘまで対応が可能である。
【００４５】
また、ｇ＿ｉ，ｕ＿ｊは、例えば次式に示すような線形シフトレジスタ（ＬＦＳＲ）によっても実現可能である（次式ＬＦＳＲの＋は、和を表している）。
（式ＬＦＳＲ）
ｇ＿ｉ（Ｘ）＝ＬＦＳＲ（ｉ，Ｘ）  ｆｏｒ  ｉ＝１，．．．，Ｌｍａｘ−１
ｕ＿０（Ｘ）＝ＬＦＳＲ（Ｌｍａｘ，Ｘ）
ｕ＿１（Ｘ）＝ＬＦＳＲ（Ｌｍａｘ＋１，Ｘ）
このようにｇ＿ｉを定めることで、メッセージのブロック長最大Ｌｍａｘまで対応が可能である。
【００４６】
ここで、ＬＦＳＲ（ｉ，Ｘ）は、線形シフトレジスタのレジスタをＸとして、ｉ回動作後のレジスタの内容である。一般にｇ＿ｉの計算にはｉ回のＬＦＳＲ動作が必要となるが、非特許文献７に記載されているように、Ｊｕｍｐ  ＬＦＳＲと呼ばれるタイプのＬＦＳＲでは複数回の動作がほぼ１回の動作と同等の処理でできる。そのため、このようなＬＦＳＲを用いることで効率を良くすることができる。
【００４７】
以上のように、ｇ＿ｉは、（式ｒｏｔ）に示される巡回シフト、（式ｍｕｌ）に示される有限体ＧＦ（２＾ｎ）上の定数との乗算、又は（式ＬＦＳＲ）に示される線形シフトレジスタによって実現される。これにより、ｇ＿ｉは、式ｓｃｒｃｏｎｄに示される条件を満たすように定められ、安全性が確保される。
【００４８】
タグ生成手段１０４は、平文Ｍの最終ブロックＭ［Ｌ］の長さがｎビットであるかどうかを２値のパラメータとして、スクランブルハッシュ手段１０３が出力するハッシュ値Ｖを暗号化しタグＴを生成する。 
【００４９】
具体的には、Ｖがｎビットの場合、ブロック暗号の暗号化関数Ｅ（Ｋ，＊）を用いて、タグＴを次式のように定める。
（式ｆｉｎ）
Ｔ＝Ｅ（Ｋ，ｕ＿０（Ｕ）＋Ｖ）  ｉｆ  ｜Ｍ［Ｌ］｜＝ｎ，Ｔ＝Ｅ（Ｋ，ｕ＿１（Ｕ）＋Ｖ）  ｏｔｈｅｒｗｉｓｅ
【００５０】
そして、タグ生成手段１０４は、上記（式ｆｉｎ）で得られたＴをタグとして出力する。ここでＵ＝Ｅ（Ｋ，０＾ｎ）である。マスクを生成する関数ｕ＿０，ｕ＿１は、例えば、上述した（式ｒｏｔ）に示される巡回シフト、（式ｍｕｌ）に示される有限体ＧＦ（２＾ｎ）上の定数との乗算、又は（式ＬＦＳＲ）に示される線形シフトレジスタによって実現される。
【００５１】
また、タグＴは、次式のように単純に鍵を二つ用意しておくことで単純に定められうる。 
（式ｆｉｎ２）
Ｔ＝Ｅ（Ｋ１，Ｖ）  ｉｆ  ｜Ｍ［Ｌ］｜＝ｎ，Ｔ＝Ｅ（Ｋ２，Ｖ）  ｏｔｈｅｒｗｉｓｅ
【００５２】
上記（式ｆｉｎ）、（式ｆｉｎ２）のいずれを用いるにしても、タグ生成手段１０４は、平文Ｍの最終ブロックＭ［Ｌ］の長さがｎビットであるかどうかを２値のパラメータとして暗号化を行う。これにより、パディングにより生じるあいまいさ（すなわち、中間変数Ｓ［Ｌ］のみでは、Ｓ［Ｌ］がＭ［Ｌ］そのものなのか、Ｍ［Ｌ］へパディングして得られたものか分からない）を排除しつつ、効率的な処理を実現することができる。
【００５３】
上記（式ｆｉｎ）、（式ｆｉｎ２）に示したような処理は、パディング手段１０１の機能と同様に、非特許文献５に記載されているＯＭＡＣでも用いられている標準的なテクニックである。さらに、ハッシュ値Ｖが用いるブロック暗号のブロックサイズよりも長い場合は、ＣＢＣ−ＭＡＣやＣＭＡＣなどのモードを利用すればよい。
【００５４】
タグ生成手段１０４により生成されたタグＴは、出力手段１０５に出力される。出力手段１０５は、タグ生成手段１０４が生成したタグＴを例えばコンピュータディスプレイやプリンターなどへ出力する。
【００５５】
次に、本発明の実施形態１のインクリメンタルＭＡＣタグ生成装置の動作を説明する。図４は、本発明の実施形態１のインクリメンタルＭＡＣタグ生成装置の動作を示すフローチャートである。
【００５６】
インクリメンタルＭＡＣタグ生成装置１０は、初めに、入力手段１００から認証する対象の平文Ｍ＝（Ｍ［１］，Ｍ［２］，．．．，Ｍ［Ｌ］）と、キャッシュされた平文Ｍ’＝（Ｍ’［１］，．．．，Ｍ’［Ｎ］）、及びＭ’に対応したキャッシュされた中間変数Ｓ’＝（Ｓ’［１］，．．．，Ｓ’［Ｎ−１］）を入力する（ステップＧ１）。
【００５７】
次に、パディング手段１０１が、メッセージの最終ブロックＭ［Ｌ］がｎビット未満ならばパディングし、その結果を中間変数Ｓ［Ｌ］とする。Ｍ［Ｌ］がｎビットちょうどであればそのままＭ［Ｌ］をＳ［Ｌ］とする（ステップＧ２）。
【００５８】
次に、キャッシュ参照付き並列暗号化手段１０２は、ｉ＝１，．．．，Ｌ−１について平文ブロックＭ［ｉ］から中間変数Ｓ［ｉ］を得る。ただし、もしＭ［ｉ］＝Ｍ’［ｊ］となるｊが存在すれば、キャッシュ参照付き並列暗号化手段１０２は、Ｓ’［ｊ］のコピーをＳ［ｊ］とする。もしそのようなｊが存在しないのであれば、キャッシュ参照付き並列暗号化手段１０２は、Ｓ［ｉ］をＭ［ｉ］の暗号化によって得る（ステップＧ３）。
【００５９】
次に、スクランブルハッシュ手段１０３は、中間変数Ｓ［ｉ］をスクランブル関数ｇ＿ｉへ適用する。そして、スクランブルハッシュ手段１０３は、ｇ＿ｉ（Ｓ［ｉ］）の排他的論理和をｉ＝１，．．．，Ｌ−１についてとり、これとさらにＳ［Ｌ］との和をとりハッシュ値Ｖとして生成し、出力する（ステップＧ４）。
【００６０】
次に、タグ生成手段１０４は、平文最終ブロックＭ［Ｌ］へのパディングの有無（すなわちＭ［Ｌ］がｎビットであるか否か）をバイナリのパラメータとしてハッシュ値Ｖを暗号化し、タグＴを得る（ステップＧ５）。最後に、出力手段１０５がタグＴを出力する（ステップＧ６）。
【００６１】
本実施形態のインクリメンタルＭＡＣタグ生成装置１０は、あらゆるブロック単位の処理に対してインクリメンタルなタグ再計算を可能としつつ、通常のタグ計算も効率的に行える。その理由は、あらゆるブロック単位の編集に対して各メッセージのブロックＭ［ｉ］を暗号化した結果が透過的に振る舞うためである。そのため、新たな暗号化の計算は不要である。
【００６２】
また、各Ｍ［ｉ］の処理は並列に実行されることが可能であり、スクランブル処理はブロック暗号よりも非常に簡素な処理で実現されるため、全体として大幅な高速化が実現できる。もし、キャッシュされた平文が存在しない場合には、すべてのＭ［ｉ］を暗号化することでＳを得ることができる。
【００６３】
また、本実施形態の処理のようにハッシュ値の暗号化に復号処理が存在し、さらに各ｇ＿ｉの処理が置換である（すなわち逆関数が存在する）場合、ブロックの挿入、削除、カットアンドペースト等を伴わないブロック単位の更新に関しては、非特許文献１に記載されているＰＭＡＣと同様に、中間変数をキャッシュしていなくとも、メッセージとタグからインクリメンタルなタグ計算が可能である。
【００６４】
実施形態２．
図５は、本発明の実施形態２のメッセージ認証装置の構成を示すブロック図である。図５に示すように、実施形態２のメッセージ認証装置は、入力手段２００、インクリメンタルＭＡＣタグ生成装置１０、ローカルタグ検証手段２０６及び出力手段２０５を含む。なお、インクリメンタルＭＡＣタグ生成装置１０の構成及び動作は実施形態１に示したものと同様である。
【００６５】
入力手段２００は、インクリメンタルＭＡＣタグ生成装置１０とローカルタグ検証手段２０６に接続されている。入力手段２００は、認証の対象となる平文Ｍ、平文Ｍに対応するタグＴ、キャッシュされた平文Ｍ’及びキャッシュされた中間変数Ｓ’を入力する。また、入力手段２００は、例えばキーボードなどの文字入力装置により実現される。また、入力手段２００は、例えば、コンピュータのＬＡＮやＵＳＢなどの通信インタフェース、又はプログラム上の入力インタフェースであってもよい。
【００６６】
インクリメンタルＭＡＣタグ生成装置１０は、ローカルタグ検証手段２０６に接続されており、実施形態１に記載したようにタグを生成する機能を有する。本実施形態において、インクリメンタルＭＡＣタグ生成装置１０が生成したタグをローカルタグＺと呼ぶ。
【００６７】
ローカルタグ検証手段２０６は、入力手段２００から入力したタグＴと、インクリメンタルＭＡＣタグ生成装置１０から入力したローカルタグＺとを比較することでローカルタグＺの検証を行う。また、ローカルタグ検証手段２０６は、出力手段２０５に接続されている。ローカルタグ検証手段２０６は、検証結果を出力手段２０５に送る。出力手段２０５は、ローカルタグ検証手段２０６から出力された検証結果を、例えばコンピュータディスプレイやプリンターなどへ出力する。
【００６８】
図６は、本発明の実施形態２のメッセージ認証装置の動作を示すフローチャートである。まず、入力手段２００により、認証する対象の平文Ｍ＝（Ｍ［１］，Ｍ［２］，．．．，Ｍ［Ｌ］）、平文Ｍに対応したタグＴ、キャッシュされた平文Ｍ’＝（Ｍ’［１］，．．．，Ｍ’［Ｎ］）、及びＭ’に対応しキャッシュされた中間変数Ｓ’＝（Ｓ’［１］，．．．，Ｓ’［Ｎ−１］）が入力される（ステップＶ１）。
【００６９】
次に、パディング手段１０１は、メッセージの最終ブロックＭ［Ｌ］がｎビット未満ならばパディングし、その結果を中間変数Ｓ［Ｌ］とする。パディング手段１０１は、Ｍ［Ｌ］がｎビットちょうどであればそのままＭ［Ｌ］をＳ［Ｌ］とする（ステップＶ２）。
【００７０】
次に、キャッシュ参照付き並列暗号化手段１０２は、ｉ＝１，．．．，Ｌ−１について平文ブロックＭ［ｉ］から中間変数Ｓ［ｉ］を得る。もし、Ｍ［ｉ］＝Ｍ’［ｊ］となるｊが存在する場合、キャッシュ参照付き並列暗号化手段１０２は、Ｓ’［ｊ］のコピーをＳ［ｉ］とする。もしそのようなｊが存在しないのであれば、キャッシュ参照付き並列暗号化手段１０２は、Ｓ［ｉ］をＭ［ｉ］の暗号化によって得る（ステップＶ３）。
【００７１】
次に、スクランブルハッシュ手段１０３は、中間変数Ｓ［ｉ］をスクランブル関数ｇ＿ｉへ適用する。そして、スクランブルハッシュ手段１０３は、ｇ＿ｉ（Ｓ［ｉ］）の排他的論理和をｉ＝１，．．．，Ｌ−１についてとり、これとさらにＳ［Ｌ］との排他的論理和をとりハッシュ値Ｖを生成する（ステップＶ４）。
【００７２】
次に、タグ生成手段１０４は、平文最終ブロックＭ［Ｌ］へのパディングの有無（すなわちｎビットであるか否か）をバイナリのパラメータとしてハッシュ値Ｖを暗号化し、ローカルタグＺを得る（ステップＶ５）。
【００７３】
次に、ローカルタグ検証手段２０６は、タグ生成手段１０４から入力したローカルタグＺと入力手段２００から入力したタグＴとが一致するか否かを検証する（ステップＶ５）。最後に、出力手段２０５が、ローカルタグ検証手段２０６の検証結果を出力する（ステップＶ６）。
【００７４】
本実施形態のメッセージ認証装置は、実施形態１と同様の効果が得られる。従って、効率的にメッセージの認証を行うことができる。
【００７５】
図７は、本発明のインクリメンタルＭＡＣタグ生成装置の主要部を示すブロック図である。図７に示すように、インクリメンタルＭＡＣタグ生成装置１０は、最小の構成要素として、キャッシュ参照付き並列暗号化部１２と、パディング部１１と、スクランブルハッシュ部１３と、タグ生成部１４とを備える。
【００７６】
図７に示すインクリメンタルＭＡＣタグ生成装置では、パディング部１１は、複数のブロックに分割された平文Ｍの最終ブロックを入力し、当該平文Ｍの最終ブロックの長さが所定のビット数に満たない場合にパディングを行う。キャッシュ参照付き並列暗号化部１２は、平文Ｍの最終ブロック以外のブロック、キャッシュされた平文Ｍ’、及びＭ’を暗号化した中間変数Ｓ’を入力し、中間変数Ｓを算出する。スクランブルハッシュ部１３は、中間変数Ｓの最終ブロック以外のブロックへスクランブル処理を行う。スクランブルハッシュ部１３は、スクランブル処理された中間変数Ｓの各ブロック、及びパディング部１１によりパディングされた平文Ｍの最終ブロックの排他的論理和であるハッシュ値Ｖを算出する。タグ生成部１４は、パディング部１１によるパディングの有無をパラメータとしてハッシュ値Ｖを暗号化してタグを算出する。
【００７７】
キャッシュ参照付き並列暗号化部１２は、平文Ｍの最終ブロック以外のブロックと平文Ｍ’の各ブロックとを比較する。キャッシュ参照付き並列暗号化部１２は、平文Ｍのブロックと一致する平文Ｍ’のブロックが存在する場合、当該平文Ｍ’のブロックに対応する中間変数Ｓ’のブロックを中間変数Ｓに用いる。キャッシュ参照付き並列暗号化部１２は、平文Ｍのブロックと一致する平文Ｍ’のブロックが存在しない場合、当該平文Ｍのブロックを暗号化して中間変数Ｓに用いる。
【００７８】
従って、図７に示すインクリメンタルＭＡＣタグ生成装置は、通常のタグ計算の効率を損なうことなく、あらゆるブロック単位の編集に対応できるインクリメンタルなタグ計算を可能とすることができる。
【００７９】
また、上記の各実施形態には、以下の（１）〜（５）に示すようなインクリメンタルＭＡＣタグ生成装置及びメッセージ認証装置も開示されている。
【００８０】
（１）インクリメンタルＭＡＣタグ生成装置（例えば、インクリメンタルＭＡＣタグ生成装置１０）は、複数のブロックに分割された平文Ｍの最終ブロックを入力し、当該平文Ｍの最終ブロックの長さが所定のビット数に満たない場合にパディングを行うパディング手段（例えば、パディング手段１０１）と、平文Ｍの最終ブロック以外のブロック、キャッシュされた平文Ｍ’、及びＭ’を暗号化した中間変数Ｓ’を入力し、中間変数Ｓを算出するキャッシュ参照付き並列暗号化手段（例えば、キャッシュ参照付き並列暗号化手段１０２）と、中間変数Ｓへスクランブル処理を行い、スクランブル処理された中間変数Ｓの各ブロック、及びパディング手段によりパディングされた前記平文Ｍの最終ブロックの排他的論理和であるハッシュ値Ｖを算出するスクランブルハッシュ手段（例えば、スクランブルハッシュ手段１０３）と、パディング手段によるパディングの有無をパラメータとしてハッシュ値Ｖを暗号化してタグを算出するタグ生成手段（例えば、タグ生成手段１０４）とを備え、キャッシュ参照付き並列暗号化手段は、平文Ｍの最終ブロック以外のブロックと平文Ｍ’の各ブロックとを比較し、平文Ｍのブロックと一致する平文Ｍ’のブロックが存在する場合、当該平文Ｍ’のブロックに対応する中間変数Ｓ’のブロックを中間変数Ｓに用い、平文Ｍのブロックと一致する平文Ｍ’のブロックが存在しない場合、当該平文Ｍのブロックを暗号化して中間変数Ｓに用いる。
【００８１】
（２）インクリメンタルＭＡＣタグ生成装置において、スクランブルハッシュ手段のスクランブル処理は、入力された中間変数Ｓの各ブロックの特定の素数長の部分系列を巡回シフトさせるように構成されていてもよい。
【００８２】
（３）インクリメンタルＭＡＣタグ生成装置において、スクランブルハッシュ手段のスクランブル処理は、入力された中間変数Ｓの各ブロックに、特定の有限体上の定数であってそれぞれ異なる数値を乗算するように構成されていてもよい。
【００８３】
（４）インクリメンタルＭＡＣタグ生成装置において、スクランブルハッシュ手段のスクランブル処理は、入力された中間変数Ｓの各ブロックを、線形シフトレジスタへ与え、入力されたブロックの数と同数回動作させるように構成されていてもよい。
【００８４】
（５）メッセージ認証装置は、インクリメンタルＭＡＣタグ生成装置（例えば、インクリメンタルＭＡＣタグ生成装置１０）と、平文Ｍ、当該平文Ｍに対応したタグＴ、キャッシュされた平文Ｍ’及びＭ’を暗号化した中間変数Ｓ’を入力する入力手段（例えば、入力手段２００）と、平文Ｍ、平文Ｍ’及び中間変数Ｓ’を用いてインクリメンタルＭＡＣタグ生成装置により生成されたローカルタグＺと入力手段により入力したタグＴとを比較し検証するローカルタグ検証手段（例えば、ローカルタグ検証手段２０６）と、ローカルタグ検証手段の検証結果を出力する出力手段（例えば、出力手段２０５）とを備えている。
【００８５】
この出願は、２０１１年１０月３１日に出願された日本出願特願２０１１−２３９２３２を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【００８６】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用の可能性】
【００８７】
本発明によれば、無線もしくは有線のデータ通信における認証、データベースの改ざん検知、装置上のメモリの正当性検証などの用途に適用できる。
【符号の説明】
【００８８】
１０  インクリメンタルＭＡＣタグ生成装置
１１  パディング部
１２  キャッシュ参照付き並列暗号化部
１３  スクランブルハッシュ部
１４  タグ生成部
１００  入力手段
１０１  パディング手段
１０２  キャッシュ参照付き並列暗号化手段
１０３  スクランブルハッシュ手段
１０４  タグ生成手段
１０５  出力手段
２００  入力手段
２０５  出力手段
２０６  ローカルタグ検証手段
【図１】
2013065241.tif 000003
【図２】
2013065241.tif 000004
【図３】
2013065241.tif 000005
【図４】
2013065241.tif 000006
【図５】
2013065241.tif 000007
【図６】
2013065241.tif 000008
【図７】
2013065241.tif 000009
【図８】
2013065241.tif 000010
【国際調査報告】
2013065241.tif 000011
2013065241.tif 000012
2013065241.tif 000013
2013065241.tif 000014
2013065241.tif 000015
2013065241.tif 000016