CN101547089A - 集成电路中素数域椭圆曲线密码算法的实现方法 - Google Patents

集成电路中素数域椭圆曲线密码算法的实现方法 Download PDF

Info

Publication number
CN101547089A
CN101547089A CN200810035343A CN200810035343A CN101547089A CN 101547089 A CN101547089 A CN 101547089A CN 200810035343 A CN200810035343 A CN 200810035343A CN 200810035343 A CN200810035343 A CN 200810035343A CN 101547089 A CN101547089 A CN 101547089A
Authority
CN
China
Prior art keywords
point
elliptic curve
computing
integrated circuit
montgomery
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
Application number
CN200810035343A
Other languages
English (en)
Other versions
CN101547089B (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.)
Shanghai Hangxin Electronic Technology Co ltd
Original Assignee
SHANGHAI AISINO CHIP ELECTRONIC TECHNOLOGY Co 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 SHANGHAI AISINO CHIP ELECTRONIC TECHNOLOGY Co Ltd filed Critical SHANGHAI AISINO CHIP ELECTRONIC TECHNOLOGY Co Ltd
Priority to CN2008100353436A priority Critical patent/CN101547089B/zh
Publication of CN101547089A publication Critical patent/CN101547089A/zh
Application granted granted Critical
Publication of CN101547089B publication Critical patent/CN101547089B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

一种集成电路中素数域椭圆曲线密码算法的实现方法,涉及信息加密技术领域;所要解决的是密码算法的集成电路的技术问题;该方法流程如下:1)将两维仿射点(x,y)坐标映射到三维Jacobin投影坐标(X,Y,Z);2)将投影坐标点转换成Montgomery表示,转换过程如下(X,Y,Z)→(XR,YR,ZR)对这种形式下的点坐标施加包括点乘,倍点和点加的点运算操作,得到的点运算初步结果(XR,YR,ZR);3)将投影坐标结果(XR,YR,ZR),映射回仿射坐标(xR,yR);4)将Montgomery表示的(xR,yR)恢复为普通表示(x,y);在运算中用到的所有大数都存储到SRAM中。本发明具有使用方便、性能优良、易于进行SoC集成的、低成本、高性能,小面积的特点。

Description

