CN112003693B - 一种基于sm2的多方参与数字签名方法及系统 - Google Patents
一种基于sm2的多方参与数字签名方法及系统 Download PDFInfo
- Publication number
- CN112003693B CN112003693B CN202010756029.8A CN202010756029A CN112003693B CN 112003693 B CN112003693 B CN 112003693B CN 202010756029 A CN202010756029 A CN 202010756029A CN 112003693 B CN112003693 B CN 112003693B
- Authority
- CN
- China
- Prior art keywords
- initiator
- server
- public key
- signature
- random variable
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 239000003999 initiator Substances 0.000 claims abstract description 179
- 239000004576 sand Substances 0.000 claims abstract description 31
- 238000004364 calculation method Methods 0.000 claims description 32
- 238000004422 calculation algorithm Methods 0.000 claims description 6
- 238000009795 derivation Methods 0.000 claims description 5
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 230000001419 dependent effect Effects 0.000 claims description 2
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 238000013524 data verification Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- 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
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Mathematical Analysis (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供了一种基于SM2的多方参与数字签名方法,包括:发起方获取参与方密码总量Rm、服务方公钥点Ps及服务方随机变量ts,参与方密码总量Rm通过发起方生成的随机数R0以及多个参与方密码分量计算得到;根据生成的发起方随机变量tc、及参与方密码总量Rm、服务方公钥点Ps、服务方随机变量ts进行计算,得到用户公钥P;根据用户公钥P将待签名消息msg生成摘要e;根据摘要e生成数字签名(r,s)。还提供一种基于SM2的多方参与数字签名系统。完整的私钥需要多个参与方密码分量及服务方密码分量共同组成,私钥不会完整出现,提高安全性;此外,以服务方为联络点,签名时通过网络拉取参与方密码总量和服务方密码分量,不需要硬件,提高签名灵活性。
Description
技术领域
本发明涉及数字签名技术领域,尤其涉及一种基于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(mod n);其中Sm -1为Sm对n的模逆运算,mod为求模运算,G为SM2椭圆曲线的基点,n为G的阶。
在一个实施例中,在发起方获取参与方密码总量Rm、服务方公钥点Ps以及服务方随机变量ts的步骤之前,还包括:
服务方根据服务方随机变量ts更新自身生成的服务方密码分量ds,根据公式ds’=dsts(mod n)得到更新后服务方密码分量ds’;
服务方根据公式Ps=ds’-1G得到服务方公钥点Ps。
在一个实施例中,发起方根据自身生成的发起方随机变量tc、以及参与方密码总量Rm、服务方公钥点Ps以及服务方随机变量ts进行计算,得到用户公钥P,包括:
发起方根据服务方随机变量ts更新发起方随机变量tc,根据公式tc’=tcts(mod n)得到更新后的发起方随机变量tc’;
发起方根据公式P=RmR0 -1tc’(mod n)Ps-G得到用户公钥P。
在一个实施例中,发起方根据摘要e生成用户的数字签名(r,s),包括:
发起方根据参与方密码总量Rm和更新后的发起方随机变量tc’生成发起方公钥点Pc,根据公式Pc=(Rmtc’R0 -1+R0)(mod n)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’(mod n)得到第二部分签名参数中的第一签名参数s1,根据公式s2=(K2ds’+ds’r)(mod n)得到第二部分签名参数中的第二签名参数s2。
在一个实施例中,发起方根据第一部分签名r和第二部分签名参数(s1,s2)计算得到数字签名(r,s),包括:
发起方根据公式s=[(1+R0 2Rm -1tc’-1)s1+R0Rm -1tc’-1s2-r](mod n)得到第二部分签名s。
在一个实施例中,发起方根据用户公钥P将待签名消息msg生成摘要e,包括:
发起方根据用户公钥P和国密规范GMT 0003.2-2012计算出ZA值;
发起方令待签名消息msg为M,并根据公式M’=ZA||M和e=SM3(M’)计算得到摘要e。
在一个实施例中,上述基于SM2的多方参与数字签名方法还包括参与方在参与计算后更新自身的参与方密码分量,具体包括如下步骤:
更新参与方将自身的参与方密码分量Si更新为Si’并连接服务方,更新参与方为多个参与方中任一个参与方;
服务方根据服务方随机变量ts更新自身生成的服务方密码分量ds,根据公式ds ”=dsts(mod n)得到更新后的服务方密码分量ds ”,并将更新后的服务方密码分量ds ”作为签名开始后的服务方密码分量ds;
更新参与方接收服务方发送的服务方随机变量ts并根据公式ti=Si -1tsSi’得到更新变量ti,将更新变量ti发送至发起方;
发起方接收更新变量ti并根据公式tc ”=tcti(mod n)将发起方随机变量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的多方参与数字签名方法的流程;
图2为本发明一个实施例中得到参与方密码总量Rm的流程图;
图3为本发明一个实施例中得到服务方公钥点Ps的流程图;
图4为本发明一个实施例中得到用户公钥P的具体流程图;
图5为本发明一个实施例中生成用户的数字签名(r,s)的具体流程图;
图6为本发明一个实施例中得到第一部分签名r和第二部分签名参数(s1,s2)的具体流程图;
图7为本发明一个实施例中参与方更新自身的参与方密码分量的具体流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,在一个实施例中,本发明提供一种基于SM2的多方参与数字签名方法,包括:
步骤102,发起方获取参与方密码总量Rm、服务方公钥点Ps以及服务方随机变量ts,参与方密码总量Rm通过发起方生成的随机数R0以及多个参与方各自生成的参与方密码分量计算得到。
其中,参与方的数量需要结合实际情况进行设置,如某个人员需要发送密文并签名时,需要三个领导的权限,因此此时参与方就为三个。服务方可以是计算机、也可以是服务器,服务方处存有密码箱硬件,无论是签名还是解密都需要通过服务方提供的服务方密码分量和服务方随机变量,由于是通过密码箱来生成随机变量,因此服务方随机变量为真随机变量,无法破解。而参与方密码总量Rm则是通过多个参与方依次计算得到的最终密码量。其中,参与方可以是任何终端,比如移动终端、家用计算机、车载计算机等能够进行网络通信的设备。而发起方同样包括移动终端、家用计算机、车载计算机等能够进行网络通信的设备。
在一个实施例中,发起方为移动终端。通过移动终端进行网络通信访问参与方和服务方,从而在不设硬件的情况下实现数字签名。
步骤104,发起方根据自身生成的发起方随机变量tc、以及参与方密码总量Rm、服务方公钥点Ps、服务方随机变量ts进行计算,得到用户公钥P。
其中,得到发起方随机变量tc、以及参与方密码总量Rm、服务方公钥点Ps以及服务方随机变量ts后,即获得了用户私钥,根据用户私钥即可计算出用户公钥P。此外由于用户私钥与多个变量有关,而多个变量又是实时根据发起方的签名请求而实时给出,因此当被盗取其中一个数据后,也不能实现破解,安全性很高。
其中,发起方随机变量tc是发起方生成的,具体的,若本次签名为第一次签名,则本次的发起方随机变量tc是本次签名时发起方生成的;若本次签名为第二次及以后的签名,则本次的发起方随机变量tc是通过上一次签名后保存的。
步骤106,发起方根据用户公钥P将待签名消息msg生成摘要e。
其中,得到了用户公钥P后,即可根据用户公钥P将待签名消息msg生成摘要e,一般为SM3摘要。
步骤108,发起方根据摘要e生成用户的数字签名(r,s)。
其中,根据摘要e,发起方再次访问服务方,两者交互变量,从而得到数字签名(r,s)。
通过上述基于SM2的多方参与数字签名方法,采用发起方、参与方、服务方,其中参与方包括多个,完整的私钥需要多个参与方的参与方密码分量以及服务方的服务方密码分量共同组成,保证私钥不会完整的出现在任何时候,提高了安全性;此外,以服务方为联络点,每次签名的时候通过网络拉取多个参与方形成的参与方密码总量和服务方的服务方密码分量,不需要硬件设备,提高了签名的灵活性。
如图2所示,在一个实施例中,参与方包括m个,m大于1,多个参与方的参与方密码分量分别为S1,S2,S3,…,Sm,S1,S2,S3,…,Sm分别由m个参与方通过派生算法转换得到;在发起方获取参与方密码总量Rm、服务方公钥点Ps以及服务方随机变量ts的步骤之前,还包括:
步骤202,第一个参与方接收发起方发送的随机数R0。
其中,随机数R0的作用首先是发起方触发签名过程,通过随机数R0发送给第一个参与方,从而实现签名过程的开始,也是参与方密码总量Rm获取过程的开始。此外,由于多个参与方的参与方密码分量不能直接发给下一个,因此通过随机数R0作为掩体,使得在整个计算中,任何一个参与方都无法知晓其他参与方的参与方密码分量,也无法回溯。此外,S1,S2,S3,…,Sm统一的格式,多个参与方本身的密码分量格式可能都不相同,因此需要通过派生算法来转换为统一的格式,使得后续能够据此进行计算。
步骤204,第一个参与方根据随机数R0和参与方密码分量S1进行计算并将计算结果发送至第二个参与方,直至第m个参与方完成计算,得到参与方密码总量Rm,第m个参与方将参与方密码总量Rm发送至发起方;第m个参与方的计算公式为:Rm=Rm-1S m -1(mod n);其中Sm -1为Sm对n的模逆运算,mod为求模运算,G为SM2椭圆曲线的基点,n为G的阶。
其中,从随机数R0的触发开始,依次经历m个参与方的依次计算,最终得到m个带有参与方所有参与方密码分量的合集,即Rm,第m个再将最后得到的参与方密码总量Rm返回给发起方,以便于后续计算。为了使实施例更加清楚,在此举例说明,例如,第一个参与方将收到的发起方随机数R0结合自身的参与方密码分量进行计算得到计算结果R1=R0S1 -1(modn);接着第一个参与方将计算结果发送至第二个参与方,第二个参与方将接收到的第一个计算结果结合自身的参与方密码分量进行计算得到计算结果R2=R1S2 -1(mod n),以此类推,计算第i-1个参与方将计算结果发送至第i个参与方,第i个参与方根据接收到的第i-1个计算结果结合自身的密码分量进行计算得到计算结果Ri=Ri-1Si -1(mod n),i∈(1,2,3,……,m);直到第m个参与方完成计算,第m个参与方计算得到的即为参与方密码总量Rm。
其中,Sm -1为Sm对n的模逆运算,比如Sm=2,n=5,那么Sm -1=3。再次需要说明的是,本说明书所出现的”-1”均表示对n的模逆运算。
其中,第m分参与方的计算结果展开为Rm=R0S1 -1S2 -1S3 -1……Sm-1 -1Sm -1(mod n),在此需要特别注意的是,在Rm=R0S1 -1S2 -1S3 -1……Sm-1 -1Sm -1(mod n)中的(mod n)是表示每个乘数都要进行一次求模,例如R1=R0S1 -1(mod n),然后在R2=(R0S1 -1(mod n))S2 -1(mod n),以此类推,且其余实施例中的(mod n)同样可以采用该规则;由于第m个参与方的计算结果包含了m个参与方的密码分量,因此将第m个参与方的计算结果认定为参与方密码总量Rm。
如图3所示,在一个实施例中,在发起方获取参与方密码总量Rm、服务方公钥点Ps以及服务方随机变量ts的步骤之前,还包括:
步骤302,服务方根据服务方随机变量ts更新自身生成的服务方密码分量ds,根据公式ds’=dsts(mod n)得到更新后服务方密码分量ds’。
其中,上述也提到为了提高安全性,每次签名时的变量都是实时变动,具体的可以是以上一次签名使用时的变量作为这次签名的初始量,再通过一个服务方随机变量ts来更新当前的初始量,达到每次签名不同变量的目的。此外,为了使发起方知晓该更新情况,因此会将该服务方随机变量ts返回给发起方。
其中,服务方密码分量ds是由服务方生成的,但具体成因与上述发起方随机变量tc相同,若本次签名为第一次签名,则本次的服务方密码分量ds是本次签名时服务方生成的;若本次签名为第二次及以后的签名,则本次的服务方密码分量ds是通过上一次签名后保持的。
步骤304,服务方根据公式Ps=ds’-1G得到服务方公钥点Ps。
其中,利用更新后的服务方密码分量ds’,来生成服务方公钥点Ps提高安全性。此外为了计算更严谨,计算公式也可以为Ps=ds’-1G(mod n)。
其中,更新后的服务方密码分量ds’不仅要参与本次签名的后续计算,还要作为下一次签名的服务方密码分量ds。
如图4所示,在一个实施例中,发起方根据自身生成的发起方随机变量tc、以及参与方密码总量Rm、服务方公钥点Ps以及服务方随机变量ts进行计算,得到用户公钥P,包括:
步骤402,发起方根据服务方随机变量ts更新发起方随机变量tc,根据公式tc’=tcts(mod n)得到更新后的发起方随机变量tc’。
其中,发起方接收到返回的服务方随机变量ts后,进而更新当前的发起方随机变量tc,以使得在后续计算中与服务方的变量保持一致。
其中,更新后的发起方随机变量tc’不仅要参与本次签名的后续计算,还要作为下一次签名的发起方随机变量tc。
步骤404,发起方根据公式P=RmR0 -1tc’(mod n)Ps-G得到用户公钥P。
其中,在该公式中可以看出,一开始发起方生成的随机数R0结合R0 -1使其在用户公钥P中R0不影响运算结果,因此随机数R0仅仅是用于触发签名以及作为掩体两个作用,不参与实际的用户公钥P的计算。
如图5所示,在一个实施例中,发起方根据摘要e生成用户的数字签名(r,s),包括:
步骤502,发起方根据参与方密码总量Rm和更新后的发起方随机变量tc’生成发起方公钥点Pc,根据公式Pc=(Rmtc’R0 -1+R0)(mod n)G得到发起方公钥点Pc。
其中,发起方更新得到发起方随机变量tc’后,需要生成一个发起方公钥点Pc,也就是在SM2曲线中用于生成签名的公钥点。
步骤504,发起方将发起方公钥点Pc和摘要e发送至服务方。
其中,数字签名(r,s)分为两个部分,第一部分签名r的生成在服务方,因此发起方需要将生成的发起方公钥点Pc和摘要e发送至服务方。
步骤506,发起方接收服务方根据发起方公钥点Pc和摘要e计算得到然后返回的第一部分签名r和第二部分签名参数(s1,s2)。
其中,在服务方完成第一部分签名r和第二部分签名参数(s1,s2)的计算,计算完成后需要返回到发起方完成剩余部分的计算。
步骤508,发起方根据所述第一部分签名r和第二部分签名参数(s1,s2)计算得到数字签名(r,s)。
如图6所示,在一个实施例中,服务方根据发起方公钥点Pc和摘要e计算得到第一部分签名r和第二部分签名参数(s1,s2),包括:
步骤602,服务方生成随机数K1和K2,根据随机数K1、K2以及发起方公钥点Pc生成签名公钥点Pr,根据公式Pr=K1Pc+K2G得到签名公钥点Pr。
其中,公式也可以为Pr=K1Pc+K2G(mod n)。
步骤604,服务方获取签名公钥点Pr对应的坐标(Prx,Pry)并根据公式r=e+Prx得到第一部分签名值r。
步骤606,服务方根据公式s1=K1ds’(mod n)得到第二部分签名参数中的第一签名参数s1,根据公式s2=(K2ds’+ds’r)(mod n)得到第二部分签名参数中的第二签名参数s2。
在一个实施例中,发起方根据第一部分签名r和第二部分签名参数(s1,s2)计算得到数字签名(r,s),包括:
发起方根据公式s=[(1+R0 2Rm -1tc’-1)s1+R0Rm -1tc’-1s2-r](mod n)得到第二部分签名s。
其中,当服务方完成了第一部分签名r以及第二部分签名参数(s1,s2)后,发起方根据返回数据完成第二部分签名的计算,最终得到完整的数字签名(r,s)。
在一个实施例中,发起方根据用户公钥P将待签名消息msg生成摘要e,包括:
发起方根据用户公钥P和国密规范GMT 0003.2-2012计算出ZA值;
发起方令待签名消息msg为M,并根据公式M’=ZA||M和e=SM3(M’)计算得到摘要e。
其中,SM3是SM2国密算法中的计算摘要的算法,通过SM3,以及得到的用户公钥P即可计算出摘要e。
如图7所示,在一个实施例中,上述基于SM2的多方参与数字签名方法还包括参与方在参与计算后更新自身的参与方密码分量,具体包括如下步骤:
步骤702,更新参与方将自身的参与方密码分量Si更新为Si’并连接服务方,更新参与方为多个参与方中任一个参与方。
其中,上述有提到,每次签名时使用的变量都是变化的,且都是按统一的基准进行变化,因此当其中有任意一个参与方改变其参与方密码分量时,需要告知服务方。Si是指其中任意一个参与方的参与方密码分量。
步骤704,服务方根据服务方随机变量ts更新自身生成的服务方密码分量ds,根据公式ds ”=dsts(mod n)得到更新后的服务方密码分量ds ”,并将更新后的服务方密码分量ds ”作为签名开始后的服务方密码分量ds。
其中,当服务方接收到了该更新参与方的请求时,通过服务方随机变量ts更新一次服务方密码分量ds,将更新后的服务方密码分量ds ”再作为开始签名后的服务方密码分量ds,并完成后续计算。
步骤706,更新参与方接收服务方发送的服务方随机变量ts并根据公式ti=Si - 1tsSi’得到更新变量ti,将更新变量ti发送至发起方。
其中Si -1为Si对n的模逆运算,mod为求模运算,G为SM2椭圆曲线的基点,n为G的阶。
步骤708,发起方接收更新变量ti并根据公式tc ”=tcti(mod n)将发起方随机变量tc更新为发起方随机变量tc ”,并将更新后的发起方随机变量tc ”作为签名开始后的发起方随机变量tc。
其中,通过更新变量ti来更新发起方随机变量tc,该tc ”也就是上述第一个实施例中的tc,完成更新后,再进行签名过程。
在一个实施例中,发起方、参与方以及服务方之间的通信采用TSL1.2通信协议。
在一个实施例中,本发明还提供一种基于SM2的多方参与数字签名系统,包括发起方、多个参与方、服务方;
发起方用于获取参与方密码总量Rm、服务方公钥点Ps以及服务方随机变量ts;根据自身生成的发起方随机变量tc、以及参与方密码总量Rm、服务方公钥点Ps以及服务方随机变量ts进行计算,得到用户公钥P;根据用户公钥P将待签名消息msg生成摘要e;根据摘要e生成用户的数字签名(r,s);
多个参与方用于根据发起方生成的随机数R0以及各自生成的参与方密码分量计算得到参与方密码总量Rm并发送至发起方;
服务方用于根据服务方随机变量ts生成服务方公钥点Ps;将服务方随机变量ts和服务方公钥点Ps发送至发起方。
在一个实施例中,本发明还提供一种数字签名的解密方法,主要包括:
获取解析密文C1||C3||C2,其中C1是生成随机数的计算出的椭圆曲线点,C2是密文数据,C3是SM3的摘要值。
取C1点作为随机数E0触发解密过程,获取参与方密码总量Em,该参与方密码总量Em的获取与签名时相同。
服务方生成服务方密码分量ds;
服务方生成服务方变量ts;
更新服务方密码分量ds’=dsts(mod n);
计算服务方公钥点Es=ds’-1Em;
服务方将服务方公钥点Es和服务方变量ts发送给发起方,该发起方为解密发起方;
发起方根据服务方变量ts更新发起方随机变量tc得到tc’;
发起方计算发起方公钥点Ec=EStc’-E0;
通过Ec生成消息msg(与加密时使用的派生函数相同);
计算原文Plaintext=C2^msg;
获取发起方公钥点Ec对应的坐标(Ecx,Ecy),计算摘要Digest=SM3(Ecx+plaintext+Ecy);
比较摘要值digest==C3,若成功,则返回plaintext说明签名为真。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明的保护范围应以所附权利要求为准。
Claims (9)
1.一种基于SM2的多方参与数字签名方法,其特征在于,包括:
发起方获取参与方密码总量Rm、服务方公钥点Ps以及服务方随机变量ts,所述参与方密码总量Rm通过所述发起方生成的随机数R0以及多个参与方各自生成的参与方密码分量计算得到;
所述发起方根据所述服务方随机变量ts更新发起方随机变量tc,根据公式tc’=tcts(mod n)得到更新后的发起方随机变量tc’;
所述发起方根据公式P=RmR0 -1tc’(mod n)Ps-G得到用户公钥P;其中R0 -1为R0对n的模逆运算,mod为求模运算,G为SM2椭圆曲线的基点,n为G的阶;
所述发起方根据所述用户公钥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(mod n);其中Sm -1为Sm对n的模逆运算,mod为求模运算,G为SM2椭圆曲线的基点,n为G的阶。
3.根据权利要求2所述的基于SM2的多方参与数字签名方法,其特征在于,在所述发起方获取参与方密码总量Rm、服务方公钥点Ps以及服务方随机变量ts的步骤之前,还包括:
所述服务方根据所述服务方随机变量ts更新自身生成的服务方密码分量ds,根据公式ds’=dsts(mod n)得到更新后服务方密码分量ds’;
所述服务方根据公式Ps=ds’-1G得到服务方公钥点Ps。
4.根据权利要求1所述的基于SM2的多方参与数字签名方法,其特征在于,所述发起方根据所述摘要e生成用户的数字签名(r,s),包括:
所述发起方根据所述参与方密码总量Rm和更新后的发起方随机变量tc’生成发起方公钥点Pc,根据公式Pc=(Rmtc’R0 -1+R0)(mod n)G得到发起方公钥点Pc;
所述发起方将所述发起方公钥点Pc和摘要e发送至所述服务方;
所述发起方接收所述服务方根据所述发起方公钥点Pc和摘要e计算得到然后返回的第一部分签名r和第二部分签名参数(s1,s2);
所述发起方根据所述第一部分签名r和第二部分签名参数(s1,s2)计算得到所述数字签名(r,s)。
5.根据权利要求4所述的基于SM2的多方参与数字签名方法,其特征在于,所述服务方根据所述发起方公钥点Pc和摘要e计算得到第一部分签名r和第二部分签名参数(s1,s2),包括:
所述服务方生成随机数K1和K2,根据所述随机数K1、K2以及所述发起方公钥点Pc生成签名公钥点Pr,根据公式Pr=K1Pc+K2G得到签名公钥点Pr;
所述服务方获取所述签名公钥点Pr对应的坐标(Prx,Pry),并根据公式r=e+Prx得到第一部分签名值r;
所述服务方根据公式s1=K1ds’(mod n)得到所述第二部分签名参数中的第一签名参数s1,根据公式s2=(K2ds’+ds’r)(mod n)得到所述第二部分签名参数中的第二签名参数s2。
6.根据权利要求4所述的基于SM2的多方参与数字签名方法,其特征在于,所述发起方根据所述第一部分签名r和第二部分签名参数(s1,s2)计算得到所述数字签名(r,s),包括:
所述发起方根据公式s=[(1+R0 2Rm -1tc’-1)s1+R0Rm -1tc’-1s2-r](mod n)得到第二部分签名s。
7.根据权利要求1所述的基于SM2的多方参与数字签名方法,其特征在于,所述发起方根据所述用户公钥P将待签名消息msg生成摘要e,包括:
所述发起方根据所述用户公钥P和国密规范GMT0003.2-2012计算出ZA值;
所述发起方令所述待签名消息msg为M,并根据公式M’=ZA||M和e=SM3(M’)计算得到所述摘要e。
8.根据权利要求1所述的基于SM2的多方参与数字签名方法,其特征在于,所述方法还包括参与方在参与计算后更新自身的参与方密码分量,具体包括如下步骤:
更新参与方将自身的参与方密码分量Si更新为Si’,并连接所述服务方,所述更新参与方为所述多个参与方中任一个参与方;
所述服务方根据所述服务方随机变量ts更新自身生成的服务方密码分量ds,根据公式ds”=dsts(mod n)得到更新后的服务方密码分量ds”,并将更新后的服务方密码分量ds”作为签名开始后的服务方密码分量ds;
所述更新参与方接收所述服务方发送的所述服务方随机变量ts,并根据公式ti=Si - 1tsSi’得到更新变量ti,将所述更新变量ti发送至所述发起方;
所述发起方接收所述更新变量ti,并根据公式tc”=tcti(mod n)将所述发起方随机变量tc更新为发起方随机变量tc”,并将更新后的发起方随机变量tc”作为签名开始后的发起方随机变量tc;其中Si -1为Si对n的模逆运算,mod为求模运算,G为SM2椭圆曲线的基点,n为G的阶。
9.一种基于SM2的多方参与数字签名系统,其特征在于,包括发起方、多个参与方、服务方;
所述发起方用于获取参与方密码总量Rm、服务方公钥点Ps以及服务方随机变量ts;所述参与方密码总量Rm通过所述发起方生成的随机数R0以及多个参与方各自生成的参与方密码分量计算得到;根据所述服务方随机变量ts更新发起方随机变量tc,根据公式tc’=tcts(modn)得到更新后的发起方随机变量tc’;根据公式P=RmR0 -1tc’(mod n)Ps-G得到用户公钥P;其中R0 -1为R0对n的模逆运算,mod为求模运算,G为SM2椭圆曲线的基点,n为G的阶;根据所述用户公钥P将待签名消息msg生成摘要e;根据所述摘要e生成用户的数字签名(r,s);
所述多个参与方用于根据所述发起方生成的所述随机数R0以及各自生成的所述参与方密码分量计算得到所述参与方密码总量Rm,并发送至所述发起方;
所述服务方用于根据所述服务方随机变量ts生成所述服务方公钥点Ps;将所述服务方随机变量ts和所述服务方公钥点Ps发送至所述发起方。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010756029.8A CN112003693B (zh) | 2020-07-31 | 2020-07-31 | 一种基于sm2的多方参与数字签名方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010756029.8A CN112003693B (zh) | 2020-07-31 | 2020-07-31 | 一种基于sm2的多方参与数字签名方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112003693A CN112003693A (zh) | 2020-11-27 |
CN112003693B true CN112003693B (zh) | 2021-08-27 |
Family
ID=73462641
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010756029.8A Active CN112003693B (zh) | 2020-07-31 | 2020-07-31 | 一种基于sm2的多方参与数字签名方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112003693B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113158176B (zh) * | 2021-06-02 | 2022-08-02 | 工业信息安全(四川)创新中心有限公司 | 基于sm2签名的公钥解析方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107017993A (zh) * | 2017-04-01 | 2017-08-04 | 北京江南天安科技有限公司 | 一种多方联合密钥产生和数字签名方法及系统 |
CN108667625A (zh) * | 2018-07-19 | 2018-10-16 | 数安时代科技股份有限公司 | 协同sm2的数字签名方法 |
CN110365487A (zh) * | 2019-07-19 | 2019-10-22 | 北京向芯力科技有限公司 | 一种基于sm2算法的协同签名方法与装置 |
CN111147246A (zh) * | 2020-02-18 | 2020-05-12 | 数据通信科学技术研究所 | 一种基于sm2的多方协同签名方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9292876B1 (en) * | 2014-12-16 | 2016-03-22 | Docusign, Inc. | Systems and methods for employing document snapshots in transaction rooms for digital transactions |
GB2576081A (en) * | 2018-06-03 | 2020-02-05 | Vvow Company Ltd | Peer-to-peer cryptocurrency and crypto asset trading platform |
CN111447065B (zh) * | 2019-01-16 | 2021-03-09 | 中国科学院软件研究所 | 一种主动安全的sm2数字签名两方生成方法 |
WO2019137566A2 (en) * | 2019-04-29 | 2019-07-18 | Alibaba Group Holding Limited | Methods and devices for validating transaction in blockchain system |
CN110971405B (zh) * | 2019-12-06 | 2022-06-14 | 支付宝(杭州)信息技术有限公司 | 多方协同的sm2签名、解密方法及其系统 |
-
2020
- 2020-07-31 CN CN202010756029.8A patent/CN112003693B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107017993A (zh) * | 2017-04-01 | 2017-08-04 | 北京江南天安科技有限公司 | 一种多方联合密钥产生和数字签名方法及系统 |
CN108667625A (zh) * | 2018-07-19 | 2018-10-16 | 数安时代科技股份有限公司 | 协同sm2的数字签名方法 |
CN110365487A (zh) * | 2019-07-19 | 2019-10-22 | 北京向芯力科技有限公司 | 一种基于sm2算法的协同签名方法与装置 |
CN111147246A (zh) * | 2020-02-18 | 2020-05-12 | 数据通信科学技术研究所 | 一种基于sm2的多方协同签名方法及系统 |
Non-Patent Citations (1)
Title |
---|
SM2 Digital Signature Algorithm draft-shen-sm2-ecdsa-00;S.Shen;《Internet Engineering Task Force Internet-Draft》;20120426;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112003693A (zh) | 2020-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107634836B (zh) | 一种sm2数字签名生成方法及系统 | |
CN107196763B (zh) | Sm2算法协同签名及解密方法、装置与系统 | |
CN109309569B (zh) | 基于sm2算法的协同签名的方法、装置及存储介质 | |
CN107248909B (zh) | 一种基于sm2算法的无证书安全签名方法 | |
CN107947913B (zh) | 一种基于身份的匿名认证方法与系统 | |
CN113507374B (zh) | 门限签名方法、装置、设备以及存储介质 | |
CN107302438B (zh) | 一种基于密钥更新的私钥保护方法、系统及装置 | |
CN108199835B (zh) | 一种多方联合私钥解密方法 | |
CN110224812B (zh) | 一种基于多方安全计算的电子签名移动客户端与协同服务器通信的方法以及设备 | |
CN106603231B (zh) | 基于去秘密化的分布式sm2数字签名生成方法及系统 | |
CN106850198B (zh) | 基于多装置协同的sm2数字签名生成方法及系统 | |
CN111630810B (zh) | 密钥交换装置、密钥交换系统、密钥交换方法及记录介质 | |
CN108833095B (zh) | 区块链中的行为验证方法、节点、系统及电子设备 | |
CN111934877B (zh) | 一种sm2协同门限签名方法、存储介质及电子装置 | |
CN107370599B (zh) | 一种远程销毁私钥的管理方法、装置和系统 | |
CN110505056B (zh) | 一种支持可信显示的协同签名方法和装置 | |
CN114070556B (zh) | 一种门限环签名方法、装置、电子设备及可读存储介质 | |
CN106850229A (zh) | 基于乘积秘密分割的sm2数字签名生成方法及系统 | |
CN112118113A (zh) | 一种基于sm2算法的多方协同群签名方法及装置、系统、介质 | |
CN106789087B (zh) | 确定消息的数据摘要、基于多方的数字签名的方法及系统 | |
CN112906038B (zh) | 基于sm9密钥的门限化处理方法、装置、设备及存储介质 | |
Schliep et al. | End-to-end secure mobile group messaging with conversation integrity and deniability | |
CN112003693B (zh) | 一种基于sm2的多方参与数字签名方法及系统 | |
CN110086630B (zh) | 基于爱德华兹曲线数字签名的生成方法 | |
CN111262691A (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 |