祖冲之序列密码算法ZUC算法.docx

上传人:b****1 文档编号:15027112 上传时间:2023-06-29 格式:DOCX 页数:32 大小:80.34KB
下载 相关 举报
祖冲之序列密码算法ZUC算法.docx_第1页
第1页 / 共32页
祖冲之序列密码算法ZUC算法.docx_第2页
第2页 / 共32页
祖冲之序列密码算法ZUC算法.docx_第3页
第3页 / 共32页
祖冲之序列密码算法ZUC算法.docx_第4页
第4页 / 共32页
祖冲之序列密码算法ZUC算法.docx_第5页
第5页 / 共32页
祖冲之序列密码算法ZUC算法.docx_第6页
第6页 / 共32页
祖冲之序列密码算法ZUC算法.docx_第7页
第7页 / 共32页
祖冲之序列密码算法ZUC算法.docx_第8页
第8页 / 共32页
祖冲之序列密码算法ZUC算法.docx_第9页
第9页 / 共32页
祖冲之序列密码算法ZUC算法.docx_第10页
第10页 / 共32页
祖冲之序列密码算法ZUC算法.docx_第11页
第11页 / 共32页
祖冲之序列密码算法ZUC算法.docx_第12页
第12页 / 共32页
祖冲之序列密码算法ZUC算法.docx_第13页
第13页 / 共32页
祖冲之序列密码算法ZUC算法.docx_第14页
第14页 / 共32页
祖冲之序列密码算法ZUC算法.docx_第15页
第15页 / 共32页
祖冲之序列密码算法ZUC算法.docx_第16页
第16页 / 共32页
祖冲之序列密码算法ZUC算法.docx_第17页
第17页 / 共32页
祖冲之序列密码算法ZUC算法.docx_第18页
第18页 / 共32页
祖冲之序列密码算法ZUC算法.docx_第19页
第19页 / 共32页
祖冲之序列密码算法ZUC算法.docx_第20页
第20页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

祖冲之序列密码算法ZUC算法.docx

《祖冲之序列密码算法ZUC算法.docx》由会员分享,可在线阅读,更多相关《祖冲之序列密码算法ZUC算法.docx(32页珍藏版)》请在冰点文库上搜索。

祖冲之序列密码算法ZUC算法.docx

祖冲之序列密码算法ZUC算法

祖冲之序列密码算法

第1部分:

算法描述

1范围

本部分描述了祖冲之序列密码算法,可用于指导祖冲之算法相关产品的研制、检测和使用。

2术语和约定

以下术语和约定适用于本部分。

2.1

比特bit

二进制字符0和1称之为比特。

2.2

字节byte

由8个比特组成的比特串称之为字节。

2.3

字word

由2个以上(包含2个)比特组成的比特串称之为字。

本部分主要使用31比特字和32比特字。

2.4

字表示wordrepresentation

本部分字默认采用十进制表示。

当字采用其它进制表示时,总是在字的表示之前或之后添加指示符。

例如,前缀0x指示该字采用十六进制表示,后缀下角标2指示该字采用二进制表示。

2.5

高低位顺序bitordering

本部分规定字的最高位总是位于字表示中的最左边,最低位总是位于字表示中的最右边。

3符号和缩略语

3.1运算符

+算术加法运算

mod整数取余运算

⨁按比特位逐位异或运算

⊞模232加法运算

‖字符串连接符

∙H取字的最高16比特

∙L取字的最低16比特

<<

>>k32比特字右移k位

ab向量a赋值给向量b,即按分量逐分量赋值

3.2符号

下列符号适用于本部分:

s0,s1,s2,…,s15线性反馈移位寄存器的16个31比特寄存器单元变量

X0,X1,X2,X3比特重组输出的4个32比特字

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)(s0,s1,…,s14,s15)。

}

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=(X0R1)⊞R2;

(2)W1=R1⊞X1;

(3)W2=R2X2;

(4)R1=S(L1(W1L‖W2H));

(5)R2=S(L2(W2L‖W1H))。

}

其中S为32比特的S盒变换,定义在附录A中给出;L1和L2为32比特线性变换,定义如下:

L1(X)=X(X<<<2)(X<<<10)(X<<<18)(X<<<24),