集成电路中素数域椭圆曲线密码算法的实现方法
技术领域
本发明涉及信息加密技术,特别是涉及一种集成电路中素数域椭圆曲线密码系统的实现方法的技术。
背景技术
信息安全、特别是网络环境下的信息安全已成为影响国家安全、经济发展、个人利害、社会稳定的重大关键问题。从保护国家和个人的利益出发,各国政府无不重视信息和网络安全。特别是各发达国家均大力加强信息安全的研究和督导。美国等西方发达国家都制定了新数据加密标准,并制定了更加严格的信息安全产品出口政策。同时,各大跨国公司如IBM、HP、Sun等均建有强大的信息安全实验室。从我们国家安全和民族利益出发,网络信息安全问题不研究不行,仅仅满足于分散的、以封堵已发现的安全漏洞为目的的研究也不行,而必须从基础着手,对网络环境下的信息安全开展强力度的研究,为我国的信息安全提供崭新的、整体的理论指导和基础构件的支撑,并为信息安全技术的实现奠定坚实的基础。
超大规模集成技术可以把许多功能容于一个芯片,使设备的体积大大减小,功耗降低显著,效率提高可观,使信息设备越来越适应便携、移动、高速、多媒体的应用需要。较之用软件实现密码技术,系统构建在硅片上还可以带来具有物理保护的好处。所以,信息安全保护也同时出现了构建在硅片上的趋势。“将系统建立在芯片上”是电子技术发展的一种潮流,使用芯片作为加密系统的核心载体是当前解决信息安全问题的最好方案。高性能数据加密及签名芯片技术成果的应用将极大推动我国信息安全技术的发展。
针对身份认证芯片的应用,人们目前主要研究两类公钥制密码算法的硬件实现问题:RSA密码算法和椭圆曲线密码算法(ECC)。国际上与这两类密码算法相关的信息安全芯片的研究与开发一直在进行。
将椭圆曲线用于密码算法,于1985年由Koblitz和Victor Miller分别独立地提出。根据已知的密码分析学知识,椭圆曲线密码(以下简称ECC)系统相比于传统的密码系统有更高的安全性。相比基于RSA和Diffie-Hellman的算法,ECC具有更短的密钥和更有效的算法。这两方面的优势使得ECC比起传统的密码系统来说更实用,且能广泛用于存储量、计算量和通信带宽受限的环境。RSA的安全基础是大数难分解,而ECC的安全基础是基于椭圆曲线的离散对数问题,与RSA(算法的名字以发明者的名字命名:Ron Rivest,AdiShamir和Leonard Adleman)和DSA等系统相比,椭圆曲线密码系统具有更好的优势。
在信息安全领域,实际实现的ECC算法,大多是使用软件的方法或者是调用RSA和模乘协处理器进行加速完成的,即使有能够实现ECC核心运算的硬件芯片也性能不佳,面积较大,成本较高不利于大量应用。国内市场上还是很少有成熟的ECC集成电路芯片产品。找到使用方便、性能优良、易于进行SoC集成的ECC核设计方法,对于满足国家信息安全的紧迫需求具有很重要的意义。
发明内容
针对上述现有技术中存在的缺陷,本发明所要解决的技术问题是提供一种使用方便、性能优良、易于进行SoC集成的、低成本、高性能,小面积的集成电路中素数域椭圆曲线密码算法的实现方法。
为了解决上述技术问题,本发明所提供的一种集成电路中素数域椭圆曲线密码算法的实现方法,其特征在于,方法流程如下:
1)将两维仿射点(x,y)坐标映射到三维Jacobin投影坐标(X,Y,Z),映射过程如下(x,y)→(x,y,1)=(X,Y,Z);
2)将投影坐标点转换成Montgomery(以发明者的名字命名的算法)表示,转换过程如下(X,Y,Z)→(XR,YR,ZR)对这种形式下(投影坐标,Montgomery表示)的点坐标施加包括点乘,倍点和点加的点运算操作,得到的点运算初步结果(XR,YR,ZR);
3)将投影坐标结果(XR,YR,ZR),映射回仿射坐标(xR,yR);
4)将Montgomery表示的(xR,yR)恢复为普通表示(x,y);
在所述步骤1-4中,运算中用到的所有大数,包括椭圆曲线参数,运算的点坐标,密钥等全部都存储到以SRAM为介质的Memory中。
进一步的,所述Montgomery表示下的运算包括Montgomery模乘算法和Montgomery模平方算法。
进一步的,在所述步骤2中,点乘kQ运算中,k采用NAF编码。
进一步的,所述点乘运算实现过程中调用的倍点和点加的数据交互方法,即使用如下点乘算法,点乘过程中采用NAF编码不断调用倍点和点加算法。采用表1所述的点加和倍点数据交互方法:
1)NAF编码h=3k;
2)读取第i个NAF编码;
3)计算S=2S,此时Q不可读写;
4)如果(hi=1&&k=0)或(hi=0&&k=1);则转至5);则转至2);
5)计算Q=S±Q,此时S可读不可写,则转至2)。
这可以使整个点乘和单个点加或者倍点运算过程中数据交互开销降到最低,减少运算的时间。
进一步的,运算所述Montgomery模乘算法的Montgomery模乘器包括用于完成XY操作的第一级32bit乘法器、用于完成T+XY+c运算的第二级加法器和加法器前的42压缩器组成的流水线硬件通路。
进一步的,所述相关操作数分别存放到不同的SRAM中。
进一步的,所述椭圆曲线密码运算使用的SRAM中仅有一个为双口SRAM的存储单元。
进一步的,所述Memory(SRAM)的时钟(工作)频率采用与运算模块(单元)频率相同、相位相差180度的反相时钟频率驱动。
利用本发明提供的集成电路中素数域椭圆曲线密码算法的实现方法,由于集成电路的运算中把大数全部放到SRAM中,既减小面积开销,又可进行大素数域上椭圆曲线的运算;由于采用NAF对k进行编码随后再进行扫描,这样平均可以节省1/6次点加运算;对NIST推荐的椭圆曲线,由于采用优化的Montgomery模乘方法,每次模乘可减少约10%运算开销;由于采用双口SRAM,读写操作就可以在一个时钟周期内同时完成,不需要等待,使硬件利用率达到100%;由于所述Memory(SRAM)采用运算模块(单元)的反相时钟频率驱动,使得存取数据速度提高100%;由于解决了操作数相关性的原理,使得SRAM的使用效率大大提高,既不影响性能,又降低了芯片的面积,可以为ECC的应用提供低成本高性能的解决方案。
本发明提供的集成电路中素数域椭圆曲线密码算法的实现方法,其特点如下:
·支持不超过544bit的任意素数域椭圆曲线的点加、点减、倍点和点乘运算;
·兼容IEEE1363国际标准;
·在100MHz频率下,256bit ECC点乘速度可达120次/秒;
·无穷远点和模数偶错误检测功能;
·坐标点是否在椭圆曲线上判断功能;
·可以进行不超过2048bit的RSA运算,每秒可完成1024bitRSA签名34次以上;
·ECC和RSA密钥保护功能;
·可以进行模乘、模平方、模加、模减和模逆等有限域运算;
附图说明
图1为本发明实施例的点乘过程框图;
图2为本发明实施例SRAM标准6T单元图;
图3A为现有技术中典型1bit触发器单元版图;
图3B为本发明实施例SRAM标准1bit触发器单元版图;
图4为本发明实施例模乘器数据通路结构简图;
图5为本发明实施例采用反向时钟读操作波形图;
图6为本发明实施例采用反向时钟写操作波形图;
图7为现有技术中采用同相时钟读操作波形图;
图8为现有技术中采用同相时钟写操作波形图。
具体实施方式
以下结合附图说明对本发明的实施例作进一步详细描述,但本实施例并不用于限制本发明,凡是采用本发明的相似结构、方法及其相似变化,均应列入本发明的保护范围。
本发明ECC实现是基于素数有限域公共密钥算法的各种应用而设计的ECC专用协处理器(IP核),可以最高支持544bit任意椭圆曲线的点加、点减、倍点和点乘运算,椭圆曲线方程:
y2=x3+ax+b    (4a3+27b2≠0)a,b∈GF(p)
除了支持椭圆曲线的点运算,IP还支持不超过2048bit的RSA、模乘、模加减、模逆等有限域运算。
本发明能够获得优良性能特征的原因在于采用改进的适合硬件实现的算法
本发明的集成电路中素数域椭圆曲线密码算法的实现方法,算法流程如下:
1)将两维仿射点(x,y)坐标映射到三维Jacobin投影坐标(X,Y,Z),映射过程如下(x,y)→(x,y,1)=(X,Y,Z);
2)将投影坐标点转换成Montgomery表示,转换过程如下(X,Y,Z)→(XR,YR,ZR)对这种形式下(投影坐标,Montgomery表示)的点坐标施加点运算操作,得到的点运算初步结果(XR,YR,ZR);
3)将投影坐标结果(XR,YR,ZR),映射回仿射坐标(xR,yR);
4)将Montgomery表示的(xR,yR)恢复为普通表示(x,y);
在所述步骤1-4中,运算中用到的所有大数,包括椭圆曲线参数,运算的点坐标,密钥等全部都存储到以SRAM为介质的Memory中。
在步骤2中,点乘kQ运算中,k采用NAF编码;
采用新型的点乘点加和倍点调度策略;
点乘就是点的标量乘法运算,一个整数k乘以坐标点P,得到另一个坐标点Q。实际点乘分解成点加减和倍点的不断调用来实现的,这个过程中要把k扫描一遍,可以采用二进制编码。本发明中采用NAF对k进行编码随后再进行扫描,这样平均可以节省1/6次点加运算。整个过程如下:
点乘kQ运算是最为核心的运算,k采用NAF编码流程如下所示:
算法ECC点乘(ECPM)
Input:int eger:k,point:Q
Output:point:kQ
计算3k的二进制表示hihi-1…h1h0,同时根据k的二进制表示kiki-1…k1k0
  S=Q;
