CN109088726B - 基于sm2算法的通信双方协同签名及解密方法和系统 - Google Patents
基于sm2算法的通信双方协同签名及解密方法和系统 Download PDFInfo
- Publication number
- CN109088726B CN109088726B CN201810799349.4A CN201810799349A CN109088726B CN 109088726 B CN109088726 B CN 109088726B CN 201810799349 A CN201810799349 A CN 201810799349A CN 109088726 B CN109088726 B CN 109088726B
- Authority
- CN
- China
- Prior art keywords
- communication
- communication party
- party
- module
- mod
- 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
- 230000006854 communication Effects 0.000 title claims abstract description 397
- 238000004891 communication Methods 0.000 title claims abstract description 396
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 50
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000009795 derivation Methods 0.000 claims description 7
- 238000004364 calculation method Methods 0.000 claims description 6
- 230000001172 regenerating effect Effects 0.000 claims description 3
- 230000001737 promoting effect Effects 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 15
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000011161 development 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
- 230000006855 networking Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 208000011580 syndromic disease Diseases 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/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/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
-
- 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
-
- 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
- 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)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Algebra (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Physics & Mathematics (AREA)
- Mobile Radio Communication Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种基于SM2算法的通信双方协同签名及解密方法和系统,涉及第一通信方和第二通信方,通信双方独立生成各自子私钥,通过协同运算产生公钥,通信双方均无法由己方生成和获得的参数计算得到私钥。只有通过通信双方协同运算,才能对消息进行签名和解密操作,入侵任何一方都无法获取私钥伪造签名,或者将秘密信息正确解密,从而充分保证了SM2算法的安全性,尤其是使用软件密码模块进行密码运算时的安全性。本发明无需引入椭圆曲线上的点减运算,只需使用SM2原有基本运算模块就可以完成,可广泛应用于电子商务、物联网、云计算系统等,对普通个人用户的隐私保护和数据安全也有非常好的促进作用。
Description
技术领域
本发明涉及信息安全和密码学应用技术领域,具体涉及一种基于SM2算法的通信双方协同签名及解密方法和系统。
背景技术
密码技术是信息安全的核心技术。椭圆曲线公钥密码(简称ECC)算法近年来有了较大的发展和广泛的应用,国家密码管理局于2010年12月17日发布了椭圆曲线公钥密码算法SM2,在我国电子商务、身份认证等应用中发挥了重要的安全保障作用。
在公钥密码体制中,保证用户私钥的安全性是一个非常重要的问题。用户的私钥通常需要在专门的密码硬件中安全存储和使用,私钥不能从密码硬件中导出。但是,随着公钥密码算法应用的普及,SM2算法在电子商务、电子政务、移动警务、移动办公等体系和应用中得到了广泛使用,在车联网、智能医疗系统、智能家居系统等物联网应用以及云计算系统中也发挥了越来越重要的作用。很多使用SM2算法的系统和终端,特别是智能移动终端中,并没有配置密码芯片或者TF卡、USBKey等形式的硬件密码模块,只能依赖于软件密码模块来完成密码运算,私钥则需要存储在用户终端本地存储介质中。虽然私钥存储时可以使用加密、PIN码等方式加以保护,仍有被窃取的可能,而且在软件密码模块进行密码运算时,内存中最终会出现明文形式的私钥,易被攻击者通过一些方式窃取。
对于这一问题,一个可行的方案是将私钥分拆成多份,分开存储在不同的终端中,当需要使用私钥进行密码运算时,各终端分别使用自己的子私钥进行密码运算,以及相互交互部分运算结果,使最后得到的密码运算结果等同于直接使用私钥进行密码运算 (数字签名或者解密) 的结果。基于这一方案已有一些算法提出来,但是有一些应用场合,例如在电子商务、车联网等系统中,既需要在移动智能终端使用软件密码模块,又对安全性有着较高需求,需要更安全可靠的通信双方协同签名以及解密算法,来保障用户数据安全。另一方面,很多算法过程引入了椭圆曲线上的点减运算,在实现时需要在SM2基本运算模块的基础上增加额外的运算模块来进行处理,给算法的实现带来了不便。
为了解决以上存在的问题,还需要寻求一种理想的技术解决方案。
发明内容
本发明的目的是针对现有技术的不足,提供一种基于SM2算法的通信双方协同签名及解密方法和系统,使通信双方独立生成各自子私钥,通过协同运算才能对消息进行签名和解密操作,通过算法的设计充分保证密码算法的安全性,并且使用SM2的基本运算模块就可以完成,不需要另外增加运算模块。
为了实现上述目的,本发明所采用的技术方案是:一种基于SM2算法的通信双方协同签名方法,所述签名方法涉及第一通信方和第二通信方,所述第一通信方和所述第二通信方共享SM2算法椭圆曲线E和E上阶为n的基点G;所述协同签名方法包括以下步骤:
一、产生通信双方各自子私钥和计算公钥阶段
S101、所述第一通信方产生随机数D1∈[1,n-1],把d1=(1+D1)-1作为所述第一通信方的子私钥,其中(1+D1)-1表示1+D1的逆元(1+D1)-1mod n;
S102、所述第一通信方根据D1和G计算得到椭圆曲线点P1=[D1]G,把P1发送给所述第二通信方;
S103、所述第二通信方产生随机数D2∈[1,n-1],把d2=(1+D2)-1作为所述第二通信方的子私钥,其中(1+D2)-1表示1+D2的逆元(1+D2)-1mod n;
S104、所述第二通信方根据D2、P1和G计算得到公钥 P=P1+[D2]G+[D2]P1,并公开所述公钥;
二、通信双方协同签名阶段
S201、所述第一通信方对待签名消息M使用预定的杂凑函数,得到消息摘要e;
S202、所述第一通信方产生随机数k1,b1∈[1,n-1],根据b1和G生成第一部分签名W1=[b1]G,并将e、W1和k1发送给所述第二通信方;
S203、所述第二通信方产生随机数k2,b2∈[1,n-1],根据b2和接收到的W1、k1计算得到椭圆曲线点W=[k2]W1+[b2k1]G,W的坐标为(x1,y1);
S204、所述第二通信方根据x1和e计算得到第二部分签名r=(x1+e) mod n,若r=0,则返回S203;
S205、所述第二通信方根据k1、k2、d2、b2和r计算得到第三部分签名s1=(k2d2)modn,第四部分签名s2=(d2(r+b2k1))mod n,并将s1、s2、r发送给所述第一通信方;
S206、所述第一通信方根据b1、d1、s1、s2和r计算s = (b1d1s1+d1s2-r)mod n,若s=0,返回S202;
S207、所述第一通信方输出M及其数字签名(r,s)。
基于上述,所述D1、D2、k1、k2、b1、b2分别由一个或多个位于[1,n-1]之间的随机数运算得到,所述运算包括线性运算、相乘和求逆。
基于上述,步骤S201、S202分别为:
S201、所述第一通信方产生随机数k1,b1∈[1,n-1],根据b1和G生成第一部分签名W1=[b1]G,并将W1和k1发送给所述第二通信方;
S202、所述第二通信方对待签名消息M使用预定的杂凑函数,得到消息摘要e。
一种基于SM2算法的通信双方协同解密方法,其特征在于:所述解密方法涉及第一通信方和第二通信方,所述第一通信方和所述第二通信方共享SM2算法椭圆曲线E和E上阶为n的基点G;设密文结构为C1||C2||C3,其中||表示拼接,所述解密方法包括以下步骤:
一、产生通信双方各自子私钥和计算公钥阶段
S101、所述第一通信方产生随机数D1∈[1,n-1],把d1=(1+D1)-1作为所述第一通信方的子私钥,其中(1+D1)-1表示1+D1的逆元(1+D1)-1mod n;
S102、所述第一通信方根据D1和G计算得到椭圆曲线点P1=[D1]G,把P1发送给所述第二通信方;
S103、所述第二通信方产生随机数D2∈[1,n-1],把d2=(1+D2)-1作为所述第二通信方的子私钥,其中(1+D2)-1表示1+D2的逆元(1+D2)-1mod n;
S104、所述第二通信方根据D2、P1和G计算得到公钥P=P1+[D2]G+[D2]P1,并公开所述公钥;
二、通信双方协同解密阶段
S201、所述第一通信方从密文结构中取出C1,将C1的数据类型转换为椭圆曲线E上的点;若C1是无穷远点,则报错并退出;
S202、所述第一通信方根据C1、D1计算椭圆曲线点Q1=D1C1 mod n,并把C1、Q1发送给所述第二通信方;
S203、所述第二通信方根据C1、D2和Q1计算Q2=(D2C1+D2Q1)mod n,并将Q2发送给所述第一通信方;
S204、所述第一通信方根据Q1和Q2计算椭圆曲线点Q=Q1+Q2,Q的坐标为(x2,y2);然后计算t=KDF(x2||y2,klen),其中KDF( )为密钥派生函数,klen为密文中C2的比特长度;若t为全0的比特串,则报错并退出;
S205、所述第一通信方从密文结构中取出C2,计算M’=C2⊕t;
S206、所述第一通信方根据M’和x2、y2计算u=Hash(x2||M’||y2),并从密文中取出C3, 其中Hash( )是密码杂凑函数;若u≠C3,则报错并退出;
S207:所述第一通信方输出明文M’。
一种基于SM2算法的通信双方协同签名系统,其特征在于,包括第一通信方和第二通信方,所述第一通信方包括第一密码运算模块和第一通信模块,所述第二通信方包括第二密码运算模块和第二通信模块,所述第一通信方和所述第二通信方通过所述第一通信模块和所述第二通信模块通信连接;所述第一通信方和所述第二通信方共享SM2算法椭圆曲线E和E上阶为n的基点G;所述第一通信方和所述第二通信方产生各自子私钥和计算公钥,在需要签名时进行通信双方协同签名;
所述第一通信方和所述第二通信方产生各自子私钥和计算公钥的过程包括:
所述第一通信方通过所述第一密码运算模块产生随机数D1∈[1,n-1],把d1=(1+D1)-1作为所述第一通信方的子私钥,其中(1+D1)-1表示1+D1的逆元(1+D1)-1mod n;然后计算椭圆曲线点P1=[D1]G,再通过所述第一通信模块把P1发送给所述第二通信方;
所述第二通信方通过第二通信模块接收P1,通过所述第二密码运算模块产生随机数D2∈[1,n-1],把d2=(1+D2)-1作为所述第二通信方的子私钥,其中(1+D2)-1表示1+D2的逆元(1+D2)-1mod n;然后计算得到公钥P=P1+[D2]G+[D2]P1,并通过第二通信模块公开所述公钥;
通信双方协同签名过程包括:
所述第一通信方通过所述第一密码运算模块对待签名消息M使用预定的杂凑函数,得到消息摘要e;然后产生随机数k1,b1∈[1,n-1],根据b1和G生成第一部分签名W1=[b1]G,并通过所述第一通信模块将e、W1和k1发送给所述第二通信方;
所述第二通信方通过所述第二通信模块接收e、W1和k1,由所述第二密码运算模块产生随机数k2,b2∈[1,n-1],根据b2和W1、k1计算得到椭圆曲线点W=[k2]W1+[b2k1]G,W的坐标为(x1,y1);然后根据x1和e计算得到第二部分签名r=(x1+e) mod n,若r=0,则由所述第二密码运算模块重新产生随机数以及计算第二部分签名;
所述第二通信方通过所述第二密码运算模块根据k1、k2、d2、b2和r计算得到第三部分签名s1=(k2d2)mod n,第四部分签名s2=(d2(r+b2k1))mod n,并通过所述第二通信模块将s1、s2、r发送给所述第一通信方;
所述第一通信方通过所述第一通信模块接收s1、s2和r,再由所述第一密码运算模块根据b1、d1、s1、s2和r计算s=(b1d1s1+d1s2-r)mod n,若s≠0,所述第一通信方通过所述第一通信模块输出M及其数字签名(r,s);若s=0,则重新开始通信双方协同签名过程。
一种基于SM2算法的通信双方协同解密系统,包括第一通信方和第二通信方,所述第一通信方包括第一密码运算模块和第一通信模块,所述第二通信方包括第二密码运算模块和第二通信模块,所述第一通信方和所述第二通信方通过所述第一通信模块和所述第二通信模块通信连接;所述第一通信方和所述第二通信方共享SM2算法椭圆曲线E和E上阶为n的基点G;所述第一通信方和所述第二通信方产生各自子私钥和计算公钥,在需要解密时进行通信双方协同解密;
所述第一通信方和所述第二通信方产生各自子私钥和计算公钥的过程包括:
所述第一通信方通过所述第一密码运算模块产生随机数D1∈[1,n-1],把d1=(1+D1)-1作为所述第一通信方的子私钥,其中(1+D1)-1表示1+D1的逆元(1+D1)-1mod n;然后计算椭圆曲线点P1=[D1]G,再通过所述第一通信模块把P1发送给所述第二通信方;
所述第二通信方通过第二通信模块接收P1,通过所述第二密码运算模块产生随机数D2∈[1,n-1],把d2=(1+D2)-1作为所述第二通信方的子私钥,其中(1+D2)-1表示1+D2的逆元(1+D2)-1mod n;然后计算得到公钥P= P1+[D2]G+[D2]P1,并通过第二通信模块公开所述公钥;
通信双方协同解密过程包括:
设密文结构为C1||C2||C3,其中||表示拼接,所述第一通信方通过所述第一密码运算模块从密文结构中取出C1,将C1的数据类型转换为椭圆曲线E上的点;若C1是无穷远点,则报错并退出;否则根据C1、D1计算椭圆曲线点Q1=D1C1 mod n,并通过所述第一通信模块把C1、Q1发送给所述第二通信方;
所述第二通信方通过所述第二通信模块接收C1、Q1,然后通过所述第二密码运算模块计算Q2=(D2C1+D2Q1)mod n,再通过所述第二通信模块把Q2发送给所述第一通信方;
所述第一通信方通过所述第一通信模块接收Q2,然后通过所述第一密码运算模块计算椭圆曲线点Q=Q1+Q2,Q的坐标为(x2,y2);再计算t=KDF(x2||y2,klen),其中KDF( )为密钥派生函数,klen为密文中C2的比特长度;若t为全0的比特串,则报错并退出,否则从密文结构中取出C2,计算M’=C2⊕t;然后根据M’和x2、y2计算u=Hash(x2||M’||y2),并从密文中取出C3,其中Hash( )是密码杂凑函数;若u≠C3,则报错并退出,否则第一通信方通过所述第一通信模块输出明文M’。
在本发明的技术方案中,通信双方独立生成各自子私钥,两个子私钥之间无任何关联,两个子私钥是真正的私钥的分量,通信双方均无法从通信双方通信传输的中间数据中获取对方私钥任何敏感信息,也无法由己方生成和获得的参数计算得到私钥。只有通过通信双方协同运算,才能对消息进行签名和解密操作,入侵任何一方都无法获取私钥伪造签名,或者将秘密信息正确解密。
与现有技术相比,本发明具有突出的实质性特点和显著的进步,具体地说:本发明技术方案通过密钥拆分的算法设计充分保证密码算法的安全性,在不依赖于密码硬件的软件密码模块中使用,也可以达到用户数据安全保密的效果;并且本方案中并未引入椭圆曲线上的点减运算,只需要使用SM2原有的基本运算模块就可以完成,不需要另外增加运算模块进行处理,给算法的实现带来了很大的便利,可以广泛应用于电子商务、移动政务、车联网、物联网、云计算系统等等,对于普通个人用户的隐私保护和数据安全也有非常好的促进作用。
附图说明
图1是本发明签名方法的一个实施例的流程示意图。
图2是本发明解密方法的一个实施例的流程示意图。
图3是本发明签名系统的一个实施例的原理框图。
图4是本发明解密系统的一个实施例的原理框图。
具体实施方式
下面通过具体实施方式,对本发明的技术方案做进一步的详细描述。
本发明中以类似[k]G的形式表示E上的点乘运算,[k]G代表点G的k倍点,k是正整数。mod n表示模n运算。表示数值的乘法运算时乘号省略,例如D1D2表示的是D1与D2相乘。
本发明中对于椭圆曲线点加运算,以及数值的加法运算,使用的符号都是加号“+”。如果是椭圆曲线点相加,则“+”表示点加运算;如果是数值相加,则“+”表示数值的加法运算。
本发明中没有引入椭圆曲线点减运算,减号“-”表示数值的减法运算。
如图1所示,本发明提供了基于SM2算法的通信双方协同签名方法的一个实施例,所述方法涉及第一通信方和第二通信方,所述第一通信方和所述第二通信方共享SM2算法椭圆曲线E和E上阶为n的基点G;所述方法包括以下步骤:
一、产生通信双方各自子私钥和计算公钥阶段
S101、所述第一通信方产生随机数D1∈[1,n-1],把d1=(1+D1)-1作为所述第一通信方的子私钥,其中(1+D1)-1表示1+D1的逆元(1+D1)-1mod n;
S102、所述第一通信方根据D1和G计算得到椭圆曲线点P1=[D1]G,把P1发送给所述第二通信方;
S103、所述第二通信方产生随机数D2∈[1,n-1],把d2=(1+D2)-1作为所述第二通信方的子私钥,其中(1+D2)-1表示1+D2的逆元(1+D2)-1mod n;
S104、所述第二通信方根据D2、P1和G计算得到公钥 P=P1+[D2]G+[D2]P1,并公开所述公钥;
私钥d与子私钥d1、d2的关系为(1+d)-1 = d1d2。则公私钥配对一致性证明如下:
由(1+d)-1 = d1d2
=(1+D1)-1(1+D2)-1
=(1+D1+D2+D1D2)-1,可得私钥d = D1+D2+D1D2;
公钥P = P1+[D2]G+[D2]P1
= [D1]G+[D2]G+[D1D2]G
= [D1+D2+D1D2]G
= [d]G
所述第一通信方和所述第二通信方均无法由己方生成和获得的参数计算得到私钥d,保证了私钥的安全。
此外,第一通信方和第二通信方的角色可以互换。
二、通信双方协同签名阶段
S201、所述第一通信方对待签名消息M使用预定的杂凑函数,得到消息摘要e;
可以先求得第一通信方的杂凑值Z,把杂凑值Z和M拼接,然后对拼接后的值使用密码杂凑函数,求得消息摘要e;具体可以参照SM2椭圆曲线公钥密码算法中数字签名算法部分的规定。
S202、所述第一通信方产生随机数k1,b1∈[1,n-1],根据b1和G生成第一部分签名W1=[b1]G,并将e、W1和k1发送给所述第二通信方;
在某些情况下,消息摘要e也可以由第二通信方产生,这时第一通信方只需要把第一部分签名W1和k1发送给所述第二通信方。
S203、所述第二通信方产生随机数k2,b2∈[1,n-1],根据b2和接收到的W1、k1计算得到椭圆曲线点W=[k2]W1+[b2k1]G,W的坐标为(x1,y1);
S204、所述第二通信方根据x1和e计算得到第二部分签名r=(x1+e) mod n,若r=0,则返回S203;
S205、所述第二通信方根据k1、k2、d2、b2和r计算得到第三部分签名s1=(k2d2)modn,第四部分签名s2=(d2(r+b2k1))mod n,并将s1、s2、r发送给所述第一通信方;
S206、所述第一通信方根据b1、d1、s1、s2和r计算s = (b1d1s1+d1s2-r)mod n,若s=0,返回S202;
S207、所述第一通信方输出M及其数字签名(r,s)。
上述第一通信方和第二通信方产生的随机数D1、D2、k1、k2、b1、b2,可以是直接产生的位于[1,n-1]之间的一个随机数,也可以由一个或多个位于[1,n-1]之间的随机数运算得到,这里的运算包括线性运算、相乘、求逆等。例如k1= (k11+…+ k1i+…+ k1m) mod n,或k1=(k11*…* k1i*…* k1m) mod n, k1=(k11*…* k1i*…* k1m)-1 mod n,k1=(k11+…+ k1i+…+k1m)-1 mod n等等,其中k1i∈[1,n-1],i∈[1,m],m≥1。通过这样的运算,可以进一步增强密码算法的安全性。
签名正确性证明如下:
由(1+d)-1=d1d2 mod n,可得
s = (b1d1s1 + d1s2-r) mod n
= (b1d1k2d2+ d1d2(r+b2k1)–r) mod n
= (d1d2b1k2 + d1d2r + d1d2k1b2 – r) mod n
= [d1d2(b1k2 + k1b2) + d1d2r –r] mod n
= [d1d2(b1k2 + k1b2) + d1d2(r - (d1d2)-1r)] mod n
= d1d2[ (b1k2 + k1b2) + r –(d1d2)-1r] mod n
= (1+d)-1[(b1k2 + k1b2) + r -(1+d)r] mod n
= (1+d)-1[(b1k2 + k1b2) - rd] mod n
= (1+d)-1(k-rd) mod n
在通信双方通信过程中,通信双方的子私钥敏感信息得到了保护,第一通信方和第二通信方都不能得到对方的子私钥,也无法由己方生成和获得的参数计算得到私钥d。这样可以保证私钥是安全的,从而保证密码算法的安全性。
基于与上述方法同样的发明构思,本发明还提供了所述基于SM2算法的通信双方协同解密方法的一个实施例,如图2所示。所述方法涉及第一通信方和第二通信方,所述第一通信方和所述第二通信方共享SM2算法椭圆曲线E和E上阶为n的基点G;设密文结构为C1||C2||C3,其中||表示拼接,所述方法包括以下步骤:
一、产生通信双方各自子私钥和计算公钥阶段
S101、所述第一通信方产生随机数D1∈[1,n-1],把d1=(1+D1)-1作为所述第一通信方的子私钥,其中(1+D1)-1表示1+D1的逆元(1+D1)-1mod n;
S102、所述第一通信方根据D1和G计算得到椭圆曲线点P1=[D1]G,把P1发送给所述第二通信方;
S103、所述第二通信方产生随机数D2∈[1,n-1],把d2=(1+D2)-1作为所述第二通信方的子私钥,其中(1+D2)-1表示1+D2的逆元(1+D2)-1mod n;
S104、所述第二通信方根据D2、P1和G计算得到公钥 P=P1+[D2]G+[D2]P1,并公开所述公钥;
二、通信双方协同解密阶段
S201、所述第一通信方从密文结构中取出C1,将C1的数据类型转换为椭圆曲线E上的点;若C1是无穷远点,则报错并退出;
S202、所述第一通信方根据C1、D1计算椭圆曲线点Q1=D1C1 mod n,并把C1、Q1发送给所述第二通信方;
S203、所述第二通信方根据C1、D2和Q1计算Q2=(D2C1+D2Q1)mod n,并将Q2发送给所述第一通信方;
S204、所述第一通信方根据Q1和Q2计算椭圆曲线点Q=Q1+Q2,Q的坐标为(x2,y2);然后计算t=KDF(x2||y2,klen),其中KDF( )为密钥派生函数,klen为密文中C2的比特长度;若t为全0的比特串,则报错并退出;
密钥派生函数的作用是从一个共享的秘密比特串中派生出密钥数据。
S205、所述第一通信方从密文结构中取出C2,计算M’=C2⊕t;
⊕表示长度相等的两个比特串按比特的异或运算。
S206、所述第一通信方根据M’和x2、y2计算u=Hash(x2||M’||y2),并从密文中取出C3, 其中Hash( )是密码杂凑函数;若u≠C3,则报错并退出;
S207:所述第一通信方输出明文M’。
要证明解密的正确性,只需要证明Q =(x2,y2)= dC1;
由Q = Q1+ Q2
= D1C1 + D2C1 + D2Q1
= D1C1 + D2C1+ D2D1C1
= (D1 + D2 + D1D2)C1
= dC1 ,即可得证。
基于与上述方法同样的发明构思,本发明还提供了所述基于SM2算法的通信双方协同签名系统的一个实施例,如图3所示。该系统包括第一通信方和第二通信方,所述第一通信方包括第一密码运算模块和第一通信模块,所述第二通信方包括第二密码运算模块和第二通信模块,所述第一通信方和所述第二通信方通过所述第一通信模块和所述第二通信模块通信连接;所述第一通信方和所述第二通信方共享SM2算法椭圆曲线E和E上阶为n的基点G;所述第一通信方和所述第二通信方产生各自子私钥和计算公钥,在需要签名时进行通信双方协同签名;
所述第一通信方和所述第二通信方产生各自子私钥和计算公钥的过程包括:
所述第一通信方通过所述第一密码运算模块产生随机数D1∈[1,n-1],把d1=(1+D1)-1作为所述第一通信方的子私钥,其中(1+D1)-1表示1+D1的逆元(1+D1)-1mod n;然后计算椭圆曲线点P1=[D1]G,再通过所述第一通信模块把P1发送给所述第二通信方;
所述第二通信方通过第二通信模块接收P1,通过所述第二密码运算模块产生随机数D2∈[1,n-1],把d2=(1+D2)-1作为所述第二通信方的子私钥,其中(1+D2)-1表示1+D2的逆元(1+D2)-1mod n;然后计算得到公钥 P=P1+[D2]G+[D2]P1,并通过第二通信模块公开所述公钥;
通信双方协同签名过程包括:
所述第一通信方通过所述第一密码运算模块对待签名消息M使用预定的杂凑函数,得到消息摘要e;然后产生随机数k1,b1∈[1,n-1],根据b1和G生成第一部分签名W1=[b1]G,并通过所述第一通信模块将e、W1和k1发送给所述第二通信方;
所述第二通信方通过所述第二通信模块接收e、W1和k1,由所述第二密码运算模块产生随机数k2,b2∈[1,n-1],根据b2和W1、k1计算得到椭圆曲线点W=[k2]W1+[b2k1]G,W的坐标为(x1,y1);然后根据x1和e计算得到第二部分签名r=(x1+e) mod n,若r=0,则由所述第二密码运算模块重新产生随机数以及计算第二部分签名;
所述第二通信方通过所述第二密码运算模块根据k1、k2、d2、b2和r计算得到第三部分签名s1=(k2d2)mod n,第四部分签名s2=(d2(r+b2k1))mod n,并通过所述第二通信模块将s1、s2、r发送给所述第一通信方;
所述第一通信方通过所述第一通信模块接收s1、s2和r,再由所述第一密码运算模块根据b1、d1、s1、s2和r计算s=(b1d1s1+d1s2-r)mod n,若s≠0,则把(r,s)作为协同签名的结果;若s=0,则重新开始通信双方协同签名过程。
如图4所示,本发明还提供所述基于SM2算法的通信双方协同解密系统的一个实施例。该系统包括第一通信方和第二通信方,所述第一通信方包括第一密码运算模块和第一通信模块,所述第二通信方包括第二密码运算模块和第二通信模块,所述第一通信方和所述第二通信方通过所述第一通信模块和所述第二通信模块通信连接;所述第一通信方和所述第二通信方共享SM2算法椭圆曲线E和E上阶为n的基点G;所述第一通信方和所述第二通信方产生各自子私钥和计算公钥,在需要解密时进行通信双方协同解密;
所述第一通信方和所述第二通信方产生各自子私钥和计算公钥的过程包括:
所述第一通信方通过所述第一密码运算模块产生随机数D1∈[1,n-1],把d1=(1+D1)-1作为所述第一通信方的子私钥,其中(1+D1)-1表示1+D1的逆元(1+D1)-1mod n;然后计算椭圆曲线点P1=[D1]G,再通过所述第一通信模块把P1发送给所述第二通信方;
所述第二通信方通过第二通信模块接收P1,通过所述第二密码运算模块产生随机数D2∈[1,n-1],把d2=(1+D2)-1作为所述第二通信方的子私钥,其中(1+D2)-1表示1+D2的逆元(1+D2)-1mod n;然后计算得到公钥P=P1+[D2]G+[D2]P1,并通过第二通信模块公开所述公钥;
通信双方协同解密过程包括:
设密文结构为C1||C2||C3,其中||表示拼接,所述第一通信方通过所述第一密码运算模块从密文结构中取出C1,将C1的数据类型转换为椭圆曲线E上的点;若C1是无穷远点,则报错并退出;否则根据C1、D1计算椭圆曲线点Q1=D1C1 mod n,并通过所述第一通信模块把C1、Q1发送给所述第二通信方;
所述第二通信方通过所述第二通信模块接收C1、Q1,然后通过所述第二密码运算模块计算Q2=(D2C1+D2Q1)mod n,再通过所述第二通信模块把Q2发送给所述第一通信方;
所述第一通信方通过所述第一通信模块接收Q2,然后通过所述第一密码运算模块计算椭圆曲线点Q=Q1+Q2,Q的坐标为(x2,y2);再计算t=KDF(x2||y2,klen),其中KDF( )为密钥派生函数,klen为密文中C2的比特长度;若t为全0的比特串,则报错并退出,否则从密文结构中取出C2,计算M’=C2⊕t;然后根据M’和x2、y2计算u=Hash(x2||M’||y2),并从密文中取出C3,其中Hash( )是密码杂凑函数;若u≠C3,则报错并退出,否则第一通信方通过所述第一通信模块输出明文M’。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制;尽管参照较佳实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者对部分技术特征进行等同替换;而不脱离本发明技术方案的精神,其均应涵盖在本发明请求保护的技术方案范围当中。
Claims (6)
1.一种基于SM2算法的通信双方协同签名方法,其特征在于:所述签名方法涉及第一通信方和第二通信方,所述第一通信方和所述第二通信方共享SM2算法椭圆曲线E和E上阶为n的基点G;所述协同签名方法包括以下步骤:
一、产生通信双方各自子私钥和计算公钥阶段
S101、所述第一通信方产生随机数D1∈[1,n-1],把d1=(1+D1)-1作为所述第一通信方的子私钥,其中(1+D1)-1表示1+D1的逆元(1+D1)-1mod n;
S102、所述第一通信方根据D1和G计算得到椭圆曲线点P1=[D1]G,把P1发送给所述第二通信方;
S103、所述第二通信方产生随机数D2∈[1,n-1],把d2=(1+D2)-1作为所述第二通信方的子私钥,其中(1+D2)-1表示1+D2的逆元(1+D2)-1mod n;
S104、所述第二通信方根据D2、P1和G计算得到公钥P=P1+[D2]G+[D2]P1,并公开所述公钥;
二、通信双方协同签名阶段
S201、所述第一通信方对待签名消息M使用预定的杂凑函数,得到消息摘要e;
S202、所述第一通信方产生随机数k1,b1∈[1,n-1],根据b1和G生成第一部分签名W1=[b1]G,并将e、W1和k1发送给所述第二通信方;
S203、所述第二通信方产生随机数k2,b2∈[1,n-1],根据b2和接收到的W1、k1计算得到椭圆曲线点W=[k2]W1+[b2k1]G,W的坐标为(x1,y1);
S204、所述第二通信方根据x1和e计算得到第二部分签名r=(x1+e) mod n,若r=0,则返回S203;
S205、所述第二通信方根据k1、k2、d2、b2和r计算得到第三部分签名s1=(k2d2)mod n,第四部分签名s2=(d2(r+b2k1))mod n,并将s1、s2、r发送给所述第一通信方;
S206、所述第一通信方根据b1、d1、s1、s2和r计算s = (b1d1s1+d1s2-r)mod n,若s=0,返回S202;
S207、所述第一通信方输出M及其数字签名(r,s);
其中,以[k]G的形式表示E上的点乘运算,[k]G代表点G的k倍点,k是正整数;mod n表示模n运算;表示数值的乘法运算时乘号省略;对于椭圆曲线点加运算,以及数值的加法运算,使用的符号都是加号“+”,如果是椭圆曲线点相加,则“+”表示点加运算,如果是数值相加,则“+”表示数值的加法运算;减号“-”表示数值的减法运算。
2.根据权利要求1所述的基于SM2算法的通信双方协同签名方法,其特征在于,所述D1、D2、k1、k2、b1、b2分别由一个或多个位于[1,n-1]之间的随机数运算得到,所述运算包括线性运算、相乘和求逆。
3.根据权利要求1或2所述的基于SM2算法的通信双方协同签名方法,其特征在于,步骤S201、S202分别为:
S201、所述第一通信方产生随机数k1,b1∈[1,n-1],根据b1和G生成第一部分签名W1=[b1]G,并将W1和k1发送给所述第二通信方;
S202、所述第二通信方对待签名消息M使用预定的杂凑函数,得到消息摘要e。
4.一种基于SM2算法的通信双方协同解密方法,其特征在于:所述解密方法涉及第一通信方和第二通信方,所述第一通信方和所述第二通信方共享SM2算法椭圆曲线E和E上阶为n的基点G;设密文结构为C1||C2||C3,其中||表示拼接,所述解密方法包括以下步骤:
一、产生通信双方各自子私钥和计算公钥阶段
S101、所述第一通信方产生随机数D1∈[1,n-1],把d1=(1+D1)-1作为所述第一通信方的子私钥,其中(1+D1)-1表示1+D1的逆元(1+D1)-1mod n;
S102、所述第一通信方根据D1和G计算得到椭圆曲线点P1=[D1]G,把P1发送给所述第二通信方;
S103、所述第二通信方产生随机数D2∈[1,n-1],把d2=(1+D2)-1作为所述第二通信方的子私钥,其中(1+D2)-1表示1+D2的逆元(1+D2)-1mod n;
S104、所述第二通信方根据D2、P1和G计算得到公钥P=P1+[D2]G+[D2]P1,并公开所述公钥;
二、通信双方协同解密阶段
S201、所述第一通信方从密文结构中取出C1,将C1的数据类型转换为椭圆曲线E上的点;若C1是无穷远点,则报错并退出;
S202、所述第一通信方根据C1、D1计算椭圆曲线点Q1=D1C1 mod n,并把C1、Q1发送给所述第二通信方;
S203、所述第二通信方根据C1、D2和Q1计算Q2=(D2C1+D2Q1)mod n,并将Q2发送给所述第一通信方;
S204、所述第一通信方根据Q1和Q2计算椭圆曲线点Q=Q1+Q2,Q的坐标为(x2,y2);然后计算t=KDF(x2||y2,klen),其中KDF( )为密钥派生函数,klen为密文中C2的比特长度;若t为全0的比特串,则报错并退出;
S205、所述第一通信方从密文结构中取出C2,计算M’=C2⊕t;
S206、所述第一通信方根据M’和x2、y2计算u=Hash(x2||M’||y2),并从密文中取出C3, 其中Hash( )是密码杂凑函数;若u≠C3,则报错并退出;
S207:所述第一通信方输出明文M’;
其中,以[k]G的形式表示E上的点乘运算,[k]G代表点G的k倍点,k是正整数;mod n表示模n运算;表示数值的乘法运算时乘号省略;对于椭圆曲线点加运算,以及数值的加法运算,使用的符号都是加号“+”,如果是椭圆曲线点相加,则“+”表示点加运算,如果是数值相加,则“+”表示数值的加法运算;减号“-”表示数值的减法运算。
5.一种基于SM2算法的通信双方协同签名系统,其特征在于,包括第一通信方和第二通信方,所述第一通信方包括第一密码运算模块和第一通信模块,所述第二通信方包括第二密码运算模块和第二通信模块,所述第一通信方和所述第二通信方通过所述第一通信模块和所述第二通信模块通信连接;所述第一通信方和所述第二通信方共享SM2算法椭圆曲线E和E上阶为n的基点G;所述第一通信方和所述第二通信方产生各自子私钥和计算公钥,在需要签名时进行通信双方协同签名;
所述第一通信方和所述第二通信方产生各自子私钥和计算公钥的过程包括:
所述第一通信方通过所述第一密码运算模块产生随机数D1∈[1,n-1],把d1=(1+D1)-1作为所述第一通信方的子私钥,其中(1+D1)-1表示1+D1的逆元(1+D1)-1mod n;然后计算椭圆曲线点P1=[D1]G,再通过所述第一通信模块把P1发送给所述第二通信方;
所述第二通信方通过第二通信模块接收P1,通过所述第二密码运算模块产生随机数D2∈[1,n-1],把d2=(1+D2)-1作为所述第二通信方的子私钥,其中(1+D2)-1表示1+D2的逆元(1+D2)-1mod n;然后计算得到公钥P=P1+[D2]G+[D2]P1,并通过第二通信模块公开所述公钥;
通信双方协同签名过程包括:
所述第一通信方通过所述第一密码运算模块对待签名消息M使用预定的杂凑函数,得到消息摘要e;然后产生随机数k1,b1∈[1,n-1],根据b1和G生成第一部分签名W1=[b1]G,并通过所述第一通信模块将e、W1和k1发送给所述第二通信方;
所述第二通信方通过所述第二通信模块接收e、W1和k1,由所述第二密码运算模块产生随机数k2,b2∈[1,n-1],根据b2和W1、k1计算得到椭圆曲线点W=[k2]W1+[b2k1]G,W的坐标为(x1,y1);然后根据x1和e计算得到第二部分签名r=(x1+e) mod n,若r=0,则由所述第二密码运算模块重新产生随机数以及计算第二部分签名;
所述第二通信方通过所述第二密码运算模块根据k1、k2、d2、b2和r计算得到第三部分签名s1=(k2d2)mod n,第四部分签名s2=(d2(r+b2k1))mod n,并通过所述第二通信模块将s1、s2、r发送给所述第一通信方;
所述第一通信方通过所述第一通信模块接收s1、s2和r,再由所述第一密码运算模块根据b1、d1、s1、s2和r计算s=(b1d1s1+d1s2-r)mod n,若s≠0,所述第一通信方通过所述第一通信模块输出M及其数字签名(r,s);若s=0,则重新开始通信双方协同签名过程;
其中,以[k]G的形式表示E上的点乘运算,[k]G代表点G的k倍点,k是正整数;mod n表示模n运算;表示数值的乘法运算时乘号省略;对于椭圆曲线点加运算,以及数值的加法运算,使用的符号都是加号“+”,如果是椭圆曲线点相加,则“+”表示点加运算,如果是数值相加,则“+”表示数值的加法运算;减号“-”表示数值的减法运算。
6.一种基于SM2算法的通信双方协同解密系统,其特征在于,包括第一通信方和第二通信方,所述第一通信方包括第一密码运算模块和第一通信模块,所述第二通信方包括第二密码运算模块和第二通信模块,所述第一通信方和所述第二通信方通过所述第一通信模块和所述第二通信模块通信连接;所述第一通信方和所述第二通信方共享SM2算法椭圆曲线E和E上阶为n的基点G;所述第一通信方和所述第二通信方产生各自子私钥和计算公钥,在需要解密时进行通信双方协同解密;
所述第一通信方和所述第二通信方产生各自子私钥和计算公钥的过程包括:
所述第一通信方通过所述第一密码运算模块产生随机数D1∈[1,n-1],把d1=(1+D1)-1作为所述第一通信方的子私钥,其中(1+D1)-1表示1+D1的逆元(1+D1)-1mod n;然后计算椭圆曲线点P1=[D1]G,再通过所述第一通信模块把P1发送给所述第二通信方;
所述第二通信方通过第二通信模块接收P1,通过所述第二密码运算模块产生随机数D2∈[1,n-1],把d2=(1+D2)-1作为所述第二通信方的子私钥,其中(1+D2)-1表示1+D2的逆元(1+D2)-1mod n;然后计算得到公钥P=P1+[D2]G+[D2]P1,并通过第二通信模块公开所述公钥;
通信双方协同解密过程包括:
设密文结构为C1||C2||C3,其中||表示拼接,所述第一通信方通过所述第一密码运算模块从密文结构中取出C1,将C1的数据类型转换为椭圆曲线E上的点;若C1是无穷远点,则报错并退出;否则根据C1、D1计算椭圆曲线点Q1=D1C1 mod n,并通过所述第一通信模块把C1、Q1发送给所述第二通信方;
所述第二通信方通过所述第二通信模块接收C1、Q1,然后通过所述第二密码运算模块计算Q2=(D2C1+D2Q1)mod n,再通过所述第二通信模块把Q2发送给所述第一通信方;
所述第一通信方通过所述第一通信模块接收Q2,然后通过所述第一密码运算模块计算椭圆曲线点Q=Q1+Q2,Q的坐标为(x2,y2);再计算t=KDF(x2||y2,klen),其中KDF( )为密钥派生函数,klen为密文中C2的比特长度;若t为全0的比特串,则报错并退出,否则从密文结构中取出C2,计算M’=C2⊕t;然后根据M’和x2、y2计算u=Hash(x2||M’||y2),并从密文中取出C3,其中Hash( )是密码杂凑函数;若u≠C3,则报错并退出,否则第一通信方通过所述第一通信模块输出明文M’;
其中,以[k]G的形式表示E上的点乘运算,[k]G代表点G的k倍点,k是正整数;mod n表示模n运算;表示数值的乘法运算时乘号省略;对于椭圆曲线点加运算,以及数值的加法运算,使用的符号都是加号“+”,如果是椭圆曲线点相加,则“+”表示点加运算,如果是数值相加,则“+”表示数值的加法运算;减号“-”表示数值的减法运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810799349.4A CN109088726B (zh) | 2018-07-19 | 2018-07-19 | 基于sm2算法的通信双方协同签名及解密方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810799349.4A CN109088726B (zh) | 2018-07-19 | 2018-07-19 | 基于sm2算法的通信双方协同签名及解密方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109088726A CN109088726A (zh) | 2018-12-25 |
CN109088726B true CN109088726B (zh) | 2021-01-26 |
Family
ID=64838226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810799349.4A Active CN109088726B (zh) | 2018-07-19 | 2018-07-19 | 基于sm2算法的通信双方协同签名及解密方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109088726B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111447065B (zh) * | 2019-01-16 | 2021-03-09 | 中国科学院软件研究所 | 一种主动安全的sm2数字签名两方生成方法 |
CN109672539B (zh) * | 2019-03-01 | 2021-11-05 | 深圳市电子商务安全证书管理有限公司 | Sm2算法协同签名及解密方法、装置及系统 |
CN110365487A (zh) * | 2019-07-19 | 2019-10-22 | 北京向芯力科技有限公司 | 一种基于sm2算法的协同签名方法与装置 |
CN110505056B (zh) * | 2019-07-19 | 2022-04-15 | 北京向芯力科技有限公司 | 一种支持可信显示的协同签名方法和装置 |
CN112713989B (zh) * | 2019-10-25 | 2023-01-24 | 航天信息股份有限公司 | 一种解密方法及装置 |
CN110601841B (zh) * | 2019-11-01 | 2022-06-14 | 成都卫士通信息产业股份有限公司 | Sm2协同签名及解密方法、装置 |
CN110943828B (zh) * | 2019-11-05 | 2021-01-08 | 武汉理工大学 | 秘密数运算转换方法及系统 |
CN110971405B (zh) * | 2019-12-06 | 2022-06-14 | 支付宝(杭州)信息技术有限公司 | 多方协同的sm2签名、解密方法及其系统 |
CN111130804B (zh) * | 2019-12-27 | 2022-09-06 | 上海市数字证书认证中心有限公司 | 一种基于sm2算法的协同签名方法及装置、系统、介质 |
CN111314089B (zh) * | 2020-02-18 | 2023-08-08 | 数据通信科学技术研究所 | 一种基于sm2的两方协同签名方法及解密方法 |
CN111355582A (zh) * | 2020-03-03 | 2020-06-30 | 成都天瑞芯安科技有限公司 | 基于sm2算法的两方联合签名和解密的方法及系统 |
CN112311549A (zh) * | 2020-03-26 | 2021-02-02 | 神州融安科技(北京)有限公司 | 生成或协助签名方法、装置、系统、电子设备及存储介质 |
CN113630240B (zh) * | 2020-05-09 | 2024-04-26 | 成都天瑞芯安科技有限公司 | 一种拟态安全密码计算系统 |
CN113765670B (zh) * | 2020-06-03 | 2024-01-26 | 成都天瑞芯安科技有限公司 | 无证书的可信任密钥生成方法与系统 |
CN112131596B (zh) * | 2020-09-30 | 2021-11-09 | 北京海泰方圆科技股份有限公司 | 加解密方法、设备及存储介质 |
CN113158258B (zh) * | 2021-03-31 | 2022-02-11 | 郑州信大捷安信息技术股份有限公司 | 一种基于椭圆曲线的协同签名方法、装置和系统 |
CN112910645A (zh) * | 2021-04-13 | 2021-06-04 | 三未信安科技股份有限公司 | 一种基于椭圆曲线的分布式协同解密方法 |
CN113300841B (zh) * | 2021-05-25 | 2022-11-25 | 贵州大学 | 一种基于身份的协同签名方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104243456A (zh) * | 2014-08-29 | 2014-12-24 | 中国科学院信息工程研究所 | 适用于云计算的基于sm2算法的签名及解密方法和系统 |
US9430655B1 (en) * | 2012-12-28 | 2016-08-30 | Emc Corporation | Split tokenization |
CN106506156A (zh) * | 2016-12-15 | 2017-03-15 | 北京三未信安科技发展有限公司 | 一种基于椭圆曲线的分布式门限签名方法 |
CN106685651A (zh) * | 2016-12-22 | 2017-05-17 | 北京信安世纪科技有限公司 | 一种客户端和服务端协作生成数字签名的方法 |
CN106850198A (zh) * | 2017-01-16 | 2017-06-13 | 武汉理工大学 | 基于多装置协同的sm2数字签名生成方法及系统 |
CN107196763A (zh) * | 2017-07-06 | 2017-09-22 | 数安时代科技股份有限公司 | Sm2算法协同签名及解密方法、装置与系统 |
CN107483212A (zh) * | 2017-08-15 | 2017-12-15 | 武汉信安珞珈科技有限公司 | 一种双方协作生成数字签名的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006077651A1 (ja) * | 2005-01-24 | 2006-07-27 | Fujitsu Limited | 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置 |
-
2018
- 2018-07-19 CN CN201810799349.4A patent/CN109088726B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9430655B1 (en) * | 2012-12-28 | 2016-08-30 | Emc Corporation | Split tokenization |
CN104243456A (zh) * | 2014-08-29 | 2014-12-24 | 中国科学院信息工程研究所 | 适用于云计算的基于sm2算法的签名及解密方法和系统 |
CN106506156A (zh) * | 2016-12-15 | 2017-03-15 | 北京三未信安科技发展有限公司 | 一种基于椭圆曲线的分布式门限签名方法 |
CN106685651A (zh) * | 2016-12-22 | 2017-05-17 | 北京信安世纪科技有限公司 | 一种客户端和服务端协作生成数字签名的方法 |
CN106850198A (zh) * | 2017-01-16 | 2017-06-13 | 武汉理工大学 | 基于多装置协同的sm2数字签名生成方法及系统 |
CN107196763A (zh) * | 2017-07-06 | 2017-09-22 | 数安时代科技股份有限公司 | Sm2算法协同签名及解密方法、装置与系统 |
CN107483212A (zh) * | 2017-08-15 | 2017-12-15 | 武汉信安珞珈科技有限公司 | 一种双方协作生成数字签名的方法 |
Non-Patent Citations (1)
Title |
---|
"SM2椭圆曲线门限密码算法";尚铭 等;《密码学报》;20140415;第2卷(第1期);第155–166页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109088726A (zh) | 2018-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109088726B (zh) | 基于sm2算法的通信双方协同签名及解密方法和系统 | |
CN108667626B (zh) | 安全的两方协作sm2签名方法 | |
CN108989047B (zh) | 一种基于sm2算法的通信双方协同签名方法与系统 | |
CN109309569B (zh) | 基于sm2算法的协同签名的方法、装置及存储介质 | |
CN111314089B (zh) | 一种基于sm2的两方协同签名方法及解密方法 | |
CN107707358B (zh) | 一种ec-kcdsa数字签名生成方法及系统 | |
CN107623570B (zh) | 一种基于加法密钥分割的sm2签名方法 | |
CA2054037C (en) | Cryptographic system allowing encrypted communication between users with a secure mutual cipher key determined without user interaction | |
CN111049650B (zh) | 一种基于sm2算法的协同解密方法及装置、系统、介质 | |
CN107395368B (zh) | 无介质环境中的数字签名方法及解封装方法与解密方法 | |
CN104270249B (zh) | 一种从无证书环境到基于身份环境的签密方法 | |
CN107483191B (zh) | 一种sm2算法密钥分割签名系统及方法 | |
CN107425971B (zh) | 无证书的数据加/解密方法和装置、终端 | |
US8422670B2 (en) | Password authentication method | |
CN104301108B (zh) | 一种从基于身份环境到无证书环境的签密方法 | |
CN112422288B (zh) | 一种抗能量分析攻击的基于sm2算法的两方协同签名方法 | |
CN110535626B (zh) | 基于身份的量子通信服务站保密通信方法和系统 | |
CN110138567A (zh) | 一种基于ecdsa的协同签名方法 | |
CN112118113A (zh) | 一种基于sm2算法的多方协同群签名方法及装置、系统、介质 | |
CN115499126A (zh) | 基于sm2密钥分散存储的密钥对生成方法、协作签名方法、解密方法、装置和介质 | |
US20150006900A1 (en) | Signature protocol | |
CN113132104A (zh) | 一种主动安全的ecdsa数字签名两方生成方法 | |
Zhang et al. | Robust and efficient password authenticated key agreement with user anonymity for session initiation protocol‐based communications | |
CN111756537B (zh) | 基于sm2标准的两方协同解密方法、系统及存储介质 | |
CN108055134B (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 | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: A Collaborative Signature and Decryption Method and System for Communication Parties Based on SM2 Algorithm Granted publication date: 20210126 Pledgee: Bank of Zhengzhou Co.,Ltd. Zhongyuan Science and Technology City Sub branch Pledgor: ZHENGZHOU XINDA JIEAN INFORMATION TECHNOLOGY Co.,Ltd. Registration number: Y2024980007004 |
|
PE01 | Entry into force of the registration of the contract for pledge of patent right |