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

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

Info

Publication number
CN104184578B
CN104184578B CN201410370767.3A CN201410370767A CN104184578B CN 104184578 B CN104184578 B CN 104184578B CN 201410370767 A CN201410370767 A CN 201410370767A CN 104184578 B CN104184578 B CN 104184578B
Authority
CN
China
Prior art keywords
module
coordinate
converted
channel data
data selector
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201410370767.3A
Other languages
English (en)
Other versions
CN104184578A (zh
Inventor
蔡晓军
刘帅
鞠雷
贾智平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong University
Original Assignee
Shandong University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong University filed Critical Shandong University
Priority to CN201410370767.3A priority Critical patent/CN104184578B/zh
Publication of CN104184578A publication Critical patent/CN104184578A/zh
Application granted granted Critical
Publication of CN104184578B publication Critical patent/CN104184578B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

本发明公开了一种基于FPGA的椭圆曲线标量乘法加速电路及其算法,电路包括输入模块、仿射坐标转化为投影坐标模块、主循环乘法模块、投影坐标转化为仿射坐标模块、输出模块和时钟控制模块;输入参数经输入模块将数据传递给仿射坐标转化为投影坐标模块、主循环乘法模块和投影坐标转化为仿射坐标模块;仿射坐标转化为投影坐标模块将数据传递给主循环乘法模块;主循环乘法模块将数据传递给投影坐标转化为仿射坐标模块;投影坐标转化为仿射坐标模块将数据传递给输出模块;时钟控制模块用于控制仿射坐标转化为投影坐标模块、主循环乘法模块和投影坐标转化为仿射坐标模块的时钟信号。本发明得到一种有限域上的运算设计更优的执行电路。

Description

一种基于FPGA的椭圆曲线标量乘法加速电路及其算法
技术领域
本发明属于加密算法的硬件加速领域,尤其涉及一种基于FPGA的椭圆曲线标量乘法加速电路及其算法。
背景技术
椭圆曲线密码体制(ECC)理论由Neal Koblitz和Victor Miller于1985年分别独立提出,它是公钥密码体制的一种。公钥密码体制的思想由Diffie和Hellman于1976年提出,与传统的私钥密码体制采用替代和置换的方式不同,它基于数学问题的难解性,要求密钥成对出现,一个是加密密钥,另一个是解密密钥。公钥密码体制有效解决了传统密码体制所面临的密钥分发、密钥管理和无法提供不可否认性的难题,公钥密码体制的运算量较大,在实际应用中常与私钥密码体制结合使用。RSA是一种流行的公钥密码算法,提出于1977年,RSA的安全性基于大整数分解的难题,能够应用于保密通信、密钥管理和数字签名等方面。
ECC依赖于椭圆曲线离散对数问题(ECDLP)的难解性,它的一个主要优势是在相同密钥长度的情况下,与其他公钥密码体制(例如RSA)相比,ECC具有更高的安全性。这使得在应用ECC时能够获得更快的处理速度并降低对带宽和存储空间的要求。
ECC中最主要的运算是椭圆曲线标量乘法运算,它是指给定一个整数k和椭圆曲线上的一个点P,求曲线上另一点Q=kP的过程。该过程通常由点加和倍点组成,点加和倍点又基于有限域上的算术运算。
ECC的实现方式可分为软件和硬件,软件方式可以在通用处理器借助高级编程语言较容易地实现,但其低下的执行效率在很多情况下无法满足应用对性能的要求。与软件方式相比,硬件实现方式具有较高的执行效率,其又可分为基于专用集电路(ASIC)和现场可编程门阵列(FPGA)两种实现方式,与ASIC相比,FPGA的灵活性使得它可以方便的更新硬件设备上的加密算法,因此成为本发明所采用的平台。
FPGA中的门电路可以同时翻转,使得它具有很高的并行性。现有的很多基于FPGA的ECC电路设计没有结合加密算法充分利用FPGA的高度并行性导致效率低下,或者硬件资源消耗严重,无法应用于硬件资源有限的设备上。
发明内容
为了解决上述技术问题,本发明提出了一种基于FPGA的椭圆曲线标量乘法加速电路设计,用以完成二进制域上的椭圆曲线标量乘法运算。该设计结合硬件电路的特性对算法进行改进,具有运算速度快、电路面积小的优势。
为了取得上述技术效果,本发明采用以下技术方案:
一种基于FPGA的椭圆曲线标量乘法加速电路,包括输入模块、仿射坐标转化为投影坐标模块、主循环乘法模块、投影坐标转化为仿射坐标模块、输出模块和时钟控制模块;输入参数经输入模块将数据传递给仿射坐标转化为投影坐标模块、主循环乘法模块和投影坐标转化为仿射坐标模块;仿射坐标转化为投影坐标模块将数据传递给主循环乘法模块;主循环乘法模块将数据传递给投影坐标转化为仿射坐标模块,所述主循环乘法模块在运行乘法运算的同时并行执行其他运算操作,从而提高效率;投影坐标转化为仿射坐标模块将数据传递给输出模块;时钟控制模块用于控制仿射坐标转化为投影坐标模块、主循环乘法模块和投影坐标转化为仿射坐标模块的时钟信号。
所述基于FPGA的椭圆曲线标量乘法加速电路的具体电路包括5个异或运算单元、2个平方运算单元、2个四次方运算单元、乘法运算模块、有限域上的约减运算单元和9个多路数据选择器;第一异或运算单元和第二异或运算单元均通过第一多路数据选择器将数据传输给第四多路数据选择器和第六多路数据选择器;第三异或运算单元与第四异或运算单元均通过第二多路选择器将数据传输给第四多路数据选择器和第六多路选择器;第五异或运算单元通过第三多路选择器将数据传输给第一平方运算单元;第一平方运算单元将数据传输给第五多路选择器、第四多路数据选择器、第二平方运算单元和第九多路数据选择器;第九多路数据选择器将数据传输给第六多路数据选择器;第四多路数据选择器的输出数据通过第一四次方运算单元将数据传输给第二异或运算单元、第四异或运算单元和第八多路数据选择器;第二四次方运算单元将数据输出给第七多路数据选择器;第七多路数据选择器将数据传递给第二四次方运算单元和第八多路数据选择器;第八多路数据选择器将数据传递给第五多路数据选择器;第二平方运算模块将数据传输给第六多路数据选择器;第六多路数据选择器与第五多路数据选择器将数据传输给乘法运算模块;乘法运算模块的输出数据经有限域上的约减运算单元将数据分别传递给5个异或运算单元、第一至第五多路数据选择器、第七多路数据选择器和第九多路数据选择器。
所述第一异或运算单元的输入端还连接X1;所述第二异或运算单元的输入端还连接X2;所述第六多路数据选择器的输入端还连接xp与b;其中X1、X2分别表示投影系下两个点(X1,Z1),(X2,Z2)的坐标,xp为点P仿射坐标下的xp,b为椭圆方程常数项。
一种基于FPGA的椭圆曲线标量乘法加速电路的算法,包括如下步骤:
1)仿射坐标转化为投影坐标,即进行初始化;
2)算法的主循环:算法的主循环部分包含m次循环,m为二进制表示的k的长度,k为整数,每次循环处理k中的一位,每一次循环包含有限域上的6次乘法、2次平方、2次四次方和3次加法运算;
3)将投影坐标转化为仿射坐标。
所述步骤1)中的初始化具体操作为投影系上的两个点的坐标分别设置为(X1,Z1)=(1,0),(X2,Z2)=(xp,1);xp为点P仿射坐标(xp,yp)下的xp
所述步骤2)中乘法运算与其他运算并行运行;每次乘法运算之后要进行约减,两个连续的乘法运算,后一个不能依赖于前一个输出结果。
所述步骤2)中当ki=0时,下一个周期从X2Z1开始;ki=1时,下一个周期从X1Z2开始;其中,ki为整数k二进制表示的第i位的数值,i≤m,X1、Z1、X2、Z2为投影系下两个点(X1,Z1),(X2,Z2)的坐标。
所述步骤2)中的乘法运算为Kartsuba-Ofman算法,将每一个乘法操作数分解两次,一个m位的乘法操作数被分解为4个长度均为的部分。
所述步骤3)中的将投影坐标转化为仿射坐标采用Itoh-Tsujii求逆运算,求逆运算由有限域上的乘法和加法组成。
附图说明
图1为本发明的系统框架图。
图2为基于Montgomery方法所改进的算法。
图3为当ki=0时,有限域上的乘法运算与其他运算并行执行的流程图。
图4为乘法器在整个主循环中无空闲周期,并以ki=0为例的流程图。
图5为Karatsuba-Ofman乘法示意图。
图6为二进制多项式平方示意图。
其中,101、第一异或运算单元;102、第二异或运算单元;103、第三异或运算单元;104、第四异或运算单元;105、第五异或运算单元;201、第一平方运算单元;202、第二平方运算单元;301、第一多路数据选择器;302、第二多路数据选择器;303、第三多路数据选择器;304、第四多路数据选择器;305、第五多路数据选择器;306、第六多路数据选择器;307、第七多路数据选择器;308、第八多路数据选择器;309、第九多路数据选择器;401、第一四次方运算单元;402、第二四次方运算单元。
具体实施方式
下面结合附图对本发明作进一步说明。
椭圆曲线密码的实现基于有限域上的算术运算。有限域或者称伽罗瓦域是指由有限个元素所组成的域。最常使用的有限域是二进制域GF(2m)和素数域GF(p),这两种有限域所提供的安全等级是相同的,但是二进制域上的算术运算在硬件平台上具有更高的执行效率,所以本发明采用二进制域。构建二进制域GF(2m)的一种方式是采用多项式基表示域中的元素,在这种表示方法下,每一个元素被表示为am-1xm-1+…+a2x2+a1x+a0,ai∈{0,1}的形式。
GF(2m)上的椭圆曲线由如下的Weierstrass方程定义:
y2+xy=x3+ax2+b,
其中a、b是GF(2m)中的元素,b为常数项,且b≠0。椭圆曲线上的点可以用仿射坐标或投影坐标来表示。用仿射坐标表示时,椭圆曲线上的点P由GF(2m)上的2个元素(x,y)组成,用投影坐标表示时,椭圆曲线上的点由GF(2m)上的3个元素(X,Y,Z)表示。在仿射坐标系下,主循环中的每一次循环都需要求逆运算,这会造成极大的计算开销,使用投影坐标则可以有效避免主循环中的求逆运算。因此本发明使用仿射坐标作为系统的输入输出,使用投影坐标进行椭圆曲线标量乘法的运算。
图1是本发明的系统框架图。一种基于FPGA的椭圆曲线标量乘法加速电路,包括输入模块、仿射坐标转化为投影坐标模块、主循环乘法模块、投影坐标转化为仿射坐标模块、输出模块和时钟控制模块;输入参数经输入模块将数据传递给仿射坐标转化为投影坐标模块、主循环乘法模块和投影坐标转化为仿射坐标模块;仿射坐标转化为投影坐标模块将数据传递给主循环乘法模块;主循环乘法模块将数据传递给投影坐标转化为仿射坐标模块;投影坐标转化为仿射坐标模块将数据 传递给输出模块;时钟控制模块用于控制仿射坐标转化为投影坐标模块、主循环乘法模块和投影坐标转化为仿射坐标模块的时钟信号。
本发明采用基于Montgomery方法所改进的算法,共包括三个阶段:仿射坐标转化为投影坐标(初始化)、主循环以及投影坐标转化为仿射坐标。
Montgomery方法的优势是仅有X坐标(仿射坐标系下)或者X和Z坐标(投影坐标系下)参与运算,本发明使用标准投影坐标,仿射坐标系下的x对应于投影坐标系下的X/Z。经过初始化阶段之后,投影坐标所表示的点(X,Y,Z)中的X和Z参与剩余阶段的运算。算法的主循环部分包含m次循环,m即为二进制表示的k的长度,每次循环处理k中的一位。每一次循环包含有限域上的6次乘法、2次平方、2次四次方和3次加法操作。完成一次乘法运算所消耗的时间多于其他运算,这使得其他运算可以并行与乘法运算进行,并且使主循环部分的关键路径完全依赖于乘法运算。
首先将整数k的值转换为二进制并对其进行赋值;同时对投影坐标系下的两点Q(X1,Z1),P(X2,Z2)进行初始化。
其次进行主循环,算法的主循环部分包含m次循环,m即为二进制表示的k的长度,每次循环处理k中的一位。每一次循环包含有限域上的6次乘法、2次平方、2次四次方和3次加法操作。而一次循环需要的具体乘法如下:
其中,T1、T2和T3为相应参数的乘积,Tx和Tz为相应参数四次方运算结果。
最后,投影坐标转化为仿射坐标,为两个二次多项式求商的过程。其程序具体操作为:
由此可知,算法的最后阶段,Z1,Z2和xP的逆需要计算,由于xP的值在算法一开始就是确定的,因此可在主循环阶段提前求得xP的逆。常用的求逆算法有二进制算法、扩展的Euclidean算法和Itoh-Tsujii算法。本发明采用的是Itoh-Tsujii求逆算法。该算法基于费马小定理,由m-1个限域上的平方和 个有限域上的乘法运算组成,其中H(m-1)表示m-1的二进制表示中1的个数。Itoh-Tsujii求逆算法可通过复用乘法和平方模块的方式来实现,仅需较少的额外资源便可获得较高的执行速度。
图2表示的是在主循环中当ki=0时,有限域上的乘法运算与其他运算并行执行的流程图。图中MUL表示乘法运算,QUAD为四次方运算单元,ADD SQU为平方运算与加法运算单元,ADD为加法运算,三角形表示简约运算。在乘法运算之后要进行约减,假设乘法运算所需的周期是M,约减所需的周期是r(M>r)。在流程图中以矩形表示有限域乘法的开始,以带有“*”的三角形表示约减的结束,从一个灰色矩形到与之对应的三角形间的距离是M+r。有限域乘法在开始后,只有经过M+r个周期后才能使用其结果。本发明设计了乘法运算模块和约减运算模块,为使乘法运算模块能够持续不停地工作,算法中两个连续的乘法运算,后 一个不能依赖于前一个的输出结果,约减运算和其他运算共同并行与乘法运算执行。采用这种方案,一次循环所需要的周期为6M+r+N,N表示最后一个加法运算所需的周期。
在图2所示流程图的最底部,加法操作需要等待乘法操作的运算结果,而加法操作的输出作为下一轮迭代开始时来计算T1的输入。这造成了r+N的延迟,这个延迟可以通过以下方法消除。T1和T2是对称的,他们的计算顺序也可以交换,每个周期的第一个乘法操作可以是X1·Z2或者X2·Z1。当ki=0时,Z1,Z2和X2比X1提前可用,这表示下一个周期从X2·Z1开始并在X1的结果得到前进行。
图3表示的是在主循环中ki=0且下一个周期中X2·Z1的计算顺序被提前的流程图。当ki=1时,下一个周期乘法运算则从X1·Z2开始。使用这种方案,下一周期可在当前周期尚未结束前便开始执行,乘法器在整个主循环中一直运作,一次循环所需要的周期为6M。
在二进制域中,次数不超过m-1的二进制多项式相乘或者平方,得到的结果是次数最多为2m-2的二进制多项式,需要使用不可约多项式对运算结果进行约减使其次数不超过m-1以保持二进制域的封闭性。约减操作的时间开销是不可忽视的,不同的不可约多项式会造成的不同的算术运算和计算量。常用的不可约多项式有任意约减多项式、三项式和五项式。三项式和五项式指的是包含三个或五个非零系数的多项式,与任意约减多项式相比,他们能够大幅度减少约减运算的复杂性。
有限域乘法运算由于其计算复杂性和较高的出现频率,成为了ECC中最重要的有限域上的运算。本发明采用了由Karatsuba和Ofman所提出的分而治之的方法以减少计算复杂性。该算法将比较大的乘法操作数分成长度相等的两部分,以此将一个复杂的乘法运算分解成多个简单的乘法运算。如果分解后得到的乘法操作数依旧很大,可以对操作数进行再次分解,但每一次分解都会造成额外的加法操作,因此对乘法操作数不能进行过度分解。
图4是Karatsuba-Ofman方法的示意图。对于乘法运算C(x)=A(x)B(x),C(x)为乘积,乘法操作数A、B分别分解为A1、A0以及B1、B0,原始的乘法运算由操作数长度较短的乘法和额外的加法运算组成。本发明使用Karatsuba-Ofman方法将每一个乘法操作数分解两次,一个m位的乘法操作数被分解为4个长度均 为的部分,原始的乘法运算被分解为多个操作数长度为的乘法以及额外的加法的运算。对于操作数长度为的乘法运算,可以写成如下矩阵的形式:
乘法运算所得结果C(x)中的每一个系数可以表述为以下形式
其中,n为自然数,i为自然数。
本发明中,乘法运算在1个周期内完成,对应的约减运算在下一个周期执行。结合图3所示的示意图,主循环过程中的一次循环需要6个周期,乘法运算模块在主循环过程中无空闲周期,约减运算和其他运算共同并行于乘法运算执行。主循环部分还需要一个额外周期用于执行与最后一次乘法相对应的约减以及加法运算。
图5是二进制多项式的平方示意图。对于A(x)=am-1xm-1+…+a2x2+a1x+a0,平方后的结果为A2(x)=am-1x2m-2+…+a2x4+a1x2+a0。对A(x)进行平方即往A(x)的二进制表示中相邻位之间插入0。本发明所设计的平方模块将平方和约减结合在一起,对于次数不超过m-1的二进制多项式输入,所得结果同样为次数不超过m-1的二进制多项式。
本发明还设计了四次方运算模块,它将两次连续的平方和约减结合在一起,用以替代两个连续的平方运算。四次方运算模块能够有效减少主循环部分的计算量,并且加速由有限域乘法和加法所组成的Itoh-Tsujii求逆运算。
有限域加法在二进制域上的运算是模二加法,也就是按位异或的运算。有限 域加法由于无需进位,其执行是十分高效的,执行时间也大幅低于其他的有限域上的运算。
图6是用于执行算法的运算器示意图,它包括5个异或运算单元、2个平方运算单元、2个四次方运算单元、乘法运算模块、有限域上的约减运算单元和9个多路数据选择器;第一异或运算单元101和第二异或运算单元102均通过第一多路数据选择器301将数据传输给第四多路数据选择器304和第六多路数据选择器306;第三异或运算单元103与第四异或运算单元104均通过第二多路选择器302将数据传输给第四多路数据选择器304和第六多路选择器306;第五异或运算单元105通过第三多路选择器303将数据传输给第一平方运算单元201;第一平方运算单元201将数据传输给第五多路选择器305、第四多路数据选择器304、第二平方运算单元202和第九多路数据选择器309;第九多路数据选择器309将数据传输给第六多路数据选择器306;第四多路数据选择器304的输出数据通过第一四次方运算单元401将数据传输给第二异或运算单元102、第四异或运算单元104和第八多路数据选择器308;第二四次方运算单元402将数据输出给第七多路数据选择器307;第七多路数据选择器307将数据传递给第二四次方运算单元402和第八多路数据选择器308;第八多路数据选择器308将数据传递给第五多路数据选择器305;第二平方运算单元202将数据传输给第六多路数据选择器306;第六多路数据选择器306与第五多路数据选择器305将数据传输给乘法运算模块作乘法运算;乘法运算模块的输出数据经有限域上的约减运算单元将数据分别传递给4个异或运算单元(101、102、103、104和105)、第一至第五多路数据选择器(301、302、303、304和305)、第七多路数据选择器307和第九多路数据选择器309。
两个二进制多项式的商可以通过除法或者求逆运算得到,与其他运算相比,有限域上的除法/求逆是计算开销最大的。常用的求逆算法有二进制算法、扩展的Euclidean算法和Itoh-Tsujii算法。本发明采用的是Itoh-Tsujii求逆算法。该算法基于费马小定理,由m-1个限域上的平方和个有限域上的乘法运算组成,其中H(m-1)表示m-1的二进制表示中1的个数。Itoh-Tsujii求逆算法可通过复用乘法和平方模块的方式来实现,仅需较少的额外资源便可获得较高的执行速度。在本发明中,为使对Z1和Z2的求逆运算能够并行执行,共 使用了2个平方模块和2个四次方模块,对于乘法模块则是交替使用。主循环阶段对xP的求逆运算采用二进制算法,该算法运算周期长、消耗资源少,有效减少了对硬件资源的消耗以及坐标转换阶段所需的周期数。
综上所述,本发明提供了一种基于FPGA的椭圆曲线标量乘法电路设计。该电路进行二进制域上的椭圆曲线标量乘法运算,完成了ECC中最主要的运算。本发明结合FPGA的特性选择合适的算法并加以改进,改进后的算法具有高度的并行性,有效减少了关键路径的长度。针对算法中所应用的每一种有限域上的运算,本发明优化设计每一个运算模块。通过改进算法的逻辑时序、复用模块等方式,所设计的电路具有运算速度快、消耗资源少的特点。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

