説明

Rijndael型192bitブロック暗号化装置、方法、及びそのプログラム

【課題】Rijndael型192bitブロック暗号の演算の過程でより多くのbyteに丸め差分を持たせることができ、かつ、従来と同じ暗号化処理能力を持つRijndael型192bitブロック暗号化装置を提供する。
【解決手段】ラウンドごとのRoundKeyが予め記憶されたRoundKey記憶部と、入力された192bitの平文に、ByteSub、ShiftRow、MixColumn、AddRoundKeyの4つの演算を1ラウンドとするラウンド関数を、ラウンドごとにRoundKey記憶部から読み出したRoundKeyを用いて、複数ラウンド繰り返し適用するRijndael型192bitブロック暗号化アルゴリズムにより暗号文を生成する暗号文生成部と、 を備え、前記ShiftRow演算のShiftRowパラメータ(s0,s1,s2,s3)は、(0,1,3,4)である。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、より安全性の高いブロック暗号の設計手法に関するものであり、特に、Rijndael型192bitブロック暗号の丸め差分攻撃に対する安全性がより高いRijndael型192bitブロック暗号化装置、方法、及びそのプログラムに関する。
【背景技術】
【0002】
ブロックサイズN-bitのブロック暗号Ekは、送信者と受信者で予め共有しておいた秘密鍵Kを用いて、N-bitの平文PからN-bitの暗号文Ek(P)を生成する、Kに依存する置換処理である。
【0003】
Rijndael型192bitブロック暗号(非特許文献1参照)のアルゴリズムにおいては、Ekは192bitの入力ブロックに対してラウンド関数Rkという処理を複数ラウンド(12ラウンド以上であることが望ましい)繰り返し適用するものである。すなわち、192bit単位にブロック化された平文Pに対する暗号化処理は、192bitの変数Xi(i=0、1、…、t−1)を用いて以下のように記述することができる。
【0004】
0 ←P
i+1 ←Rk(Xi)
k(P) ←Xt
Rijndael型192bitブロック暗号のアルゴリズムにおいては、1byte(8bit)が1要素として扱われ、図4に示すように192bitブロックは、24個の要素(byte)からなる4×6の行列として表現される。ここで、行列の横方向の各行をithrow(i=0,1,2,3)、縦方向の各列をjthcolumn(j=0,1,2,3,4,5)と呼び、192bit(24byte)全体をステートと呼ぶ。
【0005】
ラウンド関数Rkは、ByteSub、ShiftRow、MixColumn、AddRoundKeyの4つの演算をこの順番で適用する関数である。
【0006】
ByteSubは、非線形のbit転置であり、各byteの内部でbit転置を行う。
【0007】
ShiftRowは、非線形の転置処理であり、図5(a)に示すように、i番目のrowにある各バイトを左にsiバイト巡回シフトする。s0、s1、s2、s3の4つの変数をShiftRowパラメータと呼び、非特許文献1においては192bitブロックに対し(s0,s1,s2,s3)=(0,1,2,3)としている。
【0008】
MixColumnは、図5(b)に示すように各Columnに対し4×4の行列を掛ける処理を行う。ここでいう4×4の行列は非特許文献1所定のものである。
【0009】
AddRoundKeyは、MixColumn演算後の4×6行列と、非特許文献1所定の方法により秘密鍵Kから各ラウンドごとに生成された4×6の行列であるRoundKeyとが入力され、両行列の各要素について排他的論理和をとったものを出力する。
【先行技術文献】
【非特許文献】
【0010】
【非特許文献1】Joan Daemen, Vincent Rijmen, "AES Proposal: Rijndael", NIST AES Proposal, 1998, last updated at 1999
【発明の概要】
【発明が解決しようとする課題】
【0011】
異なる2つの平文P、P´を暗号化するとき、Pに対して演算した時の値とP´に対して演算したときの値とのbit毎の排他的論理和(xor)を差分と呼ぶ。例えば平文の差分はP xor P´で表され、暗号文の差分はEk(P) xor Ek(P´)で表される。演算の途中状態の差分も同様に定義できる。
【0012】
異なる2つの平文P、P´を暗号化したとき、2つの暗号化の演算過程の値、及び演算結果は、独立にランダムに振る舞うことが望ましい。すなわち差分が偏った値であること、すなわち演算過程全体として差分が小さいことは望ましくない。
【0013】
差分はブロック暗号の安全性を評価する上で、ひとつの重要な指標として用いられる。差分に偏りがある平文ペアを簡単に見つけることができるブロック暗号は安全ではないと評価され、見つけることが困難であるブロック暗号は安全であると評価される。
【0014】
差分の考えの拡張として、byte単位など複数bitを同時に考慮し、複数bitうちどれか1bitでも差分があるか、又は全てのbitに差分が無いかを表したものを丸め差分と呼ぶ。Rijndael型192bitブロック暗号のようにbyte単位で処理を行う暗号方式に対しては、この丸め差分に基づく攻撃方法の存在が知られている(丸め差分攻撃)。
【0015】
演算の過程において、丸め差分を持つbyteの累積個数が多ければ多いほど、差分が偏りを持たなくなり安全であると言える。そのため、ブロック暗号の設計者は、できるだけ差分が偏りを持たないように、つまり、できるだけ丸め差分を持つバイトの累積個数が多くなるように設計を行う必要がある。
【0016】
しかし、非特許文献1に開示されたRijndael型192bitブロック暗号においては、ラウンド関数Rkによる5ラウンドの変換処理で42byte(簡単のため、各Rk処理の先頭のバイト数のみをカウント)しか丸め差分を持たないような、丸め差分の伝搬経路が存在するという問題があった。
【0017】
図6は、5ラウンドの変換処理(#1〜5)で累積の丸め差分が42byteとなる過程を図示したものである。灰色部分が丸め差分を持つbyteであり、図6のように処理前に右上隅のbyteにのみ丸め差分がある時に5ラウンドの変換処理後の丸め差分の累積個数が最小となる。処理前に1byteであった丸め差分は、1ラウンド目で4byteとなり、2ラウンド目で4byteから16byteとなり、3ラウンド目では16byteが維持され、4ラウンド目で16byteから4byteとなり、5ラウンド目で4byteから1byteとなっている。従って、累積で42(=1+4+16+16+4+1)byteとなる。なお、ラウンド関数Rkの4つの演算のうち、ByteSubとAddRoundKeyについては、各byte内の処理であり、他のbyteへの丸め差分の伝搬に関わらないため、演算の前後で丸め差分を持つbyteに変化は生じない。また、MixColumnの演算は「入力の4byte全てに丸め差分がなければ、出力4byte全てに丸め差分がなく、それ以外の場合、入出力の合計8byte中、少なくとも5byte以上に丸め差分が存在する」というMDSと呼ばれる性質を持つが、図6の各ラウンドのMixColumn演算はMDSの丸め差分バイト数の性質を満たしている。
【0018】
本発明の目的は、Rijndael型192bitブロック暗号の演算の過程でより多くのbyteに丸め差分を持たせることができ、かつ、従来と同じ暗号化処理能力を持つRijndael型192bitブロック暗号化装置、方法、及びそのプログラムを提供することにある。
【課題を解決するための手段】
【0019】
本発明のRijndael型192bitブロック暗号化装置は、ラウンドごとのRoundKeyが予め記憶されたRoundKey記憶部と、入力された192bitの平文に、ByteSub、ShiftRow、MixColumn、AddRoundKeyの4つの演算を1ラウンドとするラウンド関数を、ラウンドごとにRoundKey記憶部から読み出したRoundKeyを用いて、複数ラウンド繰り返し適用するRijndael型192bitブロック暗号化アルゴリズムにより暗号文を生成する暗号文生成部と、を備え、
前記ShiftRow演算のShiftRowパラメータ(s0,s1,s2,s3)は、(0,1,3,4)であることを特徴とする。
【発明の効果】
【0020】
本発明は、ShiftRowパラメータを適切に選択することによって、演算の過程でより多くのbyteに丸め差分を持たせるものである。ShiftRowパラメータの変更は暗号化処理能力に影響を及ぼさないため、従来と同じ暗号化処理能力を確保しつつ、従来より安全性が高いRijndael型192bitブロック暗号化装置、方法、及びそのプログラムを提供することができる。
【図面の簡単な説明】
【0021】
【図1】ShiftRowパラメータを最適化した本発明のラウンド関数を、入力文に5ラウンド適用した場合の、丸め差分を持つbyteの遷移の様子を示す図。
【図2】Rijndael型192bitブロック暗号化装置100の構成例を示すブロック図。
【図3】Rijndael型192bitブロック暗号化装置100の処理フロー例を示す図。
【図4】192bitの変数を4×6の行列化するイメージを示す図。
【図5】ShiftRow演算及びMixColumn演算のイメージを示す図。
【図6】従来技術のラウンド関数を、入力文に5ラウンド適用した場合の、丸め差分を持つbyteの遷移の様子を示す図。
【発明を実施するための形態】
【0022】
本発明は、Rijndael型192bitブロック暗号の演算の過程でより多くのbyteに丸め差分を持たせるため、ラウンド関数RkにおけるShiftRow演算に用いるShiftRowパラメータを最適化する。具体的には、ShiftRowパラメータ(s0,s1,s2,s3)として(0,1,3,4)を用いる。
【0023】
図1は、ShiftRowパラメータ(s0,s1,s2,s3)として(0,1,3,4)を用いた場合に、5ラウンドの変換処理(#1〜5)において、丸め差分を持つbyteが遷移していく様子を示したものである。灰色部分が丸め差分を持つbyteであり、図1のように処理前に右上隅のbyteにのみ丸め差分がある時に5ラウンドの変換処理後の丸め差分の累積個数が最小となる。処理前は1byteであった丸め差分は、1ラウンド目で4byteとなり、2ラウンド目で4byteから16byteとなり、3ラウンド目で16byteから24byteとなり、4ラウンド目で24byteから8byteとなり、5ラウンド目で8byteから2byteとなっている。従って、累積で55(=1+4+16+24+8+2)byteとなる。
【0024】
このように、ShiftRowパラメータ(s0,s1,s2,s3)として(0,1,3,4)を用いることで、図6に示す42byteの丸め差分を発生させるパターンが形成不可能になり、代わりに図1に示すパターンが最小の丸め差分55byteを発生させる。
【0025】
図2は、上記のShiftRowパラメータを用いて暗号化を行うRijndael型192bitブロック暗号化装置100の構成例を示すブロック図である。また、図3はその処理フロー例である(S1〜S7)。適用するShiftRowパラメータが異なる以外は、構成、処理フローとも従来技術による場合と相違は無い。
【0026】
Rijndael型192bitブロック暗号化装置100は、ByteSub演算を行うByteSub演算部110とShiftRow演算を行うShiftRow演算部120とMixColumn演算を行うMixColumn演算部130とAddRoundKey演算を行うAddRoundKey演算部140とラウンドごとのRoundKeyが予め記憶されたRoundKey記憶部150とを備える。RoundKeyは、非特許文献1所定の方法により秘密鍵Kから各ラウンドごとに生成された4×6の行列である。
【0027】
平文は192bit単位にブロック化されて入力され(S1)、ブロック毎に暗号化処理が行われる。処理に際しては、各ブロックは図4に示すようなbyte単位の4×6の行列として扱われる。4×6のbyte行列化された192bitブロックは、まずAddRoundKey演算部140でRoundKey記憶部150から読み出された第1ラウンドのRoundKeyと排他的論理和がとられ初期化される(S2)。この初期化した行列がByteSub110に入力され、まずByteSub演算が施され(S3)、続いてShiftRow演算部120にてShiftRowパラメータ(s0,s1,s2,s3)として(0,1,3,4)を用いたShiftRow演算が施され(S4)、続いてMixColumn演算部130にてMixColumn演算が施され(S5)、続いてAddRoundKey演算部140にてRoundKey記憶部150から読み出された第2ラウンドのRoundKeyとの排他的論理和がとられる(S6)。そしてS3〜S6の処理を各ラウンドのRoundKeyを用いつつ複数ラウンド(12ラウンド以上であることが望ましい)繰り返した後、得られた結果を暗号文として出力する(S7)。
【0028】
以上のように本発明は、ShiftRowパラメータを適切に選択することによって、演算の過程でより多くのbyteに丸め差分を持たせるものである。ShiftRowパラメータの変更は暗号化処理能力に影響を及ぼさないため、従来と同じ暗号化処理能力を確保しつつ、従来より安全性が高いRijndael型192bitブロック暗号化装置、方法、及びそのプログラムを提供することができる。
【0029】
上記の各処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【0030】
また、本発明のRijndael型192bitブロック暗号化装置をコンピュータによって実現する場合、装置の各部が有す機能の処理内容はプログラムによって記述される。そのプログラムは、例えば、ハードディスク装置に格納されており、実行時には必要なプログラムやデータがRAM(Random Access Memory)に読み込まれる。その読み込まれたプログラムがCPUにより実行されることにより、コンピュータ上で各処理内容が実現される。なお、処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。

【特許請求の範囲】
【請求項1】
ラウンドごとのRoundKeyが予め記憶されたRoundKey記憶部と、
入力された192bitの平文に、ByteSub、ShiftRow、MixColumn、AddRoundKeyの4つの演算を1ラウンドとするラウンド関数を、ラウンドごとにRoundKey記憶部から読み出したRoundKeyを用いて、複数ラウンド繰り返し適用するRijndael型192bitブロック暗号化アルゴリズムにより暗号文を生成する暗号文生成部と、
を備えるRijndael型192bitブロック暗号化装置であって、
前記ShiftRow演算のShiftRowパラメータ(s0,s1,s2,s3)は、(0,1,3,4)である
ことを特徴とするRijndael型192bitブロック暗号化装置。
【請求項2】
請求項1に記載のRijndael型192bitブロック暗号化装置において、
ラウンド関数の適用ラウンド数は12以上である
ことを特徴とするRijndael型192bitブロック暗号化装置。
【請求項3】
暗号文生成部が、入力された192bitの平文に、ByteSub、ShiftRow、MixColumn、 AddRoundKeyの4つの演算を1ラウンドとするラウンド関数を、ラウンドごとにRoundKey記憶部から読み出したRoundKeyを用いて、複数ラウンド繰り返し適用するRijndael型192bitブロック暗号化アルゴリズムにより暗号文を生成するRijndael型192bitブロック暗号化方法であって、
前記ShiftRow演算のShiftRowパラメータ(s0,s1,s2,s3)は、(0,1,3,4)である
ことを特徴とするRijndael型192bitブロック暗号化方法。
【請求項4】
請求項3に記載のRijndael型192bitブロック暗号化方法において、
ラウンド関数の適用ラウンド数は12以上である
ことを特徴とするRijndael型192bitブロック暗号化方法。
【請求項5】
請求項1又は2に記載のRijndael型192bitブロック暗号化装置としてコンピュータを機能させるためのプログラム。

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図1】
image rotate

【図6】
image rotate