for(i=l-1;i>0;i--){
     S=2S;
     if(hi==1&ki==0)S=S+Q;
if(hi==0&ki==1)S=S-Q;}
return(S);
点乘过程需要存储S(X0,Y0,Z0)、Q(X1,Y1,Z1)点坐标、椭圆曲线参数(a,b,N)和一些中间值,这都是很大的数。如使用寄存器组存储,虽然使用方便,但其的面积是不可忍受的。为了把IP的面积控制在较小的范围,又可进行大素数域上椭圆曲线的运算,IP把大数全部放到SRAM中,减小面积开销。但使用SRAM代价是在一个周期只能读取或者写入一个字。这就需要一种新的点运算的调配策略,将数据交互的开销降到最低,根据上述算法,如图1所示,点乘过程:
1)NAF编码h=3k;
2)读取第i个NAF编码;
3)计算S=2S,此时Q不可读写;
4)如果(hi=1&& k=0)或(hi=0&& k=1);则转至5);则转至2);
5)计算Q=S±Q,此时S可读不可写,则转至2)。
因为如果在更新Q的过程中使用了S的存储空间,那么就不能再下一步计算中就无法得到正确的S值,反之亦然。要克服这些限制又要减少读写Memory的开销,还要提高Memory的使用率,就要专门设计一个适合点乘运算的Memory管理方案。
为了实现点乘,运算过程中需要存储数据交互数据,本发明提出了一种新的点乘倍点和点加调度策略,减少了数据交互的次数,提高了效率。其具体如下:
基于这种原则,设Q(X1,Y1,Z1),S(X0,Y0,Z0),那么倍点和点加的调配策略分别是:
表1 倍点和点加的策略
 
