CN115037441B - 一种基于同态运算的sm2协同签名方法、装置及系统 - Google Patents
一种基于同态运算的sm2协同签名方法、装置及系统 Download PDFInfo
- Publication number
- CN115037441B CN115037441B CN202210803789.9A CN202210803789A CN115037441B CN 115037441 B CN115037441 B CN 115037441B CN 202210803789 A CN202210803789 A CN 202210803789A CN 115037441 B CN115037441 B CN 115037441B
- Authority
- CN
- China
- Prior art keywords
- signature
- client
- random number
- homomorphic
- server
- 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 34
- 238000004364 calculation method Methods 0.000 claims abstract description 37
- 125000004123 n-propyl group Chemical group [H]C([H])([H])C([H])([H])C([H])([H])* 0.000 claims description 9
- 230000002452 interceptive effect Effects 0.000 abstract description 8
- 238000007792 addition Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
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/008—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于同态运算的SM2协同签名方法、装置及系统,该方法一部分运行在客户端,另一部分运行在服务端,两端分别执行的步骤,在客户端与服务端协同签名的过程中,均有助于通过对中间数据进行加密保护,增强签名的安全性。该系统通过客户端与服务端协同签名的方式,隐藏交互计算中的私钥,达到既保护签名私钥又摆脱硬件依赖的目的;通过同态算法保护签名私钥,无需软盾存储即可保证私钥的安全;通过对中间数据进行加密保护,增强签名的安全性。
Description
技术领域
本发明涉及信息安全技术领域,特别涉及一种基于同态运算的SM2协同签名方法、装置及系统。
背景技术
专利文献公开号:CN109274503A,《分布式协同签名方法及分布式协同签名装置、软盾系统》:公开了一种分布式协同签名方法及分布式协同签名装置、软盾系统,该分布式协同签名方法,包括:根据存储的椭圆曲线参数产生第一随机数和第二随机数,计算多个分割密钥,并计算公钥;对多个分割密钥进行分布存储,根据存储区域分为第一分割密钥和第二分割密钥;根据发送消息生成摘要哈希,根据椭圆曲线参数生成第一椭圆点,并根据摘要哈希、第一椭圆点计算第一签名;分别根据第一分割密钥和第二分割密钥对第一签名进行加密,计算第二签名;组合第一签名和第二签名,得到完整签名。本发明的签名方法及签名装置、软盾系统生成分割密钥并在通信双方进行分布存储,实现协同签名,通信双方均无法获取到对方私钥的任何信息,提高了密钥的安全性。
但是,上述现有技术签名方案的中间密钥数据均存储于软盾硬件中,在通信信道不安全的情况下,容易受到中间人攻击,泄露中间交互数据,降低签名安全性。此时,需要一种更加安全的签名算法。
发明内容
本发明针对传统SM2签名算法具体应用过程中依赖硬件设备的弊端,提出了一种基于同态运算的SM2协同签名方法、装置及系统,通过客户端与服务端协同签名的方式,隐藏交互计算中的私钥,达到既保护签名私钥又摆脱硬件依赖的目的。
为实现上述目的,本发明采取的技术方案为:
第一方面,本发明提供一种基于同态运算的SM2协同签名方法,应用于客户端A,该方法包括以下步骤:
S1、将ZA与M的拼接值进行SM3哈希计算得哈希值e;所述M为待签名消息;所述ZA为关于所述客户端A的可辨别标识、部分椭圆曲线系统参数和所述客户端A公钥的杂凑值;
S2、所述客户端A利用随机数发生器产生[1,n-1]区间的第一随机数K1和第二随机数R1,其中n为椭圆曲线点群的阶;
S3、根据第一随机数K1和第二随机数R1,计算椭圆曲线点(x1,y1)=[K1·(R1+1)-1]G,令k=K1·(R1+1)-1;
S4、计算部分签名值Pr=(e+x1)mod n,若Pr=0或Pr+k=n,则返回步骤S2;
S5、通过传统Paillier算法生成公钥PaPu和私钥PaPr,利用公钥对第一随机数K1和第二随机数R1进行同态加密,令SK1=E(K1),SR1=E(R1),其中E(·)为同态加密运算;
S6、将所述客户端A生成的SK1,SR1,部分签名值Pr和同态公钥PaPu发送给服务端B。
进一步地,还包括:
S10、接收所述服务端B生成的中间签名数据B1,计算B2=D(B1),Ps=(B2-Pr)modn,若Ps≠0并且Ps≠n-Pr,则签名值为(Pr,Ps),其中D(·)为同态解密运算,签名私钥值为PdA=[RO·(R1+1)]-1-1。
本实施例中,上述客户端A中执行的步骤,在客户端与服务端协同签名的过程中,有助于通过对中间数据进行加密保护,增强签名的安全性。
第二方面,本发明实施例还提供一种基于同态运算的SM2协同签名方法,应用于服务端B,该方法包括以下步骤:
S7、所述服务端B利用随机数发生器产生[1,n-1]区间的第三随机数R0;
S8、接收所述客户端A发送的SK1,SR1,部分签名值Pr和同态公钥PaPu,并根据所述第三随机数R0,计算生成服务端B签名数据B1;
S9、将所述服务端B生成的中间签名数据B1返回至客户端A。
进一步地,计算服务端B签名数据如下:
B1=(R0⊙SK1)⊕(R0⊙E(Pr))⊕((R0·Pr)⊙SR1)
其中,⊕表示基于Paillier算法同态加密的密文相加,其解密后对应明文相加的结果;⊙表示基于Paillier算法同态加密中的明文与密文相乘运算,其对应多个同态密文相加。
本实施例中,上述服务端B中执行的步骤,在客户端与服务端协同签名的过程中,有助于通过对中间数据进行加密保护,增强签名的安全性。
第三方面,本发明实施例还提供一种基于同态运算的SM2协同签名方法,应用于客户端A和服务端B的数据交互过程,该方法包括以下步骤:
S1、将ZA与M的拼接值进行SM3哈希计算得哈希值e;所述M为待签名消息;所述ZA为关于所述客户端A的可辨别标识、部分椭圆曲线系统参数和所述客户端A公钥的杂凑值;
S2、所述客户端A利用随机数发生器产生[1,n-1]区间的第一随机数K1和第二随机数R1,其中n为椭圆曲线点群的阶;
S3、根据第一随机数K1和第二随机数R1,计算椭圆曲线点(x1,y1)=[K1·(R1+1)-1]G,令k=K1·(R1+1)-1;
S4、计算部分签名值Pr=(e+x1)mod n,若Pr=0或Pr+k=n,则返回步骤S2;
S5、通过传统Paillier算法生成公钥PaPu和私钥PaPr,利用公钥对第一随机数K1和第二随机数R1进行同态加密,令SK1=E(K1),SR1=E(R1),其中E(·)为同态加密运算;
S6、将所述客户端A生成的SK1,SR1,部分签名值Pr和同态公钥PaPu发送给服务端B;
S7、所述服务端B利用随机数发生器产生[1,n-1]区间的第三随机数R0;
S8、接收所述客户端A发送的SK1,SR1,部分签名值Pr和同态公钥PaPu,并根据所述第三随机数R0,计算生成服务端B签名数据B1;
S9、将所述服务端B生成的中间签名数据B1返回至客户端A;
S10、接收所述服务端B生成的中间签名数据B1,计算B2=D(B1),Ps=(B2-Pr)modn,若Ps≠0并且Ps≠n-Pr,则签名值为(Pr,Ps),其中D(·)为同态解密运算,签名私钥值为PdA=[RO·(R1+1)]-1-1。
本实施例中,该方法通过客户端与服务端协同签名的方式,隐藏交互计算中的私钥,达到既保护签名私钥又摆脱硬件依赖的目的;通过同态算法保护签名私钥,无需软盾存储即可保证私钥的安全;通过对中间数据进行加密保护,增强签名的安全性。
第四方面,本发明实施例还提供一种基于同态运算的SM2协同签名装置,包括:
哈希计算模块,用于将ZA与M的拼接值进行SM3哈希计算得哈希值e;所述M为待签名消息;所述ZA为关于所述客户端A的可辨别标识、部分椭圆曲线系统参数和所述客户端A公钥的杂凑值;
椭圆计算模块,用于所述客户端A利用随机数发生器产生[1,n-1]区间的第一随机数K1和第二随机数R1,其中n为椭圆曲线点群的阶;根据第一随机数K1和第二随机数R1,计算椭圆曲线点(x1,y1)=[K1·(R1+1)-1]G,令k=K1·(R1+1)-1;
客户端签名计算模块,用于计算部分签名值Pr=(e+x1)modn,若Pr=0或Pr+k=n,则返回所述椭圆计算模块;
客户端同态加密模块,用于通过传统Paillier算法生成公钥PaPu和私钥PaPr,利用公钥对第一随机数K1和第二随机数R1进行同态加密,令SK1=E(K1),SR1=E(R1),其中E(·)为同态加密运算;
客户端发送模块,用于将所述客户端A生成的SK1,SR1,部分签名值Pr和同态公钥PaPu发送给服务端B。
进一步地,还包括:
协同签名模块,用于接收所述服务端B生成的中间签名数据B1,计算B2=D(B1),Ps=(B2-Pr)mod n,若Ps≠0并且Ps≠n-Pr,则签名值为(Pr,Ps),其中D(·)为同态解密运算,签名私钥值为PdA=[RO·(R1+1)]-1-1。
本实施例中,上述客户端A中所包括的模块,在客户端与服务端协同签名的过程中,有助于通过对中间数据进行加密保护,增强签名的安全性。
第五方面,本发明实施例还提供一种基于同态运算的SM2协同签名装置,包括:
随机数生成模块,用于所述服务端B利用随机数发生器产生[1,n-1]区间的第三随机数R0;
服务端签名计算模块,用于接收所述客户端A发送的SK1,SR1,部分签名值Pr和同态公钥PaPu,并根据所述第三随机数R0,计算生成服务端B签名数据B1;
服务端发送模块,用于将所述服务端B生成的中间签名数据B1返回至客户端A。
进一步地,所述服务端签名计算模块中,计算服务端B签名数据如下:
B1=(R0⊙SK1)⊕(R0⊙E(Pr))⊕((R0·Pr)⊙SR1)
其中,⊕表示基于Paillier算法同态加密的密文相加,其解密后对应明文相加的结果;⊙表示基于Paillier算法同态加密中的明文与密文相乘运算,其对应多个同态密文相加。
本实施例中,上述服务端B中所包括的模块,在客户端与服务端协同签名的过程中,有助于通过对中间数据进行加密保护,增强签名的安全性。
第六方面,本发明实施例还提供一种基于同态运算的SM2协同签名系统,包括:客户端A和服务端B;
其中,所述客户端A包括:
哈希计算模块,用于将ZA与M的拼接值进行SM3哈希计算得哈希值e;所述M为待签名消息;所述ZA为关于所述客户端A的可辨别标识、部分椭圆曲线系统参数和所述客户端A公钥的杂凑值;
椭圆计算模块,用于所述客户端A利用随机数发生器产生[1,n-1]区间的第一随机数K1和第二随机数R1,其中n为椭圆曲线点群的阶;根据第一随机数K1和第二随机数R1,计算椭圆曲线点(x1,y1)=[K1·(R1+1)-1]G,令k=K1·(R1+1)-1;
客户端签名计算模块,用于计算部分签名值Pr=(e+x1)mod n,若Pr=0或Pr+k=n,则返回所述椭圆计算模块;
客户端同态加密模块,用于通过传统Paillier算法生成公钥PaPu和私钥PaPr,利用公钥对第一随机数K1和第二随机数R1进行同态加密,令SK1=E(K1),SR1=E(R1),其中E(·)为同态加密运算;
客户端发送模块,用于将所述客户端A生成的SK1,SR1,部分签名值Pr和同态公钥PaPu发送给服务端B。
所述服务端B包括:
随机数生成模块,用于所述服务端B利用随机数发生器产生[1,n-1]区间的第三随机数R0;
服务端签名计算模块,用于接收所述客户端A发送的SK1,SR1,部分签名值Pr和同态公钥PaPu,并根据所述第三随机数R0,计算生成服务端B签名数据B1;
服务端发送模块,用于将所述服务端B生成的中间签名数据B1返回至客户端A;
所述客户端A还包括:
协同签名模块,用于接收所述服务端B生成的中间签名数据B1,计算B2=D(B1),Ps=(B2-Pr)mod n,若Ps≠0并且Ps≠n-Pr,则签名值为(Pr,Ps),其中D(·)为同态解密运算,签名私钥值为PdA=[RO·(R1+1)]-1-1。
与现有技术相比,本发明具有如下有益效果:
本实施例中,该系统通过客户端与服务端协同签名的方式,隐藏交互计算中的私钥,达到既保护签名私钥又摆脱硬件依赖的目的;通过同态算法保护签名私钥,无需软盾存储即可保证私钥的安全;通过对中间数据进行加密保护,增强签名的安全性。
附图说明
图1为本发明实施例提供的基于同态运算的SM2协同签名方法的流程图;
图2为本发明实施例提供的基于同态运算的SM2协同签名装置的框图;
图3为本发明实施例提供的又一基于同态运算的SM2协同签名装置的框图;
图4为本发明实施例提供的基于同态运算的SM2协同签名系统的框图。
具体实施方式
为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施方式,进一步阐述本发明。
在本发明的描述中,需要说明的是,术语“上”、“下”、“内”、“外”“前端”、“后端”、“两端”、“一端”、“另一端”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“设置有”、“连接”等,应做广义理解,例如“连接”,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
实施例1:
参照图1中左半部分所示,本发明提供的一种基于同态运算的SM2协同签名方法,应用于客户端A,该方法包括以下步骤:
S1、将ZA与M的拼接值进行SM3哈希计算得哈希值e;所述M为待签名消息;所述ZA为关于所述客户端A的可辨别标识、部分椭圆曲线系统参数和所述客户端A公钥的杂凑值;
其中,部分椭圆曲线系统参数是指:客户端A具有长度为entlenA比特的可辨别标识IDA,记ENTLA是由整数entlenA转换而成的两个字节。将椭圆曲线方程参数a、b、G的坐标xG、yG和PA的坐标xA、yA的数据类型转换为比特串,ZA=H256(ENTLA∥IDA∥a∥b∥xG∥yG∥xA∥yA)。
S2、所述客户端A利用随机数发生器产生[1,n-1]区间的第一随机数K1和第二随机数R1,其中n为椭圆曲线点群的阶,也即基点G的阶;
S3、根据第一随机数K1和第二随机数R1,计算椭圆曲线点(x1,y1)=[K1·(R1+1)-1]G,令k=K1·(R1+1)-1;
S4、计算部分签名值Pr=(e+x1)mod n,若Pr=0或Pr+k=n,则返回步骤S2;
S5、通过传统Paillier算法生成公钥PaPu和私钥PaPr,利用公钥对第一随机数K1和第二随机数R1进行同态加密,令SK1=E(K1),SR1=E(R1),其中E(·)为同态加密运算;
S6、将所述客户端A生成的SK1,SR1,部分签名值Pr和同态公钥PaPu发送给服务端B。
并且,在接收服务端B生成的中间签名数据B1后,计算B2=D(B1),Ps=(B2-Pr)modn,若Ps≠0并且Ps≠n-Pr,则签名值为(Pr,Ps),其中D(·)为同态解密运算,签名私钥值为PdA=[RO·(R1+1)]-1-1。
上述B2为客户端B签名数据,即中间签名数据,(Pr,Ps)为协同签名结果,即最终签名数据。
本实施例中,上述客户端A中执行的步骤,在客户端与服务端协同签名的过程中,有助于通过对中间数据进行加密保护,增强签名的安全性。
实施例2:
如图1中的右半部分,本发明实施例还提供一种基于同态运算的SM2协同签名方法,应用于服务端B,该方法包括以下步骤:
S7、所述服务端B利用随机数发生器产生[1,n-1]区间的第三随机数R0;
S8、接收所述客户端A发送的SK1,SR1,部分签名值Pr和同态公钥PaPu,并根据所述第三随机数R0,计算生成服务端B签名数据B1;
S9、将所述服务端B生成的中间签名数据B1返回至客户端A。
其中,计算服务端B签名数据如下:
B1=(R0⊙SK1)⊕(R0⊙E(Pr))⊕((R0·Pr)⊙SR1)
其中,⊕表示基于Paillier算法同态加密的密文相加,其解密后对应明文相加的结果;⊙表示基于Paillier算法同态加密中的明文与密文相乘运算,其对应多个同态密文相加。
上述B1为服务端签名数据,即中间签名数据,其值为三组同态密文相加,其一为R0与SK1的同态乘,其二为R0与E(Pr)同态乘,其三为R0与Pr的乘积值与SR1的同态乘。
本实施例中,上述服务端B中执行的步骤,在客户端与服务端协同签名的过程中,有助于通过对中间数据进行加密保护,增强签名的安全性。
实施例3:
参照图1所示,本发明还实施例提出了一种基于Paillier同态运算的SM2协同签名算法,通过客户端与服务端协同签名的方式,隐藏交互计算中的私钥,同时通过Paillier对中间交互数据进行加密保护,实现更加安全的协同签名算法。
首先通过客户端A计算得哈希值e,生成[1,n-1]区间的K1和R1值,其中n是椭圆曲线点群的阶;然后客户端得到(x1,y1)=[K1·(R1+1)-1]G,Pr=(e+x1)modn;进一步客户端A对K1和R1进行同态加密,令SK1=E(K1),SR1=E(R1),其中E(·)为同态加密运算,随之客户端A将生成的SK1,SR1,部分签名值Pr和同态公钥PaPu发送给服务端B。当服务端B接收到消息,生成[1,n-1]区间的R0值并计算B1=(R0⊙SK1)⊕(R0⊙E(Pr))⊕((R0·Pr)⊙SR1),其中⊕表示基于Paillier算法同态加密的密文相加⊙表示基于Paillier算法同态加密中的明文与密文相乘运算,然后将数据B1返回至客户端A。当客户端A接收到返回数据,计算B2=D(B1),Ps=(S2-Pr)mod n,若Ps≠0并且Ps≠n-Pr,则签名值为(Pr,Ps),其中D(·)为同态解密运算,签名私钥为PdA=[RO·(R1+1)]-1-1,其具体步骤如下。
首先,对于客户端A:
S1,M为待签名消息,ZA为关于用户A的可辨别标识、部分椭圆曲线系统参数和用户A公钥的杂凑值,将ZA与M的拼接值进行SM3哈希计算得哈希值e。
S2,客户端A利用随机数发生器产生[1,n-1]区间的K1和R1值,其中n是椭圆曲线点群的阶,也即基点G的阶。
S3,计算椭圆曲线点(x1,y1)=[K1·(R1+1)-1]G,令t=K1·(R1+1)-1。
S4,计算Pr=(e+x1)modn,若Pr=0或Pr+k=n则返回S2。
S5,通过传统Paillier算法生成公钥PaPu和私钥PaPr,利用公钥对K1和R1进行同态加密,令SK1=E(K1),SR1=E(R1),其中E(·)为同态加密运算。
S6,将客户端A生成的SK1,SR1,部分签名值Pr和同态公钥PaPu发送给服务端B。
进一步,对于服务端B:
S7,服务端B利用随机数发生器产生[1,n-1]区间的R0值。
S8,计算B1=(R0⊙SK1)⊕(R0⊙E(Pr))⊕((R0·Pr)⊙SR1),其中⊕表示基于Paillier算法同态加密的密文相加,其解密后对应明文相加的结果,⊙表示基于Paillier算法同态加密中的明文与密文相乘运算,其对应多个同态密文相加。
S9,将服务端生成的中间签名数据B1返回至客户端A。
最后,对于客户端A:
S10,计算B2=D(B1),Ps=(B2-Pr)mod n,若Ps≠0并且Ps≠n-Pr,则签名值为(Pr,Ps),其中D(·)为同态解密运算,签名私钥值为PdA=[RO·(R1+1)]-1-1。
本实施例中,该方法通过客户端与服务端协同签名的方式,隐藏交互计算中的私钥,达到既保护签名私钥又摆脱硬件依赖的目的;通过同态算法保护签名私钥,无需软盾存储即可保证私钥的安全。同时,通过同态加解密运算保护中间通信数据,增强协同签名的安全性。
实施例4:
参照图2所示,本发明实施例还提供一种基于同态运算的SM2协同签名装置,包括:
哈希计算模块,用于将ZA与M的拼接值进行SM3哈希计算得哈希值e;所述M为待签名消息;所述ZA为关于所述客户端A的可辨别标识、部分椭圆曲线系统参数和所述客户端A公钥的杂凑值;
椭圆计算模块,用于所述客户端A利用随机数发生器产生[1,n-1]区间的第一随机数K1和第二随机数R1,其中n为椭圆曲线点群的阶;根据第一随机数K1和第二随机数R1,计算椭圆曲线点(x1,y1)=[K1·(R1+1)-1]G,令k=K1·(R1+1)-1;
客户端签名计算模块,用于计算部分签名值Pr=(e+x1)modn,若Pr=0或Pr+k=n,则返回所述椭圆计算模块;
客户端同态加密模块,用于通过传统Paillier算法生成公钥PaPu和私钥PaPr,利用公钥对第一随机数K1和第二随机数R1进行同态加密,令SK1=E(K1),SR1=E(R1),其中E(·)为同态加密运算;
客户端发送模块,用于将所述客户端A生成的SK1,SR1,部分签名值Pr和同态公钥PaPu发送给服务端B。
进一步地,还包括:
协同签名模块,用于接收所述服务端B生成的中间签名数据B1,计算B2=D(B1),Ps=(B2-Pr)mod n,若Ps≠0并且Ps≠n-Pr,则签名值为(Pr,Ps),其中D(·)为同态解密运算,签名私钥值为PdA=[RO·(R1+1)]-1-1。
本实施例中,上述客户端A中所包括的模块,在客户端与服务端协同签名的过程中,有助于通过对中间数据进行加密保护,增强签名的安全性。
实施例5:
参照图3所示,本发明实施例还提供一种基于同态运算的SM2协同签名装置,包括:
随机数生成模块,用于所述服务端B利用随机数发生器产生[1,n-1]区间的第三随机数R0;
服务端签名计算模块,用于接收所述客户端A发送的SK1,SR1,部分签名值Pr和同态公钥PaPu,并根据所述第三随机数R0,计算生成服务端B签名数据B1;
服务端发送模块,用于将所述服务端B生成的中间签名数据B1返回至客户端A。
进一步地,所述服务端签名计算模块中,计算服务端B签名数据如下:
B1=(R0⊙SK1)⊕(R0⊙E(Pr))⊕((R0·Pr)⊙SR1)
其中,⊕表示基于Paillier算法同态加密的密文相加,其解密后对应明文相加的结果;⊙表示基于Paillier算法同态加密中的明文与密文相乘运算,其对应多个同态密文相加。
本实施例中,上述服务端B中所包括的模块,在客户端与服务端协同签名的过程中,有助于通过对中间数据进行加密保护,增强签名的安全性。
实施例6:
参照图4所示,本发明实施例还提供一种基于同态运算的SM2协同签名系统,包括:客户端A和服务端B;
其中,所述客户端A包括:
哈希计算模块,用于将ZA与M的拼接值进行SM3哈希计算得哈希值e;所述M为待签名消息;所述ZA为关于所述客户端A的可辨别标识、部分椭圆曲线系统参数和所述客户端A公钥的杂凑值;
椭圆计算模块,用于所述客户端A利用随机数发生器产生[1,n-1]区间的第一随机数K1和第二随机数R1,其中n为椭圆曲线点群的阶;根据第一随机数K1和第二随机数R1,计算椭圆曲线点(x1,y1)=[K1·(R1+1)-1]G,令k=K1·(R1+1)-1;
客户端签名计算模块,用于计算部分签名值Pr=(e+x1)modn,若Pr=0或Pr+k=n,则返回所述椭圆计算模块;
客户端同态加密模块,用于通过传统Paillier算法生成公钥PaPu和私钥PaPr,利用公钥对第一随机数K1和第二随机数R1进行同态加密,令SK1=E(K1),SR1=E(R1),其中E(·)为同态加密运算;
客户端发送模块,用于将所述客户端A生成的SK1,SR1,部分签名值Pr和同态公钥PaPu发送给服务端B。
所述服务端B包括:
随机数生成模块,用于所述服务端B利用随机数发生器产生[1,n-1]区间的第三随机数R0;
服务端签名计算模块,用于接收所述客户端A发送的SK1,SR1,部分签名值Pr和同态公钥PaPu,并根据所述第三随机数R0,计算生成服务端B签名数据B1;
服务端发送模块,用于将所述服务端B生成的中间签名数据B1返回至客户端A;
所述客户端A还包括:
协同签名模块,用于接收所述服务端B生成的中间签名数据B1,计算B2=D(B1),Ps=(B2-Pr)mod n,若Ps≠0并且Ps≠n-Pr,则签名值为(Pr,Ps),其中D(·)为同态解密运算,签名私钥值为PdA=[RO·(R1+1)]-1-1。
本实施例中,该系统通过客户端与服务端协同签名的方式,隐藏交互计算中的私钥,达到既保护签名私钥又摆脱硬件依赖的目的;通过同态算法保护签名私钥,无需软盾存储即可保证私钥的安全;通过对中间数据进行加密保护,增强签名的安全性。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (1)
1.一种基于同态运算的SM2协同签名方法,其特征在于,由客户端A和服务端B协同完成,该方法包括以下步骤:
S1、将ZA与M的拼接值进行SM3哈希计算得到哈希值e;所述M为待签名消息;所述ZA为关于所述客户端A的可辨别标识、部分椭圆曲线系统参数和所述客户端A公钥的杂凑值;
S2、所述客户端A利用随机数发生器产生[1,n-1]区间的第一随机数K1和第二随机数R1,其中n为椭圆曲线点群的阶;
S3、根据第一随机数K1和第二随机数R1,计算椭圆曲线点(x1,y1)=[K1·(R1+1)-1]G,令k=K1·(R1+1)-1,其中,G为椭圆曲线基点;
S4、计算部分签名值Pr=(e+x1)mod n,若Pr=0或Pr+k=n,则返回步骤S2;否则,执行步骤S5;
S5、通过传统Paillier算法生成同态公钥PaPu和私钥PaPr,利用所述同态公钥对第一随机数K1和第二随机数R1进行同态加密,令SK1=E(K1),SR1=E(R1),其中E(·)为同态加密运算;
S6、将所述客户端A生成的SK1,SR1,部分签名值Pr和同态公钥PaPu发送给服务端B;
S7、所述服务端B利用随机数发生器产生[1,n-1]区间的第三随机数R0;
S8、接收所述客户端A发送的SK1,SR1,部分签名值Pr和同态公钥PaPu,并根据所述第三随机数R0,计算生成服务端B中间签名数据B1:
B1=(R0⊙SK1)⊕(R0⊙E(Pr))⊕((R0·Pr)⊙SR1)
其中,⊕表示基于Paillier算法同态加密的密文相加,其解密后对应明文相加的结果;⊙表示基于Paillier算法同态加密中的明文与密文相乘运算,其对应多个同态密文相加;
S9、将所述服务端B生成的中间签名数据B1返回至客户端A;
S10、接收所述服务端B生成的中间签名数据B1,计算B2=D(B1),Ps=(B2-Pr)mod n,若Ps≠0并且Ps≠n-Pr,则签名值为(Pr,Ps),其中D(·)为同态解密运算;
其中,步骤S1-S6、S10由客户端A执行;步骤S7-S9由服务端B执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210803789.9A CN115037441B (zh) | 2022-07-07 | 2022-07-07 | 一种基于同态运算的sm2协同签名方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210803789.9A CN115037441B (zh) | 2022-07-07 | 2022-07-07 | 一种基于同态运算的sm2协同签名方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115037441A CN115037441A (zh) | 2022-09-09 |
CN115037441B true CN115037441B (zh) | 2023-11-10 |
Family
ID=83128034
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210803789.9A Active CN115037441B (zh) | 2022-07-07 | 2022-07-07 | 一种基于同态运算的sm2协同签名方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115037441B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107872322A (zh) * | 2017-11-02 | 2018-04-03 | 武汉理工大学 | 基于同态加密的数字签名协同生成方法及系统 |
CN109361519A (zh) * | 2018-12-07 | 2019-02-19 | 武汉理工大学 | 一种改进的包含秘密的数的生成方法及系统 |
CN109672539A (zh) * | 2019-03-01 | 2019-04-23 | 深圳市电子商务安全证书管理有限公司 | Sm2算法协同签名及解密方法、装置及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201815396D0 (en) * | 2018-09-21 | 2018-11-07 | Nchain Holdings Ltd | Computer implemented system and method |
-
2022
- 2022-07-07 CN CN202210803789.9A patent/CN115037441B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107872322A (zh) * | 2017-11-02 | 2018-04-03 | 武汉理工大学 | 基于同态加密的数字签名协同生成方法及系统 |
CN109361519A (zh) * | 2018-12-07 | 2019-02-19 | 武汉理工大学 | 一种改进的包含秘密的数的生成方法及系统 |
CN109672539A (zh) * | 2019-03-01 | 2019-04-23 | 深圳市电子商务安全证书管理有限公司 | Sm2算法协同签名及解密方法、装置及系统 |
Non-Patent Citations (2)
Title |
---|
Yihong Long等.Secret Sharing based SM2 Digital Signature Generation using Homomorphic Encryption.2019 15th International Conference on Computational Intelligence and Security (CIS).2020,全文. * |
基于同态加密的SM2数字签名协同生成方法研究及技术开发;程敏洋;中国优秀硕士学位论文全文数据库 信息科技辑;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115037441A (zh) | 2022-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107196763B (zh) | Sm2算法协同签名及解密方法、装置与系统 | |
CN107707358B (zh) | 一种ec-kcdsa数字签名生成方法及系统 | |
CN108418686B (zh) | 一种多分布式的sm9解密方法与介质及密钥生成方法与介质 | |
US6697488B1 (en) | Practical non-malleable public-key cryptosystem | |
Khader et al. | Preventing man-in-the-middle attack in Diffie-Hellman key exchange protocol | |
CN111342976B (zh) | 一种可验证的理想格上门限代理重加密方法及系统 | |
CN112564907B (zh) | 密钥生成方法及装置、加密方法及装置、解密方法及装置 | |
CN107733648A (zh) | 一种基于身份的rsa数字签名生成方法及系统 | |
CN111010276A (zh) | 一种多方联合sm9密钥生成、密文解密方法与介质 | |
CN111030801A (zh) | 一种多方分布式的sm9密钥生成、密文解密方法与介质 | |
CN110855425A (zh) | 一种轻量级多方协同sm9密钥生成、密文解密方法与介质 | |
CN111355582A (zh) | 基于sm2算法的两方联合签名和解密的方法及系统 | |
Lee et al. | Security analysis of end-to-end encryption in Telegram | |
CN114726546A (zh) | 数字身份认证方法、装置、设备和存储介质 | |
CN110784300B (zh) | 一种基于乘法同态加密的密钥合成方法 | |
CN113132104A (zh) | 一种主动安全的ecdsa数字签名两方生成方法 | |
Shen et al. | Group public key encryption supporting equality test without bilinear pairings | |
Heninger | RSA, DH, and DSA in the Wild | |
CN110943845A (zh) | 一种轻量级两方协同产生sm9签名的方法及介质 | |
CN112350820B (zh) | 多接收者签密方法、发送端、接收端、系统及存储介质 | |
CN111901123B (zh) | 一种sm2签名的生成方法、存储介质和终端 | |
CN110798313B (zh) | 基于秘密动态共享的包含秘密的数的协同生成方法及系统 | |
CN110401524B (zh) | 一种借助同态加密的包含秘密的数的协同生成方法及系统 | |
CA2742530C (en) | Masking the output of random number generators in key generation protocols | |
CN115037441B (zh) | 一种基于同态运算的sm2协同签名方法、装置及系统 |
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 |