椭圆曲线加密算法的协处理器的制作方法

文档序号:7633072阅读:231来源:国知局
专利名称:椭圆曲线加密算法的协处理器的制作方法
技术领域
本实用新型涉及椭圆曲线算法在IC卡中的芯片的实现,特别是一种椭圆曲线(ECC)加解密协处理器。
背景技术
随着计算机网络的迅速发展,相互之间进行通信的用户数量的增多,RSA等公钥密码体制的公钥位数大(一般为1024比特以上)的弱点逐渐暴露出来。在提供同样安全等级的情况下,椭圆曲线密码系统具有更短的密钥长度。智能IC卡(集成电路)常用在安全性要求比较高的场合。相对于传统的磁条卡或者存储卡,智能卡内部有mcu,不仅处理能力加强,而且提高了系统的保密能力。而智能卡,为安全原因所增加的成本却不能太多。由于椭圆曲线密码的密钥较短,这可以为智能卡节省较多的存储空间,不仅能降低智能卡成本,同时也使得其它程序可利用更多的存储器来完成更复杂的任务。椭圆曲线密码系统(ECC)在1985年分别由Victor Miller和Neal Koblitz独立提出。其安全性是基于椭圆曲线上的加法群的离散对数问题(ECDLP)求解的困难性。随着计算能力的提高需要密钥长度的增加,ECC相对其它公钥密码系统(RSA)相比更具优势。由于它的每位具有更高的安全性,导致它的运算速度高,同时节约功耗,带宽,存储空间和证书长度。
ECC加密中核心运算就是点乘运算,由于它计算步骤的复杂性,所以一般只有一些基本计算用硬件实现,而大部分采用软核的方式来实现。对于时钟频率较低的设备,它的软硬件交互太多,导致运算的速度慢。而一些高速实现的设计中,芯片的面积偏大。

发明内容
本实用新型目的是提出了一种在IC卡上的椭圆曲线加密算法的协处理器,在满足系统安全性前提下,加快运算速度,减小芯片面积,从而降低用户成本。
本实用新型的上述目的是这样实现的,一种椭圆曲线加解密协处理器,其特征在于包括一个指令译码器;一个运算控制器;一个基本运算控制器;一个基本运算器;寄存器组;I/O缓冲模块;多路选通器;其中所述指令译码器与运算控制模块和I/O缓冲器相连;所述运算控制器与指令译码器、多路选通器和基本运算控制器分别相连;所述基本运算控制器与运算控制器和基本运算器相连;所述基本运算器与基本运算控制器和多路选通器相连;所述I/O缓冲器与寄存器组和指令译码器相连;所述寄存器组与I/O缓冲器和选通器相连;所述多路选通器与寄存器组和基本运算器相连。
其中,指令译码器(1)具有接收外部mcu的wr写信号、rd读信号、rst复位信号、8位的addr地址信号的输入端;向运算控制器输出4个经译码产生的启动信号的输出端;向控制I/O缓冲器输出经译码产生的读/写数据的信号的输出端;接收从运算控制器返回的状态值的输入端。
其中,运算控制器包括分别控制完成预计算(22nmod p)、点加(P1+P2)、倍点(2P)和求逆运算(Z-1mod p)的4个有限状态机和一个8位的计数器,用于向指令译码器返回状态值,以及产生控制多路选通器完成寄存器组与基本运算器之间数据交换的信号。
其中,基本运算控制器具有分别控制完成模乘、模减运算的2个有限状态机和一个7位的计数器。
其中,基本运算器包括蒙哥马利模乘电路、全加电路和临时寄存器。
其中,I/O缓冲器包括192位的buff寄存器。
其中,寄存器组包括多个寄存器。
其中,多路选通器具有接收来自运算控制器的读写信号的输入端。
其中,寄存器组模块分别存储加解密所需的192位模数p、明文或密文、中间临时变量、以及椭圆曲线参数a。
其中,基本运算器中的模乘电路和全加电路使用高速全加器和2级流水的蒙哥马利模乘器。
本实用新型的技术效果是接口方式的简单,不需要与外部mcu做握手信号。采用状态机方式,使运算速度大大加快。将预计算,求逆,点加,倍点运算转化为基本的蒙哥马利模乘和全加,规整了计算操作,减少中间步骤。合理的进行寄存器的调度,减少了寄存器的个数。整个点乘部分由外部mcu调度协处理完成,其它运算部分均由硬件完成。这样仅根据外部数据和地址总线的宽度略做调整,就可以满足不同宽度数据的加解密。
以下结合附图对本实用新型进行详细说明。


