一种SM2协同签名方法技术

技术编号:33043540 阅读:11 留言:0更新日期:2022-04-15 09:25
本发明专利技术是一种迭代式SM2协同签名方法,用A1,A2,

【技术实现步骤摘要】
一种SM2协同签名方法


[0001]本专利技术属于信息安全的
,特别涉及一种SM2协同签名方法。

技术介绍

[0002]数字签名算法由签名者对数据产生数字签名,由验证者验证签名的可靠性。每个签名者拥有一对密钥对,包含一个公钥和一个私钥,其中私钥用于产生签名,验证者用签名者的公钥验证签名。在签名的生成过程之前,要用密码杂凑函数对待签名消息和用户身份信息等进行压缩;在验证过程之前,要用密码杂凑函数对待验证消息和用户身份信息等进行压缩。数字签名能够保证信息传输的完整性,验证信息发送者的身份并防止交易中抵赖事件的发生。
[0003]SM2算法是国家密码管理局于2010年12月发布的椭圆曲线公钥密码算法,并已成为《GM/T 0003

2012SM2椭圆曲线公钥密码算法》标准。SM2椭圆曲线公钥密码算法包括数字签名算法、密钥交换协议以及公钥加密算法,其安全性基于求解有限域上椭圆曲线离散对数问题的困难性。SM2算法在国内电子商务、身份认证等应用中发挥了重要的安全保障作用。
[0004]Diffie

Hellman密钥交换协议是由Whitfield Diffie和Martin Hellman于1976年提出的一种密钥交换算法。这种密钥交换协议可让双方在没有对方任何信息的前提条件下,在非受信信道建立一个共享密钥,此密钥可用于对后续通讯信息进行加密或者进行进一步密钥管理等。Diffie

Hellman密钥交换算法的安全性依赖于计算离散对数问题的困难性。r/>[0005]现有技术中也存在着适用于云计算的基于SM2算法的签名及解密方法和系统,但是存在着明显的不足,首先,在SM2标准算法的使用过程中,若私钥只由一方保管,往往存在着一定的泄露风险。一旦攻击者入侵私钥拥有者成功,则攻击者可随意伪造签名。因此,在许多应用场景中,私钥需要被互不信任的双方分别保存,且只有在双方合作的情况下才能生成签名,任何一方都无法独立生成数字签名。其次,在交互签名过程中,具有较大运算量和通信数据量,降低了签名生成效率。
[0006]就SM2签名算法而言,其签名私钥d
A
和验证公钥P
A
之间的关系为:P
A
=[d
A
]G,这里G为SM2签名标准中的椭圆曲线群的生成元,它的阶为n,[d
A
]G表示椭圆曲线上的点乘运算,即[d
A
]G表示d
A
个G相加。把签名私钥dA拆分为若干份密钥片这是一件容易的事情,困难之处在于如何利用拆分后的密钥片来生成有效的SM2签名。如果把私钥d
A
拆分为两份子密钥片,目前已有专用的方法来生成SM2签名。但是这种专用的方法仅能对私钥拆分为两份子密钥片的情形进行签名生成,其应用不灵活,这限制了SM2签名算法的应用范围,在一些应用环境中需要把密钥拆成三份或者更多份子密钥片,目前对于这种密钥拆分为多份子密钥片的情形,尚未有高效的方法来生成SM2签名。

技术实现思路

[0007]鉴于以上现有技术的缺点,本专利技术提供一种SM2协同签名方法,该方法保证只要一方不参与协同签名,其它参与方都不能生成有效的数字签名,且任意一方都不能获取其它方的部分私钥,最大程度地保护了签名私钥的安全性。
[0008]基于此,本专利技术是这样实现的:
[0009]一种SM2协同签名方法,设SM2标准签名私钥d
A
已经按照满足等式1+d
A
=(d1×
d2×…×
d
m
)
‑1的要求拆分为m份子密钥片,它们分别是d1,d2,

,d
m
,这里m为大于等于2的自然数;签名由两个m轮迭代生成,用A1,A2,

,A
m
分别表示第1轮,第2轮,

,第m轮迭代;每一轮迭代A
i
(i=1,2,

,m)拥有签名私钥的子密钥片d
i
,H表示一个杂凑函数;接下来,A1,A2,

