CN114567448B - 一种协同签名方法以及协同签名系统 - Google Patents

一种协同签名方法以及协同签名系统 Download PDF

Info

Publication number
CN114567448B
CN114567448B CN202210462705.XA CN202210462705A CN114567448B CN 114567448 B CN114567448 B CN 114567448B CN 202210462705 A CN202210462705 A CN 202210462705A CN 114567448 B CN114567448 B CN 114567448B
Authority
CN
China
Prior art keywords
signature
preset
communication terminal
abscissa
partial
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
Application number
CN202210462705.XA
Other languages
English (en)
Other versions
CN114567448A (zh
Inventor
于建华
沈靖飞
陈伯钱
袁平之
陈智奇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
South China Normal University
Original Assignee
South China Normal University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by South China Normal University filed Critical South China Normal University
Priority to CN202210462705.XA priority Critical patent/CN114567448B/zh
Publication of CN114567448A publication Critical patent/CN114567448A/zh
Application granted granted Critical
Publication of CN114567448B publication Critical patent/CN114567448B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3247Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public 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

Abstract

本发明适用于数字签名技术领域,提供了一种协同签名方法以及协同签名系统,第一通信终端生成待签名消息M对应的消息摘要e以及第一部分签名Q1,并发送至第二通信终端;第二通信终端依据预设公钥中间值P1、预设第二私钥D2、预设椭圆曲线的n阶基点G以及消息摘要e确定签名横坐标r,并依据预设第二私钥D2确定第二部分签名S1,以及依据预设第二私钥D2以及签名横坐标确定第三部分签名S2;第二通信终端将签名横坐标r以及第二部分签名S1和第三部分签名S2发送至第一通信终端;第一通信终端依据预设第一私钥D1、第二部分签名S1、第三部分签名S2以及签名横坐标r,确定签名纵坐标s,并输出待签名消息M的签名。本发明有助于提升数字签名的安全性。

Description

一种协同签名方法以及协同签名系统
技术领域
本发明属于数字签名技术领域,尤其涉及一种协同签名方法以及协同签名系统。
背景技术
数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。
在公钥密码体制中,保证私钥的安全性是一个非常重要的问题,为了降低签名权利集中或签名密钥丢失带来的风险,一些特殊的文档,如高机密的文件通常需要多人协同才能完成签名。生成签名的过程中需要恢复完整的签名密钥,存在安全隐患。
发明内容
本发明实施例提供一种协同签名方法,旨在解决提高协同签名安全性的问题。
本发明实施例是这样实现的,一种协同签名方法,所述方法包括:
第一通信终端生成待签名消息M对应的消息摘要e以及第一部分签名,并将所述消息摘要e和所述第一部分签名Q1发送至第二通信终端;
所述第二通信终端在接收到所述消息摘要e和所述第一部分签名Q1后,依据预设公钥中间值P1、预设第二私钥D2、预设椭圆曲线的n阶基点G以及所述消息摘要e确定签名横坐标r,并依据所述预设第二私钥D2确定第二部分签名S1,以及依据所述预设第二私钥D2以及所述签名横坐标确定第三部分签名S2,其中,所述预设公钥中间值P1通过所述第一通信终端生成;
所述第二通信终端将所述签名横坐标r以及所述第二部分签名S1和第三部分签名S2发送至所述第一通信终端;
所述第一通信终端依据预设第一私钥D1、所述第二部分签名S1、所述第三部分签名S2以及所述签名横坐标r,确定签名纵坐标s,并基于所述签名横坐标r以及所述签名纵坐标s输出所述待签名消息M的签名。
更进一步地,所述第一通信终端生成待签名消息M对应的消息摘要e以及第一部分签名Q1,具体包括:
依据所述待签名消息M以及预设共同身份标识Z,生成中间比特串M',M' = Z ||M;
对所述中间比特串M'进行哈希计算,得到所述消息摘要e;
在第一随机范围内随机生成第一系数k1,其中,所述第一随机范围基于预设椭圆曲线的基点G的阶数n确定;
基于所述第一系数k1以及所述预设椭圆曲线的n阶基点G,在预设椭圆曲线E上计算所述第一部分签名Q1,Q1 = k1 [*] G,用[ ]表示的运算符为在所述预设椭圆曲线上的运算。
更进一步地,所述依据预设公钥中间值P1、预设第二私钥D2、预设椭圆曲线的n阶基点G以及所述消息摘要e确定签名横坐标r,具体包括:
在第二随机范围内随机生成第二系数k2和第三系数k3,其中,所述第二随机范围基于预设椭圆曲线的基点G的阶数n确定;
基于所述预设公钥中间值P1、所述预设第二私钥D2、所述第二系数K2、所述第三系数K3以及所述预设椭圆曲线的n阶基点G,计算中间坐标(x1,y1),(x1,y1) = P1 [+] D2^(-1) [*] k2 [*]P1 [+] k3 [*] D2^(-1) [*] G;
基于所述中间坐标(x1,y1)、所述阶数n以及所述消息摘要e,计算所述签名横坐标r,r = (x1 + e) mod n。
更进一步地,所述计算所述签名横坐标r之后,所述方法还包括:
判断所述签名横坐标r是否为0;
若所述签名横坐标r不为0,则执行所述依据所述预设第二私钥D2确定第二部分签名,否则,返回所述在第二随机范围内随机生成第二系数k2和第三系数k3的步骤重新生成签名横坐标r。
更进一步地,所述依据所述预设第二私钥D2确定第二部分签名S1,以及依据所述预设第二私钥D2以及所述签名横坐标确定第三部分签名S2,具体包括:
基于所述预设第二私钥D2、所述第二系数k2以及所述阶数n,计算所述第二部分签名S1,S1 = (D2 + k2) mod n;
基于所述第三系数、所述预设第二私钥D2、所述签名横坐标r以及所述阶数n,计算所述第三部分签名S2,S2 = (k3 + D2 * r) mod n。
更进一步地,所述第一通信终端依据预设第一私钥D1、所述第二部分签名S1、所述第三部分签名S2以及所述签名横坐标r,确定签名纵坐标s,具体包括:
所述第一通信终端依据所述第一系数k1、所述预设第一私钥D1、所述第二部分签名S1、所述第三部分签名S2以及所述签名横坐标r,确定签名纵坐标s,s = ((D1 * k1) *S1 + D1 * S2 - r) mod n。
更进一步地,所述基于所述签名横坐标r以及所述签名纵坐标s输出所述待签名消息M的签名,具体包括:
判断所述签名纵坐标s是否不为0,并且所述签名纵坐标s是否不为所述阶数n与所述签名横坐标r之差;
若判断结果为是,则输出所述待签名消息M的签名(r,s),否则,返回所述生成中间比特串M'的步骤重新获取签名横坐标r和签名纵坐标s并输出签名。
更进一步地,所述第一通信终端生成待签名消息M对应的消息摘要e以及第一部分签名Q1之前,所述方法还包括:
所述第一通信终端依据预设椭圆曲线的基点G的阶数n确定第一随机数范围,并在所述第一随机数范围内生成所述预设第一私钥D1;
所述第一通信终端依据所述预设第一私钥D1以及所述阶数n计算所述预设公钥中间值P1,并将所述预设公钥中间值P1发送至所述第二通信终端;
所述第二通信终端依据预设椭圆曲线的基点G的阶数n确定第二随机数范围,并在所述第二随机数范围内生成所述预设第二私钥D2。
更进一步地,所述在所述第二随机数范围内生成所述预设第二私钥D2之后,所述方法还包括:
所述第二通信终端依据所述预设第二私钥D2、所述预设公钥中间值P1以及所述预设椭圆曲线的n阶基点G,生成公钥。
本发明实施例还提供一种协同签名系统,所述系统包括:第一通信终端以及第二通信终端;
所述第一通信终端,用于生成待签名消息M对应的消息摘要e以及第一部分签名,并将所述消息摘要e和所述第一部分签名Q1发送至第二通信终端;
所述第二通信终端,用于在接收到所述消息摘要e和所述第一部分签名Q1后,依据预设公钥中间值P1、预设第二私钥D2、预设椭圆曲线的n阶基点G以及所述消息摘要e确定签名横坐标r,并依据所述预设第二私钥D2确定第二部分签名S1,以及依据所述预设第二私钥D2以及所述签名横坐标确定第三部分签名S2,其中,所述预设公钥中间值P1通过所述第一通信终端生成;
所述第二通信终端,还用于将所述签名横坐标r以及所述第二部分签名S1和第三部分签名S2发送至所述第一通信终端;
所述第一通信终端,还用于依据预设第一私钥D1、所述第二部分签名S1、所述第三部分签名S2以及所述签名横坐标r,确定签名纵坐标s,并基于所述签名横坐标r以及所述签名纵坐标s输出所述待签名消息M的签名。
更进一步地,所述第一通信终端,还用于:
依据所述待签名消息M以及预设共同身份标识Z,生成中间比特串M',M' = Z ||M;
对所述中间比特串M'进行哈希计算,得到所述消息摘要e;
在第一随机范围内随机生成第一系数k1,其中,所述第一随机范围基于预设椭圆曲线的基点G的阶数n确定;
基于所述第一系数k1以及所述预设椭圆曲线的n阶基点G,在预设椭圆曲线E上计算所述第一部分签名Q1,Q1 = k1 [*] G,用[ ]表示的运算符为在所述预设椭圆曲线上的运算。
更进一步地,所述第二通信终端,还用于:
在第二随机范围内随机生成第二系数k2和第三系数k3,其中,所述第二随机范围基于预设椭圆曲线的基点G的阶数n确定;
基于所述预设公钥中间值P1、所述预设第二私钥D2、所述第二系数K2、所述第三系数K3以及所述预设椭圆曲线的n阶基点G,计算中间坐标(x1,y1),(x1,y1) = P1 [+] D2^(-1) [*] k2 [*]P1 [+] k3 [*] D2^(-1) [*] G;
基于所述中间坐标(x1,y1)、所述阶数n以及所述消息摘要e,计算所述签名横坐标r,r = (x1 + e) mod n。
更进一步地,所述第二通信终端,还用于:
判断所述签名横坐标r是否为0;
若所述签名横坐标r不为0,则执行所述依据所述预设第二私钥D2确定第二部分签名,否则,返回所述在第二随机范围内随机生成第二系数k2和第三系数k3的步骤重新生成签名横坐标r。
更进一步地,所述第二通信终端,还用于:
基于所述预设第二私钥D2、所述第二系数k2以及所述阶数n,计算所述第二部分签名S1,S1 = (D2 + k2) mod n;
基于所述第三系数、所述预设第二私钥D2、所述签名横坐标r以及所述阶数n,计算所述第三部分签名S2,S2 = (k3 + D2 * r) mod n。
更进一步地,所述第一通信终端,还用于:
依据所述第一系数k1、所述预设第一私钥D1、所述第二部分签名S1、所述第三部分签名S2以及所述签名横坐标r,确定签名纵坐标s,s = ((D1 * k1) * S1 + D1 * S2 - r)mod n。
更进一步地,所述第一通信终端,还用于:
判断所述签名纵坐标s是否不为0,并且所述签名纵坐标s是否不为所述阶数n与所述签名横坐标r之差;
若判断结果为是,则输出所述待签名消息M的签名(r,s),否则,返回所述生成中间比特串M'的步骤重新获取签名横坐标r和签名纵坐标s并输出签名。
更进一步地,所述第一通信终端,还用于:
所述第一通信终端依据预设椭圆曲线的基点G的阶数n确定第一随机数范围,并在所述第一随机数范围内生成所述预设第一私钥D1;
所述第一通信终端依据所述预设第一私钥D1以及所述阶数n计算所述预设公钥中间值P1,并将所述预设公钥中间值P1发送至所述第二通信终端;
所述第二通信终端,还用于:依据预设椭圆曲线的基点G的阶数n确定第二随机数范围,并在所述第二随机数范围内生成所述预设第二私钥D2。
更进一步地,所述第二通信终端,还用于:依据所述预设第二私钥D2、所述预设公钥中间值P1以及所述预设椭圆曲线的n阶基点G,生成公钥。
由于现有技术中签名过程需恢复完整密钥存在安全隐患的问题,所以本发明采用了通信双方各自产生部分签名,再由双方根据消息摘要、各自子私钥等参数协同计算得到最后的签名结果的方法,入侵任何一方都无法获取私钥伪造签名,充分保证了SM2算法私钥的安全性,而且在协同签名过程中,不恢复完整的签名密钥,保证了签名密钥的安全性。
附图说明
图1是本发明实施例提供的一种协同签名方法的流程示意图;
图2是本发明实施例提供的一种密钥生成和协同签名过程的示意图;
图3是本发明实施例提供的一种协同签名系统的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供的协同签名方法在签名过程中无需恢复完整的签名密钥,保证了签名密钥的安全性,提高了双方参与签名的公平性。
实施例一
在本实施例中提供了一种协同签名方法,如图1所示,该方法包括:
步骤101,第一通信终端生成待签名消息M对应的消息摘要e以及第一部分签名,并将所述消息摘要e和所述第一部分签名Q1发送至第二通信终端;
步骤102,所述第二通信终端在接收到所述消息摘要e和所述第一部分签名Q1后,依据预设公钥中间值P1、预设第二私钥D2、预设椭圆曲线的n阶基点G以及所述消息摘要e确定签名横坐标r,并依据所述预设第二私钥D2确定第二部分签名S1,以及依据所述预设第二私钥D2以及所述签名横坐标确定第三部分签名S2,其中,所述预设公钥中间值P1通过所述第一通信终端生成;
步骤103,所述第二通信终端将所述签名横坐标r以及所述第二部分签名S1和第三部分签名S2发送至所述第一通信终端;
步骤104,所述第一通信终端依据预设第一私钥D1、所述第二部分签名S1、所述第三部分签名S2以及所述签名横坐标r,确定签名纵坐标s,并基于所述签名横坐标r以及所述签名纵坐标s输出所述待签名消息M的签名。
在本发明实施例中,第一通信终端为请求签名的一方,第一通信终端可以为客户端也可以为服务器端,相应的,在第一通信终端为客户端时,第二通信终端为服务器端,在第一通信终端为服务器端时,第二通信终端为客户端。第一通信终端和第二通信终端中预先可以设置初始化共享参数(包括变量和函数),具体可以包括:1、E:定义在有限域Fq上的SM2算法的椭圆曲线;2、G:椭圆曲线E上的n阶基点;3、n:椭圆曲线E的基点G的阶数;4、Z:双方共同的身份标识;4、hash():密码杂凑函数(或成为散列函数、哈希函数)。并且第一通信终端预先依据初始化参数生成了预设第一私钥D1以及预设公钥中间值P1,第二通信终端预先依据初始化参数生成了预设第二私钥D2,并存储了第一通信终端发送的预设公钥中间值P1。
当第一通信终端获取了待签名消息M后,首先,利用初始化参数生成待签名消息的消息摘要e和第一部分签名Q1,并将其发送给第二通信终端,以使第二通信终端依据第一部分签名Q1和消息摘要e获取与第一通信终端预先约定的初始化共享参数、来自第一通信终端的预设公钥中间值P1以及预先生成的预设第二私钥D2;
其次,第二通信终端依据预设公钥中间值P1、预设第二私钥D2、预设椭圆曲线的n阶基点G以及消息摘要e确定签名横坐标r,进一步,依据预设第二私钥D2确定第二部分签名S1,并依据预设第二私钥D2和签名横坐标确定第三部分签名S2,得到签名横坐标r、第二部分签名S1和第三部分签名S2后,再发送给第一通信终端,以便第一通信终端依据这些数据生成完全的签名;
最后,第一通信终端预设第一私钥D1、第二部分签名S1、第三部分签名S2以及签名横坐标r,确定签名纵坐标s,进而结合签名横坐标r和签名纵坐标s输出待签名消息M的完整签名。
通过应用本实施例的技术方案,通信双方各自产生部分签名,再由双方根据消息摘要、各自子私钥等参数协同计算得到最后的签名结果,入侵任何一方都无法获取私钥伪造签名。本发明技术方案充分保证了SM2算法私钥的安全性,而且在协同签名过程中,不恢复完整的签名密钥,保证了签名密钥的安全性,提高了双方参与签名的公平性双方交互的内容少,通信数据量小,密码运算的复杂度低,能够很好地满足云计算、物联网环境中低延迟、少交互的应用需求。
实施例二
进一步的,作为上述实施例具体实施方式的细化和扩展,为了完整说明本实施例的具体实施过程,如图2所示,为本发明实施例提供的一种密钥生成和协同签名过程的示意图,包括预处理阶段、密钥生成阶段(私钥和公钥)、签名生成阶段(包括步骤101至步骤104)。
在本发明实施例中,可选地,私钥生成阶段包括:所述第一通信终端依据预设椭圆曲线的基点G的阶数n确定第一随机数范围,并在所述第一随机数范围内生成所述预设第一私钥D1;所述第一通信终端依据所述预设第一私钥D1以及所述阶数n计算所述预设公钥中间值P1,并将所述预设公钥中间值P1发送至所述第二通信终端;所述第二通信终端依据预设椭圆曲线的基点G的阶数n确定第二随机数范围,并在所述第二随机数范围内生成所述预设第二私钥D2。
在该实施例中,第一通信终端产生随机数D1∈[1 ,n-1],作为所述第一通信方的子私钥D1,即预设第一私钥D1,第一通信终端根据D1和G计算得到椭圆曲线点逆元P1=D1^(-1) [*] G,并把预设公钥中间值P1(即图2中公钥中间值P1)发送给第二通信终端,其中D1^(-1)表示D1的逆元D1^(-1) mod n。另外,第二通信终端产生随机数D2∈[1 ,n-1],作为第二通信方的子私钥D2,即预设第二私钥D2。
在本发明实施例中,可选地,公钥生成阶段包括:所述第二通信终端依据所述预设第二私钥D2、所述预设公钥中间值P1以及所述预设椭圆曲线的n阶基点G,生成公钥。
在该实施例中,第二通信终端还可以根据D2、P1和G计算得到公钥P = D2^(-1)[*] P1 [-] G并公开该公钥P,其中D2^(-1)表示D2的逆元D2^(-1) mod n。
在本发明实施例中,可选地,步骤101包括:依据所述待签名消息M以及预设共同身份标识Z,生成中间比特串M',M' = Z || M;对所述中间比特串M'进行哈希计算,得到所述消息摘要e;在第一随机范围内随机生成第一系数k1,其中,所述第一随机范围基于预设椭圆曲线的基点G的阶数n确定;基于所述第一系数k1以及所述预设椭圆曲线的n阶基点G,在预设椭圆曲线E上计算所述第一部分签名Q1,Q1 = k1 [*] G,用[ ]表示的运算符为在所述预设椭圆曲线上的运算。
在该实施例中,第一通信终端生成待签名消息M的摘要e和第一部分签名Q1,具体的,先计算中间比特串 M' = Z || M,再计算消息摘要 e = Hash(M'),接着生成一个[1,n-1]的随机数k1,即第一系数k1,最后计算第一部分签名Q1 = k1 [*] G并发送消息摘要e和签名Q1。
在本发明实施例中,可选地,步骤102包括:在第二随机范围内随机生成第二系数k2和第三系数k3,其中,所述第二随机范围基于预设椭圆曲线的基点G的阶数n确定;基于所述预设公钥中间值P1、所述预设第二私钥D2、所述第二系数K2、所述第三系数K3以及所述预设椭圆曲线的n阶基点G,计算中间坐标(x1,y1),(x1,y1) = P1 [+] D2^(-1) [*] k2 [*]P1 [+] k3 [*] D2^(-1) [*] G;基于所述中间坐标(x1,y1)、所述阶数n以及所述消息摘要e,计算所述签名横坐标r,r = (x1 + e) mod n。
需要说明的是,本发明实施例中用[ ]表示的运算符都特指在椭圆曲线E上的运算。
在本发明实施例中,可选地,步骤102还包括:判断所述签名横坐标r是否为0;若所述签名横坐标r不为0,则执行所述依据所述预设第二私钥D2确定第二部分签名,否则,返回所述在第二随机范围内随机生成第二系数k2和第三系数k3的步骤重新生成签名横坐标r。
在该实施例中,第二通信终端生成签名横坐标r,具体包括:生成一个[1,n-1]的随机数k2,即第二系数k2,生成一个[1,n-1]的随机数k3,即第三系数k3,并计算中间坐标(x1,y1) = P1 [+] d2^(-1) [*] k2 [*]P1 [+] k3 [*] d2^(-1) [*] G。计算签名横坐标 r =(x1 + e) mod n,并判断r是否为0,若为0,则重复上述步骤重新生成签名横坐标r,直到得到不为0的签名横坐标为止。
在本发明实施例中,可选地,步骤102还包括:基于所述预设第二私钥D2、所述第二系数k2以及所述阶数n,计算所述第二部分签名S1,S1 = (D2 + k2) mod n;基于所述第三系数、所述预设第二私钥D2、所述签名横坐标r以及所述阶数n,计算所述第三部分签名S2,S2 = (k3 + D2 * r) mod n。
在该实施例中,第二通信终端计算第二部分签名S1 = (D2 + k2) mod n,计算第三部分签名 S2 = (k3 + d2 * r) mod n。计算之后,发送签名横坐标r,第二部分签名S2以及第三部分S3到第一通信终端,以便第一通信终端生成完整的签名。
在本发明实施例中,可选地,步骤104包括:所述第一通信终端依据所述第一系数k1、所述预设第一私钥D1、所述第二部分签名S1、所述第三部分签名S2以及所述签名横坐标r,确定签名纵坐标s,s = ((D1 * k1) * S1 + D1 * S2 - r) mod n。
进一步,可选地,步骤104还包括:判断所述签名纵坐标s是否不为0,并且所述签名纵坐标s是否不为所述阶数n与所述签名横坐标r之差;若判断结果为是,则输出所述待签名消息M的签名(r,s),否则,返回所述生成中间比特串M'的步骤重新获取签名横坐标r和签名纵坐标s并输出签名。
在该实施例中,第一通信终端计算纵坐标s = ((D1 * k1) * S1 + D1 * S2 - r)mod n。若s不等于0并且s不等于n-r,则直接输出完整签名为(r , s)。若s为0或s等于n-r,则重复整个签名生成阶段,即返回至步骤101重复上述步骤直到s不等于0并且s不等于n-r为止,并输出完整签名为:(r , s)。
本发明适用于在两方不泄露各自部分签名密钥的情况下共同完成SM2协同签名,产生签名的过程必须有双方同时参与,且生成签名的过程中不恢复完整的签名密钥,保证了签名密钥的安全性,提高了双方参与签名的公平性。通过本发明实施例的技术方案,通信双方各自产生部分签名,再由双方根据消息摘要、各自子私钥等参数协同计算得到最后的签名结果,入侵任何一方都无法获取私钥伪造签名。本发明技术方案充分保证了SM2算法私钥的安全性,而且在协同签名过程中,双方交互的内容少,通信数据量小,密码运算的复杂度低,能够很好地满足云计算、物联网环境中低延迟、少交互的应用需求。
实施例三
本发明实施例提供了一种协同签名系统,如图3所示,该系统包括:第一通信终端31以及第二通信终端32;
所述第一通信终端31,用于生成待签名消息M对应的消息摘要e以及第一部分签名,并将所述消息摘要e和所述第一部分签名Q1发送至第二通信终端;
所述第二通信终端32,用于在接收到所述消息摘要e和所述第一部分签名Q1后,依据预设公钥中间值P1、预设第二私钥D2、预设椭圆曲线的n阶基点G以及所述消息摘要e确定签名横坐标r,并依据所述预设第二私钥D2确定第二部分签名S1,以及依据所述预设第二私钥D2以及所述签名横坐标确定第三部分签名S2,其中,所述预设公钥中间值P1通过所述第一通信终端生成;
所述第二通信终端32,还用于将所述签名横坐标r以及所述第二部分签名S1和第三部分签名S2发送至所述第一通信终端;
所述第一通信终端31,还用于依据预设第一私钥D1、所述第二部分签名S1、所述第三部分签名S2以及所述签名横坐标r,确定签名纵坐标s,并基于所述签名横坐标r以及所述签名纵坐标s输出所述待签名消息M的签名。
更进一步地,所述第一通信终端31,还用于:
依据所述待签名消息M以及预设共同身份标识Z,生成中间比特串M',M' = Z ||M;
对所述中间比特串M'进行哈希计算,得到所述消息摘要e;
在第一随机范围内随机生成第一系数k1,其中,所述第一随机范围基于预设椭圆曲线的基点G的阶数n确定;
基于所述第一系数k1以及所述预设椭圆曲线的n阶基点G,在预设椭圆曲线E上计算所述第一部分签名Q1,Q1 = k1 [*] G,用[ ]表示的运算符为在所述预设椭圆曲线上的运算。
更进一步地,所述第二通信终端32,还用于:
在第二随机范围内随机生成第二系数k2和第三系数k3,其中,所述第二随机范围基于预设椭圆曲线的基点G的阶数n确定;
基于所述预设公钥中间值P1、所述预设第二私钥D2、所述第二系数K2、所述第三系数K3以及所述预设椭圆曲线的n阶基点G,计算中间坐标(x1,y1),(x1,y1) = P1 [+] D2^(-1) [*] k2 [*]P1 [+] k3 [*] D2^(-1) [*] G;
基于所述中间坐标(x1,y1)、所述阶数n以及所述消息摘要e,计算所述签名横坐标r,r = (x1 + e) mod n。
更进一步地,所述第二通信终端32,还用于:
判断所述签名横坐标r是否为0;
若所述签名横坐标r不为0,则执行所述依据所述预设第二私钥D2确定第二部分签名,否则,返回所述在第二随机范围内随机生成第二系数k2和第三系数k3的步骤重新生成签名横坐标r。
更进一步地,所述第二通信终端32,还用于:
基于所述预设第二私钥D2、所述第二系数k2以及所述阶数n,计算所述第二部分签名S1,S1 = (D2 + k2) mod n;
基于所述第三系数、所述预设第二私钥D2、所述签名横坐标r以及所述阶数n,计算所述第三部分签名S2,S2 = (k3 + D2 * r) mod n。
更进一步地,所述第一通信终端31,还用于:
依据所述第一系数k1、所述预设第一私钥D1、所述第二部分签名S1、所述第三部分签名S2以及所述签名横坐标r,确定签名纵坐标s,s = ((D1 * k1) * S1 + D1 * S2 - r)mod n。
更进一步地,所述第一通信终端31,还用于:
判断所述签名纵坐标s是否不为0,并且所述签名纵坐标s是否不为所述阶数n与所述签名横坐标r之差;
若判断结果为是,则输出所述待签名消息M的签名(r,s),否则,返回所述生成中间比特串M'的步骤重新获取签名横坐标r和签名纵坐标s并输出签名。
更进一步地,所述第一通信终端31,还用于:
所述第一通信终端依据预设椭圆曲线的基点G的阶数n确定第一随机数范围,并在所述第一随机数范围内生成所述预设第一私钥D1;
所述第一通信终端依据所述预设第一私钥D1以及所述阶数n计算所述预设公钥中间值P1,并将所述预设公钥中间值P1发送至所述第二通信终端;
所述第二通信终端32,还用于:依据预设椭圆曲线的基点G的阶数n确定第二随机数范围,并在所述第二随机数范围内生成所述预设第二私钥D2。
更进一步地,所述第二通信终端32,还用于:依据所述预设第二私钥D2、所述预设公钥中间值P1以及所述预设椭圆曲线的n阶基点G,生成公钥。
需要说明的是,本申请实施例提供的一种协同签名系统所涉及各功能单元的其他相应描述,可以参考图1至图2方法中的对应描述,在此不再赘述。
基于上述如图1至图2所示方法,相应的,本申请实施例还提供了一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述如图1至图2所示的协同签名方法。
基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。
基于上述如图1至图2所示的方法,以及图3所示的系统实施例,为了实现上述目的,本申请实施例还提供了一种计算机设备,具体可以为个人计算机、服务器、网络设备等,该计算机设备包括存储介质和处理器;存储介质,用于存储计算机程序;处理器,用于执行计算机程序以实现上述如图1至图2所示的门店信息的展示方法。
可选地,该计算机设备还可以包括用户接口、网络接口、摄像头、射频(RadioFrequency,RF)电路,传感器、音频电路、WI-FI模块等等。用户接口可以包括显示屏(Display)、输入单元比如键盘(Keyboard)等,可选用户接口还可以包括USB接口、读卡器接口等。网络接口可选的可以包括标准的有线接口、无线接口(如蓝牙接口、WI-FI接口)等。
本领域技术人员可以理解,本实施例提供的一种计算机设备结构并不构成对该计算机设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。
存储介质中还可以包括操作系统、网络通信模块。操作系统是管理和保存计算机设备硬件和软件资源的程序,支持信息处理程序以及其它软件和/或程序的运行。网络通信模块用于实现存储介质内部各组件之间的通信,以及与该实体设备中其它硬件和软件之间通信。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种协同签名方法,其特征在于,所述方法包括:
第一通信终端生成待签名消息M对应的消息摘要e以及第一部分签名Q1,并将所述消息摘要e和所述第一部分签名Q1发送至第二通信终端;
所述第二通信终端在接收到所述消息摘要e和所述第一部分签名Q1后,在第二随机范围内随机生成第二系数k2和第三系数k3;基于预设公钥中间值P1、预设第二私钥D2、所述第二系数k2、所述第三系数k3以及预设椭圆曲线的n阶基点G,计算中间坐标(x1,y1);基于所述中间坐标(x1,y1)、所述阶数n以及所述消息摘要e,计算签名横坐标r,并基于所述预设第二私钥D2、所述第二系数k2以及所述阶数n,计算第二部分签名S1,以及基于所述第三系数、所述预设第二私钥D2、所述签名横坐标r以及所述阶数n,计算第三部分签名S2,其中,所述预设公钥中间值P1通过所述第一通信终端生成;
所述第二通信终端将所述签名横坐标r以及所述第二部分签名S1和第三部分签名S2发送至所述第一通信终端;
所述第一通信终端依据预设第一私钥D1、所述第二部分签名S1、所述第三部分签名S2以及所述签名横坐标r,确定签名纵坐标s,并基于所述签名横坐标r以及所述签名纵坐标s输出所述待签名消息M的签名。
2.根据权利要求1所述的方法,其特征在于,所述第一通信终端生成待签名消息M对应的消息摘要e以及第一部分签名Q1,具体包括:
依据所述待签名消息M以及预设共同身份标识Z,生成中间比特串M',M' = Z || M;
对所述中间比特串M'进行哈希计算,得到所述消息摘要e;
在第一随机范围内随机生成第一系数k1,其中,所述第一随机范围基于预设椭圆曲线的基点G的阶数n确定;
基于所述第一系数k1以及所述预设椭圆曲线的n阶基点G,在预设椭圆曲线E上计算所述第一部分签名Q1,Q1 = k1 [*] G,用[ ]表示的运算符为在所述预设椭圆曲线上的运算。
3.根据权利要求2所述的方法,其特征在于,
所述第二随机范围基于预设椭圆曲线的基点G的阶数n确定;
(x1,y1) = P1 [+] D2^(-1) [*] k2 [*]P1 [+] k3 [*] D2^(-1) [*] G;
r = (x1 + e) mod n。
4.根据权利要求3所述的方法,其特征在于,所述计算所述签名横坐标r之后,所述方法还包括:
判断所述签名横坐标r是否为0;
若所述签名横坐标r不为0,则执行所述依据所述预设第二私钥D2确定第二部分签名,否则,返回所述在第二随机范围内随机生成第二系数k2和第三系数k3的步骤重新生成签名横坐标r。
5.根据权利要求4所述的方法,其特征在于,
S1 = (D2 + k2) mod n;
S2 = (k3 + D2 * r) mod n。
6.根据权利要求2至5中任一项所述的方法,其特征在于,所述第一通信终端依据预设第一私钥D1、所述第二部分签名S1、所述第三部分签名S2以及所述签名横坐标r,确定签名纵坐标s,具体包括:
所述第一通信终端依据所述第一系数k1、所述预设第一私钥D1、所述第二部分签名S1、所述第三部分签名S2以及所述签名横坐标r,确定签名纵坐标s,s = ((D1 * k1) * S1 +D1 * S2 - r) mod n。
7.根据权利要求6所述的方法,其特征在于,所述基于所述签名横坐标r以及所述签名纵坐标s输出所述待签名消息M的签名,具体包括:
判断所述签名纵坐标s是否不为0,并且所述签名纵坐标s是否不为所述阶数n与所述签名横坐标r之差;
若判断结果为是,则输出所述待签名消息M的签名(r,s),否则,返回所述生成中间比特串M'的步骤重新获取签名横坐标r和签名纵坐标s并输出签名。
8.根据权利要求1所述的方法,其特征在于,所述第一通信终端生成待签名消息M对应的消息摘要e以及第一部分签名Q1之前,所述方法还包括:
所述第一通信终端依据预设椭圆曲线的基点G的阶数n确定第一随机数范围,并在所述第一随机数范围内生成所述预设第一私钥D1;
所述第一通信终端依据所述预设第一私钥D1以及所述阶数n计算所述预设公钥中间值P1,并将所述预设公钥中间值P1发送至所述第二通信终端;
所述第二通信终端依据预设椭圆曲线的基点G的阶数n确定第二随机数范围,并在所述第二随机数范围内生成所述预设第二私钥D2。
9.根据权利要求8所述的方法,其特征在于,所述在所述第二随机数范围内生成所述预设第二私钥D2之后,所述方法还包括:
所述第二通信终端依据所述预设第二私钥D2、所述预设公钥中间值P1以及所述预设椭圆曲线的n阶基点G,生成公钥。
10.一种协同签名系统,其特征在于,所述系统包括:第一通信终端以及第二通信终端;
所述第一通信终端,用于生成待签名消息M对应的消息摘要e以及第一部分签名Q1,并将所述消息摘要e和所述第一部分签名Q1发送至第二通信终端;
所述第二通信终端,用于在接收到所述消息摘要e和所述第一部分签名Q1后,在第二随机范围内随机生成第二系数k2和第三系数k3;基于预设公钥中间值P1、预设第二私钥D2、所述第二系数k2、所述第三系数k3以及预设椭圆曲线的n阶基点G,计算中间坐标(x1,y1);基于所述中间坐标(x1,y1)、所述阶数n以及所述消息摘要e,计算签名横坐标r,并基于所述预设第二私钥D2、所述第二系数k2以及所述阶数n,计算第二部分签名S1,以及基于所述第三系数、所述预设第二私钥D2、所述签名横坐标r以及所述阶数n,计算第三部分签名S2,其中,所述预设公钥中间值P1通过所述第一通信终端生成;
所述第二通信终端,还用于将所述签名横坐标r以及所述第二部分签名S1和第三部分签名S2发送至所述第一通信终端;
所述第一通信终端,还用于依据预设第一私钥D1、所述第二部分签名S1、所述第三部分签名S2以及所述签名横坐标r,确定签名纵坐标s,并基于所述签名横坐标r以及所述签名纵坐标s输出所述待签名消息M的签名。
CN202210462705.XA 2022-04-29 2022-04-29 一种协同签名方法以及协同签名系统 Active CN114567448B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210462705.XA CN114567448B (zh) 2022-04-29 2022-04-29 一种协同签名方法以及协同签名系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210462705.XA CN114567448B (zh) 2022-04-29 2022-04-29 一种协同签名方法以及协同签名系统

