CN101782845B - 一种椭圆曲线密码的高速运算装置和方法 - Google Patents

一种椭圆曲线密码的高速运算装置和方法 Download PDF

Info

Publication number
CN101782845B
CN101782845B CN200910005431.6A CN200910005431A CN101782845B CN 101782845 B CN101782845 B CN 101782845B CN 200910005431 A CN200910005431 A CN 200910005431A CN 101782845 B CN101782845 B CN 101782845B
Authority
CN
China
Prior art keywords
point
montmul
takes advantage
calculate
mould
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.)
Active
Application number
CN200910005431.6A
Other languages
English (en)
Other versions
CN101782845A (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.)
BEIJING HUADA INFOSEC TECHNOLOGY Ltd
Original Assignee
BEIJING HUADA INFOSEC TECHNOLOGY Ltd
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 BEIJING HUADA INFOSEC TECHNOLOGY Ltd filed Critical BEIJING HUADA INFOSEC TECHNOLOGY Ltd
Priority to CN200910005431.6A priority Critical patent/CN101782845B/zh
Publication of CN101782845A publication Critical patent/CN101782845A/zh
Application granted granted Critical
Publication of CN101782845B publication Critical patent/CN101782845B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明涉及一种椭圆曲线密码的高速运算装置和方法。本发明主要针对椭圆曲线为模长160~256比特,素域Fp上的通用曲线。本发明的高速运算装置是基于流水脉动双模乘器的特殊硬件结构,该硬件结构由运算、控制和存储三个部分组成,运算部分包含两个并行流水脉动的模乘器和两组加法器。本发明基于这种特殊的硬件结构,重新排列修改的雅可比坐标投影点的点加和点倍流水运算序列,并且使得相继出现的点加和/或点倍运算首尾相接,双模乘器空闲的时间相互补充。从而提高了流水脉动双模乘器的硬件效率,使得点加运算只占用7个模乘运算周期,点倍运算占4个模乘运算周期,最大幅度地减少点加和/或点倍以及点乘运算的时钟周期数。

Description

