CN102156836A - 一种椭圆曲线密码处理器 - Google Patents
一种椭圆曲线密码处理器 Download PDFInfo
- Publication number
- CN102156836A CN102156836A CN2011101042544A CN201110104254A CN102156836A CN 102156836 A CN102156836 A CN 102156836A CN 2011101042544 A CN2011101042544 A CN 2011101042544A CN 201110104254 A CN201110104254 A CN 201110104254A CN 102156836 A CN102156836 A CN 102156836A
- Authority
- CN
- China
- Prior art keywords
- register
- functional unit
- data
- elliptic curve
- unit
- 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.)
- Pending
Links
Images
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
本发明公开了一种椭圆曲线密码处理器,涉及信息技术安全及微处理器设计领域,采用TTA架构,椭圆曲线密码处理器的混合流水机制包含两个过程:传输流水和功能单元流水,椭圆曲线密码处理器包括:指令存储器、取指单元、译码单元、寄存器堆、总线互联网络、Socket和功能单元,取指单元将指令存储器中的指令取出,通过译码单元对所述指令进行译码,译码后通过总线互联网络选择相应的功能单元进行ECC运算,功能单元所需的运算数据通过寄存器堆或功能单元获得,通过总线互联网络和Socket进行互联。提高了运算加速比、缩短了工程变更周期、实现了软硬件协同设计以及解决了不利于二次开发的问题。
Description
技术领域
本发明涉及信息技术安全及微处理器设计领域,特别涉及一种椭圆曲线密码处理器。
背景技术
随着信息技术的不断发展和应用,信息的安全性问题变得越来越重要。而密码学作为信息安全的核心,在其中扮演着极为重要的角色。ECC(Elliptic Curve Cryptosystem,椭圆曲线密码体制)作为一种公钥密码系统,其安全性是基于求ECDLP(Elliptic Curve Discrete Logarithm Problem,椭圆曲线上离散对数问题)的困难性,与目前应用较广泛的RSA和DSA等系统相比,ECC具有明显的优势:该算法抗攻击强度大、安全性更高、计算量小、处理速度快、密钥长度短以及所需的存储空间要比RSA或DSA小得多。
ECC算法的实现主要有软件和硬件两种方式,硬件实现ECC算法具有更快的速度和更好的安全性。出于对ECC算法的复杂性的考虑,目前的硬件实现多采用增加协处理器的方法,以加速有限域中的大数操作,而ECC的整体算法则由主处理器完成。但采用这种方法,主处理器仍然可以直接操控密钥,留下了安全隐患;而且协处理器与主处理器之间的通信开销大,限制了协处理器性能的发挥;同时软硬件协同设计困难,需要较多的人工干预,不利于二次开发。另外一种较为常见的硬件实现方法是定制数据通路和控制通路,并利用微码编程的方法实现ECC整体算法。但这种实现方式微码编程设计工作量大,正确性验证困难,而且处理器内部设计参数改变后工程变更周期长,难以快速评估设计参数改变所带来的影响。
发明内容
为了提高运算加速比、缩短工程变更周期、实现软硬件协同设计以及解决不利于二次开发的问题,本发明提供了一种椭圆曲线密码处理器,详见下文描述:
一种椭圆曲线密码处理器,所述椭圆曲线密码处理器采用TTA架构,所述椭圆曲线密码处理器的混合流水机制包含两个过程:传输流水和功能单元流水,所述椭圆曲线密码处理器包括:指令存储器、取指单元、译码单元、寄存器堆、总线互联网络、Socket和功能单元,
所述取指单元将所述指令存储器中的指令取出,通过所述译码单元对所述指令进行译码,译码后通过所述总线互联网络选择相应的所述功能单元进行ECC运算,所述功能单元所需的运算数据通过所述寄存器堆或所述功能单元获得,通过所述总线互联网络和所述Socket进行互联。
所述传输流水由所述椭圆曲线密码处理器的控制部分完成,分为三个阶段:取指、译码和取操作数;所述功能单元流水用于当数据传输到所述功能单元时,触发执行操作,所述功能单元流水的级数由所述功能单元的功能决定。
所述椭圆曲线密码处理器在数据传输时,将源寄存器的数据或者立即数先传到总线上,经过所述总线再传到目的寄存器;所述源寄存器的数据来自所述功能单元的Result寄存器和通用寄存器;所述目的寄存器主要包括所述功能单元的Operand和Trigger寄存器以及通用寄存器,所述功能单元和通用寄存器堆通过所述Socket与所述总线连接,进行数据交换;所述Socket分别是Input Socket和Output Socket,所述Input Socket用于将总线上的数据送入到指定所述功能单元的Operand寄存器或者Trigger寄存器上;所述Output Socket用于将所述功能单元中Result寄存器的数据传输到所述总线上去。
所述功能单元包括:跳转功能单元、算术逻辑功能单元、存储器访问功能单元、模加减运算功能单元、乘法功能单元和模乘运算功能单元。
当所述功能单元为所述存储器访问功能单元时,能与数据存储器直接交互数据;所述存储器访问功能单元的内部结构有2个Operand寄存器,分别是装载存储数据的Operand寄存器和装载访问Memory基地址的Operand寄存器,另有1个Result寄存器和1个Trigger寄存器,所述直接寻址时直接将所述Trigger寄存器中的值作为访问Memory的地址;所述偏移寻址时,将所述Trigger寄存器与所述装载访问Memory基地址的operand寄存器相加的值再作为访问Memory的地址;当访问所述数据存储器时,有读和写两种操作,分别为取数和存数,有4种触发方式:直接寻址取数、偏移寻址取数、直接寻址存数和偏移寻址存数;取数时,所述Result寄存器装载从所述数据存储器中读出的数据;存数时,将所述装载存储数据的Operand寄存器的数据写入所述数据存储器。
所述算术逻辑功能单元用来实现逻辑与或非、比较、移位逻辑功能,包括一个Operand寄存器,一个Trigger寄存器和一个Result寄存器,其中,比较运算包括两种,一种是判断所述Trigger寄存器的值是否与Operand寄存器的值相等;另一种比较运算判断所述Trigger寄存器的值是否小于所述Operand寄存器的值;移位运算包括四种触发方式lls、lsc、lrs和rsc,所述触发方式lls完成Trigger寄存器的数据左移,所述Operand寄存器表示移动的位数,右边移出的位数补0,所述触发方式lsc完成所述Trigger寄存器的数据左移,但右边移出的位数则由所述触发方式lls移出的位数填补,两者共同完成大数的左移操作;所述触发方式lrs完成Trigger寄存器的数据右移,所述Operand寄存器表示移动的位数,左边移出的位数补0,所述触发方式rsc完成所述Trigger寄存器的数据右移,但左边移出的位数则由所述触发方式lrs移出的位数填补,两者共同完成大数的右移操作,所述算术逻辑功能单元延时周期数为1。
所述跳转功能单元用来完成条件跳转和立即跳转,所述跳转功能单元有两个Operand寄存器,jmp_o_from存储跳转时的当前地址,指定跳转的起始位置;jmp_o_to存储跳转的目的地址,指定跳转后的位置;所述跳转功能单元将PC直接连接进来,实时和所述jmp_o_from进行比较,当二者匹配,将根据触发方式决定跳转情况;所述跳转功能单元支持三种触发方式,触发方式jmp_t_cnt触发直接跳转,所述触发方式jmp_t_cnt的值为循环的次数,如果循环次数为零,直接跳转,所述触发方式jmp_t_cnt的值为2;触发方式jmp_t_ifl和触发方式jmp_t_ifm为触发所述条件跳转,分别表示根据最低位或最高位是否为1来执行所述条件跳转;所述跳转功能单元结合所述算术逻辑功能单元和所述模加减运算功能单元能够实现全部的跳转功能,所述跳转功能单元延时周期数为2。
所述模加减运算功能单元有三个Operand寄存器,一个Trigger寄存器和三个Result寄存器,所述模加减运算功能单元延时周期数为1,其中ladsb_o_llo和ladsb_o_lhi分别存储被加数或被减数的低位和高位,ladsb_o_rlo和ladsb_t则分别存储加数或减数的低位和高位,支持四种触发方式acl、aci、sub和sci,前两种触发方式完成不带进位和带进位的加操作,一起用于完成大数模加功能,后两种触发方式完成不带借位和带借位的减操作,共同完成大数模减功能。
所述模乘运算功能单元用于完成一次内部循环,
(H,L)=(H,L)+A*B+C+P*U
启动内部循环时,(H,L)初始值为0,对应于所述模乘运算功能单元的mul触发方式,完成第户0次的内循环操作;第j(j≠0)次的内部循环操作中(H,L)依赖于第j-1次内部循环的结果H,所述模乘运算功能单元增加了一种触发方式mac,所述触发方式在第j(j≠0)次计算(H,L)时加上第j-1次的结果H;当内部循环结束后,FIOS模乘算法进行一次加操作,使用所述模乘运算功能单元进行复用,对相应的输入寄存器赋值为0,其中,内部循环开始前的初始值U是由所述乘法功能单元来完成的。
本发明提供的技术方案的有益效果是:
本发明提供了一种椭圆曲线密码处理器,本发明将预计算、求逆、点加和倍点运算转化为基本的Montgomery模乘、模加和模减,并规整了流程,减少了中间步骤,该椭圆曲线密码处理器通过设计专门的椭圆曲线密码功能单元,使该椭圆曲线密码处理器具有高度的针对性,定制特殊的指令集,采用混合流水线,加快了模乘运算和大数运算的运算速度,提高了运算加速比,缩短了工程变更周期、实现了软硬件协同设计以及解决了不利于二次开发的问题,可实现基于椭圆曲线密码算法的高速加、解密过程。
附图说明
图1为本发明提供的TTA体系结构框架示意图;
图2为本发明提供的ECDSA签名协议算法流程调度图;
图3为本发明提供的椭圆曲线密码处理器的结构示意图;
图4为本发明提供的椭圆曲线密码处理器的指令格式示意图;
图5为本发明提供的椭圆曲线密码处理器的混合流水具体过程示意图;
图6为本发明提供的存储器访问功能单元的结构示意图;
图7为本发明提供的算术逻辑功能单元的结构示意图;
图8为本发明提供的跳转功能单元的结构示意图;
图9为本发明提供的模加减运算功能单元的结构示意图;
图10为本发明提供的模乘运算功能单元的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
为了提高运算加速比、缩短工程变更周期、实现软硬件协同设计以及解决不利于二次开发的问题,本发明实施例提供了一种椭圆曲线密码处理器,详见下文描述:
深入研究ECC算法,发现其硬件实现的瓶颈在于复杂的模乘运算和大数运算。在传统微处理器架构上进行椭圆曲线密码处理时,寄存器文件难以有效支持大数运算,而且在需要定制特殊单元进行加速模乘时,指令集扩展相对困难。而TTA(Transport Triggered Architecture,传输触发体系结构)是一种新型体系结构,可以针对特定应用进行定制,其功能单元、寄存器文件堆、总线以及总线互连的数量都是可变的,这使得体系结构的设计比较灵活。TTA可以看成是传统VLIW体系结构的一个超集,并且只有一类指令格式即MOVE指令,扩展功能单元时无需改变指令集格式,这些特性使得TTA体系架构比较适合ECC算法。
TTA架构是由Henk Corporaal等人提出的,它与传统的操作触发处理器体系结构最大的不同在于操作数被执行的方式。在传输触发体系结构中,操作是由数据传输动作引发的,即操作的执行开始于数据写入触发寄存器的时刻。这意味着该体系结构的编程只需具备一条数据移动指令,即MOVE指令。所有的操作,包括load或store、分支和跳转等,都通过传输MOVE指令来完成。例如1个加法操作可变换成3个MOVE操作。
首先,r1和r2的值被分别传到加法器功能单元的操作数寄存器和触发寄存器,一段时间(根据加法器本身的延迟来决定)之后,结果就被送入r3。为了能够最大程度提高系统性能,TTA采用了超长指令字体系结构(VLIW),一条TTA指令字通常包含多个可并行的MOVE指令。
参见图1,TTA体系结构框架主要由各种特殊的功能单元FU、寄存器堆以及互联网络组成,而且功能单元、寄存器堆、总线以及总线互连的数量都是可变的,这使得TTA可以针对特定应用进行定制。其中互联网络分为总线和Socket两部分,通过Socket,总线与FU、寄存器堆构成了松耦合的连接模式,在进行数据交换时可以节约功耗。另外,用户可以针对应用程序中一些瓶颈操作设计特殊的功能单元,并为其定制专有的指令集,以提高处理器的性能,同时使其兼具可扩展性。TTA处理器的编程只需要数据移动操作,一条TTA指令经过译码后,通常包括多个可并行的slot操作,每个slot操作都是一次数据的移动。TTA的单一指令一方面利于用户编程,另一方面指令中只有源地址和目的地址,无需操作码,节约指令存储空间。所有的数据移动为编译器所见,不仅挖掘操作的并行性,而且挖掘数据传输级的并行性,同时,总线数量和互联数量的增加能够为数据传输级的并行提供更好的硬件资源支持。统一编址的功能单元寄存器和寄存器堆,以及用户可见的数据传输,旁路了中间结果的保存,减少了通用寄存器的数量,节约了系统的硬件资源。
一种椭圆曲线密码处理器的体系结构设计主要包括以下方面:
椭圆曲线密码算法各运算层次的调度
椭圆曲线密码体制是基于求椭圆曲线上离散对数问题的公钥密码体制,椭圆曲线的类型和参数的可选范围广,各层次的运算可调度性强,本发明实施例以一个典型的ECDSA签名协议为例,说明整个椭圆曲线密码体制算法的调度。
ECDSA签名算法中核心运算为点乘运算,是由点加和倍点运算组成,目前点乘实现具有二进制、w-ary、NAF、窗口点乘算法,通过对这些点乘算法的分析得出,二进制点乘算法具有简单、占用内存小的特点。本发明实施例采用的就是从左到右L-to-R二进制点乘算法。
点乘算法一般运行在射影坐标下,这是由于射影坐标中一次点乘操作只需要进行一次模逆运算,相比较于仿射坐标的每次点加和倍点运算都需要进行一次模逆操作,它能够更快的执行点乘操作。根据各种射影坐标下的模乘运算次数比较,本发明实施例中的倍点采用Jacobi射影坐标,点加采用Jacobi射影坐标和仿射坐标的混合形式,这种组合能够最大限度地提高点乘的运算速度。
射影坐标下的倍点运算满足P2=(X2,Y2,Z2),P1=(X1,Y1,Z1),P2=2P1:
Z2=2Y1Z1
点加运算满足P1=(X1,Y1,Z1),P2=(X2,Y2),P3=(X3,Y3,Z3),P3=P1+P2:
点加运算和倍点运算是由一系列的模乘、模加和模减运算构成,模乘则是整个运算过程的核心。本发明实施例采用了FIOS型的Montgomery模乘算法,该算法省去了大数除法,加快了模乘的执行速度。
整个椭圆曲线密码应用ECDSA签名协议算法流程调度如图2所示,
参见图3,椭圆曲线密码处理器采用TTA架构,椭圆曲线密码处理器包括:指令存储器、取指单元、译码单元、寄存器堆RFs、总线互联网络、Socket和功能单元FU,
取指单元将指令存储器中的指令取出,通过译码单元对指令进行译码,译码后通过总线互联网络选择功能单元进行ECC运算,功能单元所需的运算数据通过寄存器堆或功能单元获得,通过总线互联网络和Socket进行互联。
为了最大化地提高椭圆曲线密码处理器的运算速度,本发明实施例沿用VLIW架构,在一条指令上能够进行多个相互独立的数据传输,其指令格式参见图4,一条指令包含多个slot,slot的个数由Bus的条数决定,每个slot由两部分组成:一个是数据来自何处(Source),另一个是数据去往何处(Destination)。数据来源可以是功能单元的Result寄存器、通用寄存器,或者是立即数。在Source中,若最高位为0,则表示Source数据来源于寄存器,其余位数表示寄存器地址的编号;若为1,则表示Source部分为立即数,其余位数表示立即数的数值。Destination部分表示目的寄存器的地址编号。目的寄存器可以Operand寄存器、Trigger寄存器或者是通用寄存器。该椭圆曲线密码处理器给Trigger寄存器的地址赋予特殊的触发功能,当Destination是这些特殊的地址时,就会触发相应的运算。该椭圆曲线密码处理器在充分利用VLIW指令级并行性基础上,进一步挖掘了ECC算法中有限域运算任务存在的数据级并行性,并结合了混合流水线机制,提升了处理器的性能。参见图5,椭圆曲线密码处理器的混合流水机制包含两个过程:传输流水和功能单元流水,传输流水由椭圆曲线密码处理器的控制部分完成,分为三个阶段:取指(Instruction Fetch,IF)、译码(Decode,DC)和取操作数(Operand data Fetch,OF),每一阶段需要一个时钟周期,不同的指令,传输流水执行时间相同。当数据传输到功能单元,能够触发执行(Execute,EX)操作,该阶段由功能单元来完成,功能单元流水独立于传输流水,可分为若干级,功能单元流水的级数由功能单元的功能决定。
椭圆曲线密码处理器的数据通路是关键部分,主要是各个功能单元和互联网络之间的数据流通。该椭圆曲线密码处理器执行指令时,对应着总线并行的数据传输。每次数据传输时,将源寄存器的数据或者立即数先传到总线上,数据经过总线再传到目的寄存器。源寄存器的数据可以来自功能单元的Result寄存器和通用寄存器;目的寄存器主要包括功能单元的Operand和Trigger寄存器以及通用寄存器。所有的功能单元和通用寄存器堆通过Socket与总线连接,进行数据交换。该椭圆曲线密码处理器有两类Socket,分别是Input Socket和OutputSocket。Input Socket用于将总线上的数据送入到指定功能单元的Operand寄存器或者Trigger寄存器上,由于TTA内部有多条总线,选择哪条总线上的数据送给目的寄存器,需要使能信号来控制。Operand寄存器的Input Socket输出FU_o_dat作为寄存器的输入数据,FU_o_sel将作为寄存器的使能信号,输入的Bus_FU_o_sel等使能信号从指令每个slot的Source部分译码得到。对于Trigger寄存器有以下两种情况:(1)只有一种触发方式的Trigger寄存器Input Socket和Operand寄存器的Input Socket相同;(2)具有多种触发方式的Input Socket还需要将trigger type信号引出输给功能单元内部,以便在功能单元内部控制其触发不同的运算。Output Socket用于将功能单元中Result寄存器的数据传输到总线上去,Bus_FU_r_sel等输入使能信号由指令中slot的Destination部分译码得到,它选择该功能单元的运算结果是否会传送到对应的总线,如果该信号无效,传输到对应总线的数据为0。一般的功能单元都有Result寄存器来保存住运算结果,但也有例外,如无延时跳转控制功能单元就没有Result寄存器,其运算结果直接连接到PC。因而,不是所有的功能单元都有Output Socket。
其中,功能单元包括:存储器访问功能单元LDST、算术逻辑功能单元ALU、跳转功能单元JMP、模加减运算功能单元LADSB、乘法功能单元LMUL和模乘运算功能单元MMAU。
其中,存储器访问功能单元LDST在本发明实施例提供的椭圆曲线密码处理器中作用特殊,是唯一能与数据存储器直接交互的功能单元,参见图6,当功能单元为存储器访问功能单元时,能与数据存储器直接交互数据。存储器访问功能单元LDST的内部结构有2个Operand寄存器,分别是装载存储数据的Operand寄存器和装载访问Memory基地址的Operand寄存器,另有1个Result寄存器和1个Trigger寄存器,直接寻址时直接将Trigger寄存器中的值作为访问Memory的地址;偏移寻址时,将Trigger寄存器与装载访问Memory基地址的operand寄存器相加的值再作为访问Memory的地址;当访问数据存储器时,有读和写两种操作,分别为取数和存数,有4种触发方式:直接寻址取数、偏移寻址取数、直接寻址存数和偏移寻址存数;取数时,Result寄存器装载从数据存储器中读出的数据;存数时,将装载存储数据的Operand寄存器的数据写入数据存储器。
参见图7,算术逻辑功能单元ALU用来实现包括逻辑与或非、比较、移位等逻辑功能,将这些运算在一个功能单元中实现,可以充分复用Operand寄存器和Result寄存器,只是Trigger方式不一样,包括一个Operand寄存器、一个Trigger寄存器和一个Result寄存器。Trigger包括9个信号,也就是有9种触发方式。一个算术逻辑功能单元ALU在一个时钟周期只有一个信号有效,触发一次运算只能得到一个运算结果,且延时周期数都为1。在算术逻辑功能单元ALU的内部结构中,比较运算包括两种,一种是cpe,判断Trigger寄存器的值是否与Operand寄存器的值相等;另一种比较运算是cpl,判断Trigger寄存器的值是否小于Operand寄存器的值。逻辑运算和比较运算结果都只有一位,因而最终输出结果只有0或1,另外,这两种运算结果通常用来作为程序跳转的条件。移位运算包括四种触发方式lls、lsc、lrs和rsc,触发方式lls完成Trigger寄存器的数据左移,Operand寄存器表示移动的位数,右边移出的位数补0,触发方式lsc完成Trigger寄存器的数据左移,但右边移出的位数则由触发方式lls移出的位数填补,两者共同完成大数的左移操作;触发方式lrs完成Trigger寄存器的数据右移,Operand寄存器表示移动的位数,左边移出的位数补0,触发方式rsc完成Trigger寄存器的数据右移,但左边移出的位数则由触发方式lrs移出的位数填补,两者共同完成大数的右移操作。由于该算术逻辑功能单元ALU中只有一个Result寄存器,需要将上面的所有运算结果经过一个多路选择器再传给Result寄存器,路选的条件即是各种触发方式对应的Trigger信号。
参见图8,跳转功能单元JMP用来完成条件跳转和立即跳转,跳转功能单元JMP有两个Operand寄存器,其中,jmp_o_from存储跳转时的当前地址,指定跳转的起始位置;jmp_o_to存储跳转的目的地址,指定跳转后的位置;跳转功能单元JMP将PC直接连接进来,实时和jmp_o_from进行比较,当二者匹配,将根据触发方式决定跳转情况。跳转功能单元JMP支持三种触发方式,其中,触发方式jmp_t_cnt触发直接跳转,触发方式jmp_t_cnt的值为循环的次数,如果循环次数为零,直接跳转,触发方式jmp_t_cnt的值为2;触发方式jmp_t_ifl和jmp_t_ifm为触发条件跳转,分别表示根据最低位或最高位是否为1来执行条件跳转;跳转功能单元JMP结合算术逻辑功能单元ALU和模加减运算功能单元LADSB能够实现全部的跳转功能,跳转功能单元JMP延时周期数为2。
参见图9,模加减运算功能单元LADSB有三个operand寄存器和三个Result寄存器,模加减运算功能单元LADSB延时周期数为1,其中ladsb_o_llo和ladsb_o_lhi分别存储被加数或被减数的低位和高位,ladsb_o_rlo和ladsb_t则分别存储加数或减数的低位和高位,支持四种触发方式acl、aci、sub和sci,前两种触发方式完成不带进位和带进位的加操作,一起用于完成大数模加功能,后两种触发方式完成不带借位和带借位的减操作,共同完成大数模减功能。
以128bit模加算法A+B mod P为例,先计算S=A+B,然后计算S-P,再根据S-P的正负来选择结果。由于椭圆曲线密码处理器的数据宽度为32bit,则A+B的并行汇编为:
A0->ladsb_o_llo,A1->ladsb_o_lhi,B0->ladsb_o_rlo,B1->ladsb_t_acl;
A2->ladsb_o_llo,A3->ladsb_o_lhi,B2->ladsb_o_rlo,B3->ladsb_t_aci;
ladsb_r_lo->r0,ladsb_r_hi->rl;
ladsb_r_lo->r2,ladsb_r_hi->r3,ladsb_r_cry->r4;
这样S的值就存储在(r4,r3,r2,r1,r0)中,同样的也可以计算S-P的值,只需要把触发方式acl和触发方式aci换成触发方式sub和触发方式sci即可。
参见图10,模乘运算功能单元MMAU是椭圆曲线密码处理器中的主要运算功能单元,模乘的速度决定了整个椭圆曲线密码处理器的性能,Montgomery模乘算法避免了求约减时的大整数除法,提高了整个ECC算法的运算速度。本发明实施例运用基于FIOS型的Montgomery模乘算法,通过对算法数据依赖性的分析,设计了模乘的运算功能单元MMAU,模乘运算功能单元MMAU主要功能是完成模乘算法中的一次内部循环(H,L)=(H,L)+A*B+C+P*U,启动内部循环时,(H,L)初始值为0,对应于模乘运算功能单元MMAU的mul触发方式;第j(j≠0)次的内部循环操作依赖于第j-1次内部循环的结果H。为了增加算法执行的并行度,MMAU单元增加了一种触发方式mac,该触发方式mac能够在第j(j≠0)次计算(H,L)时加上第j-1次的结果H。当内部循环结束后,FIOS模乘算法中还需要进行一次加操作,这里可以使用模乘运算功能单元MMAU进行复用,无需调用模加减运算功能单元LADSB,只需要把输入值A和Q相应的输入Operand寄存器赋值为0即可。模乘算法中每次内部循环开始前的初始值U是由乘法功能单元LMUL来完成的,对于一次外循环的所有内部循环运算,对应于B和U的输入寄存器共享同一数据。
综上所述,本发明实施例提供了一种椭圆曲线密码处理器,本发明实施例将预计算、求逆、点加和倍点运算转化为基本的Montgomery模乘、模加和模减,并规整了流程,减少了中间步骤,该椭圆曲线密码处理器通过设计专门的椭圆曲线密码功能单元,使该椭圆曲线密码处理器具有高度的针对性,定制特殊的指令集,采用混合流水线,加快了模乘运算和大数运算的运算速度,提高了运算加速比,缩短了工程变更周期、实现了软硬件协同设计以及解决了不利于二次开发的问题,可实现基于椭圆曲线密码算法的高速加、解密过程。
本领域技术人员可以理解附图只是一个优选实施例的示意图,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种椭圆曲线密码处理器,其特征在于,所述椭圆曲线密码处理器采用TTA架构,所述椭圆曲线密码处理器的混合流水机制包含两个过程:传输流水和功能单元流水,所述椭圆曲线密码处理器包括:指令存储器、取指单元、译码单元、寄存器堆、总线互联网络、Socket和功能单元,
所述取指单元将所述指令存储器中的指令取出,通过所述译码单元对所述指令进行译码,译码后通过所述总线互联网络选择相应的所述功能单元进行ECC运算,所述功能单元所需的运算数据通过所述寄存器堆或所述功能单元获得,通过所述总线互联网络和所述Socket进行互联。
2.根据权利要求1所述的一种椭圆曲线密码处理器,其特征在于,所述传输流水由所述椭圆曲线密码处理器的控制部分完成,分为三个阶段:取指、译码和取操作数;所述功能单元流水用于当数据传输到所述功能单元时,触发执行操作,所述功能单元流水的级数由所述功能单元的功能决定。
3.根据权利要求1所述的一种椭圆曲线密码处理器,其特征在于,所述椭圆曲线密码处理器在数据传输时,将源寄存器的数据或者立即数先传到总线上,经过所述总线再传到目的寄存器;所述源寄存器的数据来自所述功能单元的Result寄存器和通用寄存器;所述目的寄存器主要包括所述功能单元的Operand和Trigger寄存器以及通用寄存器,所述功能单元和通用寄存器堆通过所述Socket与所述总线连接,进行数据交换;所述Socket分别是Input Socket和Output Socket,所述Input Socket用于将总线上的数据送入到指定所述功能单元的Operand寄存器或者Trigger寄存器上;所述Output Socket用于将所述功能单元中Result寄存器的数据传输到所述总线上去。
4.根据权利要求1所述的一种椭圆曲线密码处理器,其特征在于,所述功能单元包括:跳转功能单元、算术逻辑功能单元、存储器访问功能单元、模加减运算功能单元、乘法功能单元和模乘运算功能单元。
5.根据权利要求4所述的一种椭圆曲线密码处理器,其特征在于,当所述功能单元为所述存储器访问功能单元时,与数据存储器直接交互数据;所述存储器访问功能单元的内部结构有2个Operand寄存器,分别是装载存储数据的Operand寄存器和装载访问Memory基地址的Operand寄存器,另有1个Result寄存器和1个Trigger寄存器,所述直接寻址时直接将所述Trigger寄存器中的值作为访问Memory的地址;所述偏移寻址时,将所述Trigger寄存器与所述装载访问Memory基地址的Operand寄存器相加的值再作为访问Memory的地址;当访问所述数据存储器时,有读和写两种操作,分别为取数和存数,有4种触发方式:直接寻址取数、偏移寻址取数、直接寻址存数和偏移寻址存数;取数时,所述Result寄存器装载从所述数据存储器中读出的数据;存数时,将所述装载存储数据的Operand寄存器的数据写入所述数据存储器。
6.根据权利要求4所述的一种椭圆曲线密码处理器,其特征在于,所述算术逻辑功能单元用来实现逻辑与或非、比较、移位逻辑功能,包括一个Operand寄存器,一个Trigger寄存器和一个Result寄存器,其中,比较运算包括两种,一种是判断所述Trigger寄存器的值是否与Operand寄存器的值相等;另一种比较运算判断所述Trigger寄存器的值是否小于所述Operand寄存器的值;移位运算包括四种触发方式lls、lsc、lrs和rsc,所述触发方式lls完成Trigger寄存器的数据左移,所述Operand寄存器表示移动的位数,右边移出的位数补0,所述触发方式lsc完成所述Trigger寄存器的数据左移,但右边移出的位数则由所述触发方式lls移出的位数填补,两者共同完成大数的左移操作;所述触发方式lrs完成Trigger寄存器的数据右移,所述Operand寄存器表示移动的位数,左边移出的位数补0,所述触发方式rsc完成所述Trigger寄存器的数据右移,但左边移出的位数则由所述触发方式lrs移出的位数填补,两者共同完成大数的右移操作,所述算术逻辑功能单元延时周期数为1。
7.根据权利要求4所述的一种椭圆曲线密码处理器,其特征在于,所述跳转功能单元用来完成条件跳转和立即跳转,所述跳转功能单元有两个Operand寄存器,jmp_o_from存储跳转时的当前地址,指定跳转的起始位置;jmp_o_to存储跳转的目的地址,指定跳转后的位置;所述跳转功能单元将PC直接连接进来,实时和所述jmp_o_from进行比较,当二者匹配,将根据触发方式决定跳转情况;所述跳转功能单元支持三种触发方式,触发方式jmp_t_cnt触发直接跳转,所述触发方式jmp_t_cnt的值为循环的次数,如果循环次数为零,直接跳转,所述触发方式jmp_t_cnt的值为2;触发方式jmp_t_ifl和触发方式jmp_t_ifm为触发所述条件跳转,分别表示根据最低位或最高位是否为1来执行所述条件跳转;所述跳转功能单元结合所述算术逻辑功能单元和所述模加减运算功能单元能够实现全部的跳转功能,所述跳转功能单元延时周期数为2。
8.根据权利要求4所述的一种椭圆曲线密码处理器,其特征在于,所述模加减运算功能单元有三个Operand寄存器,一个Trigger寄存器和三个Result寄存器,所述模加减运算功能单元延时周期数为1,其中ladsb_o_llo和ladsb_o_lhi分别存储被加数或被减数的低位和高位,ladsb_o_rlo和ladsb_t则分别存储加数或减数的低位和高位,支持四种触发方式acl、aci、sub和sci,前两种触发方式完成不带进位和带进位的加操作,一起用于完成大数模加功能;后两种触发方式完成不带借位和带借位的减操作,共同完成大数模减功能。
9.根据权利要求4所述的一种椭圆曲线密码处理器,其特征在于,所述模乘运算功能单元用于完成一次内部循环,
(H,L)=(H,L)+A*B+C+P*U
启动内部循环时,(H,L)初始值为0,对应于所述模乘运算功能单元的mul触发方式,完成第j=0次的内循环操作;第j(j≠0)次的内部循环操作中(H,L)依赖于第j-1次内部循环的结果H,所述模乘运算功能单元增加了一种触发方式mac,所述触发方式在第j(j≠0)次计算(H,L)时加上第j-1次的结果H;当内部循环结束后,FIOS模乘算法进行一次加操作,使用所述模乘运算功能单元进行复用,对相应的输入寄存器赋值为0,其中,内部循环开始前的初始值U是由所述乘法功能单元来完成的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011101042544A CN102156836A (zh) | 2011-04-25 | 2011-04-25 | 一种椭圆曲线密码处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011101042544A CN102156836A (zh) | 2011-04-25 | 2011-04-25 | 一种椭圆曲线密码处理器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102156836A true CN102156836A (zh) | 2011-08-17 |
Family
ID=44438328
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011101042544A Pending CN102156836A (zh) | 2011-04-25 | 2011-04-25 | 一种椭圆曲线密码处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102156836A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104579651A (zh) * | 2013-10-28 | 2015-04-29 | 上海复旦微电子集团股份有限公司 | 椭圆曲线密码点乘运算的方法和装置 |
CN108259179A (zh) * | 2016-12-29 | 2018-07-06 | 航天信息股份有限公司 | 一种基于sm9标识密码算法的加解密协处理器及其运算方法 |
CN109218023A (zh) * | 2017-06-29 | 2019-01-15 | 英特尔公司 | 用于稳健计算椭圆曲线数字签名的技术 |
CN110311772A (zh) * | 2019-06-15 | 2019-10-08 | 上海来远电子科技有限公司 | 一种可编程加解密方法及其系统 |
CN110704109A (zh) * | 2019-09-30 | 2020-01-17 | 华中科技大学 | 一种椭圆曲线密码协处理器 |
CN112099762A (zh) * | 2020-09-10 | 2020-12-18 | 上海交通大学 | 快速实现sm2密码算法的协处理系统及方法 |
TWI793020B (zh) * | 2022-02-16 | 2023-02-11 | 瑞昱半導體股份有限公司 | 防禦密碼系統時間攻擊之方法、密碼系統處理電路及電子裝置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1700637A (zh) * | 2005-05-18 | 2005-11-23 | 上海迪申电子科技有限责任公司 | 一种新型的椭圆曲线密码协处理器 |
CN101403963A (zh) * | 2008-11-13 | 2009-04-08 | 戴葵 | 异步数据触发微处理器体系结构 |
US7742596B2 (en) * | 2004-08-24 | 2010-06-22 | General Dynamics C4 Systems, Inc. | Reliable elliptic curve cryptography computation |
CN101826142A (zh) * | 2010-04-19 | 2010-09-08 | 中国人民解放军信息工程大学 | 一种可重构椭圆曲线密码处理器 |
CN101833435A (zh) * | 2010-04-19 | 2010-09-15 | 天津大学 | 基于传输触发架构可配置处理器指令冗余消除方法 |
-
2011
- 2011-04-25 CN CN2011101042544A patent/CN102156836A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7742596B2 (en) * | 2004-08-24 | 2010-06-22 | General Dynamics C4 Systems, Inc. | Reliable elliptic curve cryptography computation |
CN1700637A (zh) * | 2005-05-18 | 2005-11-23 | 上海迪申电子科技有限责任公司 | 一种新型的椭圆曲线密码协处理器 |
CN101403963A (zh) * | 2008-11-13 | 2009-04-08 | 戴葵 | 异步数据触发微处理器体系结构 |
CN101826142A (zh) * | 2010-04-19 | 2010-09-08 | 中国人民解放军信息工程大学 | 一种可重构椭圆曲线密码处理器 |
CN101833435A (zh) * | 2010-04-19 | 2010-09-15 | 天津大学 | 基于传输触发架构可配置处理器指令冗余消除方法 |
Non-Patent Citations (2)
Title |
---|
《微电子学与计算机》 20051231 史焱等 高速双有限域加密协处理器设计 第22卷, 第5期 * |
《计算机学报》 20070228 赵学秘等 TTA-EC:一种基于传输触发体系结构的ECC整体算法处理器 第30卷, 第2期 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104579651A (zh) * | 2013-10-28 | 2015-04-29 | 上海复旦微电子集团股份有限公司 | 椭圆曲线密码点乘运算的方法和装置 |
CN104579651B (zh) * | 2013-10-28 | 2018-08-24 | 上海复旦微电子集团股份有限公司 | 椭圆曲线密码点乘运算的方法和装置 |
CN108259179A (zh) * | 2016-12-29 | 2018-07-06 | 航天信息股份有限公司 | 一种基于sm9标识密码算法的加解密协处理器及其运算方法 |
CN108259179B (zh) * | 2016-12-29 | 2021-03-02 | 航天信息股份有限公司 | 一种基于sm9标识密码算法的加解密协处理器及其运算方法 |
CN109218023A (zh) * | 2017-06-29 | 2019-01-15 | 英特尔公司 | 用于稳健计算椭圆曲线数字签名的技术 |
CN110311772A (zh) * | 2019-06-15 | 2019-10-08 | 上海来远电子科技有限公司 | 一种可编程加解密方法及其系统 |
CN110704109A (zh) * | 2019-09-30 | 2020-01-17 | 华中科技大学 | 一种椭圆曲线密码协处理器 |
CN112099762A (zh) * | 2020-09-10 | 2020-12-18 | 上海交通大学 | 快速实现sm2密码算法的协处理系统及方法 |
CN112099762B (zh) * | 2020-09-10 | 2024-03-12 | 上海交通大学 | 快速实现sm2密码算法的协处理系统及方法 |
TWI793020B (zh) * | 2022-02-16 | 2023-02-11 | 瑞昱半導體股份有限公司 | 防禦密碼系統時間攻擊之方法、密碼系統處理電路及電子裝置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10515046B2 (en) | Processors, methods, and systems with a configurable spatial accelerator | |
US10445451B2 (en) | Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features | |
US10445234B2 (en) | Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features | |
CN102156836A (zh) | 一种椭圆曲线密码处理器 | |
US11307873B2 (en) | Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging | |
US10417175B2 (en) | Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator | |
CN102231102B (zh) | 基于余数系统的rsa密码处理方法及协处理器 | |
US10558575B2 (en) | Processors, methods, and systems with a configurable spatial accelerator | |
US10469397B2 (en) | Processors and methods with configurable network-based dataflow operator circuits | |
US10496574B2 (en) | Processors, methods, and systems for a memory fence in a configurable spatial accelerator | |
US11086816B2 (en) | Processors, methods, and systems for debugging a configurable spatial accelerator | |
US10416999B2 (en) | Processors, methods, and systems with a configurable spatial accelerator | |
KR100309566B1 (ko) | 파이프라인프로세서에서다중명령어를무리짓고,그룹화된명령어를동시에발행하고,그룹화된명령어를실행시키는방법및장치 | |
CN101826142B (zh) | 一种可重构椭圆曲线密码处理器 | |
US20190004955A1 (en) | Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features | |
TWI728068B (zh) | 複數乘法指令 | |
CN101373427A (zh) | 程序执行控制装置 | |
TW201712544A (zh) | 驗證分支目標 | |
WO2017048662A1 (en) | Predicated read instructions | |
US7475393B2 (en) | Method and apparatus for parallel computations with incomplete input operands | |
CN111027690B (zh) | 执行确定性推理的组合处理装置、芯片和方法 | |
CN104579656A (zh) | 一种椭圆曲线公钥密码sm2算法的硬件加速协处理器 | |
Li et al. | Using design space exploration for finding schedules with guaranteed reaction times of synchronous programs on multi-core architecture | |
CN101477456B (zh) | 一种自相关运算单元及处理器 | |
CN108268349B (zh) | 一种基于intel avx指令集的浮点峰值计算吞吐测试方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110817 |