1. 程式人生 > >我國祖沖之密碼演算法ZUC128和ZUC256效能測試

我國祖沖之密碼演算法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 [email protected] 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效能對比結論