论文部分内容阅读
随着网络通信的快速发展,对信息安全的要求越来越高。传统的公钥密码方案如RSA、DH方案所需密钥长度越来越长,导致加解密效率变低。作为后来者的椭圆曲线密码体制(Elliptic Curve Cryptosystems,ECC)能以较短的密钥长度获得相同的安全强度(如160比特的ECC相当于1024比特的RSA的安全强度),因此越来越受人们青睐。
在椭圆曲线密码学中,点乘是其核心运算。椭圆曲线密码体制的安全性就建立在点乘求逆的困难性上。所以点乘的实现成为关键。从安全性和实现效率来说,硬件实现应该是最好的选择。
本文研究了点乘运算所涉及的技术,主要包括点乘分解方法、点运算调度安排和素域算术的硬件实现技术,并选择快速的点乘技术在FPGA上进行了具体的实现设计。具体来说,主要包括下述工作:
1)在素域算术的硬件实现方面,采用流水线技术设计了一个Montgomery模乘器,并把较简单的模加减电路结合进来,得到一个高吞吐量的三级流水模运算单元。用它可以完成模乘、模加减、模乘加运算。由于流水线结构的高吞吐能力,因此能够大大提高点乘运算的速度。
2)为了使模运算单元的流水线能够得到充分利用,精心设计了倍点和点加的调度方案。新的调度方案保证了模运算单元获得100%的利用率。
3)在点乘分解方法上,研究了两种具有普遍性的点乘快速方法,最终选择并实现了较快速的Addition-subtraction方法。
在ModelSim仿真环境下,用VHDL语言描述了点乘运算的算法模型,使用国家密码管理局所给出的椭圆曲线的例子对其进行测试,验证了所选择点乘方案的正确性。依据此算法模型,在Xilinx公司的集成开发环境ISE9.2i下,描述了三级流水线结构的模运算单元和控制模块的RTL级电路。在Spartan-35000FPGA平台上综合256-bit的模运算单元的结果显示,其时钟频率可达126 MHz。使用该运算单元完成点乘,平均一次点乘用时8.5 ms,和同类设计相比,该模运算单元具有资源占用少、运算速度快的优势。