WO2021127951A1 - 两方协同的EdDSA数字签名生成方法和装置 - Google Patents

两方协同的EdDSA数字签名生成方法和装置 Download PDF

Info

Publication number
WO2021127951A1
WO2021127951A1 PCT/CN2019/127720 CN2019127720W WO2021127951A1 WO 2021127951 A1 WO2021127951 A1 WO 2021127951A1 CN 2019127720 W CN2019127720 W CN 2019127720W WO 2021127951 A1 WO2021127951 A1 WO 2021127951A1
Authority
WO
WIPO (PCT)
Prior art keywords
public key
signature
partial
key
target information
Prior art date
Application number
PCT/CN2019/127720
Other languages
English (en)
French (fr)
Inventor
何德彪
冯琦
谢翔
孙立林
Original Assignee
云图技术有限公司
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 云图技术有限公司 filed Critical 云图技术有限公司
Priority to PCT/CN2019/127720 priority Critical patent/WO2021127951A1/zh
Publication of WO2021127951A1 publication Critical patent/WO2021127951A1/zh

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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

本申请提供了一种两方协同的EdDSA数字签名生成方法和装置,其中,该方法包括:第二用户端生成并根据第二部分私钥,生成第二部分公钥,并将第二部分公钥发送给第一用户端;第二用户端接收并根据第一用户端发送的第一部分公钥,生成协同公钥;第二用户端获取待签名的目标信息,根据第二部分私钥、目标信息和第二部分公钥生成临时公钥,并将临时公钥发送给第一用户端;第二用户端接收第一用户端发送的第一部分签名和中间变量;第二用户端根据中间变量生成第二部分签名,并根据第一部分签名和第二部分签名生成目标信息的目标签名。上述方案实现了两方协同完成对目标信息进行EdDSA数字签名,可以有效保证签名密钥的安全性和参与方的公平性。

Description