L2(X)=X(X<<<8)(X<<<14)(X<<<22)(X<<<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=010*******100112,

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舍弃:

(1)BitReconstruction();

(2)F(X0,X1,X2);

(3)LFSRWithWorkMode()。

然后进入密钥输出阶段。

在密钥输出阶段,每运行一个节拍,执行下列过程一次,并输出一个32比特的密钥字Z:

(1)BitReconstruction();

(2)Z=F(X0,X1,X2)X3;

(3)LFSRWithWorkMode()。

附 录 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盒

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

0

3E

72

5B

47

CA

E0

00

33

04

D1

54

98

09

B9

6D

CB

1

7B

1B

F9

32

AF

9D

6A

A5

B8

2D

FC

1D

08

53

03

90

2

4D

4E

84

99

E4

CE

D9

91

DD

B6

85

48

8B

29

6E

AC

3

CD

C1

F8

1E

73

43

69

C6

B5

BD

FD

39

63

20

D4

38

4

76

7D

B2

A7

CF

ED

57

C5

F3

2C

BB

14

21

06

55

9B

5

E3

EF

5E

31

4F

7F

5A

A4

0D

82

51

49

5F

BA

58

1C

6

4A

16

D5

17

A8

92

24

1F

8C

FF

D8

AE

2E

01

D3

AD

7

3B

4B

DA

46

EB

C9

DE

9A

8F

87

D7

3A

80

6F

2F

C8

8

B1

B4

37

F7

0A

22

13

28

7C

CC

3C

89

C7

C3

96

56

9

07

BF

7E

F0

0B

2B

97

52

35

41

79

61

A6

4C

10

FE

A

BC

26

95

88

8A

B0

A3

FB

C0

18

94

F2

E1

E5

E9

5D

B

D0

DC

11

66

64

5C

EC

59

42

75

12

F5

74

9C

AA

23

C

0E

86

AB

BE

2A

02

E7

67

E6

44

A2

6C

C2

93

9F

F1

D

F6

FA

36

D2

50

68

9E

62

71

15

3D

D6

40

C4

E2

0F

E

8E

83

77

6B

25

05

3F

0C

30

EA

70

B7

A1

E8

A9

65

F

8D

27

1A

DB

81

B3

A0

F4

45

7A

19

DF

EE

78

34

60

表2S1盒

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

0

55

C2

63

71

3B

C8

47

86

9F

3C

DA

5B

29

AA

FD

77

1

8C

C5

94

0C

A6

1A

13

00

E3

A8

16

72

40

F9

F8

42

2

44

26

68

96

81

D9

45

3E

10

76

C6

A7

8B

39

43

E1

3

3A

B5

56

2A

C0

6D

B3

05

22

66

BF

DC

0B

FA

62

48

4

DD

20

11

06

36

C9

C1

CF

F6

27

52

BB

69

F5

D4

87

5

7F

84

4C

D2

9C

57

A4

BC

4F

9A

DF

FE

D6

8D

7A

EB

6

2B

53

D8

5C

A1

14

17

FB

23

D5

7D

30

67

73

08

09

7

EE

B7

70

3F

61

B2

19

8E

4E

E5

4B

93

8F

5D

DB

A9

8

AD

F1

AE

2E

CB

0D

FC

F4

2D

46

6E

1D

97

E8

D1

E9

9

4D

37

A5

75

5E

83

9E

AB

82

9D

B9

1C

E0

CD

49

89

A

01

B6

BD

58

24

A2

5F

38

78

99

15

90

50

B8

95

E4

B

D0

91

C7

CE

ED

0F

B4

6F

A0

CC

F0

02

4A

79

C3

DE

C

A3

EF

EA

51

E6

6B

18

EC

1B

2C

80

F7

74

E7

FF

21

D

5A

6A

54

1E

41

31

92

35

C4

33

07

0A

BA

7E

0E

34

E

88

B1

98

7C

F3

3D

60

6C

7B

CA

D3

1F

32

65

04

28

F

64

BE

85

9B

2F

59

8A

D7

B0

25

AC

AF

12

03

E2

F2

注:

S0盒和S1盒数据均为十六进制表示。

附 录 B

(资料性附录)

模231-1乘法和模231-1加法的实现

B.1模231-1乘法

两个31比特字模231-1乘法可以快速实现。

特别地,当其中一个字具有较低的汉明重量时,可以通过31比特的循环移位运算和模231-1加法运算实现。

例如,计算abmod(231-1),其中b=2i+2j+2k。

abmod(231-1)=(a<<<31i)+(a<<<31j)+(a<<<31k)mod(231-1),

其中<<<31表示31比特左循环移位运算。

B.2模231-1加法

在32位处理平台上,两个31比特字a和b模231-1加法运算c=a+bmod(231-1)可以通过下面的两步计算实现:

1)c=a+b;

2)c=(c&0x7FFFFFFF)+(c>>31)。

附 录 C

(资料性附录)

算法计算实例

C.1测试向量1(全0)

输入:

密钥k:

00000000000000000000000000000000

初始向量iv:

00000000000000000000000000000000

输出:

z1:

27bede74

z2:

018082da

初始化:

线性反馈移位寄存器初态:

i

S0+i

S1+i

S2+i

S3+i

S4+i

S5+i

S6+i

S7+i

0

0044d700

0026bc00

00626b00

00135e00

00578900

0035e200

00713500

0009af00

8

004d7800

002f1300

006bc400

001af100

005e2600

003c4d00

00789a00

0047ac00

t

X0

X1

X2

X3

R1

R2

W

S15

0

008f9a00

f100005e

af00006b

6b000089

67822141

62a3a55f

008f9a00

4563cb1b

1

8ac7ac00

260000d7

