祖冲之序列密码算法ZUC算法Word文档格式.docx
- 文档编号:13265763
- 上传时间:2022-10-09
- 格式:DOCX
- 页数:25
- 大小:139.05KB
祖冲之序列密码算法ZUC算法Word文档格式.docx
《祖冲之序列密码算法ZUC算法Word文档格式.docx》由会员分享,可在线阅读,更多相关《祖冲之序列密码算法ZUC算法Word文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
R1,R2 非线性函数F的2个32比特记忆单元变量
W 非线性函数F输出的32比特字
Z 算法每拍输出的32比特密钥字
k 初始种子密钥
iv 初始向量
D 用于算法初始化的字符串常量
3.3缩略语
下列缩略语适用于本部分:
ZUC祖冲之序列密码算法或祖冲之算法
LFSR线性反馈移位寄存器
BR比特重组
F非线性函数
4算法描述
4.1算法整体结构
祖冲之算法逻辑上分为上中下三层,见图1。
上层是16级线性反馈移位寄存器(LFSR);
中层是比特重组(BR);
下层是非线性函数F。
图1祖冲之算法结构图
4.2线性反馈移位寄存器LFSR
4.2.1概述
LFSR包括16个31比特寄存器单元变量s0,s1,…,s15。
LFSR的运行模式有2种:
初始化模式和工作模式。
4.2.2初始化模式
在初始化模式下,LFSR接收一个31比特字u。
u是由非线性函数F的32比特输出W通过舍弃最低位比特得到,即u=W>
1。
在初始化模式下,LFSR计算过程如下:
LFSRWithInitialisationMode(u)
{
(1)v=215s15+217s13+221s10+220s4+(1+28)s0mod(231-1);
(2)s16=(v+u)mod(231-1);
(3)如果s16=0,则置s16=231-1;
(4)(s1,s2,…,s15,s16)®
(s0,s1,…,s14,s15)。
}
4.2.3工作模式
在工作模式下,LFSR不接收任何输入。
其计算过程如下:
LFSRWithWorkMode()
(1)s16=215s15+217s13+221s10+220s4+(1+28)s0mod(231-1);
(2)如果s16=0,则置s16=231-1;
(3)(s1,s2,…,s15,s16)®
4.3比特重组BR
比特重组从LFSR的寄存器单元中抽取128比特组成4个32比特字X0、X1、X2、X3。
BR的具体计算过程如下:
BitReconstruction()
(1)X0=s15H‖s14L;
(2)X1=s11L‖s9H;
(3)X2=s7L‖s5H;
(4)X3=s2L‖s0H。
4.4非线性函数F
F包含2个32比特记忆单元变量R1和R2。
F的输入为3个32比特字X0、X1、X2,输出为一个32比特字W。
F的计算过程如下:
F(X0,X1,X2)
(1)W=(X0Å
R1)⊞R2;
(2)W1=R1⊞X1;
(3)W2=R2Å
X2;
(4)R1=S(L1(W1L‖W2H));
(5)R2=S(L2(W2L‖W1H))。
其中S为32比特的S盒变换,定义在附录A中给出;
L1和L2为32比特线性变换,定义如下:
L1(X)=XÅ
(X<
2)Å
10)Å
18)Å
24),
L2(X)=XÅ
8)Å
14)Å
22)Å
30)。
4.5密钥装入
密钥装入过程将128比特的初始密钥k和128比特的初始向量iv扩展为16个31比特字作为LFSR寄存器单元变量s0,s1,…,s15的初始状态。
设k和iv分别为
k0‖k1‖……‖k15
和
iv0‖iv1‖……‖iv15,
其中ki和ivi均为8比特字节,0≤i≤15。
密钥装入过程如下:
(1)D为240比特的常量,可按如下方式分成16个15比特的子串:
D=d0‖d1‖……‖d15,
其中:
d0=1000100110101112,
d1=0100110101111002,
d2=1100010011010112,
d3=0010011010111102,
d4=1010111100010012,
d5=0110101111000102,
d6=1110001001101012,
d7=0001001101011112,
d8=1001101011110002,
d9=0101111000100112,
d10=1101011110001002,
d11=0011010111100012,
d12=1011110001001102,
d13=0111100010011012,
d14=1111000100110102,
d15=1000111101011002。
(2)对0≤i≤15,有si=ki‖di‖ivi。
4.6算法运行
4.6.1初始化阶段
首先把128比特的初始密钥k和128比特的初始向量iv按照4.5节密钥装入方法装入到LFSR的寄存器单元变量s0,s1,…,s15中,作为LFSR的初态,并置32比特记忆单元变量R1和R2为全0。
然后执行下述操作:
重复执行下述过程32次:
(1)BitReconstruction();
(2)W=F(X0,X1,X2);
(3)LFSRWithInitialisationMode(W>
1)。
4.6.2工作阶段
首先执行下列过程一次,并将F的输出W舍弃:
(2)F(X0,X1,X2);
(3)LFSRWithWorkMode()。
然后进入密钥输出阶段。
在密钥输出阶段,每运行一个节拍,执行下列过程一次,并输出一个32比特的密钥字Z:
(1)BitReconstruction() ;
(2)Z=F(X0,X1,X2)Å
X3;
附 录 A
(规范性附录)
S盒
32比特S盒S由4个小的8х8的S盒并置而成,即S=(S0,S1,S2,S3),其中S0=S2,S1=S3。
S0和S1的定义分别见表1和表2。
设S0(或S1)的8比特输入为x。
将x视作两个16进制数的连接,即x=h||l,则表1(或表2)中第h行和第l列交叉的元素即为S0(或S1)的输出S0(x)(或S1(x))。
设S盒S的32比特输入X和32比特输出Y分别为:
X=x0‖x1‖x2‖x3,
Y=y0‖y1‖y2‖y3,
其中xi和yi均为8比特字节,i=0,1,2,3。
则有yi=Si(xi),i=0,1,2,3。
表1S0盒
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
3E
72
5B
47
CA
E0
00
33
04
D1
54
98
09
B9
6D
CB
7B
1B
F9
32
AF
9D
6A
A5
B8
2D
FC
1D
08
53
03
90
4D
4E
84
99
E4
CE
D9
91
DD
B6
85
48
8B
29
6E
AC
CD
C1
F8
1E
73
43
69
C6
B5
BD
FD
39
63
20
D4
38
76
7D
B2
A7
CF
ED
57
C5
F3
2C
BB
14
21
06
55
9B
E3
EF
5E
31
4F
7F
5A
A4
0D
82
51
49
5F
BA
58
1C
4A
16
D5
17
A8
92
24
1F
8C
FF
D8
AE
2E
01
D3
AD
3B
4B
DA
46
EB
C9
DE
9A
8F
87
D7
3A
80
6F
2F
C8
B1
B4
37
F7
0A
22
13
28
7C
CC
3C
89
C7
C3
96
56
07
BF
7E
F0
0B
2B
97
52
35
41
79
61
A6
4C
10
FE
BC
26
95
88
8A
B0
A3
FB
C0
18
94
F2
E1
E5
E9
5D
D0
DC
11
66
64
5C
EC
59
42
75
12
F5
74
9C
AA
23
0E
86
AB
BE
2A
02
E7
67
E6
44
A2
6C
C2
93
9F
F1
F6
FA
36
D2
50
68
9E
62
71
15
3D
D6
40
C4
E2
0F
8E
83
77
6B
25
05
3F
0C
30
EA
70
B7
A1
E8
A9
65
8D
27
1A
DB
81
B3
A0
F4
45
7A
19
DF
EE
78
34
60
表2S1盒
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 序列 密码 算法 ZUC
![提示](https://static.bdocx.com/images/bang_tan.gif)