两方协同的EdDSA数字签名生成方法和装置 技术领域
本申请涉及数字签名技术领域,特别涉及一种两方协同的EdDSA数字签名生成方法和装置。
背景技术
随着互联网的发展,许多事务在网络上开展,如电子商务和电子证券等。这些电子事务的完成通常涉及多个参与方,需要多个参与者同时对相关消息进行签名,因此对签名的安全性和参与者的公平性需求较高。
目前,数字签名算法的安全性和公平性较低,因此,需要提供一种提高签名的安全性和公平性的数字签名生成方法。
发明内容
本申请实施例提供了一种两方协同的EdDSA数字签名生成方法和装置,以提供一种提高签名的安全性和公平性的数字签名生成方法。
本申请实施例提供了一种两方协同的EdDSA数字签名生成方法,应用于第二用户端,包括:第二用户端生成并根据第二部分私钥,生成第二部分公钥,并将第二部分公钥发送给第一用户端,其中,第一用户端用于根据第二部分公钥生成协同公钥;第二用户端接收并根据第一用户端发送的第一部分公钥,生成协同公钥,其中,第一部分公钥由第一用户端根据第一用户端所生成的第一部分私钥生成;第二用户端获取待签名的目标信息,根据第二部分私钥、目标信息和第二部分公钥生成临时公钥,并将临时公钥发送给第一用户端;第二用户端接收第一用户端发送的第一部分签名和中间变量,其中,第一部分签名和中间变量由第一用户端根据第一部分私钥、目标信息、协同公钥和临时公钥生成;第二用户端根据中间变量生成第二部分签名,并根据第一部分签名和第二部分签名生成目标信息的目标签名。
本申请实施例还提供了一种两方协同的EdDSA数字签名生成方法,应用于第一用户端,包括:第一用户端生成并根据第一部分私钥生成第一部分公钥,并将第一部分公钥发送给第二用户端,其中,第二用户端用于根据第一部分公钥生成协同公钥;第一用户端接收并根据第二用户端发送的第二部分公钥生成协同公钥,其中,第二部分公钥由第二用户端根据第二用户端所生成的第二部分私钥生成;第一用户端接收第二用户端发送的临时公钥,其中,临时公钥由第二用户端根据待签名的目标信息和第二部分公钥生成;第一用户端获取目标信息,根据第一部分私钥、目标信息、协同公钥和临时公钥生成第一部分签名和中间变量,并将中间变量和第一部分签名发送给第二用户端,其中,第二用户端用于根据中间变量生成第二部分签名,并根据第一部分签名和第二部分签名生成目标信息的目标签名。
本申请实施例还提供了一种两方协同的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签名生成方法,相比于现有的数字签名算法,本方案的运算速度更快,而且密钥与签名空间较小。
在本申请一些实施例中,在第二用户端根据第一部分签名和第二部分签名生成目标信息的目标签名之后,还可以包括:根据协同公钥确定目标签名是否正确;在确定目标签名正确的情况下,输出目标签名。
具体的,为了保证目标签名的正确性,在输出目标信息的目标签名之前,可以根据协同公钥确定目标签名是否正确,并且在确定目标签名正确的情况下,输出目标信息的目标签名。在确定目标签名不正确的情况下,可以生成签名失败信息。通过上述方式,可以保证签名的正确性。
在本申请一些实施例中,第二用户端根据第二部分私钥生成第二部分公钥,可以包括:对第二部分私钥进行哈希运算,得到第二杂凑值;根据第二杂凑值生成第二公钥标量;根据第二公钥标量生成第二部分公钥。
具体的,在第二用户端生成第二部分私钥之后,第二用户端可以对第二部分私钥进行哈希运算,得到第二杂凑值。第二用户端可以根据第二杂凑值生成第二公钥标量。之后,第二用户端可以根据第二公钥标量生成第二部分公钥。通过上述方式,可以根据第二部分私钥生成第二部分公钥。
进一步地,在本申请一些实施例中,对第二部分私钥进行哈希运算,得到第二杂凑值,可以包括按照以下公式得到第二杂凑值:
Figure PCTCN2019127720-appb-000001
其中,H(k 2)为第二杂凑值,k 2为第二部分私钥,
Figure PCTCN2019127720-appb-000002
为第二杂凑值中的元素,H(·)为在输入为任意长度比特串{0,1} *时输出2b比特长的密码杂凑函数,k 2为b比特长的随机数,其中,b为满足2 b-1>p的整数,b为EdDSA公钥或签名序列化后的比特长,通常设定为8的倍数,p为素数。
进一步地,在本申请一些实施例中,根据第二杂凑值生成第二公钥标量,可以包括按照以下公式生成第二公钥标量:
Figure PCTCN2019127720-appb-000003
其中,s 2为第二公钥标量,
Figure PCTCN2019127720-appb-000004
为第二杂凑值H(k 2)中的元素,其中,i=c,…,n-1,其中, c为辅因子,是以2为底的对数,n为满足c≤n<b的整数。其中,c一般为2或3,EdDSA标量必为2 c的倍数。
进一步地,在本申请一些实施例中,根据第二公钥标量生成第二部分公钥,可以包括按照以下公式生成第二部分公钥:
A 2=s 2·B;
其中,A 2为第二部分公钥,s 2为第二公钥标量,B为循环群E的生成元,且B≠(0,1),E为由椭圆曲线上的点构成的加法循环群,定义为{(x,y)∈GF(p)×GF(p)且a·x 2+y 2=1+d·x 2·y 2},GF(p)为由整数0,1,2,…,p-1组成的有限域,p为素数。
在本申请一些实施例中,第二用户端根据第一部分公钥生成协同公钥,可以包括按照以下公式生成协同公钥:
A=s 2·A 1
其中,A为协同公钥,A 1为第一部分公钥,s 2为第二公钥标量。
进一步地,在本申请一些实施例中,第二用户端根据第二部分私钥、目标信息和第二部分公钥生成临时公钥,可以包括:根据第二杂凑值和目标信息生成第二消息密钥,其中,第二杂凑值是根据第二部分私钥生成的;根据第二消息密钥和第二部分公钥生成临时公钥。
具体的,第二用户端可以根据第二杂凑值和目标信息生成第二消息密钥。其中,第二杂凑值由第二用户端根据第二部分私钥生成的。第二用户端可以根据第二消息密钥和第二部分公钥生成临时公钥。通过上述方式,第二用户端可以根据第二部分私钥、目标信息和第二部分公钥生成临时公钥。
进一步地,在本申请一些实施例中,根据第二杂凑值和目标信息生成第二消息密钥,可以包括按照以下公式生成第二消息密钥:
Figure PCTCN2019127720-appb-000005
其中,r 2为第二消息密钥,M为目标信息,H(·)为在输入为任意长度比特串{0,1} *时输出2b比特长的密码杂凑函数,
Figure PCTCN2019127720-appb-000006
为H(k 2)中的元素,H(k 2)为第二杂凑值,
Figure PCTCN2019127720-appb-000007
Figure PCTCN2019127720-appb-000008
k 2为第二部分私钥。
进一步地,在本申请一些实施例中,根据第二消息密钥和第二部分公钥生成临时公钥,包括按照以下公式生成临时密钥:
Q 2=r 2·A 2
其中,Q 2为临时公钥,r 2为第二消息密钥,A 2为第二部分公钥。
进一步地,在本申请一些实施例中,在本申请一些实施例中,第二用户端根据中间变量生成第二部分签名,包括按照以下公式生成第二部分签名:
S=(S 1+r 2)·s 2
其中,S为第二部分签名,S 1为中间变量,r 2为第二消息密钥,s 2为第二公钥标量。
进一步地,在本申请一些实施例中,第二用户端根据第一部分签名和第二部分签名生成目标信息的目标签名,可以包括按照以下公式生成目标信息的目标签名:
δ 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·x 2+y 2=1+d·x 2·y 2},其中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签名生成方法,相比于现有的数字签名算法,本方案的运算速度更快,而且密钥与签名空间较小。
进一步地,在本申请一些实施例中,第一用户端根据第一部分私钥生成第一部分公钥,包括按照以下公式生成第一部分公钥:
A 1=s 1·B;
其中,A 1为第一部分公钥,
Figure PCTCN2019127720-appb-000009
其中,s 1为第一公钥标量,
Figure PCTCN2019127720-appb-000010
为H(k 1)中的元素,其中,i=c,…,n-1,H(k 1)为第一杂凑值,k 1为第一部分私钥,
Figure PCTCN2019127720-appb-000011
b为满足2 b-1>p的整数,p为素数,c为辅因子,是以2为底的对数,n为满足c≤n<b的整数,B为循环群E的生成元,且B≠(0,1),E为由椭圆曲线上的点构成的加法循环群,可以定义为{(x,y)∈GF(p)×GF(p)且a·x 2+y 2=1+d·x 2·y 2},其中GF(p)为由整数0,1,2,…,p-1组成的有限域。
进一步地,在本申请一些实施例中,第一用户端根据第二部分公钥生成协同公钥,包括按照以下公式生成协同公钥。
A=s 1·A 2
其中,A为协同公钥,A 2为第二部分公钥,s 1为第一公钥标量。
进一步地,在本申请一些实施例中,第一用户端根据第一部分私钥、目标信息、协同公钥和临时公钥生成第一部分签名和中间变量,包括按照以下公式生成第一部分签名和中间变量:
R=r 1·A+Q 2
S 1=(r 1+h)·s 1
其中,R为第一部分签名,S 1为中间变量,A为协同公钥,Q 2为临时公钥,
Figure PCTCN2019127720-appb-000012
为H(k 1)中的元素,H(k 1)为第一杂凑值,k 1为第一部分私钥,
Figure PCTCN2019127720-appb-000013
r 1为第一消息密钥,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中,P 1表示第一用户端,P 2表示第二用户端。如图5所示,密钥生成算法包括以下步骤:
步骤1,P 1生成b比特长的随机数k 1作为第一部分私钥,对第一部分私钥k 1执行哈希运算,得到第一杂凑值
Figure PCTCN2019127720-appb-000014
计算第一公钥标量
Figure PCTCN2019127720-appb-000015
并由此计算第一部分公钥A 1=s 1·B,并将第一部分公钥A 1发送给P 2
步骤2,P 2生成b比特长的随机数k 2作为第二部分私钥,对第二部分私钥k 2执行哈希运算,得到第二杂凑值
Figure PCTCN2019127720-appb-000016
计算第二公钥标量
Figure PCTCN2019127720-appb-000017
并由此计算第二部分公钥A 2=s 2·B,将第二部分公钥A 2发送给P 1
步骤3,P 1根据第一公钥标量和第二部分公钥生成协同公钥A,即计算A=s 1·A 2;P 2根据第二公钥标量和第一部分公钥生成协同公钥A,即计算A=s 2·A 1
其中,H(·)为在输入为任意长度比特串{0,1} *时输出2b比特长的密码杂凑函数,其中,b为满足2 b-1>p的整数,p为素数,c为辅因子,是以2为底的对数,n为满足c≤n<b的整数,B为循环群E的生成元,且B≠(0,1),E为由椭圆曲线上的点构成的加法循环群,定义为{(x,y)∈GF(p)×GF(p)且a·x 2+y 2=1+d·x 2·y 2},GF(p)为由整数0,1,2,…,p-1组成的有限域。
请参考图6,图6示出了本申请一实施例中的预设的签名生成算法的示意图。在图6中,P 1表示第一用户端,P 2表示第二用户端。如图6所示,签名生成算法包括以下步骤:
步骤1,P 2获取目标信息M,并根据目标信息M和第二杂凑值H(k 2)计算第二消息密钥r 2,即计算
Figure PCTCN2019127720-appb-000018
根据第二消息密钥r 2和第二部分公钥A 2生成临时公钥Q 2,即计算Q 2=r 2·A 2,将临时公钥Q 2发送给P 1
步骤2,P 1获取目标信息M,并根据目标信息M和第一杂凑值H(k 1)计算计算第一消息密钥r 1,即计算
Figure PCTCN2019127720-appb-000019
根据第一消息密钥r 1、协同公钥A和临时公钥Q 2生成第一部分签名R,即计算R=r 1·A+Q 2;P 1根据第一消息密钥r 1、第一公钥标量s 1、第一部分签名R、协同公钥A和目标信息M生成中间变量S 1,即计算S 1=(r 1+h)·s 1,其中h是分别将第一部分签名R和协同公钥A序列化编码后,连同PH(M)一起执行哈希运算得到的杂凑值,即h=H(ENC(R)||ENC(A)||PH(M)),P 1将(R,S 1)发送给P 2
步骤3,P 2根据中间变量S 1、第二消息密钥r 2和第二公钥标量s 2生成第二部分签名S,即计算S=(S 1+r 2)·s 2,并根据第一部分签名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·x 2+y 2=1+d·x 2·y 2},其中GF(p)为由整数0,1,2,…,p-1组成的有限域,ENC(·)为将输入按照小端格式编码为b比特长的字符串的编码函数,PH(M)为M的SHA-512杂凑值,H(·)为在输入为任意长度比特串{0,1} *时输出2b比特长的密码杂凑函数。
下面结合一个具体实施例对上述方法进行说明,然而,值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。
请参考图7,图7示出了在本实施例中的两方协同的EdDSA数字签名生成方法的顺序图。如图7所示,该方法包括以下步骤:
步骤1,第一用户端生成第一部分私钥,根据第一部分私钥生成第一杂凑值,根据第一杂凑值生成第一公钥标量,根据第一公钥标量生成第一部分公钥,具体地,第一用户端生成b比特长的随机数k 1作为第一部分私钥,对第一部分私钥k 1执行哈希运算,得到第一杂凑值
Figure PCTCN2019127720-appb-000020
Figure PCTCN2019127720-appb-000021
计算第一公钥标量
Figure PCTCN2019127720-appb-000022
并由此计算第一部分公钥A 1=s 1·B;
步骤2,第一用户端将第一部分公钥A 1发送给第二用户端;
步骤3,第二用户端生成第二部分私钥,根据第二部分私钥生成第二杂凑值,根据第二杂凑值生成第二公钥标量,根据第二公钥标量生成第二部分公钥,具体地,第二用户端生成b比特长的随机数k 2作为第二部分私钥,对第二部分私钥k 2执行哈希运算,得到第二杂凑值
Figure PCTCN2019127720-appb-000023
Figure PCTCN2019127720-appb-000024
计算第二公钥标量
Figure PCTCN2019127720-appb-000025
并由此计算第二部分公钥A 2=s 2·B;
步骤4,第二用户端将第二部分公钥A 2发送给第一用户端;
步骤5,第一用户端根据第一公钥标量和第二部分公钥生成协同公钥,具体地,根据第一公钥标量s 1和第二部分公钥A 2生成协同公钥A,即计算A=s 1·A 2
步骤6,第二用户端根据第二公钥标量和第一部分公钥生成协同公钥,具体地,根据第二公钥标量s 2和第一部分公钥A 1生成协同公钥A,即计算A=s 2·A 1
步骤7,第二用户端获取待签名的目标信息,并根据第二杂凑值和目标信息生成第二消息密钥,根据第二消息密钥和第二部分公钥生成临时公钥,具体地,根据目标信息M和第二杂凑值H(k 2)计算第二消息密钥r 2,即计算
Figure PCTCN2019127720-appb-000026
根据第二消息密钥r 2和第二部分公钥A 2生成临时公钥Q 2,即计算Q 2=r 2·A 2
步骤8,第二用户端将临时公钥Q 2发送给第一用户端;
步骤9,第一用户端获取目标信息,并根据第一杂凑值和目标信息生成第一消息密钥,根据第一消息密钥、协同公钥和临时公钥生成第一部分签名,根据第一消息密钥、第一部分签名、协同公钥和目标信息生成中间变量,具体地,根据目标信息M和第一杂凑值H(k 1)计算计算第一消息密钥r 1,即计算
Figure PCTCN2019127720-appb-000027
根据第一消息密钥r 1、协同公钥A和临时公钥Q 2生成第一部分签名R,即计算R=r 1·A+Q 2,根据第一消息密钥r 1、第一公钥标量s 1、第一部分签名R、协同公钥A和目标信息M生成中间变量S 1,即计算S 1=(r 1+h)·s 1,其中h=H(ENC(R)||ENC(A)||PH(M));
步骤10,第一用户端将中间变量S 1和第一部分签名R发送给第二用户端;
步骤11,第二用户端根据中间变量、第二消息密钥和第二公钥标量生成第二部分签名,并根据第一部分签名和第二部分签名生成目标信息的目标签名,具体地,根据中间变量S 1、第二消息密钥r 2和第二公钥标量s 2生成第二部分签名S,即计算S=(S 1+r 2)·s 2,并根据第一部分签名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为满足2 b-1>p的整数,p为素数,c为辅因子,是以2为底的对数,n为满足c≤n<b的整数,B为循环群E的生成元,且B≠(0,1),E为由椭圆曲线上的点构成的加法循环群,定义为{(x,y)∈GF(p)×GF(p)且a·x 2+y 2=1+d·x 2·y 2},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用于根据中间变量生成第二部分签名,并根据第一部分签名和第二部分签名生成目标信息的目标签名。
在本申请一些实施例中,该装置还可以包括验证模块,验证模块可以用于:在第二用户端根据第一部分签名和第二部分签名生成目标信息的目标签名之后,根据协同公钥确定目标签名是否正确;在确定目标签名正确的情况下,输出目标签名。
在本申请一些实施例中,第二用户端根据第二部分私钥生成第二部分公钥,可以包括:对第二部分私钥进行哈希运算,得到第二杂凑值;根据第二杂凑值生成第二公钥标量;根据第二公钥标量生成第二部分公钥。
在本申请一些实施例中,对第二部分私钥进行哈希运算,得到第二杂凑值,可以包括按照以下公式得到第二杂凑值:
Figure PCTCN2019127720-appb-000028
其中,H(k 2)为第二杂凑值,k 2为第二部分私钥,
Figure PCTCN2019127720-appb-000029
为第二杂凑值中的元素,H(·)为在输入为任意长度比特串{0,1} *时输出2b比特长的密码杂凑函数,k 2为b比特长的随机数,其中,b为满足2 b-1>p的整数,p为素数;
根据第二杂凑值生成第二公钥标量,可以包括按照以下公式生成第二公钥标量:
Figure PCTCN2019127720-appb-000030
其中,s 2为第二公钥标量,
Figure PCTCN2019127720-appb-000031
为第二杂凑值中的元素,其中,i=c,…,n-1,其中,c为辅因子,是以2为底的对数,n为满足c≤n<b的整数;
根据第二公钥标量生成第二部分公钥,可以包括按照以下公式生成第二部分公钥:
A 2=s 2·B;
其中,A 2为第二部分公钥,s 2为第二公钥标量,B为循环群E的生成元,E为由椭圆曲线上的点构成的加法循环群。
在本申请一些实施例中,第二用户端根据第一部分公钥生成协同公钥,可以包括按照以下公式生成协同公钥:
A=s 2·A 1
其中,A为协同公钥,A 1为第一部分公钥,s 2为第二公钥标量。
在本申请一些实施例中,第二用户端根据第二部分私钥、目标信息和第二部分公钥生成临时公钥,可以包括:根据第二杂凑值和目标信息生成第二消息密钥,其中,第二杂凑值是根据第二部分私钥生成的;根据第二消息密钥和第二部分公钥生成临时公钥。
在本申请一些实施例中,根据第二杂凑值和目标信息生成第二消息密钥,可以包括按照以下公式生成第二消息密钥:
Figure PCTCN2019127720-appb-000032
其中,r 2为第二消息密钥,M为目标信息,H(·)为在输入为任意长度比特串{0,1} *时输出2b比 特长的密码杂凑函数,
Figure PCTCN2019127720-appb-000033
为H(k 2)中的元素,H(k 2)为第二杂凑值,
Figure PCTCN2019127720-appb-000034
Figure PCTCN2019127720-appb-000035
k 2为第二部分私钥;
根据第二消息密钥和第二部分公钥生成临时公钥,可以包括按照以下公式生成临时密钥:
Q 2=r 2·A 2
其中,Q 2为临时公钥,r 2为第二消息密钥,A 2为第二部分公钥。
在本申请一些实施例中,第二用户端根据中间变量生成第二部分签名,可以包括按照以下公式生成第二部分签名:
S=(S 1+r 2)·s 2
其中,S为第二部分签名,S 1为中间变量,r 2为第二消息密钥,s 2为第二公钥标量。
在本申请一些实施例中,第二用户端根据第一部分签名和第二部分签名生成目标信息的目标签名,可以包括按照以下公式生成目标信息的目标签名:
δ 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 Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard Disk Drive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
在本实施方式中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
应该理解,以上描述是为了进行图示说明而不是为了进行限制。通过阅读上述描述,在所提供的示例之外的许多实施方式和许多应用对本领域技术人员来说都将是显而易见的。因此,本申请的范围不应该参照上述描述来确定,而是应该参照前述权利要求以及这些权利要求所拥有的等价物的全部范围来确定。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请实施例可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (18)

  1. 一种两方协同的EdDSA数字签名生成方法,其特征在于,应用于第二用户端,所述方法包括:
    所述第二用户端生成并根据第二部分私钥,生成第二部分公钥,并将所述第二部分公钥发送给第一用户端,其中,所述第一用户端用于根据所述第二部分公钥生成协同公钥;
    所述第二用户端接收并根据所述第一用户端发送的第一部分公钥,生成所述协同公钥,其中,所述第一部分公钥由所述第一用户端根据所述第一用户端所生成的第一部分私钥生成;
    所述第二用户端获取待签名的目标信息,根据所述第二部分私钥、所述目标信息和所述第二部分公钥生成临时公钥,并将所述临时公钥发送给所述第一用户端;
    所述第二用户端接收所述第一用户端发送的第一部分签名和中间变量,其中,所述第一部分签名和所述中间变量由所述第一用户端根据所述第一部分私钥、所述目标信息、所述协同公钥和所述临时公钥生成;
    所述第二用户端根据所述中间变量生成第二部分签名,并根据所述第一部分签名和所述第二部分签名生成所述目标信息的目标签名。
  2. 根据权利要求1所述的方法,其特征在于,在所述第二用户端根据所述第一部分签名和所述第二部分签名生成所述目标信息的目标签名之后,还包括:
    根据所述协同公钥确定所述目标签名是否正确;
    在确定所述目标签名正确的情况下,输出所述目标签名。
  3. 根据权利要求2所述的方法,其特征在于,所述第二用户端根据所述第二部分私钥生成第二部分公钥,包括:
    对所述第二部分私钥进行哈希运算,得到第二杂凑值;
    根据所述第二杂凑值生成第二公钥标量;
    根据所述第二公钥标量生成所述第二部分公钥。
  4. 根据权利要求3所述的方法,其特征在于,对所述第二部分私钥进行哈希运算,得到第二杂凑值,包括按照以下公式得到所述第二杂凑值:
    Figure PCTCN2019127720-appb-100001
    其中,H(k 2)为所述第二杂凑值,k 2为所述第二部分私钥,
    Figure PCTCN2019127720-appb-100002
    为所述第二杂凑值中的元素,H(·)为在输入为任意长度比特串{0,1} *时输出2b比特长的密码杂凑函数,k 2为b比特长的随机数,其中,b为满足2 b-1>p的整数,p为素数;
    根据所述第二杂凑值生成第二公钥标量,包括按照以下公式生成所述第二公钥标量:
    Figure PCTCN2019127720-appb-100003
    其中,s 2为所述第二公钥标量,
    Figure PCTCN2019127720-appb-100004
    为所述第二杂凑值中的元素,其中,i=c,…,n-1,其中,c为辅因子,是以2为底的对数,n为满足c≤n<b的整数;
    根据所述第二公钥标量生成所述第二部分公钥,包括按照以下公式生成所述第二部分公钥:
    A 2=s 2·B;
    其中,A 2为所述第二部分公钥,s 2为所述第二公钥标量,B为循环群E的生成元,E为由椭 圆曲线上的点构成的加法循环群。
  5. 根据权利要求3所述的方法,其特征在于,所述第二用户端根据所述第一部分公钥生成所述协同公钥,包括按照以下公式生成所述协同公钥:
    A=s 2·A 1
    其中,A为所述协同公钥,A 1为所述第一部分公钥,s 2为所述第二公钥标量。
  6. 根据权利要求3所述的方法,其特征在于,所述第二用户端根据所述第二部分私钥、所述目标信息和所述第二部分公钥生成临时公钥,包括:
    根据所述第二杂凑值和所述目标信息生成第二消息密钥,其中,所述第二杂凑值是根据所述第二部分私钥生成的;
    根据所述第二消息密钥和所述第二部分公钥生成临时公钥。
  7. 根据权利要求6所述的方法,其特征在于,根据所述第二杂凑值和所述目标信息生成第二消息密钥,包括按照以下公式生成所述第二消息密钥:
    Figure PCTCN2019127720-appb-100005
    其中,r 2为所述第二消息密钥,M为目标信息,H(·)为在输入为任意长度比特串{0,1} *时输出2b比特长的密码杂凑函数,
    Figure PCTCN2019127720-appb-100006
    为H(k 2)中的元素,H(k 2)为所述第二杂凑值,
    Figure PCTCN2019127720-appb-100007
    k 2为所述第二部分私钥;
    根据所述第二消息密钥和所述第二部分公钥生成临时公钥,包括按照以下公式生成所述临时密钥:
    Q 2=r 2·A 2
    其中,Q 2为所述临时公钥,r 2为所述第二消息密钥,A 2为所述第二部分公钥。
  8. 根据权利要求6所述的方法,其特征在于,所述第二用户端根据所述中间变量生成第二部分签名,包括按照以下公式生成所述第二部分签名:
    S=(S 1+r 2)·s 2
    其中,S为所述第二部分签名,S 1为所述中间变量,r 2为所述第二消息密钥,s 2为所述第二公钥标量。
  9. 根据权利要求1所述的方法,其特征在于,所述第二用户端根据所述第一部分签名和所述第二部分签名生成所述目标信息的目标签名,包括按照以下公式生成所述目标信息的目标签名:
    δ M=ENC(R)||ENC(S);
    其中,δ M为所述目标信息的目标签名,R为所述第一部分签名,S为所述第二部分签名,ENC(·)为将输入按照小端格式编码为b比特长的字符串的编码函数。
  10. 根据权利要求2所述的方法,其特征在于,所述第二用户端根据所述协同公钥确定所述目标签名是否正确,包括验证以下等式是否正确:
    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杂凑值。
  11. 一种两方协同的EdDSA数字签名生成方法,其特征在于,应用于第一用户端,包括:
    所述第一用户端生成并根据第一部分私钥生成第一部分公钥,并将所述第一部分公钥发送给第二用户端,其中,所述第二用户端用于根据所述第一部分公钥生成协同公钥;
    所述第一用户端接收并根据所述第二用户端发送的第二部分公钥生成所述协同公钥,其中,所述第二部分公钥由所述第二用户端根据所述第二用户端所生成的第二部分私钥生成;
    所述第一用户端接收所述第二用户端发送的临时公钥,其中,所述临时公钥由所述第二用户端根据待签名的目标信息和所述第二部分公钥生成;
    所述第一用户端获取所述目标信息,根据所述第一部分私钥、所述目标信息、所述协同公钥和所述临时公钥生成第一部分签名和中间变量,并将所述中间变量和所述第一部分签名发送给所述第二用户端,其中,所述第二用户端用于根据所述中间变量生成第二部分签名,并根据所述第一部分签名和所述第二部分签名生成所述目标信息的目标签名。
  12. 根据权利要求11所述的方法,其特征在于,所述第一用户端根据第一部分私钥生成第一部分公钥,包括按照以下公式生成所述第一部分公钥:
    A 1=s 1·B;
    其中,A 1为所述第一部分公钥,
    Figure PCTCN2019127720-appb-100008
    其中,s 1为第一公钥标量,B为循环群E的生成元,E为由椭圆曲线上的点构成的加法循环群,
    Figure PCTCN2019127720-appb-100009
    为H(k 1)中的元素,其中,i=c,…,n-1,H(k 1)为第一杂凑值,k 1为所述第一部分私钥,
    Figure PCTCN2019127720-appb-100010
    b为满足2 b-1>p的整数,p为素数,c为辅因子,是以2为底的对数,n为满足c≤n<b的整数。
  13. 根据权利要求12所述的方法,其特征在于,所述第一用户端根据所述第二部分公钥生成协同公钥,包括按照以下公式生成所述协同公钥:
    A=s 1·A 2
    其中,A为所述协同公钥,A 2为所述第二部分公钥,s 1为所述第一公钥标量。
  14. 根据权利要求13所述的方法,其特征在于,所述第一用户端根据所述第一部分私钥、所述目标信息、所述协同公钥和所述临时公钥生成第一部分签名和中间变量,包括按照以下公式生成所述第一部分签名和所述中间变量:
    R=r 1·A+Q 2
    S 1=(r 1+h)·s 1
    其中,R为所述第一部分签名,S 1为所述中间变量,A为所述协同公钥,Q 2为所述临时公钥,
    Figure PCTCN2019127720-appb-100011
    为H(k 1)中的元素,H(k 1)为第一杂凑值,k 1为所述第一部分私钥,
    Figure PCTCN2019127720-appb-100012
    r 1为第一消息密钥,h=H(ENC(R)||ENC(A)||PH(M)),H(·)为在输入为任意长度比特串{0,1} *时输出2b比特长的密码杂凑函数,M为所述目标信息,ENC(·)为将输入按照小端格式编码为b比特长的字符串的编码函数,PH(M)为M的SHA-512杂凑值。
  15. 一种两方协同的EdDSA数字签名生成方法,其特征在于,应用于第一用户端和第二用户端,所述方法包括:
    所述第二用户端获取待签名的目标信息,根据所述目标信息和第二部分私钥生成第二消息密钥,并根据所述第二消息密钥和第二部分公钥生成临时公钥;
    所述第二用户端将所述临时公钥发送给所述第一用户端;
    所述第一用户端获取所述目标信息,根据所述目标信息和第一部分私钥生成第一消息密钥,并根据所述第一消息密钥、所述临时公钥、所述目标信息和协同公钥生成第一部分签名和中间变量,其中,所述协同公钥由所述第一用户端与所述第二用户端按照预设的密钥生成算法协同生成;
    所述第一用户端将所述中间变量和所述第一部分签名发送给所述第二用户端;
    所述第二用户端根据所述中间变量和所述第二消息密钥生成第二部分签名,并根据所述第一部分签名和所述第二部分签名生成所述目标信息的目标签名。
  16. 一种两方协同的EdDSA数字签名生成装置,其特征在于,位于第二用户端中,包括:
    生成模块,用于生成并根据第二部分私钥,生成第二部分公钥,并将所述第二部分公钥发送给第一用户端,其中,所述第一用户端用于根据所述第二部分公钥生成协同公钥;
    第一接收模块,用于接收并根据所述第一用户端发送的第一部分公钥,生成所述协同公钥,其中,所述第一部分公钥由所述第一用户端根据所述第一用户端所生成的第一部分私钥生成;
    获取模块,用于获取待签名的目标信息,根据所述第二部分私钥、所述目标信息和所述第二部分公钥生成临时公钥,并将所述临时公钥发送给所述第一用户端;
    第二接收模块,用于接收所述第一用户端发送的第一部分签名和中间变量,其中,所述第一部分签名和所述中间变量由所述第一用户端根据所述第一部分私钥、所述目标信息、所述协同公钥和所述临时公钥生成;
    签名模块,用于根据所述中间变量生成第二部分签名,并根据所述第一部分签名和所述第二部分签名生成所述目标信息的目标签名。
  17. 一种计算机设备,其特征在于,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求1至10中任一项所述方法的步骤。
  18. 一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述指令被执行时实现权利要求1至10中任一项所述方法的步骤。
