Ecc协处理器的制作方法

文档序号:6432236阅读:123来源:国知局
专利名称:Ecc协处理器的制作方法
技术领域
本发明涉及公钥密码算法的实现技术,更具体而言涉及大整数模乘、模加/模减、 模幂以及素数域上椭圆曲线的点加/点倍运算的硬件实现。
背景技术
当前主流的公钥密码算法有RSA和椭圆曲线密码(ECC)两种,RSA是基于大整数运算实现的,ECC—般基于两种有限域二元扩域和素数域(Fp),其中Fp上ECC的实现也基于大整数运算,这使得RSA和Fp上的ECC很方便用同一个协处理器实现,因此Fp上的ECC 协处理器大都同时支持ECC和RSA算法。ECC协处理器一般为一个集成电路(IC)模块,最典型的型态是IP核。为了满足应用对于ECC性能的要求,一般采用软硬件协同的方式实现ECC算法将一些耗时的关键运算用ECC协处理器实现,其余部分用外部控制器的软件实现。实现ECC 算法涉及到的运算包括大整数运算(模乘、模加/模减、模逆)和有限域上的椭圆曲线点运算(点力卩、点倍、点乘),而ECC协处理器选择实现哪些运算将导致其功能定义和实现结构的差异。根据现有的ECC协处理器的功能定义可分为两大类1、不实现椭圆曲线点运算; 2、实现椭圆曲线点运算。不实现点运算的ECC协处理器仅实现大整数运算,需要外部控制器用软件实现椭圆曲线点运算,再实现完整的ECC算法,这导致ECC算法的实现效率不高。但是这种ECC协处理器的优点在于外部控制器中ECC实现软件的灵活性很大。对于实现点运算的ECC协处理器,ECC算法中用外部控制器软件实现的部分较少, 因此ECC算法的实现效率较高。这类ECC协处理器对外提供的点运算功能(点加、点倍、 点乘)、点的坐标形式(仿射坐标、投影坐标、雅可比坐标),都会影响外部控制器中ECC实现软件的灵活性。现有实现点运算的ECC协处理器一般都实现点乘运算,对外提供点加、点倍、点乘功能,虽然在ECC协处理器的内部运算过程中,点的坐标会采用投影坐标或雅可比坐标,但在所有点运算的对外接口中,椭圆曲线点的坐标选择为仿射坐标,这会限制外部控制器中用软件实现点乘及整个ECC算法的灵活性。因此,需要设计一款运算效率高、电路面积小,且能支持外部控制器灵活实现多种点乘运算(包括各种特殊点乘)的ECC协处理器,同时支持RSA算法。

