现在大多数金融机构都启用了国密算法(也就是所谓的国产密钥算法),算法本身好不好,安全性如何,笔者并不了解,然而,国产密钥的性能如何却是我特别关心的问题。本文重点考察国密签名算法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算法,都有一些其他的因素影响其签名的响应时间、资源利用率。例如:签名串的大小、吞吐量、有没有吊销列表的检查、硬件型号、签名服务器的签名服务器的软件版本等。
因此,上述所有的对比都是在相同的测试环境、测试案例、几乎相同的吞吐量情况下进行对比,排除了这些因素的干扰。
领取专属 10元无门槛券
私享最新 技术干货