首页> 中国专利> 一种椭圆曲线密码算法协处理器

一种椭圆曲线密码算法协处理器

摘要

本发明公开了一种椭圆曲线密码算法协处理器,包括用于寄存输入的坐标数据的坐标寄存模块、用于寄存随机数的随机数寄存模块、模加模块、模乘模块、模平方模块和控制模块,控制模块控制模加模块、模乘模块和模平方模块根据坐标数据和随机数,基于Lopez‑Dahab坐标执行椭圆曲线密码算法。本发明椭圆曲线密码算法协处理器,能够执行Lopez‑Dahab算法对输入的坐标数据进行处理,从而实现基于Lopez‑Dahab坐标执行ECC算法,由于Lopez‑Dahab算法复杂度更低、中间变量少,因此实施例中的椭圆曲线密码算法协处理器具有电路复杂度低、时延低、效率高等优点。本发明广泛应用于电子器件技术领域。

著录项

  • 公开/公告号CN114785507A

    专利类型发明专利

  • 公开/公告日2022-07-22

    原文格式PDF

  • 申请/专利权人 华南师范大学;

    申请/专利号CN202210359190.0

  • 发明设计人 王德明;林宇杭;邝伟锋;

    申请日2022-04-07

  • 分类号H04L9/30;G06F9/38;

  • 代理机构广州嘉权专利商标事务所有限公司;

  • 代理人黎扬鹏

  • 地址 510006 广东省广州市番禺区华南师范大学物理与电信工程学院

  • 入库时间 2023-06-19 16:04:54

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-07-22

    公开

    发明专利申请公布

说明书

技术领域

本发明涉及电子器件技术领域,具体是一种椭圆曲线密码算法协处理器。

背景技术

椭圆曲线密码(Elliptic Curve Cryptography,ECC)算法是一种公钥密码算法,具有密钥长度更短、安全程度更高等优点,因而被广泛应用于物联网和信息安全等领域中。为了实现快速运算ECC,一般使用专门的硬件进行ECC的相关计算。ECC可以建立在素数域和二元扩域,而由于素数域下的ECC硬件电路面积、延时和功耗较大,相较之下二元扩域下的ECC硬件是更优的选择。

目前二元扩域下的ECC硬件的相关技术一般是应用了蒙哥马利算法、Toeplitz矩阵和Toom-Cook算法等进行优化运算,这些ECC硬件虽然分别在效率、灵活性、乘法复杂度、关键路径长度等方面获得了一些改善,但是在延时、电路复杂度和能效等方面仍存在不足之处,有较大的改进空间。

发明内容

针对上述相关技术存在的延时、电路复杂度和能效有待改善等至少一个技术问题,本发明的目的在于提供一种椭圆曲线密码算法协处理器,包括:

坐标寄存模块,用于寄存输入的坐标数据x

随机数寄存模块,用于寄存随机数k

模加模块,用于执行模加运算;

模乘模块,用于执行模乘运算;

模平方模块,用于执行模平方运算;

控制模块;用于控制所述模加模块、所述模乘模块和所述模平方模块根据所述坐标数据x

进一步地,所述控制所述模加模块、所述模乘模块和所述模平方模块根据所述坐标数据x

执行多轮比特计算;其中,对于i=t-1,t-2……1,在第i轮比特计算中:

执行第一步骤;在所述第一步骤中,调用所述模平方模块对坐标数据z

执行第二步骤;在所述第二步骤中,调用所述模平方模块对坐标数据x

执行第三步骤;在所述第三步骤中,调用所述模平方模块,对所述模平方模块在所述第一步骤中的输出结果执行模平方运算,调用所述模乘模块,对所述模平方模块在所述第一步骤中的输出结果以及在所述第二步骤中的输出结果执行模乘运算;

执行第四步骤;在所述第四步骤中,调用所述模乘模块,对所述模平方模块在所述第三步骤中的输出结果以及数据b的第i个比特执行模乘运算,调用所述模加模块,对所述模乘模块在所述第一步骤中的输出结果以及在所述第二步骤中的输出结果执行模加运算,调用所述模平方模块,对所述模加模块在所述第四步骤中的输出结果执行模平方运算;

