(57)【要約】  メッセージ認証装置は、メッセージＭを２ｎビットの値Ｈに圧縮して、値Ｈをｎビットの２つの値Ｈ［１］と値Ｈ［２］とに分割する。メッセージ認証装置は、値Ｈ［１］からｍｉｎ｛ｔ，ｎ／２｝ビットの２つの値Ｕ［１］と値Ｕ［２］とに抽出して、メッセージＭと値Ｕ［１］とを入力としてｔビットの値Ｖ［１］を生成するとともに、メッセージＭと値Ｕ［２］とを入力としてｔビットの値Ｖ［２］を生成する。メッセージ認証装置は、値Ｖ［１］をＴｗｅａｋとして用いて値Ｈ［２］をＴｗｅａｋａｂｌｅブロック暗号Ｅにより暗号化して値Ｚ［１］を生成するとともに、値Ｖ［２］をＴｗｅａｋとして用いて値Ｈ［２］をＴｗｅａｋａｂｌｅブロック暗号Ｅにより暗号化して値Ｚ［２］を生成する。メッセージ認証装置は、値Ｚ［１］と値Ｚ［２］とから認証子Ｚを生成する。
2020044485.tif 000002
【特許請求の範囲】
【請求項１】
１以上の整数ｔ，ｎについて、ｔビットのＴｗｅａｋを入力としてｎビットの値を出力するＴｗｅａｋａｂｌｅブロック暗号Ｅを用いてメッセージＭの認証子Ｚを生成するメッセージ認証装置であり、
前記メッセージＭからｎビットの２つの値Ｈ［１］と値Ｈ［２］とを生成する圧縮部と、
前記値Ｈ［１］の上位ｍｉｎ｛ｔ，ｎ／２｝ビットと下位ｍｉｎ｛ｔ，ｎ／２｝ビットから２つの値Ｕ［１］と値Ｕ［２］とを抽出して、前記メッセージＭと前記値Ｕ［１］とを入力としてｔビットの値Ｖ［１］を生成するとともに、前記メッセージＭと前記値Ｕ［２］とを入力としてｔビットの値Ｖ［２］を生成するＴｗｅａｋ計算部と、
前記値Ｖ［１］をＴｗｅａｋとして用いて前記値Ｈ［２］を前記Ｔｗｅａｋａｂｌｅブロック暗号Ｅにより暗号化して値Ｚ［１］を生成するとともに、前記値Ｖ［２］をＴｗｅａｋとして用いて前記値Ｈ［２］を前記Ｔｗｅａｋａｂｌｅブロック暗号Ｅにより暗号化して値Ｚ［２］を生成する第１暗号化部と、
前記値Ｚ［１］と前記値Ｚ［２］とから前記認証子Ｚを生成する認証子生成部と
を備えるメッセージ認証装置。
【請求項２】
前記圧縮部は、
０以上ｔ以下の整数ｃと、整数ｄ＝ｔ−ｃとについて、前記メッセージＭがｎ＋ｄの倍数ビットでない場合には、前記メッセージＭにビットを付加してｎ＋ｄの倍数ビットの値Ｍ＊を生成し、前記メッセージＭがｎ＋ｄの倍数ビットである場合には、前記メッセージＭを値Ｍ＊に設定するＭ＊生成部と、
前記値Ｍ＊を先頭からｎ＋ｄビット毎にＬ個の値Ｍ［１］，．．．，値Ｍ［Ｌ］に分割する分割部と、
ｉ＝１，．．．，Ｌの各整数ｉについて、値Ｍ［ｉ］をｎビットの値Ａ［ｉ］とｄビットの値Ｂ［ｉ］とに分割し、前記値Ｂ［ｉ］と前記値ｉをｃビット表現した値とから生成されたｔビットの値をＴｗｅａｋとして用いて前記値Ａ［ｉ］を前記Ｔｗｅａｋａｂｌｅブロック暗号Ｅにより暗号化して値Ｃ［ｉ］を生成する第２暗号化部と、
ｉ＝１，．．．，Ｌの各整数ｉについての前記値Ｃ［ｉ］を用いて、前記値Ｈ［１］と前記値Ｈ［２］とを計算するＨ計算部と
を備える請求項１に記載のメッセージ認証装置。
【請求項３】
前記Ｈ計算部は、ｉ＝１，．．．，Ｌの各整数ｉについての前記値Ｃ［ｉ］の排他的論理和を計算して前記値Ｈ［１］を生成し、ｉ＝１，．．．，Ｌの各整数ｉについて前記値Ｃ［ｉ］と値ｘＬ−ｉ＋１とのガロア体ＧＦ（２ｎ）上の積を計算して値Ｃ＊［ｉ］を生成し、ｉ＝１，．．．，Ｌの各整数ｉについての値Ｃ＊［ｉ］の排他的論理和を計算して前記値Ｈ［２］を生成する
請求項２に記載のメッセージ認証装置。
【請求項４】
前記Ｔｗｅａｋ計算部は、
ｉ＝１，．．．，Ｌの各整数ｉについての前記値Ｂ［ｉ］の排他的論理和を計算して値Ｂを生成し、前記値Ｂにビットを付加してｔビットの値Ｗを生成するＷ生成部と、
ｉ＝１，２の各整数ｉについての前記値Ｕ［ｉ］がｔビットでない場合には、前記値Ｕ［ｉ］にビットを付加してｔビットの値Ｕ’［ｉ］を生成し、前記値Ｕ［ｉ］がｔビットである場合には、前記値Ｕ［ｉ］を値Ｕ’［ｉ］に設定するＵ’生成部と、
ｉ＝１，２の各整数ｉについて、前記値Ｗと前記値Ｕ’［ｉ］との排他的論理和を計算して前記値Ｖ［ｉ］を生成するＶ生成部と
を備える請求項２又は３に記載のメッセージ認証装置。
【請求項５】
前記Ｔｗｅａｋａｂｌｅブロック暗号Ｅは、前記Ｔｗｅａｋとして、第１引数と、ｔビットの第２引数とが入力され、
前記第１暗号化部は、ｉ＝１，２の各整数ｉについて、前記メッセージと前記整数ｉとから決められるインデックスを第１引数とし、前記値Ｖ［ｉ］を第２引数として用いて前記値Ｈ［２］を前記Ｔｗｅａｋａｂｌｅブロック暗号Ｅにより暗号化して値Ｚ［ｉ］を生成する
請求項１から４までのいずれか１項に記載のメッセージ認証装置。
【請求項６】
前記認証子生成部は、前記値Ｚ［１］と前記値Ｚ［２］との排他的論理和を計算して、前記認証子Ｚを生成する
請求項１から５までのいずれか１項に記載のメッセージ認証装置。
【請求項７】
１以上の整数ｔ，ｎについて、ｔビットのＴｗｅａｋを入力としてｎビットの値を出力するＴｗｅａｋａｂｌｅブロック暗号Ｅを用いてメッセージＭの認証子Ｚを生成するメッセージ認証方法であり、
圧縮部が、前記メッセージＭからｎビットの２つの値Ｈ［１］と値Ｈ［２］とを生成し、
Ｔｗｅａｋ計算部が、前記値Ｈ［１］の上位ｍｉｎ｛ｔ，ｎ／２｝ビットと下位ｍｉｎ｛ｔ，ｎ／２｝ビットから２つの値Ｕ［１］と値Ｕ［２］とを抽出して、前記メッセージＭと前記値Ｕ［１］とを入力としてｔビットの値Ｖ［１］を生成するとともに、前記メッセージＭと前記値Ｕ［２］とを入力としてｔビットの値Ｖ［２］を生成し、
第１暗号化部が、前記値Ｖ［１］をＴｗｅａｋとして用いて前記値Ｈ［２］を前記Ｔｗｅａｋａｂｌｅブロック暗号Ｅにより暗号化して値Ｚ［１］を生成するとともに、前記値Ｖ［２］をＴｗｅａｋとして用いて前記値Ｈ［２］を前記Ｔｗｅａｋａｂｌｅブロック暗号Ｅにより暗号化して値Ｚ［２］を生成し、
認証子生成部が、前記値Ｚ［１］と前記値Ｚ［２］とから前記認証子Ｚを生成するメッセージ認証方法。
【請求項８】
１以上の整数ｔ，ｎについて、ｔビットのＴｗｅａｋを入力としてｎビットの値を出力するＴｗｅａｋａｂｌｅブロック暗号Ｅを用いてメッセージＭの認証子Ｚを生成するメッセージ認証プログラムであり、
圧縮部が、前記メッセージＭからｎビットの２つの値Ｈ［１］と値Ｈ［２］とを生成する圧縮処理と、
Ｔｗｅａｋ計算部が、前記値Ｈ［１］の上位ｍｉｎ｛ｔ，ｎ／２｝ビットと下位ｍｉｎ｛ｔ，ｎ／２｝ビットからから２つの値Ｕ［１］と値Ｕ［２］とを抽出して、前記メッセージＭと前記値Ｕ［１］とを入力としてｔビットの値Ｖ［１］を生成するとともに、前記メッセージＭと前記値Ｕ［２］とを入力としてｔビットの値Ｖ［２］を生成するＴｗｅａｋ計算処理と、
第１暗号化部が、前記値Ｖ［１］をＴｗｅａｋとして用いて前記値Ｈ［２］を前記Ｔｗｅａｋａｂｌｅブロック暗号Ｅにより暗号化して値Ｚ［１］を生成するとともに、前記値Ｖ［２］をＴｗｅａｋとして用いて前記値Ｈ［２］を前記Ｔｗｅａｋａｂｌｅブロック暗号Ｅにより暗号化して値Ｚ［２］を生成する第１暗号化処理と、
認証子生成部が、前記値Ｚ［１］と前記値Ｚ［２］とから前記認証子Ｚを生成する認証子生成処理と
を行うメッセージ認証装置としてコンピュータを機能させるメッセージ認証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、Ｔｗｅａｋａｂｌｅブロック暗号を用いるメッセージ認証技術に関する。
【背景技術】
【０００２】
メッセージ認証アルゴリズムを用いると、データの改ざんを検知することができる。メッセージ認証アルゴリズムで扱うデータをメッセージと呼ぶ。【０００３】
メッセージ認証アルゴリズムは、任意長のメッセージＭと秘密鍵Ｋとを入力として、固定長の改ざん検知用の認証子Ｚを出力する関数である。【０００４】
送信者をＡｌｉｃｅとし、受信者をＢｏｂとする。メッセージ認証アルゴリズムを用いた改ざん検知通信を行う場合、ＡｌｉｃｅとＢｏｂとはあらかじめ秘密鍵Ｋを共有しておく。
Ａｌｉｃｅは、メッセージＭと鍵Ｋとから、メッセージ認証アルゴリズムを用いて、メッセージＭの認証子Ｚを生成し、メッセージＭと認証子ＺとをＢｏｂに送信する。Ｂｏｂは、メッセージＭと認証子Ｚを受信し、メッセージＭと鍵Ｋとからメッセージ認証アルゴリズムを用いて認証子Ｚ’を生成する。Ｂｏｂは、受信した認証子Ｚと生成した認証子Ｚ’とが一致すれば、メッセージＭは改ざんされていないと判断し、一致しなければ改ざんされていると判断する。【０００５】
メッセージ認証アルゴリズムの安全性は、疑似乱数性が用いられる。疑似乱数性は、０又は１の１ビットの値を出力する識別者Ｄを用いて、識別者Ｄがメッセージ認証アルゴリズムにアクセスして出力値を観測したのち１を出力する確率と、識別者Ｄがランダム関数Ｒにアクセスして出力値を観測したのち１を出力する確率との差を考える安全性である。この差は疑似乱数性のアドバンテージと呼ばれる。【０００６】
秘密鍵Ｋを用いるメッセージ認証アルゴリズムＦＫに対して、識別者ＤのアドバンテージＡｄｖＦ（Ｄ）は、以下の通りである。
ＡｄｖＦ（Ｄ）＝Ｐｒ［Ｄ（ＦＫ）＝１］−Ｐｒ［Ｄ（Ｒ）＝１］
鍵Ｋはランダムに選ばれる。ランダム関数Ｒの入力は任意長、出力はＦＫの出力長と同じである。また、ランダム関数Ｒの出力は新規の入力に対し、ランダムに選ばれる。過去に同じ入力が与えられた場合は、ランダム関数Ｒの出力は過去と同じ値になる。Ｄ（ＦＫ）は、識別者Ｄがメッセージ認証アルゴリズムにアクセスした場合の出力値である。Ｄ（Ｒ）は、識別者Ｄがランダム関数Ｒにアクセスした場合の出力値である。【０００７】
メッセージ認証アルゴリズムＦＫの構成方法として、Ｔｗｅａｋａｂｌｅブロック暗号を用いる方法がある。
Ｓｅｔ（Ｋ）及びＳｅｔ（Ｔ）をある有限集合とする。Ｔｗｅａｋａｂｌｅブロック暗号Ｅは、Ｓｅｔ（Ｋ）の要素である鍵Ｋと、Ｓｅｔ（Ｔ）の要素であるＴｗｅａｋの値Ｔと、ｎビットの平文Ｐとを入力とし、ｎビットの暗号文Ｃを出力する関数である。これをＣ＝ＥＫ（Ｔ，Ｐ）と書く。また、Ｔｗｅａｋａｂｌｅブロック暗号の平文及び暗号文のサイズｎはブロックサイズと呼ばれる。Ｔｗｅａｋａｂｌｅブロック暗号Ｅは、鍵ＫとＴｗｅａｋの値Ｔとを固定するとｎビットの置換となる。また、鍵Ｋ又はＴｗｅａｋの値Ｔを変更すると別の置換となる。
Ｔｗｅａｋａｂｌｅブロック暗号Ｅは、非特許文献１，２に記載されている。【０００８】
Ｔｗｅａｋａｂｌｅブロック暗号を用いてメッセージ認証アルゴリズムを設計する場合には、メッセージ認証アルゴリズムの安全性として擬似乱数性が用いられる。擬似乱数性を評価する場合には、鍵Ｋを用いるＴｗｅａｋａｂｌｅブロック暗号ＥＫがＴｗｅａｋａｂｌｅランダム置換πに置き換えられて評価される。また、この際、識別者Ｄがメッセージ認証アルゴリズムにアクセスするクエリー回数ｑと、メッセージ認証アルゴリズムの計算でＴｗｅａｋａｂｌｅランダム置換が呼ばれる回数σとが用いられる。
Ｔｗｅａｋａｂｌｅランダム置換πは、Ｓｅｔ（Ｔ）の要素であるＴｗｅａｋの値Ｔと、ｎビットの平文Ｐとを入力とし、ｎビットの暗号文Ｃを出力する。Ｔｗｅａｋａｂｌｅランダム置換πは、Ｔｗｅａｋの値Ｔを固定すると、ｎビットのランダム置換となり、Ｔｗｅａｋの値Ｔを変えると、別のランダム置換となる。【０００９】
ａ≦ｂとなる整数ａ，ｂに対し、［ａ，ｂ］をａからｂまでの整数の集合、すなわち［ａ，ｂ］＝｛ａ，ａ＋１，．．．，ｂ−１，ｂ｝とする。ビット列Ｘに対し、｜Ｘ｜をビット列Ｘのビット長とする。ａ≦｜Ｘ｜を満たす正の整数ａに対し、Ｘ［１，ａ］をＸの上位ａビットとする。正の整数ａ、ｂに対し、ｓｔｒｂ（ａ）を、整数ａをｂビット表現した値とする。例えば、ｓｔｒ３（２）＝０１０である。
正の整数ｔとｎビットの値Ｘとｔビットの値Ｙとに対し、数１に示す演算子を数２に示すように定義する。
【数１】
2020044485.tif 000003
【数２】
2020044485.tif 000004
数３に示す演算子をガロア体ＧＦ（２ｎ）上の掛け算とし、ｘをガロア体ＧＦ（２ｎ）の生成元とする。
【数３】
2020044485.tif 000005
【００１０】
Ｔｗｅａｋとして２つの引数（ｊ，Ｔ）を用いるＴｗｅａｋａｂｌｅブロック暗号がある。正の整数rと、ｉ≦２ｒ−１を満たす正の整数ｉと、整数ｔとに対し、Ｔｗｅａｋａｂｌｅブロック暗号の集合Ｓｅｔ（Ｔ）をＳｅｔ（Ｔ）＝［０，ｉ］×｛０，１｝ｔとする。つまり、Ｔｗｅａｋの第１引数ｊは、［０，ｉ］に含まれる値であり、Ｔｗｅａｋの第２引数Ｔは、｛０，１｝ｔで表される値である。
また、Ｔｗｅａｋの第１引数ｊ∈［０，ｉ］と、鍵Ｋを用いるＴｗｅａｋａｂｌｅブロック暗号をＥＫｊと記載する。つまり、Ｔｗｅａｋが（ｊ，Ｔ）であり、平文がＰである場合、暗号文はＣ＝ＥＫｊ（Ｔ，Ｐ）となる。
非特許文献１及び非特許文献２に記載されたＴｗｅａｋａｂｌｅブロック暗号は、ある整数ｓに対し、Ｓｅｔ（Ｔ）＝｛０，１｝ｓと定義されている。Ｓｅｔ（Ｔ）＝｛０，１｝ｓとなるＴｗｅａｋａｂｌｅブロック暗号に対し、Ｓｅｔ（Ｔ）＝［０，ｉ］×｛０，１｝ｔとする場合、ｓビットのうちｒビットが［０，ｉ］のために用いられ、残りのｓ−ｒビットが｛０，１｝ｔのために用いられる。【００１１】
Ｔｗｅａｋａｂｌｅブロック暗号を用いたメッセージ認証アルゴリズムは、非特許文献３〜５に記載されている。【００１２】
非特許文献３には、正の整数ｔに対し、Ｔｗｅａｋの集合をＳｅｔ（Ｔ）＝［０，２］×｛０，１｝ｔと定義したメッセージ認証アルゴリズムが記載されている。非特許文献６には、非特許文献３に記載されたメッセージ認証アルゴリズムの擬似乱数性のアドバンテージが、ｎ≦ｔの場合に、数４に示す確率で抑えされることが示されている。数４では、Ｆが非特許文献３に記載されたメッセージ認証アルゴリズムである。
【数４】
2020044485.tif 000006
このアドバンテージの上界値をバウンドと呼ぶ。識別者Ｄのクエリー回数がｑ＝Ｏ（２ｎ）となるまで、このバウンドが１とならない。そのため、ｎ≦ｔの場合に、クエリー回数がｑ＝Ｏ（２ｎ）となるまで擬似乱数性を保証できることになる。【００１３】
非特許文献４には、正の整数ｔに対し、Ｓｅｔ（Ｔ）＝［０，５］×｛０，１｝ｔと定義したメッセージ認証アルゴリズムが提案されている。非特許文献４には、非特許文献４に記載されたメッセージ認証アルゴリズムについて、数５に示す擬似乱数性のアドバンテージのバウンドが示されている。数５では、Ｆが非特許文献４に記載されたメッセージ認証アルゴリズムである。
【数５】
2020044485.tif 000007
よって、ｎ≦ｔの場合に、Ｔｗｅａｋａｂｌｅランダム置換の呼び出し回数がσ＝Ｏ（２ｎ）となるまで擬似乱数性を保証できることになる。【００１４】
非特許文献５には、非特許文献４に記載されたメッセージ認証アルゴリズムの演算量を削減したメッセージ認証アルゴリズムが記載されている。非特許文献５には、非特許文献５に記載されたメッセージ認証アルゴリズムについて、数６に示す擬似乱数性のアドバンテージのバウンドが示されている。数６では、Ｆが非特許文献５に記載されたメッセージ認証アルゴリズムである。
【数６】
2020044485.tif 000008
よって、ｎ≦ｔの場合に、Ｔｗｅａｋａｂｌｅランダム置換の呼び出し回数がσ＝Ｏ（２ｎ＋ｍｉｎ｛ｎ，ｔ｝／ｑ）、つまりＯ（２２ｎ／ｑ）、又は、クエリー回数がｑ＝Ｏ（２ｎ）となるまで擬似乱数性を保証できる。【００１５】
ここで、ｑ≦σなので、非特許文献３がＴｗｅａｋａｂｌｅブロック暗号を用いたメッセージ認証アルゴリズムで、最も安全なアルゴリズムとなる。
【先行技術文献】
【非特許文献】
【００１６】
【非特許文献１】Ｊｅｒｅｍｙ  Ｊｅａｎ，  Ｉｖｉｃａ  Ｎｉｋｏｌｉｃ，  Ｔｈｏｍａｓ  Ｐｅｙｒｉｎ．  Ｔｗｅａｋｓ  ａｎｄ  Ｋｅｙｓ  ｆｏｒ  Ｂｌｏｃｋ  Ｃｉｐｈｅｒｓ：  Ｔｈｅ  ＴＷＥＡＫＥＹ  Ｆｒａｍｅｗｏｒｋ．  ＡＳＩＡＣＲＹＰＴ  ２０１４．  ｐｐ．２７４−２８８．  ＬＮＣＳ  ｖｏｌｕｍｅ  ８８７４．  Ｓｐｒｉｎｇｅｒ．
【非特許文献２】Ｃｈｒｉｓｔｏｆ  Ｂｅｉｅｒｌｅ，  Ｊeｒeｍｙ  Ｊｅａｎ，  Ｓｔｅｆａｎ  Ｋｏｌｂｌ，  Ｇｒｅｇｏｒ  Ｌｅａｎｄｅｒ，  Ａｍｉｒ  Ｍｏｒａｄｉ，  Ｔｈｏｍａｓ  Ｐｅｙｒｉｎ，  Ｙｕ  Ｓａｓａｋｉ，  Ｐａｓｃａｌ  Ｓａｓｄｒｉｃｈ，  Ｓｉａｎｇ  Ｍｅｎｇ  Ｓｉｍ．  Ｔｈｅ  ＳＫＩＮＮＹ  Ｆａｍｉｌｙ  ｏｆ  Ｂｌｏｃｋ  Ｃｉｐｈｅｒｓ  ａｎｄ  Ｉｔｓ  Ｌｏｗ−Ｌａｔｅｎｃｙ  Ｖａｒｉａｎｔ  ＭＡＮＴＩＳ．  ＣＲＹＰＴＯ  ２０１６．  ｐｐ．１２３−１５３．  ＬＮＣＳ  ｖｏｌｕｍｅ  ９８１５．  Ｓｐｒｉｎｇｅｒ．
【非特許文献３】Ｙｕｓｕｋｅ  Ｎａｉｔｏ．  Ｆｕｌｌ  ＰＲＦ−Ｓｅｃｕｒｅ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ  Ｂａｓｅｄ  ｏｎ  Ｔｗｅａｋａｂｌｅ  Ｂｌｏｃｋ  Ｃｉｐｈｅｒ．  ＰｒｏｖＳｅｃ  ２０１５．  ｐｐ．１６７−１８２．  ＬＮＣＳ  ｖｏｌｕｍｅ  ９４５１．  Ｓｐｒｉｎｇｅｒ．
【非特許文献４】Ｔｅｔｓｕ  Ｉｗａｔａ，  Ｋａｚｕｈｉｋｏ  Ｍｉｎｅｍａｔｓｕ，  Ｔｈｏｍａｓ  Ｐｅｙｒｉｎ，  Ｙａｎｎｉｃｋ  Ｓｅｕｒｉｎ．  ＺＭＡＣ：  Ａ  Ｆａｓｔ  Ｔｗｅａｋａｂｌｅ  Ｂｌｏｃｋ  Ｃｉｐｈｅｒ  Ｍｏｄｅ  ｆｏｒ  Ｈｉｇｈｌｙ  Ｓｅｃｕｒｅ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ．  ＣＲＹＰＴＯ  ２０１７．  ｐｐ．３４−６５．  ＬＮＣＳ  ｖｏｌｕｍｅ  １０４０３．  Ｓｐｒｉｎｇｅｒ．
【非特許文献５】Ｅｉｋ  Ｌｉｓｔ，  Ｍｒｉｄｕｌ  Ｎａｎｄｉ．  ＺＭＡＣ＋  −  Ａｎ  Ｅｆｆｉｃｉｅｎｔ  Ｖａｒｉａｂｌｅ−ｏｕｔｐｕｔ−ｌｅｎｇｔｈ  Ｖａｒｉａｎｔ  ｏｆ  ＺＭＡＣ．  ＩＡＣＲ  Ｔｒａｎｓ．  Ｓｙｍｍｅｔｒｉｃ  Ｃｒｙｐｔｏｌ．  ２０１７  ｖｏｌｕｍｅ  ４．  ｐｐ．３０６−３２５．
【非特許文献６】Ｅｉｋ  Ｌｉｓｔ，  Ｍｒｉｄｕｌ  Ｎａｎｄｉ．  Ｒｅｖｉｓｉｔｉｎｇ  Ｆｕｌｌ−ＰＲＦ−Ｓｅｃｕｒｅ  ＰＭＡＣ  ａｎｄ  Ｕｓｉｎｇ  Ｉｔ  ｆｏｒ  Ｂｅｙｏｎｄ−Ｂｉｒｔｈｄａｙ  Ａｕｔｈｅｎｔｉｃａｔｅｄ  Ｅｎｃｒｙｐｔｉｏｎ．  ＣＴ−ＲＳＡ  ２０１７．  ｐｐ．２５８−２７４．  ＬＮＣＳ  ｖｏｌｕｍｅ  １０１５９．  Ｓｐｒｉｎｇｅｒ．
【発明の概要】
【発明が解決しようとする課題】
【００１７】
既存のＴｗｅａｋａｂｌｅブロック暗号を用いたメッセージ認証アルゴリズムは、識別者Ｄのクエリー回数がｑ＝Ｏ（２ｎ）となるまで擬似乱数性を保証するために、ｎ≦ｔを満たすＴｗｅａｋａｂｌｅブロック暗号が必要となる。
ｔ＜ｎの条件を満たすＴｗｅａｋａｂｌｅブロック暗号としては、例えば、非特許文献１に記載されている方式がある。しかし、ｔ＜ｎを満たし、かつ、識別者Ｄのクエリー回数がｑ＝Ｏ（２ｎ）となるまで擬似乱数性を保証するメッセージ認証アルゴリズムは存在しない。
この発明は、Ｔｗｅａｋａｂｌｅブロック暗号を用いた、安全性の高いメッセージ認証アルゴリズムを実現可能にすることを目的とする。
【課題を解決するための手段】
【００１８】
この発明に係るメッセージ認証装置は、
１以上の整数ｔ，ｎについて、ｔビットのＴｗｅａｋを入力としてｎビットの値を出力するＴｗｅａｋａｂｌｅブロック暗号Ｅを用いてメッセージＭの認証子Ｚを生成するメッセージ認証装置であり、
前記メッセージＭを２ｎビットの値Ｈに圧縮して、値Ｈをｎビットの２つの値Ｈ［１］と値Ｈ［２］とに分割する圧縮部と、
前記値Ｈ［１］からｍｉｎ｛ｔ，ｎ／２｝ビットの２つの値Ｕ［１］と値Ｕ［２］とに抽出して、前記メッセージＭと前記値Ｕ［１］とを入力としてｔビットの値Ｖ［１］を生成するとともに、前記メッセージＭと前記値Ｕ［２］とを入力としてｔビットの値Ｖ［２］を生成するＴｗｅａｋ計算部と、
前記値Ｖ［１］をＴｗｅａｋとして用いて前記値Ｈ［２］を前記Ｔｗｅａｋａｂｌｅブロック暗号Ｅにより暗号化して値Ｚ［１］を生成するとともに、前記値Ｖ［２］をＴｗｅａｋとして用いて前記値Ｈ［２］を前記Ｔｗｅａｋａｂｌｅブロック暗号Ｅにより暗号化して値Ｚ［２］を生成する第１暗号化部と、
前記値Ｚ［１］と前記値Ｚ［２］とから前記認証子Ｚを生成する認証子生成部と
を備える。
【発明の効果】
【００１９】
この発明では、Ｔｗｅａｋａｂｌｅブロック暗号を用いた、安全性の高いメッセージ認証アルゴリズムを実現可能である。
【図面の簡単な説明】
【００２０】
【図１】実施の形態１に係るメッセージ認証装置１０の構成図。
【図２】実施の形態１に係るメッセージ認証装置１０の全体的な動作のフローチャート。
【図３】実施の形態１に係るメッセージ認証装置１０により実現されるメッセージ認証アルゴリズムの説明図。
【図４】実施の形態１に係る圧縮処理のフローチャート。
【図５】実施の形態１に係る圧縮処理の説明図。
【図６】実施の形態１に係る関数Ｆのフローチャート。
【図７】変形例１に係るメッセージ認証装置１０の構成図。
【図８】変形例１に係るメッセージ認証装置１０の構成例を示す図。
【発明を実施するための形態】
【００２１】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１を参照して、実施の形態１に係るメッセージ認証装置１０の構成を説明する。
メッセージ認証装置１０は、プロセッサ１１と、メモリ１２と、ストレージ１３と、通信インタフェース１４とのハードウェアを備える。プロセッサ１１は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００２２】
プロセッサ１１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ１１は、具体例としては、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【００２３】
メモリ１２は、データを一時的に記憶する記憶装置である。メモリ１２は、具体例としては、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
【００２４】
ストレージ１３は、データを保管する記憶装置である。ストレージ１３は、具体例としては、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。また、ストレージ１３は、ＳＤ（登録商標，Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリカード、ＣＦ（ＣｏｍｐａｃｔＦｌａｓｈ，登録商標）、ＮＡＮＤフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）といった可搬記録媒体であってもよい。
【００２５】
通信インタフェース１４は、外部の装置と通信するためのインタフェースである。通信インタフェース１４は、具体例としては、Ｅｔｈｅｒｎｅｔ（登録商標）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＨＤＭＩ（登録商標，Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）のポートである。
【００２６】
メッセージ認証装置１０は、機能構成要素として、通信部２１と、圧縮部２２と、Ｔｗｅａｋ計算部２３と、第１暗号化部２４と、認証子生成部２５とを備える。圧縮部２２は、Ｍ＊生成部３１と、分割部３２と、第２暗号化部３３と、Ｈ計算部３４とを備える。Ｔｗｅａｋ計算部２３は、Ｗ生成部４１と、Ｕ’生成部４２と、Ｖ生成部４３とを備える。メッセージ認証装置１０の各機能構成要素の機能はソフトウェアにより実現される。
ストレージ１３には、メッセージ認証装置１０の各機能構成要素の機能を実現するプログラムが記憶されている。このプログラムは、プロセッサ１１によりメモリ１２に読み込まれ、プロセッサ１１によって実行される。これにより、メッセージ認証装置１０の各機能構成要素の機能が実現される。
【００２７】
図１では、プロセッサ１１は、１つだけ示されていた。しかし、プロセッサ１１は、複数であってもよく、複数のプロセッサ１１が、各機能を実現するプログラムを連携して実行してもよい。
【００２８】
＊＊＊動作の説明＊＊＊
図２から図６を参照して、実施の形態１に係るメッセージ認証装置１０の動作を説明する。
実施の形態１に係るメッセージ認証装置１０の動作は、実施の形態１に係るメッセージ認証方法に相当する。また、実施の形態１に係るメッセージ認証装置１０の動作は、実施の形態１に係るメッセージ認証プログラムの処理に相当する。
【００２９】
図２及び図３を参照して、実施の形態１に係るメッセージ認証装置１０の全体的な動作を説明する。
メッセージ認証装置１０は、１以上の整数ｔ，ｎについて、ｔビットのＴｗｅａｋを入力としてｎビットの値を出力するＴｗｅａｋａｂｌｅブロック暗号Ｅを用いてメッセージＭの認証子Ｚを生成する。ここでは、メッセージ認証装置１０は、Ｔｗｅａｋとして２つの引数（ｊ，Ｔ）を用いるＴｗｅａｋａｂｌｅブロック暗号ＥＫｊを用いる。また、２≦ｓである整数ｓに対し、Ｔｗｅａｋの集合がＳｅｔ（Ｔ）＝［０，ｓ］×｛０，１｝ｔと定義される。
【００３０】
以下の動作の前提として、メッセージ認証装置１０は、メッセージＭの送信先と共有した鍵Ｋをストレージ１３に記憶している。
【００３１】
（ステップＳ１：入力処理）
通信部２１は、メッセージ認証装置１０の利用者によって入力装置等が操作され、入力されたメッセージＭを、通信インタフェース１４を介して受け付ける。通信部２１は、メッセージＭをメモリ１２に書き込む。
【００３２】
（ステップＳ２：圧縮処理）
圧縮部２２は、メッセージＭをメモリ１２から読み出す。圧縮部２２は、関数Ｈａｓｈを用いて、メッセージＭを２ｎビットの値Ｈに圧縮する。圧縮部２２は、値Ｈをｎビットの２つの値Ｈ［１］と値Ｈ［２］とに分割する。圧縮部２２は、値Ｈ［１］と値Ｈ［２］とをメモリ１２に書き込む。
【００３３】
（ステップＳ３：Ｔｗｅａｋ計算処理）
Ｔｗｅａｋ計算部２３は、値Ｈ［１］をメモリ１２から読み出す。
Ｔｗｅａｋ計算部２３は、値Ｈ［１］からｍｉｎ｛ｔ，ｎ／２｝ビットの２つの値Ｕ［１］と値Ｕ［２］とを抽出する。具体例としては、Ｔｗｅａｋ計算部２３は、値Ｈ［１］の先頭からｍｉｎ｛ｔ，ｎ／２｝ビットを値Ｕ［１］として抽出し、値Ｈ［１］の後からｍｉｎ｛ｔ，ｎ／２｝ビットを値Ｕ［２］として抽出する。なお、値Ｈ［１］の代わりにｂビットの置換関数pを用いて計算した値ｐ（Ｈ［１］）を用いて、値Ｕ［１］と値Ｕ［２］を抽出してもよい。
Ｔｗｅａｋ計算部２３は、メッセージＭと値Ｕ［１］とを入力として関数Ｆ［１］を計算することにより、ｔビットの値Ｖ［１］を生成する。また、Ｔｗｅａｋ計算部２３は、メッセージＭと値Ｕ［２］とを入力として関数Ｆ［２］を計算することにより、ｔビットの値Ｖ［２］を生成する。
Ｔｗｅａｋ計算部２３は、値Ｖ［１］と値Ｖ［２］とをメモリ１２に書き込む。
【００３４】
（ステップＳ４：第１暗号化処理）
第１暗号化部２４は、値Ｖ［１］と値Ｖ［２］と値Ｈ［２］とをメモリ１２から読み出す。
第１暗号化部２４は、値Ｖ［１］をＴｗｅａｋとして用いて値Ｈ［２］をＴｗｅａｋａｂｌｅブロック暗号Ｅにより暗号化することにより、値Ｚ［１］を生成する。また、第１暗号化部２４は、値Ｖ［２］をＴｗｅａｋとして用いて値Ｈ［２］をＴｗｅａｋａｂｌｅブロック暗号Ｅにより暗号化することにより、値Ｚ［２］を生成する。第１暗号化部２４は、値Ｚ［１］と値Ｚ［２］とをメモリ１２に書き込む。
具体的には、ｉ＝１，２の各整数ｉについて、第１暗号化部２４は、ｉｎｄｅｘ（ｉ，｜Ｍ｜）をＴｗｅａｋの第１引数とし、値Ｖ［ｉ］をＴｗｅａｋの第２引数として用いる。ここで、｜Ｍ｜は、メッセージＭのビット長である。ｉｎｄｅｘは、［１，ｓ］の値とメッセージのビット長｜Ｍ｜とを入力として、［１，ｓ］の値を出力する関数である。そして、第１暗号化部２４は、値Ｈ［２］をＴｗｅａｋａｂｌｅブロック暗号Ｅにより暗号化することにより、値Ｚ［ｉ］を生成する。この際、第１暗号化部２４は、ストレージ１３に記憶された鍵Ｋを用いる。つまり、第１暗号化部２４は、Ｚ［ｉ］＝ＥＫｉｎｄｅｘ（ｉ，｜Ｍ｜）（Ｖ［ｉ］，Ｈ［２］）を計算する。
【００３５】
（ステップＳ５：認証子生成処理）
認証子生成部２５は、値Ｚ［１］と値Ｚ［２］とをメモリ１２から読み出す。認証子生成部２５は、値Ｚ［１］と値Ｚ［２］とからメッセージＭの認証子Ｚを生成する。具体例としては、認証子生成部２５は、値Ｚ［１］と値Ｚ［２］との排他的論理和を認証子Ｚとして生成する。認証子生成部２５は、認証子Ｚをメモリ１２に書き込む。
【００３６】
（ステップＳ６：送信処理）
通信部２１は、メッセージＭと認証子Ｚとをメモリ１２から読み出す。通信部２１は、メッセージＭと認証子Ｚとを、通信インタフェース１４を介して送信先に送信する。
【００３７】
図４及び図５を参照して、実施の形態１に係る圧縮処理（図２のステップＳ２）を説明する。
以下の説明では、値ｃを０≦ｃ≦ｔを満たす整数とする。また、値ｄ＝ｔ−ｃとする。
【００３８】
（ステップＳ２１：Ｍ＊生成処理）
Ｍ＊生成部３１は、メッセージＭのビット長｜Ｍ｜がｎ＋ｄの倍数でない場合には、メッセージＭにビット列を付加して、ｎ＋ｄの倍数のビット長の値Ｍ＊を生成する。具体例としては、Ｍ＊生成部３１は、メッセージＭの後に１のビットを付加し、さらにその後ろに０のビットを１つ以上付加して、ｎ＋ｄの倍数の値Ｍ＊を生成する。つまり、Ｍ＊＝Ｍ｜｜１｜｜０．．．０である。
Ｍ＊生成部３１は、メッセージＭのビット長｜Ｍ｜がｎ＋ｄの倍数である場合には、メッセージＭを値Ｍ＊に設定する。つまり、Ｍ＊＝Ｍである。
Ｍ＊生成部３１は、値Ｍ＊をメモリ１２に書き込む。
【００３９】
（ステップＳ２２：分割処理）
分割部３２は、値Ｍ＊をメモリ１２から読み出す。分割部３２は、値Ｍ＊を先頭からｎ＋ｄビット毎にＬ個の値Ｍ［１］，．．．，値Ｍ［Ｌ］に分割する。分割部３２は、値Ｍ［１］，．．．，値Ｍ［Ｌ］をメモリ１２に書き込む。
【００４０】
（ステップＳ２３：第２暗号化処理）
ｉ＝１，．．．，Ｌの各整数ｉについて、第２暗号化部３３は、値Ｍ［ｉ］をメモリ１２から読み出す。第２暗号化部３３は、値Ｍ［ｉ］をｎビットの値Ａ［ｉ］とｄビットの値Ｂ［ｉ］とに分割する。第２暗号化部３３は、値Ｂ［ｉ］と値ｉをｃビット表現した値ｓｔｒｃ（ｉ）とから生成されたｔビットの値ＴをＴｗｅａｋとして用いて値Ａ［ｉ］をＴｗｅａｋａｂｌｅブロック暗号Ｅにより暗号化して値Ｃ［ｉ］を生成する。第２暗号化部３３は、値Ａ［ｉ］と値Ｂ［ｉ］と値Ｃ［ｉ］とをメモリ１２に書き込む。
具体的には、第２暗号化部３３は、０をＴｗｅａｋの第１引数とし、ｔビットの値ＴをＴｗｅａｋの第２引数として用いる。例えば、値Ｔ＝ｓｔｒｃ（ｉ）｜｜Ｂ［ｉ］である。なお、ｔビットの置換関数πを用いて、値Ｔ＝π（Ｂ［ｉ］｜｜ｓｔｒｃ（ｉ））等としてもよい。そして、第２暗号化部３３は、値Ａ［ｉ］をＴｗｅａｋａｂｌｅブロック暗号Ｅにより暗号化して値Ｃ［ｉ］を生成する。この際、第２暗号化部３３は、ストレージ１３に記憶された鍵Ｋを用いる。つまり、第２暗号化部３３は、Ｃ［ｉ］＝ＥＫ０（Ｔ，Ａ［ｉ］）を計算する。
【００４１】
（ステップＳ２４：Ｈ計算処理）
Ｈ計算部３４は、ｉ＝１，．．．，Ｌの各整数ｉについての値Ｃ［ｉ］をメモリ１２から読み出す。Ｈ計算部３４は、ｉ＝１，．．．，Ｌの各整数ｉについての前記値Ｃ［ｉ］を用いて、値Ｈを計算する。そして、Ｈ計算部３４は、値Ｈから値Ｈ［１］と値Ｈ［２］とを計算する。なお、Ｈ計算部３４は、値Ｈを計算せずに、値Ｈ［１］と値Ｈ［２］とを計算してもよい。
具体例としては、Ｈ計算部３４は、ｉ＝１，．．．，Ｌの各整数ｉについての値Ｃ［ｉ］の排他的論理和を計算して値Ｈ［１］を生成する。つまり、Ｈ計算部３４は、数７に示すように値Ｈ［１］を計算する。
【数７】
2020044485.tif 000009
また、Ｈ計算部３４は、ｉ＝１，．．．，Ｌの各整数ｉについて値Ｃ［ｉ］と値ｘＬ−ｉ＋１とのガロア体ＧＦ（２ｎ）上の積を計算して値Ｃ＊［ｉ］を生成し、ｉ＝１，．．．，Ｌの各整数ｉについての値Ｃ＊［ｉ］の排他的論理和を計算して値Ｈ［２］を生成する。つまり、Ｈ計算部３４は、数８に示すように値Ｈ［２］を計算する。ｘは、ガロア体ＧＦ（２ｎ）の生成元である。
【数８】
2020044485.tif 000010
【００４２】
図６を参照して、実施の形態１に係る関数Ｆを説明する。
関数Ｆは、Ｔｗｅａｋ計算処理（図２のステップＳ３）で用いられた関数である。以下の説明では、圧縮処理（図２のステップＳ２）として、図４及び図５を参照して説明した方法が適用されているものとする。
【００４３】
（ステップＳ３１：Ｗ生成処理）
Ｗ生成部４１は、ｉ＝１，．．．，Ｌの各整数ｉについての値Ｂ［ｉ］をメモリ１２から読み出す。値Ｂ［ｉ］は、図４のステップＳ２３で生成された値である。
Ｗ生成部４１は、ｉ＝１，．．．，Ｌの各整数ｉについての値Ｂ［ｉ］の排他的論理和を計算して値Ｂを生成する。つまり、Ｗ生成部４１は、数９に示すように値Ｂを計算する。
【数９】
2020044485.tif 000011
Ｗ生成部４１は、値Ｂにビットを付加してｔビットの値Ｗを生成する。具体例としては、Ｗ生成部４１は、値Ｂの後に、０のビットを１つ以上付加して、ｔビットの値Ｗを生成する。つまり、Ｗ＝Ｂ｜｜０．．．０である。Ｗ生成部４１は、値Ｗをメモリ１２に書き込む。
なお、Ｗ生成部４１は、０のビットを１つ以上付加することに限らず、１のビットを１つ以上付加してもよいし、０と１とを組み合わせたビット列を付加してもよい。また、Ｗ生成部４１は、値Ｂの後にビットを付加するのではなく、値Ｂの前にビットを付加してもよいし、値Ｂにおける他の任意の位置にビットを付加してもよい。
【００４４】
（ステップＳ３２：Ｕ’生成処理）
ｉ＝１，２の各整数ｉについて、Ｕ’生成部４２は、値Ｕ［ｉ］がｔビットでない場合には、値Ｕ［ｉ］にビットを付加してｔビットの値Ｕ’［ｉ］を生成する。値Ｕ［ｉ］は、図２のステップＳ３で抽出された値である。具体例としては、Ｕ’生成部４２は、値Ｕ［ｉ］の後に０のビットを１つ以上付加して、ｔビットの値Ｕ’［ｉ］を生成する。
なお、Ｕ’生成部４２は、０のビットを１つ以上付加することに限らず、１のビットを１つ以上付加してもよいし、０と１とを組み合わせたビット列を付加してもよい。また、Ｕ’生成部４２は、値Ｕの後にビットを付加するのではなく、値Ｕの前にビットを付加してもよいし、値Ｕにおける他の任意の位置にビットを付加してもよい。
また、ｉ＝１，２の各整数ｉについての、Ｕ’生成部４２は、値Ｕ［ｉ］がｔビットである場合には、値Ｕ［ｉ］を値Ｕ’［ｉ］に設定する。
Ｕ’生成部４２は、ｉ＝１，２の各整数ｉについての値Ｕ’［ｉ］をメモリ１２に書き込む。
【００４５】
（ステップＳ３３：Ｖ生成処理）
Ｖ生成部４３は、値Ｗとｉ＝１，２の各整数ｉについての値Ｕ’［ｉ］とをメモリ１２から読み出す。
ｉ＝１，２の各整数ｉについて、Ｖ生成部４３は、値Ｗと値Ｕ’［ｉ］との排他的論理和を計算して値Ｖ［ｉ］を生成する。つまり、Ｖ生成部４３は、数１０に示すように、値Ｖ［ｉ］を計算する。
【数１０】
2020044485.tif 000012
【００４６】
実施の形態１に係るｉｎｄｅｘ関数を説明する。
ｉｎｄｅｘ関数は、第１暗号化処理（図２のステップＳ４）で用いられた関数である。以下の説明では、圧縮処理（図２のステップＳ２）として、図４及び図５を参照して説明した方法が適用されているものとする。また、ここでは、ｓ＝４とする。つまり、Ｓｅｔ（Ｔ）＝［０，４］×｛０，１｝ｔとする。
【００４７】
ｉｎｄｅｘ関数は、入力である整数ｉとビット長｜Ｍ｜とに対して、ビット長｜Ｍ｜がｎ＋ｄの倍数の場合には、ｉを出力し、そうでない場合には、２ｉを出力する。つまり、ビット長｜Ｍ｜がｎ＋ｄの倍数の場合には、ｉｎｄｅｘ（ｉ，｜Ｍ｜）＝ｉであり、そうでない場合には、ｉｎｄｅｘ（ｉ，｜Ｍ｜）＝２ｉである。
又は、ｉｎｄｅｘ関数は、入力である整数ｉとビット長｜Ｍ｜とに対して、ビット長｜Ｍ｜がｎ＋ｄの倍数の場合には、２ｉを出力し、そうでない場合には、ｉを出力する。つまり、ビット長｜Ｍ｜がｎ＋ｄの倍数の場合には、ｉｎｄｅｘ（ｉ，｜Ｍ｜）＝２ｉであり、そうでない場合には、ｉｎｄｅｘ（ｉ，｜Ｍ｜）＝ｉである。
【００４８】
＊＊＊実施の形態１の効果＊＊＊
以上のように、実施の形態１に係るメッセージ認証装置１０は、Ｔｗｅａｋａｂｌｅブロック暗号を用いたメッセージ認証アルゴリズムを実現する。
実施の形態１に係るメッセージ認証装置１０によって実現されるメッセージ認証アルゴリズムは、数１１に示す擬似乱数性のアドバンテージのバウンドであることを示すことが可能である。
【数１１】
2020044485.tif 000013
よって、ｎ／２≦ｔの場合に、クエリー回数がｑ＝Ｏ（２ｎ）となるまで擬似乱数性を保証できる。
【００４９】
ここで、ｎを固定した場合、ｎ≦ｔの条件を満たすＴｗｅａｋａｂｌｅブロック暗号より、ｔ＜ｎの条件を満たすＴｗｅａｋａｂｌｅブロック暗号の方が、扱うＴｗｅａｋの長さが短い。そのため、内部構造を簡単にすることができ、ソフトウェアサイズとハードウェアサイズとの少なくともいずれかを小さくすることができる。
【００５０】
＊＊＊他の構成＊＊＊
＜変形例１＞
実施の形態１では、各機能構成要素がソフトウェアで実現された。しかし、変形例１として、各機能構成要素はハードウェアで実現されてもよい。この変形例１について、実施の形態１と異なる点を説明する。
【００５１】
図７を参照して、変形例１に係るメッセージ認証装置１０の構成を説明する。
各機能構成要素がハードウェアで実現される場合には、メッセージ認証装置１０は、プロセッサ１１に代えて、電子回路１５を備える。電子回路１５は、各機能構成要素の機能を実現する専用の回路である。
【００５２】
電子回路１５としては、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）が想定される。
各機能構成要素を１つの電子回路１５で実現してもよいし、各機能構成要素を複数の電子回路１５に分散させて実現してもよい。
【００５３】
例えば、図８に示すように、メッセージ認証装置１０は、電子回路１５として、Ｔｗｅａｋａｂｌｅブロック暗号用の電子回路１５Ａと、ハッシュ関数用の電子回路１５Ｂと、最終処理用の電子回路１５Ｃとを備える。
Ｔｗｅａｋａｂｌｅブロック暗号用の電子回路１５Ａは、Ｔｗｅａｋａｂｌｅブロック暗号Ｅの計算を行う。ハッシュ関数用の電子回路１５Ｂは、圧縮処理（図２のステップＳ２）を行う。最終処理用の電子回路１５Ｃは、Ｔｗｅａｋ計算処理と、第１暗号化処理と、認証子生成処理と（図２のステップＳ３からステップＳ５）を行う。但し、最終処理用の電子回路１５Ｃは、Ｔｗｅａｋａｂｌｅブロック暗号Ｅの計算については、Ｔｗｅａｋａｂｌｅブロック暗号用の電子回路１５Ａに実行させる。
【００５４】
＜変形例２＞
変形例２として、一部の各機能構成要素がハードウェアで実現され、他の各機能構成要素がソフトウェアで実現されてもよい。
【００５５】
プロセッサ１１とメモリ１２と電子回路１５とを電子回路という。つまり、各機能構成要素の機能は、電子回路により実現される。
【符号の説明】
【００５６】
１０  メッセージ認証装置、１１  プロセッサ、１２  メモリ、１３  ストレージ、１４  通信インタフェース、２１  通信部、２２  圧縮部、２３  Ｔｗｅａｋ計算部、２４  第１暗号化部、２５  認証子生成部、３１  Ｍ＊生成部、３２  分割部、３３  第２暗号化部、３４  Ｈ計算部、４１  Ｗ生成部、４２  Ｕ’生成部、４３  Ｖ生成部。
【図１】
2020044485.tif 000014
【図２】
2020044485.tif 000015
【図３】
2020044485.tif 000016
【図４】
2020044485.tif 000017
【図５】
2020044485.tif 000018
【図６】
2020044485.tif 000019
【図７】
2020044485.tif 000020
【図８】
2020044485.tif 000021
【国際調査報告】
2020044485.tif 000022
2020044485.tif 000023
2020044485.tif 000024