倍点步骤 结果存入 点加步骤 结果存入
A T1 Z02 Buffer
Z02 T2 U0=X1*Z02(X1*Buffer) X1
 
Z04 T2 Z03(Z0*Buffer) Buffer
a*Z04 T2 S0=Y1*Z02(Y0*Buffer) Y1
X02 T1 Z12 Buffer
3*X02 T1 U1=X0*Z12(X0*Buffer) T1
M=T1+T2 T1 Z13(Buffer*Z1) Buffer
Y0*Z0 Z0 S1=Y0*Z12(Y0*Buffer) T2
Z0=2*Y0*Z0 Z0 W=U0-U1=X1-T1 T1
Y02 Y0 R=S0-S1=Y1-T2 T2
X0*Y02 T2 T=U0+U1=2*X1-T1 X1
S=4*X0*Y02 T2 M=S0+S1=2*Y1-T2 Y1
M2 X0 Z1Z0 Z1
X0=M2-2S X0 Z1=Z1*T1 Z1
Y04 Y0 W2=T1*T1 Buffer
T=8*Y04 Y0 W3=T1*Buffer T1
S-X0 T2 TW2=X1*Buffer Buffer
M*(S-X0) T2 R2=T2*T2 X1
Y=M*(S-X0)-T Y0 X1=X1-Buffer X1
V=Buffer-2*X1 Buffer
VR=T2*Buffer T2
MW3=Y1*T1 T1
T2-T1 Y1
Y1=Y1/2 Y1
倍点需要T1、T2两个额外存储器,点加需要T1、T2和Buffer三个存储器。每次倍点后结果存入S,点加减后结果存入Q,无需另行数据交换。
采用优化的Montgomery模乘算法和模平方算法;
Montgomery模乘的基本形式如下(这里的N相当于前面的有限域特征值p):
选择参数N′,R-1,满足0<R-1<N,0<N′<R,使得R*R-1-N*N′=1。
Mont(A,B)=ABR-1mod N
Step1:T AB
Step2:T=[T+(TN′mod R)N]/R其中R=2r,r=n+2,n是N的bit数;
本发明中采用的优化的CIOS Montgomery算法:
优化的Montgomery模乘算法CIOS
Input:A,B,N   Output:ABR-1mod N
 
       原始的CIOS算法for(i=0;i<k;i++){c=0;for(j=0;j<k;j++){(c,T[j])=T[j]+A[j]*B[i]+c;}(T[k+1],T[k])=T[k]+c;c=0;m=T[0]*N[0]’mod W;(c,s)=T[0]+m*N[0];for(j=1;j<k;j++){(c,T[j-1])=T[j]+m*N[j]+c;}(c,T[k-1])=T[k]+c;T[k]=T[k+1]+c;}                                    优化的CIOS算法for(i=0;i<Rk;i++){c=0;it(i<Bk){for(j=0;j<Ak;j++){(c,T[j])=T[j]+A[j]*B[i]+c;}(t,T[j])=T[j]+c;}c=0;m=T[0]*N[0]’mod W;(c,s)=T[0]+m*N[0];for(j=1;j<Nk;j++){(c,T[j-1])=T[j]+m*N[j]+c;}(c,T[j-1])=T[j]+c;if(i<Bk)T[j]=t+c;elseT[j]=c;}                            
表 优化的Montgomery模乘算法
CIOS算法内外循环都是k次,k表示R的字数。而实际A、B和N的字数(Ak,Bk,Nk)都可能比k小,这就会有冗余计算,经研究发现可以让循环只做必需的次数,就可消除这种冗余计算。改进在A、B、N的字数小于R的字数时非常明显。对NIST推荐的椭圆曲线,应用优化的方法每次模乘可减少约10%运算开销。
改进的CIOS Montgomery模平方算法
模平方运算就是输入的两个乘数相等的情况,是一种特殊的模乘。下面是具体的算法:
Figure A200810035343D00131
表 优化的Montgomery模平方算法
改进是将AB相乘的循环改称如下形式:
for(j=i;j<Ak;j++)
{            if(i==j)
                  (c,T[j])=T[j]+A[j]*A[i]+c;
            else
                  (c,T[j])=T[j]+2*A[j]*A[i]+c;}
