(57)【特許請求の範囲】
【請求項１】
認証暗号における暗号化装置であり、
初期パラメータＮに応じて疑似ランダム関数を用いてブロック暗号の暗号化関数Ｅの鍵Ｋを生成する鍵生成部と、
前記初期パラメータＮに依存する値を入力とすることなく内部パラメータｃｔｒを入力としてハッシュ値ｍｓｋを計算するハッシュ計算部と、
前記鍵生成部によって生成された鍵Ｋと、前記ハッシュ計算部によって計算されたハッシュ値ｍｓｋと、メッセージｍとを入力として、前記暗号化関数Ｅを用いて、前記メッセージｍの暗号文ｃを生成する暗号化部と
を備える暗号化装置。
【請求項２】
前記暗号化部は、
前記ハッシュ値ｍｓｋとｎビットの値αとを入力としてｎビットの値βを出力する関数ｐであって、前記ハッシュ値ｍｓｋが固定されると、前記値αと前記値βとが置換の関係になる関数ｐに対して、前記ハッシュ値ｍｓｋと前記メッセージｍとを入力して値ｘを計算する第１置換部と、
前記第１置換部によって計算された前記値ｘと、前記鍵Ｋとを入力として、前記暗号化関数Ｅにより、値ｙを計算するブロック暗号計算部と、
前記関数ｐに対して、前記ハッシュ値ｍｓｋと、前記ブロック暗号計算部によって計算された前記値ｙとを入力して前記暗号文ｃを計算する第２置換部と
を備える請求項１に記載の暗号化装置。
【請求項３】
前記暗号化関数Ｅは、ブロックサイズがｎであり、
前記暗号化装置は、さらに、
メッセージＭをｎビット毎に分割して、ｎビットの値Ｍ［１］，．．．，値Ｍ［ｓ］を生成する分割部と、
ｉ＝１，．．．，ｓの各整数ｉについて、前記分割部によって生成された値Ｍ［ｉ］を前記メッセージｍとして、前記暗号文ｃを前記値Ｍ［ｉ］の暗号文Ｃ［ｉ］として前記暗号化部に生成させ、ｉ＝１，．．．，ｓの各整数ｉについての前記暗号文Ｃ［ｉ］を連結して、前記メッセージＭの暗号文Ｃを生成する暗号文生成部と
を備える請求項２に記載の暗号化装置。
【請求項４】
前記分割部は、前記メッセージＭがｎの倍数ビットでない場合には、前記メッセージＭを分割して、ｎビットの値Ｍ［１］，．．．，値Ｍ［ｓ］と、ｎビットよりも少ないｒビットの値Ｍ［＊］とを生成し、
前記暗号文生成部は、固定値ｃｏｎｓｔを前記メッセージｍとして、前記暗号文ｃを前記固定値ｃｏｎｓｔの暗号文Ｒとして前記暗号化部に生成させ、前記暗号文Ｒのうちのｒビットと前記値Ｍ［＊］とから暗号文Ｃ［＊］を生成し、ｉ＝１，．．．，ｓの各整数ｉについての前記暗号文Ｃ［ｉ］と、前記暗号文Ｃ［＊］とを連結して前記暗号文Ｃを生成する
請求項３に記載の暗号化装置。
【請求項５】
前記第１置換部は、前記関数ｐに対して、前記ハッシュ値ｍｓｋと前記固定値ｃｏｎｓｔとを入力して値ｘ［Ｒ］を計算し、
前記ブロック暗号計算部は、前記値ｘ［Ｒ］と、前記鍵Ｋとを入力として、前記暗号化関数Ｅにより、前記暗号文Ｒを計算する
請求項４に記載の暗号化装置。
【請求項６】
前記暗号化装置は、さらに、
前記メッセージＭをｎビット毎に分割し、分割された値の排他的論理和を計算してチェックサムを生成し、前記チェックサムを前記メッセージｍとして、前記暗号文ｃを前記チェックサムの暗号文Ｔ’として前記暗号化部に生成させ、前記暗号文Ｔ’から前記メッセージＭの認証子Ｔを生成する認証子生成部
を備える請求項３から５までのいずれか１項に記載の暗号化装置。
【請求項７】
前記認証子生成部は、公開データＨと前記チェックサムとから新たなチェックサムを計算し、前記新たなチェックサムを前記メッセージｍとして、前記暗号文ｃを前記新たなチェックサムの暗号文Ｔ’として前記暗号化部に生成させ、前記暗号文Ｔ’から前記メッセージＭの認証子Ｔを生成する
請求項６に記載の暗号化装置。
【請求項８】
前記認証子生成部は、公開データＨと、前記暗号文Ｔ’とから前記メッセージＭの認証子Ｔを生成する
請求項６に記載の暗号化装置。
【請求項９】
前記鍵生成部は、初期パラメータＮと公開データＨとに応じて前記鍵Ｋを生成する
請求項１から８までのいずれか１項に記載の暗号化装置。
【請求項１０】
認証暗号における復号装置であり、
初期パラメータＮに応じて疑似ランダム関数を用いてブロック暗号の復号関数Ｄの鍵Ｋを生成する鍵生成部と、
前記初期パラメータＮに依存する値を入力とすることなく内部パラメータｃｔｒを入力としてハッシュ値ｍｓｋを計算するハッシュ計算部と、
前記鍵生成部によって生成された鍵Ｋと、前記ハッシュ計算部によって計算されたハッシュ値ｍｓｋと、暗号文ｃとを入力として、前記復号関数Ｄを用いて、前記暗号文を復号してメッセージｍを生成する復号部と
を備える復号装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ブロック暗号を用いた認証暗号アルゴリズムに関する。
【背景技術】
【０００２】
認証暗号アルゴリズムは、秘匿機能と改ざん検知機能とを同時に併せ持つ暗号アルゴリズムである。認証暗号アルゴリズムを用いると、２者間で平文を秘匿した上で通信できるとともに、通信路で送信したメッセージが改ざんされているか否かを受信者が確認できる。【０００３】
認証暗号アルゴリズムは、暗号化関数と復号関数との２つのアルゴリズムを備える。
暗号化関数は、秘密鍵Ｋと、初期パラメータＮと、公開データＨと、平文Ｍとを入力とし、暗号文Ｃと改ざん検知用の認証子Ｔとを出力する関数である。なお、初期パラメータＮは暗号化毎に異なる値が用いられる。
復号関数は、秘密鍵Ｋと、初期パラメータＮと、公開データＨと、暗号文Ｃと、改ざん検知用の認証子Ｔとを入力とし、暗号文Ｃ等が改ざんされていない場合平文Ｍを出力し、改ざんされている場合、平文を出力しない関数である。【０００４】
送信者Ａｌｉｃｅと受信者Ｂｏｂとが認証暗号アルゴリズムを用いた通信を行うとする。この場合、送信者Ａｌｉｃｅは、秘密鍵Ｋと、初期パラメータＮと、公開データＨと、平文Ｍとから暗号化関数を用いて、暗号文Ｃと改ざん検知用の認証子Ｔとを計算する。そして、送信者Ａｌｉｃｅは、初期パラメータＮと、公開データＨと、暗号文Ｃと、改ざん検知用の認証子Ｔとを受信者Ｂｏｂに送信する。受信者Ｂｏｂは、秘密鍵Ｋと、初期パラメータＮと、公開データＨと、暗号文Ｃと、改ざん検知用の認証子Ｔとを復号関数の入力とする。復号関数は、初期パラメータＮと、公開データＨと、暗号文Ｃと、改ざん検知用の認証子Ｔとのいずれも改ざんされていない場合は平文Ｍを出力する。
なお、秘密鍵Ｋは、事前にＡｌｉｃｅとＢｏｂとで共有されている。また、公開データＨは公開してもよい値である。公開データＨは、無くても構わない。【０００５】
認証暗号アルゴリズムは、非特許文献７のＡＥＳなどのブロック暗号から構成されることが多い。
ブロック暗号の暗号化関数Ｅは、ｋビットの鍵ＫＥとｎビットの平文ｍとを入力とし、ｎビットの暗号文ｃを出力する関数である。これをｃ＝Ｅ（ＫＥ，ｍ）と書く。ブロック暗号の復号関数Ｄは、ｋビットの鍵ＫＥとｎビットの暗号文ｃとを入力とし、ｎビットの平文ｍを出力する関数である。これをｍ＝Ｄ（ＫＥ，ｃ）と書く。ブロック暗号の平文ｍ及び暗号文ｃのサイズｎはブロックサイズと呼ばれる。ブロック暗号の暗号化関数Ｅ及び復号関数Ｄは、鍵ＫＥを固定するとｎビットの置換関数となり、鍵を変えると別の置換関数となる。【０００６】
ブロック暗号を用いて認証暗号アルゴリズムを構成する場合、公開データＨと平文Ｍとは暗号化関数Ｅで処理するためにブロックサイズに分割される。分割されたブロックサイズのデータが暗号化関数Ｅで処理される。このブロックサイズのデータはブロックデータと呼ばれる。【０００７】
ブロック暗号を用いた認証暗号アルゴリズムの効率性は、各ブロックデータを処理するために呼び出されるブロック暗号の演算回数に依存する。効率性はｒａｔｅと呼ばれる単位で表現され、この演算回数がｘ回となる認証暗号アルゴリズムの効率性をｒａｔｅ−１／ｘとする。この演算回数ｘ＝１となるアルゴリズム、すなわちｒａｔｅ−１となるアルゴリズムが最も効率がよい。【０００８】
ｒａｔｅ−１となるブロック暗号を用いた認証暗号アルゴリズムは、ｔｗｅａｋａｂｌｅブロック暗号を用いた構成法で実現される。
この構成法は、ブロック暗号を用いてｔｗｅａｋａｂｌｅブロック暗号を設計するステップ１と、ｔｗｅａｋａｂｌｅブロック暗号を用いて認証暗号アルゴリズムを設計するステップ２とからなる。そして、ステップ１とステップ２とを組み合わせることで認証暗号アルゴリズムが得られる。【０００９】
ｔｗｅａｋａｂｌｅブロック暗号は、ブロック暗号の入力に加え、ｔビットのＴｗｅａｋ値と呼ばれる追加の値を入力とする。
ｔｗｅａｋａｂｌｅブロック暗号の暗号化関数ＴＥは、ｋビットの鍵ＫＴＥと、ｔビットのｔｗｅａｋ値ＴＷと、ｎビットの平文ｍとを入力とし、ｎビットの暗号文ｃを出力する関数である。これをｃ＝ＴＥ（ＫＴＥ，ＴＷ，ｍ）と書く。ｔｗｅａｋａｂｌｅブロック暗号の復号関数ＴＤは、ｋビットの鍵ＫＴＥと、ｔビットのｔｗｅａｋ値ＴＷと、ｎビットの暗号文ｃとを入力とし、ｎビットの平文ｍを出力する関数である。これをｍ＝ＴＤ（ＫＴＥ，ＴＷ，ｃ）と書く。
ｔｗｅａｋａｂｌｅブロック暗号の暗号化関数ＴＥと復号関数ＴＤとは、鍵ＫＴＥとｔｗｅａｋ値ＴＷとを固定するとｎビットの置換関数となり、鍵ＫＴＥとｔｗｅａｋ値ＴＷとの少なくともいずれかを変えると別の置換関数となる。ｔｗｅａｋａｂｌｅブロック暗号もブロック暗号と同様に、平文ｍ及び暗号文ｃのサイズｎはブロックサイズと呼ばれる。【００１０】
非特許文献１に記載されたｔｗｅａｋａｂｌｅブロック暗号は、多くの認証暗号アルゴリズムで用いられている。このｔｗｅａｋａｂｌｅブロック暗号は、ＬＲＷと呼ばれており、ブロック暗号とａｌｍｏｓｔ  ＸＯＲ  ｕｎｉｖｅｒｓａｌハッシュ関数ｈとが用いられる。
ａｌｍｏｓｔ  ＸＯＲ  ｕｎｉｖｅｒｓａｌハッシュ関数は、鍵付きのハッシュ関数である。以下、ａｌｍｏｓｔ  ＸＯＲ  ｕｎｉｖｅｒｓａｌハッシュ関数の鍵をＫｈと書き、入力ＴＷに対するａｌｍｏｓｔ  ＸＯＲ  ｕｎｉｖｅｒｓａｌハッシュ関数の演算をｈ（Ｋｈ，ＴＷ）と書く。
ＬＲＷの暗号化関数は、ｋビットの鍵Ｋと、ｔビットのｔｗｅａｋ値ＴＷと、ｎビットの平文ｍとを入力とし、数１により、ｎビットの暗号文ｃを計算する。
【数１】
0006386198.tif 000002
ＬＲＷの復号関数は、暗号化関数の逆、すなわち、数２により、平文ｍを計算する。
【数２】
0006386198.tif 000003
【００１１】
ａｌｍｏｓｔ  ＸＯＲ  ｕｎｉｖｅｒｓａｌハッシュ関数は、鍵Ｋｈと、２つの異なるハッシュ関数の入力値ＴＷ，ＴＷ’と、任意の値ｙとに対して、数３となる確率が非常に小さい関数のことである。通常、ハッシュ関数の出力長をｎビットとすると、この確率がＯ（１／２ｎ）となるものがａｌｍｏｓｔ  ＸＯＲ  ｕｎｉｖｅｒｓａｌハッシュ関数として用いられる。
【数３】
0006386198.tif 000004
【００１２】
ａｌｍｏｓｔ  ＸＯＲ  ｕｎｉｖｅｒｓａｌハッシュ関数ｈのアルゴリズムはいくつか提案されている。非特許文献２には、ガロア体上の２，３，７の掛け算を利用したｐｏｗｅｒｉｎｇ−ｕｐ法が記載されている。ｐｏｗｅｒｉｎｇ−ｕｐ法は、シフトと排他的論理和とを組み合わせることで非常に効率的に計算できる。また、非特許文献３及び非特許文献４にはｇｒａｙ−ｃｏｄｅ法が、非特許文献５及び非特許文献６にはＬＦＳＲ（Ｌｉｎｅａｒ  Ｆｅｅｄｂａｃｋ  Ｓｈｉｆｔ  Ｒｅｇｉｓｔｅｒ）法が記載されている。【００１３】
ＬＲＷを用いた認証暗号アルゴリズムは、初期パラメータＮと内部パラメータｃｔｒとがｔｗｅａｋ値として内部の演算で用いられ、初期パラメータＮと内部パラメータｃｔｒとがａｌｍｏｓｔ  ＸＯＲ  ｕｎｉｖｅｒｓａｌハッシュ関数の入力とされている。
初期パラメータＮは、暗号化毎に異なる値である。内部パラメータｃｔｒは、認証暗号アルゴリズム内部で用いられるパラメータで、１回の暗号化関数の演算内または１回の復号関数の演算内ではｔｗｅａｋａｂｌｅブロック暗号を呼び出す毎に違う値が使われる。すなわち、ａｌｍｏｓｔ  ＸＯＲ  ｕｎｉｖｅｒｓａｌハッシュ関数の入力値は、認証暗号アルゴリズムの暗号化関数で呼び出されるブロック暗号毎に別の値となり、その出力値も異なる値となる。【００１４】
ＬＲＷを用いたｒａｔｅ−１の認証暗号アルゴリズムは、特許文献１，２，３，４，５及び非特許文献２，３，４，８，９に記載されている。【００１５】
認証暗号アルゴリズムの安全性は、アルゴリズム内部で呼び出されるブロック暗号の演算回数と、認証暗号アルゴリズムの暗号化関数又は復号関数の呼び出し回数と、ブロック長とを用いて、安全性が破られる確率の上界値で評価される。この上界値をεと書く。
非特許文献１で示されている通り、認証暗号アルゴリズム内で呼び出されるブロック暗号の総呼び出し回数をσとすると、ＬＲＷを用いたｒａｔｅ−１の認証暗号アルゴリズムはε＝Ｏ（σ２／２ｎ）となる。この確率はバースデーバウンドと呼ばれる。【００１６】
認証暗号アルゴリズムを実装した場合、安全性を担保するために、ε＝１になる前に、鍵更新が行われる。例えば、ＬＲＷを用いる認証暗号アルゴリズムはσ＝２ｎ／２となる前に、鍵更新が行われる。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】米国特許出願公開第２０１３／００７７７８０号
【特許文献２】米国特許第８３２１６７５号
【特許文献３】米国特許第７９４９１２９号
【特許文献４】米国特許出願公開第２００２／００７１５５２号
【特許文献５】国際公開第２０１５／１５７０２号
【非特許文献】
【００１８】
【非特許文献１】Ｍｏｓｅｓ  Ｌｉｓｋｏｖ，  Ｒｏｎａｌｄ  Ｌ．  Ｒｉｖｅｓｔ，  ａｎｄ  Ｄａｖｉｄ  Ｗａｇｎｅｒ．  Ｔｗｅａｋａｂｌｅ  Ｂｌｏｃｋ  Ｃｉｐｈｅｒｓ．  ＣＲＹＰＴＯ  ２００２．  ｐ３１−４６．
【非特許文献２】Ｐｈｉｌｌｉｐ  Ｒｏｇａｗａｙ．  Ｅｆｆｉｃｉｅｎｔ  Ｉｎｓｔａｎｔｉａｔｉｏｎｓ  ｏｆ  Ｔｗｅａｋａｂｌｅ  Ｂｌｏｃｋｃｉｐｈｅｒｓ  ａｎｄ  Ｒｅｆｉｎｅｍｅｎｔｓ  ｔｏ  Ｍｏｄｅｓ  ＯＣＢ  ａｎｄ  ＰＭＡＣ．  ＡＳＩＡＣＲＹＰＴ  ２００４．  ｐ１６−３１．
【非特許文献３】Ｐｈｉｌｌｉｐ  Ｒｏｇａｗａｙ，  Ｍｉｈｉｒ  Ｂｅｌｌａｒｅ，  Ｊｏｈｎ  Ｂｌａｃｋ，  ａｎｄ  Ｔｅｄ  Ｋｒｏｖｅｔｚ．  ＯＣＢ：  ａ  ｂｌｏｃｋ−ｃｉｐｈｅｒ  ｍｏｄｅ  ｏｆ  ｏｐｅｒａｔｉｏｎ  ｆｏｒ  ｅｆｆｉｃｉｅｎｔ  ａｕｔｈｅｎｔｉｃａｔｅｄ  ｅｎｃｒｙｐｔｉｏｎ．  ＡＣＭ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｏｍｐｕｔｅｒ  ａｎｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｓｅｃｕｒｉｔｙ  ２００１．  ｐ１９６−２０５．
【非特許文献４】Ｔｅｄ  Ｋｒｏｖｅｔｚ  ａｎｄ  Ｐｈｉｌｌｉｐ  Ｒｏｇａｗａｙ．  Ｔｈｅ  Ｓｏｆｔｗａｒｅ  Ｐｅｒｆｏｒｍａｎｃｅ  ｏｆ  Ａｕｔｈｅｎｔｉｃａｔｅｄ−Ｅｎｃｒｙｐｔｉｏｎ  Ｍｏｄｅｓ．  ＦＳＥ  ２０１１．  ｐ３０６−３２７．
【非特許文献５】Ｒｏｂｅｒｔ  Ｇｒａｎｇｅｒ，  Ｐｈｉｌｉｐｐ  Ｊｏｖａｎｏｖｉｃ，  Ｂａｒｔ  Ｍｅｎｎｉｎｋ，  ａｎｄ  Ｓａｍｕｅｌ  Ｎｅｖｅｓ．  Ｉｍｐｒｏｖｅｄ  Ｍａｓｋｉｎｇ  ｆｏｒ  Ｔｗｅａｋａｂｌｅ  Ｂｌｏｃｋｃｉｐｈｅｒｓ  ｗｉｔｈ  Ａｐｐｌｉｃａｔｉｏｎｓ  ｔｏ  Ａｕｔｈｅｎｔｉｃａｔｅｄ  Ｅｎｃｒｙｐｔｉｏｎ．  ＥＵＲＯＣＲＹＰＴ  ２０１６  Ｐａｒｔ  Ｉ．  ｐ２６３−２９３．
【非特許文献６】Ｄｅｂｒｕｐ  Ｃｈａｋｒａｂｏｒｔｙ  ａｎｄ  Ｐａｌａｓｈ  Ｓａｒｋａｒ．  Ａ  Ｇｅｎｅｒａｌ  Ｃｏｎｓｔｒｕｃｔｉｏｎ  ｏｆ  Ｔｗｅａｋａｂｌｅ  Ｂｌｏｃｋ  Ｃｉｐｈｅｒｓ  ａｎｄ  Ｄｉｆｆｅｒｅｎｔ  Ｍｏｄｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎｓ．  ＩＥＥＥ  Ｔｒａｎｓ．  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｈｅｏｒｙ  ５４（５）．  ｐ１９９１−２００６．
【非特許文献７】ＦＩＰＳ  １９７，  Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ  （ＡＥＳ）
【非特許文献８】Ｋａｚｕｈｉｋｏ  Ｍｉｎｅｍａｔｓｕ．  Ｐａｒａｌｌｅｌｉｚａｂｌｅ  Ｒａｔｅ−１  Ａｕｔｈｅｎｔｉｃａｔｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  ｆｒｏｍ  Ｐｓｅｕｄｏｒａｎｄｏｍ  Ｆｕｎｃｔｉｏｎｓ．  ＥＵＲＯＣＲＹＰＴ  ２０１４．  ｐ２７５−２９２．
【非特許文献９】Ｐｈｉｌｌｉｐ  Ｒｏｇａｗａｙ．  Ａｕｔｈｅｎｔｉｃａｔｅｄ−ｅｎｃｒｙｐｔｉｏｎ  ｗｉｔｈ  ａｓｓｏｃｉａｔｅｄ−ｄａｔａ．  ＡＣＭ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｏｍｐｕｔｅｒ  ａｎｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｓｅｃｕｒｉｔｙ  ２００２．  ｐ９８−１０７．
【発明の概要】
【発明が解決しようとする課題】
【００１９】
鍵更新にはコストがかかるため、鍵更新の頻度を少なくすることが望まれている。また、認証暗号アルゴリズムの高速化のために、Ｔｗｅａｋａｂｌｅブロック暗号演算で呼び出されるブロック暗号の演算回数は最小回数、すなわち１回とすることが望まれている。
この発明は、上界値εをバースデーバウンドより小さくし、かつ、Ｔｗｅａｋａｂｌｅブロック暗号演算で呼び出されるブロック暗号の演算回数が１回となる暗号アルゴリズムを構成可能にすることを目的とする。
【課題を解決するための手段】
【００２０】
この発明に係る暗号化装置は、
認証暗号における暗号化装置であり、
初期パラメータＮに応じてブロック暗号の暗号化関数Ｅの鍵Ｋを生成する鍵生成部と、
内部パラメータｃｔｒを入力としてハッシュ値ｍｓｋを計算するハッシュ計算部と、
前記鍵生成部によって生成された鍵Ｋと、前記ハッシュ計算部によって計算されたハッシュ値ｍｓｋと、メッセージｍとを入力として、前記暗号化関数Ｅを用いて、前記メッセージｍの暗号文ｃを生成する暗号化部と
を備える。
【発明の効果】
【００２１】
この発明では、初期パラメータＮに応じて暗号化関数Ｅの鍵Ｋを生成する。これにより、暗号化関数Ｅの鍵Ｋが初期パラメータＮに応じて変わるため、鍵Ｋの推測が難しくなり、上界値εをバースデーバウンドより小さくなり、かつ、Ｔｗｅａｋａｂｌｅブロック暗号演算で呼び出されるブロック暗号の演算回数を１回とすることが可能になる。
【図面の簡単な説明】
【００２２】
【図１】実施の形態１に係る暗号システム１の構成図。
【図２】実施の形態１に係る暗号化装置１０の構成図。
【図３】実施の形態１に係る復号装置３０の構成図。
【図４】実施の形態１に係る暗号システム１が用いるｔｗｅａｋａｂｌｅブロック暗号の暗号化関数ＴＥのフローチャート。
【図５】実施の形態１に係る第１暗号化処理のフローチャート。
【図６】実施の形態１に係る第１暗号化処理を用いた場合の暗号化関数ＴＥの説明図。
【図７】実施の形態１に係る第２暗号化処理のフローチャート。
【図８】実施の形態１に係る第２暗号化処理を用いた場合の暗号化関数ＴＥの説明図。
【図９】実施の形態１に係る暗号システム１が用いるｔｗｅａｋａｂｌｅブロック暗号の復号関数ＴＤのフローチャート。
【図１０】実施の形態１に係る復号処理のフローチャート。
【図１１】実施の形態１に係る復号関数ＴＤの説明図。
【図１２】実施の形態１に係る第１暗号化アルゴリズムのフローチャート。
【図１３】実施の形態１に係る第１暗号化アルゴリズムの説明図。
【図１４】実施の形態１に係る第１復号アルゴリズムのフローチャート。
【図１５】実施の形態１に係る第１復号アルゴリズムの説明図。
【図１６】実施の形態１に係る第２暗号化アルゴリズムのフローチャート。
【図１７】実施の形態１に係る第２復号アルゴリズムのフローチャート。
【図１８】実施の形態１に係る認証子生成アルゴリズムのフローチャート。
【図１９】実施の形態１に係る認証子生成アルゴリズムの説明図。
【図２０】実施の形態１に係る検証生成アルゴリズムのフローチャート。
【図２１】変形例２に係る暗号化装置１０の構成図。
【図２２】変形例２に係る復号装置３０の構成図。
【図２３】実施の形態２に係る認証子Ｔの生成方法１のフローチャート。
【図２４】実施の形態２に係る認証子Ｔの生成方法１の説明図。
【図２５】実施の形態２に係る認証子Ｔの生成方法２のフローチャート。
【図２６】実施の形態２に係る認証子Ｔの生成方法２の説明図。
【図２７】実施の形態２に係る認証子Ｔの生成方法３の説明図。
【図２８】実施の形態２に係る認証子Ｔの生成方法３の説明図。
【図２９】変形例４に係る値ｗの生成方法のフローチャート。
【図３０】変形例４に係る値ｗの生成方法の説明図。
【発明を実施するための形態】
【００２３】
実施の形態１．
＊＊＊構成の説明＊＊＊
【００２４】
図１を参照して、実施の形態１に係る暗号システム１の構成を説明する。
暗号システム１は、１つ以上の暗号化装置１０と、１つ以上の復号装置３０とを備える。暗号化装置１０と復号装置３０とは、ネットワークを介して接続されており、通信可能になっている。
１つの装置が、暗号化装置１０と復号装置３０との両方の機能を有していてもよい。
【００２５】
暗号化装置１０は、鍵Ｋｃと、初期パラメータＮと、メッセージＭとを入力として、暗号文Ｃと、認証子Ｔとを生成する。暗号化装置１０は、暗号文Ｃと、認証子Ｔとを復号装置３０に送信する。復号装置３０は、暗号化装置１０から送信された暗号文Ｃ及び認証子Ｔと、鍵Ｋｃと、初期パラメータＮとを入力として、暗号文Ｃを復号したメッセージＭを生成する。また、復号装置３０は、メッセージＭが改ざんされているか否かを判定する。復号装置３０は、メッセージＭが改ざんされていない場合には、メッセージＭを出力する。
【００２６】
図２を参照して、実施の形態１に係る暗号化装置１０の構成を説明する。
暗号化装置１０は、処理回路１１を備える。処理回路１１は、鍵生成部２１と、ハッシュ計算部２２と、暗号化部２３と、分割部２４と、暗号文生成部２５と、認証子生成部２６とを備える。暗号化部２３は、第１置換部２７と、ブロック暗号計算部２８と、第２置換部２９とを備える。処理回路１１は、鍵生成部２１と、ハッシュ計算部２２と、暗号化部２３と、分割部２４と、暗号文生成部２５と、認証子生成部２６と、第１置換部２７と、ブロック暗号計算部２８と、第２置換部２９との各機能を実現する専用の電子回路である。
【００２７】
図３を参照して、実施の形態１に係る復号装置３０の構成を説明する。
復号装置３０は、処理回路３１を備える。処理回路３１は、鍵生成部４１と、ハッシュ計算部４２と、復号部４３と、分割部４４と、平文生成部４５と、検証部４６とを備える。復号部４３は、第１置換部４７と、ブロック暗号計算部４８と、第２置換部４９とを備える。処理回路３１は、鍵生成部４１と、ハッシュ計算部４２と、復号部４３と、分割部４４と、平文生成部４５と、第１置換部４７と、ブロック暗号計算部４８と、第２置換部４９との各機能を実現する専用の電子回路である。
【００２８】
処理回路１１，３１は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）が想定される。
各機能を１つの処理回路１１又は処理回路３１で実現してもよいし、各機能を複数の処理回路１１又は複数の処理回路３１に分散させて実現してもよい。
【００２９】
処理回路１１，３１によって実現される各機能の処理の結果を示す情報とデータと信号値と変数値は、処理回路１１，３１内のレジスタのような記憶領域に記憶される。
【００３０】
＊＊＊動作の説明＊＊＊
図４から図２０を参照して、実施の形態１に係る暗号システム１の動作を説明する。
実施の形態１に係る暗号化装置１０の動作は、実施の形態１に係る暗号化方法に相当する。また、実施の形態１に係る暗号化装置１０の動作は、実施の形態１に係る暗号化プログラムの処理に相当する。
実施の形態１に係る復号装置３０の動作は、実施の形態１に係る復号方法に相当する。また、実施の形態１に係る復号装置３０の動作は、実施の形態１に係る復号プログラムの処理に相当する。
【００３１】
実施の形態１に係る暗号システム１は、ｔｗｅａｋａｂｌｅブロック暗号を用いて、認証暗号アルゴリズムを実現する。実施の形態１に係る暗号システム１が用いるｔｗｅａｋａｂｌｅブロック暗号は、鍵がｋビットであり、ブロックサイズがｎビットであるブロック暗号の暗号化関数Ｅ及び復号関数Ｄを用い、初期パラメータＮと内部パラメータｃｔｒとがＴｗｅａｋ値として与えられる方式である。
以下の説明では、初期パラメータＮの取り得る全空間をＳｅｔ（Ｎ）とし、内部パラメータｃｔｒの取り得る全空間をＳｅｔ（ｃｔｒ）とする。初期パラメータＮと内部パラメータｃｔｒとは、公開されていてもよい。
【００３２】
図４から図１１を参照して、実施の形態１に係る暗号システム１が用いるｔｗｅａｋａｂｌｅブロック暗号を説明する。
【００３３】
図４を参照して、実施の形態１に係る暗号システム１が用いるｔｗｅａｋａｂｌｅブロック暗号の暗号化関数ＴＥを説明する。
（ステップＳ１１：鍵生成処理）
鍵生成部２１は、第１Ｔｗｅａｋ値ＴＷ１の入力を受け付ける。鍵生成部２１は、第１Ｔｗｅａｋ値ＴＷ１に応じて暗号化関数Ｅのｋビットの鍵Ｋを生成する。なお、第１Ｔｗｅａｋ値ＴＷ１は、認証暗号アルゴリズムでは、初期パラメータＮである。そのため、鍵生成部２１は、認証暗号アルゴリズムでは、初期パラメータＮに応じて暗号化関数Ｅのｋビットの鍵Ｋを生成する。
具体的には、鍵生成部２１は、第１Ｔｗｅａｋ値ＴＷ１と、ｋビットの鍵Ｋｆとを入力として、ｋビットの値の集合｛０，１｝ｋを出力する鍵付き関数ｆを用いる。鍵生成部２１は、復号装置３０との間で事前に共有された鍵Ｋｆと、第１Ｔｗｅａｋ値ＴＷ１とを入力として、鍵付き関数ｆにより、ｋビットの鍵Ｋを生成する。
【００３４】
鍵付き関数ｆとしては、ａｌｍｏｓｔ  ｕｎｉｖｅｒｓａｌハッシュ関数又は疑似ランダム関数といった関数を用いることができる。
ａｌｍｏｓｔ  ｕｎｉｖｅｒｓａｌハッシュ関数とは、鍵Ｋｆと２つの異なる入力値ＴＷ１，ＴＷ１’とに対し、ｆ（Ｋｆ，ＴＷ１）＝ｆ（Ｋｆ，ＴＷ１’）となる確率が非常に小さく、かつ、鍵Ｋｆと、入力値ＴＷ１と、ｋビットの値ｙとに対し、ｆ（Ｋｆ，ＴＷ１）＝ｙとなる確率が非常に小さい関数のことである。具体的には、これらの確率がＯ（１／２ｎ）以下の確率となる関数を使用することが望ましい。
鍵付き関数ｆは、Ｅ（Ｋｆ，０｜｜ＴＷ１），Ｅ（Ｋｆ，１｜｜ＴＷ１），．．．，Ｅ（Ｋｆ，（ｉ−１）｜｜ＴＷ１）を結合し、このうち所定のｋビットを鍵Ｋとする関数であってもよい。なお、｜｜をビット結合を表す演算子である。例えば、０００｜｜１１１は、ビット列０００１１１と等しい。また、鍵付き関数ｆは、鍵Ｋｆと第１Ｔｗｅａｋ値ＴＷ１との排他的論理和を鍵Ｋとする関数であってもよい。但し、この場合、第１Ｔｗｅａｋ値ＴＷ１はｋビットの値で０ｎ（０のｎビット列）以外の値とする。また、鍵付き関数ｆは、Ｅ（Ｋｆ，０｜｜ＴＷ１）  ｘｏｒ  Ｅ（Ｋｆ，１｜｜ＴＷ１），．．．，Ｅ（Ｋｆ，０｜｜ＴＷ１）  ｘｏｒ  Ｅ（Ｋｆ，ｉ｜｜ＴＷ１）を結合し、このうち所定のｋビットを鍵Ｋとする関数であってもよい。なお、ｊ｜｜ＴＷ１はｎビットの値である。ｊのビット長は０からｉまでの値を２進数で表現可能な長さであり、ＴＷ１の長さは残りのビット長である。
【００３５】
（ステップＳ１２：ハッシュ計算処理）
ハッシュ計算部２２は、第２Ｔｗｅａｋ値ＴＷ２の入力を受け付ける。ハッシュ計算部２２は、内部パラメータｃｔｒと、復号装置３０との間で事前に共有されたｋビットの鍵Ｋｈとを入力としてハッシュ関数ｈによりｎビットのハッシュ値ｍｓｋを計算する。なお、第２Ｔｗｅａｋ値ＴＷ２は、認証暗号アルゴリズムでは、内部パラメータｃｔｒである。
ハッシュ関数ｈは、第２Ｔｗｅａｋ値ＴＷ２と、鍵Ｋｈとを入力として、ｎビットの値の集合｛０，１｝ｎを出力する関数である。具体的には、ハッシュ関数ｈは、ａｌｍｏｓｔ  ＸＯＲ  ｕｎｉｖｅｒｓａｌハッシュ関数である。例えば、ハッシュ関数ｈとして、特許文献２に記載されたｐｏｗｅｒｉｎｇ−ｕｐ法と、特許文献３，４に記載されたｇｒａｙ−ｃｏｄｅ法と、非特許文献５に記載されたＬＦＳＲ法と等を用いることができる。
なお、関数ｆの鍵Ｋｆと関数ｈの鍵Ｋｈは同じでもよいし、異なってもよい。なお、ここでは、ハッシュ関数ｈは、初期パラメータＮを入力としていない。しかし、ハッシュ関数ｈは、初期パラメータＮを入力としてもよい。
【００３６】
（ステップＳ１３：暗号化処理）
暗号化部２３は、ステップＳ１１で鍵生成部２１によって生成された鍵Ｋと、ステップＳ１２でハッシュ計算部２２によって計算されたハッシュ値ｍｓｋと、メッセージｍとを入力として、暗号化関数Ｅを用いて、メッセージｍの暗号文ｃを生成する。
暗号化処理には、第１暗号化処理と第２暗号化処理との２つ種類の処理がある。後述する認証暗号アルゴリズムでは、原則として第１認証処理が用いられる。メッセージｍの復号に復号関数ＴＤを用いない場合に、第１暗号化処理に代えて第２暗号化処理を用いることが可能である。
【００３７】
図５及び図６を参照して、実施の形態１に係る第１暗号化処理を説明する。
（ステップＳ１３１−１：第１置換処理）
第１置換部２７は、関数ｐに対して、ステップＳ１２で計算されたハッシュ値ｍｓｋと、メッセージｍとを入力して値ｘを計算する。
関数ｐは、ハッシュ値ｍｓｋとｎビットの値αとを入力としてｎビットの値βを出力する関数である。関数ｐは、ハッシュ値ｍｓｋが固定されると、値αと値βとが置換の関係になる関数である。具体例としては、関数ｐは、２つの入力値の排他的論理和を計算する関数である。つまり、ｕ＝ｐ（ｖ，ｗ）である場合に、ｕがｖとｗとの排他的論理和を計算した値である。また、他の具体例としては、関数ｐは、２つの値のビットを加算する関数である。つまり、ｕ＝ｐ（ｖ，ｗ）である場合に、ｕがｖとｗとのｎビットの加算をした値である。
【００３８】
（ステップＳ１３２−１：ブロック暗号計算処理）
ブロック暗号計算部２８は、ステップＳ１３１−１で第１置換部２７によって計算された値ｘと、ステップＳ１１で計算された鍵Ｋとを入力として、暗号化関数Ｅにより、値ｙを計算する。
【００３９】
（ステップＳ１３３−１：第２置換処理）
第２置換部２９は、関数ｐに対して、ステップＳ１２で計算されたハッシュ値ｍｓｋと、ステップＳ１３２−１でブロック暗号計算部２８によって計算された値ｙとを入力して暗号文ｃを計算する。関数ｐは、ステップＳ１３１−１で説明した関数である。
【００４０】
図７及び図８を参照して、実施の形態１に係る第２暗号化処理を説明する。
ステップＳ１３１−２からステップＳ１３２−２の処理は、図５のステップＳ１３１−１からステップＳ１３２−１の処理と同じである。但し、ステップＳ１３２−２では、ブロック暗号計算部２８は、値ｙを暗号文ｃとして扱う。
つまり、第２暗号化処理は、第２置換処理を行わない点が第１暗号化処理と異なる。
【００４１】
図９を参照して、実施の形態１に係る暗号システム１が用いるｔｗｅａｋａｂｌｅブロック暗号の復号関数ＴＤを説明する。
（ステップＳ２１：鍵生成処理）
鍵生成部４１は、第１Ｔｗｅａｋ値ＴＷ１の入力を受け付ける。鍵生成部４１は、図４のステップＳ１１と同じ方法により、第１Ｔｗｅａｋ値ＴＷ１に応じて暗号化関数Ｅのｋビットの鍵Ｋを生成する。
【００４２】
（ステップＳ２２：ハッシュ計算処理）
ハッシュ計算部４２は、第２Ｔｗｅａｋ値ＴＷ２の入力を受け付ける。ハッシュ計算部４２は、図４のステップＳ１２と同じ方法により、第２Ｔｗｅａｋ値ＴＷ２を入力としてハッシュ関数ｈによりｎビットのハッシュ値ｍｓｋを計算する。
【００４３】
（ステップＳ２３：復号処理）
復号部４３は、ステップＳ２１で鍵生成部４１によって生成された鍵Ｋと、ステップＳ２２でハッシュ計算部４２によって計算されたハッシュ値ｍｓｋと、暗号文ｃとを入力として、復号関数Ｄを用いて、暗号文ｃを復号してメッセージｍを生成する。
【００４４】
図１０及び図１１を参照して、実施の形態１に係る復号処理を説明する。
（ステップＳ２３１：第１置換処理）
第１置換部４７は、ステップＳ１３３−１で使用された関数ｐの逆関数ｐ−１に対して、ステップＳ２２で計算されたハッシュ値ｍｓｋと、暗号文ｃとを入力して値ｙを計算する。
【００４５】
（ステップＳ２３２：ブロック暗号計算処理）
ブロック暗号計算部４８は、ステップＳ２３１で第１置換部４７によって計算された値ｙと、ステップＳ２１で計算された鍵Ｋとを入力として、復号関数Ｄにより、値ｘを計算する。
【００４６】
（ステップＳ２３３：第２置換処理）
第２置換部４９は、ステップＳ１３１−１で使用された関数ｐの逆関数ｐ−１に対して、ステップＳ２２で計算されたハッシュ値ｍｓｋと、ステップＳ２３２でブロック暗号計算部４８によって計算された値ｘとを入力してメッセージｍを計算する。
【００４７】
図１２から図２０を参照して、実施の形態１に係る暗号システム１によって実現される認証暗号アルゴリズムについて説明する。
認証暗号アルゴリズムは、第１暗号化アルゴリズムと、第１復号アルゴリズムと、第２暗号化アルゴリズムと、第２復号アルゴリズムと、認証子生成アルゴリズムと、検証アルゴリズムとを含む。
第１暗号化アルゴリズムは、メッセージＭがｎの倍数ビットである場合の暗号化アルゴリズムである。第１復号アルゴリズムは、暗号文Ｃがｎの倍数ビットである場合の復号アルゴリズムである。第２暗号化アルゴリズムは、メッセージＭがｎの倍数ビットでない場合の暗号化アルゴリズムである。第２復号アルゴリズムは、暗号文Ｃがｎの倍数ビットでない場合の復号アルゴリズムである。認証子生成アルゴリズムは、メッセージＭの認証子Ｔを生成するアルゴリズムである。検証アルゴリズムは、認証子Ｔを検証するアルゴリズムである。
【００４８】
第１暗号化アルゴリズムと、第２暗号化アルゴリズムと、認証子生成アルゴリズムとは、暗号化装置１０によって実行される。また、第１復号アルゴリズムと、第２復号アルゴリズムと、検証アルゴリズムとは、復号装置３０によって実行される。
【００４９】
暗号化装置１０は、鍵Ｋｃと、初期パラメータＮと、メッセージＭとを入力として、暗号文Ｃと、認証子Ｔとを生成する。具体的には、暗号化装置１０は、第１暗号化アルゴリズム、又は、第２暗号化アルゴリズムにより、暗号文Ｃを生成し、認証子生成アルゴリズムにより、認証子Ｔを生成する。そして、暗号化装置１０は、暗号文Ｃ及び認証子Ｔを、復号装置３０に送信する。
復号装置３０は、暗号化装置１０から送信された暗号文Ｃ及び認証子Ｔと、鍵Ｋｃと、初期パラメータＮとを入力として、暗号文Ｃを復号したメッセージＭを生成するとともに、メッセージＭが改ざんされているか否かを判定する。具体的には、復号装置３０は、第１復号アルゴリズム、又は、第２復号アルゴリズムにより、メッセージＭを生成し、検証アルゴリズムにより、メッセージＭが改ざんされているか否かを判定する。
【００５０】
以下の説明では、関数ｆの鍵Ｋｆと関数ｈの鍵Ｋｈは同じであり、鍵Ｋｆ＝鍵Ｋｈ＝鍵Ｋｃであるとする。
鍵Ｋｃと、初期パラメータＮと、内部パラメータｃｔｒと、メッセージｍとを入力として、第１暗号化処理を用いる暗号化関数ＴＥにより、暗号文ｃを生成する処理を、ｃ＝ＴＥｐ（Ｋ，（Ｎ，ｃｔｒ），ｍ）と書く。また、鍵Ｋｃと、初期パラメータＮと、内部パラメータｃｔｒと、メッセージｍとを入力として、第２暗号化処理を用いる暗号化関数ＴＥにより、暗号文ｃを生成する処理を、ｃ＝ＴＥｐ’（Ｋ，（Ｎ，ｃｔｒ），ｍ）と書く。また、鍵Ｋｃと、初期パラメータＮと、内部パラメータｃｔｒと、暗号文ｃとを入力として、復号関数ＴＤにより、メッセージｍを生成する処理を、ｍ＝ＴＤｐ（Ｋ，（Ｎ，ｃｔｒ），ｃ）と書く。
【００５１】
値ＮｃをＳｅｔ（Ｎ）の固定値とする。値ｃｏｎｓｔと値ｃｏｎｓｔａｕｔｈとをｎビットの固定値とする。内部パラメータｃｔｒ［ｂ，ｃ］を固定値とし、（ｂ，ｃ）と（ｂ’，ｃ’）とが異なる場合、内部パラメータｃｔｒ［ｂ，ｃ］と内部パラメータｃｔｒ［ｂ’，ｃ’］は異なる固定値とする。また、内部パラメータｃｔｒ’［ｂ，ｃ］も、内部パラメータｃｔｒ［ｂ，ｃ］と同様の固定値とする。
【００５２】
図１２及び図１３を参照して、実施の形態１に係る第１暗号化アルゴリズムを説明する。
（ステップＳ３１：分割処理）
分割部２４は、暗号化する対象のメッセージＭの入力を受け付ける。分割部２４は、メッセージＭを先頭からｎビット毎に分割して、ｎビットの値Ｍ［１］，．．．，値Ｍ［ｓ］を生成する。
【００５３】
（ステップＳ３２：暗号要素生成処理）
暗号文生成部２５は、ｉ＝１，．．．，ｓの各整数ｉについて、ステップＳ３１で分割部２４によって生成された値Ｍ［ｉ］をメッセージｍとして入力することにより、暗号文ｃを値Ｍ［ｉ］の暗号文Ｃ［ｉ］として暗号化部２３に生成させる。
具体的には、暗号文生成部２５は、ｉ＝１，．．．，ｓの各整数ｉについて、ステップＳ３１で分割部２４によって生成された値Ｍ［ｉ］をメッセージｍとし、鍵ＫＣを鍵Ｋｆ及び鍵Ｋｈとし、初期パラメータＮを第１Ｔｗｅａｋ値ＴＷ１とし、内部パラメータｃｔｒ［ｉ，０］を第２Ｔｗｅａｋ値ＴＷ２として、鍵生成部２１とハッシュ計算部２２と暗号化部２３とに入力する。そして、暗号文生成部２５は、ｉ＝１，．．．，ｓの各整数ｉについて、値Ｍ［ｉ］と、鍵ＫＣと、初期パラメータＮと、内部パラメータｃｔｒ［ｉ，０］とを入力として、鍵生成部２１とハッシュ計算部２２と暗号化部２３とに、図４に基づき説明した暗号化関数ＴＥを実行させる。この際、図４のステップＳ１３の暗号化処理としては、第１暗号化処理が用いられる。そして、暗号文生成部２５は、生成された暗号文ｃを暗号文Ｃ［ｉ］として扱う。
つまり、ｉ＝１，．．．，ｓの各整数ｉについて、Ｃ［ｉ］＝ＴＥｐ（ＫＣ，（Ｎ，ｃｔｒ［ｉ，０］），Ｍ［ｉ］）である。
鍵ＫＣは、事前に暗号化装置１０と復号装置３０とで共有されたｋビットの鍵である。初期パラメータＮは、ステップＳ３２が実行される度にＳｅｔ（Ｎ）から選択される値である。
【００５４】
なお、ステップＳ３２で用いられる初期パラメータＮは、ｉ＝１，．．．，ｓの各整数ｉについて、共通の値である。そのため、ｉ＝１，．．．，ｓの各整数ｉについて、図４に示す暗号化関数ＴＥが実行されるが、図４のステップＳ１１の鍵Ｋの生成については、ある整数ｉについてのみ実行されればよい。つまり、ある整数ｉについて実行された暗号化関数ＴＥで鍵Ｋが生成された場合には、他の整数ｉについて実行された暗号化関数ＴＥでは、生成済の鍵Ｋを用いればよい。
例えば、値Ｍ［１］の暗号文Ｃ［１］を生成するときに、鍵Ｋが生成されたとする。この場合には、残りの値Ｍ［２］，．．．，値Ｍ［ｓ］の暗号文Ｃ［２］，．．．，暗号文Ｃ［ｓ］を生成するときには、改めて鍵Ｋを生成する必要はなく、値Ｍ［１］の暗号文Ｃ［１］を生成するときに生成された鍵Ｋを用いればよい。
【００５５】
（ステップＳ３３：暗号文生成処理）
暗号文生成部２５は、ｉ＝１，．．．，ｓの各整数ｉについての暗号文Ｃ［ｉ］を連結して、メッセージＭの暗号文Ｃを生成する。
つまり、Ｃ＝Ｃ［１］｜｜Ｃ［２］｜｜・・・｜｜Ｃ［ｓ］である。
【００５６】
図１４及び図１５を参照して、実施の形態１に係る第１復号アルゴリズムを説明する。
（ステップＳ４１：分割処理）
分割部４４は、復号する対象の暗号文Ｃの入力を受け付ける。分割部４４は、暗号文Ｃを先頭からｎビット毎に分割して、ｎビットの値Ｃ［１］，．．．，値Ｃ［ｓ］を生成する。
【００５７】
（ステップＳ４２：平文要素生成処理）
平文生成部４５は、ｉ＝１，．．．，ｓの各整数ｉについて、ステップＳ４１で分割部４４によって生成された値Ｃ［ｉ］を暗号文ｃとして入力することにより、メッセージｍを値Ｃ［ｉ］を復号した平文Ｍ［ｉ］として復号部４３に生成させる。
具体的には、平文生成部４５は、ｉ＝１，．．．，ｓの各整数ｉについて、ステップＳ４１で分割部４４によって生成された値Ｃ［ｉ］を暗号文ｃとし、鍵ＫＣを鍵Ｋｆ及び鍵Ｋｈとし、初期パラメータＮを第１Ｔｗｅａｋ値ＴＷ１とし、内部パラメータｃｔｒ［ｉ，０］を第２Ｔｗｅａｋ値ＴＷ２として、鍵生成部４１とハッシュ計算部４２と復号部４３とに入力する。そして、平文生成部４５は、ｉ＝１，．．．，ｓの各整数ｉについて、値Ｃ［ｉ］と、鍵ＫＣと、初期パラメータＮと、内部パラメータｃｔｒ［ｉ，０］とを入力として、鍵生成部４１とハッシュ計算部４２と復号部４３とに、図９に基づき説明した復号関数ＴＤを実行させる。そして、平文生成部４５は、生成されたメッセージｍを平文Ｍ［ｉ］として扱う。
つまり、ｉ＝１，．．．，ｓの各整数ｉについて、Ｍ［ｉ］＝ＴＤｐ（ＫＣ，（Ｎ，ｃｔｒ［ｉ，０］），Ｃ［ｉ］）である。
【００５８】
なお、ステップＳ４２で用いられる初期パラメータＮは、ステップＳ３２で用いられる初期パラメータＮと同様に、ｉ＝１，．．．，ｓの各整数ｉについて、共通の値である。そのため、ｉ＝１，．．．，ｓの各整数ｉについて、図９に示す暗号化関数ＴＤが実行されるが、図９のステップＳ２１の鍵Ｋの生成については、ある整数ｉについてのみ実行されればよい。
【００５９】
（ステップＳ４３：平文生成処理）
平文生成部４５は、ｉ＝１，．．．，ｓの各整数ｉについての平文Ｍ［ｉ］を連結して、暗号文Ｃを復号したメッセージＭを生成する。
つまり、Ｍ＝Ｍ［１］｜｜Ｍ［２］｜｜・・・｜｜Ｍ［ｓ］である。
【００６０】
図１６を参照して、実施の形態１に係る第２暗号化アルゴリズムを説明する。
（ステップＳ５１：分割処理）
分割部２４は、暗号化する対象のメッセージＭの入力を受け付ける。ここでは、メッセージＭは、ｎ×ｓ＋ｒビットであるとする。但し、０＜ｒ＜ｎである。分割部２４は、メッセージＭを先頭からｎビット毎に分割して、ｎビットの値Ｍ［１］，．．．，値Ｍ［ｓ］と、ｎビットよりも少ないｒビットの値Ｍ［＊］とを生成する。
【００６１】
（ステップＳ５２：暗号要素生成処理）
暗号文生成部２５は、図１２のステップＳ３２と同様に、ｉ＝１，．．．，ｓの各整数ｉについて、ステップＳ３１で分割部２４によって生成された値Ｍ［ｉ］をメッセージｍとして入力することにより、暗号文ｃを値Ｍ［ｉ］の暗号文Ｃ［ｉ］として暗号化部２３に生成させる。
【００６２】
また、暗号文生成部２５は、固定値ｃｏｎｓｔをメッセージｍとして入力することにより、暗号文ｃを固定値ｃｏｎｓｔの暗号文Ｒとして暗号化部２３に生成させる。
具体的には、暗号文生成部２５は、固定値ｃｏｎｓｔをメッセージｍとし、鍵ＫＣを鍵Ｋｆ及び鍵Ｋｈとし、初期パラメータＮを第１Ｔｗｅａｋ値ＴＷ１とし、内部パラメータｃｔｒ［ｓ，１］を第２Ｔｗｅａｋ値ＴＷ２として、鍵生成部２１とハッシュ計算部２２と暗号化部２３とに入力する。そして、暗号文生成部２５は、固定値ｃｏｎｓｔと、鍵ＫＣと、初期パラメータＮと、内部パラメータｃｔｒ［ｓ，１］とを入力として、鍵生成部２１とハッシュ計算部２２と暗号化部２３とに、図４に基づき説明した暗号化関数ＴＥを実行させる。この際、図４のステップＳ１３の暗号化処理としては、第１暗号化処理が用いられる。そして、暗号文生成部２５は、生成された暗号文ｃを暗号文Ｒとして扱う。
つまり、Ｒ＝ＴＥｐ（Ｋ，（Ｎ，ｃｔｒ［ｓ，１］），ｃｏｎｓｔ）である。
なお、固定値ｃｏｎｓｔに代えて、メッセージＭ及び暗号文Ｃのビット長に依存した値が用いられてもよい。具体例としては、メッセージＭ及び暗号文Ｃのビット長が用いられてもよい。
また、図４のステップＳ１３の暗号化処理として第２暗号化処理が用いられてもよい。つまり、Ｒ＝ＴＥｐ’（Ｋ，（Ｎ，ｃｔｒ［ｓ，１］），ｃｏｎｓｔ）でもよい。
また、暗号文Ｒを生成する場合には、暗号文Ｃ［ｉ］を生成する際に生成された鍵Ｋを用いればよい。したがって、図４のステップＳ１１の鍵Ｋの生成については、実行しなくてもよい。
【００６３】
暗号文生成部２５は、暗号文Ｒの先頭ｒビットと、値Ｍ［＊］との排他的論理和を計算して値Ｃ［＊］を生成する。
【００６４】
（ステップＳ５３：暗号文生成処理）
暗号文生成部２５は、ｉ＝１，．．．，ｓの各整数ｉについての暗号文Ｃ［ｉ］と、値Ｃ［＊］とを連結して、メッセージＭの暗号文Ｃを生成する。
つまり、Ｃ＝Ｃ［１］｜｜Ｃ［２］｜｜・・・｜｜Ｃ［ｓ］｜｜Ｃ［＊］である。
【００６５】
図１７を参照して、実施の形態１に係る第２復号アルゴリズムを説明する。
（ステップＳ６１：分割処理）
分割部４４は、復号する対象の暗号文Ｃの入力を受け付ける。ここでは、暗号文Ｃは、ｎ×ｓ＋ｒビットであるとする。但し、０＜ｒ＜ｎである。分割部４４は、暗号文Ｃを先頭からｎビット毎に分割して、ｎビットの値Ｃ［１］，．．．，値Ｃ［ｓ］と、ｎビットよりも少ないｒビットの値Ｃ［＊］とを生成する。
【００６６】
（ステップＳ６２：平文要素生成処理）
平文生成部４５は、図１４のステップＳ４２と同様に、ｉ＝１，．．．，ｓの各整数ｉについて、ステップＳ４１で分割部４４によって生成された値Ｃ［ｉ］を暗号文ｃとして入力することにより、メッセージｍを値Ｃ［ｉ］を復号したメッセージＭ［ｉ］として復号部４３に生成させる。
【００６７】
また、平文生成部４５は、図１６のステップＳ５２と同様に、固定値ｃｏｎｓｔをメッセージｍとして入力することにより、暗号文ｃを固定値ｃｏｎｓｔの暗号文Ｒとして暗号化部２３に生成させる。
なお、ステップＳ５２で固定値ｃｏｎｓｔに代えて、メッセージＭ及び暗号文Ｃのビット長に依存した値が用いられる場合には、平文生成部４５はステップＳ５２と同じ値を用いる。
【００６８】
平文生成部４５は、暗号文Ｒの先頭ｒビットと、値Ｃ［＊］との排他的論理和を計算して値Ｍ［＊］を生成する。
【００６９】
（ステップＳ６３：平文生成処理）
平文生成部４５は、ｉ＝１，．．．，ｓの各整数ｉについての平文Ｍ［ｉ］と、値Ｍ［＊］とを連結して、暗号文Ｃを復号したメッセージＭを生成する。
つまり、Ｍ＝Ｍ［１］｜｜Ｍ［２］｜｜・・・｜｜Ｍ［ｓ］｜｜Ｍ［＊］である。
【００７０】
図１８及び図１９を参照して、実施の形態１に係る認証子生成アルゴリズムを説明する。
認証子生成アルゴリズムは、メッセージＭがｎの倍数ビットである場合と、メッセージＭがｎの倍数ビットでない場合との両方で用いられる。ここでは、メッセージＭは、ｎ×ｓ＋ｒビットであるとする。但し、０≦ｒ＜ｎである。
【００７１】
（ステップＳ７１：分割処理）
分割部２４は、メッセージＭを先頭からｎビット毎に分割して、ｎビットの値Ｍ［１］，．．．，値Ｍ［ｓ］と、ｓビットの値Ｍ［＊］とを生成する。但し、ｒ＝０の場合、値Ｍ［＊］は空列である。
【００７２】
（ステップＳ７２：チェックサム生成処理）
（１）ｒ＝０の場合、認証子生成部２６は、ステップＳ７１で分割部２４によって生成されたｉ＝１，．．．，ｓの各整数ｉについての値Ｍ［ｉ］の排他的論理和を計算して、チェックサムＣＳを生成する。
つまり、数４である。
【数４】
0006386198.tif 000005
【００７３】
（２）ｒ≠０の場合、認証子生成部２６は、ステップＳ７１で分割部２４によって生成された値Ｍ［＊］の後に、１の後に０のビット列が付加されたビット列といった何らかのビット列を付加して、ｎビットの値Ｍ［＊］’を生成する。認証子生成部２６は、ｉ＝１，．．．，ｓの各整数ｉについての値Ｍ［ｉ］と、値Ｍ［＊］’との排他的論理和を計算して、チェックサムＣＳを生成する。
つまり、数５である。
【数５】
0006386198.tif 000006
【００７４】
（ステップＳ７３：認証要素生成処理）
認証子生成部２６は、ステップＳ７２で生成されたチェックサムＣＳをメッセージｍとして入力することにより、暗号文ｃをチェックサムＣＳの暗号文Ｔ’として暗号化部２３に生成させる。
具体的には、認証子生成部２６は、チェックサムＣＳをメッセージｍとし、鍵ＫＣを鍵Ｋｆ及び鍵Ｋｈとし、初期パラメータＮを第１Ｔｗｅａｋ値ＴＷ１とし、内部パラメータｃｔｒ［ｉ，０］を第２Ｔｗｅａｋ値ＴＷ２として、鍵生成部２１とハッシュ計算部２２と暗号化部２３とに入力する。そして、認証子生成部２６は、チェックサムＣＳと、鍵ＫＣと、初期パラメータＮと、内部パラメータｃｔｒとを入力として、鍵生成部２１とハッシュ計算部２２と暗号化部２３とに、図４に基づき説明した暗号化関数ＴＥを実行させる。この際、図４のステップＳ１３の暗号化処理としては、第１暗号化処理が用いられる。そして、暗号文生成部２５は、生成された暗号文ｃを暗号文Ｔ’として扱う。
なお、（１）ｒ＝０の場合、内部パラメータｃｔｒとして、内部パラメータｃｔｒ［ｓ，２］が用いられる。（２）ｒ≠０の場合、内部パラメータｃｔｒとして、内部パラメータｃｔｒ［ｓ，２］とは異なる内部パラメータｃｔｒ［ｓ，３］が用いられる。
つまり、数６である。
【数６】
0006386198.tif 000007
【００７５】
なお、図４のステップＳ１３の暗号化処理として第２暗号化処理が用いられてもよい。つまり、数７である。
【数７】
0006386198.tif 000008
【００７６】
（ステップＳ７４：認証子生成処理）
認証子生成部２６は、ステップＳ７３で生成された暗号文Ｔ’のうちの固定長のビットを認証子Ｔとして抽出する。
【００７７】
図２０を参照して、実施の形態１に係る検証生成アルゴリズムを説明する。
（ステップＳ８１：認証子生成処理）
検証部４６は、第１復号アルゴリズム又は第２復号アルゴリズムによって生成されたメッセージＭを取得する。検証部４６は、メッセージＭから、認証子生成アルゴリズムと同様の方法により、認証子Ｔを認証子Ｔ＊として生成する。
【００７８】
（ステップＳ８２：検証処理）
検証部４６は、ステップＳ８１で生成された認証子Ｔ＊と、暗号文Ｃとともに得られた認証子Ｔとが一致するか否かを判定する。
検証部４６は、認証子Ｔ＊と認証子Ｔとが一致する場合には、メッセージＭは改ざんされていないと判定する。一方、検証部４６は、認証子Ｔ＊と認証子Ｔとが一致しない場合には、メッセージＭは改ざんされていると判定する。
【００７９】
＊＊＊実施の形態１の効果＊＊＊
以上のように、実施の形態１に係る暗号システム１では、図４を参照して説明した暗号化関数ＴＥと、図９を参照して説明した復号関数ＴＤとを用いて、認証暗号アルゴリズムを実現する。
暗号化関数ＴＥ及び復号関数ＴＤでは、初期パラメータＮに応じて鍵Ｋが計算される。つまり、鍵Ｋが初期パラメータＮに応じて変わる。そのため、鍵Ｋの推測が難しくなり、Ｔｗｅａｋａｂｌｅブロック暗号演算で呼び出されるブロック暗号の演算回数を１回としつつ、上界値εをバースデーバウンドより小さくすることが可能になる。
具体的には、ブロック暗号の総呼び出し回数をσ、１回の認証暗号アルゴリズムの演算内で呼び出されるｔｗｅａｋａｂｌｅブロック暗号の数をＬとすると、実施の形態１に係る暗号システム１によって実現される認証暗号アルゴリズムは、ε＝Ｏ（Ｌσ／２ｎ）となる。Ｌ＜σなので、この確率はバースデーバウンドより小さい値である。これにより、鍵更新の頻度を少なくすることができる。
【００８０】
また、実施の形態１に係る暗号システム１では、ハッシュ関数ｈへの入力に初期パラメータＮを含まなくてもよく、この場合、ハッシュ関数ｈへの入力が内部パラメータｃｔｒと鍵Ｋｈとだけである。内部パラメータｃｔｒは、カウンター値であり、事前に用いられる値を特定可能である。また、鍵Ｋｈは、相手側と事前に共有されているものである。
そのため、図４のステップＳ１２と図９のステップＳ２２との処理は、事前に実行しておくことが可能である。つまり、認証暗号アルゴリズムで、暗号化関数ＴＥ又は復号関数ＴＤが呼び出されてから、図４のステップＳ１２又は図９のステップＳ２２の処理を実行してハッシュ値ｍｓｋを計算するのではなく、事前にハッシュ値ｍｓｋを計算しておくことができる。
これに対して、従来のｔｗｅａｋａｂｌｅブロック暗号では、ハッシュ関数ｈへの入力に初期パラメータＮが含まれていた。初期パラメータＮは、暗号化毎に異なる値が用いられる。そのため、暗号化が実行され、初期パラメータＮの値が決められないと、ハッシュ関数ｈを計算することができなかった。
したがって、実施の形態１に係る暗号システム１では、認証暗号アルゴリズムの処理を高速化できる。また、ハッシュ関数ｈを計算するために必要なハードウェア及びソフトウェアを省略することができる。
【００８１】
＊＊＊他の構成＊＊＊
＜変形例１＞
実施の形態１では、図４から図１１を参照して説明したｔｗｅａｋａｂｌｅブロック暗号を、図１２から図２０を参照して説明した認証暗号アルゴリズムに適用した。しかし、図４から図１１を参照して説明したｔｗｅａｋａｂｌｅブロック暗号を、他の構成の認証暗号アルゴリズムに適用することも可能である。この場合にも、上述した効果が得られる可能性がある。
例えば、図４から図１１を参照して説明したｔｗｅａｋａｂｌｅブロック暗号を、特許文献５に記載された構成の認証暗号アルゴリズムに適用することが可能である。この場合、特許文献５に記載された構成の認証暗号アルゴリズムの関数Ｆ＿Ｋとして、図４から図１１を参照して説明したｔｗｅａｋａｂｌｅブロック暗号を用いればよい。
【００８２】
＜変形例２＞
上記説明では、暗号化装置１０及び復号装置３０は、各機能を実現する専用の電子回路である処理回路１１，３１を備えるとした。ここで、暗号化装置１０の各機能とは、鍵生成部２１と、ハッシュ計算部２２と、暗号化部２３と、分割部２４と、暗号文生成部２５と、認証子生成部２６と、第１置換部２７と、ブロック暗号計算部２８と、第２置換部２９との機能である。また、復号装置３０の各機能とは、第１置換部４７と、ブロック暗号計算部４８と、第２置換部４９とである。しかし、各機能は、ソフトウェアによって実現されてもよい。
【００８３】
図２１は、変形例２に係る暗号化装置１０の構成図である。
暗号化装置１０は、コンピュータである。
暗号化装置１０は、プロセッサ１２と、メモリ１３と、ストレージ１４とのハードウェアを備える。プロセッサ１１は、信号線を介して他のハードウェアと接続され、他のハードウェアを制御する。
ストレージ１４には、暗号化装置１０の各機能構成要素を実現するプログラムが記憶されている。このプログラムは、プロセッサ１２によってメモリ１３に読み込まれ、プロセッサ１２によって実行される。これにより、暗号化装置１０の各機能構成要素の機能が実現される。
【００８４】
図２２は、変形例２に係る復号装置３０の構成図である。
復号装置３０は、コンピュータである。
復号装置３０は、プロセッサ３２と、メモリ３３と、ストレージ３４とのハードウェアを備える。プロセッサ３１は、信号線を介して他のハードウェアと接続され、他のハードウェアを制御する。
ストレージ３４には、復号装置３０の各機能構成要素を実現するプログラムが記憶されている。このプログラムは、プロセッサ３２によってメモリ３３に読み込まれ、プロセッサ３２によって実行される。これにより、復号装置３０の各機能構成要素の機能が実現される。
【００８５】
プロセッサ１２，３２は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ１２，３２は、具体的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【００８６】
メモリ１３，３３は、データを一時的に記憶する記憶装置である。メモリ１３，３３は、具体例としては、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
【００８７】
ストレージ１４，３４は、データを保管する記憶装置である。ストレージ１４，３４は、具体例としては、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。また、ストレージ１３は、ＳＤ（登録商標，Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリカード、ＣＦ（ＣｏｍｐａｃｔＦｌａｓｈ）、ＮＡＮＤフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）といった可搬記憶媒体であってもよい。
【００８８】
プロセッサ１２，３２によって実現される各機能の処理の結果を示す情報とデータと信号値と変数値は、メモリ１３，３３、ストレージ１４，３４、又は、プロセッサ１２内のレジスタ又はキャッシュメモリのような記憶領域に記憶される。
【００８９】
図２１では、プロセッサ１２は、１つだけ示されていた。しかし、暗号化装置１０は、複数のプロセッサを備えてもよく、複数のプロセッサが、各機能を実現するプログラムを連携して実行してもよい。同様に、図２２では、プロセッサ３２は、１つだけ示されていた。しかし、復号装置３０は、複数のプロセッサを備えてもよく、複数のプロセッサが、各機能を実現するプログラムを連携して実行してもよい。
【００９０】
＜変形例３＞
一部の機能がハードウェアで実現され、他の機能がソフトウェアで実現されてもよい。また、各機能をファームウェアで実現してもよい。つまり、暗号化装置１０の機能構成要素のうち、一部の機能がハードウェアで実現され、他の機能がソフトウェアで実現されてもよい。また、復号装置３０の機能構成要素のうち、一部の機能がハードウェアで実現され、他の機能がソフトウェアで実現されてもよい。
【００９１】
処理回路１１，３１と、プロセッサ１２，３２と、メモリ１３，３３と、ストレージ１４，３４とを、総称して「プロセッシングサーキットリー」という。つまり、各機能構成要素の機能は、プロセッシングサーキットリーにより実現される。
【００９２】
実施の形態２．
実施の形態２では、暗号化装置１０及び復号装置３０の入力として、公開データＨが与えられる点が実施の形態１と異なる。実施の形態２では、この異なる点について説明し、同一の点については説明を省略する。
【００９３】
＊＊＊動作の説明＊＊＊
図２３から図２８を参照して、実施の形態２に係る暗号システム１の動作を説明する。
実施の形態２に係る暗号化装置１０の動作は、実施の形態２に係る暗号化方法に相当する。また、実施の形態２に係る暗号化装置１０の動作は、実施の形態２に係る暗号化プログラムの処理に相当する。
実施の形態２に係る復号装置３０の動作は、実施の形態２に係る復号方法に相当する。また、実施の形態２に係る復号装置３０の動作は、実施の形態２に係る復号プログラムの処理に相当する。
【００９４】
公開データＨは、暗号文Ｃ及び認証子Ｔとともに、暗号化装置１０から復号装置３０へ送信されるデータである。公開データＨは、暗号化はされないが、改ざんされているか否かの検証はされるデータである。そのため、暗号化装置１０は、メッセージＭと公開データＨとの改ざんの有無を検証可能な認証子Ｔを生成する。
復号装置３０は、実施の形態１で説明した通り、暗号化装置１０と同様の方法により認証子Ｔ’を生成して、認証子Ｔを検証する。これにより、メッセージＭ及び公開データＨは改ざんされていないか、メッセージＭと公開データＨとの少なくともいずれかが改ざんされているかが特定される。
【００９５】
実施の形態２では、３つの認証子Ｔの生成方法を説明する。３つの生成方法のうちいずれかの方法を用いることにより、メッセージＭと公開データＨとの改ざんの有無を検証可能な認証子Ｔを生成することができる。
【００９６】
図２３及び図２４を参照して、実施の形態２に係る認証子Ｔの生成方法１を説明する。
ステップＳ９１からステップＳ９２の処理は、図１８のステップＳ７１からステップＳ７２の処理と同じである。また、ステップＳ９５の処理は、図１８のステップＳ７４の処理と同じである。
【００９７】
（ステップＳ９３：公開データ生成処理）
認証子生成部２６は、公開データＨを入力として、疑似ランダム関数により、ｎビットの値ｗを生成する。
認証子生成部２６は、ステップＳ９２で生成されたチェックサムＣＳと値ｗとの排他的論理和を計算して、新たなチェックサムＣＳ’を生成する。又は、認証子生成部２６は、ステップＳ９２で生成されたチェックサムＣＳに値ｗを加算して、新たなチェックサムＣＳ’を生成する。
【００９８】
（ステップＳ９４：認証要素生成処理）
認証子生成部２６は、ステップＳ９３で生成された新たなチェックサムＣＳ’をメッセージｍとして入力することにより、暗号文ｃをチェックサムＣＳ’の暗号文Ｔ’として暗号化部２３に生成させる。
【００９９】
図２５及び図２６を参照して、実施の形態２に係る認証子Ｔの生成方法２を説明する。
ステップＳ１０１からステップＳ１０３の処理は、図１８のステップＳ７１からステップＳ７３の処理と同じである。
【０１００】
（ステップＳ１０４：公開データ生成処理）
認証子生成部２６は、公開データＨを入力として、疑似ランダム関数により、ｎビットの値ｗを生成する。
認証子生成部２６は、ステップＳ１０３で生成された暗号文Ｔ’と値ｗとの排他的論理和を計算して、新たな暗号文Ｔ’’を生成する。又は、認証子生成部２６は、ステップＳ１０３で生成された暗号文Ｔ’に値ｗを加算して、新たな暗号文Ｔ’’を生成する。
【０１０１】
（ステップＳ１０５：認証子生成処理）
認証子生成部２６は、ステップＳ１０４で生成された新たな暗号文Ｔ’’のうちの固定長のビットを認証子Ｔとして抽出する。
【０１０２】
図２７及び図２８と、図４及び図９とを参照して、実施の形態２に係る認証子Ｔの生成方法３を説明する。
認証子Ｔの生成方法３では、ｔｗｅａｋａｂｌｅブロック暗号方式の暗号化関数ＴＥ及び復号関数ＴＤの構成に変更を加える。
具体的には、図４のステップＳ１１で鍵生成部２１は、図２７に示すように、第１Ｔｗｅａｋ値ＴＷ１と公開データＨとに応じて鍵Ｋを生成する。同様に、図９のステップＳ２１で鍵生成部４１は、図２８に示すように、第１Ｔｗｅａｋ値ＴＷ１と公開データＨとに応じて鍵Ｋを生成する。
具体例としては、鍵生成部２１及び鍵生成部４１は、鍵Ｋｆと、第１Ｔｗｅａｋ値ＴＷ１とを入力として、鍵付き関数ｆにより、ｋビットの仮の鍵Ｋ’を生成する。鍵生成部２１及び鍵生成部４１は、仮の鍵Ｋ’と、公開データＨから計算される値ｗとの排他的論理和を計算して、鍵Ｋを生成する。
【０１０３】
なお、認証子生成部２６は、公開データＨを入力として、疑似ランダム関数により、ｎビットの値ｗを事前に生成しておく。事前にとは、第１暗号化アルゴリズムと、第２暗号化アルゴリズムと、認証子生成アルゴリズムとにおいて、暗号化関数ＴＥを用いる前である。同様に、検証部４６は、公開データＨを入力として、疑似ランダム関数により、ｎビットの値ｗを事前に生成しておく。事前にとは、第１復号アルゴリズムと、第２復号アルゴリズムと、検証アルゴリズムとにおいて、復号関数ＴＤを用いる前である。
【０１０４】
＊＊＊実施の形態２の効果＊＊＊
以上のように、実施の形態２に係る暗号システム１では、公開データＨがある場合に、公開データＨの改ざんを検出できるように認証子Ｔを生成することができる。
【０１０５】
＊＊＊他の構成＊＊＊
＜変形例４＞
実施の形態２では、認証子生成部２６及び検証部４６は、公開データＨを入力として、疑似ランダム関数により、ｎビットの値ｗを生成した。値ｗは、公開データＨから以下のように生成されてもよい。ここでは、認証子生成部２６が値ｗを生成する処理を説明するが、検証部４６が値ｗを生成する処理も同様である。
【０１０６】
図２９及び図３０を参照して、変形例４に係る値ｗの生成方法を説明する。
（ステップＳ１１１：パディング処理）
認証子生成部２６は、公開データＨがｎの倍数ビットになるように、公開データＨの後に、１と０のビット列を付加して、公開データＨ’を生成する。なお、公開データＨがｎの倍数ビットの場合には、認証子生成部２６は、公開データＨをそのまま公開データＨ’にする。
【０１０７】
（ステップＳ１１２：分割処理）
分割部２４は、ステップＳ１１１で生成された公開データＨ’を、先頭からｎビット毎に分割して、ｎビットの値Ｈ［１］，．．．，値Ｈ［ｒ］を生成する。
【０１０８】
（ステップＳ１１３：ｗ’生成処理）
認証子生成部２６は、ｉ＝１，．．．，ｒ−１の各整数ｉについて、ステップＳ１１２で分割部２４によって生成された値Ｈ［ｉ］をメッセージｍとして入力することにより、暗号文ｃを値Ｈ［ｉ］の暗号文Ｇ［ｉ］として暗号化部２３に生成させる。
具体的には、認証子生成部２６は、ｉ＝１，．．．，ｒ−１の各整数ｉについて、ステップＳ１１２で分割部２４によって生成された値Ｈ［ｉ］をメッセージｍとし、鍵ＫＣを鍵Ｋｆ及び鍵Ｋｈとし、初期パラメータＮを第１Ｔｗｅａｋ値ＴＷ１とし、内部パラメータｃｔｒ［ｉ，０］を第２Ｔｗｅａｋ値ＴＷ２として、鍵生成部２１とハッシュ計算部２２と暗号化部２３とに入力する。そして、認証子生成部２６は、ｉ＝１，．．．，ｒ−１の各整数ｉについて、値Ｈ［ｉ］と、鍵ＫＣと、初期パラメータＮｃと、内部パラメータｃｔｒ’［ｉ，０］とを入力として、鍵生成部２１とハッシュ計算部２２と暗号化部２３とに、図４に基づき説明した暗号化関数ＴＥを実行させる。この際、図４のステップＳ１３の暗号化処理としては、第１暗号化処理が用いられる。そして、暗号文生成部２５は、生成された暗号文ｃを暗号文Ｇ［ｉ］として扱う。
なお、初期パラメータＮは、ｉ＝１，．．．，ｒ−１の各整数ｉについて、共通の値である。そのため、ｉ＝１，．．．，ｒ−１の各整数ｉについて、図４に示す暗号化関数ＴＥが実行されるが、図４のステップＳ１１の鍵Ｋの生成については、ある整数ｉについてのみ実行されればよい。
認証子生成部２６は、値ｗ’の初期値をｃｏｎｓｔａｕｔｈとする。認証子生成部２６は、ｉ＝１，．．．，ｒ−１の各整数ｉについて順に、値ｗ’と暗号文Ｇ［ｉ］との排他的論理和を計算して、新たな値ｗ’を計算する。
つまり、数８である。
【数８】
0006386198.tif 000009
【０１０９】
（ステップＳ１１４：ｗ生成処理）
認証子生成部２６は、ステップＳ１１２で分割部２４によって生成された値Ｈ［ｒ］をメッセージｍとして入力することにより、暗号文ｃを値Ｈ［ｒ］の暗号文Ｇ［ｒ］として暗号化部２３に生成させる。
具体的には、認証子生成部２６は、ステップＳ１１２で分割部２４によって生成された値Ｈ［ｒ］をメッセージｍとし、鍵ＫＣを鍵Ｋｆ及び鍵Ｋｈとし、初期パラメータＮを第１Ｔｗｅａｋ値ＴＷ１とし、内部パラメータｃｔｒ［ｉ，０］を第２Ｔｗｅａｋ値ＴＷ２として、鍵生成部２１とハッシュ計算部２２と暗号化部２３とに入力する。そして、認証子生成部２６は、値Ｈ［ｒ］と、鍵ＫＣと、初期パラメータＮｃと、内部パラメータｃｔｒ’とを入力として、鍵生成部２１とハッシュ計算部２２と暗号化部２３とに、図４に基づき説明した暗号化関数ＴＥを実行させる。この際、図４のステップＳ１３の暗号化処理としては、第１暗号化処理が用いられる。そして、暗号文生成部２５は、生成された暗号文ｃを暗号文Ｇ［ｒ］として扱う。
なお、（１）公開データＨがｎの倍数ビットである場合、内部パラメータｃｔｒ’として、内部パラメータｃｔｒ’［ｒ，０］が用いられる。（２）公開データＨがｎの倍数ビットでない場合、内部パラメータｃｔｒ’として、内部パラメータｃｔｒ’［ｒ，０］とは異なる内部パラメータｃｔｒ［ｒ，１］が用いられる。
また、暗号文Ｇ［ｒ］を生成する場合には、暗号文Ｇ［ｉ］を生成する際に生成された鍵Ｋを用いればよい。したがって、図４のステップＳ１１の鍵Ｋの生成については、実行しなくてもよい。
認証子生成部２６は、値ｗ’と暗号文Ｇ［ｒ］との排他的論理和を計算して、値ｗを計算する。
つまり、数９である。
【数９】
0006386198.tif 000010
【０１１０】
なお、ステップＳ１１３及びステップＳ１１４では、初期パラメータＮｃに代えて初期パラメータＮが用いられてもよい。また、ステップＳ１１３及びステップＳ１１４では、図４のステップＳ１３の暗号化処理として第２暗号化処理が用いられてもよい。
【符号の説明】
【０１１１】
１  暗号システム、１０  暗号化装置、１１  処理回路、１２  プロセッサ、１３  メモリ、１４  ストレージ、２１  鍵生成部、２２  ハッシュ計算部、２３  暗号化部、２４  分割部、２５  暗号文生成部、２６  認証子生成部、２７  第１置換部、２８  ブロック暗号計算部、２９  第２置換部、３０  復号装置、３１  処理回路、３２  プロセッサ、３３  メモリ、３４  ストレージ、４１  鍵生成部、４２  ハッシュ計算部、４３  復号部、４４  分割部、４５  平文生成部、４６  検証部、４７  第１置換部、４８  ブロック暗号計算部、４９  第２置換部。
【要約】
暗号化装置（１０）は、認証暗号における暗号化装置である。鍵生成部（２１）は、初期パラメータＮに応じてブロック暗号の暗号化関数Ｅの鍵Ｋを生成する。ハッシュ計算部（２２）は、内部パラメータｃｔｒを入力としてハッシュ値ｍｓｋを計算する。暗号化部（２３）は、鍵生成部（２１）によって生成された鍵Ｋと、ハッシュ計算部（２２）によって計算されたハッシュ値ｍｓｋと、メッセージｍとを入力として、暗号化関数Ｅを用いて、メッセージｍの暗号文ｃを生成する。【図１】
0006386198.tif 000011
【図２】
0006386198.tif 000012
【図３】
0006386198.tif 000013
【図４】
0006386198.tif 000014
【図５】
0006386198.tif 000015
【図６】
0006386198.tif 000016
【図７】
0006386198.tif 000017
【図８】
0006386198.tif 000018
【図９】
0006386198.tif 000019
【図１０】
0006386198.tif 000020
【図１１】
0006386198.tif 000021
【図１２】
0006386198.tif 000022
【図１３】
0006386198.tif 000023
【図１４】
0006386198.tif 000024
【図１５】
0006386198.tif 000025
【図１６】
0006386198.tif 000026
【図１７】
0006386198.tif 000027
【図１８】
0006386198.tif 000028
【図１９】
0006386198.tif 000029
【図２０】
0006386198.tif 000030
【図２１】
0006386198.tif 000031
【図２２】
0006386198.tif 000032
【図２３】
0006386198.tif 000033
【図２４】
0006386198.tif 000034
【図２５】
0006386198.tif 000035
【図２６】
0006386198.tif 000036
【図２７】
0006386198.tif 000037
【図２８】
0006386198.tif 000038
【図２９】
0006386198.tif 000039
【図３０】
0006386198.tif 000040