一种椭圆曲线密码的高速运算装置和方法
技术领域
本发明一般地涉及椭圆曲线密码技术,更具体地,涉及一种椭圆曲线密码的高速运算方法及集成电路。
背景技术
1.椭圆曲线密码技术
1985年,Koblitz和Victor Miller分别独立提出基于椭圆曲线的公钥密码体系(Elliptic Curves Cryptosystem,简称ECC),其安全性是建立在椭圆曲线离散对数问题(Elliptic Curve Discrete LogarithmProblem,简称ECDLP)之上。
1976年,W.Diffie和M.Hellman针对对称密码的密钥分发和管理等问题,提出公钥密码。第一个获得广泛应用的公钥密码是由R.Rivest、A.Shamir和L.Adleman提出的RSA,其安全性是建立在大整数因子分解的数学难题之上。RSA所涉及的大整数因子分解问题的算法时间复杂度为亚指数级;椭圆曲线上离散对数问题的算法时间复杂度为全指数级。从密码学分析角度来看,椭圆曲线密码用相对RSA更短的密钥就可以达到更高的安全强度。此外,椭圆曲线密码还具有处理速度快、存储空间小等优点。
椭圆曲线密码具有广泛的应用前景,已经吸引了许多密码学工作者投入研究,并已逐渐被国际各大标准组织采纳作为公钥密码标准,例如IEEE P1363、ANSI X9.62、ISO/IEC 15946-2等。
2.椭圆曲线定义
当p是大于3的素数时,有限域Fp上的椭圆曲线E定义如下:
E:y2=x3+ax+b,
其中a,b∈Fp,且使得(4a2+27b2)mod p≠0。椭圆曲线上的点集记为E(Fp)={(x,y)|x,y∈Fp且满足曲线方程y2=x3+ax+b}∪{O},其中O是椭圆曲线的无穷远点,又称为零点。
在仿射坐标下,椭圆曲线E(Fp)上的仿射点P(x,y)按照下面定义的加法法则,构成了一个阿贝尔群:
a)O+O=O
b)任意一点P(x,y)∈E(Fp)\{O},P+O=O+P=P
c)任意一点P(x,y)∈E(Fp)\{O},P的逆元-P(x,-y),则P+(-P)=O
d)点P1(x1,y1)∈E(Fp)\{O},P2(x2,y2)∈E(Fp),P3=P1+P∈E(Fp)
x3=λ2-x1-x2    y3=λ(x1-x3)-y1
其中
a)当P1≠P2时,则λ=(y2-y1)/(x2-x1)
b)当P1=P2时,且P1≠-P2,则λ=(3x1 2+a)/2y1
椭圆曲线密码的系统参数组用于描述定义在有限域Fp上的一条椭圆曲线E,该曲线的基点G∈E(Fp),阶为n。参数组由5个参数组成(p,a,b,G,n),其中:
a)p:模素数,一般位长为160~256比特
b)a,b:椭圆曲线的方程参数
c)G:椭圆曲线的基点
d)n:基点G的阶
3.椭圆曲线密码算法及实现
椭圆曲线密码一般分为4个运算层次:
a)有限域运算,主要包括大数模加、模减、模乘和模逆运算等
b)点加和点倍运算
c)点乘运算
d)椭圆曲线密码机制协议层,主要包括加/解密、签名/验证协议,如椭圆曲线数字签名算法(Elliptic Curve Digital SignatureAlgorithm,简称ECDSA)等。
针对椭圆曲线密码的4个运算层次,已经存在许多成熟的算法。一个具体的椭圆曲线密码系统的实现,主要考虑的因素包括系统安全性、椭圆曲线密码算法的选择及优化、椭圆曲线密码的应用平台(软件、硬件或固件)、计算环境的约束(处理器的频率、存储空间、代码空间、电路规模和功耗等)、通信环境的约束(波特率、响应时间)等。
椭圆曲线密码涉及的主要算法包括大整数模乘算法,点加和点倍算法、点乘算法等,下面具体介绍这几种算法。
1)大整数模乘算法
大整数模乘算法主要涉及到大整数乘法,这对软件和硬件的实现带来很大困难。1985年,蒙哥马利提出了一种非常有效的模乘算法。该算法的优点是用加法和移位运算代替传统模乘算法中高成本的除法和减法,适合硬件电路实现,简称蒙哥马利(Mongtgomery)模乘算法。设M为模数,M>1,M的二进制位长为n位,即2n-1≤M<2n,令R=2n,M与R互素。R-1和M′满足0<R-1<M,0<M′<R,RR-1-M M′=1。
Montgomery模乘算法描述:
输入:大整数X,Y,M和常数M′
输出:MontMu l(X,Y),即XYR-1mod M
1)T:=X·Y
2)q=T·M′mod R
3)S:=(T+q·R)/R
4)if S≥M then S=S-M
5)return S
2)点加和点倍算法
在仿射坐标下,仿射坐标点的点加运算和点倍运算均涉及模逆运算和模乘运算。一般来说,模逆运算相对于模乘运算花费的代价过大。为了减少模逆运算次数,通过坐标变换,采用投影坐标实现点加和点倍运算是个不错的选择。而投影坐标有很多种,这些投影坐标的主要区别在于点加和点倍运算所需的模运算次数。在文献“混合坐标下高效的椭圆曲线点乘”中(“Efficient elliptic curve exponentiation using mixedcoordinates[J].Advances in Cryptology -ASIACRYPT’98,1998,1514:51-65.”)提出一种“修改的雅可比投影坐标”。该投影坐标点的主要优点是相对于其它投影坐标而言,其点倍运算所需的模乘运算次数最少。
在修改的雅可比投影坐标下,椭圆曲线上的P点表示为(X,Y,Z,aZ4)其中a为椭圆曲线方程中的参数。修改的雅可比投影点P(X,Y,Z,aZ4),Z≠0按照下面的坐标变换公式就可转换为仿射点P(x,y)。
x=X/Z2,y=Y/Z3
同理,设Z=1,则仿射坐标点P(x,y)就可以转化为对应的修改雅可比投影点(X,Y,1,a)。
椭圆曲线上的两点P=(X1,Y1,Z1,aZ1 4),Q=(X2,Y2,Z2,aZ2 4)∈E(Fp),P+Q=(X3,Y3,Z3,aZ3 4)。
在P≠±Q时,(P+Q)称为点加运算,当Q为固定点时,Z2=1,则点加运算(P+Q)的计算公式如下:
X3=-H3-2X1H2+r2
Y3=-Y1H3+r(X1H2-X3)
Z3=Z1H
aZ3 4=(aZ1 4)H4
其中,
U2=X2Z1 2
S2=Y2Z1 3
H=U2-X1
r=S2-Y1
从上述公式可以看出点加运算至少需要13次模乘运算和6次模加/减运算。
在P=Q时,(P+Q)可表示为(P+P=2P),称为点倍运算,点倍运算(P+P)的计算公式如下:
X3=T
Y3=M(4S-T)-8U
Z3=2Y1Z1
aZ3 4=16U(aZ1 4)
其中,
S=X1Y1 2
U=Y1 4
M=3X1 2+aZ1 4
T=M2-8S
从上述公式可以看出点倍运算至少需要8次模乘运算和4次模加/减运算。
3)点乘算法
椭圆曲线密码中最重要的运算是点乘运算。在给定椭圆曲线中,一个大整数k乘以椭圆曲线点P的运算kP,称为点乘。点乘运算造成了椭圆曲线加/解密和签名/验证的巨大运算量。
椭圆曲线点乘运算kP可以分解为椭圆曲线点加运算(P+Q)和椭圆曲线点倍运算(P+P=2P),其中k为大整数,其二进制表示为k=(kn-1kn-2......k1k0),n为k的二进制长度,P、Q为椭圆曲线上的整数点。
点乘算法的描述如下:
输入:k=(kn-1kn-2......k1k0),P
输出:kP
1)Q:=O(O为无穷远点)
2)for i from n-1downto 0do
2a  Q:=2Q
2b  if  ki=1 then  Q:=Q+P
3)return Q
从上述椭圆曲线点乘运算的分解可以看出,存在两种基本的运算:点倍运算(2Q)和点加运算(Q+P)。
目前,已经存在许多改进的点乘算法,其中大多数算法对k的编码方式进行优化。椭圆曲线群是一种特殊的阿贝尔群,曲线上加法和减法运算一样有效。对k重新编码,用有符号二进制编码来减少二进制编码中的非零元个数,能有效地减少点乘运算中的点加运算次数。目前比较流行的有符号编码是非相邻有符号二进制表示编码(non-adjacent form,简称NAF编码)。这种编码具有最小的海明码重(非零元个数)。
术语“算法”通常定义为解决某一问题的有限步运算序列。基于通用处理器使用某种高级语言和汇编语言来实现某一算法的方法,称为算法的软件实现。将某一算法直接用硬接线、固定的硬件结构实现的方法,称为算法的硬件实现。椭圆曲线密码涉及相对复杂的数学密码算法。椭圆曲线密码算法既可以基于通用处理器编程来实现,也可以通过专门定制电路结构的运算装置来硬件实现。不同应用的需求对椭圆曲线密码算法的软硬件实现提出了不同的要求。
根据不同的应用,同一种算法可以用不同的硬件电路结构来实现。如何将椭圆曲线密码算法映射到可用硬件电路来实现的运算装置上的过程是相当复杂的。算法硬件实现的主要目的是对一个具体的特定算法的执行进行优化。椭圆曲线密码算法硬件实现的运算装置的目的是对算法的执行进行优化,最终支持一个高速椭圆曲线密码系统。目前,主要采用的技术包括:时间重叠(流水线技术)、空间展开(多数据部件重复,脉动技术)、点运算序列重组等。为了实现一个高速椭圆曲线密码运算装置,在硬件结构方面上,大多采用基于单/多流水模乘器或单脉动阵列模乘器的结构;在算法执行方面,主要对算法运算序列和硬件资源调度做了相关优化。但迄今为止,大多数关于椭圆曲线密码算法的运算装置的性能仍不满足实际的要求,即平均每秒点乘运算性能都在1000次/秒以下(这里以素域上的模长192比特的通用椭圆曲线为参考基准,工作在10MHz频率下)。
发明内容
为了支持高速椭圆曲线密码系统,提高椭圆曲线密码算法的执行速度,本发明提出了一种椭圆曲线密码的高速运算方法,以及一种椭圆曲线密码的高速运算装置,即一种高速椭圆密码算法的硬件实现。
本发明针对点加算法和点倍算法,重新排列了修改的雅可比坐标点的点加和点倍运算序列,提出了一种实现点加运算和点倍运算的新方法,该方法可以基于流水脉动的双模乘器的特殊硬件结构来实现。
流水脉动双模乘器的特点如下:运算数据流水输入,运算结果数据流水输出,输入、输出数据时间上重叠,模乘器一边输入新的运算数据,一边输出上次的运算结果,并且在运算结果输出的同时完成模加和模减运算。相对于模乘运算而言,模加/减运算不占用额外的运算周期。本发明中相继出现的两个点运算首尾相接,两个模乘器的空闲时间相互补充,使流水脉动双模乘器的硬件效率最大化,加快了点运算的执行速度。
利用本发明的方法可以实现一个具体的椭圆曲线密码的高速运算装置。
根据本发明的第一方面,提供了一种椭圆曲线密码的高速运算方法,其适合于利用包括流水脉动双模乘器的硬件按下面的运算步骤来进行点加运算和点倍运算。
P=(X1,Y1,Z1,aZ1 4),Q=(X2,Y2,Z2,aZ2 4)是椭圆曲线E(Fp)上的两点在雅可比投影坐标下的表示,当Q为固定点时,Z2=1,则点加运算P+Q=(X3,Y3,Z3,aZ3 4)的运算步骤包括:
a)模乘器n计算T0=Z1 2=MontMul(Z1,Z1);
b)模乘器n计算T1=Z1 3=MonMul(Z1 2,Z1),模乘器s计算U2=MontMul(X2,Z1 2),并且加法器之一计算H=ModSub(U2,X1);
c)模乘器s计算S2=MontMul(Y2,Z1 3),加法器之一计算r=ModSub(S2,Y1);
d)模乘器n计算T2=H2=MontMul(H,H),模乘器s计算Z3=MontMul(Z1,H)
e)模乘器n计算T3=H3=MontMul(H2,H),模乘器s计算T4=r2=MontMul(r,r),加法器之一计算T5=ModSub(r2,H3)
f)模乘器n计算T7=X1H2=MontMul(X1,H2),模乘器s计算T6=H4=MontMul(H3,H),加法器之一计算X3=ModSub(r2-H3,2X1H2),另一个加法器计算T8=ModSub(X1H2,X3)
g)模乘器n计算T9=Y1H3=MontMul(Y1,H3),模乘器s计算T10=r(X1H2-X3)=MontMul(r,X1H2-X3),同时加法器之一计算Y3=ModSub(r(X1H2-X3),Y1H3)
h)模乘器s计算aZ3 4=MontMul(aZ1 4,H4)。
并且点倍运算2P=(X3,Y3,Z3,aZ3 4)的运算步骤包括:。
i)模乘器n计算T0=X1 2=MontMul(X1,X1),加法器之一计算M=ModAdd(3X1 2,aZ1 4);
j)模乘器n计算T2=Y1Z1=MontMul(Y1,Z1),模乘器s计算T1=Y1 2=MontMul(Y1,Y1),加法器之一计算Z3=ModAdd(Y1Z1,Y1Z1);
k)模乘器n计算S=MontMul(X1,Y1 2),模乘器s计算T3=M2=MontMul(M,M),加法器之一计算X3=ModSub(M2,8S),另一个加法器计算T4=MontSub(4S,X3);
1)模乘器s计算T5=MontMul(M,4S-X3),模乘器n计算U=Y1 4=MontMul(Y1 2,Y1 2),加法器之一计算Y3=ModSub(M(4S-X3),8U);m)模乘器s计算aZ3 4=MontMul(16U,aZ1 4)。
在本发明中,MontMul(X,Y)表示操作数X、Y做Mongtgomery模乘运算,即XYR-1mod p,p是模数,ModAdd(X,Y)表示操作数X、Y做模加运算,即(X+Y)modp,ModSub(X,Y)表示操作数X、Y做模减运算,即(X-Y)modp,在本发明中,当点加运算之后出现点倍运算时,点加运算的步骤h)和点倍运算的步骤i)同时进行;在点倍运算之后出现点倍运算时,前一点倍运算的步骤m)与后一点倍运算的步骤i)同时进行;在点倍运算之后出现点加运算时,点倍运算的步骤m)和点加运算的步骤a)同时进行,由此点加和点倍运算首尾相接,双模乘器空闲的部分相互补充。
根据本发明的第二方面,提供了一种椭圆曲线密码的高速点乘运算装置。点乘算法可以分解为点加和点倍运算。在采用NAF编码点乘算法时,点加和点倍出现的相邻点运算序列主要包括:点加->点倍、点倍->点倍、点倍->点加,即点加的后续运算为点倍;点倍的后续运算为点加或点倍。因此可以利用根据本发明的第一方面的高速运算方法来实现高速点乘运算。
根据本发明的第三方面,提供了一种椭圆曲线密码的高速运算装置,其特征在于,所述装置包括:模乘器n和模乘器s,所述模乘器均是流水脉动的模乘器,用于计算MontMul(X,Y),其中MontMul(X,Y)表示操作数X、Y做Mongtgomery模乘运算,即XYR-1mod p,p是模数;两个加法器,所述加法器用于计算ModAdd(X,Y)或ModSub(X,Y),其中ModAdd(X,Y)表示操作数X、Y做模加运算,即(X+Y)modp,ModSub(X,Y)表示操作数X、Y做模减运算,即(X-Y)modp;数据寄存器,其用于存储数据,以及控制单元,其用于控制所述模乘器和加法器按本发明的第一方面所述的方法中的运算步骤来执行点加运算和点倍运算。
根据本发明的第四方面,提供了一种椭圆曲线密码的高速点乘运算装置。该点乘运算装置利用了本发明的第三方面所述的高速运算装置。
本发明的优点在于找到了一种空间观(硬件部件规模)和时间观(算法执行速度)的平衡。本发明采用的流水脉动的双模乘器结构相对于单模乘器而言,点加运算和点倍运算执行速度大约提高2倍,即点加和点倍运算所需的模乘周期数减少一半。模乘器是椭圆曲线密码的核心运算部件,从算法的硬件实现角度来看,提高模乘器的硬件效率具有重大意义。通过重新排列点加和点倍的运算序列,本发明在最大程度上提高了流水脉动双模乘器的硬件效率。在电路规模和硬件效率上,相对于3个以上的多模乘器而言,本发明采用的双模乘器结构空间规模小,具有一定的优势。本发明的椭圆曲线密码的高速运算装置,在工作频率100MHz下,平均每秒点乘运算性能可达到6000次/秒以上。
附图说明
通过对结合附图所示出的实施例进行详细说明,本发明的上述以及其他特征将更加明显,本发明附图中,相同的标号表示相同或相似的部件。在附图中:
图1示意性示出了根据本发明的一个实施例的高速运算装置的内部框图,所述高速运算装置包括流水脉动双模乘器;
图2示意性示出了图1中的流水脉动模乘器的时序图;
图3示意性示出了根据本发明的一个实施例的点加流水运算序列图;
图4示意性示出了根据本发明的一个实施例的点倍流水运算的序列图;
图5示意性示出了根据本发明的一个实施例的点加->点倍的流水运算序列图;
图6示意性示出了根据本发明的一个实施例的点倍->点倍的流水运算序列图;
图7示意性示出了根据本发明的一个实施例的点倍->点加的流水运算序列图。
具体实施方式
本发明基于流水脉动的双模乘器的特殊硬件结构。点乘算法采用NAF编码的点乘算法。点乘算法可以分解为点加运算和点倍运算。并且在采用NAF编码的点乘算法时,点加运算和点倍运算出现的相邻点运算序列主要包括:点加->点倍、点倍->点倍、点倍->点加,即点加的后续运算为点倍;点倍的后续运算为点加或点倍。在本发明中,重新排列了修改的雅可比坐标点的点加和点倍运算序列。
图1示意性示出了根据本发明的一个实施例的高速运算装置,其采用基于流水脉动的双模乘器的硬件结构,可以执行一个或多个点加和/或点倍运算。该硬件结构主要由运算、控制和存储三个部分组成。运算部分包含两个并行的流水脉动的模乘器n 101、s 102和两组加法器103;控制部分为由若干复用器组成的控制单元,控制模乘器和加法器的运行,以及数据的存储;存储部分为数据寄存器104,用于存储在运算过程中用到的初始量、中间变量以及运算结果等等。优选地,所述高速运算装置可以实现为集成电路的形式。
下面结合图2介绍本发明使用的流水脉动的模乘器的功能。图2示出本发明采用的模乘器的流水时序图,其中Ti代表运算周期,i=1,2,......。一个运算周期等于若干个时钟周期。模乘器一边输入新的运算数据,一边输出上次的运算结果。a表示模乘器的一个操作数输入端,b表示模乘器的另一个操作数的输入端,p表示模乘器的运算结果输出端。例如,在T1周期,a端流入大整数X0;T2周期,b端流入大整数Y0;T3周期,p端流出MontMul(X0,Y0)。MontMul(X0,Y0)表示操作数X0和Y0做Mongtgomery模乘运算的结果,即XYR-1mod p,p是模数。在T4周期,p端流出X1和Y1的Montgomery模乘结果MontMul(X1,Y1),其中X1是a端在T2周期流入的操作数,Y1是b端在T3周期流入的操作数。以此类推,在Ti+2周期,p端流出Xi和Yi+1的模乘结果MontMul(Xi,Yi+1),其中Xi是a端在Ti周期流入的操作数,Yi+1是b端在Ti+1周期流入的操作数。
回到图1,模乘器n具有两个输入端an和bn以及一个输出端pn。在Ti+2周期,pn端流出ani和bni+1的模乘结果,其中ani是an端在Ti周期流入的操作数,bni+1是bn端在Ti+1周期流入的操作数。类似地,模乘器s具有两个输入端as和bs以及一个输出端ps。在Ti+2周期,ps端流出asi和bsi+1的模乘结果,其中asi是as端在Ti周期流入的操作数,bsi+1是bs端在Ti+1周期流入的操作数。因此,在同一运算周期,双模乘器n和s可以执行两个模乘运算。
在图1中,本发明的硬件结构中的两组加法器示出为S和T。每组加法器可以在控制信号的作用下执行模加运算或模减运算。ModAdd(X,Y)表示操作数X、Y做模加运算,即(X+Y)modp,ModSub(X,Y)表示操作数X、Y做模减运算,即(X-Y)modp,其中p是模数。相对于模乘运算而言,模加/减运算不占用额外的运算周期。可以在一个运算周期中,在进行模乘运算后,将模乘结果和/或其他操作数进行模加/减运算。
控制单元可以根据要执行的点运算来控制模乘器和加法器按步骤执行相应的运算序列来完成点运算。下面将结合图3到图6详细介绍控制单元的功能。点运算包括点加运算、点倍运算以及点乘运算。如前所述,点乘运算可以分解为一系列点加运算和点倍运算。因此,在本说明书的上下文中,除非特别指出,否则点运算只表示点加和/或点倍运算。下面结合图3和图4来详细说明根据本发明的点加和点倍运算序列。
图3示意性示出了本发明设计的修改的雅可比坐标点的点加流水运算序列。修正的雅可比坐标点的点加运算表示为P+Q=(X3,Y3,Z3,aZ3 4),其中已知P=(X1,Y1,Z1,aZ1 4),Q=(X2,Y2,Z2,aZ2 4)∈E(Fp),Z2=1。ai为修正的雅可比坐标点的点加运算序列编号,i从0开始编号。其中T0~T10以及U2、S2、H和r表示点加运算中的临时变量。另外,这里模运算所涉及的操作数都是Montgomery表示。图中的第一列表示序列编号,第二列和第三列分别表示模乘器n的输入端an、bn流入的操作数,第四列表示模乘器n的输出端pn流出的运算结果,第五列和第六列分别表示模乘器s的输入端as、bs流入的操作数,第七列表示模乘器s的输出端ps流出的运算结果,第8列表示加法器S和/或T流出的运算结果。本发明的点加流水运算序列如下:
在步骤301,编号a0的运算周期,模乘器n的an端流入操作数Z1
在步骤302,编号a1的运算周期,模乘器n的an、bn两端同时流入操作数Z1。模乘器s的as端流入操作数X2
在步骤303,编号a2的运算周期,模乘器n的pn端流出运算结果T0=MontMul(Z1,Z1),bn端流入操作数T0。模乘器s的as端流入操作数Y2,bs端流入操作数T0
在步骤304,编号a3的运算周期,加法器S计算H=ModSub(U2,X1),模乘器n的an端流入操作数H,pn端流出运算结果T1=MontMul(Z1,T0)。模乘器s的as端流入操作数Z1,bs端流入操作数T1,ps端流出运算结果U2=MontMul(X2,T0)。
在步骤305,编号a4的运算周期,模乘器n的an,bn两端流入操作数H。模乘器s的as端流入操作数r,bs端流入操作数H,ps端流出运算结果S2=MontMul(Y2,T1)。同时加法器T计算r=ModSub(S2,Y1)。
在步骤306,编号a 5的运算周期,模乘器n的pn端流出运算结果T2=MontMul(H,H),同时an、bn端流入操作数T2。模乘器s的as端流入操作数H,bs端流入操作数r,ps端流出运算结果Z3=MontMul(Z1,H)。
在步骤307,编号a 6的运算周期,模乘器n的pn端流出运算结果T3=MontMul(T2,H),an端流入操作数T3,bn端流入操作数X1。模乘器s的as端流入操作数r,bs端流入操作数T3,ps端流出运算结果T4=MontMul(r,r).同时加法器T计算T5=MontSub(T4,T3)。
在步骤308,编号a7的运算周期,模乘器n的bn端流入操作数Y1,p端流出操作数T7=MontMul(T2,X1)。模乘器s的as端流入操作数T6,bs端流入操作数T8,ps端流出T6=MontMul(T3,H)。同时加法器S计算X3=ModSub(T5,2T7),加法器T计算T8=ModSub(3T7,T5)。
在步骤309,编号a8的运算周期,模乘器n的pn端流出运算结果T9=MontMul(Y1,T3)。模乘器s的bs端流入操作数aZ1 4,ps端流出运算结果T10。同时计算Y3=ModSub(T10,T9)。
在步骤310,编号a9的运算周期,模乘器s的ps端流出运算aZ3 4=MontMul(aZ1 4,T6)。
图4示意性示出了本发明设计的修改的雅可比坐标点的点倍流水运算序列。修正的雅可比坐标点的点倍运算表示为2P=(X3,Y3,Z3,aZ3 4),其中已知P=(X1,Y1,Z1,aZ1 4)∈E(Fp)。dj为修正的雅可比坐标点的点倍运算序列编号,j从0开始编号。其中T0~T5以及S、U和M表示点倍运算中的临时变量。另外,这里模运算所涉及的操作数都是Montgomery表示。与图3类似,图4中的第一列表示序列编号,第二列和第三列分别表示模乘器n的输入端an、bn流入的操作数,第四列表示模乘器n的输出端pn流出的运算结果,第五列和第六列分别表示模乘器s的输入端as、bs流入的操作数,第七列表示模乘器s的输出端ps流出的运算结果,第8列表示加法器S和/或T流出的运算结果。本发明的点倍流水运算序列如下:
在步骤401,编号为d0的运算周期,模乘器n的an端流入操作数X1
在步骤402,编号为d1的运算周期,模乘器n的an端流入操作数Y1,bn端流入操作数X1。模乘器s的as端流入操作数Y1
在步骤403,编号为d2的运算周期,模乘器n的an端流入操作数X1,bn端流入操作数Z1,pn端流出运算结果T0=MontMul(X1,X1)。模乘器s的as端流入操作数M,bs端流入操作数Y1。同时加法器S计算M=ModAdd(3X1 2,aZ1 4)。
在步骤404,编号为d3的运算周期,模乘器n的an端流入操作数T1,bn端流入操作数T1,pn端流出运算结果T2=MontMul(Y1,Z1)。模乘器s的as、bs端输入操作数M,ps端流出运算结果T1=MontMul(Y1,Y1)。同时加法器S计算Z3=ModAdd(Y1Z1,Y1Z1)。
在步骤405,编号为d4的运算周期,模乘器n的bn端流入操作数T1,pn端流出运算结果S=MontMul(X1,T1)。模乘器s的as端流入操作数aZ1 4,bs端流入操作数T4,ps端流出运算结果T3=MontMul(M,M)。同时加法器S计算X3=ModSub(T3,8S),加法器T计算T4=MontSub(4S,X3)。
在步骤406,编号为d5的运算周期,模乘器n的pn端流出运算结果U=MontMul(T1,T1)。模乘器s的bs端流入16U,ps端流出运算结果T5=MontMul(M,T4)。同时加法器T计算Y3=MontSub(T5,8U)。
在步骤407,编号为d6的运算周期,模乘器s的ps端流出运算结果aZ3 4=MontMul(16U,aZ1 4)。
在上述图3和图4示出的运算序列中,在同一运算周期中,加法器可以将模乘运算流程的运算结果作为操作数进行模加/减运算,并且流出相应的运算结果,这是可以实现的,因为如前文所述,相对于模乘运算而言,模加/减运算不占用额外的运算周期。
并且,应该明白,在上述运行序列中,模乘器n和s是相同的,其可以互换,加法器S和T也可以相互替代,而不影响点运算的实现。
从上述点加和点倍运算序列中,可以看出点加运算序列中编号为a2的运算发明周期中,模乘器s空闲,编号为a4和a9的运算周期中,模乘器n空闲。在点倍的运算序列中,编号为d2的运算周期中,模乘器s空闲;编号为d6的运算周期中,模乘器n空闲。根据本发明采用的NAF编码点乘算法,点加和点倍出现的相邻点运算序列主要包括:点加->点倍、点倍->点倍、点倍->点加,即点加的后续运算为点倍;点倍的后续运算为点加或点倍。本发明把相邻的点加和/或点倍运算首尾相接,双模乘器空闲的部分刚好可以相互补充。从而,点加运算只需7个模乘运算周期完成,点倍运算只需4个模乘运算周期完成。下面将结合图5、图6和图7详细说明根据本发明的点加->点倍、点倍->点倍、以及点倍->点加运算序列。
图5根据本发明的一个实施例示意性示出了点乘算法中出现的点加->点倍运算序列。在该运算序列中,采用了本发明的“首尾”相接的方案,即将当前点加运算中的编号为a7~a9的流水运算序列与后续点倍运算中的d0~d2的流水运算序列相接。从而可以节省3个运算周期。
图6根据本发明的一个实施例示意性示出了点乘算法中出现的点倍->点倍运算序列。在该运算序列中,采用了本发明的“首尾”相接的方案,即将当前点倍运算中的编号为d4~d6的流水运算序列与后续点倍运算中的d0~d2的流水运算序列相接。从而可以节省3个运算周期。
图7根据本发明的一个实施例示意性示出了点乘算法中出现的点倍->点加运算序列。在该运算序列中,采用本发明的“首尾”相接的方案,即将当前点倍运算中的编号为d4~d6的流水运算序列与后续点加运算中的a7~d9的流水运算序列相接。从而可以节省3个运算周期。
显然,当存在多个相邻的点运算序列时,图5-图7中的运算序列可以结合在一起使用。例如,对于点加->点倍->点倍运算序列,可以将图5和图6的流水运算序列首尾相接来实现。即将当前点加运算中的编号为a7~a9的流水运算序列与后续的第一个点倍运算中的d0~d2的流水运算序列相接,将第一个点倍运算中的编号为d4~d6的流水运算序列与第二个点倍运算中的d0~d2的流水运算序列相接第二个点倍。又如,对于点加->点倍->点倍->点加运算序列,可以将图5、图6和图7的流水运算序列首尾相接来实现。即在点加->点倍->点倍运算序列的基础上,将第二点倍运算中的编号为d4~d6的流水运算序列与后续点加运算中的a7~d9的流水运算序列相接。以此类推,根据本发明的“首尾”相接方案,可以通过将一个或多个图5、图6和/或图7中的运算序列首尾相接来实现一连串的点加/点倍运算,其中除了第一个点运算外,其余的点加运算只需7个模乘运算周期完成,点倍运算只需4个模乘运算周期完成。
在上述运算过程中,点P和/或Q的修改的雅可比坐标表示(X1,Y1,Z1,aZ1 4)、(X2,Y2,Z2,aZ2 4)∈E(Fp),运算结果(X3,Y3,Z3,aZ3 4),以及临时变量都可以根据需要存储在数据寄存器中。
容易理解,因为点乘算法可以分解为点加运算和点倍运算,所以可以利用上述的点加和/或点倍运算的首尾相接方案来实现高速的点乘算法。根据本发明的点乘高速运算装置可以利用图1的硬件结构,通过增加一个控制单元来实现。所述增加的控制单元根据点乘运算所分解的点加和点倍运算序列来控制图1的硬件结构执行相应的点加和/或点倍运算。作为替代,也可以不增加控制单元,而是修改图1中的控制单元,使得增加相应的控制功能。
尽管已经描述并说明了本发明的具体实施例,但是本发明并不限于此描述和说明的具体形式或者布置。本发明的范围意在由所附权利要求及其等同来定义。

