(57)【特許請求の範囲】
【請求項１】
ブロックサイズｎのブロック暗号Ｅを用いてメッセージ認証子を生成するメッセージ認証子生成装置であり、
メッセージＭを入力として、２ｎビットのハッシュ値ｗを計算するハッシュ関数部と、
２ｎビットのハッシュ値ｗをｎビットの値ｗ［１］とｎビットの値ｗ［２］とに分割する分割部と、
前記値ｗ［１］を入力として前記ブロック暗号Ｅにより値ｚ［１］を計算するとともに、前記値ｗ［２］を入力として前記ブロック暗号Ｅにより値ｚ［２］を計算する第１ブロック暗号計算部と、
ｒを１以上の整数とし、ｉ＝１，．．．，ｒの各整数ｉについて、値Ｑ［１，ｉ］及び値Ｑ［２，ｉ］と、前記値ｚ［１］及び前記値ｚ［２］とを用いて、数１に示す値Ｘ［ｉ］を計算し、計算された値Ｘ［ｉ］を入力として前記ブロック暗号Ｅにより値Ｙ［ｉ］を計算する第２ブロック暗号計算部と、
ｉ＝１，．．．，ｒの各整数ｉについての値Ｙ［ｉ］を作用させて前記メッセージＭについての前記ブロックサイズｎ以下のメッセージ認証子Ｔを計算する認証子計算部と
を備えるメッセージ認証子生成装置。
【数１】
0006305658.tif 000004
【請求項２】
前記認証子計算部は、
ｉ＝１，．．．，ｒの各整数ｉについての前記値Ｙ［ｉ］の排他的論理和をとって得られた値又は排他的論理和をとって得られた値の一部を前記メッセージ認証子Ｔとして計算する
請求項１に記載のメッセージ認証子生成装置。
【請求項３】
前記ハッシュ関数部は、
前記メッセージＭから、２以上の整数であるｂ個のメッセージブロックＭ［１］，．．．，Ｍ［ｂ］を生成するメッセージブロック生成部と、
前記メッセージブロック生成部によって生成された前記ｂ個のメッセージブロックのうちの少なくとも一部のメッセージブロックに対してメッセージブロック毎に異なるカウンター値を結合して入力ブロックを生成し、前記入力ブロックを用いてハッシュ値ｗを計算するハッシュ値計算部と
を備える請求項１又は２に記載のメッセージ認証子生成装置。
【請求項４】
前記ハッシュ値計算部は、
ｉ＝１，．．．，ｂ−１の各整数ｉについて、メッセージブロックＭ［ｉ］に前記カウンター値ｃ［ｉ］を結合してｎビットの入力ブロックＰ［ｉ］を生成し、
ｉ＝１，．．．，ｂ−１の各整数ｉについて、入力ブロックＰ［ｉ］を入力として前記ブロック暗号Ｅによりｎビットの値Ｃ［ｉ］を計算し、
ｉ＝１，．．．，ｂの各整数ｉについての値Ｌ［１，ｉ］及び値Ｌ［２，ｉ］を用いて、数２に示す値ｘ［１］及び値ｘ［２］を計算し、
前記値ｘ［１］と前記値ｘ［２］とを結合して前記ハッシュ値ｗを計算する
請求項３に記載のメッセージ認証子生成装置。
【数２】
0006305658.tif 000005
【請求項５】
前記値Ｌ［１，ｉ］は１であり、前記値Ｌ［２，ｉ］は２ｂ−ｉである
請求項４に記載のメッセージ認証子生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ブロック暗号を用いるメッセージ認証アルゴリズムに関する。
【背景技術】
【０００２】
メッセージ認証アルゴリズムを用いると、データの改ざんを検知できる。【０００３】
メッセージ認証アルゴリズムは、任意長のメッセージと秘密鍵とを入力とし、固定長の改ざん検知用の認証子Ｔを出力する関数である。
送信者をＡｌｉｃｅ、受信者をＢｏｂとする。メッセージ認証アルゴリズムを用いた通信を行う場合、ＡｌｉｃｅとＢｏｂとは予め秘密鍵Ｋを共有しておく。Ａｌｉｃｅは、メッセージＭと鍵Ｋとから、メッセージ認証アルゴリズムを用いて、メッセージＭの認証子Ｔを生成し、メッセージＭと認証子ＴとをＢｏｂに送信する。Ｂｏｂは、メッセージＭと認証子Ｔとを受信し、メッセージＭと鍵Ｋとからメッセージ認証アルゴリズムを用いて認証子Ｔ’を生成する。Ｂｏｂは、受信した認証子Ｔと生成した認証子Ｔ’とが一致すれば、メッセージＭは改ざんされていないと判断し、一致しなければ、メッセージＭは改ざんされていると判断する。【０００４】
非特許文献１に記載されたＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）といったブロック暗号を用いてメッセージ認証アルゴリズムを構成する方法がある。
ブロック暗号Ｅは、ｋビットの鍵Ｋとｎビットの平文ｍとを入力とし、ｎビットの暗号文ｃを出力する関数である。これをｃ＝Ｅ（Ｋ，ｍ）と書くことにする。ブロック暗号の平文及び暗号文のサイズは、ブロックサイズと呼ばれる。ブロック暗号は、鍵Ｋを固定するとｎビットの置換関数になる。
ブロック暗号を用いてメッセージ認証アルゴリズムを設計した場合、認証子のサイズｔはブロック暗号のブロックサイズｎ以下になる。ブロック暗号を用いたメッセージ認証アルゴリズムは、任意長のメッセージをある固定長の長さに圧縮するハッシュ関数と、ハッシュ関数の出力をｔビットの認証子に変換する最終処理とから構成される。ハッシュ関数と最終処理とではそれぞれ鍵Ｋｈと鍵Ｋｆとが用いられる。【０００５】
ブロック暗号を用いたメッセージ認証アルゴリズムとしては、非特許文献２に記載されたＣＭＡＣが代表的である。【０００６】
メッセージ認証アルゴリズムの安全性は、疑似乱数性を用いて示される。疑似乱数性は、０又は１の１ビットの値を出力する識別者Ｄに対し、識別者Ｄがメッセージ認証アルゴリズムにアクセスして出力値を観測した後１を出力する確率と、識別者Ｄがランダム関数にアクセスして出力値を観測した後１を出力する確率との差をで表された安全性である。この差は疑似乱数性のアドバンテージと呼ばれる。
また、メッセージ認証アルゴリズムの安全性は、疑似乱数性のアドバンテージの上界値が１／２となる時の、認証子の呼び出し回数を用いて示される。メッセージ認証アルゴリズムの安全性を改良する場合、これらの回数が改良される。【０００７】
ＣＭＡＣの疑似乱数性のアドバンテージは、１回のメッセージ認証アルゴリズムの動作で生じるブロック暗号の呼び出し回数をＬ、認証子の生成回数をｑとすると、Ｏ（（Ｌｑ）２／２ｎ）以下となることが非特許文献３で示されている。
ＣＭＡＣの場合、ｑ＝Ｏ（２ｎ／２／Ｌ）の場合に、疑似乱数性のアドバンテージの上界値が１／２になる。この上界値が１／２になるｑの値をｑ１と書くことにする。【０００８】
メッセージ認証アルゴリズムの安全性を担保するために、ｑがｑ１になる前に、メッセージ認証アルゴリズムの秘密鍵が更新される。すなわち、ｑ１の値が大きいほど１つの秘密鍵を使える期間が長くなる。秘密鍵の更新はコストがかかるため、更新頻度は少ないほうがよい。すなわち、ｑ１の値が大きいメッセージ認証アルゴリズムの設計が重要となる。【０００９】
非特許文献４には、ｑ１＝Ｏ（２２ｎ／３／Ｌ）となるメッセージ認証アルゴリズムが記載されている。非特許文献２，４に記載されたメッセージ認証アルゴリズムは、ｑ１がブロック暗号の呼び出し回数Ｌに依存する。そのため、ブロック暗号の呼び出し回数Ｌの値が大きいほど、ｑ１の値が小さくなり、鍵更新頻度が多くなる。
非特許文献５では、ｑ１＝Ｏ（２ｎ／２）となる、ｑ１がブロック暗号の呼び出し回数Ｌに依存しないメッセージ認証アルゴリズムが記載されている。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】ＦＩＰＳ１９７，  ＡＤＶＡＮＣＥＤ  ＥＮＣＲＹＰＴＩＯＮ  ＳＴＡＮＤＡＲＤ  （ＡＥＳ）
【非特許文献２】ＳＰ  ８００−３８Ｂ，  Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  ｆｏｒ  Ｂｌｏｃｋ  Ｃｉｐｈｅｒ  Ｍｏｄｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ：  ｔｈｅ  ＣＭＡＣ．  Ｍｏｄｅ  ｆｏｒ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  （Ｍａｙ  ２００５）
【非特許文献３】Ｔｅｔｓｕ  Ｉｗａｔａ，  Ｋａｏｒｕ  Ｋｕｒｏｓａｗａ．  ＯＭＡＣ：  Ｏｎｅ−Ｋｅｙ  ＣＢＣ  ＭＡＣ．  ＦＳＥ  ２００３．  ｐ１２９−１５３
【非特許文献４】Ｋａｎ  Ｙａｓｕｄａ．  Ａ  Ｎｅｗ  Ｖａｒｉａｎｔ  ｏｆ  ＰＭＡＣ：  Ｂｅｙｏｎｄ  ｔｈｅ  Ｂｉｒｔｈｄａｙ  Ｂｏｕｎｄ．  ＣＲＹＰＴＯ  ２０１１．  ｐ５９６−６０９
【非特許文献５】Ａｔｕｌ  Ｌｕｙｋｘ，  Ｂａｒｔ  Ｐｒｅｎｅｅｌ，  Ｅｌｍａｒ  Ｔｉｓｃｈｈａｕｓｅｒ，  ａｎｄ  Ｋａｎ  Ｙａｓｕｄａ．  Ａ  ＭＡＣ  Ｍｏｄｅ  ｆｏｒ  Ｌｉｇｈｔｗｅｉｇｈｔ  Ｂｌｏｃｋ  Ｃｉｐｈｅｒｓ．  ＦＳＥ  ２０１６．  ｐ４３−５９
【発明の概要】
【発明が解決しようとする課題】
【００１１】
この発明は、ｑ１の値が大きな値となるメッセージ認証アルゴリズムを実現可能とすることを目的とする。
【課題を解決するための手段】
【００１２】
この発明に係るメッセージ認証子生成装置は、
ブロックサイズｎのブロック暗号Ｅを用いてメッセージ認証子を生成するメッセージ認証子生成装置であり、
メッセージＭをｎビット毎に分割したメッセージブロックと、カウンター値とを入力として、ブロック暗号により値を計算し、計算された値を用いて２ｎビットのハッシュ値ｗを計算するハッシュ関数部と、
２ｎビットのハッシュ値ｗをｎビットの値ｗ［１］とｎビットの値ｗ［２］とに分割する分割部と、
前記値ｗ［１］を入力として前記ブロック暗号Ｅにより値ｚ［１］を計算するとともに、前記値ｗ［２］を入力として前記ブロック暗号Ｅにより値ｚ［２］を計算するブロック暗号計算部と、
前記値ｚ［１］と前記値ｚ［２］との両方を作用させて前記メッセージＭについての前記ブロックサイズｎ以下のメッセージ認証子Ｔを計算する認証子計算部とを備える。
【発明の効果】
【００１３】
この発明では、ブロックサイズｎよりも出力長が長いハッシュ関数ｈを用い、２個以上のブロック暗号を用いてメッセージ認証子を生成する。これにより、ハッシュ関数の出力の衝突が起こりにくくなり、認証子の乱数性が高くなるため、ｑ１の値が大きな値となるメッセージ認証アルゴリズムを実現可能である。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１に係るメッセージ認証子生成装置１０の構成図。
【図２】実施の形態１に係るメッセージ認証アルゴリズムの構成図。
【図３】実施の形態１に係るメッセージ認証子生成装置１０の動作を示すフローチャート。
【図４】実施の形態１に係る最終処理のフローチャート。
【図５】実施の形態１に係るハッシュ関数ｈの構成図。
【図６】実施の形態１に係るハッシュ関数処理のフローチャート。
【図７】変形例１に係るメッセージ認証子生成装置１０の構成図。
【図８】実施の形態２に係るメッセージ認証子生成装置１０の構成図。
【図９】実施の形態２に係るメッセージ認証アルゴリズムの構成図。
【図１０】実施の形態２に係る最終処理のフローチャート。
【発明を実施するための形態】
【００１５】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１を参照して、実施の形態１に係るメッセージ認証子生成装置１０の構成を説明する。
メッセージ認証子生成装置１０は、処理回路１１を備える。処理回路１１は、ハッシュ関数部２１と、後処理部２２とを備える。ハッシュ関数部２１は、メッセージブロック生成部３１と、ハッシュ値計算部３２とを備える。後処理部２２は、分割部４１と、ブロック暗号計算部４２と、認証子計算部４３とを備える。処理回路１１は、ハッシュ関数部２１と、後処理部２２と、メッセージブロック生成部３１と、ハッシュ値計算部３２と、分割部４１と、ブロック暗号計算部４２と、認証子計算部４３との各機能を実現する専用の電子回路である。
【００１６】
処理回路１１は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ
Ｇａｔｅ  Ａｒｒａｙ）が想定される。
各機能を１つの処理回路１１で実現してもよいし、各機能を複数の処理回路１１に分散させて実現してもよい。
【００１７】
処理回路１１によって実現される各機能の処理の結果を示す情報とデータと信号値と変数値は、処理回路１１内のレジスタのような記憶領域に記憶される。
【００１８】
＊＊＊動作の説明＊＊＊
図２から図６を参照して、実施の形態１に係るメッセージ認証子生成装置１０の動作を説明する。
実施の形態１に係るメッセージ認証子生成装置１０の動作は、実施の形態１に係るメッセージ認証子生成方法に相当する。また、実施の形態１に係るメッセージ認証子生成装置１０の動作は、実施の形態１に係るメッセージ認証子生成プログラムの処理に相当する。
【００１９】
図２及び図３を参照して、実施の形態１に係るメッセージ認証子生成装置１０の動作概要を説明する。
（ステップＳ１１：ハッシュ関数処理）
ハッシュ関数部２１は、鍵空間Ｓｅｔ（Ｋｈ）における任意長の値である鍵Ｋｈと、メッセージＭとの入力を受け付ける。
ハッシュ関数部２１は、鍵ＫｈとメッセージＭとを入力として、出力長が２ｎビットのハッシュ関数ｈにより、ハッシュ値ｗを計算する。つまり、ハッシュ値ｗは、２ｎビットである。実施の形態１では、ハッシュ関数部２１は、メッセージＭをｎビット毎に分割したメッセージブロックと、カウンター値とを入力として、ブロック暗号により値を計算し、計算された値を用いて２ｎビットのハッシュ値ｗを計算する。
【００２０】
（ステップＳ１２：最終処理）
後処理部２２は、ステップＳ１１でハッシュ関数部２１によって計算されたハッシュ値ｗに対してブロック暗号Ｅを用いた計算を行い、メッセージＭについてのブロックサイズｎ以下のメッセージ認証子Ｔを計算する。
【００２１】
図２及び図４を参照して、実施の形態１に係る最終処理を説明する。
（ステップＳ２１：分割処理）
分割部４１は、ステップＳ１１でハッシュ関数部２１によって計算された２ｎビットのハッシュ値ｗをｎビットの値ｗ［１］とｎビットの値ｗ［２］とに分割する。例えば、分割部４１は、ハッシュ値ｗの先頭からｎビットを値ｗ［１］とし、残りｎビットを値ｗ［２］とする。
【００２２】
（ステップＳ２２：ブロック暗号計算処理）
ブロック暗号計算部４２は、ブロック暗号Ｅに対するｋビットの鍵Ｋ［１］及びｋビットの鍵Ｋ［２］の入力を受け付ける。
ブロック暗号計算部４２は、ステップＳ２１で分割部４１によって分割されて得られた値ｗ［１］と、鍵Ｋ［１］とを入力としてブロック暗号Ｅにより値ｚ［１］を計算する。また、ブロック暗号計算部４２は、ステップＳ２１で分割部４１によって分割されて得られた値ｗ［２］と、鍵Ｋ［２］とを入力としてブロック暗号Ｅにより値ｚ［２］を計算する。
【００２３】
（ステップＳ２３：認証子計算処理）
認証子計算部４３は、ステップＳ２２でブロック暗号計算部４２によって計算された値ｚ［１］と値ｚ［２］との排他的論理和をとって得られた値又は排他的論理和をとって得られた値の一部をメッセージ認証子Ｔとして計算する。
【００２４】
図５及び図６を参照して、実施の形態１に係るハッシュ関数ｈの例を説明する。
（ステップＳ３１：メッセージブロック生成処理）
メッセージブロック生成部３１は、メッセージＭから、ｂ個のメッセージブロックを生成する。ｂは、２以上の整数である。
具体的には、メッセージブロック生成部３１は、メッセージＭを入力として、パディング処理により、ビット長が（ｎ−ｓ）ｂ＋ｎビットのデータＭ’を生成する。そして、メッセージブロック生成部３１は、データＭ’を先頭からｎ−ｓビット毎に分割して、ｎ−ｓビットのメッセージブロックＭ［１］，Ｍ［２］，・・・，Ｍ［ｂ−１］と、ｎビットのメッセージブロックＭ［ｂ］とを生成する。
ここで、ｓ＜ｎである。
【００２５】
（ステップＳ３２：入力ブロック生成処理）
ハッシュ値計算部３２は、ｂ個のメッセージブロックのうちの少なくとも一部のメッセージブロックに対してメッセージブロック毎に異なるカウンター値を結合して入力ブロックを生成する。
具体的には、ステップＳ３１で生成されたｉ＝１，．．．，ｂ−１の各整数ｉについて、メッセージブロックＭ［ｉ］にｓビットのカウンター値ｃ［ｉ］を結合してｎビットの入力ブロックＰ［ｉ］を生成する。カウンター値ｃ［ｉ］は、値ｉをｓビット表現したビット列である。
入力ブロックＰ［ｉ］におけるカウンター値ｃ［ｉ］の位置は、決められた位置であれば、最初でもよいし、最後でもよいし、途中の位置でもよい。
【００２６】
（ステップＳ３３：ハッシュ値生成処理）
ハッシュ値計算部３２は、入力ブロックを用いてハッシュ値ｗを計算する。
具体的には、ハッシュ値計算部３２は、ｉ＝１，．．．，ｂ−１の各整数ｉについて、入力ブロックＰ［ｉ］を入力としてブロック暗号Ｅによりｎビットの値Ｃ［ｉ］を計算する。次に、ハッシュ値計算部３２は、ｉ＝１，．．．，ｂの各整数ｉについての値Ｌ［１，ｉ］及び値Ｌ［２，ｉ］を用いて、数１１に示すように値ｘ［１］及び値ｘ［２］を計算する。そして、ハッシュ値計算部３２は、値ｘ［１］と値ｘ［２］とを結合したｘ［１］｜｜ｘ［２］をハッシュ値ｗとして計算する。
【数１１】
0006305658.tif 000002
ここで、Ｌ［１，１］，Ｌ［１，２］，．．．，Ｌ［１，ｂ］は同じ値でもよいし異なる値であってもよい。Ｌ［２，１］，Ｌ［２，２］，．．．，Ｌ［２，ｂ］は異なる値とする。具体例としては、Ｌ［１，ｉ］＝１であり、Ｌ［２，ｉ］＝２ｂ−ｉである。また、ｉ＝１，．．．，ｂの各整数ｉについて、Ｌ［１，ｉ］・Ｃ［ｉ］は、Ｌ［１，ｉ］とＣ［ｉ］とのガロア体ＧＦ（２ｎ）上の掛け算である。同様に、Ｌ［２，ｉ］・Ｃ［ｉ］は、Ｌ［２，ｉ］とＣ［ｉ］とのガロア体ＧＦ（２ｎ）上の掛け算である。
【００２７】
＊＊＊実施の形態１の効果＊＊＊
非特許文献５に記載されたメッセージ認証アルゴリズムがｑ１＝Ｏ（２ｎ／２）となる理由として、用いられるハッシュ関数の出力長がブロック暗号のブロックサイズであるｎビットとなっている点がある。ハッシュ関数の出力長がｎビットであるため、誕生日攻撃を用いてハッシュ関数の出力の衝突をＯ（２ｎ／２）のハッシュ関数演算で起こすことができる。そして、この衝突を用いることによりメッセージ認証アルゴリズムを攻撃することができる。
実施の形態１に係るメッセージ認証子生成装置１０では、ブロックサイズｎよりも出力長が長いハッシュ関数ｈを用いてメッセージ認証子を生成する。これにより、ハッシュ関数の出力の衝突が起こりにくくなり、ｑ１の値が大きな値となるメッセージ認証アルゴリズムを実現可能である。
【００２８】
また、非特許文献２，４に記載されたメッセージ認証アルゴリズムのｑ１がブロック暗号の呼び出し回数Ｌに依存する理由は、ハッシュ関数内部で用いるブロック暗号の入力の衝突である。
実施の形態１に係るメッセージ認証子生成装置１０では、メッセージブロックにｓビットのカウンター値を結合して、ブロック暗号Ｅの入力となる入力ブロックを生成する。これによりブロック暗号Ｅの入力の衝突が避けられるため、ｑ１がブロック暗号の呼び出し回数Ｌに依存しないメッセージ認証アルゴリズムを実現可能である。
【００２９】
ブロック暗号Ｅを疑似ランダム置換と仮定し、かつ、ハッシュ関数を(Ｏ（１／２２ｎ），Ｏ（１／２２ｎ）)−ｐａｒｔｉａｌ  ａｌｍｏｓｔ  ｕｎｉｖｅｒｓａｌハッシュ関数と仮定する。すると、実施の形態１に係るメッセージ認証子生成装置１０によって実現されるメッセージ認証アルゴリズムはｑ１＝Ｏ（２２ｎ／３）となる。
(ｐ１，ｐ２)−ｐａｒｔｉａｌ  ａｌｍｏｓｔ  ｕｎｉｖｅｒｓａｌハッシュ関数とは、ハッシュ関数の鍵Ｋｈと２つの異なるハッシュ関数の入力Ｍ，Ｍ’とに対して、Ｈ（Ｋｈ，Ｍ）の先頭ｎビットとＨ（Ｋｈ，Ｍ’）の先頭ｎビットとが等しくなる確率がｐ１以下となり、Ｈ（Ｋｈ，Ｍ）の最終ｎビットとＨ（Ｋｈ，Ｍ’）の最終ｎビットとが等しくなる確率ｐ２以下となるハッシュ関数である。
【００３０】
図５及び図６を参照して説明したハッシュ関数ｈは、ブロック暗号を疑似ランダム置換と仮定すると、(Ｏ（１／２２ｎ），Ｏ（１／２２ｎ）)−ｐａｒｔｉａｌ  ａｌｍｏｓｔ
ｕｎｉｖｅｒｓａｌハッシュ関数となる。したがって、実施の形態１に係るメッセージ認証子生成装置１０が図５及び図６を参照して説明したハッシュ関数ｈを用いて実現したメッセージ認証アルゴリズムは、ブロック暗号を疑似ランダム置換と仮定すると、ｑ１＝Ｏ（２２ｎ／３）となる。
【００３１】
＊＊＊他の構成＊＊＊
＜変形例１＞
実施の形態１では、メッセージ認証子生成装置１０は、各機能を実現する専用の電子回路である処理回路１１を備えるとした。各機能は、ソフトウェアによって実現されてもよい。
【００３２】
図７を参照して、変形例１に係るメッセージ認証子生成装置１０の構成を説明する。
メッセージ認証子生成装置１０は、コンピュータである。
メッセージ認証子生成装置１０は、プロセッサ１２と、メモリ１３と、ストレージ１４とのハードウェアを備える。プロセッサ１２は、信号線を介して他のハードウェアと接続され、他のハードウェアを制御する。
ストレージ１４には、メッセージ認証子生成装置１０の各機能構成要素を実現するプログラムが記憶されている。このプログラムは、プロセッサ１２によってメモリ１３に読み込まれ、プロセッサ１２によって実行される。これにより、メッセージ認証子生成装置１０の各機能構成要素の機能が実現される。
【００３３】
プロセッサ１２は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ１２は、具体的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【００３４】
メモリ１３は、データを一時的に記憶する記憶装置である。メモリ１３は、具体例としては、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
【００３５】
ストレージ１４は、データを保管する記憶装置である。ストレージ１４は、具体例としては、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。また、ストレージ１４は、ＳＤ（登録商標，Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリカード、ＣＦ（ＣｏｍｐａｃｔＦｌａｓｈ）、ＮＡＮＤフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ
Ｄｉｓｋ）といった可搬記憶媒体であってもよい。
【００３６】
プロセッサ１２によって実現される各機能の処理の結果を示す情報とデータと信号値と変数値は、メモリ１３、ストレージ１４、又は、プロセッサ１２内のレジスタ又はキャッシュメモリのような記憶領域に記憶される。
【００３７】
図７では、プロセッサ１２は、１つだけ示されていた。しかし、メッセージ認証子生成装置１０は、複数のプロセッサを備えてもよく、複数のプロセッサが、各機能を実現するプログラムを連携して実行してもよい。
【００３８】
＜変形例２＞
一部の機能がハードウェアで実現され、他の機能がソフトウェアで実現されてもよい。また、各機能をファームウェアで実現してもよい。つまり、暗号化装置１０の機能構成要素のうち、一部の機能がハードウェアで実現され、他の機能がソフトウェアで実現されてもよい。また、復号装置３０の機能構成要素のうち、一部の機能がハードウェアで実現され、他の機能がソフトウェアで実現されてもよい。
【００３９】
実施の形態２．
実施の形態２は、実施の形態１と最終処理の構成が異なる。実施の形態２では、この異なる点を説明し、同じ点については説明を省略する。
【００４０】
＊＊＊構成の説明＊＊＊
図８を参照して、実施の形態２に係るメッセージ認証子生成装置１０の構成を説明する。
メッセージ認証子生成装置１０は、後処理部２２がブロック暗号計算部４２に代えて、第１ブロック暗号計算部４２１と第２ブロック暗号計算部４２２とを備える点が、図１に示すメッセージ認証子生成装置１０と異なる。
【００４１】
＊＊＊動作の説明＊＊＊
図９から図１０を参照して、実施の形態２に係るメッセージ認証子生成装置１０の動作を説明する。
実施の形態２に係るメッセージ認証子生成装置１０の動作は、実施の形態２に係るメッセージ認証子生成方法に相当する。また、実施の形態２に係るメッセージ認証子生成装置１０の動作は、実施の形態２に係るメッセージ認証子生成プログラムの処理に相当する。
【００４２】
ハッシュ関数処理は、実施の形態１と同じである。つまり、ハッシュ関数部２１は、鍵ＫｈとメッセージＭとを入力として、出力長が２ｎビットのハッシュ関数ｈにより、ハッシュ値ｗを計算する。但し、ハッシュ関数部２１は、実施の形態１のように、メッセージＭをｎビット毎に分割したメッセージブロックと、カウンター値とを入力として、ブロック暗号により値を計算し、計算された値を用いて２ｎビットのハッシュ値ｗを計算しなくてもよい。
【００４３】
図９及び図１０を参照して、実施の形態２に係る最終処理を説明する。
ステップＳ４１は、図４のステップＳ２１と同じである。
【００４４】
（ステップＳ４２：第１ブロック暗号計算処理）
第１ブロック暗号計算部４２１は、ブロック暗号Ｅに対するｋビットの鍵Ｋ［０，１］及びｋビットの鍵Ｋ［０，２］の入力を受け付ける。
第１ブロック暗号計算部４２１は、ステップＳ４１で分割部４１によって分割されて得られた値ｗ［１］と、鍵Ｋ［０，１］とを入力としてブロック暗号Ｅにより値ｚ［１］を計算する。また、第１ブロック暗号計算部４２１は、ステップＳ４１で分割部４１によって分割されて得られた値ｗ［２］と、鍵Ｋ［０，２］とを入力としてブロック暗号Ｅにより値ｚ［２］を計算する。
【００４５】
（ステップＳ４３：第２ブロック暗号計算処理）
第２ブロック暗号計算部４２２は、ｉ＝１，．．．，ｒの各整数ｉについて、ブロック暗号Ｅに対するｋビットの鍵Ｋ［ｉ］の入力を受け付ける。ｒは１以上の整数である。
第２ブロック暗号計算部４２２は、ｉ＝１，．．．，ｒの各整数ｉについて、値Ｑ［１，ｉ］及び値Ｑ［２，ｉ］と、ステップＳ４２で第１ブロック暗号計算部４２１によって計算された値ｚ［１］及び値ｚ［２］とを用いて、数１２に示すように値Ｘ［ｉ］を計算する。
【数１２】
0006305658.tif 000003
ここで、Ｑ［１，１］，Ｑ［１，２］，．．．，Ｑ［１，ｒ］は同じ値でもよいし異なる値でもよい。Ｑ［２，１］，Ｑ［２，２］，．．．，Ｑ［２，ｒ］は異なる値とする。具体例としては、Ｑ［１，ｉ］＝１，Ｑ［２，ｉ］＝２ｉ−１である。また、ｉ＝１，．．．，ｒの各整数ｉについて、Ｑ［１，ｉ］・ｚ［１］は、Ｑ［１，ｉ］とｚ［１］とのガロア体上の掛け算である。同様に、Ｑ［２，ｉ］・ｚ［２］は、Ｑ［２，ｉ］とｚ［２］とのガロア体上の掛け算である。
そして、第２ブロック暗号計算部４２２は、ｉ＝１，．．．，ｒの各整数ｉについて、計算された値Ｘ［ｉ］と、鍵Ｋ［ｉ］とを入力としてブロック暗号Ｅにより値Ｙ［ｉ］を計算する。
【００４６】
（ステップＳ４４：認証子計算処理）
認証子計算部４３は、ステップＳ４３で第２ブロック暗号計算部によって計算されたｉ＝１，．．．，ｒの各整数ｉについての値Ｙ［ｉ］の排他的論理和をとって得られた値又は排他的論理和をとって得られた値の一部をメッセージ認証子Ｔとして計算する。
【００４７】
＊＊＊実施の形態２の効果＊＊＊
ブロック暗号Ｅを疑似ランダム置換と仮定し、かつ、ハッシュ関数ｈをＯ（１／２２ｎ）−ａｌｍｏｓｔ  ｕｎｉｖｅｒｓａｌハッシュ関数と仮定する。すると、実施の形態２に係るメッセージ認証子生成装置１０によって実現されるメッセージ認証アルゴリズムはｑ１＝Ｏ（２ｔｎ／（ｔ＋１））となる。
ｐ−ａｌｍｏｓｔ  ｕｎｉｖｅｒｓａｌハッシュ関数とは、ハッシュ関数の鍵Ｋｈと２つの異なるハッシュ関数の入力Ｍ，Ｍ’とに対して、Ｈ（Ｋｈ，Ｍ）＝Ｈ（Ｋｈ，Ｍ’）となる確率がｐ以下となるハッシュ関数である。
【００４８】
実施の形態２に係るメッセージ認証子生成装置１０が図５及び図６を参照して説明したハッシュ関数ｈを用いて実現したメッセージ認証アルゴリズムは、ブロック暗号Ｅを疑似ランダム置換と仮定すると、ｑ１＝Ｏ（２ｔｎ／（ｔ＋１））となる。
【００４９】
なお、実施の形態１に係るメッセージ認証子生成装置１０の最終処理と、実施の形態２に係るメッセージ認証子生成装置１０の最終処理との構成は異なる。
しかし、実施の形態１に係るメッセージ認証子生成装置１０の最終処理を以下のように考える。すると、実施の形態１に係るメッセージ認証子生成装置１０の最終処理と、実施の形態２に係るメッセージ認証子生成装置１０の最終処理とが多くの共通した構成を有することが分かる。
【００５０】
図４のステップＳ２２で、ブロック暗号計算部４２は、値ｗ［１］を値ｚ［１］に代入し、値ｗ［２］を値ｚ［２］に代入する（図１０のステップＳ４２に対応）。そして、図４のステップＳ２２で、ブロック暗号計算部４２は、ｉ＝１，．．．，ｒの各整数ｉについて、値Ｑ［１，ｉ］及び値Ｑ［２，ｉ］と、値ｚ［１］及び値ｚ［２］とを用いて、数１２に示す値Ｘ［ｉ］を計算し、計算された値Ｘ［ｉ］を入力としてブロック暗号Ｅにより値Ｙ［ｉ］を計算する。ここで、ｒ＝２である。また、値Ｑ［１，１］は１であり、値Ｑ［２，１］は０であり、値Ｑ［１，２］は０であり、値Ｑ［２，２］は１である（図１０のステップＳ４３に対応）。
図４のステップＳ２３で、認証子計算部４３は、ｉ＝１，．．．，ｒの各整数ｉについての値Ｙ［ｉ］の排他的論理和をとって得られた値又は排他的論理和をとって得られた値の一部をメッセージ認証子Ｔとして計算する（図１０のステップＳ４４に対応）。
【符号の説明】
【００５１】
１０  メッセージ認証子生成装置、１１  処理回路、１２  プロセッサ、１３  メモリ、１４  ストレージ、２１  ハッシュ関数部、２２  後処理部、３１  メッセージブロック生成部、３２  ハッシュ値計算部、４１  分割部、４２  ブロック暗号計算部、４３  認証子計算部。
【要約】
メッセージ認証子生成装置（１０）は、ブロックサイズｎのブロック暗号Ｅを用いてメッセージ認証子を生成する。ハッシュ関数部（２１）は、メッセージＭを入力として、出力長がｎビットよりも長いハッシュ関数ｈにより、ハッシュ値ｗを計算する。後処理部（２２）は、ハッシュ関数部（２１）によって計算されたハッシュ値ｗに対してブロック暗号Ｅを用いた計算を行い、メッセージＭについてのブロックサイズｎ以下のメッセージ認証子Ｔを計算する。【図１】
0006305658.tif 000006
【図２】
0006305658.tif 000007
【図３】
0006305658.tif 000008
【図４】
0006305658.tif 000009
【図５】
0006305658.tif 000010
【図６】
0006305658.tif 000011
【図７】
0006305658.tif 000012
【図８】
0006305658.tif 000013
【図９】
0006305658.tif 000014
【図１０】
0006305658.tif 000015