CN114338028A - 门限签名方法、装置、电子设备和可读存储介质 - Google Patents

门限签名方法、装置、电子设备和可读存储介质 Download PDF

Info

Publication number
CN114338028A
CN114338028A CN202011039445.2A CN202011039445A CN114338028A CN 114338028 A CN114338028 A CN 114338028A CN 202011039445 A CN202011039445 A CN 202011039445A CN 114338028 A CN114338028 A CN 114338028A
Authority
CN
China
Prior art keywords
node
commitment
nodes
signature
fragment
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.)
Pending
Application number
CN202011039445.2A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202011039445.2A priority Critical patent/CN114338028A/zh
Publication of CN114338028A publication Critical patent/CN114338028A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本申请实施例提供一种门限签名方法、装置、电子设备和可读存储介质,本申请实施例中的门限签名方法中,多个节点可以协同生成签名,且在多个节点协同生成签名的过程中,节点可以对待生成的签名的中间数据进行验证,如对生成签名的第一部分的零知识证明和签名的第二部分的分片进行验证,进而可以将提供错误的中间数据的节点作为恶意节点,能够准确识别恶意节点,且本申请实施例中在中间数据进行验证均通过时,可以生成签名,进而保证了签名的准确性。

Description

门限签名方法、装置、电子设备和可读存储介质
技术领域
本申请实施例涉及信息技术领域,尤其涉及一种门限签名方法、装置、电子设备和可读存储介质。
背景技术
秘密共享,指的是密钥被拆分成多个分片密钥且被多个节点共享。其中,任何少于门限数量的节点无法根据共享的分片密钥恢复密钥,而达到门限数量的节点可以根据共享的分片密钥恢复密钥。秘密共享避免了中心节点持有密钥时容易出现伪造密钥的问题。
目前的门限签名算法中,在多个节点中,若有达到门限数量的节点根据各自持有的分片密钥进行签名,则该签名有效。但若该门限数量的节点中存在恶意节点,故意提供错误的签名数据则会导致签名失败,但目前签名算法中无法识别恶意节点,进而导致签名会持续失败。因此,在门限签名算法中,亟需一种识别恶意节点的方案。
发明内容
本申请实施例提供一种门限签名方法、装置、电子设备和可读存储介质,可以对待生成的签名的中间数据进行验证,能够准确识别恶意节点,且保证了签名的准确性。
第一方面,本申请实施例提供一种门限签名方法,该方法可以应用于n个的节点中的第一节点、也可以应用于第一节点中的芯片,应理解,该第一节点可以为n个节点中的所有节点,也就是说,n个节点中的每个节点均可以执行第一节点的动作。下面以应用于第一节点为例对该方法进行描述,该方法中,第一节点可以向其他t-1个节点发送第一节点的零知识证明和第一承诺。相对应的,当所述第一节点接收到来自其他t-1个节点中每个节点的零知识证明和第一承诺时,可以验证所述每个节点的零知识证明和第一承诺。其中,t为门限值,所述t为大于或等于2且小于或等于所述n的整数,所述第一节点的零知识证明与所述第一节点的第一承诺相关。
其中,若其他t-1个节点中每个节点的零知识证明和第一承诺均通过验证,则所述第一节点根据所述第一节点的第一承诺和所述每个节点的第一承诺,得到签名的第一部分。且所述第一节点根据所述第一节点的签名的第二部分的分片,以及来自所述每个节点的签名的第二部分的分片,得到t个节点中每个节点的第二承诺,且根据所述t个节点中每个节点的第二承诺,验证所述t个节点中每个节点的签名的第二部分的分片。若所述t个节点中存在第二节点的签名的第二部分的分片未通过验证,则所述第一节点确定所述第二节点为恶意节点。
本申请实施例提供的门限签名方法中,多个节点可以协同生成签名,且在多个节点协同生成签名的过程中,节点可以对待生成的签名的中间数据进行验证,如对生成签名的第一部分的零知识证明和签名的第二部分的分片进行验证,进而可以将提供错误的中间数据的节点作为恶意节点,能够准确识别恶意节点,且本申请实施例中在中间数据进行验证均通过时,可以生成签名,进而保证了签名的准确性。
应理解,第一节点可以选取目标随机数,且根据所述目标随机数和椭圆曲线的基点,生成所述第一节点的第一承诺;所述第一节点根据所述第一节点的第一承诺和目标随机数,得到所述第一节点的零知识证明,且向其他t-1个节点发送所述第一节点的零知识证明。其中,所述目标随机数是所述第一节点在预设随机数中选择的随机数。
可选的,第一节点可以将所述第一节点的第一承诺和所述其他t-1个节点中每个节点的第一承诺进行加和,得到所述签名的第一部分。其中,第一节点根据签名的第一部分生成签名的第二部分的分片的过程可以为:所述第一节点根据所述签名的第一部分、公钥和待签名对象,生成衍生数值;所述第一节点根据所述t个节点中每个节点的身份信息,得到所述第一节点的第一系数;所述第一节点根据所述第一系数和所述第一节点持有的第一私钥分片,得到第二私钥分片;所述第一节点根据所述衍生数值、所述第二私钥分片和目标随机数,生成所述第一节点的签名的第二部分的分片,所述目标随机数是所述第一节点在预设随机数中选择的随机数。在第一节点生成第一节点的签名的第二部分的分片,可以向其他t-1个节点发送所述第一节点的签名的第二部分的分片,进而使得第一节点可以获取来自其他t-1个节点中每个节点的签名的第二部分的分片。
在一种可能的实现方式中,第一节点可以根据所述第一节点的签名的第二部分的分片和椭圆曲线的基点,得到所述第一节点的第二承诺;所述第一节点根据所述其他t-1个节点中每个节点的签名的第二部分的分片和所述椭圆曲线的基点,得到所述其他t-1个节点中每个节点的第二承诺,以得到所述t个节点中每个节点的第二承诺。
其中,第一节点对验证所述t个节点中每个节点的签名的第二部分的分片的方式可以为:对于所述t个节点中的第三节点,所述第三节点为所述t个节点中的任一节点,其中:
所述第一节点获取所述第三节点的第五承诺,所述第五承诺为所述第三节点的第一私钥分片相关,所述第一节点根据所述t个节点中每个节点的身份信息,得到所述第三节点的第一系数;所述第一节点根据所述第三节点的第五承诺和第一系数,得到所述第三节点的第三承诺;所述第一节点根据所述衍生数值和所述第三节点的第三承诺,得到所述第三节点的第四承诺;相对应的,若所述第三节点的第二承诺等于所述第三节点的第一承诺和所述第三节点的第四承诺的加和,则所述第一节点确定所述第三节点的签名的第二部分的分片通过验证。
本申请实施例中,第一节点除了验证第一承诺、零知识证明、签名的第二部分的分片外,还可以验证t个节点中每个节点的第三承诺,以更为准确的确定中间数据的准确性。其中,若所述t个节点中每个节点的第三承诺均通过验证,则所述第一节点验证所述t个节点中每个节点的签名的第二部分的分片。应理解,第一节点可以获取所述t个节点中每个节点的第三承诺的加和;若所述第三承诺的加和等于公钥,则所述第一节点确定所述t个节点中每个节点的第三承诺通过验证。
在一种可能的实现方式中,第一节点在确定第二节点为恶意节点后,可以输出所述第二节点的身份信息。如,第一节点可以向其他n-1个节点输出该第二节点的身份信息。
在一种可能的实现方式中,若所述t个节点中每个节点的签名的第二部分的分片均通过验证,则所述第一节点根据所述t个节点中每个节点的签名的第二部分的分片,得到签名的第二部分;所述第一节点根据所述签名的第一部分和所述签名的第二部分,生成签名;若所述签名有效,则所述第一节点输出所述签名。
上述讲述的为门限签名方法的签名阶段,下述讲述门限签名方法的启动阶段。在该启动阶段,n个节点可以协同生成公钥。其中,所述第一节点获取所述第一节点的第一私钥分片;所述第一节点根据所述第一节点的第一私钥分片,生成公钥。下述通过两种可行的实施方式对生成公钥的过程进行说明:
第一种方式:所述第一节点在预设的t-1次多项式中选择目标多项式,且将所述n个节点中每个节点的身份信息分别代入所述目标多项式中,得到所述n个节点中每个节点对应的分享密钥分片;所述第一节点向所述其他n-1个节点中每个节点发送对应的分享密钥分片;当所述第一节点接收到来自所述其他n-1个节点中每个节点的分享密钥分片时,将来自所述n个节点的分享密钥分片加和,得到所述第一节点的第一私钥分片。
进而,所述第一节点根据所述第一节点的第一私钥分片,生成所述第一节点的第五承诺;所述第一节点向其他n-1个节点发送所述第一节点的第五承诺;所述第一节点根据n个节点的第五承诺,验证所述n个节点中每个节点的第一私钥分片;若所述n个节点中每个节点的第一私钥分片通过验证,则根据所述n个节点中每个节点的第五承诺,生成公钥。其中,所述第一节点根据所述第一节点的第一私钥分片和椭圆曲线的基点,生成所述第一节点的第五承诺。
应注意,本申请实施例中,所述第一节点根据n个节点的第五承诺,验证所述n个节点中每个节点的第一私钥分片,可以包括如下步骤:
A、所述第一节点在n个第五承诺中,随机选择t个第五承诺;
B、所述第一节点根据所述t个第五承诺中每个第五承诺对应的节点的身份标识,得到所述t个第五承诺中每个第五承诺对应的节点的第二系数;
C、所述第一节点根据所述t个第五承诺中每个第五承诺对应的节点的第二系数,以及所述t个第五承诺中每个第五承诺对应的节点的第五承诺,得到一个待验证公钥;
D、重复执行预设次数的步骤A、B、C,得到预设数量个待验证公钥;
E、若所述预设数量个待验证公钥中每个待验证公钥均相同,则所述第一节点确定所述n个节点中每个节点的第一私钥分片通过验证;
其中,所述第一节点将任一待验证公钥作为公钥。
第二种方式:所述第一节点在预设的第一私钥分片中选取所述第一节点的第一私钥分片。在该种方式中,第一节点可以根据所述第一节点的第一私钥分片,得到所述第一节点的第一公钥分片,以及所述第一节点的第一公钥分片的零知识证明;所述第一节点根据所述第一节点的第一公钥分片的零知识证明,生成所述第一节点的第六承诺,且向其他n-1个节点发送所述第一节点的第六承诺、所述第一节点的第一公钥分片,以及所述第一节点的第一公钥分片的零知识证明;所述第一节点验证来自n个节点中每个节点的第六承诺和第一公钥分片的零知识证明;若所述n个节点中每个节点的第六承诺和第一公钥分片的零知识证明均通过验证,则第一节点根据所述n个节点中每个节点的第一公钥分片,生成公钥。其中,所述第一节点将所述n个节点中每个节点的第一公钥分片的加和,作为所述公钥。
第二方面,本申请实施例提供一种门限签名装置,该门限签名装置可以为上述第一方面的第一节点。其中,该门限签名装置可以包括:
收发模块,用于接收到来自其他t-1个节点中每个节点的零知识证明和第一承诺。
处理模块,用于当接收到来自其他t-1个节点中每个节点的零知识证明和第一承诺时,验证所述每个节点的零知识证明和第一承诺,t为门限值,所述t为大于或等于2且小于或等于所述n的整数,所述第一节点的零知识证明与所述第一节点的第一承诺相关。
其中,若所述每个节点的零知识证明和第一承诺均通过验证,则处理模块,还用于根据所述第一节点的第一承诺和所述每个节点的第一承诺,得到签名的第一部分,且根据所述第一节点的签名的第二部分的分片,以及来自所述每个节点的签名的第二部分的分片,得到t个节点中每个节点的第二承诺,且根据所述t个节点中每个节点的第二承诺,验证所述t个节点中每个节点的签名的第二部分的分片;若所述t个节点中存在第二节点的签名的第二部分的分片未通过验证,则确定所述第二节点为恶意节点。
在一种可能的实现方式中,处理模块,具体用于将所述第一节点的第一承诺和所述其他t-1个节点中每个节点的第一承诺进行加和,得到所述签名的第一部分。
在一种可能的实现方式中,处理模块,具体用于所述第一节点根据所述签名的第一部分生成所述第一节点的签名的第二部分的分片。收发模块,还用于向其他t-1个节点发送所述第一节点的签名的第二部分的分片。
在一种可能的实现方式中,处理模块,具体用于根据所述签名的第一部分、公钥和待签名对象,生成衍生数值;根据所述t个节点中每个节点的身份信息,得到所述第一节点的第一系数;根据所述第一系数和所述第一节点持有的第一私钥分片,得到第二私钥分片;根据所述衍生数值、所述第二私钥分片和目标随机数,生成所述第一节点的签名的第二部分的分片,所述目标随机数是所述第一节点在预设随机数中选择的随机数。
在一种可能的实现方式中,处理模块,具体用于根据所述第一节点的签名的第二部分的分片和椭圆曲线的基点,得到所述第一节点的第二承诺;根据所述其他t-1个节点中每个节点的签名的第二部分的分片和所述椭圆曲线的基点,得到所述其他t-1个节点中每个节点的第二承诺,以得到所述t个节点中每个节点的第二承诺。
在一种可能的实现方式中,对于所述t个节点中的第三节点,所述第三节点为所述t个节点中的任一节点,其中:处理模块,具体用于获取所述第三节点的第五承诺,该第三节点的第五承诺与第三节点的第一私钥分片相关,根据所述t个节点中每个节点的身份信息,得到所述第三节点的第一系数;根据所述第三节点的第五承诺和第一系数,得到所述第三节点的第三承诺;根据所述衍生数值和所述第三节点的第三承诺,得到所述第三节点的第四承诺;若所述第三节点的第二承诺等于所述第三节点的第一承诺和所述第三节点的第四承诺的加和,则所述第一节点确定所述第三节点的签名的第二部分的分片通过验证。
在一种可能的实现方式中,处理模块,还用于验证所述t个节点中每个节点的第三承诺;若所述t个节点中每个节点的第三承诺均通过验证,则验证所述t个节点中每个节点的签名的第二部分的分片。
在一种可能的实现方式中,处理模块,具体用于获取所述t个节点中每个节点的第三承诺的加和;若所述第三承诺的加和等于公钥,则确定所述t个节点中每个节点的第三承诺通过验证。
在一种可能的实现方式中,处理模块,还用于选取目标随机数,且根据所述目标随机数和椭圆曲线的基点,生成所述第一节点的第一承诺;根据所述第一节点的第一承诺和目标随机数,得到所述第一节点的零知识证明。收发模块,还用于向其他n-1个节点发送所述第一节点的零知识证明。
在一种可能的实现方式中,处理模块,还用于获取所述第一节点的第一私钥分片;根据所述第一节点的第一私钥分片,生成公钥。
在一种可能的实现方式中,处理模块,具体用于在预设的t-1次多项式中选择目标多项式,且将所述n个节点中每个节点的身份信息分别代入所述目标多项式中,得到所述n个节点中每个节点对应的分享密钥分片。收发模块,用于向所述其他n-1个节点中每个节点发送对应的分享密钥分片,且接收来自所述其他n-1个节点中每个节点的分享密钥分片。处理模块,还用于当接收到来自所述其他n-1个节点中每个节点的分享密钥分片时,将来自所述n个节点的分享密钥分片加和,得到所述第一节点的第一私钥分片。
在一种可能的实现方式中,处理模块,具体用于根据所述第一节点的第一私钥分片,生成所述第一节点的第五承诺。收发模块,还用于向其他n-1个节点发送所述第一节点的第五承诺。处理模块,具体用于根据n个节点的第五承诺,验证所述n个节点中每个节点的第一私钥分片;若所述n个节点中每个节点的第一私钥分片通过验证,则根据所述n个节点中每个节点的第五承诺,生成公钥。
在一种可能的实现方式中,处理模块,具体用于根据第一节点的第一私钥分片和椭圆曲线的基点,生成所述第一节点的第五承诺。
在一种可能的实现方式中,处理模块,具体用于执行个如下步骤:
A、在n个第五承诺中,随机选择t个第五承诺;
B、根据所述t个第五承诺中每个第五承诺对应的节点的身份标识,得到所述t个第五承诺中每个第五承诺对应的节点的第二系数;
C、根据所述t个第五承诺中每个第五承诺对应的节点的第二系数,以及所述t个第五承诺中每个第五承诺对应的节点的第五承诺,得到一个待验证公钥;
D、重复执行预设次数的步骤A、B、C,得到预设数量个待验证公钥;
E、若所述预设数量个待验证公钥中每个待验证公钥均相同,则确定所述n个节点中每个节点的第一私钥分片通过验证;
将任一待验证公钥作为公钥。
在一种可能的实现方式中,处理模块,具体用于在预设的第一私钥分片中选取所述第一节点的第一私钥分片。
在一种可能的实现方式中,处理模块,具体用于根据所述第一节点的第一私钥分片,得到所述第一节点的第一公钥分片,以及所述第一节点的第一公钥分片的零知识证明;根据所述第一节点的第一公钥分片的零知识证明,生成所述第一节点的第六承诺。
收发模块,还用于向其他n-1个节点发送所述第一节点的第六承诺、所述第一节点的第一公钥分片,以及所述第一节点的第一公钥分片的零知识证明。
处理模块,具体用于验证来自n个节点中每个节点的第六承诺和第一公钥分片的零知识证明;若所述n个节点中每个节点的第六承诺和第一公钥分片的零知识证明均通过验证,则根据所述n个节点中每个节点的第一公钥分片,生成公钥。
在一种可能的实现方式中,处理模块,具体用于将所述n个节点中每个节点的第一公钥分片的加和,作为所述公钥。
在一种可能的实现方式中,收发模块,还用于输出所述第二节点的身份信息。
在一种可能的实现方式中,处理模块,还用于若所述t个节点中每个节点的签名的第二部分的分片均通过验证,则根据所述t个节点中每个节点的签名的第二部分的分片,得到签名的第二部分;根据所述签名的第一部分和所述签名的第二部分,生成签名;若所述签名有效,则输出所述签名。
本申请实施例提供的门限签名装置,其实现原理和技术效果与上述第一方面类似,在此不再赘述。
第三方面,本申请实施例提供一种电子设备,该电子设备可以为上述第一方面中的第一节点。所述电子设备包括:处理器、存储器、收发器;所述收发器耦合至所述处理器,所述处理器控制所述收发器的收发动作;其中,存储器用于存储计算机可执行程序代码,程序代码包括指令;当处理器执行指令时,指令使所述电子设备执行如第一方面所提供的方法。
第四方面,本申请实施例提供一种电子设备,包括用于执行以上第一方面可能的设计所提供的方法的单元、模块或电路。该电子设备为第一节点,也可以为应用于第一节点的一个模块,例如,可以为应用于第一节点的芯片。
第五方面,本申请实施例提供一种芯片,所述芯片上存储有计算机程序,在所述计算机程序被所述芯片执行时,实现如第一方面所提供的方法。
第六方面,本申请实施例提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面中的方法。
第七方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面中的方法。
本申请实施例提供一种门限签名方法、装置、电子设备和可读存储介质,该方法中,在多个节点协同生成签名的过程中,本申请实施例中的节点可以对待生成的签名的中间数据进行验证,如对生成签名的第一部分的零知识证明和签名的第二部分的分片进行验证,进而可以将提供错误的中间数据的节点作为恶意节点,能够准确识别恶意节点。且本申请实施例中在中间数据进行验证均通过时,可以生成签名,进而保证了签名的准确性。
附图说明
图1为本申请实施例提供的门限签名方法应用的场景示意图;
图2为本申请实施例提供的门限签名方法的一实施例的流程示意图;
图3为本申请实施例中节点协同生成签名的过程的示意图;
图4为本申请实施例提供的门限签名方法的另一实施例的流程示意图;
图5为本申请实施例提供的门限签名方法的另一实施例的流程示意图;
图6为本申请实施例提供的门限签名方法的另一实施例的流程示意图;
图7为本申请实施例提供的门限签名方法的阶段示意图;
图8为本申请实施例提供的门限签名方法的另一实施例的流程示意图;
图9为本申请实施例提供的门限签名方法的另一实施例的流程示意图;
图10为本申请实施例提供的门限签名方法的另一实施例的流程示意图;
图11为本申请实施例提供的门限签名装置的结构示意图;
图12为本申请实施例提供的电子设备的结构示意图。
具体实施方式
秘密共享可以避免因中心节点持有密钥容易出现伪造密钥的问题,但目前的秘密共享存在如下缺点:节点采用密钥签名时,必须根据密钥分片将密钥恢复出来,那么密钥在恢复时存在被盗的风险。而门限签名算法,最大的特点就是“密钥的可用不可见”。如,门限签名算法中,私钥被多个节点共同分担,每个节点持有私钥中的一个私钥分片,各节点可以在不恢复私钥且不暴露私钥分片的情况下生成签名。因此,门限签名算法在提供密钥安全性同时,还提供了密钥的可用性,做到密钥的“可用不可见”。
区块链是去中心化或多中心化系统,且其在共识机制、联合支付和投票等场景中有对门限密钥的需求。目前区块链大多采用椭圆曲线数字签名算法(elliptic curvedigital signature algorithm,ECDSA)或椭圆曲线公钥密码算法SM2,但这两个算法的门限方案计算复杂度和通信复杂度较高,而爱德华曲线算法(edwards-curve digitalsignature algorithm,EdDSA)算法的计算复杂度和通信复杂度较低,所以区块链行业正在考虑从SM2和签名算法ECDSA签名算法向EdDSA签名算法转移。本申请实施例提供的门限签名方法应用于EdDSA中,EdDSA相较于其他的签名算法具有高性能和高安全性的特点。本申请实施例中的爱德华曲线算法可以包括但不限于为Ed25519算法或Ed448。应当注意的是,本申请实施例中涉及的运算,如加和、点乘等为四则运算,也可以为EdDSA标准下椭圆曲线点群多规定的运算。应理解,本申请实施例中的门限签名方法可以应用于但不限于协同认证、联合支付、区块链共识和匿名投票等场景。
目前的门限签名算法中,若参与签名的节点为n个,则该n个节点中的t个节点交互可以生成签名。但目前的门限签名算法中,n个节点中的中心节点(预先设定或n个节点协商决定)拥有原始私钥,中心节点有可能冒充分片持有者的节点发布签名,而外界无法辨识该中心节点为恶意节点。所以中心节点持有原始私钥的方案中存在中心节点伪造签名的风险。
为了解决中心节点持有原始私钥的问题,目前的技术方案中提供了一种参与签名的n个共同生成私钥的方案,每个节点持有私钥的私钥分片,因此避免了存在中心节点伪造签名的风险。但目前的技术方案中,在n个节点中的t个节点根据私钥分片进行签名时,仍有可能存在节点提供错误签名数据的问题,导致签名失败,但是目前的技术方案中不能识别提供错误签名数据的恶意节点,因此导致签名会持续失败。
为了识别门限签名过程中提供错误的签名数据的恶意节点,本申请实施例提供了一种门限签名算法,可以对每个节点在生成签名的中间数据(如签名的部分的分片)进行验证,若中间数据未通过验证,则可以确定提供该中间数据的节点为恶意节点,进而达到识别恶意节点的目的,能够保证签名的顺利进行。
图1为本申请实施例提供的门限签名方法应用的场景示意图。如图1所示,该场景中可以包括n个节点,其中t个节点可以根据私钥完成签名。下述实施例中以虚线框中的任一节点为执行门限签名方法的执行主体为例进行说明。其中,n为大于1的整数,t为门限值。应理解,本申请实施例中的节点可以为终端设备、服务器或机器人等电子设备。本申请实施例中的终端设备可以称为终端Terminal、用户设备(user equipment,UE)、移动台(mobilestation,MS)、移动终端(mobile terminal,MT)等。终端设备可以是手机(mobile phone)、平板电脑(pad)、带无线收发功能的电脑、个人数字助理(personal digital assistant,PDA)、具有无线通信功能的手持设备、计算机或其它处理设备、可穿戴设备(手表、运动手环、运动脚环等)、虚拟现实(virtual reality,VR)终端设备、增强现实(augmentedreality,AR)终端设备、智慧家庭(smart home)中的无线终端、5G网络中的终端设备或者未来演进的公用陆地移动通信网络(public land mobile network,PLMN)中的终端设备等,本申请实施例对此并不限定。
下面结合具体的实施例对本申请实施例的门限签名方法进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。图2为本申请实施例提供的门限签名方法的一实施例的流程示意图。如图2所示,本申请实施例提供的门限签名方法可以包括:
S201,当第一节点接收到来自其他t-1个节点中每个节点的零知识证明和第一承诺时,验证每个节点的零知识证明和第一承诺,t为门限值,t为大于或等于2且小于或等于n的整数,第一节点的零知识证明与第一节点的第一承诺相关。
S202,若每个节点的零知识证明和第一承诺均通过验证,则第一节点根据第一节点的第一承诺和每个节点的第一承诺,得到签名的第一部分。
S203,第一节点根据第一节点的签名的第二部分的分片,以及来自每个节点的签名的第二部分的分片,得到t个节点中每个节点的第二承诺,且根据t个节点中每个节点的第二承诺,验证t个节点中每个节点的签名的第二部分的分片。
S204,若t个节点中存在第二节点的签名的第二部分的分片未通过验证,则第一节点确定第二节点为恶意节点。
上述S201中,第一节点为n个节点中的任意节点,本申请实施例中的n个节点中的每个节点均可以执行第一节点的动作,第一节点为n个节点中的多个节点。在节点协同生成签名的过程中,第一节点可以向其他t-1个节点发送第一节点的零知识证明(zero—knowledge proof)和第一承诺。其中,零知识证明指的是第一节点能够在不向其他节点提供任何有用的信息的情况下,其他节点能够确定来自第一节点的数据是正确的。零知识证明实质上是一种涉及两方或更多方的协议,即两方或更多方完成签名时所需采取的步骤,具体可以参照目前技术方案中的相关描述。第一节点可以基于承诺机制传输数据。其中,承诺机制的运行过程包括生成、打开和验证三个阶段。在生成阶段,发送方可以利用预设算法将要承诺的内容生成对应的承诺,并将生成的承诺发送给接收方。承诺可以对其承诺的内容起到唯一标识和隐匿作用。可选的,对某一内容的承诺可以是该内容的哈希值。在打开阶段,发送方将承诺的内容发送给接收方。在验证阶段,接收方基于接收到的承诺的内容生成承诺,将生成的承诺与接收到的承诺进行比对,若比对结果为一致则承诺验证通过。应理解,本申请实施例中第一节点验证第一承诺的方式可以参照目前的技术方案。
本申请实施例中,第一节点的零知识证明可以是第一节点生成的。第一节点的零知识证明与第一节点的第一承诺相关。可选的,第一节点可以根据第一承诺生成零知识证明,如该零知识证明为第一承诺的零知识证明,具体可以为第一承诺的离散对数的零知识证明。其中,第一承诺可以是第一节点将需求承诺的内容(如目标随机数、或目标随机数与椭圆曲线的参数的点乘结果等)生成对应的第一承诺。应理解,n个节点中的每个节点生成节点的零知识证明、第一承诺的方法与第一节点生成节点的零知识证明、第一承诺的方法相同,下述实施例中第一节点的动作可以适用于n个节点中每个节点。
应理解,第一节点在生成第一承诺和零知识证明后,可以向其他t-1个节点发送第一节点的第一承诺和零知识证明。第一承诺和零知识证明可以携带在一个信息中发送,或者分开单独发送。本申请实施例中,每个节点均向其他t-1个节点发送第一承诺和零知识证明,因此第一节点可以至少接收到来自其他t-1个节点中每个节点的零知识证明和第一承诺。当第一节点接收到来自其他t-1个节点中每个节点的零知识证明时,加上第一节点的零知识证明,第一节点能够获取t个节点的零知识证明,则第一节点可以执行签名操作。本申请实施例中的t为门限值,t可以大于或等于2且小于或小于n,在一种可能的实现方式中,t可以等于n,下述实施例中以t为例进行说明。
其中,第一节点可以验证其他t-1个节点中每个节点的零知识证明和第一承诺。应理解,验证零知识证明的方式可以为验证零知识证明是否有效,如验证发送第一承诺和零知识证明的节点是否知道该第一承诺的离散对数。可选的,本申请实施例中的第一节点可以存储有其他n-1个节点的身份信息,身份信息如节点的身份标识号(identity documentID,)、网际互连协议(internet protocol,IP)地址等。第一节点验证第一承诺的方式可以参照上述验证阶段的相关描述。
可选的,若在第一节点接收到来自其他t-1个的零知识证明时,确定其中存在零知识证明和/或第一承诺未通过验证,则该第一节点可以根据通过验证的、来自其他(n-t)个节点的零知识证明和第一承诺,执行签名操作。图3为本申请实施例中节点协同生成签名的过程的示意图。如图3所示,n个节点中的t个节点的第一承诺和零知识证明均通过验证,则该t个节点可以协同(联合)生成签名,图3中以t小于n为例进行说明。
上述S202中,本申请实施例中若其他t-1个节点中每个节点的零知识证明和第一承诺均通过验证,则第一节点可以根据t个节点的第一承诺,得到签名的第一部分。其中,t个节点的第一承诺可以包括第一节点的第一承诺和其他t-1个节点中每个节点的第一承诺,进而第一节点可以根据该t个节点的第一承诺,生成签名的第一部分。应理解,第一节点中可以预先存储有预设的随机数,第一节点可以在预设的随机数中选择目标随机数。该椭圆曲线的参数可以为椭圆曲线的基点、基点的阶数等。椭圆曲线的基点G为常数,其中,椭圆曲线的基点可以是预先设定的。
可选的,第一节点生成签名的第一部分的一种可能的实现方式为:第一节点将第一节点的第一承诺和每个节点的第一承诺进行加和,得到签名的第一部分。
上述S203中,第一节点在生成第一节点的签名的第一部分后,可以生成第一节点的签名的第二部分的分片。其中,t个节点中的每个节点均可以生成对应的签名的第二部分的分片。在一种可能的实现方式中,第一节点可以根据与上述生成第一承诺类似的方式生成签名的第二部分的分片(如将承诺相当于签名的第二部分的分片)。在一种可能的实现方式中,为了提高起名的准确性和关联性,本申请实施例中可以将根据签名的第一部分生成第一节点的签名的第二部分的分片。可选的,第一节点可以根据签名的第一部分和待签名对象,按照预设分片生成算法,生成签名的第二部分的分片。其中,待签名的对象可以为文件、照片、表格等数据。其中,在第一节点生成签名的第二部分的分片后,可以向其他t-1个节点发送第一节点的签名的第二部分的分片,进而第一节点可以至少得到t个节点的签名的第二部分的分片。
第一节点可以根据该第一节点的签名的第二部分的分片,以及来自每个节点的签名的第二部分的分片(t个节点的签名的第二部分的分片),得到t个节点中每个节点的第二承诺。其中,第一节点可以根据t个节点中每个节点的签名的第二部分的分片,得到t个节点中每个节点的第二承诺。示例性的,此处以第一节点根据第一节点的签名的第二部分的分片,得到第一节点的第二承诺为例进行说明。在一种可能的实现方式中,第一节点可以将第一节点的签名的第二部分的分片和椭圆曲线的参数的点乘,作为第一节点的第二承诺。在一种可能的实现方式中,第一节点可以将第一节点的签名的第二部分的分片和预设系数(预设数值)的点乘,作为第一节点的第二承诺。
第一节点在得到t个节点中每个节点的第二承诺,可以根据t个节点中每个节点的第二承诺,验证t个节点中每个节点的签名的第二部分的分片。其中,第一节点验证t个节点中每个节点的签名的第二部分的分片的方式可以为:因为节点的签名的第一部分可以相同,若t个节点中每个节点的签名的第二部分的分片均相同,则可以确定t个节点中每个节点的签名的第二部分的分片均正确,即t个节点中每个节点的签名的第二部分的分片均通经过验证。若存在节点的签名的第二部分的分片与其他的节点的签名的第二部分的分片不相同,则可以确定该节点的签名的第二部分的分片错误,该节点的签名的第二部分的分片不能通过验证。
上述S204中,本申请实施例中,第一节点对t个节点中每个节点的签名的第二部分的分片,若存在t个节点中存在第二节点的签名的第二部分的分片未通过验证,则第一节点可以确定该第二节点提供的签名的第二部分的分片错误,该第二节点为恶意节点。
本申请实施例提供的门限签名方法包括:当第一节点接收到来自其他t-1个节点中每个节点的零知识证明时,验证每个节点的零知识证明;若每个节点的零知识证明均通过验证,则第一节点根据第一节点的第一承诺和每个节点的第一承诺,得到签名的第一部分;第一节点根据第一节点的签名的第二部分的分片,以及来自每个节点的签名的第二部分的分片,得到t个节点中每个节点的第二承诺,且根据t个节点中每个节点的第二承诺,验证t个节点中每个节点的签名的第二部分的分片;若t个节点中存在第二节点的签名的第二部分的分片未通过验证,则第一节点确定第二节点为恶意节点。本申请实施例中,在多个节点协同生成签名的过程中,节点可以对待生成的签名的中间数据进行验证,如对生成签名的第一部分的零知识证明和签名的第二部分的分片进行验证,进而可以将提供错误的中间数据的节点作为恶意节点,能够准确识别恶意节点。且本申请实施例中在中间数据进行验证均通过时,可以生成签名,进而保证了签名的准确性。
在上述实施例的基础上,下面对本申请实施例提供的门限签名方法中生成签名的第一部分、签名的第二部分的分片,以及验证中间数据的过程进行详细说明。图4为本申请实施例提供的门限签名方法的另一实施例的流程示意图。如图4所示,本申请实施例提供的门限签名方法可以包括:
S401,第一节点选取目标随机数,且将目标随机数与椭圆曲线的基点的点乘作为第一承诺,且向其他t-1个节点发送第一节点的第一承诺。
S402,第一节点根据第一承诺,生成第一承诺的离散对数的零知识证明,且向其他t-1个节点发送第一承诺的离散对数的零知识证明。
S403,当第一节点接收到来自其他t-1个节点中每个节点的零知识证明和第一承诺时,验证每个节点的零知识证明和第一承诺。
S404,若每个节点的零知识证明和第一承诺均通过验证,第一节点将第一节点的第一承诺和每个节点的第一承诺进行加和,得到签名的第一部分。
S405,第一节点根据签名的第一部分、公钥和待签名对象,生成衍生数值。
S406,第一节点根据t个节点中每个节点的身份信息,得到第一节点的第一系数。
S407,第一节点根据第一系数和第一节点持有的第一私钥分片,得到第二私钥分片。
S408,第一节点根据衍生数值、第二私钥分片和目标随机数,生成第一节点的签名的第二部分的分片,且向其他t-1个节点发送第一节点的签名的第二部分的分片,目标随机数是第一节点在预设随机数中选择的随机数。
S409,第一节点根据第一节点的签名的第二部分的分片和椭圆曲线的基点,得到第一节点的第二承诺。
S410,第一节点根据其他t-1个节点中每个节点的签名的第二部分的分片和椭圆曲线的基点,得到其他t-1个节点中每个节点的第二承诺,以得到t个节点中每个节点的第二承诺。
S411,第一节点根据t个节点中每个节点的第二承诺,验证t个节点中每个节点的签名的第二部分的分片。
S412,若t个节点中存在第二节点的签名的第二部分的分片未通过验证,则第一节点确定第二节点为恶意节点。
应理解,本申请实施例中的S403、S412可以参照上述实施例S201、S204中的相关描述。
上述S401中,随机数可以为预设的,第一节点在预设的随机数中随机选择一个随机数作为目标随机数ki,且计算目标随机数与椭圆曲线的参数的点乘,将该点乘的结果作为第一承诺。其中,椭圆曲线的参数可以为椭圆曲线的基点、基点的阶数等。i用于标识第一节点。本申请实施例中以目标随机数与椭圆曲线的基点的点乘作为第一承诺,即第一承诺Ri=ki*G。
上述S402中,第一节点在生成第一承诺后,可以计算得到第一承诺的离散对数的零知识证明,在生成第一承诺的离散对数的零知识证明后,可以向其他t-1个节点发送第一承诺的离散对数的零知识证明。应理解,生成零知识证明的过程可以参照目前的技术方案。应理解,上述S401-S402可以作为一个步骤执行,即上述S401-S402可以替换为S401':第一节点选取目标随机数,将目标随机数与椭圆曲线的基点的点乘作为第一承诺,且根据第一承诺,生成第一承诺的离散对数的零知识证明,以及向其他t-1个节点发送第一承诺的离散对数的零知识证明和第一承诺。
上述S404中,本申请实施例中,在t个节点中的每个节点的零知识证明均通过验证时,第一节点可以将该t个节点的第一承诺进行加和,得到签名的第一部分。也就是说,签名的第一部分R=R1+R2+……+Rt。应注意,在第一节点生成签名的第一部分后,可以将该签名的第一部分进行编码,得到编码后的签名的第一部分R~。
应理解的是,S405-S408是第一节点生成签名的第二部分的分片的过程。在S405中,公钥可以是预先约定的,或者公钥可以是n个节点协同生成的(具体可以参照下述图8-图10中的相关描述),其中,由n个节点协同生成的公钥的安全性更高。待签名对象可以为待签名的文件、照片等数据。本申请实施例中,第一节点可以根据签名的第一部分、公钥和待签名对象,生成衍生数值。可选的,本申请实施例中第一节点可以根据编码后的签名的第一部分、公钥和待签名对象,生成衍生数值,如衍生数值e=H(R~,A~,M)。其中,H为预设的哈希函数,衍生数值即对R~,A~,M进行哈希运算后得到的结果,A~为编码后的公钥,M为待签名对象。
应理解,S405和S406没有先后顺序的区分,二者可以同时执行。上述S406中,第一节点可以根据t个节点中每个节点的身份信息,得到第一节点的第一系数。其中,第一节点的身份信息可以为第一节点的ID,第一系数可以为拉格朗日系数lambda。第一节点可以根据t个节点中每个节点的IDi,得到第一节点的第一拉格朗日系数lambdai。应理解,n个节点中的第一个第一节点可以将t个节点中每个节点的ID代入预设的函数1,得到第一个第一节点的第一系数。第二个第一节点可以将t个节点中每个节点的ID代入预设的函数2,得到第二个第一节点的第一系数。其中,每个第一节点获取对应的第一系数的函数可以不同。
上述S407中,第一节点根据第一系数和第一节点持有的第一私钥分片,得到第二私钥分片。其中,第一节点持有的第一私钥分片可以为第一节点生成的(具体可以参照图8-图10中的相关描述)。可选的,第一节点可以将第一系数和第一节点持有的第一私钥分片的乘积,作为第二私钥分片。其中,第二私钥分片sign_ski=p(IDi)·lambdai,p(IDi)为第一节持有的第一私钥分片。
上述S408中,第一节点获取衍生数值和第二私钥分片后,可以根据衍生数值、第二私钥分片和目标随机数,生成第一节点的签名的第二部分的分片。其中,第一节点的签名的第二部分的分片Si=ki+e·sign_ski。在第一节点生成第一节点的签名的第二部分的分片Si后,可以向其他n-1个节点发送第一节点的签名的第二部分的分片。
在S409中,第一节点可以根据第一节点的签名的第二部分的分片和椭圆曲线的基点,得到第一节点的第二承诺。其中,第一节点可以将第一节点的签名的第二部分的分片和椭圆曲线的基点的点乘,作为第一节点的第二承诺Si·G。
上述S410中,因为第一节点可以接收到来自其他t-1个节点的签名的第二部分的分片,则可以分别计算该t-1个节点的第二承诺,即该t-1个节点的第二承诺为每个节点的签名的第二部分的分片与椭圆曲线的基点的点乘的结果。其中,S409和S410没有先后顺序的区分,二者可以同时执行。
上述S411是第一节点根据第二承诺验证t个节点中每个节点的签名的第二部分的分片的过程。其中,S411可以包括:
S4111,第一节点获取第三节点的第五承诺,第三节点的第五承诺与第三节点的第一私钥分片相关。
S4112,根据t个节点中每个节点的身份信息,得到第三节点的第一系数。
S4113,第一节点根据第三节点的第五承诺和第一系数,得到第三节点的第三承诺。
S4114,第一节点根据衍生数值和第三节点的第三承诺,得到第三节点的第四承诺。
S4115,若第三节点的第二承诺等于第三节点的第一承诺和第三节点的第四承诺的加和,则第一节点确定第三节点的签名的第二部分的分片通过验证。
本申请实施例中,为了便于说明第一节点验证t个节点中的每个节点的签名的第二部分的分片的过程,将t个节点中的节点均做为第三节点。应理解,第一节点可以验证第一节点的签名的第二部分的分片,其中,该过程也可以看做第一节点验证第三节点的签名的第二部分的分片。因此,对于t个节点中的第三节点,第三节点为t个节点中的任一节点可以执行上述S4111-S4114中的步骤。
上述S4111中,第三节点的第五承诺可以与第三节点的第一私钥分片相关,其中,第三节点可以根据第三节点的第一私钥分片生成第三节点的第五承诺,且向其他n-1个节点发送第三节点的第五承诺(具体可以参照下述图8中的相关描述),进而使得第一节点可以获取t个节点中每个节点(第三节点)的第五承诺。
上述S4112中,第一节点可以根据t个节点中每个节点的身份信息,得到第三节点的第一系数。其中,第一节点可以根据t个节点中每个节点的ID,计算第三节点的第一拉格朗日系数,该计算过程可以参照上述第一节点计算第一节点的第一系数的相关描述。也就是说,本申请实施例中第一节点可以计算得到第三节点的lambdai。其中,该S4111可以与上述S406同时执行。
上述S4113中,第一节点根据第三节点的第五承诺和第一系数,可以生成第三节点的第三承诺。其中,第一系数将根据第三节点的第五承诺和第一系数的点乘结果,作为第三节点的第三承诺,如第三承诺为Qi=lambdai·(P(Idi)·G)。其中,P(Idi)·G为第三节点的第五承诺。
上述S4114中,第一节点可以根据衍生数值和第三节点的第三承诺,得到第三节点的第四承诺。其中,第一节点可以将衍生数值和第三节点的第三承诺的乘积作为第三节点的第四承诺,该衍生数值可以为第一节点的衍生数值,即第三节点的第四承诺可以为e·Qi。
上述S4115中,第一节点验证第三节点的签名的第二部分的分片,可以为第一节点验证第三节点的第二承诺是否等于第三节点的第一承诺和第三节点的第四承诺的加和。其中,若第三节点的第二承诺等于第三节点的第一承诺和第三节点的第四承诺的加和,则第一节点确定第三节点的签名的第二部分的分片通过验证。也就是说,若Ri+e·Qi=Si·G,则第一节点确定第三节点的签名的第二部分的分片通过验证。应理解,由于sign_sk_i=lambdai·p(Idi),原则上上述等式的两端在进行约分计算是相等的,其中,Si中包括的第一私钥分片可以参照下述图8-图10中的相关描述。
本申请实施例中,节点可以承诺机制,结合签名过程中生成的中间数据对签名的第二部分的分片进行验证,进而保证了中间数据的准确性,若存在第二节点提供的签名的第二部分的分片未通过验证,则可以确定该第二节点为恶意节点,进而不采用该第二节点提供的签名的第二部分的分片生成签名,保证了签名的准确性。
在上述图4所示的实施例的基础上,本申请实施例中,第一节点还可以对来自其他t-1个节点的第二承诺进行验证,以更为全面地验证签名过程中的中间数据,进一步提高签名的准确性。图5为本申请实施例提供的门限签名方法的另一实施例的流程示意图。如图5所示,在上述S410之后,可以包括S413:第一节点验证t个节点中每个节点的第三承诺。其中,在t个节点中每个节点的第三承诺均通过验证时,第一节点根据t个节点中每个节点的第二承诺,验证t个节点中每个节点的签名的第二部分的分片,即执行上述S411。
应理解,本申请实施例中第一节点验证t个节点中每个节点的第三承诺可以为:第一节点获取t个节点中每个节点的第三承诺的加和,即(Q1+Q2+……Qt),若t个节点的第三承诺的加和等于公钥(A),即(Q1+Q2+……Qt)=A,则第一节点确定t个节点中每个节点的第三承诺通过验证。应理解,公钥也是由n个节点协同生成的,具体可以参照下述图8-图10中的相关描述。
在上述实施例的基础上,本申请实施例在上述图2的基础上进行说明。图6为本申请实施例提供的门限签名方法的另一实施例的流程示意图。如图6所示,本申请实施例提供的门限签名方法可以包括:
S601,当第一节点接收到来自其他t-1个节点中每个节点的零知识证明和第一承诺时,验证每个节点的零知识证明和第一承诺。
S602,若每个节点的零知识证明和第一承诺均通过验证,则第一节点根据第一节点的第一承诺和每个节点的第一承诺,得到签名的第一部分。
S603,第一节点根据第一节点的签名的第二部分的分片,以及来自每个节点的签名的第二部分的分片,得到t个节点中每个节点的第二承诺,且根据t个节点中每个节点的第二承诺,验证t个节点中每个节点的签名的第二部分的分片。
S604,若t个节点中存在第二节点的签名的第二部分的分片未通过验证,则第一节点确定第二节点为恶意节点。
S605,第一节点输出第二节点的身份信息。
S606,若t个节点中每个节点的签名的第二部分的分片均通过验证,则第一节点根据t个节点中每个节点的签名的第二部分的分片,得到签名的第二部分。
S607,第一节点根据签名的第一部分和签名的第二部分,生成签名,若签名有效,则输出签名。
应理解,本申请实施例中的S601-S604可以参照上述S201-S204中的相关描述。“S606-S608”与“S604-S605”为择一执行的步骤。
上述S605中,第一节点在确定第二节点为恶意节点时,可以输出恶意节点。示例性的,第一节点可以向其他通过验证的节点发送该第二节点的身份信息,以使其他节点均获取该恶意节点,可以避免其他节点在参与签名时,避免接收到该第二节点提供的错误的数据。
上述S606中,本申请实施例中,第一节点可以根据t个节点中每个节点的签名的第二部分的分片,得到签名的第二部分。其中,第一节点可以将该t个节点中每个节点的签名的第二部分的分片进行加和,得到签名的第二部分。如签名的第二部分S=S1+S2……+St
上述S607中,本申请实施例中可以根据签名的第一部分和签名的第二部分,得到签名。其中,签名的第一部分为R,本申请实施例中可以将该签名的第一部分进行编码,得到编码后的签名的第一部分R~,且将该签名的第二部分S进行编码,得到编码后的签名的第二部分S~,进而根据编码后的签名的第一部分R~和编码后的签名的第二部分S~,得到签名。如签名Sig=(R~,S~)。
在生成签名后,可以验证签名的有效性。本申请实施例中可以根据编码后的公钥A~验证签名,若签名验证通过,则确定该签名有效,则输出签名。
本申请实施例中,可以根据通过验证的签名的第二部分和签名的第一部分生成签名,进而可以得到准确的签名,提高签名的准确性和安全性。
图7为本申请实施例提供的门限签名方法的阶段示意图。如图7所示,门限签名方法的过程分为启动阶段和签名阶段。其中,上述实施例中讲述的是签名阶段,下述实施例中讲述启动阶段。在启动阶段,n个节点可以协同生成公钥。图8为本申请实施例提供的门限签名方法的另一实施例的流程示意图。如图8所示,本申请实施例提供的门限签名方法可以包括:
S801,第一节点获取第一节点的第一私钥分片。
S802,第一节点根据第一节点的第一私钥分片,生成公钥。
本申请实施例中从如下两种可能的实现方式对上述生成公钥的过程进行说明。其中,在第一种可能的实现方式中,上述S801中第一节点首先生成第一节点的第一私钥分片。本申请实施例中,可以预先设定有预设的t-1次多项式,第一节点可以在该预设的t-1次多项式中选择目标多项式fi(),且将n个节点中每个节点的身份信息分别代入目标多项式中,得到n个节点中每个节点对应的分享密钥分片。如将每个节点的ID代入该目标多项式fi(),得到多个分享密钥分片fi(ID1)、fi(ID2),…,fi(IDn),其中,fi(ID1)、fi(ID2),…,fi(IDn)分别对应n个节点中的一个节点。
第一节点向其他n-1个节点中每个节点发送对应的分享密钥分片。其中,第一节点可以将fi(ID1)发送给ID1对应的节点,将fi(ID2)发送给ID2对应的节点……,以此类推。同理的,第一节点也可以得到来自其他n-1个节点中每个节点发送的第一节点对应的分享密钥分片。其中,当第一节点接收到来自其他n-1个节点中每个节点的分享密钥分片时,将来自n个节点的分享密钥分片加和,得到第一节点的第一私钥分片。如第一节点的第一私钥分片可以为p(IDi)=f1(IDi)+f2(IDi)+…+fn(IDi)。
图9为本申请实施例提供的门限签名方法的另一实施例的流程示意图。如图9所示,上述S802可以替换为S802'-S804'。
S802',第一节点生成第一节点的第五承诺,且向其他n-1个节点发送第一节点的第五承诺。
S803',第一节点根据n个节点中每个节点的第五承诺,验证n个节点中每个节点的第一私钥分片。
S804',若n个节点中每个节点的第一私钥分片均通过验证,则第一节点根据n个节点中每个节点的第五承诺,得到公钥。
上述S802'中,第一节点在生成第一私钥分片后,可以根据第一节点的第一私钥分片,生成第一节点的第五承诺。其中,第一节点可以将第一私钥分片和椭圆曲线的基点的点乘作为第一节点的第五承诺。如,第五承诺Ti=p(IDi)·G。在第一节点生成第五承诺后,可以向其他n-1个节点发送第一节点的第五承诺。
上述S803'中,基于上述,第一节点可以得到n个节点中每个节点的第五承诺,第一承诺可以根据n个节点的第五承诺,验证n个节点中每个节点的第一私钥分片,在n个节点中每个节点的第一私钥分片验证通过时,第一节点可以根据n个节点中每个节点的第五承诺,得到公钥。本申请实施例中可以对每个节点的第一私钥分片进行验证,在验证通过时生成公钥,进而可以保证私钥分片和公钥的准确性。
本申请实施例中,第一节点验证n个节点中每个节点的第一私钥分片的方式可以包括如下步骤:
A、第一节点在n个第五承诺中,随机选择t个第五承诺。
B、第一节点根据t个第五承诺中每个第五承诺对应的节点的身份标识,得到t个第五承诺中每个第五承诺对应的节点的第二系数。
C、第一节点根据t个第五承诺中每个第五承诺对应的节点的第二系数,以及t个第五承诺中每个第五承诺对应的节点的第五承诺,得到一个待验证公钥。
D、重复执行预设次数的步骤A、B、C,得到预设数量个待验证公钥。
E、若预设数量个待验证公钥中每个待验证公钥均相同,则第一节点确定n个节点中每个节点的第一私钥分片通过验证。
在步骤A中,因为第一节点可以接收到来自其他n-1个节点的第五承诺,因此第一节点可以在n个第五承诺中,随机选择t个第五承诺。示例性的,第一节点选择T1、T2……Tt
在步骤B中,第一节点可以根据t个第五承诺中每个第五承诺对应的节点的身份标识,得到t个第五承诺中每个第五承诺对应的节点的第二系数。其中,第二系数可以为拉格朗日系数,第二系数的获取方法与上述第一系数的获取方法可以相同,不同的是,本申请实施例中,根据第一节点获取选择的t个第五承诺对应的节点的第二系数。示例性的,该t个第五承诺对应的节点分别为ID1、ID2……IDt。其中,第一节点可以将ID1、ID2……IDt代入预设的函数1,得到第二系数m11,第一节点可以将ID1、ID2……IDt代入预设的函数2,得到第二系数m12,第一节点可以将ID1、ID2……IDt代入预设的函数3,得到第二系数m13。因此,第一节点可以根据该t个第五承诺对应的节点的ID,得到第二系数可以为m11、m12、…m1t
在步骤C中,第一节点根据t个第五承诺中每个第五承诺对应的节点的第二系数,以及t个第五承诺中每个第五承诺对应的节点的第五承诺,得到一个待验证公钥。如,第一节点可以将每个节点的第五承诺与第二系数相乘后获取加和结果,将该加和结果作为一个待验证公钥,即该一个待验证公钥可以为PK1=m11·T1+m12·T2+…+m1t·Tt
在步骤D中,本申请实施例中可以预先设置验证次数,将该验证次数作为预设次数。进而重复执行预设次数的步骤A、B、C,得到预设数量个待验证公钥。如还得到PK2=m12·T2+m13·T3+…+m1(t+1)·T(t+1),PK3=m13·T3+m14·T4+…+m1(t+2)·T(t+2)等。
在步骤E中,本申请实施例中验证n个节点中每个节点的第一私钥分片时,验证上述预设数量个待验证公钥中每个待验证公钥是否均相同,其中,若预设数量个待验证公钥中每个待验证公钥均相同,则第一节点确定n个节点中每个节点的第一私钥分片通过验证。
上述S804'中,本申请实施例中在n个节点中每个节点的第一私钥分片通过验证时,可以将上述任一待验证公钥作为公钥。应理解,在执行上述S804之后,该n中的t个节点可以生成签名,即执行上述实施例中图2、图4、图5和图6中的步骤。
本申请实施例中,私钥并未存储在中心节点处,避免了中心节点持有原始私钥不安全的问题,另外本申请实施例中由n个节点共同生成公钥,且对生成公钥的中间数据,如第一私钥分片进行验证或第六承诺、第一公钥分片的零知识证明,保证了生成的公钥的准确性,进而保证了生成的签名的准确性。
在第二种可能的实现方式中,上述S801中,本申请实施例中可以预先设置预设的第一私钥分片,第一节点可以在预设的第一私钥分片中选取第一节点的第一私钥分片。
图10为本申请实施例提供的门限签名方法的另一实施例的流程示意图。如图10所示,上述S802可以替换为S802”-S805”。
S802”,第一节点根据第一节点的第一私钥分片,得到第一节点的第一公钥分片,以及第一节点的第一公钥分片的零知识证明。
S803”,第一节点根据第一节点的第一公钥分片的零知识证明,生成第一节点的第六承诺,且向其他n-1个节点发送第一节点的第六承诺、第一节点的第一公钥分片,以及第一节点的第一公钥分片的零知识证明。
S804”,第一节点验证来自n个节点中每个节点的第六承诺、第一公钥分片和第一公钥分片的零知识证明。
S805”,若n个节点中每个节点的第六承诺、第一公钥分片和第一公钥分片的零知识证明均通过验证,则第一节点根据n个节点中每个节点的第一公钥分片,生成公钥。
上述S802”中,第一节点可以根据选择的第一私钥分片,生成第一节点的第一公钥分片,以及第一节点的第一公钥分片的零知识证明。其中,第一节点可以将第一私钥分片与椭圆曲线的基点的点乘,作为第一节点的第一公钥分片。如第一节点的第一公钥分片可以为pk_i=sk_i*G,其中,sk_i为第一节点的第一私钥分片。其中,第一节点得到第一公钥分片后,可以计算得到第一公钥分片的零知识证明,该第一公钥分片的零知识证明可以为第一公钥分片的离散对数的零知识证明。
上述S803”中,第一节点可以根据第一公钥分片的离散对数的零知识证明,生成第一节点的第六承诺,即第一节点采用承诺机制生成公钥,可以保证公钥的准确性。在第一节点生成第一节点的第六承诺后,可以向其他n-1个节点发送第一节点的第六承诺、第一节点的第一公钥分片,以及第一节点的第一公钥分片的零知识证明。
应注意的是,可选的,在第一节点生成第一节点的第六承诺后,可以向其他n-1个节点发送第一节点的第六承诺。当第一为节点接收到来自其他n-1个节点的第六承诺后,可以向其他n-1个节点发送第一节点的第一公钥分片,以及第一节点的第一公钥分片的零知识证明。
上述S804”中,第一节点验证来自n个节点中每个节点的第六承诺、第一公钥分片和第一公钥分片的零知识证明,其中,第六承诺的验证和第一公钥分片的零知识证明可以参照上述实施例中对第一承诺的验证过程,以及对第一承诺的离散对数的零知识证明的验证过程,在此不做赘述。
上述S805”中,若n个节点中每个节点的第六承诺和第一公钥分片的零知识证明均通过验证,则第一节点可以根据n个节点中每个节点的第一公钥分片,生成公钥。其中,第一节点可以将n个节点的第一公钥分片进行加和,得到公钥。如,公钥PK=pk_1+pk_2++pk_n。
该第二种可能实现方式中的实施例具有与上述第一种可能实现方式相同的技术效果,且相较于上述第一种可能实现方式,第二种可能实现方式的启动阶段的通信量和和计算量少,生成公钥的效率高。
上述图8-图10中讲述的是由n个节点协同生成公钥的技术方案,在一种可能的实现方式中,本申请实施例中也可以由中心节点生成公钥。下面以中心节点为第一节点为例进行说明,与上述实施例不同的是,该第一节点为n个节点中的一个节点。第一节点生成公钥的方法可以为第一节点选取私钥,且根据私钥生成公钥。本申请实施例中可以预先设置多个待选择的私钥,由中心节点(第一节点)在该多个待选择的私钥中选择私钥,进而根据第一节点选择的私钥,生成公钥。示例性的,如第一节点选择的私钥为SK,公钥可以为私钥与椭圆曲线的基点的点乘,即A=SK·G。
可选的,在一种可能的实现方式中,第一节点可以根据目前的技术方案中的私钥分片的分配方法,向n个节点发送第一私钥分片。示例性的,第一节点可以采用选择的目标多项式的方法或者选择目标随机数的方法向n个节点发送第一私钥分片。
本申请实施例中,虽然由中心节点生成公钥,但是本申请实施例中的启动阶段和上述实施例中的签名阶段结合起来为完整的门限签名算法,进而具有与上述图2、图4、图5和图6中的实施例相同的技术效果,在此不做赘述。
图11为本申请实施例提供的门限签名装置的结构示意图。该门限签名装置可以为上述实施例中的第一节点,该第一节点为n个节点中的任意一个节点,该门限签名装置用于执行上述方法实施例中第一节点的动作。如图11所示,该第一节点1100可以包括:收发模块1101、处理模块1102。其中,
收发模块1101,用于接收到来自其他t-1个节点中每个节点的零知识证明和第一承诺。
处理模块1102,用于当接收到来自其他t-1个节点中每个节点的零知识证明和第一承诺时,验证每个节点的零知识证明和第一承诺,t为门限值,t为大于或等于2且小于或等于n的整数,第一节点的零知识证明与第一节点的第一承诺相关。
其中,若每个节点的零知识证明和第一承诺均通过验证,则处理模块1102,还用于根据第一节点的第一承诺和每个节点的第一承诺,得到签名的第一部分,且根据第一节点的签名的第二部分的分片,以及来自每个节点的签名的第二部分的分片,得到t个节点中每个节点的第二承诺,且根据t个节点中每个节点的第二承诺,验证t个节点中每个节点的签名的第二部分的分片;若t个节点中存在第二节点的签名的第二部分的分片未通过验证,则确定第二节点为恶意节点。
在一种可能的实现方式中,处理模块1102,具体用于将第一节点的第一承诺和其他t-1个节点中每个节点的第一承诺进行加和,得到签名的第一部分。
在一种可能的实现方式中,处理模块1102,具体用于第一节点根据签名的第一部分生成第一节点的签名的第二部分的分片。收发模块1101,还用于向其他t-1个节点发送第一节点的签名的第二部分的分片。
在一种可能的实现方式中,处理模块1102,具体用于根据签名的第一部分、公钥和待签名对象,生成衍生数值;根据t个节点中每个节点的身份信息,得到第一节点的第一系数;根据第一系数和第一节点持有的第一私钥分片,得到第二私钥分片;根据衍生数值、第二私钥分片和目标随机数,生成第一节点的签名的第二部分的分片,目标随机数是第一节点在预设随机数中选择的随机数。
在一种可能的实现方式中,处理模块1102,具体用于根据第一节点的签名的第二部分的分片和椭圆曲线的基点,得到第一节点的第二承诺;根据其他t-1个节点中每个节点的签名的第二部分的分片和椭圆曲线的基点,得到其他t-1个节点中每个节点的第二承诺,以得到t个节点中每个节点的第二承诺。
在一种可能的实现方式中,对于t个节点中的第三节点,第三节点为t个节点中的任一节点,其中:处理模块1102,具体用于获取第三节点的第五承诺,第三节点的第五承诺与第三节点的第一私钥分片相关。根据t个节点中每个节点的身份信息,得到第三节点的第一系数;根据第三节点的第五承诺和第一系数,得到第三节点的第三承诺;根据衍生数值和第三节点的第三承诺,得到第三节点的第四承诺;若第三节点的第二承诺等于第三节点的第一承诺和第三节点的第四承诺的加和,则第一节点确定第三节点的签名的第二部分的分片通过验证。
在一种可能的实现方式中,处理模块1102,还用于验证t个节点中每个节点的第三承诺;若t个节点中每个节点的第三承诺均通过验证,则验证t个节点中每个节点的签名的第二部分的分片。
在一种可能的实现方式中,处理模块1102,具体用于获取t个节点中每个节点的第三承诺的加和;若第三承诺的加和等于公钥,则确定t个节点中每个节点的第三承诺通过验证。
在一种可能的实现方式中,处理模块1102,还用于选取目标随机数,且根据目标随机数和椭圆曲线的基点,生成第一节点的第一承诺;根据第一节点的第一承诺,得到第一节点的零知识证明。收发模块1101,还用于向其他t-1个节点发送第一节点的零知识证明。
在一种可能的实现方式中,处理模块1102,还用于获取第一节点的第一私钥分片;根据第一节点的第一私钥分片,生成公钥。
在一种可能的实现方式中,处理模块1102,具体用于在预设的t-1次多项式中选择目标多项式,且将n个节点中每个节点的身份信息分别代入目标多项式中,得到n个节点中每个节点对应的分享密钥分片。收发模块1101,用于向其他n-1个节点中每个节点发送对应的分享密钥分片,且接收来自其他n-1个节点中每个节点的分享密钥分片。处理模块1102,还用于当接收到来自其他n-1个节点中每个节点的分享密钥分片时,将来自n个节点的分享密钥分片加和,得到第一节点的第一私钥分片。
在一种可能的实现方式中,处理模块1102,具体用于根据第一节点的第一私钥分片,生成第一节点的第五承诺。收发模块1101,还用于向其他n-1个节点发送第一节点的第五承诺。处理模块1102,具体用于根据n个节点的第五承诺,验证n个节点中每个节点的第一私钥分片;若n个节点中每个节点的第一私钥分片通过验证,则根据n个节点中每个节点的第五承诺,生成公钥。
在一种可能的实现方式中,处理模块1102,具体用于根据第一节点的第一私钥分片和椭圆曲线的基点,生成第一节点的第五承诺。
在一种可能的实现方式中,处理模块1102,具体用于执行如下步骤:
A、在n个第五承诺中,随机选择t个第五承诺;
B、根据t个第五承诺中每个第五承诺对应的节点的身份标识,得到t个第五承诺中每个第五承诺对应的节点的第二系数;
C、根据t个第五承诺中每个第五承诺对应的节点的第二系数,以及t个第五承诺中每个第五承诺对应的节点的第五承诺,得到一个待验证公钥;
D、重复执行预设次数的步骤A、B、C,得到预设数量个待验证公钥;
E、若预设数量个待验证公钥中每个待验证公钥均相同,则确定n个节点中每个节点的第一私钥分片通过验证;
将任一待验证公钥作为公钥。
在一种可能的实现方式中,处理模块1102,具体用于在预设的第一私钥分片中选取第一节点的第一私钥分片。
在一种可能的实现方式中,处理模块1102,具体用于根据第一节点的第一私钥分片,得到第一节点的第一公钥分片,以及第一节点的第一公钥分片的零知识证明;根据第一节点的第一公钥分片的零知识证明,生成第一节点的第六承诺。
收发模块1101,还用于向其他n-1个节点发送第一节点的第六承诺、第一节点的第一公钥分片,以及第一节点的第一公钥分片的零知识证明。
处理模块1102,具体用于验证来自n个节点中每个节点的第六承诺和第一公钥分片的零知识证明;若n个节点中每个节点的第六承诺和第一公钥分片的零知识证明均通过验证,则根据n个节点中每个节点的第一公钥分片,生成公钥。
在一种可能的实现方式中,处理模块1102,具体用于将n个节点中每个节点的第一公钥分片的加和,作为公钥。
在一种可能的实现方式中,收发模块1101,还用于输出第二节点的身份信息。
在一种可能的实现方式中,处理模块1102,还用于若t个节点中每个节点的签名的第二部分的分片均通过验证,则根据t个节点中每个节点的签名的第二部分的分片,得到签名的第二部分;根据签名的第一部分和签名的第二部分,生成签名;若签名有效,则输出签名。
本申请实施例提供的门限签名装置,其实现原理和技术效果与上述实施例中的第一节点类似,在此不再赘述。
需要说明的是,上述处理模块可以以软件通过处理元件调用的形式实现;也可以以硬件的形式实现。例如,处理模块可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上处理模块的功能。此外上述单元全部或部分可以集成在一起,也可以独立实现。这里的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。例如,以上这些单元可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个专用集成电路(application specific integratedcircuit,ASIC),或,一个或多个微处理器(digital signal processor,DSP),或,一个或者多个现场可编程门阵列(field programmable gate array,FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(central processing unit,CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,SOC)的形式实现。
图12为本申请实施例提供的电子设备的结构示意图。图12所示的电子设备可以为上述实施例中的第一节点。如图12所示,该电子设备可以包括:处理器1201、存储器1202和收发器1203;存储器1202可能包含高速随机存取存储器(random-access memory,RAM),也可能还包括非易失性存储器(non-volatile memory,NVM),例如至少一个磁盘存储器,存储器1202中可以存储各种指令,以用于完成各种处理功能以及实现本申请的方法步骤。收发器1203可以耦合至处理器1201,处理器1201可以控制实现与其他节点之间信息的收发动作,当处理器1201执行指令时,指令使电子设备的处理器1201执行上述方法实施例中电子设备的处理动作,使收发器1203执行上述方法实施例中电子设备的收发动作。可选的,本申请涉及的电子设备还可以包括:电源1204、通信总线1205、通信端口1206。通信总线1205用于实现元件之间的通信连接。上述通信端口1206用于实现电子设备与其他外设之间进行连接通信。在本申请实施例中,上述存储器1202用于存储计算机可执行程序代码,程序代码包括指令。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
本文中的术语“多个”是指两个或两个以上。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系;在公式中,字符“/”,表示前后关联对象是一种“相除”的关系。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。可以理解的是,在本申请的实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请的实施例的实施过程构成任何限定。以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (22)

1.一种门限签名方法,其特征在于,应用于n个节点中的第一节点,n为大于1的整数,所述方法包括:
当所述第一节点接收到来自其他t-1个节点中每个节点的零知识证明和第一承诺时,验证所述每个节点的零知识证明和第一承诺,t为门限值,所述t为大于或等于2且小于或等于所述n的整数,所述第一节点的零知识证明与所述第一节点的第一承诺相关;
若所述每个节点的零知识证明和第一承诺均通过验证,则所述第一节点根据所述第一节点的第一承诺和所述每个节点的第一承诺,得到签名的第一部分;
所述第一节点根据所述第一节点的签名的第二部分的分片,以及来自所述每个节点的签名的第二部分的分片,得到t个节点中每个节点的第二承诺,且根据所述t个节点中每个节点的第二承诺,验证所述t个节点中每个节点的签名的第二部分的分片;
若所述t个节点中存在第二节点的签名的第二部分的分片未通过验证,则所述第一节点确定所述第二节点为恶意节点。
2.根据权利要求1所述的方法,其特征在于,所述第一节点根据所述第一节点的第一承诺和所述每个节点的第一承诺,得到签名的第一部分,包括:
所述第一节点将所述第一节点的第一承诺和所述其他t-1个节点中每个节点的第一承诺进行加和,得到所述签名的第一部分。
3.根据权利要求1或2所述的方法,其特征在于,所述得到t个节点中每个节点的第二承诺之前,还包括:
所述第一节点根据所述签名的第一部分生成所述第一节点的签名的第二部分的分片,且向其他t-1个节点发送所述第一节点的签名的第二部分的分片。
4.根据权利要求3所述的方法,其特征在于,所述第一节点根据所述签名的第一部分生成所述第一节点的签名的第二部分的分片,包括:
所述第一节点根据所述签名的第一部分、公钥和待签名对象,生成衍生数值;
所述第一节点根据所述t个节点中每个节点的身份信息,得到所述第一节点的第一系数;
所述第一节点根据所述第一系数和所述第一节点持有的第一私钥分片,得到第二私钥分片;
所述第一节点根据所述衍生数值、所述第二私钥分片和目标随机数,生成所述第一节点的签名的第二部分的分片,所述目标随机数是所述第一节点在预设随机数中选择的随机数。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述第一节点根据所述第一节点的签名的第二部分的分片,以及来自所述每个节点的签名的第二部分的分片,得到t个节点中每个节点的第二承诺,包括:
所述第一节点根据所述第一节点的签名的第二部分的分片和椭圆曲线的基点,得到所述第一节点的第二承诺;
所述第一节点根据所述其他t-1个节点中每个节点的签名的第二部分的分片和所述椭圆曲线的基点,得到所述其他t-1个节点中每个节点的第二承诺,以得到所述t个节点中每个节点的第二承诺。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:对于所述t个节点中的第三节点,所述第三节点为所述t个节点中的任一节点,其中:
所述第一节点获取所述第三节点的第五承诺,所述第五承诺与所述第三节点的第一私钥分片相关;
所述第一节点根据所述t个节点中每个节点的身份信息,得到所述第三节点的第一系数;
所述第一节点根据所述第三节点的第五承诺和第一系数,得到所述第三节点的第三承诺;
所述第一节点根据所述衍生数值和所述第三节点的第三承诺,得到所述第三节点的第四承诺;
所述根据所述t个节点中每个节点的第二承诺,验证所述t个节点中每个节点的签名的第二部分的分片,包括:
若所述第三节点的第二承诺等于所述第三节点的第一承诺和所述第三节点的第四承诺的加和,则所述第一节点确定所述第三节点的签名的第二部分的分片通过验证。
7.根据权利要求6所述的方法,其特征在于,所述得到所述第三节点的第三承诺之后,还包括:
所述第一节点验证所述t个节点中每个节点的第三承诺;
所述验证所述t个节点中每个节点的签名的第二部分的分片,包括:
若所述t个节点中每个节点的第三承诺通过验证,则所述第一节点验证所述t个节点中每个节点的签名的第二部分的分片。
8.根据权利要求7所述的方法,其特征在于,所述验证所述t个节点中每个节点第三承诺,包括:
所述第一节点获取所述t个节点中每个节点的第三承诺的加和;
若所述第三承诺的加和等于公钥,则所述第一节点确定所述t个节点中每个节点的第三承诺通过验证。
9.根据权利要求1-8中任一项所述的方法,其特征在于,所述第一节点接收到来自其他t-1个节点中每个节点的零知识证明和第一承诺之前,还包括:
所述第一节点选取目标随机数,且根据所述目标随机数和椭圆曲线的基点,生成所述第一节点的第一承诺;
所述第一节点根据所述第一节点的第一承诺和所述目标随机数,得到所述第一节点的零知识证明,所述目标随机数是所述第一节点在预设随机数中选择的随机数;
所述第一节点向其他t-1个节点发送所述第一节点的零知识证明。
10.根据权利要求1-9中任一项所述的方法,其特征在于,所述第一节点接收到来自其他t-1个节点中每个节点的零知识证明和第一承诺之前,还包括:
所述第一节点获取所述第一节点的第一私钥分片;
所述第一节点根据所述第一节点的第一私钥分片,生成公钥。
11.根据权利要求10所述的方法,其特征在于,所述第一节点获取所述第一节点的第一私钥分片,包括:
所述第一节点在预设的t-1次多项式中选择目标多项式,且将所述n个节点中每个节点的身份信息分别代入所述目标多项式中,得到所述n个节点中每个节点对应的分享密钥分片;
所述第一节点向所述其他n-1个节点中每个节点发送对应的分享密钥分片;
当所述第一节点接收到来自所述其他n-1个节点中每个节点的分享密钥分片时,将来自所述n个节点的分享密钥分片加和,得到所述第一节点的第一私钥分片。
12.根据权利要求10或11所述的方法,其特征在于,所述第一节点根据所述第一节点的第一私钥分片,生成公钥,包括:
所述第一节点根据所述第一节点的第一私钥分片,生成所述第一节点的第五承诺;
所述第一节点向其他n-1个节点发送所述第一节点的第五承诺;
所述第一节点根据n个节点中每个节点的第五承诺,验证所述n个节点中每个节点的第一私钥分片;
若所述n个节点中每个节点的第一私钥分片通过验证,则根据所述n个节点中每个节点的第五承诺,生成公钥。
13.根据权利要求12所述的方法,其特征在于,所述第一节点根据所述第一节点的第一私钥分片,生成所述第一节点的第五承诺,包括:
所述第一节点根据所述第一节点的第一私钥分片和椭圆曲线的基点,生成所述第一节点的第五承诺。
14.根据权利要求12或13所述的方法,其特征在于,所述第一节点根据n个节点中每个节点的第五承诺,验证所述n个节点中每个节点的第一私钥分片,包括:
A、所述第一节点在n个第五承诺中,随机选择t个第五承诺;
B、所述第一节点根据所述t个第五承诺中每个第五承诺对应的节点的身份标识,得到所述t个第五承诺中每个第五承诺对应的节点的第二系数;
C、所述第一节点根据所述t个第五承诺中每个第五承诺对应的节点的第二系数,以及所述t个第五承诺中每个第五承诺对应的节点的第五承诺,得到一个待验证公钥;
D、重复执行预设次数的步骤A、B、C,得到预设数量个待验证公钥;
E、若所述预设数量个待验证公钥中每个待验证公钥均相同,则所述第一节点确定所述n个节点中每个节点的第一私钥分片通过验证;
所述根据所述n个节点中每个节点的第一私钥分片,生成公钥,包括:
所述第一节点将任一待验证公钥作为公钥。
15.根据权利要求10所述的方法,其特征在于,所述第一节点获取所述第一节点的第一私钥分片,包括:
所述第一节点在预设的第一私钥分片中选取所述第一节点的第一私钥分片。
16.根据权利要求15所述的方法,其特征在于,所述第一节点根据所述第一节点的第一私钥分片,生成公钥,包括:
所述第一节点根据所述第一节点的第一私钥分片,得到所述第一节点的第一公钥分片,以及所述第一节点的第一公钥分片的零知识证明;
所述第一节点根据所述第一节点的第一公钥分片的零知识证明,生成所述第一节点的第六承诺,且向其他n-1个节点发送所述第一节点的第六承诺、所述第一节点的第一公钥分片,以及所述第一节点的第一公钥分片的零知识证明;
所述第一节点验证来自n个节点中每个节点的第六承诺和第一公钥分片的零知识证明;
若所述n个节点中每个节点的第六承诺和第一公钥分片的零知识证明均通过验证,则所述第一节点根据所述n个节点中每个节点的第一公钥分片,生成公钥。
17.根据权利要求16所述的方法,其特征在于,所述第一节点根据所述n个节点中每个节点的第一公钥分片,生成公钥,包括:
所述第一节点将所述n个节点中每个节点的第一公钥分片的加和,作为所述公钥。
18.根据权利要求1-17中任一项所述的方法,其特征在于,所述第一节点确定所述第二节点为恶意节点之后,包括:
所述第一节点输出所述第二节点的身份信息。
19.根据权利要求1-18中任一项所述的方法,其特征在于,所述方法还包括:
若所述t个节点中每个节点的签名的第二部分的分片均通过验证,则根据所述t个节点中每个节点的签名的第二部分的分片,得到签名的第二部分;
根据所述签名的第一部分和所述签名的第二部分,生成签名;
若所述签名有效,则输出所述签名。
20.一种门限签名装置,其特征在于,包括:
收发模块,用于接收到来自其他t-1个节点中每个节点的零知识证明和第一承诺;
处理模块,用于当接收到来自其他t-1个节点中每个节点的零知识证明和第一承诺时,验证所述每个节点的零知识证明和第一承诺,t为门限值,所述t为大于或等于2且小于或等于n的整数,第一节点的零知识证明与所述第一节点的第一承诺相关;
其中,若所述每个节点的零知识证明和第一承诺均通过验证,则所述处理模块,还用于根据所述第一节点的第一承诺和所述每个节点的第一承诺,得到签名的第一部分,且根据所述第一节点的签名的第二部分的分片,以及来自所述每个节点的签名的第二部分的分片,得到t个节点中每个节点的第二承诺,且根据所述t个节点中每个节点的第二承诺,验证所述t个节点中每个节点的签名的第二部分的分片;若所述t个节点中存在第二节点的签名的第二部分的分片未通过验证,则确定所述第二节点为恶意节点。
21.一种电子设备,其特征在于,包括:存储器、处理器和收发器;
所述处理器用于与所述存储器耦合,读取并执行所述存储器中的指令,以实现权利要求1-19中任一项所述的方法;
所述收发器与所述处理器耦合,由所述处理器控制所述收发器进行消息收发。
22.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机指令,当所述计算机指令被计算机执行时,使得所述计算机执行权利要求1-19中任一项所述的方法。
CN202011039445.2A 2020-09-28 2020-09-28 门限签名方法、装置、电子设备和可读存储介质 Pending CN114338028A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011039445.2A CN114338028A (zh) 2020-09-28 2020-09-28 门限签名方法、装置、电子设备和可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011039445.2A CN114338028A (zh) 2020-09-28 2020-09-28 门限签名方法、装置、电子设备和可读存储介质

Publications (1)

Publication Number Publication Date
CN114338028A true CN114338028A (zh) 2022-04-12

Family

ID=81011203

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011039445.2A Pending CN114338028A (zh) 2020-09-28 2020-09-28 门限签名方法、装置、电子设备和可读存储介质

Country Status (1)

Country Link
CN (1) CN114338028A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115378616A (zh) * 2022-10-21 2022-11-22 三未信安科技股份有限公司 一种基于Ed25519的门限签名方法
TWI795284B (zh) * 2022-05-05 2023-03-01 英屬開曼群島商現代財富控股有限公司 基於混淆電路的門檻式簽章生成系統及其方法
CN116996331A (zh) * 2023-09-27 2023-11-03 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、装置、设备以及介质
WO2024036644A1 (zh) * 2022-08-19 2024-02-22 华为技术有限公司 获取签名信息的方法及装置
CN117728959A (zh) * 2024-02-06 2024-03-19 中国信息通信研究院 门限签名方法和装置、电子设备和存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109547212A (zh) * 2018-12-04 2019-03-29 中国电子科技集团公司第三十研究所 一种基于sm2签名算法的门限签名方法
CN110061847A (zh) * 2019-04-04 2019-07-26 西安电子科技大学 密钥分布式生成的数字签名方法
US20190251553A1 (en) * 2018-11-07 2019-08-15 Alibaba Group Holding Limited Blockchain data protection based on account note model with zero-knowledge proof
CN111541551A (zh) * 2020-05-22 2020-08-14 杭州时戳信息科技有限公司 门限签名消息的处理方法、系统、存储介质及服务器
CN111600703A (zh) * 2020-05-12 2020-08-28 北京海益同展信息科技有限公司 基于sm2的签名方法、系统、电子设备及存储介质
CN111669275A (zh) * 2020-07-07 2020-09-15 广东工业大学 一种无线网络环境下可选择从节点的主从协作签名方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190251553A1 (en) * 2018-11-07 2019-08-15 Alibaba Group Holding Limited Blockchain data protection based on account note model with zero-knowledge proof
CN109547212A (zh) * 2018-12-04 2019-03-29 中国电子科技集团公司第三十研究所 一种基于sm2签名算法的门限签名方法
CN110061847A (zh) * 2019-04-04 2019-07-26 西安电子科技大学 密钥分布式生成的数字签名方法
CN111600703A (zh) * 2020-05-12 2020-08-28 北京海益同展信息科技有限公司 基于sm2的签名方法、系统、电子设备及存储介质
CN111541551A (zh) * 2020-05-22 2020-08-14 杭州时戳信息科技有限公司 门限签名消息的处理方法、系统、存储介质及服务器
CN111669275A (zh) * 2020-07-07 2020-09-15 广东工业大学 一种无线网络环境下可选择从节点的主从协作签名方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI795284B (zh) * 2022-05-05 2023-03-01 英屬開曼群島商現代財富控股有限公司 基於混淆電路的門檻式簽章生成系統及其方法
WO2024036644A1 (zh) * 2022-08-19 2024-02-22 华为技术有限公司 获取签名信息的方法及装置
CN115378616A (zh) * 2022-10-21 2022-11-22 三未信安科技股份有限公司 一种基于Ed25519的门限签名方法
CN115378616B (zh) * 2022-10-21 2023-01-10 三未信安科技股份有限公司 一种基于Ed25519的门限签名方法
CN116996331A (zh) * 2023-09-27 2023-11-03 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、装置、设备以及介质
CN116996331B (zh) * 2023-09-27 2023-12-15 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、装置、设备以及介质
CN117728959A (zh) * 2024-02-06 2024-03-19 中国信息通信研究院 门限签名方法和装置、电子设备和存储介质
CN117728959B (zh) * 2024-02-06 2024-05-10 中国信息通信研究院 门限签名方法和装置、电子设备和存储介质

Similar Documents

Publication Publication Date Title
CN114338028A (zh) 门限签名方法、装置、电子设备和可读存储介质
JP6720424B1 (ja) 鍵共有デバイス及び方法
CN108370317B (zh) 向标准的凭证添加隐私
CN111049650B (zh) 一种基于sm2算法的协同解密方法及装置、系统、介质
CN111130804B (zh) 一种基于sm2算法的协同签名方法及装置、系统、介质
CN116561789B (zh) 隐私数据的处理方法、装置、电子设备及可读存储介质
CN109936455B (zh) 一种数字签名的方法、装置和系统
KR20140054151A (ko) 크레덴셜 검증
CN116204912B (zh) 基于全同态加密的数据处理方法和装置
CN110945831B (zh) 抗Sybil攻击身份的生成
CN106576043A (zh) 病毒式可分配可信消息传送
CN111630810A (zh) 密钥交换装置、密钥交换系统、密钥交换方法及密钥交换程序
CN106789087B (zh) 确定消息的数据摘要、基于多方的数字签名的方法及系统
CN111064583A (zh) 一种门限sm2数字签名方法、装置、电子设备及存储介质
CN113841149A (zh) 用于在工作量证明区块链网络上进行挖掘的系统和方法
Ding et al. Study on secret sharing for SM2 digital signature and its application
CN109565440B (zh) 密钥交换方法,密钥交换系统
CN112464155A (zh) 一种数据处理方法、多方安全计算系统和电子设备
EP3920464A1 (en) Method for storing transaction that represents asset transfer to distributed network and program for the same
CN110191467A (zh) 一种物联网设备的鉴权方法、设备、装置及存储介质
CN108768634B (zh) 可验证加密签名生成方法和系统
CN114337994A (zh) 数据处理方法、装置及系统
WO2022116175A1 (zh) 数字签名的生成方法、装置和服务器
CN115694822A (zh) 基于零知识证明的验证方法、装置和系统、设备及介质
CN104868994B (zh) 一种协同密钥管理的方法、装置及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination