专利名称:一种高性能超标量椭圆曲线密码处理器芯片的制作方法
技术领域:
本发明涉及信息安全、加密解密技术、芯片技术领域,特别是高性能椭圆曲线密码处理器芯片。
背景技术:
作为当今世界上应用最广泛的,同时也是第一个真正意义上的公钥密码体制,RSA是基于大数分解的困难问题,具有数学原理简单(主要是依赖于费马小定理,以及P不等于NP的假设),实现相对容易的优点,但是其单位安全强度较低,加密解密的运算量过大。椭圆曲线公钥密码体制作为近年来学术界深入研究的问题,也越来越被工业界所认识和推崇,具有单位安全强度高(160位的椭圆曲线密钥与1024位的RSA密码具有相同的安全性),运算量相对较少,加密解密速度快的优点,因此可以预见,在信息安全领域,椭圆曲线具有非常广阔的市场应用前景。 但是,椭圆曲线密码体制的应用目前面临如下几个方面的问题,首先是性能大部分椭圆曲线密码体制的实现都是采用软件或者单片机,这两种方法性能过低,无法满足高性能加密解密的要求,而且尚未出现广泛应用的以专用集成电路方式实现的椭圆曲线密码处理器芯片;其次,在椭圆曲线密码体制的实现中,有限域乘法部件的低性能一直是一个瓶颈,有限域乘法运算的性能过低严重制约了椭圆曲线密码芯片的广泛应用;最后,专用的椭圆曲线密码的指令集尚未出现,通用处理器和专用处理器都不支持有限域算术运算,急需一种支持有限域算术运算的指令集标准,这也大大推动椭圆曲线公钥密码体制的广泛应用。
发明内容
本发明的目的是设计一种高性能超标量椭圆曲线密码处理器芯片,实现高速的有限域乘法运算,和高性能椭圆曲线加密解密算法,以及提出一种芯片所支持的包含有限域运算的椭圆曲线密码指令集,很好的解决了上述制约椭圆曲线公钥密码体制广泛应用所面临的关出问题。本发明的整体技术方案如图I所示本发明设计了一种高性能超标量椭圆曲线密码处理器芯片,包括一个指令R0M,一个数据RAM,多个普通算术部件(包括普通算术乘法器和加法器),多个有限域算术部件(包括有限域高速乘法器和有限域加法器),一个保留站(Reservation Station),寄存器状态寄存器(Register Status),和一个 ROB (ReorderBuffer),以及一个8级指令流水线,实现了寄存器重命名和指令多发射,指令动态调度,指令乱序执行和顺序生效,充分利用指令间并行性,实现了单时钟周期的多指令执行,成倍提高了指令吞吐率和运算性能。本发明所述的处理器中包含的高性能乘法器,采用有限域乘法所包含的大量有限域加法运算并行执行的方法,将有限域乘法原本需要的2n个单位时间延迟降低为log(n)个单位时间延迟,大大提高了有限域乘法的运算速度。
本发明所述的处理器支持的一种包含有限域算术运算的椭圆曲线密码指令集,用这种新的密码指令集可以很方便地编程实现椭圆曲线的密码体制中的加密解密算法,以及RSA密码算法。这种指令集不但很好的满足了椭圆曲线密码体制的需要,也为将来的密码指令集的标准化提供很好的支持。下面分别介绍本发明各技术部分
I、超标量密码处理器微体系结构
本发明所设计的密码处理器为超标量多发射处理器,其包含的一个8级指令流水线,两个普通加法器,两个普通乘法,两个有限域乘法部件,两个有限域加减运算,和两个逻辑运算部件,以及指令ROM和数据RAM,和包含32个寄存器的寄存器文件(基本兼容MIPSR4000的寄存器和寻址方式)。八级流水线分别包含取指令(IF, Instruction Fetch),指令译码(ID, Instruction Decoding),指令发身寸(Issue),取操作数(R0, Read Operands),执行指令(EX, Execution),执行结果生效(Commit),存储器读写(MEM,Memory Access),和 寄存器写回(WB, Write Back)。处理器实现了指令双发射技术,forwarding技术(包含指令猜测预取),乱序执行,寄存器重命名,以及顺序生效技术。所有涉及都在寄存器传输级完成。这样,处理器在每个时钟周期可以完成多条指令的执行。在并未提高主频的情况下,功耗没有大幅提升的情况下,处理器的指令吞吐率增加数倍,具备现代处理器的各项技术特征和优势。2、高速有限域算术乘法运算部件
有限域乘法运算部件的速度往往是整个处理器中的性能瓶颈,普通取模乘法需要先对两个操作数做普通乘法,然后再做取模操作。这需要2*n次累加操作和η次移位(其中η是操作数的位宽),因此关键路径需要2η个单位时间延迟。本发明包含的高速有限域运算部件首先对η次取模累加操作分解成相邻操作数做移位带模相加并行执行,得到η/2个和数,接着再对这η/2个操作数相邻两个做带模移位相加操作(这时移两位),如此继续,直到得到最终结果。这样,该高速算术乘法器将单位时间延迟由2*η降低到了 log(n)。通过有限域取逆运算,该乘法器同样可做高速带模除法运算。3、椭圆曲线密码处理器指令集体系结构
本发明的椭圆曲线指令集采用精简指令系统RISC模式,所有访问存储器的指令单独出来,而算术逻辑运算指令和分支指令全部操作数都为寄存器或者立即数。体系结构包括32个32位寄存器RO,…,R31,其中RO永远为0,R31存储子程序返回地址等等,此外指令编码统一位宽为32位。椭圆曲线密码处理器指令集包含除了浮点运算外所有RISC常用指令,包括算术指令21条,分支跳转指令14条,NOP指令I条,数据访存指令12条,逻辑运算指令8条,寄存器MOV指令8条,基本兼容MIPS R2000的处理器指令集,此外,指令集还包括有限域算术运算指令26条,分别是
设置素数特征有限域特征指令;(特征不可设置为2)
8位,16位和32位特征非2有限域加法;
8位,16位和32位特征非2有限域减法;
8位,16位和32位特征非2有限域乘法;
8位,16位和32位特征非2有限域减法;以及模2的12条算术运算指令和一条有限域取逆指令。这样处理器得以对有限域上算术运算支持。4、椭圆曲线和RSA密码固件程序
本发明还利用第三部分所叙述的椭圆曲线指令集开发了若干椭圆曲线操作固件程序,主要包含椭圆曲线上的倍点操作(Point Doubling)和点加操作(Point Addition)。倍点操作是在椭圆曲线上的一个点与同一个点相加,得出一个新的点。点加操作是将椭圆曲线上的两个点相加,得到一个新的点。所有点都采用雅可比坐标系,用三个坐标分量来表示二位坐标系的点(包括无穷远点)。同时本发明RSA加密解密算法的实现。本发明的优势在于,首先,本发明所述的密码处理器芯片使用超标量技术大幅提高了指令吞吐率,使得能够单指令周期完成多条指令的执行,换言之,在没有提高处理器主频的情况下,处理器性能得到成倍提升;其次,本发明所述的密码处理器所包含的高速有限 域乘法部件将椭圆曲线运算中最慢的有限域乘法的运算时间从个单位时间延迟降低为个单位时间延迟(其中为操作数位宽),换言之,如果两个位宽32位的操作数做有限域乘法,运算时间从64个单位时间延迟下降为5个单位时间延迟,性能提高了 11. 6倍;第三,本发明所述的处理器芯片支持有限域算术运算,这种新的指令集不但方便椭圆曲线密码算法的编程实现,同时也为密码指令集的标准化提供了支持。发明附图
图1,本发明各部分逻辑关系;
图2,高速有限域乘法器(操作数位宽为8的情形);
图3,移位相加部件;
图4,椭圆曲线密码处理器的微体系结构;(FF Adder为有限域加法运算部件,FFMultiplier是有限域乘法运算部件);
图 5.保留站(Reservation Station)的结构;
图6寄存器状态表(Register Status)的结构。具体实施方法
I.椭圆曲线密码处理器微体系结构
本发明所设计的处理器芯片采用了带有寄存器重命名的动态指令调度技术,同时支持猜测多发射(Speculation Multi-Issue)。该处理器所采用的方法是,采用RISC标准的8级流水线,包含指令预取(IF, Instruction Fetch),指令译码(ID, Instruction Decoding),指令发射(Issue),取操作数(R0,Read Operands),执行指令(EX, Execution),执行结果生效(Commit),存储器读写(MEM,Memory Access),和寄存器写回(WB,Write Back)。图 4处理器流水线的整体逻辑框图,其中包括指令队列,数据和指令总线(Data and InstructionBus),多个乘法器和加法器及其保留站(Reservation Station),多个有限域加法器和乘法器及其保留站,存储器和寄存器文件(Register File),存储器包含多个指令ROM和数据RAM,数据RAM拥有其独立的保留站,而寄存器文件也拥有一个缓冲队列,等到寄存器数据生效。下面来对流水线分别逐级描述。指令预取(IF,Instruction Fetch)
在指令预取IF阶段,指令按照指令寄存器PC (Program Count)从指令ROM中取出相应的指令,本发明所述芯片支持多条指令预取,例如每次取两条为InstR0M[PC]和InstR0M[PC+4],但是如果遇到InstROM[PC]是分支指令,那么其下一条指令未必是InstROM[PC+4]。在本发明中,根据局部性原则,每次取InstR0M[PC]和InstR0M[PC+4]指令,如果预测错误,将要进行流水线重载。这样的好处是密码运算很少遇到分支语句。同时,IF阶段将PC更新,如果每次预取η条指令,那么PC更新为PC+4n。指令译码(ID,Instruction Decoding)
指令译码阶段将预取的指令翻译成操作,例如加法操作,乘法操作,有限域加法操作,以及访存操作等等,以及将操作数的寄存器号,数据地址,和立即数提取翻译出来,然后存入指令队列(Instruction Queue)。如果指令队列(Instruction Queue)满了,将告知上一阶段IF不再预期指令,知道指令队列(Instruction Queue)又出现空余空间。指令队列(Instruction Queue)的长度为64,是一个单向循环队列。注意,在指令队列中的代码都是经过指令译码的。指令发射(Issue)
将指令队列头的指令,按照操作不同,在有空余空间的情况下发射到相应的操作部件的保留站中去,例如加法指令发射到某个加法器的保留站中,有限域乘法操作就发射到有限域乘法的保留站中去,如果某操作的各个部件的保留站全部满了,那么将不能发射。图5给出了保留站(Reservation Station)的结构,保留站的每一行包含6个域0peration域存储相应的操作,两个操作数寄存器Ri和Rj的值存储在Valuei和Value j,另外两个域Qi和Qj分别将存储以此Ri和Rj正在等待的保留站号,在此阶段这四个域为空,最后一个域Busy设置为0,表示当前指令并没有被执行。同时更新目的操作数寄存器编号插入ReorderBuffer的队列尾,等待该操作完成来更新相应寄存器的值。取操作数(R0,Read Operands)
在这一阶段,首先试图从寄存器文件中读出操作数寄存器Ri和Rj的操作数。读出Ri和Rj值的时候需要查询寄存器状态寄存器(Register Status)。如图6所示,寄存器状态寄存器为32个通用寄存器配置一个域,存储以改寄存器为目标寄存器的保留站号,表示该寄存器的值还没有准备好不可以读取,否则置O。如果Ri的状态寄存器值为0,那么读取Ri的值到保留站中的Valuei域中,如果Ri的状态寄存器值为n,说明该寄存器锁定,于是将Qn读入保留站Qi中,Rj也做相应的操作。这样,保留站每一行中Valuei和Qi只有一个有效,Valuej和Qj也只有一个有效。事实上,将寄存器的值读入保留站实际上已经实现了寄存器重命名(Register Renaming),避免了所有WAR和WAW危险。执行指令(EX,Execution)
如果某保留站中的某条指令的一行的Valuei和Valuej都生效了,并且该保留站的运算部件空闲,就可以开始执行该条指令^fValuei和Valuej导入运算部件的输入端,设置保留站该行的BUSY域为1,同时设置该指令的目的寄存器的状态为该保留站的序号。当指令执行完成,BUSY域置为O。在此阶段,每个部件的保留站中的指令不必按顺序执行,只要操作数全部准备即可开始,另外不同保留站的指令互不干扰,可以同时开始执行。这就实现了指令的乱序执行和并行处理,充分开发了指令级并行,具备了超标量处理器的特征。存储器读写(MEM,Memory Access)
该阶段仅仅针对访存指令,对于Store指令,如果在存储器的保留站中某行中的EX阶段中计算得到的存储器地址和相应的寄存器都已经准备好,就可以将该寄存器的值写入相应的存储器地址。然而,对于Load指令,将从存储器中读出的值写日ROB等待生效。但是,如果当时已经在ROB队尾,同样可以用forwarding技术直接更新相应的保留站行的相应Value域。寄存器写回(WB,Write Back)
在这一阶段,将运算结果按照目的寄存器的指示写入ROB中相应的行中,等待Commit阶段生效。如果该结果当时已经在ROB的队尾,说明该寄存器的值立即可以生效,可以用forwarding技术将值直接写入相应的保留站行value域中,不必等待Commit阶段。执行结果生效(Commit)
将已经准备好的ROB中的队尾寄存器写入寄存器文件,运算结果生效,清除ROB该行,设置寄存器状态为O。注意,ROB中的数据全部按照程序的顺序生效。在这里,实现了程序指令执行结果的顺序生效,保持了寄存器的一致性和程序运行结果的正确性。 这样我们完整描述了超标量密码处理器的流水线结构,处理器实现了带有寄存器重命名的动态指令调度,多发射,乱序执行,指令集并行执行,以及指令的顺序生效。充分发挥了超标量处理器的技术优势,是的处理器在一个时钟周期可以完成多条指令,提高指令的吞吐率。2.高速有限域乘法(带模乘法)运算部件
高速有限域乘法运算部件是用于做带摸乘法,其功能是给定η位的操作数A和B,此时的有限域特征值为P,在log(n)个单位时间延迟的情况下做出带摸乘法。图2给出了在位宽η为8的情况下的有限域乘法器,其中最基本部件是移位加法器。如图2所示,移位加法部件将第二个操作数Y向做m次移位操作再与第一个操作数X相加。基于此部件,图3中,第一个操作数A乘以第2个操作数B的最低位B
之积与A乘以第二个操作数B的第二位B[l]之积做移位相加,移位次数为1,然后取模。换言之,移位相加的两个操作数要么是A要么是0,取决于B
和B [I]是为I或为O。以此类推,在第一个阶段,如果B的位宽为η,B的奇数位和偶数位决定下做η/2个并行的移位相加,同时取模,得到的η/2个和再两两相邻的做移位相加,此时移位长度为2。如此重复下去,直到得出唯一的和,即n/2~k=l,此时结束操作,所得即为带模积。这样,乘法器值需要k = log (η)个延迟即可完成整个乘法运算,性能大大提高。例如,加入位宽为32位,一般带摸乘法需要64个单位延迟,使用高速带模乘法部件只需要5个单位延迟,运算耗时减小到原来的7. 81 %,运算效率提高1180%。3.椭圆曲线密码处理器指令集体系结构
指令集首先支持RISC中的56条常用指令,包括算术指令21条,分支跳转指令14条,NOP指令I条,数据访存指令12条,逻辑运算指令8条,寄存器MOV指令8条,基本兼容MIPSR2000的处理器指令集,以及26条有限域算术运算指令,如下
SETP :设置有限域特征值,缺省设置特征为2 ;
ADDP 32位模P加法运算;
ADDffP : 16位模P加法运算;
ADDBP 8位模P加法运算;
SUBP 32位模P减法运算;
SUBffP : 16位模P减法运算;
SUBBP 8位模P减法运算;MULP 32位模P乘法运算;
MULffP 16位模P乘法运算;
MULBP 8位模P乘法运算;
DIVP 32位模P除法运算;
DIVffP : 16位模P除法运算;
DIVBP 8位模P除法运算;
ADDB 32位模2加法运算;
ADDffB 16位模2加法运算;
ADDBB 8位模2加法运算;
SUBB 32位模2减法运算;
SUBffB 16位模2减法运算;
SUBBB 8位模2减法运算;
MULB 32位模2乘法运算;
MULffB 16位模2乘法运算;
MULBB 8位模2乘法运算;
DIVB 32位模2除法运算;
DIVffB 16位模2除法运算;
DIVBB 8位模2除法运算;
INV:有限域中的取逆运算;
指令编码采用三操作数模式,所有指令都是32为编码,寄存器的配置支持MIPSR4000指令集的体系结构,支持该指令集所有存储器寻址方式。同时有一个指令寄存器PC (Program Counter)存储当前指令在指令存储器中的地址。4.固件程序
使用本发明的椭圆曲线处理器指令集,编写椭圆曲线上的倍点(Point Doubling)和点加(Point Adding)的固件程序,固件程序分为有限域特征为2和有限域特征为p两中方式。首先特征为P的倍点和点加运算。假设特征为P的有限域上的椭圆曲线为I = x3+ax+b,a,b e P特征有限域,给定曲线上的两个点P = (x1; Y1),点的坐标分量全部都是特征P的有限域上,倍点为2P = (x3, y3),那么
X3 = [ (y2_yi) / (χ2_χι) ]2_x「x2 y3 = [ (y2_yi) / (χ2_χι) ] * (χι~χ3) ι
给定曲线上的两个点P = (X1, Yi)和Q = (x2, J2),倍点为P+Q = (x3,y3),那么
X3= (3*X!2+a)/ (2*y1)-2x1
X3 = [ (3*X!2+a) / (2*7!)]* (X1-X3) yi
其中所有的算术运算全部是特征P有限域上的算术运算。接着来考虑特征2的有限域上的椭圆曲线倍点和点加运算。假设特征为P的有限域上的椭圆曲线为y+x*y = x3+a*x2+b,a,b e p特征有限域,给定曲线上的两个点P = (X1,Yi),点的坐标分量全部都是特征P的有限域上,倍点为2P = (x3, y3),那么
X3 = [ (Υ2+Υι) / (x2+xi) ]2+ (Υ2+Υι) / (x2+xi) +xi+x2+a
y3 = [ (y2+yi) / (χ2+χι) ] * (xrx3) +χ3+Υι给定曲线上的两个点P = (X1, Yi)和Q = (x2, J2),倍点为P+Q = (x3,y3),那么
X3 = x^+b/x/
X3 = X12+ [ (ya+Yi) / (X2+Xi) ] *x3+x3
其中所有的算术运算全部是特征2有限域上的算术运算。本发明还开发了本椭圆曲线指令集的RSA加密解密算法。给定明文P和密文C,以及公钥和私钥对(m,η),其中m为公钥,η为私钥,那么加密过程为pm = c
解密过程为cn = P
其中所有乘方运算都是有限域上的乘法运算。
这些固件程序中的有限域运算都使用本发明中的带模运算指令,以及处理器中的有限域算术运算部件实现。
权利要求
1.高性能超标量椭圆曲线密码处理器芯片,主要包括ー个指令ROM,一个数据RAM,多个普通算木部件(包括普通算术乘法器和加法器),多个有限域算木部件(包括有限域高速乘法器和有限域加法器),ー个保留站(Reservation Station),寄存器状态寄存器(Register Status),和一个ROB(Reorder Buffer),以及一个8级指令流水线,其特征在于实现了寄存器重命名和指令多发射,指令动态调度,指令乱序执行和顺序生效,充分利用了指令间并行性,实现了单时钟周期的多指令执行,成倍提高了指令呑吐率和运算性能。
2.根据权利要求I所述的椭圆曲线密码超标量处理器芯片,包含高速有限域乘法器把有限域乘法所需的大量有限域加法运算并行执行,其特点是首先对η个累加操作分解成相邻操作数做移位带模相加并行执行,得到η/2个和数,接着再对这η/2个操作数相邻两个做带模移两位相加操作,以此类推,直到仅剩唯一的操作数,即是最終乘积。
3.根据权利要求I所述的椭圆曲线密码超标量处理器芯片,其特征在于实现了ー种包含有限域运算指令的椭圆曲线密码指令集,这些指令包括设置素数特征有限域特征指令,8位,16位和32位特征为非2的素数有限域加法、有限域減法、有限域乘法、有限域除法运算指令,以及特征为2的上述有限域算木运算指令,和一条有限域取逆指令。
4.根据权利要求I所述的椭圆曲线密码超标量处理器芯片,其特征在于使用椭圆曲线密码指令集,实现了椭圆曲线上的倍点(Point Doubling)和点加(Point Addition)算法的高速固件程序,以及RSA加密解密算法的高速固件程序。
全文摘要
本发明设计了一种高性能超标量椭圆曲线密码处理器芯片,如图所示,本发明涉及信息安全、加密解密技术、芯片技术领域,本发明所设计的芯片利用现代处理器超标量技术,充分利用指令集成倍提高了运算性能,其中的高速有限域乘法器大大提高了有限域乘法的运算效率,很好的解决了椭圆曲线密码处理器的性能瓶颈,本发明的处理器所支持的一种包含有限域算术运算的指令集,不仅使椭圆曲线密码算法的实现更加方便,也为今后的密码指令集标准化做了必要准备,本发明在金融,通信和国防等需要信息安全的领域有着广阔的应用前景。
文档编号G06F21/00GK102682232SQ20111044062
公开日2012年9月19日 申请日期2011年12月26日 优先权日2011年12月26日
发明者丁丹 申请人:丁丹