CN109660351A - 一种sm2公钥密码的数字签名快速生成方法 - Google Patents
一种sm2公钥密码的数字签名快速生成方法 Download PDFInfo
- Publication number
- CN109660351A CN109660351A CN201811323155.3A CN201811323155A CN109660351A CN 109660351 A CN109660351 A CN 109660351A CN 201811323155 A CN201811323155 A CN 201811323155A CN 109660351 A CN109660351 A CN 109660351A
- Authority
- CN
- China
- Prior art keywords
- signature
- mod
- elliptic curve
- calculating
- 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.)
- Granted
Links
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/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
- H04L9/3252—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 using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (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)
Abstract
本发明公布了一种SM2公钥密码的数字签名快速生成方法,在SM2签名服务器平台上,基于GM/T 0003.2‑2012 SM2椭圆曲线公钥密码标准中的SM2签名生成算法进行优化,是一种SM2签名生成算法的快速计算方法,能够快速实现SM2数字签名算法中的签名生成,以及SM2推荐参数中256比特素数域上的快速计算。本发明针对现有方法中的签名方案和有限域计算进行优化,与通用的椭圆曲线上的优化方法相比,本发明属于针对SM2算法的专门优化,在SM2签名服务器平台上,特别是应用于使用推荐SM2参数、私钥生命周期较长的服务器平台,计算开销小,能够有效提速。
Description
技术领域
本发明涉及数字签名技术领域,特别是涉及一种SM2公钥密码的快速计算方法,针对国产商用密码算法SM2数字签名生成算法的快速计算方法,以及针对SM2推荐参数的快速计算方法。
背景技术
SM2椭圆曲线公钥密码算法是由国家密码管理局在2012年发布的一系列基于椭圆曲线密码的密码标准(GM/T 0003.2-2012 SM2椭圆曲线公钥密码标准),这些标准以中华人民共和国密码行业标准发布,其中包含SM2数字签名算法(参见GM/T 0003.2-2012中的第2部分)、密钥交换协议、公钥加密算法以及推荐的256比特素数域椭圆曲线参数(参见GM/T0003.2-2012中的第5部分:参数定义)。虽然SM2标准中的算法和协议可以基于任何满足椭圆曲线密码要求的素域或二进制域曲线参数,但是,只有采用了推荐参数的SM2实现才能够满足标准化和互联互通的要求。
签名算法运算时间较长,需要对算法进行优化。SM2数字签名算法在GM/T 0003.2-2012标准中的推荐参数上的计算方法分为签名方案、椭圆曲线算数和有限域计算三个层次,现有的SM2优化方法均是对椭圆曲线上的签名算法的通用优化方法,并未针对SM2具体的结构和使用的参数进行优化加速,也没有结合SM2的应用场景进行分析优化,在通用的服务器平台,如ARM,X86服务器平台上,优化的程度有限,速度提升不明显,在对签名速度有要求的应用场景下,通用的椭圆曲线的优化加速方法难以满足计算速度的需求。
发明内容
为了克服上述现有技术的不足,本发明提供一种SM2公钥密码的数字签名快速生成方法,是一种SM2签名生成算法的快速计算方法,基于GM/T 0003.2-2012 SM2椭圆曲线公钥密码标准中的SM2签名生成算法进行优化,能够快速实现SM2数字签名算法中的签名生成,以及SM2推荐参数中256比特素数域上的快速计算。
本发明针对现有方法中的签名方案和有限域计算进行优化,与通用的椭圆曲线上的优化方法相比,本发明属于针对SM2算法的专门优化,在通用的计算平台,如ARM、X86平台上,特别是应用于使用推荐SM2参数、私钥生命周期较长的服务器平台,提速效果好。
标准SM2签名算法和推荐参数如下:
给定SM2公钥密码的推荐椭圆曲线参数(GM/T 0003.2-2012 SM2椭圆曲线公钥密码标准的第5部分中定义的参数),其中G为椭圆曲线点群的生成元点,n是椭圆曲线点群的阶;设待签名的消息为M,签名方的身份和公钥的杂凑值为ZA,用于签名的私钥为d,对应的公钥为P=[d]G,这里[d]G表示椭圆曲线点的标量乘法。
SM2的推荐参数的椭圆曲线由素数域Fp上的方程y2=x3-3x+b定义,其中有限域参数p是一个256比特的素数,标准中以十六进制的值给出,可以验证p的值等同于如下表示方式:
p=2256-2224-296+264-1
SM2数字签名的生成包括如下步骤:
1.1)令其中符号||表示比特串的连接,是需要杂凑运算的比特串;
1.2)计算函数Hv()为密码杂凑函数,e是计算得到的杂凑值的整数形式;
其中,在SM2标准中推荐采用GM/T 0004-2012SM3密码杂凑算法中的SM3密码杂凑
函数;
1.3)生成随机数整数k∈[1,n-1];
1.4)计算得到椭圆曲线点(x1,y1),其中(x1,y1)=[k]G;
1.5)计算r=e+x1mod n,若r=0或r+k=n,返回第1.3)步;
1.6)计算s=(1+d)-1·(k-r·d)mod n,若s=0则返回第1.3)步;
1.7)输出(r,s)为签名值。
本发明提供的技术方案是:
一种SM2(椭圆曲线)公钥密码的数字签名的快速生成方法,在SM2签名服务器平台上,将基于GM/T 0003.2-2012SM2椭圆曲线公钥密码标准中的SM2签名生成算法进行优化。将SM2签名算法进行变形分割为两个阶段进行两阶段SM2签名基础上,对椭圆曲线定义的数学运算进行针对性的加速和优化;在生成数字签名的典型应用场景中,签名方通常会采用固定的长生命周期签名私钥,在此期间签名私钥是不变的。本发明在私钥周期较长、使用推荐参数的SM2应用场景和平台上,能够大大提高签名和验证签名的速度;
技术方案包括:
第一,将SM2签名算法进行变形,分为两个阶段,预计算阶段和签名生成阶段;
SM2数字签名由预计算部分和生成签名两部分共同构成,签名方首先执行私钥d相关的预计算过程,并将结果保存为t,在签名生成阶段读取预计算结果t参与签名计算,并且签名生成阶段仅需要预计算的结果t,不再需要原私钥d。其中预计算阶段在一定时间内只需要计算一次(私钥生命周期内),签名生成阶段在每次签名的时候都需要计算,但比标准SM2签名所需的计算要少。
第二,在使用了推荐参数的两阶段SM2签名的基础上,针对SM2推荐参数的数学特点,对其椭圆曲线定义的素数域的乘法、求逆等数学运算进行针对性的加速和优化,加快椭圆曲线算数的速度,进一步提高签名和验证签名的计算速度。
1)生成一个新的SM2密钥对,并确定SM2密钥对的生命周期,其中私钥为d;
2)预计算阶段:计算t←(1+d)-1mod n,将将t安全存储在本地,生命周期与秘钥的生命周期相同;
3)需要签名时,利用步骤2)事先保存的变量t,计算SM2签名,方法是在计算签名值(r,s)的时候,用公式s=t·(k+r)-r mod n代替标准算法步骤1.6)的s=(1+d)-1.(k-r·d)mod n,其余计算过程保持不变;
4)当秘钥生命周期结束的时候,删除秘钥对和保存的变量t,重新从步骤1)开始计算。当密钥的生命周期没有结束,私钥d不变的情况下,每次签名都只需要计算步骤3)。
步骤3)签名生成阶段计算SM2签名具体执行如下操作:
2.1)令
2.2)计算并将e转换为整数;
2.3)生成随机数k∈[1,n-1];
2.4)计算椭圆曲线点(x1,y1)=[k]G;
2.5)计算r=e+x1mod n,若r=0或r+k=n,返回第2.3)步;
2.6)计算s=t·(k+r)-r mod n,若s=0则返回第2.3)步;
2.7)输出(r,s)为签名值。
可以证明两阶段SM2签名算法和标准的签名算法生成的签名值是相同的(r,s),即两阶段SM2签名算法的第2.6步和SM2签名生成标准算法中第1.6步是等效的,参数相同的情况下s=t·(k+r)-r=(1+d)-1·(k-r·d)mod n,证明如下:
(1+d)-1(k-rd)
≡(1+d)-1(k+r-r(1+d))
≡(1+d)-1(k+r)-r
≡t(k+r)-r mod n
因此本发明方法可以生成正确的SM2数字签名。
在上述SM2公钥密码的两阶段签名算法的基础上,本发明还提供一种SM2推荐参数下的椭圆曲线运算的优化加速方法,针对SM2标准中给出的特定推荐参数中给出的有限域进行快速优化计算,包括:素数域Fp乘法加速方法和素数域Fp求逆的加速方法;从而获得性能提升,不仅提高了签名速度,同时也可以提升验证签名的速度。
SM2的数字签名、密钥交换协议和公钥加密方案中的椭圆曲线点乘计算都依赖于推荐参数有限域上的计算,SM2中涉及的椭圆曲线算数涉及素数域Fp上的加法、减法、乘法、平方和求逆(乘法逆元)计算,其中乘法(平方)和求逆的计算较慢,针对SM2推荐参数的特定p值,本发明提供模乘和求逆的快速计算方法,可以加快以此为基础的椭圆曲线运算,从而提升基于椭圆曲线运算的SM2生成和验证签名的速度。
整体素数域Fp乘法加速方案为:
A1)将素数域上的乘法运算分解成乘法运算s=a·b和模数运算r=s mod p的组合。其中a和b是长度为256比特的大整数,s是512比特的乘法结果,而r是模数运算得到的余数;
A2)将s按顺序分割成16个32比特长度的整数sl(l=0,1,2,…,15),则s可以表示成以下求和公式s=s0+s1232+s2264+…+s152480;
A3)设整数s′,s′=(s0+s1232+…+s2(2256mod p)+…+s15(2480mod p))mod p,其中(2jmod p,j=256,…480)是只和素数p有关的常数,有r=(s mod p)=(s′mod p),可以通过求解s′来求解r;
A4)由于素数p=2256-2224-296+264-1的特殊性,2j(j≥256)mod p依然可以表示成若干型如2i(i≤256)的求和。计算s′只需进行加法计算和sl2i(l=0,1,…,15)的乘法计算,进一步按照2i为基整理公式,s′的求取可以设计成按照若干sl拼接的二进制大整数的求和运算;
A5)通过公式r=s′mod p计算最终的结果,由于s′是程度小于256比特的大数的和,其比特长度远远小于长度为512比特的s,只是略大于256比特长度的p,因此可以很容易的通过数次的s′←s′-p,得到结果。
通过从低位到高位各个基上系数的相加和进位,可以计算出s′的值,这个过程涉及无符号整数的加法计算,最后生成的s′可能会略大于p,如果s′大于p,则s′←s′-p,那么最终可以得到约减结果。
综上,采用大整数求和计算求出s′,然后通过比较和减法计算求出r=s′mod p,则r为模p的乘法或平方的结果。
相比使用传统的大素数域上的乘法模运算,上述整体素数域Fp乘法加速方法仅需通过大整数加减法即可实现,具体加减法的次数与实际运算结果s′以及基的选取有关,在合理选取基的情况下,加减法次数在30次以内,计算速度大幅度提升。
整体素数域Fp求逆的加速方案为:
给定大整数a为SM2推荐素数域Fp上的元素,计算a的逆,即a-1mod p,给出一个常量时间的快速计算方法,其中的计算由Fp上的乘法和平方构成,可以在本文的乘法加速方案的基础上实现。方法如下:
B1)根据费马小定理,一个大整数a在素数域Fp上的逆,可以由公式a-1≡ap-2mod p给出;
B2)由于素数p=2256-2224-296+264-1的特殊性,使得花费较少的步骤下,利用大整数a上的指数运算和大整数乘法计算直接构造逆元计算花费的代价与a无关,是一个常量时间算法,具体实现时,可以在30次以内的大整数乘法和指数运算构造出根据费马小定理,这个数在素数域Fp上就是元素a的逆。
上述求逆方法与普通的扩展欧几里得求逆方法相比,计算速度更快,且扩展欧几里得算法求逆元的计算时间与大整数a有关,容易通过算法运行的时间,泄漏大整数a的信息。而本发明提供的求逆方法,是一个常量时间算法,运行时间与a无关。
如果私钥周期非常短,比如每次签名都需要更换密钥,则无需采用两阶段SM2签名算法,可直接使用椭圆曲线的有限域加速优化方法。
与现有技术相比,本发明的有益效果是:
本发明提供一种SM2公钥密码的数字签名的快速生成方法,在SM2签名服务器平台上,将SM2签名算法进行变形分割为两个阶段进行两阶段SM2签名,可再对椭圆曲线定义的数学运算进行针对性的加速和优化。本发明在私钥生命周期较长、使用推荐参数的SM2应用场景和平台上,计算开销小,能够大大提高签名和验证签名的速度。
两阶段签名生成的方法在性能和安全性上的技术优势包括如下几方面:
(一)签名阶段不再需要求逆运算,(1+d)-1mod n是一个模n的乘法求逆运算,需要通过扩展欧几里得算法或者费马小定理进行计算,计算开销较高,本方案通过预计算,可以消除签名时这部分计算的开销。本方案将原方案中的一次求逆和两次乘法计算缩减为一次乘法计算。
(二)签名阶段更加安全,涉及私钥的有限域上的求逆运算如果采用扩展欧几里得算法,相对费马小定理算法较快,但是容易遭受侧信道分析攻击,本方案中的预计算可以在安全计算环境中完成,并且随私钥的整个生命周期长期保存,因此在线计算过程不会因计算求逆导致泄露私钥相关的侧信道信息。
(三)兼容的通用椭圆曲线优化,本发明提供的技术方案可以和很多椭圆曲线数字签名的常规优化方法兼容,例如可以离线生成k和x1,点乘[k]G可以采用针对固定点G的预计算表查表优化,算法可以在这些优化方案的基础上,实现更快的SM2计算。
(四)可以在此方案的基础上,针对SM2的推荐参数,设计出更快的椭圆曲线计算方法。
SM2推荐参数下的优化加速的技术优势体现为:
(一)通过加快椭圆曲线定义的素数域上的乘法运算和求逆运算,加快了椭圆曲线的计算过程,从而加快了基于椭圆曲线的SM2计算速度。
(二)SM2推荐参数下,本方法可以和两阶段SM2签名算法兼容,大幅度提高SM2签名和验证签名的速度。
附图说明
图1为本发明提供的两阶段SM2算法的流程框图。
图2为本发明提供的推荐参数下SM2优化算法的流程框图。
图3为本发明提供的使用标准推荐参数的两阶段SM2算法的流程框图。
具体实施方式
下面结合附图,通过实施例进一步描述本发明,但不以任何方式限制本发明的范围。
本发明提供一种SM2公钥密码的数字签名快速生成方法:两阶段SM2签名算法。在生成数字签名的典型应用场景中,签名方通常会采用固定的长生命周期签名私钥,例如,HTTPS服务器的签名私钥的生命周期为数月至数年,在此期间签名私钥是不变的。针对这种典型的应用场景,本发明提出一个两阶段的SM2签名生成方案,这个方案的SM2数字签名由预计算部分和生成签名两部分共同构成,签名方首先执行私钥d相关的预计算过程,并将结果保存为t,在签名生成阶段读取预计算结果t参与签名计算,并且签名生成阶段仅需要预计算的结果t,不再需要原私钥d。
整个签名方案过程如下:
1)生成一个新的SM2密钥对,并确定密钥的生命周期,其中私钥为d;
2)计算t←(1+d)-1mod n,将其保存,生命周期与秘钥的生命周期相同;
3)需要签名时,利用事先保存的变量t,计算SM2签名,方法是在计算签名值(r,s)的时候,用公式s=t·(k+r)-r mod n代替标准算法步骤1.6)的s=(1+d)-1·(k-r·d)modn,其余计算过程保持不变;
4)当秘钥生命周期结束的时候,删除秘钥对和保存的变量t,重新从步骤1)开始计算。
当密钥的生命周期没有结束,私钥d不变的情况下,每次签名都只需要计算步骤3)。
具体计算如下:
预计算阶段:
计算t←(1+d)-1mod n,并将t安全存储在本地。
签名生成阶段:
2.1)令
2.2)计算并将e转换为整数;
2.3)生成随机数k∈[1,n-1];
2.4)计算椭圆曲线点(x1,y1)=[k]G;
2.5)计算r=e+x1mod n,若r=0或r+k=n,返回第2.3)步;
2.6)计算s=t·(k+r)-r mod n,若s=0则返回第2.3)步;
2.7)输出(r,s)为签名值。
可以证明两阶段SM2签名算法和标准的签名算法生成的签名值是相同的(r,s),即两阶段SM2签名算法的第2.6步和SM2签名生成标准算法中第1.6步是等效的,参数相同的情况下s=t·(k+r)-r=(1+d)-1·(k-r·d)mod n,证明如下:
(1+d)-1(k-rd)
≡(1+d)-1(k+r-r(1+d))
≡(1+d)-1(k+r)-r
≡t(k+r)-r mod n
因此本发明方法可以生成正确的SM2数字签名。
在上述SM2公钥密码的两阶段签名算法的基础上,本发明还提供一种SM2推荐参数下的椭圆曲线运算的优化加速方法,针对SM2标准中给出的特定推荐参数中给出的有限域进行快速优化计算。SM2的数字签名、密钥交换协议和公钥加密方案中的椭圆曲线点乘计算都依赖于推荐参数有限域上的计算,并从本方案中的快速计算方法获得性能提升。此方案不仅提高了签名速度,同时也可以提升验证签名的速度。
SM2中涉及的椭圆曲线算数涉及素数域Fp上的加法、减法、乘法、平方和求逆(乘法逆元)计算,其中乘法(平方)和求逆的计算较慢,本文针对SM2推荐参数的特定p值给出模乘和求逆的快速计算方法,该方法可以加快以此为基础的椭圆曲线运算,从而提升基于椭圆曲线运算的SM2生成和验证签名的速度。
整体素数域Fp乘法加速方案为:
A6)将素数域上的乘法运算分解成乘法运算s←=a·b和模数运算r←s mod p的组合。其中a和b是长度为256比特的整数,s是512比特的乘法结果,而r是模数运算得到的余数;
A7)将s按顺序分割成16个32比特长度的整数sl(l=0,1,2,…,15),则s可以表示成以下求和公式s=s0+s1232+s2264+…+s152480;
A8)设整数s′,s′←(s0+s1232+…+s2(2256mod p)+…+s15(2480mod p))mod p,其中(2jmod p,j=256,…480)是只和素数p有关的常数,有r=(s mod p)=(s′mod p),可以通过求解s′来求解r;
A9)由于素数p=2256-2224-296+264-1的特殊性,2j(j≥256)mod p依然可以表示成若干型如2i(i≤256)的求和。计算s′只需进行加法计算和sl2i的乘法计算,进一步按照2i为基整理公式,s′的求取可以设计成按照若干sl拼接的二进制大整数的求和运算;
A10)通过公式r←s′mod p计算最终的结果,由于s′的比特长度远远小于s,只是略大于p的长度,因此可以很容易的通过数次的s′←s′-p,得到结果。
具体计算过程如下:
a1).给定Fp上的元素a,b,模乘a·b mod p或平方a2 mod p一般包含如下步骤:
1.1)计算s←=a·b,如果a=b,则s=a2;
1.2)计算r←s mod p,返回r。
对于SM2的推荐参数,a,b为256比特的值,因此第一步中乘法或平方的结果为512比特的整数s,这里的乘法和平方和可以采用任何已有的大整数乘法和平方算法,第二步通常可以采用除法获得s约减p之后的余数r。针对SM2推荐参数的特定p值,本文给出上述第二步的快速约减算法。
a2).首先将512比特的整数s表示为
s=s152480+s142448+s132416+s122384+s112352+s102320+s92288+s82256+s72224+s62192+s52160+s42128+s3296+s2264+s1232+s0
其中si∈[0,232-1]。
a3).在素数域Fp上,由于模数p=2256-2224-296+264-1,因此2256≡2224+296-264+1modp,带入上面的s的表达式中可以将s进一步约减为:
s≡s′=s15(3·2224+2192+2·2160+2128+296+2·232+2)+s14(2·2224+2192+2160+2·2128+296-264+2·232+2)+s13(2·2224+2160+2128+2·296-264+232+2)+s12(2·2224+2128+296+232+1)+s11(2224+2192+296+232+1)+s10(2224+2160+232+1)+s9(2224+2128-264+232+1)+s8(2224+296-264+1)+s72224+s62192+s52160+s42128+s3296+s2264+s1232+s0modp
下表是上述公式以20,232,264,296,2128,2160,2192,2224为基,重新调整系数列表
通过从低位到高位各个基上系数的相加和进位,可以计算出s′的值,这个过程涉及32比特无符号整数的计算,最后生成的s′可能会略大于p,如果s′大于p,则s′←s′-p,那么最终可以得到约减结果。
上述系数表格有多种等价的表示,下面给出其中一个等价的表示:
我们可以将上面的每一行视为一个256比特大整数以232为基时的大端表示,即
c0={s7,s6,s5,s4,s3,s2,s1,s0}
c1={s8,s11,s10,s9,s8,0,s9,s8}
c2={s9,s14,s13,s12,s11,0,s10,s9}
c3={s10,s15,s14,s13,s12,0,s11,s10}
c4={s11,0,0,0,0,0,s12,s11}
c5={s15,0,0,0,0,0,s13,s12}
c6={s12,0,s15,s14,s13,0,s14,s13}
c7={s13,0,0,0,s14,0,s15,s14}
c8={s14,0,0,0,0,0,0,s15}
c9={s15,0,0,0,0,0,0,0}
c10={0,0,0,0,0,s8,0,0}
c11={0,0,0,0,0,s9,0,0}
c12={0,0,0,0,0,s13,0,0}
c13={0,0,0,0,0,s14,0,0}
那么:
s′=c0+c1+c2+c3+c4+c5+2c6+2c7+2c8+2c9-c10-c11-c12-c13
=c0+c1+c2+c3+c4+c5+2(c6+c7+c8+c9)-(c10+c11+c12+c13)
即可以采用大整数计算的实现求出s′,然后通过比较和减法计算r=s′mod p,则r为模p的乘法或平方的结果。
相比使用传统的大素数域上的乘法模运算,本方法仅需通过确定的15次的大整数加减法以及最多不超过15次的比较减法即可实现,计算速度大幅度提升。
整体素数域Fp求逆的加速方案为:
给定a为SM2推荐素数域Fp上的元素,计算a的逆,即a-1mod p,给出一个常量时间的快速计算方法,其中的计算由Fp上的乘法和平方构成,可以在本文的乘法加速方案的基础上实现。方法如下:
B3)根据费马小定理,一个大整数a在素数域Fp上的逆,可以由公式a-1≡ap-2mod p给出;
B4)由于素数p=2256-2224-296+264-1的特殊性,可以使用通过次数较少的大整数乘法构造出根据费马小定理,这个数在素数域Fp上就是元素a的逆。
具体计算过程如下:
1)每一步计算中等价符号右边给出的是当前计算以a的幂表示的结果,为了简化描述我们省去了每个等式右侧的modp。整个计算采用a1,a2,a3,a4,a5共5个Fp上的元素作为中间变量,并输出a4作为结果。
a1←a2
最后的结果a4≡ap-2mod p,由费马小定理a-1≡ap-2mod p,因此这个算法是正确的,即a4=a-1mod p。
实施例1:在密钥生命周期较长SM2签名服务器上实现两阶段SM2算法
在典型的的SM2签名服务器平台上(如支持ARM或者X86指令集的SM2签名服务器),如果签名的私钥的生命周期较长,比如数个月甚至数年,那么可以使用两阶段SM2算法,应用框架如图1:
1)初次运行的时候或者秘钥过期的时候,服务器得到或者生成一个需要使用的秘钥,并指定一个秘钥的有效期,运行预处理阶段得到变量t并安全的保存(比如需要口令才能读取的U盾)。
2)服务器需要签名的时候,如果秘钥已经过期,销毁变量t,并运行到步骤1),否则运行到步骤3
3)生成签名计算阶段,使用预处理阶段的变量t完成签名的计算。
可以看到,预处理阶段根据密钥指定的有效期,数个月甚至数年才执行一次,在服务器需要签名的时候,通常只需要执行生成签名阶段即可,根据本发明的两阶段SM2签名算法,生成签名阶段所需要的计算少于标准SM2算法的签名,因此计算签名的速度更快。本算法对密钥生命周期较长的SM2签名服务器具有提升签名速度的效果,若每次签名都需要生成新私钥,则不适用本文的两阶段SM2签名算法。
如果私钥周期非常短,比如每次签名都需要更换密钥,则无需采用两阶段SM2签名算法,可直接使用椭圆曲线的有限域加速优化方法。
实施例2:使用推荐参数的SM2计算平台上实现椭圆曲线运算的优化加速
在典型的的SM2计算平台上(如支持ARM或者X86指令集的SM2签名服务器),如果SM2算法使用的是推荐参数,具体来说,就是在SM2进行椭圆曲线运算的时候,其椭圆虚线的有限域定义在Fp(p=2256-2224-296+264-1),则可以对其有限域上的乘法和求逆进行优化加速,从而加快椭圆曲线上的运算,应用框架如图2所示:
1)当服务器使用推荐参数的时候,针对有限域Fp(p=2256-2224-296+264-1),使用本发明的乘法和求逆加速算法。
2)在椭圆曲线进行加法、点乘等运算的时候,需要有限域Fp上的乘法和求逆运算,后者的提速带来椭圆曲线运算速度的提升。
3)SM2签名生成算法和验证签名算法在计算过程中,需要对椭圆曲线进行加法、点乘等运算,后者的提速带来SM2整体算法的提速。
可以看到,推荐参数下的椭圆曲线运算的优化加速,实际是对算法底层使用的有限域计算进行优化加速,从而达到提升整体SM2计算速度的效果,如果服务器使用的不是推荐参数的有限域,则本发明关于有限域的优化加速不适用。
实施例3:使用推荐参数、密钥周期较长的SM2签名服务器
一个典型的SM2签名服务器平台上(如支持ARM或者X86指令集的SM2签名服务器),签名的私钥的生命周期较长,同时又使用了标准推荐的参数,这是一个很常见的情况,可以整合两阶段算法和有限域优化算法,达到更高的速度,应用框架如图3:
1)使用两阶段SM2算法,减少运算量,具体来说,就是在密钥没有变化的情况下,本方案将原方案中的一次求逆和两次乘法计算缩减为一次乘法计算。
2)在底层的有限域运算中,使用本方案的快速有限域乘法和求逆运算,代替原有的有限域乘法和求逆计算,从而提升SM2中椭圆曲线计算的速度。
两种优化手段处于不同的层次,在服务器满足条件的情况下,可以不受影响的结合使用,达到更快的SM2运算速度,同时,由于该算法在没有使用扩展欧几里得算法,在防止测信道攻击上,安全性更高。
需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
Claims (9)
1.一种SM2公钥密码的数字签名的快速生成方法,在SM2签名服务器平台上,通过将SM2签名算法进行变形,分为两个阶段,包括预计算阶段和签名生成阶段,使得SM2签名算法优化为两阶段SM2签名,从而有效提高进行签名的速度;
设定G为椭圆曲线点群的生成元点;n是椭圆曲线点群的阶;待签名的消息为M;签名方的身份和公钥的杂凑值为ZA;用于签名的私钥为d;
包括如下步骤:
步骤一,生成一个新的SM2密钥对,并确定SM2密钥对的生命周期,其中私钥为d;
步骤二,在预计算阶段,签名方首先执行私钥d相关的预计算过程,并将结果保存为t;预计算阶段生命周期与秘钥的生命周期相同,在私钥生命周期内只需要计算一次;预计算过程为:t←(1+d)-1mod n;
步骤三,在签名生成阶段,读取预计算结果t参与签名计算;签名生成阶段仅需要预计算的结果t,不再需要私钥d;签名生成阶段在每次签名时均进行计算;
需要签名时计算SM2签名具体执行如下操作:
31)在计算签名值(r,s)时,采用公式s=t·(k+r)-r mod n代替标准算法的公式s=(1+d)-1·(k-r·d)mod n,其余计算过程保持不变;
其中:
k为随机生成的整数,k∈[1,n-1];
r=e+x1mod n;e是计算得到的杂凑值的整数形式,函数Hv()为密码杂凑函数;是需要杂凑运算的比特串,符号||表示比特串的连接;
(x1,y1)=[k]G;(x1,y1)为椭圆曲线点;
32)当秘钥生命周期结束时,删除秘钥对和保存的变量t,重新从步骤一开始计算;
输出签名值(r,s),由此实现SM2公钥密码的数字签名的快速生成。
2.如权利要求1所述SM2公钥密码的数字签名的快速生成方法,其特征是,步骤31)计算签名值(r,s)具体执行如下操作:
311)令
312)计算并将e转换为整数;
313)生成随机数k∈[1,n-1];
314)计算椭圆曲线点(x1,y1)=[k]G;
315)计算r=e+x1mod n,若r=0或r+k=n,返回操作313);
316)计算s=t·(k+r)-r mod n,若s=0则返回操作313);
输出(r,s)为签名值。
3.如权利要求1或2所述SM2公钥密码的数字签名的快速生成方法,其特征是,所述SM2签名服务器平台为支持ARM或者X86指令集的SM2签名服务器。
4.一种在使用推荐参数的SM2计算平台上优化加速椭圆曲线运算的方法,其特征是,SM2的数字签名、密钥交换协议和公钥加密中,椭圆曲线点乘计算均依赖于推荐参数有限域上的计算;所述方法在使用推荐参数的SM2计算平台上,针对SM2标准中的特定推荐参数的有限域进行快速优化计算,从而加快椭圆曲线算数的速度,进一步提高签名和验证签名的计算速度;包括:素数域Fp乘法加速方法和素数域Fp求逆的加速方法。
5.如权利要求4所述的在使用推荐参数的SM2计算平台上优化加速椭圆曲线运算的方法,其特征是,素数域Fp乘法加速方法包括如下步骤:
A1)将素数域上的乘法运算分解成乘法运算s←=a·b和模数运算r←s mod p的组合;其中a和b是长度为256比特的整数;p为有限域参数,是256比特的素数,p=2256-2224-296+264-1;
A2)将s按顺序分割成16个32比特长度的整数sl,l=0,1,2,…,15,则s表示成以下求和公式:s=s0+s1232+s2264+…+s152480;
A3)设整数s′,s′←(s0+s1232+…+s2(2256mod p)+…+s15(2480mod p))mod p,其中,(2jmodp)是只和素数p有关的常数;
由于r=(s mod p)=(s′mod p),即可通过求解s′来求解r;
A4)将(2jmod p)表示成对多个2i(i≤256)求和;则计算s′只需进行加法计算和sl2i的乘法计算,l=0,1,…,15;进一步地,按照2i为基,将s′的求取设计成按照多个sl拼接的二进制大整数的求和运算;
A5)通过数次计算s′←s′-p,再通过公式r←s′mod p计算得到最终的结果;
上述计算仅需通过次数不多的大整数加减法即实现,由此达到大幅度提升计算速度的目的。
6.如权利要求4所述的在使用推荐参数的SM2计算平台上优化加速椭圆曲线运算的方法,其特征是,素数域Fp求逆的加速方法具体是:
给定a为SM2推荐素数域Fp上的元素,计算a的逆,即a-1mod p;该计算由Fp上的乘法和平方构成;首先采用素数域Fp乘法加速方法再进行素数域Fp求逆的加速;所述素数域Fp求逆的加速方法包括如下步骤:
B1)根据费马小定理,一个大整数a在素数域Fp上的逆,表示为:a-1≡ap-2mod p;
B2)使用通过次数较少的大整数乘法构造出根据费马小定理,该数在素数域Fp上是元素a的逆。
7.如权利要求6所述的在使用推荐参数的SM2计算平台上优化加速椭圆曲线运算的方法,其特征是,采用5个Fp上的元素a1,a2,a3,a4,a5作为中间变量,并输出a4作为最后结果。
8.如权利要求4所述的在使用推荐参数的SM2计算平台上优化加速椭圆曲线运算的方法,其特征是,当私钥周期非常短时,直接使用在使用推荐参数的SM2计算平台上优化加速椭圆曲线运算的方法实现SM2公钥密码的数字签名的快速生成。
9.一种SM2公钥密码的数字签名的快速生成方法,包括SM2公钥密码的两阶段签名过程和使用推荐参数的SM2计算平台上优化加速椭圆曲线运算过程;
所述SM2公钥密码的两阶段签名过程是在SM2签名服务器平台上,通过将SM2签名算法进行变形,分为两个阶段,包括预计算阶段和签名生成阶段,使得SM2签名算法优化为两阶段SM2签名;
在所述SM2公钥密码的两阶段签名过程的基础上,所述使用推荐参数的SM2计算平台上优化加速椭圆曲线运算过程是针对SM2标准中给出的特定推荐参数中给出的有限域进行快速优化计算,包括:素数域Fp乘法加速方法和素数域Fp求逆的加速方法;
由此获得性能提升,不仅提高签名速度,同时提升验证签名的速度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811323155.3A CN109660351B (zh) | 2018-11-08 | 2018-11-08 | 一种sm2公钥密码的数字签名快速生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811323155.3A CN109660351B (zh) | 2018-11-08 | 2018-11-08 | 一种sm2公钥密码的数字签名快速生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109660351A true CN109660351A (zh) | 2019-04-19 |
CN109660351B CN109660351B (zh) | 2020-09-08 |
Family
ID=66110149
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811323155.3A Active CN109660351B (zh) | 2018-11-08 | 2018-11-08 | 一种sm2公钥密码的数字签名快速生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109660351B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110233727A (zh) * | 2019-06-12 | 2019-09-13 | 湖南国科微电子股份有限公司 | 一种sm2运算方法、系统、设备及计算机存储介质 |
CN112118111A (zh) * | 2020-09-04 | 2020-12-22 | 中国科学院大学 | 一种适用于门限计算的sm2数字签名方法 |
CN113628094A (zh) * | 2021-07-29 | 2021-11-09 | 西安电子科技大学 | 一种基于gpu的高吞吐量sm2数字签名计算系统及方法 |
CN114039722A (zh) * | 2021-01-26 | 2022-02-11 | 中安网脉(北京)技术股份有限公司 | 一种可秘密共享的隐藏身份sm2签名私钥产生装置及其方法 |
CN114338049A (zh) * | 2022-03-14 | 2022-04-12 | 山东区块链研究院 | 基于模归约的国密算法sm2的快速实现方法及系统 |
CN116032490A (zh) * | 2023-01-09 | 2023-04-28 | 郑州轻工业大学 | 一种基于改进SM2算法的Fabric区块链构建方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103475469A (zh) * | 2013-09-10 | 2013-12-25 | 中国科学院数据与通信保护研究教育中心 | 一种结合cpu和gpu实现sm2算法的方法及装置 |
CN103546288A (zh) * | 2013-09-25 | 2014-01-29 | 中国科学院数据与通信保护研究教育中心 | Sm2数字签名生成算法的实现方法及装置 |
CN106301770A (zh) * | 2016-08-22 | 2017-01-04 | 大唐微电子技术有限公司 | 一种Java卡SM2数字签名验证或信息加密的方法及装置 |
CN107294720A (zh) * | 2017-07-07 | 2017-10-24 | 广东工业大学 | 一种素域Fp下的SM2椭圆曲线公钥加密算法的硬件实现系统 |
CN107634836A (zh) * | 2017-09-05 | 2018-01-26 | 何德彪 | 一种sm2数字签名生成方法及系统 |
-
2018
- 2018-11-08 CN CN201811323155.3A patent/CN109660351B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103475469A (zh) * | 2013-09-10 | 2013-12-25 | 中国科学院数据与通信保护研究教育中心 | 一种结合cpu和gpu实现sm2算法的方法及装置 |
CN103546288A (zh) * | 2013-09-25 | 2014-01-29 | 中国科学院数据与通信保护研究教育中心 | Sm2数字签名生成算法的实现方法及装置 |
CN106301770A (zh) * | 2016-08-22 | 2017-01-04 | 大唐微电子技术有限公司 | 一种Java卡SM2数字签名验证或信息加密的方法及装置 |
CN107294720A (zh) * | 2017-07-07 | 2017-10-24 | 广东工业大学 | 一种素域Fp下的SM2椭圆曲线公钥加密算法的硬件实现系统 |
CN107634836A (zh) * | 2017-09-05 | 2018-01-26 | 何德彪 | 一种sm2数字签名生成方法及系统 |
Non-Patent Citations (1)
Title |
---|
申勇: "椭圆曲线密码体制中标量乘法的快速算法研究", 《中国优秀硕士学位论文全文数据库(电子期刊) 信息科技辑》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110233727A (zh) * | 2019-06-12 | 2019-09-13 | 湖南国科微电子股份有限公司 | 一种sm2运算方法、系统、设备及计算机存储介质 |
CN112118111A (zh) * | 2020-09-04 | 2020-12-22 | 中国科学院大学 | 一种适用于门限计算的sm2数字签名方法 |
CN112118111B (zh) * | 2020-09-04 | 2023-10-13 | 中国科学院大学 | 一种适用于门限计算的sm2数字签名方法 |
CN114039722A (zh) * | 2021-01-26 | 2022-02-11 | 中安网脉(北京)技术股份有限公司 | 一种可秘密共享的隐藏身份sm2签名私钥产生装置及其方法 |
CN113628094A (zh) * | 2021-07-29 | 2021-11-09 | 西安电子科技大学 | 一种基于gpu的高吞吐量sm2数字签名计算系统及方法 |
CN113628094B (zh) * | 2021-07-29 | 2024-03-26 | 西安电子科技大学 | 一种基于gpu的高吞吐量sm2数字签名计算系统及方法 |
CN114338049A (zh) * | 2022-03-14 | 2022-04-12 | 山东区块链研究院 | 基于模归约的国密算法sm2的快速实现方法及系统 |
CN114338049B (zh) * | 2022-03-14 | 2022-07-05 | 山东区块链研究院 | 基于模归约的国密算法sm2的快速实现方法及系统 |
CN116032490A (zh) * | 2023-01-09 | 2023-04-28 | 郑州轻工业大学 | 一种基于改进SM2算法的Fabric区块链构建方法 |
CN116032490B (zh) * | 2023-01-09 | 2023-10-03 | 郑州轻工业大学 | 一种基于改进SM2算法的Fabric区块链构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109660351B (zh) | 2020-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109660351A (zh) | 一种sm2公钥密码的数字签名快速生成方法 | |
Galbraith | Mathematics of public key cryptography | |
Goh et al. | Efficient signature schemes with tight reductions to the Diffie-Hellman problems | |
El Kaafarani et al. | Lossy CSI-FiSh: efficient signature scheme with tight reduction to decisional CSIDH-512 | |
CN112446052B (zh) | 一种适用于涉密信息系统的聚合签名方法及系统 | |
Malavolta et al. | Efficient ring signatures in the standard model | |
Tessaro et al. | Revisiting BBS signatures | |
Tessaro et al. | Threshold and multi-signature schemes from linear hash functions | |
CN114117547B (zh) | 一种基于预计算表的sm9数字签名加速生成方法以及数字签名加速验证方法 | |
Ghadafi | Short structure-preserving signatures | |
Ruohonen | Mathematical cryptology | |
Chia et al. | Digital signature schemes with strong existential unforgeability | |
Thakur | Batching non-membership proofs with bilinear accumulators | |
Hoffmann et al. | Practical statistically-sound proofs of exponentiation in any group | |
Chow et al. | Zero-knowledge argument for simultaneous discrete logarithms | |
Tan | Efficient identity-based authenticated multiple key exchange protocol | |
Thakur | A flexible Snark via the monomial basis | |
Yuan et al. | Efficient unrestricted identity-based aggregate signature scheme | |
Fan et al. | Strongly secure certificateless signature scheme supporting batch verification | |
Krips et al. | More efficient shuffle argument from unique factorization | |
Zeng et al. | Non‐interactive deniable ring signature without random oracles | |
Tartary et al. | Analysis of bilinear pairing-based accumulator for identity escrowing | |
CN117595984B (zh) | 基于可验证随机函数的节点选择方法、装置、设备及介质 | |
Mahmoodi et al. | A certificate‐based proxy signature with message recovery without bilinear pairing | |
Hao et al. | Owl: An Augmented Password-Authenticated Key Exchange Scheme |
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 |