CN115712408A - 一种用于公钥密码算法加速的协处理器 - Google Patents

一种用于公钥密码算法加速的协处理器 Download PDF

Info

Publication number
CN115712408A
CN115712408A CN202211389566.9A CN202211389566A CN115712408A CN 115712408 A CN115712408 A CN 115712408A CN 202211389566 A CN202211389566 A CN 202211389566A CN 115712408 A CN115712408 A CN 115712408A
Authority
CN
China
Prior art keywords
circuit
point
domain
parameter
algorithm
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
Application number
CN202211389566.9A
Other languages
English (en)
Inventor
刘政林
汪钊旭
于润泽
江鸿
邹雪城
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Src Technology Co ltd
Huazhong University of Science and Technology
Original Assignee
Wuhan Src Technology Co ltd
Huazhong University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Src Technology Co ltd, Huazhong University of Science and Technology filed Critical Wuhan Src Technology Co ltd
Priority to CN202211389566.9A priority Critical patent/CN115712408A/zh
Publication of CN115712408A publication Critical patent/CN115712408A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

本发明公开了一种用于公钥密码算法加速的协处理器,属于数字逻辑电路技术领域,包括:底层算法单元,包括模加减电路、Q值计算电路和蒙哥马利模乘电路;中层算法单元,包括点的加法电路、点的倍乘电路和模幂电路,可调用底层算法单元;顶层算法单元,包括模逆电路和点的标量乘电路,可调用中层算法单元和底层算法单元;逻辑控制单元,用于根据操作命令控制底层算法单元、中层算法单元和顶层算法单元,以实现4096位及以下任意长度的RSA算法中模幂操作、SM2算法中椭圆曲线的多倍点操作以及ECC算法中椭圆曲线的多倍点操作。可支持多种算法,且支持的密钥长度更高、运算域更齐全。

Description

