(57)【要約】  メッセージ認証子生成装置（１０）は、各整数ｉについて、メッセージＭから生成された値ｍ［ｉ］と、鍵Ｋと、値ｔｗ［ｉ］とを入力として、ブロック暗号により値ｃ［ｉ］を計算する。メッセージ認証子生成装置（１０）は、各整数ｉについての値ｃ［ｉ］を入力として、値ｗ［１］，ｗ［２］を計算する。メッセージ認証子生成装置（１０）は、値ｗ［２］を入力として値ｔｗ’［１］を計算し、値ｗ［１］と鍵Ｋと値ｔｗ’［１］とを入力として、ブロック暗号により値Ｔ［１］を計算するとともに、値ｗ［１］を入力として値ｔｗ’［２］を計算し、値ｗ［２］と鍵Ｋと値ｔｗ’［２］とを入力として、ブロック暗号により値Ｔ［２］を計算する。メッセージ認証子生成装置（１０）は、値Ｔ［１］及び値Ｔ［２］からメッセージＭの認証子Ｔを計算する。
2017056151.tif 000002
【特許請求の範囲】
【請求項１】
ｉ＝１，．．．，ｂの各整数ｉについて、メッセージＭから生成されたｎビットの値ｍ［ｉ］とｋビットの鍵Ｋとｔビットの値ｔｗ［ｉ］とを入力として、ブロック暗号により、ｎビットの値ｃ［ｉ］を計算するランダム化部と、
ｉ＝１，．．．，ｂの各整数ｉについての前記値ｃ［ｉ］を入力として、ｎビットの値ｗ［１］，ｗ［２］を計算する圧縮部と、
前記値ｗ［２］を入力として、ｉ＝１，．．．，ｂの各整数ｉについての前記値ｔｗ［ｉ］とは異なるｔビットの値ｔｗ’［１］を計算し、前記値ｗ［１］と前記鍵Ｋと前記値ｔｗ’［１］とを入力として、ブロック暗号により、ｎビットの値Ｔ［１］を計算するとともに、前記値ｗ［１］を入力として、ｉ＝１，．．．，ｂの各整数ｉについての前記値ｔｗ［ｉ］とは異なるｔビットの値ｔｗ’［２］を計算し、前記値ｗ［２］と前記鍵Ｋと前記値ｔｗ’［２］とを入力として、ブロック暗号により、ｎビットの値Ｔ［２］を計算し、前記値Ｔ［１］及び前記値Ｔ［２］から前記メッセージＭの認証子Ｔを計算する認証子生成部と
を備えるメッセージ認証子生成装置。
【請求項２】
前記圧縮部は、ｑ回呼び出した場合に、異なる入力に対して同一の出力が計算される確率がＯ（ｑ２／２２ｎ）である関数ｈにより、前記値ｗ［１］，ｗ［２］を計算する
請求項１に記載のメッセージ認証子生成装置。
【請求項３】
前記圧縮部は、値ｘを用いて、ｉ＝１，．．．，ｂの各整数ｉについての（ｃ［ｉ］×ｘｂ−ｉ）の排他的論理和Ｘ［１］を計算して前記値ｗ［１］と前記値ｗ［２］との一方とし、ｉ＝１，．．．，ｂの各整数ｉについてのｃ［ｉ］の排他的論理和Ｘ［２］を計算して前記値ｗ［１］と前記値ｗ［２］との他方とする
請求項１に記載のメッセージ認証子生成装置。
【請求項４】
前記圧縮部は、
前記メッセージＭがｎビットの倍数のビット数である場合には、前記排他的論理和Ｘ［１］を前記値ｗ［１］と前記値ｗ［２］との一方とするとともに、前記排他的論理和Ｘ［２］を前記値ｗ［１］と前記値ｗ［２］との他方とし、
前記メッセージＭがｎビットの倍数のビット数でない場合には、前記排他的論理和Ｘ［１］を前記値ｗ［１］と前記値ｗ［２］との他方とするとともに、前記排他的論理和Ｘ［２］を前記値ｗ［１］と前記値ｗ［２］との一方とする
請求項３に記載のメッセージ認証子生成装置。
【請求項５】
前記認証子生成部は、前記値Ｔ［１］と前記値Ｔ［２］との排他的論理和を計算して前記認証子Ｔを計算する
請求項１に記載のメッセージ認証子生成装置。
【請求項６】
前記認証子生成部は、前記値Ｔ［１］と前記値Ｔ［２］とについて、ガロア体ＧＦ（２ｎ）の部分群となる乗法群における掛け算、又は、ｎビット上での加算もしくは減算をして前記認証子Ｔを計算する
請求項１に記載のメッセージ認証子生成装置。
【請求項７】
前記認証子生成部は、
ｔビットのうちのｙ［１］ビットに固定ビット列ｚ［１］を設定し、ｔビットのうちの残りの（ｔ−ｙ［１］）ビットに前記値ｗ［２］のうちの（ｔ−ｙ［１］）ビットを設定して、値ｔｗ’［１］を計算し、
ｔビットのうちのｙ［２］ビットに固定ビット列ｚ［２］を設定し、ｔビットのうちの残りの（ｔ−ｙ［２］）ビットに前記値ｗ［１］のうちの（ｔ−ｙ［２］）ビットを設定して、値ｔｗ’［２］を計算する
請求項１に記載のメッセージ認証子生成装置。
【請求項８】
ｉ＝１，．．．，ｂの各整数ｉについて、メッセージＭから生成されたｎビットの値ｍ［ｉ］とｋビットの鍵Ｋとｔビットの値ｔｗ［ｉ］とを入力として、ブロック暗号により、ｎビットの値ｃ［ｉ］を計算し、
ｉ＝１，．．．，ｂの各整数ｉについての前記値ｃ［ｉ］を入力として、ｎビットの値ｗ［１］，ｗ［２］を計算し、
前記値ｗ［２］を入力として、ｉ＝１，．．．，ｂの各整数ｉについての前記値ｔｗ［ｉ］とは異なるｔビットの値ｔｗ’［１］を計算し、前記値ｗ［１］と前記鍵Ｋと前記値ｔｗ’［１］とを入力として、ブロック暗号により、ｎビットの値Ｔ［１］を計算するとともに、前記値ｗ［１］を入力として、ｉ＝１，．．．，ｂの各整数ｉについての前記値ｔｗ［ｉ］とは異なるｔビットの値ｔｗ’［２］を計算し、前記値ｗ［２］と前記鍵Ｋと前記値ｔｗ’［２］とを入力として、ブロック暗号により、ｎビットの値Ｔ［２］を計算し、前記値Ｔ［１］及び前記値Ｔ［２］から前記メッセージＭの認証子Ｔを計算する
メッセージ認証子生成方法。
【請求項９】
ｉ＝１，．．．，ｂの各整数ｉについて、メッセージＭから生成されたｎビットの値ｍ［ｉ］とｋビットの鍵Ｋとｔビットの値ｔｗ［ｉ］とを入力として、ブロック暗号により、ｎビットの値ｃ［ｉ］を計算するランダム化処理と、
ｉ＝１，．．．，ｂの各整数ｉについての前記値ｃ［ｉ］を入力として、ｎビットの値ｗ［１］，ｗ［２］を計算する圧縮処理と、
前記値ｗ［２］を入力として、ｉ＝１，．．．，ｂの各整数ｉについての前記値ｔｗ［ｉ］とは異なるｔビットの値ｔｗ’［１］を計算し、前記値ｗ［１］と前記鍵Ｋと前記値ｔｗ’［１］とを入力として、ブロック暗号により、ｎビットの値Ｔ［１］を計算するとともに、前記値ｗ［１］を入力として、ｉ＝１，．．．，ｂの各整数ｉについての前記値ｔｗ［ｉ］とは異なるｔビットの値ｔｗ’［２］を計算し、前記値ｗ［２］と前記鍵Ｋと前記値ｔｗ’［２］とを入力として、ブロック暗号により、ｎビットの値Ｔ［２］を計算し、前記値Ｔ［１］及び前記値Ｔ［２］から前記メッセージＭの認証子Ｔを計算する認証子生成処理と
をコンピュータに実行させるメッセージ認証子生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、Ｔｗｅａｋａｂｌｅブロック暗号を用いて安全かつ効率的にメッセージの認証子を生成する技術に関する。
【背景技術】
【０００２】
メッセージ認証アルゴリズムを用いると、２者間でメッセージをやり取りする場合に、送信したメッセージが改ざんされているか否かを受信者が確認できる。
メッセージ認証アルゴリズムを用いて改ざん検出する場合、２者間で予め鍵Ｋを共有しておく。メッセージの送信者は、メッセージＭと鍵ＫとからメッセージＭの認証子Ｔを生成し、メッセージＭと認証子Ｔとを受信者に送信する。メッセージの受信者は受け取ったメッセージＭと鍵Ｋとから認証子Ｔ’を生成する。受信者は、受信した認証子Ｔと生成した認証子Ｔ’とが一致すれば改ざんされていないと判断し、一致しなければ改ざんされていると判断する。【０００３】
メッセージ認証アルゴリズムの安全性は、ランダム関数との識別不可能性で示される。
メッセージ認証アルゴリズムＦが識別不可能性を満たすとは、現実世界または理想世界のどちらか一方と対話する識別者Ｄを考え、識別者Ｄがどちらと対話しているかを当てることができないことを意味する。【０００４】
現実世界では、鍵Ｋがランダムに選ばれ、識別者ＤはメッセージＭを選んで、Ｆ（Ｋ，Ｍ）のメッセージ認証子を得ることができる。理想世界では、ランダム関数Ｒに対して、識別者ＤはメッセージＭを選んで、Ｒ（Ｍ）の出力値を得ることができる。ここで、識別者ＤはメッセージＭを何度も選択することができ、選択したメッセージＭに対応するＦ（Ｋ，Ｍ）又はＲ（Ｍ）の出力値を得ることができる。【０００５】
より厳密には、１ビットの値を出力する識別者Ｄを考える。識別者Ｄが現実世界で１を出力する確率と、識別者Ｄが理想世界で１を出力する確率との差によってメッセージ認証アルゴリズムＦの識別不可能性が評価される。
識別者Ｄは、現実世界ではメッセージ認証アルゴリズムＦの出力を複数得ることができ、理想世界ではランダム関数Ｒの出力を複数得ることができる。このとき、いかなる識別者Ｄに対しても、上述した確率の差がｐ以下となり、かつ、ｐが無視できる小さい値の場合、メッセージ認証アルゴリズムＦが識別不可能性を満たす。このｐは識別確率と呼ばれる。【０００６】
Ｔｗｅａｋａｂｌｅブロック暗号Ｅは、ｋビットの鍵Ｋと、ｔビットのｔｗｅａｋ値ｔｗと、ｎビットの平文ｍとを入力として、ｎビットの暗号文ｃを出力する。つまり、ｃ＝Ｅ（Ｋ，ｔｗ，ｍ）である。Ｔｗｅａｋａｂｌｅブロック暗号Ｅは、鍵Ｋとｔｗｅａｋ値ｔｗとを固定すると、入出力長がｎビットの置換関数となる。
非特許文献１〜４には、Ｔｗｅａｋａｂｌｅブロック暗号について記載されている。【０００７】
Ｔｗｅａｋａｂｌｅブロック暗号ベースのメッセージ認証アルゴリズムがある。Ｔｗｅａｋａｂｌｅブロック暗号ベースのメッセージ認証アルゴリズムでは、メッセージＭがｎビット毎のメッセージブロックに分割されて、分割されたメッセージブロック毎にＴｗｅａｋａｂｌｅブロック暗号の計算が施される。
Ｔｗｅａｋａｂｌｅブロック暗号ベースのメッセージ認証アルゴリズムの効率性には、以下に説明する呼び出し回数と、並列性と、鍵サイズとが影響する。
呼び出し回数：ｎビットのメッセージブロックについて計算するために何回Ｔｗｅａｋａｂｌｅブロック暗号が呼び出されるかによって効率性が変わる。ｎビットのメッセージブロックに対して、Ｔｗｅａｋａｂｌｅブロック暗号をｘ回呼び出す場合、１／ｘがレートと呼ばれる。このレートが１に近いほどＴｗｅａｋａｂｌｅブロック暗号の呼び出し回数が少なく、効率がよい。
並列性：アルゴリズムが並列処理可能な場合、ハードウェア又はマルチコアでの演算を並列に行うことで計算時間を短くすることができ、効率がよい。
鍵サイズ：メッセージ認証アルゴリズムの鍵サイズは、内部のＴｗｅａｋａｂｌｅブロック暗号の鍵をいくつ用いるかによって変わる。最も鍵サイズが小さいのは、Ｔｗｅａｋａｂｌｅブロック暗号の鍵Ｋが１つだけの場合である。つまり、ｋビットの鍵Ｋを１つだけ用いて処理を行う場合である。【０００８】
Ｔｗｅａｋａｂｌｅブロック暗号ベースのメッセージ認証アルゴリズムの識別確率を評価する場合には、鍵Ｋを固定したＴｗｅａｋａｂｌｅブロック暗号Ｅ（Ｋ，・，・）がＴｗｅａｋａｂｌｅランダム置換Ｐであると仮定される。
Ｔｗｅａｋａｂｌｅランダム置換Ｐは、ｔビットのｔｗｅａｋ値とｎビットの平文ｍとを入力として、ｎビットの暗号文ｃを出力する関数の集合からランダムに選ばれた関数である。つまり、ｃ＝Ｐ（ｔｗ，ｍ）である。Ｔｗｅａｋａｂｌｅランダム置換Ｐは、ｔｗｅａｋ値を固定すると、入出力長がｎビットのランダム置換となる性質を持つ。また、Ｔｗｅａｋａｂｌｅランダム置換Ｐは、ｔｗｅａｋ値ｔｗをある値ｔｗ１で固定したＴｗｅａｋａｂｌｅランダム置換Ｐ（ｔｗ１，・）と、ｔｗｅａｋ値ｔｗをｔｗ１とは異なる値ｔｗ２で固定したＴｗｅａｋａｂｌｅランダム置換Ｐ（ｔｗ２，・）とが独立のランダム置換となる性質を持つ。
識別確率ｐは、Ｔｗｅａｋａｂｌｅブロック暗号Ｅの暗号文ｃのサイズｎビットと、識別者Ｄが入手できるメッセージ認証アルゴリズムの出力の個数ｑと、メッセージ認証アルゴリズムへの入力メッセージの最大の長さをｎで割った値ｂｍａｘとから求められる。ここで、入力メッセージの最大の長さをｌｍａｘビットとした場合、ｂｍａｘ＝ｌｍａｘ／ｎとなる。メッセージ認証アルゴリズムの安全性は、ｐ＝１となるｑの値ｑ’で評価され、ｑ’が大きいほど安全なアルゴリズムとなる。【０００９】
非特許文献５には、鍵サイズがｋビット、並列処理可能、レート１であるｔｗｅａｋａｂｌｅブロック暗号ベースのメッセージ認証アルゴリズムが記載されている。
非特許文献５で、鍵Ｋを固定したｔｗｅａｋａｂｌｅブロック暗号をｔｗｅａｋａｂｌｅランダム置換であると仮定した場合、ｐ＝Ｏ（（ｂｍａｘ×ｑ）２／２ｎ）となることが示されている。ここで、「Ｏ」はランダウの漸近記法である。つまり、ｑ’＝Ｏ（２ｎ／２／ｂｍａｘ）となる。【００１０】
特許文献１，２には、非特許文献５に記載されたメッセージ認証アルゴリズムの安全性を改良したｔｗｅａｋａｂｌｅブロック暗号ベースのメッセージ認証アルゴリズムが記載されている。特許文献１，２に記載されたメッセージ認証アルゴリズムは、ｋビットの鍵を３つ用いるため鍵サイズが３ｋビット、並列処理可能、レート１である。
特許文献１，２に記載されたメッセージ認証アルゴリズムは、鍵Ｋを固定したｔｗｅａｋａｂｌｅブロック暗号をｔｗｅａｋａｂｌｅランダム置換であると仮定した場合、ｐ＝Ｏ（（ｂｍａｘ×ｑ）２／２２ｎ）となることが示されている。つまり、ｑ’＝Ｏ（２ｎ／ｂｍａｘ）となる。
なお、特許文献１，２に記載されたメッセージ認証アルゴリズムは、内部でユニバーサルハッシュ関数を使っており、非特許文献５に記載されたメッセージ認証アルゴリズムに比べて処理速度が遅い。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特願２０１０−５２６５９７号公報
【特許文献２】特願２０１２−５０１７８５号公報
【非特許文献】
【００１２】
【非特許文献１】Ｄｅｏｘｙｓ．  Ｊｅｒｅｍｙ  Ｊｅａｎ，  Ｉｖｉｃａ  Ｎｉｋｏｌｉｃ，  Ｔｈｏｍａｓ  Ｐｅｙｒｉｎ，  ｈｔｔｐ：／／ｃｏｍｐｅｔｉｔｉｏｎｓ．ｃｒ．ｙｐ．ｔｏ／ｒｏｕｎｄ１／ｄｅｏｘｙｓｖ１．ｐｄｆ
【非特許文献２】Ｊｏｌｔｉｋ，  Ｊｅｒｅｍｙ  Ｊｅａｎ，  Ｉｖｉｃａ  Ｎｉｋｏｌｉｃ，  Ｔｈｏｍａｓ  Ｐｅｙｒｉｎ，  ｈｔｔｐ：／／ｃｏｍｐｅｔｉｔｉｏｎｓ．ｃｒ．ｙｐ．ｔｏ／ｒｏｕｎｄ１／ｊｏｌｔｉｋｖ１．ｐｄｆ
【非特許文献３】ＫＩＡＳＵ，  Ｊｅｒｅｍｙ  Ｊｅａｎ，  Ｉｖｉｃａ  Ｎｉｋｏｌｉｃ，  Ｔｈｏｍａｓ  Ｐｅｙｒｉｎ，  ｈｔｔｐ：／／ｃｏｍｐｅｔｉｔｉｏｎｓ．ｃｒ．ｙｐ．ｔｏ／ｒｏｕｎｄ１／ｋｉａｓｕｖ１．ｐｄｆ
【非特許文献４】ＳＣＲＥＡＭ，  Ｖｉｎｃｅｎｔ  Ｇｒｏｓｓｏ，  Ｇａｅｔａｎ  Ｌｅｕｒｅｎｔ，  Ｆｒａｎｃｏｉｓ−Ｘａｖｉｅｒ  Ｓｔａｎｄａｅｒｔ，  Ｋｅｒｅｍ  Ｖａｒｉｃｉ，  Ｆｒａｎｃｏｉｓ  Ｄｕｒｖａｕｘ，  Ｌｕｂｏｓ  Ｇａｓｐａｒ，  Ｓｔｅｐｈａｎｉｅ  Ｋｅｒｃｋｈｏｆ，  ｈｔｔｐ：／／ｃｏｍｐｅｔｉｔｉｏｎｓ．ｃｒ．ｙｐ．ｔｏ／ｒｏｕｎｄ１／ｓｃｒｅａｍｖ１．ｐｄｆ
【非特許文献５】Ｐｈｉｌｌｉｐ  Ｒｏｇａｗａｙ．  Ｅｆｆｉｃｉｅｎｔ  Ｉｎｓｔａｎｔｉａｔｉｏｎｓ  ｏｆ  Ｔｗｅａｋａｂｌｅ  Ｂｌｏｃｋｃｉｐｈｅｒｓ  ａｎｄ  Ｒｅｆｉｎｅｍｅｎｔｓ  ｔｏ  Ｍｏｄｅｓ  ＯＣＢ  ａｎｄ  ＰＭＡＣ．  ＡＳＩＡＣＲＹＰＴ  ２００４．  ｐ１６−３１．
【発明の概要】
【発明が解決しようとする課題】
【００１３】
非特許文献５及び特許文献１，２に記載されたメッセージ認証アルゴリズムよりも、安全性を高めつつ、効率を劣化させることのないｔｗｅａｋａｂｌｅブロック暗号ベースのメッセージ認証アルゴリズムを実現可能とすることを目的とする。
【課題を解決するための手段】
【００１４】
この発明に係るメッセージ認証子生成装置は、
ｉ＝１，．．．，ｂの各整数ｉについて、メッセージＭから生成されたｎビットの値ｍ［ｉ］とｋビットの鍵Ｋとｔビットの値ｔｗ［ｉ］とを入力として、ブロック暗号により、ｎビットの値ｃ［ｉ］を計算するランダム化部と、
ｉ＝１，．．．，ｂの各整数ｉについての前記値ｃ［ｉ］を入力として、ｎビットの値ｗ［１］，ｗ［２］を計算する圧縮部と、
前記値ｗ［２］を入力として、ｉ＝１，．．．，ｂの各整数ｉについての前記値ｔｗ［ｉ］とは異なるｔビットの値ｔｗ’［１］を計算し、前記値ｗ［１］と前記鍵Ｋと前記値ｔｗ’［１］とを入力として、ブロック暗号により、ｎビットの値Ｔ［１］を計算するとともに、前記値ｗ［１］を入力として、ｉ＝１，．．．，ｂの各整数ｉについての前記値ｔｗ［ｉ］とは異なるｔビットの値ｔｗ’［２］を計算し、前記値ｗ［２］と前記鍵Ｋと前記値ｔｗ’［２］とを入力として、ブロック暗号により、ｎビットの値Ｔ［２］を計算し、前記値Ｔ［１］及び前記値Ｔ［２］から前記メッセージＭの認証子Ｔを計算する認証子生成部と
を備える。
【発明の効果】
【００１５】
この発明では、非特許文献５及び特許文献１，２に記載されたメッセージ認証アルゴリズムよりも安全性を高めつつ、同等の効率としたメッセージ認証アルゴリズムを実現可能である。
【図面の簡単な説明】
【００１６】
【図１】実施の形態１に係るメッセージ認証子生成装置１０の構成図。
【図２】実施の形態１に係るメッセージ認証子生成装置１０の動作を示すフローチャート。
【図３】実施の形態１に係るメッセージ認証子生成装置１０によって実現されるメッセージ認証アルゴリズムの構成図。
【図４】各機能をソフトウェアで実現した場合のメッセージ認証子生成装置１０の構成図。
【図５】実施の形態２に係るメッセージ認証子生成装置１０によって実現されるメッセージ認証アルゴリズムの構成図。
【図６】実施の形態３に係るメッセージ認証子生成装置１０によって実現されるメッセージ認証アルゴリズムの構成図。
【発明を実施するための形態】
【００１７】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１は、実施の形態１に係るメッセージ認証子生成装置１０の構成図である。
メッセージ認証子生成装置１０は、処理回路１１を備える。処理回路１１は、パディング部１１０と、分割部１２０と、ランダム化部１３０と、圧縮部１４０と、認証子生成部１５０と、制御部１６０との各機能を実現する専用の電子回路である。
【００１８】
処理回路１１は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ、ＡＳＩＣ、ＦＰＧＡが想定される。ＧＡは、Ｇａｔｅ  Ａｒｒａｙの略である。ＡＳＩＣは、Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略である。ＦＰＧＡは、Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略である。
各機能を１つの処理回路１１で実現してもよいし、各機能を複数の処理回路１１に分散させて実現してもよい。
【００１９】
処理回路１１によって実現される各機能の処理の結果を示す情報とデータと信号値と変数値は、処理回路１１内のレジスタのような記憶領域に記憶される。
【００２０】
＊＊＊動作の説明＊＊＊
図２は、実施の形態１に係るメッセージ認証子生成装置１０の動作を示すフローチャートである。
図３は、実施の形態１に係るメッセージ認証子生成装置１０によって実現されるメッセージ認証アルゴリズムの構成図である。図３において破線で囲まれた処理が破線に付された符号が示す機能によって実現される。
実施の形態１に係るメッセージ認証子生成装置１０の動作は、実施の形態１に係るメッセージ認証子生成方法に相当する。また、実施の形態１に係るメッセージ認証子生成装置１０の動作は、実施の形態１に係るメッセージ認証子生成プログラムの処理に相当する。
【００２１】
ステップＳ１０１のパディング処理では、パディング部１１０は、任意長のメッセージＭを入力として、単射関数ｐａｄにより、ｎビットのｂ倍のビット数の値Ｍ’を生成する。ｂは、１以上の整数である。
【００２２】
ステップＳ１０２の分割処理では、分割部１２０は、ステップＳ１０１で生成された値Ｍ’を入力として、関数ｄｉｖにより、値Ｍ’を先頭からｎビット毎に分割して、ｉ＝１，．．．，ｂの各整数ｉについての値ｍ［ｉ］を生成する。つまり、Ｍ’＝ｍ［１］｜｜ｍ［２］｜｜．．．｜｜ｍ［ｂ］である。｜｜は、ビット列の結合を意味する。
【００２３】
ステップＳ１０３の変数設定処理では、制御部１６０は、変数ｉに初期値として１を設定する。
【００２４】
ステップＳ１０４の変数判定処理では、制御部１６０は、変数ｉがｂ以下であるか否かを判定する。変数ｉがｂ以下である場合（ステップＳ１０４でＹＥＳ）、制御部１６０は処理をステップＳ１０５に進める。一方、変数ｉがｂより大きい場合（ステップＳ１０４でＮＯ）、制御部１６０は処理をステップＳ１０７に進める。
【００２５】
ステップＳ１０５のランダム化処理では、ランダム化部１３０は、変数ｉについて、ステップＳ１０２で生成されたｎビットの値ｍ［ｉ］と、ｔビットのｔｗｅａｋ値ｔｗ［ｉ］と、ｋビットの鍵Ｋとを入力として、ｔｗｅａｋａｂｌｅブロック暗号Ｅにより、乱数性を有するｎビットの値ｃ［ｉ］を計算する。ここで、ｉ＝１，．．．，ｂの各整数についての値ｔｗ［ｉ］は、互いに異なる値とする。
ｔｗｅａｋａｂｌｅブロック暗号Ｅは、ｋビットの鍵Ｋとｔビットのｔｗｅａｋ値ｔｗとｎビットの平文ｍとを入力として、ｎビットの暗号文ｃを出力するブロック暗号の関数である。各変数ｉについての演算で用いられるｔｗｅａｋａｂｌｅブロック暗号Ｅは同じ関数であってもよいし、異なる関数であってもよい。
【００２６】
ステップＳ１０６の変数加算処理では、制御部１６０は、変数ｉに１加算する。そして、制御部１６０は、処理をステップＳ１０４に戻す。
【００２７】
つまり、ステップＳ１０５では、ランダム化部１３０は、ｉ＝１，．．．，ｂの各整数ｉについて、メッセージＭから生成されたｎビットの値ｍ［ｉ］とｋビットの鍵Ｋとｔビットの値ｔｗ［ｉ］とを入力として、ブロック暗号Ｅにより、ｎビットの値ｃ［ｉ］を計算する。
【００２８】
続いて、ステップＳ１０７の圧縮処理では、圧縮部１４０は、ｉ＝１，．．．，ｂの各整数ｉについての値ｃ［ｉ］を入力として、関数ｈにより、ｎビットの値ｗ［１］，ｗ［２］を計算する。ここで、圧縮部１４０は、ｑ回呼び出された場合に、異なる入力に対して同一の出力が計算される確率がＯ（ｑ２／２２ｎ）である関数ｈにより、値ｗ［１］，値ｗ［２］を計算する。
なお、圧縮部１４０は、ｉ＝１，．．．，ｂの各整数ｉについての値ｃ［ｉ］に加え、メッセージＭまたはその一部を入力として、ｎビットの値ｗ［１］とｗ［２］とを計算してもよい。
【００２９】
ステップＳ１０８のｔｗ値計算処理では、認証子生成部１５０は、ステップＳ１０７で計算された値ｗ［２］を入力として、関数ｆ１により、ｉ＝１，．．．，ｂの各整数ｉについての値ｔｗ［ｉ］とは異なるｔビットの値ｔｗ’［１］を計算する。また、認証子生成部１５０は、ステップＳ１０７で計算された値ｗ［１］を入力として、ｉ＝１，．．．，ｂの各整数ｉについての値ｔｗ［ｉ］とは異なるｔビットの値ｔｗ’［２］を計算する。
【００３０】
ステップＳ１０９の暗号化処理では、認証子生成部１５０は、ステップＳ１０７で計算された値ｗ［１］と、鍵Ｋと、ステップＳ１０８で計算された値ｔｗ’［１］とを入力として、ｔｗｅａｋａｂｌｅブロック暗号Ｅにより、ｎビットの値Ｔ［１］を計算する。また、認証子生成部１５０は、ステップＳ１０７で計算された値ｗ［２］と、鍵Ｋと、ステップＳ１０８で計算された値ｔｗ’［２］とを入力として、ｔｗｅａｋａｂｌｅブロック暗号Ｅにより、ｎビットの値Ｔ［２］を計算する。
ここでの演算で用いられるｔｗｅａｋａｂｌｅブロック暗号Ｅは同じ関数であってもよいし、異なる関数であってもよい。
【００３１】
ステップＳ１１０の認証子計算処理では、認証子生成部１５０は、値Ｔ［１］及び値Ｔ［２］を入力として、関数ｇにより、値Ｔ’を計算する。ここでは、認証子生成部１５０は、関数ｇにより、値Ｔ［１］と値Ｔ［２］との排他的論理和を計算する。そして、認証子生成部１５０は、値Ｔ’のうちのｒビットをメッセージＭの認証子Ｔとする。
なお、関数ｇは、値Ｔ［１］と値Ｔ［２］とについて、ガロア体ＧＦ（２ｎ）における掛け算、又は、ｎビット上での加算もしくは減算をする関数であってもよい。ｎビット上での加算もしくは減算とは、ｎビットの値Ｔ［１］と値Ｔ［２］とを加算もしくは減算した結果もｎビットとするという意味である。
【００３２】
なお、ステップＳ１０８からステップＳ１１０の処理が認証子生成処理である。
【００３３】
＊＊＊実施の形態１の効果＊＊＊
以上のように、実施の形態１に係るメッセージ認証子生成装置１０は、ｔｗｅａｋａｂｌｅブロック暗号ベースのメッセージ認証アルゴリズムを実現する。
【００３４】
特に、実施の形態１に係るメッセージ認証子生成装置１０が実現するメッセージ認証アルゴリズムは、鍵としてはｋビットの鍵Ｋを１つだけ用いるため、鍵サイズはｋビットである。また、メッセージ認証アルゴリズムは、ｉ＝１，．．．，ｂの各整数ｉについて一部の処理を並列に実行することができる。また、メッセージ認証アルゴリズムは、ｎビットのメッセージブロックに対して、ブロック暗号を１回だけ呼び出すため、レート１である。
つまり、実施の形態１に係るメッセージ認証子生成装置１０が実現するメッセージ認証アルゴリズムは、鍵サイズがｋビット、並列処理可能、レート１とすることができる。
【００３５】
また、実施の形態１に係るメッセージ認証子生成装置１０が実現するメッセージ認証アルゴリズムは、以下の条件の下で、安全性は、ｐ＝Ｏ（ｑ２／２２ｎ）となる。条件は、鍵Ｋを固定したＴｗｅａｋａｂｌｅブロック暗号が理想的なＴｗｅａｋａｂｌｅランダム置換として扱え、かつ、ｔ≧ｎ／２である。
つまり、実施の形態１に係るメッセージ認証子生成装置１０が実現するメッセージ認証アルゴリズムは、ｑ’＝Ｏ（２ｎ）となる。
【００３６】
＊＊＊他の構成＊＊＊
上記説明では、メッセージ認証子生成装置１０は、各機能を実現する専用の電子回路である処理回路１１を備えるとした。ここで、各機能とは、パディング部１１０と、分割部１２０と、ランダム化部１３０と、圧縮部１４０と、認証子生成部１５０と、制御部１６０との機能である。しかし、各機能は、ソフトウェアによって実現されてもよい。
【００３７】
図４は、各機能をソフトウェアで実現した場合のメッセージ認証子生成装置１０の構成図である。
メッセージ認証子生成装置１０は、コンピュータである。
メッセージ認証子生成装置１０は、プロセッサ１２と、記憶装置１３とのハードウェアを備える。プロセッサ１１は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００３８】
記憶装置１３には、各機能を実現するプログラムが記憶されている。このプログラムは、プロセッサ１２に読み込まれ、プロセッサ１２によって実行される。
【００３９】
プロセッサ１２は、プロセッシングを行うＩＣである。ＩＣは、Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略である。プロセッサ１２は、具体的には、ＣＰＵ、ＤＳＰ、ＧＰＵである。ＣＰＵは、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略である。ＤＳＰは、Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒの略である。ＧＰＵは、Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略である。
記憶装置１３は、具体的には、ＲＯＭ、ＲＡＭ、フラッシュメモリ、ＨＤＤである。ＲＯＭは、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙの略である。ＲＡＭは、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙの略である。ＨＤＤは、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅの略である。
【００４０】
プロセッサ１２によって実現される各機能の処理の結果を示す情報とデータと信号値と変数値は、記憶装置１３、又は、プロセッサ１２内のレジスタ又はキャッシュメモリのような記憶領域に記憶される。
【００４１】
なお、上記説明では、プロセッサ１２によって実現される各機能を実現するプログラムは、記憶装置１３に記憶されているとした。しかし、このプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ等の可搬記憶媒体に記憶されてもよい。
【００４２】
また、図４では、プロセッサ１２は、１つだけ示されていた。しかし、プロセッサ１２は、複数であってもよく、複数のプロセッサ１２が、各機能を実現するプログラムを連携して実行してもよい。
【００４３】
また、一部の機能がハードウェアで実現され、他の機能がソフトウェアで実現されてもよい。また、各機能をファームウェアで実現してもよい。
【００４４】
処理回路１１と、プロセッサ１２と、記憶装置１３とを、総称して「プロセッシングサーキットリー」という。つまり、各機能は、プロセッシングサーキットリーにより実現される。
【００４５】
また、上記説明における「部」を「工程」又は「手順」又は「処理」に読み替えてもよい。
【００４６】
実施の形態２．
実施の形態２では、実施の形態１における各関数を具体化した構成を説明する。
実施の形態２では、実施の形態１と異なる点を説明する。
【００４７】
図２に基づき、実施の形態２に係るメッセージ認証子生成装置１０の動作を説明する。
図５は、実施の形態２に係るメッセージ認証子生成装置１０によって実現されるメッセージ認証アルゴリズムの構成図である。図３と同様に、図５において破線で囲まれた処理が破線に付された符号が示す機能によって実現される。
実施の形態２に係るメッセージ認証子生成装置１０の動作は、実施の形態２に係るメッセージ認証子生成方法に相当する。また、実施の形態２に係るメッセージ認証子生成装置１０の動作は、実施の形態２に係るメッセージ認証子生成プログラムの処理に相当する。
【００４８】
ステップＳ１０１のパディング処理では、パディング部１１０は、メッセージＭを入力として、関数ｐａｄにより、値Ｍ’を生成する。ここでは、パディング部１１０は、メッセージＭの後ろに１を付加し、その後に０のビット列を付加して、長さがｎビットのｂ倍のビット数の値Ｍ’を生成する。付加する０の個数は、０個以上であり、かつ、値Ｍ’がｎの倍数となる最小の数である。パディング部１１０は、１と０とを逆にして、メッセージＭの後ろに０を付加し、その後に１のビット列を付加してもよい。
【００４９】
ステップＳ１０２からステップＳ１０６の処理は、実施の形態１と同じであるため説明を省略する。
ここでは、ステップＳ１０５において、値ｔｗ［ｉ］は、上位１ビットを０とし、残りのｔ−１ビットが互いに異なる値とする。
【００５０】
ステップＳ１０７の圧縮処理では、圧縮部１４０は、ｉ＝１，．．．，ｂの各整数ｉについての値ｃ［ｉ］を入力として、関数ｈにより、ｎビットの値ｗ［１］，値ｗ［２］を計算する。
ここでは、圧縮部１４０は、値ｘを用いて、ｉ＝１，．．．，ｂの各整数ｉについての（ｃ［ｉ］×ｘｂ−ｉ）の排他的論理和Ｘ［１］を計算して値ｗ［１］とする。また、圧縮部１４０は、ｉ＝１，．．．，ｂの各整数ｉについてのｃ［ｉ］の排他的論理和Ｘ［２］を計算して値ｗ［２］とする。
つまり、まず、圧縮部１４０は、ｗ［１］＝（ｃ［１］×ｘｂ−１）  ｘｏｒ  （ｃ［２］×ｘｂ−２）  ｘｏｒ  ．．．  ｘｏｒ  （ｃ［ｂ−１］×ｘ）  ｘｏｒ  ｃ［ｂ］を計算する。また、圧縮部１４０は、ｗ［２］＝ｃ［１］  ｘｏｒ  ｃ［２］  ｘｏｒ  ．．．  ｘｏｒ  ｃ［ｂ−１］  ｘｏｒ  ｃ［ｂ］を計算する。
ここでの掛け算はガロア体上の掛け算で、値ｘは位数が２ｎ−１となるガロア体ＧＦ（２ｎ）の部分群となる乗法群上の元である。また、値ｗ［１］と値ｗ［２］の演算方法は逆であってもよい。
【００５１】
ステップＳ１０８のｔｗ値計算処理では、認証子生成部１５０は、値ｗ［２］の下位のｔ−２ビットをｔｗ’［１］の下位ｔ−２ビットとし、ｔｗ’［１］の残りの上位２ビットを１０とする。また、認証子生成部１５０は、値ｗ［１］の下位のｔ−２ビットをｔｗ’［２］の下位ｔ−２ビットとし、ｔｗ’［２］の残りの上位２ビットを１１とする。
【００５２】
ステップＳ１０９からステップＳ１１０の処理は、実施の形態１と同じであるため説明を省略する。
【００５３】
＊＊＊実施の形態２の効果＊＊＊
以上のように、実施の形態２に係るメッセージ認証子生成装置１０は、ｔｗｅａｋａｂｌｅブロック暗号ベースのメッセージ認証アルゴリズムを実現する。
実施の形態２に係るメッセージ認証子生成装置１０が実現するメッセージ認証アルゴリズムは、鍵サイズがｋビット、並列処理可能、レート１である。また、実施の形態２に係るメッセージ認証子生成装置１０が実現するメッセージ認証アルゴリズムは、実施の形態１で述べた条件の下で、ｑ’＝Ｏ（２ｎ）となる。
【００５４】
＊＊＊他の構成＊＊＊
値ｔｗ［１］，ｔｗ［２］，．．．，ｔｗ［ｂ］，ｔｗ’［１］，ｔｗ’［２］は、全て異なった値であればよい。したがって、値ｔｗ’［１］，ｔｗ’［２］の上位２ビットの値は、１０，１１でなく他の値でもよい。また、上位２ビットでなく他の位置であってもよい。また、２ビットではなく、３ビット以上を、固定ビット列としてもよい。
つまり、この場合、認証子生成部１５０は、ｔビットのうちのｙ［１］ビットに固定ビット列ｚ［１］を設定し、ｔビットのうちの残りの（ｔ−ｙ［１］）ビットに値ｗ［２］のうちの（ｔ−ｙ［１］）ビットを設定して、値ｔｗ’［１］を計算する。また、認証子生成部１５０は、ｔビットのうちのｙ［２］ビットに固定ビット列ｚ［２］を設定し、ｔビットのうちの残りの（ｔ−ｙ［２］）ビットに値ｗ［１］のうちの（ｔ−ｙ［２］）ビットを設定して、値ｔｗ’［２］を計算する。
【００５５】
実施の形態３．
実施の形態２で説明した構成では、メッセージＭがｎビットの倍数のビット数である場合であっても、パディング部１１０によってメッセージＭにビットが付加された。実施の形態３は、メッセージＭがｎビットの倍数のビット数である場合には、メッセージＭにビットを付加しない点が実施の形態２と異なる。
実施の形態３では、実施の形態２と異なる点を説明する。
【００５６】
図２に基づき、実施の形態３に係るメッセージ認証子生成装置１０の動作を説明する。
図６は、実施の形態３に係るメッセージ認証子生成装置１０によって実現されるメッセージ認証アルゴリズムの構成図である。図５と同様に、図６において破線で囲まれた処理が破線に付された符号が示す機能によって実現される。
実施の形態３に係るメッセージ認証子生成装置１０の動作は、実施の形態３に係るメッセージ認証子生成方法に相当する。また、実施の形態３に係るメッセージ認証子生成装置１０の動作は、実施の形態３に係るメッセージ認証子生成プログラムの処理に相当する。
【００５７】
ステップＳ１０１のパディング処理では、パディング部１１０は、メッセージＭを入力として、関数ｐａｄにより、値Ｍ’を生成する。
ここでは、パディング部１１０は、メッセージＭがｎビットの倍数のビット数でない場合には、メッセージＭの後ろに１を付加し、その後に０のビット列を付加して、長さがｎビットのｂ倍のビット数の値Ｍ’を生成する。付加する０の個数は、０個以上であり、かつ、値Ｍ’がｎの倍数となる最小の数である。パディング部１１０は、メッセージＭの後ろに０を付加し、その後に１のビット列を付加してもよい。
一方、パディング部１１０は、メッセージＭがｎビットの倍数のビット数である場合には、メッセージＭをそのまま値Ｍ’とする。
【００５８】
ステップＳ１０２からステップＳ１０７の処理は、実施の形態２と同じであるため説明を省略する。
【００５９】
ステップＳ１０７の圧縮処理では、圧縮部１４０は、ｉ＝１，．．．，ｂの各整数ｉについての値ｃ［ｉ］を入力として、関数ｈにより、ｎビットの値ｗ［１］，値ｗ［２］を計算する。
ここでは、圧縮部１４０は、メッセージＭがｎビットの倍数のビット数である場合には、ｉ＝１，．．．，ｂの各整数ｉについての（ｃ［ｉ］×ｘｂ−ｉ）の排他的論理和Ｘ［１］を計算して値ｗ［１］とする。また、圧縮部１４０は、ｉ＝１，．．．，ｂの各整数ｉについてのｃ［ｉ］の排他的論理和Ｘ［２］を計算して値ｗ［２］とする。
一方、圧縮部１４０は、メッセージＭがｎビットの倍数のビット数でない場合には、ｉ＝１，．．．，ｂの各整数ｉについての（ｃ［ｉ］×ｘｂ−ｉ）の排他的論理和Ｘ［１］を計算して値ｗ［２］とする。また、圧縮部１４０は、ｉ＝１，．．．，ｂの各整数ｉについてのｃ［ｉ］の排他的論理和Ｘ［２］を計算して値ｗ［１］とする。
【００６０】
つまり、圧縮部１４０は、メッセージＭがｎビットの倍数のビット数である場合、ｗ［１］＝（ｃ［１］×ｘｂ−１）  ｘｏｒ  （ｃ［２］×ｘｂ−２）  ｘｏｒ  ．．．  ｘｏｒ  （ｃ［ｂ−１］×ｘ）  ｘｏｒ  ｃ［ｂ］を計算する。また、圧縮部１４０は、ｗ［２］＝ｃ［１］  ｘｏｒ  ｃ［２］  ｘｏｒ  ．．．  ｘｏｒ  ｃ［ｂ−１］  ｘｏｒ  ｃ［ｂ］を計算する。
圧縮部１４０は、メッセージＭがｎビットの倍数のビット数でない場合、ｗ［２］＝（ｃ［１］×ｘｂ−１）  ｘｏｒ  （ｃ［２］×ｘｂ−２）  ｘｏｒ  ．．．  ｘｏｒ  （ｃ［ｂ−１］×ｘ）  ｘｏｒ  ｃ［ｂ］を計算する。また、圧縮部１４０は、ｗ［１］＝ｃ［１］  ｘｏｒ  ｃ［２］  ｘｏｒ  ．．．  ｘｏｒ  ｃ［ｂ−１］  ｘｏｒ  ｃ［ｂ］を計算する。
ここでの掛け算はガロア体ＧＦ（２ｎ）上の掛け算で、値ｘは位数が２ｎ−１となるガロア体ＧＦ（２ｎ）の部分群の乗法群上の元である。また、メッセージＭがｎビットの倍数のビット数である場合と、ｎビットの倍数のビット数でない場合との演算方法は逆であってもよい。
【００６１】
ステップＳ１０８からステップＳ１１０の処理は、実施の形態２と同じであるため説明を省略する。
【００６２】
＊＊＊実施の形態３の効果＊＊＊
以上のように、実施の形態３に係るメッセージ認証子生成装置１０は、ｔｗｅａｋａｂｌｅブロック暗号ベースのメッセージ認証アルゴリズムを実現する。
実施の形態３に係るメッセージ認証子生成装置１０が実現するメッセージ認証アルゴリズムは、メッセージＭがｎビットの倍数のビット数である場合には、メッセージＭにビットを付加しない。そのため、ステップＳ１０２以降の処理に入力されるビット長が短くなり、処理速度を早くすることができる。
【００６３】
メッセージ認証アルゴリズムは、識別不可能性の安全性を満たす場合、疑似乱数生成アルゴリズムとしても使うことができる。疑似乱数生成アルゴリズムは、Ｋｅｙ  Ｄｅｒｉｖａｔｉｏｎ  Ｆｕｎｃｔｉｏｎやストリーム暗号で用いる関数として使われる。
【符号の説明】
【００６４】
１０  メッセージ認証子生成装置、１１  処理回路、１２  プロセッサ、１３  記憶装置、１１０  パディング部、１２０  分割部、１３０  ランダム化部、１４０  圧縮部、１５０  認証子生成部、１６０  制御部。
【図１】
2017056151.tif 000003
【図２】
2017056151.tif 000004
【図３】
2017056151.tif 000005
【図４】
2017056151.tif 000006
【図５】
2017056151.tif 000007
【図６】
2017056151.tif 000008
【国際調査報告】
2017056151.tif 000009
2017056151.tif 000010
2017056151.tif 000011
2017056151.tif 000012
2017056151.tif 000013
2017056151.tif 000014