yangjianxv
作者yangjianxv·2020-11-25 13:44
部门总经理·成方金融科技有限公司

国密签名算法与RSA算法的性能对比

字数 1535阅读 3485评论 0赞 2

现在大多数金融机构都启用了国密算法(也就是所谓的国产密钥算法),算法本身好不好,安全性如何,笔者并不了解,然而,国产密钥的性能如何却是我特别关心的问题。本文重点考察国密签名算法 SM2 和 RSA 算法的性能差异。

我们对性能的关注主要有以下几点

1、 签名算法的不同对业务的响应时间影响有多大,或者说签名过程本身的时间是多少

2、 不同的签名算法对系统资源的消耗有多大的差异

测试方法

1、 选用签名服务器来做测试,把加核签的过程独立出来,这样比较容易分辨签名本身的时间和资源占用。

2、 签名服务器采用通用 CPU 做加核签。这其实也是大多数的现实应用场景,如果采用各自的专用芯片,并不容易对比。

3、 签名过程的响应时间由签名服务器上的日志来提供,而不从发起签名的客户端记录。这样可以排除消耗在网络上的时间。

4、 采用连带业务的方式测试

5、 采用直接压测签名服务器的方式测试

签名算法的不同对业务的响应时间影响有多大

某业务服务器在每秒处理约 40 笔典型业务的情况下,采用 RSA 算法时,业务平均响应时间为 137.88 毫秒,其中签名过程消耗小于 1.2 毫秒(加签过程为 1.1598 毫秒,核签过程为 0.8362 毫秒),该服务器 CPU ( 4C )利用率为 61.92% 。

某业务服务器在每秒处理约 40 笔典型业务的情况下,采用 SM2 算法时,业务平均响应时间为 136.88 毫秒,其中签名过程消耗小于 1.1 毫秒(加签过程为 0.4147 毫秒,核签过程为 1.0524 毫秒),该服务器 CPU ( 4C )利用率为 62.13% 。

由于不论采用 SM2 或 RSA 的签名过程响应时间均比较短(在 0.4 毫秒 ~1.2 毫秒之间),相比于业务平均响应时间( 137 毫秒)比例不足 1% ,因此可推断,将签名算法由 RSA 替换为 SM2 后,对业务处理时间影响不大,即对报文处理效率影响不大。

后续测试采用测试压力机直接发送典型业务的签名串到签名服务器进行压力测试。

不同签名算法性能指标对比

加签对比

在约每秒 2500 次加签测试中, SM2 算法加签平均响应时间为 0.4568 毫秒,相比 RSA 算法的 0.9387 毫秒,缩短了 51.33% ; CPU ( x86 4 物理核 8 逻辑核,下同)利用率为 13.63% ,相比 RSA 算法的 7.69% ,提高了 77.24% ;

核签对比

在约每秒 2500 次核签测试中, SM2 算法核签平均响应时间为 1.7261 毫秒,相比 RSA 算法的 0.4728 毫秒,提高了 265.08% ; CPU 利用率为 35.48% ,相比 RSA 算法的 8.53% ,提高了 315.94% 。

由此可见,不同签名算法,各有特点, SM2 加签快很多, RSA 核签快很多。如果整体算的话,还是 RSA 快一些(几乎比 SM2 快一倍)。

而加签和核签的共同之处是, SM2 都是那个最耗 CPU 的。而且消耗的 CPU 是 RSA 的几倍之多。

注 1 :当前签名服务器配置 x86 CPU : Intel Xeon X3450 , 4 物理核 8 逻辑核, 4G 内存

注 2 :所有对比案例均在系统的极限吞吐量之下进行测试。

签名效率的影响因素

不论是国密算法还是 RSA 算法,都有一些其他的因素影响其签名的响应时间、资源利用率。例如:签名串的大小、吞吐量、有没有吊销列表的检查、硬件型号、签名服务器的签名服务器的软件版本等。

因此,上述所有的对比都是在相同的测试环境、测试案例、几乎相同的吞吐量情况下进行对比,排除了这些因素的干扰。

作者微信公众号:性能测试与调优

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

2

添加新评论0 条评论

Ctrl+Enter 发表

本文隶属于专栏

作者其他文章

X社区推广