一种用于公钥密码算法加速的协处理器
技术领域
本发明属于数字逻辑电路技术领域,更具体地,涉及一种用于公钥密码算法加速的协处理器。
背景技术
公钥密码算法具有信息的加密、解密、数字签名和签名验证等功能,且具备公钥和私钥两套不同的密钥,使其在安全性上强于对称密码算法。随着信息安全风险的不断上升,密钥的长度也在不断加长,随之而来的是公钥算法的计算量在快速变大。使用编程手段来实现公钥密码算法不仅容易遭受外来攻击,而且计算效率低下,因此,使用专门的计算单元加速特定算法成为了主流优化思想。
当前主流的公钥密码算法主要包括RSA、ECC以及SM2这三种算法。目前,业界普遍要求兼容2048、3072甚至4096位长度的RSA,ECC和SM2则涉及到椭圆曲线域的兼容性。当前ECC广泛使用的有限域是素数域和二元域,SM2基于ECC之上,要求必须同时兼容这两种域中的椭圆曲线问题计算,同时规定密钥长度为256/257位。国内外在公钥算法加速器设计上的成果众多,但是在兼容性的取舍、密钥长度的限定和算法的硬件实现上都不尽相同。
传统公钥密码加速器存在以下不足点:能加速的公钥密码算法通常是单一的,在当前多种公钥密码算法混合使用的场合,其很难发挥出最大的加速效果;支持的RSA密钥长度短,不符合目前的安全性需求;对ECC/SM2算法的运算域支持不完备,只支持素数域和二元扩域其中一个运算域;支持的ECC/SM2算法的椭圆曲线长度较短,难以满足当下以及未来的需求。
发明内容
针对现有技术的缺陷和改进需求,本发明提供了一种用于公钥密码算法加速的协处理器,其目的在于解决传统加速器支持的算法单一、支持的密钥长度低和运算域不齐全的问题。
为实现上述目的,本发明提供了一种用于公钥密码算法加速的协处理器,包括:底层算法单元,包括模加减电路、Q值计算电路和蒙哥马利模乘电路;中层算法单元,包括点的加法电路、点的倍乘电路和模幂电路,可调用所述底层算法单元;顶层算法单元,包括模逆电路和点的标量乘电路,可调用所述中层算法单元和所述底层算法单元;逻辑控制单元,用于根据操作命令控制所述底层算法单元、所述中层算法单元和所述顶层算法单元,以实现4096位及以下任意长度的RSA算法中模幂操作、SM2算法中椭圆曲线的多倍点操作以及ECC算法中椭圆曲线的多倍点操作。
更进一步地,第一乘数A、第二乘数B和模数N分别按照32位一组分为w+1个元素后输入所述蒙哥马利模乘电路,所述蒙哥马利模乘电路用于:S1,计算第一参数T:T=(Ai×B0+S0)&(0xFFFF_FFFF),i的初始值为0,Ai为所述第一乘数A分组后的第i+1个元素,B0为所述第二乘数B分组后的第1个元素,S0为当前模乘结果S的第1个元素;S2,计算第二参数U:U=(Q×T)&(0xFFFF_FFFF),Q为预计算参数;S3,计算第三参数Z:Z=S0+D+Ai×B0+U×N0,D为初始值为0的第四参数,N0为所述模数N分组后的第1个元素;S4,更新第四参数D:D=Z>>32;S5,更新第三参数Z:Z=Sj+D+Ai×Bj+U×Nj,j的初始值为1,Sj为当前模乘结果S的第j+1个元素,Bj为所述第二乘数B分组后的第j+1个元素,Nj为所述模数N分组后的第j+1个元素;S6,更新Sj-1和第四参数D:Sj-1=Z&(0xFFFF_FFFF),D=Z>>32;S7,对j进行加一处理,重复执行所述S5-S6,直至j=w+1;S8,对i进行加一处理,重复执行所述S1-S7,直至i=w。
更进一步地,所述蒙哥马利模乘电路包括计算单元,所述计算单元包括:第一Wallace树形双域流水线乘法器,用于计算Ai×B0、Q×T和Ai×Bj;第二Wallace树形双域流水线乘法器,用于计算U×N0和U×Nj;第一双域加法器,用于根据Ai×B0的计算结果计算所述S1中的第一参数T;第二双域加法器,用于计算S0+D和Sj+D;第三双域加法器,用于将Ai×B0的计算结果与U×N0的计算结果相加,以及将Ai×Bj的计算结果与U×Nj的计算结果相加;第四双域加法器,用于将S0+D的计算结果与所述第三双域加法器输出的Ai×B0+U×N0的计算结果相加以计算所述S3中第三参数Z,以及将Sj+D的计算结果与所述第三双域加法器输出的Ai×Bj+U×Nj的计算结果相加以更新所述S5中第三参数Z,并执行所述S4和S6中更新第四参数D的操作。
更进一步地,所述计算单元的数量为一个或多个,当所述计算单元的数量为多个时,多个所述计算单元按照顺序依次执行一轮所述S1-S7。
更进一步地,所述第一Wallace树形双域流水线乘法器和所述第二Wallace树形双域流水线乘法器为32比特宽度的三级流水线乘法器;所述第一双域加法器、所述第二双域加法器、所述第三双域加法器和所述第四双域加法器为64比特宽度的双域行波加法器。
更进一步地,所述Q值计算电路用于计算预计算参数Q,预计算参数Q满足:
Figure BDA0003931410760000031
其中,N0为模数N的最低32比特。
更进一步地,所述模加减电路可被所述点的加法电路和所述点的倍乘电路调用;所述Q值计算电路可被所述操作命令调用;所述蒙哥马利模乘电路可被所述操作命令、所述点的加法电路、所述点的倍乘电路和所述模幂电路调用;所述点的加法电路和所述点的倍乘电路可被点的标量乘电路调用;所述模幂电路可被所述操作命令和所述模逆电路调用;所述模逆电路被所述操作命令和所述点的标量乘电路调用;所述点的标量乘电路被所述操作命令调用。
更进一步地,素数域中,所述点的加法电路和所述点的倍乘电路在雅可比-仿射混合坐标系中分别进行点的加法运算和点的倍乘运算;二元扩域中,所述点的加法电路和所述点的倍乘电路在洛佩兹达哈卜-仿射混合坐标系中分别进行点的加法运算和点的倍乘运算。
更进一步地,所述模逆电路采用费马小定理算法实现双域模逆运算,最大模数比特宽度为4096位。
总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
(1)通过对RSA、ECC和SM2算法的分析,将所有需要硬件实现的数学算法划分为底层算法、中层算法和顶层算法,并将所有算法单元整合成协处理器,其支持4096位及以下的RSA模幂运算、SM2所需的256/257位双域椭圆曲线点乘计算、ECC不高于384位的双域椭圆曲线点乘计算以及双域模乘、模逆运算,兼容性好;
(2)资源消耗可定制,通过改变蒙哥马利模乘电路中并行计算单元的数量,可以在电路的计算速度、面积、功耗之间做平衡,满足多种不同场合的需求。
附图说明
图1为本发明实施例提供的用于公钥密码算法加速的协处理器的架构示意图;
图2为本发明实施例提供的蒙哥马利模乘电路的结构示意图;
图3为本发明实施例提供的计算单元的一轮执行过程的示意图;
图4为本发明实施例提供的计算单元的结构示意图;
图5为本发明实施例提供的蒙哥马利模乘电路的数据流示意图;
图6为本发明实施例提供的协处理器应用场景示意图;
图7为本发明实施例提供的测试256位素数域椭圆曲线点乘的结果;
图8为本发明实施例提供的测试257位二元扩域椭圆曲线点乘的结果;
图9为本发明实施例提供的计算4096位RSA私钥运算的结果;
图10为本发明实施例提供的计算素数域和二元扩域模逆运算的结果。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
在本发明中,本发明及附图中的术语“第一”、“第二”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
图1为本发明实施例提供的用于公钥密码算法加速的协处理器的架构示意图。参阅图1,结合图2-图10,对本实施例中用于公钥密码算法加速的协处理器进行详细说明。
参阅图1,用于公钥密码算法加速的协处理器包括:底层算法单元、中层算法单元、顶层算法单元、和逻辑控制单元。
底层算法单元包括模加减电路、Q值计算电路和蒙哥马利模乘电路。中层算法单元包括点的加法电路、点的倍乘电路和模幂电路,可调用底层算法单元。顶层算法单元包括模逆电路和点的标量乘电路,可调用中层算法单元和底层算法单元。
逻辑控制单元根据操作命令控制底层算法单元、中层算法单元和顶层算法单元,以实现4096位及以下任意长度的RSA算法中模幂操作、SM2算法中椭圆曲线的多倍点操作以及ECC算法中椭圆曲线的多倍点操作。
进一步地,根据本发明的实施例,模加减电路可被点的加法电路和点的倍乘电路调用;Q值计算电路可被操作命令调用;蒙哥马利模乘电路可被操作命令、点的加法电路、点的倍乘电路和模幂电路调用;点的加法电路和点的倍乘电路可被点的标量乘电路调用;模幂电路可被操作命令和模逆电路调用;模逆电路被操作命令和点的标量乘电路调用;点的标量乘电路被操作命令调用。
用于公钥密码算法加速的协处理器(以下简称为协处理器)可以对RSA公钥密码算法的加密、解密等操作进行加速。RSA公钥密码算法的加密和解密原理如下:
(1)密钥的生成
(1.1)随机选取两个不同的大素数p和q,计算模数N=p×q。由欧拉函数可知,与N互素且不大于N的整数个数为
Figure BDA0003931410760000063
个。
(1.2)选取一个公钥KE,满足
Figure BDA0003931410760000064
且与
Figure BDA0003931410760000065
互素。通常,为了减少大多数终端设备加密和验签的计算量,公钥会选择比较短小的比特串,如3、17、65537等。
(1.3)计算满足(KD×KE)
Figure BDA0003931410760000062
的KD,将其作为私钥。公开公钥{N,KE},保密私钥{N,KD}。
(2)加密方法
对于明文比特串P,其满足条件P<N,且P的比特宽度小于N的比特宽度,则有:
Figure BDA0003931410760000061
(3)解密方法
对于密文比特串,将其进行分割处理后,某组密文为C,则其解密过程为:
Figure BDA0003931410760000071
协处理器能计算上述算法中的
Figure BDA0003931410760000072
Figure BDA0003931410760000073
操作,且支持的模数N的最大比特宽度为4096位,从而达到加速RSA算法计算的目的。
协处理器能对ECC公钥密码算法的加密和解密操作进行加速,典型的素数域ECC公钥密码算法的加解密原理如下:
(1)密钥的生成
(1.1)选择一个素数域GF(P)和一条定义在素数域上的椭圆曲线EP(a,b):y2=x3+ax+b。随机取一个点G为基点,要求基点G的阶n尽量大(接近素数P)。选择的椭圆曲线,基点G和它的阶n为公钥参数的部分。
(1.2)随机生成一大数k,要求k大于1且小于n,计算点的标量乘P=kG。随机数k为私钥,P=kG为公钥部分。
(2)加密方法
对于明文序列(M1,M2),随机生成一大数w,要求w大于等于1且小于n,计算点的标量乘wP=(x,y)。如果x、y中有一个为0,则需要重新选取w。wP计算完成后,利用素数域运算法则计算:
C0=wG,C1=M1·x,C2=M2·y
由此,得到密文序列(C0,C1,C2)。
(3)解密方法
得到密文序列(C0,C1,C2)后,基于以下方式计算明文序列:
(x,y)=kC0,M1=C1·x-1,M2=C2·y-1
协处理器能计算上述算法中的C0=wG和(x,y)=kC0涉及的点乘运算;求x-1、y-1的模逆运算;以及计算C1、C2、M1、M2的模乘运算,且最高支持384位素数域和二元扩域椭圆曲线。
协处理器能对SM2公钥密码算法的加密和解密操作进行加速,其加解密原理如下:
(1)密钥的生成
(1.1)从素数域GF(P)和二元域GF(2m)中选择一个运算域,之后根据运算域选择一条定义在其上的椭圆曲线E(a,b),依照国密标准,素数P通常选择256位大素数,二元域多项式通常选择GF(2257),并据此选择三项式x257+x12+1。
(1.2)选取基点G,要求G的阶n接近#GF(P)或#GF(2m)。随机生成一大数dB∈[2,n-1]作为私钥,计算公钥PB=dBG=(xB,yB)。将公钥PB和椭圆曲线参数、基点G、阶n,以及余因子
Figure BDA0003931410760000081
Figure BDA0003931410760000082
公开。
(2)加密方法
假设有一长度为klen的明文串M需要加密,其具体加密过程为:随机生成一数k∈[1,n-1],计算C1=(x1,y1)=kG;计算S=(xs,ys)=hPB,如果S是无穷远点,则报错并结束;计算P=(x2,y2)=kPB;调用SM3实现的KDF函数,计算t=KDFklen(x2,y2),若t=0,则返回最初步骤重新选择随机数;计算C2=M⊕t;计算C3=Hash(x2,M,y2);得到密文C=(C1,C2,C3)。
(3)解密方法
假设有一密文C=(C1,C2,C3),且已知klen为C2的长度,具体解密过程为:验证C1=(x1,y1)是否为给定椭圆曲线上的点,若否,则报错并结束;计算S=hC1,若S是无穷远点,则报错并结束;计算P=(x2,y2)=dBC1,调用KDF函数执行t=KDFklen(x2,y2),若t=0,则报错并结束;计算M=C2⊕t和u=Hash(x2,M,y2),若u=C3,则M为所求明文,否则报错并退出。
协处理器能计算上述算法中的素数域256位椭圆曲线的点乘操作和二元扩域257位椭圆曲线的点乘操作。
本实施例中,通过对RSA、ECC和SM2算法的分析,将所有需要硬件实现的数学算法划分为底层算法、中层算法和顶层算法,并将所有算法单元整合成协处理器,其支持4096位及以下的RSA模幂运算、SM2所需的256/257位双域椭圆曲线点乘计算、ECC不高于384位的双域椭圆曲线点乘计算以及双域模乘、模逆运算。
本实施例中,第一乘数A、第二乘数B和模数N分别按照32位一组分为w+1个元素后输入蒙哥马利模乘电路,输入蒙哥马利模乘电路的第一乘数A、第二乘数B和模数N为:
A={Aw,Aw-1,Aw-2,Aw-3,...,A1,A0},Aw=0
B={Bw,Bw-1,Bw-2,Bw-3,...,B1,B0},Bw=0
N={Nw,Nw-1,Nw-2,Nw-3,...,N1,N0},Nw=0
蒙哥马利模乘电路的输入还包括:预计算参数Q、R=232w。其中,
Figure BDA0003931410760000091
,k为模数比特宽度。蒙哥马利模乘电路的输出为:
S=MontMul(A,B,R,N)=(ABR-1)mod N=(Sw,Sw-1,...,S1,S0),Sw=0
根据本发明的实施例,蒙哥马利模乘电路用于执行操作S1-操作S8,如图3所示。其中,第一参数T、第二参数U、S的初始值均为0。
操作S1,计算第一参数T:
T=(Ai×B0+S0)&(0xFFFF_FFFF)
其中,i的初始值为0,Ai为第一乘数A分组后的第i+1个元素,B0为第二乘数B分组后的第1个元素,S0为当前模乘结果S的第1个元素。
操作S2,计算第二参数U:
U=(Q×T)&(0xFFFF_FFFF)
其中,Q为预计算参数
操作S3,计算第三参数Z:
Z=S0+D+Ai×B0+U×N0
其中,D为初始值为0的第四参数,N0为模数N分组后的第1个元素。
操作S4,更新第四参数D:
D=Z>>32
操作S5,更新第三参数Z:
Z=Sj+D+Ai×Bj+U×Nj
其中,j的初始值为1,Sj为当前模乘结果S的第j+1个元素,Bj为第二乘数B分组后的第j+1个元素,Nj为模数N分组后的第j+1个元素。
操作S6,更新Sj-1和第四参数D:
Sj-1=Z&(0xFFFF_FFFF)
D=Z>>32
操作S7,对j进行加一处理,重复执行操作S5-操作S6,直至j=w+1。
操作S8,对i进行加一处理,重复执行操作S1-操作S7,直至i=w。
根据本发明的实施例,蒙哥马利模乘电路包括计算单元(Calculation unit,CU)。参阅图4,计算单元包括:第一Wallace树形双域流水线乘法器、第二Wallace树形双域流水线乘法器、第一双域加法器、第二双域加法器、第二双域加法器和第四双域加法器。计算单元还包括计算参数寄存器、操作数延时寄存器堆、计算结果延时寄存器堆和控制状态机等。
第一Wallace树形双域流水线乘法器的输入端连接内部计算参数寄存器和/或计算单元取到的操作数,输出端连接第一双域加法器和第三双域加法器的输入端以及内部计算参数寄存器。第一双域加法器的输入端和输出端还均连接到内部计算参数寄存器。
第二Wallace树形双域流水线乘法器的输入端连接内部计算参数寄存器和计算单元取到的操作数,输出端连接第三双域加法器的输入端。第三双域加法器的输出端连接到第四双域加法器的输入端。
第二双域加法器的输入端连接到内部计算参数寄存器,输出端连接到第四双域加法器的输入端。第四双域加法器的输出端连接到计算结果延时寄存器堆。
计算参数寄存器包含了存储中间参数Ai、Q、N0、B0、T、Bj、U、Nj、Z、D、S0的寄存器;操作数延时寄存器堆用于将操作数Bj和Nj进行延时后送给下一级计算单元;计算结果延时寄存器堆用于将计算单元的计算结果Sj-1进行延时后送给下一级计算单元或同步FIFO;控制状态机用于控制计算单元的执行过程,包括乘法器的输入选择和使能,寄存器数据的刷新和相关控制信号的发出等。
第一Wallace树形双域流水线乘法器用于计算Ai×B0、Q×T和Ai×Bj。第二Wallace树形双域流水线乘法器用于计算U×N0和U×Nj
第一双域加法器用于根据Ai×B0的计算结果计算操作S1中的第一参数T。第二双域加法器用于计算S0+D和Sj+D。第三双域加法器用于将Ai×B0的计算结果与U×N0的计算结果相加,以及将Ai×Bj的计算结果与U×Nj的计算结果相加。
第四双域加法器,用于将S0+D的计算结果与第三双域加法器输出的Ai×B0+U×N0的计算结果相加以计算操作S3中第三参数Z,以及将Sj+D的计算结果与第三双域加法器输出的Ai×Bj+U×Nj的计算结果相加以更新操作S5中第三参数Z,并执行操作S4和操作S6中更新第四参数D的操作。
根据本发明的实施例,第一Wallace树形双域流水线乘法器和第二Wallace树形双域流水线乘法器为32比特宽度的三级流水线乘法器;第一双域加法器、第二双域加法器、第三双域加法器和第四双域加法器为64比特宽度的双域行波加法器。
参阅图2,蒙哥马利模乘电路还包括CU主控电路和FIFO。CU主控电路用于从SRAM中取得需要的操作数,并送给计算单元。FIFO为同步FIFO,用于暂存一次计算过程中最终的迭代结果S。每个计算单元的功能为执行一次32位字的高基蒙哥马利算法的外部循环;CU主控电路的功能为控制整个模乘计算的过程,包括取操作数、送操作数、判断计算结束等。
根据本发明的实施例,计算单元的数量为一个或多个。当计算单元的数量为多个时,多个计算单元按照顺序依次执行一轮操作S1-操作S7。以图5中示出的蒙哥马利模乘电路中计算单元的数量为5个为例,CU主控电路从SRAM中取得Ai、Ai+1、Ai+2、Ai+3、Ai+4,分别送到这5个计算单元,再根据计算单元的执行过程从SRAM中取操作数B和N送入第一个计算单元中。每个计算单元使用完操作数B和N后,会将操作数进行延时处理,连同当前计算单元计算的结果S一起送给下一级计算单元,作为计算的操作数。图中计算单元CU5计算的结果S需要暂存进同步FIFO,待下一次循环发起时使用。
通过利用多个(如5个)计算单元构成模乘电路,使得计算单元主控仅需取B和N一次,即可完成上述算法中操作2的多轮(如5轮)for循环,大大减少了模乘运算消耗的时间。
根据本发明的实施例,Q值计算电路用于计算预计算参数Q,预计算参数Q满足:
Figure BDA0003931410760000121
其中,N0为模数N的最低32比特。
根据本发明的实施例,素数域中,点的加法电路和点的倍乘电路在雅可比-仿射混合坐标系中分别进行点的加法运算和点的倍乘运算;二元扩域中,点的加法电路和点的倍乘电路在洛佩兹达哈卜-仿射混合坐标系中分别进行点的加法运算和点的倍乘运算。
根据本发明的实施例,模逆电路采用费马小定理算法实现双域模逆运算,最大模数比特宽度为4096位。
本实施例中,蒙哥马利模乘电路用于计算素数域和二元扩域的大数模乘;模加减电路用于计算素数域和二元扩域的大数模加减,并且能够在不求补码的条件下完成有限域中的加减法运算;点的加法电路用于计算素数域和二元扩域椭圆曲线上的两点的相加;点的倍乘电路用于计算素数域和二元扩域椭圆曲线上的某点的双倍点;模幂电路用于计算素数域和二元扩域的大数的模幂,优选使用R-L扫描快速幂算法实现;点的标量乘电路用于计算素数域和二元扩域椭圆曲线点的多倍点问题,优选使用L-R扫描法调用点的加法和点的倍乘算法实现;模逆电路用于计算素数域和二元扩域中的元素的逆元素。
参阅图1,本实施例中,协处理器还包括片上总线从机接口。片上总线从机接口用于输入操作数、计算参数和操作命令,输出计算结果和标志信号。协处理器和处理器通过片上总线从机接口进行数据传输。处理器向协处理器写入计算参数后,再向协处理器对应工作寄存器写指令,使能计算,在计算完成后,从协处理器中预设的存储区域取回计算结果。
参阅图6,示出了协处理器的应用场景,PC机通过JTAG连接到FPGA开发板,烧录FPGA电路固件和处理器执行的程序;处理器的片上总线接口先连接到总线互联器的从接口上,配置总线上的主从设备均为一个,总线互联器上的主接口连接到外围总线转换器上,进而连接到协处理器的片上总线从接口,协处理器的高速时钟由片上总线时钟经锁相环倍频得到。协处理器内部的SRAM和FIFO使用FPGA上的资源实现。
本实施例中,令处理器执行一段包含了测试的输入参数和对应的调用协处理器的驱动函数,处理器通过执行测试程序,将相应数据通过片上总线送入协处理器中运算,运算完毕后取出放在自身的内存空间中,并按顺序打印到串口上,上位机通过监听串口上的数据得到最终的计算结果,和标准用例进行比对。素数域256位椭圆曲线点乘的测试用例如表1所示。协处理器计算素数域256位椭圆曲线点乘的测试结果如图7所示。
表1
参数
模数P 0x8542d69e4c044f18e8b92435bf6ff7de457283915c45517d722edb8b08f1dfc3
椭圆系数a 0x787968b4fa32c3fd2417842e73bbfeff2f3c848b6831d7e0ec65228b3937e498
乘数k 0x4c62eefd6ecfc2b95b92fd6c3d9575148afa17425546d49018e5388d49dd7b4f
基点坐标X<sub>G</sub> 0x435b39cca8f3b508c1488afc67be491a0f7ba07e581a0e4849a5cf70628a7e0a
基点坐标Y<sub>G</sub> 0x75ddba78f15feecb4c7895e2c1cdf5fe01debb2cdbadf45399ccf77bba076a42
结果坐标X<sub>R</sub> 0x64d20d27d0632957f8028c1e024f6b02edf23102a566c932ae8bd613a8e865fe
结果坐标Y<sub>R</sub> 0x58d225eca784ae300a81a2d48281a828e1cedf11c4219099840265375077bf78
二元扩域257位椭圆曲线点乘的测试用例如表2所示,协处理器计算二元扩域257位椭圆曲线点乘的测试结果如图8所示。
表2
参数
模多项式PX 0x20000000000000000000000000000000000000000000000000000000000001001
椭圆系数a 0x0
椭圆参数b 0x00e78bcd09746c202378a7e72b12bce00266b9627ecb0b5a25367ad1ad4cc6242b
乘数k 0x6d3b497153e3e92524e5c122682dbdc8705062e20b917a5f8fcdb8ee4c66663d
基点坐标X<sub>G</sub> 0x00a67941e6de8a61805f7bcff0985bb3bed986f1c297e4d8880d82b821c624ee57
基点坐标Y<sub>G</sub> 0x0193ed5a6707b5908781b860841085f52eefa7fe329a5c811843533a874d027271
结果坐标X<sub>R</sub> 0x0083e628cf701ee3141e8873fe55936adf24963f5dc9c6480566c80f8a1d8cc51b
结果坐标Y<sub>R</sub> 0x01524c647f0c0412defd468bda3ae0e5a80fcc8f5c990fee11602929232dcd9f36
4096位RSA私钥运算的测试用例如表3所示,协处理器计算4096位RSA私钥运算的结果如图9所示。
表3
参数
模数P 0x8542d69e4c044f18e8b92435bf6ff7de457283915c45517d722edb8b08f1dfc3
操作数A 0x64866219af67a447e4058a3ac7b19b4b9326654587d2b759a2cf3f3f b38c97e9
求逆结果A<sup>-1</sup> 0x15291d983bec040eebd7e8afd2afdbcd3e19ef47e27b5b4b9dd48bc8 e5e96dd1
素数域和二元扩域模逆运算的测试用例如表4所示,协处理器计算素数域和二元扩域模逆运算的结果如图10所示,图中左侧为素数域模逆运算结果,右侧为二元扩域模逆运算结果。
表4
参数
模多项式PX 0x20000000000000000000000000000000000000000000000000000000000001001
操作数AX 0x138ca30549efb3ad4ad0b64877e422bac1159c96a3bfce2b8ac0c3ce28dec695a
求逆结果AX<sup>-1</sup> 0x1162974ca6a5d256fc82a3b90c2f33d2e4dfb8981d181812c4460e26d2bf18366
结合以上测试,本实施例中的协处理器,工作在100MHz的高速时钟和25MHz的APB总线时钟下时,执行一次素数域256位椭圆曲线的点乘运算耗时约30ms,执行一次二元扩域257位椭圆曲线的点乘运算耗时约21.4ms,执行一次4096位RSA私钥运算耗时约744.4ms,执行一次4096位公钥运算耗时约5.8ms,具有极快的处理速度。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种用于公钥密码算法加速的协处理器,其特征在于,包括:
底层算法单元,包括模加减电路、Q值计算电路和蒙哥马利模乘电路;
中层算法单元,包括点的加法电路、点的倍乘电路和模幂电路,可调用所述底层算法单元;
顶层算法单元,包括模逆电路和点的标量乘电路,可调用所述中层算法单元和所述底层算法单元;
逻辑控制单元,用于根据操作命令控制所述底层算法单元、所述中层算法单元和所述顶层算法单元,以实现4096位及以下任意长度的RSA算法中模幂操作、SM2算法中椭圆曲线的多倍点操作以及ECC算法中椭圆曲线的多倍点操作。
2.如权利要求1所述的用于公钥密码算法加速的协处理器,其特征在于,第一乘数A、第二乘数B和模数N分别按照32位一组分为w+1个元素后输入所述蒙哥马利模乘电路,所述蒙哥马利模乘电路用于:
S1,计算第一参数T:T=(Ai×B0+S0)&(0xFFFF_FFFF),i的初始值为0,Ai为所述第一乘数A分组后的第i+1个元素,B0为所述第二乘数B分组后的第1个元素,S0为当前模乘结果S的第1个元素;
S2,计算第二参数U:U=(Q×T)&(0xFFFF_FFFF),Q为预计算参数;
S3,计算第三参数Z:Z=S0+D+Ai×B0+U×N0,D为初始值为0的第四参数,N0为所述模数N分组后的第1个元素;
S4,更新第四参数D:D=Z>>32;
S5,更新第三参数Z:Z=Sj+D+Ai×Bj+U×Nj,j的初始值为1,Sj为当前模乘结果S的第j+1个元素,Bj为所述第二乘数B分组后的第j+1个元素,Nj为所述模数N分组后的第j+1个元素;
S6,更新Sj-1和第四参数D:Sj-1=Z&(0xFFFF_FFFF),D=Z>>32;
S7,对j进行加一处理,重复执行所述S5-S6,直至j=w+1;
S8,对i进行加一处理,重复执行所述S1-S7,直至i=w。
3.如权利要求2所述的用于公钥密码算法加速的协处理器,其特征在于,所述蒙哥马利模乘电路包括计算单元,所述计算单元包括:
第一Wallace树形双域流水线乘法器,用于计算Ai×B0、Q×T和Ai×Bj
第二Wallace树形双域流水线乘法器,用于计算U×N0和U×Nj
第一双域加法器,用于根据Ai×B0的计算结果计算所述S1中的第一参数T;
第二双域加法器,用于计算S0+D和Sj+D;
第三双域加法器,用于将Ai×B0的计算结果与U×N0的计算结果相加,以及将Ai×Bj的计算结果与U×Nj的计算结果相加;
第四双域加法器,用于将S0+D的计算结果与所述第三双域加法器输出的Ai×B0+U×N0的计算结果相加以计算所述S3中第三参数Z,以及将Sj+D的计算结果与所述第三双域加法器输出的Ai×Bj+U×Nj的计算结果相加以更新所述S5中第三参数Z,并执行所述S4和S6中更新第四参数的操作。
4.如权利要求3所述的用于公钥密码算法加速的协处理器,其特征在于,所述计算单元的数量为一个或多个,当所述计算单元的数量为多个时,多个所述计算单元按照顺序依次执行一轮所述S1-S7。
5.如权利要求3或4所述的用于公钥密码算法加速的协处理器,其特征在于,所述第一Wallace树形双域流水线乘法器和所述第二Wallace树形双域流水线乘法器为32比特宽度的三级流水线乘法器;所述第一双域加法器、所述第二双域加法器、所述第三双域加法器和所述第四双域加法器为64比特宽度的双域行波加法器。
6.如权利要求1或2所述的用于公钥密码算法加速的协处理器,其特征在于,所述Q值计算电路用于计算预计算参数Q,预计算参数Q满足:
Figure FDA0003931410750000031
其中,N0为模数N的最低32比特。
7.如权利要求1所述的用于公钥密码算法加速的协处理器,其特征在于,所述模加减电路可被所述点的加法电路和所述点的倍乘电路调用;所述Q值计算电路可被所述操作命令调用;所述蒙哥马利模乘电路可被所述操作命令、所述点的加法电路、所述点的倍乘电路和所述模幂电路调用;
所述点的加法电路和所述点的倍乘电路可被点的标量乘电路调用;所述模幂电路可被所述操作命令和所述模逆电路调用;
所述模逆电路被所述操作命令和所述点的标量乘电路调用;所述点的标量乘电路被所述操作命令调用。
8.如权利要求1所述的用于公钥密码算法加速的协处理器,其特征在于,素数域中,所述点的加法电路和所述点的倍乘电路在雅可比-仿射混合坐标系中分别进行点的加法运算和点的倍乘运算;二元扩域中,所述点的加法电路和所述点的倍乘电路在洛佩兹达哈卜-仿射混合坐标系中分别进行点的加法运算和点的倍乘运算。
9.如权利要求1所述的用于公钥密码算法加速的协处理器,其特征在于,所述模逆电路采用费马小定理算法实现双域模逆运算,最大模数比特宽度为4096位。
CN202211389566.9A 2022-11-08 2022-11-08 一种用于公钥密码算法加速的协处理器 Pending CN115712408A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211389566.9A CN115712408A (zh) 2022-11-08 2022-11-08 一种用于公钥密码算法加速的协处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211389566.9A CN115712408A (zh) 2022-11-08 2022-11-08 一种用于公钥密码算法加速的协处理器

