论文部分内容阅读
计算机技术近年来快速发展,大量隐私和机密数据通过网络传输,因此网络信息安全成为迫切需要解决的问题。密码技术是信息安全的核心技术,而其中公钥密码技术是解决安全传输的基础。SM2椭圆曲线公钥密码算法是由国家密码管理局公布的一项密码标准,其基本思想来源于椭圆曲线密码算法ECC。SM2算法对比常用的RSA算法具有密钥长度短、安全性高等优点。由于SM2算法的优势和国家相关政策的推动,其应用将会越来越广泛。研究如何实现安全高效的SM2椭圆曲线公钥密码算法具有重大的意义。 与ECC算法相同,SM2算法最消耗时间的操作仍是标量乘运算。因此如何快速高效的实现标量乘,对ECC和SM2算法的实现起到重要的作用。已有文献中对标量乘的优化主要从标量乘算法优化、点运算方法优化和有限域计算方法优化三个层次进行。本文针对ECC和SM2椭圆曲线公钥密码算法实现优化技术进行研究,通过对标量乘算法从底层到上层优化,提升ECC和SM2算法计算速度。 主要研究工作和创新点有以下几方面: (1)素数域标量乘算法优化 针对素数域标量乘运算,提出一种抗SPA攻击的优化固定基comb算法。该算法基于Mohamed算法基本思想,外部仍使用Mohamed算法结构内部使用优化的标量编码方法,在保证算法性能的基础上使算法能够抗SPA攻击。在OCTEONCN6645上,对160/192/224/256位的标量乘算法进行评估,在存储预计算点个数相同的情况下,本文提出算法的速度远远高于Joye-Tunstall算法。 (2)二进制域标量乘算法优化 基于Akishita提出的计算双标量乘kP+lQ快速算法,提出一种计算三标量乘kP+lQ+tR快速算法。实验结果表明:该算法比单独计算的方法效率提高了约23%。在此基础上提出一种二分段和三分段Montgomery标量乘算法,这两种算法相对于原始Montgomery算法效率分别提高了约24.5%和22.6%。最后使用边信道原子化方法和“Montgomery窍门”进一步优化二分段和三分段算法,使得算法在提高运算效率的基础上,仍然保持原有抵抗SPA攻击的特性。实验结果表明:优化后的二分段Montgomery标量乘算法比原始的二分段算法效率提高了约50%。可以看出,新提出的算法在兼具安全性的基础上,计算速度也具有明显的优势。 (3)适合带进位大数乘加指令的Montgomery模乘算法优化 基于计算多精度乘法的混合扫描算法(Hybrid Scanning: HS)和计算多精度平方的Lazy Doubling(LD)算法的基本思想,使用粗粒度集成的方式提出了一种新的Montgomery模乘算法CIPOHS和一种新的Montgomery模平方算法CILD。所提出的算法通过尽可能多的使用寄存器和合理的扫描顺序,有效地减少了内存存取操作的数量。在OCTEON CN6645处理器上实现算法,并根据处理器的特性进一步优化实现。实验结果表明:2048比特大数模乘,CIPOHS和CILD算法对比CIOS性能分别提高了47%和58%。另外由于CIPOHS和CILD算法的内循环均使用操作数扫描,因此较适合带进位大数乘加指令(Multiply-Add)嵌入式处理器,如支持64比特大数乘加指令VMULU的OCTEON CN6645处理器。 (4)适合大数乘累加指令的Montgomery模乘算法优化 基于计算多精度乘法的连续操作数缓存算法(Consecutive Operand Caching:COC)的基本思想,提出另一种Montgomery模乘算法SCOC。吸取COC算法的基本思想,通过复杂的操作数缓存技术和对进位处理方式的改进减少内存存取数量。在MIPS64架构的处理器上实现该算法,实验结果表明:1024比特大数模乘,SCOC对比CIOS性能提高了4.17%。另外SCOC算法内循环使用乘积扫描方式,因此比较适用于支持乘累加指令(Multiply-Accumulate)的嵌入式处理器。 (5) SM2椭圆曲线公钥密码系统设计与实现 基于OCTEON CN6645多核处理器,用软件方式设计和实现SM2椭圆曲线公钥密码系统。系统的主要功能包括:SM2数字签名验证,SM2公钥加解密和SM2密钥交换等。同时将文中创新点(2)和(3)提到的优化算法加入到系统的实现中,大大提高了系统各项功能的运算速度。实验结果表明,SM2椭圆曲线公钥密码系统能够正确的完成各项系统功能,且运算效率较高。