关键词:
非对称密码算法
乘法器
UVM验证
SoC系统
签名验签
摘要:
人类社会逐步进入信息化时代,信息安全威胁充斥着人们的生活,密码学技术可作为解决信息安全方法之一,进而保证信息安全。密码学算法可分为非对称密码、哈希函数、对称密码三类。非对称密码算法的密钥由公钥和私钥组成,签名者用公钥和私钥签名,验签者用私钥验签,常见的非对称密码算法有RSA(Rivest-Shamir-Adleman)、ECC(Elliptic curve cryptography)、DF(Diffiie-Hellman)、DSA(Digital Signature Algorithm),具有安全性好,性能稍慢等特点,适用于数字签名、数字证书认证等场景。目前非对称密码算法中使用频率较高的是RSA与SM2。因而本文采用硬件设计的方法来研究算法RSA与SM2。本文先通过对国内外现状调研与分析,介绍椭圆曲线运算法则和大数运算基础,对算法SM2、RSA的原理进行阐述,通过对算法RSA的加解密与算法SM2签名验签分析,算法实现采用软硬件协同设计方法,设计出基于SoC框架的非对称密码系统,硬件上,算法SM2实现点乘运算和模加减乘逆运算,算法RSA实现模幂运算和模乘运算。软件上,算法SM2通过CPU调度硬件中的点乘模块和模运算模块,算法RSA实现CPU调度模幂、模乘运算模块。硬件设计上,算法RSA模幂运算采用R-L二进制展开方法,模乘运算采用Montgomery模乘算法;算法SM2点乘运算采用NAF(k)标量乘算法,点加倍点运算是在雅可比域和素域下实现,模逆运算采用基4 Montgomery模逆算法,提升模逆运算移位效率,提高整个模逆运算能力,模乘运算通过乘法器和模约减实现。经过算法分析,两种算法中耗费资源都是模乘运算,因而两种算法模乘实现共用256bit*256bit乘法器。其乘法器通过采用KO(Karatsuba-Ofman)算法,例化66bit乘法器和512bit加法器来实现。验证中,搭建适用两种算法的UVM验证平台,验证平台中添加组件寄存器模型,对DUT中寄存器和存储器建模,便于检测出DUT的错误,通过在软件VCS编译下,运行日志中观察DUT和参考模型中结果是一样的。将算法硬件模块顶层和CPU通过总线AHB完成连接,搭建好SoC系统,在Smart L仿真平台完成算法前仿,最后选用芯片Artix-7系列FPGA开发板完成FPGA验证。通过VCS前仿和FPGA验证,均实现两种算法的签名验签、加解密功能。最后基于工艺SMIC 55nm,用综合工具DC综合实现下,综合面积约为490Kum,算法SM2签名验签速率分别约为111次/s、106次/s,算法RSA加解密速率为11次/s。所设计系统具有可配置性高等特点,符合芯片设计要求,可适用于物联网等场景。