执行第五步骤;在所述第五步骤中,调用所述模平方模块,对所述模平方模块在所述第二步骤中的输出结果执行模平方运算,调用所述模乘模块,对所述模乘模块在所述第一步骤中的输出结果以及在所述第二步骤中的输出结果执行模乘运算;

执行第六步骤;在所述第六步骤中,调用所述模加模块,对所述模乘模块在所述第四步骤中的输出结果以及所述模平方模块在所述第二步骤中的输出结果执行模加运算,调用所述模乘模块,对所述模平方模块在所述第四步骤中的输出结果以及数据x

进一步地,在第i轮比特计算中:

当k

进一步地,在第i轮比特计算中:

当k

进一步地,所述第一步骤、第二步骤、第三步骤、第四步骤、第五步骤和第六步骤分别在一个时钟周期内执行。

进一步地,所述模乘模块包括第一异或门、第二异或门、第三异或门、第四异或门、第一二进制乘法器、第二二进制乘法器、第三二进制乘法器、第一寄存器、第二寄存器、第三寄存器、数据选择器、与门以及模约减单元;

所述第一异或门的输入端、第二异或门的输入端、第一二进制乘法器的输入端、第三二进制乘法器的输入端和与门的输入端分别与所述模乘模块的输入端连接;

所述第二二进制乘法器的输入端与所述第一异或门的输出端连接;

所述数据选择器的输入端分别与所述模乘模块的输入端、第二异或门的输出端和与门的输出端连接;

所述第三异或门的输入端分别与所述第二二进制乘法器的输出端和所述数据选择器的输出端连接,所述第四异或门的输入端分别与所述第三二进制乘法器的输出端和所述数据选择器的输出端连接;

所述第一寄存器的输入端与所述第一二进制乘法器的输出端连接,所述第二寄存器的输入端与所述第三异或门的输出端连接,所述第三寄存器的输入端与所述第四异或门的输出端连接;

所述模约减单元的输入端分别与所述第一寄存器的输出端、所述第二寄存器的输出端和所述第三寄存器的输出端连接;

所述模约减单元的输出端与所述模乘模块的输出端连接。

进一步地,所述模约减单元为不可约多项式约减单元。

进一步地,所述不可约多项式为三项不可约多项式或者五项不可约多项式。

进一步地,椭圆曲线密码算法协处理器还包括:

模逆模块,用于调用所述模乘模块和所述模平方模块以执行模逆运算。

进一步地,所述椭圆曲线密码算法协处理器通过现场可编程门阵列或者专用集成电路实现。

本发明的有益效果是:实施例中的椭圆曲线密码算法协处理器,能够执行Lopez-Dahab算法对输入的坐标数据进行处理,从而实现基于Lopez-Dahab坐标执行ECC算法,由于Lopez-Dahab算法复杂度更低、中间变量少,因此实施例中的椭圆曲线密码算法协处理器具有电路复杂度低、时延低、效率高等优点。

附图说明

图1为实施例中椭圆曲线密码算法协处理器的总体结构图;

图2为实施例中椭圆曲线密码算法协处理器执行PM和PA运算的流程图;

图3为实施例中模乘模块的结构图;

图4为实施例中三项不可约多项式约减单元的结构图;

图5为实施例中五项不可约多项式约减单元的结构图;

图6为实施例中模平方模块的原理图;

图7为实施例中模逆模块的原理图。

具体实施方式

在对椭圆曲线密码算法协处理器进行说明前,先介绍椭圆曲线密码算法的相关知识。

定义在二进制域(GF(2

E:y

方程(1)称为Weierstrass方程,其中a,b∈GF(2

对椭圆曲线最主要的运算是点加(PointAddition,PA)和点倍(PointDoubling,PD)。假设点P=(x

由于椭圆曲线运算是建立在有限域之上的,可以通过模加、模乘、模平方以及模逆等有限域运算来实现点加PA和点倍PD。

PA和PD的计算成本与基、椭圆曲线以及坐标系的选择等均有较大关系,选择低复杂度的坐标系可以有效减少底层算法的运算次数,从而提高计算效率。

表1列出了PA和PD在仿射坐标、射影坐标、Jacobin坐标和Lopez-Dahab坐标下的计算复杂度。

表1不同坐标下的计算复杂度对比

其中,

通过分析对比PA和PD在不同坐标系下的计算复杂度,可以发现使用Lopez-Dahab坐标可以消除复杂度较高的模逆运算,有效降低模乘和模平方运算的次数,因此能较好地降低复杂度和电路面积,并有效提高运算效率。此外使用Lopez-Dahab坐标还能降低数据传输和数据保存时的资源消耗。在不同的坐标之间切换,需要用到坐标转换,其中公式(2)是仿射坐标转换为Lopez-Dahab坐标的公式。公式(3)是Lopez-Dahab坐标转换为仿射坐标的公式。

(X,Y)→{(x,y,1)|x=X,y=Y}. (2)

(x,y,z)→{(X,Y)|X=x/z,Y=y/z

ECC算法中复杂度最高的运算是点乘(pointmultiplication,PM),设k为随机正整数,点乘PM可以表达为kP=(k/2)P+(k/2)P,因此可以把PM分解为PA和PD两种运算。算法1采用二进制方法计算PM,通过从左到右扫描k的值,当k

表2点乘算法

由表2所示的算法1可知,s2里并不是每次循环都会执行PA,这将导致该部分电路的功耗不一致,极易受到差分功耗分析、相关功耗分析等侧信道分析的攻击,从而导致密钥泄露,安全性较差。为了有效抵抗侧信道攻击,目前普遍采用能同时计算PA和PD的蒙哥马利阶梯算法,并在计算过程中使用Lopez-Dahab坐标,实现更高等级的安全。

Lopez-Dahab算法的计算过程不需要用到y坐标,只需要使用x坐标和z坐标计算PA和PD,其中PA的计算公式如(4)所示,PD的计算公式如(5)所示。在执行完Lopez-Dahab算法后,运算的结果需要从Lopez-Dahab坐标转换为仿射坐标,从Lopez-Dahab坐标转换为仿射坐标的公式如(6)所示。

表3Lopez-Dahab算法

Lopez-Dahab算法的具体计算过程可参考表3中的算法2。根据算法2和公式(4)(5)可知,执行一次PA和PD,计算复杂度为6M+4S,比原来的19M+13S(PA+PD)降低了67%,并提高了安全性能。因此,如果ECC算法协处理器基于Lopez-Dahab坐标执行椭圆曲线密码算法,能具有高能效、低延时和高效率等优点。

本实施例中,将基于算法2即基于Lopez-Dahab坐标设计一种高能效、低延时和高效率的ECC算法协处理器。

本实施例中,提供了具有如图1所示结构的椭圆曲线密码算法协处理器,其包括坐标寄存模块(图1中的数个reg)、随机数寄存模块(图1中的k register)、模加模块(图1中的Add)、模乘模块(图1中的Mul)、模平方模块(图1中的Squ)和控制模块(图1中的Controlunit(FSM))。其中,控制模块通过控制总线分别与坐标寄存模块、随机数寄存模块、模加模块、模乘模块和模平方模块等连接,因此控制模块可以通过向坐标寄存模块等发送控制信号,从而调用这些模块。

参照图1,椭圆曲线密码算法协处理器中还设有必要的数据选择模块(图1中的数个mux),这些数据选择模块通过数据总线分别与坐标寄存模块reg、随机数寄存模块kregister、模加模块Add、模乘模块Mul、模平方模块Squ等连接,通过控制总线与控制模块连接,因此控制模块在调用坐标寄存模块reg等各模块时,可以控制与这些模块连接的数据选择模块,从而从相应的寄存模块中读取出数据,输入至模加模块Add等模块中执行运算,即控制模块FSM可以控制数据在各模块之间的流向。

在使用图1中的椭圆曲线密码算法协处理器时,可以向坐标寄存模块reg输入两组坐标(x

本实施例中,坐标数据x

本实施例中,当模加模块Add被控制模块FSM调用时,可以执行模加运算;当模乘模块Mul被控制模块FSM调用时,可以执行模乘运算;当模平方模块Squ被控制模块FSM调用时,可以执行模平方运算。

控制模块FSM通过控制模加模块Add、模乘模块Mul和模平方模块Squ,根据坐标数据x

根据上述对ECC相关知识以及Lopez-Dahab算法的介绍可知,在Lopez-Dahab算法的运行过程中以及身份认证和加密解密等过程中都会使用到PM和PA运算,如果将这两个运算用两个电路来实现,会造成寄存器开销的增加。

基于在实现Lopez-Dahab算法的基础上,将PM和PA运算的功能合成到一个电路实现来考虑,本实施例中,控制模块FSM通过控制模平方模块Squ、模乘模块Mul和模加模块Add分别在不同的步骤中组合工作,从而实现由同一套电路(即图1所示的由控制模块FSM、模平方模块Squ、模乘模块Mul、模加模块Add、坐标寄存模块reg、随机数寄存模块kregister以及相关数据选择模块组成的电路)执行PM和PA运算。

具体地,控制模块FSM通过控制模平方模块Squ、模乘模块Mul和模加模块Add执行PM和PA运算的过程如图2所示。图2中,各虚线之间的step1、step2、step3、step4、step5和step6分别表示第一步骤、第二步骤、第三步骤、第四步骤、第五步骤和第六步骤,以圆圈包围的S表示模平方模块Squ被控制模块FSM调用执行模平方运算,M表示模乘模块Mul被控制模块FSM调用执行模乘运算,A表示模加模块Add被控制模块FSM调用执行模加运算。

本实施例中,针对坐标数据x

参照图2,在第i轮比特计算中,依次执行第一步骤step1、第二步骤step2、第三步骤step3、第四步骤step4、第五步骤step5和第六步骤step6。以下所称的“调用”的主语都是控制模块FSM。

参照图2,在第一步骤step1中,调用模平方模块对坐标数据z

在第二步骤step2中,调用模平方模块对坐标数据x

在第三步骤step3中,调用模平方模块,对模平方模块在第一步骤中的输出结果执行模平方运算,调用模乘模块,对模平方模块在第一步骤中的输出结果以及在第二步骤中的输出结果执行模乘运算;

在第四步骤step4中,调用模乘模块,对模平方模块在第三步骤中的输出结果以及数据b的第i个比特执行模乘运算,调用模加模块,对模乘模块在第一步骤中的输出结果以及在第二步骤中的输出结果执行模加运算,调用模平方模块,对模加模块在第四步骤中的输出结果执行模平方运算;

在第五步骤step5中,调用模平方模块,对模平方模块在第二步骤中的输出结果执行模平方运算,调用模乘模块,对模乘模块在第一步骤中的输出结果以及在第二步骤中的输出结果执行模乘运算;

在第六步骤step6中,调用模加模块,对模乘模块在第四步骤中的输出结果以及模平方模块在第二步骤中的输出结果执行模加运算,调用模乘模块,对模平方模块在第四步骤中的输出结果以及数据x

上述步骤step1-step6中涉及到的数据b对应公式(5)中的b,数据x

在图2所示过程的基础上,在第i轮比特计算中:

如果k

如果k

图2中,前六步即连续的step1-step2为当前第i个比特的计算流程,当执行到第6步即step6时,下一步接着的step1是下一比特即的第i+1个比特第1步。图2中每一步的时间都对应一个时钟周期,上一步的输出结果是下一步的输入数据,运算呈流水线进行,并且每个时钟周期都会执行模乘运算,模乘单元的使用率是100%,从而大幅度提高了系统的运算效率。通过实验可以得出,数据流在k

图2所示的流程实际上实现了一个经过优化的算法。对于PA运算,由公式(2)(3)可知,仿射坐标转换为LD坐标后,z的初始值默认为1,这是由曲线方程决定的。根据这一特性,本文将对PA进行优化,降低计算复杂度。如表4所示的算法3,上半部分是原来LD坐标系的PA运算流程,可以看出需要计算12个中间变量才能得到最终结果,计算复杂度为14M+8S。通过多次的实验可以发现,消除z坐标不会对运算的结果产生改变。

表4

因此本实施例中图2所示的流程,可以控制模块实现表4中算法3,即经过优化后的PA算法。可以看出,经过简化后的PA运算减少了中间量的计算,同时计算复杂度降低为6M+3S,仅原来的50%,有效提高了PA的运算效率。

由于ECC系统进行身份认证或密钥生成的时候需要计算kP+lQ,因此通过图2中的控制过程,图1所示的椭圆曲线密码算法协处理器具备PM和PA两种运算的能力,由于无需分设两套电路分别执行PM和PA运算,因此可以降低中间变量的个数,从而无需设置相应的寄存器,可以节省资源和提高效率。

通过图2中的控制过程,图1中的椭圆曲线密码算法协处理器能够执行公式(4)、(5)和(6),对坐标数据x

由于模乘运算是有限域运算中运算次数最多的运算,在整个系统中占据了重要地位,几乎在每个时钟周期中都需要用到模乘运算。模乘模块在硬件实现上需要占据系统中大约60%的硬件资源,模乘模块的面积直接影响整个电路的面积;此外,乘法器的关键路径是整个电路最长的路径,直接影响系统最高工作频率,这两方面都是硬件电路性能的重要指标,因此需要对其进行分析权衡。因此,设计了图3所示的模乘模块Mul,用作图1所示的椭圆曲线密码算法协处理中的模乘模块Mul。

参照图3,模乘模块Mul包括第一异或门XOR1、第二异或门XOR2、第三异或门XOR3、第四异或门XOR4、第一二进制乘法器GF Mul1、第二二进制乘法器GF Mul2、第三二进制乘法器GF Mul3、第一寄存器Reg0、第二寄存器Reg1、第三寄存器Reg2、数据选择器Mux、与门AND以及模约减单元ReductionUnit。

参照图3,模乘模块Mul的输入端为input,输出端为output。各部件之间的连接关系如下:

第一异或门XOR1的输入端、第二异或门XOR2的输入端、第一二进制乘法器GF Mul1的输入端、第三二进制乘法器GF Mul3的输入端和与门AND的输入端分别与模乘模块的输入端连接;

第二二进制乘法器GF Mul2的输入端与第一异或门XOR1的输出端连接;

数据选择器Mux的输入端分别与模乘模块的输入端、第二异或门XOR2的输出端和与门AND的输出端连接;

第三异或门XOR3的输入端分别与第二二进制乘法器GF Mul2的输出端和数据选择器Mux的输出端连接,第四异或门XOR4的输入端分别与第三二进制乘法器GF Mul3的输出端和数据选择器Mux的输出端连接;

第一寄存器Reg0的输入端与第一二进制乘法器GF Mul1的输出端连接,第二寄存器Reg1的输入端与第三异或门XOR3的输出端连接,第三寄存器Reg2的输入端与第四异或门XOR4的输出端连接;

模约减单元Reduction Unit的输入端分别与第一寄存器Reg0的输出端、第二寄存器Reg1的输出端和第三寄存器Reg2的输出端连接;

模约减单元Reduction Unit的输出端与模乘模块的输出端连接。

图3展示的是模乘模块的基本结构,模乘模块有两个输入a和b,有一个输出c。可以看到由于在二进制乘法器的关键路径上插入了寄存器,模乘模块的电路结构呈流水线形式。流水线分为两级,第一级为KOM部分,是由第一异或门XOR1、第二异或门XOR2、第三异或门XOR3、第四异或门XOR4、第一二进制乘法器GF Mul1、第二二进制乘法器GF Mul2、第三二进制乘法器GF Mul3、第一寄存器Reg0、第二寄存器Reg1、第三寄存器Reg2、数据选择器Mux、与门AND等组成的结构,第一级即KOM部分可以用于乘法运算。第二级为约减部分,即模约减单元Reduction Unit,可以用于模约减运算。

图3所示的模乘模块的结构中,KOM部分可以用来执行KOM算法。快速乘法(Karatsuba OfMultiplication,KOM)算法的原理是将乘法中的串并行运算相结合,通过将较大的数拆解成若干较小的数,再进行并行计算,可以有效缩短运算时间。拆解时,可以将大数分解成不同的深度,深度越高,拆解出来的数也就越小,电路的复杂度就越低。但由于拆解后的数进行并行运算也会增加硬件电路的资源消耗,因此需要对拆解的深度、拆解后的运算复杂度和资源的消耗进行综合分析,得到最优的分解方法。考虑到电路整体面积可以通过减小其他电路的面积来得到优化,但延时没有办法通过其他电路来优化,因此本实施例中采用深度为1的KOM算法,即图3所示的模乘模块的KOM部分可以用来执行深度为1的KOM算法。

KOM算法可以将乘法器的串并行结合在一起,避免了并行乘法器占用大量资源的问题,也避免了串行乘法器占用大量运算时间的问题。在电路上实现KOM算法要求搭建若干个小型的乘法器,也需要若干的异或门阵列组成数据通路,从而可以使用图3所示的只由逻辑电路组合而成的电路实现。在图3所示的电路实现上使用了流水线设计,通过在电路的关键路径上插入寄存器,将数据中间量进行缓存,降低路径上建立时间,解决数据通路过长的问题,进一步提高系统的工作频率。

图3所示的模乘模块中,由于KOM算法在对大数拆解后还有1bit的数据没有送到小型乘法器,因此需要增加一部分的XOR运算。在模乘模块中,乘法运算的结果经过关键路径上的寄存器后,会统一送入模约减单元内。在运算过程中,输入端口有信号输入后,第一个周期内数据将进入KOM部分进行乘法运算,然后通过寄存器进行缓存。第二个周期中,上一个周期的乘法结果会进入模约减部分进行约减,同时模乘模块会接收新的数据,经过乘法运算后再由寄存器暂存乘法结果。以此类推,直到模乘运算停止。

在进行有限域的基础运算后,如果数值大于有限域最大的数值,就需要基于多项式进行约减运算,确保结果在有限域上。因此,在其他基础运算后通常都需要伴随着模约减运算。模约减运算的效率也间接影响着系统的性能。

模约减算法主要有小电路面积的移位约减算法和高运算速率的快速约减算法两种,本设计中优先考虑快速约减算法。快速约减算法的原理是基于椭圆曲线的不可约多项式设计多层次的XOR阵列,阵列的关键路径仅为异或门的门级延时。这种阵列结构能加快运算速率,并且大幅度降低运算难度。

椭圆曲线的不可约多项式分为两种,三项多项式(trigonometric polynomial)和五项多项式(quintuple polynomial)。不同的不可约多项式,所设计出的XOR阵列结构会有所不同,基于不同的椭圆曲线需要搭建出不同的阵列,例如对于三项不可约多项式,则使用三项不可约多项式约减单元作为模约减单元,对于五项不可约多项式,则使用五项不可约多项式约减单元作为模约减单元。通过分析快速模约减算法和组合逻辑关系,对阵列电路进行面积优化,减少重复电路。

本实施例中,三项不可约多项式约减单元的结构如图4所示,五项不可约多项式约减单元的结构如图5所示。图4和图5中的电路都呈现多级结构。在完成电路面积的优化后,也要对电路延时进行优化。通过分析电路关键路径,为组合逻辑设计二叉树电路,从而将关键延时缩短为2~3Txor(Txor为异或门延时)。

模平方运算作为特殊的乘法运算,使用快速平方算法实现的运算效率会更高。将平方运算与乘法运算分开运算,可以加快系统的运算效率。因此,本实施例中,设置了独立于模乘模块的模平方模块,模平方模块的结构如图6所示。

Fig.6展示的是平方模块的基本结构,单元有一个输入a,有两个输出b和c。电路结构分为两级,第一级即在上面的快速平方电路Fast Square和模约减单元Reduction Unit组成平方运算电路,第二级即在下面的快速平方电路Fast Square和模约减单元ReductionUnit组成2^2次方运算电路,其中第二级的输入为第一级的输出,并且两级结构都包含模约减单元Reduction Unit,其中的模约减单元Reduction Unit具体地可以是图4所示的三项不可约多项式约减单元或者图5所示的五项不可约多项式约减单元。运算过程中当输入端口有信号输入时,一个时钟周期后就可以得到两个输出结果。

图6所示的模平方模块的原理在于:通过分析椭圆曲线上的点的运算关系,采用快速平方算法快速得到平方运算结果。其中电路设计以组合逻辑为主,出于对硬件资源消耗和延时上的考虑,也利用平方电路计算2^n次方。通过分析数据依赖关系和系统的关键路径延时,提出对平方电路进行优化,设计集成平方运算和2^2次方运算的快速平方单元,可以减少运算次数,提高系统最高工作频率。

模求逆运算作为有限域中最复杂的基础运算,在整个系统中属于运算时间最长的运算单元,占据了大约50%的运算时间。因此,本实施例中设置了模逆模块来执行模逆运算。

本实施例中,模逆模块执行Itoh-Tsujii’s算法来进行模逆运算。

Itoh-Tsujii’s算法是基于费马小定理的优化算法,将求逆运算转换为少量的乘法运算和平方运算,降低计算复杂度,缩短运算时间。表5中的算法4展示的是椭圆曲线GF(2^163)的求逆运算流程。

表5

由表4可以看出,求逆运算可以转换为10次乘法运算和若干次平方运算。由于图1所示的椭圆曲线密码算法协处理器中已设置了模乘模块和模平方模块,因此本实施例中,无需专门设立一个独立的模块作为模逆模块,而是通过调用模乘模块和模平方模块实现模逆运算,从而等效成一个模逆模块。模逆模块的原理如图7所示。

参照图7,模逆模块有一个输入a,有一个输出b。运算开始时,输入数据会进入寄存器中暂存,然后由FSM控制数据的走向和执行相关运算。使用两组计数器对运算过程进行监控,当运算执行到一定次数时,FSM执行乘法运算,其他情况则循环执行平方运算。运算过程呈现流水线。此外模逆模块调用的模乘模块和模平方模块是同样可以被图2所示的PM和PA过程调用,从而实现电路模块的复用,避免重复设置电路模块,有助于降低硬件电路的面积。

本实施例中,可以通过现场可编程门阵列(Field-Programmable GateArray,FPGA)或者专用集成电路(Application-Specific Integrated Circuit,ASIC)来制作椭圆曲线密码算法协处理器中的控制模块、坐标寄存模块、随机数寄存模块、模加模块、模乘模块和模平方模块等各模块。

以下分别通过FPGA和ASIC制作本实施例中的椭圆曲线密码算法协处理器,并评估其性能。其中性能的评估指标包括:最高工作频率(F

AT=Area(LEs or Slices)*Time(us). (7)

Throughput=m/Time(us)=163

Efficiency=Throughput/Area. (9)

如表6所示,在Stratix 2FPGA的架构下,本实施例中椭圆曲线密码算法协处理器与目前加密时间最短的相关技术[17](记载于文献R.Amiri and O.Elkeelany,FPGADesignofElliptic Curve Cryptosystem(ECC)for Isomorphic Transformation and ECElGamal Encryption,IEEE Embedded Systems Letters,2020.中)相比,加密时间降低了3%,效率提升了2%;与目前占用逻辑单元最少的相关技术[18](记载于文献[18]R.Azarderakhsh and A.Reyhani-Masoleh,High-Performance Implementation of PointMultiplication on Koblitz Curves,IEEE Transactions on Circuits and SystemsII:Express Briefs,vol.60,no.1,pp.41-45,Jan.2013.中)相比,面积增大了1%,相对地效率提升了67%。在Kintex 7FPGA的架构下,本实施例中椭圆曲线密码算法协处理器与相关技术[17]相比,最高工作频率提高了4%,效率提升了37%。

表6

不同FPGA平台上ECC协处理器的比较

以下将本实施例中的椭圆曲线密码算法协处理器在ASIC下的性能与相关技术进行对比,其中性能的评估指标包括:代表芯片面积的最小逻辑门数量(GE)(如公式(10)所示计算方式),加密时间(us),功耗(mW),耗能(nJ)。通过将不同参数进行统一对比,计算AT(Area*Time),如公式(11)所展示的AT计算式,以及系统效率(Efficiency),做出较为公平的对比评估。

GE=总面积/等效二输入与非门面积. (10)

AT=Area(GE)*Time(us),forASIC. (11)

如表7所示,本实施例中的椭圆曲线密码算法协处理器与180nm工艺下的相关技术[19](记载于文献G.D.Sutter,J.Deschamps and J.L.Imana,Efficient Elliptic CurvePoint Multiplication Using Digit-Serial Binary Field Operations,in IEEETransactions on Industrial Electronics,vol.60,no.1,pp.217-225,Jan.2013.中)中加密时间最短的技术手段相比,加密时间减少了58%,效率提升了260%;与相关技术[19]中效率最高的技术手段相比,效率提升了165%。本实施例中的椭圆曲线密码算法协处理器与65nm下相关技术[20](记载于文献R.Azarderakhsh,K.U.

表7

不同ASIC平台上ECC协处理器的比较

表7中,相关技术[16]记载于文献R.Salarifard,S.Bayat-Sarmadi andH.Mosanaei-Boorani,A Low-Latency and Low-Complexity Point-Multiplication inECC,IEEE Transactions on Circuits and Systems I:Regular Papers,vol.65,no.9,pp.2869-2877,Sept.2018.中,相关技术[8]记载于文献J.Ding,S.Li and Z.Gu,High-Speed ECC Processor Over NIST Prime Fields Applied With Toom–CookMultiplication,IEEE Transactions on Circuits and Systems I:Regular Papers,vol.66,no.3,pp.1003-1016,March 2019.中,相关技术[5]记载于文献Z.Liu,D.Liu andX.Zou,An Efficient and Flexible Hardware Implementation of the Dual-FieldElliptic Curve Cryptographic Processor,IEEE Transactions on IndustrialElectronics,vol.64,no.3,pp.2353-2362,March 2017.中,相关技术[13]记载于文献T.Shahroodi,S.Bayat-Sarmadi and H.Mosanaei-Boorani,Low-Latency Double PointMultiplication Architecture Using Differential Addition Chain Over GF(2^m),IEEE Transactions on Circuits and Systems I:Regular Papers,vol.66,no.4,pp.1465-1473,April 2019.中。

综上,本实施例中采用NIST推荐的二元扩域椭圆曲线,设计了一个基于Lopez-Dahab坐标的高能效、低延时和高效率的椭圆曲线密码算法协处理器。协处理器的输入为两组坐标数据和随机数k,输出为一组坐标数据。在执行PA运算时,只需要输入两组坐标数据,而执行PM运算时,则需要输入两组坐标数据和随机数k。运算开始时,输入的坐标数据将被保存到寄存器中,然后由FSM控制数据的流向,执行PA、PM或模逆等运算。同时使用监视窗的方式,对随机正整数k进行监控,当电路检测到k

进一步地,通过引入不可约多项式和Karatsuba乘法器,搭建出快速模约减和模乘电路;通过模块复用的方式,有效降低了硬件复杂度;在模逆和模乘运算中使用流水线结构,使得系统的吞吐量得到进一步的提升。与相关技术相比,所提出的电路在能效、延时和吞吐率方面均能取得较好的优势。

需要说明的是,如无特殊说明,当某一特征被称为“固定”、“连接”在另一个特征,它可以直接固定、连接在另一个特征上,也可以间接地固定、连接在另一个特征上。此外,本公开中所使用的上、下、左、右等描述仅仅是相对于附图中本公开各组成部分的相互位置关系来说的。在本公开中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。此外,除非另有定义,本实施例所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相等。本实施例说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本发明。本实施例所使用的术语“和/或”包括一个或多个相关的所列项目的任意的组合。

应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种元件,但这些元件不应限于这些术语。这些术语仅用来将同一类型的元件彼此区分开。例如,在不脱离本公开范围的情况下,第一元件也可以被称为第二元件,类似地,第二元件也可以被称为第一元件。本实施例所提供的任何以及所有实例或示例性语言(“例如”、“如”等)的使用仅意图更好地说明本发明的实施例,并且除非另外要求,否则不会对本发明的范围施加限制。

应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。

此外,可按任何合适的顺序来执行本实施例描述的过程的操作,除非本实施例另外指示或以其他方式明显地与上下文矛盾。本实施例描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。

进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本实施例所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。

计算机程序能够应用于输入数据以执行本实施例所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。

以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相等的手段达到本发明的技术效果,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号