论文部分内容阅读
在移动设备越来越普及的今天,移动支付的交易金额与服务对象数量都处在在蓬勃发展中。在移动支付这一类的电子商务活动中,我们采用的是WPKI协议。WPKI协议采用公钥密码体制设施,同时也对公钥加密提出了独特的要求。首先,应用于移动支付上的公钥加密需要具备可扩展性,对于不同长度的密钥均能完成加解密的过程。其次,由于移动支付大多是应用于智能手机上,为了支持尽可能多的功能,对于加密单元的面积和功耗将是受限制的。针对移动支付的这些要求,并对几种公钥加密算法(RSA、ECC、SM2)进行深入分析,将算法分解为一个个的基本运算单元,本文采用模块复用的手段设计了一个可扩展的公钥密码运算单元,并在面积受到约束的情况下,尽可能使该运算单元具备高性能小面积的特点。该运算单元包括公钥密码算法所需要用到的各运算单元,并包括了与AHB的接口模块和存储接口单元。在模乘运算单元中,本文先后设计了1024位的加法模块以及256位的加法模块复用的两种不同方式完成模乘运算的电路结构,通过仿真和综合报告给出了这两种方式实现的电路在运算时间以及占用面积上的区别。同时深入分析复用电路方式的工作原理,给出了一般的低位数加法模块复用实现高位数模乘运算的运算时间一般规律。在32MHZ的时钟频率下,为了实现1024位的模乘运算,使用1024位的加法模块只需要0.000032s,而使用256位的加法模块,则需要0.00026s,使用32位的加法模块则需要0.002s。最后出于运算时间以及面积的综合考虑,采用了256位加法模块复用的方式来实现模乘运算。在模幂运算单元中,我们采用了R-L的二进制扫描法来将模幂运算化简为一系列的模乘运算,同时为了精简电路规模,我们在初始化阶段引入Montgomery余数域的概念消除了模乘运算中的冗余因子,从而完成整个模幂模块的状态转换过程。同样,为了实现1024位的模幂运算,若调用1024位的加法模块实现的模乘运算单元,则需要0.05s,电路面积约为5.3万等效门,使用256位的加法模块来完成一次模幂运算则需要0.42s,电路面积约为1.57万等效门,用32位的加法模块来完成一次模幂运算需要3.15s,从运算时间和面积的综合考虑,最终采取了256位加法模块来复用完成整个模乘、模幂运算,通过这种复用方式,能实现任意256n位的模乘、模幂运算。在模逆运算单元中,为了减少整个运算单元的面积开销,本文深入分析了欧拉定理,将模逆运算转化成了模幂运算,通过一个简单的减法电路将模逆运算的输入转化为合适的模幂运算的输入,随后调用模幂运算单元来实现模逆运算。在大数乘法单元中,本文设计并实现了任意位数的大数乘法运算单元,将被乘数从低位到高位与乘数进行依次相乘,随后进行移位操作后将每一轮的结果进行迭代相加,最终完成任意位数的大数乘法,对于256位的大数乘法运算单元,评估出来的电路面积大约为5950等效门。在大数加减法运算单元中,本文给出了CSA和CRA的结构,CSA能够将3输入的模式转化为2输入的模式,而CRA能很好的完成2输入加法运算。对于减法单元,通过将减法运算转化为3输入的加法运算来完成化简。对于每一个运算单元,本文均给出了其仿真结果,对于模幂、模乘、模逆、大数乘法运算,本文还给出了其在DC综合下的结果以及最终的版图。综合报告表明,与传统模幂乘运算单元相比,本文的设计的运算单元面积大概缩小了1/4。