图1是本实用新型的椭圆曲线(ECC)加解密协处理器的配置图;图2是图1中的基本运算器的电路图;图3示出了图1中预计算状态机21的工作过程;图4示出了图1中点加控制机22的工作过程;图5示出了图1中求逆控制机24的工作过程;图6示出了图1中模乘控制机31的工作过程;图7示出了图1中减法控制机32的工作过程;图8是显示了外部mcu调度的流程图。
具体实施方式
一般来说,本实用新型提供了运算控制器2;模乘及加法等基本运算器4;寄存器组6;译码及输入出缓冲电路1,5。其中译码1及输入出缓冲模块5通过双向数据线、外部地址、数据总线,和外部交换数据;外部数据写入输入出缓冲模块5后,运算控制器2产生控制信号将输入出缓冲寄存器中的数据读出,写入寄存器组的相应单元,当所需运算数据写完后,运算控制器2依次启动加/解密过程,相继启动4个状态机,运算中产生的中间数据,经过多路选通器从基本运算器写入寄存器组6;同时,运算控制器2还接收基本运算控制器3的状态信号。运算控制器2还会向指令译码器1返回其状态值。输入出缓冲器5还将向外部CPU发出内部运算状态信号。
参见图1本实用新型的椭圆曲线加解密协处理器包括一个指令译码器1;一个运算控制器2;一个基本运算控制器3;一个基本运算器4;寄存器组6;I/O缓冲模块5;多路选通器7。其中,所述运算控制器2和基本运算控制器3可以由CPU、微处理器等计算部件实现。
所述指令译码器1与运算控制模块2和I/O缓冲器5相连;所述运算控制器2与指令译码器1、多路选通器7和基本运算控制器3分别相连;所述基本运算控制器3与运算控制器2和基本运算器5相连;所述基本运算器4与基本运算控制器3和多路选通器7相连;所述I/O缓冲器5与寄存器组6和指令译码器1相连;所述寄存器组6与I/O缓冲器5和选通器7相连;所述多路选通器7与寄存器组5和基本运算器4相连。
从图1中可以看到,指令译码器1具有接收外部mcu的wr写信号、rd读信号、rst复位信号、8位的addr地址信号的输入端;向运算控制器2输出4个经译码产生的启动信号的输出端;向控制I/O缓冲器输出经译码产生的读/写数据的信号的输出端;接收从运算控制器2返回的状态值的输入端。
其中,运算控制器2包括分别控制完成预计算(22nmod p)、点加(P1+P2)、倍点(2P)和求逆运算(Z-1mod p)的4个有限状态机和一个8位的计数器,用于向指令译码器返回状态值,以及产生控制多路选通器7完成寄存器组与基本运算器5之间数据交换的信号。
基本运算控制器3具有分别控制完成模乘,模减运算的2个有限状态机和一个7位的计数器。
基本运算器4包括蒙哥马利模乘电路、全加电路和临时寄存器。
I/O缓冲器5包括192位的buff寄存器。
寄存器组6包括多个寄存器。
多路选通器7具有接收来自运算控制器2的读写信号的输入端。
寄存器组模块6分别存储加解密所需的192位模数p、明文或密文、中间临时变量、以及椭圆曲线参数a。
基本运算器4中的模乘电路和全加电路使用高速全加器和2级流水的蒙哥马利模乘器。
另外在本实用新型中,运算控制器2和基本运算控制器3都会产生数据转移信号,控制多路选通器7,完成数据在4和6之间的交换。使得在点加和倍点运算中,即最大限度的利用了前面的计算结果,又省去了不必要的寄存器。
相应的芯片内部控制流程如图8。指令译码器接收外部CPU产生的信号,译码发出Start开始信号,启动输入出缓冲器准备接受数据。随后将点的坐标值x,y,z和椭圆曲线参数a以及素数p分别从安全的EEPROM中取出送入输入出缓冲器中的buff寄存器中。再由输入出缓冲器控制将buff中的数值送入寄存器组的Ti中。启动蒙哥马利预计算单元,采用移位模的方式完成R的计算。分别将x,y,z,a,p与R做蒙哥马利模乘。外部mcu根据[k]中1的个数,启动相应的点加和倍点运算,经过点加和倍点控制流程(用点加和倍点控制机完成),将结果存入相应的寄存器Ti中。启动求逆过程,将结果换为仿射坐标。最后仿射坐标值x,y与数1做蒙哥马利模乘,把结果换回正常值。通过输入出缓冲器向外部mcu发出Ready信号。
再参见图1,在上述的实现IC卡ECC加密算法的协处理器中,运算控制器包括一个8位的状态计数器,由计数器抽头产生的控制逻辑根据状态控制信号的不同反过来作用于计数器,形成4个有限状态机。它与指令译码器1和基本运算控制器3分别相连。4个有限状态机,分别控制完成预计算(22nmodp),点加(P1+P2),倍点(2P)和求逆运算(Z-1mod p)。同时控制7完成寄存器组6与基本运算器4之间的数据交换,其内部状态返回指令译码器1。
指令译码器根据输入信号的变化,译码产生Pre_S信号,用于启动预计算状态机;产生Ad_P,Db_P信号,用于点加和倍点计算状态机;产生Inv_S信号,用于启动求逆状态机。
预计算状态机控制信号序列中会产生,Pre_work,T6_X,(-N)_Y信号。点加和倍点状态机控制信号序列中会产生Mont_S,Sub_S,Ti_X,Ti_Y,X_Ti,Y_Ti等信号。求逆状态机控制信号序列中会产生Mont_S,T1_X,T1_Y等信号。在这些信号序列的控制下,完成点乘运算。其中预计算控制机,在工作状态下会启动2中的计数器counter,记录循环次数。
4个状态机分别完成四种不同运算。预计算中,用每次左移1位减p的方式完成。如图4,点加计算中,共产生16次模乘,3次全加,5次模减操作。倍点计算中,共产生10次模乘,5次全加,3次模减操作。运算控制器3向指令译码器1返回的状态值A_Sta位宽为4,每位分别表示4个状态机的状态,由Pre_R,Ad_R,Db_R,Inv_R组成。
在图1中,从基本运算控制器3返回运算控制器2的信号M_Sta位宽为2,每位分别表示蒙哥马利模乘,模减的状态,由Mont_R和Sub_R组成。
基本运算控制器3包括7位的计数器单元,和模乘,模减两个有限状态机。如图6,7,每个状态机都会产生基本运算器内部寄存器的工作信号,读写信号,移位信号,选通信号的一个序列控制完成模乘,模减运算。内部计数器用于控制模乘的循环次数。
运算控制器2给基本运算控制器3的控制信号有Sub_S,Mont_S两个状态机的启动信号,3返回给2的A_Sta信号,它包括Sub_R,Mont_R两个状态机的结束信号。
如图2所示,基本运算器4包括模乘器,全加器,存储器单元。它通过一个多路选通器,与寄存器组相连。运算控制器2产生读写信号控制6中寄存器Ti到4中X,Y,R操作数寄存器,或者反之。基本运算单元中,模乘电路和全加电路构成了单元的主体。存储单元中,5个200位的寄存器存储加法,减法和乘法时的操作数,一般情况下寄存器N中存大素数p,循环移位寄存器X存储另一个乘数。为了模减和加法的方便,将192位数扩展符号位后成为200位进行计算。寄存器X和Temp都是循环移位寄存器。图中信号Pre_work由21中产生,控制全加器的操作数来自Y和N寄存器,每个clk的结果存入Y寄存器中。信号Sel_Temp,Sel_Y,Sel_R控制全加器结果送入相应寄存器中。信号X_R,#(-2)_R将X寄存器中的数或常数值-2送入R寄存器中。信号Mul_work,Mul_sel->Add由31中产生,前者表示模乘进行中,控制中间值寄存器C0,S0寄存器的输入和寄存器X的移位;后者控制4:2加法器的结果做全加。信号Mov_T产生于24,控制寄存器Temp的移位。其中C0,S0是200位的寄存器。X,Y是200位的移位寄存器,作为模乘的两个乘数寄存器。寄存器N放素数p。R和Y作为全加器的两个输入。两级加法器完成4个输入,2个输出的加法,延时仅为二位全加延时。而200位的全加器采用的是文献“A.Satoh,N.Ooba,K.Takano and E.D’Avignon,“High-speedMARS hardware,”Third Advanced Encryption Standard(AES)CandidateConference,April 2000”提到的全加器,它的全加延时仅相当于30个一位全加延时。在工作频率不高的环境下(5-50M),200位的全加最多二个时钟周期内就可完成。模乘的初始阶段通过4中全加器预计算R的值,而后开始执行100次的循环,最后再控制全加器完成一次全加操作计算出模乘的结果。加上控制逻辑和寄存器存取时间,一次192位的模乘共需103个时钟周期。做全加时,直接由将寄存器R和Y中的值送入全加器,计算出结果根据图中选择信号,决定送入哪个寄存器。做模减操作时,事实上是做了2次的全加,一次加上减数的补码,一次加上N的2l(l=1,2,3)。计算路径与全加类似。C00表示C0寄存器的最低位,C>>2表示数据线在该处右移2位,Mux/logic表示部分逻辑和选通器。部分逻辑中包括N寄存器的值扩展成2lN,寄存器Y中的值取反,符号位判断等简单逻辑。
寄存器组,它与多路选通器7和输入出缓冲模块5相连。它包括寄存器Ti(i=1…7)。寄存器Ti(i=1…6)存储点的坐标或点加和倍点时的临时结果,T7寄存器存储椭圆曲线参数a的值。各寄存器初始值为T1=Z1,T2=Y0,T3=X0,T4=Z0,T5=Y1,T6=X1。这里的每个寄存器都与基本运算器里的寄存器建立有数据通路。如图1,其中Ti_X,Ti_Y等(i=1…6)表示每个寄存器之间的传输信号。
输入出缓冲模块5,其与指令译码器1和寄存器组模块6相连。内含一个8位循环移位的192位寄存器,它将送入的8位数据拼成192位。输出数据时,将192位的数据8位送出。
如图3,预计算22nmod p,采用循环移位加负p的方式实现。设p是192位的数,由于它是素数,它的首末位都是1。负p在硬件中,通过191个反相器直接将p的1-191位取反,最低位保持不变即可。第一步,将p取成负p。第二步,左移一位,与负p做一次全加,根据结果的符号位决定是取全加后的值还是原值。实际上这一步做了一次乘2和模p的操作。由计数器控制,依次循环执行这一步192次,即可得到22nmod p的值,存入基本运算模块里乘数寄存器中,预计算结束。启动相应点加和倍点运算的预处理,即分别将x,y,z,a送入另一个乘数寄存器,做蒙哥马利模乘,后送入寄存器组模块相应寄存器中。
从上述的体系结构看,本发明的协处理器在数据处理的规整性,可并行性,器件的复用性,可重构性上具有创新性。本发明最大的特点在于用加法器和状态机实现了椭圆曲线中的模加,模减,模乘以及求逆计算。相对于以前的基于专门的乘法器,加法器,除法器的结构,有效降低了芯片的面积;同时合理安排点乘过程中的计算序列和存储器的使用,采用多路选通器,最大程度上利用前面的运算结果而又不增加太多的寄存器,从而提高了点乘的运算速度。
下面参照图3至图7说明预计算状态机21、点加控制机22、倍点点加控制机23、求逆控制机24、模乘控制机31和减法控制机32的操作过程。
首先参见图3,预计算状态机21操作如下空闲没有其它信号激励或复位情况,对外不产生控制信号。启动 发出内部信号(-N)->Y,控制4的N寄存器中的数取反加1送入Y寄存器。具体见预计算22nmod p。
工作产生内部信号Pre_work,该信号有效时,2中counter计数器开始计数,每个clk,4中全加器的两个输入分别是2*Y和(-N),其结果送入Y寄存器。
完成产生内部信号Pre_ready和T7_X,Y_R,将6中寄存器T7的数送入4中X寄存器。信号Pre_ready从5中data_out数据线送出。参见图4,点加控制机22操作如下启动产生信号T1->X,Y。


