第10卷第6期 智能系统学报 Vol.10 No.6 2015年12月 CAAI Transactions on Intelligent Systems Dee.2015 D0L:10.11992/is.201507036 网络出版地址:http://www.cnki.net/kcms/detail/23.1538.tp.20151110.1354.004.html SM3杂凑算法的软件快速实现研究 杨先伟,康红娟2 (1.无锡职业技术学院基础部,江苏无锡214121:2.四川长虹电器股份有限公司,四川成都610041) 摘要:杂凑算法是密码学中最基本的模块之一,可广泛应用于密码协议、数字签名、消息鉴别等领域。我国国家密 码管理局在2010年发布了SM3密码杂凑算法,该算法适用于商用密码应用中的数字签名和验证、消息认证码的生 成与验证以及随机数的生成等。该文重点研究SM3密码杂凑算法的软件快速实现,根据算法本身的特点,尤其是压 缩函数的特点,给出一种更加适用于软件的快速实现方式。实验表明利用此方法可以将算法的效率提升60%左右。 关键词:SM3算法:杂凑函数:软件快速实现:数字签名:消息鉴别;完整性认证:数字指纹;压缩函数 中图分类号:TP309文献标志码:A文章编号:1673-4785(2015)06-0954-06 中文引用格式:杨先伟,康红娟.SM3杂凑算法的软件快速实现研究[J].智能系统学报,2015,10(6):954-959. 英文引用格式:YANG Xianwei,KANG Hongjuan.Fast software implementation of SM3 Hash algorithm[J].CAAI Transactions on Intelligent Systems,2015,10(2):954-959. Fast software implementation of SM3 Hash algorithm YANG Xianwei',KANG Hongjuan? (1.Department of Fundamental Courses,Wuxi Prof Technology inst.,Wuxi 214121,China;2.Sichuan Changhong Electric Co., Ltd.,Chengdu 610041,China) Abstract:The hash algorithm is one of the most basic cryptography modules,and is widely used in cryptographic protocols,digital signatures,message authentication,and in other fields.The Chinese National Cryptography Ad- ministration released the SM3 hash algorithm in 2010.This algorithm is applied to digital signature and verification, the generation and verification of message authentication codes,and random number generation.This paper addres- ses the fast software implementation of the SM3 algorithm.Based on the SM3 features,and especially its compres- sion function characteristics,we propose a method that is highly suitable for fast software implementation.Experi- mental results show that this method can improve the implementation speed by 60%. Keywords:SM3 algorithm;hash function;fast software implementation;digital signature;message authentication; integrity authentication;digital fingerprint;compression function 哈希(Hash)函数,也叫杂凑函数,是密码学中 程软硬件均易于计算实现,但其逆向变换过程在计 最基本的模块之一,广泛应用于密码协议、数字签 算上不可行,即具有单向性。出于安全性的考虑,杂 名、消息鉴别、完整性认证等领域。因此,它在密码 凑函数还必须满足抗弱碰撞性和抗强碰撞性。1991 学中扮演着极其重要的角色。 年,Ron Rivest提出了MD5算法,这曾经是使用最为 杂凑函数的目的是产生数据块的“指纹”,它可 广泛的杂凑算法。从20世纪90年代年开始,美国 以对任意长度的信息产生定长的输出。这个变换过 国家标准与技术研究院(NST)陆续公布了SHA系 收稿日期:2015-07-23.网络出版日期:2015-11-10 列,并通过公开竞赛方式征集SHA-3。 基金项目:国家自然科学基金资助项目(11471144) 中国国家密码管理局在2010年发布了SM3密 通信作者:杨先伟.E-mail:yangxianwei2018@163.com
第 10 卷第 6 期 智 能 系 统 学 报 Vol.10 №.6 2015 年 12 月 CAAI Transactions on Intelligent Systems Dec. 2015 DOI:10.11992 / tis.201507036 网络出版地址:http: / / www.cnki.net / kcms/ detail / 23.1538.tp.20151110.1354.004.html SM3 杂凑算法的软件快速实现研究 杨先伟1 ,康红娟2 (1. 无锡职业技术学院 基础部,江苏 无锡 214121; 2. 四川长虹电器股份有限公司,四川 成都 610041) 摘 要:杂凑算法是密码学中最基本的模块之一,可广泛应用于密码协议、数字签名、消息鉴别等领域。 我国国家密 码管理局在 2010 年发布了 SM3 密码杂凑算法,该算法适用于商用密码应用中的数字签名和验证、消息认证码的生 成与验证以及随机数的生成等。 该文重点研究 SM3 密码杂凑算法的软件快速实现,根据算法本身的特点,尤其是压 缩函数的特点,给出一种更加适用于软件的快速实现方式。 实验表明利用此方法可以将算法的效率提升 60%左右。 关键词:SM3 算法;杂凑函数;软件快速实现; 数字签名;消息鉴别;完整性认证;数字指纹; 压缩函数 中图分类号:TP309 文献标志码:A 文章编号:1673⁃4785(2015)06⁃0954⁃06 中文引用格式:杨先伟,康红娟. SM3 杂凑算法的软件快速实现研究[J]. 智能系统学报, 2015, 10(6): 954⁃959. 英文引用格式:YANG Xianwei, KANG Hongjuan. Fast software implementation of SM3 Hash algorithm[J]. CAAI Transactions on Intelligent Systems, 2015, 10(2): 954⁃959. Fast software implementation of SM3 Hash algorithm YANG Xianwei 1 , KANG Hongjuan 2 (1. Department of Fundamental Courses, Wuxi Prof Technology inst., Wuxi 214121, China; 2. Sichuan Changhong Electric Co., Ltd., Chengdu 610041, China) Abstract:The hash algorithm is one of the most basic cryptography modules, and is widely used in cryptographic protocols, digital signatures, message authentication, and in other fields. The Chinese National Cryptography Ad⁃ ministration released the SM3 hash algorithm in 2010. This algorithm is applied to digital signature and verification, the generation and verification of message authentication codes, and random number generation. This paper addres⁃ ses the fast software implementation of the SM3 algorithm. Based on the SM3 features, and especially its compres⁃ sion function characteristics, we propose a method that is highly suitable for fast software implementation. Experi⁃ mental results show that this method can improve the implementation speed by 60%. Keywords: SM3 algorithm; hash function; fast software implementation; digital signature; message authentication; integrity authentication; digital fingerprint; compression function 收稿日期:2015⁃07⁃23. 网络出版日期:2015⁃11⁃10. 基金项目:国家自然科学基金资助项目(11471144). 通信作者:杨先伟. E⁃mail:yangxianwei2018@ 163.com. 哈希(Hash)函数,也叫杂凑函数,是密码学中 最基本的模块之一,广泛应用于密码协议、数字签 名、消息鉴别、完整性认证等领域。 因此,它在密码 学中扮演着极其重要的角色。 杂凑函数的目的是产生数据块的“指纹”,它可 以对任意长度的信息产生定长的输出。 这个变换过 程软硬件均易于计算实现,但其逆向变换过程在计 算上不可行,即具有单向性。 出于安全性的考虑,杂 凑函数还必须满足抗弱碰撞性和抗强碰撞性。 1991 年,Ron Rivest 提出了 MD5 算法,这曾经是使用最为 广泛的杂凑算法。 从 20 世纪 90 年代年开始,美国 国家标准与技术研究院(NIST)陆续公布了 SHA 系 列[1] ,并通过公开竞赛方式征集 SHA⁃3 [2] 。 中国国家密码管理局在 2010 年发布了 SM3 密
第6期 杨先伟,等:SM3杂凑算法的软件快速实现研究 ·955· 码杂凑算法),该算法适用于商用密码中的多种应 1.1函数 用,满足多种密码应用的安全需求:1)数字签名和验 布尔函数FF(X,Y,Z)、GG(X,Y,Z), 证,如作为SM2算法中数字签名所需的杂凑函数;2) 0≤i≤63的定义如下: 消息认证码的生成与验证,消息认证码不仅可以使用 FF (X,Y,Z)= 分组密码算法基于特定的工作模式生成,也可以使用 (X①Y①Z,0≤i≤15 SM3等杂凑函数生成:3)随机数的生成。 l(XA)V(X∧Z)V(Y∧Z),16≤i≤63 哈希函数在各种平台和环境下的执行效率 GG(X,Y,Z)= 是非常重要的考量指标之一,比如服务器端常需 X⊕Y①Z,0≤i≤15 执行的SSL/TLS协议就使用了哈希函数进行认 (X∧Y)V(XΛZ),16≤i≤63 证。目前已有大量文章对SHA系列算法的软件 置换函数P。(X)和P,(X)的定义如下: 快速实现进行研究,比如Aciicmez)提出基于 P(X)=X⊕(X<<<9)⊕(X<<<17) SIMD技术快速实现哈希算法,Gueron等[s-6]对并 P(X)=X⊕(X<<<15)⊕(X<<<23) 行处理多个消息的情况进行了研究。同样也有 1.2填充 大量文章对SM3算法的软硬件快速实现进行研 设消息的长度为(比特。填充方式为:首先将 究。张倩等)提出了一种ASIC高效实现架构: 比特“1”添加到消息的末尾;然后添加k个“0”,k 王晓燕等[劉基于FPGA设计SM3算法P核的整 是满足l+1+k=448mod512的最小的非负整数; 体架构,对关键逻辑进行优化设计:伍娟[町以同 最后再将消息长度1的64位二进制表示添加在最 方公司THD86智能卡芯片为硬件平台实现了 末。填充后的消息比特长度为512的倍数。 SM3算法:曾小波等[1o1分析了基于8051软核的 1.3迭代压缩 SM3算法P原理、设计流程及实现方案,该方案 填充后的消息m'按512比特进行分组:m'= 在时序和面积上均做到相当程度的优化,并提高 B)I…‖Ba-.对每个分组利用压缩函数CF进 了算法的效率:沈一公等[基于Android平台研 行迭代: 究了SM3算法的快速实现,并以此为基础研究文 FORi=0TOn-1 件防篡改以便检查手机软件的安装;易叔贤 i+I)←-CF(o,B0) 等[2]结合已经将SM系列算法纳入其中的PBOC END FOR 3.0新规范,分析考虑SM2、SM3、SM4算法在金 1.4压缩函数 融IC卡领域的实现和应用。 压缩函数CF的计算过程如下: 与这些研究相比,文本研究的侧重点是SM3算 首先,计算消息扩展字W:,0≤i≤67和W:', 法在普通软件平台下的快速实现方式。文本根据算 0≤i≤63,步骤如下: 法以及压缩函数的特点,给出一种更加适用于软件 Wo‖…‖Ws=B) 快速实现的算法描述方式和实现方法,本文提出的 F0Ri=16T067 实现方法具有以下优点:首先,此方法避免了普通实 W:←-P,(W-6①W-g①(W-3<<<15)① 现中可能采用的效率较低的实现架构和运算方式, (W-3<<<7)⊕W-6 可较大地提高算法的软件效率,经多个软件平台对 END FOR 比测试,本文的实现方法可将算法效率提升60%左 F0Ri=0T063 右;其次,此方式不基于特定的软件平台、架构、指令 W:←-W,⊕W+4 等,具有很强的跨平台性和兼容性。 END FOR 然后,进行包含64轮迭代的压缩,步骤如下: 1SM3算法简介 A‖BIC IDI EI F I GIH←-) SM3杂凑算法可将长度小于24比特的消息 F0Ri=0T063 经过填充、反复的消息扩展和压缩,生成长度为 SS,←-((A<<<12)+E+(T<<<j)) 256比特的杂凑值。在SM3算法中,字表示长度 <<<7 为32的比特串。 SS2←SS1④(A<<<12)
码杂凑算法[3] ,该算法适用于商用密码中的多种应 用,满足多种密码应用的安全需求:1)数字签名和验 证,如作为 SM2 算法中数字签名所需的杂凑函数;2) 消息认证码的生成与验证,消息认证码不仅可以使用 分组密码算法基于特定的工作模式生成,也可以使用 SM3 等杂凑函数生成;3)随机数的生成。 哈希函数在各种平台和环境下的执行效率 是非常重要的考量指标之一,比如服务器端常需 执行的 SSL / TLS 协议就使用了哈希函数进行认 证。 目前已有大量文章对 SHA 系列算法的软件 快速 实 现 进 行 研 究, 比 如 Aciiçmez [ 4] 提 出 基 于 SIMD 技术快速实现哈希算法,Gueron 等[ 5⁃6] 对并 行处理多个消息的情况进行了研究。 同样也有 大量文章对 SM3 算法的软硬件快速实现进行研 究。 张倩等[ 7] 提出了一种 ASIC 高效实现架构; 王晓燕等[ 8] 基于 FPGA 设计 SM3 算法 IP 核的整 体架构,对关键逻辑进行优化设计;伍娟[ 9] 以同 方公司 THD86 智 能 卡 芯 片 为 硬 件 平 台 实 现 了 SM3 算法;曾小波等[ 10] 分析了基于 8051 软核的 SM3 算法 IP 原理、设计流程及实现方案,该方案 在时序和面积上均做到相当程度的优化,并提高 了算法的效率;沈一公等[ 11] 基于 Android 平台研 究了 SM3 算法的快速实现,并以此为基础研究文 件防 篡 改 以 便 检 查 手 机 软 件 的 安 装; 易 叔 贤 等[ 12] 结合已经将 SM 系列算法纳入其中的 PBOC 3.0 新规范,分析考虑 SM2、 SM3、 SM4 算法在金 融 IC 卡领域的实现和应用。 与这些研究相比,文本研究的侧重点是 SM3 算 法在普通软件平台下的快速实现方式。 文本根据算 法以及压缩函数的特点,给出一种更加适用于软件 快速实现的算法描述方式和实现方法,本文提出的 实现方法具有以下优点:首先,此方法避免了普通实 现中可能采用的效率较低的实现架构和运算方式, 可较大地提高算法的软件效率,经多个软件平台对 比测试,本文的实现方法可将算法效率提升 60%左 右;其次,此方式不基于特定的软件平台、架构、指令 等,具有很强的跨平台性和兼容性。 1 SM3 算法简介 SM3 杂凑算法可将长度小于 2 64 比特的消息 经过填充、反复的消息扩展和压缩,生成长度为 256 比特的杂凑值。 在 SM3 算法中,字表示长度 为 32 的比特串。 1.1 函数 布 尔 函 数 FFi(X,Y,Z) 、 GGi(X,Y,Z) , 0 ≤ i ≤63 的定义如下: FFi(X,Y,Z) = X Y Z,0 ≤ i ≤ 15 (X ∧ Y) ∨ (X ∧ Z) ∨ (Y ∧ Z),16 ≤ i ≤ 63 { GGi(X,Y,Z) = X Y Z,0 ≤ i ≤ 15 (X ∧ Y) ∨ (¬ X ∧ Z),16 ≤ i ≤ 63 { 置换函数 P0(X) 和 P1(X) 的定义如下: P0(X) = X (X < < < 9) (X < < < 17) P1(X) = X (X < < < 15) (X < < < 23) 1.2 填充 设消息的长度为 l 比特。 填充方式为:首先将 比特“1”添加到消息的末尾;然后添加 k 个“0”, k 是满足 l + 1 + k = 448 mod 512 的最小的非负整数; 最后再将消息长度 l 的 64 位二进制表示添加在最 末。 填充后的消息比特长度为 512 的倍数。 1.3 迭代压缩 填充后的消息 m′ 按 512 比特进行分组: m′ = B (0)‖…‖B (n-1) .对每个分组利用压缩函数 CF 进 行迭代: FOR i = 0 TO n - 1 V (i+1) ← CF(V (i) ,B (i) ) END FOR 1.4 压缩函数 压缩函数 CF 的计算过程如下: 首先,计算消息扩展字 Wi,0 ≤ i ≤ 67 和 Wi ′, 0 ≤i ≤ 63,步骤如下: W0‖…‖W15 = B (i) FOR i = 16 TO 67 Wi ← P1(Wi-16 Wi-9 (Wi-3 < < < 15)) (Wi-13 < < < 7) Wi-6 END FOR FOR i = 0 TO 63 W′i ← Wi Wi+4 END FOR 然后,进行包含 64 轮迭代的压缩,步骤如下: A‖B‖C‖D‖E‖F‖G‖H ← V (i) FOR i = 0 TO 63 SS1 ← ((A < < < 12) + E + (Tj < < < j)) < < < 7 SS2 ← SS1 (A < < < 12) 第 6 期 杨先伟,等:SM3 杂凑算法的软件快速实现研究 ·955·
·956· 智能系统学报 第10卷 TT-FF (A,B,C)+D SS2 +W' 了字W。,…,W。和W。,…,W的加载和存储次 TT2+GG(E,F,G)+H SS W 数,提高了消息扩展的速度。 D←-C 2.2压缩函数的快速实现 C←-B>>32, F←E EIF‖GIH←-(EIFIGIH)>>>32。为了减 E←-P(TT2) 少循环移位导致的不必要的赋值运算,可以将字的 END FOR 循环右移变更每轮输入字顺序的变动,且这个顺序 +)←V⊕(AIBICID‖EIFIGIH) 变动会在4轮后还原,具体情况如下(以下用 1.5输出杂凑值 OneRound(·)表示一轮压缩): 256比特杂凑值y的计算方式为 OneRound(i+0,A,B,C,D,E,F,G,H,W) y←(AIBICIDIEIFIGIH)←O OneRound(i +1,D,A,B,C,H,E,F,G,W) 2软件快速实现 OneRound(i +2,C,D,A,B,G,H,E,F,W) OneRound(i+3,B,C,D,A,F,G,H,E,W) 从理论上讲,SM3算法中使用最多且最耗时的 2)可以优化压缩函数的中间变量的生成流程。 是64轮压缩函数和消息扩展。利用Intel VTune 此优化生成流程可以去除不必要的赋值,减少中间 Amplifier XE分析算法热点,得出信息如下表。 变量个数。优化后的执行步骤如下(其中t:=T: 表1普通实现时的热点 <<<i为常数): Table 1 The hot spots of general implementation TT2←-A<<<12 参数 耗时/s 百分比/% TT1←-TT2+E+ 整体 21.795 100 TT,←TT,<<<7 压缩函数 14.355 65.9 TT2←TT,⊕TT 消息扩展 5.287 24.3 3)利用上述调整以及消息扩展部分的调整可 其他 2.153 9.8 以将原来计算TT1、TT2、D和H的过程进行如下的 热点信息显示,压缩函数和消息扩展的确是最 进一步简化。 耗时的2个部分,其耗时分别占总耗时的65.9%和 D←-D+FF(A,B,C)+TT2+(W:①W+a) 24.3%。因此,快速实现的关键在怎样快速实现压 H←H+GG(A,B,C)+TT,+W 缩函数和消息扩展。 4)预先计算并存储常数t:=T:<<<i。这可 2.1消息扩展的快速实现 以避免每个消息分组都去计算常数,且占用的存储 消息扩展的目的是利用512比特的消息分组B 空间也很少,仅256Byte。 扩展得到68个字W。,…,W,和64个字W。,…, 2.3调整后的算法描述 W'6 优化后的算法将消息扩展和压缩函数结合在一 快速实现时,为了尽可能减少不必要的数据加 起。下面先描述调整后的消息处理算法,该算法完 载和存储,W。,…,W和W'。,…,W6a的计算可以 成消息扩展和64轮压缩迭代:再描述调整后的一轮 调整到压缩函数里执行,具体实施过程是: 算法,该算法完成一轮压缩迭代,包括计算必需的消 1)首先在执行64轮压缩函数前只计算初始的 息扩展字W+4。调整后的消息处理算法描述如下。 4个字Wo,…,W3 算法1调整后的消息处理算法 2)然后在压缩函数的第i轮生成W:+4,而W': ProcessBlock(V,M) 则使用W:=W①W4代替。 输入:上轮迭代结果V,一个消息分组B 经过这样的调整,去掉了字W。,…,W6品,减少 输出:本轮迭代结果V
TT1 ← FFi(A,B,C) + D + SS2 + Wi ′ TT2 ← GGi(E,F,G) + H + SS1 + Wi D ← C C ← B < < < 9 B ← A A ← TT1 H ← G G ← F < < < 19 F ← E E ← P0(TT2 ) END FOR V (i+1) ← V (i) (A‖B‖C‖D‖E‖F‖G‖H) 1.5 输出杂凑值 256 比特杂凑值 y 的计算方式为 y ← (A‖B‖C‖D‖E‖F‖G‖H) ← V (n) 2 软件快速实现 从理论上讲,SM3 算法中使用最多且最耗时的 是 64 轮压缩函数和消息扩展。 利用 Intel VTune Amplifier XE 分析算法热点,得出信息如下表。 表 1 普通实现时的热点 Table 1 The hot spots of general implementation 参数 耗时/ s 百分比/ % 整体 21.795 100 压缩函数 14.355 65.9 消息扩展 5.287 24.3 其他 2.153 9.8 热点信息显示,压缩函数和消息扩展的确是最 耗时的 2 个部分,其耗时分别占总耗时的 65.9%和 24.3%。 因此,快速实现的关键在怎样快速实现压 缩函数和消息扩展。 2.1 消息扩展的快速实现 消息扩展的目的是利用 512 比特的消息分组 B 扩展得到 68 个字 W0 ,…,W67 和 64 个字 W′0 ,…, W′63 。 快速实现时,为了尽可能减少不必要的数据加 载和存储, W0 ,…,W67 和 W′0 ,…,W′63 的计算可以 调整到压缩函数里执行,具体实施过程是: 1)首先在执行 64 轮压缩函数前只计算初始的 4 个字 W0 ,…,W3 ; 2)然后在压缩函数的第 i 轮生成 Wi+4 ,而 W′i 则使用 W′i = Wi Wi+4 代替。 经过这样的调整,去掉了字 W′0 ,…,W′63 ,减少 了字 W0 ,…,W67 和 W′0 ,…,W′63 的加载和存储次 数,提高了消息扩展的速度。 2.2 压缩函数的快速实现 压缩函数的快速实现可以从结构调整、流程变 更、常数计算等方面着手。 1)压缩函数的结构可以做适当的调整。 压缩 函数每一轮的最末会执行如下所示的循环右移, A‖B‖C‖D ← (A‖B‖C‖D) > > > 32, E‖F‖G‖H ← (E‖F‖G‖H) > > > 32。 为了减 少循环移位导致的不必要的赋值运算,可以将字的 循环右移变更每轮输入字顺序的变动,且这个顺序 变动 会 在 4 轮 后 还 原, 具 体 情 况 如 下 ( 以 下 用 OneRound(·) 表示一轮压缩): OneRound(i + 0,A,B,C,D,E,F,G,H,W) OneRound(i + 1,D,A,B,C,H,E,F,G,W) OneRound(i + 2,C,D,A,B,G,H,E,F,W) OneRound(i + 3,B,C,D,A,F,G,H,E,W) 2)可以优化压缩函数的中间变量的生成流程。 此优化生成流程可以去除不必要的赋值,减少中间 变量个数。 优化后的执行步骤如下(其中 t i = Ti < < < i 为常数): TT2 ← A < < < 12 TT1 ← TT2 + E + t i TT1 ← TT1 < < < 7 TT2 ← TT2 TT1 3)利用上述调整以及消息扩展部分的调整可 以将原来计算 TT1 、 TT2 、 D 和 H 的过程进行如下的 进一步简化。 D ← D + FFi(A,B,C) + TT2 + (Wi Wi+4 ) H ← H + GGi(A,B,C) + TT1 + Wi 4)预先计算并存储常数 t i = Ti < < < i 。 这可 以避免每个消息分组都去计算常数,且占用的存储 空间也很少,仅 256 Byte。 2.3 调整后的算法描述 优化后的算法将消息扩展和压缩函数结合在一 起。 下面先描述调整后的消息处理算法,该算法完 成消息扩展和 64 轮压缩迭代;再描述调整后的一轮 算法,该算法完成一轮压缩迭代,包括计算必需的消 息扩展字 Wi+4 。 调整后的消息处理算法描述如下。 算法 1 调整后的消息处理算法 ProcessBlock( V,M ) 输入:上轮迭代结果 V ,一个消息分组 B 输出:本轮迭代结果 V ·956· 智 能 系 统 学 报 第 10 卷
第6期 杨先伟,等:SM3杂凑算法的软件快速实现研究 ·957. 中间变量:字寄存器A一H, 已经求出,执行完毕后W+4也被计算出来:步骤2 步骤: 中的t:为常量T:<<<i,应预先计算并存储,使用 1)W。‖W,IW2‖W3←-B。IB,‖B2lB3, 时只需查表:由于W,、FF,、GG:的计算方式在i< 2)AIBI C IDI E I F I GIH-V, 16时和i≥16时不同,因此可以考虑将0 neRound 3)F0R(i=0,4,8,…,60), 函数分为0≤i<12、12≤i<16、16≤i<643种 OneRound(i +0,A,B,C,D,E,F,G,H,W), 情况分别实现。 OneRound(i 1,D,A,B,C,H,E,F,G,W), OneRound(i +2,C,D,A,B,G,H,E,F,W), 32种实现方式的计算量分析评估 OneRound(i +3,B,C,D,A,F,G,H,E,W), 为了从理论上评估新方法的效率,本节对2种 END FOR 方法的计算量进行详细对比。由于算法的操作主要 4)V←V⊕(A IB I C‖DIEIFIGIH), 集中在压缩函数中,因此以下对压缩函数的计算量 5)返回V。 进行统计、分析和对比。优化前的方法严格按照标 对算法1做以下儿点说明:这里的 准文档,先计算消息扩展字,再进行64轮迭代,优化 B。‖B,…‖Bs=B分别代表消息的16个字:前4 后的方法则按照上一节描述的算法1和算法2进行 个消息扩展字W。、W,、W2、W3需在循环前计算出来, 实现。以下用LOAD和STORE表示数据加载和存 进入后面的循环后,每次执行OneRound(i,*)将 储,XOR表示异或运算,ROT表示移位运算,ADD 计算W:+4。 表示加法运算,AND表示与运算,OR表示或运算, 调整后的一轮压缩算法如下。 NOT表示非运算。 算法2调整后的一轮压缩算法 优化前的算法中,消息扩展的计算量为: OneRound(i,A,B,C,D,E,F,G,H,W) 1)计算前16个W,时每个需执行1次L0AD和 输入:字寄存器A一H,轮序号i,消息扩展字数 1次STORE,计算后52个W时每个需执行5次 组W=(Wo,…,W6) LOAD、1次STORE,6次XOR、4次ROT; 输出:更新后的A一H和W=(W。,…,W6) 2)计算64个W',每个需执行2次L0AD、1次 步骤: STORE、1次ROT: 1)计算消息扩展字W+4 3)计算压缩函数的一次迭代需要执行3次 F(i<12)W:+4←-B+d LOAD、12次STORE、8次ADD、3次XOR、8次 ELSE W44←-P,(W-2①W-s⊕(W+1<<< ROT、1次FFi函数和1次GGi函数, 15))④(W-9<<<7)⊕W-2 4)F℉i函数和GGi函数的计算量是,前16次 END IF FFi函数需执行2次XOR和2次ROT,前16次GGi 2)计算中间变量TT,和TT, 函数需执行2次XOR和2次ROT,后48次FFi函 TT2←-A<<<12 数需执行3次AND和2次OR,后48次GGi函数需 TT,←-TT2+E+t 执行2次AND、1次OR、1次NOT。 TT,←TT,<<<7 根据以上统计分析,表2列出了优化前的算法 TT2←TT,①TT1 中对一个512比特的消息块执行一次完整的压缩所 3)仅更新字寄存器B、D、F、H。 需的计算量。 D←-D+FF,(A,B,C)+TT2+(W:①W+a) 优化后的算法中,消息扩展的计算量为: H-H+GG(E,F,G)TT +Wi 1)计算前12个W+4时每个需执行1次L0AD B-B<<<9 和1次STORE,计算后52个W+4时每个需执行5 F←-F<<<19 次LOAD、1次STORE、6次XOR、4次ROT; H←-P。(H) 2)计算中间变量TT,和TT,需要执行1次 4)返回更新后的A一H和W=(W。,…,W)。 LOAD、2次STORE、2次ADD、1次XOR、2次ROT; 对算法2做以下几点说明:进入第i轮的算法2 3)更新字寄存器B、D、F、H需要执行:1次 之时,消息扩展字只有{W|k<i+4}这部分信息 LOAD、1次STORE、6次ADD、3次XOR、4次ROT
中间变量:字寄存器 A—H , 步骤: 1) W0‖W1‖W2‖W3 ← B0‖B1‖B2‖B3 , 2) A‖B‖C‖D‖E‖F‖G‖H ← V , 3)FOR ( i = 0,4,8,…,60), OneRound(i + 0,A,B,C,D,E,F,G,H,W) , OneRound(i + 1,D,A,B,C,H,E,F,G,W) , OneRound(i + 2,C,D,A,B,G,H,E,F,W) , OneRound(i + 3,B,C,D,A,F,G,H,E,W) , END FOR 4) V ← V (A‖B‖C‖D‖E‖F‖G‖H) , 5)返回 V 。 对 算 法 1 做 以 下 几 点 说 明: 这 里 的 B0‖B1‖…‖B15 = B 分别代表消息的 16 个字;前 4 个消息扩展字 W0 、W1 、W2 、W3 需在循环前计算出来, 进入后面的循环后,每次执行 OneRound(i,∗) 将 计算 Wi+4 。 调整后的一轮压缩算法如下。 算法 2 调整后的一轮压缩算法 OneRound( i,A,B,C,D,E,F,G,H,W ) 输入:字寄存器 A—H, 轮序号 i ,消息扩展字数 组 W = (W0 ,…,W67 ) 输出:更新后的 A—H 和 W = (W0 ,…,W67 ) 步骤: 1)计算消息扩展字 Wi+4 IF( i < 12) Wi+4 ← Bi+4 ELSE Wi+4 ← P1(Wi-12 Wi-5 (Wi+1 < < < 15)) (Wi-9 < < < 7) Wi-2 END IF 2)计算中间变量 TT1 和 TT2 TT2 ← A < < < 12 TT1 ← TT2 + E + t i TT1 ← TT1 < < < 7 TT2 ← TT2 TT1 3)仅更新字寄存器 B、D、F、H。 D ← D + FFi(A,B,C) + TT2 + (Wi Wi+4 ) H ← H + GGi(E,F,G) + TT1 + Wi B ← B < < < 9 F ← F < < < 19 H ← P0(H) 4)返回更新后的 A—H 和 W = (W0 ,…,W67 ) 。 对算法 2 做以下几点说明:进入第 i 轮的算法 2 之时,消息扩展字只有 {Wk | k < i + 4} 这部分信息 已经求出,执行完毕后 Wi+4 也被计算出来;步骤 2 中的 t i 为常量 Ti < < < i ,应预先计算并存储,使用 时只需查表;由于 Wi 、 FFi 、 GGi 的计算方式在 i < 16 时和 i ≥ 16 时不同,因此可以考虑将 OneRound 函数分为 0 ≤ i < 12、 12 ≤ i < 16、 16 ≤ i < 643 种 情况分别实现。 3 2 种实现方式的计算量分析评估 为了从理论上评估新方法的效率,本节对 2 种 方法的计算量进行详细对比。 由于算法的操作主要 集中在压缩函数中,因此以下对压缩函数的计算量 进行统计、分析和对比。 优化前的方法严格按照标 准文档,先计算消息扩展字,再进行 64 轮迭代,优化 后的方法则按照上一节描述的算法 1 和算法 2 进行 实现。 以下用 LOAD 和 STORE 表示数据加载和存 储,XOR 表示异或运算,ROT 表示移位运算,ADD 表示加法运算,AND 表示与运算,OR 表示或运算, NOT 表示非运算。 优化前的算法中,消息扩展的计算量为: 1)计算前 16 个 Wi 时每个需执行 1 次 LOAD 和 1 次 STORE,计算后 52 个 Wi 时每个需执行 5 次 LOAD、1 次 STORE、6 次 XOR、4 次 ROT; 2)计算 64 个 W′i 每个需执行 2 次 LOAD、1 次 STORE、1 次 ROT; 3)计算压缩函数的一次迭代需要执行 3 次 LOAD、12 次 STORE、 8 次 ADD、 3 次 XOR、 8 次 ROT、1 次 FFi 函数和 1 次 GGi 函数, 4) FFi 函数和 GGi 函数的计算量是,前 16 次 FFi 函数需执行 2 次 XOR 和 2 次 ROT,前 16 次 GGi 函数需执行 2 次 XOR 和 2 次 ROT,后 48 次 FFi 函 数需执行 3 次 AND 和 2 次 OR,后 48 次 GGi 函数需 执行 2 次 AND、1 次 OR、1 次 NOT。 根据以上统计分析,表 2 列出了优化前的算法 中对一个 512 比特的消息块执行一次完整的压缩所 需的计算量。 优化后的算法中,消息扩展的计算量为: 1)计算前 12 个 Wi+4 时每个需执行 1 次 LOAD 和 1 次 STORE,计算后 52 个 Wi+4 时每个需执行 5 次 LOAD、1 次 STORE、6 次 XOR、4 次 ROT; 2)计算中间变量 TT1 和 TT2 需要执行 1 次 LOAD、2 次 STORE、2 次 ADD、1 次 XOR、2 次 ROT; 3) 更 新 字 寄 存 器 B、D、F、H 需 要 执 行: 1 次 LOAD、1 次 STORE、6 次 ADD、3 次 XOR、4 次 ROT、 第 6 期 杨先伟,等:SM3 杂凑算法的软件快速实现研究 ·957·
·958· 智能系统学报 第10卷 1次FFi函数和1次GGi函数; 根据以上统计分析,表2列出了优化后的算法 4)FFi函数和GGi函数的计算量同优化前的计 中对一个512比特的消息块执行一次完整的压缩所 算量。 需的计算量。 表2优化前后一次压缩函数的计算量 Table 2 The computation of the compression function of the before and after optimization LOAD STORE ADD XOR ROT AND OR NOT 合计 优化前 596 900 512 632 720 240 144 48 3792 优化后 400 256 512 632 592 240 144 好 2824 从表2可知,优化后的压缩函数通过轮函数的 情况说明。 调整和消息扩展函数的优化,大大减少了LOAD和 1)第1组测试中测试1个数据包,该数据包为 STORE的次数,同时中间变量TT,和TT,的优化实 256×10个字节,此测试用以模拟大量数据杂凑的 现又进一步减少了ROT的次数,其余运算的计算量 情况,如大型文件杂凑; 无变化。 2)第2组测试中杂凑200个数据包,每个数据 如果从操作总数的角度考虑,优化后算法的速 包1.28×10个字节,此测试用以模拟中型数据包杂 度可提升(3792-2824)/2824=34.3%。但实际 凑的情况,如图片等: 上CPU执行这些操作指令时,不同的操作具有不同 3)第3组测试中杂凑40000个数据包,每个数 的指令执行周期(eycle),甚至不同的CPU执行相同 据包6.4×103个字节,此测试用以模拟普通网络数 的运算所需的指令周期也各不相同。大部分CPU 据包杂凑的情况; 执行整数的算数运算和逻辑运算需1个时钟周期, 4)第4组测试中杂凑8×10个数据包,每个数 而执行LOAD和STORE则需要多个时钟周期,且各 据包32个字节,此测试用以模拟频繁的微小型数据 CPU的执行时间也有较大差异。以下假设执行每个 包杂凑的情况。 算数逻辑运算需1个时钟周期。如果执行LOAD需 为了统计每种测试的准确耗时值,每组测试都 1个时钟周期,执行STORE需2个时钟周期,则优化 反复进行21次并记录各次的时间,最后从大到小排 后算法的速度可提升52.3%。:如果假设执行LOAD 列后取最中间的值作为统计耗时值。 需1.5个时钟周期,执行ST0RE需2.5个时钟周期, 测试使用的软件平台详情如下:Windows XP 则优化后算法的速度可提升59.6%:如果假设执行 SP332比特、Intel Core i3@3400MHz、4 GB DDR3- LOAD需2个时钟周期,执行STORE需3个时钟周 1600 SDRAM、Microsoft Visual Studio8.0。速度单位 期,则优化后算法的速度可提升65.6%。不同假设 为Mbi/s。其中处理器的缓存情况为[):一级缓存 下的速度提升情况见下表3。 为每个核心32KB,2级缓存为每个核心64KB,3级 表3不同情况下的优化前后速度提升估计值 缓存为多核共享3MB。 Table 3 The speed of the before and after optimization 表42种实现方式的性能比较 算数逻辑 LOAD STORE 速度 Table 4 The performance comparison of two implementa- 运算(cycle) (cycle) (cycle) 提升/% tion methods 1 1.0 1.0 34.3 测试 速度/(Mh·s1) 速度 1 1.0 2.0 52.3 类别 优化前 优化后 提升/% 1 1.5 2.5 59.6 第1组测试 739 1203 62.8 1 2.0 3.0 65.6 第2组测试 733 1191 62.5 第3组测试 701 1074 53.2 4 模拟实验与对比测试 第4组测试 642 973 51.6 为了模拟真实环境中对SM3算法软件实现的 平均 704 1110 57.7 需求,下面的实验中进行了4组测试,每组测试方法 上表列出的测试结果表明:1)数据包越大,执行 对多个数据包进行杂凑,每个数据包为特定长度字 效率越高,这是因为大型数据包减少了一头一尾的 节,然后统计耗时和速度。以下为4组测试的详细 初始化、消息填充和反初始化等工作:2)优化调整后
1 次 FFi 函数和 1 次 GGi 函数; 4)FFi 函数和 GGi 函数的计算量同优化前的计 算量。 根据以上统计分析,表 2 列出了优化后的算法 中对一个 512 比特的消息块执行一次完整的压缩所 需的计算量。 表 2 优化前后一次压缩函数的计算量 Table 2 The computation of the compression function of the before and after optimization LOAD STORE ADD XOR ROT AND OR NOT 合计 优化前 596 900 512 632 720 240 144 48 3 792 优化后 400 256 512 632 592 240 144 48 2 824 从表 2 可知,优化后的压缩函数通过轮函数的 调整和消息扩展函数的优化,大大减少了 LOAD 和 STORE 的次数,同时中间变量 TT1 和 TT2 的优化实 现又进一步减少了 ROT 的次数,其余运算的计算量 无变化。 如果从操作总数的角度考虑,优化后算法的速 度可提升 (3 792 - 2 824) / 2 824 = 34.3% 。 但实际 上 CPU 执行这些操作指令时,不同的操作具有不同 的指令执行周期(cycle),甚至不同的 CPU 执行相同 的运算所需的指令周期也各不相同。 大部分 CPU 执行整数的算数运算和逻辑运算需 1 个时钟周期, 而执行 LOAD 和 STORE 则需要多个时钟周期,且各 CPU 的执行时间也有较大差异。 以下假设执行每个 算数逻辑运算需 1 个时钟周期。 如果执行 LOAD 需 1 个时钟周期,执行 STORE 需 2 个时钟周期,则优化 后算法的速度可提升 52.3%。;如果假设执行 LOAD 需 1.5 个时钟周期,执行 STORE 需 2.5 个时钟周期, 则优化后算法的速度可提升 59.6%;如果假设执行 LOAD 需 2 个时钟周期,执行 STORE 需 3 个时钟周 期,则优化后算法的速度可提升 65.6%。 不同假设 下的速度提升情况见下表 3。 表 3 不同情况下的优化前后速度提升估计值 Table 3 The speed of the before and after optimization 算数逻辑 运算(cycle) LOAD (cycle) STORE (cycle) 速度 提升/ % 1 1.0 1.0 34.3 1 1.0 2.0 52.3 1 1.5 2.5 59.6 1 2.0 3.0 65.6 4 模拟实验与对比测试 为了模拟真实环境中对 SM3 算法软件实现的 需求,下面的实验中进行了 4 组测试,每组测试方法 对多个数据包进行杂凑,每个数据包为特定长度字 节,然后统计耗时和速度。 以下为 4 组测试的详细 情况说明。 1)第 1 组测试中测试 1 个数据包,该数据包为 256 × 10 6 个字节,此测试用以模拟大量数据杂凑的 情况,如大型文件杂凑; 2)第 2 组测试中杂凑 200 个数据包,每个数据 包 1.28 × 10 6 个字节,此测试用以模拟中型数据包杂 凑的情况,如图片等; 3)第 3 组测试中杂凑 40 000 个数据包,每个数 据包 6.4 × 10 3 个字节,此测试用以模拟普通网络数 据包杂凑的情况; 4)第 4 组测试中杂凑 8 × 10 6 个数据包,每个数 据包 32 个字节,此测试用以模拟频繁的微小型数据 包杂凑的情况。 为了统计每种测试的准确耗时值,每组测试都 反复进行 21 次并记录各次的时间,最后从大到小排 列后取最中间的值作为统计耗时值。 测试使用的软件平台详情如下: Windows XP SP3 32 比特、Intel Core i3@ 3400 MHz、4 GB DDR3⁃ 1600 SDRAM、Microsoft Visual Studio 8.0。 速度单位 为 Mbit / s。 其中处理器的缓存情况为[13] :一级缓存 为每个核心 32 KB,2 级缓存为每个核心 64 KB,3 级 缓存为多核共享 3 MB。 表 4 2 种实现方式的性能比较 Table 4 The performance comparison of two implementa⁃ tion methods 测试 类别 速度/ (Mb·s -1 ) 优化前 优化后 速度 提升/ % 第 1 组测试 739 1 203 62.8 第 2 组测试 733 1 191 62.5 第 3 组测试 701 1 074 53.2 第 4 组测试 642 973 51.6 平均 704 1 110 57.7 上表列出的测试结果表明:1)数据包越大,执行 效率越高,这是因为大型数据包减少了一头一尾的 初始化、消息填充和反初始化等工作:2)优化调整后 ·958· 智 能 系 统 学 报 第 10 卷
第6期 杨先伟,等:SM3杂凑算法的软件快速实现研究 .959. 的算法效率提升显著,可以提升60%左右,在杂凑大 [8]王晓燕,杨先文.基于FPGA的SM3算法优化设计与实 中型数据包时速度提升60%以上,即使在杂凑微小 现[J].计算机工程,2012,38(6):244-246. 型数据包时效率也能提升50%以上。 WANG Xiaoyan,YANG Xianwen.Optimization design and implementation of SM3 algorithm based on FPGA[J].Com- 4结束语 puter Engineering,2012,38(6):244-246. [9]伍娟.国密SM3算法在C0S上的研究与实现[J刀].科技 本文对我国国家密码管理局发布的SM3密码杂 信息,2013,(2):294-295. 凑算的软件快速实现进行研究,根据算法自身的特 WU Juan.Research and implementation of SM3 algorithm on 点,尤其是压缩函数的特点,给出一种更加适用于软 COS[J].Science Technology Information,2013,(2): 件快速实现的算法描述方式和实现方法。理论分析 294-295. 得出的算法计算量以及模拟实验结果均表明,利用此 [10]曾小波,唐忠彪,焦歆.基于单片机的SM3算法优化及 软件快速实现方法可以将算法的效率提升60%左右。 Verilog模型验证[J].电子科技,2015,28(2):38-40. 另外,此软件快速实现方式不基于特定的平台、架构、 ZENG Xiaobo,TANG Zhongbiao,JIAO Xin.Optimization 指令等,因此具有很强的跨平台性和兼容性。 of SM3 algorithm and Verilog model validation based on SCM[J].Electronic Science and Technology,2015,28 参考文献: (2):38-40. [1l]沈一公,苏厚勤.基于Android的SM3密码杂凑算法研 [1]NIST.Federal information processing standards publication 180-3,secure hash standards (SHS)[S].Gaithersburg, 究与实现[J].电子技术与软件工程,2013(18):69-70. SHEN Yigong,SU Houqin.Research and implementation MD,USA:Information Technology Laboratory of National of SM3 algorithm based on android[J].Electronic Technol- Institute of Standards and Technology,2008.http://csre. ogy Software Engineering,2013(18):69-70. nist.gov/publications. [12]易叔贤,张非凡.SM系列算法在金融IC卡领域的应用 [2]NIST.Cryptographic hash algorithm competition [EB/OL]. (2005-04-15)[2015-08-05].htp:/csrc.nist.gov/groups/, [J].金融电子化.2013(7):49-52. YI Shuxian,ZHANG Feifan.Application of SM series algo- ST/hash/sha-3/index.html. [3]国家密码管理局.SM3密码杂凑算法[S].北京:国家密 rithm in the field of financial IC card[J].Financial Com- 码管理局,2010. puterizing,2013(7):49-52. [13]ntel.2nd generation intel coreTM processor family desktop National Cryptography Administration.SM3 cryptographic datasheet[EB/0L].(2011-01-04)[2013-07-08].htp:/ hash algorithm[S].Beijing:National Cryptography Admin- www.intel.com/content/www/us/en/processors/core/2nd- istration,2010. [4]ACIICMEZ O.Fast hashing on pentium SIMD architecture gen-core-desktop-vol-1-datasheet.html. 作者简介: [D].Corvallis,Oregon:Oregon State University,2004. 杨先伟,男,1980年生,讲师,主要 [5]GUERON S,KRASNOV V.Parallelizing message schedules 研究方向为通信与系统工程。 to accelerate the computations of hash functions[R].2012. http://eprint.iacr.org/2012/067.pdf [6]GUERON S,KRASNOV V.Simultaneous hashing of multi- ple messages[J].Journal of Information Security,2012,3 (4):319-325. [7]张倩,李树国.SM3杂凑算法的ASIC设计和实现[J].微 康红娟,女,1983年生,工程师,主 电子学与计算机,2014,31(9):143-146,152 要研究方向为保密通信。 ZHANG Qian,LI Shuguo.Design and implementation of SM3 algorithm in ASIC[J].Microelectronics Computer. 2014,31(9):143-146,152
的算法效率提升显著,可以提升 60%左右,在杂凑大 中型数据包时速度提升 60%以上,即使在杂凑微小 型数据包时效率也能提升 50%以上。 4 结束语 本文对我国国家密码管理局发布的 SM3 密码杂 凑算的软件快速实现进行研究,根据算法自身的特 点,尤其是压缩函数的特点,给出一种更加适用于软 件快速实现的算法描述方式和实现方法。 理论分析 得出的算法计算量以及模拟实验结果均表明,利用此 软件快速实现方法可以将算法的效率提升 60%左右。 另外,此软件快速实现方式不基于特定的平台、架构、 指令等,因此具有很强的跨平台性和兼容性。 参考文献: [1] NIST. Federal information processing standards publication 180⁃3, secure hash standards ( SHS) [ S]. Gaithersburg, MD, USA: Information Technology Laboratory of National Institute of Standards and Technology, 2008. http: / / csrc. nist.gov / publications. [2]NIST. Cryptographic hash algorithm competition [EB/ OL]. (2005⁃04⁃15) [ 2015⁃08⁃05]. http: / / csrc. nist. gov / groups/ ST/ hash / sha⁃3/ index.html. [3]国家密码管理局. SM3 密码杂凑算法[ S]. 北京: 国家密 码管理局, 2010. National Cryptography Administration. SM3 cryptographic hash algorithm[ S]. Beijing: National Cryptography Admin⁃ istration, 2010. [4] ACIICMEZ O. Fast hashing on pentium SIMD architecture [D]. Corvallis, Oregon: Oregon State University, 2004. [5]GUERON S, KRASNOV V. Parallelizing message schedules to accelerate the computations of hash functions[R]. 2012. http: / / eprint.iacr.org / 2012 / 067.pdf [6]GUERON S, KRASNOV V. Simultaneous hashing of multi⁃ ple messages[J]. Journal of Information Security, 2012, 3 (4): 319⁃325. [7]张倩, 李树国. SM3 杂凑算法的 ASIC 设计和实现[J]. 微 电子学与计算机, 2014, 31(9): 143⁃146, 152. ZHANG Qian, LI Shuguo. Design and implementation of SM3 algorithm in ASIC[ J]. Microelectronics & Computer, 2014, 31(9): 143⁃146, 152. [8]王晓燕, 杨先文. 基于 FPGA 的 SM3 算法优化设计与实 现[J]. 计算机工程, 2012, 38(6): 244⁃246. WANG Xiaoyan, YANG Xianwen. Optimization design and implementation of SM3 algorithm based on FPGA[ J]. Com⁃ puter Engineering, 2012, 38(6): 244⁃246. [9]伍娟. 国密 SM3 算法在 COS 上的研究与实现[ J]. 科技 信息, 2013, (2): 294⁃295. WU Juan. Research and implementation of SM3 algorithm on COS[J]. Science & Technology Information, 2013, ( 2): 294⁃295. [10]曾小波, 唐忠彪, 焦歆. 基于单片机的 SM3 算法优化及 Verilog 模型验证[J]. 电子科技, 2015, 28(2): 38⁃40. ZENG Xiaobo, TANG Zhongbiao, JIAO Xin. Optimization of SM3 algorithm and Verilog model validation based on SCM[ J]. Electronic Science and Technology, 2015, 28 (2): 38⁃40. [11]沈一公, 苏厚勤. 基于 Android 的 SM3 密码杂凑算法研 究与实现[J]. 电子技术与软件工程, 2013(18): 69⁃70. SHEN Yigong, SU Houqin. Research and implementation of SM3 algorithm based on android[J]. Electronic Technol⁃ ogy & Software Engineering, 2013(18): 69⁃70. [12]易叔贤, 张非凡. SM 系列算法在金融 IC 卡领域的应用 [J]. 金融电子化, 2013(7): 49⁃52. YI Shuxian, ZHANG Feifan. Application of SM series algo⁃ rithm in the field of financial IC card[ J]. Financial Com⁃ puterizing, 2013(7): 49⁃52. [13]ntel. 2nd generation intel ® coreTM processor family desktop datasheet[EB/ OL]. (2011⁃01⁃04) [2013⁃07⁃08]. http: / / www. intel. com/ content / www/ us/ en / processors/ core / 2nd⁃ gen⁃core⁃desktop⁃vol⁃1⁃datasheet.html. 作者简介: 杨先伟,男,1980 年生,讲师,主要 研究方向为通信与系统工程。 康红娟,女,1983 年生,工程师,主 要研究方向为保密通信。 第 6 期 杨先伟,等:SM3 杂凑算法的软件快速实现研究 ·959·