780000e2

5e00004d

474a2e7e

119e94bb

4fe932a0

28652a0f

2

50cacb1b

4d000035

13000013

890000c4

c29687a5

e9b6eb51

291f7a20

7464f744

3

e8c92a0f

9a0000bc

c400009a

e2000026

29c272f3

8cac7f5d

141698fb

3f5644ba

4

7eacf744

ac000078

f100005e

350000af

2c85a655

24259cb0

e41b0514

006a144c

5

00d444ba

cb1b00f1

260000d7

af00006b

cbfbc5c0

44c10b3a

50777f9f

07038b9b

6

0e07144c

2a0f008f

4d000035

780000e2

e083c8d3

7abf7679

0abddcc6

69b90e2b

7

d3728b9b

f7448ac7

9a0000bc

13000013

147e14f4

b669e72d

aeb0b9c1

62a913ea

8

c5520e2b

44ba50ca

ac000078

c400009a

982834a0

f095d694

8796020c

7b591cc0

9

f6b213ea

144ce8c9

cb1b00f1

f100005e

e14727d6

d0225869

5f2ffdde

70e21147

初始化后线性反馈移位寄存器状态:

i

S0+i

S1+i

S2+i

S3+i

S4+i

S5+i

S6+i

S7+i

0

7ce15b8b

747ca0c4

6259dd0b

47a94c2b

3a89c82e

32b433fc

231ea13f

31711e42

8

4ccce955

3fb6071e

161d3512

7114b136

5154d452

78c69a74

4f26ba6b

3e1b8d6a

有限状态机内部状态:

R1=14cfd44c

R2=8c6de800

密钥流:

t

X0

X1

X2

X3

R1

R2

z

S15

0

7c37ba6b

b1367f6c

1e426568

dd0bf9c2

3512bf50

a0920453

286dafe5

7f08e141

1

fe118d6a

d4522c3a

e955463d

4c2be8f9

c7ee7f13

0c0fa817

27bede74

3d383d04

2

7a70e141

9a74e229

071e62e2

c82ec4b3

dde63da7

b9dd6a41

018082da

13d6d780

C.2测试向量2(全1)

输入:

密钥k:

ffffffffffffffffffffffffffffffff

初始向量iv:

ffffffffffffffffffffffffffffffff

输出:

z1:

0657cfa0

z2:

7096398b

初始化:

线性反馈移位寄存器初态:

i

S0+i

S1+i

S2+i

S3+i

S4+i

S5+i

S6+i

S7+i

0

7fc4d7ff

7fa6bcff

7fe26bff

7f935eff

7fd789ff

7fb5e2ff

7ff135ff

7f89afff

8

7fcd78ff

7faf13ff

7febc4ff

7f9af1ff

7fde26ff

7fbc4dff

7ff89aff

7fc7acff

t

X0

X1

X2

X3

R1

R2

W

S15

0

ff8f9aff

f1ffff5e

afffff6b

6bffff89

b51c2110

30a3629a

ff8f9aff

76e49a1a

1

edc9acff

26ffffd7

78ffffe2

5effff4d

a75b6f4b

1a079628

8978f089

5e2d8983

2

bc5b9a1a

4dffff35

13ffff13

89ffffc4

9810b315

99296735

35088b79

5b9484b8

3

b7298983

9affffbc

c4ffff9a

e2ffff26

4c5bd8eb

2d577790

c862a1cb

2db5c755

4

5b6b84b8

acffff78

f1ffff5e

35ffffaf

a13dcb66

21d0939f

4487d3e3

60579232

5

c0afc755

9a1afff1

26ffffd7

afffff6b

cc5ce260

0c50a8e2

83629fd2

29d4e960

6

53a99232

8983ff8f

4dffff35

78ffffe2

dada0730

b516b128

ac461934

5e02d9e5

7

bc05e960

84b8edc9

9affffbc

13ffff13

2bbe53a4

12a8a16e

1bf69f78

7904dddc

8

f209d9e5

c755bc5b

acffff78

c4ffff9a

4a90d661

d9c744b4

ec602baf

0c3c9016

9

1879dddc

9232b729

9a1afff1

f1ffff5e

76bc13d7

a49ea404

2cb05071

0b9d257b

初始化后线性反馈移位寄存器状态:

i

S0+i

S1+i

S2+i

S3+i

S4+i

S5+i

S6+i

S7+i

0

09a339ad

1291d190

25554227

36c09187

0697773b

443cf9cd

6a4cd899

49e34bd0

8

56130b14

20e8f24c

7a5b1dcc

0c3cc2d1

1cc082c8

7f5904a2

55b61ce8

1fe46106

有限状态机内部状态:

R1=b8017bd5

R2=9ce2de5c

密钥流:

t

X0

X1

X2

X3

R1

R2

z

S15

0

3fc81ce8

c2d141d1

4bd08879

42271346

aa131b11

09d7706c

668b56df

13f56dbf

1

27ea6106

82c8f4b6

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2