随着应用场景的多元化,对密码算法的性能及安全性需求提出了不同要求,尤其是应用最为广泛的SM4密码算法。例如,网络和通信安全需要采用密码技术对通信过程中的敏感数据做机密性保护,这对SM4算法高性能实现提出了具体需求,否则会对系统的性能造成较明显的损耗,影响网络通信能力。另一方面,多路视频高清和超高清监控数据需要超高性能的密码算法进行保护,否则可能影响方案的可实施性。此外,还有很多行业对加密存储提出了高性能需求。近些年来Intel、AMD等处理器厂商纷纷宣布在其处理器上推出用于AES加解密的AES-NI指令集,这使得采用AES-NI指令集实现AES算法的性能得到进一步提升。目前SM4算法性能与AES算法相比有一定差距,特别是与AES-NI加速指令的差距更加明显,若不尽快补齐性能短板,必将影响国密算法的广泛应用。
为了高效地实现SM4算法,国内外众多学者提出了多种软硬件工程实现思路。早期的SM4软件实现方法仅限于查表实现,但因SM4算法架构等因素,其查表实现的性能明显低于AES算法。国内外许多学者尝试采用SIMD技术应用到密码算法的软件快速实现中,例如SSE指令集、AVX指令集等。SIMD可实现一条指令操作多个数据,是CPU基本指令集的扩展,用于提供数据的并行操作,如数字图像处理。学者们将SSE指令与比特切片等技术应用到密码算法以提高算法的实现性能。中科院软件所[1]利用SIMD技术优化实现SM4算法,该方法相比于查表方法,其软件实现性能可以提高85%至138%。北航软件开发环境国家重点实验室 [2]简化S盒,采用比特切片技术,结合AVX指令实现SM4算法的256个分组并行加解密,实现效率提高了43%。2014年,Intel公司[3]提出了基于AES-NI指令集实现SM4的专利,2017年,道里云公司[4]也公开发表了使用AES-NI指令集实现SM4的另一种方案。
另外,也有借助硬件GPU进行SM4加速实现的方案。北京电科院[5]通过研究最优明文数据块、GPU存储类型和线程块对SM4加密的加速比,提出GPU并行SM4加解密方案,将性能提升到25倍左右。中国工业控制系统网络应急响应小组[6]利用CUDA提出了SM4的CPU-GPU方案,并引入页锁内存和CUDA流方案使得SM4的速度提升到88倍左右。以上两篇文章都指出,当明文数据块较小时(如小于8KB),由于CPU和GPU之间的数据交互传输耗时以及小数据包时GPU无法调用全部的计算单元参与运算,使得GPU方案的效率可能不升反降,因此应用场景有一定的局限性。此外,GPU本身的性能也与加速效果强相关。
图1 海泰密码技术融合创新中心和数据智能安全工程中心成立
重点针对CPU流水线和不同类型的SIMD的深入理解和分析,结合SSE、AVX指令集的并行化实现特点以及对SM4性能优化的改善程度,剖析不同工作模式的可并行性以及对并行加解密性能的改善情况,设计出高性能的SM4并行实现方法。此外,设计的SM4高性能实现自适应匹配技术以及内置智能最优解方案模块,可根据监测的CPU架构特征自适应地匹配符合CPU特征的高性能加解密方案,自动快速搜寻局部最优解,使得加解密性能达尽可能达到局部最优。该方案已部署在SM4算法的五种常见工作模式中,在英特尔十一代I5处理器上优化部署后的SM4软件高性能实现方案性能从原有的3.54Gbps(百万比特每秒)提升至7.36Gbps,性能为原方案的2.08倍;在英特尔的十一代I7处理器上进行单线程性能测试,ECB模式的加密和解密速度达到10 Gbps,CTR模式的加解和解密性能不低于9 Gbps,CBC模式和CFB模式的解密性能也都超过9 Gbps,如下图。
图2 海泰SM4高性能密码实现方案的性能
SM4实现方案除了已经支持上述五种常见工作模式之外,其它更多的工作模式也正在全力支持中。此外,在海泰的密码技术融合创新中心,SM4算法高性能实现还在进行持续迭代,多种模式的实验室测试数据均在10 Gbps以上。
海泰SM4算法的高性能实现,使得单线程的加解密速度可达到10Gbps(1.25GB/s),多线程可达到100Gbps以上,这使得海量数据的安全存储和安全“闪”存得以实现。
此外,几乎所有的数据密集型应用场景都将是海泰高性能SM4算法大显身手之处。当前,移动应用、AI应用、AR/VR、云手机、物联网、车联网等新型应用、智能物联网应用爆发式增长,更加多样化的算力产生在云上,提供个性化服务,改变人们的生活,这些应用场景要求简化现有IT基础架构,优化服务器资源利用率,提高系统可用性,这是海泰密码技术赋能高质量密码供给,确保数据安全的重要应用领域。
与此同时,海泰高性能SM4也与相关密码产品进行对接集成,支持更多的密码产品,为更多的安全产品赋能更高性能的国密算法实现,提供更加完善的安全功能,为云计算、大数据、物联网、移动互联、工业控制、人工智能等领域提供更加完善的安全服务。
参考文献
[1] 郎欢, 张蕾, 吴文玲. SM4的快速软件实现技术[J]. 中国科学院大学学报, 2018, 35(02): 180-187.
[2] 张笑从, 郭华, 张习勇, 等. SM4算法快速软件实现[J]. 密码学报, 2020, 7(06): 799-811. DOI:10.13868/j.cnki.jcr.000407.
[3] Intel. Technologies for modifying a first cryptographic cipher with operations of a second cryptographic cipher. US-2015341168-A1[P]. 2014-05-21.
[4] DaoliCloud Company. Technologies, Methods and Apparatus for Secure and Efficient Implementation of Block Ciphers[R]. Beijing: DaoliCloud Company. 2017-03-10.
[5] 李秀滢, 吉晨昊, 段晓毅, 等. GPU上SM4算法并行实现[J]. 信息网络安全, 2020, 20(06): 36-43.
Li, J., Xie, W., Li, L., Wu, X. (2021). Parallel Implementation and Optimization of SM4 Based on CUDA. In: Chen, B., Huang, X. (eds) Applied Cryptography in Computer and Communications. AC3 2021. Lecture Notes of the Institute for Computer Sciences, Social Informatics and Telecommunications Engineering, vol 386. Springer, Cham. https://doi.org/10.1007/978-3-030-80851-8_7