祖冲之序列密码算法
ZUC stream cipher algorithm
II
目 次
目 次
.....................................................................................................................................................
II
祖冲之序列密码算法
...........................................................................................................................................
3
1 术语和定义
.......................................................................................................................................................
3
2 符号和缩略语
...................................................................................................................................................
3
2.1 运算符
.......................................................................................................................................................
3
2.2 符号
...........................................................................................................................................................
4
2.3 缩略语
.......................................................................................................................................................
4
3 算法描述
...........................................................................................................................................................
4
3.1 算法整体结构
...........................................................................................................................................
4
3.2 线性反馈移位寄存器 LFSR
......................................................................................................................
5
3.3 比特重组 BR
..............................................................................................................................................
6
3.4 非线性函数 F
............................................................................................................................................
6
3.5 密钥装入
...................................................................................................................................................
6
3.6 算法运行
...................................................................................................................................................
7
附 录 A S 盒
..................................................................................................................................................
8
附 录 B 模 2
31
-1 乘法和模 2
31
-1 加法的实现
..........................................................................................
10
附 录 C 算法计算实例
...............................................................................................................................
11
参考文献
.............................................................................................................................................................
15
3
祖冲之序列密码算法
1 术语和定义
下列术语和定义适用于本文件。
1.1
比特 bit
二进制字符0或1称之为比特。
1.2
字节 byte
由8个比特组成的比特串称之为字节。
1.3
字 word
由2个以上(包含2个)比特组成的比特串称之为字。
本文主要使用31比特字和32比特字。
1.4
字表示 word representation
本文字默认采用十进制表示。当字采用其它进制表示时,总是在字的表示之前或之后添加指示符。
例如,前缀0x指示该字采用十六进制表示,后缀下角标2指示该字采用二进制表示。
1.5
高低位顺序 bit ordering
本文规定字的最高位总是位于字表示中的最左边,最低位总是位于字表示中的最右边。
2 符号和缩略语
2.1 运算符
+ 算术加法运算
ab 整数a和b的乘积
= 赋值操作符
mod 整数模运算
⨁ 按比特位逐位异或运算
⊞ 模2
32
加法运算
‖ 字符串或字节串连接符
∙
H
取字的最高16比特
∙
L
取字的最低16比特
<<<
k
32比特字循环左移
k
位
4
>>
k
32比特字右移
k
位
ab 向量a赋值给向量b,即按分量逐分量赋值
2.2 符号
下列符号适用于本文:
s
0
,
s
1
,
s
2
,…,
s
15
线性反馈移位寄存器的 16 个 31 比特寄存器单元变量
X
0
,
X
1
,
X
2
,
X
3
比特重组输出的 4 个 32 比特字
R
1
,
R
2
非线性函数 F 的 2 个 32 比特记忆单元变量
W
非线性函数 F 输出的 32 比特字
W
1
R
1
与
X
1
进行模 2
32
加法运算输出的 32 比特字
W
2
R
2
与
X
2
按比特位逐位异或运算输出的 32 比特字
Z 算法每拍输出的 32 比特密钥字
k
初始种子密钥
iv
初始向量
d
i
15 比特的字符串常量,i=0,1,2,…15
F 非线性函数
L 输出密钥字长度
2.3 缩略语
下列缩略语适用于本文:
ZUC 祖冲之序列密码算法或者祖冲之算法
LFSR 线性反馈移位寄存器
BR 比特重组
3 算法描述
3.1 算法整体结构
祖冲之算法逻辑上分为上中下层,见图1。上层是16级线性反馈移位寄存器(LFSR);中层是比特
重组(BR);下层是非线性函数F。
5
图 1 祖冲之算法结构图
3.2 线性反馈移位寄存器 LFSR
3.2.1 概述
LFSR 包括 16 个 31 比特寄存器单元变量
s
0
,
s
1
, …,
s
15
。
LFSR 的运行模式有 2 种:初始化模式和工作模式。
3.2.2 初始化模式
在初始化模式下,LFSR 接收一个 31 比特字
u
。
u
是由非线性函数
F
的 32 比特输出
W
通过舍弃最低
位比特得到,即
u
=
w
>>1。 在初始化模式下,LFSR 计算过程如下:
LFSRWithInitialisationMode(
u
)
{
(1)
v
= 2
15
s
15
+2
17
s
13
+ 2
21
s
10
+ 2
20
s
4
+ (1 + 2
8
)
s
0
mod (2
31
-1);
(2)
s
16
=(
v
+
u
) mod (2
31
-1);
(3) 如果
s
16
=0,则置
s
16
=2
31
-1;
(4) (
s
1
,
s
2
, …,
s
15
,
s
16
)
(
s
0
,
s
1
, …,
s
14
,
s
15
)。
}
模 2
31
-1 乘法和模 2
31
-1 加法的实现参见附录 B。
3.2.3 工作模式
在工作模式下,LFSR 不接收任何输入。其计算过程如下:
LFSRWithWorkMode()
{
评论1