CN114650135B - 一种软硬件协同的sm2椭圆曲线密码算法实现方法 - Google Patents
一种软硬件协同的sm2椭圆曲线密码算法实现方法 Download PDFInfo
- Publication number
- CN114650135B CN114650135B CN202210347648.0A CN202210347648A CN114650135B CN 114650135 B CN114650135 B CN 114650135B CN 202210347648 A CN202210347648 A CN 202210347648A CN 114650135 B CN114650135 B CN 114650135B
- Authority
- CN
- China
- Prior art keywords
- protocol
- scalar multiplication
- elliptic curve
- hardware
- software
- 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.)
- Active
Links
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 70
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000004364 calculation method Methods 0.000 claims abstract description 31
- 238000012795 verification Methods 0.000 claims description 26
- 238000007689 inspection Methods 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 claims description 2
- 238000009795 derivation Methods 0.000 claims description 2
- 230000008859 change Effects 0.000 abstract description 4
- 238000007792 addition Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 4
- 230000008520 organization Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种软硬件协同的SM2椭圆曲线密码算法实现方法。在CPU软件端运行SM2密码协议,将其中计算复杂度最高的标量乘运算通过软件/硬件接口交由FPGA硬件端执行;FPGA硬件端实现一个通用的高性能标量乘运算模块,快速完成标量乘运算并通过软件/硬件接口返回运算结果;软件端取回标量乘运算结果后继续执行协议,向上层应用返回协议结果。该方法在软件端适配协议的更改,硬件端无需重新配置,具有运算性能高,通用性、可扩展性强的特点,可用于加密服务器等场合,尤其适用于有高吞吐的加密操作,且需要频繁更改使用的SM2密码协议的场景。
Description
技术领域
本发明涉及信息安全技术领域,尤其涉及一种软硬件协同的SM2椭圆曲线密码算法实现方法。
背景技术
椭圆曲线密码(Elliptic Curve Cryptography,ECC)算法是一种基于椭圆曲线的公开密钥密码算法,最早于1985年由Neal Koblitz和Victor Miller分别独立地提出。与另一种公钥密码算法—RSA算法相比,ECC算法具有更高的安全性和更小的密钥长度,在数字签名、信息安全、区块链等领域具有广泛的应用。
自1998年起,一些国际标准化组织陆续制定了ECC的标准,如ANSI公布的ANSI-X9.62、ANSI-X9.63标准,IEEE公布的IEEE-P1363标准等。SM2椭圆曲线密码算法是我国自行研发并具有自主知识产权的ECC算法,于2017年底纳入ISO/IEC国际标准。
目前的SM2椭圆曲线密码算法实现方法可分为软件实现和硬件实现两类。软件方法实现具有设计开发成本低、便于维护等优点;硬件方法实现具有算法性能高、功耗低等优点。
在以往的SM2椭圆曲线密码算法实现方法中存在的主要问题有:(1)软件方法实现的算法性能低,无法满足高吞吐的场景需求;(2)硬件方法实现的通用性、扩展性较差,二次开发、升级的成本较大。
发明内容
本发明的目的在于针对现有技术的不足,提供一种软硬件协同的SM2椭圆曲线密码算法实现方法。
本发明的目的是通过以下技术方案来实现的:一种软硬件协同的SM2椭圆曲线密码算法实现方法,该方法包含如下步骤:
S101:设定椭圆曲线参数;
S102:选择SM2椭圆曲线密码算法协议;
S103:软件端执行步骤S102选取的密码算法协议,通过软件/硬件接口向硬件端下发标量乘运算请求;
S104:硬件端响应步骤S103中软件端下发的标量乘运算请求,执行标量乘运算,并将运算结果通过软件/硬件接口返回软件端;
S105:软件端取回步骤S104中硬件端返回的运算结果,继续执行协议,若协议中仍有待执行的标量乘运算,则返回步骤S103;
S106:输出密码算法协议返回值。
进一步地,所述步骤S101中,设定的椭圆曲线参数为GB/T 32918.5-2017标准规定的SM2椭圆曲线公钥密码算法的曲线参数。
进一步地,所述步骤S102中,所述SM2椭圆曲线密码算法协议包括密钥对生成协议、数字签名生成协议、数字签名验证协议、消息加密协议和消息解密协议。
进一步地,所述步骤S103中,软件端实现SM2椭圆曲线密码算法协议,由CPU负责执行,并通过软件/硬件接口调用硬件端完成标量乘运算。
进一步地,所述步骤S104中,硬件端为在FPGA上实现的4个子模块:标量乘运算控制器子模块、点加运算控制器子模块、点倍运算控制器子模块、模运算子模块;其中,标量乘运算控制模块采用状态机方式实现,根据随机数k的NAF编码结果h组织进行点加运算与点倍运算;点加运算控制模块与点倍运算控制模块均采用状态机方式实现,按Jacobian坐标系下的计算公式组织进行模乘、模加和模减运算;模运算模块是执行具体的计算任务的模块,包括模乘运算、模加运算、模减运算和模逆运算4种运算模式。
进一步地,所述步骤S103-S105中,在CPU软件端和FPGA硬件端之间进行数据传输的软件/硬件接口为PCIE高速总线接口。
进一步地,支持的5种SM2椭圆曲线密码算法协议需要调用硬件端模块分别进行至少1、1、2、2、1次标量乘运算。
进一步地,FPGA硬件端标量乘运算电路模块的标量乘运算控制器子模块用于调用点加运算和点倍运算模块,实现标量乘运算。
进一步地,FPGA硬件端标量乘运算电路模块的点加运算控制器子模块和点倍运算控制器子模块用于调度模运算子模块,分别实现点加运算和点倍运算。
进一步地,FPGA硬件端标量乘运算电路模块的模运算子模块支持模乘运算、模加运算、模减运算、模逆运算4种运算模式。
本发明的有益效果是,本发明在CPU软件端运行SM2密码协议,将其中计算复杂度最高的标量乘运算通过软件/硬件接口交由FPGA硬件端执行;FPGA硬件端实现一个通用的高性能标量乘运算模块,快速完成标量乘运算并通过软件/硬件接口返回运算结果;软件端取回标量乘运算结果后继续执行协议,向上层应用返回协议结果。该方法在软件端适配协议的更改,硬件端无需重新配置,具有运算性能高,通用性、可扩展性强的特点,可用于加密服务器等场合,尤其适用于有高吞吐的加密操作,且需要频繁更改使用的SM2密码协议的场景。
附图说明
图1为本发明提出的软硬件协同的SM2椭圆曲线密码算法实现方法的流程图;
图2为本发明提出的SM2椭圆曲线密码算法软硬件协同实现架构框图;
图3为SM2椭圆曲线密码算法密钥对生成协议的流程图;
图4为SM2椭圆曲线密码算法数字签名生成协议的流程图;
图5为SM2椭圆曲线密码算法数字签名验证协议的流程图;
图6为SM2椭圆曲线密码算法消息加密协议的流程图;
图7为SM2椭圆曲线密码算法消息解密协议的流程图;
图8为FPGA硬件端实现的标量乘运算器系统框图;
图9为FPGA硬件端实现的标量乘运算控制器状态转移图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细描述。在不冲突的情况下,下述的实施例及实施方式中的特征可以相互组合。
本发明提出了一种软硬件协同的SM2椭圆曲线密码算法实现方法,其所实现的软硬件协同架构包括3个部分,如图1所示,分别为CPU软件端、FPGA硬件端以及PCIE软件/硬件接口。其中,软件/硬件接口是CPU软件端与FPGA硬件端之间进行数据交换的桥梁,使用PCIE总线实现。软件端将需要进行标量乘运算的随机数k与椭圆曲线点P的坐标(xP,yP)通过PCIE接口发送给硬件端;硬件端执行标量乘运算,将运算结果,即椭圆曲线点Q=[k]P的坐标(xQ,yQ)通过PCIE接口返回给软件端,其中[k]P表示随机数k和椭圆曲线点P的标量乘。
椭圆曲线可由椭圆曲线方程定义:y2=x3+ax+b,坐标(x,y)满足椭圆曲线方程的点即为定义在该椭圆曲线上的点。关于椭圆曲线详细的定义与理论可参见专著:HankersonD,Menezes A,Springer S V.Guide to Elliptic Curve Cryptography[M].Springer,2004.
该方法的流程如图2所示,具体包括以下步骤:
步骤S101,设定椭圆曲线参数,设定的椭圆曲线参数为GB/T 32918.5-2017标准规定的SM2椭圆曲线公钥密码算法的曲线参数。其中,模数p=2256-2224-296+264-1,为广义梅森素数。广义梅森素数是使用类似梅森素数的生成方式所构造的一类素数,关于梅森素数与广义梅森素数的具体定义可参见:Solinas J A.Generalized Mersenne Prime[J].Springer US.
步骤S102,选择SM2椭圆曲线密码算法协议,支持密钥对生成协议、数字签名生成协议、数字签名验证协议、消息加密协议和消息解密协议5种SM2密码算法协议。其中,密钥对生成协议采用GB/T 32918.1-2016标准规定方式实现,协议流程如图3所示;数字签名生成协议和数字签名验证协议采用GB/T 32918.2-2016标准规定方式实现,协议流程分别如图4、图5所示;消息加密协议和消息解密协议采用GB/T 32918.4-2016标准规定方式实现,协议流程分别如图6、图7所示。
在以下步骤S103~S105对SM2椭圆曲线密码算法的5种具体协议的描述中,符号定义沿用上述各协议对应的国家标准文件所使用的符号系统。
步骤S103,软件执行步骤S102中选定的SM2椭圆曲线密码算法具体协议,5种协议的执行步骤分别如下:
1.密钥对生成协议
(1)产生随机数d;
(2)通过PCIE总线向FPGA硬件端发送执行标量乘运算(x1,y1)=[k]G的请求,其中G为椭圆曲线系统参数中的基点。
2.数字签名生成协议
(1)将签名者的信息ZA与待签名信息M拼接得到M’;
(2)使用消息摘要算法SM3计算M’的杂凑值e;
(3)产生随机数k;
(4)通过PCIE总线向FPGA硬件端发送执行标量乘运算(x1,y1)=[k]G的请求。
关于SM3消息摘要算法的描述可参见国家标准GB/T 32905-2016。
3.数字签名验证协议
(1)检验r∈[1,n-1]是否成立,若不成立,则签名验证不通过;
(2)检验s∈[1,n-1]是否成立,若不成立,则签名验证不通过;
(3)将ZA与M拼接得到M’;
(4)计算M’的杂凑值e;
(5)计算t=(r+s)mod n,若t=0,则签名验证不通过;
(6)通过PCIE总线向FPGA硬件端发送执行标量乘运算(x1,y1)=[s]G+[t]PA的请求。
4.消息加密协议
(1)产生随机数k;
(2)通过PCIE总线向FPGA硬件端发送执行标量乘运算C1=(x1,y1)=[k]G的请求;
(3)通过PCIE总线向FPGA硬件端发送执行标量乘运算S=[h]PB的请求;
(4)通过PCIE总线向FPGA硬件端发送执行标量乘运算(x2,y2)=[k]PB的请求。
5.消息解密协议
(1)检验C1是否满足椭圆曲线方程,若不满足,则报错退出;
(2)通过PCIE总线向FPGA硬件端发送执行标量乘运算S=[h]C1的请求;
(3)通过PCIE总线向FPGA硬件端发送执行标量乘运算(x2,y2)=[dB]C1的请求;
(4)计算t=KDF(x2||y2,klen),若t为全0比特串,则报错退出;
(5)计算C2和t按位异或的结果
(6)计算x2,M’,y2拼接后的杂凑值u,若u≠C3,则报错退出。
其中,KDF()为密钥派生函数,详细定义可参见GB/T 32918.4-2016标准文件,下同。
步骤S104中,硬件端响应标量乘运算请求,执行标量乘运算,并通过PCIE总线返回运算结果(x,y),该结果将用于步骤S105的进一步操作。
硬件端由FPGA具体实现标量乘运算,响应软件端的标量乘运算请求,并执行标量乘运算。如图1所示,FPGA硬件端标量乘运算的4个子模块自顶向下可以分为三个层次:标量乘运算控制模块、点加/点倍运算控制模块及模运算模块,各层次的实现均可采用对应的优化方法。关于标量乘运算、点加运算、点倍运算、模运算等各种椭圆曲线点运算或域运算的定义,可参见椭圆曲线密码学专著:Hankerson D,Menezes A,Springer S V.Guide toElliptic Curve Cryptography[M].Springer,2004.
标量乘运算,即椭圆曲线上同一个点的多次加的运算。设k是一个m比特位宽的正整数,ki为k的二进制表示,P是椭圆曲线上的点,则称点P的k次加为标量乘运算,或k倍点运算,记为:
由上式可知,标量乘运算可表示为一系列点P的2的整数次幂倍点相加的形式,即标量乘运算可由一系列的点加和点倍运算完成。对于m比特位宽的随机数k和椭圆曲线点P的标量乘运算,点加和点倍的期望次数分别为m/2和m次。可通过对随机数进行非相邻(Non-adjacent Form,NAF)编码,使点加的期望次数减少至m/3次,hi为k的NAF编码:
关于整数的NAF编码方法及原理的详细论述可参见:Booth A D.A signed binarymultiplication technique[J].Quarterly Journal of Mechanics and AppliedMathematics(2):236-240.
如下式,NAF编码的核心思想是使用两位非零码元取代正整数k的二进制串中的连续非零比特序列,从而使得编码具有更小的汉明重量,达到减少点加运算次数的目的。
点加运算即两个椭圆曲线上的点P、Q相加的运算:R=P+Q;点倍运算即当P=Q时的点加运算:R=[2]P=P+P。
对于椭圆曲线点P(x1,y1)、Q(x2,y2)和R(x3,y3),在仿射坐标系下进行点加运算和点倍运算各需要进行若干次模乘运算、模加运算、模减运算以及两次模逆运算。点加运算的计算公式为:
点倍运算的计算公式为:
在4种模运算中,模逆运算的复杂度最高,计算代价远大于其他3种模运算。通过坐标变换,将仿射坐标系下的点(x,y)映射到Jacobian加重射影坐标系下的点(X,Y,Z),在Jacobian坐标系下进行点加和点倍运算,可以避免进行模逆运算,从而提升点加运算和点倍运算的效率。
对于椭圆曲线点P(X1,Y1,Z1)、Q(X2,Y2,Z2)和R(X3,Y3,Z3),在Jacobian坐标系下进行点加运算的计算公式为:
进行点倍运算的计算公式为:
由以上计算公式可知,在Jacobian坐标系下进行的点加运算和点倍运算仅依赖于模乘运算、模加运算和模减运算3种模运算。
FPGA实现的标量乘运算模块如图8所示,由标量乘运算控制模块Controller、点加运算控制模块Point Add、点倍运算控制模块Point Double及模运算模块ModularCalculator组成。
标量乘运算控制模块由状态机实现,根据随机数k的NAF编码结果h组织进行点加运算与点倍运算。其状态转移图如图9所示,共有6个状态,各状态进行的操作及状态转移关系描述如下:
IDLE为初始状态,等待运算启动信号en进入NAF状态;
NAF状态对输入参数k进行NAF编码得到h,编码完成后,根据编码最低位判断选择进入PA状态或PD状态;
PA状态进行点加运算,点加运算完成后进入PD状态;
PD状态进行点倍运算,点倍运算完成后进入SHIFT状态;
SHIFT状态判断标量乘运算是否结束,若k的NAF编码h为0,则进入FIN状态;否则对h执行向右移位操作,根据编码最低位判断选择进入PA状态或PD状态;
FIN状态为标量乘运算结束状态,输出运算结果和运算结束有效信号,并自动回到初始状态IDLE。
点加运算控制模块与点倍运算控制模块由状态机实现,按Jacobian坐标系下的计算公式组织进行模乘、模加和模减运算。表1、表2分别为点加运算控制模块状态机和点倍运算控制模块状态机的状态表,表中列出了各个状态执行的具体运算操作。其中,每一组表达式表示一次相应的运算操作,由3个要素构成,分别为箭头符号、箭头前的变量和箭头后的变量。箭头前的变量为待运算数,箭头后的变量为运算结果。表中使用的变量表示符与步骤S103和步骤S105中使用的符号对应。
表1
表2
模运算模块是执行具体的计算任务的模块,包括模乘运算、模加运算、模减运算和模逆运算4种运算模式。
其中,模加运算与模减运算采用相同的电路模块分两步实现。首先,计算两输入之和/差;其次,计算上一步的和/差与模数p的差/和;模加运算或模减运算的运算结果即为上述两步结果之一。
模逆运算采用扩展的欧几里得算法实现,关于该算法的原理与算法流程可参见专著:Thomas,H.Cormen,Charles,E.Leiserson,Ronald,L.Rivest,Clifford,Stein,殷建平,徐云,王刚,刘晓光,苏明,邹恒明,王宏志.算法导论(原书第3版)[M].
模乘算法通常采用蒙哥马利模乘算法实现,该算法的原理与算法流程可参见:Montgomery P L.Modular multiplication without trial division[J].Mathematicsof Computation,1985.
对于椭圆曲线参数中的模数p为广义梅森素数的情况,也可采用先进行乘法运算,再对乘积进行快速模约简的方法。
步骤S105,软件端取回标量乘运算结果,继续执行步骤S102选定的具体的SM2椭圆曲线密码算法协议:
1.密钥对生成协议
(1)取回标量乘运算结果(x1,y1)=[k]G;
(2)将点P代入椭圆曲线方程,若P=O,即P为无穷远点,则返回步骤S103(1-1)。
2.数字签名生成协议
(1)取回标量乘运算结果(x1,y1)=[k]G;
(2)计算r=(e+x1)mod n,若r=0或r+k=n,则返回步骤S103的(2-3);
(3)计算s=[(1+dA)-1·(k-r·dA)]mod n,若s=0,则返回步骤S103的(2-3)。
3.数字签名验证协议
(1)取回标量乘运算结果(x1,y1)=[s]G+[t]PA;
(2)计算R=(e+x1)mod n,若R=r,则签名验证通过,否则不通过。
4.消息加密协议
(1)取回标量乘运算结果C1=(x1,y1)=[k]G,执行步骤S103的(4-3);
(2)取回标量乘运算结果S=[h]PB,执行步骤S103的(4-4);
(3)取回标量乘运算结果(x2,y2)=[k]PB;
(4)计算t=KDF(x2||y2,klen),若t为全0比特串,则返回步骤S103的(4-1);
(5)计算M和t按位异或的结果C2=M⊕t;
(6)计算x2,M,y2拼接后的杂凑值C3。
5.消息解密协议
(1)取回标量乘运算结果S=[h]C1,执行步骤S103的(5-3);
(2)取回标量乘运算结果(x2,y2)=[dB]C1;
(3)计算t=KDF(x2||y2,klen),若t为全0比特串,则报错退出;
(4)计算C2和t按位异或的结果M’=C2⊕t;
(5)计算x2,M’,y2拼接后的杂凑值u,若u≠C3,则报错退出。
步骤S106,输出密码算法协议返回值,根据步骤S102中选定的具体的SM2椭圆曲线密码算法协议,输出对应的协议返回值:
1.密钥对生成协议
(1)输出生成的密钥对(d,P)
2.数字签名生成协议
(1)输出签名者A对消息M的签名结果(r,s)。
3.数字签名验证协议
(1)输出签名验证结果,即签名验证是否通过。
4.消息加密协议
(1)输出消息M的密文C=C1||C2||C3。
5.消息解密协议
(1)输出密文解密后得到的消息明文M。
以上仅为本发明具体实施方式,不能以此来限定本发明的范围,本技术领域内的一般技术人员根据本创作所作的均等变化,以及本领域内技术人员熟知的改变,都应仍属本发明涵盖的范围。
Claims (10)
1.一种软硬件协同的SM2椭圆曲线密码算法实现方法,其特征在于,该方法包含如下步骤:
S101:设定椭圆曲线参数,设定的椭圆曲线参数为GB/T 32918.5-2017标准规定的SM2椭圆曲线公钥密码算法的曲线参数;
S102:选择SM2椭圆曲线密码算法协议,支持密钥对生成协议、数字签名生成协议、数字签名验证协议、消息加密协议和消息解密协议5种SM2密码算法协议;
S103:软件端执行步骤S102选取的密码算法协议,5种协议的执行步骤分别如下:
1. 密钥对生成协议
(1)产生随机数d;
(2)通过PCIE总线向FPGA硬件端发送执行标量乘运算(x 1, y 1) = [k]G的请求,其中G为椭圆曲线系统参数中的基点,k表示随机数d,(x 1, y 1)为标量乘运算后得到的椭圆曲线点的坐标;
2. 数字签名生成协议
(1)将签名者的信息Z A 与待签名信息M拼接得到M’;
(2)使用消息摘要算法SM3计算M’的杂凑值e;
(3)产生随机数k;
(4)通过PCIE总线向FPGA硬件端发送执行标量乘运算(x 1, y 1) = [k]G的请求;
3. 数字签名验证协议
(1)检验r ∊ [1, n-1]是否成立,若不成立,则签名验证不通过;
(2)检验s ∊ [1, n-1]是否成立,若不成立,则签名验证不通过;
(3)将Z A 与M拼接得到M’;
(4)计算M’的杂凑值e;
(5)计算t = (r + s) mod n,若t = 0,则签名验证不通过;
(6)通过PCIE总线向FPGA硬件端发送执行标量乘运算(x 1, y 1)= [s]G + [t]P A 的请求;
4. 消息加密协议
(1)产生随机数k;
(2)通过PCIE总线向FPGA硬件端发送执行标量乘运算C 1=(x 1, y 1) = [k]G的请求;
(3)通过PCIE总线向FPGA硬件端发送执行标量乘运算S = [h]P B 的请求;
(4)通过PCIE总线向FPGA硬件端发送执行标量乘运算(x 2, y 2) = [k]P B 的请求;其中(x 2, y 2)为标量乘运算后得到的椭圆曲线点的坐标;
5. 消息解密协议
(1)检验C 1是否满足椭圆曲线方程,若不满足,则报错退出;
(2)通过PCIE总线向FPGA硬件端发送执行标量乘运算S = [h]C 1的请求;
(3)通过PCIE总线向FPGA硬件端发送执行标量乘运算(x 2, y 2) = [d B ]C 1的请求;
(4)计算t =KDF( x 2 || y 2, klen),若t为全0比特串,则报错退出;其中KDF()为密钥派生函数;
(5)计算C 2和t按位异或的结果M’ = C 2⊕t;
(6)计算x 2, M’, y 2拼接后的杂凑值u,若u ≠ C 3,则报错退出;
S104:硬件端响应步骤S103中软件端下发的标量乘运算请求,执行标量乘运算,并通过PCIE总线返回运算结果(x, y),该结果将用于步骤S105的进一步操作;
S105:软件端取回步骤S104中硬件端返回的运算结果,继续执行步骤S102选定的密码算法协议,若协议中仍有待执行的标量乘运算,则返回步骤S103:
1. 密钥对生成协议
(1)取回标量乘运算结果(x 1, y 1) = [k]G;
(2)将点P代入椭圆曲线方程,若P = O,即P为无穷远点,则返回步骤S103(1-1);
2. 数字签名生成协议
(1)取回标量乘运算结果(x 1, y 1) = [k]G;
(2)计算r = (e + x 1) mod n,若r = 0或r + k = n,则返回步骤S103的(2-3);
(3)计算s =[(1 + d A )-1 ∙(k - r∙d A )] mod n,若s = 0,则返回步骤S103的(2-3);
3. 数字签名验证协议
(1)取回标量乘运算结果(x 1, y 1)= [s]G + [t]P A ;
(2)计算R = (e + x 1) mod n,若R = r,则签名验证通过,否则不通过;
4. 消息加密协议
(1)取回标量乘运算结果C 1=(x 1, y 1) = [k]G,执行步骤S103的(4-3);
(2)取回标量乘运算结果S = [h]P B ,执行步骤S103的(4-4);
(3)取回标量乘运算结果(x 2, y 2) = [k]P B ;
(4)计算t =KDF( x 2 || y 2, klen),若t为全0比特串,则返回步骤S103的(4-1);
(5)计算M和t按位异或的结果C 2 = M⊕t;
(6)计算x 2, M, y 2拼接后的杂凑值C 3;
5. 消息解密协议
(1)取回标量乘运算结果S = [h]C 1,执行步骤S103的(5-3);
(2)取回标量乘运算结果(x 2, y 2) = [d B ]C 1;
(3)计算t =KDF( x 2 || y 2, klen),若t为全0比特串,则报错退出;
(4)计算C 2和t按位异或的结果M’ = C 2⊕t;
(5)计算x 2, M’, y 2拼接后的杂凑值u,若u ≠ C 3,则报错退出;S106:输出密码算法协议返回值,根据步骤S102中选定的SM2椭圆曲线密码算法协议,输出对应的协议返回值:
1. 密钥对生成协议
(1)输出生成的密钥对(d, P)
2. 数字签名生成协议
(1)输出签名者A对消息M的签名结果(r, s);
3. 数字签名验证协议
(1)输出签名验证结果,即签名验证是否通过;
4. 消息加密协议
(1)输出消息M的密文C = C 1 || C 2 || C 3;
5. 消息解密协议
(1)输出密文解密后得到的消息明文M。
2. 根据权利要求1所述的软硬件协同的SM2椭圆曲线密码算法实现方法,其特征在于,所述步骤S101中,设定的椭圆曲线参数为GB/T 32918.5-2017标准规定的SM2椭圆曲线公钥密码算法的曲线参数。
3.根据权利要求1所述的软硬件协同的SM2椭圆曲线密码算法实现方法,其特征在于,所述步骤S102中,所述SM2椭圆曲线密码算法协议包括密钥对生成协议、数字签名生成协议、数字签名验证协议、消息加密协议和消息解密协议。
4.根据权利要求1所述的软硬件协同的SM2椭圆曲线密码算法实现方法,其特征在于,所述步骤S103中,软件端实现SM2椭圆曲线密码算法协议,由CPU负责执行,并通过软件/硬件接口调用硬件端完成标量乘运算。
5.根据权利要求1所述的软硬件协同的SM2椭圆曲线密码算法实现方法,其特征在于,所述步骤S104中,硬件端为在FPGA上实现的4个子模块:标量乘运算控制器子模块、点加运算控制器子模块、点倍运算控制器子模块、模运算子模块;其中,标量乘运算控制模块采用状态机方式实现,根据随机数k的NAF编码结果h组织进行点加运算与点倍运算;点加运算控制模块与点倍运算控制模块均采用状态机方式实现,按Jacobian坐标系下的计算公式组织进行模乘、模加和模减运算;模运算模块是执行具体的计算任务的模块,包括模乘运算、模加运算、模减运算和模逆运算4种运算模式。
6.根据权利要求1所述的软硬件协同的SM2椭圆曲线密码算法实现方法,其特征在于,所述步骤S103-S105中,在CPU软件端和FPGA硬件端之间进行数据传输的软件/硬件接口为PCIE高速总线接口。
7.根据权利要求3所述的软硬件协同的SM2椭圆曲线密码算法实现方法,其特征在于,支持的密钥对生成协议、数字签名生成协议、数字签名验证协议、消息加密协议和消息解密协议分别需要调用硬件端模块进行至少1、1、2、2、1次标量乘运算。
8.根据权利要求5所述的软硬件协同的SM2椭圆曲线密码算法实现方法,其特征在于,FPGA硬件端标量乘运算电路模块的标量乘运算控制器子模块用于调用点加运算和点倍运算模块,实现标量乘运算。
9.根据权利要求5所述的软硬件协同的SM2椭圆曲线密码算法实现方法,其特征在于,FPGA硬件端标量乘运算电路模块的点加运算控制器子模块和点倍运算控制器子模块用于调度模运算子模块,分别实现点加运算和点倍运算。
10.根据权利要求5所述的软硬件协同的SM2椭圆曲线密码算法实现方法,其特征在于,FPGA硬件端标量乘运算电路模块的模运算子模块支持模乘运算、模加运算、模减运算、模逆运算4种运算模式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210347648.0A CN114650135B (zh) | 2022-04-01 | 2022-04-01 | 一种软硬件协同的sm2椭圆曲线密码算法实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210347648.0A CN114650135B (zh) | 2022-04-01 | 2022-04-01 | 一种软硬件协同的sm2椭圆曲线密码算法实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114650135A CN114650135A (zh) | 2022-06-21 |
CN114650135B true CN114650135B (zh) | 2024-01-02 |
Family
ID=81996088
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210347648.0A Active CN114650135B (zh) | 2022-04-01 | 2022-04-01 | 一种软硬件协同的sm2椭圆曲线密码算法实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114650135B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117978408B (zh) * | 2024-03-28 | 2024-06-25 | 鼎铉商用密码测评技术(深圳)有限公司 | 协同签名算法的检测方法、协同签名设备及可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1831754A (zh) * | 2005-11-04 | 2006-09-13 | 北京浦奥得数码技术有限公司 | 一种椭圆曲线密码系统及实现方法 |
KR20120028432A (ko) * | 2010-09-15 | 2012-03-23 | 고려대학교 산학협력단 | 타원곡선암호를 위한 연산 장치 및 방법 |
CN109581421A (zh) * | 2018-12-14 | 2019-04-05 | 中国民航大学 | 基于Verilog语言实现的北斗二代导航电文抗欺骗硬件平台 |
CN112202568A (zh) * | 2020-10-09 | 2021-01-08 | 天津大学 | 软硬件协同设计sm9数字签名通信方法和系统 |
CN112217643A (zh) * | 2019-07-09 | 2021-01-12 | 华为技术有限公司 | 运算方法、装置及设备 |
CN113783702A (zh) * | 2021-09-28 | 2021-12-10 | 南京宁麒智能计算芯片研究院有限公司 | 一种椭圆曲线数字签名与验签的硬件实现方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3673616A4 (en) * | 2019-05-31 | 2020-10-28 | Advanced New Technologies Co., Ltd. | PUBLIC KEY RESTORATION PROCESS BASED ON AN SM2 SIGNATURE |
-
2022
- 2022-04-01 CN CN202210347648.0A patent/CN114650135B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1831754A (zh) * | 2005-11-04 | 2006-09-13 | 北京浦奥得数码技术有限公司 | 一种椭圆曲线密码系统及实现方法 |
KR20120028432A (ko) * | 2010-09-15 | 2012-03-23 | 고려대학교 산학협력단 | 타원곡선암호를 위한 연산 장치 및 방법 |
CN109581421A (zh) * | 2018-12-14 | 2019-04-05 | 中国民航大学 | 基于Verilog语言实现的北斗二代导航电文抗欺骗硬件平台 |
CN112217643A (zh) * | 2019-07-09 | 2021-01-12 | 华为技术有限公司 | 运算方法、装置及设备 |
CN112202568A (zh) * | 2020-10-09 | 2021-01-08 | 天津大学 | 软硬件协同设计sm9数字签名通信方法和系统 |
CN113783702A (zh) * | 2021-09-28 | 2021-12-10 | 南京宁麒智能计算芯片研究院有限公司 | 一种椭圆曲线数字签名与验签的硬件实现方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114650135A (zh) | 2022-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107040385B (zh) | 一种基于sm2椭圆曲线的签名验证算法的实现方法及系统 | |
CN103942031B (zh) | 椭圆域曲线运算方法 | |
US20090136025A1 (en) | Method for scalarly multiplying points on an elliptic curve | |
CA3080861A1 (en) | Method and system for key agreement utilizing semigroups | |
CN113098691B (zh) | 数字签名方法、签名信息的验证方法、相关装置及电子设备 | |
CN114650135B (zh) | 一种软硬件协同的sm2椭圆曲线密码算法实现方法 | |
CN112350827B (zh) | 一种基于Koblitz曲线的加速标量乘计算的椭圆曲线加解密方法和系统 | |
JP2006259735A (ja) | Simd処理を用いた楕円曲線点8倍化 | |
CN116527274B (zh) | 基于多标量乘快速计算的椭圆曲线验签方法及系统 | |
WO2023236899A1 (zh) | 数据处理方法、装置、设备及存储介质 | |
Vollala et al. | Efficient modular exponential algorithms compatible with hardware implementation of public‐key cryptography | |
CN116668008A (zh) | 密钥的协同交换方法、装置、电子设备及介质 | |
CN111614465B (zh) | 基于超奇异同源秘钥封装协议的公钥生成方法和装置 | |
CN114757034A (zh) | 一种基于FPGA的poseidon哈希算法的优化系统 | |
TW201802666A (zh) | 非模數乘法器、用於非模數乘法的方法及計算裝置 | |
CN113505383A (zh) | 一种ecdsa算法执行系统及方法 | |
Kataria et al. | SLDEB: Design of a Secure and Lightweight Dynamic Encryption Bio-Inspired Model for IoT Networks | |
KR100974624B1 (ko) | 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체 | |
CN114143005B (zh) | 一种Tate双线性对及其变体的加速方法 | |
TWI702820B (zh) | 具分級機制的秘密共享簽章系統及其方法 | |
JP2011254385A (ja) | 共通鍵生成システム及び共通鍵生成方法 | |
Nikooghadam et al. | A protocol for digital signature based on the elliptic curve discrete logarithm problem | |
JP4769147B2 (ja) | バッチ証明検証方法、証明装置、検証装置、バッチ証明検証システム並びにプログラム | |
WO2023163654A2 (en) | Computer-implemented method, computer program and computer-readable medium using a chameleon hash function | |
Basha et al. | An Intelligent Secure Image Transmission System Using Elliptic Curve Cryptography |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |