共通鍵ブロック暗号評価装置、共通鍵ブロック暗号評価方法及びプログラム
【課題】これまでの飽和特性探索では、バランス状態が非線形関数に入力されるとその出力状態は不明として扱っていた。しかしながら、非線形関数の構造と入力の状態によっては、出力状態がバランスする場合があり、正確な評価を行えなかった。
【解決手段】評価を行う暗号アルゴリズムの関数Fの構造を考慮したうえで、全数データが関数Fを通過する回数を調べる。全数データが関数Fを1回だけ通過したデータどうしの排他的論理和であるデータならば、関数Fの構造から特殊なバランス状態であるかどうかを判定する。
【解決手段】評価を行う暗号アルゴリズムの関数Fの構造を考慮したうえで、全数データが関数Fを通過する回数を調べる。全数データが関数Fを1回だけ通過したデータどうしの排他的論理和であるデータならば、関数Fの構造から特殊なバランス状態であるかどうかを判定する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、共通鍵ブロック暗号に対する解読法である飽和攻撃で利用する飽和特性の探索を行う共通鍵ブロック暗号評価装置、共通鍵ブロック暗号評価方法及びプログラムに関する。
【背景技術】
【0002】
共通鍵ブロック暗号の解読法の一つに飽和攻撃(Saturation attacks)がある。飽和攻撃は、選択平文攻撃に分類される。飽和攻撃が最初に提案され、適用された暗号は、Daemenらによって提案されたブロック暗号SQUAREであった。提案された当時は、SQUARE攻撃と呼ばれていたが、近年は飽和攻撃と呼ばれている。
【0003】
まず、飽和攻撃の前提知識として、全単射について説明する。
【0004】
図1に示すように、f:A→Bという写像があったとき、集合Aの任意の元が集合Bの任意の元と一対一に定義される写像を全単射という。
【0005】
関数fを、nビット入出力の全単射な関数としたとき、入力値と出力値はそれぞれ、0〜2n−1のいずれかとなる。
【0006】
ここで、0〜2n−1の全ての値のビット毎の排他的論理和(以降、XORと記述し、“+"の記号で表記する)による総和は、ゼロになるという特性がある。
【0007】
例えばn=2の場合、0〜22−1(=3)となり、ビットで表現すると、00(0)、01(1)、10(2)、11(3)となる。
【0008】
右側のビット位置をビット0とすると、ビット0の総和は、0+1+0+1=0、ビット1の総和は、0+0+1+1=0となる。
【0009】
この特性は、n(n>1)の値に依らず保たれる。以降、総和がゼロになることを“バランスする"、そのような状態を“バランス状態”という。
【0010】
バランス状態には以下の4つの種類がある。
【0011】
(1).全通りの値が1回ずつ出現
前述したように、nビット幅で2n種類の値が1回ずつ出現している状態である。
【0012】
(2).一部の値、または全通りの値が偶数回ずつ出現
同じ値どうしのXORはゼロであるため、偶数個の同じ値をXORしてもバランスする。どのような値が出ていようとも値ごとの総和はゼロとなるので、全体でもゼロとなりバランスする。以降、これを“偶数バランス"と表現する。
【0013】
(3).全通りの値が全て奇数回ずつ出現
奇数回は(偶数回+1回)であるため、全通りの値が出現していれば(全通りの値が偶数回+全通りの値が1回)という状態といえるので、これもバランスする。以降、これを“奇数バランス"と表現する。
【0014】
(4).混合状態
偶数回と奇数回が入り混じったような、複雑なバランス状態である。以降、これを“混合バランス"と表現する。
【0015】
これら4つとは別に、一種類の値のみが偶数回出現していても総和はバランスするが、これは“定数"として区別する。
【0016】
上記(1)〜(3)の3つのバランス状態は、全単射な写像を何回繰り返してもバランス状態は保たれるが、混合バランスは値の絶妙な組み合わせでバランスしているので、次に全単射な写像による変換が行われるとバランス状態が保たれる保証はない。
【0017】
次に、飽和攻撃の手順を簡単に説明する。
【0018】
Rラウンドで構成される共通鍵ブロック暗号があり、いくらかの平文を与えたときに、R−1ラウンドの出力がバランスする特性があったとする。
【0019】
このとき、第Rラウンドの鍵を仮定し、得られている暗号文全てについて遡り、第R−1ラウンドの出力データを得る。
【0020】
遡ったデータの総和を計算し、バランスしなければ鍵の仮定が誤っていたとして正解の鍵候補から棄却できる。バランスした鍵が正解の鍵候補となる。候補が一つになればそれが正しい鍵と判断する。
【0021】
このように飽和攻撃では、バランス状態が何ラウンド後まで存在するかが解読可能となるラウンド数に影響するため、バランス状態を正しく評価する必要がある。
【0022】
図2は、共通鍵ブロック暗号の一例である。入力データをx0〜x3の4つに分割して処理を行う一般化Feistel構造である。
【0023】
1ラウンドあたり、4つのデータのうちの2つが関数Fで変換され、残りの2つのデータにそれぞれXORされる。図中の+記号を丸で囲った記号は、XORを表す。
【0024】
各データはそれぞれmビットとする。関数F0と関数F1はmビットのデータと鍵データとの攪拌を行う。入力されたmビットのデータに対して、鍵データkeyがXORされる。
【0025】
S0とS1はそれぞれ一般的にS−boxと呼ばれる非線形変換である。それぞれの入出力データサイズは、m/2ビットとなる。
【0026】
M0とM1はそれぞれ線形変換である。M0を例として説明すると、以下のような式で表される変換である。
【0027】
【数1】
【0028】
【数2】
【0029】
ここで行われる演算は有限体上のものであり、結果が変数のサイズより大きくなることはない。ここでα0はS0の出力、α1はS1の出力である。β0とβ1を連結した値がM0の出力、つまり関数F0の出力である。
【0030】
このように、S−boxと拡散層によって構成されている構造をSP型と呼ぶことにする。
【0031】
なお、以降の説明では、鍵データの値は状態遷移には影響しないので、図を簡単にするために関数Fに入力される鍵データは省略してある。
【0032】
図中の記号“A"は全通りの値が現れることを、記号“B"はバランス状態であることを、記号“C"は定数であることを、そして記号“U"は状態が不明であることを表す。なお、Bがどのような状態によって構成されているかはここでは区別していない。
【0033】
状態は、関数Fを通過したり、XORされたりすると変化する。状態遷移は、図3に示すような表で表すことができる。
【0034】
入力のAは0〜2m−1までの2m通りのデータであり、Cは任意の定数である。つまり、入力の{C、A、C、C}は2m通りのデータの集合を意味する。
【0035】
第4ラウンドの出力データ32は、AとAのXORであり、その結果はBとなる。関数F0と関数F1では、鍵データが作用するため、全数の値の出現順序は不明である。すなわち、Bがどのバランス状態にあるのかは知ることができない。
【0036】
従って、これまではBが関数Fを通過すると、状態はUとして評価を行っていた。非特許文献1に記載される飽和攻撃評価でもそのように評価されている。
【非特許文献1】Sony Corporation、The 128-bit Blockcipher CLEFIA Security and Performance Evaluations Revision 1.0、インターネット<URL:http://www.sony.co.jp/Products/clefia/technical/data/clefia-eval-1.0.pdf>
【発明の開示】
【発明が解決しようとする課題】
【0037】
しかしながら、従来における飽和特性探索法では、バランス状態の構成を区別できないため、バランス状態が非線形変換を通過すると、その出力の状態は不明として扱うしかなかった。
【0038】
不明な状態は、飽和攻撃には利用できない特性なので、バランス状態を不明として扱うことがあれば、評価として不十分ということになる。
【0039】
そこで本発明は、上記問題点に鑑みてなされたもので、飽和攻撃に対する評価指標である飽和特性の探索法について、関数Fを通過してもバランス状態が保持されるバランス状態を探索できる共通鍵ブロック暗号評価装置を提供することを目的とする。
【課題を解決するための手段】
【0040】
上記課題を解決するため、本発明における共通鍵ブロック暗号評価装置は、データの分割数pと、データサイズqと、が2p≧qを満たすか否かを判定する関数タイプ判定手段と、入力状態を飽和特性の初期状態として、関係式を用いてラウンド処理後の飽和特性を計算する状態遷移計算手段と、を有し、状態遷移計算手段は、関係式に関数の項を含むと、データの全数が関数を通過した回数とバランス状態とを対応させた状態遷移表を参照してバランス状態を計算し、特殊なバランス状態になる可能性があると判定されたときに、関数タイプ判定手段による判定結果を参照して特殊なバランス状態となる構造であるか否かを判定することを特徴とする。
【0041】
また、本発明における共通鍵ブロック暗号評価方法は、データの分割数pと、データサイズqと、が2p≧qを満たすか否かを判定する関数タイプ判定ステップと、関係式に関数の項を含むと、データの全数が関数を通過した回数とバランス状態とを対応させた状態遷移表を参照してバランス状態を計算し、特殊なバランス状態になる可能性があると判定されたときに、関数タイプ判定ステップによる判定結果を参照して特殊なバランス状態となる構造であるか否かを判定する状態遷移計算ステップと、を有することを特徴とする。
【0042】
また、本発明におけるプログラムは、データの分割数pと、データサイズqと、が2p≧qを満たすか否かを判定する関数タイプ判定処理と、関係式に関数の項を含むと、データの全数が関数を通過した回数とバランス状態とを対応させた状態遷移表を参照してバランス状態を計算し、特殊なバランス状態になる可能性があると判定されたときに、関数タイプ判定処理による判定結果を参照して特殊なバランス状態となる構造であるか否かを判定する状態遷移計算処理と、をコンピュータに実行させることを特徴とする。
【発明の効果】
【0043】
本発明により、評価を行う暗号アルゴリズムの関数Fの構造を考慮し、入力が関数Fを通過する回数を調べることによって、これまで検出することができなかった特殊なバランス状態を検出することができるようになる。また、特殊なバランス状態を検出することができるようになることによって、飽和攻撃に対する暗号アルゴリズムの安全性をより厳密に評価できるようになる。
【発明を実施するための最良の形態】
【0044】
まず、関数Fにバランス状態が入力されてもその出力がバランス状態となる入力条件を示す。
【0045】
図2を例に説明すると、入力x1にA、その他をCとしたときに、第5ラウンドの関数F1の入力となるデータ32が後述する“特殊なバランス状態"のとき、第5ラウンドの関数F1の出力データ33がバランスする。
【0046】
Cは状態に影響を与えないので省略すると、データ32は、関数F030と関数F131の出力をXORしたものといえるので、図4のように書き直すことができる。
【0047】
データ32をyとすると、yはx1の式で表すことが出来る。xとyは関数F0と関数F1の内部処理に合わせて、それぞれ、x10とx11、y0とy1に分割するとy0とy1は次式で表現できる。
【0048】
【数3】
【0049】
【数4】
【0050】
数3を項の種類ごとにまとめて記述すると、次式のように書き換えることが出来る。ここで、G0とG1は非線形変換を意味する。
【0051】
【数5】
【0052】
このように、入力の各項が独立に変換されていることがわかる。このような状態において、G0とG1がバランスし、且つ、式における項の種類数をp、項のデータ幅をqビットとしたとき、次式が成り立つならば、y0は偶数バランス、もしくは奇数バランスのいずれかとなる。
【0053】
【数6】
【0054】
数5をみると、項の種類はx10とx11の2種類なので、種類数pは2となる。例えば、データ幅qが4(=2・2)ビット以下ならば、数6は成り立つ。5ビット以上であれば成り立たないので、混合バランスとなる。
【0055】
数5と数6の条件により、y0が偶数バランスか奇数バランスのどちらかになることを図4を例に説明する。なお、y1も同様に説明できる。
【0056】
ここでは、x1のサイズmを8ビットとして説明することとするので、p=2、q=4の場合である。これは数6を満たすので、偶数バランス、または奇数バランスのどちらかとなる。
【0057】
関数F0と関数F1の入力となるx1には全数が与えられるので、0〜255までの256(=28)通りデータが与えられる。
【0058】
x10とx11は、x1を2分割したものになるので、S0とS1にはそれぞれ、0〜15までの16(=24)通りのデータが各々16回与えられる。数5のG0とG1は他方がある値のときにそれぞれ独立にバランスすることは明らかである。
【0059】
ここで、各Gの出力値の出現パターンを分析する。
【0060】
x10がある値のときに、x11を全通り与えると、G1の出力値16通りの出現回数としては、以下の3通りが考えられる。
【0061】
(1).出現回数が0回と偶数回のみ
(2).出現回数が0回と奇数回のみ
(3).出現回数が0回と偶数回と奇数回
【0062】
図5が0回と偶数回のみの例である。実際には、x10の16通りの値ごとに表の出現回数が得られるので、出現回数の総和は図5の16倍の出現回数となる。
【0063】
図6は、出現回数が0回と偶数回と奇数回の例である。値が1、2、4、7の出現回数が奇数回となっている。
【0064】
Gとしてバランスするので、出現回数が奇数回となる値でバランスすることになる。この例では、1+2+4+7=0となるので、バランスしている。
【0065】
異なる2種類の値をXORしても0にはなりえないので、最低3種類必要となるが3種類の出現回数の合計は奇数回になるので、残りの出現回数も奇数回となってしまう。
【0066】
一方、残りの出現回数は偶数回のものであるから、矛盾する。よって、奇数回となる値は4種類以上の偶数種類に限られる。こちらも実際には16倍カウントされる。
【0067】
Gの一方が0回と偶数回のみの場合、他方に関係なくy0は0回か偶数回、つまり偶数バランスとなる。
【0068】
ここでは、G0とG1の両方が“0回と奇数回のみ"と“0回と偶数回と奇数回"の場合について説明する。
【0069】
偶数回出現する値は、それのみでバランスするので奇数回に注目すると、“0回と偶数回と奇数回"は、“0回と奇数回のみ"と条件としては同じである。
【0070】
G0で奇数回となった値をa0、a1、a2、a3、G1で奇数回となった値をb0、b1、b2、b3とする。先述したように、a、bそれぞれでバランスするので、
【0071】
【数7】
【0072】
【数8】
【0073】
である。奇数回出現した値のXORの組合せとしては、
【0074】
【数9】
【0075】
の16(=42)通り存在する。
【0076】
ここで、(a0+b0)と(a1+b2)が等しいと仮定すると、
【0077】
【数10】
【0078】
数10は、交換則が成り立つので、次式が得られる。
【0079】
【数11】
【0080】
更に数7、数8も同様に交換則が成り立つので、数10、数11から次式が得られる。数10に数7を代入して
【0081】
【数12】
【0082】
数12を変形すると、
【0083】
【数13】
【0084】
数10に数8を代入すると、
【0085】
【数14】
【0086】
数14を変形すると、
【0087】
【数15】
【0088】
数12に数8を代入すると、
【0089】
【数16】
【0090】
数16を変形すると、
【0091】
【数17】
【0092】
このように、G0で奇数回出力された任意の値aiとaj、G1で奇数回出力された任意の値bm、bnについて、ai+bm=aj+bnが成り立つならば、その他の組み合わせ全てについて互いに等しくなるものが存在する。このような状態のとき、y0に出現する値の出現回数は全て偶数回となる。
【0093】
逆に、ai+bm=aj+bnとなるものが存在しない場合、axとbyのXORの組み合わせ16通り全てが異なる。すなわち、全通りの値(0〜15)が全て奇数回出現することになる。
【0094】
このとき、他に偶数回出現する値があったとしても、y0には全通りの値が出現し、且つ、出現回数は全て奇数回となる。
【0095】
ここで、数6で示す条件式について、詳細に説明する。
【0096】
Gの種類、つまり項の種類になるが、これは関数Fの分割数pと等しくなる。分割した各データのサイズがqビットのとき、値の種類としては、2q通りとなる。
【0097】
全通りの値が出現するためには、各Gから出現される奇数回となった値の種類の組み合わせの数が、2q以上である必要がある。
【0098】
前述のように、各Gから出現する値で出現回数が奇数回となるのは、最低4種類となる。すなわち、
【0099】
【数18】
【0100】
であり、べき数に注目すると、数6が得られる。
【0101】
ところで、y0とy1の両方が、数5と数6を満たすならば、y0とy1は偶数バランスか奇数バランスのどちらかであるが、それらを区別することはできない。
【0102】
ここで、y0とy1を結合したmビットのyでみると、混合バランスとなる可能性がある。
【0103】
混合バランスを関数Fで変換すると、出力の状態は不明となるが、y0とy1がそれぞれ偶数バランスか奇数バランスのどちらかであるという状態であれば、関数Fで変換しても出力の状態はバランスする。
【0104】
関数FがSP型であるならば、S−boxの出力は入力のバランス状態が保たれ、拡散層もXORによって各入力データを攪拌するため、関数Fの出力はバランスする。
【0105】
このように、バランスしているデータを分割して見たときに、各々が偶数バランスか奇数バランスである状態を“特殊なバランス状態"と呼ぶことにする。
【0106】
次に、次式で示す例でみると、x10とx11がそれぞれS0とS1で独立に変換されているが、それぞれをXORしたものがS2で変換されている。
【0107】
このような場合は、数5のように入力の項毎に括ることができないので、y2は混合バランスの可能性がある。
【0108】
【数19】
【0109】
図2のデータ34は、第2ラウンドと第3ラウンドの2回の関数F0による変換が行われるため、数19のようにS−boxの入れ子の式となることは明らかである。
【0110】
このように、関数Fを2回以上通過したデータは、特殊なバランス状態になる保証はない。特殊なバランス状態となるためには、入力データが異なる2つの関数Fによってそれぞれ1回のみ変換されている必要がある。
【0111】
すなわち、関数Fがその内部でデータをp個に分割して処理を行い、それぞれのビット幅がqであり、数6を満たす暗号アルゴリズムについて、入力xにAを与え、F0(x)とF1(x)がXORされたデータは、特殊なバランス状態となる。
【0112】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【0113】
図7は、本発明の実施形態における共通鍵ブロック暗号評価装置の構成図である。本装置は、キーボード等の入力部1と、プログラム制御により動作する状態遷移計算手段21と、関数タイプ判定手段22とを有する飽和特性探索部2と、ディスプレイや印刷装置等の出力部3と、を有して構成される。
【0114】
入力部1より、評価パラメータとして“ラウンド数"、“関係式"、“入力状態"、“分割数"、そして“データサイズ"の5つが入力される。
【0115】
ラウンド数には評価を行うラウンド数を指定する。10ラウンドまで評価を行うならば“10"を指定する。
【0116】
関係式は、評価対象暗号アルゴリズムの構造を表すものであり、図2の暗号アルゴリズムの場合、関係式は次式で表される4式となる。
【0117】
【数20】
【0118】
【数21】
【0119】
【数22】
【0120】
【数23】
【0121】
入力状態には入力x0〜x3に対して、全数を与える変数と定数を与える変数を指定する。例えば、図2の例のようにx1に全数、その他には定数を与えるならば、{C,A0,C,C}とする。Aの添え字0は、初期状態であることを意味する。また、本評価装置では、全数は1箇所のみに与えるものとする。
【0122】
分割数は、評価対象暗号アルゴリズムの関数F内部のデータ分割数を指定する。図2の例では、関数F0と関数F1でそれぞれデータを2分割して内部処理を行っているので、“2"となる。
【0123】
データサイズは、分割されたデータのサイズをビットで表したものである。
【0124】
まず、関数タイプ判定手段22について説明する。関数タイプ判定手段22は、評価対象暗号アルゴリズムの関数Fの構造から特殊なバランス状態となり得るかどうかを判定する。
【0125】
次に、関数タイプ判定手段22の動作について図8を参照して説明する。
【0126】
関数タイプ判定手段22には、入力された5つのパラメータのうち、分割数とデータサイズの2つが渡され、分割数をp、データサイズをqとしたとき、2p≧qが成り立つか否かを判断する(ステップA1)。
【0127】
もし成り立つならば、フラグをONに設定し(ステップA2)、成り立たないなら、フラグをOFFに設定する(ステップA3)。なお、設定したフラグは、状態遷移計算手段21へ渡される。
【0128】
次に、図9を参照して状態遷移計算手段21の動作について説明する。
【0129】
状態遷移計算手段21は、入力状態を飽和特性の初期状態として、関係式を用いてラウンド処理後の飽和特性を計算し、パラメータのラウンド数まで処理すると終了する。
【0130】
入力された関係式の数をm、ラウンド数をnとする。入力されたパラメータの入力状態を状態の初期値としてS0,0〜S0,m-1に設定する(ステップB1)。図2の例では、入力状態が{C,A0,C,C}とき、S0,0=C、S0,1=A0、S0,2=C、S0,3=Cに設定される。
【0131】
現在の計算ラウンドを示すカウンタiに1を設定する(ステップB2)。関係式の入力xの項に状態Si-1を設定する(ステップB3)。計算式の番号を示すカウンタjに0を設定する(ステップB4)。以降、第iラウンドの出力の状態Siを計算するステップに入る。
【0132】
関係式yjがただの代入であるか否かを判断し(ステップB5)、代入であれば、代入元の状態をそのままSi,jに設定する(ステップB6)。例えば、数21や数23が代入の例である。
【0133】
一方、関係式yjが代入ではなければ、関数Fの項があるか否かを判断し(ステップB7)、図10に示す関数Fの状態遷移表を用いて関数Fの項を計算する(ステップB8)。例えば、数20や数22のF0(x0)やF1(x2)の項を計算する。
【0134】
関数Fの入力となる項の状態がAの場合、添え字が1だけインクリメントされる。入力状態としてA0が関数Fの入力となったとき、その出力の状態はA1となり、もう一度入力されるとA2となる。つまり、Aの添え字は関数Fを通過した回数を意味する。
【0135】
バランス状態は、BとB*の2種類で区別する。Bは、先に述べた4種類のバランス状態のいずれかであり、B*は、特殊なバランス状態である。Bは混合状態のバランスも含むため、関数Fの出力はUとなるが、B*の出力はBとなる点が異なる。
【0136】
関数Fの項を状態遷移させると、数20と数22は以下のようになる。
【0137】
【数24】
【0138】
【数25】
【0139】
上式のようにXORのみの式になるので、図10のXORの状態遷移表を用いて状態の計算を行う。
【0140】
ここで、A1とA1のXORのみ状態であるか否かを判断し、一意に決定しない(ステップB9)。A1は、全数が関数Fを1回通過した状態を意味するので、A1とA1のXORは特殊なバランス状態になる可能性がある。特殊なバランス状態になるかどうかは、関数Fの構造に依存する。関数タイプ判定手段22で、関数Fの構造が調べられており、結果をフラグとして受け取っている。
【0141】
A1とA1のXORのみ状態であれば、フラグがONかOFFかを判断する(ステップB10)。フラグがONであれば、特殊なバランス状態となる構造なので、状態Si,jにはB*が設定される(ステップB11)。
【0142】
一方、フラグがOFFならば、特殊なバランス状態とはならない構造なので、状態Si,jにはBが設定される(ステップB12)。
【0143】
一方、A1とA1以外のXORの場合は、XORの状態遷移表の通りの状態をSi,jに設定する(ステップB13)。
【0144】
関係式yjの状態計算を終了すると、カウンタjがインクリメントされて(ステップB14)、カウンタjが式数m未満であるか否かを判断し(ステップB15)、カウンタjが式数m未満であれば、次の式の状態計算を同様に行う。一方、カウンタjがmまでカウントアップされると、第iラウンドの状態計算は終了する。
【0145】
ここで、第iラウンドの状態Siが全てUであるか否かを判断し(ステップB16)、全てがUであれば、以降のラウンドの状態もUとなり評価を行う必要がないので、終了する。
【0146】
一方、状態SiにU以外の状態があれば、カウンタiをインクリメントし(ステップB17)、カウンタiがパラメータで指定されたラウンド数nを超えれば、評価を終了する(ステップB18)。達していないならば、次のラウンドの評価を同様に実施する。
【0147】
(他の実施の形態)
【0148】
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。
【0149】
図11は、本発明の他の実施の形態における共通鍵ブロック暗号評価装置の構成図である。本装置は、キーボード等の入力部1と、プログラム制御により動作する状態遷移計算手段21と、関数タイプ判定手段22と、入力状態生成手段23と、を有する飽和特性探索部2と、ディスプレイや印刷装置等の出力部3と、を有して構成される。
【0150】
本実施形態の共通鍵ブロック暗号評価装置においては、入力状態が入力状態生成手段23で自動生成される。入力状態生成手段23の動作について図12を用いて説明する。
【0151】
入力状態生成手段23には入力されたパラメータのうち関係式が渡される。入力状態生成手段23では、関係式からその数を計算する。
【0152】
変数sは入力状態を生成するためのものであり、関係式分の桁を持つ。変数sの初期値として、最右を1、残りを0に設定する(ステップC1)。
【0153】
0は状態Cを意味し、1は全数Aを意味する。変数sの1の位置をA0、0の位置をCとして入力状態を生成する(ステップC2)。図2の例では、式数は4なので、最初に生成される入力状態は、{C,C,C,A0}である。
【0154】
生成した入力状態を出力し(ステップC3)、出力した入力状態が{A0,C,…,C}である、すなわちsの最左が1であるか否かを判断する(ステップC4)。sの最左が1でなければ、sを1だけ左巡回シフトする(ステップC5)。sが0001であれば、0010となり、次の状態を生成する。
【0155】
最終的にsの最左が1となれば終了する。
【0156】
以上、本発明の好適な実施の形態により本発明を説明した。ここでは特定の具体例を示して本発明を説明したが、特許請求の範囲に定義された本発明の広範囲な趣旨および範囲から逸脱することなく、これら具体例に様々な修正および変更が可能である。
【産業上の利用可能性】
【0157】
入力データを2n(n≧2)以上に分割し、そのうちのnのデータ各々を基本関数で鍵データと攪拌し、残りのnのデータに排他的論理和する処理を繰り返し行い、更に基本関数は入力データを2つ以上に分割し、鍵の排他的論理和と非線形変換を順に行い、分割したそれぞれのデータが基本関数の出力全てに影響するように攪拌を行う拡散層で構成され、更に基本関数が複数種類で構成された共通鍵ブロック暗号方式を採用した暗号化装置に対して、飽和特性を探索する装置として利用可能である。
【図面の簡単な説明】
【0158】
【図1】全単射の例を示す図である。
【図2】飽和特性の状態遷移の一例を表す図である。
【図3】従来技術の関数FとXORによる状態遷移を表す図である。
【図4】図2の第5ラウンドの関数F1の入力を表した図である。
【図5】Gから出力される値が0回と偶数回のみの例を表す図である。
【図6】Gから出力される値が0回と偶数回と奇数回の例を表す図である。
【図7】本発明の第1の実施の形態の構成を示すブロック図である。
【図8】関数タイプ判定手段の動作を示すフローチャート図である。
【図9】状態遷移計算手段の動作を示すフローチャート図である。
【図10】本発明の関数FとXORによる状態遷移を表す図である。
【図11】本発明の第2の実施の形態の構成を示すブロック図である。
【図12】入力状態生成手段の動作を示すフローチャート図である。
【符号の説明】
【0159】
1 入力部
2 飽和特性探索部
3 出力部
4 飽和特性探索部
21 状態遷移計算手段
22 関数タイプ判定手段
23 入力状態生成手段
30 関数F0
31 関数F1
32 第4ラウンドの中間データ
33 第5ラウンドの関数F1の出力データ
34 中間データ
【技術分野】
【0001】
本発明は、共通鍵ブロック暗号に対する解読法である飽和攻撃で利用する飽和特性の探索を行う共通鍵ブロック暗号評価装置、共通鍵ブロック暗号評価方法及びプログラムに関する。
【背景技術】
【0002】
共通鍵ブロック暗号の解読法の一つに飽和攻撃(Saturation attacks)がある。飽和攻撃は、選択平文攻撃に分類される。飽和攻撃が最初に提案され、適用された暗号は、Daemenらによって提案されたブロック暗号SQUAREであった。提案された当時は、SQUARE攻撃と呼ばれていたが、近年は飽和攻撃と呼ばれている。
【0003】
まず、飽和攻撃の前提知識として、全単射について説明する。
【0004】
図1に示すように、f:A→Bという写像があったとき、集合Aの任意の元が集合Bの任意の元と一対一に定義される写像を全単射という。
【0005】
関数fを、nビット入出力の全単射な関数としたとき、入力値と出力値はそれぞれ、0〜2n−1のいずれかとなる。
【0006】
ここで、0〜2n−1の全ての値のビット毎の排他的論理和(以降、XORと記述し、“+"の記号で表記する)による総和は、ゼロになるという特性がある。
【0007】
例えばn=2の場合、0〜22−1(=3)となり、ビットで表現すると、00(0)、01(1)、10(2)、11(3)となる。
【0008】
右側のビット位置をビット0とすると、ビット0の総和は、0+1+0+1=0、ビット1の総和は、0+0+1+1=0となる。
【0009】
この特性は、n(n>1)の値に依らず保たれる。以降、総和がゼロになることを“バランスする"、そのような状態を“バランス状態”という。
【0010】
バランス状態には以下の4つの種類がある。
【0011】
(1).全通りの値が1回ずつ出現
前述したように、nビット幅で2n種類の値が1回ずつ出現している状態である。
【0012】
(2).一部の値、または全通りの値が偶数回ずつ出現
同じ値どうしのXORはゼロであるため、偶数個の同じ値をXORしてもバランスする。どのような値が出ていようとも値ごとの総和はゼロとなるので、全体でもゼロとなりバランスする。以降、これを“偶数バランス"と表現する。
【0013】
(3).全通りの値が全て奇数回ずつ出現
奇数回は(偶数回+1回)であるため、全通りの値が出現していれば(全通りの値が偶数回+全通りの値が1回)という状態といえるので、これもバランスする。以降、これを“奇数バランス"と表現する。
【0014】
(4).混合状態
偶数回と奇数回が入り混じったような、複雑なバランス状態である。以降、これを“混合バランス"と表現する。
【0015】
これら4つとは別に、一種類の値のみが偶数回出現していても総和はバランスするが、これは“定数"として区別する。
【0016】
上記(1)〜(3)の3つのバランス状態は、全単射な写像を何回繰り返してもバランス状態は保たれるが、混合バランスは値の絶妙な組み合わせでバランスしているので、次に全単射な写像による変換が行われるとバランス状態が保たれる保証はない。
【0017】
次に、飽和攻撃の手順を簡単に説明する。
【0018】
Rラウンドで構成される共通鍵ブロック暗号があり、いくらかの平文を与えたときに、R−1ラウンドの出力がバランスする特性があったとする。
【0019】
このとき、第Rラウンドの鍵を仮定し、得られている暗号文全てについて遡り、第R−1ラウンドの出力データを得る。
【0020】
遡ったデータの総和を計算し、バランスしなければ鍵の仮定が誤っていたとして正解の鍵候補から棄却できる。バランスした鍵が正解の鍵候補となる。候補が一つになればそれが正しい鍵と判断する。
【0021】
このように飽和攻撃では、バランス状態が何ラウンド後まで存在するかが解読可能となるラウンド数に影響するため、バランス状態を正しく評価する必要がある。
【0022】
図2は、共通鍵ブロック暗号の一例である。入力データをx0〜x3の4つに分割して処理を行う一般化Feistel構造である。
【0023】
1ラウンドあたり、4つのデータのうちの2つが関数Fで変換され、残りの2つのデータにそれぞれXORされる。図中の+記号を丸で囲った記号は、XORを表す。
【0024】
各データはそれぞれmビットとする。関数F0と関数F1はmビットのデータと鍵データとの攪拌を行う。入力されたmビットのデータに対して、鍵データkeyがXORされる。
【0025】
S0とS1はそれぞれ一般的にS−boxと呼ばれる非線形変換である。それぞれの入出力データサイズは、m/2ビットとなる。
【0026】
M0とM1はそれぞれ線形変換である。M0を例として説明すると、以下のような式で表される変換である。
【0027】
【数1】
【0028】
【数2】
【0029】
ここで行われる演算は有限体上のものであり、結果が変数のサイズより大きくなることはない。ここでα0はS0の出力、α1はS1の出力である。β0とβ1を連結した値がM0の出力、つまり関数F0の出力である。
【0030】
このように、S−boxと拡散層によって構成されている構造をSP型と呼ぶことにする。
【0031】
なお、以降の説明では、鍵データの値は状態遷移には影響しないので、図を簡単にするために関数Fに入力される鍵データは省略してある。
【0032】
図中の記号“A"は全通りの値が現れることを、記号“B"はバランス状態であることを、記号“C"は定数であることを、そして記号“U"は状態が不明であることを表す。なお、Bがどのような状態によって構成されているかはここでは区別していない。
【0033】
状態は、関数Fを通過したり、XORされたりすると変化する。状態遷移は、図3に示すような表で表すことができる。
【0034】
入力のAは0〜2m−1までの2m通りのデータであり、Cは任意の定数である。つまり、入力の{C、A、C、C}は2m通りのデータの集合を意味する。
【0035】
第4ラウンドの出力データ32は、AとAのXORであり、その結果はBとなる。関数F0と関数F1では、鍵データが作用するため、全数の値の出現順序は不明である。すなわち、Bがどのバランス状態にあるのかは知ることができない。
【0036】
従って、これまではBが関数Fを通過すると、状態はUとして評価を行っていた。非特許文献1に記載される飽和攻撃評価でもそのように評価されている。
【非特許文献1】Sony Corporation、The 128-bit Blockcipher CLEFIA Security and Performance Evaluations Revision 1.0、インターネット<URL:http://www.sony.co.jp/Products/clefia/technical/data/clefia-eval-1.0.pdf>
【発明の開示】
【発明が解決しようとする課題】
【0037】
しかしながら、従来における飽和特性探索法では、バランス状態の構成を区別できないため、バランス状態が非線形変換を通過すると、その出力の状態は不明として扱うしかなかった。
【0038】
不明な状態は、飽和攻撃には利用できない特性なので、バランス状態を不明として扱うことがあれば、評価として不十分ということになる。
【0039】
そこで本発明は、上記問題点に鑑みてなされたもので、飽和攻撃に対する評価指標である飽和特性の探索法について、関数Fを通過してもバランス状態が保持されるバランス状態を探索できる共通鍵ブロック暗号評価装置を提供することを目的とする。
【課題を解決するための手段】
【0040】
上記課題を解決するため、本発明における共通鍵ブロック暗号評価装置は、データの分割数pと、データサイズqと、が2p≧qを満たすか否かを判定する関数タイプ判定手段と、入力状態を飽和特性の初期状態として、関係式を用いてラウンド処理後の飽和特性を計算する状態遷移計算手段と、を有し、状態遷移計算手段は、関係式に関数の項を含むと、データの全数が関数を通過した回数とバランス状態とを対応させた状態遷移表を参照してバランス状態を計算し、特殊なバランス状態になる可能性があると判定されたときに、関数タイプ判定手段による判定結果を参照して特殊なバランス状態となる構造であるか否かを判定することを特徴とする。
【0041】
また、本発明における共通鍵ブロック暗号評価方法は、データの分割数pと、データサイズqと、が2p≧qを満たすか否かを判定する関数タイプ判定ステップと、関係式に関数の項を含むと、データの全数が関数を通過した回数とバランス状態とを対応させた状態遷移表を参照してバランス状態を計算し、特殊なバランス状態になる可能性があると判定されたときに、関数タイプ判定ステップによる判定結果を参照して特殊なバランス状態となる構造であるか否かを判定する状態遷移計算ステップと、を有することを特徴とする。
【0042】
また、本発明におけるプログラムは、データの分割数pと、データサイズqと、が2p≧qを満たすか否かを判定する関数タイプ判定処理と、関係式に関数の項を含むと、データの全数が関数を通過した回数とバランス状態とを対応させた状態遷移表を参照してバランス状態を計算し、特殊なバランス状態になる可能性があると判定されたときに、関数タイプ判定処理による判定結果を参照して特殊なバランス状態となる構造であるか否かを判定する状態遷移計算処理と、をコンピュータに実行させることを特徴とする。
【発明の効果】
【0043】
本発明により、評価を行う暗号アルゴリズムの関数Fの構造を考慮し、入力が関数Fを通過する回数を調べることによって、これまで検出することができなかった特殊なバランス状態を検出することができるようになる。また、特殊なバランス状態を検出することができるようになることによって、飽和攻撃に対する暗号アルゴリズムの安全性をより厳密に評価できるようになる。
【発明を実施するための最良の形態】
【0044】
まず、関数Fにバランス状態が入力されてもその出力がバランス状態となる入力条件を示す。
【0045】
図2を例に説明すると、入力x1にA、その他をCとしたときに、第5ラウンドの関数F1の入力となるデータ32が後述する“特殊なバランス状態"のとき、第5ラウンドの関数F1の出力データ33がバランスする。
【0046】
Cは状態に影響を与えないので省略すると、データ32は、関数F030と関数F131の出力をXORしたものといえるので、図4のように書き直すことができる。
【0047】
データ32をyとすると、yはx1の式で表すことが出来る。xとyは関数F0と関数F1の内部処理に合わせて、それぞれ、x10とx11、y0とy1に分割するとy0とy1は次式で表現できる。
【0048】
【数3】
【0049】
【数4】
【0050】
数3を項の種類ごとにまとめて記述すると、次式のように書き換えることが出来る。ここで、G0とG1は非線形変換を意味する。
【0051】
【数5】
【0052】
このように、入力の各項が独立に変換されていることがわかる。このような状態において、G0とG1がバランスし、且つ、式における項の種類数をp、項のデータ幅をqビットとしたとき、次式が成り立つならば、y0は偶数バランス、もしくは奇数バランスのいずれかとなる。
【0053】
【数6】
【0054】
数5をみると、項の種類はx10とx11の2種類なので、種類数pは2となる。例えば、データ幅qが4(=2・2)ビット以下ならば、数6は成り立つ。5ビット以上であれば成り立たないので、混合バランスとなる。
【0055】
数5と数6の条件により、y0が偶数バランスか奇数バランスのどちらかになることを図4を例に説明する。なお、y1も同様に説明できる。
【0056】
ここでは、x1のサイズmを8ビットとして説明することとするので、p=2、q=4の場合である。これは数6を満たすので、偶数バランス、または奇数バランスのどちらかとなる。
【0057】
関数F0と関数F1の入力となるx1には全数が与えられるので、0〜255までの256(=28)通りデータが与えられる。
【0058】
x10とx11は、x1を2分割したものになるので、S0とS1にはそれぞれ、0〜15までの16(=24)通りのデータが各々16回与えられる。数5のG0とG1は他方がある値のときにそれぞれ独立にバランスすることは明らかである。
【0059】
ここで、各Gの出力値の出現パターンを分析する。
【0060】
x10がある値のときに、x11を全通り与えると、G1の出力値16通りの出現回数としては、以下の3通りが考えられる。
【0061】
(1).出現回数が0回と偶数回のみ
(2).出現回数が0回と奇数回のみ
(3).出現回数が0回と偶数回と奇数回
【0062】
図5が0回と偶数回のみの例である。実際には、x10の16通りの値ごとに表の出現回数が得られるので、出現回数の総和は図5の16倍の出現回数となる。
【0063】
図6は、出現回数が0回と偶数回と奇数回の例である。値が1、2、4、7の出現回数が奇数回となっている。
【0064】
Gとしてバランスするので、出現回数が奇数回となる値でバランスすることになる。この例では、1+2+4+7=0となるので、バランスしている。
【0065】
異なる2種類の値をXORしても0にはなりえないので、最低3種類必要となるが3種類の出現回数の合計は奇数回になるので、残りの出現回数も奇数回となってしまう。
【0066】
一方、残りの出現回数は偶数回のものであるから、矛盾する。よって、奇数回となる値は4種類以上の偶数種類に限られる。こちらも実際には16倍カウントされる。
【0067】
Gの一方が0回と偶数回のみの場合、他方に関係なくy0は0回か偶数回、つまり偶数バランスとなる。
【0068】
ここでは、G0とG1の両方が“0回と奇数回のみ"と“0回と偶数回と奇数回"の場合について説明する。
【0069】
偶数回出現する値は、それのみでバランスするので奇数回に注目すると、“0回と偶数回と奇数回"は、“0回と奇数回のみ"と条件としては同じである。
【0070】
G0で奇数回となった値をa0、a1、a2、a3、G1で奇数回となった値をb0、b1、b2、b3とする。先述したように、a、bそれぞれでバランスするので、
【0071】
【数7】
【0072】
【数8】
【0073】
である。奇数回出現した値のXORの組合せとしては、
【0074】
【数9】
【0075】
の16(=42)通り存在する。
【0076】
ここで、(a0+b0)と(a1+b2)が等しいと仮定すると、
【0077】
【数10】
【0078】
数10は、交換則が成り立つので、次式が得られる。
【0079】
【数11】
【0080】
更に数7、数8も同様に交換則が成り立つので、数10、数11から次式が得られる。数10に数7を代入して
【0081】
【数12】
【0082】
数12を変形すると、
【0083】
【数13】
【0084】
数10に数8を代入すると、
【0085】
【数14】
【0086】
数14を変形すると、
【0087】
【数15】
【0088】
数12に数8を代入すると、
【0089】
【数16】
【0090】
数16を変形すると、
【0091】
【数17】
【0092】
このように、G0で奇数回出力された任意の値aiとaj、G1で奇数回出力された任意の値bm、bnについて、ai+bm=aj+bnが成り立つならば、その他の組み合わせ全てについて互いに等しくなるものが存在する。このような状態のとき、y0に出現する値の出現回数は全て偶数回となる。
【0093】
逆に、ai+bm=aj+bnとなるものが存在しない場合、axとbyのXORの組み合わせ16通り全てが異なる。すなわち、全通りの値(0〜15)が全て奇数回出現することになる。
【0094】
このとき、他に偶数回出現する値があったとしても、y0には全通りの値が出現し、且つ、出現回数は全て奇数回となる。
【0095】
ここで、数6で示す条件式について、詳細に説明する。
【0096】
Gの種類、つまり項の種類になるが、これは関数Fの分割数pと等しくなる。分割した各データのサイズがqビットのとき、値の種類としては、2q通りとなる。
【0097】
全通りの値が出現するためには、各Gから出現される奇数回となった値の種類の組み合わせの数が、2q以上である必要がある。
【0098】
前述のように、各Gから出現する値で出現回数が奇数回となるのは、最低4種類となる。すなわち、
【0099】
【数18】
【0100】
であり、べき数に注目すると、数6が得られる。
【0101】
ところで、y0とy1の両方が、数5と数6を満たすならば、y0とy1は偶数バランスか奇数バランスのどちらかであるが、それらを区別することはできない。
【0102】
ここで、y0とy1を結合したmビットのyでみると、混合バランスとなる可能性がある。
【0103】
混合バランスを関数Fで変換すると、出力の状態は不明となるが、y0とy1がそれぞれ偶数バランスか奇数バランスのどちらかであるという状態であれば、関数Fで変換しても出力の状態はバランスする。
【0104】
関数FがSP型であるならば、S−boxの出力は入力のバランス状態が保たれ、拡散層もXORによって各入力データを攪拌するため、関数Fの出力はバランスする。
【0105】
このように、バランスしているデータを分割して見たときに、各々が偶数バランスか奇数バランスである状態を“特殊なバランス状態"と呼ぶことにする。
【0106】
次に、次式で示す例でみると、x10とx11がそれぞれS0とS1で独立に変換されているが、それぞれをXORしたものがS2で変換されている。
【0107】
このような場合は、数5のように入力の項毎に括ることができないので、y2は混合バランスの可能性がある。
【0108】
【数19】
【0109】
図2のデータ34は、第2ラウンドと第3ラウンドの2回の関数F0による変換が行われるため、数19のようにS−boxの入れ子の式となることは明らかである。
【0110】
このように、関数Fを2回以上通過したデータは、特殊なバランス状態になる保証はない。特殊なバランス状態となるためには、入力データが異なる2つの関数Fによってそれぞれ1回のみ変換されている必要がある。
【0111】
すなわち、関数Fがその内部でデータをp個に分割して処理を行い、それぞれのビット幅がqであり、数6を満たす暗号アルゴリズムについて、入力xにAを与え、F0(x)とF1(x)がXORされたデータは、特殊なバランス状態となる。
【0112】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【0113】
図7は、本発明の実施形態における共通鍵ブロック暗号評価装置の構成図である。本装置は、キーボード等の入力部1と、プログラム制御により動作する状態遷移計算手段21と、関数タイプ判定手段22とを有する飽和特性探索部2と、ディスプレイや印刷装置等の出力部3と、を有して構成される。
【0114】
入力部1より、評価パラメータとして“ラウンド数"、“関係式"、“入力状態"、“分割数"、そして“データサイズ"の5つが入力される。
【0115】
ラウンド数には評価を行うラウンド数を指定する。10ラウンドまで評価を行うならば“10"を指定する。
【0116】
関係式は、評価対象暗号アルゴリズムの構造を表すものであり、図2の暗号アルゴリズムの場合、関係式は次式で表される4式となる。
【0117】
【数20】
【0118】
【数21】
【0119】
【数22】
【0120】
【数23】
【0121】
入力状態には入力x0〜x3に対して、全数を与える変数と定数を与える変数を指定する。例えば、図2の例のようにx1に全数、その他には定数を与えるならば、{C,A0,C,C}とする。Aの添え字0は、初期状態であることを意味する。また、本評価装置では、全数は1箇所のみに与えるものとする。
【0122】
分割数は、評価対象暗号アルゴリズムの関数F内部のデータ分割数を指定する。図2の例では、関数F0と関数F1でそれぞれデータを2分割して内部処理を行っているので、“2"となる。
【0123】
データサイズは、分割されたデータのサイズをビットで表したものである。
【0124】
まず、関数タイプ判定手段22について説明する。関数タイプ判定手段22は、評価対象暗号アルゴリズムの関数Fの構造から特殊なバランス状態となり得るかどうかを判定する。
【0125】
次に、関数タイプ判定手段22の動作について図8を参照して説明する。
【0126】
関数タイプ判定手段22には、入力された5つのパラメータのうち、分割数とデータサイズの2つが渡され、分割数をp、データサイズをqとしたとき、2p≧qが成り立つか否かを判断する(ステップA1)。
【0127】
もし成り立つならば、フラグをONに設定し(ステップA2)、成り立たないなら、フラグをOFFに設定する(ステップA3)。なお、設定したフラグは、状態遷移計算手段21へ渡される。
【0128】
次に、図9を参照して状態遷移計算手段21の動作について説明する。
【0129】
状態遷移計算手段21は、入力状態を飽和特性の初期状態として、関係式を用いてラウンド処理後の飽和特性を計算し、パラメータのラウンド数まで処理すると終了する。
【0130】
入力された関係式の数をm、ラウンド数をnとする。入力されたパラメータの入力状態を状態の初期値としてS0,0〜S0,m-1に設定する(ステップB1)。図2の例では、入力状態が{C,A0,C,C}とき、S0,0=C、S0,1=A0、S0,2=C、S0,3=Cに設定される。
【0131】
現在の計算ラウンドを示すカウンタiに1を設定する(ステップB2)。関係式の入力xの項に状態Si-1を設定する(ステップB3)。計算式の番号を示すカウンタjに0を設定する(ステップB4)。以降、第iラウンドの出力の状態Siを計算するステップに入る。
【0132】
関係式yjがただの代入であるか否かを判断し(ステップB5)、代入であれば、代入元の状態をそのままSi,jに設定する(ステップB6)。例えば、数21や数23が代入の例である。
【0133】
一方、関係式yjが代入ではなければ、関数Fの項があるか否かを判断し(ステップB7)、図10に示す関数Fの状態遷移表を用いて関数Fの項を計算する(ステップB8)。例えば、数20や数22のF0(x0)やF1(x2)の項を計算する。
【0134】
関数Fの入力となる項の状態がAの場合、添え字が1だけインクリメントされる。入力状態としてA0が関数Fの入力となったとき、その出力の状態はA1となり、もう一度入力されるとA2となる。つまり、Aの添え字は関数Fを通過した回数を意味する。
【0135】
バランス状態は、BとB*の2種類で区別する。Bは、先に述べた4種類のバランス状態のいずれかであり、B*は、特殊なバランス状態である。Bは混合状態のバランスも含むため、関数Fの出力はUとなるが、B*の出力はBとなる点が異なる。
【0136】
関数Fの項を状態遷移させると、数20と数22は以下のようになる。
【0137】
【数24】
【0138】
【数25】
【0139】
上式のようにXORのみの式になるので、図10のXORの状態遷移表を用いて状態の計算を行う。
【0140】
ここで、A1とA1のXORのみ状態であるか否かを判断し、一意に決定しない(ステップB9)。A1は、全数が関数Fを1回通過した状態を意味するので、A1とA1のXORは特殊なバランス状態になる可能性がある。特殊なバランス状態になるかどうかは、関数Fの構造に依存する。関数タイプ判定手段22で、関数Fの構造が調べられており、結果をフラグとして受け取っている。
【0141】
A1とA1のXORのみ状態であれば、フラグがONかOFFかを判断する(ステップB10)。フラグがONであれば、特殊なバランス状態となる構造なので、状態Si,jにはB*が設定される(ステップB11)。
【0142】
一方、フラグがOFFならば、特殊なバランス状態とはならない構造なので、状態Si,jにはBが設定される(ステップB12)。
【0143】
一方、A1とA1以外のXORの場合は、XORの状態遷移表の通りの状態をSi,jに設定する(ステップB13)。
【0144】
関係式yjの状態計算を終了すると、カウンタjがインクリメントされて(ステップB14)、カウンタjが式数m未満であるか否かを判断し(ステップB15)、カウンタjが式数m未満であれば、次の式の状態計算を同様に行う。一方、カウンタjがmまでカウントアップされると、第iラウンドの状態計算は終了する。
【0145】
ここで、第iラウンドの状態Siが全てUであるか否かを判断し(ステップB16)、全てがUであれば、以降のラウンドの状態もUとなり評価を行う必要がないので、終了する。
【0146】
一方、状態SiにU以外の状態があれば、カウンタiをインクリメントし(ステップB17)、カウンタiがパラメータで指定されたラウンド数nを超えれば、評価を終了する(ステップB18)。達していないならば、次のラウンドの評価を同様に実施する。
【0147】
(他の実施の形態)
【0148】
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。
【0149】
図11は、本発明の他の実施の形態における共通鍵ブロック暗号評価装置の構成図である。本装置は、キーボード等の入力部1と、プログラム制御により動作する状態遷移計算手段21と、関数タイプ判定手段22と、入力状態生成手段23と、を有する飽和特性探索部2と、ディスプレイや印刷装置等の出力部3と、を有して構成される。
【0150】
本実施形態の共通鍵ブロック暗号評価装置においては、入力状態が入力状態生成手段23で自動生成される。入力状態生成手段23の動作について図12を用いて説明する。
【0151】
入力状態生成手段23には入力されたパラメータのうち関係式が渡される。入力状態生成手段23では、関係式からその数を計算する。
【0152】
変数sは入力状態を生成するためのものであり、関係式分の桁を持つ。変数sの初期値として、最右を1、残りを0に設定する(ステップC1)。
【0153】
0は状態Cを意味し、1は全数Aを意味する。変数sの1の位置をA0、0の位置をCとして入力状態を生成する(ステップC2)。図2の例では、式数は4なので、最初に生成される入力状態は、{C,C,C,A0}である。
【0154】
生成した入力状態を出力し(ステップC3)、出力した入力状態が{A0,C,…,C}である、すなわちsの最左が1であるか否かを判断する(ステップC4)。sの最左が1でなければ、sを1だけ左巡回シフトする(ステップC5)。sが0001であれば、0010となり、次の状態を生成する。
【0155】
最終的にsの最左が1となれば終了する。
【0156】
以上、本発明の好適な実施の形態により本発明を説明した。ここでは特定の具体例を示して本発明を説明したが、特許請求の範囲に定義された本発明の広範囲な趣旨および範囲から逸脱することなく、これら具体例に様々な修正および変更が可能である。
【産業上の利用可能性】
【0157】
入力データを2n(n≧2)以上に分割し、そのうちのnのデータ各々を基本関数で鍵データと攪拌し、残りのnのデータに排他的論理和する処理を繰り返し行い、更に基本関数は入力データを2つ以上に分割し、鍵の排他的論理和と非線形変換を順に行い、分割したそれぞれのデータが基本関数の出力全てに影響するように攪拌を行う拡散層で構成され、更に基本関数が複数種類で構成された共通鍵ブロック暗号方式を採用した暗号化装置に対して、飽和特性を探索する装置として利用可能である。
【図面の簡単な説明】
【0158】
【図1】全単射の例を示す図である。
【図2】飽和特性の状態遷移の一例を表す図である。
【図3】従来技術の関数FとXORによる状態遷移を表す図である。
【図4】図2の第5ラウンドの関数F1の入力を表した図である。
【図5】Gから出力される値が0回と偶数回のみの例を表す図である。
【図6】Gから出力される値が0回と偶数回と奇数回の例を表す図である。
【図7】本発明の第1の実施の形態の構成を示すブロック図である。
【図8】関数タイプ判定手段の動作を示すフローチャート図である。
【図9】状態遷移計算手段の動作を示すフローチャート図である。
【図10】本発明の関数FとXORによる状態遷移を表す図である。
【図11】本発明の第2の実施の形態の構成を示すブロック図である。
【図12】入力状態生成手段の動作を示すフローチャート図である。
【符号の説明】
【0159】
1 入力部
2 飽和特性探索部
3 出力部
4 飽和特性探索部
21 状態遷移計算手段
22 関数タイプ判定手段
23 入力状態生成手段
30 関数F0
31 関数F1
32 第4ラウンドの中間データ
33 第5ラウンドの関数F1の出力データ
34 中間データ
【特許請求の範囲】
【請求項1】
データの分割数pと、データサイズqと、が
2p≧q
を満たすか否かを判定する関数タイプ判定手段と、
入力状態を飽和特性の初期状態として、関係式を用いてラウンド処理後の前記飽和特性を計算する状態遷移計算手段と、を有し、
前記状態遷移計算手段は、前記関係式に関数の項を含むと、前記データの全数が前記関数を通過した回数とバランス状態とを対応させた状態遷移表を参照してバランス状態を計算し、特殊なバランス状態になる可能性があると判定されたときに、前記関数タイプ判定手段による判定結果を参照して特殊なバランス状態となる構造であるか否かを判定することを特徴とする共通鍵ブロック暗号評価装置。
【請求項2】
前記状態遷移計算手段は、前記全数がそれぞれ前記関数を1回だけ通過したデータの排他的論理和であれば、特殊なバランス状態になる可能性があると判定することを特徴とする請求項1記載の共通鍵ブロック暗号評価装置。
【請求項3】
前記状態遷移計算手段は、バランス状態を特殊なバランス状態か否かの2種類で区別することを特徴とする請求項1又は2記載の共通鍵ブロック暗号評価装置。
【請求項4】
前記状態遷移計算手段により状態が全て不明と判定されると、以降のラウンドの状態も不明として、処理を終了することを特徴とする請求項1から3のいずれか1項に記載の共通鍵ブロック暗号評価装置。
【請求項5】
前記関係式から桁数を設定して、前記初期状態を生成する入力状態生成手段を有することを特徴とする請求項1から4のいずれか1項に記載の共通鍵ブロック暗号評価装置。
【請求項6】
データの分割数pと、データサイズqと、が
2p≧q
を満たすか否かを判定する関数タイプ判定ステップと、
関係式に関数の項を含むと、前記データの全数が前記関数を通過した回数とバランス状態とを対応させた状態遷移表を参照してバランス状態を計算し、特殊なバランス状態になる可能性があると判定されたときに、前記関数タイプ判定ステップによる判定結果を参照して特殊なバランス状態となる構造であるか否かを判定する状態遷移計算ステップと、を有することを特徴とする共通鍵ブロック暗号評価方法。
【請求項7】
データの分割数pと、データサイズqと、が
2p≧q
を満たすか否かを判定する関数タイプ判定処理と、
関係式に関数の項を含むと、前記データの全数が前記関数を通過した回数とバランス状態とを対応させた状態遷移表を参照してバランス状態を計算し、特殊なバランス状態になる可能性があると判定されたときに、前記関数タイプ判定処理による判定結果を参照して特殊なバランス状態となる構造であるか否かを判定する状態遷移計算処理と、をコンピュータに実行させるプログラム。
【請求項1】
データの分割数pと、データサイズqと、が
2p≧q
を満たすか否かを判定する関数タイプ判定手段と、
入力状態を飽和特性の初期状態として、関係式を用いてラウンド処理後の前記飽和特性を計算する状態遷移計算手段と、を有し、
前記状態遷移計算手段は、前記関係式に関数の項を含むと、前記データの全数が前記関数を通過した回数とバランス状態とを対応させた状態遷移表を参照してバランス状態を計算し、特殊なバランス状態になる可能性があると判定されたときに、前記関数タイプ判定手段による判定結果を参照して特殊なバランス状態となる構造であるか否かを判定することを特徴とする共通鍵ブロック暗号評価装置。
【請求項2】
前記状態遷移計算手段は、前記全数がそれぞれ前記関数を1回だけ通過したデータの排他的論理和であれば、特殊なバランス状態になる可能性があると判定することを特徴とする請求項1記載の共通鍵ブロック暗号評価装置。
【請求項3】
前記状態遷移計算手段は、バランス状態を特殊なバランス状態か否かの2種類で区別することを特徴とする請求項1又は2記載の共通鍵ブロック暗号評価装置。
【請求項4】
前記状態遷移計算手段により状態が全て不明と判定されると、以降のラウンドの状態も不明として、処理を終了することを特徴とする請求項1から3のいずれか1項に記載の共通鍵ブロック暗号評価装置。
【請求項5】
前記関係式から桁数を設定して、前記初期状態を生成する入力状態生成手段を有することを特徴とする請求項1から4のいずれか1項に記載の共通鍵ブロック暗号評価装置。
【請求項6】
データの分割数pと、データサイズqと、が
2p≧q
を満たすか否かを判定する関数タイプ判定ステップと、
関係式に関数の項を含むと、前記データの全数が前記関数を通過した回数とバランス状態とを対応させた状態遷移表を参照してバランス状態を計算し、特殊なバランス状態になる可能性があると判定されたときに、前記関数タイプ判定ステップによる判定結果を参照して特殊なバランス状態となる構造であるか否かを判定する状態遷移計算ステップと、を有することを特徴とする共通鍵ブロック暗号評価方法。
【請求項7】
データの分割数pと、データサイズqと、が
2p≧q
を満たすか否かを判定する関数タイプ判定処理と、
関係式に関数の項を含むと、前記データの全数が前記関数を通過した回数とバランス状態とを対応させた状態遷移表を参照してバランス状態を計算し、特殊なバランス状態になる可能性があると判定されたときに、前記関数タイプ判定処理による判定結果を参照して特殊なバランス状態となる構造であるか否かを判定する状態遷移計算処理と、をコンピュータに実行させるプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2010−134247(P2010−134247A)
【公開日】平成22年6月17日(2010.6.17)
【国際特許分類】
【出願番号】特願2008−310954(P2008−310954)
【出願日】平成20年12月5日(2008.12.5)
【出願人】(000004237)日本電気株式会社 (19,353)
【出願人】(000242666)北陸日本電気ソフトウェア株式会社 (11)
【Fターム(参考)】
【公開日】平成22年6月17日(2010.6.17)
【国際特許分類】
【出願日】平成20年12月5日(2008.12.5)
【出願人】(000004237)日本電気株式会社 (19,353)
【出願人】(000242666)北陸日本電気ソフトウェア株式会社 (11)
【Fターム(参考)】
[ Back to top ]