一种基于SM2的多方参与数字签名方法及系统技术方案

技术编号:26511069 阅读:19 留言:0更新日期:2020-11-27 15:40
本发明专利技术提供了一种基于SM2的多方参与数字签名方法,包括:发起方获取参与方密码总量R

【技术实现步骤摘要】
一种基于SM2的多方参与数字签名方法及系统
本专利技术涉及数字签名
,尤其涉及一种基于SM2的多方参与数字签名方法及系统。
技术介绍
数字签名可实现对数据完整性和行为不可否认性的验证,在业务系统应用中可以解决用户身份验证的问题。为了保证私钥的安全可控,数字签名通常需要USBKey等硬件设备进行支持生成。但传统中的数字签名方式存在不少缺陷,首先是硬件不方便且成本过高,每次用户需要签名时,必须连接硬件密钥,不仅使用繁琐且成本也高。其次安全性也不足,采用硬件设备时密钥是集中出现的,盗取该密钥后就能够实现加解密。
技术实现思路
针对现有技术中所存在的不足,本专利技术了一种基于SM2的多方参与数字签名方法及系统。第一方面,在一个实施例中,本专利技术提供一种基于SM2的多方参与数字签名方法,包括:发起方获取参与方密码总量Rm、服务方公钥点Ps以及服务方随机变量ts,参与方密码总量Rm通过发起方生成的随机数R0以及多个参与方各自生成的参与方密码分量计算得到;发起方根据自身生成的发起方随机变量tc、以及参与方密码总量Rm、服务方公钥点Ps、服务方随机变量ts进行计算,得到用户公钥P;发起方根据用户公钥P将待签名消息msg生成摘要e;发起方根据摘要e生成用户的数字签名(r,s)。在一个实施例中,参与方包括m个,m大于1,多个参与方的参与方密码分量分别为S1,S2,S3,…,Sm,S1,S2,S3,…,Sm分别由m个参与方通过派生算法转换得到;在发起方获取参与方密码总量Rm、服务方公钥点Ps以及服务方随机变量ts的步骤之前,还包括:第一个参与方接收发起方发送的随机数R0;第一个参与方根据随机数R0和参与方密码分量S1进行计算并将计算结果发送至第二个参与方,直至第m个参与方完成计算,得到参与方密码总量Rm,第m个参与方将参与方密码总量Rm发送至发起方;第m个参与方的计算公式为:Rm=Rm-1Sm-1(modn);其中Sm-1为Sm对n的模逆运算,mod为求模运算,G为SM2椭圆曲线的基点,n为G的阶。在一个实施例中,在发起方获取参与方密码总量Rm、服务方公钥点Ps以及服务方随机变量ts的步骤之前,还包括:服务方根据服务方随机变量ts更新自身生成的服务方密码分量ds,根据公式ds’=dsts(modn)得到更新后服务方密码分量ds’;服务方根据公式Ps=ds’-1G得到服务方公钥点Ps。在一个实施例中,发起方根据自身生成的发起方随机变量tc、以及参与方密码总量Rm、服务方公钥点Ps以及服务方随机变量ts进行计算,得到用户公钥P,包括:发起方根据服务方随机变量ts更新发起方随机变量tc,根据公式tc’=tcts(modn)得到更新后的发起方随机变量tc’;发起方根据公式P=RmR0-1tc’(modn)Ps-G得到用户公钥P。在一个实施例中,发起方根据摘要e生成用户的数字签名(r,s),包括:发起方根据参与方密码总量Rm和更新后的发起方随机变量tc’生成发起方公钥点Pc,根据公式Pc=(Rmtc’R0-1+R0)(modn)G得到发起方公钥点Pc;发起方将发起方公钥点Pc和摘要e发送至服务方;发起方接收服务方根据发起方公钥点Pc和摘要e计算得到然后返回的第一部分签名r和第二部分签名参数(s1,s2);发起方根据所述第一部分签名r和第二部分签名参数(s1,s2)计算得到数字签名(r,s)。在一个实施例中,服务方根据发起方公钥点Pc和摘要e计算得到第一部分签名r和第二部分签名参数(s1,s2),包括:服务方生成随机数K1和K2,根据随机数K1、K2以及发起方公钥点Pc生成签名公钥点Pr,根据公式Pr=K1Pc+K2G得到签名公钥点Pr;服务方获取签名公钥点Pr对应的坐标(Prx,Pry)并根据公式r=e+Prx得到第一部分签名值r;服务方根据公式s1=K1ds’(modn)得到第二部分签名参数中的第一签名参数s1,根据公式s2=(K2ds’+ds’r)(modn)得到第二部分签名参数中的第二签名参数s2。在一个实施例中,发起方根据第一部分签名r和第二部分签名参数(s1,s2)计算得到数字签名(r,s),包括:发起方根据公式s=[(1+R02Rm-1tc’-1)s1+R0Rm-1tc’-1s2-r](modn)得到第二部分签名s。在一个实施例中,发起方根据用户公钥P将待签名消息msg生成摘要e,包括:发起方根据用户公钥P和国密规范GMT0003.2-2012计算出ZA值;发起方令待签名消息msg为M,并根据公式M’=ZA||M和e=SM3(M’)计算得到摘要e。在一个实施例中,上述基于SM2的多方参与数字签名方法还包括参与方在参与计算后更新自身的参与方密码分量,具体包括如下步骤:更新参与方将自身的参与方密码分量Si更新为Si’并连接服务方,更新参与方为多个参与方中任一个参与方;服务方根据服务方随机变量ts更新自身生成的服务方密码分量ds,根据公式ds”=dsts(modn)得到更新后的服务方密码分量ds”,并将更新后的服务方密码分量ds”作为签名开始后的服务方密码分量ds;更新参与方接收服务方发送的服务方随机变量ts并根据公式ti=Si-1tsSi’得到更新变量ti,将更新变量ti发送至发起方;发起方接收更新变量ti并根据公式tc”=tcti(modn)将发起方随机变量tc更新为发起方随机变量tc”,并将更新后的发起方随机变量tc”作为签名开始后的发起方随机变量tc,其中Si-1为Si对n的模逆运算,mod为求模运算,G为SM2椭圆曲线的基点,n为G的阶。第二方面,在一个实施例中,本专利技术还提供一种基于SM2的多方参与数字签名系统,包括发起方、多个参与方、服务方;发起方用于获取参与方密码总量Rm、服务方公钥点Ps以及服务方随机变量ts;根据自身生成的发起方随机变量tc、以及参与方密码总量Rm、服务方公钥点Ps以及服务方随机变量ts进行计算,得到用户公钥P;根据用户公钥P将待签名消息msg生成摘要e;根据摘要e生成用户的数字签名(r,s);多个参与方用于根据发起方生成的随机数R0以及各自生成的参与方密码分量计算得到参与方密码总量Rm并发送至发起方;服务方用于根据服务方随机变量ts生成服务方公钥点Ps;将服务方随机变量ts和服务方公钥点Ps发送至发起方。通过上述基于SM2的多方参与数字签名方法及系统,采用发起方、参与方、服务方,其中参与方包括多个,完整的私钥需要多个参与方的参与方密码分量以及服务方的服务方密码分量共同组成,保证私钥不会完整的出现在任何时候,提高了安全性;此外,以服务方为联络点,每次签名的时候通过网络拉取多个参与方形成的参与方密码总量和服务方的服务方密码分量,不需要硬件设备,提高了签名的灵活性。附图说明为了更清楚地说明本专利技术实施本文档来自技高网...

【技术保护点】
1.一种基于SM2的多方参与数字签名方法,其特征在于,包括:/n发起方获取参与方密码总量R

【技术特征摘要】
1.一种基于SM2的多方参与数字签名方法,其特征在于,包括:
发起方获取参与方密码总量Rm、服务方公钥点Ps以及服务方随机变量ts,所述参与方密码总量Rm通过所述发起方生成的随机数R0以及多个参与方各自生成的参与方密码分量计算得到;
所述发起方根据自身生成的发起方随机变量tc、以及所述参与方密码总量Rm、服务方公钥点Ps、服务方随机变量ts进行计算,得到用户公钥P;
所述发起方根据所述用户公钥P将待签名消息msg生成摘要e;
所述发起方根据所述摘要e生成用户的数字签名(r,s)。


2.根据权利要求1所述的基于SM2的多方参与数字签名方法,其特征在于,所述参与方包括m个,m大于1,所述多个参与方的参与方密码分量分别为S1,S2,S3,…,Sm,所述S1,S2,S3,…,Sm分别由m个参与方通过派生算法转换得到;在所述发起方获取参与方密码总量Rm、服务方公钥点Ps以及服务方随机变量ts的步骤之前,还包括:
第一个参与方接收所述发起方发送的所述随机数R0;
所述第一个参与方根据所述随机数R0和参与方密码分量S1进行计算并将计算结果发送至第二个参与方,直至第m个参与方完成计算,得到所述参与方密码总量Rm,所述第m个参与方将所述参与方密码总量Rm发送至所述发起方;所述第m个参与方的计算公式为:Rm=Rm-1Sm-1(modn);其中Sm-1为Sm对n的模逆运算,mod为求模运算,G为SM2椭圆曲线的基点,n为G的阶。


3.根据权利要求2所述的基于SM2的多方参与数字签名方法,其特征在于,在所述发起方获取参与方密码总量Rm、服务方公钥点Ps以及服务方随机变量ts的步骤之前,还包括:
所述服务方根据所述服务方随机变量ts更新自身生成的服务方密码分量ds,根据公式ds’=dsts(modn)得到更新后服务方密码分量ds’;
所述服务方根据公式Ps=ds’-1G得到服务方公钥点Ps。


4.根据权利要求3所述的基于SM2的多方参与数字签名方法,其特征在于,所述发起方根据自身生成的发起方随机变量tc、以及所述参与方密码总量Rm、服务方公钥点Ps以及服务方随机变量ts进行计算,得到用户公钥P,包括:
所述发起方根据所述服务方随机变量ts更新所述发起方随机变量tc,根据公式tc’=tcts(modn)得到更新后的发起方随机变量tc’;
所述发起方根据公式P=RmR0-1tc’(modn)Ps-G得到用户公钥P。


5.根据权利要求4所述的基于SM2的多方参与数字签名方法,其特征在于,所述发起方根据所述摘要e生成用户的数字签名(r,s),包括:
所述发起方根据所述参与方密码总量Rm和更新后的发起方随机变量tc’生成发起方公钥点Pc,根据公式Pc=(Rmtc’R0-1+R0)(modn)G得到发起方公钥点Pc;
所述发起方将所述发起方公钥点Pc和摘要e发送至所述服务方;
所述发起方接收所述服务方根据所述发起方公钥点Pc和摘要e计算得到然后返回的第一部分签名r和第二部分签名参数(s1,s2);
所述发起方根据所述第一部分签名r和第二部分签名参数(s1,s2)计算得到所述数字签名(r,s)。


6.根据权利要求5所述的基于SM2的多方参与数字签名方法,其特征在于,所述服务...

【专利技术属性】
技术研发人员:姜晓崑兰磊周俊伊
申请(专利权)人:大陆云盾电子认证服务有限公司大陆云盾重庆信息安全技术研究院有限公司
类型:发明
国别省市:重庆;50

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

1