ZUC-256 流密码算法 169
图 2 ZUC-256 流密码的初始化阶段
Figure 2 Initialization of ZUC-256 stream cipher
ZUC-256 流密码的密钥/初始向量装载过程如下.
s
0
= K
0
∥ d
0
∥ K
21
∥ K
16
s
8
= K
8
∥ (d
8
| IV
20
) ∥ IV
3
∥ IV
11
s
1
= K
1
∥ d
1
∥ K
22
∥ K
17
s
9
= K
9
∥ (d
9
| IV
21
) ∥ IV
12
∥ IV
4
s
2
= K
2
∥ d
2
∥ K
23
∥ K
18
s
10
= IV
5
∥ (d
10
| IV
22
) ∥ K
10
∥ K
28
s
3
= K
3
∥ d
3
∥ K
24
∥ K
19
s
11
= K
11
∥ (d
11
| IV
23
) ∥ IV
6
∥ IV
13
s
4
= K
4
∥ d
4
∥ K
25
∥ K
20
s
12
= K
12
∥ (d
12
| IV
24
) ∥ IV
7
∥ IV
14
s
5
= IV
0
∥ (d
5
| IV
17
) ∥ K
5
∥ K
26
s
13
= K
13
∥ d
13
∥ IV
15
∥ IV
8
s
6
= IV
1
∥ (d
6
| IV
18
) ∥ K
6
∥ K
27
s
14
= K
14
∥ (d
14
| (K
31
)
4
H
) ∥ IV
16
∥ IV
9
s
7
= IV
10
∥ (d
7
| IV
19
) ∥ K
7
∥ IV
2
s
15
= K
15
∥ (d
15
| (K
31
)
4
L
) ∥ K
30
∥ K
29
其中 (K
31
)
4
H
是字节 K
31
的高 4 位, (K
31
)
4
L
是 K
31
的低 4 位, 所使用的填充常数 d
i
(0 6 i 6 15) 如下.
d
0
= 0100010 d
4
= 1101101 d
8
= 1000000 d
12
= 1000000
d
1
= 0101111 d
5
= 1000000 d
9
= 1000000 d
13
= 1010010
d
2
= 0100100 d
6
= 1000000 d
10
= 1000000 d
14
= 0010000
d
3
= 0101010 d
7
= 1000000 d
11
= 1000000 d
15
= 0110000
ZUC-256 流密码的初始化阶段共有 32 + 1 = 33 轮, 其具体描述如下.
1. 按如上所述将密钥、初始向量及常数装载到 LFSR 各单元
2. 初始化记忆单元为 R
1
= R
2
= 0
3. for i = 0 to 31 do
Bitreorganization( )
W = F (X
0
, X
1
, X
2
)
LFSRWithInitializationMode(W ≫ 1)
4. Bitreorganization( )