Claims (8)

1.一种基于FPGA的椭圆曲线标量乘法加速电路,其特征是,包括输入模块、仿射坐标转化为投影坐标模块、主循环乘法模块、投影坐标转化为仿射坐标模块、输出模块和时钟控制模块;输入参数经输入模块将数据传递给仿射坐标转化为投影坐标模块、主循环乘法模块和投影坐标转化为仿射坐标模块;仿射坐标转化为投影坐标模块将数据传递给主循环乘法模块;主循环乘法模块将数据传递给投影坐标转化为仿射坐标模块,所述主循环乘法模块在运行乘法运算的同时并行执行其他运算操作,从而提高效率;投影坐标转化为仿射坐标模块将数据传递给输出模块;时钟控制模块用于控制仿射坐标转化为投影坐标模块、主循环乘法模块和投影坐标转化为仿射坐标模块的时钟信号;
所述基于FPGA的椭圆曲线标量乘法加速电路的具体电路包括5个异或运算单元、2个平方运算单元、2个四次方运算单元、乘法运算模块、有限域上的约减运算单元和9个多路数据选择器;第一异或运算单元和第二异或运算单元均通过第一多路数据选择器将数据传输给第四多路数据选择器和第六多路数据选择器;第三异或运算单元与第四异或运算单元均通过第二多路选择器将数据传输给第四多路数据选择器和第六多路选择器;第五异或运算单元通过第三多路选择器将数据传输给第一平方运算单元;第一平方运算单元将数据传输给第五多路选择器、第四多路数据选择器、第二平方运算单元和第九多路数据选择器;第九多路数据选择器将数据传输给第六多路数据选择器;第四多路数据选择器的输出数据通过第一四次方运算单元将数据传输给第二异或运算单元、第四异或运算单元和第八多路数据选择器;第二四次方运算单元将数据输出给第七多路数据选择器;第七多路数据选择器将数据传递给第二四次方运算单元和第八多路数据选择器;第八多路数据选择器将数据传递给第五多路数据选择器;第二平方运算模块将数据传输给第六多路数据选择器;第六多路数据选择器与第五多路数据选择器将数据传输给乘法运算模块;乘法运算模块的输出数据经有限域上的约减运算单元将数据分别传递给5个异或运算单元、第一至第五多路数据选择器、第七多路数据选择器和第九多路数据选择器。
2.如权利要求1所述的一种基于FPGA的椭圆曲线标量乘法加速电路,其特征是,所述第一异或运算单元的输入端还连接X1;所述第二异或运算单元的输入端还连接X2;所述第六多路数据选择器的输入端还连接xp与b;其中X1、X2 分别表示投影系下两个点(X1,Z1),(X2,Z2)的坐标,xp为点P仿射坐标下的xp,b为椭圆方程常数项。
3.如权利要求1所述的一种基于FPGA的椭圆曲线标量乘法加速电路的算法,其特征是,包括如下步骤:
1)仿射坐标转化为投影坐标,即进行初始化;
2)算法的主循环:算法的主循环部分包含m次循环,m为二进制表示的k的长度,k为整数,每次循环处理k中的一位,每一次循环包含有限域上的6次乘法、2次平方、2次四次方和3次加法运算;
3)将投影坐标转化为仿射坐标。
4.如权利要求3所述的一种基于FPGA的椭圆曲线标量乘法加速电路的算法,其特征是,所述步骤1)中的初始化具体操作为投影系上的两个点的坐标分别设置为(X1,Z1)=(1,0),(X2,Z2)=(xp,1);xp为点P仿射坐标(xp,yp)下的xp。
5.如权利要求4所述的一种基于FPGA的椭圆曲线标量乘法加速电路的算法,其特征是,所述步骤2)中乘法运算与其他运算并行运行;每次乘法运算之后要进行约减,两个连续的乘法运算,后一个不能依赖于前一个输出结果。
6.如权利要求3-5任一所述的一种基于FPGA的椭圆曲线标量乘法加速电路的算法,其特征是,所述步骤2)中当ki=0时,下一个周期从X2Z1开始;ki=1时,下一个周期从X1Z2开始;其中,ki为整数k二进制表示的第i位的数值,i≤m,X1、Z1、X2、Z2为投影系下两个点(X1,Z1),(X2,Z2)的坐标。
7.如权利要求6所述的一种基于FPGA的椭圆曲线标量乘法加速电路的算法,其特征是,所述步骤2)中的乘法运算为Kartsuba-Ofman算法,将每一个乘法操作数分解两次,一个m位的乘法操作数被分解为4个长度均为的部分。
8.如权利要求7所述的一种基于FPGA的椭圆曲线标量乘法加速电路的算法,其特征是,所述步骤3)中的将投影坐标转化为仿射坐标采用Itoh-Tsujii求逆运算,求逆运算由有限域上的乘法和加法组成。
CN201410370767.3A 2014-07-30 2014-07-30 一种基于fpga的椭圆曲线标量乘法加速电路及其算法 Expired - Fee Related CN104184578B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410370767.3A CN104184578B (zh) 2014-07-30 2014-07-30 一种基于fpga的椭圆曲线标量乘法加速电路及其算法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410370767.3A CN104184578B (zh) 2014-07-30 2014-07-30 一种基于fpga的椭圆曲线标量乘法加速电路及其算法

