説明

不能差分探索装置、不能差分探索方法及びプログラム

【課題】入力ワード差分と出力ワード差分の組み合わせが非ゼロと非ゼロの場合についてもID特性を検出することができる不能差分探索装置の提供。
【解決手段】不能差分探索装置は、共通鍵ブロック暗号を構成するラウンド関数内部で使用される非線形関数の入力差分値と出力差分値とに関する1対多の対応表を保持し、該1対多の対応表を用いて、複数のワードで構成される入力差分の入力ワード差分から取り得る入力差分値と、複数のワードで構成される出力差分の出力ワード差分から取り得る出力差分値と、の組み合わせがあり得るか否かを判定する判定部を用いて、入力差分から生成した各入力差分値と、各入力差分値に対応する位置の出力差分値との組み合わせがあり得るか否かを判定してゆき、取りうる出力差分値のすべてが前記入力差分値との組み合わせとしてあり得ない出力ワード差分の存在を1つでも確認できた場合に、その入力差分と出力差分の組が不能差分であると判定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不能差分探索装置、不能差分探索方法及びプログラムに関し、特に、暗号アルゴリズムの安全性の評価に用いる不能差分特性を検出する不能差分探索装置、不能差分探索方法及びプログラムに関する。
【背景技術】
【0002】
不能差分解析は、ブロック暗号の解析手法の一つである。不能差分解析は、成立し得ない差分特性(この特性を不能差分特性(Impossible Differentials)と呼び、以降「ID特性」と記載する。)を使い、ブロック暗号の最初の数ラウンドや最後の数ラウンドの鍵を求めるものである(非特許文献1参照)。入力データをX個のサブブロックに分割して処理する構造を持つ共通鍵ブロック暗号では上記分割数Xが大きいほど、長いID特性があることが知られており、ID特性を見つけることは、上記不能差分解析にとって大変重要である。
【0003】
非特許文献2のID特性探索手法は暗号化処理の順方向(入力は平文側、出力は暗号文側)と逆方向(入力は暗号文側、出力は平文側)にラウンド通過毎の差分(以降、ラウンド差分と呼ぶ)を計算する。その際、ブロック幅でのすべての入力差分値についてラウンド差分を計算することは、計算量的に実現が困難である。そこで、非特許文献2の手法では、差分をX個のワードに分割した上でワード毎の差分(以降、ワード差分と呼ぶ)をいくつかに分類し、ラウンド関数やラウンド関数内の部品関数の入力ワード差分と出力ワード差分を1対1で対応させる表を参照してラウンド差分を計算することで計算量を削減している(非特許文献2の表1、表2参照)。非特許文献2は、このようにして順方向と逆方向に差分を計算して得られた差分同士を比較し、ID特性を見つける方法を開示している。
【0004】
また、特許文献1に、暗号仕様に従って差分集合をワード長単位に操作してID特性を検出する方法が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2000−214770号公報
【非特許文献】
【0006】
【非特許文献1】E. Biham, A. Biryukov and A. Shamir, “Cryptanalysis of Skipjack Reduced to 31 Rounds Using Impossible Differentials”, EUROCRYPT’99, LNCS 1592, Springer−Verlag, 1999, pp.12−23.
【非特許文献2】中嶋、辻原、茂、川幡、角尾、 “不能差分特性探索手法の改良”、2008年暗号と情報セキュリティシンポジウム(SCIS2008)、2A4−2、2008
【発明の概要】
【発明が解決しようとする課題】
【0007】
以上の特許文献1および非特許文献1、2の全開示内容は、本書に引用をもって繰り込み記載されているものとする。
以下の分析は、本発明の観点から与えられる。
【0008】
図17に示す関数Fが繰り返される暗号アルゴリズムを用いて、非特許文献2のID特性探索手法の具体例を説明する。図17の関数Fは1ワードが4ビットである4ワードのデータを変換する関数とし、4ワードのデータは、2行2列の行列または、ワード数4のベクトルで表現する。関数SBは4ビット幅の非線形変換部(S−box)を用いて各ワードを変換する。関数SRは、2行目のデータを1バイト左ローテイトシフトする、つまり2行目の2ワードを入れ替える。関数MCは次の[数1]のように、2行2列の行列によってデータを変換する。ここで行列演算は既約多項式x^4+x+1で規定されるGF(2^4)上の演算とする。また関数AKはデータに4ワードの鍵データを排他的論理和する。
【0009】
【数1】

【0010】
図18は、復号化で用いられる関数Fの逆関数を示している。関数SB^−1、SR^−1、MC^−1、AK^−1はそれぞれ関数SB、SR、MC、AKの逆関数である。関数MC^−1の行列演算は、[数2]となる。
【0011】
【数2】

