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