论文部分内容阅读
密码学技术为保证信息的安全提供了强而有力地支撑,使用密码学不但能完成数字签名验签、身份验证、加密解密等功能,还能保证信息的完整性和准确性,从而防止信息被泄露、篡改、伪造以及假冒等。密码学的核心技术是加解密算法,依据密钥使用形式的不同,密码算法包括分为对称加密和非对称加密两种。对称加密采用的是同一个密钥进行加解密操作;而非对称加密在加密流程里采取公钥进行加密,解密流程里采用私钥。非对称加密算法SM2和RSA不仅在加解密应用中有着极高的安全性,同时还可以完成签名验签和身份认证等功能。传统的密码算法软件实现尽管需要的成本很低,但是其运算速度、安全系数和稳定性等方面远远不如硬件方式。所以采用硬件的形式实现SM2和RSA算法具有很关键的学术意义和应用价值。本文凭借分析SM2和RSA的理论基础和实现算法,总结可知点乘操作是SM2的重点,模幂操作是RSA的重点;对这两种操作进行分解可得只有突破乘法运算这个共同瓶颈,才能提高运算速度。在算法方面,对于RSA来说,模幂操作使用的是结合随机化和伪操作的R-L二进制展开方法;模乘操作使用进行了改进的基为256位高速蒙哥马利方法。对于SM2来说,采用的是256位素数域椭圆曲线参数,点乘操作使用的是结合随机化密钥和窗口宽度为3、2的多标量乘方法;点加倍点操作在Jacobian坐标和Affine坐标完成;模运算中的模乘操作使用大数乘法配合模约减的形式实现,模逆操作采用二进制Euclidean求逆方法。在硬件设计方面,首先本文基于算法架构进行了系统整体架构的设计;然后运用流水线和模块化的设计方式,借助模块的分立和共用以及数据通路等手段对硬件结构执行优化改进;最后根据改进的算法选择Verilog语言完成各个模块的RTL代码。此外,综合考虑硬件资源和计算速度,本文按照推荐的SM2模值改进设计了模约减模块;同时提出了SM2和RSA共用乘法器的结构,只需要例化1个66bit的乘法器和4个512bit的加法器,串行计算9个周期即可完成256bit大数乘法操作。在完成系统的硬件设计后,本文在System Verilog语言和UVM方法学的基础上,为系统建立了一个高效、可重用的验证平台。借助该平台,本文选择随机测试和定向测试相搭配的方法对系统进行功能验证,从而得到了94%以上的代码覆盖率以及100%的功能覆盖率,满足预期的要求。最后本文基于SMIC 0.13μm工艺下,完成了系统的DC综合,综合面积约为352.5k门;同时在100M时钟频率下,系统执行一次1024bit模幂操作约需要9.18ms,吞吐率为109Kbps,执行一次256bit点乘操作约需要306μs,吞吐率为817.5Kbps。与其他类似设计比较,本系统性能优良,有较大优势。