我国祖冲之密码算法ZUC128和ZUC256性能测试

摘要:本文档对序列密码算法ZUC128和ZUC256在32位平台下进行软件实现和评估,包括加密性能和计算MAC的性能,文档最后一章给出ZUC128和ZUC256的性能对比评估结果。

关键词:ZUC128,ZUC256,序列密码,软件实现。

目录

1. 性能测试说明... 1

1.1 对比测试算法说明... 1

1.2 测试环境... 1

1.3 性能测试项说明... 1

1.4 测试方式... 2

2. 性能测试结果... 3

2.1 资源者占用... 3

2.2 ZUC的加密性能... 3

2.3 ZUC的加密性能对比结论... 4

2.4 ZUC的MAC性能... 4

2.5 ZUC的MAC性能对比结论... 5

3. 分析结论... 7

 

1. 性能测试说明

1.1 对比测试算法说明

本章列举ZUC128、ZUC256与几个常见的序列密码算法的性能对比情况。

性能对比算法中的HC-128、Rabbit、Salsa20-12、Sosemanuk为eSTREAM中偏软件实现的序列密码算法;Mickey v2、Trivium、Grain为eSTREAM中偏硬件实现的序列密码算法;分组密码算法AES仅选用128比特分组和128比特密钥的情况;SM4是分组密码算法,为128比特分组和128比特密钥,Enocoro-128为日本的标准序列密码算法

1.2 测试环境

测试环境为Intel Core i3@3400 MHz的CPU、Microsoft VS 2008编译器,所有算法均采用标准C实现。表1列出了测试环境详情。

1 测试环境详情

项目

参数

处理器

DualCore Intel Core i3 @ 3400 MHz (34 x 100)

一级缓存每个核心32KB

二级缓存每个核心256KB

三级缓存共享3MB

内存

4 GB DDR3 SDRAM 1600MHz

操作系统

Microsoft Windows XP Professional Service Pack 3 32bit

编译器

Intel C++ Composer XE 2011 V12.0.1016.2008

优化选项O2

1.3 性能测试项说明

性能测试项来自于estreambench以及《ZUC256算法软硬件性能比较大纲》,各测试项的含义如下:

  1. Init:表示算法初始化所用时间,即密钥和IV装载时间。单位是cycles/setup,表示执行一次初始化需要的时钟周期,简写为cps,下同。
  2. Stream:表示加密大量数据时的速度,单位为时钟周期每字节(cycle/byte),简写为cpb,或者兆比特每秒(106bit/second)简写为Mbps,下同。此项测试只统计加密数据的时间,不考虑算法初始化的时间,即速度值为加密数据的时间除以加密的字节数。
  3. xB:表示加密x字节时的速度,这里的xB取16B、40B、576B、1500B、1MB等。此项测试统计算法初始化时间和加密数据的时间,速度值为数据处理时间与算法初始化时间之和,再除以处理字节数。

1.4 测试方式

实验采用欧洲estream算法竞赛的速度测试模型,详情如下。

第1步,在被测试代码段的前后各设置一个时间计数器TS和TF;

第2步,将两个计时器之差T=TS—TF作为这段代码的耗时;

第3步,重复步骤1和步骤2多次,为统计方便设定重复次数为奇数,记重复测试次数为C,得到一系列的耗时值T[i],i=1,2,...,C;

第4步,将统计得到的耗时值序列按从大到小的顺序排列,得到的新序列仍记为T[i],i=1,2,...,C;当然也可按从小到大的顺序排列;

第5步,取新序列的中值T[(C+1)/2]作为本段代码的统计耗时值。

为了保证测试结果的准确性,本测试模型中第1步的时间计数器使用CPU频率计时器,可直接调用汇编指令RDTSC,在Windows环境下可调用__rdtsc()函数。该指令或函数返回CPU时钟周期值,按现代CPU的时钟频率计算,此计数器可精确到纳秒级。两次RDTSC指令返回的时钟周期之差再除以CPU频率,即可得到以秒为单位的耗时值。

本测试中取重复测试次数C为21。

2. 性能测试结果

2.1 资源者占用

资源者占用情况如下表。

 

2.2 ZUC的加密性能

ZUC算法以及其它对比算法在32位平台下的软件实现性能指标见表3和表4,其中表3列出Init和Stream的性能指标;表4列出处理各种数据长度的性能。

表3 32位平台上各加密算法的软件实现性能

(速度单位cps = cycles/setup,cpb = cycle/byte,mbps = 106bit/second)

算法

key+iv

(bit)

Init

(cps)

Stream

(cpb)

(mbps)

HC-128

128+128

15347

2.43

11193

Rabbit

128+ 64

487

2.38

11429

Salsa20-12

128+ 64

39