【0012】
非特許文献2のID特性探索手法では、ワード差分を例えば図19の0d、nd、nd*、rd(非特許文献2のZero、Delta、Fix(Fix2)、Randomに相当。)に分類し、関数Fおよび関数F^−1中における各部品関数の入力ワード差分と出力ワード差分の1対1の対応関係を図20のように定義している。図20のn,mは互いに異なる数値とする。
【0013】
このような関数を入出力差分が順方向または逆方向に進む毎に各関数の差分を計算し遷移させる。図21は、入力差分が(1d*、0d、0d、0d)、逆方向の入力である出力差分が(1d、0d、0d、0d)の場合の差分の遷移を表している。入力差分(1d*、0d、0d、0d)は、関数SRを通過して(1d*、0d、0d、0d)となる。さらに(1d*、0d、0d、0d)が、関数MCを通過すると、(1d*、1d*、0d、0d)となる。他の関数も同様に差分を計算し遷移させる。
【0014】
上記のようにして入力差分から計算されたdif1と、出力差分から計算されたdif2とを図22の判定表を用いて比較する。図22の例ではn≠m、k≠k’とし、比較するワード差分の組み合わせとしてありえないものがimpossible、ありえるものがpossibleと設定されている。例えば、ワード差分0dと1dの比較では、差分0と非ゼロの差分の比較なので、判定はimpossibleとなる。図21のdif1とdif2は、2ワード目と3ワード目でワード差分1dと0dが不能と判定され、入力差分が(1d*、0d、0d、0d)であり出力差分が(1d、0d、0d、0d)というID特性が見つかる。
【0015】
上記非特許文献2のID特性探索手法では、ラウンド関数またはラウンド関数内の非線形関数における入力差分と出力差分のワード差分を1対1で対応させる表(図20参照)を参照することで、ラウンド関数または非線形関数通過後の差分を計算している。しかし、この方法では不能差分を判定する際の入力ワード差分と出力ワード差分の組み合わせが(非ゼロ,ゼロ)である場合と(ゼロ,非ゼロ)である場合しか不能差分として判定することができない。
【0016】
しかしながら実際には、ラウンド関数またはラウンド関数内の非線形関数の入力と出力とを見たときに、入力ワード差分と出力ワード差分の組み合わせが(非ゼロ,非ゼロ)の場合でも不能差分が存在することがある。
【0017】
例えば、図23は、上記非特許文献2のID特性探索手法における入力差分が(1d*、2d*、0d、0d)、出力差分が(1d、0d、0d、0d)の場合の差分の遷移を表している。入力差分から計算されたdif3と出力差分から計算されたdif4とを図22の判定表を用いて比較したとき、いずれの4ワードでもpossibleとなり、不能とは判定されない。
【0018】
このように非特許文献2のID特性探索手法では入力ワード差分と出力ワード差分の組み合わせが(非ゼロの特定の差分,任意の差分)である場合と(任意の差分,非ゼロの特定の差分)である場合のID特性が検出できないという問題点がある。
【0019】
本発明は、上記した事情に鑑みてなされたものであって、その目的とするところは、ラウンド関数またはラウンド関数内の非線形関数の入力ワード差分と出力ワード差分の組み合わせが非ゼロと非ゼロの場合についてもID特性を検出することができる不能差分探索装置、不能差分探索方法及びプログラムを提供することにある。
【課題を解決するための手段】
【0020】
本発明の第1の視点によれば、共通鍵ブロック暗号を構成するラウンド関数内部で使用される非線形関数の入力差分値と出力差分値とに関する1対多の対応表を保持し、該1対多の対応表を用いて、2つ以上のワード(入力ワード差分)で構成される入力差分の入力ワード差分から取り得る入力差分値と、2つ以上のワード(出力ワード差分)で構成される出力差分の出力ワード差分から取り得る出力差分値と、の組み合わせがあり得るか否かを判定する判定部と、前記判定部を用いて、入力差分から生成した各入力差分値と、各入力差分値に対応する位置の出力差分値との組み合わせがあり得るか否かを判定してゆき、取りうる出力差分値のすべてが前記入力差分値との組み合わせとしてあり得ない出力ワード差分の存在を1つでも確認できた場合に、その入力差分と出力差分の組が不能差分であると判定する不能差分判定部と、を備える不能差分探索装置が提供される。
【0021】
本発明の第2の視点によれば、共通鍵ブロック暗号を構成するラウンド関数内部で使用される非線形関数の入力差分値と出力差分値とに関する1対多の対応表を保持し、該1対多の対応表を用いて、2つ以上のワード(入力ワード差分)で構成される入力差分の入力ワード差分から取り得る入力差分値と、2つ以上のワード(出力ワード差分)で構成される出力差分の出力ワード差分から取り得る出力差分値と、の組み合わせがあり得るか否かを判定するステップを繰り返し、取りうる出力差分値のすべてが前記入力差分値との組み合わせとしてあり得ない出力ワード差分の存在を1つでも確認できた場合に、その入力差分と出力差分の組が不能差分であると判定する不能差分探索方法が提供される。なお、本方法は、不能差分探索装置という、特定の機械に結びつけられている。
【0022】
本発明の第3の視点によれば、共通鍵ブロック暗号を構成するラウンド関数内部で使用される非線形関数の入力差分値と出力差分値とに関する1対多の対応表を保持し、該1対多の対応表を用いて、2つ以上のワード(入力ワード差分)で構成される入力差分の入力ワード差分から取り得る入力差分値と、2つ以上のワード(出力ワード差分)で構成される出力差分の出力ワード差分から取り得る出力差分値と、の組み合わせがあり得るか否かを判定する処理を繰り返し、取りうる出力差分値のすべてが前記入力差分値との組み合わせとしてあり得ない出力ワード差分の存在を1つでも確認できた場合に、その入力差分と出力差分の組が不能差分であると判定する処理をコンピュータに実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。
【発明の効果】
【0023】
本発明によれば、ラウンド関数またはラウンド関数内の非線形関数の入力ワード差分と出力ワード差分の組み合わせが非ゼロと非ゼロの場合についてもID特性を検出することができる。
【図面の簡単な説明】
【0024】
【図1】本発明の概要および本発明の第1の実施形態を説明するための図である。
【図2】本発明に係る不能差分探索装置による不能差分の探索例を示す図である。
【図3】本発明の第1の実施形態の構成を示すブロック図である。
【図4】1対多の対応表の一例を示す図である。
【図5】本発明の第1の実施形態の不能差分の探索処理の流れを表したフローチャートである。
【図6】本発明の第2の実施形態の構成を示すブロック図である。
【図7】本発明の第2の実施形態の不能差分の探索処理の流れを表したフローチャートである。
【図8】本発明の第3の実施形態の構成を示すブロック図である。
【図9】関数MC内の排他的論理和における入出力差分1対1対応表の例を示す図である。
【図10】関数MC内の乗算における入出力差分1対1対応表の例を示す図である。
【図11】本発明の第3の実施形態のラウンド差分部によるラウンド差分計算例(順方向)を示す図である。
【図12】本発明の第3の実施形態のラウンド差分部によるラウンド差分計算例(逆方向)を示す図である。
【図13】本発明の第3の実施形態の不能差分の探索処理の流れを表したフローチャートである。
【図14】本発明の第3の実施形態の1対多対応位置決定部における処理の流れを表したフローチャートである。
【図15】本発明の第4の実施形態の構成を示すブロック図である。
【図16】本発明の第4の実施形態の不能差分の探索処理の流れを表したフローチャートである。
【図17】評価対象の暗号アルゴリズムの関数Fを示す図である。
【図18】評価対象の暗号アルゴリズムの復号に用いる逆関数F^−1を示す図である。
【図19】ワード差分定義の例を示す図である。
【図20】図17の関数SBおよび図18のSB^−1内のS−boxでの入出力差分1対1対応表の例を示す図である。
【図21】非特許文献2の手法による不能差分の探索例を示す図である。
【図22】非特許文献2の手法における不能差分の判定に用いる表である。
【図23】非特許文献2の手法では不能差分と判定できない例を示す図である。
【発明を実施するための形態】
【0025】
はじめに、本発明の概要について説明する。本発明では、ラウンド関数内部のS−boxのような非線形関数における入力差分値と出力差分値の1対多の対応関係を表した対応表を用いる(図4参照)。例えば、この1対多の対応表には、入力差分値5に対して出力差分値は1、3、5という奇数を取り得るといった1対多の対応関係が示される。
【0026】
本発明に係る不能差分探索装置は、上記1対多の対応表を参照し、入力差分値と出力差分値の組が有り得るか、有り得ないかを判定する判定部を備える。本発明に係る不能差分探索装置は、上記判定部を用いて、入力ワード差分が取りうる入力差分値(例えば、図1のa1、a2、・・・)に対し、出力差分が、一つでもあり得ない出力差分値を持つことを確認できた場合に、その入力差分と出力差分の組が不能差分であると判定する。
【0027】
図2は、図23と同じ入力差分(1d*、2d*、0d、0d)と出力差分(1d、0d、0d、0d)を本発明の不能差分探索装置に入力した場合の差分の遷移を示している。図2のdif5は、非ゼロの特定の差分であり、dif6は任意の差分であるため、非特許文献2の手法では、ID特性を検出することができない。
【0028】
本発明によれば、dif5とdif6が入出力差分となる関数SB(A1)で、図4に示すような関数SBのS−boxの1対多の対応表を用いて不能差分であるか否かを判定するため、ID特性を検出することが可能になる。
【0029】
[第1の実施形態]
続いて、本発明の第1の実施形態について図面を参照して詳細に説明する。図3は、本発明の第1の実施形態の構成を示すブロック図である。図3を参照すると、キーボードや各種メディアドライブ等の入力装置10と、プログラム制御により動作する不能差分探索装置21と、ディスプレイ装置や印刷装置等の出力装置30とが示されている。
【0030】
入力装置10より、評価パラメータとして”1対多の対応表”、”入力差分”、”出力差分”、そして”ワード差分定義”の4つが入力される。
【0031】
1対多の対応表は、ラウンド関数もしくはラウンド関数内の非線形関数における入力差分値と出力差分値との対応関係を表した表である。非線形関数としては、例えば共通鍵ブロック暗号でしばしば利用されるS−boxがある。図4は、ある非線形関数における1対多の対応表の例であり、入力差分値毎に取り得るすべての出力差分値を対応付けたものとなっている。
【0032】
入力差分には、非線形関数の入力側のX個のワード差分を指定する。また、出力差分には、非線形関数の出力側のX個のワード差分を指定する。入力差分と出力差分には、任意のワード差分を与えることができる。
【0033】
図19は、ワード差分定義の一例を示している。図19の例では、差分値が0であれば0d、非ゼロであればnd、非ゼロであるが特定の差分値であればnd*、そして差分値の有無が不明であればrdとするという定義が与えられている。
【0034】
不能差分探索装置21は、入力差分値生成部201と、出力差分値生成部202と、1対多の対応表記憶部203と、判定部204と、関係式探索部205と、不能差分判定部206と、を備えている。これらはそれぞれ次のように動作する。
【0035】
入力差分値生成部201は、入力差分において同一グループに属するワードには同じ入力差分値が設定されるように入力ワード差分から取り得る入力差分値を生成する。ここで、グループとは、X個のワード差分の中でワード差分として等しい要素の集合であり、後記するように関係式探索部205により決定される。
【0036】
出力差分値生成部202は、出力差分において同一グループに属するワードには同じ出力差分値が設定されるように出力ワード差分から取り得る出力差分値を生成する。
【0037】
1対多の対応表記憶部203は、図4に例示する入力差分値と出力差分値の1対多の対応表を記憶する。
【0038】
関係式探索部205は、Xワードの入力差分とXワードの出力差分それぞれについて、X個のワード差分の中でワード差分として等しいものの集合をN個のグループとしてグループ化できる場合に、各ワードにグループ番号Mを付与し、グループ数Nを計算する。
【0039】
判定部204は、1対多の対応表記憶部203に記憶されている1対多の対応表を参照して、入力差分値生成部201と出力差分値生成部202で生成された入力差分値と出力差分値の組が有り得るか、有り得ないかを判定する。
【0040】
不能差分判定部206は、入力差分値が生成される度に、出力ワード差分の同一グループに属するワードすべてに同じ出力差分値が設定された状態で、それらのワードのうち、一つでもあり得ないと判定された場合に、その入力差分値と出力差分値がimpossible(あり得ない組み合わせ)であると判断する。そして、入力差分値毎に、impossible(あり得ない組み合わせ)である出力ワード差分のグループの存在が一つ以上確認された場合に、入力差分とXワードの出力差分がimpossible(あり得ない組み合わせ)であると判断する。また、この入力差分値とXワードの出力差分の判定において、一つ以上の入力差分値がpossible(あり得る組み合わせ)であると判断された場合に、不能差分判定部206は、Xワードの入力差分とXワードの出力差分がpossible(あり得る組み合わせ)であると判断する。
【0041】
なお、上記不能差分探索装置21の入力差分値生成部201、出力差分値生成部202、判定部204、関係式探索部205及び不能差分判定部206は、不能差分探索装置を構成するコンピュータに実行させるプログラムにより実現することができる。
【0042】
続いて、本実施形態の動作について、図5のフローチャートを参照して詳細に説明する。また、各ステップにおいて、適宜図1を参照して具体的な処理内容を説明する。
【0043】
まず、関係式探索部205が、Xワードの入力差分の各ワードにグループ番号Min[i](以下、iは、1≦i≦Xを満たす整数である。)を、Xワードの出力差分の各ワードにグループ番号Mout[j](以下、jは、1≦i≦Xを満たす整数である。)を付与する。グループ番号は、ワード差分が等しいものの集合ごとに1から順に設定する。次に、入力差分のグループ数Ninと出力差分のグループ数Noutを計算する(ステップS1)。
【0044】
図1の例では、入力差分は(1d,2d,3d,1d)である。この場合、入力差分の1つ目の入力ワード差分1dにはグループ番号Min[1]として1を、2つ目の入力ワード差分2dにはグループ番号Min[2]として2を、3つ目の入力ワード差分3dにはグループ番号Min[3]として3を、そして4つ目の入力ワード差分1dは1つ目の入力ワード差分と同じなので、グループ番号Min[4]として1を付与する。
【0045】
次に、入力ワード差分のグループとして1dのグループ、2dのグループ、3dのグループの3つがあるため、グループ数Ninは3と算出される。同様に出力差分は(4d,5d,4d,5d)であるため、Mout[1]とMout[3]には1を、Mout[2]とMout[4]には2を付与する。グループ数Noutは2と算出される。
【0046】
次に、入力差分値生成部201が、関係式探索部205でグループ分けされた各入力ワード差分について、図19に例示するワード差分定義を参照して入力ワード差分から取り得る入力差分値を生成する(ステップS2)。
【0047】
ここで、図1の入力差分(1d,2d,3d,1d)の例を説明する。入力差分値生成部201は、図19に例示するワード差分定義を参照して、入力ワード差分1dについて、差分値として取り得る0以外の差分値すべてを差分値1から差分値2^s−1(sはワードのビット幅)まで順に生成する。入力ワード差分2dに対しては、差分値として取り得る0以外の差分値すべてを差分値1から差分値2^s−1まで順に生成する。同様に入力ワード差分のすべてのグループについて取り得る入力差分値を生成する。グループ数が3の場合、入力差分の差分値の組み合わせの総数は、(2^s−1)^3となる。
【0048】
入力差分値生成部201は、上記ステップS2で生成した各ワードに対応する入力差分値から、Xワードの入力差分値を生成し、Din[i]に設定する(ステップS3)。
【0049】
例えば、図1では入力差分の各ワードのグループ番号が(1,2,3,1)であり、グループ1に属するワード差分の入力差分値がa1、グループ2に属するワード差分の入力差分値がb1、グループ3に属するワード差分の入力差分値がc1である。この場合、4ワードの入力差分値(a1,b1,c1,a1)を生成し、Din[1]にa1を、Din[2]にb1を、Din[3]にc1を、そしてDin[4]にa1を設定する。
【0050】
不能差分判定部206は、1つ目の出力ワード差分を探索対象としてそのワード番号1をjに設定し、出力差分の1つ目の出力ワード差分が属するグループ番号Mout[j]をグループ番号の変数gに設定する(ステップS4)。
【0051】
例えば、図1の場合、出力差分の1つ目の出力ワード差分である4dが探索対象になる。また、そのワード番号1をjに設定し、出力差分の1つ目の出力ワード差分が属するグループ番号であるMout[1]に設定されている1を変数gに設定する。
【0052】
次に、出力差分値生成部202は、関係式探索部205でグループ分けされた各出力ワード差分について、図19のワード差分定義を参照して出力ワード差分から取り得る出力差分値を生成する(ステップS5)。
【0053】
ここで、図1の出力差分(4d,5d,4d,5d)の例を説明する。出力ワード差分4dに対しては、差分値として取り得る0以外の差分値すべてを差分値1から差分値2^s−1まで順に生成し、生成した差分値をDoutとする。例えば、出力ワード差分4dから出力差分値d1を生成し、Doutに設定する。
【0054】
次に、判定部204が、1対多の対応表記憶部203に記憶されている1対多の対応表を参照して、出力差分で探索対象となっているワードとワード位置が等しい入力差分値Din[j]から、ステップS5で生成した出力差分値Doutを取り得るかを判定する(ステップS6、S7)。
【0055】
例えば図1では、ステップS5で探索対象となった出力ワード差分4dとワード位置が等しい入力差分値Din[1]=a1から、ステップS5で生成した出力差分値Dout=d1を取り得るかを判定する。
【0056】
判定部204で判定した結果、入力差分値から出力差分値を取り得ると判定した場合、入力差分値と出力差分値の組ごとに決まる判定結果r1[n1](1≦n1≦探索対象となっているグループgに属するワード数)をpossibleとし(ステップS8)、入力差分値から出力差分値を取り得ないと判定した場合、判定結果r1[n1]をimpossibleとする(ステップS9)。
【0057】
続いて、判定部204は、不能差分判定部206からの指示に従い、グループgと同じ出力ワード差分のグループ内の次の出力ワード差分を探索対象とし、そのワード番号をjに設定する(ステップS10)。
【0058】
例えば、図1の出力差分の1つ目のワードの次の探索対象は、1つ目のワードのグループ番号1と等しいグループ番号である3つ目のワード(4d)となり、そのワード番号3をjに設定する。
【0059】
判定部204は、不能差分判定部206からの指示に従い、上記ステップS6〜S10を、出力差分の出力ワード差分が同じグループすべてについて繰り返す(ステップS11)。なお、上記繰り返しの間、グループ番号が等しい出力ワードを探索対象としているため、判定部204に渡される出力差分値は、ステップS5で生成したDoutである。
【0060】
例えば、図1の出力ワード差分グループ1の2つ目のワードを探索対象とした場合、つまり出力差分の3つ目のワードを探索対象とした場合、入力差分値c1から出力差分値Doutが取り得るか否かの判定結果がr1[2]に設定される。
【0061】
不能差分判定部206は、出力差分の出力ワード差分が同じグループすべてについて、判定結果r1[n1]がすべてpossibleである場合、入力差分値と出力ワード差分が同じグループに共通に設定した出力差分値の組ごとに決まる判定結果r2[n2](1≦n2≦出力ワード差分のグループから取り得る出力差分値の数の最大値)をpossibleとし(ステップS13)、判定結果r1[n1]のうち1つでもimpossibleの組がある場合、判定結果r2[n2]をimpossibleとする(ステップS14)。
【0062】
図1の例を参照してより具体的に説明する。不能差分判定部206は、入力ワード差分1dより生成された入力差分値a1と、入力ワード差分3dより生成された入力差分値c1に対し、出力ワード差分4dより生成された出力差分値d1の判定結果r1がともにpossibleである場合、不能差分判定部206は、判定結果r2[1]をpossibleとし、入力差分値a1とc1のうち1つでもd1を取り得ない場合、判定結果r2をimpossibleとする。
【0063】
判定部204および不能差分判定部206は、上記ステップS5〜S14を、出力差分値生成部202により生成される出力差分値の全通りについて繰り返す(ステップS15)。
【0064】
例えば、図1では出力差分の1つ目と3つ目の出力ワード差分である4dから生成される出力差分値d1,d2,…のすべてについて繰り返すことで、判定結果r2[1]、r2[2]、・・・が設定される。
【0065】
出力差分の出力ワード差分が同じグループ内の出力差分値すべてについて、判定結果r2がすべてimpossibleである場合、不能差分判定部206は、入力差分値と出力ワード差分のグループの組ごとに決まる判定結果r3[n3](1≦n3≦Nout)をimpossibleとし(ステップS17)、判定結果r2[n2]のうち1つでもpossibleの組がある場合、判定結果r3[n3]をpossibleとする(ステップS18)。
【0066】
例えば、入力差分の1つ目の入力ワード差分1dから生成された入力差分値a1と、入力差分の3つ目の入力ワード差分3dから生成された入力差分値c1に対する、出力差分の1つ目と3つ目の出力ワード差分である4dから生成される出力差分値の判定結果r2のすべてがimpossibleの場合に判定結果r3[g]をimpossibleとし、判定結果r2のうち1つでもpossibleの組がある場合は判定結果r3[g]をpossibleとする。
【0067】
次に、探索対象となっているグループのグループ番号gを1増やした出力ワード差分のグループの1つ目のワード差分を不能差分の探索対象としてそのワード位置をjに設定し、グループ番号gを1インクリメントする(ステップS19)。
【0068】
図1の例では、グループ番号gを1から2へ更新し、探索対象となる出力ワード差分5dのワード番号2をjに設定する。
【0069】
判定部204および不能差分判定部206は、上記ステップS5〜S19を、出力ワード差分のすべてのグループについて繰り返す(ステップS20)。
【0070】
図1の例では、出力ワード差分4dのグループと5dのグループについて繰り返すことになる。
【0071】
出力ワード差分のすべてのグループについて、判定結果r3[n3]がすべてpossibleである場合、不能差分判定部206は、入力差分値と出力差分の組ごとに決まる判定結果r4[n4](1≦n4≦Xワードの入力差分値の総数)をpossibleとし(ステップS22)、判定結果r3[n3]のうち1つでもimpossibleの組がある場合、入力差分値と出力差分の組ごとに決まる判定結果r4[n4]をimpossibleとする(ステップS23)。
【0072】
図1の例では、入力差分値a1、b1、c1、a1に対して、出力差分のワード差分4dと5dの判定結果r3[1]とr3[2]がともにpossibleである場合、判定結果r4[1]をpossibleとし、判定結果r3[1]と判定結果r3[2]のどちらか1つでもimpossibleである場合は判定結果r4[1]をimpossibleとする。
【0073】
判定部204および不能差分判定部206は、上記ステップS2〜S23を、入力差分値の全通りについて繰り返す(ステップS24)。
【0074】
図1の例では、1d、2d、3dから生成される入力差分値の全通りについて繰り返す。
【0075】
入力差分値生成部201により生成されるすべての入力差分値について、判定結果r4がすべてimpossibleである場合、入力差分と出力差分の組ごとに決まる不能差分判定結果r5をimpossibleとする(ステップS26)。
【0076】
図1の例では、入力差分(1d,2d,3d,1d)から生成されるすべての入力差分値について判定結果r4[n4]がすべてimpossibleである場合に不能差分判定結果r5をimpossibleとする。
【0077】
以上のように、本発明の第1の実施形態によれば、関係式探索部203を備え、不能差分判定部206が、入力差分値と出力差分値との組み合わせがあり得ないものであるか否かの判定を前記グループ単位で実施していくため、効率よくID特性を検出することができる。
【0078】
[第2の実施形態]
続いて、本発明の第2の実施形態について図面を参照して詳細に説明する。図6は、本発明の第2の実施形態の構成を示すブロック図である。上記第1の実施形態との構成上の相違点は、非不能差分判定部207が追加されている点である。
【0079】
非不能差分判定部207は、出力ワード差分のすべてが、入力差分値との組み合わせとしてあり得る出力差分値を持つことを確認できた場合に、その入力差分と出力差分の組が不能差分ではないと判定する。
【0080】
続いて、本実施形態の動作を説明する。本実施形態の動作は、上記した第1の実施形態の動作とほぼ共通するので、以下、その相違点を中心に説明する。
【0081】
図7は、本発明の第2の実施形態の不能差分の探索処理の流れを表したフローチャートである。第1の実施形態と同様、本発明の第2の実施形態では、不能差分判定結果r5を判定する処理ステップS25において、入力差分値生成部201により生成されるすべての入力差分値について、判定結果r4[n4]がすべてimpossibleである場合、ステップS26で入力差分と出力差分の組ごとに決まる不能差分判定結果r5をimpossibleとしている。本実施形態では、さらに、ステップS25において、入力差分値生成部201により生成されるすべての入力差分値について、判定結果r4[n4]のうち1つでもpossibleの組がある場合、入力差分と出力差分の組ごとに決まる不能差分判定結果r5をpossibleとする処理SA1を追加している。
【0082】
以上のように、本発明の第2の実施形態によれば、非不能差分判定部207を用いて入力差分と出力差分との組み合わせがあり得るとの判定結果を得ることが可能になる。
【0083】
[第3の実施形態]
続いて、本発明の第3の実施形態について図面を参照して詳細に説明する。図8は、本発明の第3の実施形態の構成を示すブロック図である。上記第2の実施形態との構成上の相違点は、入力側に、入力差分生成部41、出力差分生成部42、1対1の対応表記億部43、ラウンド差分計算部44および1対多対応位置決定部208が追加され、出力側に、結果出力部45が追加されている点である。
【0084】
本実施形態は、1対多対応位置決定部208を用いて1対多の対応表を適用する位置を決定し、その位置で1対多の対応表を用いて不能差分を判定することでID特性の有無を判定する点で上記第1、第2の実施形態と異なっている。以下、上記入力差分生成部41〜結果出力部45およびこれらを備えたことに伴う相違点について説明する。
【0085】
本実施形態の入力装置10には、評価パラメータとして”1対多の対応表”、”暗号部品毎の1対1対応表”、”暗号装置アルゴリズム”、そして”ワード差分定義”の4つが入力される。
【0086】
暗号部品毎の1対1対応表は、評価対象の暗号のラウンド関数もしくは部品関数すべてにおける入力ワード差分と出力ワード差分の対応を示す表を入力する。例えば、図17の関数Fが繰り返される暗号を評価対象とする場合、関数SBと関数SB^−1のS−boxにおける1対1の対応表は、図20に例示したとおりとなる。また、図9は、図17の関数MC内の排他的論理和における1対1対応表の例であり、図10は、関数MC内の乗算における1対1対応表の例である。
【0087】
暗号装置アルゴリズムとして、各関数において、ワード差分を1対1の対応表を用いて計算するアルゴリズムを入力する。例えば、関数MCに対しては上述の数1を入力する。
【0088】
入力差分生成部41と出力差分生成部42は、上記のように入力装置10から入力された内容に基づいて、評価対象とする暗号装置のXワードの入力差分と出力差分をそれぞれ生成する。
【0089】
1対1の対応表記憶部43は、上記暗号部品毎の1対1対応表を記憶する。
【0090】
ラウンド差分計算部44は、上記暗号装置アルゴリズムに従って暗号部品毎の1対1対応表を参照し、順方向と逆方向に差分を計算し、1対多対応位置決定部208に出力する。
【0091】
結果出力部45は、不能差分と判定された入力差分と出力差分の組すべてについて、不能差分となったラウンド数が最も大きい組を選択して出力する。
【0092】
1対多対応位置決定部208は、ラウンド差分計算部44で計算された順方向のラウンド数maxαとラウンド差分α[i](0≦i≦maxα)、1対多の対応表の対象関数である非線形関数の入力位置番号α_NL[i2](1≦i2≦非線形関数の入力位置のα[i]の数)、逆方向のラウンド数maxβとラウンド差分β[j](0≦j≦maxβ)、非線形関数の出力位置番号β_NL[j2](1≦j2≦非線形関数の出力位置のβ[j]の数)を受け取り、1対多の対応表を適用する位置を決定し、関係式探索部205にXワードの入力差分と出力差分を出力する。
【0093】
1対多対応位置決定部208の入力について、図11、図12を用いて、具体的に説明する。
【0094】
順方向のラウンド差分α[i]は、入力差分生成部41で生成された入力差分を暗号装置アルゴリズムに従って暗号部品毎の1対1対応表を参考にすべてのワード差分が不明なワード差分rdになるまで計算したi番目の関数通過後のラウンド差分である。すべてのワード差分がrdとなった時の関数通過数がmaxαである。
【0095】
図11は、入力差分(1d*、2d*、0d、0d)を順方向に遷移させたラウンド差分の例を示している。maxα=6、α[0]=(1d*、2d*、0d、0d)、α[1]=(1d*、0d、0d、2d*)、α[2]=(1d*、1d*、2d*、2・2d*)、...、α[6]=(rd、rd、rd、rd)である。非線形関数の入力位置はα[3]の位置だけであり、この場合、α_NL[1]=3と決定される。
【0096】
逆方向のラウンド数maxβ、ラウンド差分β[j]も同様である。図12は、出力差分(1d、0d、0d、0d)を逆方向に遷移させたラウンド差分の例を示している。maxβ=13、β[0]=β[1]=β[2]=β[3]=β[4]=(1d、0d、0d、0d)、β[5]=(8・1d、f・1d、0d、0d)、...、β[13]=(rd、rd、rd、rd)である。非線形関数の出力位置はβ[10]とβ[6]とβ[2]の位置であり、この場合、β_NL[1]=10、β_NL[2]=6、β_NL[3]=2と決定される。
【0097】
続いて、本実施形態の動作を説明する。本実施形態の動作も、上記した第2の実施形態の動作とほぼ共通するので、以下、その相違点を中心に説明する。
【0098】
図13は、本発明の第3の実施形態の不能差分の探索処理の流れを表したフローチャートである。本発明の第3の実施形態の処理の流れは、上記本発明の第2の実施形態の処理の流れを表した図7のフローチャートと同様であるが、処理開始に当たって、1対多対応位置決定部208を用いて1対多の対応表を適用する位置を決定する処理(ステップSB1)が追加されている。以下、ステップSB1の手順を詳細に説明する。
【0099】
図14は、1対多対応位置決定部208における処理(ステップSB1)の流れを表したフローチャートである。
【0100】
図14を参照すると、まず、1対多対応位置決定部208は、最初の非線形関数の入力位置α_NL[1]を指すためのカウンタi2を1にする(ステップSB101)。
【0101】
1対多対応位置決定部208は、ラウンド差分α[α_NL[i2]]を取り出す(ステップSB102)。
【0102】
次に、1対多対応位置決定部208は、取り出したラウンド差分α[α_NL[i2]]のワード差分のうち1つ以上のワード差分が不明なワード差分rdがあれば、次の非線形関数の入力位置を指すためのカウンタi2を1インクリメントする(ステップSB103のYes、ステップSB104)。
【0103】
次の非線形関数の入力が存在すれば、1対多対応位置決定部208は、ステップSB102からSB104を繰り返す(ステップSB105のYes)。
【0104】
ステップSB105で次の非線形関数の入力が存在しない場合は、1対多対応位置決定部208は、探索不可能として処理を終了する(ステップSB105のNo)。
【0105】
一方、ステップSB103でワード差分すべてが不明なワード差分rd以外である場合、1対多対応位置決定部208は、関係式探索部205に渡す入力差分をα[α_NL[i2]]とする(ステップSB106)。
【0106】
逆方向についても同様に、関係式探索部205に渡す出力差分を決定する(ステップSB107〜SB112)。
【0107】
以上のように、本実施形態によれば、”暗号部品毎の1対1対応表”、”暗号装置アルゴリズム”から入出力差分を生成し、ID特性を探索し、不能差分となったラウンド数が最も大きい組を得ることが可能になる。
【0108】
[第4の実施形態]
続いて、本発明の第4の実施形態について図面を参照して詳細に説明する。図15は、本発明の第4の実施形態の構成を示すブロック図である。上記第3の実施形態との構成上の相違点は、1対多の対応表生成部209が追加されている点である。
【0109】
1対多の対応表生成部209は、非線形関数を用いて、非線形関数の入力差分値から出力差分値の1対多の対応表を生成するものである。具体的には、入力差分値を全通り非線形関数に入力し、入力差分値ごとに取り得る出力差分値を生成して、図4に例示した1対多の対応表を生成する。
【0110】
続いて、本実施形態の動作を説明する。本実施形態の動作は、上記した第3の実施形態の動作とほぼ共通するので、以下、その相違点を中心に説明する。
【0111】
図16は、本発明の第4の実施形態の不能差分の探索処理の流れを表したフローチャートである。本発明の第4の実施形態の処理の流れは、上記本発明の第3の実施形態の処理の流れを表した図13のフローチャートと同様であるが、処理開始に当たって、1対多の対応表の作成処理(ステップSB1)が追加されている。
【0112】
本実施形態によれば、1対多の対応表を予め用意しなくとも、ID特性を検出できるという効果がある。
【0113】
以上、本発明の実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、上記した実施形態では、第1の実施形態から、第4の実施形態へと段階的に構成を追加して説明をしたが、各実施形態の特徴は、適宜組み合わせて実施することが可能である。
【符号の説明】
【0114】
10 入力装置
21 不能差分探索装置
22 不能差分探索装置
23 不能差分探索装置
24 不能差分探索装置
30 出力装置
41 入力差分生成部
42 出力差分生成部
43 1対1の対応表記憶部
44 ラウンド差分計算部
45 結果出力部
201 入力差分値生成部
202 出力差分値生成部
203 1対多の対応表記憶部
204 判定部
205 関係式探索部
206 不能差分判定部
207 非不能差分判定部
208 1対多対応位置決定部
209 1対多の対応表生成部

