1、密码学报ISSN 2095-7025 CN 10-1195/TNJournal of Cryptologic Research,2023,10(4):813822密码学报编辑部版权所有.E-mail:http:/Tel/Fax:+86-10-82789618基于 SM3 并行实现的 SM2-KDF 快速实现算法*陈学雷1,付 勇1,4,王美琴2,3,41.齐鲁工业大学(山东省科学院)山东省计算中心(国家超级计算济南中心)山东省计算机网络重点实验室,济南2500102.山东大学 网络空间安全学院,青岛 2662373.密码技术和信息安全教育部重点实验室,青岛 2662374.泉城实验室,济南 2
2、50010通信作者:付勇,E-mail:摘要:本文提出了一种基于 SIMD 寄存器 SM3 并行算法的快速 SM2-KDF 实现方法.首先预计算KDF 所需的计数器 ct 值,再根据消息长度分组执行串行/并行的 SM3 哈希运算,在 SM3 消息扩展与迭代压缩部分使用 PSHUFB 与 VPGATHERDD 指令并行处理,之后对数据重新装配以使用 256 位 YMM寄存器进行轮函数的运算,最后将输出哈希值与消息异或得到密文.在 AMD Ryzen 5 3600 6-Core 3.6GHz 和 Intel I5-7200U 2.4 GHz 两种测试环境下,SM2 的 KDF 算法在消息长度大于
3、1 KB 时速度可提升至标准实现的 3 倍.在应用并行 KDF 算法后 SM2 公钥加密算法加密速度最快可提升 47%,解密速度最快可提升 53%,本方法同样适用于其他杂凑算法和公钥加解密算法的软件加速.关键词:SM2 加解密;SM3;SIMD;软件快速实现;KDF中图分类号:TP309.7文献标识码:ADOI:10.13868/ki.jcr.000630中文引用格式:陈学雷,付勇,王美琴.基于 SM3 并行实现的 SM2-KDF 快速实现算法J.密码学报,2023,10(4):813822.DOI:10.13868/ki.jcr.000630英文引用格式:CHEN X L,FU Y,WANG
4、 M Q.Optimized implementation of SM2-KDF based on parallelSM3J.Journal of Cryptologic Research,2023,10(4):813822.DOI:10.13868/ki.jcr.000630Optimized Implementation of SM2-KDF Based on Parallel SM3CHEN Xue-Lei1,FU Yong1,4,WANG Mei-Qin2,3,41.Shandong Provincial Key Laboratory of Computer Networks,Shan
5、dong Computer Science Center(National Supercomputer Center in Jinan),Qilu University of Technology(Shandong Academy of Science),Jinan 250100,China2.Shandong University School of Cyber Science And Technology,Shandong University,Qingdao 266237,China*基金项目:国家自然科学基金(62032014);国家重点研发计划(2018YFA0704702);山东省
6、自然科学基金重大基础研究项目(ZR202010220025);齐鲁工业大学(山东省科学院)基础研究加强项目(2021JC02017);齐鲁工业大学(山东省科学院)科教产融合试点工程重大创新专项(2022JBZ01-01)Foundation:National Natural Science Foundation of China(62032014);National Key Research and DevelopmentProgram of China(2018YFA0704702);Major Basic Research Program of Natural Science Founda
7、tion of ShandongProvince(ZR202010220025);Basic Research Program of Qilu University of Technology(Shandong Academy of Sci-ences)(2021JC02017);Pilot Project for Integrated Innovation of Science Education and Industry of Qilu University ofTechnology(Shandong Academy of Sciences)(2022JBZ01-01)收稿日期:2022-
8、08-04定稿日期:2022-11-30814Journal of Cryptologic Research 密码学报 Vol.10,No.4,Aug.20233.Key Lab of Cryptologic Technology and Information Security Ministry of Education,Qingdao,266237,China4.Quan Cheng Laboratory,Jinan,250001,ChinaCorresponding author:FU Yong,E-mail:Abstract:In this paper,an efficient imp
9、lementation of SM2-KDF based on SIMD operations andSM3 parallel algorithm is proposed.First,the KDF counter value ct is precomputed,and then se-rial/parallel SM3 hash is computed in groups according to message length.In the process of messageexpansion and iterative compression of SM3,PSHUFB and VPGA
10、THERDD are used for parallel pro-cessing,and then the data is reassembled to conduct round function operation using 256-bit YMMregister.Finally,the output hash value is XORed with the message to obtain the ciphertext.In thesettings of both AMD Ryzen 5 3600 6-Core 3.6 GHz and Intel I5-7200U 2.4 GHz,t
11、he SM2-KDFalgorithm can be up to three times faster than the standard implementation of SM2 when the messagelength is larger than 1 KB.When the parallel KDF implementation is used,the SM2 encryption anddecryption speed can be improved by 47%and 53%respectively,compared to the standard implemen-tatio
12、n of SM2.Moreover,the proposed method can be applied to other HASH algorithms and PublicKey Encryption algorithms.Key words:SM2 encrypt and decrypt;SM3;SIMD;software implement;KDF1引言随着移动支付、电商及手游应用的普及,越来越多的高价值数据在非安全信道传输,公钥密码算法由于其安全性、不可否认性的优势在移动支付、敏感数据保护等应用场景得到了广泛应用,但是其算法效率较对称密码差.如今 5G 通信与大数据技术飞速发展,数据
13、安全问题备受重视,加密算法的加密效率与快速实现也成为了关注的重点.同时,国密算法的应用现已成为了必然趋势,提高国密算法的加密效率、解决性能瓶颈是国家密码技术应用领域发展的关键.SM2 算法1是国家密码局所发布的公钥加密算法,与 RSA 相比,SM2 更为安全可靠.在 SM2 的KDF(密钥派生函数)算法中,所采用的哈希算法为 SM32,而 SM3 算法是我国采用的一种商用密码标准,其安全性及效率与 SHA-256 相当.哈希算法的运算效率在各种系统、环境下都是重要的考量标准,如在 P2P 数据完整性的校验以及 SM2中的 KDF 算法就基于哈希算法.国内外许多研究者都在尝试提高哈希算法的运算效
14、率,如 Aciimez3所提出的利用 SIMD 技术对哈希算法进行快速实现,Krawczyk4提出了一种新的基于哈希算法的 KDF方案,Hirose5则对 NIST 所定义的 KDF 函数进行优化并做了并行实现后,又定义了两个新的 KDF 函数并评估了其运算效率,Gueron 等在多个消息的并行处理方面做出了研究6,7.在 SM3 算法的优化方面,杨先伟8提出了一种提高串行运算效率的方法,通过调整轮函数的结构,减少循环移位造成的资源浪费,将字的循环右移直接放在输入中进行变更,在保证执行轮数与结果不变的前提下,减少了轮函数中的计算量,从而提升算法的性能.SIMD(单指令多数据)是利用单指令同时处
15、理多个数据的扩展指令集,可实现数据并行处理从而提升运算效率.AVX2 指令集由 Sandy Bridge 架构上的第一代 AVX 指令集扩展增强而来9,可支持 256位整数矢量操作,较 AVX 性能提升一倍.在明文长度已知且有多条明文需要同时计算时,相比于单独计算每条明文,使用 SIMD 在单 CPU 上批量计算多个独立的哈希值可以达到更好的运算效率并更有效地利用计算资源.KDF 所使用的数据具有等长且规律的特点,非常适用于 SIMD 计算,因此 KDF 有望使用 SIMD 实现并行化.本文利用 AVX2 指令集,通过对数据进行重新装配以使用 256 位 YMM 寄存器将SM3 计算过程并行化
16、,同时对 SM2 的实现过程加以改进,并行实现 KDF 算法.在 SM3 的运算过程中,使用 VPGATHERDD 与 PSHUFB 指令进行消息扩展,在保持原有的哈希依赖前提下,大幅减少了代码的执行条数并提高了运算效率.陈学雷 等:基于 SM3 并行实现的 SM2-KDF 快速实现算法815综上所述,本文主要贡献如下:(1)提出了一种基于 SIMD 的 SM3 快速实现方法,该方法适用于所有具有类似结构的杂凑算法.(2)将 SM2 公钥加密算法中的 KDF 算法并行化,提高了 SM2 加解密的运算效率.本文其余内容如下:第2节介绍 SM3 与 SM2 算法以及快速实现所用到的 AVX2 指令
17、;第3节介绍具体的 SM3 快速实现思路;第4节介绍 SM2 公钥加密算法 KDF 的快速实现思路;第5节介绍实验结果;第6节总结全文.2预备知识2.1SM3 简介SM3 算法为哈希算法,输入长度为 l(l 264)比特的消息 m,SM3 哈希算法执行填充和迭代压缩,经过 64 轮运算后,生成哈希值,哈希值长度为 256 比特.2.2SIMD 以及使用到的 AVX2 指令集SM3 轮函数基于 32 比特无符号数,主要包括模加、异或、或、取反等,大部分操作都可以找到对应的 SIMD 指令.AVX2 寄存器可装载 8 个 32 比特无符号数,一次完成 8 组 32 位无符号数的运算,算法执行效率显
18、著由于标准寄存器实现,虽然需要在开始阶段对数据进行装配并在算法完成后进行解配开销较大,但整体性能仍优于标准实现.表1给出了 SM3 算法快速实现所使用到的 AVX2 指令集.SIMD 实现的基本思想为将多组数据并行处理,其基本操作与标准实现一致.表 1 使用的 AVX2 指令Table 1AVX2 instruction usedAVX2 指令C/C+接口功能VMOVDQU_mm256_loadu_si256加载 256 比特数据VMOVDQU_mm256_storeu_si256存储 256 比特数据VPGATHERDD_mm256_i32gather_epi328 路 32 比特查表PSH
19、UFB_mm256_shuffle_epi88 路 32 比特数据重排PADDD_mm256_add_epi328 路 32 比特模加运算VPOR_mm256_or_si256256 比特按位或运算VOXOR_mm256_xor_si256256 比特按位异或运算VPBROADCASTD_mm_set1_epi328 路 32 比特数据扩展PANDN_mm256_andnot_si256256 比特按位与非运算2.3SM2 算法 KDF 介绍KDF 需要调用密码杂凑算法.设密码杂凑算法为 Hv(),其输出是长度恰为 v 比特的杂凑值.密钥派生函数 KDF(Z,klen):输入:比特串 Z,整数
20、 klen(表示要获得的密钥数据的比特长度,要求该值小于(232 1)v).输出:长度为 klen 的密钥数据比特串 K.(a)初始化一个 32 比特计数器 ct=0 x00000001;(b)对 i 从 1 到 klen/v 执行:(b.1)计算 Hai=Hv(Z|ct);(b.2)ct+;(c)若 klen/v 是整数,令 Ha!klen/v=Haklen/v,否则令 Ha!klen/v为 Haklen/v最左边的(klen(v klen/v)比特;(d)令 K=Ha1|Ha2|Haklen/v1|Ha!klen/v.KDF 算法中的 Z 已知,ct 可以预计算得到,且各组数据无关,可并行
21、处理加速.816Journal of Cryptologic Research 密码学报 Vol.10,No.4,Aug.20233SM3 快速实现思路SM3 快速实现流程如图1所示,首先对 SM3 标准实现中的布尔函数及置换函数并行化处理,具体改动如表2所示.其中 GGj函数的按位与非操作,在标准实现中由 and 和 not 组合实现,在 SIMD 中可使用 PANDN 指令一步实现.P0、P1 中的 MoveLeft(循环移位)操作 AVX2 中无对应指令,需要由 2 个移位和一个异或操作模拟实现(AVX512 支持循环移位).图 1 SM3 快速实现流程Figure 1 SM3 fast
22、 implementation表 2 SM3 各组件改动Table 2SM3 component changes函数名标准实现并行实现FF1jX Y Z_mm256_xor_si256(_mm256_xor_si256(X,Y),Z)FF2j(X&Y)|(X&Z)|(Y&Z)_mm256_or_si256(_mm256_or_si256(_mm256_and_si256(X,Y),_mm256_and_si256(X,Z),_mm256_and_si256(Y,Z)GG1jX Y Z_mm256_xor_si256(_mm256_xor_si256(X,Y),Z)GG2j(X&Y)|(X&Z)
23、_mm256_or_si256(_mm256_and_si256(X,Y),_mm256_andnot_si256(X,Z)P0X(X9)(X17)_mm256_xor_si256(_mm256_xor_si256(X,MoveLeft(X,9),MoveLeft(X,17)P1X(X15)(X23)_mm256_xor_si256(_mm256_xor_si256(X,MoveLeft(X,15),MoveLeft(X,23)注:FF1j与 GG1j中 0 j 15FF2j与 GG2j中 16 j 63MoveLeft(x,y)=(x)(y)|(x)(32 (y)在将标准实现组件并行化后,开
24、始函数的主流程,首先将输入的数据合并为消息 m,长度为 l.计算每条数据的起始位置并对消息 m 进行分组,每组为 512 字节.将消息 m 放入 CF 函数进行计算.CF 函数实现流程为:使用 VPGATHERDD 与 PSHUFB 指令对输入数据进行消息扩展,并将结果放入 _m256i 向量数组 Wj与 Wj中等待轮函数使用,如图2所陈学雷 等:基于 SM3 并行实现的 SM2-KDF 快速实现算法817示.将初始哈希值分别放入 A、B、C、D、E、F、G、H 字寄存器中并使用 VMOVDQU 指令装配后进行轮函数运算,轮函数由 64 轮拆分为前 16 轮与后 48 轮,两组轮函数参数不同.
25、计算完成后再次使用VMOVDQU 指令存储后与初始哈希值进行异或运算,最后输出本组数据的哈希值并传递至下一个分组作为初始哈希值.在执行完 l/512 组运算后,对剩余数据进行消息填充并进行最后一轮 CF 函数计算.最后输出数据,输出为 8 组 64 字节的哈希值.图 2 SM3 轮函数Figure 2 SM3 round functionSM3 算法的标准实现与快速实现的差异主要体现在数据的装配上,如图3所示,压缩函数中所使用到的 A,B,H 这 8 个字,它们之间相互存在数据依赖,而在快速实现中,参与运算的 8 组数据,每组数据相同的字放入同一个寄存器中,字之间的单独运算变成了寄存器之间的运
26、算,提供了并行化的实现条件.在消息扩展的(a)部分,快速实现不再使用查表及字节逆序函数的方式,而是使用 VPGATHERDD 与PSHUFB 指令,将传入的 8 组 64 字节数据在装配的同时完成消息扩展与字节逆序功能.图 3 SM3 数据装配变化Figure 3 SM3 data assembly changes在完成了 SM3 算法快速实现后,可将其应用于 SM2 算法的 KDF 中以提高 SM2 算法的运算效率.4SM2 公钥加密算法 KDF4.1快速实现流程如图4所示,根据 m 的长度 l,分为 3 种情况:l 小于 256 字节、l 等于 256 字节、l 大于 256 字节.(1)
27、l 小于 256 字节时,判断可并行计算的路数,大于等于 4 路使用 SIMD 并行计算哈希值,小于 4路则使用串行计算哈希值.818Journal of Cryptologic Research 密码学报 Vol.10,No.4,Aug.2023(2)l 等于 256 字节时,刚好满足 AVX2 指令集的 8 路并行条件,达到最优效率,因此提前计算出KDF 所需使用的 32 位计数器 ct 值后便可直接调用并行哈希函数进行运算.(3)l 大于 256 字节时,先计算出所有需要的 ct 值,每次取出 8 个用于 KDF 的计算,在剩余数据不足 256 字节时,根据(1)的判断条件选择串行/并行
28、计算哈希.图 4 KDF 快速实现流程化Figure 4 KDF fast implement process如图5所示,两种实现方式的主要差异在于坐标 Z(x2,y2)与计数器 ct 的哈希运算,因运算次数与消息 m 的长度有关,因此在消息 m 较长时,标准实现的哈希运算较为耗时,而使用 SIMD 对哈希运算并行化可以提高局部的运算效率,从而提高算法整体的运算效率.5实验结果本文选择 AMD 锐龙与 Intel 酷睿 7 代各一款 CPU 进行测试,编译器为 GCC 4.9.2,编译选项为-m64、-mavx2 以及-O2.因两款 CPU 架构不同,VPGATHERDD 指令执行时间存在差异
29、,如表3所示,在执行相同代码时,AMD Ryzen 5 3600 6-Core 3.6 GHz 与 Intel I5-7200U 2.4 GHz 环境下,SM3 快速实现的吞吐率分别提升为串行标准实现的 3.31 倍与 3.81 倍,而在不使用 VPGATHERDD 指令,手动进行消息扩展时,AMD 环境下的 SM3 快速实现可达到 3.48 倍的吞吐率,因此实验在两种环境下采用不同的优化方式.表 3 VPGATHERDD 不同平台下的时钟周期Table 3Vpgaterdd clock cycles on different platforms指令:VPGATHERDD时钟周期/指令SkyL
30、ake4/5Zen29/16本节在 AMD Ryzen 5 3600 6-Core 3.6 GHz 和 Intel I5-7200U 2.4 GHz 环境下,使用 GMSSL中不同编译参数下的 SM3 实现进行测试,并与本文提出的并行加速算法实现进行对比.SM3 的测试内容陈学雷 等:基于 SM3 并行实现的 SM2-KDF 快速实现算法819图 5 KDF 快速实现细节Figure 5 KDF fast implement details为对 1 兆字节的数据进行 100 次哈希运算,KDF 的测试内容为对 256 字节、512 字节、768 字节、1024字节、2048 字节、4096 字
31、节 8192 字节数据进行 20 万次加密运算.在 GMSSL3.010的 SM3 实现中,有两种编译参数,FULL_UNROLL(是否优化轮函数)、SM3_SSE3(是否使用 SSE 指令集处理四字节逆序),共四种情况.如表4中数据显示,轮函数优化对算法效率有明显提升,而在使用了 SIMD 方式处理四字节逆序时,算法效率则有所降低,其原因是虽然SIMD 方式可以大幅提升字节逆序速度,但是当标准寄存器与 SIMD 寄存器混用时,数据在传输时存在不同程度的延迟,不同数据宽度的寄存器之间数据传递也需要额外的时间11,同时由于没有解决并行时消息扩展函数的数据依赖问题,导致在运算过程中需要多次执行 s
32、tore 与 load 指令,因此其运算效率低于标准实现.而在本文的 SIMD 并行实现中,利用了 AVX2 指令集,将 SM3 算法整体做并行处理,只需在每组分块加密前后进行一次 load 与 store 操作,同时使用 gather 指令解决了消息扩展时的数据依赖问题,有效避免了在运算过程中频繁存读数据以及标准寄存器与 SIMD 寄存器混用.表 4 参考实现分析(Mbps)Table 4Reference implementation analysis(Mbps)Intel普通轮函数优化轮函数AMD普通轮函数优化轮函数普通逆序15791733普通逆序22672467SIMD 逆序12781
33、453SIMD 逆序17471823GMSSL3.0 中 SM3 的优化实现针对轮函数进行了每 4 轮合并为 1 个超轮的优化,同时减少了轮函数中的执行步骤,因此效率较标准实现有所提升.由表5数据可知,Intel 环境下,快速实现较标准实现效率提升为 3.81 倍,较优化实现效率提升为 3.47 倍.在 AMD 环境下,快速实现较标准实现效率提升为 3.48倍,较优化实现效率提升为 3.2 倍.图6为 KDF 的测试结果.表 5 SM3 吞吐率测试结果(Mbps)Table 5SM3 throughput test results(Mbps)测试环境标准实现优化实现快速实现Intel I5-7
34、200U 2.4 GHz157917336019AMD Ryzen5 3600 6-Core 3.6 GHz226724677895820Journal of Cryptologic Research 密码学报 Vol.10,No.4,Aug.2023图 6 AMD 环境下 KDF 的运行效率Figure 6 Running efficiency of KDF in AMD由图6数据可知,在数据长度达到 1 KB 时,标准实现计算时间为 3.1 s,并行计算时间为 1.18 s,效率提升至 2.6 倍.随着计算数据长度的增加,快速实现 KDF 算法优势更加明显.表6列举出了在 AMD 与 In
35、tel 两种测试环境下,SM2 公钥加密算法各步骤运算的时钟周期以及加密256 字节数据时标准实现与快速实现的 CPB.表 6 SM2 公钥加密算法各步骤运算的时钟周期与 CPBTable 6Clock cycle and CPB of SM2 public key encryption algorithm测试环境C1=kGkPbKDF(256 字节标准实现)KDF(256 字节快速实现)CPB(标准实现)CPB(快速实现)AMD219021603061405461955424Intel191971336211271949544919图7和图8分别为 SM2 公钥加密算法在 AMD 与 Int
36、el 环境下对长度 256、512、1024、2048、4096字节的数据运算 20 万次所花费的时间.由图中数据可知,在数据长度达到 1 KB 时,加解密速度均有15%20%的提升,而在数据长度达到 4 KB 时,加解密速度则均有 50%左右的提升.SM2 倍点运算 kG、lQ 基于课题组自研的大数运算库,kG、lQ 运算均为固定值.由图中曲线可见在使用了并行化的 KDF 后,不同平台下的 SM2 加解密速度均有提升,而随着数据长度的增加,效率提升则越显著,加密效率最高可提升 47%,解密效率最高可提升 53%.图 7 AMD Ryzen5 3600/Zen2 环境下 SM2 加密(左)与解
37、密(右)速度Figure 7 SM2 encryption(left)and decryption(right)speed in AMD Ryzen5 3600/Zen2陈学雷 等:基于 SM3 并行实现的 SM2-KDF 快速实现算法821图 8 Intel I5-7200U/SkyLake 环境下 SM2 加密(左)与解密(右)速度Figure 8 SM2 encryption(left)and decryption(right)speed in Intel I5-7200U/SkyLake在资源消耗方面,本实验使用 GCC 将 GMSSL 中 SM3 算法的标准实现、优化实现及本文的快速
38、实现生成二进制文件,并使用 GCC 编译器内置 SIZE 工具进行分析.由表7数据可知,快速实现的程序尺寸大于 GMSSL 中的程序尺寸,原因在于快速实现使用 SIMD 同时计算 8 组数据,且使用了内置标准函数和若干临时变量来协调寄存器的运算,但程序尺寸小于 CPU 一级高速缓存(32 K),可全部放入一级高速缓存中执行,因此对实际应用性能并无影响.表 7 程序占用空间分析Table 7Program footprint analysisSection.text.data.bsstotal普通逆序+普通轮函数(GMSSL)2380002380普通逆序+优化轮函数(GMSSL)92120092
39、12SIMD 逆序+普通轮函数(GMSSL)2524002524SIMD 逆序+优化论函数(GMSSL)8524008524快速实现(本文)14692309276818552注:.text:存放程序执行代码的一块内存区域.data:存放程序中已初始化的全局变量的一块内存区域.bss:存放程序中未初始化的全局变量的一块内存区域6总结本文提出了一种基于 SIMD 技术的 SM3 算法的快速实现方法,利用 AVX2 指令集实现该方法,并将其应用于 SM2 公钥加密算法的 KDF 中.在 x86-64 环境下,SM3 算法的吞吐率提升至标准实现的 3.81倍,SM2 中 KDF 的计算效率提升至标准实
40、现的 2.8 倍.SM2 公钥加密算法的加密效率提升了 47%,解密效率提升了 53%.虽然本文提出的优化方法实现基于 256 比特的 AVX2 指令集,该方法同样适用于其他架构的 128/256/512 比特的 SIMD 指令集,因此本方法并不局限于 x86 平台,在 ARM、RISC-V 等智能终端平台上也有较好的发挥空间.参考文献1 WANG Z H,ZHANG Z F.Overview on public key cryptographic algorithm SM2 based on elliptic curvesJ.Journal of Information Security R
41、esearch,2016,2(11):972982汪朝晖,张振峰.SM2 椭圆曲线公钥密码算法综述 J.信息安全研究,2016,2(11):972982.2 National Cryptography Administration.SM3 Cryptographic Hash AlgorithmS.Beijing:Nation CryptographyAdministration,2010国家密码管理局.SM3 密码杂凑算法 S.北京:国家密码管理局,2010.822Journal of Cryptologic Research 密码学报 Vol.10,No.4,Aug.20233 ACIIM
42、EZ O.Fast Hashing on Pentium SIMD ArchitectureD.Corvallis:Oregon State University.2004.4 KRAWCZYK H.On extract-then-expand key derivation functions and an HMAC-based KDFEB/OL.2008.http:/www.ee.technion.ac.il/hugo/kdf5 HIROSE S.A note on practical key derivation functionsJ.IEICE Transactions on Funda
43、mentals of Electronics,Communications and Computer Sciences,2011,94.A(8):17641767.DOI:10.1587/transfun.E94.A.17646 GUERON S,KRASNOV V.Parallelizing message schedules to accelerate the computations of hash functionsJ.Journal of Cryptographic Engineering,2012,2(4):241253.DOI:10.1007/s13389-012-0037-z7
44、 GUERON S,KRASNOV V.Simultaneous hashing of multiple messagesJ/OL.IACR Cryptology ePrint Archive,2012,2012/371.https:/eprint.iacr.org/2012/371.pdf8 YANG X W,KANG H J.Fast software implementation of SM3 hash algorithmJ.CAAI Transaction on IntelligentSystems,2015,10(2):954959.DOI:10.11992/tis.201507036杨先伟,康红娟.SM3 杂凑算法的软件快速实现研究 J.智能系统学报,2015,10(6):954959.DOI:10.11992/tis.2015070369 Intel R.Architecture instruction set extensions programming referenceEB/OL.2012.https:/ GmSSL3.0EB/OL.2020.10.21.https:/ Intel R.Intel 64 and IA-32 architectures optimization reference manualEB/OL.2014.https:/