Publications (1)

Publication Number Publication Date
CN115712408A true CN115712408A (zh) 2023-02-24

Family

ID=85232447

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211389566.9A Pending CN115712408A (zh) 2022-11-08 2022-11-08 一种用于公钥密码算法加速的协处理器

Country Status (1)

Country Link
CN (1) CN115712408A (zh)

Similar Documents

Publication Publication Date Title
CN110351087B (zh) 流水线型的蒙哥马利模乘运算方法
Güneysu et al. Ultra high performance ECC over NIST primes on commercial FPGAs
Loi et al. Scalable elliptic curve cryptosystem FPGA processor for NIST prime curves
Wang et al. FPGA implementation of a large-number multiplier for fully homomorphic encryption
CN115344237B (zh) 结合Karatsuba和蒙哥马利模乘的数据处理方法
Güneysu Utilizing hard cores of modern FPGA devices for high-performance cryptography
Salarifard et al. An efficient low-latency point-multiplication over curve25519
Karakoyunlu et al. Efficient and side-channel-aware implementations of elliptic curve cryptosystems over prime fields
CN113783702A (zh) 一种椭圆曲线数字签名与验签的硬件实现方法和系统
CN111092718A (zh) 加密方法、装置及电子设备
KR101925868B1 (ko) 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템
Niasar et al. Optimized architectures for elliptic curve cryptography over Curve448
JP2002229445A (ja) べき乗剰余演算器
CN114895870B (zh) 基于fpga实现的高效可重构sm2点乘方法及系统
Ito et al. The parallel FDFM processor core approach for CRT-based RSA decryption
Awaludin et al. A high-performance ecc processor over curve448 based on a novel variant of the karatsuba formula for asymmetric digit multiplier
Pajuelo-Holguera et al. Fast montgomery modular multiplier using FPGAs
Elkhatib et al. Accelerated RISC-V for post-quantum SIKE
CN109144472B (zh) 一种二元扩域椭圆曲线的标量乘法及其实现电路
CN112491543B (zh) 基于改进的蒙哥马利模幂电路的ic卡解密方法
CN112099763B (zh) 用于sm2的快速安全硬件乘法器及其应用
Ding et al. A reconfigurable high-speed ECC processor over NIST primes
CN115712408A (zh) 一种用于公钥密码算法加速的协处理器
Valencia et al. The design space of the number theoretic transform: A survey
CN114594925A (zh) 适用于sm2加密运算的高效模乘电路及其运算方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination