一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

SM2三方联合签名方法与系统与流程

2021-10-22 23:00:00 来源:中国专利 TAG:三方 签名 联合 方法 系统

sm2三方联合签名方法与系统
技术领域
1.本发明涉及sm2三方联合签名方法与应用系统,包括但不仅限于该领域。


背景技术:

2.sm2算法是一种椭圆曲线(ecc)非对称密码算法算法,是我国自主研制的密码算法,并已经发布为国家标准gb/t 32918。sm2算法可以实现签名功能和验签功能。
3.根据算法规定,sm2算法签名方法描述如下:设g是椭圆曲线上的参考点,d
a
是私钥,p
a
是公钥,p
a
=d
a
*g,对消息e进行数字签名计算的签名结果为(r,s);首先选取随机数k,计算r=e x1,其中(x1,y1)=k*g;计算s=(1 d
a
)-1
*(k-r* da)。
4.根据算法规定,sm2算法验证签名方法描述如下:已知签名(r,s)、公钥p
a
和sm2算法规定的椭圆曲线参数;首先计算t=r s,如果t=0那么就没有验证通过;否则计算r’=x1 e,判断r’是否和r相等,如果相等则验证通过。
5.基于私钥唯一且由持有人所有,sm2签名可用于保证消息的完整性,保证交易的不可抵赖性。由于公钥可被公开性,该签名可以被各方验证。在签名应用中,如果一个消息需要被三方签名,现有做法是a签名后传递给b,b在a的基础上签名后传递给c,c在b的基础上再签名。该方法签名流程复杂,需要多次确认;同样,验签时需要多次验签和确认,才能证明交易的不可抵赖性。
6.

技术实现要素:

