CN111274613A - 迭代式sm2数字签名生成方法、系统、介质和设备 - Google Patents
迭代式sm2数字签名生成方法、系统、介质和设备 Download PDFInfo
- Publication number
- CN111274613A CN111274613A CN202010064547.3A CN202010064547A CN111274613A CN 111274613 A CN111274613 A CN 111274613A CN 202010064547 A CN202010064547 A CN 202010064547A CN 111274613 A CN111274613 A CN 111274613A
- Authority
- CN
- China
- Prior art keywords
- iteration
- round
- function
- digital signature
- round function
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Abstract
本发明公开了一种迭代式SM2数字签名生成方法、系统、介质和设备,所述方法包括:构建第一轮函数FR,构建第二轮函数FS,分别为基于第一轮函数FR的R‑迭代和基于第二轮函数FS的S‑迭代,其中R‑迭代按照第1轮、第2轮、…、第m轮的顺序进行迭代,每轮迭代均调用一次第一轮函数FR;S‑迭代按照第m轮、第m‑1轮、…、第1轮的顺序进行迭代,每轮迭代均调用一次第二轮函数FS;迭代结束后生成一个SM2标准数字签名。本发明能达到充分拟合时顶层概念就是刚好足以与输出数据进行充分拟合的概念。本发明在签名过程中,签名私钥不会在任意轮迭代中完整出现,最大程度地保护签名私钥的安全性;同时,该签名方案所需较少计算量和通信量,提升了签名效率。
Description
技术领域
本发明涉及数字签名的技术领域,尤其涉及一种迭代式SM2数字签名生成方法、系统、介质和设备。
背景技术
对于SM2签名算法,其签名私钥dA和验证公钥PA之间关系为:PA=[dA]G,其中G为SM2签名算法中椭圆曲线上阶为素数n的一个基点,[dA]G表示椭圆曲线上的点乘运算,即dA个G相加。将签名私钥dA拆分为若干子密钥片较为容易,难点在于如何利用拆分后的子密钥片生成有效的SM2签名。目前已有专用方法将私钥dA拆分为两份子密钥片,两方协作生成SM2签名。然而,这些专用方法不适用于多方协作签名的应用场景,并存在下述缺陷:
1、在SM2标准算法的使用过程中,若私钥只由一方保管,往往存在着一定的泄露风险。一旦攻击者入侵私钥拥有者成功,则攻击者可随意伪造签名。因此,在许多应用场景中,私钥需要被互不信任的多方分别保存,且只有在多方合作的情况下才能生成签名,任何一方都无法独立产生数字签名。
2、现有技术的方案在签名交互过程中,具有较大运算量和通信数据量,降低了签名效率。
发明内容
本发明的第一个目的是为了解决上述现有技术的缺陷,提供了一种迭代式SM2数字签名生成方法、系统、介质和设备,本发明将签名私钥拆分为m份子密钥片,调用轮函数FR和FS进行两次m轮迭代生成SM2数字签名,在签名过程中,签名私钥不会在任意轮迭代中完整出现,最大程度地保护签名私钥的安全性;同时,该签名方案所需较少计算量和通信量,提升了签名效率。
本发明的第一个目的在于提供一种迭代式SM2数字签名生成方法。
本发明的第二个目的在于提供一种迭代式SM2数字签名生成系统。
本发明的第三个目的在于提供一种存储介质。
本发明的第四个目的在于提供一种计算机设备。
本发明的第一个目的可以通过采取如下技术方案达到:
一种迭代式SM2数字签名生成方法,所述方法包括:
构建第一轮函数FR,
构建第二轮函数FS,
分别为基于第一轮函数FR的R-迭代和基于第二轮函数FS的S-迭代,其中R-迭代按照第1轮、第2轮、…、第m轮的顺序进行迭代,每轮迭代均调用一次第一轮函数FR;S-迭代按照第m轮、第m-1轮、…、第1轮的顺序进行迭代,每轮迭代均调用一次第二轮函数FS;
迭代结束后生成一个SM2标准数字签名。
作为优选的技术方案,所述第一轮函数FR的输入为一个四元组(W',R',k,d),其输出为一个二元组(W,R),输入与输出之间的关系为:W=[d]W'、R=R'+[k]W',即FR(W',R',k,d)=(W,R)=([d]W',R'+[k]W'),其中k、d为整数;W、W'、R、R'为SM2签名算法中椭圆曲线上的元素。
作为优选的技术方案,所述第二轮函数FS的输入为一个四元组(k,d,r',s'),其输出为一个二元组(r,s),输入与输出之间的关系为:r=r'modn、s=k+d×s'modn,即FS(k,d,r',s')=(r,s)=(r',k+d×s'),其中k、d、r、s、r'、s'均为整数。
作为优选的技术方案,所述R-迭代包括:
在R-迭代中,每轮迭代A1、A2、...、Am以相同方式进行计算,并将计算结果传递给下一轮迭代函数,直至第m轮迭代Am生成椭圆曲线随机点Rm。
作为优选的技术方案,所述R-迭代具体为:
RF1)第1轮迭代A1设置W0=G+PA以及R0=0,其中G为SM2签名算法中椭圆曲线上阶为素数n的一个基点;PA为SM2签名算法的验证公钥,A1利用随机数发生器产生随机数k1∈[1,n],输入(W0,R0)以及轮密钥(k1,d1),调用轮函数FR计算(W1,R1)=FR(W0,R0,k1,d1),即W1=[d1]W0、R1=R0+[k1]W0,并将W1、R1传递至下一轮迭代A2,其中d1为第1轮迭代A1的子密钥片;W0、W1、R0、R1均为SM2签名算法中椭圆曲线上的元素;
RFi)第i轮迭代Ai(i=2,K,m-1)接收前一轮迭代Ai-1传递的数据Wi-1、Ri-1,并利用随机数发生器产生随机数ki∈[1,n],Ai输入(Wi-1,Ri-1)以及轮密钥(ki,di),调用轮函数FR计算(Wi,Ri)=FR(Wi-1,Ri-1,ki,di),即Wi=[di]Wi-1、Ri=Ri-1+[ki]Wi-1,并将Wi、Ri传递至下一轮迭代Ai+1;
RFm)第m轮迭代Am接收前一轮迭代Am-1传递的数据Wm-1、Rm-1,并利用随机数发生器产生随机数km∈[1,n],Am输入(Wm-1,Rm-1)以及轮密钥(km,dm),调用轮函数FR计算(Wm,Rm)=FR(Wm-1,Rm-1,km,dm),即Wm=[dm]Wm-1、Rm=Rm-1+[km]Wm-1=(x,y),其中x为椭圆曲线点Rm的横坐标。
作为优选的技术方案,所述S-迭代包括:
在S-迭代中,每轮迭代Am、Am-1、K、A1以相同方式进行计算,并将计算结果传递给上一轮迭代函数,直至第1轮迭代A1生成SM2数字签名(r,s)。
作为优选的技术方案,所述S-迭代具体为:
SFm)第m轮迭代Am设置r=sm+1=H(M)+xmodn,其中r为SM2数字签名的第一部分;sm+1为中间变量;M为待签名消息;函数H为密码杂凑函数。Am输入(r,sm+1)以及轮密钥(km,dm),调用轮函数FS计算(r,sm)=FS(km,dm,r,sm+1),即r=rmodn、sm=km+dm×sm+1modn,并将r、sm传递至上一轮迭代Am-1。
SFi)第i轮迭代Ai(i=m-1,K3,2)接收后一轮迭代Ai+1传递的数据r、si+1,输入(r,si+1)以及轮密钥(ki,di),调用轮函数FS计算(r,si)=FS(ki,di,r,si+1),即r=rmodn、si=ki+di×si+1modn,并将r、si传递至上一轮迭代Ai-1。
SF1)第1轮迭代A1接收后一轮迭代A2传递的数据r、s2,输入(r,s2)以及轮密钥(k2,d2),调用轮函数FS计算(r,s1)=FS(k1,d1,r,s2),即r=rmodn、s1=k1+d1×s2modn。A1计算s=s1-rmodn并输出SM2签名(r,s)。
本发明的第二个目的可以通过采取如下技术方案达到:
一种迭代式SM2数字签名生成系统,包括:
第一轮函数构建模块,用于构建第一轮函数FR;
第二轮函数构建模块,用于构建第二轮函数FR;
迭代模块,用于分别为基于第一轮函数FR的R-迭代和基于第二轮函数FS的S-迭代,其中R-迭代按照第1轮、第2轮、…、第m轮的顺序进行迭代,每轮迭代均调用一次第一轮函数FR;S-迭代按照第m轮、第m-1轮、…、第1轮的顺序进行迭代,每轮迭代均调用一次第二轮函数FS;
签名模块,用于迭代结束后生成一个SM2标准数字签名。
本发明的第三个目的可以通过采取如下技术方案达到:
一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现迭代式SM2数字签名生成方法。
本发明的第四个目的可以通过采取如下技术方案达到:
一种计算机设备,所述计算机设备包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至7任一所述的迭代式SM2数字签名生成方法。
本发明相对于现有技术具有如下的有益效果:
1、本发明对签名私钥在每一次签名过程中进行“一次一密”形式的拆分,在每一次签名过程中,各个参与方调用设计好的轮函数FR和FS迭代生成其部分签名。与现有SM2数字签名算法相比,本发明采取多方将SM2签名私钥拆分为相互独立的多个密钥片,每一个参与方只能获得其中一部分密钥片,从而可以有效防范单点密钥泄露的安全缺陷,加强了对签名私钥的保护。另外,本发明在整个签名交互过程中计算较少中间变量,具有较小的数据运算量和通信量,从而提升了签名方案的效率。
2、提升签名私钥的安全性。本发明采用多方安全计算思想,各个参与方只拥有签名私钥的子密钥片,只有在所有参与方合作的前提下才能生成签名,且保证了签名私钥在签名过程中不会完整出现,从而提升了攻击者窃取私钥的难度。
3、提升协同签名过程的效率。本发明在每一次签名过程中,运用迭代思想对随机数进行加法拆分,而对签名私钥进行乘法拆分的方法来完成签名,这一方法节省了签名过程中的计算开销,提升了签名方案的效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1的迭代式SM2数字签名生成方法的流程图。
图2为本发明实施例2的迭代式SM2数字签名生成系统的方框图。
图3为本发明实施例1的迭代模块的结构示意图。
图4为本发明实施例1R-迭代模块的结构示意图。
图5为本发明实施例1R-迭代模块的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
实施例1:
数字签名算法由签名者对数据产生数字签名,由验证者验证签名的可靠性。每个签名者拥有一对密钥对,包括一个公钥和一个私钥,其中私钥用于产生签名,验证者用签名者的公钥验证签名。数字签名能够保证信息传输的完整性,验证信息发送者的身份并防止交易中抵赖事件的发生。
SM2椭圆曲线公钥密码算法是我国于2010年发布的商用公钥密码算法标准,包括数字签名算法、公钥加密算法和密钥交换协议,其安全性基于求解有限域上椭圆曲线离散对数问题的困难性。SM2数字签名算法在电子政务、电子商务和身份认证等应用领域内有广泛的应用。
在公钥密码技术领域内,私钥的保护一直受到工业界和学术界的高度重视,尤其是移动互联网时代,终端更容易遭受攻击。移动终端安全标准中明确规定,数字签名私钥不能在内存中完整出现。私钥拆分保存是保护私钥的传统密码技术,针对不同的公钥密码算法分别存在着不同的私钥拆分方法和方案。
如图1所示,本实施例1提供了一种迭代式SM2数字签名生成方法,该方法将签名私钥拆分为m份子密钥片,调用轮函数FR和FS进行两次m轮迭代生成SM2数字签名。在签名过程中,签名私钥不会在任意轮迭代中完整出现,最大程度地保护签名私钥的安全性。同时,该签名方案所需较少计算量和通信量,提升了签名效率。
假设SM2标准签名私钥dA已拆分为m份子密钥片d1,d2,K,dm且满足等式1+dA=(d1×d2×K×dm)-1modn,其中m为大于等于2的自然数;modn表示模n运算,例如23mod7=2;n为一个素数且为SM2签名算法中椭圆曲线上基点G的阶。
迭代式SM2数字签名生成方法包含两个轮函数FR和FS,利用轮函数进行两次m(m≥2)轮迭代生成一个SM2标准数字签名。如图1所示,该方法包括下述步骤:
S101、构建第一轮函数FR,
S102、构建第二轮函数FS,
S103、分别为基于第一轮函数FR的R-迭代和基于第二轮函数FS的S-迭代,其中R-迭代按照第1轮、第2轮、…、第m轮的顺序进行迭代,每轮迭代均调用一次第一轮函数FR;S-迭代按照第m轮、第m-1轮、…、第1轮的顺序进行迭代,每轮迭代均调用一次第二轮函数FS;
S104、迭代结束后生成一个SM2标准数字签名。
进一步的,在上述S101的步骤中,所述第一轮函数FR的输入为一个四元组(W',R',k,d),其输出为一个二元组(W,R),输入与输出之间的关系为:W=[d]W'、R=R'+[k]W',即FR(W',R',k,d)=(W,R)=([d]W',R'+[k]W'),其中k、d为整数;W、W'、R、R'为SM2签名算法中椭圆曲线上的元素。
进一步的,在上述步骤102中,所述第二轮函数FS的输入为一个四元组(k,d,r',s'),其输出为一个二元组(r,s),输入与输出之间的关系为:r=r'modn、s=k+d×s'modn,即FS(k,d,r',s')=(r,s)=(r',k+d×s'),其中k、d、r、s、r'、s'均为整数。
进一步的,在上述步骤103中,迭代过程包含两次迭代,分别为基于轮函数FR的R-迭代和基于轮函数FS的S-迭代,其中R-迭代按照第1轮、第2轮、…、第m轮的顺序进行迭代,每轮迭代均调用一次轮函数FR;S-迭代按照第m轮、第m-1轮、…、第1轮的顺序进行迭代,每轮迭代均调用一次轮函数FS。具体迭代过程详细描述如下:
S1031、R-迭代
在R-迭代中,每轮迭代A1、A2、...、Am以相同方式进行计算,并将计算结果传递给下一轮迭代函数,直至第m轮迭代Am生成椭圆曲线随机点Rm。每轮迭代的具体计算过程如下:
RF1)第1轮迭代A1设置W0=G+PA以及R0=0,其中G为SM2签名算法中椭圆曲线上阶为素数n的一个基点;PA为SM2签名算法的验证公钥。A1利用随机数发生器产生随机数k1∈[1,n],输入(W0,R0)以及轮密钥(k1,d1),调用轮函数FR计算(W1,R1)=FR(W0,R0,k1,d1),即W1=[d1]W0、R1=R0+[k1]W0,并将W1、R1传递至下一轮迭代A2,其中d1为第1轮迭代A1的子密钥片;W0、W1、R0、R1均为SM2签名算法中椭圆曲线上的元素。
RFi)第i轮迭代Ai(i=2,K,m-1)接收前一轮迭代Ai-1传递的数据Wi-1、Ri-1,并利用随机数发生器产生随机数ki∈[1,n]。Ai输入(Wi-1,Ri-1)以及轮密钥(ki,di),调用轮函数FR计算(Wi,Ri)=FR(Wi-1,Ri-1,ki,di),即Wi=[di]Wi-1、Ri=Ri-1+[ki]Wi-1,并将Wi、Ri传递至下一轮迭代Ai+1。
RFm)第m轮迭代Am接收前一轮迭代Am-1传递的数据Wm-1、Rm-1,并利用随机数发生器产生随机数km∈[1,n]。Am输入(Wm-1,Rm-1)以及轮密钥(km,dm),调用轮函数FR计算(Wm,Rm)=FR(Wm-1,Rm-1,km,dm),即Wm=[dm]Wm-1、Rm=Rm-1+[km]Wm-1=(x,y),其中x为椭圆曲线点Rm的横坐标。
S1032、S-迭代
在S-迭代中,每轮迭代Am、Am-1、K、A1以相同方式进行计算,并将计算结果传递给上一轮迭代函数,直至第1轮迭代A1生成SM2数字签名(r,s)。每轮迭代的具体计算过程如下:
SFm)第m轮迭代Am设置r=sm+1=H(M)+xmodn,其中r为SM2数字签名的第一部分;sm+1为中间变量;M为待签名消息;函数H为密码杂凑函数。Am输入(r,sm+1)以及轮密钥(km,dm),调用轮函数FS计算(r,sm)=FS(km,dm,r,sm+1),即r=rmodn、sm=km+dm×sm+1modn,并将r、sm传递至上一轮迭代Am-1。
SFi)第i轮迭代Ai(i=m-1,K3,2)接收后一轮迭代Ai+1传递的数据r、si+1,输入(r,si+1)以及轮密钥(ki,di),调用轮函数FS计算(r,si)=FS(ki,di,r,si+1),即r=rmodn、si=ki+di×si+1modn,并将r、si传递至上一轮迭代Ai-1。
SF1)第1轮迭代A1接收后一轮迭代A2传递的数据r、s2,输入(r,s2)以及轮密钥(k2,d2),调用轮函数FS计算(r,s1)=FS(k1,d1,r,s2),即r=rmodn、s1=k1+d1×s2modn。A1计算s=s1-rmodn并输出SM2签名(r,s)。
与现有SM2数字签名算法相比,本发明采取多方将SM2签名私钥拆分为相互独立的多个密钥片,每一个参与方只能获得其中一部分密钥片,从而可以有效防范单点密钥泄露的安全缺陷,加强了对签名私钥的保护。
实施例2:
如图2所示,本实施例2提供了一种迭代式SM2数字签名生成系统,包括:第一轮函数构建模块1、第二轮函数构建模2、迭代模块3和签名模块4;
所述第一轮函数构建模块1,用于构建第一轮函数FR;
所述第二轮函数构建模块2,用于构建第二轮函数FR;
所述迭代模块3,用于分别为基于第一轮函数FR的R-迭代和基于第二轮函数FS的S-迭代,其中R-迭代按照第1轮、第2轮、…、第m轮的顺序进行迭代,每轮迭代均调用一次第一轮函数FR;S-迭代按照第m轮、第m-1轮、…、第1轮的顺序进行迭代,每轮迭代均调用一次第二轮函数FS;
所述签名模块,用于迭代结束后生成一个SM2标准数字签名。
进一步的,如图3所示,所述迭代模块3包括R-迭代模块31和S-迭代模块32;
所述R-迭代模块31,用于在R-迭代中,每轮迭代A1、A2、...、Am以相同方式进行计算,并将计算结果传递给下一轮迭代函数,直至第m轮迭代Am生成椭圆曲线随机点Rm。
更进一步的,如图4所示,所述R-迭代模块31包括:
第1轮迭代模块RF1311,用于第1轮迭代A1设置W0=G+PA以及R0=0,其中G为SM2签名算法中椭圆曲线上阶为素数n的一个基点;PA为SM2签名算法的验证公钥,A1利用随机数发生器产生随机数k1∈[1,n],输入(W0,R0)以及轮密钥(k1,d1),调用轮函数FR计算(W1,R1)=FR(W0,R0,k1,d1),即W1=[d1]W0、R1=R0+[k1]W0,并将W1、R1传递至下一轮迭代A2,其中d1为第1轮迭代A1的子密钥片;W0、W1、R0、R1均为SM2签名算法中椭圆曲线上的元素;
第i轮代模块RFi312,用于第i轮迭代Ai(i=2,K,m-1)接收前一轮迭代Ai-1传递的数据Wi-1、Ri-1,并利用随机数发生器产生随机数ki∈[1,n],Ai输入(Wi-1,Ri-1)以及轮密钥(ki,di),调用轮函数FR计算(Wi,Ri)=FR(Wi-1,Ri-1,ki,di),即Wi=[di]Wi-1、Ri=Ri-1+[ki]Wi-1,并将Wi、Ri传递至下一轮迭代Ai+1;
第m轮迭代模块RFm313,用于第m轮迭代Am接收前一轮迭代Am-1传递的数据Wm-1、Rm-1,并利用随机数发生器产生随机数km∈[1,n],Am输入(Wm-1,Rm-1)以及轮密钥(km,dm),调用轮函数FR计算(Wm,Rm)=FR(Wm-1,Rm-1,km,dm),即Wm=[dm]Wm-1、Rm=Rm-1+[km]Wm-1=(x,y),其中x为椭圆曲线点Rm的横坐标
进一步的,所述S-迭代模块32,用于在S-迭代中,每轮迭代Am、Am-1、K、A1以相同方式进行计算,并将计算结果传递给上一轮迭代函数,直至第1轮迭代A1生成SM2数字签名(r,s)。
更进一步的,如图5所示,所述S-迭代模块32包括:
第m轮迭代模块SFm321,用于第m轮迭代Am设置r=sm+1=H(M)+xmodn,其中r为SM2数字签名的第一部分;sm+1为中间变量;M为待签名消息;函数H为密码杂凑函数。Am输入(r,sm+1)以及轮密钥(km,dm),调用轮函数FS计算(r,sm)=FS(km,dm,r,sm+1),即r=rmodn、sm=km+dm×sm+1modn,并将r、sm传递至上一轮迭代Am-1。
第i轮迭代模块SFi312,第i轮迭代Ai(i=m-1,K3,2)接收后一轮迭代Ai+1传递的数据r、si+1,输入(r,si+1)以及轮密钥(ki,di),调用轮函数FS计算(r,si)=FS(ki,di,r,si+1),即r=rmodn、si=ki+di×si+1modn,并将r、si传递至上一轮迭代Ai-1。
第1轮迭代模块SF1313,用于第1轮迭代A1接收后一轮迭代A2传递的数据r、s2,输入(r,s2)以及轮密钥(k2,d2),调用轮函数FS计算(r,s1)=FS(k1,d1,r,s2),即r=rmodn、s1=k1+d1×s2modn。A1计算s=s1-rmodn并输出SM2签名(r,s)。
在此需要说明的是,上述实施例提供的系统仅以上述各功能模块的划分进行举例说明,在实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
可以理解,上述实施例的机器人系统所使用的术语“第一”、“第二”等可用于描述各种模块,但这些模块不受这些术语限制。这些术语仅用于将第一个模块与另一个模块区分。举例来说,在不脱离本发明的范围的情况下,可以将第一判断模块称为第二判断模块,且类似地,可将第二判断模块称为第一判断模块,第一判断模块和第二判断模块两者都是判断模块,但其不是同一判断模块。
实施例3:
本实施例提供了计算机可读存储介质所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行迭代式SM2数字签名生成方法,如下:
构建第一轮函数FR,
构建第二轮函数FS,
分别为基于第一轮函数FR的R-迭代和基于第二轮函数FS的S-迭代,其中R-迭代按照第1轮、第2轮、…、第m轮的顺序进行迭代,每轮迭代均调用一次第一轮函数FR;S-迭代按照第m轮、第m-1轮、…、第1轮的顺序进行迭代,每轮迭代均调用一次第二轮函数FS;
迭代结束后生成一个SM2标准数字签名。
本实施例中所述的存储介质可以是ROM、RAM、磁盘、光盘等介质。
实施例4:
本实施例提供了一种计算机设备,所述计算机设备包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现迭代式SM2数字签名生成方法,如下:
构建第一轮函数FR,
构建第二轮函数FS,
分别为基于第一轮函数FR的R-迭代和基于第二轮函数FS的S-迭代,其中R-迭代按照第1轮、第2轮、…、第m轮的顺序进行迭代,每轮迭代均调用一次第一轮函数FR;S-迭代按照第m轮、第m-1轮、…、第1轮的顺序进行迭代,每轮迭代均调用一次第二轮函数FS;
迭代结束后生成一个SM2标准数字签名。
本实施例中所述的计算设备可以是台式电脑、笔记本电脑、智能手机、PDA手持终端、平板电脑或其他具有显示功能的终端设备。
以上所述,仅为本发明专利较佳的实施例,但本发明专利的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明专利所公开的范围内,根据本发明专利的技术方案及其发明构思加以等同替换或改变,都属于本发明专利的保护范围。
Claims (10)
1.一种迭代式SM2数字签名生成方法,其特征在于,所述方法包括:
构建第一轮函数FR,
构建第二轮函数FS,
分别为基于第一轮函数FR的R-迭代和基于第二轮函数FS的S-迭代,其中R-迭代按照第1轮、第2轮、…、第m轮的顺序进行迭代,每轮迭代均调用一次第一轮函数FR;S-迭代按照第m轮、第m-1轮、…、第1轮的顺序进行迭代,每轮迭代均调用一次第二轮函数FS;
迭代结束后生成一个SM2标准数字签名。
2.根据权利要求1所述迭代式SM2数字签名生成方法,其特征在于,
所述第一轮函数FR的输入为一个四元组(W',R',k,d),其输出为一个二元组(W,R),输入与输出之间的关系为:W=[d]W'、R=R'+[k]W',即FR(W',R',k,d)=(W,R)=([d]W',R'+[k]W'),其中k、d为整数;W、W'、R、R'为SM2签名算法中椭圆曲线上的元素。
3.根据权利要求1所述迭代式SM2数字签名生成方法,其特征在于,
所述第二轮函数FS的输入为一个四元组(k,d,r',s'),其输出为一个二元组(r,s),输入与输出之间的关系为:r=r'modn、s=k+d×s'modn,即FS(k,d,r',s')=(r,s)=(r',k+d×s'),其中k、d、r、s、r'、s'均为整数。
4.根据权利要求1所述迭代式SM2数字签名生成方法,其特征在于,所述R-迭代包括:
在R-迭代中,每轮迭代A1、A2、...、Am以相同方式进行计算,并将计算结果传递给下一轮迭代函数,直至第m轮迭代Am生成椭圆曲线随机点Rm。
5.根据权利要求4所述迭代式SM2数字签名生成方法,其特征在于,所述R-迭代具体为:
RF1)第1轮迭代A1设置W0=G+PA以及R0=0,其中G为SM2签名算法中椭圆曲线上阶为素数n的一个基点;PA为SM2签名算法的验证公钥,A1利用随机数发生器产生随机数k1∈[1,n],输入(W0,R0)以及轮密钥(k1,d1),调用轮函数FR计算(W1,R1)=FR(W0,R0,k1,d1),即W1=[d1]W0、R1=R0+[k1]W0,并将W1、R1传递至下一轮迭代A2,其中d1为第1轮迭代A1的子密钥片;W0、W1、R0、R1均为SM2签名算法中椭圆曲线上的元素;
RFi)第i轮迭代Ai(i=2,K,m-1)接收前一轮迭代Ai-1传递的数据Wi-1、Ri-1,并利用随机数发生器产生随机数ki∈[1,n],Ai输入(Wi-1,Ri-1)以及轮密钥(ki,di),调用轮函数FR计算(Wi,Ri)=FR(Wi-1,Ri-1,ki,di),即Wi=[di]Wi-1、Ri=Ri-1+[ki]Wi-1,并将Wi、Ri传递至下一轮迭代Ai+1;
RFm)第m轮迭代Am接收前一轮迭代Am-1传递的数据Wm-1、Rm-1,并利用随机数发生器产生随机数km∈[1,n],Am输入(Wm-1,Rm-1)以及轮密钥(km,dm),调用轮函数FR计算(Wm,Rm)=FR(Wm-1,Rm-1,km,dm),即Wm=[dm]Wm-1、Rm=Rm-1+[km]Wm-1=(x,y),其中x为椭圆曲线点Rm的横坐标。
6.根据权利要求1所述迭代式SM2数字签名生成方法,其特征在于,所述S-迭代包括:
在S-迭代中,每轮迭代Am、Am-1、K、A1以相同方式进行计算,并将计算结果传递给上一轮迭代函数,直至第1轮迭代A1生成SM2数字签名(r,s)。
7.根据权利要求6所述迭代式SM2数字签名生成方法,其特征在于,所述S-迭代具体为:
SFm)第m轮迭代Am设置r=sm+1=H(M)+xmodn,其中r为SM2数字签名的第一部分;sm+1为中间变量;M为待签名消息;函数H为密码杂凑函数。Am输入(r,sm+1)以及轮密钥(km,dm),调用轮函数FS计算(r,sm)=FS(km,dm,r,sm+1),即r=rmodn、sm=km+dm×sm+1modn,并将r、sm传递至上一轮迭代Am-1。
SFi)第i轮迭代Ai(i=m-1,K3,2)接收后一轮迭代Ai+1传递的数据r、si+1,输入(r,si+1)以及轮密钥(ki,di),调用轮函数FS计算(r,si)=FS(ki,di,r,si+1),即r=rmodn、si=ki+di×si+1modn,并将r、si传递至上一轮迭代Ai-1。
SF1)第1轮迭代A1接收后一轮迭代A2传递的数据r、s2,输入(r,s2)以及轮密钥(k2,d2),调用轮函数FS计算(r,s1)=FS(k1,d1,r,s2),即r=rmodn、s1=k1+d1×s2modn。A1计算s=s1-rmodn并输出SM2签名(r,s)。
8.一种迭代式SM2数字签名生成系统,其特征在于,包括:
第一轮函数构建模块,用于构建第一轮函数FR;
第二轮函数构建模块,用于构建第二轮函数FR;
迭代模块,用于分别为基于第一轮函数FR的R-迭代和基于第二轮函数FS的S-迭代,其中R-迭代按照第1轮、第2轮、…、第m轮的顺序进行迭代,每轮迭代均调用一次第一轮函数FR;S-迭代按照第m轮、第m-1轮、…、第1轮的顺序进行迭代,每轮迭代均调用一次第二轮函数FS;
签名模块,用于迭代结束后生成一个SM2标准数字签名。
9.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至7任一所述的迭代式SM2数字签名生成方法。
10.一种计算机设备,其特征在于,所述计算机设备包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至7任一所述的迭代式SM2数字签名生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010064547.3A CN111274613B (zh) | 2020-01-20 | 2020-01-20 | 迭代式sm2数字签名生成方法、系统、介质和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010064547.3A CN111274613B (zh) | 2020-01-20 | 2020-01-20 | 迭代式sm2数字签名生成方法、系统、介质和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111274613A true CN111274613A (zh) | 2020-06-12 |
CN111274613B CN111274613B (zh) | 2022-05-20 |
Family
ID=71002104
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010064547.3A Active CN111274613B (zh) | 2020-01-20 | 2020-01-20 | 迭代式sm2数字签名生成方法、系统、介质和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111274613B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112653554A (zh) * | 2020-12-30 | 2021-04-13 | 成都卫士通信息产业股份有限公司 | 一种签名方法、系统、设备及可读存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2016524A2 (en) * | 2006-04-04 | 2009-01-21 | Nds Limited | Robust cipher design |
CN102761414A (zh) * | 2011-04-26 | 2012-10-31 | 航天信息股份有限公司 | 一种sm3密码杂凑算法及确定其中的变量字的方法 |
CN102761415A (zh) * | 2011-04-27 | 2012-10-31 | 航天信息股份有限公司 | p元域SM2椭圆曲线的数字签名生成、验证及混合系统 |
CN103107890A (zh) * | 2013-02-08 | 2013-05-15 | 彭艳兵 | 一种多方加密、签名、零知识证明的方法 |
CN104243456A (zh) * | 2014-08-29 | 2014-12-24 | 中国科学院信息工程研究所 | 适用于云计算的基于sm2算法的签名及解密方法和系统 |
CN104753668A (zh) * | 2015-03-19 | 2015-07-01 | 成都信息工程学院 | 一种针对sm4密码线性变换输出的侧信道能量攻击方法 |
CN105933116A (zh) * | 2016-06-27 | 2016-09-07 | 收付宝科技有限公司 | 基于sm2的电子签名生成及验证方法和装置 |
CN106506156A (zh) * | 2016-12-15 | 2017-03-15 | 北京三未信安科技发展有限公司 | 一种基于椭圆曲线的分布式门限签名方法 |
CN107026873A (zh) * | 2017-05-31 | 2017-08-08 | 重庆大学 | 一种基于椭圆曲线算法的加解密方法及系统 |
CN107425968A (zh) * | 2017-06-22 | 2017-12-01 | 广东工业大学 | 一种二进制域F2m下的SM2椭圆曲线公钥加密算法的实现系统 |
CN109617671A (zh) * | 2018-12-21 | 2019-04-12 | 成都海光集成电路设计有限公司 | 加解密、扩展方法及装置、加解密系统、终端 |
-
2020
- 2020-01-20 CN CN202010064547.3A patent/CN111274613B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2016524A2 (en) * | 2006-04-04 | 2009-01-21 | Nds Limited | Robust cipher design |
CN102761414A (zh) * | 2011-04-26 | 2012-10-31 | 航天信息股份有限公司 | 一种sm3密码杂凑算法及确定其中的变量字的方法 |
CN102761415A (zh) * | 2011-04-27 | 2012-10-31 | 航天信息股份有限公司 | p元域SM2椭圆曲线的数字签名生成、验证及混合系统 |
CN103107890A (zh) * | 2013-02-08 | 2013-05-15 | 彭艳兵 | 一种多方加密、签名、零知识证明的方法 |
CN104243456A (zh) * | 2014-08-29 | 2014-12-24 | 中国科学院信息工程研究所 | 适用于云计算的基于sm2算法的签名及解密方法和系统 |
CN104753668A (zh) * | 2015-03-19 | 2015-07-01 | 成都信息工程学院 | 一种针对sm4密码线性变换输出的侧信道能量攻击方法 |
CN105933116A (zh) * | 2016-06-27 | 2016-09-07 | 收付宝科技有限公司 | 基于sm2的电子签名生成及验证方法和装置 |
CN106506156A (zh) * | 2016-12-15 | 2017-03-15 | 北京三未信安科技发展有限公司 | 一种基于椭圆曲线的分布式门限签名方法 |
CN107026873A (zh) * | 2017-05-31 | 2017-08-08 | 重庆大学 | 一种基于椭圆曲线算法的加解密方法及系统 |
CN107425968A (zh) * | 2017-06-22 | 2017-12-01 | 广东工业大学 | 一种二进制域F2m下的SM2椭圆曲线公钥加密算法的实现系统 |
CN109617671A (zh) * | 2018-12-21 | 2019-04-12 | 成都海光集成电路设计有限公司 | 加解密、扩展方法及装置、加解密系统、终端 |
Non-Patent Citations (3)
Title |
---|
GANG CHEN,ETC: "A High-Performance Elliptic Curve Cryptographic Processor for General Curves Over GF(p) Based on a Systolic Arithmetic Unit", 《IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS II: EXPRESS BRIEFS》 * |
SIMON PONTIE,ETC: "HLS-Based Methodology for Fast Iterative Development Applied to Elliptic Curve Arithmetic", 《2016 EUROMICRO CONFERENCE ON DIGITAL SYSTEM DESIGN (DSD)》 * |
XIN ZHENG,ETC: "The Software/Hardware Co-Design and Implementation of SM2/3/4 Encryption/Decryption and Digital Signature System", 《 IEEE TRANSACTIONS ON COMPUTER-AIDED DESIGN OF INTEGRATED CIRCUITS AND SYSTEMS 》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112653554A (zh) * | 2020-12-30 | 2021-04-13 | 成都卫士通信息产业股份有限公司 | 一种签名方法、系统、设备及可读存储介质 |
CN112653554B (zh) * | 2020-12-30 | 2023-03-31 | 成都卫士通信息产业股份有限公司 | 一种签名方法、系统、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111274613B (zh) | 2022-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110011802B (zh) | 一种高效的sm9两方协同生成数字签名的方法及系统 | |
CN107634836B (zh) | 一种sm2数字签名生成方法及系统 | |
CN109309569B (zh) | 基于sm2算法的协同签名的方法、装置及存储介质 | |
CN107707358B (zh) | 一种ec-kcdsa数字签名生成方法及系统 | |
CN108551392B (zh) | 一种基于sm9数字签名的盲签名生成方法及系统 | |
CN108667625B (zh) | 协同sm2的数字签名方法 | |
US9571274B2 (en) | Key agreement protocol | |
CN109639439B (zh) | 一种基于两方协同的ecdsa数字签名方法 | |
US9800418B2 (en) | Signature protocol | |
CN110011803B (zh) | 一种轻量级sm2两方协同生成数字签名的方法 | |
CN107911217B (zh) | 基于ecdsa算法协同生成签名的方法、装置和数据处理系统 | |
CN109450640B (zh) | 基于sm2的两方签名方法及系统 | |
CN110535635B (zh) | 一种支持信息隐藏的协同签名方法与系统 | |
CN111010285B (zh) | 一种适用于轻量级客户端的sm2两方协同签名方法及介质 | |
CN113676333A (zh) | 一种两方协作生成sm2盲签名方法 | |
CN112187469B (zh) | 一种基于密钥因子的sm2多方协同数字签名方法和系统 | |
CN109981269B (zh) | 一种安全高效的sm9多方密钥分发方法与装置 | |
Yu et al. | Identity-based proxy signcryption protocol with universal composability | |
CN112436938B (zh) | 数字签名的生成方法、装置和服务器 | |
CN112632630A (zh) | 一种基于sm2的协同签名计算方法及装置 | |
CN111447065A (zh) | 一种主动安全的sm2数字签名两方生成方法 | |
CN116346328A (zh) | 一种数字签名方法、系统、设备及计算机可读存储介质 | |
CN115529141A (zh) | 一种对数签名大小的可追踪环签名生成方法及系统 | |
US20160352689A1 (en) | Key agreement protocol | |
CN111130758A (zh) | 一种适用于资源受限设备的轻量级匿名认证方法 |
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 |