明 細 書
情報処理装置
技術分野
[0001] 本発明は、喑号処理装置、および喑号処理方法、並びにコンピュータ 'プログラム に関する。さらに詳細には、暗号解析処理、攻撃処理として知られる線形解析、差分 解析に対する耐性を向上させた暗号処理装置、および暗号処理方法、並びにコンビ ユータ.プログラムに関する。 背景技術
[0002] 昨今、ネットワーク通信、電子商取引の発展に伴い、通信におけるセキュリティ確保 が重要な問題となっている。セキュリティ確保の 1つの方法が暗号技術であり、現在、 様々な暗号化手法を用いた通信が実際に行なわれてレ、る。
[0003] 例えば ICカード等の小型の装置中に暗号処理モジュールを坦め込み、 ICカードと 、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行なレ、、 認証処理、あるいは送受信データの暗号化、復号を行なうシステムが実用化されて いる。
[0004] 暗号処理アルゴリズムには様々なものがあるが、大きく分類すると、暗号化鍵と復号 鍵を異なる鍵、例えば公開鍵と秘密鍵として設定する公開鍵暗号方式と、暗号化鍵 と復号鍵を共通の鍵として設定する共通鍵暗号方式とに分類される。
[0005] 共通鍵喑号方式にも様々なアルゴリズムがある力 その 1つに共通鍵をベースとし て複数の鍵を生成して、生成した複数の鍵を用いてブロック単位(64ビット, 128ビッ トなど)のデータ変換処理を繰り返し実行する方式がある。このような鍵生成方式とデ ータ変換処理を適用したアルゴリズムの代表的なものが共通鍵ブロック喑号方式で ある。
[0006] 代表的な共通鍵ブロック暗号のアルゴリズムとしては、例えば米国標準暗号として の DES (Data Encryption Standard)アルゴリズムがあり、様々な分野において広く用 レ、られている。
[0007] DESに代表される共通鍵ブロック暗号のアルゴリズムは、主として、入力データの
変換を実行するラウンド関数部と、ラウンド関数 (F関数)部の各ラウンドで適用する鍵 を生成する鍵スケジュール部とに分けることができる。ラウンド関数部の各ラウンドで 適用するラウンド鍵(副鍵)は、 1つのマスター鍵(主鍵)に基づいて、鍵スケジュール 部に入力されて生成され、各ラウンド関数部で適用される。
[0008] しかし、このような共通鍵暗号処理においては、暗号解析による鍵の漏洩が問題と なっている。暗号解析または攻撃手法の代表的な手法として、ある差分を持つ入力 データ(平文)とその出力データ(暗号文)を多数解析することにより各ラウンド関数に おける適用鍵を解析する差分解析 (差分解読法または差分攻撃とも呼ばれる)や、平 文と対応暗号文に基づく解析を行う線形解析 (線形解読法または線形攻撃とも呼ば れる)が知られている。
[0009] 暗号解析による鍵の解析が容易であるということは、その暗号処理の安全性が低い ということになる。従来の DESアルゴリズムにおいては、ラウンド関数 (F関数)部の線 形変換部において適用する処理 (変換行列)力 各段のラウンドにおいて等しいもの であったため解析が行いやすぐ結果として鍵の解析の容易性を招いているという問 題がある。
発明の開示
発明が解決しょうとする課題
[0010] 本発明は、上記問題点に鑑みてなされたものであり、線形解析や差分解析に対す る耐性の高い共通鍵ブロック暗号アルゴリズムを実現する暗号処理装置、および暗 号処理方法、並びにコンピュータ 'プログラムを提供することを目的とする。
課題を解決するための手段
[0011] 本発明の第 1の側面は、
複数ビットの入出力を持つ複数の非線形変換層を並列に構成した非線形変換部と 線形変換を施す線形変換層で構成した線形変換部とで構成される Feistel型暗号 処理を備える暗号処理装置にぉレ、て、
前記線形変換部は、前記線形変換に適応する行列の制約条件に基づいて処理を 施すことを特徴とする暗号処理装置にある。
[0012] さらに、本発明の暗号処理装置の一実施態様において、前記線形変換に適応する 行列の制約条件は、 r段各々に対応する F関数の線形変換部の満足する行列 Miを 適用した構成、すなわち、 nXaビットデータから nXbビットデータへの線形変換を 行う写像 Θ :{0, l}na→{0, l}nbに対して、分岐数 Β( θ )を、
分岐数 Β( Θ )=mina≠0{hwn (ひ) +hwn( Θ (ひ)) }、
ただし、 minひ≠0{Χひ }は、 a≠0を満たすすべての Xひのうちの最小値、 hwn( Y)はビット列 Yを nビットごとに区切って表したときに nビットのデータすべてが 0では なレ、(非ゼロ)要素の数を返す関数、とし、分岐数 Β( Θ )が b+1である写像 Θを最適 拡散変換と定義し、
さらに、行列 Mの分岐数を B (M)と表したとき、
BDl=min{B(Mi) | l≤i≤r},
BD2=min{B(Mi | Mi + 2) | l≤i≤r_2},
ただし、 A I Bは行列 A, Bの連結により得られる行列、
とした場合において、
BD1, BD2のすべてが 3以上になるような行列 Miを適用した構成であることを特徴 とする。
[0013] さらに、本発明の第 2の側面は、
暗号処理装置であり、
非線形変換部および線形変換部を有する SPN型の F関数を持つ r段からなる Feis tel型共通鍵ブロック暗号処理構成を有し、
前記 r段各々に対応する F関数の線形変換部は下記条件を満足する行列 Mを適 用した構成、すなわち、
nX aビットデータ力 nXbビットデータへの線形変換を行う写像 Θ : {0, 1 →{0, l}nbに対して、分岐数 Β( θ )を、
分岐数 B( 0 )=min {hw (a) +hw ( θ (α))},
ただし、 min {X }は、 ひ≠0を満たすすべての X のうちの最小値、 hw (Y)はビット列 Yを nビットごとに区切って表したときに nビットのデータすべてが 0ではなレ、(非ゼロ)要素の数を返す関数、
とし、分岐数 B( θ )が b +1である写像 Θを最適拡散変換と定義し、
さらに、行列 Mの分岐数を B (M)と表したとき、
BD =min{B(M) | l≤i≤r},
BD =min{B(M | M ) | l≤i≤r— 2},
BD =min{B(M | M | M ) | l≤i≤r_4},
ただし、 A I Bは行列 A, Bの連結により得られる行列、
とした場合において、
BD, BD , BDのすべてが 3以上になるような行列 Mを適用した構成であることを 特徴とする暗号処理装置にある。
さらに、本発明の第 3の側面は、
喑号処理装置であり、
非線形変換部および線形変換部を有する SPN型の F関数を持つ r段からなる Feis tel型共通鍵ブロック暗号処理構成を有し、
前記 r段各々に対応する F関数の線形変換部は下記条件を満足する行列 Mを適 用した構成、すなわち、
nX aビットデータ力ら nXbビットデータへの線形変換を行う写像 Θ :{0, 1 →{0, 1}1*に対して、分岐数8(0)を、
分岐数 Β(θ)=πΰη {hw (a)+hw (Θ ))}、
ただし、 min {X }は、 a≠0を満たすすべての X のうちの最小値、
hw (Y)はビット列 Yを nビットごとに区切って表したときに nビットのデータすべてが 0ではなレ、(非ゼロ)要素の数を返す関数、
とし、分岐数 Β( Θ )が b + 1である写像 Θを最適拡散変換と定義し、
さらに、行列 Mの分岐数を B (M)と表したとき、
BL =min{B(tM_1 | Μ— 1 ) | l≤i≤r— 2}
ただし、 tMは行列の転置、
とした場合において、
BL力 S3以上になるような行列 Mを適用した構成であることを特徴とする暗号処理 装置にある。
[0015] さらに、本発明の第 4の側面は、
Feistel型共通鍵ブロック暗号処理を実行する暗号処理方法であり、
非線形変換部および線形変換部を有する SPN型の F関数を r段、繰り返し実行す るステップを有し、
前記 r段各々に対応する F関数の線形変換処理は下記条件を満足する行列 Mを 適用した線形変換処理、すなわち、
nX aビットデータ力 nXbビットデータへの線形変換を行う写像 Θ :{0, 1 →{0, l}nbに対して、分岐数 Β(θ)を、
分岐数 B(0)=min {hw (a)+hw (θ (α))},
ただし、 min {X }は、ひ≠0を満たすすべての X のうちの最小値、 hw (Y)はビット列 Yを nビットごとに区切って表したときに nビットのデータすべてが 0ではなレ、(非ゼロ)要素の数を返す関数、
とし、分岐数 Β( Θ )が b +1である写像 Θを最適拡散変換と定義し、
さらに、行列 Mの分岐数を B (M)と表したとき、
BD =min{B(M) | l≤i≤r},
BD =min{B(M | M ) | l≤i≤r— 2},
BD =min{B(M | M | M ) | l≤i≤r—4},
ただし、 A I Bは行列 A, Bの連結により得られる行列、
とした場合において、
BD , BD , BDのすべてが 3以上になるような行列 Mを適用した線形変換処理に よって実行することを特徴とする暗号処理方法にある。
[0016] さらに、本発明の第 5の側面は、
Feistel型共通鍵ブロック喑号処理を実行する喑号処理方法であり、
非線形変換部および線形変換部を有する SPN型の F関数を r段、繰り返し実行す るステップを有し、
前記 r段各々に対応する F関数の線形変換部は下記条件を満足する行列 Mを適 用した線形変換処理、すなわち、
nX aビットデータ力 nXbビットデータへの線形変換を行う写像 Θ :{0, 1 →{0,
1}1*に対して、分岐数8(0)を、
分岐数 Β(θ)=πΰη {hw (a)+hw (Θ ))}、
ただし、 min {X }は、 a≠0を満たすすべての X のうちの最小値、
hw (Y)はビット列 Yを nビットごとに区切って表したときに nビットのデータすべてが 0ではなレ、(非ゼロ)要素の数を返す関数、
とし、分岐数 Β( Θ )が b +1である写像 Θを最適拡散変換と定義し、
さらに、行列 Mの分岐数を B (M)と表したとき、
BL =min{B(tM_1 | Μ— 1 ) | l≤i≤r— 2}
ただし、 tMは行列の転置、
とした場合において、
BL力 S3以上になるような行列 Mを適用した線形変換処理によって実行することを 特徴とする暗号処理方法にある。
さらに、本発明の第 6の側面は、
Feistel型共通鍵ブロック暗号処理をコンピュータ上において実行するコンピュータ •プログラムであり、
非線形変換部および線形変換部を有する SPN型の F関数を r段、繰り返し実行す るステップを有し、
前記 r段各々に対応する F関数の線形変換処理は下記条件を満足する行列 Mを 適用した線形変換処理、すなわち、
nX aビットデータ力ら nXbビットデータへの線形変換を行う写像 Θ :{0, 1广→{0, 1 に対して、分岐数8(0)を、
分岐数 B(0)=min {hw (a)+hw (θ (α))},
ただし、 min {X }は、 ひ≠0を満たすすべての X のうちの最小値、
hw (Y)はビット列 Yを nビットごとに区切って表したときに nビットのデータすべてが 0ではなレ、(非ゼロ)要素の数を返す関数、
とし、分岐数 Β( Θ )が b + 1である写像 Θを最適拡散変換と定義し、
さらに、行列 Mの分岐数を B (M)と表したとき、
BD =min{B(M) | l≤i≤r},
BD =min{B(M | M ) | l≤i≤r— 2},
BD =min{B(M | M | M ) | l≤i≤r—4},
ただし、 A I Bは行列 A, Bの連結により得られる行列、
とした場合において、
BD, BD , BDのすべてが 3以上になるような行列 Mを適用した線形変換処理に よって実行することを特徴とするコンピュータ 'プログラムにある。
[0018] さらに、本発明の第 7の側面は、
Feistel型共通鍵ブロック喑号処理をコンピュータ上において実行するコンピュータ •プログラムであり、
非線形変換部および線形変換部を有する SPN型の F関数を r段、繰り返し実行す るステップを有し、
前記 r段各々に対応する F関数の線形変換部は下記条件を満足する行列 Mを適 用した線形変換処理、すなわち、
nX aビットデータ力ら nXbビットデータへの線形変換を行う写像 Θ :{0, 1 →{0, 1}1*に対して、分岐数8(0)を、
分岐数 Β(θ)=πΰη {hw (a)+hw (Θ ))}、
ただし、 min {X }は、 a≠0を満たすすべての X のうちの最小値、 hwn(Y)はビット列 Yを nビットごとに区切って表したときに nビットのデータすべてが 0ではなレ、(非ゼロ)要素の数を返す関数、
とし、分岐数 Β( Θ )が b +1である写像 Θを最適拡散変換と定義し、
さらに、行列 Mの分岐数を B (M)と表したとき、
BL =min{B(tM_1 | Μ— 1 ) | l≤i≤r— 2}
ただし、 tMは行列の転置、
とした場合において、
BL力 S3以上になるような行列 Mを適用した線形変換処理によって実行することを 特徴とするコンピュータ 'プログラムにある。
[0019] なお、本発明のコンピュータ 'プログラムは、例えば、様々なプログラム 'コードを実 行可能なコンピュータ ·システムに対して、コンピュータ可読な形式で提供する記憶
媒体、通信媒体、例えば、 CDや FD、 MOなどの記録媒体、あるいは、ネットワークな どの通信媒体によって提供可能なコンピュータ 'プログラムである。このようなプロダラ ムをコンピュータ可読な形式で提供することにより、コンピュータ 'システム上でプログ ラムに応じた処理が実現される。
[0020] 本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図 面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書において システムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内に あるものには限らない。
発明の効果
[0021] 本発明の構成によれば、非線形変換部および線形変換部を有する SPN型の F関 数を、複数ラウンド繰り返し実行する Feistel型共通鍵ブロック暗号処理において、複 数ラウンド各々に対応する F関数の線形変換処理を、比較的緩や力な制限によって 特定される行列を適用して実行する構成により、共通鍵ブロック暗号における差分攻 撃や線形攻撃に対する耐性が向上する。また、制限が比較的緩やかであり、利用で きる行列の候補が増加するとともに、アクティブ S— box数を十分大きく確保すること が可能となる。すなわち、共通鍵ブロック暗号における攻撃に対する強度指標のひと つである喑号ィ匕関数全体でのアクティブ Sボックスの最小数を大きくすることが可能と なり、線形攻撃や、差分攻撃に対して耐性が向上し、より安全性の高い暗号処理が 実現される。
図面の簡単な説明
[0022] [図 l]Feistel構造を持つ代表的な共通鍵ブロック暗号の構成を示す図である。
[図 2]ラウンド関数部として設定される F関数の構成について説明する図である。
[図 3]線形変換部にぉレ、て、線形変換処理に適用する正方行列の例を示す図である
[図 4]m= 8, n=8の 128bitブロック暗号における 3段の同時差分キャンセルの様子 を説明する図である。
[図 5]F関数の線形変換部にぉレ、て、正方行列による線形変換が実行されて、 F関数 出力差分 Δ Υίを生成する具体例を説明する図である。
[図 6]m= 8, n=8の 128bitブロック暗号における 5段の同時差分キャンセルの様子 を説明する図である。
園 7]共通鍵ブロック暗号における任意段の同時差分キャンセルの定義を説明する 図である。
[図 8]正方 MDS行列の一例を示す図である。
園 9]共通鍵ブロック暗号処理アルゴリズムにおける各ラウンドの F関数の線形変換行 列としての正方 MDS行列設定例を説明する図である。
園 10]共通鍵ブロック暗号処理アルゴリズムにおける各ラウンドの F関数の線形変換 行列としての正方 MDS行列設定処理シーケンスを説明するフロー図である。
園 11]各ラウンドの F関数に設定する線形変換行列である正方 MDS行列の生成手 法として、差分攻撃に対する耐性向上を実現する正方 MDS行列生成処理例 alを説 明するフロー図である。
園 12]各ラウンドの F関数に設定する線形変換行列である正方 MDS行列の生成手 法として、差分攻撃に対する耐性向上を実現する正方 MDS行列生成処理例 a2を説 明するフロー図である。
園 13]各ラウンドの F関数に設定する線形変換行列である正方 MDS行列の生成手 法として、差分攻撃に対する耐性向上を実現する正方 MDS行列生成処理例 a3を説 明するフロー図である。
園 14]各ラウンドの F関数に設定する線形変換行列である正方 MDS行列の生成処 理例 a3の具体的手法を説明する図である。
園 15]各ラウンドの F関数に設定する線形変換行列である正方 MDS行列の生成手 法として、線形攻撃に対する耐性向上を実現する正方 MDS行列生成処理例 blを 説明するフロー図である。
園 16]各ラウンドの F関数に設定する線形変換行列である正方 MDS行列の生成手 法として、線形攻撃に対する耐性向上を実現する正方 MDS行列生成処理例 b2を 説明するフロー図である。
園 17]各ラウンドの F関数に設定する線形変換行列である正方 MDS行列の生成手 法として、差分攻撃および線形攻撃に対する耐性向上を実現する正方 MDS行列生
成処理例を説明するフロー図である。
[図 18]本発明に力かる暗号処理を実行する暗号処理装置としての ICモジュールの構 成例を示す図である。
発明を実施するための最良の形態
[0023] 以下、本発明の喑号処理装置、および喑号処理方法、並びにコンピュータ 'プログ ラムの詳細について説明する。なお、説明は、以下の項目順に行う。
1.共通鍵ブロック暗号アルゴリズムにおける差分解析処理
2.共通鍵ブロック暗号アルゴリズムにおける線形解析処理
3.耐性を向上させた暗号処理アルゴリズム構成例
(3— a)差分攻撃に対する耐性向上を実現した正方 MDS行列の生成および F関 数への設定例
(3— b)線形攻撃に対する耐性向上を実現した正方 MDS行列の生成および F関 数への設定例
(3— c)差分攻撃および線形攻撃に対する耐性向上を実現した正方 MDS行列の 生成および F関数への設定例
4.本発明に係る喑号処理アルゴリズム
(4a)構成例 1
(4a. 1)構成例 1における差分攻撃に対する耐性の向上
(4a. 2)構成例 1における線形攻撃に対する耐性の向上
(4b)構成例 1
(4b. 1)構成例 2における差分攻撃に対する耐性の向上
(4b. 2)構成例 2における線形攻撃に対する耐性の向上
[0024] [1.共通鍵ブロック喑号アルゴリズムにおける差分解析処理]
まず、 DES (Data Encryption Standard)喑号処理に代表される共通鍵ブロック喑号 アルゴリズムにおける差分解析処理の概要について、一般化した共通鍵ブロック喑 号モデルを用いて説明する。
[0025] 共通鍵ブロック暗号のアルゴリズムは、主として、入力データの変換を実行するラウ ンド関数部と、ラウンド関数部の各ラウンドで適用する鍵を生成する鍵スケジュール部
とに分けることができる。ラウンド関数部の各ラウンドで適用する鍵(副鍵)は、 1つの マスター鍵(主鍵)に基づいて、鍵スケジュール部に入力されて生成され、各ラウンド 関数部で適用される。この共通鍵暗号方式の代表的な方式に米国連邦標準暗号方 式としての DES (Data Encryption Standard)がある。
[0026] Feistel構造と呼ばれる代表的な共通鍵ブロック喑号の構造について、図 1を参照 して説明する。
[0027] Feistel構造は、変換関数の単純な繰り返しにより、平文を暗号文に変換する構造 を持つ。平文の長さを 2mnビットとする。ただし、 m, nは共に整数である。初めに、 2 mnビットの平文を、 mnビットの 2つの入力データ P (Plain-Left) 101, P (Plain-Right
L R
)102に分割し、これを入力値とする。
[0028] Feistel構造はラウンド関数とよばれる基本構造の繰り返しで表現され、各ラウンド に含まれるデータ変換関数は F関数 120と呼ばれる。図 1の構成では、 F関数 (ラウン ド関数) 120が r段繰り返された構成例を示してレ、る。
[0029] 例えば第 1番目のラウンドでは、 mnビットの入力データ Xと、鍵生成部(図示せず) 力ら入力される mnビットのラウンド鍵 K 103が F関数 120に入力され、 F関数 120に
1
おけるデータ変換処理の後に mnビットのデータ Yを出力する。出力はもう片方の前 段からの入力データ(第 1段の場合は入力データ P )と排他的論理和部 104におい
L
て、排他的論理和演算がなされ、 mnビットの演算結果が次のラウンド関数へと出力さ れる。この処理、すなわち F関数を定められたラウンド数 (r)だけ繰り返し適用して暗 号化処理が完了し、暗号文の分割データ C (Cipher-Left)、 C (Cipher-Right)が出
L R
力される。以上の構成より、 Feistel構造の復号処理はラウンド鍵を挿入する順序を 逆にするだけでよぐ逆関数を構成する必要がないことが導かれる。
[0030] 各ラウンドの関数として設定される F関数 120の構成について、図 2を参照して説明 する。図 2 (a)は、 1つのラウンドにおける F関数 120に対する入力および出力を示す 図であり、図 2 (b)は、 F関数 120の構成の詳細を示す図である。 F関数 120は、図 2 ( b)に示すように、非線形変換層と線形変換層を接続したいわゆる SPN型の構成を有 する。
[0031] SPN型の F関数 120は、図 2 (b)に示すように、非線形変換処理を実行する複数の
Sボックス(S— box) 121を有する。ラウンド関数部の前段からの mnビットの入力値 X は、鍵スケジュール部から入力されるラウンド鍵 1^と排他的論理和が実行され、その 出力が nビットずつ非線形変換処理を実行する複数 (m個)の Sボックス 121に入力さ れる。各 Sボックスでは、例えば変換テーブルを適用した非線形変換処理が実行され る。
[0032] Sボックス 121からの出力データである mnビットの出力値 Zは、線形変換処理を実 行する線形変換部 122に入力されて、例えばビット位置の入れ替え処理などの線形 変換処理が実行され、 mnビットの出力値 Yを出力する。この出力値 Yが前段からの 入力データと排他的論理和され、次のラウンドの F関数の入力値とされる。
[0033] 図 2に示す F関数 120は、入出力ビット長が m X n (m, n :整数)ビットであり、非線 形変換層は nビットの入出力を持つ非線形変換層としての Sボックス 121は、 m個並 列にならんだ構成を有し、線形変換層としての線形変換部 122は n次の既約多項式 で定義される 2の拡大体 GF (2n)上の元を要素として持つ m次の正方行列に基づく 線形変換処理を実行する。
[0034] 線形変換部 122における線形変換処理に適用する正方行列の例を図 3に示す。
図 3に示す正方行列 125は、 n= 8, m=8の場合の例である。非線形変換部(Sボッ タス 121)力も出力された m個の nビットデータ Z[l] , Z[2] ,…, Z[m]に対してあらか じめ定められた正方行列 125を適用した演算により線形変換が施され、 F関数 (ラウ ンド関数)出力としての、 Y[l] , Υ[2] , ···, Y[m]が決定される。ただし、このとき各 データの行列の要素に対する線形演算はあらかじめ定められた 2の拡大体 GF (2n) 上で行われる。
[0035] これまでの Feistel型喑号では、すべての段の F関数に同じ線形変換層を用いてい るため、差分の伝播時に同時に複数の差分がキャンセルしてしまうという性質が存在 した。背景技術の欄において説明したように、暗号解析手法の代表的な手法として、 ある差分を持つ入力データ (平文)とその出力データ(暗号文)を多数解析することに より各ラウンド関数における適用鍵を解析する差分解析 (あるいは差分解読法)が知 られており、従来の DES喑号アルゴリズム等の共通鍵ブロック喑号においては、 F関 数 120部の線形変換部 122において適用する処理 (変換行歹 1J)を、各段のラウンドに
おいて等しいものに設定しているため、差分解析が行いやすぐ結果として鍵の解析 の容易性を招いている。
[0036] 差分の伝播時に、同時に複数の差分がキャンセルする例について、図 4を参照して 説明する。なお、本明細書においては、差分を表す場合には Δ (デルタ)記号をつけ て表す。
[0037] 図 4は m = 8, n= 8の 128bitブロック喑号における 3段の同時差分キャンセルの様 子を説明する図である。ただし、図中では 64bitのデータをバイト単位で区切ってベ タトルとして表現し、それぞれの要素を 16進数で表記するものとする。
[0038] 3段構成を持つ F関数での同時差分キャンセルは、例えば以下のデータ状態:!〜 4 の設定メカニズムに基づいて発生する。以下に説明するメカニズムの発生するデータ 状態は、多数の差分入力データを設定することで発生させることができるデータ状態 であり、いわゆる差分解析における鍵 (ラウンド鍵)の解析において発生し得る。
[0039] (状態 1)
iラウンドへの入力差分の左半分は、すべてゼロである入力差分(A Xi— 1 = (00, 00, 00, 00, 00, 00, 00, 00) )であり、右半分の入力差分力 Sただ、ひとつの S— box への入力を除レ、てゼロである入力差分(Δ Χί= (34, 00, 00, 00, 00, 00, 00, 00 ) )であるとする。このデータ状態は、多数の差分入力データを設定することで、 iラウ ンドにおいて、このようなデータ状態を得ることができるということである。
[0040] なお、 Δ Χΐ= (34, 00, 00, 00, 00, 00, 00, 00)の 8つの各要素 ίま、 F関数中に 構成される m個(m= 8)の Sボックス各々に対する入力差分に対応する。差分(34) が第 1Sボックス(図 4中の(S1) )に入力され、(00)が、第 2〜8Sボックスに対する入 力差分である。
[0041] なおゼロ(00)の入力差分を持つ Sボックスの出力差分はゼロ(00)であり、差分デ ータに関する限り、ゼロ(00)の入力差分を持つ Sボックスは、何の作用も行なってい ないものであり、アクティブでないすなわち非アクティブ Sボックスと呼ばれる。一方、 非ゼロの入力差分(図 4の例では差分: 34)を持つ Sボックスは、非ゼロの入力差分に 対応した非線形変換結果を出力差分として発生させるので、アクティブ Sボックス (Ac tive S— box)と呼ばれる。
[0042] 図 4の例では、非ゼロの入力差分(34)を入力する 1つのアクティブ Sボックス(S1) の出力差分(b7)を発生させており、その他の非アクティブ Sボックス S2〜S8はゼロ の入力差分 (00)に基づいて出力差分 (00)を発生させ、線形変換部の差分入力とし ている。
[0043] (状態 2)
iラウンドへの非ゼロの入力差分(図 4の例では差分: 34)を持つ Sボックス(以下、ァ クティブ Sボックス (Active S-box)と呼ぶ)からの出力差分は線形変換層で拡散さ れたのち F関数から出力(出力値 = ΔΥί)され、そのまま次のラウンドへの入力差分 ΔΧί+lとなる。
[0044] 図 4の例における線形変換は、各ラウンドの F関数において共通する例えば図 5に 示すある特定の正方行列 125による線形変換が実行され iラウンドの F関数出力差分 としての ΔΥί=(98, c4, b4, d3, ac, 72, Of, 32)を出力する。図 5に示す泉形変 換構成から理解されるように、出力差分 AYi=(98, c4, b4, d3, ac, 72, Of, 32) は、 1つのアクティブ Sボックス(SI)力もの出力要素 Z[l]=b7にのみ依存した値とし て決定される。
[0045] この iラウンドの F関数出力差分としての ΔΥί= (98, c4, b4, d3, ac, 72, Of, 32) は、図 4に示す排他的論理和部 131において、すべてゼロである入力差分(Δ¾— 1 = (00, 00, 00, 00, 00, 00, 00, 00)とお他的論理禾ロ(XOR)演算力 S実行され、演 算結果が、次のラウンド (i+1)への入力差分 ΔΧί+lとなる。
[0046] iラウンドの F関数出力差分としての ΔΥί= (98, c4, b4, d3, ac, 72, Of, 32)と、 すべてゼロである入力差分 AXi— 1=(00, 00, 00, 00, 00, 00, 00, 00)との排 他的論理和 (X〇R)結果は、 ΔΥίであるので、次のラウンド (i+1)への入力差分 ΔΧ ϊ+1= ΔΥί= (98, c4, b4, d3, ac, 72, Of, 32)となる。
[0047] (状態 3)
i+1ラウンドの F関数からの出力差分 AYi+l力 iラウンドでの Active S_boxの 位置にのみ非ゼロ値をもつ。このデータ状態は、多数の差分入力データを設定する ことで、このようなデータ状態を得ることができるとレ、うことである。
[0048] すなわち、 AYi+l=(ad, 00, 00, 00, 00, 00, 00, 00)であり、 iラウンドと同様
、非ゼロの差分値(図 4の例では差分: 34)を持つ S— boxの位置(第 ISボックス(SI ) )にのみ非ゼロ値をもつ。なお、明らかに ad≠00である。
[0049] (状態 4)
i+ 2ラウンドのアクティブ Sボックス(Active S -box) (SI)の出力差分が iラウンド でのアクティブ Sボックス (Active S -box) (SI)の出力差分と一致した場合、すな わち、図 4に示すように i+ 2ラウンドのアクティブ Sボックス((S1)の出力差分が b7と なり、 iラウンドでのアクティブ Sボックス(S1)の出力差分 (b7)と一致する。このデータ 状態は、多数の差分入力データを設定することで、このようなデータ状態を得ることが できるということである。
[0050] このデータ状態が発生すると、 i+ 2ラウンドの F関数の出力差分 Δ Υί + 2= (98, c 4, b4, d3, ac, 72, Of, 32)力 2つ前のラウンドである iラウンドの F関数の出力差 分 Δ Υί= (98, c4, b4, d3, ac, 72, Of, 32)と一致することになる。
[0051] この結果、排他的論理和部 133では、
Δ Χί+ 1 = Δ Υΐ= (98, c4, b4, d3, ac, 72, Of, 32)と、
Δ Υΐ+ 2= (98, c4, b4, d3, ac, 72, Of, 32)と、
の同一の値同士の排他的論理和演算が実行されることになり、排他的論理和演算結 果としてオール 0の値を出力する。
[0052] その結果、次の段 (ラウンド i+ 3)への出力差分の前段 (i + 2ラウンド)からの左の入 力差分 Δ Χί + 3= (00, 00, 00, 00, 00, 00, 00, 00)となる。
[0053] このラウンド i+ 3への左入力 Δ Χί + 3= (00, 00, 00, 00, 00, 00, 00, 00)は、 ラウンド iへの左人力 Δ Χί— 1 = (00, 00, 00, 00, 00, 00, 00, 00)と同様才ーノレ ゼロであり、ラウンド i + 3以降のラウンドにおいても、ラウンド i〜i+ 2と同様の処理が 繰り返される可能性がある。
[0054] この結果、ラウンド数の伸びに対してアクティブ Sボックスの数が増大せず、差分攻 撃に対する強度がそれほど伸びないという問題を発生させる。
[0055] 共通鍵ブロック暗号において、差分攻撃に対する強度指標のひとつとして、暗号化 関数全体でのアクティブ Sボックスの最小数が知られてレ、る。アクティブ Sボックス数の 最小数が大きいほど差分攻撃に対する耐性が高いと判断される。
[0056] 前述したように、差分解析 (差分攻撃)においては、ある差分を持つ入力データ(平 文)とその出力データ(暗号文)を多数設定してこの対応を解析することにより各ラウ ンド関数における適用鍵を解析する手法であり、この差分解析において、アクティブ Sボックスの数を少なくできれば、解析が容易となり、解析プロセス数を削減できる。
[0057] 上述の図 4を参照した例では、第 1の Sボックス(S1)のみがアクティブ Sボックスであ るパターンの発生状態を提示した力 その他の Sボックス(S2〜S8)についても、差 分解析の入力データの設定によって、各 Sボックスのみをアクティブ Sボックスとした 設定が可能であり、このような差分解析プロセスを実行することにより、各 Sボックスの 非線形変換処理の解析、さらに F関数に対して入力されるラウンド鍵の解析が可能と なる。
[0058] このような差分解析に対する耐性を向上させるためには、アクティブ Sボックスの数 が常に多い状態を維持すること、すなわち、アクティブ Sボックスの最小数が多いこと が必要である。
[0059] 図 4を参照して説明した例において、右から左へ入力を行なう F関数、すなわち、第 iラウンドと第 i + 2ラウンドのみをアクティブ Sボックス算出処理対象ラウンドとしてみた 場合、アクティブ Sボックス数はわず力 2であり、左から右へ入力を行なう F関数、すな わち、第 i+ 1ラウンドではアクティブ Sボックス数が 8であるものの、同時差分キャンセ ルにより第 i + 3ラウンドでのアクティブ Sボックス数が 0となってしまうため、差分解析 による各 Sボックスの非線形変換処理の解析処理が容易となる。
[0060] 図 4に示す共通鍵ブロック暗号アルゴリズムは、各ラウンドにおける線形変換部にお レ、て適用する線形変換行列が等しいものであり、この構成に起因して、特に右から左 へ入力を行う F関数におけるわずか 2つのアクティブ Sボックスにより同時差分キャン セルの発生可能性を引き起こしている。従って、ラウンド数の伸びに対してアクティブ Sボックスの最小数が十分に増大せず、差分攻撃に対する強度がそれほど伸びない という問題がある。
[0061] 次に、同様に、同じ線形変換行列をすベての段(ラウンド)の F関数に用いる構成に おいて、 5ラウンドにまたがる同時差分キャンセルの発生メカニズムについて、図 6を 参照して説明する。
[0062] 図 6は m = 8, n= 8の 128bitブロック暗号における 5段の同時差分キャンセルの様 子を説明する図である。ただし、図中では 64bitのデータをバイト単位で区切ってベ タトルとして表現し、それぞれの要素を 16進数で表記するものとする。
[0063] 5段構成を持つ F関数での同時差分キャンセルは、例えば以下のデータ状態:!〜 7 の設定メカニズムに基づいて発生する。以下に説明するメカニズムの発生するデータ 状態は、多数の差分入力データを設定することで発生させることができるデータ状態 であり、いわゆる差分解析における鍵 (ラウンド鍵)の解析において発生し得る。
[0064] (状態 1)
iラウンドへの入力差分の左半分は、すべてゼロでぁる入カ差分 》_ 1 = (00, 00, 00, 00, 00, 00, 00, 00) )であり、右半分の入力差分力 Sただ、ひとつの S _box への入力を除レ、てゼロである入力差分(Δ Χί= (34, 00, 00, 00, 00, 00, 00, 00 ) )であるとする。このデータ状態は、多数の差分入力データを設定することで、 iラウ ンドにおいて、このようなデータ状態を得ることができるということである。
[0065] なお、 Δ Χΐ= (34, 00, 00, 00, 00, 00, 00, 00)の 8つの各要素 ίま、 F関数中に 構成される m個(m= 8)の Sボックス各々に対する入力差分に対応する。 (34)が第 1 Sボックス(図 6中の(S1) )に入力され、(00)が、第 2〜8Sボックスに対する入力差分 である。
[0066] なお前述したように、ゼロ(00)の入力差分を持つ Sボックスの出力差分はゼロ(00) であり、差分データに関する限り、ゼロ(00)の入力差分を持つ Sボックスは、何の作 用も行なってレ、なレ、ものであり、アクティブでなレ、すなわち非アクティブ Sボックスと呼 ばれる。一方、非ゼロの入力差分(図 6の例では差分: 34)を持つ Sボックス(S1)の みが、非ゼロの入力差分に対応した非線形変換結果を出力差分として発生させるの で、アクティブ Sボックス(Active S_box)である。
[0067] 図 6の例では、非ゼロの入力差分(34)を入力する 1つのアクティブ Sボックス(S1) の出力差分(b7)を発生させており、その他の非アクティブ Sボックス S2〜S8はゼロ の入力差分 (00)に基づいて出力差分 (00)を発生させ、線形変換部の差分入力とし ている。
[0068] (状態 2)
iラウンドへの非ゼロの入力差分(図 4の例では差分: 34)を持つ Sボックス(以下、ァ クティブ Sボックス (Active S-box)と呼ぶ)からの出力差分は線形変換層で拡散さ れたのち F関数から出力(出力値 = ΔΥί)され、そのまま次のラウンドへの入力差分 ΔΧί+lとなる。
[0069] 図 6の例において、各ラウンドに共通の例えば図 5に示すある特定の正方行列 125 による線形変換が実行され iラウンドの F関数出力差分としての AYi= (98, c4, b4, d3, ac, 72, Of, 32)を出力する。
[0070] iラウンドの F関数出力差分としての ΔΥί= (98, c4, b4, d3, ac, 72, Of, 32)は、 図 6に示す排他的論理和部 141において、すべてゼロである入力差分(AXi_l= ( 00, 00, 00, 00, 00, 00, 00, 00)とお他的論理禾ロ(X〇R)演算力 s実行され、演算 結果が、次のラウンド (i+1)への入力差分 ΔΧί+lとなる。
[0071] iラウンドの F関数出力差分としての ΔΥί= (98, c4, b4, d3, ac, 72, Of, 32)と、 すべてゼロである入力差分(AXi— 1=(00, 00, 00, 00, 00, 00, 00, 00)との排 他的論理和(XOR)結果は、 ΔΥίであるので、次のラウンド(i+1)への入力差分 ΔΧ ΐ+1= ΔΥί= (98, c4, b4, d3, ac, 72, Of, 32)となる。
[0072] (状態 3)
i+1ラウンドの F関数からの出力差分 ΔΥί+1が、 iラウンドでの Active S— boxの 位置にのみ非ゼロ値をもつ。このデータ状態は、多数の差分入力データを設定する ことで、このようなデータ状態を得ることができるとレ、うことである。
[0073] すなわち、 ΔΥΐ+1=(34, 00, 00, 00, 00, 00, 00, 00)であり、 iラウンドと同様 、非ゼロの差分値(図 6の例では差分: 34)を持つ S— boxの位置(第 1Sボックス(S1 ))にのみ非ゼロ値をもつ。
[0074] (状態 4)
i+2ラウンドの F関数 (こ対する入力 fま、 ΔΧί= (34, 00, 00, 00, 00, 00, 00, 00 )と、 AYi+l=(34, 00, 00, 00, 00, 00, 00, 00)との非他的論理禾ロ部 142にお ける排他的論理和結果、すなわち、同一データ同士の排他的論理和であり、オール ゼロの入力、 ΔΧί + 2=(00, 00, 00, 00, 00, 00, 00, 00)となり、その結果、 i + 2 ラウンドの F関数からの出力差分も、オールゼロの出力差分、 ΔΥί + 2=(00, 00, 0
0, 00, 00, 00, 00, 00)となる。
[0075] (状態 5)
i+3ラウンドの F「数に対する人力 ίま、 ΔΧί+1=(98, c4, b4, d3, ac, 72, Of, 32)と、才ーノレゼロの i + 2ラウンドの F関数出力差分 ΔΥί + 2= (00, 00, 00, 00, 0 0, 00, 00, 00)との排他的論理和部 143における排他的論理和結果であり、 i + 3ラ ゥンドのF関数に対する入カΔXi + 3=ΔXi+l=(98, c4, b4, d3, ac, 72, Of, 3 2)となる。
[0076] (状態 6)
i+3ラウンドの F関数出力差分力 S、 ΔΥί + 3=(43, 00, 00, 00, 00, 00, 00, 00 )となり、才ーノレゼロの AXi+2=(00, 00, 00, 00, 00, 00, 00, 00)との非他白勺論 理和部 144における排他的論理和の結果としての AXi + 4= ΔΥί + 3=(43, 00, 00, 00, 00, 00, 00, 00)力 Si+4ラウンドの F関数入力差分となる。
[0077] (状態 7)
i + 4ラウンドのアクティブ Sボックス (Active S— box) (SI)の出力差分が iラウンド でのアクティブ Sボックス(Active S— box) (SI)の出力差分と一致した場合、すな わち、図 6に示すように i + 4ラウンドのアクティブ Sボックス((S1)の出力差分が b7と なり、 iラウンドでのアクティブ Sボックス(S1)の出力差分 (b7)と一致する。このデータ 状態は、多数の差分入力データを設定することで、このようなデータ状態を得ることが できるということである。
[0078] このデータ状態が発生すると、 i+4ラウンドの F関数の出力差分 ΔΥί + 4= (98, c 4, b4, d3, ac, 72, Of, 32)力 2つ前のラウンドである i+ 2ラウンドの排他的論理 禾ロ部 143の出力差分 AXi+3=(98, c4, b4, d3, ac, 72, Of, 32)と一致すること になる。
[0079] この結果、排他的論理和部 145では、
ΔΧί + 3= (98, c4, b4, d3, ac, 72, Of, 32)と、
ΔΥϊ + 4=(98, c4, b4, d3, ac, 72, Of, 32)と、
の同一の値同士の排他的論理和演算が実行されることになり、排他的論理和演算結 果としてオール 0の値を出力する。
[0080] その結果、次の段(ラウンド i+ 5)への入力差分は、 Δ Χί+ 5 = (00, 00, 00, 00, 00, 00, 00, 00)として設定される。
[0081] このラウンド i+ 5への左入力 Δ Χί + 5= (00, 00, 00, 00, 00, 00, 00, 00)は、 ラウンド iへの左人力 A Xi_ l = (00, 00, 00, 00, 00, 00, 00, 00)と同様才ーノレ ゼロであり、ラウンド i + 5以降のラウンドにおいても、ラウンド i〜i + 4と同様の処理が 繰り返される可能性がある。
[0082] この結果、ラウンド数の伸びに対してアクティブ Sボックスの数が増大せず、差分攻 撃に対する強度がそれほど伸びないという問題を発生させる。
[0083] 前述したように、差分解析 (差分攻撃)においては、ある差分を持つ入力データ(平 文)とその出力データ(暗号文)を多数設定してこの対応を解析することにより各ラウ ンド関数における適用鍵を解析する手法であり、この差分解析において、アクティブ Sボックスの数を少なくできれば、解析が容易となり、解析プロセス数を削減できる。
[0084] 上述の図 6を参照した例において、右から左へ入力を行なう F関数、すなわち、第 i ラウンドと第 i+ 2ラウンド、第 i + 4ラウンドのみをアクティブ Sボックス算出処理対象ラ ゥンドとしてみた場合、アクティブ Sボックス数は、第 iラウンド = 1、第 i+ 2ラウンド =0 、第 i+4ラウンド = 1の合計わず力 2であり、左から右へ入力を行なう F関数、すなわ ち第 i+ 1ラウンドおよび第 i + 3ラウンドではアクティブ Sボックス数が 8であるものの、 同時差分キャンセルにより第 i+ 5ラウンドでのアクティブ Sボックス数が 0となってしま うため、差分解析による各 Sボックスの非線形変換処理の解析、および、 F関数に対 する入力ラウンド鍵の解析処理が比較的、容易となる。
[0085] 図 6を参照した例では、第 1の Sボックス(S1)のみがアクティブ Sボックスであるパタ ーンの発生状態を提示したが、その他の Sボックス(S2〜S8)についても、差分解析 の入力データの設定によって、各 Sボックスのみをアクティブ Sボックスとした設定が可 能であり、このような差分解析プロセスを実行することにより、各 Sボックスの非線形変 換処理の解析、さらに F関数に対して入力されるラウンド鍵の解析が可能となる。
[0086] 図 4および図 6を参照して、 3および 5ラウンドの場合の同時差分キャンセルの発生 例を説明したが、任意のラウンド数に一般化して同時差分キャンセルを定義すると以 下のように定義することができる。図 7を参照して、任意のラウンド数における同時差
分キャンセルの定義について説明する。なお、図 7は、フェイステル(Feistel)構造の 共通鍵ブロック暗号を実行するフェイステル (Feistel)構造の 1つおきのラウンド(i, i + 2, i+4, · · · , i + 2j)を示している。
[0087] 「定義」
フェイステル (Feistel)構造のラウンド iでの入力差分の半分(PLまたは PR)が 0 (図 7ίこおレヽて、 Δ ΧΪ= (00, 00, 00, 00, 00, 00, 00, 00) )であり、そこ (こ i+ 2jラウン ド (j = 0, 1 , 2, ...)の F関数の出力差分が排他的論理和部で演算されていく過程に おいて、あるラウンド i + 2kにおいて、排他的論理和の結果が 0 (図 7において、 Δ Χί + 2j + l = (00, 00, 00, 00, 00, 00, 00, 00) )になった場合を"同時差分キャン セル"と呼ぶ。
[0088] その時、 i, i + 2, i + 4, . ., i+ 2kラウンドの F関数の中に存在するアクティブ Sボッ タス(Active S— box)のことを"同時差分キャンセルを発生させたアクティブ Sボック ス"と呼ぶものとし、ベクトル Aの非ゼロの要素数をハミングウェイト hw (A)と定義する と、同時差分キャンセルを発生させるアクティブ Sボックスの数 aは、以下の式として表 せる。
[数 1]
a = hw(AXi+2J)
[0089] 前述の 3ラウンド、 5ラウンドでの例ではともに同時差分キャンセルを発生させたァク ティブ Sボックス数は 2、すなわち a = 2である。
[0090] 前述したように、共通鍵ブロック暗号における差分攻撃に対する強度指標のひとつ
が喑号ィ匕関数全体でのアクティブ sボックスの最小数であり、アクティブ Sボックス数 の最小数が大きいほど差分攻撃に対する耐性が高いと判断される。
[0091] しかし、 DESアルゴリズムのように同じ線形変換行列をすベての段の F関数に用い る構成では、図 4、図 6を参照して説明したように、わずか 2つのアクティブ Sボックス により同時差分キャンセルが発生してしまう可能性があった。そのような性質があるた めラウンド数の伸びに対してアクティブ Sボックスの最小数が十分に増大せず、差分 攻撃に対する強度がそれほど伸びないという問題があった。
[0092] [2.共通鍵ブロック喑号アルゴリズムにおける線形解析処理]
差分解析処理は、上述したように、解析の実行者が一定の差分を持つ入力データ (平文)を容易し、その対応する出力データ(暗号文)を解析することが必要となる。線 形解析処理は、一定の差分を持つ入力データ(平文)を準備する必要はなぐ所定 量以上の入力データ (平文)と対応する出力データ(暗号文)とに基づいて解析を行
5。
[0093] 前述したように、共通鍵ブロック暗号アルゴリズムでは非線形変換部としての Sボッ タスを有し、入力データ(平文)と対応する出力データ(暗号文)との線形関係はない 力 線形解析では、この Sボックスの入出力を線形近似し、多数の入力データ(平文) と対応する出力データ (暗号文)の構成ビット値の線形関係を解析し、候補となる鍵を 絞り込むことによって解析を行う。線形解析においては、特定の差分を持つ入力デ ータを準備することが必要ではなぐ多数の平文と対応暗号文を容易することで、解 祈が可能となる。
[0094] [3.耐性を向上させた暗号処理アルゴリズム構成例]
次に、本発明の出願人が先に提案した暗号処理アルゴリズムについて説明する。 以下で説明する暗号処理アルゴリズムは、本出願と同一出願人による特許出願、特 願 2003— 339634、および特願 2004— 256465(こおレヽて説明してレヽるァノレゴリズ ムであり、上述した線形解析、差分解析等の攻撃に対する耐性を向上させた構成、 すなわち、鍵解析の困難性を高め、安全性を向上させた構成を持つ。
[0095] 以下で説明する喑号処理アルゴリズムの 1つの特徴は、従来の DESアルゴリズムの 如く各ラウンドの F関数に構成される線形変換部に共通の処理 (変換行歹 1J)を適用し
た構成とせず、複数の異なる正方 MDS (Maximum Distance Separable)行列 を設定した構成としたことである。具体的には、少なくとも連続する偶数ラウンドおよび 連続する奇数ラウンドの各々において異なる正方 MDS行列を適用した線形変換処 理を実行する構成を持つ。
[0096] この喑号処理アルゴリズムは、正方 MDS (Maximum Distance Separable)行 列の性質を利用し、少ないアクティブ Sボックスに基づく同時差分キャンセルが起こら なレ、、または起こりにくい構造を実現し、アクティブ Sボックスの最小数を増大させ、差 分攻撃に対してより強い共通鍵ブロック暗号処理を実現する。あるいは、既知平文攻 撃として行なわれる線形解析についての困難性も高めた構成を持つ。
[0097] この喑号処理アルゴリズムは、図 1、 2を参照して説明した SPN型の F関数を有する Feistel構造と呼ばれる代表的な共通鍵ブロック暗号の構造、すなわち、非線形変換 部および線形変換部を有する SPN型の F関数の複数ラウンドに渡る単純な繰り返し により、平文を暗号文に変換する、あるいは暗号文を平文変換する構造を適用して いる。
[0098] 例えば、平文の長さを 2mnビット(ただし、 m, nは共に整数)として、 2mnビットの平 文を、 mnビットの 2つのデータ PL (Plain-Left) , PR(Plain-Right)に分割し、これを入 力値として、各ラウンドにおいて、 F関数を実行させるものであり、 F関数は、図 2を参 照して説明したように、 Sボックスからなる非線形変換部と、線形変換部を接続した SP N型を持つ F関数である。
[0099] この暗号処理アルゴリズムにおいては、 F関数中の線形変換部において適用する 線形変換処理のための行列として、複数の異なる正方 MDS (Maximum Distanc e Separable)行列から選択された行列を各ラウンドの F関数の線形変換部にぉレ、 て適用する行列として設定する。具体的には、少なくとも連続する偶数ラウンドおよび 連続する奇数ラウンドの各々において異なる正方 MDS行列を適用する。
[0100] 正方 MDS行列について説明する。正方 MDS行列とは以下の(a), (b)の性質を 満たす行列をいう。
(a)正方行列である
(b)行列に含まれるすべての部分行列(submatrix)の行列式(determinant)が 0
でない、すなわち、 det (submatrix)≠0
[0101] 上記(a) , (b)の条件を満足する行列を正方 MDS行列と呼ぶ。
共通鍵ブロック暗号の各ラウンドで実行する F関数に対する入出力ビット長が m X n (m, n:整数)ビットであり、 F関数内に構成される非線形変換部が nビットの入出力を 持つ m個の Sボックスにより構成され、線形変換部が n次の既約多項式で定義される 2の拡大体 GF (2n)上の元を要素として持つ m次の正方行列に基づく線形変換処理 を実行する場合の、正方 MDS行列の一例を図 8に示す。図 8に示す正方 MDS行列 の例は、 n=8, m= 8の正方 MDS行列の例である。
[0102] 上記(a), (b)を満足する正方 MDS行列は、ベクトル Aの非ゼロの要素数をハミン グウェイト hw (A)とし、 Mを m次の正方 MDS行列とし、 xを正方 MDS行列 Mへの入 力ベクトルとした場合、以下の不等式 (式 1)を満たすことになる。
hw (x) +hw (Mx)≥m+ l (式 1)
[0103] 上記式 (式 1)は、正方 MDS行列(M)によって線形変換される入力データ Xの非ゼ 口の要素数 hw (x)と、正方 MDS行列(M)によって線形変換された出力データ Mx の非ゼロの要素数 hw (Mx)の総数が、正方 MDS行列の次数 mより大となるというこ とを意味している。
[0104] なお、正方 MDS行列という名は正方 MDS— code (Maximum Distance Sepa rable Code)の生成行列の標準形の右半分が上記条件を満足していることから名 づけているものである。
[0105] 1つの行列をすベての F関数に組み込むという従来の構成でも線形変換行列に正 方 MDS行列を用いることで、正方 MDS行列でない行列を用いる場合に比べてァク ティブ Sボックス数の最小数を比較的高水準に保持することができるということは知ら れている。
[0106] 本アルゴリズムでは、各ラウンドの F関数には正方 MDS行列の条件を満たす行列 を利用し、さらにラウンドごとに異なる行歹 1Jを設定する方法を提案する。具体的には、 少なくとも連続する偶数ラウンドおよび連続する奇数ラウンドの各々において異なる 正方 MDS行列を適用する。
[0107] 以下に、段数 (ラウンド数)が 2r (rは整数)の Feistel型共通鍵ブロック暗号におい
て、差分攻撃に対する耐性をより高めた複数の構成例について説明する。
[0108] なお、以下の説明において、段数 (ラウンド数)が 2rの Feistel型共通鍵ブロック暗 号処理構成の j段目の F関数における線形変換部で適用する線形変換行列を MLTj として表すものとする。
[0109] 本アルゴリズムの構成では、段数(ラウンド数)が 2rの Feistel型共通鍵ブロック喑号 処理構成における各段の F関数中の線形変換部において適用する線形変換処理の ための行列として、複数の異なる正方 MDS (Maximum Distance Separable) 行列から選択された行歹' Jを各ラウンドの F関数の線形変換部において適用する行列 として設定する。具体的には、少なくとも連続する偶数ラウンドおよび連続する奇数ラ ゥンドの各々におレ、て異なる正方 MDS行列を適用する。
[0110] 具体的には、段数 (ラウンド数)が 2rの Feistel型共通鍵ブロック暗号処理構成に対 応して、 r以下の q個の正方 MDS行列: LI , L2, · · , Lqを生成し、段数(ラウンド数) が 2rの Feistel型共通鍵ブロック暗号処理構成における奇数段目の F関数中の線形 変換部にぉレ、て適用する線形変換処理のための行列として、上位段の F関数から順 に LI , L2, · · , Lq, LI , L2 ' 'として、 q個の正方 MDS行列を繰り返し設定する。さ らに、偶数段の F関数については、下位段の F関数から順に、 LI , L2, · · , Lq, L1 , L2 ' ·として、 q個の正方 MDS行列を繰り返し設定する。
[0111] 本設定を適用した構成例を図 9に示す。図 9は、段数 (ラウンド数)が 2r= 12、すな わち r = 6の Feistel型共通鍵ブロック暗号処理構成とした場合、 q = 3、すなわち、 12 段のラウンド数を持つ Feistel型共通鍵ブロック暗号処理構成において 3種類の異な る正方 MDS行列を配置した構成例として、各ラウンドの F関数部の線形変換部に設 定する正方 MDS行列(LI , L2, L3)を示している。
[0112] 図 9の構成は、 2mnビットの平文を、 mnビットの 2つのデータ PL (Plain- Left), PR( Plain-Right)に分割し、これを入力値として、各ラウンドにおいて、 F関数を実行させる 構成であり、第 1ラウンドの F関数 401およびその他のラウンドの F関数も、すべて図 2 を参照して説明したように、 Sボックスからなる非線形変換部と、線形変換部を接続し た SPN型を持つ F関数である。
[0113] 図 9の設定例は r = 6, q = 3であり、各 F関数内に示す記号 Lnは正方 MDS行歹 1J40
2を示している。すなわち、 LI , L2, L3は、それぞれ異なる 3種類の正方 MDS行列 を示し、各 F関数の線形変部において線形変換処理に適用する正方 MDS行列を示 している。
[0114] 線形変換行列 MLTjの設定処理シーケンスについて、図 10を参照して説明する。
[0115] [ステップ S21]
ラウンド数 2rの半数 rに対して r以下の数 q、すなわち、
q≤rとなる数 qを選択する。ただし、 qは 2以上の整数である。
[ステップ S22]
q個の GF (2n)上の m次正方 MDS行列 Ll, L2, Lqを生成する。 q個の GF (2n )上の m次正方 MDS行列 LI , L2, Lqの生成処理手法についての詳細は、後段 で説明する。
[0116] ステップ S22において、 q個の GF (2n)上の m次正方 MDS行列 Ll, L2, Lqが 生成した後、次に、以下の正方 MDS行列設定処理を実行する。
[ステップ S23]
2i— 1 (1≤i≤r)段目の線形変換行列 MLT にし を設定する。
2i- l (i- lmodq) + 1
[ステップ S 24]
2i (l≤i≤r)段目の線形変換行列に MLT2に MLT を設定する。
i 2r_2i+ l
[0117] 例えば、図 9に示す構成例、すなわち、 12段 (r=6)であり q = 3とした場合は、
MLT1 =L1, MLT2 = L3
MLT3 = L2, MLT4 = L2
MLT5 = L3, MLT6 = L1
MLT7 = L1, MLT8 = L3
MLT9 = L2, MLT10 = L2
ML丁 11 =L3, MLT12 = L1
の設定となる。
[0118] このように、このアルゴリズムを適用した暗号処理装置においては、段数 (ラウンド数 )が 2rの Feistel型共通鍵ブロック喑号処理構成に対応して、 r以下の q個の正方 MD S行列: LI , L2, · · , Lqを生成し、奇数段目については上位段の F関数力 順に L1
, L2, · · , Lq, LI, L2 ' .として、 q個の正方 MDS行列を繰り返し設定し、偶数段の F 関数については、下位段の F関数から順に、 LI, L2, · · , Lq, LI , L2 "として、 q個 の正方 MDS行列を繰り返し設定する構成としてレ、る。
[0119] 次に、図 10の処理フローにおけるステップ S22の q個の GF (2n)上の m次正方 MD S行列 LI , L2, Lqの生成処理および F関数への設定構成の詳細について説明 する。なお、説明は以下の項目に沿って行なう。
(3— a)差分攻撃に対する耐性向上を実現した正方 MDS行列の生成および F関 数への設定例
(3— b)線形攻撃に対する耐性向上を実現した正方 MDS行列の生成および F関 数への設定例
(3— c)差分攻撃および線形攻撃に対する耐性向上を実現した正方 MDS行列の 生成および F関数への設定例
[0120] [ (3— a)差分攻撃に対する耐性向上を実現した正方 MDS行列の生成および F関 数への設定例]
まず、差分攻撃に対する耐性向上を実現した正方 MDS行列の生成および F関数 への設定例として、 3つの処理例 al, a2, a3について説明する。
[0121] (処理例 al)
差分攻撃に対する耐性向上を実現した正方 MDS行列の生成および F関数への設 定例の第 1の例について説明する。まず、図 11に示すフローチャートを参照して正 方 MDS行列の生成処理にっレ、て説明する。
[0122] [ステップ S101]
入力:必要な正方 MDSの個数 q,拡大次数: n,行列のサイズ: mとして、 GF (2n)上で、 q個の m次正方 MDS行列 LI , L2, Lqをランダムに生成する。な お、図 11に示すフローでは、 MDSの個数 q = 6,拡大次数: n = 8,行列のサイズ: m = 8の場合の処理例として示してある。
[0123] [ステップ S102]
q個の m次正方 MDS行列 Ll, L2, Lqに含まれる qm個の列の任意の m個を取 り出したときに、線形独立になっているかどうかをチェックする。チェックに通過したら
ステップ S103に進む、そうでない場合はステップ S101にもどる。
[ステップ S 103]
q個の m次正方 MDS行列 LI, L2, Lqを、ラウンド数 2rの Feistel型共通鍵ブロ ック喑号に適用する正方 MDS行列として出力する。
[0124] 以上のプロセスによって、 q個の m次正方 MDS行列 LI , L2, Lqが生成される 。なお、 q≤rである。
[0125] このようにして生成した q個の m次正方 MDS行列 Ll, L2, Lqを、先に、図 10を 参照して説明した、 [ステップ S23]、 [ステップ S24]の処理に従って、段数 (ラウンド 数)が 2rの Feistel型共通鍵ブロック暗号処理構成の各段の F関数部の線形変換部 の線形変換処理に適用する行列として設定する。すなわち、奇数段目については上 位段から順に Ll, L2, · · , Lq, LI, L2 ' ·として q個の正方 MDS行列を繰り返し設 定し、偶数段の F関数については、下位段の F関数から順に、 LI , L2, · ·, Lq, L1 , L2 ' ·として、 q個の正方 MDS行列を繰り返し設定する。
[0126] このように、偶数ラウンドの正方 MDS行列と奇数ラウンドの正方 MDS行列を互い に逆順に配置することによって、暗号化処理と復号処理は鍵の順序を入れ替える処 理を除き同一であることが保証される。
[0127] 本構成により、
(a)各 F関数の線形変換行列は正方 MDSであること、
(b)暗号化関数内の奇数ラウンド内の少なくとも連続する q個の F関数に含まれる線 形変換行列の任意の m個の列ベクトルが独立であること、
(c)偶数ラウンド内の少なくとも連続する q個の F関数に含まれる線形変換行列の任 意の m個の列ベクトルが独立であること、
これら(a)〜(c)が保証されるため、複数段のラウンド数を持つ Feistel型共通鍵ブ ロック喑号処理構成において、連続する 2q_ lラウンドにおいて、 m個以下のァクテ イブ Sボックスの寄与による同時差分キャンセルは発生しないことが保証される。よつ て暗号化関数全体のアクティブ Sボックス数の最小値が増大する。
[0128] このように、本処理例によって、共通鍵ブロック暗号における差分攻撃に対する強 度指標のひとつである暗号化関数全体でのアクティブ Sボックスの最小数を大きくす
ることが可能となり、結果として、差分解析 (差分攻撃)を行なった場合のアクティブ S ボックスの数が増大し、解析の困難性が高まることになる。従って鍵の解析の困難な 安全性の高レ、暗号処理が実現される。
[0129] (処理例 a2)
差分攻撃に対する耐性向上を実現した正方 MDS行列の生成および F関数への設 定例の第 2の例について説明する。図 12のフローチャートを参照して正方 MDS行 列の生成処理について説明する。
[0130] [ステップ S 201]
入力:必要な MDSの個数 q,拡大次数: n,行列のサイズ: mとして、
GF (2n)上で、 q個の m次正方 MDS行列 LI , L2, Lqをランダムに生成する。な お、図 12に示すフローでは、 MDSの個数 q = 6,拡大次数: n = 8,行列のサイズ: m = 8の場合の処理例として示してある。
[0131] [ステップ S202]
q個の m次正方 MDS行列 LI, L2, Lqに含まれる qm個の列の任意の m個を取 り出したときに、正方 MDS行列になっているかどうかをチェックする。チェックに通過 したらステップ S203に進む、そうでない場合はステップ S201にもどる。
なお、正方 MDS行列とは、前述したように以下の性質を満たす行列をいう。
(a)正方行列である
(b)行列に含まれるすべての部分行列(submatrix)の行列式(determinant)力 SO でない、すなわち、 det (submatrix)≠0
[ステップ S203]
q個の m次正方 MDS行列 Ll, L2, Lqを、ラウンド数 2rの Feistel型共通鍵ブロ ック喑号に適用する正方 MDS行列として出力する。
[0132] 以上のプロセスによって、 q個の m次正方 MDS行列 LI , L2, Lqが生成される 。なお、 q≤rである。
[0133] 前述の処理例 alにおける正方 MDS行列生成処理においては、図 11の処理シー ケンスにおいて説明したように、ステップ S102において、 q個の m次正方 MDS行列 LI, L2,…, Lqに含まれる qm個の列の任意の m個を取り出したときの線形独立性を
判定したが、この処理例 a2における正方 MDS行列生成処理においては、 q個の m 次正方 MDS行列 LI, L2, Lqに含まれる qm個の列の任意の m個を取り出したと き正方 MDS行列になっているかどうかをチェックする。すなわち、より厳しいチェック が実行されることになる。
[0134] この図 12に示す処理シーケンスに従った正方 MDS行列生成処理によって生成さ れた q個の m次正方 MDS行列 LI , L2, Lqが、先に説明した処理例 alと同様、 先に、図 10を参照して説明した、 [ステップ S23]、 [ステップ S24]の処理に従って、 段数 (ラウンド数)が 2rの Feistel型共通鍵ブロック暗号処理構成の各段の F関数部 の線形変換部の線形変換処理に適用する行列として設定される。すなわち、奇数段 目については上位段力 順に LI , L2, · ·, Lq, LI , L2 ' ·として q個の正方 MDS行 列を繰り返し設定し、偶数段の F関数については、下位段の F関数から順に、 LI , L 2, · · , Lq, LI , L2 "として、 q個の正方 MDS行列を繰り返し設定する。
[0135] このように、偶数ラウンドの正方 MDS行列と奇数ラウンドの正方 MDS行列を互い に逆順に配置することによって、暗号化処理と復号処理は鍵の順序を入れ替える処 理を除き同一であることが保証される。
[0136] 本構成により、
(a)各 F関数の線形変換行列は正方 MDSであること、
(b)暗号化関数内の奇数ラウンド内の少なくとも連続する q個の F関数に含まれる線 形変換行列の任意の m個の列ベクトルが正方 MDS行列であること、
(c)偶数ラウンド内の少なくとも連続する q個の F関数に含まれる線形変換行列の任 意の m個の列ベクトルが正方 MDS行列であること、
これら(a)〜(c)が保証されるため、複数段のラウンド数を持つ Feistel型共通鍵ブ ロック喑号処理構成において、連続する 2q_ lラウンドにおいて、 m個以下のァクテ イブ Sボックスの寄与による同時差分キャンセルは発生しないことが保証される。 さらに、
(d)正方 MDSの性質から、 a個(a≤m)のアクティブ Sボックスの寄与によって得ら れる差分値における非ゼロの要素数は m+ l _ a個以上になることが保証される。よ つて喑号ィ匕関数全体のアクティブ Sボックス数の最小値が増大する。
[0137] このように、本処理例によって、共通鍵ブロック暗号における差分攻撃に対する強 度指標のひとつである暗号化関数全体でのアクティブ Sボックスの最小数を大きくす ることが可能となり、結果として、差分解析 (差分攻撃)を行なった場合のアクティブ S ボックスの数が増大し、解析の困難性が高まることになる。従って鍵の解析の困難な 安全性の高レ、暗号処理が実現される。
[0138] (処理例 a3)
差分攻撃に対する耐性向上を実現した正方 MDS行列の生成および F関数への設 定例の第 3の例について説明する。図 13のフローチャートを参照して正方 MDS行 列の生成処理について説明する。
[0139] [ステップ S301]
入力:必要な MDSの個数 q,拡大次数: n,行列のサイズ: mとして、
GF (2n)上で、 1個の qm次正方 MDS行列 Mを生成する。なお、図 13に示すフロー では、 MDSの個数 q = 6,拡大次数: n = 8,行列のサイズ: m = 8の場合の処理例と して示してある。
[0140] [ステップ S302]
1個の qm次正方 MDS行列 M力 m本の行を任意に選択抽出し、 m行, qm列の行 列 M'を構成する。
[ステップ S303]
m行, qm列の行列 M'に含まれる qm本の列ベクトルを重複することなく m本の列べ タトルからなる q個のグノレープに任意に分割し、それぞれのグノレープに含まれる列べ タトルから m次の正方行列 LI , L2, ···, Lqを、ラウンド数 2rの Feistel型共通鍵ブロッ ク喑号に適用する正方 MDS行列として出力する。
[0141] 以上のプロセスによって、 q個の m次正方 MDS行列 LI , L2, Lqが生成される 。なお、 q≤rである。
[0142] 処理例 a3における正方 MDS行列生成手法 3について、図 14を参照して、より具体 的に説明する。
[ステップ S301]
GF (2n)上で、 1個の qm次正方 MDS行列 Mを生成する。図 14に示すように、 qm
X qmの正方 MDS行列 Mを生成する。なお、このステップ S301において生成する 行列 Mの次数は qm次より大きレ、ものでもよい。
[ステップ S302]
図 14に示すように、 qm次正方 MDS行列 Mから m本の行を任意に選択抽出し、 m 行, qm列の行列 M'を構成する。なお、図に示す例では、連続する m本の行を選択 抽出した例として示してある力 m次正方 MDS行列 Mを構成する任意の離間した行 を m本選択抽出して、 m行, qm列の行列 M'を構成してもよい。
[ステップ S303]
m行, qm列の行列 M'に含まれる qm本の列ベクトルを重複することなく m本の列べ タトルからなる X個のグノレープに任意に分割し、それぞれのグノレープに含まれる列べ タトルから m次の正方行歹 1JL1 , L2, Lxを生成する。
[0143] 図 13、図 14を参照して説明した処理シーケンスに従った正方 MDS行列生成処理 によって生成された q個の m次正方 MDS行歹 IJL1 , L2, Lq力 先に説明した処 理例 al、 a2と同様、先に、図 10を参照して説明した、 [ステップ S23]、 [ステップ S24 ]の処理に従って、段数 (ラウンド数)が 2rの Feistel型共通鍵ブロック暗号処理構成 の各段の F関数部の線形変換部の線形変換処理に適用する行列として設定される。 すなわち、奇数段目については上位段から順に LI , L2, · · , Lq, LI , L2 "として q 個の正方 MDS行列を繰り返し設定し、偶数段の F関数については、下位段の F関数 力 順に、 LI , L2, · · , Lq, LI, L2 ' 'として、 q個の正方 MDS行列を繰り返し設定 する。
[0144] このように、偶数ラウンドの正方 MDS行列と奇数ラウンドの正方 MDS行列を互い に逆順に配置することによって、暗号化処理と復号処理は鍵の順序を入れ替える処 理を除き同一であることが保証される。
[0145] 本構成により、
(a)各 F関数の線形変換行列は正方 MDSであること、
(b)暗号化関数内の奇数ラウンド内の少なくとも連続する q個の F関数に含まれる線 形変換行列の任意の m個の列ベクトルが独立であること、
(c)偶数ラウンド内の少なくとも連続する q個の F関数に含まれる線形変換行列の任
意の m個の列ベクトルが独立であること、
これら(a)〜(c)が保証されるため、複数段のラウンド数を持つ Feistel型共通鍵ブ ロック暗号処理構成において、連続する 2q—lラウンドにおいて、 m個以下のァクテ イブ Sボックスの寄与による同時差分キャンセルは発生しないことが保証される。
さらに、
(d)正方 MDSの性質から、 a個(a≤m)のアクティブ Sボックスの寄与によって得ら れる差分値における非ゼロの要素数は m+ l _ a個以上になることが保証される。よ つて喑号ィ匕関数全体のアクティブ Sボックス数の最小値が増大する。
[0146] なお、処理例 a3が特に効果を発揮するのは、 m, r,が大きくなり、前述した処理例 a 1 , a2の行列決定処理方式に力かる時間的コストが莫大となり、現実的な時間内に行 歹 IJを決定することが困難である場合である。そのような場合でも本処理例 a3の正方 M DS行列生成手法ならば比較的短時間での行列生成処理が可能となる。
[0147] これは、処理例 a3においては、大きな m, rに対しても現実的な時間で十分に処理 可能な方式、例えばリードソロモン (Reed— Solomon)符号の生成行列の生成法を 適用することが可能となるからである。
[0148] この処理例 a3においても、上述したように、共通鍵ブロック暗号における差分攻撃 に対する強度指標のひとつである喑号ィ匕関数全体でのアクティブ Sボックスの最小数 を大きくすることが可能となり、結果として、差分解析 (差分攻撃)を行なった場合のァ クティブ Sボックスの数が増大し、解析の困難性が高まることになる。従って鍵の解析 の困難な安全性の高い暗号処理が実現される。
[0149] [ (3— b)線形攻撃に対する耐性向上を実現した正方 MDS行列の生成および F関 数への設定例]
次に、線形攻撃に対する耐性向上を実現した正方 MDS行列の生成および F関数 への設定例として、 2つの処理例 bl , b2について説明する。
[0150] (処理例 bl)
線形攻撃に対する耐性向上を実現した正方 MDS行列の生成および F関数への設 定例の第 1の例について、説明する。図 15に示すフローチャートを参照して正方 MD S行列の生成処理について説明する。
[0151] [ステップ S401]
入力:必要な正方 MDSの個数 q,拡大次数: n,行列のサイズ: mとして、
GF (2n)上で、 q個の m次正方 MDS行列 Ml, M2, Mqをランダムに生成する 。なお、図 14に示すフローでは、正方 MDSの個数 q = 6,拡大次数: n = 8,行列の サイズ: m = 8の場合の処理例として示してある。
[0152] [ステップ S402]
q個の m次正方 MDS行列 Ml , M2, Mqの逆行列 Ml— M2— Mq 1を 算出し、隣り合う 2つの逆行列に含まれる 2mの行ベクトルから任意の m本の行べタト ルを取り出したときに、線形独立になっているかどうかをチェックする。図 15中、 は 、行ベクトルの転置ベクトルを示すものである。チェックに通過したらステップ S403に 進む、そうでない場合はステップ S401にもどる。ただし、 Ml 1と Mq_ 1は、隣り合う行 歹 する。
[ステップ S403]
q個の m次正方 MDS行列 LI, L2, Lqを、ラウンド数 2rの Feistel型共通鍵ブロ ック暗号に適用する正方 MDS行列として出力する。
[0153] 以上のプロセスによって、 q個の m次正方 MDS行列 LI , L2, ..·, Lqが生成される 。なお、 q≤rである。
[0154] このようにして生成した q個の m次正方 MDS行列 LI, L2, Lqを、先に、図 10を 参照して説明した、 [ステップ S23]、 [ステップ S24]の処理に従って、段数 (ラウンド 数)が 2rの Feistel型共通鍵ブロック暗号処理構成の各段の F関数部の線形変換部 の線形変換処理に適用する行列として設定する。すなわち、奇数段目については上 位段から順に Ll, L2, · · , Lq, LI, L2 ' ·として q個の正方 MDS行列を繰り返し設 定し、偶数段の F関数については、下位段の F関数から順に、 LI , L2, · ·, Lq, L1 , L2 ' ·として、 q個の正方 MDS行列を繰り返し設定する。
[0155] このように、偶数ラウンドの正方 MDS行列と奇数ラウンドの正方 MDS行列を互い に逆順に配置することによって、暗号化処理と復号処理は鍵の順序を入れ替える処 理を除き同一であることが保証される。
[0156] 本構成により、
(a)各 F関数の線形変換行列は正方 MDSであること、
(b)暗号化関数内の奇数ラウンド内に連続して含まれる線形変換行列、および偶 数ラウンド内に連続して含まれる線形変換行列の逆行列の任意の m個の列べクトノレ は独立であること、
が保証される。このことにより、線形攻撃における線形近似による解析困難性を高 めることが可能となり、解析の困難性、すなわち鍵の解析の困難な安全性の高い喑 号処理が実現される。
[0157] (処理例 b2)
線形攻撃に対する耐性向上を実現した正方 MDS行列の生成および F関数への設 定例の第 2の例について、説明する。図 16に示すフローチャートを参照して正方 MD S行列の生成処理について説明する。
[0158] [ステップ S501]
入力:必要な正方 MDSの個数 q,拡大次数: n,行列のサイズ: mとして、
GF (2n)上で、 q個の m次正方 MDS行列 Ml, M2, Mqをランダムに生成する 。なお、図 16に示すフローでは、正方 MDSの個数 q = 6,拡大次数: n = 8,行列の サイズ: m= 8の場合の処理例として示してある。
[0159] [ステップ S502]
q個の m次正方 MDS行列 Ml , M2, Mqの逆行列 Ml—1, M2"1, Mq_ 1を 算出し、隣り合う 2つの逆行列に含まれる 2mの行ベクトルから任意の m本の行べタト ルを取り出したときに、正方 MDS行列になっているかどうかをチェックする。図 16中、 は、行ベクトルの転置ベクトルを示すものである。チェックに通過したらステップ S5 03に進む、そうでない場合はステップ S401にもどる。ただし、 Ml— 1と Mq— 1は、隣り 合う行列とする。
なお、正方 MDS行列とは、前述したように以下の性質を満たす行列をいう。
(a)正方行列である
(b)行列に含まれるすべての部分行列(submatrix)の行列式(determinant)が 0 でない、すなわち、 det (submatrix)≠0
[0160] [ステップ S503]
q個の m次正方 MDS行列 LI, L2, Lqを、ラウンド数 2rの Feistel型共通鍵ブロ ック暗号に適用する正方 MDS行列として出力する。
[0161] 以上のプロセスによって、 q個の m次正方 MDS行列 LI , L2, ..·, Lqが生成される 。なお、 q≤rである。
[0162] 前述の処理例 blにおける正方 MDS行列生成処理においては、図 15の処理シー ケンスにおいて説明したように、ステップ S402において、 q個の m次正方 MDS行列 の Ml, M2, Mqの逆行列 Ml— M2— Mq— 1に含まれる qm個の列の任 意の m個を取り出したときの線形独立性を判定した力 この処理例 b2における正方 MDS行列生成処理においては、 q個の m次正方 MDS行列の Ml , M2, Mqの 逆行列 Ml— 1, M2— Mq—1に含まれる qm個の列の任意の m個を取り出したとき 正方 MDS行列になっているかどうかをチェックする。すなわち、より厳しいチェックが 実行されることになる。
[0163] この図 16に示す処理シーケンスに従った正方 MDS行列生成処理によって生成さ れた q個の m次正方 MDS行列 LI , L2, Lqが、先に説明した処理例 blと同様、 先に、図 10を参照して説明した、 [ステップ S23]、 [ステップ S24]の処理に従って、 段数 (ラウンド数)が 2rの Feistel型共通鍵ブロック暗号処理構成の各段の F関数部 の線形変換部の線形変換処理に適用する行列として設定される。すなわち、奇数段 目については上位段力 順に LI , L2, · · , Lq, LI , L2 ' ·として q個の正方 MDS行 列を繰り返し設定し、偶数段の F関数については、下位段の F関数から順に、 LI , L 2, · · , Lq, LI , L2 ' 'として、 q個の正方 MDS行列を繰り返し設定する。
[0164] このように、偶数ラウンドの正方 MDS行列と奇数ラウンドの正方 MDS行列を互い に逆順に配置することによって、暗号化処理と復号処理は鍵の順序を入れ替える処 理を除き同一であることが保証される。
[0165] 本構成により、
(a)各 F関数の線形変換行列は正方 MDSであること、
(b)暗号化関数内の奇数ラウンド内に連続して含まれる線形変換行列、および偶 数ラウンド内に連続して含まれる線形変換行列の逆行列の任意の m個の列べクトノレ が正方 MDS行列となること、
が保証される。このことにより、線形攻撃における線形近似による解析困難性を高 めることが可能となり、解析の困難性、すなわち鍵の解析の困難な安全性の高い喑 号処理が実現される。
[0166] [ (3-c)差分攻撃および線形攻撃に対する耐性向上を実現した正方 MDS行列の 生成および F関数への設定例]
次に、差分攻撃および線形攻撃に対する耐性向上を実現した正方 MDS行列の生 成および F関数への設定例について説明する。
[0167] 差分攻撃に対する耐性を持つ喑号処理アルゴリズムは、先に、図 10〜図 13を参照 して説明した処理、すなわち、 F関数の線形処理部における線形変換に適用する正 方 MDS行列を前述の処理例 al (図 11)〜a3 (図 13)のいずれかの処理を適用して 設定することで実現される。また、線形攻撃に対する耐性を持つ暗号処理アルゴリズ ムは、先に、図 10、および図 14、図 15を参照して説明した処理、すなわち、 F関数の 線形処理部における線形変換に適用する正方 MDS行列を前述の処理例 bl (図 14 )、 b2 (図 15)のレ、ずれかの処理を適用して設定することで実現される。
[0168] 差分攻撃および線形攻撃に対する耐性向上を実現した正方 MDS行列は、
処理例 al (図 11)〜a3 (図 13)のいずれかの処理と、
処理例 bl (図 14)、 b2 (図 15)のいずれかの処理とを、
併せて実行して生成した正方 MDS行列を、図 10において説明した [ステップ S23 ]、 [ステップ S24]の処理に従って、段数(ラウンド数)が 2rの Feistel型共通鍵ブロッ ク暗号処理構成の各段の F関数部の線形変換部の線形変換処理に適用する行列と して設定することで実現される。
[0169] すなわち、
処理例 alと処理例 bl、
処理例 alと処理例 b2、
処理例 a2と処理例 bl、
処理例 a2と処理例 b2、
処理例 a3と処理例 bl、
処理例 a3と処理例 b2、
のいずれかの組み合わせによって、 q個の正方 MDS行列を生成し、 2rの Feistel 型共通鍵ブロック暗号処理構成の各段の F関数部の線形変換部の線形変換処理に 適用する行列として設定する。奇数段目については上位段から順に Ll, L2, · ·, Lq , LI , L2 ' 'として q個の正方 MDS行列を繰り返し設定し、偶数段の F関数について は、下位段の F関数から順に、 LI , L2, · ·, Lq, LI , L2 ' ·として、 q個の正方 MDS 行列を繰り返し設定する。この設定により、差分攻撃および線形攻撃に対する耐性 向上を実現した暗号処理が可能となる。
[0170] 図 17を参照して、差分攻撃および線形攻撃に対する耐性向上を実現した喑号処 理を実現するための正方 MDS行列の生成処理の一例について説明する。この処理 は、前述した処理例 a2と、処理例 b2との組み合わせである。
[0171] [ステップ S601]
入力:必要な正方 MDSの個数 q,拡大次数: n,行列のサイズ: mとして、
GF (2n)上で、 q個の m次正方 MDS行列 Ml, M2, Mqをランダムに生成する 。なお、図 17に示すフローでは、正方 MDSの個数 q = 6,拡大次数: n = 8,行列の サイズ: m = 8の場合の処理例として示してある。
[0172] [ステップ S602]
q個の m次正方 MDS行列 Ml , M2, Mqに含まれる qm個の列の任意の m個を 取り出したときに、正方 MDS行列になっているかどうかをチェックする。チェックに通 過したらステップ S603に進む、そうでない場合はステップ S601にもどる。
なお、正方 MDS行列とは、前述したように以下の性質を満たす行列をいう。
(a)正方行列である
(b)行列に含まれるすべての部分行列(submatrix)の行列式(determinant)が 0 でない、すなわち、 det (submatrix)≠0
[0173] [ステップ S603]
q個の m次正方 MDS行列 Ml , M2, Mqの逆行列 Ml— M2— Mq 1を 算出し、隣り合う 2つの逆行列に含まれる 2mの行ベクトルから任意の m本の行べタト ルを取り出したときに、正方 MDS行列になっているかどうかをチェックする。図 17中、 は、行ベクトルの転置ベクトルを示すものである。チヱックに通過したらステップ S6
04に進む、そうでない場合はステップ S601にもどる。ただし、 Ml—1と Mq_1は、隣り 合う行列とする。
[0174] [ステップ S604]
q個の m次正方 MDS行列 Ll, L2, Lqを、ラウンド数 2rの Feistel型共通鍵ブロ ック喑号に適用する正方 MDS行列として出力する。
[0175] 以上のプロセスによって、 q個の m次正方 MDS行列 LI , L2, Lqが生成される
。なお、 q≤rである。
[0176] この図 17に示す処理シーケンスに従った正方 MDS行列生成処理によって生成さ れた q個の m次正方 MDS行列 LI , L2, Lqが、先に、図 10を参照して説明した、 [ステップ S23]、 [ステップ S24]の処理に従って、段数(ラウンド数)が 2rの Feistel型 共通鍵ブロック暗号処理構成の各段の F関数部の線形変換部の線形変換処理に適 用する行列として設定される。すなわち、奇数段目については上位段から順に Ll, L 2, · · , Lq, LI , L2 ' 'として q個の正方 MDS行列を繰り返し設定し、偶数段の F関数 については、下位段の F関数から順に、 LI, L2, · · , Lq, LI , L2 "として、 q個の正 方 MDS行列を繰り返し設定する。
[0177] このように、偶数ラウンドの正方 MDS行列と奇数ラウンドの正方 MDS行列を互い に逆順に配置することによって、暗号化処理と復号処理は鍵の順序を入れ替える処 理を除き同一であることが保証される。
[0178] 本構成により、
(a)各 F関数の線形変換行列は正方 MDSであること、
(b)暗号化関数内の奇数ラウンド内の少なくとも連続する q個の F関数に含まれる線 形変換行列の任意の m個の列ベクトルが正方 MDS行列であること、
(c)偶数ラウンド内の少なくとも連続する q個の F関数に含まれる線形変換行列の任 意の m個の列ベクトルが正方 MDS行列であること、
これら(a)〜(c)が保証されるため、複数段のラウンド数を持つ Feistel型共通鍵ブ ロック喑号処理構成において、連続する 2q_ lラウンドにおいて、 m個以下のァクテ イブ Sボックスの寄与による同時差分キャンセルは発生しないことが保証される。 さらに、
(d)正方 MDSの性質から、 a個(a≤m)のアクティブ Sボックスの寄与によって得ら れる差分値における非ゼロの要素数は m+ 1— a個以上になることが保証される。よ つて暗号ィヒ関数全体のアクティブ Sボックス数の最小値が増大する。
さらに、
(e)暗号化関数内の奇数ラウンド内に連続して含まれる線形変換行列、および偶 数ラウンド内に連続して含まれる線形変換行列の逆行列の任意の m個の列べクトノレ が正方 MDS行列となることが保証される。このことにより、線形攻撃における線形近 似による解析困難性を高めることが可能となり、解析の困難性、すなわち鍵の解析の 困難な安全性の高レ、暗号処理が実現される。
[0179] このように、本処理例によって、差分攻撃および線形攻撃の双方の解析の困難性 が向上し、鍵の解析の困難な安全性の高い暗号処理が実現される。なお、図 17に 示した例は、前述したように、先に説明した処理例 a2と処理例 b2の組み合わせによ る正方 MDS行列の生成例である力 その他、処理例 alと処理例 bl、処理例 alと処 理例 b2、処理例 a2と処理例 bl、処理例 a3と処理例 bl、処理例 a3と処理例 b2とを組 み合わせて q個の正方 MDS行列の生成を行レ、、段数(ラウンド数)が 2rの Feistel型 共通鍵ブロック暗号処理構成の各段の F関数部の線形変換部の線形変換処理に適 用する行列として、奇数段目については上位段から順に LI , L2, · · , Lq, LI , L2 - •として q個の正方 MDS行列を繰り返し設定し、偶数段の F関数については、下位段 の F関数から順に、 LI, L2, · · , Lq, LI, L2 "として、 q個の正方 MDS行列を繰り 返し設定することによつても、差分攻撃および線形攻撃の双方の解析の困難性が高 ぐ鍵の解析の困難な安全性の高い暗号処理が実現可能である。
[0180] これまでの説明では、分かりやすさを優先して線形変換行列を GF (2n)上で定義さ れる m X mの行列として、 mnビットから mnビットへのデータ変換演算としてきたが、 差分解析および線形解析に対する同様な効果が GF (2)上で定義される mn X mnの 行列を用いた場合でも有効である。実際、任意の GF (2n)上の行列は同じ変換を表 す GF (2)上の行列に一対一で対応させることができる。よって GF (2)上の行列はよ り一般的な表現を表しているといえる。 GF (2)上では行と列の本数が mn本ずつと、 GF (2n)の場合と比べて n倍となる。このため GF (2n)上の行列の 1行目は、 GF (2)
上の行列の 1から n行目に対応し、 1列目は 1力 n歹 IJ目に対応している。つまり i行目 は (卜 1) + 1行目から(i— l) +n行目に対応し、 i列目は (卜 1) + 1列目から (卜 1) +n列目に対応している。よって、 GF (2n)上の行や列を取り出してくる操作には、 GF (2)上で定義される行歹 1Jを用いる場合は、対応する n行分もしくは n列分を取り出すと レ、う操作を対応させればよレ、。 GF (2n)上の m本の行や列を取り出す操作は、 GF (2 )上では n本の行や列を m回取り出すことになり、結果として mn X mnの行列を得るこ とができる。以上の対応付けにより、 GF (2)上で定義される行列に容易に拡張するこ とができる。
[0181] [4.本発明に係る喑号処理アルゴリズム]
次に、本発明に係る暗号処理アルゴリズムにつレ、て説明する。
上述の項目 [3.耐性を向上させた暗号処理アルゴリズム構成例]において説明し たように、非線形変換部および線形変換部を有する SPN型の F関数の複数ラウンド 繰り返し構成において、特定の条件を満足する正方 MDS (Maximum Distance Separable)行列を適用した線形変換処理を行なう構成とすることで、暗号解析処理 、攻撃処理として知られる線形解析、差分解析に対する耐性を向上させることが可能 であることを説明した。
[0182] しかし、上述した処理構成では、利用できる行列が限定されてしまうという問題があ る。すなわち、前述した処理例 al〜a3において説明した差分攻撃に対する耐性向 上を図るための各 F関数に設定する線形変換行列の条件としては、
(A1 )各 F関数の線形変換行列は正方 MDSであること、
(A2)喑号ィ匕関数内の奇数ラウンド内の少なくとも連続する q個の F関数に含まれる 線形変換行列の任意の m個の列ベクトルが独立または正方 MDS行列であること、
(A3)偶数ラウンド内の少なくとも連続する q個の F関数に含まれる線形変換行列の 任意の m個の列ベクトルが独立または正方 MDS行列であること、
これらの条件を満足させることが必要であった。
[0183] また、前述した処理例 bl〜b2において説明した線形攻撃に対する耐性向上を図 るための各 F関数の線形変換行列の条件としては、
(B1)各 F関数の線形変換行列は正方 MDSであること、
(B2)暗号化関数内の奇数ラウンド内に連続して含まれる線形変換行歹 1J、および偶 数ラウンド内に連続して含まれる線形変換行列の逆行列の任意の m個の列べクトノレ が正方 MDS行列となること、
これらの条件を満足させることが必要であった。
[0184] さらに、差分攻撃および線形攻撃の双方に対する耐性を持つ構成とするためには 、上述した (A1)〜(A3)および(B1)〜(B2)のすベての条件を満足させることが必 要となり、利用できる行列の候補数が絞られてしまうとレ、う問題がある。
[0185] 先に図 1、図 2を参照して説明したように、 Feistel構造は、変換関数の単純な繰り 返しにより、平文を暗号文に変換する構造を持つ。初めに、 2mnビットの平文を、 mn ビットの 2つの入力データ P (Plain-Left) 101, P (Plain-Right) 102に分割し、これを
L R
入力値として、 F関数 (ラウンド関数) 120を r段繰り返す。
[0186] 例えば、図 1に示す第 1番目のラウンドでは、 mnビットの入力データ Xと、鍵生成部
(図示せず)から入力される mnビットのラウンド鍵 K 103が F関数 120に入力され、 F
1
関数 120におけるデータ変換処理の後に mnビットのデータ Yを出力する。出力はも う片方の前段からの入力データ(第 1段の場合は入力データ P )と排他的論理和部 1
L
04におレ、て、排他的論理和演算がなされ、 mnビットの演算結果が次のラウンド関数 へと出力される。この処理、すなわち F関数を定められたラウンド数 (r)だけ繰り返し 適用して暗号化処理が完了し、暗号文の分割データ C (Cipher-Left)、 C (Cipher-
L R
Right)が出力される。以上の構成より、 Feistel構造の復号処理はラウンド鍵を挿入 する順序を逆にするだけでよぐ逆関数を構成する必要がないことが導かれる。
[0187] 各ラウンドの関数として設定される F関数 120の構成については、先に図 2を参照し て説明したように、非線形変換層と線形変換層を接続したいわゆる SPN型の構成を 有する。 SPN型の F関数 120は、図 2 (b)に示すように、非線形変換処理を実行する 複数の Sボックス(S _box) 121を有する。ラウンド関数部の前段からの mnビットの入 力値 Xは、鍵スケジュール部から入力されるラウンド鍵 Kと排他的論理和が実行され 、その出力が nビットずつ非線形変換処理を実行する複数 (m個)の Sボックス 121に 入力される。各 Sボックスでは、例えば変換テーブルを適用した非線形変換処理が実 行される。
[0188] Sボックス 121からの出力データである mnビットの出力値 Zは、線形変換処理を実 行する線形変換部 122に入力されて、例えばビット位置の入れ替え処理などの線形 変換処理が実行され、 mnビットの出力値 Yを出力する。この出力値 Yが前段からの 入力データと排他的論理和され、次のラウンドの F関数の入力値とされる。
[0189] 図 2に示す F関数 120は、入出力ビット長が m X n (m, n :整数)ビットであり、非線 形変換層は nビットの入出力を持つ非線形変換層としての Sボックス 121は、 m個並 列にならんだ構成を有し、線形変換層としての線形変換部 122は n次の既約多項式 で定義される 2の拡大体 GF (2n)上の元を要素として持つ m次の正方行列に基づく 線形変換処理を実行する。
[0190] 線形変換部 122における線形変換処理に適用する正方行列は、例えば図 3に示 す構成を持ち、非線形変換部(Sボックス 121)から出力された m個の nビットデータ Z
[1] , Z[2] , Z[m]に対してあらカ^め定められた正方行列 125を適用した演算 により線形変換が施され、 F関数 (ラウンド関数)出力としての、 Y[l] , Υ[2] ,…, Υ[ m]が決定される。ただし、このとき各データの行列の要素に対する線形演算はあら 力じめ定められた 2の拡大体 GF (2n)上で行われる。
[0191] この線形変換処理に適用する正方行列について、上述した [3.耐性を向上させた 暗号処理アルゴリズム構成例]におレ、て、特定の条件を満足する正方 MDS (Maxim urn Distance Separable)行列を適用することで、暗号解析処理、攻撃処理とし て知られる線形解析、差分解析に対する耐性を向上させた構成を説明したが、上述 したように、制約が多く利用できる行列の候補数が絞られてしまうという問題がある。
[0192] 以下においては、上記の問題を鑑み、線形変換に適用する行列の制約条件を弱 めることにより利用可能な行列の候補数を増やし、かつアクティブ S— boxの数を十 分に大きく保つことのできる Feistel型共通鍵ブロック喑号の 2つの構成例について 説明する。
[0193] (4a)構成例 1
まず、本発明に係る Feistel型共通鍵ブロック暗号構成例 1につレ、て説明する。 まず、線形変換の特殊な例として最適拡散変換(Optimal Diffusion Mapping s)を以下のように定義する。
nX aビットデータ力 nXbビットデータへの線形変換を行う写像 [ Θ ]
Θ :{0, i}na→{o, i}nb
に対して分岐数 Β( θ )を次のように定義する。
B( 0 )=min {hw (a) +hw ( θ (α))}
ただし、 min {X }は、 ひ≠0を満たすすべての X のうちの最小値を表すものと し、 hw (Y)はビット列 Υを ηビットごとに区切って表したときに、 ηビットのデータすベ てが 0ではなレ、(非ゼロ)要素の数を返す関数とする。
このとき、 Β( Θ )が b +1であるような写像 Θを最適拡散変換と定義する。また便宜 的に行列 Mの分岐数を B (M)と表すものとする。
[0194] SPN型の F関数を持つ r段からなる Feistel喑号において、 BD を以下のように定 〜
義する。
BD =min{B(M) | l≤i≤r},
BD =min{B(M | M ) | l≤i≤r— 2},
として定義する。
ただし A I Bは行列 A, Bの連結により得られる行列を表すものとする。
[0195] また、 BLを以下のように定義する。
BL =min{B(M"1 | 'Μ"1 ) | l≤i≤r~2}
とする。ただし、 lMは行列の転置を表すものとする。
[0196] 本発明に従った Feistel型暗号の第 1の例においては、
(1) BD, BD力 ¾以上になるような行列 Mを選択することにより、差分攻撃に対す る耐性を向上させ、かつ
(2) BL力 S3以上になるような行列 Mを選択することにより、線形攻撃に対して耐性 を向上させた。
[0197] すなわち、本発明の Feistel型共通鍵ブロック暗号では、線形変換に適用する行列 の制約条件は、上記条件(1)、(2)のみであり、前述した [3.耐性を向上させた暗号 処理アルゴリズム構成例]におレ、て説明した適用可能な行列の制約条件に比較する と緩やかな制約となる。この緩やかな制約により利用可能な行列の候補数を増やし、 かつアクティブ S_boxの数を十分に大きく保つことのできる Feistel型共通鍵ブロッ
ク暗号が構成できる。すなわち、共通鍵ブロック暗号における攻撃に対する強度指標 のひとつである暗号化関数全体でのアクティブ Sボックスの最小数を大きくすることが 可能となり、線形攻撃や、差分攻撃に対して耐性が向上し、より安全性の高い喑号処 理が実現される。
[0198] 以下、上記条件(1)によって、差分攻撃に対する耐性が向上すること、および上記 条件(2)によって、線形攻撃に対する耐性が向上することについての根拠および証 明について、以下説明する。
[0199] (4a. 1)構成例 1における差分攻撃に対する耐性の向上
まず、上記条件(1)、すなわち、 BD , BD力 ¾以上になるような行列 Mを選択する
1 2 i ことにより、差分攻撃に対する耐性が向上する理由について説明する。
[0200] SPN型の F関数を持つ r段からなる Feistel喑号において、 BD は、以下のように
1〜3
定義される。
BD =min{B(M) | l≤i≤r},
1 i
BD =min{B(M | M ) | l≤i≤r— 2},
2 i i + 2
ただし A I Bは行列 A, Bの連結により得られる行列を表すものとする。 このとき
条件 0)BD ≥BD
1 2
という関係が存在する。
[0201] 次に、 kラウンド目に存在するゼロでない入出力差分をもつ S— box (差分アクティブ S— box)の個数を Dで表すものとする。この時、以下のことが成立する。
k
[0202] ゼロでない入力差分を SPN型の F関数を持つ Feistel暗号に与えたとき、以下の条 件が成り立つ。
条件 1)D=0ならば、 D ≠0, D ≠0, D ≠0, D ≠0,
i+2
条件 2)D :0ならば、 D =D ,
i-l i+1
条件 3)D ≠0ならば D +D +D ≥BD
L i i+1 i + 2
条件 4)D :0ならば D +D ≥BD,
i + 1 i + 2 1
条件 5)D =0ならば D +D ≥BD,
l i i+1 1
条件 6)D :0ならば D +D +D ≥BD
条件 7)D =0ならば D+D +D ≥BD ,
i + 4 i i+1 i + 3 2
である。
[0203] この時、連続する 6段に含まれる差分アクティブ S— boxの総数 T ( = D+D +D
6 i i+1
+ D +D +D )について考察する。
i + 2 i + 3 i + 4 i + 5
[0204] ケース 1)D ≠0かつ D ≠0の場合、
i+1 i + 4
上記条件 3より、 D +D +D ≥BDかつ D +D +D ≥BDであるため、
i i+1 i + 2 1 i + 3 i + 4 i + 5 1
T ≥2BD
6 1
となる。
[0205] ケース 2)D =0の場合、
i+1
T =D +D +D +D +D +D
6 i i+1 i+2 i + 3 i + 4 i + 5
となり、上記条件 2より、
T =2D +D +D +D
6 i + 2 i+3 i + 4 i + 5
が成立し、さらに、上記条件 4および条件 6に基づいて、
T = (D +D ) + (D +D +D )≥BD +BD
6 i + 2 i+3 i + 2 i + 4 i + 5 1 2
となる。
[0206] ケース 3)D =0の時、
i + 4
上記ケース 2と同様の証明により、
T ≥BD +BD
6 1 2
となる。
[0207] 従って、以上の結果をまとめ、条件 0を考慮すると、
T ≥BD +BD
6 1 2
となる。
[0208] この「6の倍数 6R (R≥2)は R個の 6の組に分解することができる」とレ、う性質により、 6R段の差分アクティブ S— box数の最小数を、上述の 6段で保証される差分ァクティ ブ S— boxから計算することができる。
[0209] つまり、ゼロでない入出力差分をもつ S_box (差分アクティブ S_box)の最小数は BD, BDを用いて表すことができることがわかる。従来において、 BDのみをなるベ
1 2 1 く大きくするという設計方針は考えられていたが、すべての段に同じ行歹 1Jを用いると
レ、う方法であるため、 BD = 2となってしまっており、差分アクティブ S— boxの最小数
2
は低く抑えられたままであった。
[0210] しかし、上述した説明では、
BD ≥BDという条件が存在し、 BDを大きくとることにより、ゼロでない入出力差分
1 2 2
をもつ S— box (差分アクティブ S— box)の最小数を底上げする効果がある。
[0211] 前述した [3.耐性を向上させた暗号処理アルゴリズム構成例]において説明した適 用可能な行列の制約条件において、差分攻撃に対する耐性向上を図るための各 F 関数に設定する線形変換行列の条件としては、
(A1)各 F関数の線形変換行列は正方 MDSであること、
(A2)喑号ィ匕関数内の奇数ラウンド内の少なくとも連続する q個の F関数に含まれる 線形変換行列の任意の m個の列ベクトルが独立または正方 MDS行列であること、
(A3)偶数ラウンド内の少なくとも連続する q個の F関数に含まれる線形変換行列の 任意の m個の列ベクトルが独立または正方 MDS行列であること、
これらの条件を満足させることが必要であった。
[0212] この条件は、前述の定義データ BD 、すなわち、
1〜2
BD =min{B (M ) | l≤i≤r} ,
1 i
BD =min{B (M | M ) | l≤i≤r~ 2} ,
2 i i + 2
を用いて示すと、
BD =BD =m+ l
1 2
となる条件に相当するものである。
[0213] し力し、ここで説明したアルゴリズムにおいては、
BD ≥BDという条件が存在しており、 BDを大きくとることにより、最小数を底上げ
1 2 2
する効果があり、 F関数の線形変換に適用する行列の候補数が増え、かつゼロでな レ、入出力差分をもつ差分アクティブ S— boxの数を十分に大きく確保できるとレ、うメリ ットがある。すなわち、共通鍵ブロック暗号における攻撃に対する強度指標のひとつ である喑号ィ匕関数全体でのアクティブ Sボックスの最小数を大きくすることが可能とな り、差分攻撃に対して耐性が向上し、より安全性の高い暗号処理が実現される。
[0214] (4a. 2)構成例 1における線形攻撃に対する耐性の向上
次に、前述した条件(2)、すなわち、 BL力 ¾以上になるような行列 Mを選択するこ
2 i
とにより、線形攻撃に対して耐性が向上する理由について説明する。
[0215] BLを以下のように定義される。
2
BL ^miniB M"1 | 'Μ"1 ) | l≤i≤r- 2}
2 i i + 2
とする。ただし、 は行列の転置を表すものとする。
[0216] 次に、 kラウンド目に存在するゼロでない入出力線形マスクをもつ S_box (線形ァク ティブ S— box)の個数を Lで表すものとする。この時、以下のことが成立する。
k
[0217] ゼロでない入力線形マスクを SPN型の F関数を持つ Feistel喑号に与えたとき、 条件 1) L +L +L ≥BL
i i+ 1 i + 2 2
が常に成立する。
[0218] 3の倍数 3R (R≥1)は 3の組に分解することができる。この性質により、 3R段の線形 アクティブ S— boxの最小数は、 R X BLで保証することができる。従って BLを大きく
2 2 とることにより、最小数を底上げする効果がある。
[0219] 前述した [3.耐性を向上させた暗号処理アルゴリズム構成例]において説明した適 用可能な行列の制約条件において、線形攻撃に対する耐性向上を図るための各 F 関数に設定する線形変換行列の条件としては、
(B1)各 F関数の線形変換行列は正方 MDSであること、
(B2)暗号化関数内の奇数ラウンド内に連続して含まれる線形変換行歹 1J、および偶 数ラウンド内に連続して含まれる線形変換行列の逆行列の任意の m個の列べクトノレ が正方 MDS行列となること、
これらの条件を満足させることが必要であった。
この条件は、前述の定義データ BL、すなわち、
2
BL ^miniB M"1 | 'Μ"1 ) | l≤i≤r- 2}
2 i i + 2
を用いて表すと、
BL =m+ l
2
となる条件に相当するものである。
[0220] し力、し、ここで説明したアルゴリズムにおいては、
BL力 S3以上になるような行列 Mを選択する
2 i
とレ、う条件を設定しているのみであり、 3R段の線形アクティブ S— boxの最小数は、 R X BLで保証することができる。従って BLを大きくとることにより、線形アクティブ S
2 2
— boxの最小数を底上げする効果がある。すなわち、共通鍵ブロック暗号における攻 撃に対する強度指標のひとつである暗号化関数全体でのアクティブ Sボックスの最小 数を大きくすることが可能となり、線形攻撃に対して耐性が向上し、より安全性の高い 暗号処理が実現される。
[0221] なお、上述した条件、すなわち、
(1) BD , BD力 ¾以上になるような行列 Mを選択する
1 2 i
(2) BL力 S3以上になるような行列 Mを選択する
2 i
これらの 2つの条件は、独立に定義される条件であり、 (1)の条件を満足させること で差分攻撃に対する耐性を向上し、 (2)の条件を満足させることで、線形攻撃に対す る耐性が向上する。
[0222] これら、「差分攻撃に対する耐性を確保する条件(1)」と「線形攻撃に対する耐性を 確保する条件(2)」はそれぞれ独立に定義される条件である。通常は、両方を同じレ ベルの強度になるような行列を選択する方針が考えられるが、暗号が利用される状 況に応じては差分攻撃のみに対しては耐性を高めるが線形攻撃に対してはとくに条 件を与えない設計や、その逆の設計を行って運用することも可能である。
[0223] (4b)構成例 2
次に、本発明に係る Feistel型共通鍵ブロック暗号構成例 2について説明する。こ の構成例は、構成例 1に比較して制約の多レ、構成例である。
まず、線形変換の特殊な例として最適拡散変換(Optimal Diffusion Mapping s)を以下のように定義する。
n X aビットデータ力 n X bビットデータへの線形変換を行う写像 [ Θ ]
Θ : {0, i }na→{o, i }nb
に対して分岐数 Β ( θ )を次のように定義する。
B ( 0 ) =min {hw ( a ) +hw ( θ ( α ) ) }
η η
ただし、 min {X }は、 ひ≠0を満たすすべての X のうちの最小値を表すものと し、 hw (Y)はビット列 Υを ηビットごとに区切って表したときに、 ηビットのデータすベ
てが 0ではなレ、(非ゼロ)要素の数を返す関数とする。
このとき、 Β ( Θ )が b + 1であるような写像 Θを最適拡散変換と定義する。また便宜 的に行列 Mの分岐数を B (M)と表すものとする。
[0224] SPN型の F関数を持つ r段からなる Feistel喑号において、 BD を以下のように定
1~3
義する。
BD =min{B (M ) | l≤i≤r} ,
1 i
BD =min{B (M | M ) | l≤i≤r— 2} ,
2 i i + 2
BD =min{B (M | M | M ) | l≤i≤r_4},
3 i i + 2 i + 4
として定義する。
ただし A I Bは行列 A, Bの連結により得られる行列を表すものとする。
[0225] また、 BLを以下のように定義する。
2
BL =πήη{Β ( Μ_ 1 | 'Μ"1 ) | l≤i≤r- 2}
2 i i + 2
とする。ただし、 lMは行列の転置を表すものとする。
[0226] 本発明に従った Feistel型暗号にぉレヽては、
(1) BD , BD , BD力 ¾以上になるような行列 Mを選択することにより、差分攻撃
1 2 3 i
に対する耐性を向上させ、かつ
(2) BL力 ¾以上になるような行列 Mを選択することにより、線形攻撃に対して耐性
2 i
を向上させた。
[0227] すなわち、本発明の Feistel型共通鍵ブロック暗号では、線形変換に適用する行列 の制約条件は、上記条件(1)、(2)のみであり、前述した [3.耐性を向上させた暗号 処理アルゴリズム構成例]において説明した適用可能な行列の制約条件に比較する と緩やかな制約となる。この緩やかな制約により利用可能な行列の候補数を増やし、 かつアクティブ S _boxの数を十分に大きく保つことのできる Feistel型共通鍵ブロッ ク喑号が構成できる。すなわち、共通鍵ブロック暗号における攻撃に対する強度指標 のひとつである暗号化関数全体でのアクティブ Sボックスの最小数を大きくすることが 可能となり、線形攻撃や、差分攻撃に対して耐性が向上し、より安全性の高い喑号処 理が実現される。
[0228] 以下、上記条件(1)によって、差分攻撃に対する耐性が向上すること、および上記
条件(2)によって、線形攻撃に対する耐性が向上することについての根拠および証 明について、以下説明する。
[0229] (4b.1)構成例 2における差分攻撃に対する耐性の向上
まず、上記条件(1)、すなわち、 BD , BD , BD力 S3以上になるような行列 Mを選
1 2 3 i 択することにより、差分攻撃に対する耐性が向上する理由について説明する。
[0230] SPN型の F関数を持つ r段からなる Feistel喑号において、 BD は、以下のように
1~3
定義される。
BD =min{B(M) | l≤i≤r},
1 i
BD =min{B(M | M ) | l≤i≤r— 2},
2 i i + 2
BD =min{B(M | M | M ) | l≤i≤r_4},
3 i i + 2 i + 4
ただし A I Bは行列 A, Bの連結により得られる行列を表すものとする。 このとき
条件 0)BD ≥BD ≥BD
1 2 3
という関係が存在する。
[0231] 次に、 kラウンド目に存在するゼロでない入出力差分をもつ S— box (差分アクティブ S— box)の個数を Dで表すものとする。この時、以下のことが成立する。
k
[0232] ゼロでない入力差分を SPN型の F関数を持つ Feistel暗号に与えたとき、以下の条 件が成り立つ。
条件 1)D=0ならば、 D ≠0, D ≠0, D ≠0, D ≠0,
i + 2
条件 2)D :0ならば、 D =D
条件 3)D ≠0ならば D +D D ≥BD
条件 4)D 0ならば D +D ≥BD
i +l i + 2
条件 5)D =0ならば13+0 ≥BD
i + 2
条件 6)D :0ならば D +D +D ≥BD ,
i +l i + 4 2
条件 7)D =0ならば D +D +D ≥BD ,
1 i i + 3 2
条件 8)D :D =0ならば D +D +D ≥BD
i + 6
である。
[0233] 二の時、連続する 6段に含まれる差分アクティブ S— boxの総数 T ( = D+D +D
+ D +D +D )について考察する。
-2 i + 3 i + 4 i + 5
ケース 1)D ≠0かつ D ≠0の場合、
i+l i + 4
上記条件 3より、 D+D +D ≥BDかつ D +D +D ≥BDであるため、 i i+l i + 2 1 i + 3 i + 4 i + 5 1
T≥2BD
となる。
[0235] ケース 2)D =0の場合、
i+l
T =D +D +D +D +D +D
6 i i+l i+2 i + 3 i + 4 i + 5
となり、上記条件 2より、
T =2D +D +D +D
6 i + 2 i+3 i + 4 i + 5
が成立し、さらに、上記条件 4および条件 6に基づいて、
T = (D +D ) + (D +D +D )≥BD +BD
6 i + 2 i+3 i + 2 i + 4 i + 5 1 2
となる。
[0236] ケース 3)D =0の時、
i + 4
上記ケース 2と同様の証明により、
T≥BD +BD
6 1 2
となる。
[0237] 従って、以上の結果をまとめ、条件 0を考慮すると、
T≥BD +BD
6 1 2
となる。
[0238] 次に、連続する 9段に含まれる差分アクティブ S— boxの総数、
T = (D +D +D +D +D +D +D +D +D )
9 i i+l i+2 i + 3 i + 4 i + 5 i + 6 i+7 i + 8
について考察する。
[0239] ケース 1)D ≠0の場合、
i+l
上記条件 3より、
D +D +D ≥BD
i i+l i+2 1
また、前述した 6段の差分アクティブ S_box数により、
D +D +D +D +D +D ≥BD +BD
i + 3 i + 4 i + 5 i + 6 i + 7 i + 8 1 2
が成立する。よって、
T≥2BD +BD
9 1 2
となる。
[0240] ケース 2)D ≠0の場合、
i+7
ケース 1と同様の証明により、
T≥2BD +BD
9 1 2
となる。
[0241] ケース 3)D =D =0の場合、
i+l i+7
T =D +D +D +D +D +D +D +D +D
9 i i+l i+2 i + 3 i + 4 i + 5 i + 6 i+7 i + 8
であり、さらに条件 2より、
T =2D +D +D +D +2D
9 i + 2 i+3 i + 4 i + 5 i + 6
となり、さらに条件 4, 8, 5より、
T = (D +D ) + (D +D +D ) + (D +D )≥2BD +BD
9 i + 2 i+3 i + 2 i + 4 i + 6 i + 5 i + 6 1 3 となる。
従って、以上の結果をまとめ、条件 0を考慮すると、
T≥2BD +BDとなる。
9 1 3
[0242] 6以上の任意の 3の倍数 3R(R≥ 2)は 6と 9の組に分解することができる。以下に例 を示す。
例) 6 = 6, 9 = 9, 12 = 6 + 6, 15 = 6 + 9, 18 = 6 + 6 + 6 = 9 + 9,
21 = 6 + 6 + 9, 24 = 6 + 6 + 6 + 6 = 9 + 9 + 6, ...
[0243] この「6以上の任意の 3の倍数 3R(R≥ 2)は 6と 9の組に分解することができる」という 性質により、 3R段の差分アクティブ S— box数の最小数を、上述の 6段と 9段で保証さ れる差分アクティブ S—boxから計算することができる。
[0244] つまり、ゼロでない入出力差分をもつ S_box (差分アクティブ S_box)の最小数は
BD, BD , BDを用いて表すことができることがわかる。従来において、 BDのみを
1 2 3 1 なるべく大きくするという設計方針は考えられていたが、すべての段に同じ行列を用 レ、るという方法であるため、 BD =BD =2となってしまっており、差分アクティブ S—
2 3
boxの最小数は低く抑えられたままであった。
[0245] しかし、上述した説明では、
BD ≥BD ≥BDという条件を設定しているものであり、
1 2 3
BDを大きくとることにより、ゼロでない入出力差分をもつ S— box (差分アクティブ S
3
-box)の最小数を底上げする効果がある。
[0246] 前述した [3.耐性を向上させた暗号処理アルゴリズム構成例]において説明した適 用可能な行列の制約条件において、差分攻撃に対する耐性向上を図るための各 F 関数に設定する線形変換行列の条件としては、
(A1)各 F関数の線形変換行列は正方 MDSであること、
(A2)喑号ィ匕関数内の奇数ラウンド内の少なくとも連続する q個の F関数に含まれる 線形変換行列の任意の m個の列ベクトルが独立または正方 MDS行列であること、
(A3)偶数ラウンド内の少なくとも連続する q個の F関数に含まれる線形変換行列の 任意の m個の列ベクトルが独立または正方 MDS行列であること、
これらの条件を満足させることが必要であった。
[0247] この条件は、前述の定義データ BD 、すなわち、
1〜3
BD =min{B (M ) | l≤i≤r} ,
1 i
BD =min{B (M | M ) | l≤i≤r~ 2} ,
2 i i + 2
BD =min{B (M | M | M ) | l≤i≤r~4} ,
3 i i + 2 i + 4
を用いて示すと、
BD =BD =BD =m+ l
1 2 3
となる条件に相当するものである。
[0248] し力し、ここで説明したアルゴリズムにおいては、
BD ≥BD ≥BDという条件を設定しているのみであり、
1 2 3
BDを大きくとることにより、最小数を底上げする効果があり、 F関数の線形変換に
3
適用する行列の候補数が増え、かつゼロでない入出力差分をもつ差分アクティブ s
— boxの数を十分に大きく確保できるというメリットがある。すなわち、共通鍵ブロック 暗号における攻撃に対する強度指標のひとつである暗号化関数全体でのアクティブ Sボックスの最小数を大きくすることが可能となり、差分攻撃に対して耐性が向上し、 より安全性の高レ、暗号処理が実現される。
[0249] (4b. 2)構成例 2における線形攻撃に対する耐性の向上
次に、前述した条件(2)、すなわち、 BL力 ¾以上になるような行列 Mを選択するこ
2 i
とにより、線形攻撃に対して耐性が向上する理由について説明する。
[0250] BLは以下のように定義される。
2
BL =min{B (tM_ 1 | Μ— 1 ) | l≤i≤r— 2}
2 i i + 2
とする。ただし、 は行列の転置を表すものとする。
[0251] 次に、 kラウンド目に存在するゼロでない入出力線形マスクをもつ S_box (線形ァク ティブ S— box)の個数を Lで表すものとする。この時、以下のことが成立する。
k
[0252] ゼロでない入力線形マスクを SPN型の F関数を持つ Feistel喑号に与えたとき、 条件 1) L +L +L ≥BL
i i+ 1 i + 2 2
が常に成立する。
[0253] 3の倍数 3R (R≥1)は 3の組に分解することができる。この性質により、 3R段の線形 アクティブ S— boxの最小数は、 R X BLで保証することができる。従って BLを大きく
2 2 とることにより、最小数を底上げする効果がある。
[0254] 前述した [3.耐性を向上させた暗号処理アルゴリズム構成例]において説明した適 用可能な行列の制約条件において、線形攻撃に対する耐性向上を図るための各 F 関数に設定する線形変換行列の条件としては、
(B1)各 F関数の線形変換行列は正方 MDSであること、
(B2)暗号化関数内の奇数ラウンド内に連続して含まれる線形変換行歹 1J、および偶 数ラウンド内に連続して含まれる線形変換行列の逆行列の任意の m個の列べクトノレ が正方 MDS行列となること、
これらの条件を満足させることが必要であった。
この条件は、前述の定義データ BL、すなわち、
2
BL ^miniB M"1 | 'Μ"1 ) | l≤i≤r- 2}
2 i i + 2
を用いて表すと、
BL =m+ l
2
となる条件に相当するものである。
[0255] し力、し、ここで説明したアルゴリズムにおいては、
BL力 S3以上になるような行列 Mを選択する
2 i
とレ、う条件を設定しているのみであり、 3R段の線形アクティブ S— boxの最小数は、 R X BLで保証することができる。従って BLを大きくとることにより、線形アクティブ S
2 2
— boxの最小数を底上げする効果がある。すなわち、共通鍵ブロック暗号における攻 撃に対する強度指標のひとつである暗号化関数全体でのアクティブ Sボックスの最小 数を大きくすることが可能となり、線形攻撃に対して耐性が向上し、より安全性の高い 暗号処理が実現される。
[0256] なお、上述した条件、すなわち、
(1) BD, BD , BD力 ¾以上になるような行列 Mを選択する
1 2 3 i
(2) BL力 S3以上になるような行列 Mを選択する
2 i
これらの 2つの条件は、独立に定義される条件であり、 (1)の条件を満足させること で差分攻撃に対する耐性を向上し、 (2)の条件を満足させることで、線形攻撃に対す る耐性が向上する。
[0257] これら、「差分攻撃に対する耐性を確保する条件(1)」と「線形攻撃に対する耐性を 確保する条件(2)」はそれぞれ独立に定義される条件である。通常は、両方を同じレ ベルの強度になるような行列を選択する方針が考えられるが、暗号が利用される状 況に応じては差分攻撃のみに対しては耐性を高めるが線形攻撃に対してはとくに条 件を与えない設計や、その逆の設計を行って運用することも可能である。
[0258] 最後に、暗号処理を実行する暗号処理装置としての ICモジュール 600の構成例を 図 18に示す。上述の処理は、例えば PC、 ICカード、リーダライタ、その他、様々な情 報処理装置において実行可能であり、図 18に示す ICモジュール 600は、これら様々 な機器に構成することが可能である。
[0259] 図 18に示す CPU(Central processing Unit)601は、喑号処理の開始や、終了、デ ータの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実 行するプロセッサである。メモリ 602は、 CPU601が実行するプログラム、あるいは演 算パラメータとしての固定データを格納する ROM (Read-Only- Memory)、 CPU601 の処理において実行されるプログラム、およびプログラム処理において適宜変化する パラメータの格納エリア、ワーク領域として使用される RAM (Random Access Memory )等からなる。また、メモリ 602は暗号処理に必要な鍵データ等の格納領域として使
用可能である。データ等の格納領域は、耐タンパ構造を持つメモリとして構成される ことが好ましい。
[0260] 暗号処理部 603は、例えば上述した Feistel型共通鍵ブロック暗号処理アルゴリズ ムに従った暗号処理、復号処理等を実行する。なお、ここでは、暗号処理手段を個 別モジュールとした例を示した力 このような独立した喑号処理モジュールを設けず、 例えば喑号処理プログラムを ROMに格納し、 CPU601が ROM格納プログラムを読 み出して実行するように構成してもよレ、。
[0261] 乱数発生器 604は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数 の発生処理を実行する。
[0262] 送受信部 605は、外部とのデータ通信を実行するデータ通信処理部であり、例え ばリーダライタ等、 ICモジュールとのデータ通信を実行し、 ICモジュール内で生成し た暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行 する。
[0263] 以上、特定の実施例を参照しながら、本発明につレ、て詳解してきた。しかしながら、 本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ること は自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的 に解釈されるべきではなレ、。本発明の要旨を判断するためには、特許請求の範囲の 欄を参酌すべきである。
[0264] 更に、本発明の実施例では、 2種類または 3種類の行列式を用いて説明を行って いる力 それに限定されるものではなぐ複数種類の行列式を用いて、実施例の制約 条件を満足させることができるならば、差分攻撃及び線形攻撃に対する耐性を向上 させることは可能である。
[0265] なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、 あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理 を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに 組み込まれたコンピュータ内のメモリにインストールして実行させる力、、あるいは、各 種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させること が可能である。
[0266] 例えば、プログラムは記録媒体としてのハードディスクや ROM (Read Only Memory )に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、 CD — ROM(Compact Disc Read Only Memory), MO(Magneto optical)ディスク, DVD( Digital Versatile Disc),磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、 一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記 録媒体は、レ、わゆるパッケージソフトウェアとして提供することができる。
[0267] なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインス トールする他、ダウンロードサイトから、コンピュータに無線転送したり、 LAN(Local A rea Network),インターネットといったネットワークを介して、コンピュータに有線で転 送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵する ハードディスク等の記録媒体にインストールすることができる。
[0268] なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみ ならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個 別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的 集合構成であり、各構成の装置が同一筐体内にあるものには限らない。 産業上の利用可能性
[0269] 上述したように、本発明の構成によれば、非線形変換部および線形変換部を有す る SPN型の F関数を、複数ラウンド繰り返し実行する Feistel型共通鍵ブロック喑号処 理において、複数ラウンド各々に対応する F関数の線形変換処理を、比較的緩やか な制限によって特定される行列を適用して実行する構成により、共通鍵ブロック暗号 における差分攻撃や線形攻撃に対する耐性が向上する。また、制限が比較的緩や かであり、利用できる行列の候補が増加するとともに、アクティブ S— box数を十分大 きく確保することが可能となる。すなわち、共通鍵ブロック暗号における攻撃に対する 強度指標のひとつである暗号化関数全体でのアクティブ Sボックスの最小数を大きく することが可能となり、線形攻撃や、差分攻撃に対して耐性が向上し、より安全性の 高レ、暗号処理が実現される。