7.本发明提出一种sm2三方联合签名的方法和系统。具体地,参与三方分别具有部分私钥,共有一个公钥。三方分别使用自己的部分私钥,通过联合计算才能对消息进行签名,联合签名计算中,参与三方均无法获取到对方私钥的任何信息。联合计算得到的签名可以被三方共有的公钥验签,验签使用sm2算法的标准方法。该方法中,对消息的签名必须三方参与,签名同时保证了三方的操作确认。另外,攻击者在入侵其中任何一方的情况下,都不能伪造签名,从而提高了三方计算中的私钥安全性,避免私钥泄露后的签名滥用。签名可以被三方共有公钥验签,一次验证即可证明三方的不可抵赖性。验签使用sm2算法的标准方法,从而能够兼容现有公钥应用。
8.下面结合附图2对本发明进行详细说明。
9.本发明所述,参与三方分别具有部分私钥,共有一个公钥,说明如下。如图2中ma1所示,参与第一方记为a,具有私钥a和公钥pa。如图2中mb1所示,参与第二方记为b,具有私钥b和公钥pb。如图2中mc1所示,参与第三方记为c,具有私钥c和公钥pc。
10.任何一方都可以计算三方共有公钥,本发明示例由c计算。如图2中所示,c将pc发给b;b计算s21=b*pc;b将pc、s21和pb发送给a。a收到后,计算s22=a*pb,计算s23=a*pc,计算s24=a*s21=a*b*pc; a发送pa,pb,s21,s22,s23给c。c收到后,如图2中mc2所示,计算公钥pu=pa pb pc a*pb a*pc b*pc a*b*pc。其中 为椭圆曲线上的点加,*为大数乘,下同。由背
景技术描述可知,sm2是一种规定了参数的椭圆曲线密码算法,该椭圆曲线上的点的集合属于加法域;由加法域的运算规则可知,pu对应的私钥记为u=a b c a*b a*c b*c a*b*c,可知私钥a和私钥b是构成私钥u的部分私钥。共有公钥pu可被发布为三方交易共用公钥。
11.本发明所述,参与三方分别使用自己的部分私钥,通过联合计算才能对消息进行签名,说明如下。如图2中ma3所示,对于消息e,参与方a使用私钥a计算第一部分签名q1,计算过程如下:1) a生成随机数m,计算s31=m*g,g为sm2的参考基点;2) 生成随机数k,计算k*g,取该点的x1;3) 计算消息e的散列值记为e,计算 r=e x1;4) 计算 s32=s31*k=m*g*k;5) 计算s33=s31*(1 a)=m*g*(1 a);记第一部分签名q1=(r,s31,s32,s33)。参与方a发送q1中的r、s31、s32发送给参与方c;将q1中的s33发送给参与方b。
12.如图2中mb2所示,参与方b收到s33后,计算第二部分签名q2,计算过程如下:1)计算s41=s33* (1 b)= m*g*(1 a b a*b);记第二部分签名q2=s41,将q2发送给c。
13.如图2中mc3所示,参与方c收到参与方a发送的r、s32、s33后,收到参与方b发送的s41后,计算完整签名q3,计算过程如下:1)计算s51=s41*(1 c)= m*g*(1 a b c a*b a*c b*c a*b*c)2)对s51整体求逆,得到s52=( m*g*(1 a b c a*b a*c b*c a*b*c))-1
,()-1
表示对括号内的算式求逆;3)计算s53=(s51-s31)* r= m*g*r*(a b c a*b a*c b*c a*b*c);4)计算s54=s32-s53= m*g*(k-r*(a b c a*b a*c b*c a*b*c));5)计算s55=s52*s54=(m*g*(1 a b c a*b a*c b*c a*b*c))-1
*m*g*(k-r*(a b c a*b a*c b*c a*b*c))= (1 a b c a*b a*c b*c a*b*c)
ꢀ-1*(k-r*(a b c a*b a*c b*c a*b*c));6)记s=s55,输出完整签名q3=(r,s)作为消息e的签名。
14.由sm2签名算法可知,签名结果为(r,s),其中 r=e x1, s=(1 d
a
)-1
*(k-r* d
a
)。由上述共有公钥pu可知,共有公钥pu= pa pb pc a*pb a*pc b*pc a*b*pc,对应的私钥u=(a b c a*b a*c b*c a*b*c)。记私钥u为d
a
=(a b c a*b a*c b*c a*b*c),则s55=(1 d
a
)-1
*(k-r* d
a
),可推导得出完整签名q3符合sm2标准结构。
15.本发明所述,联合计算得到的签名可以被 参与三方的共有公钥验签,验签使用sm2算法的标准方法,说明如下。记私钥u为d
a
=(a b c a*b a*c b*c a*b*c),联合计算得到的完整签名q3=(r,s),r=e x1,s=(1 d
a
)-1
*(k-r* d
a
)。由于q2完全符合sm2签名方法,所以推导出该签名可以使用公钥pu验签,验签算法使用sm2标准方法。
16.基于私钥唯一且由持有人所有,sm2签名可用于保证消息的完整性,保证交易的不可抵赖性。由于公钥可被公开性,该签名可以被各方验证。在三方签名应用中,本发明保证了签名由三方共同计算得出,保证了三方对交易的确认。签名可以被三方共有公钥验签,一次验证即可证明三方的交易不可抵赖性;验签使用sm2算法的标准方法,从而能够兼容现有
公钥应用。另外,攻击者在入侵其中任何一方的情况下,都不能伪造签名,从而提高了三方计算中的私钥安全性,避免私钥泄露后的签名滥用。签名构造方式和sm2标准方法一致,已被充分证明其安全性。
附图说明
17.图1为sm2三方联合签名方法框图图2 为sm2三方方联合签名详细步骤图图3为交易双方 交易担保方三方联合签名应用示意图
具体实施方式
18.下面结合附图对sm2三方联合签名方法及系统进行说明。
19.图3是本发明在交易双方 交易担保方三方联合签名应用示意图。图中包括交易参与方甲,具有私钥a和公钥pa;包括交易参与方乙,具有私钥b和公钥pb;包括交易担保方丙,具有私钥c和公钥pc;包括证书签发机构ca。
20.证书准备:交易担保方丙将pc发送给参与方甲和乙,交易参与方甲和乙分别处理后发送给担保方丙。担保方丙计算共有公钥pu= pa pb pc a*pb a*pc b*pc a*b*pc。担保方丙将pu发送给ca,ca签发含有该公钥的证书cpu,cpu可被发布。
21.联合签名:交易参与方甲发起和参与方乙的一个交易e,需要对交易e进行签名。交易参与方甲首先通过散列计算得到交易e的散列值e,然后使用部分私钥a计算第一部分签名q1,计算过程见图2中的ma2。交易参与方甲将第一部分签名q1分别发送给参与方乙和担保方丙。
22.交易参与方乙收到到q1后,使用部分私钥b计算第二部分签名q2,计算过程见图2中的mb2。乙将第二部分签名q2发送给担保方丙。
23.交易担保方丙收到到q1和q2后,使用部分私钥c计算完整签名q3,计算过程见图2中的mc3。丙完成签名后,将完整签名q3发送给参与方甲和乙。甲、乙和丙均可将该签名和交易e一起发布。
24.签名验证:当交易参与三方中任何一方,或者其他第三方需要对交易e的完整性、真实性和不可抵赖性进行验证时,首先获得证书cpu,从其中获得共有公钥pu;然后计算交易e的散列值e,使用pu验证签名q3。
25.该方案中,交易的签名由三方共同计算得出,保证了三方对交易的确认。签名可以被三方共有公钥验签,一次验证即可证明三方的交易不可抵赖性;验签使用sm2算法的标准方法,从而能够兼容现有公钥应用。另外,攻击者在入侵其中任何一方的情况下,都不能伪造签名,从而提高了三方计算中的私钥安全性,避免私钥泄露后的签名滥用。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