一种低时延椭圆曲线点乘电路设计方法转让专利

申请号 : CN202210713984.2

文献号 : CN115062565B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张靖奇高巍王卫江薛丞博翟云

申请人 : 北京理工大学

摘要 :

本发明公开了一种低时延椭圆曲线点乘电路设计方法,包括:设计Karatsuba‑Ofman模乘法器;两个乘数输入乘法器,进行Karatsuba拆解,形成三个子乘法器;三个子乘法器的结果进行Karatsuba拼接,形成乘法结果;在Karatsuba‑Ofman模乘法器基础上,设计低时延点乘架构;点乘计算的迭代部分通过反复调用改进的Karatsuba‑Ofman模乘法器实现,点乘计算的模逆部分通过模平方器、模四次方器、一些寄存器与改进的Karatsuba‑Ofman模乘法器共同实现;基于低时延ECC点乘架构,设计相应的最优调度策略。本发明电路在小型有限域上和大型有限域

权利要求 :

1.一种低时延椭圆曲线点乘电路设计方法,其特征在于,包括如下步骤:步骤S1:设计Karatsuba‑Ofman模乘法器;将两个乘数输入乘法器后,进行一次Karatsuba拆解,形成三个小位宽的子乘法器;三个子乘法器的结果进行一次Karatsuba拼接,形成最终的乘法结果;

步骤S2:在Karatsuba‑Ofman模乘法器的基础上,设计低时延点乘架构;点乘计算的迭代部分通过反复调用改进的Karatsuba‑Ofman模乘法器实现,点乘计算的模逆部分通过模平方器、模四次方器、一些寄存器与改进的Karatsuba‑Ofman模乘法器共同实现;

步骤S3:基于低时延ECC点乘架构,设计相应的最优调度策略,点乘计算的迭代部分每轮迭代调度紧凑,模逆部分的计算时钟周期数取决于点乘架构当前计算所在的有限域大小;

步骤S1中设计Karatsuba‑Ofman模乘法器的具体方法为:将两个2w位宽的乘数A、B输入乘法器后,分别被拆分为高w位与低w位的小型操作数,依次记为Ah,Al,Bh与Bl,拆分后满足w w关系A=Ah×x+Al,B=Bh×x+Bl;其中Ah为乘数A中的高w位,Al为乘数A中的低w位,Bh为乘数mB中的高w位与Bl为乘数A中的低w位,x为二进制域GF(2)多项式基表达形式的基底;四个小型操作数经过拆分、相加处理,作为输入分别输入三个w位的乘法器中:乘法器1输入Ah与Bh并计算AhBh,乘法器2输入(Ah+Al)与(Bh+Bl)并计算(Ah+Al)×(Bh+Bl),乘法器3输入Al与Bl并计算AlBl;乘法器的结果输出后,需要根据当前进行点乘计算的有限域进行对应有限域的模

163 163

约减;如果工作在小型有限域GF(2 ),则利用A的高w位与B的高w位存储一组GF(2 )上的

163

乘数,用A的低w位与B的低w位存储另一组GF(2 )上的乘数,乘法器1与乘法器3的结果分别

163

为第一组乘数的乘积和第二组乘数的乘积;乘法器1和乘法器3的结果经过有限域GF(2 )

163 571

的模约减,可同时得到两个GF(2 )乘法最终的结果;如果工作在大型有限域GF(2 ),则A

571

和B分别为两个GF(2 )上的乘数,乘法器1、乘法器2和乘法器3的结果需要经过Karatsuba拼接,以产生Karatsuba‑Ofman乘法结果:

2w w

AhBhx +[(Ah+A1)×(Bh+B1)+AhBh+A1B1]x+A1B1m 571

其中x为二进制域GF(2)多项式基表达形式的基底;乘法结果经过有限域GF(2 )的模约减,得到乘法的最终结果;

163

乘法器的输出通过两个多路选择器控制,当乘法器工作在小型有限域GF(2 ),两个

163 571

MUX选通两个小型有限域GF(2 )的模约减结果;当乘法器工作在大型有限域GF(2 ),两个

571

MUX选通GF(2 )的模约减结果;

m

A,B的乘积得到的方法为:设A,B为GF(2)中两个m位宽的乘数,一般的,m为奇数,令2w=w wm+1,则A,B表示为A=Ahx+A1,B=Bhx+B1,Karatsuba‑Ofman乘法推导为:w w

A×B=(Ahx+A1)×(Bhx+B1)

2w w

=AhBhx +[(Ah+A1)×(Bh+B1)+AhBh+A1B1]x+A1B1只需要计算三次位宽为w的小型乘法分别计算AhBh与(Ah+Al)×(Bh+Bl)AlBl,再通过一系w列加法将三个小型乘法的结果进行拼接,形成上式中x的系数,最终得到A,B的乘积;

步骤S2中,模平方、模四次方均通过纯组合逻辑电路实现;设置有限状态机用于调度模乘、模平方、模四次方运算,增加额外的寄存器用于缓存数据通路的数据,增加多路选择器MUX用于控制数据流;在每次点乘的后处理部分,基于ltoh Tsujii算法,通过有限状态机循环迭代乘法、平方、四次方运算以计算Z1与(xpZ1Z2)的模逆,进而最终计算(xQ,yQ);其中Z1、Z2分别为Montgomery Ladder的迭代两点结果,xP为点乘基点的横坐标,xQ与yQ分别为点乘结果的横坐标与纵坐标;

步骤S3中,电路上电后,复位为空闲状态,收到计算点乘的使能信号后,跳转至初始化

4 2

状态执行初始化X1←xP,Z1←1,X2←xP+b,Z2←xp,初始化完成后进入主循环;主循环的两种情况,通过先默认计算ki=1,最后再判断是否交换Z1与Z2、X1与X2的值实现;计算公式

2 4 4 2 2

T←Z1,Z1←(X1Z2+X2Z1) ,X1←xPZ1+X1X2TZ2与T←X2,X2←X2+bZ2,Z2←TZ2的各个模运算拆分至6个时钟周期依次计算;其中,xP为点乘基点的横坐标,(X1,Y1,Z1)、(X2,Y2,Z2)分别为Montgomery Ladder的迭代过程中两点结果,T为中间临时变量。

说明书 :

一种低时延椭圆曲线点乘电路设计方法

技术领域

[0001] 本发明属于数字集成电路技术领域,更具体的说是涉及一种低时延椭圆曲线点乘电路设计方法。

背景技术

[0002] 椭圆曲线密码(Elliptic Curve Cryptography,ECC)由Neal Koblitz和Victor Miller于1985年分别独立的提出。相比于其他公钥密码算法,椭圆曲线密码由于其安全性高,计算量小,被广泛应用于互联网网络安全领域。ECC的密码体制可以分为三层,其中群运算层的点乘运算是目前所有ECC协议的基础,同时点乘运算相较于其他运算计算量大,时间、资源开销较高,因此点乘运算的性能决定了ECC整体的性能,ECC点乘成为学术界和工业界的热点研究方向。
[0003] ECC点乘的实现方法有软件实现和硬件实现。软件实现方案为利用编写的计算机、嵌入式软件程序,计算ECC点乘。软件实现ECC点乘虽然开发难度小、周期短,但由于软件平台中通用处理器针对ECC点乘此种特定运算的计算效率一般,同时通用处理器反复读写内存的时间开销大,因此使用软件实现ECC点乘的计算速度低、计算时延大(百毫秒级至秒级)。
[0004] 随着人类社会互联网的不断发展,在保证网络安全的同时,对ECC点乘的计算速度提出了更高的要求。利用硬件手段实现ECC点乘,并针对ECC点乘的特殊性,优化硬件的设计,使得硬件实现ECC具备高性能的特征,单次ECC点乘的计算时延相较于软件实现具有显著降低(微秒级)。
[0005] 硬件实现ECC点乘的平台一般为专用集成电路(Application  Specific Integrated Circuit,ASIC)和现场可编程门阵列(Field Programmable Gate Array,FPGA)。其中利用ASIC实现ECC点乘通常可以获得最佳的计算速度,但ASIC的开发、生产周期长,往往达到数年,同时ASIC生产、测试的成本极高。相比于通过ASIC实现ECC点乘,利用FPGA实现具有成本低、开发周期短的优点,同时利用FPGA实现ECC点乘,也可以获得较佳的计算速度,足以应对绝大多数非严苛场景的需求。因此,利用FPGA硬件实现ECC点乘获得了工业界和学术界的广泛共识。
[0006] Khan提出了一种高速低延时的FPGA椭圆曲线点乘设计。该设计通过有限状态机调163
度一个乘法器、一个模平方器与若干加法器实现点乘。该设计虽然在小型有限域GF(2 )上
571
表现较好,但在大型有限域上GF(2 )工作频率下降高达38%。
[0007] Salarifard设计了一种基于预计算技术的高性能椭圆曲线点乘电路,通过一系列预先计算,将固定基点不同倍数的特征值先行计算出,并存储在内存中,后续点乘计算过程中可大幅降低计算时钟周期数,进而有效降低计算时延。但此设计仅可在椭圆曲线签名场景中加以实际应用,在大量其他应用场景中,基点并不是固定不变的,因此本设计的优势也就难以发挥。
[0008] 李丽娟设计了一种基于Koblitz曲线的快速椭圆曲线点乘电路,采用流水线的双字转换器将点乘算子转换至τ基表达形式,再基于τ基表达形式进行快速点乘。该设计虽然计算时延很低,但Koblitz曲线只是通用椭圆曲线的特例,故在大量曲线未指定的一般化应用场景无法工作。
[0009] 在实际应用中,针对不同安全级别的应用场景,椭圆曲线点乘需要支持位宽不同的多种有限域。而现有的高速椭圆曲线点乘设计(如Khan设计)在小型有限域的工作时钟频率较高,然而当其支持大型有限域时,工作时钟频率会出现明显的陡降。同时,一些设计为了片面追求点乘的性能,其点乘架构仅支持特殊的曲线(李丽娟设计)、特殊的应用场景(Salarifard设计),并不具有普适性。
[0010] 因此,如何提供一种低时延椭圆曲线点乘电路设计方法成为了本领域技术人员亟需解决的问题。

发明内容

