摘要

本文提出了一种基于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算法在消息长度大于1 KB时速度可提升至标准实现的3倍.在应用并行KDF算法后SM2公钥加密算法加密速度最快可提升47%,解密速度最快可提升53%,本方法同样适用于其他杂凑算法和公钥加解密算法的软件加速.

全文