发明内容
本发明从ECC协处理器的功能定义、实现算法设计、电路结构设计三方面综合考虑,提出一种Fp上的ECC协处理器,具有运算效率高、电路面积小、实用性强(支持外部控制器用软件灵活实现多种点乘算法)的优点,本协处理器还支持RSA算法。根据本发明的一个实施例,提供一种ECC协处理器,对外提供椭圆曲线点加/点倍运算功能,点加和点倍运算的对外接口中椭圆曲线点的坐标采用雅可比坐标以支持外部控制器灵活实现多种点乘运算。 另外,上述ECC协处理器还对外提供大整数模乘、模加/模减和模幂运算功能。另外,上述ECC协处理器外部需要连接外部控制器,内部包含复杂运算控制单元和模运算单元。另外,上述复杂运算控制单元可以包括模幂控制单元、点加控制单元和点倍控制单元;模运算单元包括大整数运算控制单元和基本运算单元,其中大整数运算控制单元包括模加/模减控制单元和模乘控制单元,基本运算单元包括乘法器和累加器,其中,复杂运算控制单元基于相应的运算命令被启动,产生运算控制信号序列给模运算单元以完成相应的运算;模运算单元基于相应的运算命令或从复杂运算控制单元接收的运算控制信号序列来完成相应的运算。另外,当运算命令为点加运算命令时,点加控制单元被启动,产生点加运算控制信号序列并提供给大整数运算控制单元以完成点加运算;当运算命令为点倍运算命令时,点倍控制单元被启动,产生点倍运算控制信号序列并提供给大整数运算控制单元以完成点倍运算;当运算命令为模幂运算命令时,模幂控制单元被启动,产生模幂运算控制信号序列并提供给模乘控制单元以完成模幂运算。另外,模乘控制单元在当运算命令为模乘运算命令或者当从复杂运算控制单元接收到点加、点倍或模幂运算控制信号序列时被启动,产生模乘运算控制信号序列并提供给基本运算单元以完成模乘运算;模加/模减控制单元在当运算命令为模加运算命令或模减运算命令或者当从复杂运算控制单元接收到点加或点倍运算控制信号序列时被启动,产生模加/模减运算控制信号序列并提供给累加器以完成模加/模减运算。另外,乘法器响应模乘运算控制信号序列中的乘法信号来执行乘法运算并输出乘法运算结果;累加器响应模乘运算控制信号序列和模加/模减运算控制信号中的累加信号来执行累加运算并输出累加运算结果。本发明的ECC协处理器还可以包括接口总线,命令/状态寄存器,译码控制单元, 数据寄存器,双端口 SRAM。外部控制器经接口总线将运算命令写入命令/状态寄存器,或从命令/状态寄存器中读出状态字。译码控制单元对命令/状态寄存器中接收到的运算命令进行译码,产生相应的运算控制信号,启动复杂运算控制单元或模运算单元完成相应的运算,运算结束后通过设置命令/状态寄存器中的状态字通知外部控制器运算已经结束。数据寄存器可以包括蒙哥马利常数寄存器MC,存储模乘运算所需的蒙哥马利常数;模字长寄存器NLen,存储模乘、模加/模减运算的模的字长,供模乘控制单元和模加/模减控制单元控制基本运算(乘法、累加)的循环次数;幂指数寄存器EReg,存储模幂运算所需的幂指数。双端口 SRAM接收并存储经从外部输入的除蒙哥马利常数、模的字长和幂指数之外所有运算输入数据,接收并存储来自基本运算单元的中间数据和结果数据,向基本运算单元提供运算输入数据,存储的各种运算的结果数据可供外部控制器读出。另外,上述的幂指数寄存器EReg为一个字长,幂指数被按字长分段传送到EReg, 外部控制器通过循环设置EReg来完成一次完整的模幂运算。另外,上述的模幂运算支持基于费马小定理的模逆运算。


