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 |