倍点点加控制机23的操作类似点加控制机22的操作,即启动产生信号T1->X,Y。

上述寄存器器T1…T7在6中,寄存器X,Y,R,Temp在4中。
参见图5,求逆控制机24操作如下空闲没有其它信号激励或复位情况,对外不产生控制信号。
预备产生信号#-2->R,将4中寄存器R的值置为-2,同时打开全加通路,计算N+R。
启动产生信号sel->Temp,将4中全加结果送入Temp寄存器中。同时产生信号T1->X,Y。控制6的T4寄存器中的数送入4中X,Y寄存器。
态1产生信号Mont_S,启动模乘状态机。
缓冲根据Temp[0]中的值,产生T1->Y信号。产生4中Temp寄存器的移位信号Mov_T,同时启动2中counter计数器加1。
态2产生信号Mont_S,启动模乘状态机。
完成产生信号Inv_ready,信号Inv_ready从5中data_out数据线送出。
参见图6,模乘控制机31操作如下空闲没有其它信号激励或复位情况,对外不产生控制信号。
预备产生信号打开全加通路,计算Y+N。
启动产生信号sel->R,将4中全加结果送入R寄存器中。
态1产生信号Mul_work,启动4中counter1计数器。
态2产生Mul_sel->Add,进行全加。
完成产生Sel->X,Y,把全加结果送入4中X,Y寄存器。产生信号Mont_R,信号Mont_R从3中返回2。
参见图7,减法控制机32操作如下空闲没有其它信号激励或复位情况,对外不产生控制信号。
态1产生信号打开全加通路N+R。
态2产生信号Sel->R。打开全加通路Y+R。
完成产生信号Sel->R。产生信号Sub_R,信号Mont_R从3中返回2。
下面参照图1说明该协处理器外部引脚功能wr1bit;wr为高,表示外部mcu要写数据。
rd1bit;rd为高,表示外部mcu要读数据。
clk1bit;系统时钟。
rst1bit;硬复位信号,低有效。
addr8bits;地址线。
data_in8bits;数据输入线。
data_out8bits;数据输出线。
Mcu控制协处理器完成点乘运算的流程1)soffreset2)循环执行BUS->Buff指令24次,送192位的素数p。
3)buff->N4)循环执行BUS->Buff指令24次,送192位的P点X的坐标值Px。
5)buff->T36)循环执行BUS->Buff指令24次,送192位的P点Y的坐标值Py。
7)buff->T28)循环执行BUS->Buff指令24次,送192位的P点Z的坐标值Pz。
9)buff->T410)循环执行BUS->Buff指令24次,送192位的椭圆曲线参数a。
11)buff->T712)Pre_S //开始预计算13)Pre_Ready //mcu从总线上读到14)Mont_M//开始蒙哥马利模乘15)Mont_Ready//mcu从总线上读到16)X->T7//4中寄存器X的值送入6中T7寄存器17)R->X //4中寄存器R的值送入4中X寄存器18)T3->Y19)Mont_M20)Mont_Ready21)X->T3,T622)R->X23)T2->Y24)Mont_M25)Mont_Ready26)X->T2,T5
27)R->X28)T4->Y29)Mont_M30)Mon_Ready31)X->T4,T132)For(i=1;i<192;i++)33)Db_S34)Db_Ready35)ifki为136)Ad_S37)Ad_Ready38)End39)Inv_S //开始求逆40)Inv_Ready41)X_R42)Mont_S43)Mont_Ready44)X_Temp45)T6_Y46)Mont_S47)MonT_Ready48)X_T649)Temp_Y50)R_X51)Mont_S52)Mont_Ready53)T5_Y54)Mont_S55)Mont_Ready
56)Set_one57)Mont_S58)Mont_Ready59)X_T560)Set_one61)T6_Y62)Mont_S63)Mont_Ready64)T6_Buff65)循环执行Buff->Bus指令24次,送出192位的P点X的坐标值Px。
66)T5_Buff67)循环执行Buff->Bus指令24次,送出192位的P点Y的坐标值Py。
第1-11步送192位的素数p,点P的X,Y,Z和参数a。
第12-31步预计算与预处理。
第32-38步点乘。
第39-41步求逆。
第42-64步将P点坐标值由jacobin坐标转化为仿射坐标。
第65-67步送出。
权利要求1.一种椭圆曲线加解密协处理器,其特征在于包括一个指令译码器(1);一个运算控制器(2);一个基本运算控制器(3);一个基本运算器(4);寄存器组(6);I/O缓冲模块(5);多路选通器(7);其中所述指令译码器(1)与运算控制模块(2)和I/O缓冲器(5)相连;所述运算控制器(2)与指令译码器(1)、多路选通器(7)和基本运算控制器(3)分别相连;所述基本运算控制器(3)与运算控制器(2)和基本运算器(5)相连;所述基本运算器(4)与基本运算控制器(3)和多路选通器(7)相连;所述I/O缓冲器(5)与寄存器组(6)和指令译码器(1)相连;所述寄存器组(6)与I/O缓冲器(5)和选通器(7)相连;所述多路选通器(7)与寄存器组(5)和基本运算器(4)相连。
2.根据权利要求1所述的椭圆曲线加解密协处理器,其特征在于,指令译码器(1)具有接收外部mcu的wr写信号、rd读信号、rst复位信号、8位的addr地址信号的输入端;向运算控制器(2)输出4个经译码产生的启动信号的输出端;向控制I/O缓冲器输出经译码产生的读/写数据的信号的输出端;接收从运算控制器(2)返回的状态值的输入端。
3.根据权利要求1所述的椭圆曲线加解密协处理器,其特征在于,运算控制器(2)包括分别控制完成预计算、点加、倍点和求逆运算的4个有限状态机和一个8位的计数器,用于向指令译码器返回状态值,以及产生控制多路选通器(7)完成寄存器组与基本运算器(5)之间数据交换的信号。
4.根据权利要求1所述的椭圆曲线加解密协处理器,其特征在于,基本运算控制器(3)具有分别控制完成模乘,模减运算的2个有限状态机和一个7位的计数器。
5.根据权利要求1所述的椭圆曲线加解密协处理器,其特征在于,基本运算器(4)包括蒙哥马利模乘电路、全加电路和临时寄存器。
6.根据权利要求1所述的椭圆曲线加解密协处理器,其特征在于,I/O缓冲器(5)包括192位的buff寄存器。
7.根据权利要求1所述的椭圆曲线加解密协处理器,寄存器组(6)包括多个寄存器。
8.根据权利要求1所述的椭圆曲线加解密协处理器,其特征在于,多路选通器(7)具有接收来自运算控制器(2)的读写信号的输入端。
9.根据权利要求1所述的椭圆曲线加解密协处理器,基本运算器(4)中的模乘电路和全加电路使用高速全加器和2级流水的蒙哥马利模乘器。
专利摘要本实用新型是一种椭圆曲线加解密协处理器,其特征在于包括一个指令译码器;一个运算控制器;一个基本运算控制器;一个基本运算器;寄存器组;I/O缓冲模块;多路选通器;其中所述指令译码器与运算控制模块和I/O缓冲器相连;所述运算控制器与指令译码器、多路选通器和基本运算控制器分别相连;所述基本运算控制器与运算控制器和基本运算器相连;所述基本运算器与基本运算控制器和多路选通器相连;所述I/O缓冲器与寄存器组和指令译码器相连;所述寄存器组与I/O缓冲器和选通器相连;所述多路选通器与寄存器组和基本运算器相连。本实用新型简化了外部控制,减少了与外部MCU的交互,提高了点乘的运算速度。
文档编号H04L9/30GK2864808SQ20052014661
公开日2007年1月31日 申请日期2005年12月23日 优先权日2005年12月23日
发明者张昌金, 孙晋文, 王涛, 苏斌 申请人:航天信息股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1