Publications (2)

Publication Number Publication Date
CN104184578A CN104184578A (zh) 2014-12-03
CN104184578B true CN104184578B (zh) 2017-07-07

Family

ID=51965343

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410370767.3A Expired - Fee Related CN104184578B (zh) 2014-07-30 2014-07-30 一种基于fpga的椭圆曲线标量乘法加速电路及其算法

Country Status (1)

Country Link
CN (1) CN104184578B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105068784B (zh) * 2015-07-16 2018-02-16 清华大学 实现基于蒙哥马利模乘的Tate对算法的电路
CN106126193A (zh) * 2016-08-24 2016-11-16 四川卫士通信息安全平台技术有限公司 基于Zynq的椭圆曲线点加运算加速器及加速方法
CN109144472B (zh) * 2018-07-17 2023-02-28 东南大学 一种二元扩域椭圆曲线的标量乘法及其实现电路
CN111835517B (zh) * 2020-06-29 2023-12-22 易兆微电子(杭州)股份有限公司 一种双域椭圆曲线点乘硬件加速器
CN113485751B (zh) * 2021-06-30 2023-07-04 海光信息技术股份有限公司 执行伽罗瓦域乘法的方法、运算单元和电子装置
CN114879934B (zh) * 2021-12-14 2023-01-10 中国科学院深圳先进技术研究院 一种高效的零知识证明加速器及方法
CN115062565B (zh) * 2022-06-22 2024-01-05 北京理工大学 一种低时延椭圆曲线点乘电路设计方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101630244A (zh) * 2009-07-28 2010-01-20 哈尔滨工业大学深圳研究生院 一种流水线型椭圆曲线双标量乘法系统及方法
CN101771663A (zh) * 2008-12-29 2010-07-07 上海华虹集成电路有限责任公司 基于ucps协议的验证系统
CN102761413A (zh) * 2011-04-27 2012-10-31 航天信息股份有限公司 p元域SM2椭圆曲线公钥密码算法的实现系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4284320B2 (ja) * 2003-08-06 2009-06-24 富士通株式会社 楕円曲線暗号装置,楕円曲線暗号方法および楕円曲線暗号プログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101771663A (zh) * 2008-12-29 2010-07-07 上海华虹集成电路有限责任公司 基于ucps协议的验证系统
CN101630244A (zh) * 2009-07-28 2010-01-20 哈尔滨工业大学深圳研究生院 一种流水线型椭圆曲线双标量乘法系统及方法
CN102761413A (zh) * 2011-04-27 2012-10-31 航天信息股份有限公司 p元域SM2椭圆曲线公钥密码算法的实现系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Theoretical Modeling of Elliptic Curve Scalar Multiplier on LUT-Based FPGAs for Area and Speed;Sujoy Sinha Roy 等;《IEEE 》;20120606;第901-909页 *
基于FPGA的高速椭圆曲线标量乘法结构;陈婧 等;《计算机研究与发展》;20081115;正文第2页左栏第1行至第6页右栏倒数第2段,图1,图5,图9 *

