暗号技術仕様書 CIPHERUNICORN-A
暗号技術仕様書
CIPHERUNICORN-A
日本電気株式会社
1 概要................................
概要................................................................
................................................................................................
................................................................................................
......................................................................
...................................... 1
1.1 目的 .....................................................................................................................................1
1.2 記号の定義 ..........................................................................................................................1
1.3 ビット/バイト/ワードの順序..........................................................................................1
2 設計方針、基準 ................................................................
................................................................................................
....................................................................................
.................................................... 2
2.1 データ撹拌部.......................................................................................................................2
2.1.1 Feistel 構造...................................................................................................................2
2.1.2 初期/終期処理...............................................................................................................2
2.2 ラウンド関数.......................................................................................................................3
2.2.1 二重構造 .......................................................................................................................3
2.2.2 本流 ..............................................................................................................................3
2.2.3 一時鍵生成部................................................................................................................3
2.2.4 演算子...........................................................................................................................4
2.2.5 演算単位 .......................................................................................................................4
2.3 換字テーブル.......................................................................................................................4
2.4 鍵スケジューラ ...................................................................................................................5
3 暗号アルゴリズム................................
暗号アルゴリズム ................................................................
................................................................................................
.................................................................................
................................................. 6
3.1 全体 .....................................................................................................................................6
3.2 データ撹拌部.......................................................................................................................7
3.2.1 暗号化...........................................................................................................................7
3.2.2 復号 ..............................................................................................................................9
3.3 F 関数................................................................................................................................. 11
3.4 A3 関数...............................................................................................................................13
3.5 定数乗算 ............................................................................................................................13
3.6 Tn 関数 ..............................................................................................................................14
3.7 換字テーブル.....................................................................................................................15
3.8 鍵スケジューラ .................................................................................................................18
3.9 MT 関数 .............................................................................................................................24
参考文献 ................................................................
................................................................................................
................................................................................................
................................................................ 25
1 概要
1.1 目的
本仕様書は、128 ビットブロック暗号 CIPHERUNICORN-A の設計方針、設計基準、暗
号アルゴリズムの仕様を報告することを目的とする。
1.2 記号の定義
本仕様書では、以下の表記を用いる。
P
:平文1ブロック
C
:暗号文1ブロック
IKj
:初期/終期処理で使用する32ビット拡大鍵(j=0,1,...,7)
i
:第i段F関数(i=0,1,...,15)
F
FKai,FKbi :Fiの本流で使用する32ビット拡大鍵(関数鍵)
SKai,SKbi :Fiの一時鍵生成部で使用する32ビット拡大鍵(シード鍵)
EKi
:Fiで使用する4つの拡大鍵FKai,SKai,FKbi,SKbiのまとまり
‖
:データの連結
∧
:論理積
:排他的論理和
:加算(mod 232)
:減算(mod 232)
:乗算(mod 232)
x>>n
:xをnビット右論理シフト
x<<<n
:xをnビット左巡回シフト
1.3 ビット/バイト/ワードの順序
本仕様書では、big endian 表記を用いる。
Q を 128 ビットデータ(quad word)、
D を 64 ビットデータ(double word)、
W を 32 ビットデータ(word)、
B を 8 ビットデータ(byte)、
E を 1 ビットデータ(bit)
とすると、
Q = D0 ‖ D1
= W0 ‖ W1 ‖ W2 ‖ W3
= B0 ‖ B1 ‖ B2 ‖・・・・・・‖ B15
= E0 ‖ E1 ‖ E2 ‖・・・・・・・・・・・・・・・・・・・・・・・・‖ E127
1
2 設計方針、基準
どのような構造を持つブロック暗号に対しても有効である代表的な解読法として、線形解
読法と差分解読法がある。これらの解読法は、データ撹拌関数の撹拌の偏りを利用して鍵の
情報を推定する。撹拌の偏りは、撹拌処理の最も基本となる処理での撹拌の偏りから生じる
ことが多い。従って、基本となる処理において撹拌の偏りが検出できない構造にすることが
望ましい。
我々は、基本となる処理であるラウンド関数において、撹拌の偏りが現れないように設計
することとした。撹拌の偏りは、入力と出力の関係を統計的に調べることで調査することに
した。
また、設計過程のアルゴリズムを統一的に評価できるように、暗号アルゴリズムをブラッ
クボックスとみなして入力と出力の関係を調べられる共通な評価尺度を設定した。偏りがな
く十分撹拌できた状態を以下のように定め、我々が採用した統計的手法を用いて確認するこ
ととした。
•
高い確率で成立する入力ビットと出力ビットの関係が存在しない
•
高い確率で成立する出力ビット間の関係が存在しない
•
高い確率で成立する入力ビットの変化と出力ビットの変化の関係が存在しない
•
高い確率で成立する拡大鍵ビットの変化と出力ビットの変化の関係が存在しない
•
高い確率で 0 あるいは 1 となる出力ビットが存在しない
暗号の入出力仕様は AES(Advanced Encryption Standard)と同じブロックサイズ 128 ビ
ット、秘密鍵長は 128 ビット、192 ビット、256 ビットの 3 種類を使用可能とする。本暗号
は、32 ビットプロセッサ上でより高速に実装できるようにする。
2.1 データ撹拌部
2.1.1 Feistel構造
Feistel構造
暗号の基本構造は以下の利点から Feistel 構造を採用する。
•
暗号化と復号が同じ構造
•
暗号化と復号がほぼ同じ速度
•
ラウンド関数の構造に制約がない
•
解析実績が多い
2.1.2 初期/
初期/終期処理
1 段目ラウンド関数への入力、最終段ラウンド関数への入力が既知となり攻撃しやすくな
ることを防ぐために初期/終期処理を付加する。
2
2.2 ラウンド関数
2.2.1 二重構造
ラウンド関数は二重構造を採用し、一方が解読されてももう一方で安全性を保証できる構
造にする。
ラウンド関数は本流と一時鍵生成部より構成する。各々に拡大鍵を入力する(関数鍵とシー
ド鍵)。一時鍵生成部により一時鍵を作成し、本流に合流する。
seed key
temporary key
generation
mechanism
temporary
key
main stream
function key
図 2.1 二重構造のラウンド関数
2.2.2 本流
本流は以下の構造とする。
•
一時鍵が固定ならば全単射
•
本流のみでも十分な撹拌を行う
2.2.3 一時鍵生成部
一時鍵生成部は以下の構造とする。
•
一時鍵がとりうる全値域において均等に出力する
•
本流より軽い構造(並列処理が可能な場合を考慮)
•
本流とは異なる構造(構造の違いによる安全性の保証)
•
一時鍵のサイズはシード鍵サイズよりも小さくする
•
一時鍵生成部のみでも十分な撹拌を行う
攻撃者は一時鍵生成部が本流より軽い構造のため一時鍵生成部を最初に攻撃すると考え、
仮に一時鍵が既知となってもシード鍵の候補が複数存在し、シード鍵から秘密鍵、シード鍵
から関数鍵を推定することが困難になることを期待する。
3
2.2.4 演算子
基本的に 32 ビットプロセッサでの実装を考え、32 ビットプロセッサ上で高速に処理でき
る演算子を採用する。また、代数的構造が異なる演算を組み合わせることにより暗号の強度
向上が見込めるため、代数的構造の異なる演算を組み合わせて使用する。
2.2.5 演算単位
Truncated differential attack への対策として、演算単位は 8 ビット、32 ビット、64 ビ
ットの 3 種類を使用する。
2.3 換字テーブル
換字テーブルは、8 ビット入出力のテーブル 4 種を組み合わせ使用する。8 ビット入出力
テーブルの条件は、以下の通りとする。
•
全単射
•
最大差分確率が 2-6
•
最大線形確率が 2-6
•
代数次数が 7 次
•
入出力多項式の次数大、かつ項数が多い
•
平均拡散ビット数(入力 1 ビットの変化による出力変化ビット数)が 4.0
•
不動点がない
上記条件を満たす換字テーブルの生成法として、GF(28)上の逆数関数とアフィン変換の組
み合わせを採用する。
GF(28)上の逆数関数は、最大差分・線形確率が 2-6(最良)であることが知られており、代数
次数は 7 次の全単射関数である。また、入出力多項式の次数は 254 次と大きい。アフィン変
換を取り入れることにより、入出力多項式の項数の増加が期待できる。
また、8 ビット入出力テーブル 4 種を組み合わせ使用するため、既約多項式はそれぞれ異
なるものを採用することにする。
換字テーブルの生成式を以下に示す。
S(x) = matrixA{ (x + c)-1 mod g} + d
ここで、
matrixA:GF(2)の 8×8 の全単射行列
c,d
:8 ビットの定数(0 以外)
g
:8 次の既約多項式
matrixA, c, d, g を乱数で選択し、上記条件を満たす換字テーブルを検索することにする。
4
2.4 鍵スケジューラ
鍵スケジューラは以下の構造とする。
•
秘密鍵から拡大鍵への写像が単射である
•
どの拡大鍵にも秘密鍵の全情報が影響している
•
秘密鍵と拡大鍵、拡大鍵同士に高い確率で成立する関係がない(鍵関連攻撃への安全性)
•
ラウンド関数の構成要素を利用する
5
3 暗号アルゴリズム
3.1 全体
本暗号 CIPHERUNICORN-A は、データブロック長 128 ビット、秘密鍵長 128 ビット、
192 ビット、256 ビットのいずれかを利用できる Feistel 構造の暗号である。
ラウンド数は 16 段、初期/終期処理では、拡大鍵の加算/減算を行う。
鍵スケジューラは、秘密鍵を入力とする変形 Feistel 構造である。ダミーループで秘密鍵
を撹拌後、撹拌しながら拡大鍵の取り出しを繰り返す。
P
128-bit
Secret key
128-bit
Data
Randomizer
Extended key
(16 rounds)
(32-bit×72)
Key
Scheduler
2304-bit
192-bit
256-bit
128-bit
C
図 3.1 CIPHERUNICORN-A 全体構造
6
3.2 データ撹拌部
3.2.1 暗号化
[入力
入力]
入力 平文1ブロック P=P0‖P1‖P2‖P3 (128ビット)
F関数用拡大鍵 EKi=FKai‖SKai‖FKbi‖SKbi (128ビット: i=0,1,...,15)
初期/終期処理用拡大鍵 IKj (32ビット: j=0,1,...,7)
[出力
出力]
出力 暗号文1ブロック C=C0‖C1‖C2‖C3 (128ビット)
[処理
処理]
処理 平文1ブロックを入力し、初期処理として拡大鍵加算(mod 232)後、16段
Feistel構造により撹拌した後、終期処理として拡大鍵減算(mod 232)を行い、暗
号文1ブロックを出力する。
for i=0,…,3 do
{
W0i = Pi
IKi
}
for i=0,…,14 do
{
Wi+10‖Wi+11 = Wi2‖Wi3
Wi+12‖Wi+13 = (Wi0‖Wi1)
Fi(Wi2‖Wi3, EKi)
}
W162‖W163 = W152‖W153
W160‖W161 = (W150‖W151)
F15(W152‖W153, EK15)
for i=0,…,3 do
{
Ci = W16i
IKi+4
}
7
P
IK0
IK1 IK2
EK0
IK3
F0
…
16 rounds
EK15
F15
IK4
IK5
IK6
IK7
C
図 3.2 データ撹拌部(暗号化)
8
3.2.2 復号
[入力
入力]
入力 暗号文1ブロック C=C0‖C1‖C2‖C3 (128ビット)
F関数用拡大鍵 EKi=FKai‖SKai‖FKbi‖SKbi (128ビット: i=0,1,...,15)
初期/終期処理用拡大鍵 IKj (32ビット: j=0,1,...,7)
[出力
出力]
出力 平文1ブロック P=P0‖P1‖P2‖P3 (128ビット)
[処理
処理]
処理 暗号文1ブロックを入力し、初期処理として拡大鍵加算(mod 232)後、16段
Feistel構造により撹拌した後、終期処理として拡大鍵減算(mod 232)を行い、平
文1ブロックを出力する。
for i=0,…,3 do
{
W0i = Ci
IKi+4
}
for i=0,…,14 do
{
Wi+10‖Wi+11 = Wi2‖Wi3
Wi+12‖Wi+13 = (Wi0‖Wi1)
F15-i(Wi2‖Wi3, EK15-i)
}
W162‖W163 = W152‖W153
W160‖W161 = (W150‖W151)
F0(W152‖W153, EK0)
for i=0,…,3 do
{
Pi = W16i
IKi
}
9
C
IK4
IK5 IK6
EK15
IK7
F15
…
16 rounds
EK0
F0
IK0
IK1
IK2
IK3
P
図 3.3 データ撹拌部(復号)
10
3.3 F関数
[入力
入力]
入力 入力データ X=Xl‖Xr (64ビット)
Fi関数用拡大鍵 EKi=FKai‖SKai‖FKbi‖SKbi (128ビット)
[定数
定数]
定数 乗算定数 Const0=0x7e167289, Const1=0xfe21464b
[出力
出力]
出力 出力データ Y=Yl‖Yr (64ビット)
[処理
処理]
処理 F関数は、本流と一時鍵生成部から構成される。
本流では入力データ64ビットと拡大鍵FKai, FKbiを加算し、A3関数、定数乗
算、Tn関数を実行する。一時鍵生成部では、拡大鍵SKai, SKbiと入力データ
64ビットを加算し、定数乗算、Tn関数を通過後、一時鍵を取り出す。一時鍵
を本流のデータ撹拌に使用し、出力データ64ビットを生成する。
WK00 = SKai
Xr
WK01
Xl
=
SKbi
WK10 = WK00
Const0
WK11
T0(WK10)
=
WK01
WK21 = WK11
Const1
WK20
T0(WK21)
=
WK10
WK30 = WK20
Const1
WK31
T0(WK30)
=
WK21
WK41 = WK31
Const0
WK40
WK30
T0(WK41)
WK51 = WK41
T1(WK40)
WK50 = WK40
T1(WK51)
=
WX00 = FKai
Xl
WX01
Xr
=
FKbi
WX10‖WX11 = A3(WX00‖WX01)
WX20 = WX10
Const0
WX21 = WX11
T0(WX20)
WX31 = WX21
Const1
WX30 = WX20
T0(WX31)
WX41 = WX31
T1(WX30)
WX40 = WX30
T1(WX41)
WX51 = WX41
T2(WX40)
WX50 = WX40
T2(WX51)
WX61 = WX51
T3(WX50)
11
WX60 = WX50
T3(WX61)
k = (WK51 >> 2) ∧ 0x3
WX71 = WX61
Tk(WX60)
k = WK51 ∧ 0x3
WX70 = WX60
Tk(WX71)
Yl = WX70
WK50
Yr = WX71
WK50
0xfe21464b
0x7e167289
SKa
temporary key
generation
mechanism
T1
T1
T0
T0
T0
T0
SKb
>>2
∧
∧
0x3
0x7e167289
0x3
0xfe21464b
0x7e167289 FKa
Xl
Yl
main
stream
Tk
Tk
T3
T3
T2
T2 T1
T1 T0
T0
Yr
A3
0
23
41
FKb
Xr
0xfe21464b
図 3.4 F 関数
12
3.4 A3関数
A3関数
[入力
入力]
入力 入力データ X (64ビット)
[定数
定数]
定数 3種類の定数 const0=0, const1=23, const2=41
定数の決定基準
・ 一つは0(性能考慮)
・ 入力1ビットを求める逆演算に必要な出力ビットが最大(43)になる
・ 出力を32ビットづつに分けたときのそれぞれ下位3バイトに入力64ビッ
トがすべて出現する(以降の処理との関連)
上記基準を満たす定数を総当りで検索した結果、6組存在した。それらの組の
なかで唯一両方が素数のものが存在したのでそれに決定した。
[出力
出力]
出力 出力データ Y (64ビット)
[処理
処理]
処理 入力データを指定した左巡回シフト数だけシフトした後、3つのデータの排他
的論理和を求め、出力する。
Y = (X<<< const0)
(X<<< const1)
(X<<< const2)
3.5 定数乗算
[入力
入力]
入力 入力データ X (32ビット)
[定数
定数]
定数 乗算定数 Const0=0x7e167289, Const1=0xfe21464b
乗算定数の決定基準
・ 奇数(全単射性の保持)
・ ハミングウェイトが16(定数ビット数の1/2)
・ T0関数入力上位8ビットに入力データXの全ビットが影響する
・ 乗算を「シフト+排他的論理和」に置き換え3ビット以下の差分を与えた
とき、T0関数の入力(上位8ビット)差分が0または0xffにならない
上記基準を満たす定数を検索した結果、4種類の定数が存在した。それらの定
数を使い実際に乗算し、入力差分と出力差分の間に高確率で成立する関係が
少ない上記2種類に決定した。
[出力
出力]
出力 出力データ Y (32ビット)
[処理
処理]
処理 乗算定数と入力データを乗算し、結果を出力する。
Y = X
Constn
n=0,1
13
3.6 Tn関数
Tn関数
[入力
入力]
入力 入力データ X=X0‖X1‖X2‖X3 (32ビット)
入力番号 n (n=0,1,2,3)
[出力
出力]
出力 出力データ Y (32ビット)
[処理
処理]
処理 入力データを1バイトごとに区切り、入力番号に対応する1バイトを換字テーブ
ルの入力値とする。換字テーブルは8ビット入力8ビット出力の4種類、上位か
らS0,S1,S2,S3とする。
Tk関数の場合、kは0,1,2,3のいずれかが入力として与えられる。
Y = S0(Xn)‖S1(Xn)‖S2(Xn)‖S3(Xn)
X = X0‖X1‖X2‖X3
Y = Y0‖Y1‖Y2‖Y3
Y0
S0
Xn
Y1
S1
Xn
Y2
S2
Xn
Y3
S3
Xn
図 3.5 Tn 関数
14
3.7 換字テーブル
[入力
入力]
入力 入力データ X (8ビット)
[出力
出力]
出力 出力データ Y (8ビット)
[処理
処理]
処理 換字テーブルSnの入力データ位置のデータを出力する。
Y = Sn(X)
n=0,1,2,3
4種の換字テーブルの生成式は以下の通りである。
Sn (x) = matrixA{ (x + c)-1 mod g} + d
表 3.1 換字テーブルのパラメータ
Sn
matrixA
c
g
d
S0
{0x23, 0x4e, 0x9c, 0xb1, 0x49, 0xd8, 0xc6, 0xe4}
233
0x11d
28
S1
{0x7e, 0x2a, 0xef, 0x52, 0x34, 0xa2, 0x70, 0xd7}
26
0x165
171
S2
{0x32, 0x04, 0x8f, 0x83, 0x89, 0x67, 0xcf, 0x3b}
43
0x14d
155
S3
{0x34, 0x20, 0xba, 0xd0, 0x66, 0xd7, 0xb2, 0xa8}
200
0x171
47
ここで、
S0 の matrixA={0x23, 0x4e, 0x9c, 0xb1, 0x49, 0xd8, 0xc6, 0xe4}は以下の GF(2)
の 8×8 行列を示す。
matrixA =
0
0
1
1
0
1
1
1
0
1
0
0
1
1
1
1
1
0
0
1
0
0
0
1
0
0
1
1
0
1
0
0
0
1
1
0
1
1
0
0
0
1
1
0
0
0
1
1
1
1
0
0
0
0
1
0
1
0
0
1
1
0
0
0
また、S0 の既約多項式 g=0x11d=100011101(2)は以下の多項式であることを示す。
g = x8 + x4 + x3 + x2 + 1
15
表 3.2 換字テーブル S0
S0(0)=149, S0(1)=111,…………, S0(255)=92
149 111 237 155 21 85 108 76 236 75 193
51 145 13 153 148 163 86 59 204 175 91
248 146 201 0 97 208 23 214 147 234 66
172 40 154 87 178 235 135 220 110 121 96
143 169 182 139 112 16 183 67 233 39 197
161 159 192 37 177 228 47 119 14 18 244
33 167 26 180 54 61 58 222 4 30 191
95 42 124 25 232 181 120 93 5 68 6
188 165 212 160 250 141 123 216 94 238 81
207 102 184 189 243 72 206 12 200 225 164
71 185 229 187 251 137 69 168 50 24 171
252 114 152 82 209 38 203 128 215 213 36
80 246 253 125 29 44 15 227 98 205 255
79 103 78 49 19 140 109 211 223 63 64
136 45 115 199 20 46 190 240 132 28 162
157 31 43 156 113 186 35 101 52 60 11
84
117
65
8
74
56
34
48
202
176
173
174
77
151
230
100
22
126
226
9
166
3
107
129
7
247
158
134
198
62
131
116
138
70
57
53
218
195
249
41
122
1
221
179
194
217
106
245
89
144
210
241
231
239
142
104
196
2
127
90
133
170
32
99
55
10
224
105
242
219
150
73
17
254
27
118
130
83
88
92
58
138
4
68
5
159
128
18
112
131
19
80
114
119
147
34
224
74
117
160
9
100
194
150
99
181
60
167
234
200
229
222
238
192
226
184
140
188
177
165
35
154
123
90
41
146
91
37
129
66
28
213
38
16
122
121
101
180
10
32
21
187
107
196
56
104
155
172
191
227
20
98
69
230
31
30
81
210
214
53
表 3.3 換字テーブル S1
S1(0)=174, S1(1)=255,…………, S1(255)=53
174 255 161 109 254 40 95 67 33 124 133
137 57 169 87 221 220 163 84 14 239 171
8 250 43 115 126 88 212 103 62 82 143
65 156 139 183 235 125 217 116 111 237 157
170 132 73 2 1 232 92 249 136 106 175
50 251 85 12 27 48 46 52 145 78 168
26 198 244 205 178 72 142 162 51 246 241
144 49 83 166 247 225 11 7 102 242 185
93 197 70 151 75 118 202 216 108 207 15
86 61 79 110 13 218 149 6 134 29 36
77 193 164 17 211 3 209 105 94 206 44
130 195 76 208 54 252 219 203 199 39 189
233 64 245 182 120 231 127 47 22 135 55
173 223 23 253 153 25 45 248 97 179 186
0 228 24 190 141 236 63 201 96 113 240
89 59 152 215 176 204 243 148 42 158 71
16
表 3.4 換字テーブル S2
S2(0)=37, S2(1)=34,…………, S2(255)=124
37 34 162 132 134 220 91 143 41 45 229
212 97 70 15 58 72 216 208 14 96 214
120 123 83 100 235 3 230 160 193 245 164
227 219 23 95 111 11 87 104 163 203 189
157 53 196 89 81 4 84 16 192 74 13
90 119 93 207 38 131 94 60 116 1 213
75 46 8 172 170 152 231 210 66 54 10
243 115 137 147 159 233 59 221 253 112 165
43 201 121 180 86 205 225 242 182 55 63
136 65 114 31 40 49 0 36 169 22 249
158 151 24 50 176 108 67 127 150 18 2
99 25 80 224 33 200 197 118 161 61 142
238 206 42 125 239 237 52 223 88 167 26
215 27 126 6 251 51 241 129 135 246 244
226 110 78 186 240 141 166 69 107 85 103
113 140 138 39 185 228 106 47 252 199 188
247
217
155
29
181
122
187
198
232
35
168
77
130
146
149
92
98
133
255
156
20
5
128
105
254
62
194
190
76
32
250
218
178
179
175
173
184
101
204
222
44
17
171
209
191
177
109
30
68
28
79
211
57
144
12
234
9
174
195
48
7
73
202
236
56
154
148
64
183
117
102
153
21
248
145
139
71
82
19
124
21
99
13
132
18
115
160
196
172
179
164
70
178
175
177
9
129
133
152
83
125
212
131
146
245
88
106
29
40
46
200
130
58
140
86
49
11
142
73
188
7
197
101
168
41
169
31
118
105
66
135
23
137
154
65
119
218
6
203
27
249
240
170
138
113
64
123
32
253
93
57
128
159
0
236
72
186
153
120
34
表 3.5 換字テーブル S3
S3(0)=24, S3(1)=252,…………, S3(255)=34
24 252 144 121 17 42 77 127 2 35 173
112 229 185 189 76 204 209 87 5 96 82
192 107 194 220 16 68 183 171 219 51 92
98 174 103 156 157 59 145 155 158 8 231
85 69 251 36 233 238 222 149 37 248 26
79 52 56 95 241 187 44 167 124 102 227
247 211 33 28 67 10 147 225 215 210 246
1 182 180 199 207 126 216 224 61 81 202
50 30 91 161 89 12 195 74 235 223 226
242 217 208 38 163 45 39 4 62 136 104
141 190 243 214 109 162 60 165 198 228 221
143 48 110 80 176 78 234 181 97 84 20
71 90 255 19 254 114 25 230 47 43 100
150 205 184 201 139 75 54 22 63 244 108
151 116 122 232 166 117 14 94 111 206 237
213 53 148 15 55 239 3 191 134 250 193
17
3.8 鍵スケジューラ
[入力
入力]
入力 秘密鍵 M=M0‖M1‖…….‖MLINE-1 (LINE=4(128ビット),
LINE=6(192ビット),
LINE=8(256ビット))
i
[出力
出力]
出力 F関数用拡大鍵:EK (i=0,1,...,15) (128ビット×16段)
初期/終期処理用拡大鍵:IKj (j=0,1,...,7) (32ビット×8)
[処理
処理]
処理 鍵スケジューラは複数のMT関数により構成される。
基本構造は、秘密鍵長により段数が変化する3回のダミーループ後、MT関数
16段を9回繰り返す。1回の処理により、32ビット拡大鍵を8個生成する。ダミ
ーループのMT関数段数は、秘密鍵128ビット、192ビット、256ビットのとき、
それぞれ4段、6段、8段である。互換性はない。
生成した拡大鍵は図 3.12のように使用する。
cnt = 0
n = 16+2;
Wi=Mi (i = 0,…,LINE-1)
for i = 0,..,2 do
{
for j = 0,..,LINE-1 do
{
Wj‖W(j+1)%LINE =
MT(Wj‖W(j+1)%LINE)
}
}
for i = 0,..,(16+2)/2-1 do
{
for j = i*16 ,.., i*16+8-1 do
{
Wj%LINE‖W(j+1)%LINE = MT(Wj%LINE‖W(j+1)%LINE)
}
for j = i*16+8 ,.., i*16+16-1 do
{
Wj%LINE‖W(j+1)%LINE = MT(Wj%LINE‖W(j+1)%LINE)
WK[cnt++] = W(j+1)%LINE
}
}
18
IK0 = WK[0 ];
IK1 = WK[n ];
IK2 = WK[n*2];
IK3 = WK[n*3];
IK4 = WK[n -1];
IK5 = WK[n*2-1];
IK6 = WK[n*3-1];
IK7 = WK[n*4-1];
for i = 0,.., 16-1 do
{
FKai = WK[
1+i];
SKai = WK[n +1+i];
FKbi = WK[n*2+1+i];
SKbi = WK[n*3+1+i];
}
19
M(128-bit) = M0 || M1 || M2 || M3 (Mn:32-bit)
M0
M1
M2
M3
MT
MT
3 times
MT
MT
図 3.6 鍵スケジューラ ダミーループ(秘密鍵 128 ビット)
M(192-bit) = M0 || M1 || M2 || M3 || M4 || M5 (Mn:32-bit)
M0
M1
M2
M3
M4
M5
MT
MT
MT
3 times
MT
MT
MT
図 3.7 鍵スケジューラ ダミーループ(秘密鍵 192 ビット)
20
M(256-bit) = M0 || M1 || M2 || M3 || M4 || M5 || M6 || M7 (Mn:32-bit)
M0
M1
M2
M3
M4
M5
M6
M7
MT
MT
MT
MT
3 times
MT
MT
MT
MT
図 3.8 鍵スケジューラ ダミーループ(秘密鍵 256 ビット)
MT0
MT7
MT8
9 times
(i=0,1,…,8)
key8*i
MT9
key8*i +1
MT15
key8*i +7
図 3.9 鍵スケジューラ 拡大鍵取り出し(秘密鍵 128 ビット)
21
MT0
MT7
MT8
9 times
(i=0,1,…,8)
key8*i
MT9
key8*i +1
MT15
key8*i +7
図 3.10 鍵スケジューラ 拡大鍵取り出し(秘密鍵 192 ビット)
MT0
MT7
MT8
9 times
(i=0,1,…,8)
key8*i
MT9
key8*i +1
MT15
key8*i +7
図 3.11 鍵スケジューラ 拡大鍵取り出し(秘密鍵 256 ビット)
22
key0
key18
key36
key54
IK0
IK1
IK2
IK3
key1
key19
key37
key55
FKa0
SKa0
FKb0
SKb0
EK0
key2
key20
key38
key56
FKa1
SKa1
FKb1
SKb1
EK1
key15
key33
key51
key69
FKa14
SKa14
FKb14
SKb14
EK14
key16
key34
key52
key70
FKa15
SKa15
FKb15
SKb15
EK15
key17
key35
key53
key71
IK4
IK5
IK6
IK7
図 3.12 拡大鍵の対応
23
3.9 MT関数
MT関数
[入力
入力]
入力 入力データ X=X0‖X1 (64ビット)
[定数
定数]
定数 乗算定数 Const=0x01010101
乗算定数の決定基準
・ 奇数(全単射性の保持)
・ 入力32ビットデータを乗算出力の上位8ビット(T0関数の入力)に集める
・ 上記2条件を満たすものでハミングウェイトが最小
上記基準を満たす定数として上記定数に決定した。
[出力
出力]
出力 出力データ Y=Y0‖Y1 (64ビット)
[処理
処理]
処理 入力データの上位32ビットと定数Constとの乗算後、T0関数の入力とする。T0
関数の出力を入力データの下位32ビットと排他的論理和し、出力とする。
Y0 = X0
Const
Y1 = X1
T0(Y0)
X=X0‖X1
Y=Y0‖Y1
X0
X1
0x01010101
T0
Y0
Y1
図 3.13 MT 関数
24
参考文献
[1]
M. Matsui, “Linear Cryptanalysis Method for DES Cipher,” EUROCRYPT’93, LNCS765,
pp.386-397, Springer-Verlag, 1994.
[2]
E. Biham and A. Shamir, “Differential Cryptanalysis of DES-like Cryptosystems (Extended
Abstract),” proceeding of CRYPTO’90, pp.2-21, 1990.
[3]
T. Jakobsen and L.R. Knudsen, “The Interpolation Attack on Block Ciphers,” FSE’97,
LNCS1267, pp.28-40, Springer-Verlag, 1997.
[4]
L.R. Knudsen and T.A. Berson, “Truncated Differentials of SAFER,” FSE’96, LNCS1039,
pp.15-25, Springer-Verlag, 1996.
[5]
E. Biham, “New Types of Cryptanalytic Attacks Using Related Keys,” EUROCRYPT’93,
LNCS765, pp.398-409, Springer-Verlag, 1994.
[6]
E. Biham, “On Matsui’s Linear Cryptanalysis,” EUROCRYPT’94, LNCS950, pp.341-355,
Springer-Verlag, 1994.
25
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement