论文部分内容阅读
椭圆曲线密码体制(Elliptic Curve Cryptography,ECC)因其能通过较短密钥实现较高安全性,以及计算开销小等特质,成为近年来备受关注的一种公钥密码体制。ECC技术被我国自主提出的SM2公钥密码算法采用。SM2系列算法不仅是国密算法的重要组成部分,还是我国网络空间安全的核心技术之一。本文旨在研究ECC高效计算算法,以应用于SM2算法实现,具体工作分为四个部分。(1)本文首先介绍了ECC国内外标准,并将SM2标准中使用的签名加密算法与国外标准中的ECDSA/ECIES算法进行研究,对比分析它们的异同与计算开销。深入研究了ECC所涉及的基础计算算法:其一,椭圆曲线上点计算算法。由于签名与加密算法中大量使点乘运算,本文重点讨论了任意整数k与任意点P的点乘kP算法、任意数k与固定基点G的点乘kG算法,以及形如kP+lQ的多点乘算法。其二,素数域上大整数计算算法。ECC实现中素数域的模乘与模逆运算占用了大量计算资源,所以本文重点讨论了Montgomery模乘与模逆算法。(2)为对比分析ECC算法的实现性能,本文基于OpenSSL这一业界广泛使用的开源加密库对SM2签名加密算法与ECDSA/ECIES计算耗时进行了测试。测试结果表明SM2的签名速度是ECDSA(p256v1)的七分之一,SM2验签速度是ECDSA(p256v1)的四分之一。(3)为提高SM2计算效率,本文进一步探究并实现了适用于SM2曲线的点运算算法、适用于SM2素数的快速约减算法、适用于SM2素数的快速Montgomery模乘算法以及Montgomery模逆算法。此外,本文将SM2计算算法结合实现平台与代码编写进行讨论:在涉及基点G的点计算算法实现中使用预计算技术;在SM2签名算法实现中对计算中间量(1+dA)-1进行预计算处理;在代码编译中应用了SIMD技术。(4)本文使用C/C++开发了SM2实现验证与测试程序,验证了本文所实现的大整数计算程序、SM2数字签名程序、SM2数据加密程序的正确性。本文对我们实现SM2签名加密程序的签名速度与加密速度进行了测试,测试结果表明我们实现的签名验签程序时间开销较已有实现的减少约20%,数据加密解密时间开销在小数据量时减少约25%。