引言
国密算法,是由国家密码管理局认定和公布的密码算法标准及其应用规范,包括SM1、SM2、SM3、SM4、SM7、SM9和祖冲之密码算法(ZUC)等。国密算法与国际通用算法对应关系如下所示:
算法分类 |
国际通用算法 |
国密算法 |
对称算法 |
AES、DES、3DES、RC4等等 |
SM1、SM4、SM7、ZUC |
非对称算法 |
RSA、DSA、DH、ECDSA、ECDH等等 |
SM2、SM9 |
杂凑算法 |
SHA1、SHA2、MD5等等 |
SM3 |
认证加密 |
AES-GCM、AES-CCM等等 |
SM4-GCM、SM4-CCM |
其中,SM2、SM3、SM4、SM4-GCM算法应用较为广泛,如政务信息、经济信息、企事业内部敏感信息的加密、网络安全认证、网上银行、数字签名等方面。这几种常用国密算法已经公开并已商用,且在开源OpenSSL中得到实现,目前实现国密算法的开源软件还有GmSSL、Tongsuo等。除了软件层实现国密算法外,还有许多硬件厂商在PCIe标卡或SOC内集成了国密算法,通过硬件卸载方式提升国密算法的安全和性能。
倚天ECS国密性能
倚天ECS是阿里云基于平头哥自研数据中心芯片倚天710推出arm架构实例,采用armv9架构,支持SM3/SM4指令,可以加速国密算法性能。铜锁(Tongsuo)是阿里巴巴对外开源的基础密码库,为存储、网络、密钥管理、隐私计算等诸多业务场景提供底层的密码学基础能力。本文将基于OpenSSL 3.2和Tongsuo 实测对比了倚天ECS g8y实例和Intel g7 实例国密性能。
被测ECS实例类型配置如下:
Processor |
ECS type |
倚天710 |
g8y.8xlarge |
x86处理器 |
g7.8xlarge |
操作系统和gcc版本如下:
GCC version |
10.2.1 20200825 (Alibaba 10.2.1-3 2.32) |
Operating System |
Alibaba Cloud Linux 3.2104 LTS |
硬件信息可以通过lscpu查看
[root@Yitian]# lscpu Architecture: aarch64 Byte Order: Little Endian CPU(s): 32 On-line CPU(s) list: 0-31 Thread(s) per core: 1 Core(s) per cluster: 8 Socket(s): 1 Cluster(s): 1 NUMA node(s): 1 Vendor ID: ARM BIOS Vendor ID: Alibaba Cloud Model: 0 BIOS Model name: virt-rhel7.6.0 Stepping: r0p0 BogoMIPS: 100.00 NUMA node0 CPU(s): 0-31 Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm ssbs sb dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh [root@Yitian]#
SM2非对称算法性能
SM2算法基于椭圆曲线(ECC)算法,包含数字签名,公钥加解密,密钥交换。相对于RSA算法,SM2密码强度比2048位的RSA密码强度要高,速度更快。SM2算法在嵌入式领域签名验签应用较多。
SM2性能测试命令:taskset -c 0-7 ./apps/openssl speed -multi 8 -elapsed sm2
加密库 |
SM2 |
sign/s |
verify/s |
Tongsuo |
g7 |
10910.5 |
12750.2 |
g8y |
27213.1 |
28727.2 |
|
openssl-3.2 |
g7 |
10920.4 |
12830.1 |
g8y |
27425.8 |
28528.5 |
测试结果:SM2算法性能,Tongsuo和openssl3.2测试结果表现一致;签名性能倚天ECS g8y实例是g7的2.49倍;验签性能倚天ECS g8y是g7的2.22倍。
SM3摘要算法性能
SM3算法常用于数字签名和数据完整性保护。算法可以对一定长度的消息,填充和迭代压缩后,生成长度为256比特的散列值,又称“数字指纹”。SM3算法和MD5算法的计算迭代过程类似,采用Merkle-Damgard转换,整个转换执行过程可以概括成四个步骤:消息填充、消息扩展、迭代压缩、输出结果。SM3算法可以应用在数据存储中指纹的生成,数字影音完整性校验等等。
SM3性能测试命令:taskset -c 0-7 ./apps/openssl speed -multi 8 -elapsed -evp sm3
加密库 |
SM3 |
1K bytes |
8K bytes |
Tongsuo |
g7 |
889359.02 |
988383.91 |
g8y |
3851532.97 |
4265263.10 |
|
openssl-3.2 |
g7 |
888715.26 |
983979.35 |
g8y |
3844803.34 |
4264506.71 |
测试结果:SM3算法性能,Tongsuo和openssl3.2测试结果表现一致; 8K数据的计算摘要,倚天ECS g8y实例是g7的4.3倍。
SM4对称算法性能
SM4对称算法用于实现数据的加密/解密运算,以保证数据和信息的机密性。SM4算法与AES算法具有相同的密钥长度、分组长度。SM4算法由加解密算法和密钥扩展算法组成,采用非线性结构,分组长度为128b,密钥长度为128b。SM4主要在网络数据、流媒体的加密保护,以及存储数据或文件的加密保护应用较多。
SM4-CBC性能测试命令:taskset -c 0-7 ./apps/openssl speed -multi 8 -elapsed -evp sm4-cbc
加密库 |
SM4-CBC |
1K bytes |
8K bytes |
Tongsuo |
g7 |
857721.17 |
858860.20 |
g8y |
8445351.80 |
8450402.99 |
|
openssl-3.2 |
g7 |
857374.04 |
858852.01 |
g8y |
8437472.60 |
8452295.34 |
测试结果:SM4-CBC算法性能,Tongsuo和openssl3.2测试结果表现一致; 8K数据的加解密,倚天ECS g8y实例是g7的9.84倍。
SM4-CTR性能测试命令:taskset -c 0-7 ./apps/openssl speed -multi 8 -elapsed -evp sm4-ctr
加密库 |
SM4-CTR |
1K bytes |
8K bytes |
Tongsuo |
g7 |
825366.53 |
826619.22 |
g8y |
30621407.23 |
31672524.80 |
|
openssl-3.2 |
g7 |
825741.99 |
827034.28 |
g8y |
30596200.79 |
31688701.27 |
测试结果:SM4-CTR算法性能,Tongsuo和openssl3.2测试结果表现一致; 8K数据的加解密,倚天ECS g8y实例是g7的38.3倍。
SM4-XTS性能测试命令:taskset -c 0-7 ./apps/openssl speed -multi 8 -elapsed -evp sm4-xts
加密库 |
SM4-XTS |
1K bytes |
8K bytes |
Tongsuo (未支持sm4-xts) |
g7 |
NA |
NA |
g8y |
NA |
NA |
|
openssl-3.2 |
g7 |
830255.10 |
837741.23 |
g8y |
7598128.13 |
7347869.01 |
测试结果:SM4-XTS算法性能,8K数据的加解密,倚天ECS g8y实例是g7的8.77倍。
SM4-GCM 认证加密算法性能
GCM(Galois/Counter Mode)是认证加密(AEAD)模式中的一种, 能同时确保数据的保密性、完整性,它还可以提供附加消息的完整性校验。SM4-GCM算法适用场景TLS连接场景,如支持国密算法的浏览器。
SM4-GCM性能测试命令:taskset -c 0-7 ./apps/openssl speed -multi 8 -elapsed -evp sm4-gcm
加密库 |
SM4-CTR |
1K bytes |
8K bytes |
Tongsuo |
g7 |
894681.43 |
899358.72 |
g8y |
18692320.94 |
19156877.31 |
|
openssl-3.2 |
g7 |
894615.89 |
899618.13 |
g8y |
18686604.63 |
19151476.05 |
测试结果:SM4-GCM算法性能,Tongsuo和openssl3.2测试结果表现一致; 8K数据的加解密,倚天ECS g8y实例是g7的21.2倍。
总结
本文基于OpenSSL 3.2和Tongsuo 测试对比了倚天ECS g8y实例和Intel g7实例几个常用的国密算法性能。可以看到g8y实例性能全面领先于g7,这要得益倚天g8y强大的多核物理核心,先进的armv9架构。另外我们也看到阿里巴巴开源的Tongsuo加密库和OpenSSL 3.2的性能表现结果一致,对于那些依赖OpenSSL1.1加密的应用来说,Tongsuo不失为一个优秀高性能加密库替代产品。此外,倚天g8y实例售价比g7实例低23%,是极具性价比的一款云计算实例产品。
好啦!小弹的分享到此为止。我们更欢迎您分享您对阿里云产品的设想、对功能的建议或者各种吐槽,请扫描提交问卷并获得社区积分或精美礼品一份。https://survey.aliyun.com/apps/zhiliao/P4y44bm_8
【扫码填写上方调研问卷】
欢迎每位来到弹性计算的开发者们来反馈问题哦~