JP5338945B2 - 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム - Google Patents
復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム Download PDFInfo
- Publication number
- JP5338945B2 JP5338945B2 JP2012116685A JP2012116685A JP5338945B2 JP 5338945 B2 JP5338945 B2 JP 5338945B2 JP 2012116685 A JP2012116685 A JP 2012116685A JP 2012116685 A JP2012116685 A JP 2012116685A JP 5338945 B2 JP5338945 B2 JP 5338945B2
- Authority
- JP
- Japan
- Prior art keywords
- box
- boxes
- type
- round
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
入力データを2以上の数で分割して得られる各データ系列に対し、Sボックスを含むF関数によるデータ変換処理をラウンド関数として各々実行する復号処理部を有し、
前記復号処理部は、入力データの系列と出力データの系列が同一であり、かつ隣り合う位置にあるF関数において対応するビット列に適用されるSボックスが異なる構成であり、
前記復号処理部は、
sビットの入出力をもつSボックスとして、
(1)タイプ1:拡大体GF(2s)上の逆元写像:Y=X−1、または、べき乗関数Y=Xqを利用したSボックス、
(2)タイプ2:t−bitの小さなS−boxを複数組み合わせて作り出されたSボックス、ただしt<sとする。
(3)タイプ3:ランダムに選択されたSボックス、
上記(1)〜(3)の3タイプのSボックス中、少なくとも2つ以上の異なるタイプのSボックスを利用した構成である復号処理装置にある。
(a)一部をタイプ1のSボックスとし、その他をタイプ2のSボックスとした構成、
(b)一部をタイプ1のSボックスとし、その他をタイプ3のSボックスとした構成、
(c)一部をタイプ2のSボックスとし、その他をタイプ3のSボックスとした構成、
(d)一部をタイプ1のSボックスとし、他の一部をタイプ2のSボックスとし、その他をタイプ3のSボックスとした構成、
上記(a)〜(d)のいずれかの構成を有することを特徴とする。
入力データを2以上の数で分割して得られる各データ系列に対し、Sボックスを含むF関数によるデータ変換処理をラウンド関数として各々実行する復号処理部と、
前記復号処理部における復号処理の制御を行う制御部と、
前記制御部の実行する復号処理制御プログラムを格納したメモリを有し、
前記復号処理部は、入力データの系列と出力データの系列が同一であり、かつ隣り合う位置にあるF関数において対応するビット列に適用されるSボックスが異なる構成であり、
前記復号処理部は、
sビットの入出力をもつSボックスとして、
(1)タイプ1:拡大体GF(2s)上の逆元写像:Y=X−1、または、べき乗関数Y=Xqを利用したSボックス、
(2)タイプ2:t−bitの小さなS−boxを複数組み合わせて作り出されたSボックス、ただしt<sとする。
(3)タイプ3:ランダムに選択されたSボックス、
上記(1)〜(3)の3タイプのSボックス中、少なくとも2つ以上の異なるタイプのSボックスを利用した構成である情報処理装置にある。
(a)一部をタイプ1のSボックスとし、その他をタイプ2のSボックスとした構成、
(b)一部をタイプ1のSボックスとし、その他をタイプ3のSボックスとした構成、
(c)一部をタイプ2のSボックスとし、その他をタイプ3のSボックスとした構成、
(d)一部をタイプ1のSボックスとし、他の一部をタイプ2のSボックスとし、その他をタイプ3のSボックスとした構成、
上記(a)〜(d)のいずれかの構成を有することを特徴とする。
復号処理装置において、復号処理を実行する復号処理方法であり、
復号処理部において、入力データを2以上の数で分割して得られる各データ系列に対し、Sボックスを含むF関数によるデータ変換処理をラウンド関数として各々実行する復号処理ステップを実行し、
前記復号処理ステップにおいて、入力データの系列と出力データの系列が同一であり、かつ隣り合う位置にあるF関数において対応するビット列に適用するSボックスを異なる設定のSボックスを適用したデータ変換処理を実行し、
前記復号処理ステップにおいて、
sビットの入出力をもつSボックスとして、
(1)タイプ1:拡大体GF(2s)上の逆元写像:Y=X−1、または、べき乗関数Y=Xqを利用したSボックス、
(2)タイプ2:t−bitの小さなS−boxを複数組み合わせて作り出されたSボックス、ただしt<sとする。
(3)タイプ3:ランダムに選択されたSボックス、
上記(1)〜(3)の3タイプのSボックス中、少なくとも2つ以上の異なるタイプのSボックスを利用したデータ変換処理を実行する復号処理方法にある。
復号処理装置において、復号処理を実行させるコンピュータ・プログラムであり、
復号処理部において、入力データを2以上の数で分割して得られる各データ系列に対し、Sボックスを含むF関数によるデータ変換処理をラウンド関数として各々実行する復号処理ステップを実行させ、
前記復号処理ステップにおいて、入力データの系列と出力データの系列が同一であり、かつ隣り合う位置にあるF関数において対応するビット列に適用するSボックスを異なる設定のSボックスを適用したデータ変換処理を行なわせ、
前記復号処理ステップにおいて、
sビットの入出力をもつSボックスとして、
(1)タイプ1:拡大体GF(2s)上の逆元写像:Y=X−1、または、べき乗関数Y=Xqを利用したSボックス、
(2)タイプ2:t−bitの小さなS−boxを複数組み合わせて作り出されたSボックス、ただしt<sとする。
(3)タイプ3:ランダムに選択されたSボックス、
上記(1)〜(3)の3タイプのSボックス中、少なくとも2つ以上の異なるタイプのSボックスを利用したデータ変換処理を実行させるコンピュータ・プログラムにある。
1.共通鍵ブロック暗号の概要
2.複数の異なるSボックスの配置により耐性を向上させた構成
(2A)S−boxを用いたFeistelもしくは拡張Feistel型暗号において2種類以上の異なるS−boxを配置することで飽和攻撃に対する耐性を向上させた構成
(2B)S−boxを用いたブロック暗号において、2種類以上の異なるS−boxを混在させることで代数的攻撃(XSL攻撃)に対する耐性を向上させた構成
(2C)S−boxを用いたFeistel暗号もしくは拡張Feistel型暗号において上記(2A),(2B)を同時に実現する構成
3.暗号処理装置の構成例
まず、本発明の適用可能な共通鍵ブロック暗号の概要について説明する。本明細書において、共通鍵ブロック暗号(以下ではブロック暗号)は、以下に定義するものを指すものとする。
平文[P]、暗号文[C]、鍵[K]の各ビットサイズは、以下のように示される。
平文P:nビット
暗号文C:nビット
鍵K:kビット
(ア)SPN(Substitution Permutation Network)構造、
(イ)Feistel構造、
(ウ)拡張Feistel構造、
がある。以下、これらの具体的構成について、図4〜図6を参照して説明する。
まず、図4を参照して、ラウンド関数実行部20の一構成例としてのSPN構造ラウンド関数について説明する。SPN構造ラウンド関数実行部20aは、非線形変換層(S層)と線形変換層(P層)を接続したいわゆるSP型の構成を有する。図4に示すように、nビットの入力データすべてに対して、ラウンド鍵との排他的論理和(EXOR)演算を実行する排他的論理和演算部21、排他的論理和演算部21の演算結果を入力し、入力データの非線形変換を実行する非線形変換処理部22、非線形変換処理部22における非線形変換処理結果を入力し、入力データに対する線形変換処理を実行する線形変換処理部23などによって構成される。線形変換処理部23の線形変換処理結果が、次のラウンドに出力される。最終ラウンドでは暗号文となる。なお、図4に示す例では、排他的論理和演算部21、非線形変換処理部22、線形変換処理部23の処理順を示しているが、これらの処理部の順番は、限定されるものではなく、他のシーケンスで処理を行なう構成としてもよい。
次に、図5を参照してラウンド関数実行部20の一構成例としてのFeistel(フェイステル)構造について説明する。Feistel構造は、図5に示すように、前ラウンドからの入力(第1ラウンドでは入力文)であるnビットの入力データをn/2ビットの2つのデータに分割して、各ラウンドにおいて入れ替えながら処理を実行する。
次に、図6を参照してラウンド関数実行部20の一構成例としての拡張Feistel構造について説明する。先に、図5を参照して説明したFeistel構造は、nビットの平文を2つに分割してn/2ビットずつに区分して処理を実行していた。すなわち、分割数:d=2とした処理である。なお、この分割数は、データ系列数とも呼ばれる。
(ア)SPN(Substitution Permutation Network)構造、
(イ)Feistel構造、
(ウ)拡張Feistel構造、
これらの構造をとり得る。これらのラウンド関数実行部は、いずれも非線形変換層(S層)と線形変換層(P層)を接続したいわゆるSP型の構成を有する。すなわち、非線形変換処理を実行する非線形変換処理部と、線形変換処理を実行する線形変換処理部とを有する。以下、これらの変換処理構成について説明する。
非線形変換処理部の具体例について、図7を参照して説明する。図7に示すように、非線形変換処理部50は、具体的には、Sボックス(S−box)51と呼ばれるsビット入力sビット出力の非線形変換テーブルがm個並んだものであり、msビットの入力データがsビットずつ分割されてそれぞれ対応するSボックス(S−box)51に入力されデータが変換される。各Sボックス51では、例えば変換テーブルを適用した非線形変換処理が実行される。
線形変換処理部の具体例について、図8を参照して説明する。線形変換処理部は、入力値、例えば、Sボックスからの出力データであるmsビットの出力値を入力値Xとして入力し、この入力に対して線形変換を施しmsビットの結果を出力する。線形変換処理は、例えば、入力ビット位置の入れ替え処理などの線形変換処理を実行して、msビットの出力値Yを出力する。線形変換処理は、例えば、入力に対して、線形変換行列を適用して入力ビット位置の入れ替え処理を行なう。この行列の一例が図8に示す線形変換行列である。
上述したように、共通鍵ブロック暗号は、ラウンド関数の繰り返しによる暗号処理を行なう構成である。この共通鍵ブロック暗号処理の問題点として、暗号解析による鍵の漏洩がある。暗号解析による鍵の解析が容易であるということは、その暗号処理の安全性が低いということになり、実用上、大きな問題となる。以下では、複数の異なるS−box(Sボックス)を配置することで耐性を向上させた暗号処理構成について説明する。
(2A)S−boxを用いたFeistelもしくは拡張Feistel型暗号において2種類以上の異なるS−boxを配置することで飽和攻撃に対する耐性を向上させた構成
(2B)S−boxを用いたブロック暗号において、2種類以上の異なるS−boxを混在させることで代数的攻撃(XSL攻撃)に対する耐性を向上させた構成
(2C)S−boxを用いたFeistel暗号もしくは拡張Feistel型暗号において上記(2A),(2B)を同時に実現する構成
まず、最初にブロック暗号に対する攻撃として知られる飽和攻撃について説明する。飽和攻撃には複数のタイプがある。第1のタイプは、平文の特定のバイト位置について、256種類の値を変化させながら入力した場合、数ラウンド分のラウンド変換処理後に、出力値の特定のバイト位置に256種類の値がすべて現れるという性質を利用した攻撃法である。
また、飽和攻撃の別の形態の攻撃としては、数ラウンド分のラウンド変換後の特定のバイト位置に表れる値の総和を計算すると必ず0になるという性質を利用した攻撃手法である。
P0=(0,0,0,0,0,0,0,0)
P1=(0,0,0,0,0,0,0,1)
: :
P255=(0,0,0,0,0,0,0,255)
これらの平文P0〜P255を、順次入力する。なお、上記表記において、各[0]は1バイトデータの0を示す。
C0=(c0,?,?,?,?,?,?,?)
C1=(c1,?,?,?,?,?,?,?)
: :
C255=(c255,?,?,?,?,?,?,?)
上記出力中[?]は、いかなるビット値でも構わない。
256種類の値c0〜c255がすべて出現する。あるいは、
特定のバイト位置の値:c0〜c255を総和(EXOR)した場合に0となる。
このような規則性のある出力が発生する場合に、これらの規則性に基づいて実行する攻撃(解析)手法である。
次に、Feistel構造、または拡張Feistel構造を適用した暗号処理における問題点について検討する。
A:先行F関数101に対する入力
B:先行F関数101の出力
C:後続F関数102の入力
D:後続F関数102の出力
E:先行F関数101の出力Bに対する排他的論理和演算データ
F:データAに対する排他的論理和演算データ
G:データBとデータEとの排他的論理和演算結果
H:データDとデータGとの排他的論理和演算結果
I:先行F関数101に対して入力するラウンド鍵
J:後続F関数102に対して入力するラウンド鍵
これらの各データを示している。
A=A[0]|A[1]|A[2]|A[3]
上記のように表現する。
P0=(0,0,0,0)
P1=(1,0,0,0)
: :
P255=(255,0,0,0)
これらの平文P0〜P255を、順次入力すると仮定する。なお、上記表記において、各[0],[1]〜[255]は1バイトデータを示す。
I:先行F関数101に対して入力するラウンド鍵
J:後続F関数102に対して入力するラウンド鍵
および、
F:データAに対する排他的論理和演算データ
これらの各データの値の組み合わせによっては、常に以下の式が成立することが発生し得る。すなわち、
A[0](EXOR)I[0]=C[0](EXOR)J[0]
上記式が成立することがありうる。
なお、(EXOR)は排他的論理和演算を示し、
A[0](EXOR)I[0]は、データA[0]とデータI[0]との排他的論理和演算、
C[0](EXOR)J[0]は、データC[0]とデータJ[0]との排他的論理和演算、
を示している。
この式が意味することは2つのF関数101,102における2つのS−boxに入力される値がつねに同じ値となることに他ならない。これらS−boxはすべて同じ非線形変換処理を実行しており、同じ入力値に対しては同じ出力値を出力する。従って、2つのF関数101,102における2つのS−boxの出力が常に同じになる。各F関数101,102では、この同じS−box出力が、線形変換処理部の行列により線形変換されて右側のデータ系列(y)の排他的論理和演算部に出力される。図に示す排他的論理和演算部111,112である。
B(EXOR)Δ=D
となる。
このとき、排他的論理和演算部111では、
G=B(EXOR)E
の演算によりデータGが算出され、
排他的論理和演算部112では、
H=G(EXOR)D
が実行される。
上記式、H=G(EXOR)Dは、G=B(EXOR)E、B(EXOR)Δ=Dであるので、
H=B(EXOR)E(EXOR)B(EXOR)Δ
=E(EXOR)Δとなる。
H=B(EXOR)E(EXOR)B(EXOR)Δ
=Δ(EXOR)E
=E(EXOR)Δ
となる。
S(A[0](EXOR)I[0])(EXOR)S(C[0](EXOR)J[0])
これらの結果として、0から255までの256種類の全ての値が現れるという場合も望ましいとは言えない。本来ならばA[0]とC[0]の両者が256種類の異なる値をそれぞれ出力していてもそれらの演算(EXOR)結果が、かならずしも256種類の出力値をすべて取ることは保証されないが、S−boxによってはそのような状況が発生することはありえる。この予期しないことがらが発生すると攻撃に利用できる情報(値がすべて異なるという情報)が次の段まで保存されてしまうことになり、攻撃者にとって有利な状況を生み出してしまう。
以下、飽和攻撃による鍵推定を困難化するための構成例について説明する。すなわち、上記のような条件が万が一揃ってしまっても、データの打消しによるラウンド関数の実行前のデータと実行後のデータとが等しいデータとならないように、各F関数の非線形変換処理部、すなわちS−boxを構成する。
A:先行F関数201に対する入力
B:先行F関数201の出力
C:後続F関数202の入力
D:後続F関数202の出力
E:先行F関数201の出力Bに対する排他的論理和演算データ
F:データAに対する排他的論理和演算データ
G:データBとデータEとの排他的論理和演算結果
H:データDとデータGとの排他的論理和演算結果
I:先行F関数201に対して入力するラウンド鍵
J:後続F関数202に対して入力するラウンド鍵
これらの各データを示している。
各S−box:S1,S2がnビット入出力の非線形変換処理を実行するS−boxであるとき、
(条件1)
任意のsビットデータcに対して、すべてのsビットデータである2s個のxを、順次、入力した場合、
入力データ[x]に対応する第1のS−box[S1]の出力S1(x)と、
入力データ[x(EXOR)c]に対応するS−box[S2]の出力S2(x(EXOR)c)、
は、最低でもひとつは異なる値を持つ。すなわち、
S1(x)(EXOR)S2(x(EXOR)c)
上記式は固定値にならない。
さらに、
(条件2)
任意のsビットデータcに対して、すべてのsビットデータである2s個のxを、順次、入力した場合、
入力データ[x]に対応する第1のS−box[S1]の出力S1(x)と、
入力データ[x(EXOR)c]に対応するS−box[S2]の出力S2(x(EXOR)c)、
は、最低でもひとつは重複値を持つ。すなわち、
S1(x)(EXOR)S2(x(EXOR)c)
上記式は、2sのすべてが一度ずつ表れる形にならない。
データAを[x]
データFを[c]
と仮定した場合、
先行F関数201のS−box[S1]の出力S1(x)と、
後続F関数202のS−box[S2]の出力S2(x(EXOR)c)と、
これらの2つの出力が全く同一であったり、排他的論理和した結果がすべてことなる値にはならないという条件を示すものである。
すなわち、あるF関数ではS−box[S1]のみを用いた非線形変換処理部として、次のF関数ではS−box[S2]のみを用いた非線形変換処理部とする。それ以降のラウンドがある場合は、同様に、各F関数の非線形変換処理部にS−box[S1],[S2]の順に設定する。
また、上述した(条件2)を満たすS−boxを利用することにより、たとえ2つのS−boxの入力の関係が、固定値の差を持つ場合でも、その出力の排他的論理和は最低でも一回は重複する値を持つため、攻撃に利用可能な性質を損なわれるといえる。従って、2つのS−boxを以上のように配置することで飽和攻撃の攻撃者に対する有利な条件が減少するため、攻撃に対する耐性が向上できることが期待できる。
A[0](EXOR)I[0]=C[0](EXOR)J[0]
となったとしても、
各F関数のS−boxの出力値、すなわち、
S1(A[0](EXOR)I[0])と、
S2(C[0](EXOR)J[0])と、
これらの出力値が、すべての場合において完全に一致することはなく、結果として、各F関数201,202のF関数出力B,Dは完全に一致することがなく、先に図9を参照して説明したような事象、すなわち、
E=H(EXOR)Δ
といった、1つのデータ系列において、ラウンド関数(F関数)の実行前後のデータが固定値のみの差分をもつという可能性をなくすことができる。
図10を参照して説明した上記構成は、2つのF関数の関係にのみ着目し、この2つのF関数に設定するS−boxを異なるものとするという条件を導いたが、3つ以上のF関数においても同様のことがいえる。例えば、図11に示すようにF関数ごとに異なるS−boxを配置することにより飽和攻撃に対する耐性の向上が期待できる。
F関数211の非線形変換処理部にはS−box[S1]が設定され、
F関数212の非線形変換処理部にはS−box[S2]が設定され、
F関数213の非線形変換処理部にはS−box[S3]が設定されており、
S1≠S2≠S3
である。
(条件1)
k個(k>2)のS−boxからなる集合S1,S2,..,Skに対して、互いに相異なる2つのS−boxの組SiとSj(i≠j)に対して、任意のcに対して、すべての可能な2s個のxを入力として与えたとき、
Si(x)と、
Sj(x(EXOR)c)、
これらのSボックス出力は、完全同一にならず、最低でもひとつは異なる値を出力する。すなわち、
Si(x)と、Sj(x(EXOR)c)の排他的論理和の結果は固定値にならない。
さらに、
(条件2)
k個(k>2)のS−boxからなる集合S1,S2,..,Skに対して、互いに相異なる2つのS−boxの組SiとSj(i≠j)に対して、任意のcに対して、すべての可能な2n個のxを入力として与えたとき、
Si(x)と、
Sj(x(EXOR)c)、
これらのSボックス出力は、2n個のすべての値が一度ずつ現れる形にならない。すなわち、最低でも一つの重複値が現れる。
現実的な実装を考慮すると、各F関数に含まれるS−boxの種類が複数になっても、各F関数に含まれるS−boxの組み合わせは、同じになっている方が望ましい場合がある。
なお、S1≠S2
である。
S1→S2、または、
S2→S1、
となり、対応するビットデータ(例えば各バイト単位)の処理としては、図10を参照して説明したと同様の処理となり、結果として、同様の効果、すなわち、出力系列に表れるデータが、ラウンド関数実行前の同一出力系列に出現するデータと一致する可能性を著しく低下させることができ、結果として、飽和攻撃の難易度を大きく向上させ、攻撃に対する耐性が高めることが可能となる。
なお、S1≠S2≠S3≠S4
である。
S1→S2→S3→S4→S1→S2・・・、
の順番となり、対応するビットデータ(例えば各バイト単位)の処理としては、図10や図11を参照して説明したと同様の処理となり、結果として、同様の効果、すなわち、出力系列に表れるデータが、ラウンド関数実行前の同一出力系列に出現するデータと一致する可能性を著しく低下させることができ、結果として、飽和攻撃の難易度を大きく向上させ、攻撃に対する耐性を高めることが可能となる。
次に、S−boxを用いたブロック暗号において、種類の異なるS−boxを混ぜることで代数的攻撃(XSL攻撃)に対する耐性を向上させる構成について説明する。
まず、ブロック暗号に対する攻撃として知られる代数的攻撃(XSL攻撃)について説明する。ブロック暗号に対する代数的攻撃(XSL攻撃)はS−boxの代数表現を利用した攻撃である。S−boxの入出力に関して代数式として表現すると複数の式を導き出すことができるが、その式の最大次数や含まれる項の数によって、攻撃に必要な計算量が変化する。
入力X:(x1,x2,x3,x4,x5,x6,x7,x8)、
出力Y:(y1,y2,y3,y4,y5,y6,y7,y8)、
とすると2次以下のブール式で書き表すことの式の数を評価する。
(1,xi,yi,xixj,yiyj,xiyj)
このような2次以下のいずれかの形で表すことのできる多項式の数を評価する。
また、ブール式のみではならず、拡大体GF(28)などの定義体の上で低い次数での代数表現ができる場合も同様な手法を使って代数的攻撃(XSL攻撃)をすることが容易となり、攻撃耐性が弱いとされる。
次に、S−boxを用いたブロック暗号において、1種類のみのS−boxを利用した構成での、問題点、すなわち、代数的攻撃(XSL攻撃)が行ないやすくなるという問題点について説明する。
タイプ1:拡大体GF(2s)上の逆元写像:Y=X−1や、べき乗関数Y=Xpを利用したS−box
タイプ2:例えば4−bit入出力等のsビットより小さなS−boxを複数組み合わせて作り出されたS−box
タイプ3:ランダムに選択されたS−box
これらの3タイプが代表的である。
特にタイプ1とタイプ2に関しては、ハードウェア(H/W)実装時に低コストで実装できるためしばしば利用されるS−boxである。
以下、上記タイプ1〜3、各々について、1種類のみのS−boxを利用した構成での、問題点、すなわち、代数的攻撃(XSL攻撃)が行ないやすくなるという問題点について説明する。
タイプ1、すなわち、GF(2s)上の逆元写像:Y=X−1や、べき乗関数Y=Xpを利用したS−boxの場合の問題点について説明する。
次に、タイプ2、すなわち、より小さな(例えば4−bit)S−boxを複数組み合わせて作り出されたS−boxの場合の問題点について説明する。
次に、タイプ3、すなわち、ランダムに選択されたS−boxの場合の問題点について説明する。ランダムに選択されたS−boxは上述のような代数的に見て弱い性質があることが望めず、代数的攻撃(XSL攻撃)に対しての高い安全性が期待できるが、H/W実装コストが極めて高いため、すべてのS−boxをランダムに選択されたS−boxにすることは望ましくはないという問題がある。
上記の問題に鑑み、代数的性質の異なる2種類以上のS−boxを利用することでブール多項式を用いた代数的攻撃(XSL攻撃)、およびGF(2s)の体を利用した代数的攻撃(XSL攻撃)の両者に対して耐性を向上さら、さらにすべてのS−boxをランダムに選択されたS−boxにする場合よりハードウェア(H/W)実装効率を高めた構成について、以下説明する。
タイプ1:拡大体GF(2s)上の逆元写像:Y=X−1や、べき乗関数Y=Xpを利用したS−box
タイプ2:t−bitの小さなS−boxを複数組み合わせて作り出されたS−box(ただしt<sとする)
タイプ3:ランダムに選択されたS−box
これらの3タイプが代表的である。
(ア)SPN(Substitution Permutation Network)構造、
(イ)Feistel構造、
(ウ)拡張Feistel構造、
これらのいずれにも適用可能である。
(a)一部をタイプ1のS−boxとし、その他をタイプ2のS−boxとする構成
(b)一部をタイプ1のS−boxとし、その他をタイプ3のS−boxとする構成
(c)一部をタイプ2のS−boxとし、その他をタイプ3のS−boxとする構成
(d)一部をタイプ1のS−boxとし、他の一部をタイプ2のS−boxとし、その他をタイプ3のS−boxと構成
データ変換処理を実行するラウンド関数中に含まれる非線形変換処理部としてのS−box中、半分のS−boxをタイプ1、すなわち、GF(28)上の逆元写像を用いたS−boxとし、それ以外のS−boxを取り除いた架空の暗号を考え、そのもとでブール式を利用した代数的攻撃(XSL攻撃)の計算量の見積もりを行い、十分な計算量が見積もられていれば、残りの半分のS−boxを、タイプ2、すなわち、4−bitの小さなS−boxを複数組み合わせて作り出した8ビットS−boxとする構成にする。
タイプ1:拡大体GF(2s)上の逆元写像:Y=X−1や、べき乗関数Y=Xpを利用したS−box
このタイプ1のS−box[S1]を配置し、
後続する3ラウンドのラウンド関数実行部301〜303に、
タイプ2:4−bitのような小さなS−boxを複数組み合わせて作り出されたS−box
このタイプ2のS−box[S2]を配置した構成例である。
図15に示す例は、
第1,3,5の奇数ラウンドのラウンド関数実行部321,323,325には、
タイプ1:拡大体GF(2s)上の逆元写像:Y=X−1や、べき乗関数Y=Xpを利用したS−box
このタイプ1のS−box[S1]を配置し、
第2,4,6の偶数ラウンドのラウンド関数実行部322,324,326には、
タイプ2:4−bitのような小さなS−boxを複数組み合わせて作り出されたS−box
このタイプ2のS−box[S2]を配置した構成例である。
図16に示す例は、
すべてのラウンドのラウンド関数実行部341〜346において、
タイプ1:拡大体GF(2s)上の逆元写像:Y=X−1や、べき乗関数Y=Xpを利用したS−box
このタイプ1のS−box[S1]と、
タイプ2:4−bitのような小さなS−boxを複数組み合わせて作り出されたS−box
このタイプ2のS−box[S2]を、
半数ずつ、すなわち5個ずつ配置した構成例である。
図17に示す例は、図16に示す例と同様、
すべてのラウンドのラウンド関数実行部361〜366において、
タイプ1:拡大体GF(2s)上の逆元写像:Y=X−1や、べき乗関数Y=Xpを利用したS−box
このタイプ1のS−box[S1]と、
タイプ2:4−bitのような小さなS−boxを複数組み合わせて作り出されたS−box
このタイプ2のS−box[S2]を、
半数ずつ、すなわち5個ずつ配置した構成例である。
図18に示す例は、
すべてのラウンドのラウンド関数実行部381〜386において、
タイプ1:拡大体GF(2s)上の逆元写像:Y=X−1や、べき乗関数Y=Xpを利用したS−box
このタイプ1のS−box[S1]と、
タイプ2:4−bitのような小さなS−boxを複数組み合わせて作り出されたS−box
このタイプ2のS−box[S2]を、
半数ずつ、すなわち2個ずつ配置した構成例である。
(a)一部をタイプ1のS−boxとし、その他をタイプ2のS−boxとする構成
(b)一部をタイプ1のS−boxとし、その他をタイプ3のS−boxとする構成
(c)一部をタイプ2のS−boxとし、その他をタイプ3のS−boxとする構成
(d)一部をタイプ1のS−boxとし、他の一部をタイプ2のS−boxとし、その他をタイプ3のS−boxと構成
これらの各種の混在構成が可能であり、いずれの場合においても、代数的攻撃(XSL攻撃)に対する耐性の向上が実現される。
次に、S−boxを用いたFeistel暗号もしくは拡張Feistel型暗号において上記(2A),(2B)、すなわち、
(2A)S−boxを用いたFeistelもしくは拡張Feistel型暗号において2種類以上の異なるS−boxを配置することで飽和攻撃に対する耐性を向上させた構成
(2B)S−boxを用いたブロック暗号において、2種類以上の異なるS−boxを混在させることで代数的攻撃(XSL攻撃)に対する耐性を向上させた構成
これらの構成を同時に実現する構成例について説明する。
(2A)S−boxを用いたFeistelもしくは拡張Feistel型暗号において2種類以上の異なるS−boxを配置することで飽和攻撃に対する耐性を向上させた構成
において説明した図10〜図13の各構成において適用した異なる非線形変換処理を実行するS−box[S1],[S2],[S3],[S4]・・のそれぞれについて、
上述した
(2B)S−boxを用いたブロック暗号において、2種類以上の異なるS−boxを混在させることで代数的攻撃(XSL攻撃)に対する耐性を向上させた構成
において説明した異なるタイプのS−box、すなわち、
タイプ1:拡大体GF(2s)上の逆元写像:Y=X−1や、べき乗関数Y=Xpを利用したS−box
タイプ2:4−bitのような小さなS−boxを複数組み合わせて作り出されたS−box
タイプ3:ランダムに選択されたS−box
これらの3タイプを対応付けて設定する。
S−box[S1]と、S−box[S2]とを、(2B)において説明した異なるタイプのS−boxとして設定することで、
飽和攻撃に対しても、代数的攻撃(XSL攻撃)に対しても耐性の高い構成が実現される。
S−box[S1],[S2]・・を、(2B)において説明した異なるタイプのS−boxとして設定することで、
飽和攻撃に対しても、代数的攻撃(XSL攻撃)に対しても耐性の高い構成が実現される。
最後に、上述した実施例に従った暗号処理を実行する暗号処理装置としてのICモジュール700の構成例を図19に示す。上述の処理は、例えばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図19に示すICモジュール700は、これら様々な機器に構成することが可能である。
(ア)SPN(Substitution Permutation Network)構造、
(イ)Feistel構造、
(ウ)拡張Feistel構造、
これらの各構成のいずれかの構造を適用した共通鍵ブロック暗号処理アルゴリズムに従った暗号処理、復号処理を実行する。
(2A)S−boxを用いたFeistelもしくは拡張Feistel型暗号において2種類以上の異なるS−boxを配置した構成、
(2B)S−boxを用いたブロック暗号において、2種類以上の異なるタイプのS−boxを混在させた構成、
(2C)S−boxを用いたFeistel暗号もしくは拡張Feistel型暗号において上記(2A),(2B)を同時に実現する構成、
これらの構成のいずれかに対応する構成を持つ非線形変換処理部としてのS−boxを持つ。
(2A)S−boxを用いたFeistelもしくは拡張Feistel型暗号において2種類以上の異なるS−boxを配置することで飽和攻撃に対する耐性を向上させた構成、
(2B)S−boxを用いたブロック暗号において、2種類以上の異なるS−boxを混在させることで代数的攻撃(XSL攻撃)に対する耐性を向上させた構成、
(2C)S−boxを用いたFeistel暗号もしくは拡張Feistel型暗号において上記(2A),(2B)を同時に実現する構成、
これらのいずれかの構成を持ち、飽和攻撃や代数的攻撃(XSL攻撃)に対する耐性が向上した構成を持つ。
11 鍵スケジューリング部
12 暗号処理部
20 ラウンド関数実行部
21 排他的論理和演算部
22 非線形変換処理部
23 線形変換処理部
30 F関数部
31 排他的論理和演算部
32 非線形変換処理部
33 線形変換処理部
34 排他的論理和演算部
41,42 F関数部
50 非線形変換処理部
51 Sボックス
101,102 F関数
201,202 F関数
211〜231 F関数
221,222 F関数
231〜233 F関数
301〜306 ラウンド関数実行部
321〜326 ラウンド関数実行部
341〜346 ラウンド関数実行部
361〜366 ラウンド関数実行部
381〜386 ラウンド関数実行部
700 ICモジュール
701 CPU(Central processing Unit)
702 メモリ
703 暗号処理部
704 乱数発生器
705 送受信部
Claims (18)
- 入力データを2以上の数で分割して得られる各データ系列に対し、Sボックスを含むF関数によるデータ変換処理をラウンド関数として各々実行する復号処理部を有し、
前記復号処理部は、入力データの系列と出力データの系列が同一であり、かつ隣り合う位置にあるF関数において対応するビット列に適用されるSボックスが異なる構成であり、
前記復号処理部は、
sビットの入出力をもつSボックスとして、
(1)タイプ1:拡大体GF(2s)上の逆元写像:Y=X−1、または、べき乗関数Y=Xqを利用したSボックス、
(2)タイプ2:t−bitの小さなS−boxを複数組み合わせて作り出されたSボックス、ただしt<sとする。
(3)タイプ3:ランダムに選択されたSボックス、
上記(1)〜(3)の3タイプのSボックス中、少なくとも2つ以上の異なるタイプのSボックスを利用した構成である復号処理装置。 - 前記復号処理部は、前記Sボックスを、
(a)一部をタイプ1のSボックスとし、その他をタイプ2のSボックスとした構成、
(b)一部をタイプ1のSボックスとし、その他をタイプ3のSボックスとした構成、
(c)一部をタイプ2のSボックスとし、その他をタイプ3のSボックスとした構成、
(d)一部をタイプ1のSボックスとし、他の一部をタイプ2のSボックスとし、その他をタイプ3のSボックスとした構成、
上記(a)〜(d)のいずれかの構成を有することを特徴とする請求項1に記載の復号処理装置。 - 前記復号処理部は、
ラウンド関数実行部内に、処理対象データを分割した分割データ各々の非線形変換処理を実行する複数のSボックスを有し、
1つのラウンドでは1種類のタイプのSボックスを利用し、ラウンド単位で異なるタイプのSボックスを利用した処理を実行する構成であることを特徴とする請求項1に記載の復号処理装置。 - 前記復号処理部は、
ラウンド関数実行部内に、処理対象データを分割した分割データ各々の非線形変換処理を実行する複数のSボックスを有し、
1つのラウンドで、複数のタイプのSボックスを利用した構成であることを特徴とする請求項1に記載の復号処理装置。 - 前記ラウンド関数実行部の各々に含まれるSボックスの種類および各Sボックスの数は、各F関数において同一の設定であることを特徴とする請求項4に記載の復号処理装置。
- 前記復号処理部は、
共通鍵暗号方式に従った復号処理を実行する構成であることを特徴とする請求項1〜5いずれかに記載の復号処理装置。 - 前記復号処理部は、
共通鍵ブロック暗号方式に従った復号処理を実行する構成であることを特徴とする請求項1〜5いずれかに記載の復号処理装置。 - 入力データを2以上の数で分割して得られる各データ系列に対し、Sボックスを含むF関数によるデータ変換処理をラウンド関数として各々実行する復号処理部と、
前記復号処理部における復号処理の制御を行う制御部と、
前記制御部の実行する復号処理制御プログラムを格納したメモリを有し、
前記復号処理部は、入力データの系列と出力データの系列が同一であり、かつ隣り合う位置にあるF関数において対応するビット列に適用されるSボックスが異なる構成であり、
前記復号処理部は、
sビットの入出力をもつSボックスとして、
(1)タイプ1:拡大体GF(2s)上の逆元写像:Y=X−1、または、べき乗関数Y=Xqを利用したSボックス、
(2)タイプ2:t−bitの小さなS−boxを複数組み合わせて作り出されたSボックス、ただしt<sとする。
(3)タイプ3:ランダムに選択されたSボックス、
上記(1)〜(3)の3タイプのSボックス中、少なくとも2つ以上の異なるタイプのSボックスを利用した構成である情報処理装置。 - 前記復号処理部は、前記Sボックスを、
(a)一部をタイプ1のSボックスとし、その他をタイプ2のSボックスとした構成、
(b)一部をタイプ1のSボックスとし、その他をタイプ3のSボックスとした構成、
(c)一部をタイプ2のSボックスとし、その他をタイプ3のSボックスとした構成、
(d)一部をタイプ1のSボックスとし、他の一部をタイプ2のSボックスとし、その他をタイプ3のSボックスとした構成、
上記(a)〜(d)のいずれかの構成を有することを特徴とする請求項8に記載の情報処理装置。 - 前記復号処理部は、
ラウンド関数実行部内に、処理対象データを分割した分割データ各々の非線形変換処理を実行する複数のSボックスを有し、
1つのラウンドでは1種類のタイプのSボックスを利用し、ラウンド単位で異なるタイプのSボックスを利用した処理を実行する構成であることを特徴とする請求項8に記載の情報処理装置。 - 前記復号処理部は、
ラウンド関数実行部内に、処理対象データを分割した分割データ各々の非線形変換処理を実行する複数のSボックスを有し、
1つのラウンドで、複数のタイプのSボックスを利用した構成であることを特徴とする請求項8に記載の情報処理装置。 - 前記ラウンド関数実行部の各々に含まれるSボックスの種類および各Sボックスの数は、各F関数において同一の設定であることを特徴とする請求項11に記載の情報処理装置。
- 前記復号処理部は、
共通鍵暗号方式に従った復号処理を実行する構成であることを特徴とする請求項8〜12いずれかに記載の情報処理装置。 - 前記復号処理部は、
共通鍵ブロック暗号方式に従った復号処理を実行する構成であることを特徴とする請求項8〜12いずれかに記載の情報処理装置。 - 復号処理装置において、復号処理を実行する復号処理方法であり、
復号処理部において、入力データを2以上の数で分割して得られる各データ系列に対し、Sボックスを含むF関数によるデータ変換処理をラウンド関数として各々実行する復号処理ステップを実行し、
前記復号処理ステップにおいて、入力データの系列と出力データの系列が同一であり、かつ隣り合う位置にあるF関数において対応するビット列に適用するSボックスを異なる設定のSボックスを適用したデータ変換処理を実行し、
前記復号処理ステップにおいて、
sビットの入出力をもつSボックスとして、
(1)タイプ1:拡大体GF(2s)上の逆元写像:Y=X−1、または、べき乗関数Y=Xqを利用したSボックス、
(2)タイプ2:t−bitの小さなS−boxを複数組み合わせて作り出されたSボックス、ただしt<sとする。
(3)タイプ3:ランダムに選択されたSボックス、
上記(1)〜(3)の3タイプのSボックス中、少なくとも2つ以上の異なるタイプのSボックスを利用したデータ変換処理を実行する復号処理方法。 - 前記復号処理ステップは、
共通鍵暗号方式または共通鍵ブロック暗号方式に従った復号処理を実行することを特徴とする請求項15に記載の復号処理方法。 - 復号処理装置において、復号処理を実行させるコンピュータ・プログラムであり、
復号処理部において、入力データを2以上の数で分割して得られる各データ系列に対し、Sボックスを含むF関数によるデータ変換処理をラウンド関数として各々実行する復号処理ステップを実行させ、
前記復号処理ステップにおいて、入力データの系列と出力データの系列が同一であり、かつ隣り合う位置にあるF関数において対応するビット列に適用するSボックスを異なる設定のSボックスを適用したデータ変換処理を行なわせ、
前記復号処理ステップにおいて、
sビットの入出力をもつSボックスとして、
(1)タイプ1:拡大体GF(2s)上の逆元写像:Y=X−1、または、べき乗関数Y=Xqを利用したSボックス、
(2)タイプ2:t−bitの小さなS−boxを複数組み合わせて作り出されたSボックス、ただしt<sとする。
(3)タイプ3:ランダムに選択されたSボックス、
上記(1)〜(3)の3タイプのSボックス中、少なくとも2つ以上の異なるタイプのSボックスを利用したデータ変換処理を実行させるコンピュータ・プログラム。 - 前記復号処理ステップは、
共通鍵暗号方式または共通鍵ブロック暗号方式に従った復号処理を実行させるステップであることを特徴とする請求項17に記載のコンピュータ・プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012116685A JP5338945B2 (ja) | 2012-05-22 | 2012-05-22 | 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012116685A JP5338945B2 (ja) | 2012-05-22 | 2012-05-22 | 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006238225A Division JP5050454B2 (ja) | 2006-09-01 | 2006-09-01 | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012155349A JP2012155349A (ja) | 2012-08-16 |
JP5338945B2 true JP5338945B2 (ja) | 2013-11-13 |
Family
ID=46837060
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012116685A Expired - Fee Related JP5338945B2 (ja) | 2012-05-22 | 2012-05-22 | 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5338945B2 (ja) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5003597A (en) * | 1989-12-21 | 1991-03-26 | Xerox Corporation | Method and apparatus for data encryption |
DK1686722T3 (en) * | 2000-03-09 | 2017-02-20 | Mitsubishi Electric Corp | Block encryption device and block encryption method comprising rotation key programming |
-
2012
- 2012-05-22 JP JP2012116685A patent/JP5338945B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2012155349A (ja) | 2012-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5050454B2 (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
JP5055993B2 (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
JP4905000B2 (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
JP4967544B2 (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
JP4961909B2 (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
JP4882598B2 (ja) | 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム | |
JP4622807B2 (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
JP5023624B2 (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
JP2008058830A (ja) | データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム | |
JP5682527B2 (ja) | 暗号処理装置、および暗号処理方法、並びにプログラム | |
US20120121083A1 (en) | Encryption apparatus and method | |
JP7031580B2 (ja) | 暗号化装置、暗号化方法、復号化装置、及び復号化方法 | |
JP2007192893A (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
JP2007199156A (ja) | 暗号処理装置、暗号処理装置製造装置、および方法、並びにコンピュータ・プログラム | |
JP2005107078A (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
JP5680016B2 (ja) | 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム | |
JP5338945B2 (ja) | 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム | |
JP5772934B2 (ja) | データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム | |
JP2009003312A (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120522 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130709 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130722 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5338945 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |