摘要
21世纪以来,以信息技术为核心的高新技术迅速发展,信息化的浪潮不仅影响着人们生活的方方面面,也改变着世界政治、经济和军事格局。随着信息化程度的不断加深,个人隐私的保护以及网络数据传输时会遇到的篡改和泄漏现象,也成了不可忽视的问题,正确使用密码技术,保护数据的机密性、完整性、可认证性和不可伪造性是解决这一问题的核心。我国对这一问题高度重视,于2020年1月1日发布了《中华人民共和国密码法》,将密码分为核心密码、普通密码和商用密码,鼓励和促进商用密码发展并发布了多个自主研发并由国家密码管理局制定标准的国产密码算法。随着国产密码算法被应用到社会生活的各个领域,对密码算法的性能要求也越来越高。基于SIMD技术的SSE、AVX2、AVX-512指令集可对多组数据进行同一操作,实现多组数据的并行计算,从而被作为密码算法快速软件实现的一种有效手段。 本文对SM3密码杂凑算法的快速软件实现进行研究,针对该算法迭代计算过程中以32比特字进行逻辑运算的特点,选择AVX-512指令集对其进行快速实现,将16组消息中位于相同字寄存器上的数据装载到同一512比特的ZMM寄存器上,从而实现16组消息的并行计算,在Intel(R)Xeon(R)Gold 5318Y CPU@2.10GHz处理器上进行测试,可将性能提升至标准实现的9.44倍。将该快速实现方式应用到基于杂凑函数的后量子签名算法HSS上,可将密钥生成速度提升为标准实现下的8.032倍,签名速度提升为标准实现下的7.866倍,验证签名可提升为标准实现下的3.115倍。对于SPHINCS+算法,可将密钥生成速度提升为标准实现下的8.655倍,签名速度可提升为8.739倍,验证签名速度可提升为3.824倍。 对于SM4算法的快速软件实现研究,本文主要从两个方面进行优化:对于SM4算法的S盒,基于塔域结构,将S盒中在GF(28)上的求逆操作拓展到GF(24)上,并使用PEIGEN这一工具对4比特的S盒进行逻辑操作优化,最终将实现S盒的逻辑操作优化到114个,比目前实现S盒最少的逻辑操作还少一个。其次,针对SM4算法的结构特征,对于SM4算法轮函数中的4个S盒进行并行计算,可使用512比特的寄存器并行处理128组明文,并采用了一种高效的数据形式转换算法,将加密消息转换成易于并行计算的形式。基于以上优化,我们测试了 ECB、CTR、GCM模式下SM4快速实现的性能,其中ECB模式下性能可达到12.67Gbps,相较于苗等人提出的SM4算法效率提升了 66%。