图1是根据外部控制器与本发明的ECC协处理器的连接关系示意框图,外部控制器通过调用ECC协处理器的功能实现完整的ECC算法。图2是根据本发明的一个实施例的图1所示的ECC协处理器中的主要运算单元结构示意框图。图3是根据本发明的一个实施例的图2所示的ECC协处理器的详细结构示意图。图4 是根据本发明的一个实施例的外部控制器调用本发明的ECC协处理器完成一次运算的流程图。
具体实施例方式在下文中将结合附图对本发明的示范性实施例进行描述。为了清楚和简明起见, 在说明书中并未描述实际实施方式的所有特征。然而,应该了解,在开发任何这种实际实施例的过程中必须做出很多特定于实施方式的决定,以便实现开发人员的具体目标,并且这些决定可能会随着实施方式的不同而有所改变。此外,还应该了解,虽然开发工作有可能是非常复杂和费时的,但对得益于本公开内容的本领域技术人员来说,这种开发工作仅仅是例行的任务。在此,还需要说明的一点是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的装置结构,而省略了与本发明关系不大的其他细节。下面结合附图来详细描述本发明。图1是根据本发明的实施例的实现ECC算法的外部控制器和ECC协处理器的连接关系图。外部控制器通过调用ECC协处理器的功能实现完整的ECC算法。参见图1,完整的 ECC实现方案包括ECC协处理器1和外部控制器2。ECC协处理器1提供包括点加、点倍运算的运算单元,ECC协处理器1的点加和点倍运算的对外接口中椭圆曲线点的坐标采用雅可比坐标。点乘运算由外部控制器2基于ECC协处理器1的点加、点倍运算来通过软件来实现。根据本发明的实施例,ECC协处理器对外提供雅可比坐标的点加和点倍运算,可以支持外部控制器灵活实现多种点乘运算。根据本发明的一个实施例,外部控制器2与ECC协处理器1相耦接,基于运算命令或程序命令来调用ECC协处理器1执行相应的运算。下面参照图2来详细描述图1的ECC协处理器1的主要运算单元结构。图2是根据本发明的一个实施例的ECC协处理器的主要运算单元结构框图,包括复杂运算控制单元 11和模运算单元12,其中复杂运算控制单元11通过对模运算单元12进行控制以执行复杂运算(点加、点倍和模幂)。根据本发明的一个实施例,复杂运算控制单元11基于运算命令产生复杂运算控制信号序列即点加运算控制信号序列、点倍运算控制信号序列或模幂运算控制信号序列并将其发送给模运算单元12,模运算单元12在相应的运算控制信号序列的控制下执行完成相应的复杂运算。下面进一步参照图3来详细描述图2的ECC协处理器1。图3是根据本发明的一个实施例的ECC协处理器的更加详细的结构框图。如图3所示,具体地,图2的复杂运算控制单元11包括点加控制单元111、点倍控制单元112、模幂控制单元113,其中,点加控制单元111在运算命令cmd为点加运算命令时,产生点加运算控制信号序列,并将点加运算控制信号序列提供给模运算单元12以完成点加运算;点倍控制单元112在运算命令cmd为点倍运算命令时,产生点倍运算 控制信号序列,并将点倍运算控制信号序列提供给模运算单元12以完成点倍运算;模幂控制单元113在运算命令cmd为模幂运算命令时,产生模幂运算控制信号序列,并将模幂运算控制信号序列提供给模运算单元12以执行模幂运算。如图 3所示,模运算单元12包括大整数运算控制单元121和基本运算单元122。大整数运算控制单元121包括模乘控制单元1211,模乘控制单元1211在当运算命令cmd为模乘运算命令或者从复杂运算控制单元接收到点加、点倍或模幂运算控制信号序列时被启动,产生并输出模乘控制信号序列给基本运算单元122 ;和模加/模减控制单元1212,模加/模减控制单元1212在当运算命令cmd为模加/模减运算命令或者从复杂运算控制单元接收到点加或点倍运算控制信号序列时被启动,产生并输出模加/模减控制信号序列给基本运算单元 122。如图3所示,基本运算单元122包括乘法器1221和累加器1222。乘法器1221响应于模乘控制信号序列中的乘法信号来执行乘法运算并输出乘法运算结果,累加器1222响应于模乘控制信号或模加/模减控制信号中的累加信号来执行累加运算。此外,进一步地,本发明的ECC协处理器1还可以包括接口总线,接口总线实现外部控制器2与ECC协处理器1的数据、命令cmd和状态sta的读写访问;命令/状态寄存器 CSR,外部控制器2将运算命令cmd写入命令/状态寄存器CSR,从命令/状态寄存器CSR中读出的是ECC协处理器1的状态字sta ;译码控制单元,译码控制单元对CSR中的运算命令 cmd进行译码来启动相应的运算控制单元,其中包括复杂运算控制单元11和模运算单元12 中的大整数运算控制单元121 ;三个数据寄存器蒙哥马利常数寄存器MC存储蒙哥马利常数mc,mc是蒙哥马利模乘运算过程中一些乘法运算所需要的输入参数,模字长寄存器NLen 存储模η (η是一个大整数,存储在双端口 SRAM的指定单元中)的字长nlen,乘法器的位长为m (即m * m乘法器),则η的位长是nlen ^ m,nlen是模乘控制单元和模加/模减控制单元必需的输入参数,决定了相应运算的循环次数,幂指数寄存器EReg存储幂指数e的一个字,e是模幂控制单元必需的输入参数,决定了模幂运算的循环次数及运算过程,由于e 可能是一个跟η —样长度的大整数,为了节省电路面积,将EReg设置为一个字长的寄存器, 外部控制器2将e按照字长分段,每次往EReg中写入e的一个字,通过循环设置完成一次完整的模幂运算。双端口 SRAM,接收并存储从外部输入的除蒙哥马利常数、模的字长和幂指数之外所有运算输入数据,接收并存储来自基本运算单元的结果数据,向基本运算单元提供运算输入数据,并且所存储的结果数据经由接口总线可被外部控制器读出。如上所述,译码控制单元根据外部控制器2写入命令/状态寄存器的运算命令cmd 进行译码来启动相应的运算控制单元,例如,当运算命令cmd为点加、点倍或模幂运算命令时,点加控制单元111、点倍控制单元112和模幂控制单元113被启动来控制和执行点加、点倍或模幂运算;而当运算命令cmd为模乘或模加/模减命令时,模乘控制单元1211或模加 /模减控制单元1212被启动来执行模乘或模加/模减运算。ECC协处理器内各种运算控制单元的启动及运算完成的过程如下。1、模加/模减如上所述,译码控制单元、点加控制单元、点倍控制单元都可以启动模加/模减控制单元,模加/模减控制单元根据模的字长nlen确定循环次数,通过控制累加器完成大整数模加/模减运算。2、模乘如上所述,译码控制单元、模幂控制单元、点加控制单元、点倍控制单元都可以启动模乘控制单元,模乘减控制单元根据模的字长nlen确定循环次,通过控制乘法器和累加器完成大整数模乘运算。3、模幂如上所述,当运算命令cmd是模幂运算命令时,译码控制单元启动模幂控制单元,模幂控制单元根据幂指数e,通过控制模乘控制单元完成模幂运算。外部控制器2 将幂指数e按照字长分段送往EReg,通过循环设置EReg完成一次完整的模幂运算。这里, 模幂运算支持基于费马小定理的模逆运算。因此,本发明的ECC协处理器不需要专门的模逆控制单元。4、点加如上所述,当运算命令cmd是点加运算命令时,译码控制单元启动点加控制单元,点加控制单元产生点加运算控制信号序列来控制模乘控制单元、模加/模减控制单元完成点加运算。点加运算的输入为两个雅可比坐标点=KX1, Y1, Z1)和J(X2,Y2,l),输出为一个雅可比坐标点J(X3,Y3, Z3),其运算公式为=KX1, Y1, Z1)+J (X2, Y2,1) = J (X3, Y3,Z3), A = Z2Z12 , B = Y2Z\ , C = A-X1, D = B-Y1, X3 = D2- (CMX1C2),Y3 = D (X1C2-X3) -Y1C3,Z-^Co5、点倍如上所述,当运算命令cmd是点倍运算命令时,译码控制单元启动点倍控制单元,点倍控制单元产生点倍运算控制信号序列来控制模乘控制单元、模加/模减控制单元完成点倍运算。点倍运算的输入为一个雅可比坐标点=KX1, Y1, Z1),输出为一个雅可比坐标点J(X3,Y3, Z3),其运算公式为2ΚΧ” Y1, Z1) = J (X3, Y3, Z,), A = ^X1Y121 B = SY14 f
C = 3Xj2 + ^Z14,X3 = C2-2A, Y3 = C (A-X3) -B, Z3 = ZY1Z10图4是根据本发明的一个实施例的外部控制器调用本发明的ECC协处理器完成一次运算的流程图。Si,通过读CSR中的sta或检测R/B的电平,判断ECC协处理器是否处于空闲 (Ready)状态,如果是则可以进行下面的操作,否则需要等待;S2,根据运算对mc、nlen或e的需要,设置相应的MC、NLen或EReg寄存器;S3,将运算的输入参数写入双端口 SRAM的指定单元中;S4,往CSR中写入cmd,启动ECC协处理器运算;S5,ECC协处理器改变CSR中的sta和R/B的电平,表示处于忙碌(Busy)状态,译码控制单元根据cmd启动相应的运算控制单元完成运算;S6,运算完成后,ECC协处理器改变CSR中的sta和R/B的电平,表示运算已经完成,处于空闲(Ready)状态;S7,外部控制器2监测到sta或R/B的变化(为Ready),从双端口 SRAM的指定单
元读取运算结果。经发明人研究、实验和测试发现1、点乘运算在ECC协处理器中实现和在外部控制器2中的软件实现,对ECC算法的实现效率影响很小(经流片测试表明<3%) ;2、将点乘运算实现到ECC协处理器中,对外提供的点加、点倍和点乘运算接口中,点的坐标如果只支持仿射坐标,会限制外部控制器2中用软件实现点乘及整个ECC算法的灵活性,不方便实现一些特殊的点乘运算,而这些特殊的点乘运算往往可以提高ECC的实现效率和安全性,譬如带预计算的固定点乘运算可以提高ECC签名产生的效率,双点乘混合运算可以提高ECC验证签名的效率,含抵抗差分电源分析(DPA)措施的点乘运算可以提高ECC私钥运算(签名、解密、密钥协商)的安全性。如上所述,本发明提出一种Fp上的ECC协处理器,实现并对外提供大整数模乘、模加/模减、模幂和椭圆曲线点加/点倍等运算功能,点加和点倍运算对外接口中椭圆曲线点的坐标采用雅可比坐标。相对于其它ECC协处理器,本发明的ECC协处理器的优点和有益效果在于1、通过对外提供采用雅可比坐标的点倍和点加运算,可以支持外部控制器通过软件灵活实现多种点乘运算,包括带预计算的固定点乘、双点乘的混合运算、加入了防DPA措施的点乘等各种特殊的点乘运算,相对于现有的内部实现点乘运算、但对外部控制器实现点乘运算支持不够的ECC协处理器,能更好地适应各种应用环境对于ECC算法及点乘运算的各种变化要求。经发明人实验和测试证明点乘运算在ECC协处理器中实现和在外部控制器中的软件实现,对ECC算法的实现效率影响很小(经流片测试表明< 3% )。2、EReg寄存器设置为一个 字长的寄存器,支持外部控制器将e按字长分段输入, 通过循环设置EReg完成一次完整的模幂运算,相对于将e—次性全部存入内部寄存器的方案,既节省了电路面积,又对模幂运算效率的影响很小;3、模幂运算支持实现基于费马小定理的模逆运算,不需要专门的模逆控制单元;4、通过设置nlen,可支持实现多种位长的ECC、RSA和DSA算法。以上虽然结合附图详细描述了本发明的实施例,但是应当明白,上面所描述的实施方式只是用于说明本发明,而并不构成对本发明的限制。对于本领域的技术人员来说,可以对上述实施方式作出各种修改和变更而没有背离本发明的实质和范围。因此,本发明的范围仅由所附的权利要求及其等效含义来限定。
权利要求
1.一种ECC协处理器,其特征在于对外提供椭圆曲线点加/点倍运算功能,点加和点倍运算的对外接口中椭圆曲线点的坐标采用雅可比坐标以支持外部控制器灵活实现多种点乘运算。
2.如权利要求1所述的ECC协处理器,其特征在于还对外提供大整数模乘、模加/模减和模幂运算功能。
3.如权利要求1所述的ECC协处理器,其特征在于外部需要连接外部控制器,内部 包含复杂运算控制单元和模运算单元。
4.如权利要求3所述的ECC协处理器,其特征在于复杂运算控制单元包括模幂控制单元、点加控制单元和点倍控制单元;模运算单元包括大整数运算控制单元和基本运算单元,其中大整数运算控制单元包括模加/模减控制单元和模乘控制单元,基本运算单元包括乘法器和累加器,其中,复杂运算控制单元基于相应的运算命令被启动,产生运算控制信号序列给模运算单元以完成相应的运算;模运算单元基于相应的运算命令或从复杂运算控制单元接收的运算控制信号序列来完成相应的运算。
5.如权利要求4所述的ECC协处理器,在所述复杂运算控制单元中当运算命令为点加运算命令时,点加控制单元被启动,产生点加运算控制信号序列并提供给大整数运算控制单元以完成点加运算;当运算命令为点倍运算命令时,点倍控制单元被启动,产生点倍运算控制信号序列并提供给大整数运算控制单元以完成点倍运算;当运算命令为模幂运算命令时,模幂控制单元被启动,产生模幂运算控制信号序列并提供给模乘控制单元以完成模幂运算。
6.如权利要求4所述的ECC协处理器,在所述模运算单元中模乘控制单元在当运算命令为模乘运算命令或者当从复杂运算控制单元接收到点加、 点倍或模幂运算控制信号序列时被启动,产生模乘运算控制信号序列并提供给基本运算单元以完成模乘运算;模加/模减控制单元在当运算命令为模加或模减运算命令或者当从复杂运算控制单元接收到点加或点倍运算控制信号序列时被启动,产生模加/模减运算控制信号序列并提供给累加器以完成模加/模减运算。
7.如权利要求4所述的ECC协处理器,在所述基本运算单元中乘法器响应模乘运算控制信号序列中的乘法信号来执行乘法运算并输出乘法运算结果;累加器响应模乘运算控制信号序列和模加/模减运算控制信号中的累加信号来执行累加运算并输出累加运算结果。
8.如权利要求4所述的ECC协处理器,还包括接口总线,命令/状态寄存器,译码控制单元,数据寄存器,双端口 SRAM,其中外部控制器经接口总线将运算命令写入命令/状态寄存器,或从命令/状态寄存器中读出状态字;译码控制单元对命令/状态寄存器中接收到的运算命令进行译码,产生相应的运算控制信号,启动复杂运算控制单元或模运算单元完成相应的运算,运算结束后通过设置命令/ 状态寄存器中的状态字通知外部控制器运算已经结束;数据寄存器包括蒙哥马利常数寄存器MC,存储模乘运算所需的蒙哥马利常数,模字长寄存器NLen,存储模乘、模加/模减运算的模的字长,供模乘控制单元和模加/ 模减控制单元控制基本运算(乘法、累加)的循环次数,幂指数寄存器EReg,存储模幂运算所需的幂指数,供模幂控制单元产生模幂运算控制信号序列,双端口 SRAM接收并存储经从外部输入的除蒙哥马利常数、模的字长和幂指数之外所有运算输入数据,接收并存储来自基本运算单元的中间数据和结果数据,向基本运算单元提供运算输入数据,存储的各种运算的结果数据可供外部控制器读出。
9.如权利要求8所述的ECC协处理器,其中,所述幂指数寄存器EReg为一个字长,所述幂指数被按字长分段传送到EReg,外部控制器通过循环设置EReg来完成一次完整的模幂运算。
10.如权利要求9所述的ECC处理器,模幂运算支持基于费马小定理的模逆运算。
全文摘要
本发明提供了一种ECC协处理器,内部包括命令/状态寄存器,译码控制单元,数据寄存器,双端口SRAM,点加控制单元,点倍控制单元,模幂控制单元,模乘控制单元、模加/模减控制单元,基本运算单元。本发明的ECC协处理器实现并对外提供大整数模乘、模加/模减、模幂和椭圆曲线点加/点倍运算功能,点加和点倍运算的对外接口中椭圆曲线点的坐标采用雅可比坐标,可以支持外部控制器灵活实现多种点乘运算。
文档编号G06F7/72GK102279725SQ201110257450
公开日2011年12月14日 申请日期2011年9月1日 优先权日2011年9月1日
发明者李政东 申请人:北京华大信安科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1