(57)【特許請求の範囲】
【請求項１】
平文に対して鍵に基づく所定の暗号処理を行い、暗号文を生成するデータ暗号化装置であって、
コア乱数を１個生成し、前記コア乱数を所定の個数だけ連結して、第１乱数を生成する乱数生成部と、
前記平文と前記第１乱数とのデータ融合を行い、中間データを生成する平文データ融合部と、
ラウンドごとに前記中間データに対して、前記第１乱数と第２乱数と前記鍵に基づいて、データ撹乱処理を行う、データ撹乱部とを備え、
前記データ撹乱部は、
ラウンドごとに、平文を前記所定の個数で等分したデータを変換する１つの変換テーブルのみを記憶する変換テーブル記憶部と、
ラウンドごとに、前記１つの変換テーブルを、前記第１乱数と前記第２乱数とに基づいて変形するテーブル変換を行い、１つの変形変換テーブルを生成する変換テーブル変形部と、
前記１つの変形変換テーブルのみを記憶する変形変換テーブル記憶部と、
ラウンドごとに、前記中間データに対して、前記鍵と前記変形変換テーブル記憶部に記憶されている前記１つの変形変換テーブルとに基づいて、前記中間データを前記所定の個数で等分した各データに対して、データ変換処理を行うデータ変換部とを備える
データ暗号化装置。
【請求項２】
さらに、前記第１乱数に対して所定の乱数変換を行い、前記第２乱数を生成する乱数変換部を備える
請求項１に記載のデータ暗号化装置。
【請求項３】
前記データ撹乱部は、さらに、前記中間データに対して、所定の線形変換を行い、その結果を出力する線形変換部を備え、
前記乱数変換部は、前記線形変換の逆変換を前記乱数変換として行う
請求項２に記載のデータ暗号化装置。
【請求項４】
前記所定の暗号処理は、ＡＥＳ（Advanced Encryption Standard）暗号処理であって、
前記線形変換部は、ＡＥＳ暗号処理におけるＩｎｖＭｉｘＣｏｌｕｍｎ処理とＩｎｖＳｈｉｆｔＲｏｗ処理とからなり、
前記乱数変換部は、前記第１乱数を第２乱数として出力する
請求項３に記載のデータ暗号化装置。
【請求項５】
前記コア乱数は、すべてのラウンドにおいて同一の値である
請求項４に記載のデータ暗号化装置。
【請求項６】
平文に対して鍵に基づく所定の暗号処理を行い、暗号文を生成する集積回路であって、
コア乱数を１個生成し、前記コア乱数を所定の個数だけ連結して、第１乱数を生成する乱数生成部と、
前記平文と前記第１乱数とのデータ融合を行い、中間データを生成する平文データ融合部と、
ラウンドごとに前記中間データに対して、前記第１乱数と第２乱数と前記鍵に基づいて、データ撹乱処理を行うデータ撹乱部とを備え、
前記データ撹乱部は、
ラウンドごとに、平文を前記所定の個数で等分したデータを変換する１つの変換テーブルのみを記憶する変換テーブル記憶部と、
ラウンドごとに、前記１つの変換テーブルを、前記第１乱数と前記第２乱数とに基づいて変形するテーブル変換を行い、１つの変形変換テーブルを生成する変換テーブル変形部と、
前記１つの変形変換テーブルのみを記憶する変形変換テーブル記憶部と、
ラウンドごとに、前記中間データに対して、前記鍵と前記変形変換テーブル記憶部に記憶されている前記１つの変形変換テーブルとに基づいて、前記中間データを前記所定の個数で等分した各データに対して、データ変換処理を行うデータ変換部とを備える
集積回路。
【請求項７】
平文に対して鍵に基づく所定の暗号処理を行い、暗号文を生成するデータ暗号化方法であって、
コア乱数を１個生成し、前記コア乱数を所定の個数だけ連結して、第１乱数を生成し、
前記平文と前記第１乱数とのデータ融合を行い、中間データを生成し、
ラウンドごとに前記中間データに対して、前記第１乱数と第２乱数と前記鍵に基づいて、データ撹乱処理を行い、
前記データ撹乱処理では、
ラウンドごとに、平文を前記所定の個数で等分したデータを変換する１つの変換テーブルを、前記第１乱数と前記第２乱数とに基づいて変形するテーブル変換を行い、１つの変形変換テーブルを生成し、
ラウンドごとに、前記中間データに対して、前記鍵と前記１つの変形変換テーブルとに基づいて、前記中間データを前記所定の個数で等分した各データに対して、データ変換処理を行う
データ暗号化方法。
【請求項８】
請求項７に記載のデータ暗号化方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ暗号化装置に関し、特に、暗号処理を実行する際の電力消費量を計測することにより暗号モジュールに埋め込まれている暗号鍵を解析する攻撃方法に対して安全なデータ暗号化装置に関する。
【背景技術】
【０００２】
近年、ハードウェアあるいはソフトウェアで実装された暗号モジュールが暗号処理を行う際の副情報を手がかりにして、暗号鍵の解析を行う解読法が各種考案されている。例えば、タイミング攻撃と呼ばれる解読方法では、暗号モジュールが暗号処理に要する時間が、暗号処理に用いている暗号鍵の値により、わずかではあるが異なることを利用して、暗号鍵の解析を行う。即ち、タイミング攻撃においては、暗号処理を行う際の処理時間という副情報を利用して、暗号鍵の解読を行っている。このような解読法の中でも、暗号処理を行う際の電力消費量を副情報として解読を行う解読方法として、“Ｓｉｍｐｌｅ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ”や“Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ”といった各種の方法が考案されている。これらの解読法は、近年、高性能な計測機器が安価で手に入るようになった背景もあって、ＩＣ（Integrated Circuit）カードのような暗号が実装された実際の製品に対しても解析が可能であることが報告されている。また、暗号処理を行う際に、暗号モジュールから発生する電磁波強度を副情報として解読する方法など数々の解読方法が考案されている。以下の記述では、暗号処理時における暗号モジュールの電力消費量を手がかりにして、暗号鍵を解析する解読方法を総称して、「電力解析攻撃」と呼ぶことにする。以下では、電力解析攻撃を例にして説明を行うが、副情報を用いたその他の解読方法に対しても同様にして説明することができる。即ち、本発明は、電力解析攻撃のみならず、暗号処理中に暗号モジュールから発生する副情報を利用して鍵の推定を行う解読方法であれば適用可能である。
【０００３】
電力解析攻撃の概要について説明する。ここでは、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号（ＡＥＳ暗号の詳細は、非特許文献１を参照）に電力解析攻撃を適用した例を元に説明する。図１は、ＡＥＳ暗号の処理概要を説明するブロック図である。ＡＥＳ暗号は、暗号鍵サイズが１２８ｂｉｔ、１９２ｂｉｔ、２５６ｂｉｔの３種類をサポートしているが、以下では、暗号鍵サイズは１２８ｂｉｔであるとして説明を行う。また、ＡＥＳ暗号では、１２８ｂｉｔの暗号鍵を元に、１２８ｂｉｔ×１１個のラウンド鍵Ｋ０、Ｋ１、・・・、Ｋ１０と呼ばれる鍵を生成するが、ここでは、既にラウンド鍵が生成されているものとして説明する。図１でもラウンド鍵生成処理については、図示していない。
【０００４】
（ＡＥＳ暗号の処理概略）
ＡＥＳ暗号の暗号処理概要を説明する。
【０００５】
ＡＥＳ暗号の暗号化処理は、１２８ｂｉｔの平文Ｐに対して、ラウンド鍵Ｋ０とのビットごとの排他的論理和演算１０ａ、テーブル変換処理（Ｓ）１０ｂ、線形変換（Ｌ１）１０ｃを行う。次に、前記と同様の一連の処理を、ラウンド鍵Ｋ１を用いて行う（１１ａ〜１１ｃ）。更に、同様の一連の処理をラウンド鍵Ｋ２、Ｋ３、・・・、Ｋ９を順次用いて行う。但し、ラウンド鍵Ｋ９を用いた一連の処理については、線形変換Ｌ１の代わりに、線形変換Ｌ２を行う（１９ｃ）。そして、最後に、ラウンド鍵Ｋ１０とのビットごとの排他的論理和演算を行い（１９ｄ）、その結果の値を暗号文Ｃとする。
【０００６】
（テーブル変換Ｓ（１０ｂ））
テーブル変換１０ｂの処理について説明する。なお、テーブル変換１１ｂ、１２ｂ、・・・、１９ｂも、これと同一の処理である。
【０００７】
図２は、テーブル変換１０ｂの処理を示すブロック図である。入力される１２８ｂｉｔのデータは、上位から８ｂｉｔずつに分割され、８ｂｉｔ×１６個のデータとなる。そして、各８ｂｉｔデータに対して、変換テーブルＴａｂによるテーブル変換処理が行われる（１００ａ〜１００ｐ）。ここで、変換テーブルＴａｂは、入力８ｂｉｔと出力８ｂｉｔとの対応関係を示すテーブルであり、具体的には、８ｂｉｔ×２５６要素の配列Ｔａｂ［２５６］によって表され、入力８ｂｉｔがＸのとき、テーブル変換による出力値Ｙは、Ｙ＝Ｔａｂ［Ｘ］として得られる。
【０００８】
具体的には、ＡＥＳ暗号に用いられる変換テーブルは、Ｔａｂ［２５６］＝｛６３ｈ、７Ｃｈ、７７ｈ、７Ｂｈ、・・・、ＢＢｈ、１６ｈ｝となるテーブルである。ここで、６３ｈの“ｈ”は、“６３”が１６進数表記であることを示している。このとき、入力０３ｈに対するテーブル変換の出力は、Ｔａｂ［２］＝７７ｈであり、入力ＦＥｈ（１０進数で２５４）に対するテーブル変換の出力は、Ｔａｂ［２５４］＝ＢＢｈとなる。このようにして、各８ｂｉｔデータに対するテーブル変換処理が行われる。そして、各出力結果を先ほど分割した際と同じ順序で連結して１２８ｂｉｔとし、１２８ｂｉｔの出力データＹとする。
【０００９】
（線形変換Ｌ１（１０ｃ））
線形変換Ｌ１（１０ｃ）の処理について説明する。なお、線形変換１１ｃ、１２ｃ、・・・、１８ｃの処理も、これと同様の処理である。
【００１０】
線形変換Ｌ１は、ＳｈｉｆｔＲｏｗと呼ばれるバイト転置と、ＭｉｘＣｏｌｕｍｎと呼ばれる行列変換とをこの順序で行う。まず、入力データを、上位から８ｂｉｔずつに分割して、Ａ０、Ａ１、・・・、Ａ１４、Ａ１５とする。バイト転置ＳｈｉｆｔＲｏｗは、Ａ０〜Ａ１５に対して並び換えを行って１２８ｂｉｔデータを作成する。具体的には、上位からＡ０、Ａ５、Ａ１０、Ａ１５、Ａ４、Ａ９、Ａ１４、Ａ３、Ａ８、Ａ１３、Ａ２、Ａ７、Ａ１２、Ａ１、Ａ６、Ａ１１の順にデータを連結して１２８ｂｉｔデータとする。
【００１１】
次に、上記ＳｈｉｆｔＲｏｗの結果に対して、ＭｉｘＣｏｌｕｍｎ処理を行う。具体的には、ＳｈｉｆｔＲｏｗの結果を再び、上位から８ｂｉｔずつ分割して、Ｂ０、Ｂ１、・・・、Ｂ１４、Ｂ１５とする。次に、Ｘ０＝Ｂ０、Ｘ１＝Ｂ４、Ｘ２＝Ｂ８、Ｘ３＝Ｂ１２として、下記数１に従って行列演算を行い、Ｙ０、Ｙ１、Ｙ２、Ｙ３を計算して、Ｃ０＝Ｙ０、Ｃ４＝Ｙ１、Ｃ８＝Ｙ２、Ｃ１２＝Ｙ３とする。
【００１２】
【数１】
0004823904.tif 000002
【００１３】
ここで、行列演算に用いる加算と乗算は拡大体ＧＦ（２＾８）上の演算として行う。また、“２＾８”は“２の８乗”を表す。更に、Ｘ０＝Ｂ１、Ｘ１＝Ｂ５、Ｘ２＝Ｂ９、Ｘ３＝Ｂ１３として、上記行列演算（数１で示される演算）を行い、Ｙ０、Ｙ１、Ｙ２、Ｙ３を計算して、Ｃ１＝Ｙ０、Ｃ５＝Ｙ１、Ｃ９＝Ｙ２、Ｃ１３＝Ｙ３とする。同様に、Ｘ０＝Ｂ２、Ｘ１＝Ｂ６、Ｘ２＝Ｂ１０、Ｘ３＝Ｂ１４として、行列演算（数１）を行い、Ｙ０、Ｙ１、Ｙ２、Ｙ３を計算して、Ｃ２＝Ｙ０、Ｃ６＝Ｙ１、Ｃ１０＝Ｙ２、Ｃ１４＝Ｙ３とする。そして、Ｘ０＝Ｂ３、Ｘ１＝Ｂ７、Ｘ２＝Ｂ１１、Ｘ３＝Ｂ１５として、行列演算を行い、Ｙ０、Ｙ１、Ｙ２、Ｙ３を計算して、Ｃ３＝Ｙ０、Ｃ７＝Ｙ１、Ｃ１１＝Ｙ２、Ｃ１５＝Ｙ３とする。上記のようにして得られたＣ０、Ｃ１、Ｃ２、・・・、Ｃ１４、Ｃ１５を、上位からこの順序で連結した１２８ｂｉｔデータが、ＭｉｘＣｏｌｕｍｎ処理の出力データ、即ち、線形変換Ｌ１の出力データとなる。
【００１４】
（線形変換Ｌ２（１９ｃ））
線形変換Ｌ２（１９ｃ）は、線形変換Ｌ１から、ＭｉｘＣｏｌｕｍｎ処理を省略したものである。即ち、Ｌ２への入力データに対して、ＳｈｉｆｔＲｏｗ処理のみを行った結果をＬ２の出力データとする。
【００１５】
（暗号装置１１０の構成）
ＡＥＳ暗号を暗号装置として実装した場合の一構成例について説明する。
【００１６】
図３は、ＡＥＳ暗号を暗号装置として実装した場合の一構成例を示すブロック図である。
【００１７】
暗号装置１１０は、平文Ｐを暗号化し暗号文Ｃを出力する装置であり、レジスタ１１０ａと、暗号鍵記憶部１１０ｂと、ラウンド鍵生成部１１０ｃと、ラウンド鍵記憶部１１０ｄと、排他的論理和部１１０ｅと、テーブル保管部１１０ｆと、テーブル変換部１１０ｇと、第１線形変換部１１０ｈと、第２線形変換部１１０ｉとを含む。
【００１８】
レジスタ１１０ａは、暗号処理の中間データを記憶する記憶装置である。暗号鍵記憶部１１０ｂは暗号鍵を記憶している記憶装置である。ラウンド鍵生成部１１０ｃは、暗号処理時に、暗号鍵記憶部１１０ｂから暗号鍵を読み出し、ラウンド鍵Ｋ０〜Ｋ１０を生成し、ラウンド鍵記憶部１１０ｄに記憶する処理部である。排他的論理和部１１０ｅは、ラウンド鍵記憶部１１０ｄから必要なラウンド鍵を読み出して、排他的論理和演算を行う処理部である。テーブル保管部１１０ｆは、上述した８ｂｉｔ×２５６個のデータからなる変換テーブルを配列Ｔａｂ［２５６］として記憶している記憶装置である。テーブル変換部１１０ｇは、テーブル保管部１１０ｆより配列Ｔａｂ［２５６］を読み出し、テーブル変換処理を実行する処理部である。第１線形変換部１１０ｈおよび第２線形変換部１１０ｉは、それぞれ上述した線形変換Ｌ１および線形変換Ｌ２の処理を実行する処理部である。
【００１９】
次に、暗号装置１１０の動作について説明する。平文Ｐが暗号装置１１０に入力されると、一旦、レジスタ１１０ａに記憶される。次に、排他的論理和部１１０ｅがレジスタ１１０ａに記憶されているデータを読み出して、ラウンド鍵との排他的論理和演算を行い、演算結果をレジスタ１１０ａに上書き記憶する。次に、テーブル変換部１１０ｇが、レジスタ１１０ａに記憶されているデータを読み出して、テーブル変換処理を行い、変換結果をレジスタ１１０ａに上書き記憶する。そして、第１線形変換部１１０ｈが、レジスタ１１０ａに記憶されているデータを読み出して、線形変換Ｌ１の処理を行い、変換結果をレジスタ１１０ａに上書き記憶する。
【００２０】
以下、先ほど述べたＡＥＳ暗号の処理手順に従って、上記の処理を繰り返し行う。但し、最後の繰り返しにおける線形変換処理は、第１線形変換部１１０ｈの代わりに、第２線形変換部１１０ｉによる線形変換Ｌ２の処理を行い、更に、排他的論理和部１１０ｅがラウンドＫ１０との排他的論理和演算を行って、演算結果をレジスタ１１０ａに上書き記憶する。そして、暗号装置１１０は、レジスタ１１０ａに記憶されているデータを暗号文Ｃとして出力する。
【００２１】
（暗号装置１１０に対する電力解析攻撃）
暗号装置１１０に対する、電力解析攻撃の概要について説明する。暗号装置１１０では、ＡＥＳ暗号の処理が行われている途中のデータ（中間データ）は、レジスタ１１０ａに一時記憶されている。即ち、図１において、ある処理ブロックから他の処理ブロックに渡されるデータは、全てレジスタ１１０ａに一旦記憶されてから、他の処理ブロックによる処理が行われる。
【００２２】
電力解析攻撃では、上記のように暗号処理の中間データがレジスタに一時記憶されることに着目する。データをレジスタに記憶する際の電力消費量は、記憶するデータの内容に依存することがわかっている。例えば、記憶するデータに“１”が立つビットの数が多いほど、記憶時に消費する電力は大きい。また、レジスタへの上書き処理の際に、レジスタに格納しているデータビットの反転が発生するビット（例えば、ビット“１”が記憶されている状態でビット“０”が上書きされるビット）が多いほど、記憶時に消費する電力は大きい。これらのことを利用して、レジスタに記憶する際の電力消費量を測定して、レジスタ内のデータを推測する。そして、推測したデータ値から、暗号処理に使われている暗号鍵を特定する。例えば、図３の排他的論理和部１１０ｅがレジスタ１１０ａに記憶する際の電力消費量を解析することにより、図１の排他的論理和１０ａの処理が行われた後のデータを解析することができたとする。このときのデータをＤとし、平文Ｐの値も解析者が知っているとすると、ラウンド鍵Ｋ０は、
Ｋ０＝Ｄ（＋）Ｐ
によって求められる。ここで、“（＋）”は“ビットごとの排他的論理和”を表す。ＡＥＳ暗号の場合、ラウンド鍵Ｋ０は、暗号鍵と同一であることが知られているから、上記の解析により、暗号鍵が求められたことになる。
【００２３】
以上のように、暗号処理中の電力消費量から、レジスタに一時記憶される暗号処理の中間値が推測され、そこから、暗号鍵が推測されることがわかる。
【００２４】
（電力解析攻撃に対する対策方法）
電力解析攻撃に対する対策方法として、マスキング法と呼ばれる方法が開示されている（例えば、特許文献１参照）。図３に示す暗号装置１１０では、暗号処理の中間値をそのままレジスタ１１０ａに一時記憶しているため、その値が解析される点に問題があった。マスキング法では、暗号処理の中間値をレジスタに格納する前に、乱数によってランダム化するところに特徴がある。これにより、電力解析によってレジスタのデータが推測されても、その値は、乱数によってランダム化されているので、実際の暗号処理の中間値はわからない。従って、ラウンド鍵の値は特定できない。
【００２５】
図４及び図５は、ＡＥＳ暗号に対するマスキング法を適用した場合の処理手順を説明するブロック図である。暗号処理を行う前に、１２８ｂｉｔの乱数Ｒ０〜Ｒ１０を生成する。そして、生成した乱数を用いた排他的論理和演算２０ａ、２０ｃ、２０ｅ、２１ｂ、・・・、２９ｂ、２９ｄ、２９ｈを、オリジナルのＡＥＳ暗号処理に図４に示すように、追加する。このとき、排他的論理和演算２１ｂ、・・・、２９ｂは、乱数に対して線形変換Ｌ１を施した結果との排他的論理和演算であり、排他的論理和演算２９ｈは、乱数に対して線形変換Ｌ２を施した結果との排他的論理和演算である。このとき、排他的論理和演算２０ａによって、暗号処理の中間値Ｔは、乱数Ｒ０の影響を受けてランダム化される。しかし、その後に、排他的論理和演算２０ｃによって、乱数Ｒ０との排他的論理和演算を再び行うことで、その影響は相殺される。同様に、乱数Ｒ１、Ｒ２、・・・、Ｒ１０によるランダム化の影響は相殺されるようになっているため、最終的に得られる暗号文Ｃは、図１で示したオリジナルのＡＥＳ暗号処理によって得られるものと、同一のものとなる。
【００２６】
また、実際に暗号装置として実装する際には、図４ではなく、図５の構成として、暗号処理が実装される。図４と図５との違いは、図４における「乱数との排他的論理和演算⇒テーブル変換⇒乱数との排他的論理和演算」という一連の処理を、「ランダム化された変換テーブルによるテーブル変換」に置き換えた点である。以下、この点について説明する。
【００２７】
図６は、図５におけるランダム化テーブル変換３０ｃの内部構成を説明するためのブロック図である。なお、他のランダム化テーブル変換３１ｂ、３２ｂ、・・・、３９ｂについても、使われる乱数が異なるだけで、ランダム化テーブル変換３０ｃと同様である。１２８ｂｉｔの入力データＸは、上位から８ｂｉｔずつ分割して、ｘ０、ｘ１、・・・、ｘ１５とする。また、乱数Ｒ０及びＲ１は、上位から８ｂｉｔずつ分割して、それぞれ、Ｒ０ａ、Ｒ０ｂ，・・・，Ｒ０ｐ、及びＲ１ａ、Ｒ１ｂ、・・・、Ｒ１ｐとする。まず、ｘ０、ｘ１、・・・、ｘ１５は、それぞれ、Ｒ０ａ，Ｒ０ｂ，・・・，Ｒ０ｐとの排他的論理和演算を行う。次に、前記結果（各８ｂｉｔ）に対して、それぞれ、ＡＥＳ暗号の変換テーブルＴａｂを用いたテーブル変換を行う。そして、各テーブル変換結果に対して、それぞれＲ１ａ、Ｒ１ｂ、・・・、Ｒ１ｐとの排他的論理和演算を行い、その結果を、それぞれｙ０、ｙ１、・・・、ｙ１５とする。ｙ０、ｙ１、・・・、ｙ１５を、上位からこの順序で連結した１２８ｂｉｔデータを、Ｙとして出力する。
【００２８】
ここで、乱数Ｒ０（即ち、Ｒ０ａ〜Ｒ０ｐ）と乱数Ｒ１（即ち、Ｒ１ａ〜Ｒ１ｐ）が決まれば、ｘ０とｙ０との対応関係、ｘ１とｙ０との対応関係、・・・、ｘ１５とｙ１５との対応関係は、各々８ｂｉｔ×２５６個のデータからなる変換テーブルとして表すことができる。即ち、図６の処理は、図７で示すような、１６種類の変換テーブルＴａｂ０ａ、Ｔａｂ０ｂ、・・・、Ｔａｂ０ｐによる、テーブル変換処理３０３ａ、３０３ｂ、・・・、３０３ｐからなる処理となる。
【００２９】
以上をまとめると、マスキング法解読に対する対策を行ったＡＥＳ暗号の処理手順は、図５に示すようになる。即ち、以下のようになる。
【００３０】
（１）１２８ｂｉｔ×１１個の乱数Ｒ０、Ｒ１、・・・、Ｒ１０を生成する。
（２）乱数Ｒ０とＲ１を元に、ランダム化テーブル変換Ｓｍ０（３０ｃ）を構成する。具体的には、図７に示すように、８ｂｉｔ×２５６個のデータからなる変換テーブルを１６種類作成する。同様に乱数Ｒ１とＲ２、Ｒ２とＲ３、・・・、Ｒ９とＲ１０を元に、ランダム化テーブル変換Ｓｍ１〜Ｓｍ９を構成する。具体的な構成方法はＳｍ０と同様である。
（３）図５に従って、暗号処理を行う。オリジナルのＡＥＳ暗号処理と異なる点は、乱数Ｒ０との排他的論理和演算３０ａと乱数Ｒ１０に対する線形変換Ｌ２（３９ｅ）、及び前記線形変換の結果との排他的論理和演算３９ｆの追加と、テーブル変換処理３０ｃ、３１ｂ、・・・、３９ｂが、オリジナルの変換テーブルＴａｂの代わりに、乱数Ｒ０〜Ｒ１０を元に作成したランダム化変換テーブルを用いる点である。
【非特許文献１】Ｆｅｄｅｒａｌ  Ｉｎｆｏｒｍａｔｉｏｎ  ＰｒｏｃｅｓｓｉｎｇＳｔａｎｄａｒｄｓ  Ｐｕｂｌｉｃａｔｉｏｎ  １９７，「Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｆｏｒ  ｔｈｅ  ＡＤＶＡＮＣＥＤ  ＥＮＣＲＹＰＴＩＯＮ  ＳＴＡＮＤＡＲＤ（ＡＥＳ）」，Ｎｏｖｅｍｂｅｒ  ２６，２００１
【特許文献１】米国特許第６２９５６０６号明細書
【発明の開示】
【発明が解決しようとする課題】
【００３１】
しかしながら、前記従来技術においては、電力解析攻撃対策によってもたらされる暗号処理量の増加によって、暗号装置の処理速度が著しく低下するという課題を有している。即ち、生成した乱数を元に生成する必要のあるランダム化変換テーブル（８ｂｉｔ×２５６個の要素を持つテーブル）は、Ｓｍ０、Ｓｍ１、・・・、Ｓｍ９の各々に１６種類含まれる（例えば、Ｓｍ０の場合は、Ｔａｂ０ａ、Ｔａｂ０ｂ、・・・、Ｔａｂ０ｐの１６種類）。即ち、１回の暗号を行う際には、合計で１６×１０＝１６０種類ものランダム化変換テーブルを作成する必要がある。
【００３２】
また、ランダム化変換テーブルの生成に用いる乱数は、１回の暗号化処理ごとに異なるものである必要があり、上記のテーブル作成処理は、１回の暗号化処理を行うたびに実行する必要がある。従って、この電力解析対策のための追加処理により、暗号処理の処理速度が著しく低下してしまうという課題を有している。
【００３３】
また、上記１６０種類ものランダム化変換テーブルを記憶するためのメモリが暗号モジュール内に必要となるため、メモリ量も著しく増加してしまうという課題も有している。
【００３４】
本発明は、上述の課題を解決するためになされたものであり、電力解析攻撃を阻止でき、かつ、暗号処理の速度低下及びメモリ量増加を、従来よりも削減可能なデータ暗号化装置を提供することを目的とする。
【課題を解決するための手段】
【００３５】
前記従来の課題を解決するために、本発明のデータ暗号化装置は、平文に対して鍵に基づく所定の暗号処理を行い、暗号文を生成するデータ暗号化装置であって、ラウンドごとにコア乱数を１個生成し、前記コア乱数を所定の個数だけ連結して、第１乱数を生成する乱数生成部と、前記平文と前記第１乱数とのデータ融合を行い、中間データを生成する平文データ融合部と、ラウンドごとに前記中間データに対して、前記第１乱数と第２乱数と前記鍵に基づいて、データ撹乱処理を行う、データ撹乱部とを備える。
【００３６】
この構成によると、第１乱数はコア乱数の繰返しになっている。このため、例えば、コア乱数の個数が１６個であるとした場合には、データ撹乱処理を行なう場合に、従来１６個必要であったランダム化変換テーブルの個数を１つにすることができる。よって、暗号処理の速度低下を削減し、かつ暗号処理に必要なメモリ量を削減することができる。例えば、前記データ撹乱部は、ラウンドごとに、平文を前記所定の個数で等分したデータを変換する１つの変換テーブルを記憶する変換テーブル記憶部と、ラウンドごとに、前記変換テーブルを、前記第１乱数と前記第２乱数とに基づいて変形するテーブル変換を行い、１つの変形変換テーブルを生成する変換テーブル変形部と、前記変形変換テーブルを記憶する変形変換テーブル記憶部と、ラウンドごとに、前記中間データに対して、前記鍵と前記変形変換テーブルに記憶されている前記変形変換テーブルとに基づいて、前記中間データを前記所定の個数で等分した各データに対して、データ変換処理を行うデータ変換部とを備えるような構成にすればよい。
【００３７】
また、データ暗号化装置は、さらに、前記第１乱数に対して所定の乱数変換を行い、前記第２乱数を生成する乱数変換部を備えていてもよいし、前記データ撹乱部は、さらに、前記中間データに対して、所定の線形変換を行い、その結果を出力する線形変換部を備え、前記乱数変換部は、前記線形変換の逆変換を前記乱数変換として行ってもよい。
【００３８】
さらに、前記所定の暗号処理は、ＡＥＳ（Advanced Encryption Standard）暗号処理であって、前記線形変換部は、ＡＥＳ暗号処理におけるＩｎｖＭｉｘＣｏｌｕｍｎ処理とＩｎｖＳｈｉｆｔＲｏｗ処理とからなり、前記乱数変換部は、前記第１乱数を第２乱数として出力する構成であってもよい。
【００３９】
さらにまた、前記コア乱数は、すべてのラウンドにおいて同一の値であってもよい。
【００４０】
コア乱数をすべてのラウンドにおいて同一とすることにより、データ暗号化装置で使用される変形変換テーブルを１つにすることができる。このため、暗号処理の速度低下を削減し、かつ暗号処理に必要なメモリ量を削減することができる。
【００４１】
なお、本発明は、このような特徴的な手段を備えるデータ暗号化装置として実現することができるだけでなく、データ暗号化装置に含まれる特徴的な手段をステップとするデータ暗号化方法として実現したり、データ暗号化方法に含まれる特徴的なステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）等の記録媒体やインターネット等の通信ネットワークを介して流通させることができるのは言うまでもない。
【発明の効果】
【００４２】
本発明によると、電力解析攻撃を阻止でき、かつ、暗号処理の速度低下及びメモリ量増加を、従来よりも削減可能なデータ暗号化装置を提供することができる。
【００４３】
本発明の暗号装置によれば、暗号処理の中間データ及び変換テーブルをランダム化するための乱数を、ある一定のフォーマットに従い、かつ、各テーブル変換処理の前と後に排他的論理和演算される乱数それぞれが、全て同じ値になるように設定することで、電力解析攻撃のような、暗号処理中に暗号モジュールから発生する副情報を利用した解析方法を阻止しつつ、上記阻止のための対策による暗号処理の速度低下とメモリ量の増加が従来よりも削減されるという効果がある。
【発明を実施するための最良の形態】
【００４４】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００４５】
（電力解析攻撃を阻止するＡＥＳ暗号処理手順の概要）
図８は、電力解析攻撃を阻止するためのＡＥＳ暗号の処理手順を説明するブロック図である。また、図９は、ＡＥＳ暗号の処理手順を示したフローチャートである。以下、図８および図９を用いて暗号処理手順を説明する。なお、１２８ｂｉｔ×１１個のラウンド鍵Ｋ０、Ｋ１、・・・、Ｋ１０は、１２８ｂｉｔの暗号鍵から既に生成されているものとする。
【００４６】
（１）１２８ｂｉｔの乱数Ｒを生成する（Ｓ２）。また、乱数Ｒに線形変換Ｌ１の逆変換Ｌ１ｉを施した値Ｒ１を求める（Ｓ４）。更に、Ｒ１に線形変換Ｌ２を施した値Ｒ２を求める（Ｓ６）。ここで、線形変換Ｌ１及びＬ２は、前述のＬ１、Ｌ２と同じ処理である。
（２）１２８ｂｉｔの平文Ｐに対して、前記乱数Ｒとの排他的論理和演算を行う（４０ａ、Ｓ８）。
（３）ｉ＝０、１、・・・、９の順に、以下の処理（（３−１）〜（３−５））を繰り返し行う（ループＡ）。
（３−１）ラウンド鍵Ｋｉとの排他的論理和演算を行う（４０ｂ、４１ａ、４２ａ、・・・、４９ａ、Ｓ１０）。
（３−２）乱数Ｒとの排他的論理和演算を行う（４０ｃ、４１ｂ、４２ｂ、・・・、４９ｂ、Ｓ１２）。
（３−３）テーブル変換Ｓを行う（４０ｄ、４１ｃ、４２ｃ、・・・、４９ｃ、Ｓ１４）。ここで、テーブル変換Ｓは、既に述べたテーブル変換Ｓと同一である。
（３−４）乱数Ｒ１との排他的論理和演算を行う（４０ｅ、４１ｄ、４２ｄ、・・・、４９ｄ、Ｓ１６）。
（３−５）ｉ＝０〜８の場合は（Ｓ１８でＹＥＳ）、線形変換Ｌ１を行う（４０ｆ、４１ｅ、４２ｅ、・・・、４８ｅ、Ｓ２０）。ｉ＝９の場合は（Ｓ１８でＮＯ）、線形変換Ｌ２を行う（４９ｅ、Ｓ２２）。
（４）ラウンド鍵Ｋ１０との排他的論理和演算を行う（４９ｇ、Ｓ２４）。
（５）Ｒ２との排他的論理和演算を行う（４９ｈ、Ｓ２６）。
【００４７】
平文Ｐに対して、上記（１）〜（５）の処理を行った結果を、暗号文Ｃとして出力する。このとき、（１）、（２）、（３−２）及び（５）の処理が、オリジナルのＡＥＳ暗号処理から追加されている処理である。このような処理を追加しても、オリジナルのＡＥＳ暗号処理で得られる暗号文と同一の暗号文が得られることは、以下のことからわかる。
【００４８】
（Ａ）排他的論理和演算４０ａで平文データＰとの間で排他的論理和演算が行なわれる乱数Ｒの影響は、その後の、排他的論理和演算４０ｃによって除去される。即ち、ラウンド鍵Ｋ０との排他的論理和演算４０ｂによる処理後の値は、Ｐ（＋）Ｋ０（＋）Ｒであるが、排他的論理和演算４０ｃによる処理後の値は、Ｐ（＋）Ｋ０（＋）Ｒ（＋）Ｒ＝Ｐ（＋）Ｋ０となり、Ｒの影響は相殺される。
【００４９】
（Ｂ）テーブル変換４０ｄ、４１ｃ、４２ｃ、・・・、４８ｃの後の排他的論理和演算４０ｅ、４１ｄ、４２ｄ、・・・、４８ｄによって排他的論理和される乱数Ｒ１の影響は、それぞれ、その後のテーブル変換４１ｃ、４２ｃ、・・・、４９ｃの前の排他的論理和演算４１ｂ、４２ｂ、・・・、４９ｂによって除去される。例えば、排他的論理和演算４０ｅ後の中間値は、｛オリジナルＡＥＳ暗号の中間値｝（＋）Ｒ１となり、排他的論理和演算４１ｂの入力値は、｛オリジナルＡＥＳ暗号の中間値｝（＋）Ｌ１（Ｒ１）となる。ここで、Ｌ１（Ｒ１）は、Ｒ１に線形変換Ｌ１を施した結果を示すが、Ｒ１自体がＬ１ｉ（Ｒ）であることから、Ｌ１（Ｒ１）＝Ｒである。即ち、排他的論理和演算４０ｅの入力値は、｛オリジナルＡＥＳ暗号の中間値｝（＋）Ｒとなり、このＲの影響は、排他的論理和演算４１ｂにおいて、Ｒと排他的論理和演算することによって除去される。その他の場合についても同様である。
【００５０】
（Ｃ）テーブル変換４９ｃの後の排他的論理和演算４９ｄによって排他的論理和演算が施される乱数Ｒ１の影響は、その後の排他的論理和演算４９ｈによって除去される。即ち、排他的論理和演算４９ｄ後の暗号処理中間値は、｛オリジナルＡＥＳ暗号の中間値｝（＋）Ｒ１となり、排他的論理和演算４９ｈに入力される値は、｛オリジナルＡＥＳ暗号の中間値｝（＋）Ｌ２（Ｒ１）となる。ここで、Ｌ２（Ｒ１）＝Ｒ２であるから、排他的論理和演算４９ｈによるＲ２との排他的論理和によって、上記Ｌ２（Ｒ１）の影響は除去される。
【００５１】
（電力解析攻撃を阻止するＡＥＳ暗号装置４１０の構成）
図１０は、図８のＡＥＳ暗号処理手順を実現する暗号装置４１０の構成の一例を示したブロック図である。以下、暗号装置４１０による処理手順について、図９に示したフローチャートを参照しながら説明する。
【００５２】
暗号鍵保管部４１０ｃは、１２８ｂｉｔの暗号鍵を保管する。ラウンド鍵生成部４１０ｄは、暗号処理時に、暗号鍵保管部４１０ｃに保管する暗号鍵を元に、ＡＥＳ暗号のラウンド鍵生成手順に従って、１２８ｂｉｔ×１１個のラウンド鍵Ｋ０、Ｋ１、・・・、Ｋ１０を生成する。ラウンド鍵記憶部４１０ｅは、前記ラウンド鍵Ｋ０、Ｋ１、・・・、Ｋ１０を記憶する。
【００５３】
次に、乱数生成部４１０ａは、乱数Ｒを生成する（図９のＳ２）。乱数生成部４１０ａは、図１１に示すように、コア乱数生成部４１１ａと乱数拡大部４１１ｂからなる。乱数Ｒの生成時には、まず、コア乱数生成部４１１ａは、８ｂｉｔのコア乱数ｒを生成し、乱数拡大部４１１ｂに転送する。乱数拡大部４１１ｂは、前記乱数ｒを１６個連結した値を乱数Ｒとし、乱数生成部４１０ａは、この乱数Ｒを出力する。即ち、乱数Ｒは、
Ｒ＝ｒ‖ｒ‖・・・‖ｒ  （ｒの個数は１６個）
となる。ここで“‖”は、データの連結を表す。生成された１２８ｂｉｔの乱数Ｒは、排他的論理和部４１０ｂ、テーブルランダム化部４１０ｉ、第１線形逆変換部４１０ｈに転送する。
【００５４】
第１線形逆変換部４１０ｈは、前記乱数Ｒに対して線形変換Ｌ１の逆変換を施して、Ｒ１を求め（図９のＳ４）、テーブルランダム化部４１０ｉ及び第２線形変換部４１０ｏに転送する。第１線形逆変換部４１０ｈの詳細手順は、以下の通りである。まず、入力データＲを上位から８ｂｉｔずつ分割して、ａ０、ａ１、ａ２、・・・、ａ１５とする。次に、ｘ０＝ａ０、ｘ１＝ａ１、ｘ２＝ａ２、ｘ３＝ａ３とし、
【００５５】
【数２】
0004823904.tif 000003
で表されるＧＦ（２＾８）上の行列演算を行い、ｂ０、ｂ１、ｂ２、ｂ３を求める。これを、ｙ０＝ｂ０、ｙ１＝ｂ１、ｙ２＝ｂ２、ｙ３＝ｂ３とする。同様に、ｘ０＝ａ４、ｘ１＝ａ５、ｘ２＝ａ６、ｘ３＝ａ７として、前記行列演算により、ｂ０、ｂ１、ｂ２、ｂ３を求めて、ｙ４＝ｂ０、ｙ５＝ｂ１、ｙ６＝ｂ２、ｙ７＝ｂ３とする。更に、ｘ０＝ａ８、ｘ１＝ａ９、ｘ２＝ａ１０、ｘ３＝ａ１１として、ｙ８＝ｂ０、ｙ９＝ｂ１、ｙ１０＝ｂ２、ｙ１１＝ｂ３を求め、ｘ０＝ａ１２、ｘ１＝ａ１３、ｘ２＝ａ１４、ｘ３＝ａ１５として、ｙ１２＝ｂ０、ｙ１３＝ｂ１、ｙ１４＝ｂ２、ｙ１５＝ｂ３を求める。こうして求めたｙ０、ｙ１、・・・、ｙ１５を、上位から、ｙ０、ｙ１３、ｙ１０、ｙ７、ｙ４、ｙ１、ｙ１４、ｙ１１、ｙ８、ｙ５、ｙ２、ｙ１５、ｙ１２、ｙ９、ｙ６、ｙ３の順序で連結した１２８ｂｉｔデータを第１線形逆変換部４１０ｈの出力とする。ここで、上記行列演算式において、ｘ０＝ｘ１＝ｘ２＝ｘ３＝ｒとしたとき、ｙ０、ｙ１、ｙ２、ｙ３は、以下のように計算される。但し、乗算、加算は全てＧＦ（２＾８）上の演算である。
【００５６】
ｙ０＝ｙ１＝ｙ２＝ｙ３＝０Ｅｈ×ｒ＋０Ｂｈ×ｒ＋０Ｄｈ×ｒ＋０９ｈ×ｒ
＝０１ｈ×ｒ
＝ｒ
【００５７】
同様にしてｙ４〜ｙ１５も全てｒと等しいことが示されるので、第１線形逆変換部４１０ｈの出力Ｒ１は、Ｒ１＝Ｒ＝ｒ‖ｒ‖・・・‖ｒとなることが示された。即ち、第１線形逆変換部４１０ｈは、実際には何も処理を行わなくてよい。
【００５８】
次に、テーブルランダム化部４１０ｉは、乱数Ｒ及びＲ１を元にテーブル保管部４１０ｌに保管するオリジナルＡＥＳ暗号の変換テーブルＴａｂに対してランダム化を行う。従来技術であれば、図６に示すとおり、各テーブル変換処理３００ａ〜３００ｐの前と後には、それぞれ異なる乱数による排他的論理和演算が施されていた。これによって、図７に示すようなそれぞれ異なったランダム化変換テーブル３０３ａ〜３０３ｐを作成する必要があった。しかし、本実施の形態においては、既に示したとおり、乱数Ｒ及びＲ１がいずれもＲ１＝Ｒ＝ｒ‖ｒ‖・・・‖ｒである。このことによって、図１２に示すように、各テーブル変換処理４１２ａ〜４１２ｐの前と後に、全て同じ乱数ｒによる排他的論理和演算が施されることになる。従って、これら一連の処理（乱数による排他的論理和⇒テーブル変換⇒乱数による排他的論理和）は図１３に示すとおり、全て同じランダム化変換テーブルｍＴａｂに変形することになる。即ち、図１３は、図１４のように１個のランダム化変換テーブル４１６によって実現できる。具体的には、以下のようにしてランダム化変換テーブルｍＴａｂを生成する。まず、テーブルランダム化部４１０ｉは、テーブル保管部４１０ｌに保管している、オリジナルＡＥＳ暗号の変換テーブルＴａｂの配列データＴａｂ[０]〜Ｔａｂ[２５５]を読み出す。次に、上記配列データと乱数Ｒ及び乱数Ｒ１に含まれるコア乱数ｒを用いて以下のような配列データｍＴａｂ[０]〜ｍＴａｂ[２５５]を生成する。
【００５９】
ｍＴａｂ[ｉ]＝Ｔａｂ[ｉ（＋）ｒ]（＋）ｒ
テーブルランダム化部４１０ｉは、上記のようにして生成したランダム化変換テーブルｍＴａｂをランダムテーブル記憶部４１０ｊに転送し、記憶する。
【００６０】
更に、第２線形変換部４１０ｏは、乱数Ｒ１に対して線形変換Ｌ２を施して、Ｒ２を求め、排他的論理和部４１０ｐに転送する（図９のＳ６）。ここで、線形変換Ｌ２は、既に述べたとおり、バイト単位の置換であり、かつ、乱数Ｒ１は既に説明した通り、Ｒ１＝Ｒ＝ｒ‖ｒ‖・・・‖ｒ（ｒは８ｂｉｔ）であることから、Ｌ２（Ｒ１）＝Ｒ１＝Ｒである。即ち、実際には、第２線形変換部４１０ｏは、何も処理を行わなくてよい。
【００６１】
以上が、暗号処理を行うための前処理であり、以下では、上記前処理結果を元にして、平文Ｐに対する暗号処理を行う手順を述べる。
【００６２】
暗号装置４１０に入力される平文Ｐに対して、排他的論理和部４１０ｂは、前記乱数Ｒとの排他的論理和演算を行い、その結果をレジスタ４１０ｇに転送し、一時記憶する（図９のＳ８）。
【００６３】
次に、排他的論理和部４１０ｆは、レジスタ４１０ｇ内のデータを読み出して、ラウンド鍵記憶部４１０ｅに記憶するラウンド鍵Ｋ０との排他的論理和演算を行い、結果をレジスタ４１０ｇに書き込む（図９のＳ１０）。このとき、書き込む前にレジスタに記憶しているデータは上書きされて消去される。
【００６４】
次に、テーブル変換部４１０ｋは、レジスタ４１０ｇ内のデータを読み出して、ランダムテーブル記憶部４１０ｊに記憶するランダム化変換テーブルｍＴａｂに基づいてテーブル変換処理を行う（図９のＳ１２〜Ｓ１６）。具体的には、レジスタ４１０ｇから読み出したデータをＸとすると、テーブル変換処理後のデータＹは、
Ｙ＝ｍＴａｂ［Ｘ］
として求められる。変換処理後のデータは、レジスタ４１０ｇに上書きする。上書き前のレジスタ４１０ｇ内のデータは消去される。
【００６５】
次に、第１線形変換部４１０ｍは、レジスタ４１０ｇのデータを読み出して、線形変換Ｌ１を施して、レジスタ４１０ｇに上書きする（図９のＳ１８でＹＥＳ、Ｓ２０）。
【００６６】
上記処理の後、以上の排他的論理和部４１０ｆ、テーブル変換部４１０ｋ、第１線形変換部４１０ｍの一連の処理を、ラウンド鍵Ｋ１、Ｋ２、Ｋ３、・・・、Ｋ９を用いて繰り返し行う（図９のループＡ）。但し、ラウンド鍵Ｋ９を用いて上記一連の処理を行う時に限り、第１線形変換部４１０ｍによる処理の代わりに、第２線形変換部４１０ｎによる線形変換Ｌ２の処理を行う（図９のＳ１８でＮＯ、Ｓ２２）。
【００６７】
更に、排他的論理和部４１０ｆは、レジスタ４１０ｇ内のデータを読み出して、ラウンド鍵記憶部４１０ｅに記憶するラウンド鍵Ｋ１０との排他的論理和演算を行い、結果をレジスタ４１０ｇに書き込む（図９のＳ２４）。
【００６８】
そして、排他的論理和部４１０ｐは、レジスタ４１０ｇに記憶するデータを読み出して、乱数Ｒ２との排他的論理和演算を行い、その結果を暗号文Ｃとして暗号装置４１０から出力する（図９のＳ２６）。
【００６９】
（ＡＥＳ復号処理手順の概要）
以上、説明した電力解析攻撃を阻止するＡＥＳ暗号処理で作成された暗号文Ｃを復号する処理手順について説明する。
【００７０】
図１５は、ＡＥＳ復号の処理手順を説明するブロック図である。図８に示した暗号処理手順との違いは、暗号文Ｃから平文Ｐを生成するために、データの流れが逆になっている点である。
【００７１】
また、テーブル変換Ｓの代わりにテーブル変換Ｓの逆変換Ｓｉを施し、線形変換Ｌ１の代わりに線形変換Ｌ１の逆変換Ｌ１ｉを施し、線形変換Ｌ２の代わりに線形変換Ｌ２の逆変換Ｌ２ｉを施す点が異なる。ただし、線形変換Ｌ２（４８ｆ）については、そのままである。
【００７２】
（復号装置５１０の構成）
図１６は、暗号装置４１０で暗号化された暗号文Ｃを復号して平文Ｐを求めるための復号装置５１０の構成を示すブロック図である。ここでは、暗号装置４１０との差異部分のみ説明する。
【００７３】
逆テーブル保管部５１０ｌは、テーブル保管部４１０ｌに保管していた変換テーブルＴａｂと逆変換の関係にある、逆変換テーブルＩＴａｂを保管する。具体的には、ＩＴａｂの配列要素ＩＴａｂ［０］〜ＩＴａｂ［２５５］は、以下のように定義される。
【００７４】
ＩＴａｂ［Ｔａｂ［ｉ］］＝ｉ  （ｉ＝０、１、・・・、２５５）
逆テーブルランダム化部５１０ｉは、逆変換テーブルＩＴａｂから、ランダム化逆変換テーブルＩｍＴａｂを求める方法は、テーブルランダム化部４１０ｉで述べた方法と同じであるから省略する。
【００７５】
復号装置５１０による復号処理では、最初に、排他的論理和部５１０ｐの処理を行う。これは、排他的論理和部４１０ｐと同一の処理である。次に、排他的論理和部４１０ｆと同様にして、排他的論理和部５１０ｆが、ラウンド鍵Ｋ１０を用いた排他的論理和演算を行う。そして、第１線形逆変換部５１０ｍ、逆テーブル変換部５１０ｋ、排他的論理和部５１０ｆの順序からなる一連の処理を、ラウンド鍵Ｋ９、Ｋ８、・・・、Ｋ１、Ｋ０の順にラウンド鍵を用いて繰り返し行う。このとき、ラウンド鍵Ｋ９を用いた場合の一連の処理では、第１線形逆変換部５１０ｍの代わりに、第２線形逆変換部５１０ｎによる処理を行う。このとき、第１線形逆変換部５１０ｍは、既に述べた線形変換Ｌ１の逆変換処理Ｌ１ｉを行い、第２線形逆変換部５１０ｎは、線形変換Ｌ２の逆変換処理Ｌ２ｉを行う。上記処理の後、排他的論理和部５１０ｂが、排他的論理和演算を行い、その結果を平文Ｐとして出力する。
【００７６】
以上のように、本実施の形態では、８ｂｉｔ×２５６個の配列要素からなるランダム化変換テーブルを１個だけ作成して記憶しておけばよい。従来技術では、８ｂｉｔ×２５６個の配列要素からなるランダム化変換テーブルを、１６０個も作成する必要があったので、ランダム化変換テーブルを作成するための処理量は、従来技術と比べると１６０分の１に削減される。
【００７７】
なお、本実施の形態では、電力解析攻撃対策の対象とする暗号を、ＡＥＳ暗号としているが、ＡＥＳ暗号だけに限らず、ラウンド鍵とのデータ融合、テーブル変換、線形変換という一連の処理からなる繰り返し型の暗号方式であれば同様の方法により適用可能である。そのような暗号方式の例としては、Ｃａｍｅｌｌｉａ暗号や、Ｈｉｅｒｏｃｒｙｐｔ暗号などがある。
【００７８】
また、本実施の形態において、二つのデータをデータ融合する方法として、排他的論理和演算を用いているが、これは、算術加算であってもよい。
【００７９】
また、本実施の形態において、第１線形逆変換部４１０ｍ及び第２線形変換部４１０ｎは、実際には何も処理をおこなわなくてよいので、これらは省略してもよい。
【００８０】
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
【００８１】
（１）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【００８２】
（２）上記の各装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。
【００８３】
（３）上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【００８４】
（４）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【００８５】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【００８６】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【００８７】
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【００８８】
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【００８９】
（５）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【００９０】
本発明にかかる暗号装置は、電力解析攻撃を阻止しつつ、従来技術よりも、暗号処理の処理量を削減するという特徴を有するので、本発明は、高速処理あるいは低コストでの実現が求められる暗号装置等に適用できる。
【図面の簡単な説明】
【００９１】
【図１】図１は、ＡＥＳ暗号の処理手順を示すブロック図である。
【図２】図２は、ＡＥＳ暗号のテーブル変換処理１０ｂの構成を示すブロック図である。
【図３】図３は、ＡＥＳ暗号の暗号装置１１０の構成を示すブロック図である。
【図４】図４は、従来技術に係るＡＥＳ暗号の処理手順を示すブロック図である。
【図５】図５は、従来技術に係るＡＥＳ暗号の処理手順を示すブロック図である。
【図６】図６は、従来技術に係るランダム化テーブル変換処理３０ｃの構成を示すブロック図である。
【図７】図７は、従来技術に係るランダム化テーブル変換処理３０ｃの構成の変形例を示すブロック図である。
【図８】図８は、本発明の実施の形態に係るＡＥＳ暗号処理手順を示すブロック図である。
【図９】図９は、ＡＥＳ暗号の処理手順を示したフローチャートである。
【図１０】図１０は、本発明の実施の形態に係る暗号装置４１０の構成を示すブロック図である。
【図１１】図１１は、本発明の実施の形態に係る乱数生成部４１０ａの構成を示すブロック図である。
【図１２】図１２は、本発明の実施の形態に係るランダム化テーブル変換処理の構成を示すブロック図である。
【図１３】図１３は、本発明の実施の形態に係るランダム化テーブル変換処理の第１の変形例を示すブロック図である。
【図１４】図１４は、本発明の実施の形態に係るランダム化テーブル変換処理の第２の変形例を示すブロック図である。
【図１５】図１５は、ＡＥＳ復号の処理手順を説明するブロック図である。
【図１６】図１６は、本発明の実施の形態に係る復号装置５１０の構成を示すブロック図である。
【符号の説明】
【００９２】
４１０    暗号装置
４１０ａ    乱数生成部
４１０ｂ    排他的論理和部
４１０ｃ    暗号鍵保管部
４１０ｄ    ラウンド鍵生成部
４１０ｅ    ラウンド鍵記憶部
４１０ｆ    排他的論理和部
４１０ｇ    レジスタ
４１０ｈ    第１線形逆変換部
４１０ｉ    テーブルランダム化部
４１０ｊ    ランダムテーブル記憶部
４１０ｋ    テーブル変換部
４０１ｌ    テーブル保管部
４０１ｍ    第1線形変換部
４０１ｎ    第２線形変換部
４０１ｏ    第２線形変換部
４１０ｐ    排他的論理和部
５１０    復号装置
５１０ａ    乱数生成部
５１０ｂ    排他的論理和部
５１０ｃ    暗号鍵保管部
５１０ｄ    ラウンド鍵生成部
５１０ｅ    ラウンド鍵記憶部
５１０ｆ    排他的論理和部
５１０ｇ    レジスタ
５１０ｈ    第１線形逆変換部
５１０ｉ    逆テーブルランダム化部
５１０ｊ    逆ランダムテーブル記憶部
５１０ｋ    逆テーブル変換部
５０１ｌ    逆テーブル保管部
５０１ｍ    第1線形逆変換部
５０１ｎ    第２線形逆変換部
５０１ｏ    第２線形変換部
５１０ｐ    排他的論理和部
【図１】
0004823904.tif 000004
【図２】
0004823904.tif 000005
【図３】
0004823904.tif 000006
【図４】
0004823904.tif 000007
【図５】
0004823904.tif 000008
【図６】
0004823904.tif 000009
【図７】
0004823904.tif 000010
【図８】
0004823904.tif 000011
【図９】
0004823904.tif 000012
【図１０】
0004823904.tif 000013
【図１１】
0004823904.tif 000014
【図１２】
0004823904.tif 000015
【図１３】
0004823904.tif 000016
【図１４】
0004823904.tif 000017
【図１５】
0004823904.tif 000018
【図１６】
0004823904.tif 000019