【特許請求の範囲】
【請求項1】
共通鍵ブロック暗号を構成するラウンド関数内部で使用される非線形関数の入力差分値と出力差分値とに関する1対多の対応表を保持し、該1対多の対応表を用いて、2つ以上のワード(入力ワード差分)で構成される入力差分の入力ワード差分から取り得る入力差分値と、2つ以上のワード(出力ワード差分)で構成される出力差分の出力ワード差分から取り得る出力差分値と、の組み合わせがあり得るか否かを判定する判定部と、
前記判定部を用いて、入力差分から生成した各入力差分値と、該各入力差分値に対応する出力ワード差分から生成した出力差分値との組み合わせがあり得るか否かを判定してゆき、取りうる出力差分値のすべてが前記入力差分値との組み合わせとしてあり得ない出力ワード差分の存在を1つでも確認できた場合に、その入力差分と出力差分の組が不能差分であると判定する不能差分判定部と、
を備える不能差分探索装置。
【請求項2】
さらに、
前記入力差分および出力差分についてそれぞれワード差分が一致する要素の集合が1つのグループとなるように、前記入力ワード差分と出力ワード差分とをそれぞれグループ化する関係式探索部と、
前記関係式探索部で分類された入力ワード差分の各グループにおいて、入力ワード差分から取り得るすべての入力差分値を生成する入力差分値生成部と、
前記関係式探索部で分類された出力ワード差分の各グループにおいて、出力ワード差分から取り得るすべての出力差分値を生成する出力差分値生成部と、を備え、
前記入力差分から生成した各入力差分値に対して、出力差分値があり得ないものであるか否かの判定を前記グループ単位で実施していく請求項1の不能差分探索装置。
【請求項3】
不能差分探索対象の暗号アルゴリズムの暗号部品毎に記憶した入出力差分の1対1対応表を参照し、入力差分および出力差分について順方向および逆方向の差分を算出するラウンド差分計算部と、
入力差分と出力差分が不明な状態になるまで、前記ラウンド差分計算部を動作させて前記1対多の対応表を適用する位置を決定し、前記関係式探索部に当該位置の入力差分および出力差分を出力する1対多対応位置決定部と、
を備える請求項2の不能差分探索装置。
【請求項4】
さらに、
前記判定部を用いて、入力差分から生成した各入力差分値と、各入力差分値に対応する位置の出力差分値との組み合わせがあり得るか否かを判定してゆき、出力ワード差分のすべてが、前記入力差分値との組み合わせとしてあり得る出力差分値を持つことを確認できた場合に、その入力差分と出力差分の組が不能差分ではないと判定する非不能差分判定部を備える請求項1から3いずれか一の不能差分探索装置。
【請求項5】
さらに、
不能差分探索対象の暗号アルゴリズムの非線形関数を用いて、1対多の対応表を生成する1対多の対応表生成部を備える請求項1から4いずれか一の不能差分探索装置。
【請求項6】
共通鍵ブロック暗号を構成するラウンド関数内部で使用される非線形関数の入力差分値と出力差分値とに関する1対多の対応表を保持し、該1対多の対応表を用いて、2つ以上のワード(入力ワード差分)で構成される入力差分の入力ワード差分から取り得る入力差分値と、2つ以上のワード(出力ワード差分)で構成される出力差分の出力ワード差分から取り得る出力差分値と、の組み合わせがあり得るか否かを判定するステップを繰り返し、
取りうる出力差分値のすべてが前記入力差分値との組み合わせとしてあり得ない出力ワード差分の存在を1つでも確認できた場合に、その入力差分と出力差分の組が不能差分であると判定する不能差分探索方法。
【請求項7】
共通鍵ブロック暗号を構成するラウンド関数内部で使用される非線形関数の入力差分値と出力差分値とに関する1対多の対応表を保持し、該1対多の対応表を用いて、2つ以上のワード(入力ワード差分)で構成される入力差分の入力ワード差分から取り得る入力差分値と、2つ以上のワード(出力ワード差分)で構成される出力差分の出力ワード差分から取り得る出力差分値と、の組み合わせがあり得るか否かを判定する処理を繰り返し、取りうる出力差分値のすべてが前記入力差分値との組み合わせとしてあり得ない出力ワード差分の存在を1つでも確認できた場合に、その入力差分と出力差分の組が不能差分であると判定する処理をコンピュータに実行させるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate


【公開番号】特開2011−13633(P2011−13633A)
【公開日】平成23年1月20日(2011.1.20)
【国際特許分類】
【出願番号】特願2009−160035(P2009−160035)
【出願日】平成21年7月6日(2009.7.6)
【出願人】(000004237)日本電気株式会社 (19,353)
【出願人】(000242666)北陸日本電気ソフトウェア株式会社 (11)
【Fターム(参考)】