8.23

3305

Sosemanuk

256+128

2855

14.34

1897

AES

128+128

752

15.86

1715

SM4*

128+128

665

32.64

833

Mickey v2

128+128

55427

26.61

1062

Trivium

80+ 80

651

4.51

6031

Grain

128+ 96

1085

31.87

853

Enocoro-128

128+64

3964

35.55

765

ZUC128

128+128

4016

26.76

1017

ZUC256

256+184

4132

26.88

1011

4 加密算法处理各种数据长度的性能比较

(速度单位cpb = cycle/byte)

算法

16B

(cpb)

32B

(cpb)

40B

(cpb)

576B (cpb)

1500B

(cpb)

9000B

(cpb)

100MB

(cpb)

HC-128

947

458

389.8

29.14

12.75

2.82

Rabbit

32.56

18.57

11.38

2.86

2.61

2.36

Salsa20-12

31.38

17.64

30.96

8.54

8.48

8.61

Sosemanuk

143.54

72.58

59.61

19.94

17.53

14.94

AES

63.46

39.61

41.09

17.50

16.60

16.08

SM4

74.06

53.28

60.12

34.53

33.29

32.64

Mickey v2

4518

2703

2398

1138

1093

1075

Trivium

45.79

24.94

20.93

5.69

4.95

4.65

Grain

128.96

31.87

59.54

33.67

32.42

33.67

enocoro-128

273.47

155.28

131.09

42.21

38.15

37.03

ZUC128

258.75

142.75

118.92

32.86

28.84

26.77

ZUC256

262.01

144.50

120.63

32.97

28.89

26.79

注:ZUC256限制同一密钥和IV输出的最大子密钥长度为20000比特,即2500字节,因此9000B的测试为越界使用。

2.3 ZUC的加密性能对比结论

从表3和表4可以看出,ZUC128和ZUC256的加密速度没有显著差异。

从理论上讲,ZUC128和ZUC256在加密时,仅初始化时的仅寄存器设置方式不同,在初始化和工作时每一拍的执行流程完全相同。因此它们的速度不应该有显著差异。

2.4 ZUC的MAC性能

测试时,每包数据均更换了随机的密钥和IV值。

ZUC128和ZUC-256计算MAC(包括ZUC256计算32比特、64比特、128比特MAC)的性能测试结果见表5。

表5 ZUC128和ZUC-256计算MAC的性能

(速度单位:us)

算法

16B

32B

40B

128B

576B

1500B

9000B

ZUC128 32b-MAC

1.34

1.442

1.527

2.244

5.989

13.376

74.532

ZUC256 32b-MAC

1.393

1.502

1.631

2.388

6.549

14.799

82.765

ZUC256 64b-MAC

1.451

1.596

1.701

2.532

6.933

15.84

88.541

ZUC256 128b-MAC

1.613

1.749

1.886

2.835

7.827

18.216

101.958

2.5 ZUC的MAC性能对比结论

从表5可以看出,ZUC256的MAC性能比ZUC128的MAC性能略低。详见表6和图1。

表6 ZUC128和ZUC-256计算MAC的性能对比

对比项

比值

ZUC256-32 b MAC : ZUC128 32b-MAC

0.905 : 1

ZUC256-64 b MAC : ZUC128 32b-MAC :

0.847 : 1

ZUC256-128b MAC : ZUC128 32b-MAC :

0.738 : 1

 

图1 ZUC128和ZUC-256计算MAC的性能对比

(以ZUC128 32b-MAC的速度为基数1)

ZUC256的MAC性能略低的原因如下。

  1. ZUC128 32b-MAC和ZUC256 32b-MAC在计算MAC时,理论上的计算量没有显著差异。但在具体实现时,为兼容32b、64b、128b-MAC的实现,ZUC256 32b-MAC的实现比ZUC128 32b-MAC略微复杂。这就是ZUC256 32b-MAC实际测试速度略低的主要原因。
  2. ZUC128 64b-MAC和ZUC256 128b-MAC相比ZUC128 32b-MAC需要分别多增加2个和6个密钥字;此外,TAG长度的增加使得异或数也增加。这就使得ZUC128 64b-MAC和ZUC256 128b-MAC会更慢。

 

3. 分析结论

ZUC128和ZUC256的性能测试结论如下。

  1. ZUC128和ZUC256的加密速度没有显著差异,详情参见2.3 ZUC的加密性能对比结论
  2. ZUC256的MAC性能比ZUC128略低,32b、64b、128b-MAC的速度分别可达到ZUC128 32b MAC速度的90.5%、84.7%、73.8%,详情参见2.5 ZUCMAC性能对比结论

 

 

猜你喜欢

转载自blog.csdn.net/samsho2/article/details/84561335