YCrypt——国密算法高性能实现

性能测试环境

Platform CPU OS
X86 Intel Xeon Platinum 8358 Ubuntu 22.04 x86
Library Branch/Version
YCrypt master
Tongsuo 8.4-stable
GmSSL master
OpenSSL 3.5.0-dev

SM2算法

SM2签名算法涉及到三个核心部分:大数运算、有限域运算以及椭圆曲线运算。我们使用扩展指令集对这些关键运算进行优化,使用汇编代码实现,以此提高了寄存器利用率、减少了冗余指令和内存读写开销;另外我们针对SM2算法参数,选取了更高效的模运算和椭圆曲线算法。最终大幅提高了SM2签名/验签在X86/64和ARM下的性能。

  YCrypt Tongsuo GmSSL OpenSSL
SM2 sign 75412.1 11358.5 13461.2 2706.1
SM2 verify 12829.5 5766.2 1625.7 3001.2

SM3算法

SM3杂凑算法的实现主要包括消息填充、消息扩散和消息压缩三个主要部分。SM3杂凑算法的性能瓶颈在于消息扩散和消息压缩过程,因此我们对这两个过程进行了优化,从而提升了运行速度。

  YCrypt Tongsuo GmSSL OpenSSL
SM3 340.1 117.2 245.5 115.4
SM3-hmac 340.0 78.7 / 76.6

YCrypt还支持SM3算法的4路并行与8路并行,其中SM3x4为640.3MB/s, SM3x8为1237.5MB/s.

SM4算法

本团队实现了多种提高SM4算法运算效率的思路和方法。其中包括使用SIMD硬件扩展指令集做并行优化以及基于比特切片技术的快速软件实现,以达到SM4分组密码算法的最优效率。

  YCrypt Tongsuo GmSSL OpenSSL 3.5.0-dev
SM4 792.8 115 131.8 115
SM4_CTR 483.1 110.7 139.5 111.4

其他平台测试结果

Platform CPU OS
ARM Apple M1 Ubuntu 22.04 arm
Android 第三代骁龙8 3.3GHz 8核 Xiaomi HyperOS 1.0.42.0.UNCCNXM
Algorithm Apple M1 Android
SM2
(times/s)
Sign 52718 54173
Verify 11215 9372
SM3
(MB/s)
SM3-ref 187.6 /
SM3-adv 330.2 294.5
SM3x4 576.6 /
SM4
(MB/s)
SM4_CTR 131.9 107.4

PQMagic | 联系我们
Copyright © Post-Quantum Magic Project. This site uses Just the Docs, a documentation theme for Jekyll.