Claims (4)

1.一种椭圆曲线密码的高速运算方法,其适合于利用包括流水脉动双模乘器的硬件结构来实现,所述方法按下面的运算步骤来进行点加运算和点倍运算,其中: 
P=(X1,Y1,Z1,aZ1 4),Q=(X2,Y2,Z2,aZ2 4)是椭圆曲线E(Fp)上的两点在雅可比投影坐标下的表示,当Q为固定点时,Z2=1, 
则点加运算P+Q=(X3,Y3,Z3,aZ3 4)的运算步骤包括: 
a)在第一运算周期,模乘器n计算T0=Z1 2=MontMul(Z1,Z1); 
b)在第二运算周期,模乘器n计算T1=Z1 3=MontMul(Z1 2,Z1),模乘器s计算U2=MontMul(X2,Z1 2),并且加法器之一计算H=ModSub(U2,X1); 
c)在第三运算周期,模乘器s计算S2=MontMul(Y2,Z1 3),加法器之一计算r=ModSub(S2,Y1); 
d)在第四运算周期,模乘器n计算T2=H2=MontMul(H,H),模乘器s计算Z3=MontMul(Z1,H);
e)在第五运算周期,模乘器n计算T3=H3=MontMul(H2,H),模乘器s计算T4=r2=MontMul(r,r),加法器之一计算T5=ModSub(r2,H3) ;
f)在第六运算周期,模乘器n计算T7=X1H2=MontMul(X1,H2),模乘器s计算T6=H4=MontMul(H3,H),加法器之一计算X3=ModSub(r2-H3,2X1H2),另一个加法器计算T8=ModSub(X1H2,X3) ;
g)在第七运算周期,模乘器n计算T9=Y1H3=MontMul(Y1,H3),模乘器s计算T10=r(X1H2-X3)=MontMul(r,X1H2-X3),同时加法器之一计算Y3=ModSub(r(X1H2-X3),Y1H3) ;
h)在第八运算周期,模乘器s计算aZ3 4=MontMul(aZ1 4,H4); 
并且点倍运算2P=(X3,Y3,Z3,aZ3 4)的运算步骤包括: 
i)在另一第一运算周期,模乘器n计算T0=X1 2=MontMul(X1,X1),加法器之一计算M=ModAdd(3X1 2,aZ1 4); 
j)在另一第二运算周期,模乘器n计算T2=Y1Z1=MontMul(Y1,Z1), 模乘器s计算T1=Y1 2=MontMul(Y1,Y1),加法器之一计算Z3=ModAdd(Y1Z1,Y1Z1); 
k)在另一第三运算周期,模乘器n计算S=MontMul(X1,Y1 2),模乘器s计算T3=M2=MontMul(M,M),加法器之一计算X3=ModSub(M2,8S),另一个加法器计算T4=MontSub(4S,X3); 
1)在另一第四运算周期,模乘器s计算T5=MontMul(M,4S-X3),模乘器n计算U=Y1 4=MontMul(Y1 2,Y1 2),加法器之一计算Y3=ModSub(M(4S-X3),8U); 
m)在另一第五运算周期,模乘器s计算aZ3 4=MontMul(16U,aZ1 4), 
其中,MontMul(X,Y)表示操作数X、Y做Mongtgomery模乘运算,即XYR-1mod p,p是模数,ModAdd(X,Y)表示操作数X、Y做模加运算,即(X+Y)mod p,ModSub(X,Y)表示操作数X、Y做模减运算,即(X-Y)mod p,并且其中,当点加运算之后出现点倍运算时,当前点加运算的步骤h)和后续点倍运算的步骤i)同时进行;在点倍运算之后出现点倍运算时,当前点倍运算的步骤m)与后续点倍运算的步骤i)同时进行;在点倍运算之后出现点加运算时,当前点倍运算的步骤m)和后续点加运算的步骤a)同时进行,由此相邻的点运算首尾相接,双模乘器空闲的部分相互补充。 
2.根据权利要求1所述的高速运算方法,其中在所述方法用于点乘运算时,点乘算法采用NAF编码点乘算法。 
3.一种椭圆曲线密码的高速运算装置,其特征在于,所述装置包括: 
模乘器n和模乘器s,所述模乘器均是流水脉动的模乘器,用于计算MontMul(X,Y),其中MontMul(X,Y)表示操作数X、Y做Mongtgomery模乘运算,即XYR-1mod p,p是模数, 
两个加法器,所述加法器用于计算ModAdd(X,Y)或ModSub(X,Y),其中ModAdd(X,Y)表示操作数X、Y做模加运算,即(X+Y)mod p,ModSub(X,Y)表示操作数X、Y做模减运算,即(X-Y)mod  p, 
数据寄存器,用于存储数据,以及 
控制单元,用于控制所述模乘器和加法器按下面的运算步骤执行点加运算和点倍运算,其中,椭圆曲线E(Fp)上的两点在雅可比投影坐标下表示为P=(X1,Y1,Z1,aZ1 4),Q=(X2,Y2,Z2,aZ2 4),当Q为固定点时,Z2=1, 
则点加运算P+Q=(X3,Y3,Z3,aZ3 4)的运算步骤包括: 
a)在第一运算周期,模乘器n计算T0=Z1 2=MontMul(Z1,Z1); 
b)在第二运算周期,模乘器n计算T1=Z1 3=MontMul(Z1 2,Z1),模乘器s计算U2=MontMul(X2,Z1 2),并且加法器之一计算H=ModSub(U2,X1); 
c)在第三运算周期,模乘器s计算S2=MontMul(Y2,Z1 3),加法器之一计算r=ModSub(S2,Y1); 
d)在第四运算周期,模乘器n计算T2=H2=MontMul(H,H),模乘器s计算Z3=MontMul(Z1,H) ;
e)在第五运算周期,模乘器n计算T3=H3=MontMul(H2,H),模乘器s计算T4=r2=MontMul(r,r),加法器之一计算T5=ModSub(r2,H3) ;
f)在第六运算周期,模乘器n计算T7=X1H2=MontMul(X1,H2),模乘器s计算T6=H4=MontMul(H3,H),加法器之一计算X3=ModSub(r2-H3,2X1H2),另一个加法器计算T8=ModSub(X1H2,X3) ;
g)在第七运算周期,模乘器n计算T9=Y1H3=MontMul(Y1,H3),模乘器s计算T10=r(X1H2-X3)=MontMul(r,X1H2-X3),同时加法器之一计算Y3=ModSub(r(X1H2-X3),Y1H3) ;
h)在第八运算周期,模乘器s计算aZ3 4=MontMul(aZ1 4,H4); 
并且点倍运算2P=(X3,Y3,Z3,aZ3 4)的运算步骤包括: 
i)在另一第一运算周期,模乘器n计算T0=X1 2=MontMul(X1,X1),加法器之一计算M=ModAdd(3X1 2,aZ1 4); 
j)在另一第二运算周期,模乘器n计算T2=Y1Z1=MontMul(Y1,Z1),模乘器s计算T1=Y1 2=MontMul(Y1,Y1),加法器之一计算 Z3=ModAdd(Y1Z1,Y1Z1); 
k)在另一第三运算周期,模乘器n计算S=MontMul(X1,Y1 2),模乘器s计算T3=M2=MontMul(M,M),加法器之一计算X3=ModSub(M2,8S),另一个加法器计算T4=MontSub(4S,X3); 
1)在另一第四运算周期,模乘器s计算T5=MontMul(M,4S-X3),模乘器n计算U=Y1 4=MontMul(Y1 2,Y1 2),加法器之一计算Y3=ModSub(M(4S-X3),8U); 
m)在另一第五运算周期,模乘器s计算aZ3 4=MontMul(16U,aZ1 4), 
其中,当点加运算之后出现点倍运算时,点加运算的步骤h)和点倍运算的步骤i)同时进行;在点倍运算之后出现点倍运算时,前一点倍运算的步骤m)与后一点倍运算的步骤i)同时进行;在点倍运算之后出现点加运算时,点倍运算的步骤m)和点加运算的步骤a)同时进行,由此相邻的点运算首尾相接,双模乘器空闲的部分相互补充。 
4.根据权利要求3所述的高速运算装置,其中在所述装置用于点乘运算时,点乘算法采用NAF编码点乘算法。 
CN200910005431.6A 2009-01-20 2009-01-20 一种椭圆曲线密码的高速运算装置和方法 Active CN101782845B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910005431.6A CN101782845B (zh) 2009-01-20 2009-01-20 一种椭圆曲线密码的高速运算装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910005431.6A CN101782845B (zh) 2009-01-20 2009-01-20 一种椭圆曲线密码的高速运算装置和方法

