一种基于fpga的椭圆曲线标量乘法加速电路及其算法

文档序号:7810386阅读:157来源:国知局
一种基于fpga的椭圆曲线标量乘法加速电路及其算法
【专利摘要】本发明公开了一种基于FPGA的椭圆曲线标量乘法加速电路及其算法,电路包括输入模块、仿射坐标转化为投影坐标模块、主循环乘法模块、投影坐标转化为仿射坐标模块、输出模块和时钟控制模块;输入参数经输入模块将数据传递给仿射坐标转化为投影坐标模块、主循环乘法模块和投影坐标转化为仿射坐标模块;仿射坐标转化为投影坐标模块将数据传递给主循环乘法模块;主循环乘法模块将数据传递给投影坐标转化为仿射坐标模块;投影坐标转化为仿射坐标模块将数据传递给输出模块;时钟控制模块用于控制仿射坐标转化为投影坐标模块、主循环乘法模块和投影坐标转化为仿射坐标模块的时钟信号。本发明得到一种有限域上的运算设计更优的执行电路。
【专利说明】—种基于FPGA的椭圆曲线标量乘法加速电路及其算法

【技术领域】
[0001]本发明属于加密算法的硬件加速领域,尤其涉及一种基于FPGA的椭圆曲线标量乘法加速电路及其算法。

【背景技术】
[0002]椭圆曲线密码体制(ECC)理论由Neal Koblitz和Victor Miller于1985年分别独立提出,它是公钥密码体制的一种。公钥密码体制的思想由Diffie和Hellman于1976年提出,与传统的私钥密码体制采用替代和置换的方式不同,它基于数学问题的难解性,要求密钥成对出现,一个是加密密钥,另一个是解密密钥。公钥密码体制有效解决了传统密码体制所面临的密钥分发、密钥管理和无法提供不可否认性的难题,公钥密码体制的运算量较大,在实际应用中常与私钥密码体制结合使用。RSA是一种流行的公钥密码算法,提出于1977年,RSA的安全性基于大整数分解的难题,能够应用于保密通信、密钥管理和数字签名等方面。
[0003]ECC依赖于椭圆曲线离散对数问题(EOTLP)的难解性,它的一个主要优势是在相同密钥长度的情况下,与其他公钥密码体制(例如RSA)相比,ECC具有更高的安全性。这使得在应用ECC时能够获得更快的处理速度并降低对带宽和存储空间的要求。
[0004]ECC中最主要的运算是椭圆曲线标量乘法运算,它是指给定一个整数k和椭圆曲线上的一个点P,求曲线上另一点Q = kP的过程。该过程通常由点加和倍点组成,点加和倍点又基于有限域上的算术运算。
[0005]ECC的实现方式可分为软件和硬件,软件方式可以在通用处理器借助高级编程语言较容易地实现,但其低下的执行效率在很多情况下无法满足应用对性能的要求。与软件方式相比,硬件实现方式具有较高的执行效率,其又可分为基于专用集电路(ASIC)和现场可编程门阵列(FPGA)两种实现方式,与ASIC相比,FPGA的灵活性使得它可以方便的更新硬件设备上的加密算法,因此成为本发明所采用的平台。
[0006]FPGA中的门电路可以同时翻转,使得它具有很高的并行性。现有的很多基于FPGA的ECC电路设计没有结合加密算法充分利用FPGA的高度并行性导致效率低下,或者硬件资源消耗严重,无法应用于硬件资源有限的设备上。


【发明内容】

[0007]为了解决上述技术问题,本发明提出了一种基于FPGA的椭圆曲线标量乘法加速电路设计,用以完成二进制域上的椭圆曲线标量乘法运算。该设计结合硬件电路的特性对算法进行改进,具有运算速度快、电路面积小的优势。
[0008]为了取得上述技术效果,本发明采用以下技术方案:
[0009]—种基于FPGA的椭圆曲线标量乘法加速电路,包括输入模块、仿射坐标转化为投影坐标模块、主循环乘法模块、投影坐标转化为仿射坐标模块、输出模块和时钟控制模块;输入参数经输入模块将数据传递给仿射坐标转化为投影坐标模块、主循环乘法模块和投影坐标转化为仿射坐标模块;仿射坐标转化为投影坐标模块将数据传递给主循环乘法模块;主循环乘法模块将数据传递给投影坐标转化为仿射坐标模块,所述主循环乘法模块在运行乘法运算的同时并行执行其他运算操作,从而提高效率;投影坐标转化为仿射坐标模块将数据传递给输出模块;时钟控制模块用于控制仿射坐标转化为投影坐标模块、主循环乘法模块和投影坐标转化为仿射坐标模块的时钟信号。
[0010]所述基于FPGA的椭圆曲线标量乘法加速电路的具体电路包括5个异或运算单元、2个平方运算单元、2个四次方运算单元、乘法运算模块、有限域上的约减运算单元和9个多路数据选择器;第一异或运算单元和第二异或运算单元均通过第一多路数据选择器将数据传输给第四多路数据选择器和第六多路数据选择器;第三异或运算单元与第四异或运算单元均通过第二多路选择器将数据传输给第四多路数据选择器和第六多路选择器;第五异或运算单元通过第三多路选择器将数据传输给第一平方运算单元;第一平方运算单元将数据传输给第五多路选择器、第四多路数据选择器、第二平方运算单元和第九多路数据选择器;第九多路数据选择器将数据传输给第六多路数据选择器;第四多路数据选择器的输出数据通过第一四次方运算单元将数据传输给第二异或运算单元、第四异或运算单元和第八多路数据选择器;第二四次方运算单元将数据输出给第七多路数据选择器;第七多路数据选择器将数据传递给第二四次方运算单元和第八多路数据选择器;第八多路数据选择器将数据传递给第五多路数据选择器;第二平方运算模块将数据传输给第六多路数据选择器;第六多路数据选择器与第五多路数据选择器将数据传输给乘法运算模块;乘法运算模块的输出数据经有限域上的约减运算单元将数据分别传递给5个异或运算单元、第一至第五多路数据选择器、第七多路数据选择器和第九多路数据选择器。
[0011]所述第一异或运算单元的输入端还连接X1 ;所述第二异或运算单元的输入端还连接X2 ;所述第六多路数据选择器的输入端还连接Xp与b ;其中XpX2分别表示投影系下两个点(X1, Z1),(X2, Z2)的坐标,Xp为点P仿射坐标下的xp,b为椭圆方程常数项。
[0012]一种基于FPGA的椭圆曲线标量乘法加速电路的算法,包括如下步骤:
[0013]I)仿射坐标转化为投影坐标,即进行初始化;
[0014]2)算法的主循环:算法的主循环部分包含m次循环,m为二进制表示的k的长度,k为整数,每次循环处理k中的一位,每一次循环包含有限域上的6次乘法、2次平方、2次四次方和3次加法运算;
[0015]3)将投影坐标转化为仿射坐标。
[0016]所述步骤I)中的初始化具体操作为投影系上的两个点的坐标分别设置为(XnZ1)=(1,0), (X2, Z2) = (xp, I) ;χρ 为点 P 仿射坐标(xp,yp)下的 χρ。
[0017]所述步骤2)中乘法运算与其他运算并行运行;每次乘法运算之后要进行约减,两个连续的乘法运算,后一个不能依赖于前一个输出结果。
[0018]所述步骤2)中当Iii = O时,下一个周期从X2Z1开始本=I时,下一个周期从X1Z2开始;其中,Ici为整数k 二进制表示的第i位的数值,X1, Z1, X2、Z2为投影系下两个点(X1, Z1),(X2, Z2)的坐标。
[0019]所述步骤2)中的乘法运算为Kartsuba-Ofman算法,将每一个乘法操作数分解两次,一个m位的乘法操作数被分解为4个长度均为「m/4]的部分。
[0020]所述步骤3)中的将投影坐标转化为仿射坐标采用Itoh-Tsujii求逆运算,求逆运算由有限域上的乘法和加法组成。

【专利附图】

【附图说明】
[0021]图1为本发明的系统框架图。
[0022]图2为基于Montgomery方法所改进的算法。
[0023]图3为当h = O时,有限域上的乘法运算与其他运算并行执行的流程图。
[0024]图4为乘法器在整个主循环中无空闲周期,并以Ici = O为例的流程图。
[0025]图5 为 Karatsuba-Ofman 乘法不意图。
[0026]图6为二进制多项式平方示意图。
[0027]其中,101、第一异或运算单元;102、第二异或运算单元;103、第三异或运算单元;104、第四异或运算单元;105、第五异或运算单元;201、第一平方运算单元;202、第二平方运算单元;301、第一多路数据选择器;302、第二多路数据选择器;303、第三多路数据选择器;304、第四多路数据选择器;305、第五多路数据选择器;306、第六多路数据选择器;307、第七多路数据选择器;308、第八多路数据选择器;309、第九多路数据选择器;401、第一四次方运算单元;402、第二四次方运算单元。