根据两个操作数相等的特点将运算开销再减少25%左右。
流水线设计的Montgomery模乘器;
本发明的特征还在于依据改进的算法量身定做的Montgomery模乘器采用2级流水线设计,硬件利用率100%。IP的关键路径得到优化,工作频率得以提高。
本发明采用的Montgomery算法最需要有效实现(c,T)=T+XY+c,(c,T)=T+2XX+c两种运算,为此设计的Montgomery模乘器的数据通路结构如图4所示:
模乘器采用了两级流水线,第一级32bit乘法器完成XY操作,第二级加法器完成T+XY+c运算(乘积的高32位应计入T的下一字,所以要延迟一个周期送入加法器),加法器前加入42压缩器把四个数转换成两个数相加,优化了面积和关键路径。
IP的运行频率主要取决于所采用的工艺和内部关键路径的延迟,基于SMIC0.18um工艺,经DC综合该运算单元可以运行在120MHz。
改进的模乘器硬件电路和SRAM的特性还在于,设计中采用了双口SRAM,由于T要在同一周期内进行读和写两种操作,设计中采用双口SRAM,读写操作就可以在一个时钟周期内同时完成,不需要等待。硬件利用率达到100%。应用NIST256bit椭圆曲线参数进行模乘和模平方分别仅需要183和145周期。
本发明能够具有较小面积的特征的原因在于成功解决了存储相关性问题,采用SRAM作大数存储模块大大减小了芯片面积。
根据操作数相关性设计其在SRAM中的位置策略;
本发明的特征还在于使用SRAM的方法,为了保证运算的性能,放置了4块单口SRAM和一块双口SRAM。
由于ECC点运算中涉及的操作数(坐标点,临时量,曲线参数,有限域特征)很多,而有时候需要把同时存取不同的操作数,这里把这种情况下的操作数叫做相关操作数,如果相关的操作数放置到一块SRAM中的话就会产生问题,因为SRAM只有一个读写口,要取出两个字的数据必须等待,那就影响到IP的速度。这就要求有相关性的不能放到相同的SRAM中,没有相关性的可以放到一块SRAM中,这就给操作数的放置提出了难题,以下称之为操作数相关性原则。
本发明经过研究放置4块SRAM采用新型的点乘调配策略可以在不违反操作数相关性原则的基础上完成SRAM的放置策略。放置的策略如下所示(参见第2节):
对于倍点运算:
 
SRAM1 SRAM2 SRAM3 SRAM4
b
Z0 T0 a
X0 Y0 N T2
对于点加运算:
 
SRAM1 SRAM2 SRAM3 SRAM4
X1 b Z1 Buffer
Z0 T1 a Y1
X0 Y0 N T2
与此同时RSA运算也可以以用这种Memory的分配方式进行下面其具体分配方式:
 
SRAM1 SRAM2 SRAM3 SRAM4
 
A E N R
其中的A,E,N,R意义可以从RSA的扫描算法中看出。
Input:A,E,N,X=R2 mod N,E=eq,eq-1,eq-2,…,e0,eq=1
Output:AEmod N
    A=Mont(A,X);
    R=A;
    for j=q-1 to 0{
           A=MontSqu(A);
           if(ej==1)
                A=MontMul(A,R);
    }
A=Mont(A,1);
这样设计的Memory放置策略可以同时适应两种算法,克服了使用SRAM造成的不便,使得IP的运算速度大幅提高。
本发明采用SRAM面积大大减小面积
一般的数字电路设计中,往往把信息存储到寄存器中,这样做可以使得设计简单,存储方便。但是对于当前主流的CMOS工艺要实现1bit的寄存器一般需要几十个MOS管的开销。而大素数域的ECC运算需要存储和处理的数据长度非常大,如果使用寄存器进行存储,那么最终实现的面积将是不可忍受的。IC的成本很大程度上取决于单个芯片的面积,如果ECC采用寄存器进行大数存储,虽然简化了设计的工作,但成本将是很大的问题。
本发明中运算中用到的所有大数,包括椭圆曲线参数,运算的点坐标,密钥等全部都存储到以SRAM为介质的Memory中,极大地减少IP的面积,这是因为:
目前一般通过D-Flip-Flop实现寄存器。实现一个DFF需要30个管子左右;而一般的SRAM单元只需要6个管子,在相同工艺下自然前者比后者的占用面积大,而且各工艺厂商专门对于SRAM进行了优化,使得SRAM变得密度更高,面积更小。
为了能够把ECC IP的面积限定在一个较小的范围内,又希望ECC IP能够支持很大素数的运算功能。本发明采用了SRAM进行大数存储,极大的减小了面积开销。在现今的CMOS工艺中,SRAM可以达到非常高的存储密度。典型的1bit SRAM单元如图2所示;版图的对比如图3所示,其中图3A为现有技术中典型1bit触发器单元版图,图3B为本发明实施例SRAM标准1bit触发器单元版图。
本发明为了保证运算单元读写SRAM的速度,采用了SRAM和运算单元采用反相时钟设计的技术。
Memory(SRAM)和运算模块之间采用相同频率,相位相差180度的反相时钟驱动,使得存取数据速度提高100%;
这个可以从如下的波形图中看出来,在运算模块时钟的第一个上升沿给出读信号,等待半个时钟周期Memory模块的上升沿,SRAM采到地址和读写信号后会把数据放到总线上,等到运算模块时钟的第二个上升沿的时候就可以拿到数据了。
应用本发明的技术的读写波形图如图5、图6所示:现有技术的读写波形图如图7、图8所示。
如图7、图8所示,如果Memory和运算单元都采用统一的时钟,由于Setup Time的原因运算模块要去一个数据,第一个时钟周期给出读写信号后要等待2个周期才能得到有效数据。
波形图说明:
从图5、图6所示的波形图中可以清楚看出采用反相时钟可以把Memory的读写的速度提高100%,这样就可以克服使用SRAM带来的速度影响。