Publications (2)

Publication Number Publication Date
CN101782845A CN101782845A (zh) 2010-07-21
CN101782845B true CN101782845B (zh) 2014-11-26

Family

ID=42522858

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910005431.6A Active CN101782845B (zh) 2009-01-20 2009-01-20 一种椭圆曲线密码的高速运算装置和方法

Country Status (1)

Country Link
CN (1) CN101782845B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102279725A (zh) * 2011-09-01 2011-12-14 北京华大信安科技有限公司 Ecc协处理器
US9979543B2 (en) * 2013-12-23 2018-05-22 Nxp B.V. Optimized hardware architecture and method for ECC point doubling using jacobian coordinates over short weierstrass curves
US9929862B2 (en) 2013-12-23 2018-03-27 Nxp B.V. Optimized hardware architecture and method for ECC point doubling using Jacobian coordinates over short Weierstrass curves
US9900154B2 (en) 2013-12-23 2018-02-20 Nxp B.V. Optimized hardward architecture and method for ECC point addition using mixed affine-jacobian coordinates over short weierstrass curves
CN103942031B (zh) * 2014-04-28 2017-07-04 山东华芯半导体有限公司 椭圆域曲线运算方法
CN104267926B (zh) * 2014-09-29 2018-03-09 北京宏思电子技术有限责任公司 获取椭圆曲线密码数据的方法和装置
CN104503730A (zh) * 2014-10-24 2015-04-08 山东华芯半导体有限公司 一种基于指令的大数点加、倍点运算电路及实现方法
CN105068784B (zh) * 2015-07-16 2018-02-16 清华大学 实现基于蒙哥马利模乘的Tate对算法的电路
CN108667623B (zh) * 2018-05-28 2021-10-19 广东工业大学 一种sm2椭圆曲线签名验证算法
CN109117677A (zh) * 2018-09-21 2019-01-01 阿里巴巴集团控股有限公司 一种用于椭圆曲线多倍点运算的电路
CN112068799B (zh) * 2019-06-11 2022-08-02 云南大学 一种最优带符号二进制快速计算方法以及椭圆曲线标量乘法
CN110232289A (zh) * 2019-08-09 2019-09-13 南京秉速科技有限公司 椭圆曲线密码的高速倍点运算方法
CN110460443A (zh) * 2019-08-09 2019-11-15 南京秉速科技有限公司 椭圆曲线密码的高速点加运算方法和装置
CN110633574B (zh) * 2019-09-17 2021-06-29 北京智芯微电子科技有限公司 用于电力系统安全传输的椭圆曲线密码学ecc加密模块
CN111740820B (zh) * 2020-08-10 2020-11-20 灵长智能科技(杭州)有限公司 基于ecc的有限域运算调度方法、装置、设备、介质及系统
CN112099760B (zh) * 2020-08-24 2022-11-11 清华大学 国密sm2算法中点加与倍点的单乘法器无缝调度方法
CN114879934B (zh) * 2021-12-14 2023-01-10 中国科学院深圳先进技术研究院 一种高效的零知识证明加速器及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1831754A (zh) * 2005-11-04 2006-09-13 北京浦奥得数码技术有限公司 一种椭圆曲线密码系统及实现方法
CN101221491A (zh) * 2008-01-04 2008-07-16 清华大学 椭圆曲线密码系统的点加系统
CN101262345A (zh) * 2008-01-04 2008-09-10 清华大学 椭圆曲线密码系统的倍点系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001265218A (ja) * 2000-03-23 2001-09-28 Nippon Telegr & Teleph Corp <Ntt> 楕円曲線上の演算方法及び装置と、演算プログラムを記録した記録媒体
US20070053506A1 (en) * 2004-09-15 2007-03-08 Katsuyuki Takashima Elliptic curve encryption processor, processing method of the processor using elliptic curves, and program for causing a computer to execute point scalar multiplication on elliptic curves

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1831754A (zh) * 2005-11-04 2006-09-13 北京浦奥得数码技术有限公司 一种椭圆曲线密码系统及实现方法
CN101221491A (zh) * 2008-01-04 2008-07-16 清华大学 椭圆曲线密码系统的点加系统
CN101262345A (zh) * 2008-01-04 2008-09-10 清华大学 椭圆曲线密码系统的倍点系统

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
JP特开2001-265218A 2001.09.28 *
一种改进的椭圆曲线密码实现算法;李湛;《电子科技》;20040715(第7期);第31-33页 *
史焱等.高速双有限域加密协处理器设计.《微电子学与计算机》.2005,第22卷(第5期),第8-16页. *
并行结构的椭圆曲线密码算法实现;张家宏等;《计算机工程与设计》;20071231;第28卷(第23期);第5598-5600页 *
张家宏等.并行结构的椭圆曲线密码算法实现.《计算机工程与设计》.2007,第28卷(第23期),第5598-5600页. *
李湛.一种改进的椭圆曲线密码实现算法.《电子科技》.2004,(第7期),第31-33页. *
高速双有限域加密协处理器设计;史焱等;《微电子学与计算机》;20051231;第22卷(第5期);第8-16页 *