【具体实施方式】
[0028]下面结合附图对本发明作进一步说明。
[0029]椭圆曲线密码的实现基于有限域上的算术运算。有限域或者称伽罗瓦域是指由有限个元素所组成的域。最常使用的有限域是二进制域GF (2m)和素数域GF(p),这两种有限域所提供的安全等级是相同的,但是二进制域上的算术运算在硬件平台上具有更高的执行效率,所以本发明采用二进制域。构建二进制域GF(2m)的一种方式是采用多项式基表示域中的元素,在这种表示方法下,每一个元素被表示为EV1Xni^Ma2XiaMatl, Bi e {O, 1}的形式。
[0030]GF(2m)上的椭圆曲线由如下的Weierstrass方程定义:
[0031]y2+xy = x3+ax2+b,
[0032]其中a、b是GF(2n)中的元素,b为常数项,且b古O。椭圆曲线上的点可以用仿射坐标或投影坐标来表示。用仿射坐标表示时,椭圆曲线上的点P由GF(2m)上的2个元素(x, y)组成,用投影坐标表示时,椭圆曲线上的点由GF(2m)上的3个元素(X,Y,Z)表示。在仿射坐标系下,主循环中的每一次循环都需要求逆运算,这会造成极大的计算开销,使用投影坐标则可以有效避免主循环中的求逆运算。因此本发明使用仿射坐标作为系统的输入输出,使用投影坐标进行椭圆曲线标量乘法的运算。
[0033]图1是本发明的系统框架图。一种基于FPGA的椭圆曲线标量乘法加速电路,包括输入模块、仿射坐标转化为投影坐标模块、主循环乘法模块、投影坐标转化为仿射坐标模块、输出模块和时钟控制模块;输入参数经输入模块将数据传递给仿射坐标转化为投影坐标模块、主循环乘法模块和投影坐标转化为仿射坐标模块;仿射坐标转化为投影坐标模块将数据传递给主循环乘法模块;主循环乘法模块将数据传递给投影坐标转化为仿射坐标模块;投影坐标转化为仿射坐标模块将数据传递给输出模块;时钟控制模块用于控制仿射坐标转化为投影坐标模块、主循环乘法模块和投影坐标转化为仿射坐标模块的时钟信号。
[0034]本发明采用基于Montgomery方法所改进的算法,共包括三个阶段:仿射坐标转化为投影坐标(初始化)、主循环以及投影坐标转化为仿射坐标。
[0035]Montgomery方法的优势是仅有X坐标(仿射坐标系下)或者X和Z坐标(投影坐标系下)参与运算,本发明使用标准投影坐标,仿射坐标系下的X对应于投影坐标系下的X/Z。经过初始化阶段之后,投影坐标所表示的点(X,Y,Z)中的X和Z参与剩余阶段的运算。算法的主循环部分包含m次循环,m即为二进制表示的k的长度,每次循环处理k中的一位。每一次循环包含有限域上的6次乘法、2次平方、2次四次方和3次加法操作。完成一次乘法运算所消耗的时间多于其他运算,这使得其他运算可以并行与乘法运算进行,并且使主循环部分的关键路径完全依赖于乘法运算。
[0036]首先将整数k的值转换为二进制并对其进行赋值;同时对投影坐标系下的两点Q(XijZ1)1P(X27Z2)进行初始化。
[0037]其次进行主循环,算法的主循环部分包含m次循环,m即为二进制表示的k的长度,每次循环处理k中的一位。每一次循环包含有限域上的6次乘法、2次平方、2次四次方和3次加法操作。而一次循环需要的具体乘法如下:
'Tx=XyZ2[T1=X1-Z2
T2=X1-Z1T2=X2-Z1
Ti = X1-Z2, Tz=ZtT3 = X1-Z1, T2 = Z;
[0038]Ki = I.Z.,,Iii = 0.丨 Y1=T1-T2, Z1=(T^r2)- 1 ^X2=T1-T2, Z2=(T1^T2)2
X1=Xp-Z^X1, Tx=XlX2 =Xp.Z2+X2, ^=X14
^ =b-Tz+Tx, Z2=T32[X^h-Tz+Tx, Z1=T32
[0039]其中,!\、T2和T3为相应参数的乘积,Tx和Tz为相应参数四次方运算结果。
[0040]最后,投影坐标转化为仿射坐标,为两个二次多项式求商的过程。其程序具体操作为:
[0041]

【权利要求】
1.一种基于FPGA的椭圆曲线标量乘法加速电路,其特征是,包括输入模块、仿射坐标转化为投影坐标模块、主循环乘法模块、投影坐标转化为仿射坐标模块、输出模块和时钟控制模块;输入参数经输入模块将数据传递给仿射坐标转化为投影坐标模块、主循环乘法模块和投影坐标转化为仿射坐标模块;仿射坐标转化为投影坐标模块将数据传递给主循环乘法模块;主循环乘法模块将数据传递给投影坐标转化为仿射坐标模块,所述主循环乘法模块在运行乘法运算的同时并行执行其他运算操作,从而提高效率;投影坐标转化为仿射坐标模块将数据传递给输出模块;时钟控制模块用于控制仿射坐标转化为投影坐标模块、主循环乘法模块和投影坐标转化为仿射坐标模块的时钟信号。
2.如权利要求1所述的一种基于FPGA的椭圆曲线标量乘法加速电路,其特征是,所述基于FPGA的椭圆曲线标量乘法加速电路的具体电路包括5个异或运算单元、2个平方运算单元、2个四次方运算单元、乘法运算模块、有限域上的约减运算单元和9个多路数据选择器;第一异或运算单元和第二异或运算单元均通过第一多路数据选择器将数据传输给第四多路数据选择器和第六多路数据选择器;第三异或运算单元与第四异或运算单元均通过第二多路选择器将数据传输给第四多路数据选择器和第六多路选择器;第五异或运算单元通过第三多路选择器将数据传输给第一平方运算单元;第一平方运算单元将数据传输给第五多路选择器、第四多路数据选择器、第二平方运算单元和第九多路数据选择器;第九多路数据选择器将数据传输给第六多路数据选择器;第四多路数据选择器的输出数据通过第一四次方运算单元将数据传输给第二异或运算单元、第四异或运算单元和第八多路数据选择器;第二四次方运算单元将数据输出给第七多路数据选择器;第七多路数据选择器将数据传递给第二四次方运算单元和第八多路数据选择器;第八多路数据选择器将数据传递给第五多路数据选择器;第二平方运算模块将数据传输给第六多路数据选择器;第六多路数据选择器与第五多路数据选择器将数据传输给乘法运算模块;乘法运算模块的输出数据经有限域上的约减运算单元将数据分别传递给5个异或运算单元、第一至第五多路数据选择器、第七多路数据选择器和第九多路数据选择器。
3.如权利要求2所述的一种基于FPGA的椭圆曲线标量乘法加速电路,其特征是,所述第一异或运算单元的输入端还连接X1 ;所述第二异或运算单元的输入端还连接X2 ;所述第六多路数据选择器的输入端还连接xp与b ;其中Xp X2分别表示投影系下两个点(X1, Z1),(X2, Z2)的坐标,xp为点P仿射坐标下的xp,b为椭圆方程常数项。
4.如权利要求1所述的一种基于FPGA的椭圆曲线标量乘法加速电路的算法,其特征是,包括如下步骤: 1)仿射坐标转化为投影坐标,即进行初始化; 2)算法的主循环:算法的主循环部分包含m次循环,m为二进制表示的k的长度,k为整数,每次循环处理k中的一位,每一次循环包含有限域上的6次乘法、2次平方、2次四次方和3次加法运算; 3)将投影坐标转化为仿射坐标。
5.如权利要求4所述的一种基于FPGA的椭圆曲线标量乘法加速电路的算法,其特征是,所述步骤I)中的初始化具体操作为投影系上的两个点的坐标分别设置为(XpZ1) = (I,O),(X2, Z2) = (xp, I) ;xp 为点 P 仿射坐标(xp, yp)下的 xp。
6.如权利要求4所述的一种基于FPGA的椭圆曲线标量乘法加速电路的算法,其特征是,所述步骤2)中乘法运算与其他运算并行运行;每次乘法运算之后要进行约减,两个连续的乘法运算,后一个不能依赖于前一个输出结果。
7.如权利要求4-6任一所述的一种基于FPGA的椭圆曲线标量乘法加速电路的算法,其特征是,所述步骤2)中当Iii = O时,下一个周期从X2Z1开始本=I时,下一个周期从X1Z2开始;其中,Ici为整数k 二进制表示的第i位的数值,X1, Z1, X2、Z2为投影系下两个点(X1, Z1),(X2, Z2)的坐标。
8.如权利要求7所述的一种基于FPGA的椭圆曲线标量乘法加速电路的算法,其特征是,所述步骤2)中的乘法运算为Kartsuba-Ofman算法,将每一个乘法操作数分解两次,一个m位的乘法操作数被分解为4个长度均为的部分。
9.如权利要求8所述的一种基于FPGA的椭圆曲线标量乘法加速电路的算法,其特征是,所述步骤3)中的将投影坐标转化为仿射坐标采用Itoh-Tsujii求逆运算,求逆运算由有限域上的乘法和加法组成。
【文档编号】H04L9/06GK104184578SQ201410370767
【公开日】2014年12月3日 申请日期:2014年7月30日 优先权日:2014年7月30日
【发明者】蔡晓军, 刘帅, 鞠雷, 贾智平 申请人:山东大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1