Publications (2)

Publication Number Publication Date
CN114567448A CN114567448A (zh) 2022-05-31
CN114567448B true CN114567448B (zh) 2022-08-02

Family

ID=81721019

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210462705.XA Active CN114567448B (zh) 2022-04-29 2022-04-29 一种协同签名方法以及协同签名系统

Country Status (1)

Country Link
CN (1) CN114567448B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115314205B (zh) * 2022-10-11 2023-01-03 中安网脉(北京)技术股份有限公司 一种基于密钥分割的协同签名系统及方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107196763A (zh) * 2017-07-06 2017-09-22 数安时代科技股份有限公司 Sm2算法协同签名及解密方法、装置与系统
CN107483212A (zh) * 2017-08-15 2017-12-15 武汉信安珞珈科技有限公司 一种双方协作生成数字签名的方法
CN109274503A (zh) * 2018-11-05 2019-01-25 北京仁信证科技有限公司 分布式协同签名方法及分布式协同签名装置、软盾系统
US10659233B1 (en) * 2019-03-15 2020-05-19 Alibaba Group Holding Limited Authentication based on a recovered public key
CN111934877A (zh) * 2020-06-23 2020-11-13 中国科学院信息工程研究所 一种sm2协同门限签名方法及电子装置
CN112632630A (zh) * 2019-10-08 2021-04-09 航天信息股份有限公司 一种基于sm2的协同签名计算方法及装置
CN113032844A (zh) * 2021-03-31 2021-06-25 郑州信大捷安信息技术股份有限公司 椭圆曲线的签名方法、验签方法和装置
CN113158258A (zh) * 2021-03-31 2021-07-23 郑州信大捷安信息技术股份有限公司 一种基于椭圆曲线的协同签名方法、装置和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109245903B (zh) * 2018-09-29 2021-10-01 北京信安世纪科技股份有限公司 双方协同生成sm2算法的签名方法、装置及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107196763A (zh) * 2017-07-06 2017-09-22 数安时代科技股份有限公司 Sm2算法协同签名及解密方法、装置与系统
CN107483212A (zh) * 2017-08-15 2017-12-15 武汉信安珞珈科技有限公司 一种双方协作生成数字签名的方法
CN109274503A (zh) * 2018-11-05 2019-01-25 北京仁信证科技有限公司 分布式协同签名方法及分布式协同签名装置、软盾系统
US10659233B1 (en) * 2019-03-15 2020-05-19 Alibaba Group Holding Limited Authentication based on a recovered public key
CN112632630A (zh) * 2019-10-08 2021-04-09 航天信息股份有限公司 一种基于sm2的协同签名计算方法及装置
CN111934877A (zh) * 2020-06-23 2020-11-13 中国科学院信息工程研究所 一种sm2协同门限签名方法及电子装置
CN113032844A (zh) * 2021-03-31 2021-06-25 郑州信大捷安信息技术股份有限公司 椭圆曲线的签名方法、验签方法和装置
CN113158258A (zh) * 2021-03-31 2021-07-23 郑州信大捷安信息技术股份有限公司 一种基于椭圆曲线的协同签名方法、装置和系统

