CN111147254B - 两方协同的EdDSA数字签名生成方法和装置 - Google Patents
两方协同的EdDSA数字签名生成方法和装置 Download PDFInfo
- Publication number
- CN111147254B CN111147254B CN201911343574.8A CN201911343574A CN111147254B CN 111147254 B CN111147254 B CN 111147254B CN 201911343574 A CN201911343574 A CN 201911343574A CN 111147254 B CN111147254 B CN 111147254B
- Authority
- CN
- China
- Prior art keywords
- public key
- signature
- key
- partial
- generating
- 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
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/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/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/3236—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 using cryptographic hash functions
Abstract
本申请提供了一种两方协同的EdDSA数字签名生成方法和装置,其中,该方法包括:第二用户端生成并根据第二部分私钥,生成第二部分公钥,并将第二部分公钥发送给第一用户端;第二用户端接收并根据第一用户端发送的第一部分公钥,生成协同公钥;第二用户端获取待签名的目标信息,根据第二部分私钥、目标信息和第二部分公钥生成临时公钥,并将临时公钥发送给第一用户端;第二用户端接收第一用户端发送的第一部分签名和中间变量;第二用户端根据中间变量生成第二部分签名,并根据第一部分签名和第二部分签名生成目标信息的目标签名。上述方案实现了两方协同完成对目标信息进行EdDSA数字签名,可以有效保证签名密钥的安全性和参与方的公平性。
Description
技术领域
本申请涉及数字签名技术领域,特别涉及一种两方协同的EdDSA数字签名生成方法和装置。
背景技术
随着互联网的发展,许多事务在网络上开展,如电子商务和电子证券等。这些电子事务的完成通常涉及多个参与方,需要多个参与者同时对相关消息进行签名,因此对签名的安全性和参与者的公平性需求较高。
目前,数字签名算法的安全性和公平性较低,因此,需要提供一种提高签名的安全性和公平性的数字签名生成方法。
发明内容
本申请实施例提供了一种两方协同的EdDSA数字签名生成方法和装置,以提供一种提高签名的安全性和公平性的数字签名生成方法。
本申请实施例提供了一种两方协同的EdDSA数字签名生成方法,应用于第二用户端,包括:第二用户端生成并根据第二部分私钥,生成第二部分公钥,并将第二部分公钥发送给第一用户端,其中,第一用户端用于根据第二部分公钥生成协同公钥;第二用户端接收并根据第一用户端发送的第一部分公钥,生成协同公钥,其中,第一部分公钥由第一用户端根据第一用户端所生成的第一部分私钥生成;第二用户端获取待签名的目标信息,根据第二部分私钥、目标信息和第二部分公钥生成临时公钥,并将临时公钥发送给第一用户端;第二用户端接收第一用户端发送的第一部分签名和中间变量,其中,第一部分签名和中间变量由第一用户端根据第一部分私钥、目标信息、协同公钥和临时公钥生成;第二用户端根据中间变量生成第二部分签名,并根据第一部分签名和第二部分签名生成目标信息的目标签名。
在一个实施例中,在第二用户端根据第一部分签名和第二部分签名生成目标信息的目标签名之后,还包括:根据协同公钥确定目标签名是否正确;在确定目标签名正确的情况下,输出目标签名。
在一个实施例中,第二用户端根据第二部分私钥生成第二部分公钥,包括:对第二部分私钥进行哈希运算,得到第二杂凑值;根据第二杂凑值生成第二公钥标量;根据第二公钥标量生成第二部分公钥。
在一个实施例中,对第二部分私钥进行哈希运算,得到第二杂凑值,包括按照以下公式得到第二杂凑值:
其中,H(l2)为第二杂凑值,k2为第二部分私钥,为第二杂凑值中的元素,H(·)为在输入为任意长度比特串{0,1}*时输出2b比特长的密码杂凑函数,k2为b比特长的随机数,其中,b为满足2b-1>p的整数,p为素数;
根据第二杂凑值生成第二公钥标量,包括按照以下公式生成第二公钥标量:
根据第二公钥标量生成第二部分公钥,包括按照以下公式生成第二部分公钥:
A2=s2·B;
其中,A2为第二部分公钥,s2为第二公钥标量,B为循环群E的生成元,E为由椭圆曲线上的点构成的加法循环群。
在一个实施例中,第二用户端根据第一部分公钥生成协同公钥,包括按照以下公式生成协同公钥:
A=s2·A1;
其中,A为协同公钥,A1为第一部分公钥,s2为第二公钥标量。
在一个实施例中,第二用户端根据第二部分私钥、目标信息和第二部分公钥生成临时公钥,包括:根据第二杂凑值和目标信息生成第二消息密钥,其中,第二杂凑值是根据第二部分私钥生成的;根据第二消息密钥和第二部分公钥生成临时公钥。
在一个实施例中,根据第二杂凑值和目标信息生成第二消息密钥,包括按照以下公式生成第二消息密钥:
根据第二消息密钥和第二部分公钥生成临时公钥,包括按照以下公式生成临时密钥:
Q2=r2·A2;
其中,Q2为临时公钥,r2为第二消息密钥,A2为第二部分公钥。
在一个实施例中,第二用户端根据中间变量生成第二部分签名,包括按照以下公式生成第二部分签名:
S=(S1+r2)·s2;
其中,S为第二部分签名,S1为中间变量,r2为第二消息密钥,s2为第二公钥标量。
在一个实施例中,第二用户端根据第一部分签名和第二部分签名生成目标信息的目标签名,包括按照以下公式生成目标信息的目标签名:
δM=ENC(R)||ENC(S);
其中,δM为目标信息的目标签名,R为第一部分签名,S为第二部分签名,ENC(·)为将输入按照小端格式编码为b比特长的字符串的编码函数。
在一个实施例中,第二用户端根据协同公钥确定目标签名是否正确,包括验证以下等式是否正确:
S·B=R+h·A;
其中,R为第一部分签名,S为第二部分签名,B为循环群E的生成元,E为由椭圆曲线上的点构成的加法循环群,A为协同公钥,h=H(ENC(R)||ENC(A)||PH(M)),M为目标信息,ENC(·)为将输入按照小端格式编码为b比特长的字符串的编码函数,PH(M)为M的SHA-512杂凑值。
本申请实施例还提供了一种两方协同的EdDSA数字签名生成方法,应用于第一用户端,包括:第一用户端生成并根据第一部分私钥生成第一部分公钥,并将第一部分公钥发送给第二用户端,其中,第二用户端用于根据第一部分公钥生成协同公钥;第一用户端接收并根据第二用户端发送的第二部分公钥生成协同公钥,其中,第二部分公钥由第二用户端根据第二用户端所生成的第二部分私钥生成;第一用户端接收第二用户端发送的临时公钥,其中,临时公钥由第二用户端根据待签名的目标信息和第二部分公钥生成;第一用户端获取目标信息,根据第一部分私钥、目标信息、协同公钥和临时公钥生成第一部分签名和中间变量,并将中间变量和第一部分签名发送给第二用户端,其中,第二用户端用于根据中间变量生成第二部分签名,并根据第一部分签名和第二部分签名生成目标信息的目标签名。
在一个实施例中,第一用户端根据第一部分私钥生成第一部分公钥,包括按照以下公式生成第一部分公钥:
A1=s1·B;
其中,A1为第一部分公钥,B为循环群E的生成元,E为由椭圆曲线上的点构成的加法循环群,其中,s1为第一公钥标量,为H(k1)中的元素,其中,i=c,…,n-1,H(k1)为第一杂凑值,k1为第一部分私钥,b为满足2b-1>p的整数,p为素数,c为辅因子,是以2为底的对数,n为满足c≤n<b的整数。
在一个实施例中,第一用户端根据第二部分公钥生成协同公钥,包括按照以下公式生成协同公钥。
A=s1·A2;
其中,A为协同公钥,A2为第二部分公钥,S1为第一公钥标量。
在一个实施例中,第一用户端根据第一部分私钥、目标信息、协同公钥和临时公钥生成第一部分签名和中间变量,包括按照以下公式生成第一部分签名和中间变量:
R=r1·A+Q2;
S1=(r1+h)·s1;
其中,R为第一部分签名,S1为中间变量,A为协同公钥,Q2为临时公钥, 为H(k1)中的元素,H(k1)为第一杂凑值,k1为第一部分私钥,r1为第一消息密钥,h=H(ENC(R)||ENC(A)||PH(M)),H(·)为在输入为任意长度比特串{0,1}*时输出2b比特长的密码杂凑函数,M为目标信息,ENC(·)为将输入按照小端格式编码为b比特长的字符串的编码函数,PH(M)为M的SHA-512杂凑值。
本申请实施例还提供了一种两方协同的EdDSA数字签名生成方法,应用于第一用户端和第二用户端,包括:第二用户端获取待签名的目标信息,根据目标信息和第二部分私钥生成第二消息密钥,并根据第二消息密钥和第二部分公钥生成临时公钥;第二用户端将临时公钥发送给第一用户端;第一用户端获取目标信息,根据目标信息和第一部分私钥生成第一消息密钥,并根据第一消息密钥、临时公钥、目标信息和协同公钥生成第一部分签名和中间变量,其中,协同公钥由第一用户端与第二用户端按照预设的密钥生成算法协同生成;第一用户端将中间变量和第一部分签名发送给第二用户端;第二用户端根据中间变量、第二消息密钥生成第二部分签名,并根据第一部分签名和第二部分签名生成目标信息的目标签名。
本申请实施例还提供了一种两方协同的EdDSA数字签名生成装置,位于第二用户端中,包括:生成模块,用于生成并根据第二部分私钥,生成第二部分公钥,并将第二部分公钥发送给第一用户端,其中,第一用户端用于根据第二部分公钥生成协同公钥;第一接收模块,用于接收并根据第一用户端发送的第一部分公钥,生成协同公钥,其中,第一部分公钥由第一用户端根据第一用户端所生成的第一部分私钥生成;获取模块,用于获取待签名的目标信息,根据第二部分私钥、目标信息和第二部分公钥生成临时公钥,并将临时公钥发送给第一用户端;第二接收模块,用于接收第一用户端发送的第一部分签名和中间变量,其中,第一部分签名和中间变量由第一用户端根据第一部分私钥、目标信息、协同公钥和临时公钥生成;签名模块,用于根据中间变量生成第二部分签名,并根据第一部分签名和第二部分签名生成目标信息的目标签名。
本申请实施例还提供一种计算机设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述任意实施例中所述的两方协同的EdDSA数字签名生成方法的步骤。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现上述任意实施例中所述的两方协同的EdDSA数字签名生成方法的步骤。
在本申请实施例中,提供了一种两方协同的EdDSA数字签名生成方法,第二用户端生成第二部分私钥,并根据第二部分私钥生成第二部分公钥,并将第二部分公钥发送给第一用户端,第一用户端根据第二部分公钥生成协同公钥,第二用户端接收第一用户端发送的第一部分公钥,并根据第一部分公钥生成协同公钥,其中,第一部分公钥由第一用户端根据第一用户端所生成的第一部分私钥生成,第二用户端获取待签名的目标信息,根据第二部分私钥、目标信息和第二部分公钥生成临时公钥,并将临时公钥发送给第一用户端,第二用户端接收第一用户端发送的第一部分签名和中间变量,其中,第一部分签名和中间变量由第一用户端根据第一部分私钥、目标信息、协同公钥和临时公钥生成,第二用户端根据中间变量生成第二部分签名,并根据第一部分签名和第二部分签名生成目标信息的目标签名。上述方案中,第一用户端和第二用户端各自生成第一部分私钥和第二部分私钥,在不泄露各自的部分私钥的情况下,第一用户端与第二用户端协同生成协同公钥,之后,第一用户端和第二用户端分别利用各自的部分私钥和协同公钥对待签名的目标信息进行签名,分别得到第一部分签名和第二部分签名,然后,第二用户端可以根据第一部分签名和第二部分签名生成目标信息的目标签名,从而实现了在两方不泄露自己的部分私钥并且无法获得完整的签名私钥的情况下共同完成对目标信息的数字签名,即,实现在两方之间分布式地完成数字签名,数字签名必须由两方共同参与,并且在签名过程中没有恢复完整的签名密钥,保证签名密钥的安全性和参与方的公平性;此外,上述方法是两方协同的EdDSA签名生成方法,相比于现有的数字签名算法,本方案的运算速度更快,而且密钥与签名空间较小。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,并不构成对本申请的限定。在附图中:
图1示出了本申请一实施例中两方协同的EdDSA数字签名生成方法的应用场景的示意图;
图2示出了本申请一实施例中的两方协同的EdDSA数字签名生成方法的流程图;
图3示出了本申请一实施例中的两方协同的EdDSA数字签名生成方法的流程图;
图4示出了本申请一实施例中的两方协同的EdDSA数字签名生成方法的流程图;
图5示出了本申请一实施例中的两方协同的EdDSA数字签名生成方法中的密钥生成算法示意图;
图6示出了本申请一实施例中的两方协同的EdDSA数字签名生成方法中的签名生成算法示意图;
图7示出了本申请一实施例中的两方协同的EdDSA数字签名生成方法的顺序图;
图8示出了本申请一实施例中的两方协同的EdDSA数字签名生成装置的示意图;
图9示出了本申请一实施例中的计算机设备的示意图。
具体实施方式
下面将参考若干示例性实施方式来描述本申请的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本申请,而并非以任何方式限制本申请的范围。相反,提供这些实施方式是为了使本申请公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域的技术人员知道,本申请的实施方式可以实现为一种系统、装置设备、方法或计算机程序产品。因此,本申请公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
目前,一般情况下,用户会使用秘密共享的思想来共同生成数字签名。在这种方法中,签名密钥被分割成n个子密钥,并安全地分给n个参与者掌管,这些参与者中的t个(t<n)及以上个参与者所构成的子集可以重构签名密钥,少于t个参与者则无法获得任何关于完整签名密钥的信息。然而,当恢复出完整签名密钥之后,持有完整签名密钥的一方就可以在其他参与方不知情的情况下独立地进行签名,威胁了安全性和公平性。特别是在只有两个参与方的情况下,某一方恢复并持有完整签名密钥,就可以在另一方不知情的情况下,独立地进行数字签名,这在电子货币系统中会造成直接的利益损失。
为此,研究人员已经提出了多种不同方案和不同特性的协同签名算法,但没有针对EdDSA(Edwards-curve Digital Signature Algorithm,爱德华兹曲线数字签名算法)的协同签名算法的实现方案。EdDSA是一种基于Twisted Edwards(扭曲爱德华兹)曲线的变型数字签名方案,其运算速度更快且密钥与签名空间也较小。
基于以上问题,本申请实施例提供了一种两方协同的EdDSA数字签名生成方法。图1示出了本申请一实施例中两方协同的EdDSA数字签名生成方法的应用场景的示意图。如图1所示,第一用户端生成第一部分私钥,根据第一部分私钥生成第一部分公钥,并将第一部分公钥发送给第二用户端。第二用户端生成第二部分私钥,根据第二部分私钥生成第二部分公钥,并将第二部分公钥发送给第一用户端。第一用户端根据第二部分公钥生成协同公钥。第二用户端根据第第一部分公钥生成协同公钥。第二用户端获取待签名的目标信息,并根据第二部分私钥、目标信息和第二部分公钥生成临时公钥,并将临时公钥发送给第一用户端。第一用户端获取目标信息,并根据第一部分私钥、目标信息、协同公钥和临时公钥生成第一部分签名和中间变量,并将中间变量和第一部分签名发送给第二用户端。第二用户端根据中间变量生成第二部分签名,并根据第一部分签名和第二部分签名生成目标信息的目标签名。
上述方案可以实现在两方不泄露自己的部分私钥并且无法获得完整的签名私钥的情况下共同完成对目标信息的数字签名。即,可以实现在两方之间分布式地完成数字签名,数字签名必须由两方共同参与,并且在签名过程中没有恢复完整的签名密钥,保证签名密钥的安全性和参与方的公平性;此外,上述方法是两方协同的EdDSA签名生成方法,相比于现有的数字签名算法,本方案的运算速度更快,而且密钥与签名空间较小。
图2示出了本申请一实施例中两方协同的EdDSA数字签名生成方法的流程图。虽然本申请提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本申请实施例描述及附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构连接进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至分布式处理环境)。
具体地,如图2所示,本申请一种实施例提供的两方协同的EdDSA数字签名生成方法应用第二用户端,可以包括以下步骤:
步骤S201,第二用户端生成并根据第二部分私钥,生成第二部分公钥,并将第二部分公钥发送给第一用户端,其中,第一用户端用于根据第二部分公钥生成协同公钥。
步骤S202,第二用户端接收并根据第一用户端发送的第一部分公钥,生成协同公钥,其中,第一部分公钥由第一用户端根据第一用户端所生成的第一部分私钥生成。
具体的,第二用户端生成第二部分私钥,并根据第二部分私钥生成第二部分公钥。第一用户端生成第一部分私钥,并根据第一部分私钥生成第一部分公钥。第二用户端将生成的第二部分公钥发送给第一用户端。第一用户端将生成的第一部分公钥发送给第二用户端。第一用户端根据第二部分公钥生成协同公钥。第二用户端根据第一部分公钥生成协同公钥。其中,第一部分私钥为签名私钥的一部分,第二部分私钥为签名私钥的一部分。第一部分公钥为协同公钥的一部分,第二部分公钥为协同公钥的一部分。
步骤S203,第二用户端获取待签名的目标信息,根据第二部分私钥、目标信息和第二部分公钥生成临时公钥,并将临时公钥发送给第一用户端。
步骤S204,第二用户端接收第一用户端发送的第一部分签名和中间变量,其中,第一部分签名和中间变量由第一用户端根据第一部分私钥、目标信息、协同公钥和临时公钥生成。
具体的,第二用户端获取待签名的目标信息。其中,目标信息可以是电子商务或电子证券等相关的交易信息或账单信息等。第二用户端根据第二部分私钥、目标信息和第二部分公钥生成临时公钥。第二用户端将生成的临时公钥发送至第一用户端。第一用户端获取目标信息。第一用户端根据第一部分私钥、目标信息、协同公钥和临时公钥生成第一部分签名和中间变量。其中,第一部分签名为目标信息的签名的一部分。
步骤S205,第二用户端根据中间变量生成第二部分签名,并根据第一部分签名和第二部分签名生成目标信息的目标签名。
具体的,第二用户端根据接收到的中间变量生成第二部分签名。其中,第二部分签名为目标信息的签名的一部分。第二用户端可以根据第一部分签名和第二部分签名生成目标信息的目标签名。
上述方案中,第一用户端和第二用户端各自生成第一部分私钥和第二部分私钥,在不泄露各自的部分私钥的情况下,第一用户端与第二用户端协同生成协同公钥,之后,第一用户端和第二用户端分别利用各自的部分私钥和协同公钥对待签名的目标信息进行签名,分别得到第一部分签名和第二部分签名,然后,第二用户端可以根据第一部分签名和第二部分签名生成目标信息的目标签名,从而实现了在两方不泄露自己的部分私钥并且无法获得完整的签名私钥的情况下共同完成对目标信息的数字签名,即,实现在两方之间分布式地完成数字签名,数字签名必须由两方共同参与,并且在签名过程中没有恢复完整的签名密钥,保证签名密钥的安全性和参与方的公平性;此外,上述方法是两方协同的EdDSA签名生成方法,相比于现有的数字签名算法,本方案的运算速度更快,而且密钥与签名空间较小。
在本申请一些实施例中,在第二用户端根据第一部分签名和第二部分签名生成目标信息的目标签名之后,还可以包括:根据协同公钥确定目标签名是否正确;在确定目标签名正确的情况下,输出目标签名。
具体的,为了保证目标签名的正确性,在输出目标信息的目标签名之前,可以根据协同公钥确定目标签名是否正确,并且在确定目标签名正确的情况下,输出目标信息的目标签名。在确定目标签名不正确的情况下,可以生成签名失败信息。通过上述方式,可以保证签名的正确性。
在本申请一些实施例中,第二用户端根据第二部分私钥生成第二部分公钥,可以包括:对第二部分私钥进行哈希运算,得到第二杂凑值;根据第二杂凑值生成第二公钥标量;根据第二公钥标量生成第二部分公钥。
具体的,在第二用户端生成第二部分私钥之后,第二用户端可以对第二部分私钥进行哈希运算,得到第二杂凑值。第二用户端可以根据第二杂凑值生成第二公钥标量。之后,第二用户端可以根据第二公钥标量生成第二部分公钥。通过上述方式,可以根据第二部分私钥生成第二部分公钥。
进一步地,在本申请一些实施例中,对第二部分私钥进行哈希运算,得到第二杂凑值,可以包括按照以下公式得到第二杂凑值:
其中,H(k2)为第二杂凑值,k2为第二部分私钥,为第二杂凑值中的元素,h(·)为在输入为任意长度比特串{0,1}*时输出2b比特长的密码杂凑函数,k2为b比特长的随机数,其中,b为满足2b-1>p的整数,b为EdDSA公钥或签名序列化后的比特长,通常设定为8的倍数,p为素数。
进一步地,在本申请一些实施例中,根据第二杂凑值生成第二公钥标量,可以包括按照以下公式生成第二公钥标量:
进一步地,在本申请一些实施例中,根据第二公钥标量生成第二部分公钥,可以包括按照以下公式生成第二部分公钥:
A2=s2·B;
其中,A2为第二部分公钥,s2为第二公钥标量,B为循环群E的生成元,且B≠(0,1),E为由椭圆曲线上的点构成的加法循环群,定义为{(x,y)∈GF(p)×GF(p)且a·x2+y2=1+d·x2·y2},GF(p)为由整数0,1,2,…,p-1组成的有限域,p为素数。
在本申请一些实施例中,第二用户端根据第一部分公钥生成协同公钥,可以包括按照以下公式生成协同公钥:
A=s2·A1;
其中,A为协同公钥,A1为第一部分公钥,s2为第二公钥标量。
进一步地,在本申请一些实施例中,第二用户端根据第二部分私钥、目标信息和第二部分公钥生成临时公钥,可以包括:根据第二杂凑值和目标信息生成第二消息密钥,其中,第二杂凑值是根据第二部分私钥生成的;根据第二消息密钥和第二部分公钥生成临时公钥。
具体的,第二用户端可以根据第二杂凑值和目标信息生成第二消息密钥。其中,第二杂凑值由第二用户端根据第二部分私钥生成的。第二用户端可以根据第二消息密钥和第二部分公钥生成临时公钥。通过上述方式,第二用户端可以根据第二部分私钥、目标信息和第二部分公钥生成临时公钥。
进一步地,在本申请一些实施例中,根据第二杂凑值和目标信息生成第二消息密钥,可以包括按照以下公式生成第二消息密钥:
进一步地,在本申请一些实施例中,根据第二消息密钥和第二部分公钥生成临时公钥,包括按照以下公式生成临时密钥:
Q2=r2·A2;
其中,Q2为临时公钥,r2为第二消息密钥,A2为第二部分公钥。
进一步地,在本申请一些实施例中,在本申请一些实施例中,第二用户端根据中间变量生成第二部分签名,包括按照以下公式生成第二部分签名:
S=(S1+r2)·s2;
其中,S为第二部分签名,S1为中间变量,r2为第二消息密钥,s2为第二公钥标量。
进一步地,在本申请一些实施例中,第二用户端根据第一部分签名和第二部分签名生成目标信息的目标签名,可以包括按照以下公式生成目标信息的目标签名:
δM=ENC(R)||ENC(S);
其中,δM为目标信息的目标签名,R为第一部分签名,S为第二部分签名,ENC(·)为将输入按照小端格式编码为b比特长的字符串的编码函数。
进一步地,在本申请一些实施例中,第二用户端根据协同公钥确定目标签名是否正确,可以包括验证以下等式是否正确:
S·B=R+h·A;
其中,R为第一部分签名,S为第二部分签名,B为循环群E的生成元,且B≠(0,1),E为由椭圆曲线上的点构成的加法循环群,可以定义为{(x,y)∈GF(p)×GF(p)且a·x2+y2=1+d·x2·y2},其中GF(p)为由整数0,1,2,…,p-1组成的有限域,A为协同公钥,h=H(ENC(R)||ENC(A)||PH(M)),M为目标信息,ENC(·)为将输入按照小端格式编码为b比特长的字符串的编码函数,PH(M)为M的SHA-512杂凑值。
图3示出了本申请一实施例中两方协同的EdDSA数字签名生成方法的流程图。如图3所示,该方法应用于第一用户端,可以包括以下步骤:
步骤S301,第一用户端生成并根据第一部分私钥生成第一部分公钥,并将第一部分公钥发送给第二用户端,其中,第二用户端用于根据第一部分公钥生成协同公钥。
步骤S302,第一用户端接收并根据第二用户端发送的第二部分公钥生成协同公钥,其中,第二部分公钥由第二用户端根据第二用户端所生成的第二部分私钥生成。
具体的,第一用户端将生成的第一部分公钥发送给第二用户端。第二用户端生成第二部分私钥,并根据第二部分私钥生成第二部分公钥。第一用户端生成第一部分私钥,并根据第一部分私钥生成第一部分公钥。第二用户端将生成的第二部分公钥发送给第一用户端。第二用户端根据第一部分公钥生成协同公钥。第一用户端根据第二部分公钥生成协同公钥。其中,第一部分私钥为签名私钥的一部分,第二部分私钥为签名私钥的一部分。第一部分公钥为协同公钥的一部分,第二部分公钥为协同公钥的一部分。
步骤S303,第一用户端接收第二用户端发送的临时公钥,其中,临时公钥由第二用户端根据待签名的目标信息和第二部分公钥生成。
步骤S304,第一用户端获取目标信息,根据第一部分私钥、目标信息、协同公钥和临时公钥生成第一部分签名和中间变量,并将中间变量和第一部分签名发送给第二用户端,其中,第二用户端用于根据中间变量生成第二部分签名,并根据第一部分签名和第二部分签名生成目标信息的目标签名。
具体的,第二用户端获取待签名的目标信息。其中,目标信息可以是电子商务或电子证券等相关的交易信息或账单信息等。第二用户端根据第二部分私钥、目标信息和第二部分公钥生成临时公钥。第二用户端将生成的临时公钥发送至第一用户端。第一用户端获取目标信息。第一用户端根据第一部分私钥、目标信息、协同公钥和临时公钥生成第一部分签名和中间变量。其中,第一部分签名为目标信息的签名的一部分。第二用户端根据接收到的中间变量生成第二部分签名。其中,第二部分签名为目标信息的签名的一部分。第二用户端可以根据第一部分签名和第二部分签名生成目标信息的目标签名。
上述方案中,第一用户端和第二用户端各自生成第一部分私钥和第二部分私钥,在不泄露各自的部分私钥的情况下,第一用户端与第二用户端协同生成协同公钥,之后,第一用户端和第二用户端分别利用各自的部分私钥和协同公钥对待签名的目标信息进行签名,分别得到第一部分签名和第二部分签名,然后,第二用户端可以根据第一部分签名和第二部分签名生成目标信息的目标签名,从而实现了在两方不泄露自己的部分私钥并且无法获得完整的签名私钥的情况下共同完成对目标信息的数字签名,即,实现在两方之间分布式地完成数字签名,数字签名必须由两方共同参与,并且在签名过程中没有恢复完整的签名密钥,保证签名密钥的安全性和参与方的公平性;此外,上述方法是两方协同的EdDSA签名生成方法,相比于现有的数字签名算法,本方案的运算速度更快,而且密钥与签名空间较小。
进一步地,在本申请一些实施例中,第一用户端根据第一部分私钥生成第一部分公钥,包括按照以下公式生成第一部分公钥:
A1=s1·B;
其中,A1为第一部分公钥,其中,s1为第一公钥标量,为H(k1)中的元素,其中,i=c,…,n-1,H(k1)为第一杂凑值,k1为第一部分私钥,b为满足2b-1>p的整数,p为素数,c为辅因子,是以2为底的对数,n为满足c≤n<b的整数,B为循环群E的生成元,且B≠(0,1),E为由椭圆曲线上的点构成的加法循环群,可以定义为{(x,y)∈GF(p)×GF(p)且a·x2+y2=1+d·x2·y2},其中GF(p)为由整数0,1,2,…,p-1组成的有限域。
进一步地,在本申请一些实施例中,第一用户端根据第二部分公钥生成协同公钥,包括按照以下公式生成协同公钥。
A=s1·A2;
其中,A为协同公钥,A2为第二部分公钥,s1为第一公钥标量。
进一步地,在本申请一些实施例中,第一用户端根据第一部分私钥、目标信息、协同公钥和临时公钥生成第一部分签名和中间变量,包括按照以下公式生成第一部分签名和中间变量:
R=r1·A+Q2;
S1=(r1+h)·s1;
其中,R为第一部分签名,S1为中间变量,A为协同公钥,Q2为临时公钥, 为H(k1)中的元素,H(k1)为第一杂凑值,k1为第一部分私钥,r1为第一消息密钥,h=H(ENC(R)||ENC(A)||PH(M)),H(·)为在输入为任意长度比特串{0,1}*时输出2b比特长的密码杂凑函数,M为目标信息,ENC(·)为将输入按照小端格式编码为b比特长的字符串的编码函数,PH(M)为M的SHA-512杂凑值。
图4示出了本申请一实施例中两方协同的EdDSA数字签名生成方法的流程图。如图4所示,该方法应用于第一用户端和第二用户端,可以包括以下步骤:
步骤S401,第二用户端获取待签名的目标信息,根据目标信息和第二部分私钥生成第二消息密钥,并根据第二消息密钥和第二部分公钥生成临时公钥。
步骤S402,第二用户端将临时公钥发送给第一用户端。
步骤S403,第一用户端获取目标信息,根据目标信息和第一部分私钥生成第一消息密钥,并根据第一消息密钥、临时公钥、目标信息和协同公钥生成第一部分签名和中间变量,其中,协同公钥由第一用户端与第二用户端按照预设的密钥生成算法协同生成。
步骤S404,第一用户端将中间变量和第一部分签名发送给第二用户端。
步骤S405,第二用户端根据中间变量和第二消息密钥生成第二部分签名,并根据第一部分签名和第二部分签名生成目标信息的目标签名。
上述方案中,第一用户端和第二用户端各自生成第一部分私钥和第二部分私钥,并且协同生成协同公钥,之后,第一用户端和第二用户端分别利用各自的部分私钥和协同公钥对待签名的目标信息进行签名,分别得到第一部分签名和第二部分签名,然后,第二用户端可以根据第一部分签名和第二部分签名生成目标信息的目标签名,从而实现了在两方不泄露自己的部分私钥并且无法获得完整的签名私钥的情况下共同完成对目标信息的数字签名,可以有效保证签名密钥的安全性和参与方的公平性;此外,上述方法是两方协同的EdDSA签名生成方法,相比于现有的数字签名算法,本方案的运算速度更快,而且密钥与签名空间较小。
请参考图5,图5示出了本申请一实施例中的预设的密钥生成算法的示意图。在图5中,P1表示第一用户端,P2表示第二用户端。如图5所示,密钥生成算法包括以下步骤:
步骤3,P1根据第一公钥标量和第二部分公钥生成协同公钥A,即计算A=s1·A2;P2根据第二公钥标量和第一部分公钥生成协同公钥A,即计算A=s2·A1。
其中,H(·)为在输入为任意长度比特串{0,1}*时输出2b比特长的密码杂凑函数,其中,b为满足2b-1>p的整数,p为素数,c为辅因子,是以2为底的对数,n为满足c≤n<b的整数,B为循环群E的生成元,且B≠(0,1),E为由椭圆曲线上的点构成的加法循环群,定义为{(x,y)∈GF(p)×GF(p)且a·x2+y2=1+d·x2·y2},GF(p)为由整数0,1,2,…,p-1组成的有限域。
请参考图6,图6示出了本申请一实施例中的预设的签名生成算法的示意图。在图6中,P1表示第一用户端,P2表示第二用户端。如图6所示,签名生成算法包括以下步骤:
步骤1,P2获取目标信息M,并根据目标信息M和第二杂凑值H(k2)计算第二消息密钥r2,即计算根据第二消息密钥r2和第二部分公钥A2生成临时公钥Q2,即计算Q2=r2·A2,将临时公钥Q2发送给P1。
步骤2,P1获取目标信息M,并根据目标信息M和第一杂凑值H(k1)计算计算第一消息密钥r1,即计算根据第一消息密钥r1、协同公钥A和临时公钥Q2生成第一部分签名R,即计算R=r1·A+Q2;P1根据第一消息密钥r1、第一公钥标量s1、第一部分签名R、协同公钥A和目标信息M生成中间变量S1,即计算S1=(r1+h)·s1,其中h是分别将第一部分签名R和协同公钥A序列化编码后,连同PH(M)一起执行哈希运算得到的杂凑值,即h=H(ENC(R)||ENC(A)||PH(M)),P1将(R,S1)发送给P2。
步骤3,P2根据中间变量S1、第二消息密钥r2和第二公钥标量s2生成第二部分签名S,即计算S=(S1+r2)·s2,并根据第一部分签名R和第二部分签名S生成目标信息M的目标签名δM,即计算δM=ENC(R)||ENC(S),即序列化编码(R,S)得到最终关于目标信息M的目标签名δM,通过验证等式S·B=R+h·A是否成立来验证目标签名的正确性,若等式成立,则目标签名正确并输出目标签名δM,否则终止协议。
其中,B为循环群E的生成元,且B≠(0,1),E为由椭圆曲线上的点构成的加法循环群,可以定义为{(x,y)∈GF(p)×GF(p)且a·x2+y2=1+d·x2·y2},其中GF(p)为由整数0,1,2,...,p-1组成的有限域,ENC(·)为将输入按照小端格式编码为b比特长的字符串的编码函数,PH(M)为M的SHA-512杂凑值,H(·)为在输入为任意长度比特串{0,1}*时输出2b比特长的密码杂凑函数。
下面结合一个具体实施例对上述方法进行说明,然而,值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。
请参考图7,图7示出了在本实施例中的两方协同的EdDSA数字签名生成方法的顺序图。如图7所示,该方法包括以下步骤:
步骤1,第一用户端生成第一部分私钥,根据第一部分私钥生成第一杂凑值,根据第一杂凑值生成第一公钥标量,根据第一公钥标量生成第一部分公钥,具体地,第一用户端生成b比特长的随机数k1作为第一部分私钥,对第一部分私钥k1执行哈希运算,得到第一杂凑值计算第一公钥标量 并由此计算第一部分公钥A1=s1·B;
步骤2,第一用户端将第一部分公钥A1发送给第二用户端;
步骤3,第二用户端生成第二部分私钥,根据第二部分私钥生成第二杂凑值,根据第二杂凑值生成第二公钥标量,根据第二公钥标量生成第二部分公钥,具体地,第二用户端生成b比特长的随机数k2作为第二部分私钥,对第二部分私钥k2执行哈希运算,得到第二杂凑值计算第二公钥标量 并由此计算第二部分公钥A2=s2·B;
步骤4,第二用户端将第二部分公钥A2发送给第一用户端;
步骤5,第一用户端根据第一公钥标量和第二部分公钥生成协同公钥,具体地,根据第一公钥标量s1和第二部分公钥A2生成协同公钥A,即计算A=s1·A2;
步骤6,第二用户端根据第二公钥标量和第一部分公钥生成协同公钥,具体地,根据第二公钥标量s2和第一部分公钥A1生成协同公钥A,即计算A=s2·A1;
步骤7,第二用户端获取待签名的目标信息,并根据第二杂凑值和目标信息生成第二消息密钥,根据第二消息密钥和第二部分公钥生成临时公钥,具体地,根据目标信息M和第二杂凑值H(k2)计算第二消息密钥r2,即计算根据第二消息密钥r2和第二部分公钥A2生成临时公钥Q2,即计算Q2=r2·A2;
步骤8,第二用户端将临时公钥Q2发送给第一用户端;
步骤9,第一用户端获取目标信息,并根据第一杂凑值和目标信息生成第一消息密钥,根据第一消息密钥、协同公钥和临时公钥生成第一部分签名,根据第一消息密钥、第一部分签名、协同公钥和目标信息生成中间变量,具体地,根据目标信息M和第一杂凑值H(k1)计算计算第一消息密钥r1,即计算根据第一消息密钥r1、协同公钥A和临时公钥Q2生成第一部分签名R,即计算R=r1·A+Q2,根据第一消息密钥r1、第一公钥标量s1、第一部分签名R、协同公钥A和目标信息M生成中间变量S1,即计算S1=(r1+h)·s1,其中h=H(ENC(R)||ENC(A)||PH(M));
步骤10,第一用户端将中间变量S1和第一部分签名R发送给第二用户端;
步骤11,第二用户端根据中间变量、第二消息密钥和第二公钥标量生成第二部分签名,并根据第一部分签名和第二部分签名生成目标信息的目标签名,具体地,根据中间变量S1、第二消息密钥r2和第二公钥标量s2生成第二部分签名S,即计算S=(S1+r2)·s2,并根据第一部分签名R和第二部分签名S生成目标信息M的目标签名δM,即计算δM=ENC(R)||ENC(S);
步骤12,第二用户端根据协同公钥验证目标签名的正确性,在确定目标签名正确的情况下,输出目标签名,具体地,通过验证等式S·B=R+h·A是否成立来验证目标签名的正确性,若等式成立,则目标签名正确并输出目标签名δM,否则终止协议,其中,R为第一部分签名,S为第二部分签名,B为循环群E的生成元,E为由椭圆曲线上的点构成的加法循环群,A为协同公钥,h=H(ENC(R)||ENC(A)||PH(M)),M为目标信息。
其中,H(·)为在输入为任意长度比特串{0,1}*时输出2b比特长的密码杂凑函数,其中,b为满足2b-1>p的整数,p为素数,c为辅因子,是以2为底的对数,n为满足c≤n<b的整数,B为循环群E的生成元,且B≠(0,1),E为由椭圆曲线上的点构成的加法循环群,定义为{(x,y)∈GF(p)×GF(p)且a·x2+y2=1+d·x2·y2},GF(p)为由整数0,1,2,…,p-1组成的有限域,ENC(·)为将输入按照小端格式编码为b比特长的字符串的编码函数,PH(M)为M的SHA-512杂凑值。
上述两方协同的EdDSA数字签名生成方法中,第一用户端和第二用户端各自生成第一部分私钥和第二部分私钥,在不泄露各自的部分私钥的情况下,第一用户端与第二用户端协同生成协同公钥,之后,第一用户端和第二用户端分别利用各自的部分私钥和协同公钥对待签名的目标信息进行签名,分别得到第一部分签名和第二部分签名,然后,第二用户端可以根据第一部分签名和第二部分签名生成目标信息的目标签名,从而实现了在两方不泄露自己的部分私钥并且无法获得完整的签名私钥的情况下共同完成对目标信息的数字签名,即,实现在两方之间分布式地完成数字签名,数字签名必须由两方共同参与,并且在签名过程中没有恢复完整的签名密钥,可以有效保证签名密钥的安全性和参与方的公平性;此外,上述方法是两方协同的EdDSA签名生成方法,相比于现有的数字签名算法,本方案的运算速度更快,而且密钥与签名空间较小。
基于同一发明构思,本申请实施例中还提供了一种两方协同的EdDSA数字签名生成装置,如下面的实施例所述。由于两方协同的EdDSA数字签名生成装置解决问题的原理与两方协同的EdDSA数字签名生成方法相似,因此两方协同的EdDSA数字签名生成装置的实施可以参见两方协同的EdDSA数字签名生成方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图8是本申请实施例的两方协同的EdDSA数字签名生成装置的一种结构框图,如图8所示,包括:生成模块801、第一接收模块802、获取模块803、第二接收模块804和签名模块805,下面对该结构进行说明。
生成模块801用于生成并根据第二部分私钥,生成第二部分公钥,并将第二部分公钥发送给第一用户端,其中,第一用户端用于根据第二部分公钥生成协同公钥。
第一接收模块802用于接收并根据第一用户端发送的第一部分公钥,生成协同公钥,其中,第一部分公钥由第一用户端根据第一用户端所生成的第一部分私钥生成。
获取模块803用于获取待签名的目标信息,根据第二部分私钥、目标信息和第二部分公钥生成临时公钥,并将临时公钥发送给第一用户端。
第二接收模块804用于接收第一用户端发送的第一部分签名和中间变量,其中,第一部分签名和中间变量由第一用户端根据第一部分私钥、目标信息、协同公钥和临时公钥生成。
签名模块805用于根据中间变量生成第二部分签名,并根据第一部分签名和第二部分签名生成目标信息的目标签名。
在本申请一些实施例中,该装置还可以包括验证模块,验证模块可以用于:在第二用户端根据第一部分签名和第二部分签名生成目标信息的目标签名之后,根据协同公钥确定目标签名是否正确;在确定目标签名正确的情况下,输出目标签名。
在本申请一些实施例中,第二用户端根据第二部分私钥生成第二部分公钥,可以包括:对第二部分私钥进行哈希运算,得到第二杂凑值;根据第二杂凑值生成第二公钥标量;根据第二公钥标量生成第二部分公钥。
在本申请一些实施例中,对第二部分私钥进行哈希运算,得到第二杂凑值,可以包括按照以下公式得到第二杂凑值:
其中,H(k2)为第二杂凑值,k2为第二部分私钥,为第二杂凑值中的元素,H(·)为在输入为任意长度比特串{0,1}*时输出2b比特长的密码杂凑函数,k2为b比特长的随机数,其中,b为满足2b-1>p的整数,p为素数;
根据第二杂凑值生成第二公钥标量,可以包括按照以下公式生成第二公钥标量:
根据第二公钥标量生成第二部分公钥,可以包括按照以下公式生成第二部分公钥:
A2=s2·B;
其中,A2为第二部分公钥,s2为第二公钥标量,B为循环群E的生成元,E为由椭圆曲线上的点构成的加法循环群。
在本申请一些实施例中,第二用户端根据第一部分公钥生成协同公钥,可以包括按照以下公式生成协同公钥:
A=s2·A1;
其中,A为协同公钥,A1为第一部分公钥,s2为第二公钥标量。
在本申请一些实施例中,第二用户端根据第二部分私钥、目标信息和第二部分公钥生成临时公钥,可以包括:根据第二杂凑值和目标信息生成第二消息密钥,其中,第二杂凑值是根据第二部分私钥生成的;根据第二消息密钥和第二部分公钥生成临时公钥。
在本申请一些实施例中,根据第二杂凑值和目标信息生成第二消息密钥,可以包括按照以下公式生成第二消息密钥:
根据第二消息密钥和第二部分公钥生成临时公钥,可以包括按照以下公式生成临时密钥:
Q2=r2·A2;
其中,Q2为临时公钥,r2为第二消息密钥,A2为第二部分公钥。
在本申请一些实施例中,第二用户端根据中间变量生成第二部分签名,可以包括按照以下公式生成第二部分签名:
S=(S1+r2)·s2;
其中,S为第二部分签名,S1为中间变量,r2为第二消息密钥,s2为第二公钥标量。
在本申请一些实施例中,第二用户端根据第一部分签名和第二部分签名生成目标信息的目标签名,可以包括按照以下公式生成目标信息的目标签名:
δM=ENC(R)||ENC(S);
其中,δM为目标信息的目标签名,R为第一部分签名,S为第二部分签名,ENC(·)为将输入按照小端格式编码为b比特长的字符串的编码函数。
在本申请一些实施例中,第二用户端根据协同公钥确定目标签名是否正确,可以包括验证以下等式是否正确:
S·B=R+h·A;
其中,R为第一部分签名,S为第二部分签名,B为循环群E的生成元,E为由椭圆曲线上的点构成的加法循环群,A为协同公钥,h=H(ENC(R)||ENC(A)||PH(M)),M为目标信息,ENC(·)为将输入按照小端格式编码为b比特长的字符串的编码函数,PH(M)为M的SHA-512杂凑值。
从以上的描述中,可以看出,本申请实施例实现了如下技术效果:第一用户端和第二用户端各自生成第一部分私钥和第二部分私钥,在不泄露各自的部分私钥的情况下,第一用户端与第二用户端协同生成协同公钥,之后,第一用户端和第二用户端分别利用各自的部分私钥和协同公钥对待签名的目标信息进行签名,分别得到第一部分签名和第二部分签名,然后,第二用户端可以根据第一部分签名和第二部分签名生成目标信息的目标签名,从而实现了在两方不泄露自己的部分私钥并且无法获得完整的签名私钥的情况下共同完成对目标信息的数字签名,即,实现在两方之间分布式地完成数字签名,数字签名必须由两方共同参与,并且在签名过程中没有恢复完整的签名密钥,保证签名密钥的安全性和参与方的公平性;此外,上述方法是两方协同的EdDSA签名生成方法,相比于现有的数字签名算法,本方案的运算速度更快,而且密钥与签名空间较小。
本申请实施方式还提供了一种计算机设备,具体可以参阅图9所示的基于本申请实施例提供的两方协同的EdDSA数字签名生成方法的计算机设备组成结构示意图,所述计算机设备具体可以包括输入设备91、处理器92、存储器93。其中,所述存储器93用于存储处理器可执行指令。所述处理器92执行所述指令时实现上述任意实施例中所述的两方协同的EdDSA数字签名生成方法的步骤。
在本实施方式中,所述输入设备具体可以是用户和计算机系统之间进行信息交换的主要装置之一。所述输入设备可以包括键盘、鼠标、摄像头、扫描仪、光笔、手写输入板、语音输入装置等;输入设备用于把原始数据和处理这些数的程序输入到计算机中。所述输入设备还可以获取接收其他模块、单元、设备传输过来的数据。所述处理器可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。所述存储器具体可以是现代信息技术中用于保存信息的记忆设备。所述存储器可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。
在本实施方式中,该计算机设备具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
本申请实施方式中还提供了一种基于两方协同的EdDSA数字签名生成方法的计算机存储介质,所述计算机存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现上述任意实施例中所述两方协同的EdDSA数字签名生成方法的步骤。
在本实施方式中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard DiskDrive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
在本实施方式中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
应该理解,以上描述是为了进行图示说明而不是为了进行限制。通过阅读上述描述,在所提供的示例之外的许多实施方式和许多应用对本领域技术人员来说都将是显而易见的。因此,本申请的范围不应该参照上述描述来确定,而是应该参照前述权利要求以及这些权利要求所拥有的等价物的全部范围来确定。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请实施例可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (18)
1.一种两方协同的EdDSA数字签名生成方法,其特征在于,应用于第二用户端,所述方法包括:
所述第二用户端生成并根据第二部分私钥,生成第二部分公钥,并将所述第二部分公钥发送给第一用户端,其中,所述第一用户端用于根据所述第二部分公钥生成协同公钥;
所述第二用户端接收并根据所述第一用户端发送的第一部分公钥,生成所述协同公钥,其中,所述第一部分公钥由所述第一用户端根据所述第一用户端所生成的第一部分私钥生成;
所述第二用户端获取待签名的目标信息,根据所述第二部分私钥、所述目标信息和所述第二部分公钥生成临时公钥,并将所述临时公钥发送给所述第一用户端;
所述第二用户端接收所述第一用户端发送的第一部分签名和中间变量,其中,所述第一部分签名和所述中间变量由所述第一用户端根据所述第一部分私钥、所述目标信息、所述协同公钥和所述临时公钥生成;
所述第二用户端根据所述中间变量生成第二部分签名,并根据所述第一部分签名和所述第二部分签名生成所述目标信息的目标签名。
2.根据权利要求1所述的方法,其特征在于,在所述第二用户端根据所述第一部分签名和所述第二部分签名生成所述目标信息的目标签名之后,还包括:
根据所述协同公钥确定所述目标签名是否正确;
在确定所述目标签名正确的情况下,输出所述目标签名。
3.根据权利要求2所述的方法,其特征在于,所述第二用户端根据所述第二部分私钥生成第二部分公钥,包括:
对所述第二部分私钥进行哈希运算,得到第二杂凑值;
根据所述第二杂凑值生成第二公钥标量;
根据所述第二公钥标量生成所述第二部分公钥。
4.根据权利要求3所述的方法,其特征在于,对所述第二部分私钥进行哈希运算,得到第二杂凑值,包括按照以下公式得到所述第二杂凑值:
根据所述第二杂凑值生成第二公钥标量,包括按照以下公式生成所述第二公钥标量:
根据所述第二公钥标量生成所述第二部分公钥,包括按照以下公式生成所述第二部分公钥:
6.根据权利要求3所述的方法,其特征在于,所述第二用户端根据所述第二部分私钥、所述目标信息和所述第二部分公钥生成临时公钥,包括:
根据所述第二杂凑值和所述目标信息生成第二消息密钥,其中,所述第二杂凑值是根据所述第二部分私钥生成的;
根据所述第二消息密钥和所述第二部分公钥生成临时公钥。
11.一种两方协同的EdDSA数字签名生成方法,其特征在于,应用于第一用户端,包括:
所述第一用户端生成并根据第一部分私钥生成第一部分公钥,并将所述第一部分公钥发送给第二用户端,其中,所述第二用户端用于根据所述第一部分公钥生成协同公钥;
所述第一用户端接收并根据所述第二用户端发送的第二部分公钥生成所述协同公钥,其中,所述第二部分公钥由所述第二用户端根据所述第二用户端所生成的第二部分私钥生成;
所述第一用户端接收所述第二用户端发送的临时公钥,其中,所述临时公钥由所述第二用户端根据待签名的目标信息和所述第二部分公钥生成;
所述第一用户端获取所述目标信息,根据所述第一部分私钥、所述目标信息、所述协同公钥和所述临时公钥生成第一部分签名和中间变量,并将所述中间变量和所述第一部分签名发送给所述第二用户端,其中,所述第二用户端用于根据所述中间变量生成第二部分签名,并根据所述第一部分签名和所述第二部分签名生成所述目标信息的目标签名。
15.一种两方协同的EdDSA数字签名生成方法,其特征在于,应用于第一用户端和第二用户端,所述方法包括:
所述第二用户端获取待签名的目标信息,根据所述目标信息和第二部分私钥生成第二消息密钥,并根据所述第二消息密钥和第二部分公钥生成临时公钥;
所述第二用户端将所述临时公钥发送给所述第一用户端;
所述第一用户端获取所述目标信息,根据所述目标信息和第一部分私钥生成第一消息密钥,并根据所述第一消息密钥、所述临时公钥、所述目标信息和协同公钥生成第一部分签名和中间变量,其中,所述协同公钥由所述第一用户端与所述第二用户端按照预设的密钥生成算法协同生成;
所述第一用户端将所述中间变量和所述第一部分签名发送给所述第二用户端;
所述第二用户端根据所述中间变量和所述第二消息密钥生成第二部分签名,并根据所述第一部分签名和所述第二部分签名生成所述目标信息的目标签名。
16.一种两方协同的EdDSA数字签名生成装置,其特征在于,位于第二用户端中,包括:
生成模块,用于生成并根据第二部分私钥,生成第二部分公钥,并将所述第二部分公钥发送给第一用户端,其中,所述第一用户端用于根据所述第二部分公钥生成协同公钥;
第一接收模块,用于接收并根据所述第一用户端发送的第一部分公钥,生成所述协同公钥,其中,所述第一部分公钥由所述第一用户端根据所述第一用户端所生成的第一部分私钥生成;
获取模块,用于获取待签名的目标信息,根据所述第二部分私钥、所述目标信息和所述第二部分公钥生成临时公钥,并将所述临时公钥发送给所述第一用户端;
第二接收模块,用于接收所述第一用户端发送的第一部分签名和中间变量,其中,所述第一部分签名和所述中间变量由所述第一用户端根据所述第一部分私钥、所述目标信息、所述协同公钥和所述临时公钥生成;
签名模块,用于根据所述中间变量生成第二部分签名,并根据所述第一部分签名和所述第二部分签名生成所述目标信息的目标签名。
17.一种计算机设备,其特征在于,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求1至10中任一项所述方法的步骤。
18.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述指令被执行时实现权利要求1至10中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911343574.8A CN111147254B (zh) | 2019-12-24 | 2019-12-24 | 两方协同的EdDSA数字签名生成方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911343574.8A CN111147254B (zh) | 2019-12-24 | 2019-12-24 | 两方协同的EdDSA数字签名生成方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111147254A CN111147254A (zh) | 2020-05-12 |
CN111147254B true CN111147254B (zh) | 2022-09-02 |
Family
ID=70519563
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911343574.8A Active CN111147254B (zh) | 2019-12-24 | 2019-12-24 | 两方协同的EdDSA数字签名生成方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111147254B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111740843A (zh) * | 2020-06-18 | 2020-10-02 | 成都卫士通信息产业股份有限公司 | 分布式EdDSA签名方法、装置、设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10530585B2 (en) * | 2017-06-07 | 2020-01-07 | Bar-Ilan University | Digital signing by utilizing multiple distinct signing keys, distributed between two parties |
CN107911217B (zh) * | 2017-10-30 | 2021-02-26 | 陈彦丰 | 基于ecdsa算法协同生成签名的方法、装置和数据处理系统 |
EP3496331A1 (en) * | 2017-12-08 | 2019-06-12 | Koninklijke Philips N.V. | Two-party signature device and method |
CN109936455B (zh) * | 2017-12-19 | 2022-06-07 | 航天信息股份有限公司 | 一种数字签名的方法、装置和系统 |
CN110365487A (zh) * | 2019-07-19 | 2019-10-22 | 北京向芯力科技有限公司 | 一种基于sm2算法的协同签名方法与装置 |
-
2019
- 2019-12-24 CN CN201911343574.8A patent/CN111147254B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111147254A (zh) | 2020-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7208989B2 (ja) | ブロックチェーン上に検証鍵を記録するためのシステム | |
CN110351096B (zh) | 多重签名方法、签名中心、程序介质及电子设备 | |
WO2020019341A1 (zh) | 区块链账户的处理方法、装置和存储介质 | |
CN110380862B (zh) | 基于隐式证书的签名验证方法、装置和计算机设备 | |
CN111147246B (zh) | 一种基于sm2的多方协同签名方法及系统 | |
CN110311776B (zh) | 范围证明方法、装置、计算机设备和存储介质 | |
CN106878022B (zh) | 在区块链上签名、验证的方法及装置 | |
WO2019034983A1 (en) | GENERATION OF RANDOM NUMBERS IN A BLOCK CHAIN | |
CN111566988A (zh) | 跨越以无信任或无交易员方式操作的群组执行计算任务的计算机实现的系统和方法 | |
MXPA04010155A (es) | Uso de isogenias para el diseno de criptosistemas. | |
US20210377048A1 (en) | Digital Signature Method, Signature Information Verification Method, Related Apparatus and Electronic Device | |
CN111010285B (zh) | 一种适用于轻量级客户端的sm2两方协同签名方法及介质 | |
US11616641B2 (en) | Computer implemented system and method for sharing a common secret | |
JP4988448B2 (ja) | 一括検証装置、プログラム及び一括検証方法 | |
CN112436938A (zh) | 数字签名的生成方法、装置和服务器 | |
CN110233733B (zh) | 面向区块链智能合约的不可拆分数字签名通用构造方法 | |
CN113939821A (zh) | 用于在工作量证明区块链网络上进行非并行挖掘的系统和方法 | |
CN111147254B (zh) | 两方协同的EdDSA数字签名生成方法和装置 | |
US20220278843A1 (en) | Computer implemented method and system for knowledge proof in blockchain transactions | |
CN108667619B (zh) | 一种sm9数字签名的白盒实现方法与装置 | |
Orman | Recent parables in cryptography | |
WO2023159849A1 (zh) | 一种数字签名方法、计算机设备及介质 | |
CN117795901A (zh) | 生成数字签名份额 | |
CN110336674B (zh) | 范围证明方法、装置、计算机设备和存储介质 | |
WO2021127951A1 (zh) | 两方协同的EdDSA数字签名生成方法和装置 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230506 Address after: 518061 room 304, block B, building 5, software industry base, Nanshan District, Shenzhen City, Guangdong Province Patentee after: JUZIX TECHNOLOGY (SHENZHEN) Co.,Ltd. Patentee after: WUHAN University Address before: 518061 room 304, block B, building 5, software industry base, Nanshan District, Shenzhen City, Guangdong Province Patentee before: JUZIX TECHNOLOGY (SHENZHEN) Co.,Ltd. |