Claims (7)

1、一种集成电路中素数域椭圆曲线密码算法的实现方法,其特征在于,方法流程如下:
1)将两维仿射点(x,y)坐标映射到三维Jacobin投影坐标(X,Y,Z),映射过程如下(x,y)→(x,y,1)=(X,Y,Z);
2)将投影坐标点转换成Montgomery表示,转换过程如下(X,Y,Z)→(XR,YR,ZR)对这种形式下的点坐标施加包括点乘,倍点和点加的点运算操作,得到的点运算初步结果(XR,YR,ZR);
3)将投影坐标结果(XR,YR,ZR),映射回仿射坐标(xR,yR);
4)将Montgomery表示的(xR,yR)恢复为普通表示(x,y);
在所述步骤1-4中,运算中用到的所有大数,包括椭圆曲线参数,运算的点坐标,密钥等全部都存储到以SRAM为介质的Memory中。
2、根据权利要求1所述的集成电路中素数域椭圆曲线密码算法的实现方法,其特征在于,所述Montgomery表示下的运算包括Montgomery模乘算法和Montgomery模平方算法。
3、根据权利要求1所述的集成电路中素数域椭圆曲线密码算法的实现方法,其特征在于,在所述步骤2中,点乘kQ运算中,k采用NAF编码。
4、根据权利要求3所述的集成电路中素数域椭圆曲线密码算法的实现方法,其特征在于使用如下点乘算法,点乘过程中采用NAF编码不断调用倍点和点加算法,采用所述的点加和倍点数据交互方法:
1)NAF编码h=3k;
2)读取第i个NAF编码;
3)计算S=2S,此时Q不可读写;
4)如果(hi=1&&k=0)或(hi=0&&k=1);则转至5);则转至2);
5)计算Q=S±Q,此时S可读不可写,则转至2)。
5、根据权利要求2所述的集成电路中素数域椭圆曲线密码算法的实现方法,其特征在于,运算所述Montgomery模乘算法的Montgomery模乘器包括用于完成XY操作的第一级32bit乘法器、用于完成T+XY+c运算的第二级加法器和加法器前的42压缩器组成的流水线硬件通路。
6、根据权利要求1所述的集成电路中素数域椭圆曲线密码算法的实现方法,其特征在于,所述椭圆曲线密码算法运算使用的SRAM中仅有一个为双口SRAM的存储单元。
7、根据权利要求1所述的集成电路中素数域椭圆曲线密码算法的实现方法,其特征在于,所述SRAM的时钟频率采用与运算模块频率相同、相位相差180度的反相时钟频率驱动。
CN2008100353436A 2008-03-28 2008-03-28 集成电路中素数域椭圆曲线密码算法的实现方法 Active CN101547089B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008100353436A CN101547089B (zh) 2008-03-28 2008-03-28 集成电路中素数域椭圆曲线密码算法的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008100353436A CN101547089B (zh) 2008-03-28 2008-03-28 集成电路中素数域椭圆曲线密码算法的实现方法

Publications (2)

Publication Number Publication Date
CN101547089A true CN101547089A (zh) 2009-09-30
CN101547089B CN101547089B (zh) 2012-07-25

Family

ID=41194005

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008100353436A Active CN101547089B (zh) 2008-03-28 2008-03-28 集成电路中素数域椭圆曲线密码算法的实现方法

Country Status (1)

