CN108989047A - 一种基于sm2算法的通信双方协同签名方法与系统 - Google Patents
一种基于sm2算法的通信双方协同签名方法与系统 Download PDFInfo
- Publication number
- CN108989047A CN108989047A CN201810799350.7A CN201810799350A CN108989047A CN 108989047 A CN108989047 A CN 108989047A CN 201810799350 A CN201810799350 A CN 201810799350A CN 108989047 A CN108989047 A CN 108989047A
- Authority
- CN
- China
- Prior art keywords
- communication party
- signature
- communication
- random number
- party
- 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
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/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
-
- 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/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- 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/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0838—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
-
- 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
-
- 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
- H04L9/3252—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 using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种基于SM2算法的通信双方协同签名方法及系统,涉及第一通信方和第二通信方,通信双方独立生成各自子私钥,由两个子私钥协同运算产生公钥,双方均无法由己方生成和获得的参数计算得到私钥。签名时,通信双方各自产生部分签名,再由双方根据消息摘要、各自子私钥等参数协同计算得到最后的签名结果,入侵任何一方都无法获取私钥伪造签名。本发明技术方案充分保证了SM2算法私钥的安全性,而且在协同签名过程中,双方交互的内容少,通信数据量小,密码运算的复杂度低,能够很好地满足云计算、物联网环境中低延迟、少交互的应用需求。
Description
技术领域
本发明涉及信息安全和密码学应用技术领域,具体涉及一种基于SM2算法的通信双方协同签名方法与系统。
背景技术
密码技术是信息安全的核心技术。椭圆曲线公钥密码(简称ECC)算法近年来有了较大的发展和广泛的应用,国家密码管理局于2010年12月17日发布了椭圆曲线公钥密码算法SM2,在我国电子商务、身份认证等应用中发挥了重要的安全保障作用。
在公钥密码体制中,保证私钥的安全性是一个非常重要的问题。用户的私钥通常需要在专门的密码硬件中安全存储和使用,私钥不能从密码硬件中导出。但是,随着公钥密码算法应用的普及,SM2算法在电子商务、电子政务、移动警务、移动办公等体系和应用中得到了广泛使用,在车联网、智能医疗系统、智能家居系统等物联网应用以及云计算系统中也发挥了越来越重要的作用。很多使用SM2算法的系统和终端,特别是智能移动终端中,并没有配置密码芯片或者TF卡、USBKey等形式的硬件密码模块,只能依赖于软件密码模块来完成密码运算,私钥则需要存储在用户终端本地存储介质中。虽然私钥存储时可以使用加密、PIN码等方式加以保护,仍有被窃取的可能,而且在软件密码模块进行密码运算时,内存中最终会出现明文形式的私钥,易被攻击者通过一些方式窃取。
对于这一问题,一个可行的方案是将私钥分拆成多份,分开存储在不同的终端或者服务器中,当需要使用私钥进行密码运算时,各终端或者服务器分别使用自己的子私钥进行密码运算,以及相互交互部分运算结果,最后得到的密码运算结果等同于直接使用私钥进行密码运算 (例如数字签名) 的结果。基于这一方案已有一些算法提出来,但是这些算法大多运算过程比较复杂,交互内容比较多,通信数据量较大,在云计算、物联网等环境中不能满足低延迟、少交互的应用需求。
为了解决以上存在的问题,还需要寻求一种理想的技术解决方案。
发明内容
本发明的目的是针对现有技术的不足,从而提供一种基于SM2算法的通信双方协同签名方法与系统,使通信双方独立生成各自子私钥,通过协同运算才能对消息进行签名操作,充分保证私钥的安全性,而且签名过程中运算复杂度低,双方交互内容少。
为了实现上述目的,本发明所采用的技术方案是:一种基于SM2算法的通信双方协同签名方法,所述通信双方包括第一通信方和第二通信方,所述第一通信方和所述第二通信方共享定义SM2算法椭圆曲线E和E上阶为n的基点G;所述方法包括以下步骤:
一、产生双方各自子私钥和计算公钥阶段
S101、所述第一通信方产生随机数d1∈[1,n-1],作为所述第一通信方的子私钥;所述第二通信方产生随机数d2∈[1,n-1],作为所述第二通信方的子私钥;
S102、所述第二通信方根据d2和G计算得到椭圆曲线点P2=[d2-1]G,并把P2发送给所述第一通信方,其中d2-1表示d2的逆元d2-1mod n;
S103、所述第一通信方根据d1、P2和G计算得到公钥P=[d1-1]P2-G并公开所述公钥,其中d1-1表示d1的逆元d1-1mod n;
二、双方协同签名阶段
S201、所述第一通信方对待签名消息M进行签名预处理,得到消息摘要e;
S202、所述第一通信方产生随机数k1∈[1,n-1],根据k1生成第一部分签名W1,并将所述消息摘要e和所述第一部分签名W1发送给所述第二通信方;
S203、所述第二通信方产生随机数k2∈[1,n-1],根据k2生成第二部分签名W2;
S204、所述第二通信方根据所述第一部分签名W1和所述第二部分签名W2计算椭圆曲线点W,此时W=[(k1+k2)*d2-1]G;W的坐标为(x1,y1),所述第二通信方根据x1和所述消息摘要e计算得到第三部分签名r=(x1+e)mod n,若r=0,则返回S203;
S205、所述第二通信方根据k2、d2和r计算得到第四部分签名s1=(k2+d2*r)mod n,并将s1和r发送给所述第一通信方;
S206、所述第一通信方根据d1、k1、s1和r计算s=(d1*(k1+s1)-r)mod n,若s=0,返回S202;
S207、所述第一通信方输出M及其数字签名(r,s)。
基于上述,步骤S202、S203、S204分别为:
S202、所述第一通信方产生随机数k1∈[1,n-1],根据k1和P2计算得到第一部分签名W1=[k1]P2,并将所述消息摘要e和所述第一部分签名W1发送给所述第二通信方;
S203、所述第二通信方产生随机数k2∈[1,n-1],根据k2和P2计算得到第二部分签名W2=[k2]P2;
S204、所述第二通信方根据所述第一部分签名W1和所述第二部分签名W2计算得到椭圆曲线点W=W1+W2,W的坐标为(x1,y1);然后根据x1和所述消息摘要e计算得到第三部分签名r=(x1+e)mod n,若r=0,则返回S203。
基于上述,步骤S202、S203、S204分别为:
S202、所述第一通信方产生随机数k1∈[1,n-1],根据k1和G计算得到第一部分签名W1=[k1]G,并将e和W1发送给所述第二通信方;
S203、所述第二通信方产生随机数k2∈[1,n-1],根据k2和G计算得到第二部分签名W2=[k2]G;
S204、所述第二通信方根据所述第一部分签名W1和所述第二部分签名W2计算得到椭圆曲线点W=[d2-1]W1+[d2-1]W2,W的坐标为(x1,y1);然后根据x1和e计算得到第三部分签名r=(x1+e)mod n,若r=0,则返回S203。
基于上述,S201中的所述第一通信方对待签名消息M进行签名预处理,得到消息摘要e,包括:所述第一通信方使用密码杂凑函数计算所述第一通信方的杂凑值Z,再将Z与M拼接为M1,然后对M1使用杂凑函数,得到所述消息摘要e。
基于上述,所述第一通信方产生的随机数d1、k1分别由一个或多个位于[1,n-1]之间的随机数运算得到,和/或所述第二通信方产生的随机数d2、k2分别由一个或多个位于[1,n-1]之间的随机数运算得到;所述运算包括线性运算、相乘、求逆。
基于上述,所述步骤S101中,所述第一通信方向所述第二通信方发送协同产生密钥请求,所述第二通信方接收到所述协同产生密钥请求后,产生随机数d2∈[1,n-1],作为所述第二通信方的子私钥。
基于上述,步骤S201、S202分别为:
S201、所述第一通信方产生随机数k1∈[1,n-1],根据k1生成第一部分签名W1,并将所述第一部分签名W1发送给所述第二通信方;
S202、所述第二通信方对待签名消息M进行签名预处理,得到消息摘要e。
一种基于SM2算法的通信双方协同签名系统,包括第一通信方和第二通信方,所述第一通信方包括第一密码运算模块和第一通信模块,所述第二通信方包括第二密码运算模块和第二通信模块,所述第一通信方和所述第二通信方通过所述第一通信模块和所述第二通信模块通信连接;所述第一通信方和所述第二通信方共享SM2算法椭圆曲线E和E上阶为n的基点G;所述第一通信方和所述第二通信方产生各自子私钥和计算公钥,在需要签名时进行双方协同签名;
所述第一通信方和所述第二通信方产生各自子私钥和计算公钥的过程包括:
所述第一密码运算模块产生随机数d1∈[1,n-1],作为所述第一通信方的子私钥,所述第二密码运算模块产生随机数d2∈[1,n-1],作为所述第二通信方的子私钥;
所述第二密码运算模块根据d2和G计算得到椭圆曲线点P2=[d2-1]G,其中d2-1表示d2的逆元d2-1mod n;
所述第二通信方通过第二通信模块把P2发送给所述第一通信方;所述第一通信方通过所述第一通信模块接收P2,由所述第一密码运算模块根据d1、P2和G计算得到公钥P=[d1-1]P2-G,并通过第一通信模块公开所述公钥,其中d1-1表示d1的逆元d1-1mod n;
所述双方协同签名过程包括:
所述第一通信方通过所述第一密码运算模块对待签名消息M进行签名预处理,得到消息摘要e;然后产生随机数k1∈[1,n-1],根据k1生成第一部分签名W1,并通过所述第一通信模块将e和W1发送给所述第二通信方;
所述第二通信方通过所述第二通信模块接收e和W1,由所述第二密码运算模块产生随机数k2∈[1,n-1],根据k2生成第二部分签名W2;然后根据W1和W2计算椭圆曲线点W,此时W=[(k1+k2)*d2-1]G,W的坐标为(x1,y1);再根据x1和e计算得到第三部分签名r=(x1+e)mod n;若r=0,则由所述第二密码运算模块重新产生随机数以及计算第二部分签名和第三部分签名;
所述第二通信方通过所述第二密码运算模块,根据k2、d2和r计算得到第四部分签名s1=(k2+d2*r)mod n,并通过所述第二通信模块将s1和r发送给所述第一通信方;
所述第一通信方通过所述第一通信模块接收s1和r,再由所述第一密码运算模块根据d1、k1、s1和r计算s=(d1*(k1+s1)-r)mod n,若s≠0,所述第一通信方输出M及其数字签名(r,s);若s=0,则重新开始通信双方协同签名过程。
基于上述,所述第一通信方通过所述第一通信模块向所述第二通信方发送协同产生密钥请求,所述第二通信方通过所述第二通信模块接收到所述协同产生密钥请求后,由所述第二密码运算模块产生随机数d2∈[1,n-1],作为所述第二通信方的子私钥。
本发明相对现有技术具有实质性特点和进步,具体地说:
1、在本发明的技术方案中,通信双方独立生成各自子私钥,两个子私钥之间无任何关联,两个子私钥是真正的私钥的分量,双方均无法从双方通信传输的中间数据中获取对方私钥任何敏感信息,也无法由己方生成和获得的参数计算得到私钥。签名时,通信双方各自产生部分签名,再由双方根据消息摘要、各自子私钥等参数协同计算得到最后的签名结果,入侵任何一方都无法获取私钥伪造签名,充分保证了SM2算法私钥的安全性。在不依赖于密码硬件的软件密码模块中使用,也可以保证足够的安全性。
2、本发明技术方案与现有协同签名算法相比,在协同签名过程中,双方交互的内容少,通信数据量小,密码运算的复杂度低,能够很好地满足云计算、物联网环境中低延迟、少交互的应用需求。
附图说明
图1是本发明方法的第一个实施例的流程示意图。
图2是本发明方法的第二个实施例的流程示意图。
图3是本发明方法的第三个实施例的流程示意图。
图4是本发明方法的第四个实施例的流程示意图。
图5是本发明系统的实施例的原理框图。
具体实施方式
下面通过具体实施方式,对本发明的技术方案做进一步的详细描述。
本发明中以类似[k]G的形式表示椭圆曲线E上的点乘运算,[k]G代表点G的k倍点,其中k是正整数,G是椭圆曲线点。mod n表示模n运算。“*”表示数值的乘法运算。
本发明中对于椭圆曲线点加运算,以及数值的加法运算,使用的符号都是加号“+”。如果是椭圆曲线点相加,则“+”表示点加运算;如果是数值相加,则“+”表示数值的加法运算。
本发明中对于椭圆曲线点减运算,以及数值的减法运算,使用的符号都是减号“-”。如果是椭圆曲线点相减,则“-”表示点减运算;如果是数值相减,则“-”表示数值的减法运算。
实施例1
如图1所示,一种基于SM2算法的通信双方协同签名方法,所述方法涉及第一通信方和第二通信方,所述第一通信方和所述第二通信方共享SM2算法椭圆曲线E和E上阶为n的基点G;所述方法包括以下步骤:
一、产生双方各自子私钥和计算公钥阶段
S101、所述第一通信方产生随机数d1∈[1,n-1],作为所述第一通信方的子私钥;所述第二通信方产生随机数d2∈[1,n-1],作为所述第二通信方的子私钥;
S102、所述第二通信方根据d2和G计算得到椭圆曲线点P2=[d2-1]G,并把P2发送给所述第一通信方,其中d2-1表示d2的逆元d2-1mod n;
S103、所述第一通信方根据d1、P2和G计算得到公钥P=[d1-1]P2-G并公开所述公钥,其中d1-1表示d1的逆元d1-1mod n;
私钥d与子私钥d1、d2的关系为(1+d)-1=d1*d2 mod n。则公私钥配对一致性证明如下:
由(1+d)-1 = d1*d2 mod n,可得私钥d = (d1-1*d2-1-1)mod;
公钥P=[d1-1]P2-G
=[d1-1*d2-1]G-G
=[(d1-1*d2-1-1)]G
=[d]G
所述第一通信方和所述第二通信方均无法由己方生成和获得的参数计算得到私钥d,保证了私钥的安全。
此外,第一通信方和第二通信方的角色可以互换。
二、双方协同签名阶段
S201、所述第一通信方对待签名消息M进行签名预处理,得到消息摘要e;
签名预处理包括, 所述第一通信方使用密码杂凑函数计算所述第一通信方的杂凑值Z,再将Z与M拼接为M1,然后对M1使用杂凑函数,得到所述消息摘要e。具体可以参照SM2椭圆曲线公钥密码算法中数字签名算法部分的规定。
S202、所述第一通信方产生随机数k1∈[1,n-1],根据k1生成第一部分签名W1,并将所述消息摘要e和所述第一部分签名W1发送给所述第二通信方;
在某些情况下,消息摘要e也可以由第二通信方产生,这时第一通信方只需要把第一部分签名W1发送给所述第二通信方。
S203、所述第二通信方产生随机数k2∈[1,n-1],根据k2生成第二部分签名W2;
S204、所述第二通信方根据所述第一部分签名W1和所述第二部分签名W2计算椭圆曲线点W,此时W=[(k1+k2)*d2-1]G;W的坐标为(x1,y1),所述第二通信方根据x1和所述消息摘要e计算得到第三部分签名r=(x1+e)mod n,若r=0,则返回S203;
通过对产生双方各自子私钥和计算公钥的算法以及签名算法的设计,使得第一部分签名W1和第二部分签名W2的和W=[(k1+k2)*d2-1]G。
S205、所述第二通信方根据k2、d2和r计算得到第四部分签名s1=(k2+d2*r)mod n,并将s1和r发送给所述第一通信方;
S206、所述第一通信方根据d1、k1、s1和r计算s=(d1*(k1+s1)-r)mod n,若s=0,返回S202;
S207、所述第一通信方输出M及其数字签名(r,s)。
第一通信方产生的随机数d1、k1,以及第二通信方产生的随机数d2、k2,既可以是直接用随机数发生器产生的位于[1,n-1]之间的一个随机数,也可以由一个或多个位于[1,n-1]之间的随机数运算得到,这里的运算包括线性运算、相乘、求逆等。例如d1=(d11+…+d1i+…+d1m) mod n,或d1=(d11*…*d1i*…*d1m) mod n, 或d1=(d11*…*d1i*…*d1m)-1mod n,d1=(d11+…+d1i+…+d1m)-1 mod n等等,其中d1i∈[1,n-1],i∈[1,m],m≥1。通过这样的运算,可以进一步增强密码算法的安全性。
在通信双方通信过程中,通信双方的子私钥敏感信息得到了保护,第一通信方和第二通信方都不能得到对方的子私钥,也无法由己方生成和获得的参数计算得到私钥d。这样可以保证私钥是安全的,从而保证密码算法的安全性。
实施例2
基于与上述方法同样的发明构思,如图2所示,本实施例是所述协同签名方法的一个优选具体实施方案,与实施例1的区别在于,步骤S202、S203、S204分别为:
S202、所述第一通信方产生随机数k1∈[1,n-1],根据k1和P2计算得到第一部分签名W1=[k1]P2,并将所述消息摘要e和所述第一部分签名W1发送给所述第二通信方;
S203、所述第二通信方产生随机数k2∈[1,n-1],根据k2和P2计算得到第二部分签名W2=[k2]P2;
S204、所述第二通信方根据所述第一部分签名W1和所述第二部分签名W2计算得到椭圆曲线点W=W1+W2,W的坐标为(x1,y1);然后根据x1和所述消息摘要e计算得到第三部分签名r=(x1+e)mod n,若r=0,则返回S203。
本实施例的签名结果正确性证明如下:
令k = (k1+k2)*d2-1 mod n,k∈[1,n-1]。由(1+d)-1=d1*d2 mod n,可得
s = [d1*(k1+s1)-r] mod n
= [d1*(k1+k2+d2*r)-r] mod n
= [d1*d2((k1+k2)*d2-1+r)-r] mod n
= [(1+d)-1(k+r)-r] mod n
= (1+d)-1(k+r-r*(1+d)) mod n
= (1+d)-1(k-r*d) mod n。
由此可见,上述算法可以得到正确签名。
实施例3
基于与上述方法同样的发明构思,如图3所示,本实施例是所述协同签名方法的另一个优选具体实施方案,与实施例1的区别在于,步骤S202、S203、S204分别为:
S202、所述第一通信方产生随机数k1∈[1,n-1],根据k1和G计算得到第一部分签名W1=[k1]G,并将e和W1发送给所述第二通信方;
S203、所述第二通信方产生随机数k2∈[1,n-1],根据k2和G计算得到第二部分签名W2=[k2]G;
S204、所述第二通信方根据所述第一部分签名W1和所述第二部分签名W2计算得到椭圆曲线点W=[d2-1]W1+[d2-1]W2,W的坐标为(x1,y1);然后根据x1和e计算得到第三部分签名r=(x1+e)mod n,若r=0,则返回S203。
本实施例的签名结果正确性证明如下:
令k = (k1+k2)*d2-1 mod n,k∈[1,n-1]。由(1+d)-1=d1*d2 mod n,可得
s = [d1*(k1+s1)-r] mod n
= [d1*(k1+k2+d2*r)-r] mod n
= [d1*d2((k1+k2)*d2-1+r)-r] mod n
= [(1+d)-1(k+r)-r]mod n
= [(1+d)-1(k+r-r*(1+d))] mod n
= (1+d)-1(k-r*d) mod n。
由此可见,上述算法可以得到正确签名。
实施例4
基于与上述方法同样的发明构思,如图4所示,本实施例与实施例1的区别在于,产生通信双方各自子私钥和计算公钥阶段,包括以下步骤:
S101、所述第一通信方产生随机数d1∈[1,n-1],作为所述第一通信方的子私钥,并向所述第二通信方发送协同产生密钥请求;
S102、所述第二通信方接收到所述协同产生密钥请求后,产生随机数d2∈[1,n-1],作为所述第二通信方的子私钥;
S103、所述第二通信方根据d2和G计算得到椭圆曲线点P2=[d2-1]G,其中d2-1表示d2的逆元d2-1mod n;
S104、所述第二通信方把P2发送给所述第一通信方。
S105、所述第一通信方根据d1、P2和G计算得到公钥P=[d1-1]P2-G并公开所述公钥,其中d1-1表示d1的逆元d1-1mod n;
实施例5
如图5所示,本发明还提供一种基于SM2算法的通信双方协同签名系统,包括第一通信方和第二通信方,所述第一通信方包括第一密码运算模块和第一通信模块,所述第二通信方包括第二密码运算模块和第二通信模块,所述第一通信方和所述第二通信方通过所述第一通信模块和所述第二通信模块通信连接;所述第一通信方和所述第二通信方共享SM2算法椭圆曲线E和E上阶为n的基点G;所述第一通信方和所述第二通信方产生各自子私钥和计算公钥,在需要签名时进行双方协同签名;
所述第一通信方和所述第二通信方产生各自子私钥和计算公钥的过程包括:
所述第一密码运算模块产生随机数d1∈[1,n-1],作为所述第一通信方的子私钥,所述第二密码运算模块产生随机数d2∈[1,n-1],作为所述第二通信方的子私钥;
所述第二密码运算模块根据d2和G计算得到椭圆曲线点P2=[d2-1]G,其中d2-1表示d2的逆元d2-1mod n;
所述第二通信方通过第二通信模块把P2发送给所述第一通信方;所述第一通信方通过所述第一通信模块接收P2,由所述第一密码运算模块根据d1、P2和G计算得到公钥P=[d1-1]P2-G,并通过第一通信模块公开所述公钥,其中d1-1表示d1的逆元d1-1mod n;
所述双方协同签名过程包括:
所述第一通信方通过所述第一密码运算模块对待签名消息M进行签名预处理,得到消息摘要e;然后产生随机数k1∈[1,n-1],根据k1生成第一部分签名W1,并通过所述第一通信模块将e和W1发送给所述第二通信方;
所述第二通信方通过所述第二通信模块接收e和W1,由所述第二密码运算模块产生随机数k2∈[1,n-1],根据k2生成第二部分签名W2;然后根据W1和W2计算椭圆曲线点W,此时W=[(k1+k2)*d2-1]G,W的坐标为(x1,y1);再根据x1和e计算得到第三部分签名r=(x1+e)mod n;若r=0,则由所述第二密码运算模块重新产生随机数以及计算第二部分签名和第三部分签名;
所述第二通信方通过所述第二密码运算模块,根据k2、d2和r计算得到第四部分签名s1=(k2+d2*r)mod n,并通过所述第二通信模块将s1和r发送给所述第一通信方;
所述第一通信方通过所述第一通信模块接收s1和r,再由所述第一密码运算模块根据d1、k1、s1和r计算s=(d1*(k1+s1)-r)mod n,若s≠0,所述第一通信方输出M及其数字签名(r,s);若s=0,则重新开始通信双方协同签名过程。
本系统中,通信双方独立生成各自子私钥,两个子私钥之间无任何关联,两个子私钥是真正的私钥的分量,双方均无法从双方通信传输的中间数据中获取对方私钥任何敏感信息,双方均无法由己方生成和获得的参数计算得到私钥。只有通过双方协同运算,才能对消息进行签名操作,即使任何一通信方被入侵都不能伪造签名。
通过通信双方的协同签名过程,本发明系统充分保证了SM2算法私钥的安全性,即使在不依赖于密码硬件的软件密码模块中使用,也可以保证足够的安全性,而且在协同签名过程中,通信双方交互的内容少,通信数据量小,密码运算的复杂度低于现有协同签名算法,能够很好地满足云计算、物联网环境中低延迟、少交互的应用需求。
需要说明的是,本系统中的通信双方协同签名过程和产生通信双方各自子私钥和计算公钥阶段还可以采用上述发明方法所述实施例方案。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制;尽管参照较佳实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者对部分技术特征进行等同替换;而不脱离本发明技术方案的精神,其均应涵盖在本发明请求保护的技术方案范围当中。
Claims (9)
1.一种基于SM2算法的通信双方协同签名方法,其特征在于,所述通信双方包括第一通信方和第二通信方,所述第一通信方和所述第二通信方共享SM2算法椭圆曲线E和E上阶为n的基点G;所述方法包括以下步骤:
一、产生双方各自子私钥和计算公钥阶段
S101、所述第一通信方产生随机数d1∈[1,n-1],作为所述第一通信方的子私钥;所述第二通信方产生随机数d2∈[1,n-1],作为所述第二通信方的子私钥;
S102、所述第二通信方根据d2和G计算得到椭圆曲线点P2=[d2-1]G,并把P2发送给所述第一通信方,其中d2-1表示d2的逆元d2-1mod n;
S103、所述第一通信方根据d1、P2和G计算得到公钥P=[d1-1]P2-G并公开所述公钥,其中d1-1表示d1的逆元d1-1mod n;
二、双方协同签名阶段
S201、所述第一通信方对待签名消息M进行签名预处理,得到消息摘要e;
S202、所述第一通信方产生随机数k1∈[1,n-1],根据k1生成第一部分签名W1,并将所述消息摘要e和所述第一部分签名W1发送给所述第二通信方;
S203、所述第二通信方产生随机数k2∈[1,n-1],根据k2生成第二部分签名W2;
S204、所述第二通信方根据所述第一部分签名W1和所述第二部分签名W2计算椭圆曲线点W,此时W=[(k1+k2)*d2-1]G;W的坐标为(x1,y1),所述第二通信方根据x1和所述消息摘要e计算得到第三部分签名r=(x1+e)mod n,若r=0,则返回S203;
S205、所述第二通信方根据k2、d2和r计算得到第四部分签名s1=(k2+d2*r)mod n,并将s1和r发送给所述第一通信方;
S206、所述第一通信方根据d1、k1、s1和r计算s=(d1*(k1+s1)-r)mod n,若s=0,返回S202;
S207、所述第一通信方输出M及其数字签名(r,s)。
2.根据权利要求1所述的基于SM2算法的通信双方协同签名方法,其特征在于,步骤S202、S203、S204分别为:
S202、所述第一通信方产生随机数k1∈[1,n-1],根据k1和P2计算得到第一部分签名W1=[k1]P2,并将所述消息摘要e和所述第一部分签名W1发送给所述第二通信方;
S203、所述第二通信方产生随机数k2∈[1,n-1],根据k2和P2计算得到第二部分签名W2=[k2]P2;
S204、所述第二通信方根据所述第一部分签名W1和所述第二部分签名W2计算得到椭圆曲线点W=W1+W2,W的坐标为(x1,y1);然后根据x1和所述消息摘要e计算得到第三部分签名r=(x1+e)mod n,若r=0,则返回S203。
3.根据权利要求1所述的基于SM2算法的通信双方协同签名方法,其特征在于,步骤S202、S203、S204分别为:
S202、所述第一通信方产生随机数k1∈[1,n-1],根据k1和G计算得到第一部分签名W1=[k1]G,并将e和W1发送给所述第二通信方;
S203、所述第二通信方产生随机数k2∈[1,n-1],根据k2和G计算得到第二部分签名W2=[k2]G;
S204、所述第二通信方根据所述第一部分签名W1和所述第二部分签名W2计算得到椭圆曲线点W=[d2-1]W1+[d2-1]W2,W的坐标为(x1,y1);然后根据x1和e计算得到第三部分签名r=(x1+e)mod n,若r=0,则返回S203。
4.根据权利要求1-3中任意一项所述的基于SM2算法的通信双方协同签名方法,其特征在于,S201中的所述第一通信方对待签名消息M进行签名预处理,得到消息摘要e,包括:所述第一通信方使用密码杂凑函数计算所述第一通信方的杂凑值Z,再将Z与M拼接为M1,然后对M1使用杂凑函数,得到所述消息摘要e。
5.根据权利要求1-3中任意一项所述的基于SM2算法的通信双方协同签名方法,其特征在于,所述第一通信方产生的随机数d1、k1分别由一个或多个位于[1,n-1]之间的随机数运算得到,和/或所述第二通信方产生的随机数d2、k2分别由一个或多个位于[1,n-1]之间的随机数运算得到;所述运算包括线性运算、相乘、求逆。
6.根据权利要求1-3中任意一项所述的基于SM2算法的通信双方协同签名方法,其特征在于:所述步骤S101中,所述第一通信方向所述第二通信方发送协同产生密钥请求,所述第二通信方接收到所述协同产生密钥请求后,产生随机数d2∈[1,n-1],作为所述第二通信方的子私钥。
7.根据权利要求1-3中任意一项所述的基于SM2算法的通信双方协同签名方法,其特征在于,步骤S201、S202分别为:
S201、所述第一通信方产生随机数k1∈[1,n-1],根据k1生成第一部分签名W1,并将所述第一部分签名W1发送给所述第二通信方;
S202、所述第二通信方对待签名消息M进行签名预处理,得到消息摘要e。
8.一种基于SM2算法的通信双方协同签名系统,其特征在于,包括第一通信方和第二通信方,所述第一通信方包括第一密码运算模块和第一通信模块,所述第二通信方包括第二密码运算模块和第二通信模块,所述第一通信方和所述第二通信方通过所述第一通信模块和所述第二通信模块通信连接;所述第一通信方和所述第二通信方共享SM2算法椭圆曲线E和E上阶为n的基点G;所述第一通信方和所述第二通信方产生各自子私钥和计算公钥,在需要签名时进行双方协同签名;
所述第一通信方和所述第二通信方产生各自子私钥和计算公钥的过程包括:
所述第一密码运算模块产生随机数d1∈[1,n-1],作为所述第一通信方的子私钥,所述第二密码运算模块产生随机数d2∈[1,n-1],作为所述第二通信方的子私钥;
所述第二密码运算模块根据d2和G计算得到椭圆曲线点P2=[d2-1]G,其中d2-1表示d2的逆元d2-1mod n;
所述第二通信方通过第二通信模块把P2发送给所述第一通信方;所述第一通信方通过所述第一通信模块接收P2,由所述第一密码运算模块根据d1、P2和G计算得到公钥P=[d1-1]P2-G,并通过第一通信模块公开所述公钥,其中d1-1表示d1的逆元d1-1mod n;
所述双方协同签名过程包括:
所述第一通信方通过所述第一密码运算模块对待签名消息M进行签名预处理,得到消息摘要e;然后产生随机数k1∈[1,n-1],根据k1生成第一部分签名W1,并通过所述第一通信模块将e和W1发送给所述第二通信方;
所述第二通信方通过所述第二通信模块接收e和W1,由所述第二密码运算模块产生随机数k2∈[1,n-1],根据k2生成第二部分签名W2;然后根据W1和W2计算椭圆曲线点W,此时W=[(k1+k2)*d2-1]G,W的坐标为(x1,y1);再根据x1和e计算得到第三部分签名r=(x1+e)mod n;若r=0,则由所述第二密码运算模块重新产生随机数以及计算第二部分签名和第三部分签名;
所述第二通信方通过所述第二密码运算模块,根据k2、d2和r计算得到第四部分签名s1=(k2+d2*r)mod n,并通过所述第二通信模块将s1和r发送给所述第一通信方;
所述第一通信方通过所述第一通信模块接收s1和r,再由所述第一密码运算模块根据d1、k1、s1和r计算s=(d1*(k1+s1)-r)mod n,若s≠0,所述第一通信方输出M及其数字签名(r,s);若s=0,则重新开始通信双方协同签名过程。
9.根据权利要求8所述的基于SM2算法的通信双方协同签名系统,其特征在于:所述第一通信方通过所述第一通信模块向所述第二通信方发送协同产生密钥请求,所述第二通信方通过所述第二通信模块接收到所述协同产生密钥请求后,由所述第二密码运算模块产生随机数d2∈[1,n-1],作为所述第二通信方的子私钥。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810799350.7A CN108989047B (zh) | 2018-07-19 | 2018-07-19 | 一种基于sm2算法的通信双方协同签名方法与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810799350.7A CN108989047B (zh) | 2018-07-19 | 2018-07-19 | 一种基于sm2算法的通信双方协同签名方法与系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108989047A true CN108989047A (zh) | 2018-12-11 |
CN108989047B CN108989047B (zh) | 2021-03-02 |
Family
ID=64548844
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810799350.7A Active CN108989047B (zh) | 2018-07-19 | 2018-07-19 | 一种基于sm2算法的通信双方协同签名方法与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108989047B (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109672539A (zh) * | 2019-03-01 | 2019-04-23 | 深圳市电子商务安全证书管理有限公司 | Sm2算法协同签名及解密方法、装置及系统 |
CN110035065A (zh) * | 2019-03-12 | 2019-07-19 | 华为技术有限公司 | 数据处理方法、相关装置及计算机存储介质 |
CN110278088A (zh) * | 2019-07-18 | 2019-09-24 | 广州安研信息科技有限公司 | 一种sm2协同签名方法 |
CN110365487A (zh) * | 2019-07-19 | 2019-10-22 | 北京向芯力科技有限公司 | 一种基于sm2算法的协同签名方法与装置 |
CN110505056A (zh) * | 2019-07-19 | 2019-11-26 | 北京向芯力科技有限公司 | 一种支持可信显示的协同签名方法和装置 |
CN110535636A (zh) * | 2019-07-19 | 2019-12-03 | 北京向芯力科技有限公司 | 一种轻量级的基于sm2算法的协同签名方法与装置 |
CN110535635A (zh) * | 2019-07-19 | 2019-12-03 | 北京向芯力科技有限公司 | 一种支持信息隐藏的协同签名方法与系统 |
CN111010285A (zh) * | 2019-11-25 | 2020-04-14 | 武汉大学 | 一种适用于轻量级客户端的sm2两方协同签名方法及介质 |
CN111314089A (zh) * | 2020-02-18 | 2020-06-19 | 数据通信科学技术研究所 | 一种基于sm2的两方协同签名方法及解密方法 |
CN111739200A (zh) * | 2020-06-19 | 2020-10-02 | 广东工业大学 | 一种指纹电子锁的加密、解密认证方法和指纹电子锁 |
CN112311549A (zh) * | 2020-03-26 | 2021-02-02 | 神州融安科技(北京)有限公司 | 生成或协助签名方法、装置、系统、电子设备及存储介质 |
CN113468580A (zh) * | 2021-07-23 | 2021-10-01 | 建信金融科技有限责任公司 | 多方协同签名的方法和系统 |
CN114091001A (zh) * | 2022-01-17 | 2022-02-25 | 南京易科腾信息技术有限公司 | 协同认证方法、系统、装置及存储介质 |
CN114205081A (zh) * | 2021-12-03 | 2022-03-18 | 中国科学院大学 | 一种保护用户隐私的盲协同签名方法 |
CN114640440A (zh) * | 2020-12-16 | 2022-06-17 | 华为技术有限公司 | 一种分布式门限签名的方法和装置 |
CN115134093A (zh) * | 2022-08-30 | 2022-09-30 | 北京信安世纪科技股份有限公司 | 数字签名方法及计算设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140211938A1 (en) * | 2013-01-29 | 2014-07-31 | Certicom Corp. | Modified elliptic curve signature algorithm for message recovery |
CN104243456A (zh) * | 2014-08-29 | 2014-12-24 | 中国科学院信息工程研究所 | 适用于云计算的基于sm2算法的签名及解密方法和系统 |
CN106603246A (zh) * | 2017-01-22 | 2017-04-26 | 武汉理工大学 | 一种sm2数字签名分割生成方法及系统 |
CN107104793A (zh) * | 2017-04-12 | 2017-08-29 | 武汉理工大学 | 一种数字签名生成方法及系统 |
CN107196763A (zh) * | 2017-07-06 | 2017-09-22 | 数安时代科技股份有限公司 | Sm2算法协同签名及解密方法、装置与系统 |
-
2018
- 2018-07-19 CN CN201810799350.7A patent/CN108989047B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140211938A1 (en) * | 2013-01-29 | 2014-07-31 | Certicom Corp. | Modified elliptic curve signature algorithm for message recovery |
CN104243456A (zh) * | 2014-08-29 | 2014-12-24 | 中国科学院信息工程研究所 | 适用于云计算的基于sm2算法的签名及解密方法和系统 |
CN106603246A (zh) * | 2017-01-22 | 2017-04-26 | 武汉理工大学 | 一种sm2数字签名分割生成方法及系统 |
CN107104793A (zh) * | 2017-04-12 | 2017-08-29 | 武汉理工大学 | 一种数字签名生成方法及系统 |
CN107196763A (zh) * | 2017-07-06 | 2017-09-22 | 数安时代科技股份有限公司 | Sm2算法协同签名及解密方法、装置与系统 |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109672539B (zh) * | 2019-03-01 | 2021-11-05 | 深圳市电子商务安全证书管理有限公司 | Sm2算法协同签名及解密方法、装置及系统 |
CN109672539A (zh) * | 2019-03-01 | 2019-04-23 | 深圳市电子商务安全证书管理有限公司 | Sm2算法协同签名及解密方法、装置及系统 |
CN110035065A (zh) * | 2019-03-12 | 2019-07-19 | 华为技术有限公司 | 数据处理方法、相关装置及计算机存储介质 |
CN110278088A (zh) * | 2019-07-18 | 2019-09-24 | 广州安研信息科技有限公司 | 一种sm2协同签名方法 |
CN110535635B (zh) * | 2019-07-19 | 2022-06-17 | 北京向芯力科技有限公司 | 一种支持信息隐藏的协同签名方法与系统 |
CN110535635A (zh) * | 2019-07-19 | 2019-12-03 | 北京向芯力科技有限公司 | 一种支持信息隐藏的协同签名方法与系统 |
CN110505056A (zh) * | 2019-07-19 | 2019-11-26 | 北京向芯力科技有限公司 | 一种支持可信显示的协同签名方法和装置 |
CN110535636A (zh) * | 2019-07-19 | 2019-12-03 | 北京向芯力科技有限公司 | 一种轻量级的基于sm2算法的协同签名方法与装置 |
CN110365487A (zh) * | 2019-07-19 | 2019-10-22 | 北京向芯力科技有限公司 | 一种基于sm2算法的协同签名方法与装置 |
CN111010285A (zh) * | 2019-11-25 | 2020-04-14 | 武汉大学 | 一种适用于轻量级客户端的sm2两方协同签名方法及介质 |
CN111010285B (zh) * | 2019-11-25 | 2023-04-18 | 武汉大学 | 一种适用于轻量级客户端的sm2两方协同签名方法及介质 |
CN111314089A (zh) * | 2020-02-18 | 2020-06-19 | 数据通信科学技术研究所 | 一种基于sm2的两方协同签名方法及解密方法 |
CN111314089B (zh) * | 2020-02-18 | 2023-08-08 | 数据通信科学技术研究所 | 一种基于sm2的两方协同签名方法及解密方法 |
CN112311549A (zh) * | 2020-03-26 | 2021-02-02 | 神州融安科技(北京)有限公司 | 生成或协助签名方法、装置、系统、电子设备及存储介质 |
CN111739200A (zh) * | 2020-06-19 | 2020-10-02 | 广东工业大学 | 一种指纹电子锁的加密、解密认证方法和指纹电子锁 |
CN114640440B (zh) * | 2020-12-16 | 2023-11-17 | 华为技术有限公司 | 一种分布式门限签名的方法和装置 |
CN114640440A (zh) * | 2020-12-16 | 2022-06-17 | 华为技术有限公司 | 一种分布式门限签名的方法和装置 |
CN113468580A (zh) * | 2021-07-23 | 2021-10-01 | 建信金融科技有限责任公司 | 多方协同签名的方法和系统 |
CN114205081B (zh) * | 2021-12-03 | 2023-12-19 | 中国科学院大学 | 一种保护用户隐私的盲协同签名方法 |
CN114205081A (zh) * | 2021-12-03 | 2022-03-18 | 中国科学院大学 | 一种保护用户隐私的盲协同签名方法 |
CN114091001A (zh) * | 2022-01-17 | 2022-02-25 | 南京易科腾信息技术有限公司 | 协同认证方法、系统、装置及存储介质 |
CN115134093B (zh) * | 2022-08-30 | 2022-11-15 | 北京信安世纪科技股份有限公司 | 数字签名方法及计算设备 |
CN115134093A (zh) * | 2022-08-30 | 2022-09-30 | 北京信安世纪科技股份有限公司 | 数字签名方法及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
CN108989047B (zh) | 2021-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108989047A (zh) | 一种基于sm2算法的通信双方协同签名方法与系统 | |
Yang et al. | A zero-knowledge-proof-based digital identity management scheme in blockchain | |
CN106961336B (zh) | 一种基于sm2算法的密钥分量托管方法和系统 | |
Gao et al. | Achieving a covert channel over an open blockchain network | |
CN109088726B (zh) | 基于sm2算法的通信双方协同签名及解密方法和系统 | |
CN110971390A (zh) | 一种用于智能合约隐私保护的全同态加密方法 | |
JP7428704B2 (ja) | デジタルリソースへのアクセスを移転するための、コンピュータにより実施されるシステム及び方法 | |
CN107483212A (zh) | 一种双方协作生成数字签名的方法 | |
Williamson | The aztec protocol | |
Hassan et al. | An efficient outsourced privacy preserving machine learning scheme with public verifiability | |
Liao et al. | Analysis of a mobile payment protocol with outsourced verification in cloud server and the improvement | |
CN103444128B (zh) | 密钥pv签名 | |
Liu et al. | Privacy-preserving COVID-19 contact tracing solution based on blockchain | |
JP2023056011A (ja) | ブラインド化された帰結選択のためのブロックチェーンで実装されるセキュリティー・システムおよび方法 | |
KR20030062401A (ko) | 겹선형쌍을 이용한 개인식별정보 기반의 은닉서명 장치 및방법 | |
Feng et al. | Distributed signing protocol for IEEE P1363‐compliant identity‐based signature scheme | |
Alam et al. | A novel protocol for efficient authentication in cloud-based IoT devices | |
WO2022068358A1 (zh) | 基于信息的属性生成密钥的加密方法、装置及设备 | |
Agrawal et al. | Game-set-MATCH: Using mobile devices for seamless external-facing biometric matching | |
Engelmann et al. | SwapCT: Swap confidential transactions for privacy-preserving multi-token exchanges | |
CN110943826B (zh) | 一种基于sm2算法的拆分密钥签名方法与系统 | |
Zhu et al. | A patient-centric key management protocol for healthcare information system based on blockchain | |
Zhao et al. | Privacy preserving search services against online attack | |
GB2612310A (en) | Generating shared keys | |
Wu Jr | An efficient and effective decentralized anonymous voting system |
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 |