论文摘要
随着电子商务的发展,出现了智能卡、电子钥匙USB KEY等,广泛应用于交通、身份认证等领域,极大的方便了人们的工作和生活。RSA是目前应用最广泛的公开密钥算法,在智能卡等小型移动设备中实现RSA密钥算法,具有十分重大的意义。本设计的设计目标定义为面向低端,兼顾小面积和高性能,设计内容是包括RSA IP核设计和RSA密钥生成在内的一整套RSA算法解决方案。为保证安全性,可支持密钥长度要达到2048比特。本文首先对RSA加解密算法进行了深入分析,确定使用RL方式的二进制扫描算法实现模幂,使用Montgomery CIOS算法实现模乘,详细分析算法参数的选择,并对模平方等算法进行优化。通过软件建模,明确了算法实现的层次,为硬件实现奠定了良好的基础。在IP核设计中,根据设计目标选择32位高基模乘器作为核心硬件结构。之后合理划分层次模块,根据算法优化控制逻辑。在模乘器数据通路中,使用两级流水线,4-2压缩器等技术缩短关键路径,并使用两倍于模乘器字长的T SRAM存储运算中间结果,进一步提高了硬件利用率。存储系统使用5个SRAM存储操作数、中间结果和最终结果,有效缩小IP面积;用反相时钟技术和高效的存储策略,将其他模块与存储系统交互的开销降到最低。最终使IP核实现小面积、高性能,在100Mhz时钟下,2048位模幂(操作数长度均为2048位)的速度约为3.7次/秒,1024位模幂速度约为33次/秒,性能优良。IP核支持大于32位,小于2048位的模幂和模乘运算,采用通用接口设计,利于SOC集成,且具备密钥保护功能,操作简便。为了达到商用标准,本设计对RSA IP核进行了严格的测试验证,包括功能测试、性能测试和压力测试。遵循经典ASIC设计流程,搭建符合C*Bus总线时序的仿真环境,做综合,静态时序分析,形式验证,以及版图设计。本设计在smic 0.18um工艺下最终版图面积小于1mm2,在100Mhz时钟下满足前端定义的时序约束。由于RSA密钥更换频率较低,为了节省硬件资源,采用嵌入式软件的方式实现RSA密钥生成算法。本设计使用的算法用于生成1024位和2048位RSA密钥,基于国产32位CPU核(C*CORE C340),使用硬件真随机数发生器HRNG和RSA协处理器进行硬件加速。通过对算法原理和步骤进行深入分析,提出生成素数的三个步骤:随机产生奇数候选数,预筛选,素性测试。通过研究和优化预筛选算法,大大提高了产生素数的效率。分别使用Euclid算法和扩展Euclid算法求解最大公约数和模逆。最后根据嵌入式系统的特点对整个算法进行了优化,测试结果与同类产品相比有一定优势。