论文部分内容阅读
随着网络技术和信息技术的飞速发展,信息泄露事件频出,保证人们的信息安全就显得愈发重要。加密算法为这些问题提供了有效的解决办法,硬件加密由于其抗攻击强,资源消耗较少、加密速度快等优点被广泛使用。国家密码管理局于2010年发布的SM2算法是对椭圆曲线密码学(Elliptic curve cryptography,ECC)的发展,简化了ECC中明文的编码方式、解决了明文长度的限制。本论文首先从SM2算法原理出发,详细介绍了SM2加解密算法的相关基础知识,包括素数域和二进制域的介绍、椭圆曲线的基本概念以及椭圆曲线上点的计算;然后根据设计需求和特点,制定了整体的架构,提出了能适用于不同场合的双域SM2加解密算法,并且详细介绍了各个运算层中的各种算法,并针对设计目标进行了优化;最后给出了硬件实现方案,分别进行了各个模块的设计并完成仿真与验证。SM2加解密算法模块可以作为IP核通过总线与SOC(System on Chip)连接,实现软硬件协同工作。本论文根据设计需求设计了如下模块:加解密协议层的SM3密码杂凑模块、密钥派生函数模块和SM2主控制模块;椭圆曲线层的点加模块、倍点模块和点乘模块;有限域运算层的模加模减模块、模乘模块和模逆模块。整个系统主要通过主状态机控制从状态机的方式来完成SM2加解密算法的流程。其中SM3密码杂凑模块采用流水线结构以及CSA(Carry Save Adder)结构提高了吞吐率,支持每次输入512比特的数据;点乘模块采用了改进的二进制展开法,使用相同的控制电路实现了素数域和二进制域上的运算;点加和倍点模块通过对算法深入的分析,针对其复杂的运算步骤改进了电路结构,采用了并行设计和时分复用的思想,达到了减少了运算资源、提高运算速度的目的;有限域运算层的模逆模块通过改进控制电路,使其同时支持素数域和有限域,并且利用预计算后判断的方式替代比较电路,从而缩短了关键路径的延迟。在使用Verilog完成RTL设计以后,本论文中所有模块均在Modelsim中进行了功能测试,并且在FPGA开发板上验证通过。仿真结果表明,SM2加解密算法的硬件实现不仅支持素数域下的各种运算,还支持二进制域下的各种运算。