Country Link
CN (1) CN101547089B (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102104482A (zh) * 2009-12-21 2011-06-22 上海华虹集成电路有限责任公司 椭圆曲线密码体制中无穷远点在仿射坐标系下的表示方法
CN102387015A (zh) * 2011-09-14 2012-03-21 中国矿业大学 一种提高椭圆曲线标量乘法计算效率的方法
CN102394747A (zh) * 2011-11-23 2012-03-28 上海爱信诺航芯电子科技有限公司 一种快速嵌入明文到椭圆曲线上一点的方法
CN102625298A (zh) * 2012-03-29 2012-08-01 中山大学 一种基于ecc算法的安全ip核的实现方法及其装置
CN102713921A (zh) * 2010-01-13 2012-10-03 微软公司 使用聚集的求逆来确定曲线上的配对
CN102761412A (zh) * 2011-04-27 2012-10-31 航天信息股份有限公司 p元域SM2椭圆曲线公钥加密、解密与加解密混合系统
CN103942031A (zh) * 2014-04-28 2014-07-23 山东华芯半导体有限公司 椭圆域曲线运算方法和椭圆域曲线运算器
CN105790939A (zh) * 2016-03-01 2016-07-20 全球能源互联网研究院 一种vlsi实现加速器的素数域椭圆曲线密码系统
CN105897418A (zh) * 2015-02-13 2016-08-24 厦门密安信息技术有限责任公司 基于多核arm/fpga的ecc密码算法的ip
CN106817214A (zh) * 2015-11-30 2017-06-09 上海华虹集成电路有限责任公司 标量的规则naf序列的生成方法
CN109117677A (zh) * 2018-09-21 2019-01-01 阿里巴巴集团控股有限公司 一种用于椭圆曲线多倍点运算的电路
CN109144472A (zh) * 2018-07-17 2019-01-04 东南大学 一种二元扩域椭圆曲线的标量乘法及其实现电路
CN111596887A (zh) * 2020-05-22 2020-08-28 天津国科医工科技发展有限公司 一种基于可重构计算结构的内积计算方法
CN112099760A (zh) * 2020-08-24 2020-12-18 清华大学 国密sm2算法中点加与倍点的单乘法器无缝调度方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100536390C (zh) * 2005-05-18 2009-09-02 上海迪申电子科技有限责任公司 一种椭圆曲线密码协处理器
CN100414492C (zh) * 2005-11-04 2008-08-27 北京浦奥得数码技术有限公司 一种椭圆曲线密码系统及实现方法
US7602655B2 (en) * 2006-01-12 2009-10-13 Mediatek Inc. Embedded system
CN100428140C (zh) * 2007-01-05 2008-10-22 东南大学 椭圆曲线密码体制协处理器的实现方法

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102104482A (zh) * 2009-12-21 2011-06-22 上海华虹集成电路有限责任公司 椭圆曲线密码体制中无穷远点在仿射坐标系下的表示方法
CN102713921A (zh) * 2010-01-13 2012-10-03 微软公司 使用聚集的求逆来确定曲线上的配对
CN102761412A (zh) * 2011-04-27 2012-10-31 航天信息股份有限公司 p元域SM2椭圆曲线公钥加密、解密与加解密混合系统
CN102387015A (zh) * 2011-09-14 2012-03-21 中国矿业大学 一种提高椭圆曲线标量乘法计算效率的方法
CN102387015B (zh) * 2011-09-14 2014-08-06 中国矿业大学 一种应用于数字签名验证的提高椭圆曲线标量乘法计算效率的方法
CN102394747B (zh) * 2011-11-23 2015-01-14 上海爱信诺航芯电子科技有限公司 一种快速嵌入明文到椭圆曲线上一点的方法
CN102394747A (zh) * 2011-11-23 2012-03-28 上海爱信诺航芯电子科技有限公司 一种快速嵌入明文到椭圆曲线上一点的方法
CN102625298A (zh) * 2012-03-29 2012-08-01 中山大学 一种基于ecc算法的安全ip核的实现方法及其装置
CN103942031A (zh) * 2014-04-28 2014-07-23 山东华芯半导体有限公司 椭圆域曲线运算方法和椭圆域曲线运算器
WO2015164996A1 (zh) * 2014-04-28 2015-11-05 山东华芯半导体有限公司 椭圆域曲线运算方法和椭圆域曲线运算器
CN103942031B (zh) * 2014-04-28 2017-07-04 山东华芯半导体有限公司 椭圆域曲线运算方法
CN105897418A (zh) * 2015-02-13 2016-08-24 厦门密安信息技术有限责任公司 基于多核arm/fpga的ecc密码算法的ip
CN106817214B (zh) * 2015-11-30 2019-11-12 上海华虹集成电路有限责任公司 标量的规则naf序列的生成方法
CN106817214A (zh) * 2015-11-30 2017-06-09 上海华虹集成电路有限责任公司 标量的规则naf序列的生成方法
CN105790939A (zh) * 2016-03-01 2016-07-20 全球能源互联网研究院 一种vlsi实现加速器的素数域椭圆曲线密码系统
CN109144472A (zh) * 2018-07-17 2019-01-04 东南大学 一种二元扩域椭圆曲线的标量乘法及其实现电路
CN109144472B (zh) * 2018-07-17 2023-02-28 东南大学 一种二元扩域椭圆曲线的标量乘法及其实现电路
CN109117677A (zh) * 2018-09-21 2019-01-01 阿里巴巴集团控股有限公司 一种用于椭圆曲线多倍点运算的电路
CN111596887A (zh) * 2020-05-22 2020-08-28 天津国科医工科技发展有限公司 一种基于可重构计算结构的内积计算方法
CN111596887B (zh) * 2020-05-22 2023-07-21 威高国科质谱医疗科技(天津)有限公司 一种基于可重构计算结构的内积计算方法
CN112099760A (zh) * 2020-08-24 2020-12-18 清华大学 国密sm2算法中点加与倍点的单乘法器无缝调度方法
CN112099760B (zh) * 2020-08-24 2022-11-11 清华大学 国密sm2算法中点加与倍点的单乘法器无缝调度方法

Also Published As

Publication number Publication date
CN101547089B (zh) 2012-07-25

Similar Documents

Publication Publication Date Title
CN101547089B (zh) 集成电路中素数域椭圆曲线密码算法的实现方法
CN106951211B (zh) 一种可重构定浮点通用乘法器
CN103970720B (zh) 基于大规模粗粒度嵌入式可重构系统及其处理方法
Kocabaş et al. Implementation of binary Edwards curves for very-constrained devices
CN103793199B (zh) 一种支持双域的快速rsa密码协处理器
CN101834723A (zh) 一种rsa算法及其ip核
Kudithi An efficient hardware implementation of the elliptic curve cryptographic processor over prime field
CN103761068A (zh) 优化的蒙哥马利模乘方法、模平方方法和模乘硬件
CN105790939A (zh) 一种vlsi实现加速器的素数域椭圆曲线密码系统
CN104536913A (zh) 一种基于多块ram的大数运算电路及数据转移方法
JP4180024B2 (ja) 乗算剰余演算器及び情報処理装置
Liu et al. Efficient digit-serial KA-based multiplier over binary extension fields using block recombination approach
Zhengbing et al. An efficient architecture of 1024-bits cryptoprocessor for RSA cryptosystem based on modified Montgomery's algorithm
Lee et al. Area-Delay Efficient Digit-Serial Multiplier Based on $ k $-Partitioning Scheme Combined With TMVP Block Recombination Approach
CN116488788A (zh) 全同态加密算法的硬件加速器、同态加密方法及电子设备
Luo et al. A novel two-stage modular multiplier based on racetrack memory for asymmetric cryptography
CN109460535A (zh) 一种基于云的有限域矩阵求逆装置及求逆方法
Zhao et al. Exploring the speed limit of SM2
Wang et al. TCPM: A reconfigurable and efficient Toom-Cook-based polynomial multiplier over rings using a novel compressed postprocessing algorithm
Wen et al. A Length-Scalable Modular Multiplier Implemented with Multi-bit Scanning
CN114510217A (zh) 处理数据的方法、装置和设备
Fournaris et al. A design strategy for digit serial multiplier based binary Edwards curve scalar multiplier architectures
Shiyang et al. A Time-Area-Efficient and Compact ECSM Processor over GF (p)
Sung et al. A Public-key Cryptography Processor supporting P-224 ECC and 2048-bit RSA
Ahmadi et al. Flexible Prime‐Field Genus 2 Hyperelliptic Curve Cryptography Processor with Low Power Consumption and Uniform Power Draw

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
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Method for realizing elliptic curve cryptosystem algorithm over prime field in integrated circuit

Effective date of registration: 20131223

Granted publication date: 20120725

Pledgee: Agricultural Bank of China Limited by Share Ltd. Shanghai Minhang branch

Pledgor: SHANGHAI AISINOCHIP ELECTRONIC TECHNOLOGY Co.,Ltd.

Registration number: 2013310000089

PLDC Enforcement, change and cancellation of contracts on pledge of patent right or utility model
PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20201215

Granted publication date: 20120725

Pledgee: Agricultural Bank of China Limited by Share Ltd. Shanghai Minhang branch

Pledgor: SHANGHAI AISINOCHIP ELECTRONIC TECHNOLOGY Co.,Ltd.

Registration number: 2013310000089

CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 200233 Room 704, Building 2, No. 2570 Hechuan Road, Minhang District, Shanghai

Patentee after: Shanghai Hangxin Electronic Technology Co.,Ltd.

Address before: 200241, building 5, building 555, No. 1, Dongchuan Road, Shanghai, Minhang District

Patentee before: SHANGHAI AISINOCHIP ELECTRONIC TECHNOLOGY Co.,Ltd.