(57)【要約】  本発明は、平文長に対する暗号文長の帯域（長さ）の増加が小さい認証暗号を、効率よく実現する情報処理装置を提供する。その情報処理装置は、平文を入力する平文入力部と、初期ベクトルを生成する初期ベクトル生成部と、初期ベクトルを共通鍵ブロック暗号化して暗号化初期ベクトルを生成する共通鍵ブロック暗号化部と、暗号化初期ベクトルを入力として、平文と同じ長さの擬似乱数系列を生成する擬似乱数生成部と、擬似乱数系列と平文とを排他的論理和した暗号文の第１部分を入力としてハッシュ値を生成する鍵付きハッシュ部と、ハッシュ値と暗号化初期ベクトルとを排他的論理和した暗号文の第２部分と第１部分とを連結して暗号文として出力する暗号文出力部と、を備える。
2016027454.tif 000002
【特許請求の範囲】
【請求項１】
平文を入力する平文入力手段と、
初期ベクトルを生成する初期ベクトル生成手段と、
前記初期ベクトルを共通鍵ブロック暗号化して暗号化初期ベクトルを生成する共通鍵ブロック暗号化手段と、
前記暗号化初期ベクトルを入力として、前記平文と同じ長さの擬似乱数系列を生成する擬似乱数生成手段と、
前記擬似乱数系列と前記平文とを排他的論理和した暗号文の第１部分を入力としてハッシュ値を生成する鍵付きハッシュ手段と、
前記ハッシュ値と前記暗号化初期ベクトルとを排他的論理和した前記暗号文の第２部分と前記第１部分とを連結して暗号文として出力する暗号文出力手段と、
を備える情報処理装置。
【請求項２】
平文を入力する平文入力ステップと、
初期ベクトルを生成する初期ベクトル生成ステップと、
前記初期ベクトルを共通鍵ブロック暗号化して暗号化初期ベクトルを生成する共通鍵ブロック暗号化ステップと、
前記暗号化初期ベクトルを入力として、前記平文と同じ長さの擬似乱数系列を生成する擬似乱数生成ステップと、
前記擬似乱数系列と前記平文とを排他的論理和した暗号文の第１部分を入力としてハッシュ値を生成する鍵付きハッシュステップと、
前記ハッシュ値と前記暗号化初期ベクトルとを排他的論理和した前記暗号文の第２部分と前記第１部分とを連結して暗号文として出力する暗号文出力ステップと、
をコンピュータに実行させる情報処理装置の制御プログラムを記録したコンピュータ読み取り可能な非一時的記録媒体。
【請求項３】
平文を入力する平文入力手段と、
初期ベクトルを生成する初期ベクトル生成手段と、
前記平文を入力として、ハッシュ値を生成する鍵付きハッシュ手段と、
前記初期ベクトルと前記ハッシュ値とを排他的論理和したマスク付き初期ベクトルを共通鍵ブロック暗号化し、暗号文の第２部分を生成する共通鍵ブロック暗号化手段と、
前記第２部分を入力として、前記平文と同じ長さの擬似乱数系列を生成する擬似乱数生成手段と、
前記擬似乱数系列と前記平文とを排他的論理和した前記暗号文の第１部分と前記第２部分とを連結して暗号文として出力する暗号文出力手段と、
を備える情報処理装置。
【請求項４】
平文を入力する平文入力ステップと、
初期ベクトルを生成する初期ベクトル生成ステップと、
前記平文を入力として、ハッシュ値を生成する鍵付きハッシュステップと、
前記初期ベクトルと前記ハッシュ値とを排他的論理和したマスク付き初期ベクトルを共通鍵ブロック暗号化し、暗号文の第２部分を生成する共通鍵ブロック暗号化ステップと、
前記第２部分を入力として、前記平文と同じ長さの擬似乱数系列を生成する擬似乱数生成ステップと、
前記擬似乱数系列と前記平文とを排他的論理和した前記暗号文の第１部分と前記第２部分とを連結して暗号文として出力する暗号文出力ステップと、
をコンピュータに実行させる情報処理装置の制御プログラムを記録したコンピュータ読み取り可能な非一時的記録媒体。
【請求項５】
暗号文を入力して、前記暗号文を第１部分と第２部分とに分離して出力する暗号文入力手段と、
前記第１部分を入力として、ハッシュ値を生成する鍵付きハッシュ手段と、
前記ハッシュ値と前記暗号文の第２部分とを排他的論理和して得た暗号化初期ベクトルを入力として、前記第１部分と同じ長さの擬似乱数系列を生成する擬似乱数生成手段と、
前記暗号化初期ベクトルを共通鍵ブロック復号して、初期ベクトルを生成する共通鍵ブロック復号手段と、
前記復号された初期ベクトルと初期ベクトル期待値とを入力し、前記復号された初期ベクトルと前記初期ベクトル期待値とが一致するか否かを検査する初期ベクトル検査手段と、
前記復号された初期ベクトルと前記初期ベクトル期待値とが一致する場合に、前記擬似乱数系列と前記第１部分とを排他的論理和して得た平文を出力する平文出力手段と、
を備える情報処理装置。
【請求項６】
暗号文を入力して、前記暗号文を第１部分と第２部分とに分離して出力する暗号文入力ステップと、
前記第１部分を入力として、ハッシュ値を生成する鍵付きハッシュステップと、
前記ハッシュ値と前記第２部分とを排他的論理和して得た暗号化初期ベクトルを入力として、前記第１部分と同じ長さの擬似乱数系列を生成する擬似乱数生成ステップと、
前記暗号化初期ベクトルを共通鍵ブロック復号して、初期ベクトルを生成する共通鍵ブロック復号ステップと、
前記生成された初期ベクトルと初期ベクトル期待値とを入力し、前記復号された初期ベクトルと前記初期ベクトル期待値とが一致するか否かを検査する初期ベクトル検査ステップと、
前記復号された初期ベクトルと前記初期ベクトル期待値とが一致する場合に、前記擬似乱数系列と前記第１部分とを排他的論理和して得た平文を出力する平文出力ステップと、
をコンピュータに実行させる情報処理装置の制御プログラムを記録したコンピュータ読み取り可能な非一時的記録媒体。
【請求項７】
暗号文を入力して、前記暗号文を第１部分と第２部分とに分離して出力する暗号文入力手段と、
前記第２部分を入力として、前記第１部分と同じ長さの擬似乱数系列を生成する擬似乱数生成手段と、
前記第２部分を共通鍵ブロック復号し、マスク付き初期ベクトルを生成する共通鍵ブロック復号手段と、
前記擬似乱数系列と前記第１部分とを排他的論理和して得た平文を入力として、ハッシュ値を生成する鍵付きハッシュ手段と、
前記ハッシュ値と前記マスク付き初期ベクトルとを排他的論理和して復号された初期ベクトルと、初期ベクトル期待値とを入力し、前記復号された初期ベクトルと前記初期ベクトル期待値とが一致するか否かを検査する初期ベクトル検査手段と、
前記復号された初期ベクトルと前記初期ベクトル期待値とが一致する場合に、前記平文を出力する平文出力手段と、
を備える情報処理装置。
【請求項８】
暗号文を入力して、前記暗号文を第１部分と第２部分とに分離して出力する暗号文入力ステップと、
前記第２部分を入力として、前記第１部分と同じ長さの擬似乱数系列を生成する擬似乱数生成ステップと、
前記第２部分を共通鍵ブロック復号し、マスク付き初期ベクトルを生成する共通鍵ブロック復号ステップと、
前記擬似乱数系列と前記第１部分とを排他的論理和して得た平文を入力として、ハッシュ値を生成する鍵付きハッシュステップと、
前記ハッシュ値と前記マスク付き初期ベクトルとを排他的論理和して復号された初期ベクトルと、初期ベクトル期待値とを入力し、前記復号された初期ベクトルと前記初期ベクトル期待値とが一致するか否かを検査する初期ベクトル検査ステップと、
前記復号された初期ベクトルと前記初期ベクトル期待値とが一致する場合に、前記平文を出力する平文出力ステップと、
をコンピュータに実行させる情報処理装置の制御プログラムを記録したコンピュータ読み取り可能な非一時的記録媒体。
【請求項９】
平文と、過去の値と重複がないように生成された初期ベクトルとに基づいて暗号文を生成する認証暗号化方法であって、
前記初期ベクトルを元に共通鍵ブロック暗号化を行ない、暗号化初期ベクトルを生成し、
前記平文から前記暗号文の第１部分を生成するため、前記平文と排他的論理和する擬似乱数を、前記暗号化初期ベクトルを元に生成し、
前記初期ベクトルから前記暗号文の第２部分を生成するため、前記暗号化初期ベクトルの生成における前記初期ベクトルの共通鍵ブロック暗号化に加えて前記初期ベクトルと排他的論理和する鍵付きハッシュ値を、前記平文を元に生成する、
認証暗号化方法。
【請求項１０】
暗号文から、前記暗号文の元となった平文と、前記暗号文の生成に使用された初期ベクトルとを復号する認証復号方法であって、
前記暗号文の第１部分から前記平文を復号するため、前記第１部分と排他的論理和する擬似乱数を、前記暗号文の第２部分を元に生成し、
前記暗号文の第２部分を元に共通鍵ブロック復号を行ない、
前記暗号文の第２部分から前記初期ベクトルを復号するため、前記共通鍵ブロック復号における前記第２部分の共通鍵ブロック復号に加えて前記第２部分と排他的論理和する鍵付きハッシュ値を、前記第１部分を元に生成する、
認証復号方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、認証暗号化方法、認証復号方法、情報処理装置、制御プログラム及びその制御プログラムを記録する記録媒体に関する。
【背景技術】
【０００２】
様々な暗号化に関する技術が知られている。【０００３】
特許文献１は、暗号化方法を開示する。その暗号化方法において、ブロック暗号モードの操作は、任意のブロック長のブロック暗号を実装し、常に入力の平文と同じサイズで出力暗号文を提供する。そのモードは、ディスク・ブロックの暗号化やなんらかのネットワークプロトコルなどのデータの拡張を許可されないシステムにおいて、可能な限り最高のセキュリティを提供することができる。そのモードは、暗号文ブロックを再配置することによって暗号文を操作する攻撃から保護するために使用することができる追加の入力を受け付ける。ブロック暗号のための演算のガロア/カウンタモードからの汎用ハッシュ関数は、ハードウェアとソフトウェアの効率のために実施形態で使用することができる。【０００４】
また、特許文献２は、データ配信装置を開示する。そのデータ配信装置は、暗号化データから関連付けられた非暗号化データの改ざん検知を可能とし、改ざんが認められた場合には、暗号化データの正常な復号を不能とする。そのデータ配信装置は、入力データＡと非暗号化データＢとが入力されて、非暗号化データＢから算出したハッシュ値を用いて入力データＡのブロック暗号処理を行ない、暗号化データＥ（Ａ）と非暗号化データＢとを配信する。そのデータ配信装置は、データ圧縮手段と、ブロック暗号処理手段と、データ配信手段とを含む。データ圧縮手段は、非暗号化データＢから、ハッシュ関数を用いてハッシュ値を算出する。ブロック暗号処理手段は、ハッシュ値を初期ベクトルとして、予め定められた利用モードにより、入力データＡをブロック暗号処理して暗号化データＥ（Ａ）を生成する。データ配信手段は、このブロック暗号処理手段が生成した暗号化データＥ（Ａ）と非暗号化データＢとを多重化して、ヘッダと非暗号化データＢと暗号化データＥ（Ａ）とを配信する。【０００５】
特許文献３は、暗号化方法を開示する。その暗号化方法は、平文の変化を広範囲に影響させることで暗号強度を向上させる。その暗号化方法は、以下の構成を有する。第１に、その暗号化方法は、初期ベクター１にＤＥＳ（Data Encryption Standard）暗号化を施す。第２に、その暗号化方法は、暗号化した初期ベクター１と最初の小ブロック８バイトとで排他的論理和演算を行なう。第３に、その暗号化方法は、この結果にＤＥＳ暗号化を施す。第４に、その暗号化方法は、その暗号化した結果と次の小ブロックとで排他的論理和演算を行なう。そして、第５に、その暗号化方法は、順次、同様の処理を３２回繰り返すことで、２５６バイトに対する順方向からの連鎖処理を行なう。その後、第６に、その暗号化方法は、逆方向から同様の連鎖処理を行なう。第７に、その暗号化方法は、連鎖の最終小ブロックにＤＥＳ暗号化を行なう。第８に、その暗号化方法は、その暗号化した結果とこの時の先頭ブロックとで排他的論理和演算を行なう。第９に、その暗号化方法は、２５６バイト全体をバイト単位で入れ換える。さらに、第１０に、その暗号化方法は、フィードバック位置を変えて上記一連の処理を再度実行する。【０００６】
認証暗号(ＡＥ：Authenticated Encryption）とは、事前に共有された秘密鍵を用いて、平文メッセージに対して暗号化と改ざん検知用の認証タグ計算とを同時に適用する技術である。通信路にＡＥを適用することにより、盗聴に対する内容の秘匿と、不正な改ざんに対する検知が可能となり、結果として通信内容に対する強力な保護が実現される。【０００７】
このような通常の形式の認証暗号化では、平文(plaintext)Ｍの暗号化により、平文Ｍと同じ長さの暗号文（ciphertext）Ｃに加え、初期ベクトルＮとタグＴとを暗号文Ｃに連結して送信する必要がある。通常の処理では、初期ベクトルＮとタグＴも４バイトから３２バイト程度の短い値であるが、平文Ｍも同程度に短い場合などでは初期ベクトルＮとタグＴとの追加による通信帯域増加を無視することができない。このようなケースは、無線センサネットワークのデバイスなどで頻繁に見受けられ、またそのようなネットワークでは通信帯域が消費電力を左右する重要な要素であるため、帯域削減は重要な課題である。【０００８】
また、今までメッセージ認証の機能無しに暗号化を行ってきた通信路に新たにメッセージ認証機能を追加し、全体として認証暗号の機能を達成しようとする場合には、メッセージの長さに関わらずプロトコルへの変更が求められる場合がある。このような場合、実用上の困難を生じることがある。【０００９】
このような問題に対する解決方法として、非特許文献１に述べられているＡＥＲＯ(Authenticated Encryption with Replay prOtection)がある。非特許文献１のＡＥＲＯは、Ｋを鍵とした可変長入出力の擬似ランダム置換（ＷＰＲＰ：Wide pseudorandom permutation)P_Kを用いて、初期ベクトルＮと平文Ｍとを連結して得られた入力(Ｎ,Ｍ)に対し、Ｃ＝P_K(Ｎ,Ｍ)を全体の出力とするものである。ここで、“P_K”は鍵Ｋをパラメータとした関数である。暗号文Ｃの長さは初期ベクトルＮと平文Ｍとの長さの和となる。復号側では共有する鍵Ｋを用いて、暗号文ＣへP_Kの逆置換を適用して(Ｎ,Ｍ)を得たのち、復号された初期ベクトルＮが期待する値であるかどうかによって、認証チェックの正否を判定する。【００１０】
復号された初期ベクトルＮが期待する値であるかどうかを判定するためには、暗号化側が用いるべき初期ベクトルＮが復号側にあらかじめ分かっていることが必要となる。これは、初期ベクトルＮの更新に関して暗号化側と復号側で同期がとれていれば実現可能である。典型的には、復号側が直前に送られた正規の暗号文の初期ベクトルを記憶していることで達成される。この条件は、復号側でリプレイを検知して排除することが求められているケースでは自然である。【００１１】
非特許文献１では、暗号化側が送らなければならない情報は暗号文Ｃのみであり、この長さは初期ベクトルＮと平文Ｍとの長さの和となるため、暗号化による帯域の増分が初期ベクトルＮのみである。したがって、前述の一般的な認証暗号の方式と比べると、タグＴの分の帯域を無くすことが可能である。また、ＷＰＲＰの性質から、リプレイ以外の暗号文を復号すると、結果として得られる平文はそれまで全体がランダムになる。そのため、初期ベクトルが入っていた部分に関して攻撃者が特定の値に制御することは困難となり、復号側が期待する値になる確率は実質的に無視できるほど小さくなる。【００１２】
そして、非特許文献１は、特許文献１に開示されるＸＣＢ（eXtended CodeBook）モードと呼ばれるブロック暗号利用モードを、ＷＰＲＰとして用いることを提案している。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】米国特許第７，４１８，１００号明細書
【特許文献２】特開２０１１−０９１４９４号公報
【特許文献３】特開平１０−３０３８８３号公報
【非特許文献】
【００１４】
【非特許文献１】D. McGrew. Authenticated Encryption with Replay prOtection (AERO) https://tools.ietf.org/html/draft-mcgrew-aero-00
【発明の概要】
【発明が解決しようとする課題】
【００１５】
しかしながら、上述した先行技術文献に記載された技術においては、暗号化の効率が悪い場合があるという問題点がある。例えば、上記特許文献１に記載の技術では、128bitのブロック単位の分割を用いる場合、ＸＢＣモードではｍブロックの平文Ｍについて３パスの処理で構成されている。最初のパスと最後のパスとはＧＦ（Galois Field）(２128)上の多項式ハッシュ（polynomial hash over ＧＦ(２128))であるＧＨＡＳＨを実行する。また、中間のパスは128bitのブロック暗号によるカウンタモード暗号化を実行する。このため、通常の暗号化と比べた負荷は大きい。具体的には、入力１ブロックあたり、ブロック暗号を１回と、ＧＦ(２128)上の乗算を２回、要する。すなわち、認証暗号化による帯域増加を抑制できたが、暗号化の効率が悪くなった。【００１６】
本発明の目的は、暗号文長の平文長に対する帯域（長さ）の増加が小さい認証暗号を、効率よく実現する技術を提供することにある。
【課題を解決するための手段】
【００１７】
上記目的を達成するため、本発明の一様態に係る情報処理装置は、
平文を入力する平文入力手段と、
初期ベクトルを生成する初期ベクトル生成手段と、
前記初期ベクトルを共通鍵ブロック暗号化して暗号化初期ベクトルを生成する共通鍵ブロック暗号化手段と、
前記暗号化初期ベクトルを入力として、前記平文と同じ長さの擬似乱数系列を生成する擬似乱数生成手段と、
前記擬似乱数系列と前記平文とを排他的論理和した暗号文の第１部分を入力としてハッシュ値を生成する鍵付きハッシュ手段と、
前記ハッシュ値と前記暗号化初期ベクトルとを排他的論理和した前記暗号文の第２部分と前記第１部分とを連結して暗号文として出力する暗号文出力手段と、
を備える。【００１８】
上記目的を達成するため、本発明の一様態に係るコンピュータ読み取り可能な非一時的記録媒体は、
平文を入力する平文入力ステップと、
初期ベクトルを生成する初期ベクトル生成ステップと、
前記初期ベクトルを共通鍵ブロック暗号化して暗号化初期ベクトルを生成する共通鍵ブロック暗号化ステップと、
前記暗号化初期ベクトルを入力として、前記平文と同じ長さの擬似乱数系列を生成する擬似乱数生成ステップと、
前記擬似乱数系列と前記平文とを排他的論理和した暗号文の第１部分を入力としてハッシュ値を生成する鍵付きハッシュステップと、
前記ハッシュ値と前記暗号化初期ベクトルとを排他的論理和した前記暗号文の第２部分と前記第１部分とを連結して暗号文として出力する暗号文出力ステップと、
をコンピュータに実行させる情報処理装置の制御プログラムを記録する。【００１９】
上記目的を達成するため、本発明の一様態に係る情報処理装置は、
平文を入力する平文入力手段と、
初期ベクトルを生成する初期ベクトル生成手段と、
前記平文を入力として、ハッシュ値を生成する鍵付きハッシュ手段と、
前記初期ベクトルと前記ハッシュ値とを排他的論理和したマスク付き初期ベクトルを共通鍵ブロック暗号化し、暗号文の第２部分を生成する共通鍵ブロック暗号化手段と、
前記第２部分を入力として、前記平文と同じ長さの擬似乱数系列を生成する擬似乱数生成手段と、
前記擬似乱数系列と前記平文とを排他的論理和した前記暗号文の第１部分と前記第２部分とを連結して暗号文として出力する暗号文出力手段と、
を備える。【００２０】
上記目的を達成するため、本発明の一様態に係るコンピュータ読み取り可能な非一時的記録媒体は、
平文を入力する平文入力ステップと、
初期ベクトルを生成する初期ベクトル生成ステップと、
前記平文を入力として、ハッシュ値を生成する鍵付きハッシュステップと、
前記初期ベクトルと前記ハッシュ値とを排他的論理和したマスク付き初期ベクトルを共通鍵ブロック暗号化し、暗号文の第２部分を生成する共通鍵ブロック暗号化ステップと、
前記第２部分を入力として、前記平文と同じ長さの擬似乱数系列を生成する擬似乱数生成ステップと、
前記擬似乱数系列と前記平文とを排他的論理和した前記暗号文の第１部分と前記第２部分とを連結して暗号文として出力する暗号文出力ステップと、
をコンピュータに実行させる情報処理装置の制御プログラムを記録する。【００２１】
上記目的を達成するため、本発明の一様態に係る情報処理装置は、
暗号文を入力して、前記暗号文を第１部分と第２部分とに分離して出力する暗号文入力手段と、
前記第１部分を入力として、ハッシュ値を生成する鍵付きハッシュ手段と、
前記ハッシュ値と前記暗号文の第２部分とを排他的論理和して得た暗号化初期ベクトルを入力として、前記第１部分と同じ長さの擬似乱数系列を生成する擬似乱数生成手段と、
前記暗号化初期ベクトルを共通鍵ブロック復号して、初期ベクトルを生成する共通鍵ブロック復号手段と、
前記復号された初期ベクトルと初期ベクトル期待値とを入力し、前記復号された初期ベクトルと前記初期ベクトル期待値とが一致するか否かを検査する初期ベクトル検査手段と、
前記復号された初期ベクトルと前記初期ベクトル期待値とが一致する場合に、前記擬似乱数系列と前記第１部分とを排他的論理和して得た平文を出力する平文出力手段と、
を備える。【００２２】
上記目的を達成するため、本発明の一様態に係るコンピュータ読み取り可能な非一時的記録媒体は、
暗号文を入力して、前記暗号文を第１部分と第２部分とに分離して出力する暗号文入力ステップと、
前記第１部分を入力として、ハッシュ値を生成する鍵付きハッシュステップと、
前記ハッシュ値と前記第２部分とを排他的論理和して得た暗号化初期ベクトルを入力として、前記第１部分と同じ長さの擬似乱数系列を生成する擬似乱数生成ステップと、
前記暗号化初期ベクトルを共通鍵ブロック復号して、初期ベクトルを生成する共通鍵ブロック復号ステップと、
前記生成された初期ベクトルと初期ベクトル期待値とを入力し、前記復号された初期ベクトルと前記初期ベクトル期待値とが一致するか否かを検査する初期ベクトル検査ステップと、
前記復号された初期ベクトルと前記初期ベクトル期待値とが一致する場合に、前記擬似乱数系列と前記第１部分とを排他的論理和して得た平文を出力する平文出力ステップと、
をコンピュータに実行させる情報処理装置の制御プログラムを記録する。【００２３】
上記目的を達成するため、本発明の一様態に係る情報処理装置は、
暗号文を入力して、前記暗号文を第１部分と第２部分とに分離して出力する暗号文入力手段と、
前記第２部分を入力として、前記第１部分と同じ長さの擬似乱数系列を生成する擬似乱数生成手段と、
前記第２部分を共通鍵ブロック復号し、マスク付き初期ベクトルを生成する共通鍵ブロック復号手段と、
前記擬似乱数系列と前記第１部分とを排他的論理和して得た平文を入力として、ハッシュ値を生成する鍵付きハッシュ手段と、
前記ハッシュ値と前記マスク付き初期ベクトルとを排他的論理和して復号された初期ベクトルと、初期ベクトル期待値とを入力し、前記復号された初期ベクトルと前記初期ベクトル期待値とが一致するか否かを検査する初期ベクトル検査手段と、
前記復号された初期ベクトルと前記初期ベクトル期待値とが一致する場合に、前記平文を出力する平文出力手段と、
を備える。【００２４】
上記目的を達成するため、本発明の一様態に係るコンピュータ読み取り可能な非一時的記録媒体は、
暗号文を入力して、前記暗号文を第１部分と第２部分とに分離して出力する暗号文入力ステップと、
前記第２部分を入力として、前記第１部分と同じ長さの擬似乱数系列を生成する擬似乱数生成ステップと、
前記第２部分を共通鍵ブロック復号し、マスク付き初期ベクトルを生成する共通鍵ブロック復号ステップと、
前記擬似乱数系列と前記第１部分とを排他的論理和して得た平文を入力として、ハッシュ値を生成する鍵付きハッシュステップと、
前記ハッシュ値と前記マスク付き初期ベクトルとを排他的論理和して復号された初期ベクトルと、初期ベクトル期待値とを入力し、前記復号された初期ベクトルと前記初期ベクトル期待値とが一致するか否かを検査する初期ベクトル検査ステップと、
前記復号された初期ベクトルと前記初期ベクトル期待値とが一致する場合に、前記平文を出力する平文出力ステップと、
をコンピュータに実行させる。【００２５】
上記目的を達成するため、本発明の一様態に係る認証暗号化方法は、
平文と、過去の値と重複がないように生成された初期ベクトルとに基づいて暗号文を生成する認証暗号化方法であって、
前記初期ベクトルを元に共通鍵ブロック暗号化を行ない、暗号化初期ベクトルを生成し、
前記平文から前記暗号文の第１部分を生成するため、前記平文と排他的論理和する擬似乱数を、前記暗号化初期ベクトルを元に生成し、
前記初期ベクトルから前記暗号文の第２部分を生成するため、前記暗号化初期ベクトルの生成における前記初期ベクトルの共通鍵ブロック暗号化に加えて前記初期ベクトルと排他的論理和する鍵付きハッシュ値を、前記平文を元に生成する。【００２６】
上記目的を達成するため、本発明の一様態に係る認証復号方法は、
暗号文から、前記暗号文の元となった平文と、前記暗号文の生成に使用された初期ベクトルとを復号する認証復号方法であって、
前記暗号文の第１部分から前記平文を復号するため、前記第１部分と排他的論理和する擬似乱数を、前記暗号文の第２部分を元に生成し、
前記暗号文の第２部分を元に共通鍵ブロック復号を行ない、
前記暗号文の第２部分から前記初期ベクトルを復号するため、前記共通鍵ブロック復号における前記第２部分の共通鍵ブロック復号に加えて前記第２部分と排他的論理和する鍵付きハッシュ値を、前記第１部分を元に生成する。
【発明の効果】
【００２７】
本発明によれば、暗号文長の平文長に対する帯域（長さ）の増加が小さい認証暗号を、効率よく実現することができる。
【図面の簡単な説明】
【００２８】
【図１】本発明の第１実施形態に係る情報処理装置の構成を示すブロック図である。
【図２】本発明の第２実施形態に係る認証暗号化システムの構成を示す図である。
【図３】第２実施形態に係る情報処理装置としての認証暗号化部の機能構成を示すブロック図である。
【図４】前提技術に係るＸＣＢモードを用いた認証暗号化部の機能構成を示すブロック図である。
【図５】第２実施形態に係る共通鍵ブロック暗号化部の構成例を示す図である。
【図６】第２実施形態に係る他の共通鍵ブロック暗号化部の構成例を示す図である。
【図７】第２実施形態に係る擬似乱数生成部の構成例を示す図である。
【図８】第２実施形態に係る鍵付きハッシュ部の構成例を示す図である。
【図９】第２実施形態に係る他の鍵付きハッシュ部の構成例を示す図である。
【図１０】第２実施形態に係る認証暗号化部のハードウェア構成を示すブロック図である。
【図１１】第２実施形態に係る認証暗号化部の処理手順を示すフローチャートである。
【図１２】第２実施形態に係る情報処理装置としての認証復号部の機能構成を示すブロック図である。
【図１３】第２実施形態に係る共通鍵ブロック復号部の構成例を示す図である。
【図１４】第２実施形態に係る初期ベクトル検査部の構成例を示す図である。
【図１５】第２実施形態に係る認証復号部のハードウェア構成を示すブロック図である。
【図１６】第２実施形態に係る認証復号部の処理手順を示すフローチャートである。
【図１７】本発明の第３実施形態に係る情報処理装置としての認証暗号化部の機能構成を示すブロック図である。
【図１８】第３実施形態に係る認証暗号化部の処理手順を示すフローチャートである。
【図１９】第３実施形態に係る情報処理装置としての認証復号部の機能構成を示すブロック図である。
【図２０】第３実施形態に係る認証復号部の処理手順を示すフローチャートである。
【発明を実施するための形態】
【００２９】
以下に、図面を参照して、本発明の実施の形態について例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素は単なる例示であり、本発明の技術範囲をそれらのみに限定する趣旨のものではない。
【００３０】
［第１実施形態］
本発明の第１実施形態としての情報処理装置１００について、図１を用いて説明する。情報処理装置１００は、平文をブロック暗号化して暗号文を生成する装置である。
【００３１】
図１に示すように、情報処理装置１００は、平文入力部１０１と、初期ベクトル生成部１０２と、共通鍵ブロック暗号化部１０３と、擬似乱数生成部１０４と、鍵付きハッシュ部１０５と、暗号文出力部１０６と、を含む。平文入力部１０１は、平文１１１を入力する。初期ベクトル生成部１０２は、初期ベクトル１１２を生成する。共通鍵ブロック暗号化部１０３は、初期ベクトル１１２を共通鍵ブロック暗号化して暗号化初期ベクトル１１３を生成する。擬似乱数生成部１０４は、暗号化初期ベクトル１１３を入力として、平文１１１と同じ長さの擬似乱数系列１１４を生成する。鍵付きハッシュ部１０５は、擬似乱数系列１１４と平文１１１とを排他的論理和（１０７）した暗号文の第１部分１１７を入力としてハッシュ値１１５を生成する。暗号文出力部１０６は、ハッシュ値１１５と暗号化初期ベクトル１１３とを排他的論理和（１０８）した暗号文の第２部分１１８と第１部分１１７とを連結して暗号文１１６として出力する。
【００３２】
本実施形態によれば、入力長１ブロックにつきブロック暗号を１回、有限体ＧＦ(２n)乗算を１回により、平文長に対する暗号文長の帯域（長さ）の増加が小さい認証暗号を、効率よく実現することができる。
【００３３】
［第２実施形態］
次に、本発明の第２実施形態に係る認証暗号化システムについて説明する。本実施形態に係る認証暗号化システムは、認証暗号化を行なう情報処理装置、認証復号を行なう情報処理装置、または、認証暗号化および認証復号を行なう情報処理装置を含む。
【００３４】
《認証暗号化システムの構成》
図２は、本実施形態に係る認証暗号化システム２００の構成を示す図である。
【００３５】
図２の認証暗号化システム２００は、情報処理装置２０２や情報処理装置２０３と、情報処理装置２０１や情報処理装置２０５と含む。情報処理装置２０２や情報処理装置２０３は、認証暗号化部２１０を含み、平文を認証暗号化した暗号文を、ネットワーク２３０を介して送信する情報処理装置２０１や情報処理装置２０５は、認証復号部２２０を含み、ネットワーク２３０を介して受信した暗号文を平文に復号する。
認証暗号化システム２００は、さらに、認証暗号化部２１０および認証復号部２２０を含み、平文を認証暗号化した暗号文を、ネットワーク２３０を介して送信すると共に、ネットワーク２３０を介して受信した暗号文を平文に復号する情報処理装置２０４を含む。
【００３６】
なお、図２においては、情報処理装置を認証暗号化部２１０や認証復号部２２０、その外の機能を有する装置として図示したが、認証暗号化部２１０や認証復号部２２０を情報処理装置としての認証暗号化装置や認証復号装置と考えることもできる。また、図２においては、認証暗号を、ネットワークを介した情報処理装置間の通信に適用する場合を図示した。しかしながら、本実施形態の認証暗号は、情報処理装置とＬＡＮ(Local Area Network)を介したデバイスとの間、あるいは、情報処理装置とデバイス（プリンタやディスプレイ、記憶媒体）との間、あるいは、デバイス間、に適用され、同様の効果を奏する。
【００３７】
《前提技術》
本実施形態の認証暗号化システム２００、認証暗号化部２１０や認証復号部２２０を詳細に説明する前に、その前提となる技術について説明する。
【００３８】
（認証暗号の基本）
最初に、認証暗号(ＡＥ)の基本的な入出力を示す。秘密鍵Ｋを共有する２者“Alice”と“Bob”を考え、AliceからBobへ認証暗号(ＡＥ)による暗号化を用いて通信するものとする。そして、認証暗号(ＡＥ)の暗号化関数をAEnc、復号関数をADecとする。また、暗号化したい平文をＭとし、さらに初期ベクトルＮと呼ばれる変数を導入する。
【００３９】
まず、Aliceが初期ベクトルＮを生成後、(Ｃ,Ｔ)＝AEnc_K(Ｎ,Ｍ)という処理を行う。ここで、“AEnc_K”は鍵Ｋをパラメータとした関数、Ｃは暗号文、Ｔはタグと呼ばれる、固定長の改ざん検出用の変数である。Aliceは(Ｎ,Ｃ,Ｔ)をBobへ送信する。
【００４０】
Bobが受信した情報を(Ｎ',Ｃ',Ｔ')とすると、Bobは復号処理としてADec_K(Ｎ',Ｃ',Ｔ')を計算する。もし通信の途中に改ざんがあり、(Ｎ',Ｃ',Ｔ')≠(Ｎ,Ｃ,Ｔ)となっていた場合、ADec_K(Ｎ',Ｃ',Ｔ')の結果は改ざんがあったことを示すエラーメッセージとなる。もし改ざんがなく、(Ｎ',Ｃ',Ｔ')＝(Ｎ,Ｃ,Ｔ)であれば、ADec_K(Ｎ',Ｃ',Ｔ')＝Ｍとなり、平文Ｍが正しく復号される。
【００４１】
このような方式の一例として、ＣＣＭ(Counter with CBC-MAC(cipher block chaining message authentication code))や、ＧＣＭ(Galois/Counter Mode)がある。ＣＣＭについては、“NIST Special Publication 800-38C Recommendation for Block Cipher Modes of Operation: The CCM Mode for Authentication and Confidentiality http://csrc.nist.gov/publications/nistpubs/800-38C/SP800-38C_updated-July20_2007.pdf”を参照されたい。以下、この文献を“文献ＣＣＭ”として参照する。また、ＧＣＭについては、“NIST Special Publication 800-38D Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC http://csrc.nist.gov/publications/nistpubs/800-38D/SP-800-38D.pdf”を参照されたい。以下、この文献を“文献ＧＣＭ”として参照する。
【００４２】
また、上記の処理においては通常暗号化で初期ベクトルＮが偶然一致してしまわないようにすることが重要であり、このために暗号化側は何らかの状態変数を保持し、初期ベクトルの一致を防ぐ。これは、典型的には、状態変数として直前に使った初期ベクトルＮを記憶しておき、毎回初期ベクトルＮをインクリメントすることで実現される。
【００４３】
ところが、上記通常の形式の認証暗号化では、平文Ｍの暗号化により、平文Ｍと同じ長さの暗号文Ｃに加え、初期ベクトルＮとタグＴとを暗号文Ｃに連結して送信する必要がある。通常の処理では、初期ベクトルＮもタグＴも４バイトから３２バイト程度の短い値であるが、平文Ｍも同程度に短い場合などでは初期ベクトルＮとタグＴとの追加による通信帯域増加を無視することができない。このようなケースは、無線センサネットワークのデバイスなどで頻繁に見受けられる。そのようなネットワークでは通信帯域が消費電力を左右する重要な要素であるため、帯域削減は重要な課題である。また、今までメッセージ認証の機能無しに暗号化を行ってきた通信路に新たにメッセージ認証機能を追加し、全体として認証暗号の機能を達成しようとする場合には、メッセージの長さに関わらずプロトコルへの変更が求められる場合がある。このような場合、実用上の困難を生じることがある。
【００４４】
（帯域削減手法）
このような帯域問題に対する解決方法として、上記非特許文献１がある。非特許文献１のＡＥＲＯは、Ｋを鍵とした可変長入出力の擬似ランダム置換（ＷＰＲＰ）P_Kを用いて、初期ベクトルＮと平文Ｍとを連結して得られた入力(Ｎ,Ｍ)に対し、Ｃ＝P_K(Ｎ,Ｍ)を全体の出力とするものである。暗号文Ｃの長さは初期ベクトルＮと平文Ｍとの長さの和となる。復号側では共有する鍵Ｋを用いて、暗号文ＣへP_Kの逆置換を適用し(Ｎ,Ｍ)を得たのち、復号された初期ベクトルＮが期待する値であるかどうかによって、認証チェックの正否を判定する。
【００４５】
復号された初期ベクトルＮが期待する値であるかどうかを判定するためには、暗号化側が用いるべき初期ベクトルＮが復号側にあらかじめ分かっていることが必要となる。これは、初期ベクトルＮの更新に関して暗号化側と復号側で同期がとれていれば実現可能である。典型的には、復号側が直前に送られた正規の暗号文の初期ベクトルを記憶していることで達成される。この条件は、復号側でリプレイを検知して排除することが求められているケースでは自然である。
【００４６】
このように、ＡＥＲＯ方式では、暗号化側が送らなければならない情報は暗号文Ｃのみであり、この長さは初期ベクトルＮと平文Ｍとの長さの和となるため、暗号化による帯域の増分が初期ベクトルのみである。したがって、前述の一般的な認証暗号の方式と比べると、タグＴの分の帯域を無くすことが可能である。また、ＷＰＲＰの性質から、リプレイ以外の暗号文を復号すると、結果として得られる平文はそれまで全体がランダムになる。このため、初期ベクトルが入っていた部分に関して攻撃者が特定の値に制御することは困難となり、復号側が期待する値になる確率は実質的に無視できるほど小さくなる。
【００４７】
（ＸＣＢモードを用いた認証暗号化）
非特許文献１のＡＥＲＯ方式は、特許文献１のようなＸＣＢモードと呼ばれるブロック暗号利用モードを、ＷＰＲＰとして用いることを提案している。128bitブロック単位の分割を用いる場合、ＸＣＢモードはｍブロックの平文Ｍについて３パスの処理で構成されている。
【００４８】
図４は、前提技術に係るＸＣＢモードを用いた認証暗号化部４００の機能構成を示すブロック図である。
【００４９】
共通鍵暗号化部Ｅ４０１で初期ベクトルＮを暗号化処理した第１中間値は、最初のパスであるＧＨａｓｈ４０２により平文Ｍから生成された多項式ハッシュと排他的論理和されて、第２中間値が生成される。第２中間値は、中間のパスであるカウンタモード暗号化４０３によりブロック暗号化される。そして、ブロック暗号化された結果は、平文Ｍと排他的論理和されて、暗号文の第１部分ＣRが生成される。一方、第２中間値は、最後のパスであるＧＨａｓｈ４０４により第１部分ＣRから生成された多項式ハッシュと排他的論理和されて、第３中間値が生成される。第３中間値は、共通鍵復号部Ｄ４０５で復号処理されて、暗号文の第２部分ＣLが生成される。
【００５０】
ここで、最初のパスと最後のパスとは、ＧＦ(２128)上の多項式ハッシュ（polynomial hash over ＧＦ(２128))であるＧＨａｓｈ４０２、４０４を実行する。また、中間のパスは、128bitブロック暗号によるカウンタモード暗号化４０３を実行する。そのため、通常の暗号化と比べた負荷は大きい。具体的には、入力１ブロック当たり、ブロック暗号を１回と、ＧＦ(２128)上の乗算を２回とを、要することになる。
【００５１】
本実施形態においては、平文長に対する暗号文長の帯域（長さ）の増加が小さい認証暗号を、効率よく実現できるよう工夫した。以下、本実施形態の認証暗号化システム２００における、認証暗号化部２１０および認証復号部２２０について詳細に説明する。以下、特に断りのない限り、１ブロックの長さをｎビットとする。
【００５２】
《認証暗号化部の機能構成》
図３は、本実施形態に係る情報処理装置としての認証暗号化部２１０の機能構成を示すブロック図である。
【００５３】
認証暗号化部２１０は、平文入力部３１１と、初期ベクトル生成部３１２と、共通鍵ブロック暗号化部３１３と、擬似乱数生成部３１４と、鍵付きハッシュ部３１５と、暗号文出力部３１６とを備える。なお、認証暗号化部２１０は、ＣＰＵ(Central Processing Unit)とメモリとディスクにより実現可能であり、各機能構成部は、プログラムをディスクに格納しておき、このプログラムをＣＰＵ上で動作させることにより実現することもできる。
【００５４】
次に、認証暗号化部２１０を構成する各機能構成部について説明する。
【００５５】
（平文入力部）
平文入力部３１１は、対象となる平文Ｍを入力する機能構成部である。これは例えば、キーボードなどの文字入力部、あるいは、平文を記憶する記憶媒体からの読み出し、あるいは、通信媒体を介した受信などにより実現される。
【００５６】
（初期ベクトル生成部）
初期ベクトル生成部３１２は、過去に生成した値とは異なる初期ベクトルを生成する機能構成部である。例えば簡単な構成としては、最初は任意の固定値を出力し、２回目以降は直前に生成した初期ベクトルの値を記憶しておき、これに“１”を加えた値を出力する構成とすればよい。この場合、最後に用いた初期ベクトルをＮとするとき、新たな初期ベクトルＮ'＝Ｎ＋１となる。このとき、更新処理は、初期ベクトル更新関数ｆ(N)＝Ｎ＋１を用いて表現できる。初期ベクトル生成においては、時間情報などの、その他の補助情報を組み合わせて生成してもよいが、この場合は補助情報が暗号化と復号側とで同期がとれているものとする。簡単のため、以降、更新は補助情報なしで、直前に用いた初期ベクトルのみから次の初期ベクトルが定まるものとするが、一般性を失うものではない。また初期ベクトルＮはｎビットであるものとするが、仮に短い場合はブロック単位となるよう適当なパディングを行うものとする。
【００５７】
（共通鍵ブロック暗号化部）
共通鍵ブロック暗号化部３１３は、１ブロックの初期ベクトルＮを暗号化し、同じ長さの暗号化された初期ベクトルＳを出力する機能構成部である。例えば、共通鍵ブロック暗号化部３１３は、ブロック暗号の暗号化関数により実現される。
【００５８】
図５は、本実施形態に係る共通鍵ブロック暗号化部３１３の構成例を示す図である。図５は、ＳＰＮ
(substitution permutation network)構造による共通鍵ブロック暗号化の場合である。
【００５９】
図５において、“Ｓu”は換字処理(substitution)を表わし、“Ｐe”は転置処理(permutation)を表わす。なお、詳細には、“NIST, "Advanced Encryption Standard (AES) ", FIPS PUB 197,http://csrc.nist.gov/publications/fips/index.html”を参照されたい。
【００６０】
図６は、本実施形態に係る他の共通鍵ブロック暗号化部６１３の構成例を示す図である。図６は、Ｆｅｉｓｔｅｌ構造による共通鍵ブロック暗号化の場合である。なお、詳細には、“青木、市川、神田、松井、盛合、中嶋、時田、「128ビットブロック暗号Camelliaアルゴリズム仕様書（第2.0版）」http://info.isl.ntt.co.jp/crypt/camellia/dl/01jspec.pdf”を参照されたい。
【００６１】
ここで、図５のＳＰＮ構造においては、暗号化と復号とで異なる処理となるが、図６のＦｅｉｓｔｅｌ構造においては、暗号化と復号とが同様の処理となる。なお、共通鍵ブロック暗号化部３１３の構成は、図５や図６に限定されるものではない。
【００６２】
（擬似乱数生成部）
擬似乱数生成部３１４は、１ブロックの暗号化初期ベクトルＳを用いて、平文Ｍと同じ長さの擬似乱数系列Ｖを生成する機能構成部である。具体的には、固定長入力、可変長出力の擬似ランダム関数である。このような関数は、例えばブロック暗号を用いる場合、修正カウンタモード（modified counter mode）や修正OFB(Output-FeedBack)モード（modified OFB mode）で生成することが可能である。
【００６３】
図７は、本実施形態に係る擬似乱数生成部３１４の構成例を示す図である。図７においては、上段が基本のカウンタモードとOFBモードの構成であり、下段が修正カウンタモードと修正OFBモードの構成である。
【００６４】
なお、詳細には、“Henri Gilbert. The Security of "One-Block-to-Many" Modes of Operation. Fast Software Encryption 2003, LNCS 2887 Springer 2003, ISBN 3-540-20449-0.”を参照されたい。以下、この文献を“文献Ｇｉｌ”として参照する。
【００６５】
擬似乱数生成部３１４において、修正カウンターモードや修正OFBモードを利用した場合、ブロック暗号のみで実現することが可能である。さらに、修正カウンターモードを利用した場合、各出力ブロック生成において並列処理が可能となる。
【００６６】
なお、擬似乱数生成部３１４としては、初期ベクトル付きのストリーム暗号を利用することも可能である。詳細には、“The eSTREAM Portfolio,http://www.ecrypt.eu.org/documents/D.SYM.10-v1.pdf”を参照された。以下、この文献を“文献eSTREAM”として参照する。
【００６７】
（鍵付きハッシュ部）
鍵付きハッシュ部３１５は、平文Ｍと、擬似乱数生成部３１４の出力する擬似乱数系列Ｖとの排他的論理和である暗号文の第１部分ＣRを入力として、鍵付きハッシュ値Ｈを出力する機能構成部である。具体的には、鍵付きハッシュ部３１５は、可変長の入力から１ブロックの出力を得る擬似ランダム関数である。例えば、ブロック暗号を用いる場合、ＣＭＡＣ(Cipher-based Message Authentication Code)や、有限体上の多項式ハッシュとブロック暗号の暗号化とを組み合わせる方法などがある。すなわち、多項式ハッシュをＦ（鍵をＬ）、ブロック暗号の暗号化関数をＥ（鍵をＫ）とすると、入力Ｘについて、E_K(F_L(X))を出力とすればよい。
【００６８】
図８は、本実施形態に係る鍵付きハッシュ部３１５の構成例を示す図である。図８は、ＣＭＡＣにおける、暗号文の第１部分ＣRがブロックサイズの整数倍の場合の構成（左図）と、整数倍でない場合の構成（右図）と、を図示している。
【００６９】
なお、ＣＭＡＣについての詳細は、“NIST Special Publication 800-38B Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication http://csrc.nist.gov/publications/nistpubs/800-38B/SP_800-38B.pdf”を参照されたい。以下、この文献を“文献ＣＭＡＣ”として参照する。
【００７０】
図９は、本実施形態に係る他の鍵付きハッシュ部８１５の構成例を示す図である。図９は、有限体上の多項式ハッシュとブロック暗号の暗号化とによる鍵付きハッシュ部８１５を図示している。図９において、“mult”はＧＦ(２128)上の乗算で、その鍵はＫ１である。また、“CIPH”はブロック暗号の暗号化関数で、その鍵はＫ２である。
【００７１】
有限体上の多項式ハッシュについては、“Daniel J. Bernstein. The Poly1305-AES Message-Authentication Code. Fast Software Encryption 2005, LNCS 3557, pp 32-49.”を参照されたい。以下、この文献を“文献Ｐｏｌｙ”として参照する。なお、文献Ｐｏｌｙにおいては、図９のGHASH部分が類似した別の関数となるが、安全性や効率などに特段変化はない。鍵付きハッシュ部８１５は、GHASHと文献Ｐｏｌｙとのいずれにおいても実施可能である。
【００７２】
（暗号文出力部）
暗号文出力部３１６は、暗号文の第２部分ＣLと第１部分ＣRとを連結して暗号文Ｃとして出力する機能構成部である。第２部分ＣLは、鍵付きハッシュ部３１５が出力するハッシュ値Ｈと、共通鍵ブロック暗号化部３１３が出力する暗号化された初期ベクトルＳとの排他的論理和である。
暗号文Ｃは、例えば、コンピュータディスプレイやプリンタなどへ出力される。
【００７３】
《認証暗号化部のハードウェア構成》
図１０は、本実施形態に係る認証暗号化部２１０のハードウェア構成を示すブロック図である。
【００７４】
図１０で、ＣＰＵ９１０は演算制御用のプロセッサであり、プログラムを実行することで図３の機能構成部を実現する。ＲＯＭ(Read Only Memory)９２０は、初期データおよびプログラムなどの固定データを記憶する。また、通信制御部９３０は、ネットワークを介して他の装置と通信する。なお、ＣＰＵ９１０は１つに限定されず、複数のＣＰＵであっても、あるいは画像処理用のＧＰＵ(Graphic Processing Unit)を含んでもよい。また、通信制御部９３０は、ＣＰＵ９１０とは独立したＣＰＵを含んで、ＲＡＭ(Random Access Memory)９４０の領域に送受信データを書き込みあるいは読み出しするのが望ましい。また、ＲＡＭ９４０とストレージ９５０との間でデータを転送するＤＭＡＣ(Direct Memory Access Controller)を設けるのが望ましい（図示なし）。したがって、ＣＰＵ９１０は、ＲＡＭ９４０にデータが受信あるいは転送されたことを認識してデータを処理する。また、ＣＰＵ９１０は、処理結果をＲＡＭ９４０に準備し、後の送信あるいは転送は通信制御部９３０やＤＭＡＣに任せる。
【００７５】
ＲＡＭ９４０は、ＣＰＵ９１０が一時記憶のワークエリアとして使用するランダムアクセスメモリである。ＲＡＭ９４０には、本実施形態の実現に必要なデータを記憶する領域が確保されている。入力平文Ｍ９４１は、認証暗号化部２１０により認証暗号化される平文である。初期ベクトルＮ９４２は、過去の値と重複がないように生成されたデータである。暗号化された初期ベクトルＳ９４３は、初期ベクトルＮ９４２を共通鍵ブロック暗号化したデータである。擬似乱数系列Ｖ９４４は、暗号化された初期ベクトルＳ９４３に基づいて生成された擬似乱数である。ハッシュ値Ｈ９４５は、暗号文の第１部分ＣRに基づいて生成されたハッシュ値である。ハッシュ値Ｈと暗号化初期ベクトルＳとの排他的論理和ＣL９４６は、暗号文の第２部分ＣLである。平文Ｍと擬似乱数系列Ｖとの排他的論理和ＣR９４７は、暗号文の第１部分ＣRである。出力暗号文Ｃは、暗号文の第１部分ＣRと第２部分ＣLとを連結して生成された暗号文である。
【００７６】
ストレージ９５０には、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶されている。共通鍵ブロック暗号化アルゴリズム９５１は、本実施形態で使用される共通鍵ブロック暗号化のアルゴリズムである。擬似乱数生成アルゴリズム９５２は、本実施形態で使用される擬似乱数生成のアルゴリズムである。鍵付きハッシュアルゴリズム９５３は、本実施形態で使用される鍵付きハッシュのアルゴリズムである。ストレージ９５０には、以下のプログラムが格納される。認証暗号化プログラム９５４は、認証暗号化処理の全体を制御するプログラムである。共通鍵ブロック暗号化モジュール９５５は、共通鍵ブロック暗号化アルゴリズム９５１に従って共通鍵ブロック暗号化を実行するモジュールである。擬似乱数生成モジュール９５６は、擬似乱数生成アルゴリズム９５２に従って擬似乱数生成を実行するモジュールである。鍵付きハッシュモジュール９５７は、鍵付きハッシュアルゴリズム９５３に従って鍵付きハッシュの生成を実行するモジュールである。
【００７７】
なお、図１０のＲＡＭ９４０やストレージ９５０には、認証暗号化部２１０が含む汎用の機能や他の実現可能な機能に関連するプログラムやデータは図示されていない。さらに、認証暗号化部２１０を含む情報処理装置が含む汎用の機能や他の実現可能な機能に関連するプログラムやデータも図示されていない。
【００７８】
《認証暗号化部の処理手順》
図１１は、本実施形態に係る認証暗号化部２１０の処理手順を示すフローチャートである。このフローチャートは、図１０のＣＰＵ９１０がＲＡＭ９４０を使用して実行し、図３の機能構成部を実現する。なお、認証暗号化の処理順序は図１１に限定されない。
【００７９】
認証暗号化部２１０は、ステップＳ１００１において、対象となる平文Ｍを入力し、初期ベクトルＮを生成する。次に、認証暗号化部２１０は、ステップＳ１００３において、初期ベクトルＮを共通鍵ブロック暗号化し、同じ長さの暗号化された初期ベクトルＳを得る。次に、認証暗号化部２１０は、ステップＳ１００５において、暗号化された初期ベクトルＳを入力とした擬似ランダム関数の出力である擬似乱数系列Ｖを得る。
【００８０】
次に、認証暗号化部２１０は、ステップＳ１００７において、擬似乱数系列Ｖと平文Ｍとの排他的論理和を暗号文の左端外のブロック（第１部分ＣR）とする。次に、認証暗号化部２１０は、ステップＳ１００９において、第１部分ＣRから鍵付きハッシュＨを生成し、得られた１ブロックの鍵付きハッシュＨと暗号化された初期ベクトルＳとの排他的論理和を暗号文の左端ブロック（第２部分ＣL）とする。次に、認証暗号化部２１０は、ステップＳ１０１１において、第２部分ＣLと第１部分ＣRとを連結して暗号文Ｃを求める。そして、最後に、認証暗号化部２１０は、ステップＳ１０１３において、得られた暗号文Ｃを出力する。なお、第２部分ＣLは左端である必要はなく、暗号文の一端であるのが望ましい。
【００８１】
《認証復号部の機能構成》
図１２は、本実施形態に係る情報処理装置としての認証復号部２２０の機能構成を示すブロック図である。
【００８２】
認証復号部２２０は、暗号文入力部１１０１と、鍵付きハッシュ部１１０２と、擬似乱数生成部１１０３と、共通鍵ブロック復号部１１０４と、初期ベクトル検査部１１０５と、平文出力部１１０６と、を備える。なお、認証復号部２２０は、ＣＰＵとメモリとディスクにより実現可能であり、各機能構成部は、プログラムをディスクに格納しておき、このプログラムをＣＰＵ上で動作させることにより実現することもできる。
【００８３】
次に、認証復号部２２０を構成する各機能構成部について説明する。
【００８４】
（暗号文入力部）
暗号文入力部１１０１は、対象となる暗号文を入力する機能構成部である。これは例えば、キーボードなどの文字入力部、あるいは、平文を記憶する記憶媒体からの読み出し、あるいは、通信媒体を介した受信などにより実現される。そして、暗号文入力部１１０１は、暗号文Ｃを第１部分ＣRと第２部分ＣLとに分離して出力する。例えば、第２部分ＣLを暗号文の左端の１ブロックとし、第１部分ＣRは暗号文の左端外の全ブロックとする。
【００８５】
（鍵付きハッシュ部）
鍵付きハッシュ部１１０２は、第１部分ＣRを入力とし、１ブロックの鍵付きハッシュ値Ｈを出力する機能構成部である。具体的には、鍵付きハッシュ部１１０２は、可変長の入力から１ブロックの出力を得る擬似ランダム関数であり、認証暗号化部２１０の鍵付きハッシュ部３１５と同様の機能構成部で実現できる。
【００８６】
（擬似乱数生成部）
擬似乱数生成部１１０３は、鍵付きハッシュ部１１０２の出力するハッシュ値Ｈと、暗号文の第２部分ＣLとの排他的論理和による暗号化初期ベクトルＳを入力とし、第１部分ＣRと同じ長さの擬似乱数系列Ｖを生成する機能構成部である。具体的には、擬似乱数生成部１１０３は、固定長入力、可変長出力の擬似ランダム関数であり、認証暗号化部２１０の擬似乱数生成部３１４と同様の機能構成部で実現できる。
【００８７】
（共通鍵ブロック復号部）
共通鍵ブロック復号部１１０４は、暗号化初期ベクトルＳを復号して初期ベクトルＮを得る機能構成部である。具体的には、共通鍵ブロック復号部１１０４は、認証暗号化部２１０の共通鍵ブロック暗号化部３１３で用いたブロック暗号に対応する復号関数により実現できる。
【００８８】
図１３は、本実施形態に係る共通鍵ブロック復号部１１０４の構成例を示す図である。図１３は、ＳＰＮ構造による共通鍵ブロック復号の場合である。
【００８９】
図１３において、“Ｓu-1”は逆換字処理を表わし、“Ｐe-1”は逆転置処理を表わす。
【００９０】
なお、Ｆｅｉｓｔｅｌ構造による共通鍵ブロック復号は、鍵を逆順にするのみで、共通鍵ブロック符号化と同様であるので、図示は省略する。また、共通鍵ブロック復号部１１０４は、共通鍵ブロック暗号化部３１３に対応するものであればよく、限定はされない。
【００９１】
（初期ベクトル検査部）
初期ベクトル検査部１１０５は、以下の機能構成部である。第1に、初期ベクトル検査部１１０５は、共通鍵ブロック復号部１１０４が出力する初期ベクトルＮと、暗号文Ｃに対して復号側が期待する初期ベクトル期待値Ｎ*とを比較検証する。第２に、初期ベクトル検査部１１０５は、検証結果を２値表現したＢ（検証合格ならＡＣＫ(Acknowledge)、検証失敗ならＮＡＣＫ(Negative-ACK)）と、次回の暗号文の復号に用いる初期ベクトル期待値Ｎ*newとを出力する。復号された初期ベクトルＮと初期ベクトル期待値Ｎ*とが一致した場合にＢ＝ＡＣＫ、一致しない場合にＢ＝ＮＡＣＫとする。また、暗号化側が用いる初期ベクトルの更新関数がｆであるとすると、Ｂ＝ＡＣＫの場合にはＮ*new＝ｆ(Ｎ)と更新し、Ｂ＝ＮＡＣＫの場合には更新せずにＮ*new＝Ｎ*とする。
【００９２】
図１４は、本実施形態に係る初期ベクトル検査部１１０５の構成例を示す図である。
【００９３】
初期ベクトル検査部１１０５は、初期ベクトル期待値保持部１３０１と、初期ベクトル比較部１３０２と、初期ベクトル期待値更新部１３０３と、を備える。
【００９４】
初期ベクトル期待値保持部１３０１は、最初の初期ベクトル期待値Ｎ*を保持すると共に、それ以降は初期ベクトル期待値更新部１３０３の出力を保持する。なお、最初の初期ベクトル期待値Ｎ*は外部から入力あるいは受信されても、あらかじめ鍵などと同様に保持されていてもよい。初期ベクトル比較部１３０２は、初期ベクトル期待値保持部１３０１が保持する現在の初期ベクトル期待値Ｎ*と、共通鍵ブロック復号部１１０４の出力である復号された初期ベクトルＮとを比較する。次に、初期ベクトル比較部１３０２は、その比較の検証結果Ｂとして、一致すればＡＣＫを出力し、一致しなければＮＡＣＫを出力する。初期ベクトル期待値更新部１３０３は、検証結果Ｂ＝ＡＣＫの場合は、初期ベクトル期待値Ｎ*を＋１して初期ベクトル期待値保持部１３０１に出力する。一方、検証結果Ｂ＝ＮＡＣＫの場合は、現在の初期ベクトル期待値Ｎ*をそのまま初期ベクトル期待値保持部１３０１に出力して初期ベクトル期待値Ｎ*を維持する。
【００９５】
ここで、更新関数ｆは、典型的にはインクリメント関数ｆ(N)＝Ｎ＋１である。なお、比較検証の方法は、通信路上のパケットロスなどの情報消失に対応する場合、一致の検証だけでなく、閾値ｔを設けてＮとＮ*との絶対値差がｔ以内であるかどうかで検証結果Ｂを定めるとしてもよい。この場合、改ざんを行う攻撃者の成功確率、すなわち不正な暗号文を復号したときの初期ベクトルＮの値が偶然Ｎ*と近い値になる確率は、およそｔ／２nとなる。このため、ｔを十分小さくとることで、情報消失に対応しつつ、改ざんを高い確率で検知することが可能となる。
【００９６】
（平文出力部）
平文出力部１１０６は、以下の機能構成部である。平文出力部１１０６は、擬似乱数生成部１１０３の出力である擬似乱数系列Ｖと、暗号文Ｃの第１部分ＣR（暗号文Ｃの左端以外の全ブロック）との排他的論理和を平文Ｍとして、及び初期ベクトル検査部１１０５が出力する検証結果Ｂを、入力する。そして、平文出力部１１０６は、平文出力を許可する信号であるＢ＝ＡＣＫであった場合には、検証成功として平文Ｍを、例えばコンピュータディスプレイやプリンタなどへ出力する。一方、平文出力を停止する信号であるＢ＝ＮＡＣＫであった場合には、平文出力部１１０６は、検証失敗としてエラーメッセージを出力する。
【００９７】
《認証復号部のハードウェア構成》
図１５は、本実施形態に係る認証復号部２２０のハードウェア構成を示すブロック図である。
【００９８】
図１５で、ＣＰＵ１４１０は演算制御用のプロセッサであり、プログラムを実行することで図１２の機能構成部を実現する。ＲＯＭ１４２０は、初期データおよびプログラムなどの固定データを記憶する。また、通信制御部１４３０は、ネットワークを介して他の装置と通信する。なお、ＣＰＵ１４１０は１つに限定されず、複数のＣＰＵであっても、あるいは画像処理用のＧＰＵを含んでもよい。また、通信制御部１４３０は、ＣＰＵ１４１０とは独立したＣＰＵを含んで、ＲＡＭ１４４０の領域に送受信データを書き込みあるいは読み出しするのが望ましい。また、ＲＡＭ１４４０とストレージ１４５０との間でデータを転送するＤＭＡＣを設けるのが望ましい（図示なし）。したがって、ＣＰＵ１４１０は、ＲＡＭ１４４０にデータが受信あるいは転送されたことを認識してデータを処理する。また、ＣＰＵ１４１０は、処理結果をＲＡＭ１４４０に準備し、後の送信あるいは転送は通信制御部１４３０やＤＭＡＣに任せる。
【００９９】
ＲＡＭ１４４０は、ＣＰＵ１４１０が一時記憶のワークエリアとして使用するランダムアクセスメモリである。ＲＡＭ１４４０には、本実施形態の実現に必要なデータを記憶する領域が確保されている。入力暗号文Ｃ１４４１は、認証復号部２２０により認証復号される暗号文である。入力暗号文Ｃ１４４１は、第２部分（左端ブロック）ＣLと第１部分（左端外のブロック）ＣRとに分離されて読み出される。ハッシュ値Ｈ１４４２は、暗号文の第１部分ＣRに基づいて生成されたハッシュ値である。第２部分ＣLとハッシュ値Ｈとの排他的論理和Ｓ１４４３は、暗号化された初期ベクトルに対応するデータである。擬似乱数系列Ｖ１４４４は、排他的論理和Ｓ１４４３に基づいて生成された擬似乱数である。第１部分ＣＲと擬似乱数Ｖとの排他的論理和Ｍ１４４５は、復号された平文候補である。復号された初期ベクトルＮ１４４６は、排他的論理和Ｓ１４４３から共通鍵ブロック復号された初期ベクトルＮである。初期ベクトル期待値Ｎ*１４４７は、入力暗号文Ｃ１４４１から復号される初期ベクトルの期待値である。初期ベクトル検証結果Ｂ１４４８は、復号された初期ベクトルＮ１４４６と初期ベクトル期待値Ｎ*１４４７とが一致するか否かの検証結果である。出力平文Ｍ１４４９は、初期ベクトル検証結果Ｂ１４４８が一致（ＡＣＫ）の場合に出力される平文である。
【０１００】
ストレージ１４５０には、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶されている。共通鍵ブロック復号アルゴリズム１４５１は、本実施形態で使用される共通鍵ブロック復号のアルゴリズムである。擬似乱数生成アルゴリズム９５２は、本実施形態で使用される擬似乱数生成のアルゴリズムであり、認証暗号化部２１０と同様である。鍵付きハッシュアルゴリズム９５３は、本実施形態で使用される鍵付きハッシュのアルゴリズムであり、認証暗号化部２１０と同様である。ストレージ１４５０には、以下のプログラムが格納される。認証復号プログラム１４５４は、認証復号処理の全体を制御するプログラムである。共通鍵ブロック復号モジュール１４５５は、共通鍵ブロック復号アルゴリズム１４５１に従って共通鍵ブロック復号を実行するモジュールである。擬似乱数生成モジュール９５６は、擬似乱数生成アルゴリズム９５２に従って擬似乱数生成を実行するモジュールであり、認証暗号化部２１０と同様である。鍵付きハッシュモジュール９５７は、鍵付きハッシュアルゴリズム９５３に従って鍵付きハッシュの生成を実行するモジュールであり、認証暗号化部２１０と同様である。初期ベクトル検査モジュール１４５８は、暗号文から復号された初期ベクトルと初期ベクトル期待値とを照合し、一致するか否かに対応する処理を行なうモジュールである。
【０１０１】
なお、図１５のＲＡＭ１４４０やストレージ１４５０には、認証復号部２２０が含む汎用の機能や他の実現可能な機能に関連するプログラムやデータは図示されていない。さらに、認証復号部２２０を含む情報処理装置が含む汎用の機能や他の実現可能な機能に関連するプログラムやデータも図示されていない。
【０１０２】
《認証復号部の処理手順》
図１６は、本実施形態に係る認証復号部２２０の処理手順を示すフローチャートである。このフローチャートは、図１５のＣＰＵ１４１０がＲＡＭ１４４０を使用して実行し、図１２の機能構成部を実現する。なお、認証復号の処理順序は図１６に限定されない。
【０１０３】
認証復号部２２０は、ステップＳ１５０１において、対象となる暗号文Ｃを入力する。次に、認証復号部２２０は、ステップＳ１５０３において、暗号文Ｃを第２部分（左端のブロック）ＣLと、第１部分（左端以外の全ブロック）ＣRとに分割する。そして、認証復号部２２０は、第１部分ＣRから鍵付きハッシュを生成し、得られた１ブロックのハッシュ値Ｈと第２部分ＣLとの排他的論理和をとり、暗号化初期ベクトルＳを得る。次に、認証復号部２２０は、ステップＳ１５０５において、暗号化初期ベクトルＳを入力とした擬似ランダム関数の出力である擬似乱数系列Ｖを得る。
【０１０４】
次に、認証復号部２２０は、ステップＳ１５０７において、擬似乱数系列Ｖと第１部分ＣRとの排他的論理和を復号結果の平文Ｍの候補とする。次に、認証復号部２２０は、ステップＳ１５０９において、暗号化初期ベクトルＳを共通鍵ブロック復号し、同じ長さの初期ベクトルＮを復号する。
【０１０５】
次に、認証復号部２２０は、ステップＳ１５１１において、暗号文Ｃから復号した初期ベクトルＮと初期ベクトル期待値Ｎ*とを比較する。比較結果により、ＮとＮ*とが一致するならば、暗号化側の初期ベクトル更新関数ｆを用いて、次回の復号で用いる初期ベクトル期待値Ｎ*newをf(Ｎ)に更新し、検証結果Ｂ＝ＡＣＫとする。一方、一致しない場合は、Ｎ*newはＮ*そのままとし、Ｂ＝ＮＡＣＫとする。最後に、認証復号部２２０は、ステップＳ１５１３において、検証結果Ｂ＝ＡＣＫの場合に、復号された平文Ｍを出力し、Ｂ＝ＮＡＣＫの場合に、検証失敗を示すエラーメッセージを出力する。
【０１０６】
以上、本実施形態においては、認証暗号化部２１０と認証復号部２２０とを独立に説明した。なお、認証暗号化部２１０と認証復号部２２０とを共に含む図２の情報処理装置２０４であれば、擬似乱数生成部（擬似乱数生成モジュール）や鍵付きハッシュ部（鍵付きハッシュモジュール）は、暗号化と復号とで共有できる。さらに、Ｆｅｉｓｔｅｌ構造であれば、共通鍵ブロック暗号化部（共通鍵ブロック暗号化モジュール）と共通鍵ブロック復号部（共通鍵ブロック復号モジュール）とを、暗号化と復号とで共有できる。また、排他的論理和を行なう機能構成も、平文と暗号文の第１部分との間で相互に変換する変換部として、あるいは、暗号化初期ベクトルと暗号文の第２部分との間で相互に変換する変換部として、共有できる。
【０１０７】
本実施形態によれば、入力長１ブロックにつき、ブロック暗号を１回と有限体ＧＦ(２n)乗算を１回、あるいは、ブロック暗号を２回とすることにより、平文長に対する暗号文長の帯域（長さ）の増加が小さい認証暗号を、効率よく実現できる。
【０１０８】
詳細には、本実施形態においては、非特許文献１に記載のＡＥＲＯのように、初期ベクトルＮと平文Ｍとを連結し、ＷＰＲＰと呼ばれる特許文献１に記載のＸＢＣモードで暗号化を行なう。したがって、タグＴと初期ベクトルＮとを組み合わせた処理が可能となり、帯域の増加は初期ベクトルＮの分だけでよい。しかし、この方式では入力長１ブロックにつきブロック暗号を１回と、有限体ＧＦ(２n)乗算（ただしｎはブロックサイズ）を２回、必要とするため効率が悪い。この効率の悪さは、主に、攻撃者が作成する暗号文についてＷＰＲＰがその復号結果全体を予測不能な計算量的乱数とすることに原因する。本実施形態においては、復号結果のうち、検証に用いる初期ベクトルに相当する部分のみ予測不能な計算量的乱数にし、復号における条件を弱めた。その結果、本実施形態においては、入力長１ブロックにつき、ブロック暗号を１回と、有限体ＧＦ(２n)乗算を１回、あるいは、ブロック暗号を２回とすることが可能となった。すなわち、本実施形態においては、平文１ブロックにつき、擬似乱数生成部でブロック暗号を１回と、鍵付きハッシュ部で有限体ＧＦ(２n)乗算を１回、あるいは、擬似乱数生成部でブロック暗号を１回と鍵付きハッシュ部でブロック暗号を１回とを合わせて、ブロック暗号を２回となる。これにより、計算効率は、帯域を削減してもなお、通常のタイプの認証暗号である文献ＣＣＭや文献ＧＣＭの場合とほぼ同じ程度に改善された。
【０１０９】
［第３実施形態］
次に、本発明の第３実施形態に係る認証暗号化システムについて説明する。本実施形態に係る認証暗号化システムは、上記第２実施形態と比べると、異なる手順で認証暗号化を行なう情報処理装置、異なる手順で認証復号を行なう情報処理装置、または、異なる手順で認証暗号化および認証復号を行なう情報処理装置を含む点で異なる。その他の構成および動作は、第２実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０１１０】
《認証暗号化部の機能構成》
図１７は、本実施形態に係る情報処理装置としての認証暗号化部１６１０の機能構成を示すブロック図である。なお、図１７において、図３と同様の機能構成部には同じ参照番号を付して、説明を省略する。
【０１１１】
図１７と図３とを対比すれば分かるように、図１７と図３とは機能構成部の接続が異なるのみで、各機能構成部の機能は互いに同様である。すなわち、認証暗号化部１６１０は、平文入力部３１１と、初期ベクトル生成部３１２と、共通鍵ブロック暗号化部３１３と、擬似乱数生成部３１４と、鍵付きハッシュ部３１５と、暗号文出力部３１６と、を備える。
【０１１２】
なお、機能構成部の接続が異なるので、図１７の各機能構成部の入力データおよび出力データは、図３の各機能構成部の入力データおよび出力データとは異なるが、その役割は類似であるので、共通の入力データおよび出力データには同じ参照記号を使用する。以下、認証暗号化部１６１０の動作を説明する。
【０１１３】
まず、平文Ｍが平文入力部３１１により入力される。そして、鍵付きハッシュ部３１５が平文Ｍを入力としてハッシュ値Ｈを出力する。ハッシュ値Ｈと初期ベクトル生成部３１２が出力する初期ベクトルＮとを排他的論理和して得たマスク付き初期ベクトルＵを、共通鍵ブロック暗号化部３１３で暗号化することで、暗号文の第２部分（暗号文の左端ブロック）ＣLを得る。次に、擬似乱数生成部３１４が第２部分ＣLを入力として、擬似乱数系列Ｖを出力する。そして、擬似乱数系列Ｖと平文Ｍとを排他的論理和して、暗号文の第１部分（暗号文の左端ブロック外）ＣRを得る。暗号文出力部３１６が、第２部分ＣLと第１部分ＣRとを連結して暗号文Ｃを構成し、暗号文Ｃを例えばコンピュータディスプレイやプリンタなどへ出力する。さらに、記憶媒体への書き込みや通信媒体を介した送信を行なってもよい。
【０１１４】
《認証暗号化部の処理手順》
図１８は、本実施形態に係る認証暗号化部１６１０の処理手順を示すフローチャートである。このフローチャートは、図１０のＣＰＵ９１０がＲＡＭ９４０を使用して実行し、図１７の機能構成部を実現する。なお、図１８において、図１１と同様のステップには同じステップ番号を付して、説明を省略する。また、認証暗号化の処理順序は図１８に限定されない。
【０１１５】
認証暗号化部１６１０は、ステップＳ１７０３において、平文Ｍから鍵付きハッシュ値Ｈを生成し、得られた１ブロックの鍵付きハッシュ値Ｈと初期ベクトルＮとを排他的論理和して、マスク付き初期ベクトルＵとする。次に、認証暗号化部１６１０は、ステップＳ１７０５において、マスク付き初期ベクトルＵを共通鍵ブロック暗号化し、暗号文の第２部分（左端ブロック）ＣLを得る。次に、認証暗号化部１６１０は、ステップＳ１７０７において、第２部分ＣLを入力として擬似乱数系列Ｖを得る。そして、認証暗号化部１６１０は、ステップＳ１７０９において、擬似乱数系列Ｖと平文Ｍとを排他的論理和して、暗号文の第１部分（左端以外のブロック）ＣRとする。
【０１１６】
《認証復号部の機能構成》
図１９は、本実施形態に係る情報処理装置としての認証復号部１８２０の機能構成を示すブロック図である。なお、図１９において、図１２と同様の機能構成部には同じ参照番号を付して、説明を省略する。
【０１１７】
図１９と図１２とを対比すれば分かるように、図１９と図１２とは機能構成部の接続が異なるのみで、各機能構成部の機能は互いに同様である。すなわち、認証復号部１８２０は、暗号文入力部１１０１と、鍵付きハッシュ部１１０２と、擬似乱数生成部１１０３と、共通鍵ブロック復号部１１０４と、初期ベクトル検査部１１０５と、平文出力部１１０６と、を備える。
【０１１８】
なお、機能構成部の接続が異なるので、図１９の各機能構成部の入力データおよび出力データは、図１２の各機能構成部の入力データおよび出力データとは異なるが、その役割は類似であるので、共通の入力データおよび出力データには同じ参照記号を使用する。以下、認証復号部１８２０の動作を説明する。
【０１１９】
まず、暗号文Ｃが暗号文入力部１１０１により入力され、暗号文Ｃの第２部分（左端ブロック）ＣLと、第１部分（左端以外の全ブロック）ＣRとに分離して出力される。擬似乱数生成部１１０３が、第２部分ＣLを入力として擬似乱数系列Ｖを出力する。そして、擬似乱数系列Ｖと第１部分ＣRとが排他的論理和され、平文Ｍの候補とされる。
【０１２０】
鍵付きハッシュ部１１０２が、平文Ｍを入力としてハッシュ値Ｈを出力する。共通鍵ブロック復号部１１０４は、第２部分ＣLを復号した結果を、マスク付き初期ベクトルＵとして出力する。そして、マスク付き初期ベクトルＵとハッシュ値Ｈとが排他的論理和されることで、初期ベクトルＮが復号される。次に、初期ベクトル検査部１１０５が、初期ベクトル期待値Ｎ*と復号された初期ベクトルＮとを比較し、比較結果に従って、更新された初期ベクトル期待値Ｎ*newと、２値の検証結果Ｂ（ＡＣＫまたはＮＡＣＫ）とを出力する。最後に、平文出力部１１０６が検証結果Ｂと平文Ｍの候補とを用いて、Ｂ＝ＡＣＫの場合には平文Ｍを、Ｂ＝ＮＡＣＫの場合にはエラーメッセージを、例えばコンピュータディスプレイやプリンタなどへ出力する。
【０１２１】
《認証復号部の処理手順》
図２０は、本実施形態に係る認証復号部１８２０の処理手順を示すフローチャートである。このフローチャートは、図１５のＣＰＵ１４１０がＲＡＭ１４４０を使用して実行し、図１９の機能構成部を実現する。なお、図２０において、図１６と同様のステップには同じステップ番号を付して、説明を省略する。また、認証復号の処理順序は図２０に限定されない。
【０１２２】
認証復号部１８２０は、ステップＳ１９０３において、入力された暗号文Ｃを第２部分（左端のブロック）ＣLと、第１部分（左端以外の全ブロック）ＣRとに分割し、第２部分ＣLを入力として擬似乱数系列Ｖを得る。次に、認証復号部１８２０は、ステップＳ１９０５において、擬似乱数系列Ｖと第１部分ＣRとを排他的論理和して復号結果の平文Ｍの候補とする。次に、認証復号部１８２０は、ステップＳ１９０７において、平文Ｍの候補から鍵付きハッシュ値Ｈを生成する。そして、認証復号部１８２０は、ステップＳ１９０９において、第２部分ＣLを共通鍵ブロック復号したマスク付き初期ベクトルＵと，ハッシュ値Ｈとの排他的論理和をとり、初期ベクトルＮを復号する。
【０１２３】
なお、上記実施形態では、認証符号化と認証復号とを分けて説明したが、図２にも図示したように認証符号化と認証復号とを共に行なう双方向の情報処理装置もある。その場合には、認証符号化と認証復号とで共有できる構成部あるいはモジュールは重複して備える必要はない。
【０１２４】
本実施形態によれば、入力長１ブロックにつき、ブロック暗号を１回と有限体ＧＦ(２n)乗算を１回、あるいは、ブロック暗号を２回とすることにより、平文長に対する暗号文長の帯域（長さ）の増加が小さい認証暗号を、効率よく実現できる点にある。さらに、初期ベクトルを誤って過去に使われた値と重複させた場合でも、情報の漏洩を防ぐことができる。
【０１２５】
すなわち、上記第２実施形態において、鍵付きハッシュ部で用いる可変長入力、固定長出力の関数が文献ＣＭＡＣの“ＣＭＡＣ”や文献Ｐｏｌｙの“Poly1305”のように、ｎbitの内部状態を用いて計算が可能な場合がある。このような場合、暗号化において、平文がブロックごとに逐次的に入力される場合でも、数ブロック分のバッファがあれば逐次的に処理可能であり、メモリ量の観点で効率的である。
【０１２６】
本実施形態では、そのような性質を有しないが、その代わりに、暗号化において初期ベクトルを誤って過去に使われた値と重複させた場合でも、暗号文全体は攻撃者からランダムに見えるため、情報の漏洩を防ぐことが可能である。ただし、復号側はこれをリプレイととらえるため、初期ベクトルを正しく設定し直したうえで再送する必要がある。
【０１２７】
［他の実施形態］
本発明は、無線もしくは有線のデータ通信における暗号化とメッセージ認証、無線センサーデバイスと情報収集サーバとの通信の保護といった用途にも適用できる。
【０１２８】
また、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、それぞれの実施形態に含まれる別々の特徴を如何様に組み合わせたシステムまたは装置も、本発明の範疇に含まれる。
【０１２９】
また、本発明は、複数の機器から構成されるシステムに適用されてもよいし、単体の装置に適用されてもよい。さらに、本発明は、実施形態の機能を実現する制御プログラムが、システムあるいは装置に直接あるいは遠隔から供給される場合にも適用可能である。したがって、本発明の機能をコンピュータで実現するために、コンピュータにインストールされるプログラム、あるいはそのプログラムを格納した媒体、そのプログラムをダウンロードさせるＷＷＷ(World Wide Web)サーバも、本発明の範疇に含まれる。特に、少なくとも、上述した実施形態に含まれる処理ステップをコンピュータに実行させるプログラムを格納した非一時的コンピュータ可読媒体（non-transitory computer readable medium）は本発明の範疇に含まれる。
【０１３０】
［実施形態の他の表現］
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１３１】
（付記１）平文を入力する平文入力手段と、
初期ベクトルを生成する初期ベクトル生成手段と、
前記初期ベクトルを共通鍵ブロック暗号化して暗号化初期ベクトルを生成する共通鍵ブロック暗号化手段と、
前記暗号化初期ベクトルを入力として、前記平文と同じ長さの擬似乱数系列を生成する擬似乱数生成手段と、
前記擬似乱数系列と前記平文とを排他的論理和した暗号文の第１部分を入力としてハッシュ値を生成する鍵付きハッシュ手段と、
前記ハッシュ値と前記暗号化初期ベクトルとを排他的論理和した前記暗号文の第２部分と前記第１部分とを連結して暗号文として出力する暗号文出力手段と、
を備える情報処理装置。
【０１３２】
（付記２）前記初期ベクトル生成手段は、最初は任意の固定値を生成し、２回目以降は直前に生成した初期ベクトルの値に１を加えた値を生成することにより、過去の値と重複がないように前記初期ベクトルを生成する付記１に記載の情報処理装置。
【０１３３】
（付記３）前記共通鍵ブロック暗号化手段は、１ブロックの前記初期ベクトルを共通鍵ブロック暗号の暗号化関数により暗号化し、同じ長さの暗号化された初期ベクトルを出力する付記１または２に記載の情報処理装置。
【０１３４】
（付記４）前記擬似乱数生成手段は、修正カウンタモード（modified counter mode）または修正OFBモード（modified OFB mode）の固定長入力および可変長出力の擬似ランダム関数により、１ブロックの前記暗号化された初期ベクトルを用いて、前記平文と同じ長さの前記擬似乱数系列を生成する付記１乃至３のいずれか１項に記載の情報処理装置。
【０１３５】
（付記５）前記鍵付きハッシュ手段は、ブロック暗号を用いるＣＭＡＣ(cipher-based message authentication code)アルゴリズム、または、有限体上の多項式ハッシュとブロック暗号の暗号化とを組み合わせる方法により、前記第１部分を入力として前記ハッシュ値を出力する付記１乃至４のいずれか１項に記載の情報処理装置。
【０１３６】
（付記６）平文を入力する平文入力ステップと、
初期ベクトルを生成する初期ベクトル生成ステップと、
前記初期ベクトルを共通鍵ブロック暗号化して暗号化初期ベクトルを生成する共通鍵ブロック暗号化ステップと、
前記暗号化初期ベクトルを入力として、前記平文と同じ長さの擬似乱数系列を生成する擬似乱数生成ステップと、
前記擬似乱数系列と前記平文とを排他的論理和した暗号文の第１部分を入力としてハッシュ値を生成する鍵付きハッシュステップと、
前記ハッシュ値と前記暗号化初期ベクトルとを排他的論理和した前記暗号文の第２部分と前記第１部分とを連結して暗号文として出力する暗号文出力ステップと、
をコンピュータに実行させる情報処理装置の制御プログラム。
【０１３７】
（付記７）平文を入力する平文入力手段と、
初期ベクトルを生成する初期ベクトル生成手段と、
前記平文を入力として、ハッシュ値を生成する鍵付きハッシュ手段と、
前記初期ベクトルと前記ハッシュ値とを排他的論理和したマスク付き初期ベクトルを共通鍵ブロック暗号化し、暗号文の第２部分を生成する共通鍵ブロック暗号化手段と、
前記第２部分を入力として、前記平文と同じ長さの擬似乱数系列を生成する擬似乱数生成手段と、
前記擬似乱数系列と前記平文とを排他的論理和した前記暗号文の第１部分と前記第２部分とを連結して暗号文として出力する暗号文出力手段と、
を備える情報処理装置。
【０１３８】
（付記８）前記初期ベクトル生成手段は、最初は任意の固定値を生成し、２回目以降は直前に生成した初期ベクトルの値に１を加えた値を生成することにより、過去の値と重複がないように前記初期ベクトルを生成する付記７に記載の情報処理装置。
【０１３９】
（付記９）前記鍵付きハッシュ手段は、ブロック暗号を用いるＣＭＡＣ(cipher-based message authentication code)アルゴリズム、または、有限体上の多項式ハッシュとブロック暗号の暗号化とを組み合わせる方法により、前記平文を入力として前記ハッシュ値を出力する付記７または８に記載の情報処理装置。
【０１４０】
（付記１０）前記共通鍵ブロック暗号化手段は、前記マスク付き初期ベクトルを共通鍵ブロック暗号の暗号化関数により暗号化し、前記第２部分を出力する付記７乃至９のいずれか１項に記載の情報処理装置。
【０１４１】
（付記１１）前記擬似乱数生成手段は、修正カウンタモード（modified counter mode）または修正OFBモード（modified OFB mode）の固定長入力および可変長出力の擬似ランダム関数により、前記第２部分を用いて、前記平文と同じ長さの前記擬似乱数系列を生成する付記７乃至１０のいずれか１項に記載の情報処理装置。
【０１４２】
（付記１２）平文を入力する平文入力ステップと、
初期ベクトルを生成する初期ベクトル生成ステップと、
前記平文を入力として、ハッシュ値を生成する鍵付きハッシュステップと、
前記初期ベクトルと前記ハッシュ値とを排他的論理和したマスク付き初期ベクトルを共通鍵ブロック暗号化し、暗号文の第２部分を生成する共通鍵ブロック暗号化ステップと、
前記第２部分を入力として、前記平文と同じ長さの擬似乱数系列を生成する擬似乱数生成ステップと、
前記擬似乱数系列と前記平文とを排他的論理和した前記暗号文の第１部分と前記第２部分とを連結して暗号文として出力する暗号文出力ステップと、
をコンピュータに実行させる情報処理装置の制御プログラム。
【０１４３】
（付記１３）暗号文を入力して、前記暗号文を第１部分と第２部分とに分離して出力する暗号文入力手段と、
前記第１部分を入力として、ハッシュ値を生成する鍵付きハッシュ手段と、
前記ハッシュ値と前記暗号文の第２部分とを排他的論理和して得た暗号化初期ベクトルを入力として、前記第１部分と同じ長さの擬似乱数系列を生成する擬似乱数生成手段と、
前記暗号化初期ベクトルを共通鍵ブロック復号して、初期ベクトルを生成する共通鍵ブロック復号手段と、
前記復号された初期ベクトルと初期ベクトル期待値とを入力し、前記復号された初期ベクトルと前記初期ベクトル期待値とが一致するか否かを検査する初期ベクトル検査手段と、
前記復号された初期ベクトルと前記初期ベクトル期待値とが一致する場合に、前記擬似乱数系列と前記第１部分とを排他的論理和して得た平文を出力する平文出力手段と、
を備える情報処理装置。
【０１４４】
（付記１４）前記第２部分は前記暗号文の一端の１ブロックであり、前記第１部分は前記暗号文の残りのブロックである付記１３に記載の情報処理装置。
【０１４５】
（付記１５）前記初期ベクトル検査手段は、
前記復号された初期ベクトルと前記初期ベクトル期待値とが一致する場合、前記平文の出力を許可する信号を出力すると共に、前記初期ベクトル期待値を次の暗号文に期待される値に更新し、
前記復号された初期ベクトルと前記初期ベクトル期待値とが一致しない場合、前記平文の出力を停止する信号を出力すると共に、前記初期ベクトル期待値を維持し、
前記平文出力手段は、前記許可する信号を受信すると前記平文を出力し、前記停止する信号を受信するとエラーメッセージを出力する、付記１３または１４に記載の情報処理装置。
【０１４６】
（付記１６）暗号文を入力して、前記暗号文を第１部分と第２部分とに分離して出力する暗号文入力ステップと、
前記第１部分を入力として、ハッシュ値を生成する鍵付きハッシュステップと、
前記ハッシュ値と前記第２部分とを排他的論理和して得た暗号化初期ベクトルを入力として、前記第１部分と同じ長さの擬似乱数系列を生成する擬似乱数生成ステップと、
前記暗号化初期ベクトルを共通鍵ブロック復号して、初期ベクトルを生成する共通鍵ブロック復号ステップと、
前記生成された初期ベクトルと初期ベクトル期待値とを入力し、前記復号された初期ベクトルと前記初期ベクトル期待値とが一致するか否かを検査する初期ベクトル検査ステップと、
前記復号された初期ベクトルと前記初期ベクトル期待値とが一致する場合に、前記擬似乱数系列と前記第１部分とを排他的論理和して得た平文を出力する平文出力ステップと、
をコンピュータに実行させる情報処理装置の制御プログラム。
【０１４７】
（付記１７）暗号文を入力して、前記暗号文を第１部分と第２部分とに分離して出力する暗号文入力手段と、
前記第２部分を入力として、前記第１部分と同じ長さの擬似乱数系列を生成する擬似乱数生成手段と、
前記第２部分を共通鍵ブロック復号し、マスク付き初期ベクトルを生成する共通鍵ブロック復号手段と、
前記擬似乱数系列と前記第１部分とを排他的論理和して得た平文を入力として、ハッシュ値を生成する鍵付きハッシュ手段と、
前記ハッシュ値と前記マスク付き初期ベクトルとを排他的論理和して復号された初期ベクトルと、初期ベクトル期待値とを入力し、前記復号された初期ベクトルと前記初期ベクトル期待値とが一致するか否かを検査する初期ベクトル検査手段と、
前記復号された初期ベクトルと前記初期ベクトル期待値とが一致する場合に、前記平文を出力する平文出力手段と、
を備える情報処理装置。
【０１４８】
（付記１８）前記第２部分は前記暗号文の一端の１ブロックであり、前記第１部分は前記暗号文の残りのブロックである付記１７に記載の情報処理装置。
【０１４９】
（付記１９）前記初期ベクトル検査手段は、
前記復号された初期ベクトルと前記初期ベクトル期待値とが一致する場合、前記平文の出力を許可する信号を出力すると共に、前記初期ベクトル期待値を次の暗号文に期待される値に更新し、
前記復号された初期ベクトルと前記初期ベクトル期待値とが一致しない場合、前記平文の出力を停止する信号を出力すると共に、前記初期ベクトル期待値を維持し、
前記平文出力手段は、前記許可する信号を受信すると前記平文を出力し、前記停止する信号を受信するとエラーメッセージを出力する、付記１７に記載の情報処理装置。
【０１５０】
（付記２０）暗号文を入力して、前記暗号文を第１部分と第２部分とに分離して出力する暗号文入力ステップと、
前記第２部分を入力として、前記第１部分と同じ長さの擬似乱数系列を生成する擬似乱数生成ステップと、
前記第２部分を共通鍵ブロック復号し、マスク付き初期ベクトルを生成する共通鍵ブロック復号ステップと、
前記擬似乱数系列と前記第１部分とを排他的論理和して得た平文を入力として、ハッシュ値を生成する鍵付きハッシュステップと、
前記ハッシュ値と前記マスク付き初期ベクトルとを排他的論理和して復号された初期ベクトルと、初期ベクトル期待値とを入力し、前記復号された初期ベクトルと前記初期ベクトル期待値とが一致するか否かを検査する初期ベクトル検査ステップと、
前記復号された初期ベクトルと前記初期ベクトル期待値とが一致する場合に、前記平文を出力する平文出力ステップと、
をコンピュータに実行させる情報処理装置の制御プログラム。
【０１５１】
（付記２１）初期ベクトルを共通鍵ブロック暗号化して暗号化初期ベクトルを生成する共通鍵ブロック暗号化手段と、
暗号化初期ベクトルをブロック復号して初期ベクトルを生成する共通鍵ブロック復号手段と、
前記暗号化された暗号化初期ベクトルを入力として、平文と同じ長さの擬似乱数系列を生成する擬似乱数生成手段と、
前記擬似乱数系列との排他的論理和により、前記平文と暗号文の第１部分との間で相互に変換する第１変換手段と、
前記暗号文の一部を入力としてハッシュ値を生成する鍵付きハッシュ手段と、
前記ハッシュ値との排他的論理和により、暗号化初期ベクトルと暗号文の第２部分との間で相互に変換する第２変換手段と、
を備え、
前記暗号化初期ベクトルと前記ハッシュ値とを排他的論理和して得た前記暗号文の第２部分と、入力した平文と前記擬似乱数系列とを排他的論理和した前記暗号文の第１部分とを連結して、暗号文として出力する暗号化処理と、
入力した暗号文を前記暗号文の第１部分と前記暗号文の第２部分とに分離して、前記暗号文の第２部分とハッシュ値とを排他的論理和して得た暗号化初期ベクトルをブロック復号して初期ベクトルを生成すると共に、前記暗号文の第１部分と前記擬似乱数系列とを排他的論理和して平文として出力する復号処理と、
を行なう情報処理装置。
【０１５２】
（付記２２）認証暗号化装置と認証復号装置とを含む認証暗号化システムであって、
前記認証暗号化装置は、
平文を入力する平文入力手段と、
初期ベクトルを生成する初期ベクトル生成手段と、
前記初期ベクトルを共通鍵ブロック暗号化して暗号化初期ベクトルを生成する共通鍵ブロック暗号化手段と、
前記暗号化初期ベクトルを入力として、前記平文と同じ長さの擬似乱数系列を生成する擬似乱数生成手段と、
前記擬似乱数系列と前記平文とを排他的論理和した暗号文の第１部分を入力としてハッシュ値を生成する鍵付きハッシュ手段と、
前記ハッシュ値と前記暗号化初期ベクトルとを排他的論理和した前記暗号文の第２部分と前記第１部分とを連結して暗号文として出力する暗号文出力手段と、
を備え、
前記認証復号装置は、
前記暗号文を入力して、前記暗号文を前記第１部分と前記第２部分とに分離して出力する暗号文入力手段と、
前記第１部分を入力として、ハッシュ値を生成する鍵付きハッシュ手段と、
前記ハッシュ値と前記暗号文の第２部分とを排他的論理和して得た暗号化初期ベクトルを入力として、前記第１部分と同じ長さの擬似乱数系列を生成する擬似乱数生成手段と、
前記暗号化初期ベクトルを共通鍵ブロック復号して、初期ベクトルを生成する共通鍵ブロック復号手段と、
前記復号された初期ベクトルと初期ベクトル期待値とを入力し、前記復号された初期ベクトルと前記初期ベクトル期待値とが一致するか否かを検査する初期ベクトル検査手段と、
前記復号された初期ベクトルと前記初期ベクトル期待値とが一致する場合に、前記擬似乱数系列と前記第１部分とを排他的論理和して得た平文を出力する平文出力手段と、
を備える認証暗号化システム。
【０１５３】
（付記２３）認証暗号化装置と認証復号装置とを含む認証暗号化システムであって、
前記認証暗号化装置は、
平文を入力する平文入力手段と、
初期ベクトルを生成する初期ベクトル生成手段と、
前記平文を入力として、ハッシュ値を生成する鍵付きハッシュ手段と、
前記初期ベクトルと前記ハッシュ値とを排他的論理和したマスク付き初期ベクトルを共通鍵ブロック暗号化し、暗号文の第２部分を生成する共通鍵ブロック暗号化手段と、
前記第２部分を入力として、前記平文と同じ長さの擬似乱数系列を生成する擬似乱数生成手段と、
前記擬似乱数系列と前記平文とを排他的論理和した前記暗号文の第１部分と前記第２部分とを連結して暗号文として出力する暗号文出力手段と、
を備え、
前記認証復号装置は、
前記暗号文を入力して、前記暗号文を前記第１部分と前記第２部分とに分離して出力する暗号文入力手段と、
前記第２部分を入力として、前記第１部分と同じ長さの擬似乱数系列を生成する擬似乱数生成手段と、
前記第２部分を共通鍵ブロック復号し、マスク付き初期ベクトルを生成する共通鍵ブロック復号手段と、
前記擬似乱数系列と前記第１部分とを排他的論理和して得た平文を入力として、ハッシュ値を生成する鍵付きハッシュ手段と、
前記ハッシュ値と前記マスク付き初期ベクトルとを排他的論理和して復号された初期ベクトルと、初期ベクトル期待値とを入力し、前記復号された初期ベクトルと前記初期ベクトル期待値とが一致するか否かを検査する初期ベクトル検査手段と、
前記復号された初期ベクトルと前記初期ベクトル期待値とが一致する場合に、前記平文を出力する平文出力手段と、
を備える認証暗号化システム。
【０１５４】
（付記２４）平文と、過去の値と重複がないように生成された初期ベクトルとに基づいて暗号文を生成する認証暗号化方法であって、
前記初期ベクトルを元に共通鍵ブロック暗号化を行ない、暗号化初期ベクトルを生成し、
前記平文から前記暗号文の第１部分を生成するため、前記平文と排他的論理和する擬似乱数を、前記暗号化初期ベクトルを元に生成し、
前記初期ベクトルから前記暗号文の第２部分を生成するため、前記暗号化初期ベクトルの生成における前記初期ベクトルの共通鍵ブロック暗号化に加えて前記初期ベクトルと排他的論理和する鍵付きハッシュ値を、前記平文を元に生成する、
認証暗号化方法。
【０１５５】
（付記２５）暗号文から、前記暗号文の元となった平文と、前記暗号文の生成に使用された初期ベクトルとを復号する認証復号方法であって、
前記暗号文の第１部分から前記平文を復号するため、前記第１部分と排他的論理和する擬似乱数を、前記暗号文の第２部分を元に生成し、
前記暗号文の第２部分を元に共通鍵ブロック復号を行ない、
前記暗号文の第２部分から前記初期ベクトルを復号するため、前記共通鍵ブロック復号における前記第２部分の共通鍵ブロック復号に加えて前記第２部分と排他的論理和する鍵付きハッシュ値を、前記第１部分を元に生成する、
認証復号方法。
【０１５６】
（付記２６）付記６、１２、１６および２０のいずれか1つに記載の前記制御プログラムを記録したコンピュータ読み取り可能な非一時的記録媒体。
【０１５７】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１５８】
この出願は、２０１４年８月２０日に出願された日本出願特願２０１４−１６７４２４を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１５９】
１００    情報処理装置
２００    認証暗号化システム
２０４    情報処理装置
２１０    認証暗号化部
２２０    認証復号部
３１１    平文入力部
３１２    初期ベクトル生成部
３１３    共通鍵ブロック暗号化部
３１４    擬似乱数生成部
３１５    鍵付きハッシュ部
３１６    暗号文出力部
４０１    共通鍵暗号化部Ｅ
４０２    ＧＨａｓｈ
４０３    カウンタモード暗号化
４０４    ＧＨａｓｈ
４０５    共通鍵復号部Ｄ
９１０    ＣＰＵ
９４０    ＲＡＭ
９４１    入力平文Ｍ
９４２    初期ベクトルＮ
９４３    初期ベクトルＳ
９４４    擬似乱数系列Ｖ
９４５    ハッシュ値Ｈ
９５０    ストレージ
９５１    共通鍵ブロック暗号化アルゴリズム
９５２    擬似乱数生成アルゴリズム
９５３    鍵付きハッシュアルゴリズム
９５４    認証暗号化プログラム
９５５    共通鍵ブロック暗号化モジュール
９５６    擬似乱数生成モジュール
９５７    鍵付きハッシュモジュール
１１０１    暗号文入力部
１１０２    鍵付きハッシュ部
１１０３    擬似乱数生成部
１１０４    共通鍵ブロック復号部
１１０５    初期ベクトル検査部
１１０６    平文出力部
１３０１    初期ベクトル期待値保持部
１３０２    初期ベクトル比較部
１３０３    初期ベクトル期待値更新部
１４１０    ＣＰＵ
１４４０    ＲＡＭ
１４４１    入力暗号文Ｃ
１４４２    ハッシュ値Ｈ
１４４３    排他的論理和Ｓ
１４４４    擬似乱数系列Ｖ
１４４５    排他的論理和Ｍ
１４４６    初期ベクトルＮ
１４４８    初期ベクトル検証結果Ｂ
１４４９    出力平文Ｍ
１４５０    ストレージ
１４５１    共通鍵ブロック復号アルゴリズム
１４５４    認証復号プログラム
１４５５    共通鍵ブロック復号モジュール
１４５８    初期ベクトル検査モジュール
１６１０    認証暗号化部
１８２０    認証復号部
【図１】
2016027454.tif 000003
【図２】
2016027454.tif 000004
【図３】
2016027454.tif 000005
【図４】
2016027454.tif 000006
【図５】
2016027454.tif 000007
【図６】
2016027454.tif 000008
【図７】
2016027454.tif 000009
【図８】
2016027454.tif 000010
【図９】
2016027454.tif 000011
【図１０】
2016027454.tif 000012
【図１１】
2016027454.tif 000013
【図１２】
2016027454.tif 000014
【図１３】
2016027454.tif 000015
【図１４】
2016027454.tif 000016
【図１５】
2016027454.tif 000017
【図１６】
2016027454.tif 000018
【図１７】
2016027454.tif 000019
【図１８】
2016027454.tif 000020
【図１９】
2016027454.tif 000021
【図２０】
2016027454.tif 000022
【手続補正書】
【提出日】平成29年2月13日(2017.2.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
平文を入力する平文入力手段と、
初期ベクトルを生成する初期ベクトル生成手段と、
前記初期ベクトルを共通鍵ブロック暗号化して暗号化初期ベクトルを生成する共通鍵ブロック暗号化手段と、
前記暗号化初期ベクトルを入力として、前記平文と同じ長さの擬似乱数系列を生成する擬似乱数生成手段と、
前記擬似乱数系列と前記平文とを排他的論理和した暗号文の第１部分を入力としてハッシュ値を生成する鍵付きハッシュ手段と、
前記ハッシュ値と前記暗号化初期ベクトルとを排他的論理和した前記暗号文の第２部分と前記第１部分とを連結して暗号文として出力する暗号文出力手段と、
を備える情報処理装置。
【請求項２】
平文を入力する平文入力ステップと、
初期ベクトルを生成する初期ベクトル生成ステップと、
前記初期ベクトルを共通鍵ブロック暗号化して暗号化初期ベクトルを生成する共通鍵ブロック暗号化ステップと、
前記暗号化初期ベクトルを入力として、前記平文と同じ長さの擬似乱数系列を生成する擬似乱数生成ステップと、
前記擬似乱数系列と前記平文とを排他的論理和した暗号文の第１部分を入力としてハッシュ値を生成する鍵付きハッシュステップと、
前記ハッシュ値と前記暗号化初期ベクトルとを排他的論理和した前記暗号文の第２部分と前記第１部分とを連結して暗号文として出力する暗号文出力ステップと、
をコンピュータに実行させる情報処理装置の制御プログラム。
【請求項３】
平文を入力する平文入力手段と、
初期ベクトルを生成する初期ベクトル生成手段と、
前記平文を入力として、ハッシュ値を生成する鍵付きハッシュ手段と、
前記初期ベクトルと前記ハッシュ値とを排他的論理和したマスク付き初期ベクトルを共通鍵ブロック暗号化し、暗号文の第２部分を生成する共通鍵ブロック暗号化手段と、
前記第２部分を入力として、前記平文と同じ長さの擬似乱数系列を生成する擬似乱数生成手段と、
前記擬似乱数系列と前記平文とを排他的論理和した前記暗号文の第１部分と前記第２部分とを連結して暗号文として出力する暗号文出力手段と、
を備える情報処理装置。
【請求項４】
平文を入力する平文入力ステップと、
初期ベクトルを生成する初期ベクトル生成ステップと、
前記平文を入力として、ハッシュ値を生成する鍵付きハッシュステップと、
前記初期ベクトルと前記ハッシュ値とを排他的論理和したマスク付き初期ベクトルを共通鍵ブロック暗号化し、暗号文の第２部分を生成する共通鍵ブロック暗号化ステップと、
前記第２部分を入力として、前記平文と同じ長さの擬似乱数系列を生成する擬似乱数生成ステップと、
前記擬似乱数系列と前記平文とを排他的論理和した前記暗号文の第１部分と前記第２部分とを連結して暗号文として出力する暗号文出力ステップと、
をコンピュータに実行させる情報処理装置の制御プログラム。
【請求項５】
暗号文を入力して、前記暗号文を第１部分と第２部分とに分離して出力する暗号文入力手段と、
前記第１部分を入力として、ハッシュ値を生成する鍵付きハッシュ手段と、
前記ハッシュ値と前記暗号文の第２部分とを排他的論理和して得た暗号化初期ベクトルを入力として、前記第１部分と同じ長さの擬似乱数系列を生成する擬似乱数生成手段と、
前記暗号化初期ベクトルを共通鍵ブロック復号して、初期ベクトルを生成する共通鍵ブロック復号手段と、
前記復号された初期ベクトルと初期ベクトル期待値とを入力し、前記復号された初期ベクトルと前記初期ベクトル期待値とが一致するか否かを検査する初期ベクトル検査手段と、
前記復号された初期ベクトルと前記初期ベクトル期待値とが一致する場合に、前記擬似乱数系列と前記第１部分とを排他的論理和して得た平文を出力する平文出力手段と、
を備える情報処理装置。
【請求項６】
暗号文を入力して、前記暗号文を第１部分と第２部分とに分離して出力する暗号文入力ステップと、
前記第１部分を入力として、ハッシュ値を生成する鍵付きハッシュステップと、
前記ハッシュ値と前記第２部分とを排他的論理和して得た暗号化初期ベクトルを入力として、前記第１部分と同じ長さの擬似乱数系列を生成する擬似乱数生成ステップと、
前記暗号化初期ベクトルを共通鍵ブロック復号して、初期ベクトルを生成する共通鍵ブロック復号ステップと、
前記生成された初期ベクトルと初期ベクトル期待値とを入力し、前記復号された初期ベクトルと前記初期ベクトル期待値とが一致するか否かを検査する初期ベクトル検査ステップと、
前記復号された初期ベクトルと前記初期ベクトル期待値とが一致する場合に、前記擬似乱数系列と前記第１部分とを排他的論理和して得た平文を出力する平文出力ステップと、
をコンピュータに実行させる情報処理装置の制御プログラム。
【請求項７】
暗号文を入力して、前記暗号文を第１部分と第２部分とに分離して出力する暗号文入力手段と、
前記第２部分を入力として、前記第１部分と同じ長さの擬似乱数系列を生成する擬似乱数生成手段と、
前記第２部分を共通鍵ブロック復号し、マスク付き初期ベクトルを生成する共通鍵ブロック復号手段と、
前記擬似乱数系列と前記第１部分とを排他的論理和して得た平文を入力として、ハッシュ値を生成する鍵付きハッシュ手段と、
前記ハッシュ値と前記マスク付き初期ベクトルとを排他的論理和して復号された初期ベクトルと、初期ベクトル期待値とを入力し、前記復号された初期ベクトルと前記初期ベクトル期待値とが一致するか否かを検査する初期ベクトル検査手段と、
前記復号された初期ベクトルと前記初期ベクトル期待値とが一致する場合に、前記平文を出力する平文出力手段と、
を備える情報処理装置。
【請求項８】
暗号文を入力して、前記暗号文を第１部分と第２部分とに分離して出力する暗号文入力ステップと、
前記第２部分を入力として、前記第１部分と同じ長さの擬似乱数系列を生成する擬似乱数生成ステップと、
前記第２部分を共通鍵ブロック復号し、マスク付き初期ベクトルを生成する共通鍵ブロック復号ステップと、
前記擬似乱数系列と前記第１部分とを排他的論理和して得た平文を入力として、ハッシュ値を生成する鍵付きハッシュステップと、
前記ハッシュ値と前記マスク付き初期ベクトルとを排他的論理和して復号された初期ベクトルと、初期ベクトル期待値とを入力し、前記復号された初期ベクトルと前記初期ベクトル期待値とが一致するか否かを検査する初期ベクトル検査ステップと、
前記復号された初期ベクトルと前記初期ベクトル期待値とが一致する場合に、前記平文を出力する平文出力ステップと、
をコンピュータに実行させる情報処理装置の制御プログラム。
【請求項９】
平文と、過去の値と重複がないように生成された初期ベクトルとに基づいて暗号文を生成する認証暗号化方法であって、
前記初期ベクトルを元に共通鍵ブロック暗号化を行ない、暗号化初期ベクトルを生成し、
前記平文から前記暗号文の第１部分を生成するため、前記平文と排他的論理和する擬似乱数を、前記暗号化初期ベクトルを元に生成し、
前記初期ベクトルから前記暗号文の第２部分を生成するため、前記暗号化初期ベクトルの生成における前記初期ベクトルの共通鍵ブロック暗号化に加えて前記初期ベクトルと排他的論理和する鍵付きハッシュ値を、前記平文を元に生成する、
認証暗号化方法。
【請求項１０】
暗号文から、前記暗号文の元となった平文と、前記暗号文の生成に使用された初期ベクトルとを復号する認証復号方法であって、
前記暗号文の第１部分から前記平文を復号するため、前記第１部分と排他的論理和する擬似乱数を、前記暗号文の第２部分を元に生成し、
前記暗号文の第２部分を元に共通鍵ブロック復号を行ない、
前記暗号文の第２部分から前記初期ベクトルを復号するため、前記共通鍵ブロック復号における前記第２部分の共通鍵ブロック復号に加えて前記第２部分と排他的論理和する鍵付きハッシュ値を、前記第１部分を元に生成する、
認証復号方法。
【国際調査報告】
2016027454.tif 000023
2016027454.tif 000024
2016027454.tif 000025
2016027454.tif 000026