,A
m
按照迭代过程分别执行基于轮函数F
R
的R

迭代和基于轮函数F
S
的S

迭代来生成对消息M的数字签名。
[0010]其中,轮函数F
R
为:
[0011]轮函数F
R
的输入是一个四元组(W

,R

,k,d),其输出是一个二元组(W,R),输入与输入之间的关系为:R=R

+[k]W

,W=[d]W

。即
[0012]F
R
(W

,R

,k,d)=(W,R)=([d]W

,R

+[k]W

),
[0013]这里k、d为整数,R、R

、W、W

为SM2标准中椭圆曲线群上的元素。
[0014]轮函数F
S
为:
[0015]轮函数F
S
的输入是一个四元组(k,d,r

,s

),其输出是一个二元组(r,s),输入与输入之间的关系为:r=r

,s=k+d
×
s

。即
[0016]F
S
(k,d,r

,s

)=(r,s)=(r

,k+d
×
s

)
[0017]这里k、d、r、s、r

、s

为整数。
[0018]然后进行迭代,迭代过程包含两个迭代,分别是基于轮函数F
R
的R

迭代和基于轮函数F
S
的S

迭代。其中R

迭代按照第1轮,第2轮,

,第m轮的顺序进行迭代,每一轮迭代都计算一次轮函数F
R
;S

迭代按照第m轮,第m

1轮,

,第1轮的顺序进行迭代,每一轮迭代都计算一次轮函数F
S

[0019]具体描述如下。
[0020]R

迭代为:
[0021]首先,每一轮迭代A1、A2、

、A
m
按照轮函数F
R
迭代方式完成对应部分的计算,然后生成随机椭圆曲线点R
m
;每一轮迭代的计算如下:
[0022]RF1本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种SM2协同签名方法,其特征在于签名由两个m轮迭代生成,用A1,A2,

,A
m
分别表示第1轮,第2轮,

,第m轮迭代,这里m为大于等于2的自然数;第一个m轮迭代中,每一轮A
i
(i=1,2,

,m)执行基于轮函数F
R
的R

迭代计算;第二个m轮迭代中,每一个A
i
(i=1,2,

,m)执行基于轮函数F
S
的S

迭代,最终生成对消息的数字签名。2.如权利要求1所述的SM2协同签名方法,其特征在于轮函数F
R
的输入是一个四元组(W

,R

,k,d),其输出是一个二元组(W,R),输入与输入之间的关系为:F
R
(W

,R

,k,d)=(W,R)=([d]W

,R

+[k]W

),这里k、d为整数,R、R

、W、W

为SM2标准中椭圆曲线群上的元素。3.如权利要求2所述的SM2协同签名方法,其特征在于轮函数F
S
的输入是一个四元组(k,d,r

,s

),其输出是一个二元组(r,s),输入与输入之间的关系为:F
S
(k,d,r

,s

)=(r,s)=(r

,k+d
×
s

),这里k、d、r、s、r

、s

为整数。4.如权利要求3所述的SM2协同签名方法,其特征在于所述R

迭代为:首先,每一轮迭代A1、A2、

、A
m
按照轮函数F
R
迭代方式完成对应部分的计算,然后生成随机椭圆曲线点R
m
;每一轮迭代的计算如下:RF1)第1轮迭代A1自己产生R0=0和W0=G+P
A
;然后把(k1,d1)当作轮密钥,以(W0,R0)作为轮函数F
R
的输入,计算(W1,R1)=F
R
(W0,R0,k1,d1),即W1=[d1]W0,R1=R0+[k1]W0;然后传递R1、W1给下一轮迭代A2;RF
i
)第i轮跌代A
i
(i=2,

,m)首先接收来自前一轮迭代A
i
‑1的消息W
i
‑1和R
i
‑1,其次通过随机数发生器产生k
i
∈[1,n],然后把(k
i
,d
i
)当作轮密钥,以(W
i
‑1,R
i
‑1)作为轮函数F
R
的输入,计算(W

【专利技术属性】
技术研发人员:马昌社龚征易宁
申请(专利权)人:广州安研信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1