[0011] 有鉴于此,本发明提供了一种低时延椭圆曲线点乘电路设计方法,电路不仅在小163 571
型有限域GF(2 )上拥有高时钟频率,在大型有限域上GF(2 )依然可以维持较高的主频,在小型有限域上可以同时运行两次点乘运算,提高硬件资源利用率。
[0012] 为了实现上述目的,本发明采用如下技术方案:
[0013] 一种低时延椭圆曲线点乘电路设计方法,包括如下步骤:
[0014] 步骤S1:设计Karatsuba‑Ofman模乘法器;将两个乘数输入乘法器后,进行一次Karatsuba拆解,形成三个小位宽的子乘法器;三个子乘法器的结果进行一次Karatsuba拼接,形成最终的乘法结果;
[0015] 步骤S2:在Karatsuba‑Ofman模乘法器的基础上,设计低时延点乘架构;点乘计算的迭代部分通过反复调用改进的Karatsuba‑Ofman模乘法器实现,点乘计算的模逆部分通过模平方器、模四次方器、一些寄存器与改进的Karatsuba‑Ofman模乘法器共同实现;
[0016] 步骤S3:基于低时延ECC点乘架构,设计相应的最优调度策略,点乘计算的迭代部分每轮迭代调度紧凑,模逆部分的计算时钟周期数取决于点乘架构当前计算所在的有限域大小。
[0017] 进一步的,步骤S1中设计Karatsuba‑Ofman模乘法器的具体方法为:将两个2w位宽的乘数A、B输入乘法器后,分别被拆分为高w位与低w位的小型操作数,依次记为Ah,Al,Bh与w wBl,拆分后满足关系A=Ah×x+Al,B=Bh×x+Bl;其中Ah为乘数A中的高w位,Al为乘数A中的m
低w位,Bh为乘数B中的高w位与Bl为乘数A中的低w位,x为二进制域GF(2)多项式基表达形式的基底;四个小型操作数经过拆分、相加处理,作为输入分别输入三个w位的乘法器中:乘法器1输入Ah与Bh并计算AhBh,乘法器2输入(Ah+Al)与(Bh+Bl)并计算(Ah+Al)×(Bh+Bl),乘法器3输入Al与Bl并计算AlBl;乘法器的结果输出后,需要根据当前进行点乘计算的有限域进行对
163
应有限域的模约减;如果工作在小型有限域GF(2 ),则利用A的高w位与B的高w位存储一组
163 163
GF(2 )上的乘数,用A的低w位与B的低w位存储另一组GF(2 )上的乘数,乘法器1与乘法器
3的结果分别为第一组乘数的乘积和第二组乘数的乘积;乘法器1和乘法器3的结果经过有
163 163
限域GF(2 )的模约减,可同时得到两个GF(2 )乘法最终的结果;如果工作在大型有限域
571 571
GF(2 ),则A和B分别为两个GF(2 )上的乘数,乘法器1、乘法器2和乘法器3的结果需要经过Karatsuba拼接,以产生Karatsuba‑Ofman乘法结果:
[0018] AhBhx2w+[(Ah+A1)×(Bh+B1)+AhBh+A1B1]xw+A1B1
[0019] 其中x为二进制域GF(2m)多项式基表达形式的基底;乘法结果经过有限域GF(2571)的模约减,得到乘法的最终结果。
[0020] 进一步的,乘法器的输出通过两个多路选择器控制,当乘法器工作在小型有限域163 163
GF(2 ),两个MUX选通两个小型有限域GF(2 )的模约减结果;当乘法器工作在大型有限域
571 571
GF(2 ),两个MUX选通GF(2 )的模约减结果。
[0021] 进一步的,A,B的乘积得到的方法为:设A,B为GF(2m)中两个m位宽的乘数,一般的,w wm为奇数,令2w=m+1,,则A,B表示为A=Ahx+A1,B=Bhx+B1,Karatsuba‑Ofman乘法推导为:
[0022] A×B=(Ahxw+A1)×(Bhxw+B1)
[0023] =AhBhx2w+[(Ah+A1)×(Bh+B1)+AhBh+A1B1]xw+A1B1
[0024] 只需要计算三次位宽为w的小型乘法分别计算AhBh与(Ah+Al)×(Bh×Bl)AlBl,再通w过一系列加法将三个小型乘法的结果进行拼接,形成上式中x的系数,最终得到A,B的乘积。
[0025] 进一步的,步骤S2中,模平方、模四次方均通过纯组合逻辑电路实现;设置有限状态机用于调度模乘、模平方、模四次方运算,增加额外的寄存器用于缓存数据通路的数据,增加多路选择器MUX用于控制数据流;在每次点乘的后处理部分,基于Itoh Tsujii算法,通过有限状态机循环迭代乘法、平方、四次方运算以计算Z1与(xPZ1Z2)的模逆,进而最终计算(xQ,yQ);其中Z1、Z2分别为Montgomery Ladder的迭代两点结果(射影坐标),xP为点乘基点的横坐标(仿射坐标),xQ与yQ分别为点乘结果的横坐标(仿射坐标)与纵坐标(仿射坐标)。
[0026] 进一步的,步骤S3中,电路上电后,复位为空闲状态,收到计算点乘的使能信号后,4 2
跳转至初始化状态执行初始化X1←xP,Z1←1,X2←xP+b,Z2←xP,初始化完成后进入主循环;
主循环的两种情况,通过先默认计算ki=1,最后再判断是否交换Z1与Z2、X1与X2的值实现;计
2 4 4 2
算公式T←Z1,Z1←(X1Z2+X2Z1) ,X1←xPZ1+X1X2TZ2与T←X2,X2←X2+bZ2,Z2←T2Z2的各个模运算拆分至6个时钟周期依次计算;其中,xP为点乘基点的横坐标(仿射坐标),(X1,Y1,Z1)、(X2,Y2,Z2)分别为Montgomery Ladder的迭代过程中两点结果(射影坐标),T(Temporary)为中间临时变量。
[0027] 本发明的有益效果在于:
[0028] 1、本发明的方法是面向全部GF(2m)椭圆曲线的,因此可以避免只局限于Koblitz曲线这种特殊情况。
[0029] 2、本发明的方法是不用事先指定一个固定的基点P的,每次点乘的基点是可变的,因此可以避免只局限于固定基点P这种特殊情况。
[0030] 3、本发明的硬件设计是经过充分优化后的电路结构图,电路的关键路径得到了充分优化。同时Karatsuba‑Ofman模乘法器本身的性能较好,工作频率较高。

附图说明

[0031] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本实用新式的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0032] 图1为本发明Karatsuba‑Ofman模乘法器架构图;
[0033] 图2为本发明低时延点乘架构图;
[0034] 图3为本发明低时延点乘架构的状态机跳转图;
[0035] 图4为本发明ki=1,ki+1=1时的迭代调度图;
[0036] 图5为本发明ki=1,ki+1=0时的迭代调度图。

具体实施方式

[0037] 下面将结合本发明的实施例中,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0038] 本发明提供了一种低时延椭圆曲线点乘电路设计方法,包括如下步骤:
[0039] 步骤S1:设计Karatsuba‑Ofman模乘法器;将两个乘数输入乘法器后,进行一次Karatsuba拆解,形成三个小位宽的子乘法器,子乘法器不再进行Karatsuba拆解,子乘法器2
采用复杂度为O(n)的经典乘法器架构;三个子乘法器的结果进行一次Karatsuba拼接,形成最终的乘法结果。
[0040] Karatsuba‑Ofman乘法是一种通用的,具有明显优化效果的乘法算法。然而Karatsuba‑Ofman乘法算法并非拆解的次数越多优化效果越好,而是存在最优的拆解方法。经过多次实验,本发明提出一种单层Karatsuba拆解深度的改进的Karatsuba‑Ofman模乘法器。对于两个乘数,进行一次Karatsuba拆解,形成三个较小位宽的子乘法器,子乘法器不再进行Karatsuba‑Ofman拆解,采用经典乘法方法加以实现。三个子乘法器的结果进行一次Karatsuba拼接,即可形成最终的乘法结果。
[0041] 步骤S2:在Karatsuba‑Ofman模乘法器的基础上,设计低时延点乘架构;点乘计算的迭代部分通过反复调用改进的Karatsuba‑Ofman模乘法器实现,点乘计算的模逆部分通过模平方器、模四次方器、一些寄存器与改进的Karatsuba‑Ofman模乘法器共同实现。
[0042] 基于改进的Karatsuba‑Ofman模乘法器,利用有限状态机发明了低时延ECC点乘架构。点乘计算的迭代部分通过反复调用改进的Karatsuba‑Ofman模乘法器实现,点乘计算的模逆部分通过模平方器、模四次方器、一些寄存器与改进的Karatsuba‑Ofman模乘法器共同实现。
[0043] 步骤S3:基于低时延ECC点乘架构,设计相应的最优调度策略,点乘计算的迭代部分每轮迭代调度紧凑,模逆部分的计算时钟周期数取决于点乘架构当前计算所在的有限域大小。
[0044] 基于低时延ECC点乘架构,发明了相应的最优调度策略,各个时钟周期所需执行的操作如图4和图5所示。点乘计算的迭代部分每轮迭代调度紧凑,仅需6个时钟周期,模逆部分的计算时钟周期数取决于点乘架构当前计算所在的有限域大小。
[0045] (一)Karatsuba‑Ofman模乘法器
[0046] A,B的乘积得到的方法为:设A,B为GF(2m)中两个m位宽的乘数,一般的,m为奇数,w w令2w=m+1,,则A,B表示为A=Ahx+A1,B=Bhx+B1,Karatsuba‑Ofman乘法推导为:
[0047] A×B=(Ahxw+A1)×(Bhxw+B1)
[0048] =AhBhx2w+[(Ah+A1)×(Bh+B1)+AhBh+A1B1]xw+A1B1
[0049] 只需要计算三次位宽为w的小型乘法分别计算AhBh与(Ah+Al)×(Bh+Bl)AlBl,再通过w一系列加法将三个小型乘法的结果进行拼接,形成上式中x的系数,最终得到A,B的乘积[0050] 根据以上推导,本发明设计Karatsuba‑Ofman模乘法器如图1所示。将两个2w位宽的乘数A、B输入乘法器后,分别被拆分为高w位与低w位的小型操作数,依次记为Ah,Al,Bh与w w
Bl,拆分后满足关系A=Ah×x+Al,B=Bh×x+Bl;其中Ah为乘数A中的高w位,Al为乘数A中的m
低w位,Bh为乘数B中的高w位与Bl为乘数A中的低w位,x为二进制域GF(2)多项式基表达形式的基底;四个小型操作数经过拆分、相加处理,作为输入分别输入三个w位的乘法器中:乘法器1输入Ah与Bh并计算AhBh,乘法器2输入(Ah+Al)与(Bh+Bl)并计算(Ah+Al)×(Bh+Bl),乘法器3输入Al与Bl并计算AlBl;乘法器的结果输出后,需要根据当前进行点乘计算的有限域进行对
163
应有限域的模约减;如果工作在小型有限域GF(2 ),则利用A的高w位与B的高w位存储一组
163 163
GF(2 )上的乘数,用A的低w位与B的低w位存储另一组GF(2 )上的乘数,乘法器1与乘法器
3的结果分别为第一组乘数的乘积和第二组乘数的乘积;乘法器1和乘法器3的结果经过有
163 163
限域GF(2 )的模约减,可同时得到两个GF(2 )乘法最终的结果;如果工作在大型有限域
571 571
GF(2 ),则A和B分别为两个GF(2 )上的乘数,乘法器1、乘法器2和乘法器3的结果需要经过Karatsuba拼接,以产生Karatsuba‑Ofman乘法结果:
[0051] AhBhx2w+[(Ah+A1)×(Bh+B1)+AhBh+A1B1]xw+A1B1
[0052] 其中x为二进制域GF(2m)多项式基表达形式的基底;乘法结果经过有限域GF(2571)的模约减,得到乘法的最终结果。乘法器的输出通过两个多路选择器(MUX)控制,当乘法器163 163
工作在小型有限域GF(2 ),两个MUX选通两个GF(2 )的模约减结果;当乘法器工作在大型
571 571
有限域GF(2 ),两个MUX选通GF(2 )的模约减结果。
[0053] (二)低时延点乘架构
[0054] 基于Montgomery Ladder与投影坐标系转化,在GF(2m)上通用椭圆曲线y2+xy=x3+2
ax+b的点乘计算算法如下表所示。
[0055] 表1
[0056]
[0057]
[0058] 表1中,点乘就是在已知基点P的横纵坐标、标量k的基础上,计算Q=kP。P的坐标为(xP,yP),Q的坐标为(xQ,yQ);为了便于硬件电路执行点乘,本发明通常把标量k以二进制的形式写出来,就是k=(kt‑1,kt‑2,…,k0)2;对于k的二进制形式,我们一般默认最高位是有意义的1,即条件kt‑1=1;k的脚坐标是从t‑1一直到0的,由于k的最高位为1,所以下面的循环2 3 2
部分,只需要从t‑2开始进行迭代,直到i=0;椭圆曲线的方程为y +xy=x +ax+b,b即为方程中的参数b。
[0059] 在Karatsuba‑Ofman模乘法器的基础上,本发明设计低时延点乘架构如图2所示。其中模平方、模四次方均可通过纯组合逻辑电路实现。同时,设置有限状态机用于调度模乘、模平方、模四次方运算,增加额外的寄存器用于缓存数据通路的数据,增加多路选择器MUX用于控制数据流。在每次点乘的后处理部分,基于Itoh Tsujii算法,通过有限状态机循环迭代乘法、平方、四次方运算以计算Z1与(xPZ1Z2)的模逆,进而最终计算(xQ,yQ)。
[0060] (三)基于低时延点乘架构的调度策略
[0061] 低时延点乘架构的状态机跳转图如图3所示。电路上电后,复位为空闲状态,收到4
计算点乘的使能信号后,跳转至初始化状态执行表1中的初始化X1←xP,Z1←1,X2←xP+b,Z2
2
←xP,初始化完成后进入主循环。主循环的两种情况,可以通过先默认计算ki=1,最后再判
2
断是否交换Z1与Z2、X1与X2的值实现。计算公式T←Z1,Z1←(X1Z2+X2Z1) ,X1←xPZ1+X1X2TZ2与T
4 4 2
←X2,X2←X2 +bZ2,Z2←T2Z2 的各个模运算拆分至6个时钟周期依次计算,形成6个步骤,拆分方法见图4。每轮迭代均为6个步骤,但由于初次进入主循环与主循环迭代过程存在数据通路的不一致,故额外设置首轮步骤1状态,首轮步骤2状态,在非首轮迭代过程中,仅存在无需交换交换Z1与Z2、X1与X2的的迭代保持步骤1、迭代保持步骤2与需交换交换Z1与Z2、X1与X2的的迭代翻转步骤1、迭代翻转步骤2。
[0062] 图4为ki=1,ki+1=1时的迭代调度图,图5为ki=1,ki+1=0时的迭代调度图,其中MUL为模乘,SQR为模平方,QUA为模四次方,ADD为模加(即异或),虚线表示时钟周期。由于k的当前执行位与上一轮执行位相同,故ki=1,ki+1=1时完成一轮迭代后,进入迭代保持步骤;ki=1,ki+1=0时,当前执行位与上一轮执行位不同,故进入迭代翻转步骤。
[0063] 本发明的算法(表1)是面向全部GF(2m)椭圆曲线的,因此可以避免只局限于Koblitz曲线这种特殊情况。
[0064] 本发明的算法(表1)是不用事先指定一个固定的基点P的,每次点乘的基点是可变的,因此可以避免只局限于固定基点P这种特殊情况。
[0065] 本发明的硬件设计(图2)是经过充分优化后的电路结构图(通过开发工具分析电路的关键路径,关键路径就是一个电路结构中最耗时的那一条路径,可以类比于木桶原理,最差的这条关键路径决定了电路总体的性能。利用工具分析这条路径的起点与终点,移除一部分逻辑至其他的路径,可以类比于把木桶的相对较长的木条锯下来补在较短路径上。当然只是类比,实际优化过程还需要考虑电路的前后数据依赖关系,数据通路是否可以复用等等。最终,得到了优化后的电路),电路的关键路径得到了充分优化。同时Karatsuba‑Ofman模乘法器本身的性能较好,工作频率较高。
[0066] 本发明设计了一种二进制域支持通用椭圆曲线的低时延点乘电路,该电路不仅在163 571
小型有限域GF(2 )上拥有高时钟频率,在大型有限域上GF(2 )依然可以维持较高的主频。同时,在小型有限域上可以同时运行两次点乘运算,提高硬件资源利用率。本发明面向通用ECC曲线,普适性更好。
[0067] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。