PCT/CN2019/127720 2019-12-24 2019-12-24 两方协同的EdDSA数字签名生成方法和装置 WO2021127951A1 (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/127720 WO2021127951A1 (zh) 2019-12-24 2019-12-24 两方协同的EdDSA数字签名生成方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/127720 WO2021127951A1 (zh) 2019-12-24 2019-12-24 两方协同的EdDSA数字签名生成方法和装置

Publications (1)

Publication Number Publication Date
WO2021127951A1 true WO2021127951A1 (zh) 2021-07-01

Family

ID=76573539

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2019/127720 WO2021127951A1 (zh) 2019-12-24 2019-12-24 两方协同的EdDSA数字签名生成方法和装置

Country Status (1)

Country Link
WO (1) WO2021127951A1 (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106506156A (zh) * 2016-12-15 2017-03-15 北京三未信安科技发展有限公司 一种基于椭圆曲线的分布式门限签名方法
US9800411B1 (en) * 2016-05-05 2017-10-24 ISARA Corporation Using a secret generator in an elliptic curve cryptography (ECC) digital signature scheme
CN107566128A (zh) * 2017-10-10 2018-01-09 武汉大学 一种两方分布式sm9数字签名生成方法与系统
CN107634836A (zh) * 2017-09-05 2018-01-26 何德彪 一种sm2数字签名生成方法及系统
CN109274503A (zh) * 2018-11-05 2019-01-25 北京仁信证科技有限公司 分布式协同签名方法及分布式协同签名装置、软盾系统
CN109309569A (zh) * 2018-09-29 2019-02-05 北京信安世纪科技股份有限公司 基于sm2算法的协同签名的方法、装置及存储介质
CN110138567A (zh) * 2019-05-22 2019-08-16 广州安研信息科技有限公司 一种基于ecdsa的协同签名方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9800411B1 (en) * 2016-05-05 2017-10-24 ISARA Corporation Using a secret generator in an elliptic curve cryptography (ECC) digital signature scheme
CN106506156A (zh) * 2016-12-15 2017-03-15 北京三未信安科技发展有限公司 一种基于椭圆曲线的分布式门限签名方法
CN107634836A (zh) * 2017-09-05 2018-01-26 何德彪 一种sm2数字签名生成方法及系统
CN107566128A (zh) * 2017-10-10 2018-01-09 武汉大学 一种两方分布式sm9数字签名生成方法与系统
CN109309569A (zh) * 2018-09-29 2019-02-05 北京信安世纪科技股份有限公司 基于sm2算法的协同签名的方法、装置及存储介质
CN109274503A (zh) * 2018-11-05 2019-01-25 北京仁信证科技有限公司 分布式协同签名方法及分布式协同签名装置、软盾系统
CN110138567A (zh) * 2019-05-22 2019-08-16 广州安研信息科技有限公司 一种基于ecdsa的协同签名方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
LI XIANGFENG: "Cloud-Collaboration Key Protection Mechanism", JOURNAL OF INFORMATION SECURITY RESEARCH, vol. 5, no. 10, 1 October 2019 (2019-10-01), pages 898 - 903, XP055825336 *
MACKENZIE P, REITER M K: "TWO-PARTY GENERATION OF DSA SIGNATURES", ADVANCES IN CRYPTOLOGY. CRYPTO 2001. 21ST ANNUAL INTERNATIONAL CRYPTOLOGY CONFERENCE, SANTA BARBARA, CA, AUG. 19 - 23, 2001. PROCEEDINGS., BERLIN : SPRINGER.; DE, 19 August 2001 (2001-08-19), pages 137 - 154, XP000988700, ISBN: 978-3-540-42456-7 *
MARTIN ATZMUELLER, ALVIN CHIN, FREDERIK JANSSEN, IMMANUEL SCHWEIZER, CHRISTOPH TRATTNER: "ICIAP: International Conference on Image Analysis and Processing, 17th International Conference, Naples, Italy, September 9-13, 2013. Proceedings", vol. 10402 Chap.21, 29 July 2017, SPRINGER, Berlin, Heidelberg, ISBN: 978-3-642-17318-9, article LINDELL YEHUDA: "Fast Secure Two-Party ECDSA Signing", pages: 613 - 644, XP047422849, 032548, DOI: 10.1007/978-3-319-63715-0_21 *
ZHANG YUDI; HE DEBIAO; ZEADALLY SHERALI; WANG DING; CHOO KIM-KWANG RAYMOND: "Efficient and Provably Secure Distributed Signing Protocol for Mobile Devices in Wireless Networks", IEEE INTERNET OF THINGS JOURNAL, IEEE, USA, vol. 5, no. 6, 1 December 2018 (2018-12-01), USA, pages 5271 - 5280, XP011705697, DOI: 10.1109/JIOT.2018.2865247 *

Similar Documents

Publication Publication Date Title
WO2021238527A1 (zh) 数字签名生成方法、装置、计算机设备和存储介质
CN111066285B (zh) 基于sm2签名恢复公钥的方法
CN110612700B (zh) 基于恢复的公钥进行认证
CN109246129B (zh) 一种可验证客户端身份的sm2协同签名方法及系统
CN110351096B (zh) 多重签名方法、签名中心、程序介质及电子设备
US11438144B2 (en) Computer-implemented systems and methods for performing computational tasks across a group operating in a trust-less or dealer-free manner
WO2020019341A1 (zh) 区块链账户的处理方法、装置和存储介质
CN106878022B (zh) 在区块链上签名、验证的方法及装置
CN111147246B (zh) 一种基于sm2的多方协同签名方法及系统
CN110380862B (zh) 基于隐式证书的签名验证方法、装置和计算机设备
CN110311776B (zh) 范围证明方法、装置、计算机设备和存储介质
US20210377048A1 (en) Digital Signature Method, Signature Information Verification Method, Related Apparatus and Electronic Device
US20230033216A1 (en) Pipeline-friendly signature and verification method, device, and storage medium
CN111010285B (zh) 一种适用于轻量级客户端的sm2两方协同签名方法及介质
US11616641B2 (en) Computer implemented system and method for sharing a common secret
US10805090B1 (en) Address whitelisting using public/private keys and ring signature
CN111147245A (zh) 一种区块链中使用国家密码进行加密的算法
CN110233733B (zh) 面向区块链智能合约的不可拆分数字签名通用构造方法
CN113939821A (zh) 用于在工作量证明区块链网络上进行非并行挖掘的系统和方法
CN116349203A (zh) 识别拒绝服务攻击
CN115516817A (zh) 具有秘密共享的(ec)dsa阈值签名
US20220278843A1 (en) Computer implemented method and system for knowledge proof in blockchain transactions
CN111147254B (zh) 两方协同的EdDSA数字签名生成方法和装置
WO2023159849A1 (zh) 一种数字签名方法、计算机设备及介质
WO2021127951A1 (zh) 两方协同的EdDSA数字签名生成方法和装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19957809

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19957809

Country of ref document: EP

Kind code of ref document: A1

122 Ep: pct application non-entry in european phase

Ref document number: 19957809

Country of ref document: EP

Kind code of ref document: A1