Also Published As

Publication number Publication date
CN101782845A (zh) 2010-07-21

Similar Documents

Publication Publication Date Title
CN101782845B (zh) 一种椭圆曲线密码的高速运算装置和方法
Ansari et al. High-performance architecture of elliptic curve scalar multiplication
Beuchat et al. High-speed software implementation of the optimal ate pairing over Barreto–Naehrig curves
Ors et al. Hardware implementation of an elliptic curve processor over GF (p)
Satoh et al. A scalable dual-field elliptic curve cryptographic processor
Sutter et al. Efficient elliptic curve point multiplication using digit-serial binary field operations
Ernst et al. A reconfigurable system on chip implementation for elliptic curve cryptography over
Erdem et al. A general digit-serial architecture for montgomery modular multiplication
Adikari et al. Hybrid binary-ternary number system for elliptic curve cryptosystems
Yanık et al. Incomplete reduction in modular arithmetic
CN103942031A (zh) 椭圆域曲线运算方法和椭圆域曲线运算器
CN104184578B (zh) 一种基于fpga的椭圆曲线标量乘法加速电路及其算法
Khan et al. High-speed FPGA implementation of full-word Montgomery multiplier for ECC applications
CN113783702A (zh) 一种椭圆曲线数字签名与验签的硬件实现方法和系统
CN113794572A (zh) 一种高性能椭圆曲线数字签名与验签的硬件实现系统和方法
CN100527073C (zh) 高效模乘方法及装置
Moon et al. Fast VLSI arithmetic algorithms for high-security elliptic curve cryptographic applications
Tian et al. Efficient software implementation of the SIKE protocol using a new data representation
Zeghid et al. Speed/area-efficient ECC processor implementation over GF (2 m) on FPGA via novel algorithm-architecture co-design
KR102496446B1 (ko) 모듈러 연산을 위한 워드 병렬 연산 방법
Hasan Double-basis multiplicative inversion over GF (2/sup m/)
US7607165B2 (en) Method and apparatus for multiplication and/or modular reduction processing
Liu et al. A high speed VLSI implementation of 256-bit scalar point multiplier for ECC over GF (p)
Namin et al. A High-Speed Word Level Finite Field Multiplier in ${\BBF} _ {2^ m} $ Using Redundant Representation
Ors et al. Hardware implementation of an elliptic curve processor over GF (p) with montgomery modular multiplier

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant