CN105068784A - 基于蒙哥马利模乘的Tate对算法及其硬件结构 - Google Patents
基于蒙哥马利模乘的Tate对算法及其硬件结构 Download PDFInfo
- Publication number
- CN105068784A CN105068784A CN201510419816.2A CN201510419816A CN105068784A CN 105068784 A CN105068784 A CN 105068784A CN 201510419816 A CN201510419816 A CN 201510419816A CN 105068784 A CN105068784 A CN 105068784A
- Authority
- CN
- China
- Prior art keywords
- montgomery
- algorithm
- shift
- multiplier
- galois field
- 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.)
- Granted
Links
Landscapes
- Complex Calculations (AREA)
Abstract
本发明属于嵌入式系统的密码算法实现技术领域,尤其涉及一种基于三进制有限域蒙哥马利模乘的Tate对算法和实现该算法的硬件结构,包括:将两个输入的椭圆曲线上的点P和R的X坐标和Y坐标分别由所定义的GF(3m)域上转换到蒙哥马利域;按照由GF(3m)上的乘法、加/减法和立方运算作为基本运算的MDL算法流程在蒙哥马利域上分别进行运算;再把计算结果从蒙哥马利域上转换回GF(36m)域上,再计算结果的33m-1次模幂。硬件结构包括:顶层处理器、控制器、三进制累加器、三进制乘法器、寄存器堆、SRAM;控制器控制三进制累加器和三进制乘法器的输入以及SRAM和寄存器堆的读写操作,从而控制整个电路的数据传输。
Description
技术领域
本发明属于嵌入式系统的密码算法实现技术领域,尤其涉及一种基于三进制有限域Montgomery(蒙哥马利)模乘的Tate对算法和实现该算法的硬件结构。
背景技术
双线性对是具有特殊性质的映射,记为假设G1是加法群,G2是乘法群,它们的阶数都是素数,双线性对运算是将两个加法群映射为一个乘法群的过程,即G1×G1→G2,那么对所有的P,Q∈G1和所有的a,b∈Z,a≠0,b≠0满足
双线性对广泛的应用于多种公钥密码学方案中,比如IBE(IdentityBasedEncryption,基于身份的加密)加密,其在加密过程中使用的公钥不是从PKI(PublicKeyInfrastructure,公钥基础设施)系统发放的证书中获取的,而是直接使用用户自身的身份信息,如名字、邮件地址等。所以,IBE系统中的公钥可以是任意长度的字符串,且无需管理证书,这大大简化了现有的常用的公钥算法系统。还有基于双线性对的签名方案BLS等。
双线性对的运算最早是在解决椭圆曲线的离散对数问题时被应用的,而近年来,由于Boneh和Franklin利用改进的Weil对构造了安全可用的IBE方案,其在IBE系统中的应用研究越来越多。相对于椭圆曲线上的其他运算,双线性对运算是最复杂、计算最耗时的。所以,双线性对运算是整个IBE算法的核心运算。在嵌入式系统上实现含有双线性对的密码应用,如IBE何BLS时,往往需要设计专门的双线性对计算硬件来提高运算性能,因此人们不断改进双线性对的算法,不断提升其硬件实现的性能。
域是指包含二元运算加法和乘法的集合,而有限域是指域中的元素个数是有限的。有限域的元素个数被称为有限域的阶数,一般为一个素数的幂pn,其中n为正整数。GF(pn)是阶为pn的有限域的一般表示形式,其中GF代表Galois(伽罗华)域,素数p被称为GF(pn)的特征,n被称为GF(pn)的度;同时,GF(pn)也被称为GF(p)的n次扩域。
在密码学领域,人们比较关注度为1的有限域GF(p),特征为2的有限域GF(2n)和特征为3的有限域GF(3n)。通常,GF(p)被称为素数域,GF(2n)被称为二进制有限域,GF(3n)被称为三进制有限域。有限域GF(p)是包含p个整数的集合{0,1,2,...,p-1},域上的加法和乘法运算均为模p的运算。有限域GF(2n)是包含2n-1个整数的集合{0,1,2,...,2n-1},域上的加法直接使用XOR操作,乘法运算利用多项式乘法和模约运算。在构造二进制有限域GF(2n)时,需要选取一个n次不可约多项式p(x)=xn+pn-1xn-1+…+p1x+p0,其中pi∈GF(2)。以此多项式为模的所有多项式构成的集合即为所需的域,p(x)称为GF(2n)的生成多项式。
为了实现双线性对的快速计算,人们不断提出新的双线性对的理论计算方法。Weil对和Tate对是目前研究最多的双线性对计算,Tate对的计算效率更高。Tate对的G1是有限域上超奇异椭圆曲线E的q阶子群,q为素数。2003年,Duursma和Lee提出了在GF(pm)上高效计算Tate对的Duursma-Lee算法,其中有限域特征p需满足p≡3(mod4)。然而,Duursma-Lee算法需要立方根运算,立方根运算本身的计算复杂度比乘法还高。所以,Kwon等为了消除Duursma-Lee算法中的立方根运算,提出了改进的Duursma-Lee算法(MDL算法)。但是,改进后的Duursma-Lee算法只适用于定义在GF(3m)上的特定椭圆曲线E±:Y2=X3-X±1的Tate对。
双线性对运算将椭圆曲线E/GF(pm)上的任意两个点映射为GF(pkm)上的一个非零元。为了安全性的需求,pkm至少应该保证1000bits,同时,为了计算的高效性,pkm也不应该太大。当m取1,p取512bits的一个特定素数时,要达到上述安全性需要的最小的k为2;当p取2,m取250左右的一个素数时,最小的k为4;当p取3,m取110左右的一个素数时,最小的k为6。当然,对于加密算法的应用,k在满足特定准则的条件下越大,则算法的安全性越高。在特征为3的有限域GF(3m)上,一些安全的IBE方案是可行的。而且,GF(3m)上双线性对的计算过程需要较少的逻辑和运算单元,非常适合硬件实现,已有文献介绍了将GF(36m)上的乘法、立方和幂运算用GF(3m)上各个运算来实现的算法。
在Tate对硬件实现方面,现有的研究基本是从面积和运算时间的优化、平衡角度去讨论双线性对的硬件实现的,鲜有考虑电路功耗的优化。而且双线性对运算自身复杂度很高,其作为IBE算法的核心运算,直接影响IBE算法的应用,尤其是在WSN(wirelesssensornetwork,无线传感网络)节点上的应用。所以,除了电路面积和运算时间,电路功耗的优化也是必不可少的。
本发明选取定义在GF(3m)上的映射结果为GF(36m)的Tate对作为对象,提出改进的实现方案,它可以采用MDL算法计算,具体的Tate对定义如下:定义在GF(3m)上的椭圆曲线E±:Y2=X3-X±1上,考虑椭圆曲线上的两个点P=(xp,yp),R=(xr,yr),其中xp,yp,xr,yr∈GF(3m)。而在实际中,点φ(R)∈E±/GF(36m)使得双线性对的计算更高效,φ是一种变形映射,定义如下:
φ(R)=φ((xr,yr))=(ρ-xr,σyr)
其中ρ,σ∈GF(36m)满足和σ3+1=0。改进的Tate对具体定义如下:
Tate对的计算可分为两步,第一步是计算这可以由改进Duursma-Lee算法(MDL算法)完成;第二步是幂运算其中ε1=33m-1。
改进的Duursma-Lee算法的计算过程包含的算术运算有GF(3m)上的加法、减法、立方和乘法,GF(36m)上的立方和乘法。在改进的Duursma-Lee算法中,一次循环需要4次GF(3m)上的立方、1次加/减法、2次乘法和4次求加法逆元运算,一次GF(36m)上的立方和一次乘法。然而,该算法需要循环m次。最后Tate的幂运算只运行一次。
由于加法、减法、加法逆元运算都相对很简单,所以,值得考虑的运算有GF(3m)上的乘法、立方和求逆运算。GF(3m)上立方运算的计算方法与乘法的算法相比要相对简单,而求逆运算虽然复杂,但其仅仅只有一次计算。计算Tate对运算所需最多的是GF(3m)上的乘法,且其计算复杂度和域上的其他运算相比要更高。所以,GF(3m)上的乘法器的性能对整个Tate对的影响可见一斑。
Montgomery模乘算法是硬件实现中常用的快速模乘算法,它的模约操作只需要简单的移位操作即可完成。GF(3m)上Montgomery模乘算法是计算(A·B·R-1)modF来代替(A·B)modF,其中F是F(x)的系数向量,F(x)表示GF(3m)的生成多项式,R是GF(3m)域上的固定元素,通常选择R(x)=xk来简化模乘运算的计算。
当乘数A和乘数B均以一个字(字宽用w表示,称为字精度,可设置)为单位进行计算时,Montgomery模乘算法有很多派生的实现算法。如SOS(SeparatedOperandScanning)算法,其将乘法操作和模约减操作分开独立实现,运算时间和存储空间开销都较大;CIOS(CoarselyIntegratedOperandScanning)算法,其将每轮循环中乘法操作的部分积直接做模约减,降低了存储空间开销;FIOS(FinelyIntegratedOperandScanning)算法,其减少了总循环次数,但是相对于CIOS算法多增了一些加法操作和存储器读写开销。CIOS算法在GF(p)上所需的算术运算及存储开销相对都是最小的。
LSE模乘为双线性对运算实现中常用的模乘算法,虽然传统LSDE模乘器计算所需的w位乘法运算次数较少,但是其所需加法运算次数较多,所需的存储空间较大,操作周期较长;同时,当Montgomery模乘器的字精度w较大时,其所需的乘法运算次数将超过CIOS(CoarselyIntegratedOperandScanning)模乘器的。
如果每进行一次普通域上的模乘操作都需要一次正向转换和一次逆向转换,那转换操作的开销太大。但是,如果一次数据转换可以对应n次模乘操作,当n较大时,转换操作的开销就变得微乎其微了。
本发明模乘器主要针对的是双线性对运算,而Tate对计算过程中需要(20m+45)次GF(3m)上的乘法操作。Tate对的实现主要利用的是改进的Duursma-Lee(MDL)算法。所以,可以考虑将MDL算法的输入数据直接进行转换操作,直到计算得到该算法的最终输出时,再进行输出的转换操作。
发明内容
针对现有Tate对模乘算法存在的不足,本发明提出了一种用于嵌入式系统基于身份的加解密的基于Montgomery模乘的Tate对算法和硬件结构。
1、一种基于Montgomery模乘的Tate对算法,包括:
步骤1、将作为输入的定义在GF(3m)上的椭圆曲线E±:Y2=X3-X±1上的点P和R的X坐标和Y坐标分别由所定义的GF(3m)域上转换到Montgomery域,具体地,把被转换的数据与x2m进行Montgomery模乘;GF(3m)是阶为3m的伽罗华有限域的表示形式,有限域的特征值为3,m为GF(3m)的度,x2m表示GF(3)域上的2m次项系数为1其它项系数为0的2m次多项式;
步骤2、按照由GF(3m)上的乘法、GF(3m)上的加/减法和GF(3m)上的立方运算作为基本运算的MDL算法流程在Montgomery域上完成MDL算法,其中的乘法、加/减法和立方运算全部在Montgomery域上进行;
步骤3、在MDL算法结束后,根据需要,再把计算结果从Montgomery域上转换回GF(36m)域上,具体地,把被转换的数据与GF(3)中的元素1进行Montgomery模乘;GF(36m)是阶为36m的伽罗华有限域的表示形式,有限域的特征值为3,6m为GF(3m)的度;
步骤4、按照由GF(3m)上的乘法、加/减法和求逆运算构成的算法计算GF(36m)上的模幂:其中t是步骤3所述转换回GF(36m)域上的MDL算法的结果,τ是Tate对的计算结果。
所述Montgomery域上的乘法运算采用三进制有限域上的Montgomery模乘算法实现,Montgomery域上加法和立方运算分别采用GF(3m)域上相同的运算逻辑实现。
3、一种实现基于Montgomery模乘的Tate对算法的硬件结构,包括:顶层处理器和三进制有限域Montgomery模乘器,顶层处理器与三进制有限域Montgomery模乘器内部的SRAM的读写端口相连,用于向SRAM中写入模乘运算的输入,读取模乘运算的结果,顶层处理器与三进制有限域Montgomery模乘器的控制端口相连,用于控制三进制有限域Montgomery模乘器的启动和接收三进制有限域Montgomery模乘器的响应,三进制有限域Montgomery模乘器执行权利要求1所述算法中的所有Montgomery模乘算法,算法中的其它运算由顶层处理器完成;
所述三进制有限域Montgomery模乘器包括:控制器、数据通路、三进制累加器、三进制乘法器、寄存器堆、SRAM;控制器通过数据通路控制三进制累加器和三进制乘法器的输入以及SRAM和寄存器堆的读写操作,从而控制整个电路的数据传输。
所述控制器的工作过程用一个有限状态机来描述,按照字精度为w的CIOS算法控制各部件完成三进制有限域Montgomery模乘;三进制累加器将每次循环中的累加变量、三进制乘法器输出和上一轮循环的进位进行三进制有限域加法操作,加法获得的和的低w位作为结果存入累加变量,和的高w位作为进位;三进制乘法器执行每次循环中的两个w位三进制数的乘法操作;数据通路在控制器控制信号的控制下控制SRAM和寄存器堆与累加器和乘法器之间的数据传输;模乘器的三个输入:两个乘数和它们的有限域的生成多项式系数从SRAM中读取,输出结果存储在SRAM中,寄存器堆为双口寄存器堆,用来存储算法中的累加变量,其输出是三进制累加器的一个输入端,累加器的输出结果中的累加变量值存入此寄存器堆。
所述三进制累加器和三进制乘法器的数据均采用普通三进制表示方式,即每位三进制数用2比特二进制数表示,存储在SRAM和寄存器堆中的三进制数则采用一种压缩编码形式,即每3位三进制数用5比特二进制数表示,在SRAM和寄存器堆的输出端和乘法器输入端之间插入解码器,把压缩编码形式的三进制数转换成普通编码的三进制数,在寄存器堆的输入端和累加器的输出端之间插入编码器,把普通三进制表示方式的数值转换成压缩编码形式;如果字精度w=3k+j,k和j都是正整数,且j<3,则把w位数据分解成k个3位的三进制数和1个j位的三进制数,分别编码,其中3位的三进制数采用上述压缩编码方式,剩下的1个j位的三进制数仍然采用普通三进制编码。
本发明的有益效果在于:针对Tate对算法在嵌入式系统中的低功耗实现问题,重点对其中的关键运算模块——模乘运算,进行了硬件实现方法研究,首次将Montgomery模乘算法扩展到三进制有限域上,并应用到双线性对运算中,探讨并解决了其在应用中的数据转换问题;提出了一种低功耗的模乘实现方案,该方案首次实现了三进制有限域上参数可配置的Montgomery模乘器设计;采用数据压缩技术,降低了存储单元的硬件开销和功耗开销。
附图说明
图1是基于Montgomery模乘的Tate对算法流程图;
图2是实现基于Montgomery模乘的Tate对算法的硬件结构示意图;
图3是实现CIOS算法的三进制有限域Montgomery模乘器的电路结构框架图;
图4是控制状态转换流程图;
图5是w位×w位乘法部分积求和过程示意图;
图6是压缩存储空间方案示意图;
图7是优化后的Montgomery模乘器总体电路结构图;
图8是优化设计和原始设计的功耗曲线对比图;
具体实施方式
下面结合附图,对实施例作详细说明。
MDL算法计算过程包含的算术运算有GF(3m)上的加法、减法、立方和乘法,GF(36m)上的立方和乘法。首先将GF(36m)上的乘法、立方运算用GF(3m)上各个运算来实现。具体如下:
GF(36m)可以看作是GF(33m)的2次扩域,其间的不可约多项式为g(z)=z2+1;而GF(32m)可以看作是2次GF(3m)的扩域,其间的不可约多项式为h+(y)=y3-y-1。具体映射表示如下:
GF(36m)≌GF(33m)[z]/g(z)
GF(33m)≌GF(3m)[y]/h+(y)
考虑GF(36m)上的乘法c=ab,其中ai,bj∈GF(3m),利用以上等价映射关系,a∈GF(36m)可以由GF(33m)的两个元素表示为:
则GF(36m)上 和 的乘法操作可以通过Karatsuba乘法方式计算,由GF(33m)上的三个乘法、两个加法和三个减法完成,如下式所示。
考虑GF(33m)上的乘法 其中 a0,a1,a2,b0,b1,b2∈GF(3m),同理,该乘法操作通过Karatsuba乘法方式计算,形成一个度为4的多项式如下式。
利用不可约多项式h+(y)对多项式d进行模约减操作,形成如下式。
考虑GF(36m)上的立方c=a3∈GF(36m),其中则计算过程如下式所示。
而GF(33m)上的立方其中a0,a1,a2∈GF(3m),则计算过程如下式所示。
考虑GF(36m)上的幂运算 其中 ε1=33m-1,当m是奇数时,基于以上的等价映射变形,利用σ2=-1∈GF(33m),此幂运算的计算变得更高效。
则计算过程如下式所示。
其中
考虑GF(33m)上的求逆运算 其中 a0,a1,a2∈GF(3m),则的系数计算过程如下式。
其中
综上所述,经过计算,GF(36m)上各个运算所需的GF(3m)运算次数的评估结果如表1所示。
表1GF(36m)上各个运算的评估结果
改进的Duursma-Lee算法中,一次循环需要4次GF(3m)上的立方、1次加/减法、2次乘法和4次求加法逆元运算,一次GF(36m)上的立方和一次乘法。然而,该算法需要循环m次。最后Tate的幂运算只运行一次。
有限域GF(3m)上的基本运算计算和GF(2m)上的也是类似的。GF(3m)的生成多项式
α是F(x)的一个根,则GF(3m)上的任意元素A可以表示为:
A=am-1αm-1+am-2αm-2+…+a1α+a0
其中ai∈GF(3),0≤i≤m-1.
由于α是F(x)的一个根,则F(α)=0。因此,
GF(3m)上的加法定义为C=(A+B)modF(x),其中A,B,C∈GF(3m), ai,bi,ci∈GF(3)。则A和B的对应系数按照GF(3)上的加法运算规则计算,无需进位操作,结果为C,即
GF(3m)上加法运算的电路实现只需要m个GF(3)上的加法器并行即可,则电路的面积和功耗将是一个GF(3)上加法器的m倍,延时与其相同。
GF(3)上的加法定义为c=(a+b)mod3,其中a,b,c∈GF(3)。
GF(3)上的减法定义为c=(a-b)mod3,而(a-b)mod3=(a+(-b))mod3。所以,减法可以分两步计算,先求得b的加法逆元,再直接做加法即可。
GF(3)上的乘法定义为c=(ab)mod3,其中a,b,c∈GF(3)。GF(3)上的除法和同GF(3)上的减法是类似的,需要先计算除数的乘法逆元,再利用乘法操作求得结果。
由于加法、减法、加法逆元运算都相对很简单,所以,值得考虑的运算有GF(3m)上的乘法、立方和求逆运算。GF(3m)上立方运算的计算方法与乘法的算法相比要相对简单,而求逆运算虽然复杂,但其仅仅只有一次计算。计算Tate对运算所需最多的是GF(3m)上的乘法,所以,GF(3m)上的乘法器的性能对整个Tate对的影响最大,且其计算复杂度和域上的其他运算相比要更高。
MDL算法中GF(3m)上的乘法操作采用Montgomery模乘算法:设F(x)是GF(3m)的生成多项式,A,B,C∈GF(3m),Montgomery模乘器的字精度为w。设m位被分解成s个字,则模约xw操作只需要简单的移位操作即可完成。在多项式运算中,除xw操作也是直接用移位操作代替的。GF(3m)上的Montgomery算法和GF(2m)上的算法描述是一样的,其中涉及生成多项式F(x)的逆元多项式F0'(x)的计算,已有GF(2m)上的算法,而本发明再次将此算法扩展到GF(3m)上。由于GF(2)上,元素a的加法逆元还是a,所以本算法和GF(2m)上算法最大的区别是需要最后的求解加法逆元的步骤。当GF(3m)的生成多项式F(x)给定时,可以通过预计算的方式提前得到参数F0'(x),直接将其固化在模乘器的计算程序中;而且对于一个模乘器,参数F0'(x)只需计算一次。
MDL算法中不仅有GF(3m)上的乘法操作,还有加法和立方操作,加法和立方运算在Montgomery域上也可以进行。下面对此进行分析:
计算普通域上加法C=A+B时,Montgomery域上的计算:
在特征为3的有限域上,立方操作可以利用下式计算
而Montgomery域上的立方计算:
以上式子表明加法和立方运算在Montgomery域上的计算是可行的。基于上述分析,由于Montgomery算法在模约操作方面的优化,当一次操作需要执行多次模乘运算的时候,操作使用Montgomery算法的总计算量要小于LSDE算法的,而Tate对的计算中,恰好模乘运算出现的频率最高,所以采用Montgomery算法能够降低Tate对的总计算量。
针对现有Tate对运算硬件实现方法所存在的不足,本发明提出了一种基于Montgomery模乘用于嵌入式系统Tate对计算的实现方法,如图1所示,包括:
步骤1、将作为输入的定义在GF(3m)上的椭圆曲线E±:Y2=X3-X±1上的点P和R的X坐标和Y坐标分别由所定义的GF(3m)域上转换到Montgomery域,具体地,把被转换的数据与x2m进行Montgomery模乘;GF(3m)是阶为3m的伽罗华有限域的表示形式,有限域的特征值为3,m为GF(3m)的度,x2m表示GF(3)域上的2m次项系数为1其它项系数为0的2m次多项式;
步骤2、按照由GF(3m)上的乘法、GF(3m)上的加/减法和GF(3m)上的立方运算作为基本运算的MDL算法流程在Montgomery域上完成MDL算法,其中的乘法、加/减法和立方运算全部在Montgomery域上进行;
步骤3、在MDL算法结束后,根据需要,再把计算结果从Montgomery域上转换回GF(36m)域上,具体地,把被转换的数据与GF(3)中的元素1进行Montgomery模乘;GF(36m)是阶为36m的伽罗华有限域的表示形式,有限域的特征值为3,6m为GF(3m)的度;
步骤4、按照由GF(3m)上的乘法、加/减法和求逆运算构成的算法计算GF(36m)上的模幂:其中t是步骤3所述转换GF(36m)域上的MDL算法的结果,τ是Tate对的计算结果。
实现上述的一种基于Montgomery模乘的Tate对算法的硬件结构如图2所示,包括:顶层处理器和三进制有限域Montgomery模乘器,顶层处理器与三进制有限域Montgomery模乘器内部的SRAM的读写端口相连,用于向SRAM中写入模乘运算的输入,读取模乘运算的结果,顶层处理器与三进制有限域Montgomery模乘器的控制端口相连,用于控制三进制有限域Montgomery模乘器的启动和接收三进制有限域Montgomery模乘器的响应,三进制有限域Montgomery模乘器执行上述算法中的所有Montgomery模乘算法,算法中的其它运算由顶层处理器完成;
所述三进制有限域Montgomery模乘器包括:控制器、数据通路、三进制累加器、三进制乘法器、寄存器堆、SRAM;控制器通过数据通路控制三进制累加器和三进制乘法器的输入以及SRAM和寄存器堆的读写操作,从而控制整个电路的数据传输。
CIOS算法有两个内层循环,其中各包含一个w位乘法操作。在此算法中,乘法运算相对最为复杂,且其计算复杂度会随着w的增大而增大。所以,对于资源受限的嵌入式系统,本发明考虑一个周期只进行一次w位×w位乘法操作。
如图3所示,控制器通过数据通路控制三进制累加器、三进制乘法器的输入和SRAM及寄存器堆的读写操作,从而控制整个电路的数据传输;三进制累加器将每次循环中累加变量、三进制乘法器输出和上一轮循环的进位进行三进制有限域加法,加法得到的和的低w位作为结果存入累加变量,和的高w位作为进位;三进制乘法器执行每次循环中的两个w位三进制数的乘法操作;数据通路在控制器控制信号的控制下控制SRAM和寄存器堆与累加器和乘法器之间的数据传输;模乘器的三个输入:两个乘数和它们的有限域的生成多项式系数从SRAM中读取,输出结果存储在SRAM中,寄存器堆为双口寄存器堆,用来存储算法中的累加变量,其输出是三进制累加器的一个输入端,累加器的输出结果中的累加变量值存入此寄存器堆,在程序初始化阶段累加变量被赋0。
累加变量相对于输入输出数据需要更频繁的对其进行读和写操作,而且当GF(3m)中的m取512时,累加变量也只需1KB的存储空间。所以,累加变量的存储用面积和功耗都相对较小的寄存器堆实现很合理。而SRAM大容量且空闲时功耗低的特点则非常适合模乘器的输入输出情况。
本发明的三进制有限域Montgomery模乘器的RTL(RegisterTransportLevel,寄存器转换级)电路设计中,模乘器的规模通过参数化进行配置。具体涉及的参数定义如表2所示。需要注意的是,本设计采用两位的二进制数表示一位的三进制数这种编码方案,所以在实际使用中,数据的位宽是2w。顶层设计的端口共14个,其中包含两个乘数输入和生成多项式系数及计算结果在SRAM上的起始地址,启动模乘器工作的Start和标志运算结束的Finish等。
表2模乘器设计参数定义
控制器的设计利用有限状态机实现,状态机共有十一个状态,状态转换图如图4所示,表3详细说明了每个状态所进行的操作。
表3状态机各个状态操作说明
注:A[j]表示乘数A的第j个字,B[i]表示乘数B的第i个字,i,j分别是CIOS算法中的外层循环变量和内层循环变量,Temp_RES_C是累加变量。
当某个状态下需要进行乘法和加法操作时,只需要调用乘法器和加法器,控制其输入即可。读乘数和生成多项式系数的每个字都需要进行SRAM读操作,写结果的各个字需要进行SRAM写操作,所以,本设计共需要3s+1次SRAM读操作和s次写操作。因为SRAM的读和写操作不会同时进行,所以选用单口SRAM。读累加变量的值需要进行寄存器堆读操作,更新累加变量的值需要寄存器堆写操作,所以,本设计共需2s2+3s次寄存器堆读操作和2s2+2s次写操作。使用双口的寄存器堆可以同时进行读和写操作。
本发明所需的SRAM规模为(4s+1)×16bits,寄存器堆规模为(s+1)×16bits;其完成一次模乘运算需要2s2+4s+4个时钟周期。
本发明的加法器的大小也是参数化可配置的。累加器由2个级联的w位三进制有限域加法单元构成,w位的三进制有限域加法单元采用w个GF(3)子单元并行即可。w位×w位乘法运算相对复杂,且其设计规模会随着w的增大而显著增大。所以,考虑本发明的应用,现取w=8。本发明中采用并行计算64个部分积和三级8×8加法器级联计算最终乘积的方案,所以,需要64个GF(3)上乘法单元和56个GF(3)上加法单元。具体见图5所示。
在SMIC130nm工艺下,对本发明的8×8加法器和乘法器进行逻辑综合,测得其性能如下表4所示:
表48×8运算器性能测试结果
本发明对存储空间进行了优化,采用的编码方式为“00”编码表示GF(3)中的元素“0”,“01”编码表示“1”,“10”编码表示“2”。这样编码方式其实有一定的冗余,“11”并没有用到。在数据存储时,可以利用这些冗余对存储空间进行压缩。本发明采用的压缩方式是GF(33)上的数据压缩到GF(25)上编码方案如表5所示,相应的解码方案将输入和输出互换即可。
假设原始存储空间为m比特,按照压缩方式能节约空间(1/6)m比特,在SMIC130nm工艺下,对编解码电路进行逻辑综合,测得其性能如表6所示。
表5压缩编码方案
表6编解码电路的性能
当w=8时,考虑模乘器存储空间压缩的具体的实现方案。GF(38)上的数据只能用两个GF(33)到GF(25)编解码电路并行进行编解码转换,其中一小部分数据不用编解码转换。如图6所示。
这种实现方式其实是将GF(38)上的数据压缩到GF(214)上,所以该方式最终的存储空间压缩比是1/8。本发明中,两个乘数、生成多项式系数和结果共需要(4s+1)×16比特的SRAM来存储数据,中间变量需要(s+1)×16比特的寄存器堆。同时压缩SRAM和寄存器堆的空间。
SRAM和寄存器堆中存储的数据都是压缩之后的数据,所以,它们的读操作后都需要进行解码,写操作前都需要进行编码。由于同一周期内既需要读SRAM数据,又需要读寄存器堆数据,则外加两个同时工作的解码电路和增加一个编码电路对写入寄存器堆的数据进行编码。其面积开销大约为308gates,功耗开销为两个解码电路和一个编码电路的功耗和,约为218.6μW。该方案最终能节约的存储空间为(4s+1)×16×(1/8)+(s+1)×16×(1/8)=10s+4比特,当m=97,即s=13时,此值为134。由于方案所需的编解码电路规模是固定的,模乘器设计中节省的存储器规模与s呈线性关系;所以,随着s的增大,方案的优势都将越来越强。节约存储空间不仅可以节约面积开销,更重要的是,减小存储器电路的静态功耗。
最终,优化后的Montgomery模乘器总体电路结构图如图7所示,其中,存储器采用同时压缩SRAM和寄存器堆的优化方案。所以,SRAM只需要将输出数据进行解码,而寄存器堆需要将输入数据进行编码,输出数据进行解码。控制器控制状态转换及SRAM和寄存器堆的读写操作等。
采用本发明的方法,以有限域GF(397),及GF(3)域上著名的97次不可约多项式F(x)=x97+x16+2为例。选用二进制码“00”编码表示GF(3)中的元素“0”,“01”编码表示“1”,“10”编码表示“2”。
首先通过预计算的方式提前得到参数F0'(x),直接将其作为模乘器的参数。
运算开始时,第一步需要对输入输出进行数据转换。同时,转换操作可以利用Montgomery模乘算法(MM)实现。
将普通域上的A,B转为Montgomery域上的
即通过调用Montgomery模乘器,将要转换的数据依次输入三进制有限域Montgomery模乘器的SRAM,把另一个输入设为x2m,然后启动三进制有限域Montgomery模乘器,其结果即为转换后的数据。
在整个MDL运算结束之后要把结果t转换回GF(36m)域上,原理和方法如下:
将转为普通域t:
做法同样是调用Montgomery模乘器,将要转换的数据依次输入三进制有限域Montgomery模乘器的SRAM,把另一个输入设为1,然后启动三进制有限域Montgomery模乘器,其结果即为转换后的数据。最后再按照前面推导的在GF(3m)上计算GF(36m)模幂的方法,计算
考虑m=97,w=8的情况,对本发明没有采用压缩编码存储技术的原始设计和采用压缩编码存储技术优化后的设计分别进行逻辑综合,并对综合后的门级电路分别进行基于时间的功耗分析。如表7和表8所示。寄存器堆单元的面积和功耗开销均约占整个模乘器的三分之一。通过数据对比分析,优化设计的寄存器堆的面积和平均功耗开销较原始设计分别降低了13.0%和11.7%,这个结果恰好验证了理论分析的存储空间优化方案的压缩率为12.5%的结论。
表7原始设计各个模块单元的开销
表8优化设计各个模块单元的开销
将整个模乘器的性能和其他文献中的数据进行对比,结果如表8所示,表中的数据均是基于m=97,w=8的情况。其中,LSDE和MSC是在FPGA平台上的实现结果,优化LSDE是理论计算结果,本发明的面积数据是基于DC综合的结果,平均功耗数据是基于PrimeTime的分析结果。随机选取1000组输入向量,进行门级仿真和基于时间的功耗分析,利用MATLAB处理功耗数据,计算1000×377个周期的平均功耗。表9中的平均功耗包含SRAM的功耗。
表9模乘器设计性能比较
本发明优化设计与传统的LSDE优化设计相比,面积时间积降低了83.6%(按1slice约相当于10个标准门计算);与传统LSDE]和MSC]设计相比,面积有很大优势;与本发明原始设计相比,在其他性能基本相同的情况下,平均功耗降低了9.43%。
任意选择一组随机输入,其对应的模乘器的功耗曲线波形如图8所示,很显然,优化设计功耗曲线整体在没有采用压缩编码存储技术的原始设计的下方,说明优化设计较原始设计的功耗确实有所改善。
运算电路面积的规模间接反映了运算的计算复杂度,面积越大,则计算复杂度越高,功耗开销就越大。评估Tate对计算过程中各个运算的功耗占整体的比例,结果如表10所示。乘法运算的功耗比例为83.58%,则本发明优化设计能使Tate对计算的总功耗较原始设计降低7.88%。
表10Tate对计算中各个运算的功耗比例评估
此实施例仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (5)
1.一种基于Montgomery模乘的Tate对算法,其特征在于,包括:
步骤1、将作为输入的定义在GF(3m)上的椭圆曲线E±:Y2=X3-X±1上的点P和R的X坐标和Y坐标分别由所定义的GF(3m)域上转换到Montgomery域,具体地,把被转换的数据与x2m进行Montgomery模乘;GF(3m)是阶为3m的伽罗华有限域的表示形式,有限域的特征值为3,m为GF(3m)的度,x2m表示GF(3)域上的2m次项系数为1其它项系数为0的2m次多项式;
步骤2、按照由GF(3m)上的乘法、GF(3m)上的加/减法和GF(3m)上的立方运算作为基本运算的MDL算法流程在Montgomery域上完成MDL算法,其中的乘法、加/减法和立方运算全部在Montgomery域上进行;
步骤3、在MDL算法结束后,根据需要,再把计算结果从Montgomery域上转换回GF(36m)域上,具体地,把被转换的数据与GF(3)中的元素1进行Montgomery模乘;GF(36m)是阶为36m的伽罗华有限域的表示形式,有限域的特征值为3,6m为GF(3m)的度;
步骤4、按照由GF(3m)上的乘法、加/减法和求逆运算构成的算法计算GF(36m)上的模幂:其中t是步骤3所述转换回GF(36m)域上的MDL算法的结果,τ是Tate对的计算结果。
2.根据权利要求1所述算法,其特征在于,所述Montgomery域上的乘法运算采用三进制有限域上的Montgomery模乘算法实现,Montgomery域上加法和立方运算分别采用GF(3m)域上相同的运算逻辑实现。
3.一种实现权利要求1所述算法的硬件结构,其特征在于,包括:顶层处理器和三进制有限域Montgomery模乘器,顶层处理器与三进制有限域Montgomery模乘器内部的SRAM的读写端口相连,用于向SRAM中写入模乘运算的输入,读取模乘运算的结果,顶层处理器与三进制有限域Montgomery模乘器的控制端口相连,用于控制三进制有限域Montgomery模乘器的启动和接收三进制有限域Montgomery模乘器的响应,三进制有限域Montgomery模乘器执行权利要求1所述算法中的所有Montgomery模乘算法,算法中的其它运算由顶层处理器完成;
所述三进制有限域Montgomery模乘器包括:控制器、数据通路、三进制累加器、三进制乘法器、寄存器堆、SRAM;控制器通过数据通路控制三进制累加器和三进制乘法器的输入以及SRAM和寄存器堆的读写操作,从而控制整个电路的数据传输。
4.根据权利要求3所述硬件结构,其特征在于,所述控制器的工作过程用一个有限状态机来描述,按照字精度为w的CIOS算法控制各部件完成三进制有限域Montgomery模乘;三进制累加器将每次循环中的累加变量、三进制乘法器输出和上一轮循环的进位进行三进制有限域加法操作,加法获得的和的低w位作为结果存入累加变量,和的高w位作为进位;三进制乘法器执行每次循环中的两个w位三进制数的乘法操作;数据通路在控制器控制信号的控制下控制SRAM和寄存器堆与累加器和乘法器之间的数据传输;模乘器的三个输入:两个乘数和它们的有限域的生成多项式系数从SRAM中读取,输出结果存储在SRAM中,寄存器堆为双口寄存器堆,用来存储算法中的累加变量,其输出是三进制累加器的一个输入端,累加器的输出结果中的累加变量值存入此寄存器堆。
5.根据权利要求3所述硬件结构,其特征在于,所述三进制累加器和三进制乘法器的数据均采用普通三进制表示方式,即每位三进制数用2比特二进制数表示,存储在SRAM和寄存器堆中的三进制数则采用一种压缩编码形式,即每3位三进制数用5比特二进制数表示,在SRAM和寄存器堆的输出端和乘法器输入端之间插入解码器,把压缩编码形式的三进制数转换成普通编码的三进制数,在寄存器堆的输入端和累加器的输出端之间插入编码器,把普通三进制表示方式的数值转换成压缩编码形式;如果字精度w=3k+j,k和j都是正整数,且j<3,则把w位数据分解成k个3位的三进制数和1个j位的三进制数,分别编码,其中3位的三进制数采用上述压缩编码方式,剩下的1个j位的三进制数仍然采用普通三进制编码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510419816.2A CN105068784B (zh) | 2015-07-16 | 2015-07-16 | 实现基于蒙哥马利模乘的Tate对算法的电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510419816.2A CN105068784B (zh) | 2015-07-16 | 2015-07-16 | 实现基于蒙哥马利模乘的Tate对算法的电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105068784A true CN105068784A (zh) | 2015-11-18 |
CN105068784B CN105068784B (zh) | 2018-02-16 |
Family
ID=54498165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510419816.2A Active CN105068784B (zh) | 2015-07-16 | 2015-07-16 | 实现基于蒙哥马利模乘的Tate对算法的电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105068784B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108390761A (zh) * | 2018-02-09 | 2018-08-10 | 北京万协通信息技术有限公司 | 一种双域模逆的硬件实现方法 |
CN109284085A (zh) * | 2018-09-25 | 2019-01-29 | 国网湖南省电力有限公司 | 一种基于fpga的高速模乘和模幂运算方法及模型 |
CN109669670A (zh) * | 2018-12-26 | 2019-04-23 | 贵州华芯通半导体技术有限公司 | 用于蒙哥马利模乘中的不均等分块的数据处理方法及装置 |
CN110908635A (zh) * | 2019-11-04 | 2020-03-24 | 南京大学 | 基于同源曲线的后量子密码学的高速模乘器及其模乘方法 |
CN111352609A (zh) * | 2020-03-05 | 2020-06-30 | 青岛大学 | 一种基于边缘计算的分布式外包模幂运算方法 |
WO2023226173A1 (zh) * | 2022-05-24 | 2023-11-30 | 上海阵方科技有限公司 | 一种数论变换素数下的模乘运算方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100512759B1 (ko) * | 2002-12-20 | 2005-09-07 | 한국전자통신연구원 | 자바카드에서의 멱승연산을 위한 모듈러 곱셈장치 및 그방법 |
CN1786900A (zh) * | 2005-10-28 | 2006-06-14 | 清华大学 | 基于改进的蒙哥马利算法的模乘器 |
US20090136022A1 (en) * | 2005-03-04 | 2009-05-28 | Peter Langendoerfer | Method and Apparatus for Calculating a Polynomial Multiplication, In Particular for Elliptic Curve Cryptography |
CN101572602A (zh) * | 2008-04-28 | 2009-11-04 | 陈婧 | 一种基于硬件设计的有限域求逆的方法及装置 |
CN101782845A (zh) * | 2009-01-20 | 2010-07-21 | 北京华大信安科技有限公司 | 一种椭圆曲线密码的高速运算装置和方法 |
CN104184578A (zh) * | 2014-07-30 | 2014-12-03 | 山东大学 | 一种基于fpga的椭圆曲线标量乘法加速电路及其算法 |
-
2015
- 2015-07-16 CN CN201510419816.2A patent/CN105068784B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100512759B1 (ko) * | 2002-12-20 | 2005-09-07 | 한국전자통신연구원 | 자바카드에서의 멱승연산을 위한 모듈러 곱셈장치 및 그방법 |
US20090136022A1 (en) * | 2005-03-04 | 2009-05-28 | Peter Langendoerfer | Method and Apparatus for Calculating a Polynomial Multiplication, In Particular for Elliptic Curve Cryptography |
CN1786900A (zh) * | 2005-10-28 | 2006-06-14 | 清华大学 | 基于改进的蒙哥马利算法的模乘器 |
CN101572602A (zh) * | 2008-04-28 | 2009-11-04 | 陈婧 | 一种基于硬件设计的有限域求逆的方法及装置 |
CN101782845A (zh) * | 2009-01-20 | 2010-07-21 | 北京华大信安科技有限公司 | 一种椭圆曲线密码的高速运算装置和方法 |
CN104184578A (zh) * | 2014-07-30 | 2014-12-03 | 山东大学 | 一种基于fpga的椭圆曲线标量乘法加速电路及其算法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108390761A (zh) * | 2018-02-09 | 2018-08-10 | 北京万协通信息技术有限公司 | 一种双域模逆的硬件实现方法 |
CN108390761B (zh) * | 2018-02-09 | 2021-03-05 | 北京万协通信息技术有限公司 | 一种双域模逆的硬件实现方法 |
CN109284085A (zh) * | 2018-09-25 | 2019-01-29 | 国网湖南省电力有限公司 | 一种基于fpga的高速模乘和模幂运算方法及模型 |
CN109284085B (zh) * | 2018-09-25 | 2023-03-31 | 国网湖南省电力有限公司 | 一种基于fpga的高速模乘和模幂运算方法及装置 |
CN109669670A (zh) * | 2018-12-26 | 2019-04-23 | 贵州华芯通半导体技术有限公司 | 用于蒙哥马利模乘中的不均等分块的数据处理方法及装置 |
CN110908635A (zh) * | 2019-11-04 | 2020-03-24 | 南京大学 | 基于同源曲线的后量子密码学的高速模乘器及其模乘方法 |
CN111352609A (zh) * | 2020-03-05 | 2020-06-30 | 青岛大学 | 一种基于边缘计算的分布式外包模幂运算方法 |
WO2023226173A1 (zh) * | 2022-05-24 | 2023-11-30 | 上海阵方科技有限公司 | 一种数论变换素数下的模乘运算方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105068784B (zh) | 2018-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105068784A (zh) | 基于蒙哥马利模乘的Tate对算法及其硬件结构 | |
CN103226461B (zh) | 一种用于电路的蒙哥马利模乘方法及其电路 | |
CN101507176A (zh) | 椭圆曲线点乘法 | |
CN101938349A (zh) | 一种适用于硬件实现的s盒及其电路实现方法 | |
US7486789B2 (en) | Device and method for calculation on elliptic curve | |
CN103761068A (zh) | 优化的蒙哥马利模乘方法、模平方方法和模乘硬件 | |
CN102122241A (zh) | 一种适用于素域和多项式域的模乘模除器 | |
CN102098156A (zh) | 密码转换数据文本的改进或与之相关的改进 | |
JP2001505325A (ja) | タイミング攻撃を阻止する標準化されたモジュラべき乗を計算することにより復号メカニズムを実行する方法と装置 | |
CN103336680B (zh) | 实现二进制左移模逆算法的电路 | |
CN101567783B (zh) | 一种基于ⅱ型高斯基域的椭圆曲线加解密方法和装置 | |
CN101464920A (zh) | 一种自动生成二元域ecc协处理器电路的设计方法 | |
Jaiswal et al. | Hardware implementation of text encryption using elliptic curve cryptography over 192 bit prime field | |
KR20040055550A (ko) | 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기 | |
CN101986261A (zh) | 基为16的高速Montgomery模乘法器VLSI | |
CN101702646B (zh) | 一种数据加密方法 | |
Mahapatra et al. | RSA cryptosystem with modified Montgomery modular multiplier | |
US8782114B2 (en) | Arithmetic device | |
Al-Haija et al. | Cost-effective design for binary Edwards elliptic curves crypto-processor over GF (2N) using parallel multipliers and architectures | |
JP4783061B2 (ja) | 楕円曲線暗号におけるスカラー倍計算装置 | |
JP3904421B2 (ja) | 剰余乗算演算装置 | |
CN106775575B (zh) | 基于二次剩余的低成本rfid认证协议的乘法器 | |
Saju et al. | Design and execution of highly adaptable elliptic curve cryptographic processor and algorithm on FPGA using Verilog HDL | |
Xie et al. | Low-complexity systolic multiplier for GF (2 m) using toeplitz matrix-vector product method | |
Hong et al. | The design of high performance elliptic curve cryptographic |
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 |