Also Published As

Publication number Publication date
CN114567448A (zh) 2022-05-31

Similar Documents

Publication Publication Date Title
CN107196763B (zh) Sm2算法协同签名及解密方法、装置与系统
CN107483212B (zh) 一种双方协作生成数字签名的方法
US10142107B2 (en) Token binding using trust module protected keys
CN111200502B (zh) 协同数字签名方法和装置
CN111130803B (zh) 数字签名的方法、系统及装置
CN108667623B (zh) 一种sm2椭圆曲线签名验证算法
CN107483191B (zh) 一种sm2算法密钥分割签名系统及方法
CN109614802B (zh) 抗量子计算的签章方法和签章系统
CN109600228B (zh) 基于公共密钥池的抗量子计算的签章方法和签章系统
CN107360002B (zh) 一种数字证书的申请方法
CN109560935B (zh) 基于公共非对称密钥池的抗量子计算的签章方法和签章系统
CN108199847B (zh) 数字安全处理方法、计算机设备及存储介质
CN112003696B (zh) Sm9密钥生成方法、系统、电子设备、装置及存储介质
CN109921905B (zh) 基于私钥池的抗量子计算密钥协商方法和系统
CN112118113B (zh) 一种基于sm2算法的多方协同群签名方法及装置、系统、介质
CN109936456B (zh) 基于私钥池的抗量子计算数字签名方法和系统
CN112906038B (zh) 基于sm9密钥的门限化处理方法、装置、设备及存储介质
CN112436938B (zh) 数字签名的生成方法、装置和服务器
CN109905229B (zh) 基于群组非对称密钥池的抗量子计算Elgamal加解密方法和系统
CN112152807B (zh) 一种基于sm2算法的两方协同数字签名方法
CN113676333A (zh) 一种两方协作生成sm2盲签名方法
Bellare et al. Deterring certificate subversion: efficient double-authentication-preventing signatures
CN109981576A (zh) 密钥迁移方法和装置
CN110569672A (zh) 一种基于移动设备的高效可信电子签名系统及方法
CN112632630A (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