Also Published As

Publication number Publication date
CN104184578A (zh) 2014-12-03

Similar Documents

Publication Publication Date Title
CN104184578B (zh) 一种基于fpga的椭圆曲线标量乘法加速电路及其算法
Beuchat et al. High-speed software implementation of the optimal ate pairing over Barreto–Naehrig curves
CN101782845B (zh) 一种椭圆曲线密码的高速运算装置和方法
Amara et al. Elliptic curve cryptography and its applications
Rashidi et al. High-speed hardware architecture of scalar multiplication for binary elliptic curve cryptosystems
Migliore et al. Hardware/software co-design of an accelerator for FV homomorphic encryption scheme using Karatsuba algorithm
CN103942031A (zh) 椭圆域曲线运算方法和椭圆域曲线运算器
CN110460443A (zh) 椭圆曲线密码的高速点加运算方法和装置
Giorgi et al. Parallel modular multiplication on multi-core processors
CN104917608A (zh) 一种密钥抗功耗攻击的方法
CN113783702A (zh) 一种椭圆曲线数字签名与验签的硬件实现方法和系统
CN111092718A (zh) 加密方法、装置及电子设备
CN113794572A (zh) 一种高性能椭圆曲线数字签名与验签的硬件实现系统和方法
US8582758B2 (en) Apparatus and a method for calculating a multiple of a point an elliptic curve
Tian et al. Efficient software implementation of the SIKE protocol using a new data representation
Dimitrov et al. Another look at inversions over binary fields
Rashidi Low-cost and fast hardware implementations of point multiplication on binary edwards curves
CN111897578A (zh) 一种特征为2的椭圆曲线上标量乘的并行处理方法及装置
CN104506316A (zh) 一种基于sm2基点的点乘运算方法
Rashidi et al. High-speed hardware implementations of point multiplication for binary Edwards and generalized Hessian curves
Reyes et al. A performance comparison of elliptic curve scalar multiplication algorithms on smartphones
Chaouch et al. Two hardware implementations for modular multiplication in the AMNS: Sequential and semi-parallel
Kadu et al. Hardware implementation of efficient elliptic curve scalar multiplication using vedic multiplier
Rodríguez et al. An FPGA arithmetic logic unit for computing scalar multiplication using the half-and-add method
Rezai et al. A new CMM-NAF modular exponentiation algorithm by using a new modular multiplication algorithm

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170707

Termination date: 20210730

CF01 Termination of patent right due to non-payment of annual fee