CN112751667B - 密钥生成方法、签名和验签方法、装置、设备和介质 - Google Patents
密钥生成方法、签名和验签方法、装置、设备和介质 Download PDFInfo
- Publication number
- CN112751667B CN112751667B CN202011594343.7A CN202011594343A CN112751667B CN 112751667 B CN112751667 B CN 112751667B CN 202011594343 A CN202011594343 A CN 202011594343A CN 112751667 B CN112751667 B CN 112751667B
- Authority
- CN
- China
- Prior art keywords
- public key
- signature
- node
- key
- nodes
- 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/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/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- 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/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- 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
- H04L9/3255—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 using group based signatures, e.g. ring or threshold signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种密钥生成方法、签名和验签方法、装置、设备和介质,涉及计算机加密技术和区块链技术领域,可用于云计算领域。具体实现方案为:生成本机节点的单机私钥和单机公钥;其中,多方节点各自的单机公钥为第二阿贝尔群中的元素;根据所有节点的单机公钥生成公共公钥;根据每个节点的单机公钥相对于公共公钥的关系,生成门限公钥;根据每个节点采用各自的单机私钥对所述门限公钥进行签名的签名碎片,分别生成每个节点的身份公钥。本申请能够提高密钥生成的安全性及隐私性。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及计算机加密技术和区块链技术领域,具体涉及一种密钥生成方法、签名和验签方法、装置、设备和介质。
背景技术
随着计算机所处理业务的复杂度提升,已经大量出现了需要多个参与方协作来完成的业务。在多方业务中,可采用多方安全计算技术来保证各个参与方之间进行协作来完成任务的计算。多方安全计算技术中会采用门限签名技术来保证数据交互的安全性。
门限签名技术是密码学签名领域的一个前沿技术方向。在门限签名技术中,各参与方所采用的密钥,是进行签名的关键技术。现有门限签名技术往往采用中心化密钥生成方式,这在一定程度上会降低密钥的安全性。
发明内容
本公开提供了一种密钥生成方法、签名和验签方法、装置、设备和介质。
根据本公开的一方面,提供了一种密钥生成方法,由多方节点中的任一节点执行,所述方法包括:
生成本机节点的单机私钥和单机公钥;其中,所述多方节点各自的单机公钥为第二阿贝尔群中的元素;
根据所有节点的单机公钥生成公共公钥;
根据每个节点的单机公钥相对于公共公钥的关系,生成门限公钥;
根据每个节点采用各自的单机私钥对所述门限公钥进行签名的签名碎片,分别生成每个节点的身份公钥。
根据本公开的一方面,提供了一种基于密钥的门限签名方法,由多方节点中的任一节点执行,所述密钥包括单机私钥、单机公钥、公共公钥、门限公钥和身份公钥,所述密钥为本公开实施例任一项所述的密钥生成方法所生成的,所述方法包括:
采用门限公钥、以及本机节点的身份公钥和单机私钥,对待签名数据进行签名,以产生单机签名值;所述单机签名值为第一阿贝尔群的第一元素;
根据各实际参与节点的单机签名值,生成总签名值;
根据各实际参与节点的单机公钥,产生签名参数;
将所述总签名值、签名参数和所有实际参与节点的节点编号,进行封装,以产生签名结果。
根据本公开的一方面,提供了一种基于密钥的门限签名验签方法,由多方节点中的任一节点执行,所述密钥包括单机私钥、单机公钥、公共公钥、门限公钥和身份公钥,所述密钥为本公开实施例任一项所述的密钥生成方法所生成的,所述签名结果为本公开实施例任一项所述的基于密钥的门限签名方法所生成的,所述验签方法包括:
获取待签名数据作为验签数据,并根据所述签名结果确定的实际参与节点来获取所述实际参与节点的单机公钥和门限公钥;
采用双线性映射函数,基于所述门限公钥、所述实际参与节点的单机公钥、第二阿贝尔群的基点以及待签名数据,对所述签名结果中的总签名值和签名参数进行签名验证。
根据本公开的一方面,提供了一种密钥生成装置,配置于多方节点中的任一节点中,所述装置包括:
单机私钥和公钥生成模块,用于生成本机节点的单机私钥和单机公钥;其中,所述多方节点各自的单机公钥为第二阿贝尔群中的元素;
公共公钥生成模块,用于根据所有节点的单机公钥生成公共公钥;
门限公钥生成模块,用于根据每个节点的单机公钥相对于公共公钥的关系,生成门限公钥;
身份公钥生成模块,用于根据每个节点采用各自的单机私钥对所述门限公钥进行签名的签名碎片,分别生成每个节点的身份公钥。
根据本公开的一方面,提供了一种基于密钥的门限签名装置,配置于多方节点中的任一节点中,所述密钥包括单机私钥、单机公钥、公共公钥、门限公钥和身份公钥,所述密钥为本公开实施例任一项所述的密钥生成方法所生成的,所述装置包括:
单机签名值生成模块,用于采用门限公钥、以及本机节点的身份公钥和单机私钥,对待签名数据进行签名,以产生单机签名值;所述单机签名值为第一阿贝尔群的第一元素;
总签名值生成模块,用于根据各实际参与节点的单机签名值,生成总签名值;
签名参数生成模块,用于根据各实际参与节点的单机公钥,产生签名参数;
签名结果生成模块,用于将所述总签名值、签名参数和所有实际参与节点的节点编号,进行封装,以产生签名结果。
根据本公开的一方面,提供了一种基于密钥的门限签名验签装置,配置于多方节点中的任一节点中,所述密钥包括单机私钥、单机公钥、公共公钥、门限公钥和身份公钥,所述密钥为本公开实施例任一项所述的密钥生成方法所生成的,所述签名结果为本公开实施例任一项所述的基于密钥的门限签名方法所生成的,所述验签装置包括:
数据获取模块,用于获取待签名数据作为验签数据,并根据所述签名结果确定的实际参与节点来获取所述实际参与节点的单机公钥和门限公钥;
签名验证模块,用于采用双线性映射函数,基于所述门限公钥、所述实际参与节点的单机公钥、第二阿贝尔群的基点以及待签名数据,对所述签名结果中的总签名值和签名参数进行签名验证。
根据本公开的一方面,提供了一种电子设备,该电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如本公开实施例中任一项所述的密钥生成方法,或基于密钥的门限签名方法,或基于密钥的门限签名验签方法。
根据本公开的一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如本公开实施例中任一项所述的密钥生成方法、基于密钥的门限签名方法或者基于密钥的门限签名验签方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如本公开实施例中任一项所述的密钥生成方法、基于密钥的门限签名方法或者基于密钥的门限签名验签方法。
根据本公开的技术能够提高密钥生成的安全性及隐私性,进而提高了数据交互的安全性。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本申请实施例提供的一种密钥生成方法的流程示意图;
图2A是根据本申请实施例提供的另一种密钥生成方法的流程示意图;
图2B是本申请实施例中的公共公钥的生成过程的流程示意图;
图3A是根据本申请实施例提供的一种基于密钥的门限签名方法的流程示意图;
图3B是本申请实施例中门限公钥生成过程的流程示意图;
图4根据本申请实施例提供的另一种密钥生成方法的流程示意图;
图5是根据本申请实施例提供的一种基于密钥的门限签名方法的流程示意图;
图6是是根据本申请实施例提供的另一种基于密钥的门限签名方法的流程示意图;
图7是根据本申请实施例提供的另一种基于密钥的门限签名方法的流程示意图;
图8是根据本申请实施例提供的一种基于密钥的门限签名验签方法的流程示意图;
图9是根据本申请实施例提供的一种密钥生成装置的结构示意图;
图10是根据本申请实施例提供的一种基于密钥的门限签名装置的示意图;
图11是根据本申请实施例提供的一种基于密钥的门限签名验签装置的示意图;
图12示出了可以用来实现本申请的实施例的示例电子设备的示意图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本申请实施例提供的一种密钥生成方法的流程示意图。本实施例可适用于门限签名中密钥生成的情况,从而提高密钥生成的安全性和隐私性,同时减少密钥生成过程中各节点的交互次数。本实施例公开的密钥生成方法可以由密钥生成装置来执行,该装置可以由软件和/或硬件的方式实现,配置于电子设备中。
本申请实施例的技术方案所生成的密钥可用于门限签名场景中,门限签名中通常涉及M个潜在参与方,其中N个以上实际参与方共同进行签名即可完成签名和验签,M和N均为自然数,且M大于N。参与方也可称为参与节点,每个节点都会持有一个私钥,且私钥对应有公钥,组成非对称密钥对。
门限签名技术涉及多方节点,本申请实施例采用去中心化生成密钥和签名技术,多方节点中的每个节点均执行下述密钥生成方法。多方参与的门限签名可应用于各种业务场景中,例如,可应用于区块链系统,由多个区块链节点共同处理事务请求的过程中,可由区块链节点作为多方节点,完成密钥生成、签名和验签的处理,本实施例以区块链应用场景为例进行说明,但本领域技术人员可以理解的是,门限签名技术并不限于区块链应用场景。
参见图1,从多方节点中任一节点的角度介绍其生成密钥的执行过程。本实施例提供的密钥生成方法包括:
S110、生成本机节点的单机私钥和单机公钥;其中,所述多方节点各自的单机公钥为第二阿贝尔群中的元素。
其中,多方节点是指包括本机节点和其他区块链中参与事务数据处理的节点,可选的,多方节点为区块链网络中用于处理设定业务或归属于设定组织的多个节点。其中,设定业务可以是银行财务业务、公司办公业务等业务。
本机节点可以是区块链中的任一节点。在区块链上各个节点地位平等,参与事务数据处理的各节点生成各自的单机私钥和单机公钥。单机私钥与单机公钥为本机节点生成的非对称密钥对。单机私钥为本机节点保存,不向外界宣示的密钥。单机公钥是指向外界公开的密钥。
可选的,单机私钥是一个大整数,其中,大整数又称为高精度整数,其含义就是用基本数据类型无法存储其精度的整数,是基于椭圆曲线转换获得私钥中所使用的设定整数。单机私钥可以是本机节点基于随机数,按照设定生成算法生成一个字节数组或数字,根据随机数生成的,也可以是根据助记词恢复出来的。其中,助记词一般由字符串构成,几个字符之间由空格隔开,这些字符串可来源于用户的设定。
其中,所述多方节点各自的单机公钥为第二阿贝尔群中的元素。值得注意的是,这里的第二阿贝尔群是为了与本公开实施例中的其他阿贝尔群予以区分,第二阿贝尔群是指阿贝尔群。可以知道的是,阿贝尔群亦称交换群是一种重要的群类,阿贝尔群是有着群运算符合交换律性质的群,即对任意的a,b∈G都有ab=ba。因此,阿贝尔群也被称为交换群。交换群的运算常用加法来表示,阿贝尔群又称为加法群或加群。它由自身的集合 G和二元运算*构成。它除了满足一般的群公理,即运算的结合律、G有单位元和所有G的元素都有逆元之外,还满足交换律公理,因为阿贝尔群的群运算满足交换律和结合律,群元素乘积的值与乘法运算时的次序无关。阿贝尔群中的元素可以是字符串、坐标值或者曲线公式。
因此,多方节点各自的单机公钥的乘积的值与乘法运算时的次序无关。
可以通过将原始公钥与第二阿贝尔群的基点相乘处理来生成属于第二阿贝尔群的公钥。
S120、根据所有节点的单机公钥生成公共公钥。
其中,公共公钥是指综合了所有节点的单机公钥得到的,所有节点所共有的公钥。公共公钥包括了多方节点中全部节点的单机公钥的信息。
S130、根据每个节点的单机公钥相对于公共公钥的关系,生成门限公钥。
对于多方节点中的各节点,每个节点均持有本机节点和全部多方节点所共有的公共公钥。由于,公共公钥是根据本机节点和多方节点中其他节点的单机公钥生成的。公共公钥除了包括本机节点的公钥信息以外,还包括其他多方节点的公钥信息。因此,公共公钥与每个节点的公共公钥之间存在差异。根据每个节点的单机公钥相对于公共公钥的差异,可生成门限公钥。其中,门限公钥用于对签名结果进行签名验证。
S140、根据每个节点采用各自的单机私钥对所述门限公钥进行签名的签名碎片,分别生成每个节点的身份公钥。
每个节点采用各自的单机私钥对门限公钥进行签名,即表示各节点对门限公钥进行签名的本机节点已确认门限公钥的内容,并对此负责。每个节点采用各自的单机私钥对所述门限公钥进行签名,得到签名碎片,签名碎片中包括参与签名节点的身份信息。根据签名碎片可以得到每个节点的身份公钥。
其中,所述公共公钥、门限公钥和身份公钥,为第二阿贝尔群中的元素,所述门限公钥、身份公钥和单机私钥,用于对待签名数据进行签名,以产生签名结果;所述签名结果为第一阿贝尔群的元素,所述门限公钥用于对所述签名结果进行签名验证。可以通过将原始签名结果乘以第一阿贝尔群的基点,从而转换为第一阿贝尔群的元素。当然,也可以经过其他处理进行向阿贝尔群元素的转换。
可选的,第一阿贝尔群和第二阿贝尔群为椭圆曲线的阿贝尔群,椭圆曲线中的阿贝尔群,是在在椭圆曲线上定义一个群,该群满足以下条件: 1、群中的元素就是椭圆曲线上的点;2、单位元就是无穷处的点0;3、相反数P,是关于X轴对称的另一边的点;4、二元运算规则定义如下:取一条直线上的三点(这条直线和椭圆曲线相交的三点),P,Q和R(皆非零),他们的总和等于0。
可选的,待签名数据为基于区块链网络协议发起的事务请求。签名过程一般在某个节点向区块链发起事务请求,该事务请求需要门限签名时来执行。
本申请实施例的技术方案通过多方节点中的任一节点生成本机节点的单机私钥和单机公钥。整个密钥的生成过程不必依赖于中心节点,各个节点的单机私钥均不会被一个节点获知,进而提高了密钥生成的安全性和隐私性。另外,在本申请实施例中公共公钥、门限公钥和身份公钥,为第二阿贝尔群中的元素;签名结果为第一阿贝尔群的元素,本申请实施例通过在密钥生成的过程中引入阿贝尔群,利用了阿贝尔群的群运算满足交换律和结合律的特性,减少了密钥生成过程中,多方节点之间的交互过程,提高了密钥生成效率。
图2A是根据本申请实施例提供的另一种密钥生成方法的流程示意图。本实施例是在上述实施例的基础上提出的一种可选方案。具体的是对根据所有节点的单机公钥生成公共公钥的细化,参见图2A,本实施例提供的密钥生成方法包括:
S210、生成本机节点的单机私钥和单机公钥;其中,所述多方节点各自的单机公钥为第二阿贝尔群中的元素。
S220、将所有节点的单机公钥Pi按照如下公式进行累加,以生成所述公共公钥PC:
PC=sum(Pi)=P1+P2+......+PM;
其中,M为多方节点的节点数量。
其中,i表示节点的编号,i的取值为1到M,sum(Pi)表示将单机节点的单机公钥P1到单机公钥PM进行累加。
在一个可选的实施例中,将所有节点的单机公钥进行累加,以生成所述公共公钥之前,还包括:将所述本机节点的单机公钥Pi传输给所述多方节点中的其他节点,并接收其他节点传输的、各自生成并传输的单机公钥 Pj;其中,i,j∈[1,M],M为多方节点的节点数量。
每个节点都将自己生成的单机公钥传输至多方节点中的其他节点。具体的,本机节点可以将单机公钥Pi广播到区块链网络,相应的,本机节点接收多方节点中的其他节点广播的各自生成的单机公钥Pj。或者,本机节点根据多方节点中的各节点的编号将单机节点Pi传输给多方节点中的其他节点,相应的,接收除本机节点以外的,多方节点中其他节点各自生成并传输的单机公钥Pj。具体的,编号为i的本机节点将Pi传输给编号为j的多方节点,其中,j∈[1,M]且j≠i。
在一个具体实施例中,图2B是本申请实施例中的公共公钥的生成过程的流程示意图,如图2B所示,在多方节点的数量为3的情况下,多方节点中的每个节点生成本机账户,其中,本机账户中包括:单机公钥、单机私钥和本机身份编号。将节点1、节点2和节点3生成的本机账户中的单机公钥进行累加,得到的累加结果即为公共公钥。
可选的,在接收到多方节点中的其他节点传输的单机公钥以后,多方节点中的每个节点均根据接收到的单机公钥和本机节点的单机公钥生成公共公钥;或者,由多方节点中的任一节点,根据接收到的单机公钥和本机节点的单机公钥生成公共公钥,再将生成的公共公钥,广播到区块链网络以供多方节点中的其他节点接收。值得注意的是,无论公共公钥是以上述哪种传输方式和计算方式计算得到的,多方节点中的每个节点均持有公共公钥的内容均是一致的。
S230、根据每个节点的单机公钥相对于公共公钥的关系,生成门限公钥。
S240、根据每个节点采用各自的单机私钥对所述门限公钥进行签名的签名碎片,分别生成每个节点的身份公钥。
本申请实施例的技术方案,通过多方节点中的任一节点生成本机节点的单机私钥和单机公钥。整个密钥的生成过程不必依赖于中心节点,各个节点的单机私钥均不会被一个节点获知,进而提高了密钥生成的安全性和隐私性。另外,在本申请实施例中在公共公钥生成过程中采用了多方安全计算技术,通过将多方节点中每个节点的单机公钥累加得到公共公钥。保证各个参与方之间进行协作来完成公共公钥的计算,提高了密钥生成过程的安全性。
图3A是根据本申请实施例提供的另一种密钥生成方法的流程示意图。本实施例是在上述实施例的基础上提出的一种可选方案。具体的是对根据每个节点的单机公钥相对于公共公钥的关系,生成门限公钥的细化,参见图3A,本实施例提供的密钥生成方法包括:
S310、生成本机节点的单机私钥和单机公钥;其中,所述多方节点各自的单机公钥为第二阿贝尔群中的元素。
S320、根据所有节点的单机公钥生成公共公钥。
S330、根据本机节点的单机公钥Pi和所述公共公钥PC,计算本机节点的单机公钥Pi相对于所述公共公钥PC的偏离值Ki。
其中,偏离值Ki是指本机节点的单机公钥Pi相对于所有单机公钥之和即公共公钥PC的偏离系数。
在一个可选的实施例中,根据本机节点的单机公钥Pi和所述公共公钥 PC,计算本机节点的单机公钥Pi相对于所述公共公钥PC的偏离值Ki包括:
根据本机节点的单机公钥Pi和所述公共公钥PC,采用如下公式计算所述偏离值Ki:
Ki=hash(hash(Pi)+hash(PC))
或
Ki=hash(Pi+PC)
其中,hash()为哈希函数。
偏离值Ki可以通过公式Ki=hash(hash(Pi)+hash(PC))计算得到。具体为,对本机节点的单机公钥进行哈希运算的得到单机公钥的哈希值,对公共公钥进行哈希运算的得到公共公钥的哈希值,再将公共公钥的哈希值与单机公钥的哈希值进行拼接得到哈希值拼接结果,再对哈希值拼接结果进行哈希运算得到最终哈希值。
可选的,在得到哈希值以后,可以进一步将该哈希值转换成大整数,得到的大整数即为偏离值Ki。
值得注意的是,在计算本机节点的单机公钥Pi相对于所述公共公钥PC的偏离值Ki时,需要遍历全部的多方节点。也就是说,多方节点中的每个节点均需要计算偏离值。
S340、根据每个节点的偏离值Ki和单机公钥Pi,计算确定每个节点的偏离公钥PKi。
由于每个节点均计算了本机节点的单机公钥Pi相对于所述公共公钥PC的偏离值Ki,且每个节点均生成了单机公钥Pi。每个节点根据自身的偏离值和单机公钥即可计算得到偏离公钥PKi。可选的,计算偏离公钥PKi的过程中,多方节点之间无需向其他节点广播偏离值Ki和单机公钥Pi。由于每个节点都拥有所有节点各自的单机公钥,所以能够计算得到各个节点的偏离公钥PKi。
S350、将每个节点的偏离公钥PKi进行累加,以计算确定门限公钥PD。
具体的,可以通过门限公钥的计算公式确定门限公钥PD。其中,所述门限公钥的计算公式如下:
PD=sum(PKi)=PK1+PK2+…+PKM
其中,PKi是指编号为i的节点的偏离公钥。门限公钥PD是编号为1到 M的本机节点的偏离公钥的累加值,其中,M为多方节点的数量。即门限公钥PD为所有多方节点的偏离公钥的累加值。具体的,门限公钥PD为将所有多方节点的偏离公钥进行拼接,得到的拼接结果。
在一个可选的实施例中,根据每个节点的偏离值Ki和单机公钥Pi,计算确定每个节点的偏离公钥PKi之前,还包括:根据接收到的其他节点的单机公钥,计算其他节点的偏离值和偏离公钥;或接收其他节点各自计算并传输的偏离公钥。
由于,门限公钥是PD是多方节点中每个节点的偏离公钥PKi进行累加得到的,偏离公钥PKi仅与偏离值Ki和单机公钥Pi相关,而偏离值Ki与单机公钥Pi和公共公钥PC相关,且公共公钥PC是为所有多方节点均可获得的。因此,多方节点中的每个节点在接收到其他节点的单机公钥以后,即可根据其他界节点的单机公钥,计算得到其他节点的偏离值和偏离公钥。具体的,多方节点中的每个节点根据接收到的其他节点的单机公钥Pi,计算各个Pi与公共公钥PC之间的偏离值Ki。再根据得到的每个节点的偏离值Ki和单机公钥Pi,确定每个节点的偏离公钥PKi。可选的,多方节点中的各个节点可以各自计算偏离公钥,并将计算得到的偏离公钥传输给多方节点中的其他节点。多方节点中的每个节点将接收到的由各节点各自计算得到的偏离公钥。
在一个优选的实施例中,图3B是本申请实施例中门限公钥生成过程的流程示意图。如图3B所示,为方便说明,将多方节点的节点数量设置为3,节点编号为1的多方节点根据本机节点的单机公钥和公共公钥PC计算单机公钥P1相对于公共公钥的偏离系数偏离值K1,再根据得到的每个节点的偏离值K1和单机公钥P1,确定本机节点的偏离公钥PK1。相应的,节点编号为2的多方节点按照上述方法计算本机节点的偏离公钥PK2,节点编号为3的多方节点按照上述方法计算本机节点的偏离公钥PK3,将各个多方节点的偏离公钥PK1、PK2和PK3累加,得到的累加值即为门限公钥PD。
S360、根据每个节点采用各自的单机私钥对所述门限公钥进行签名的签名碎片,分别生成每个节点的身份公钥。
本申请实施例的技术方案,通过多方节点中的任一节点生成本机节点的单机私钥和单机公钥。整个密钥的生成过程不必依赖于中心节点,各个节点的单机私钥均不会被一个节点获知,进而提高了密钥生成的安全性和隐私性。另外,在本申请实施例中在门限公钥生成过程中采用了多方安全计算技术,多方节点中每个节点均参与到门限公钥的生成过程。保证各个参与方之间进行协作来完成门限公钥的计算,提高了密钥生成过程的安全性。
图4是根据本申请实施例提供的另一种密钥生成方法的流程示意图。本实施例是在上述实施例的基础上提出的一种可选方案。具体的是对根据每个节点采用各自的单机私钥对所述门限公钥进行签名的签名碎片,分别生成每个节点的身份公钥的细化,参见图4,本实施例提供的密钥生成方法包括:
S410、生成本机节点的单机私钥和单机公钥;其中,所述多方节点各自的单机公钥为第二阿贝尔群中的元素。
S420、根据所有节点的单机公钥生成公共公钥。
S430、根据每个节点的单机公钥相对于公共公钥的关系,生成门限公钥。
S440、根据每个节点各自的编号j、所述门限公钥PD、本机节点i的偏离值Ki和单机私钥Xi,为每个节点各自生成一个签名碎片Bji,其中,j=1, 2,…,M。
其中,每个节点各自的编号用于区分为不同节点产生的签名碎片。本机节点i,根据的每个节点各自的编号j、本机节点i的偏离值Ki和单机私钥 Xi,为每个节点各自生成一个签名碎片Bji,其中,j=1,2,…,M。
示例性的,当i=1时,M=3时,本机节点1,需要根据多方节点中每个节点各自的编号j门限公钥PD本机节点1的偏离值值K1和单机私钥X1,为每个节点生成一个签名碎片,生成的签名碎片分别为B11、B21和B31。当i=2时,M=3时,本机节点2,为每个节点生成一个签名碎片,生成的签名碎片分别为B12、B22和B32。相应的,当i=3时,M=3时,本机节点2,为每个节点生成一个签名碎片,生成的签名碎片分别为B13、B23和B33。
在一个可选的实施例中,根据每个节点各自的编号j、所述门限公钥PD、本机节点i的偏离值Ki和单机私钥Xi,为每个节点各自生成一个签名碎片Bji包括:
根据每个节点各自的编号j、所述门限公钥PD、本机节点i的偏离值Ki和单机私钥Xi,采用如下公式为每个节点各自生成一个签名碎片Bji:
Bji=Ki*Xi+Hash(PD||j),j=1,2,...,M
其中,Hash()为哈希函数,||代表字符串拼接,*表示乘法。
具体的,将偏离值Ki和单机私钥Xi的乘积与门限公钥PD和节点各自的编号j拼接结果的哈希值相叠加以确定本机节点为每个节点各自生成一个签名碎片Bji。
具体的,可以通过调用函数确定本机节点为每个节点各自生成的签名碎片Bji。具体的,调用func(xcc*XchainCryptoClient)GetBlsM(k,x,index *big.Int,publicKey*bls_dkg.BlsPublicKey)(*bls_dkg.BlsM,error){return bls_dkg.GetM(k,x,index,publicKey)}其中,k是指偏离值Ki,x为单机私钥Xi,index*big.Int表示节点各自的编号j,publicKey *bls_dkg.BlsPublicKey为门限公钥PD。
S450、将生成的签名碎片Bji传输给对应节点编号j的节点,并接收其他节点各自生成并传输的签名碎片Bij。
根据各个节点的节点编号j,将本机节点生成的签名碎片Bji传输给对应的节点,继续以上例进行说明,将编号为1的本机节点生成的签名碎片 B21和B31分别传输给节点编号为2和3的节点,碎片B11由节点1本机保存;同理,将将编号为2的本机节点生成的签名碎片B12和B32分别传输给节点编号为1和3的节点,签名碎片B22由节点2本机保存。将编号为3的本机节点生成的签名碎片B13和B23分别传输给节点编号为1、2的节点,B33由节点3本机保存。这样一来,每个多方节点均收到其他多方节点发送的签名碎片,编号为1的节点接收到3个碎片分别为B11、B12和B13。
S460、根据本机生成和其他节点传输的M个签名碎片,进行累加以获得本机节点的身份公钥PE。
将本机生成的和其他节点传输的签名碎片,累加得到本机节点的身份公钥PE。继续以前例进行说明,当i为1时,本机节点1的身份公钥为本机生成的签名碎片B11与其他节点传输的签名碎片B12和B13的累加值。多方节点中的每个节点均可以获得属于本机的身份公钥PE。
本申请实施例的技术方案,通过多方节点中每个节点根据各自的编号、门限公钥、本机节点的偏离值和单机私钥,为每个节点各自生成一个签名碎片。各节点再根据本机生成和其他节点传输的签名碎片,进行累加以获得本机节点的身份公钥。多方节点中每个节点均参与到身份公钥的生成过程。保证各个参与方之间进行协作来完成身份公钥的计算,提高了密钥生成过程的安全性。
图5是根据本申请实施例提供的一种基于密钥的门限签名方法的流程示意图。本实施例可适用于对本申请任一实施例所述密钥生成方法所生成密钥进行门限签名的情况,其中,密钥包括单机私钥、单机公钥、公共公钥、门限公钥和身份公钥,执行本申请实施例提供的基于密钥的门限签名方法,可以提高门限签名的安全性。本实施例公开的基于密钥的门限签名方法可以由基于门限签名装置来执行,该装置可以由软件和/或硬件的方式实现,配置于电子设备中。参见图5,本实施例提供的基于密钥的门限签名方法包括:
S510、采用门限公钥、以及本机节点的身份公钥和单机私钥,对待签名数据进行签名,以产生单机签名值;所述单机签名值为第一阿贝尔群的第一元素。
其中,单机私钥是多方节点中每个节点本机保存的,并不对外宣示。各个多方节点所持有的门限公钥是一致的,本机节点的身份公钥是根据本机生成的签名碎片和其他节点传输给本机的签名碎片生成的,本机节点采用门限公钥、以及本机节点的身份公钥和单机私钥,对待签名数据进行签名,表示本机节点已确认该待签名数据的内容,并对此负责。在一个可行实施例中,可选的,所述待签名数据为基于区块链网络协议发起的事务请求。签名过程一般在某个节点向区块链发起事务请求,该事务请求需要门限签名时来执行。
在本机节点完成对签名数据的签名以后,生成的签名结果为单机签名值。单机签名值为第一阿贝尔群的第一元素,单机签名值满足阿贝尔群的群运算的交换律和结合律。
在一个可选的实施例中,所述待签名数据为区块链事务请求,所述多方节点中的至少一个节点为区块链节点。区块链节点作为多方节点,完成密钥生成、签名和验签的处理。
S520、根据各实际参与节点的单机签名值,生成总签名值。
值得注意的是,并非多方节点中的每个节点都参与某次签名,即会有节点不能或不愿意参与签名。其中,实际参与节点是指,多方节点中实际参与到某次签名的节点。实际签名的节点的数量小于等于多方节点的数量。与实际参与节点相对的是潜在参与节点,多方节点中的全部节点均为潜在参与节点,即多方节点中的全部节点均可能参与对待签名数据的签名。
根据门限N/M,当潜在参与节点的数量为M时,只有大于等于N个潜在参与节点作为实际参与节点,参与到签名的多方安全计算过程,使用椭圆曲线公钥的验证才能通过。
实际参与节点在对待签名数据进行签名以后,得到单机签名值。根据各实际参与节点的单机签名值生成总签名值。在对待签名数据进行签名的过程中使用了多方安全计算技术,各个实际参与节点之间进行协作来完成对待签名数据的签名。
S530、根据各实际参与节点的单机公钥,产生签名参数。
其中,签名参数与对待签名数据进行签名的公钥相关。
在一个可选的实施例中,根据各实际参与节点的单机公钥,产生签名参数包括:将所有实际参与节点的单机公钥Pi进行累加,以得到签名参数R。
可选的,各实际参与节点,将本机的单机公钥广播到区块链网络,各实际参与节点均将收到的其他节点广播的单机公钥和本机的单机公钥生成签名参数。或者,实际参与节点根据各实际参与节点的节点编号,将本机的单机公钥传输给其他的实际参与节点,由节点编号排在最后的一个实际参与节点将所有实际参与签名的节点的单机公钥进行累加,得到签名参数,再将得到的签名参数传输给其他节点。
优选的,由于在生成公共公钥的过程中,多方节点中每个节点均将本机节点的单机公钥Pi传输给多方节点中的其他节点,并接收其他节点传输的、各自生成并传输的单机公钥。也就是说,多方节点中的每个节点的单机公钥都是已知的,在确定了实际参与节点以后,可根据各实际参与节点的节点编号,计算得到签名参数,无需再次进行单机公钥的传输。
S540、将所述总签名值、签名参数和所有实际参与节点的节点编号,进行封装,以产生签名结果。
可选的,在将所有实际参与节点的节点编号进行封装时,将节点编号封装为编号数组I。将总签名值、签名参数和所有实际参与节点的节点编号,进行封装,得到的封装结果即为签名结果。
可选的,再得到待签名数据的签名结果以后,根据实际参与节点的节点编号,由最后一个实际参与节点将最终计算完成的签名结果附带在待签名数据上,并将其广播到区块链网络。其中,待签名数据可以为一次交易。
本申请实施例的技术方案,通过实际参与节点采用门限公钥、以及本机节点的身份公钥和单机私钥,对待签名数据进行签名,产生单机签名值,再根据各实际参与节点的单机签名值,生成总签名值,根据各实际参与节点的单机公钥,产生签名参数,将所述总签名值、签名参数和所有实际参与节点的节点编号,进行封装,产生签名结果。本申请实施例提供的去中心化的多方签名方法,通过多个多方节点相配合,最终得到一个签名结果,且签名交互次数少,计算量少。
图6是根据本申请实施例提供的另一种基于密钥的门限签名方法的流程示意图。本实施例是在上述实施例的基础上提出的一种可选方案。具体的是对采用门限公钥、以及本机节点的身份公钥和单机私钥,对待签名数据进行签名,以产生单机签名值的细化,参见图6,本实施例提供的基于密钥的门限签名方法包括:
S610、采用门限公钥PD和待签名数据L进行拼接,并乘以第一阿贝尔群的基点G,以得到第一阿贝尔群的第一元素。
将门限公钥PD和待签名数据L进行拼接,得到的拼接结果乘以第一阿贝尔群的基点G,根据阿贝尔群的群运算法则,拼接结果与基点G的乘积为第一阿贝尔群中的元素。为了便于区分阿贝尔群中的元素,称拼接结果与基点G的乘积为第一阿贝尔群中的第一元素。具体的,先将待签名数据 L和门限公钥PD分别转为字节数组,再将这2个字节数组进行拼接得到拼接结果,再对拼接结果进行哈希算法得到哈希值,再将哈希值转为大整数,将大整数乘以阿贝尔群1的基点G,即可得到阿贝尔群的第一元素,得到的阿贝尔群的第一元素是区别于基点的元素。
S620、采用本机节点的单机私钥Xi乘以所述第一元素,以得到第一阿贝尔群的第二元素。
由于第一元素为第一阿贝尔群中的元素,本机节点的单机私钥Xi与第一元素的乘积同样为第一阿贝尔群中的元素,将该乘积作为第一阿贝尔群中的第二元素。
S630、将所述第二元素加上本机节点的身份公钥PE,以得到本机节点的单机签名值Si;其中,所述单机签名值Si为第一阿贝尔群的第三元素。
可以知道的是,其他数据与阿贝尔群中的元素进行加法或者乘法运算时,得到的运算结果也为该阿贝尔群中的元素。由于,在本申请实施例中,身份公钥为第二阿贝尔群中的元素。
S640、根据各实际参与节点的单机签名值,生成总签名值。
在一个可选的实施例中,根据各实际参与节点的单机签名值,生成总签名值包括:根据各实际参与节点的单机签名值进行累加,以生成总签名值。
具体的,各个实际参与签名的节点,根据实际参与签名节点的节点编号,将各自的单机签名值单机签名值,传输给其他的实际参与签名,实际参与节点根据本机节点和其他实际参与节点传输的单机签名值进行累加,生成总签名值。
S650、根据各实际参与节点的单机公钥,产生签名参数。
S660、将所述总签名值、签名参数和所有实际参与节点的节点编号,进行封装,以产生签名结果。
本申请实施例的技术方案,向基于密钥的门限签名方法中引入阿贝尔群,利用阿贝尔群特性完成基于密钥的门限签名过程,减少了实际参与节点之间的交互过程,简化了基于密钥的门限签名流程。
图7是根据本申请实施例提供的另一种基于密钥的门限签名方法的流程示意图。本实施例是在上述实施例的基础上提出的一种可选方案。具体的是对根据各实际参与节点的单机签名值,生成总签名值的细化,参见图 7,本实施例提供的基于密钥的门限签名方法包括:
S710、采用门限公钥、以及本机节点的身份公钥和单机私钥,对待签名数据进行签名,以产生单机签名值;所述单机签名值为第一阿贝尔群的第一元素。
在执行完步骤S710以后,继续执行步骤S720或者S730。值得注意的是,步骤S720和S730并非顺序执行的关系。
S720、将本机节点的单机签名值按照设定顺序向其他实际参与节点传输,以供各所述实际参与节点顺序将单机签名值进行累加,并顺序传输,直至最后一个实际参与节点累加生成总签名值。
其中,设定顺序是由相关技术人员根据具体情况预先设定的。具体的,设定顺序可以根据实际参与节点的节点编号设定。
示例性的,按照实际参与节点的节点编号从小到大的顺序,将本机节点的单机签名值向其他实际参与节点传输,实际参与节点顺序将接收到的单机签名值与本机单机签名值进行累加,得到单机签名值的累加值,再将累加值顺序传出给下一个实际参与节点,直至最后一个实际参与节点累加生成总签名值。在执行完步骤S720以后,继续执行步骤S740。
S730、将本机节点的单机签名值向实际参与节点中的设定节点传输,以供所述设定节点根据所有实际参与节点的单机签名值累加生成所述总签名值。
具体的,本机节点将单机签名值向实际参与节点的设定节点传输。其中,设定节点可以是实际参与节点中的任一节点。设定节点的选取与各实际参与节点的节点编号没有必然联系,不受节点编号顺序影响。可选的,实际参与节点中的各个节点均将单机签名值传输给设定节点,由设定节点根据所有实际参与节点的单机签名值累加生成总签名值。
S740、根据各实际参与节点的单机公钥,产生签名参数。
S750、将所述总签名值、签名参数和所有实际参与节点的节点编号,进行封装,以产生签名结果。
本申请实施例的技术方案,通过实际参与节点将本机节点的单机签名值向其他实际参与节点传输,再将各实际参与节点的单机签名值进行累加,生成总签名值。再根据各实际参与节点的单机公钥,产生签名参数,将所述总签名值、签名参数和所有实际参与节点的节点编号,进行封装,产生签名结果。在本申请实施例中实际参与节点相配合,最终得到签名结果,这样做可以隐藏实际签名参与节点的信息,这样得到的签名的安全性更高,不易被篡改。根据获取到的单机公钥生成签名参数,而后再将总签名值、签名参数和所有实际参与节点的节点编号,进行封装,产生签名结果。实现了分布式的签名参数生成,不必依赖于中心节点生成,从而提高了签名的安全度。
图8是根据本申请实施例提供的一种基于密钥的门限签名验签方法的流程示意图。本实施例可适用于对本申请任一实施例所述密钥生成方法所生成的密钥进行门限签名验签的情况,从而提高门限签名验签的安全性。本实施例公开的基于密钥的门限签名验签方法可以由基于密钥的门限签名验签装置来执行,该装置可以由软件和/或硬件的方式实现,配置于电子设备中。参见图8,本实施例提供的基于密钥的门限签名验签方法包括:
S810、获取待签名数据作为验签数据,并根据所述签名结果确定的实际参与节点来获取所述实际参与节点的单机公钥和门限公钥。
其中,验签数据可以为基于区块链网络协议发起的事务请求,或者也可以为其他采用门限签名的数据。签名结果即为实际参与节点根据将所述总签名值、签名参数和所有实际参与节点的节点编号,采用本申请任一实施例所述的基于密钥的门限签名方法进行签名,得到的签名结果。
其中,节点编号为节点的标识信息。签名结果是根据所有实际参与节点的节点编号生成的,因此签名结果中包括全部实际参与节点的身份信息。由于,多方节点包括全部的实际参与节点,而多方节点的门限公钥和每个多方节点的单机公钥是向外宣示的,区块链上的全部节点均可获得。根据签名结果可以确定的实际参与节点,进而可以获取所述实际参与节点的单机公钥和门限公钥。
S820、采用双线性映射函数,基于所述门限公钥、所述实际参与节点的单机公钥、第二阿贝尔群的基点以及待签名数据,对所述签名结果中的总签名值和签名参数进行签名验证。
其中,双线性映射函数是由两个向量空间上的元素,生成第三个向量空间上一个元素的函数,并且该函数对每个参数都是线性的。本申请实施例中涉及的三个阿贝尔群均满足双线性映射的数学特性。
由于,门限公钥为第二阿贝尔群中的元素,签名结果为第一阿贝尔群的元素,具体的,可以利用双线性映射函数的性质和各项参数所属的阿贝尔群对待签名数据的签名结果进行验签。
在一个可选的实施例中,采用双线性映射函数,基于所述门限公钥、所述实际参与节点的单机公钥、第二阿贝尔群的基点以及待签名数据,对所述签名结果中的总签名值和签名参数进行签名验证包括:
验证如下公式是否成立:
其中,e()为双线性映射函数,且满足e(a,b)=c的函数关系,a、b、c 分别是第二阿贝尔群、第一阿贝尔群和第三阿贝尔群的元素;N为实际参与节点编号的集合;L为待签名数据;hash1()为用于将待哈希内容转换为第一阿贝尔群中元素的哈希函数;G2为第二阿贝尔群的基点。具体的, hash1()为
其中,所述hash1()用于将待哈希内容进行哈希运算,并乘以第一阿贝尔群的基点,以获取所述阿贝尔群中的元素。其中,n表示节点的节点编号。
其中,e(R,hash1(PD||L),表示将门限公钥PD与待签名数据L进行拼接,得到拼接结果,再利用hash1()将该拼接结果转换为第一阿贝尔群中元素,将该元素作为双线性映射函数的输入参数之一,将签名参数R作为双线性映射函数的另一参数。双线性函数e(R,hash1(PD||L)根据输入参数R和hash1(PD||L)进行计算。
表示将门限公钥PD作为双线性映射函数的参数之一,将门限公钥PD与实际参与签名节点的节点编号进行拼接,得到拼接结果,并利用hash1()将该拼接结果转换为第一阿贝尔群中元素,对全部的实际参与节点进行以上操作,并将得到的第一阿贝尔群中的元素进行叠加,得到叠加结果,将叠加结果作为函数的另一个输入参数。根据输入参数PD和进行计算。值得注意的是,公式表示的全部实际参与节点的累加。示例性的,在潜在参与节点的数量为3个,节点编号分别为1、2和3,其中节点编号为2的节点不参与门限签名过程,则实际参与节点为节点编号为1和3的节点。则此时N即为{1,3},相应的,公式展开式为:
其中,签名参数R是将所有实际参与节点的单机公钥Pi进行累加得到的,其中单机公钥Pi为第二阿贝尔群中的元素,因此签名参数同样为第二阿贝尔群中的元素。hash1(PD||L)为第一阿贝尔群中元素。门限公钥PD为第二阿贝尔群中元素,hash1(PD||n)为第一阿贝尔群中元素,则 hash1(PD||n)的累加值同样为第一阿贝尔群中元素。e(R,hash1(PD||L)和的形式与e(a,b)=c的形式一致,输入参数均是一个属于第二阿贝尔群,另一个属于第一阿贝尔群。因此,e(R,hash1(PD||L)和均属于第三阿贝尔群。 e(G2,S)为第三阿贝尔群中元素。
本申请实施例中对签名结果进行签名验证,同样适用于区块链网络的出块节点对门限签名的正确性进行核实的情况,如果正确,则说明交易有效,允许上链,反之则拒绝。
本申请实施例的技术方案,通过获取待签名数据作为验签数据,并根据所述签名结果确定的实际参与节点来获取所述实际参与节点的单机公钥和门限公钥,采用双线性映射函数,基于所述门限公钥、所述实际参与节点的单机公钥、第二阿贝尔群的基点以及待签名数据,对所述签名结果中的总签名值和签名参数进行签名验证。本申请实施例提供的基于密钥的门限签名验签方法与本申请实施例提供的基于密钥的门限签名方法相配合,有效地保证了区块链的事务数据验证过程的安全性及可信性,此外本申请实施例利用阿贝尔群的双线性映射性质完成了对基于密钥的门限签名的验签,减少了密钥生成过程中,多方节点之间的交互过程,简化了密钥生成流程。
图9是根据本申请实施例提供的一种密钥生成装置的结构示意图。参见图9,本申请实施例公开了一种密钥生成装置900,配置于多方节点中的任一节点中。该装置900可以包括:单机私钥和公钥生成模块910、公共公钥生成模块920、门限公钥生成模块930和身份公钥生成模块940。
单机私钥和公钥生成模块910,用于生成本机节点的单机私钥和单机公钥;其中,所述多方节点各自的单机公钥为第二阿贝尔群中的元素;
公共公钥生成模块920,用于根据所有节点的单机公钥生成公共公钥;
门限公钥生成模块930,用于根据每个节点的单机公钥相对于公共公钥的关系,生成门限公钥;
身份公钥生成模块940,用于根据每个节点采用各自的单机私钥对所述门限公钥进行签名的签名碎片,分别生成每个节点的身份公钥。
本申请实施例的技术方案通过多方节点中的任一节点生成本机节点的单机私钥和单机公钥。整个密钥的生成过程不必依赖于中心节点,各个节点的单机私钥均不会被一个节点获知,进而提高了密钥生成的安全性和隐私性。另外,在本申请实施例中公共公钥、门限公钥和身份公钥,为第二阿贝尔群中的元素;签名结果为第一阿贝尔群的元素,本申请实施例通过在密钥生成的过程中引入阿贝尔群,利用了阿贝尔群的群运算满足交换律和结合律的特性,减少了密钥生成过程中,多方节点之间的交互过程,提高了密钥生成效率。
可选的,公共公钥生成模块920,具体用于,将所有节点的单机公钥Pi按照如下公式进行累加,以生成所述公共公钥PC:PC=sum(Pi)=P1+P2+ ......+PM;
其中,M为多方节点的节点数量。
可选的,所述装置还包括:单机公钥传输模块,用于在将所有节点的单机公钥进行累加,以生成所述公共公钥之前,将所述本机节点的单机公钥Pi传输给所述多方节点中的其他节点,并接收其他节点传输的、各自生成并传输的单机公钥Pj;其中,i,j∈[1,M],M为多方节点的节点数量。
可选的,门限公钥生成模块930,包括:偏离值计算子模块,用于根据本机节点的单机公钥Pi和所述公共公钥PC,计算本机节点的单机公钥Pi相对于所述公共公钥PC的偏离值Ki;偏离公钥计算子模块,用于根据每个节点的偏离值Ki和单机公钥Pi,计算确定每个节点的偏离公钥PKi;门限公钥确定子模块,用于将每个节点的偏离公钥PKi进行累加,以计算确定门限公钥PD。
可选的,偏离值计算子模块,具体用于:根据本机节点的单机公钥Pi和所述公共公钥PC,采用如下公式计算所述偏离值Ki:
Ki=hash(hash(Pi)+hash(PC))
或
Ki=hash(Pi+PC)
其中,hash()为哈希函数。
可选的,所述装置,还包括:其他节点的偏离值和偏离公钥处理模块,用于在根据每个节点的偏离值Ki和单机公钥Pi,计算确定每个节点的偏离公钥PKi之前,根据接收到的其他节点的单机公钥,计算其他节点的偏离值和偏离公钥;或接收其他节点各自计算并传输的偏离公钥。
可选的,身份公钥生成模块940,包括:签名碎片生成子模块,用于根据每个节点各自的编号j、所述门限公钥PD、本机节点i的偏离值Ki和单机私钥Xi,为每个节点各自生成一个签名碎片Bji,其中,j=1,2,…,M;
签名碎片处理子模块,用于将生成的签名碎片Bji传输给对应节点编号 j的节点,并接收其他节点各自生成并传输的签名碎片Bij;身份公钥确定子模块,用于根据本机生成和其他节点传输的M个签名碎片,进行累加以获得本机节点的身份公钥PE。
可选的,签名碎片生成子模块,具体用于:根据每个节点各自的编号 j、所述门限公钥PD、本机节点i的偏离值Ki和单机私钥Xi,采用如下公式为每个节点各自生成一个签名碎片Bji:
Bji=Ki*Xi+Hash(PD||j),j=1,2,...,M
其中,Hash()为哈希函数,||代表字符串拼接。
本申请实施例所提供的密钥生成装置可执行本申请任意实施例所提供的密钥生成方法,具备执行密钥生成方法相应的功能模块和有益效果。
图10是根据本申请实施例的提供的一种基于密钥的门限签名装置的示意图;参见图10,本申请实施例公开了一种基于密钥的门限签名装置1000,阿贝尔群的第二元素确定子模块,所述密钥包括单机私钥、单机公钥、公共公钥、门限公钥和身份公钥,所述密钥为本申请任意实施例所提供的密钥生成装置所生成的,该装置1000可以包括:单机签名值生成模块1010、总签名值生成模块1020、签名参数生成模块1030和签名结果生成模块1040。
单机签名值生成模块1010,用于采用门限公钥、以及本机节点的身份公钥和单机私钥,对待签名数据进行签名,以产生单机签名值;所述单机签名值为第一阿贝尔群的第一元素;
总签名值生成模块1020,用于根据各实际参与节点的单机签名值,生成总签名值;
签名参数生成模块1030,用于根据各实际参与节点的单机公钥,产生签名参数;
签名结果生成模块1040,用于将所述总签名值、签名参数和所有实际参与节点的节点编号,进行封装,以产生签名结果。
本申请实施例的技术方案,通过实际参与节点采用门限公钥、以及本机节点的身份公钥和单机私钥,对待签名数据进行签名,产生单机签名值,再根据各实际参与节点的单机签名值,生成总签名值,根据各实际参与节点的单机公钥,产生签名参数,将所述总签名值、签名参数和所有实际参与节点的节点编号,进行封装,产生签名结果。本申请实施例提供的去中心化的多方签名方法,通过多个多方节点相配合,最终得到一个签名结果,这样做可以隐藏实际签名参与节点的信息,这样得到的签名的安全性更高,不易被篡改。
可选的,单机签名值生成模块1010,包括:第一阿贝尔群的第一元素确定子模块,用于采用门限公钥PD和待签名数据L进行拼接,并乘以第一阿贝尔群的基点G,以得到第一阿贝尔群的第一元素;第一阿贝尔群的第二元素确定子模块,用于采用本机节点的单机私钥Xi乘以所述第一元素,以得到第一阿贝尔群的第二元素;本机节点单机签名值确定子模块,用于将所述第二元素加上本机节点的身份公钥PE,以得到本机节点的单机签名值Si;其中,所述单机签名值Si为第一阿贝尔群的第三元素。
可选的,总签名值生成模块1020具体用于,根据各实际参与节点的单机签名值进行累加,以生成总签名值。
可选的,总签名值生成模块1020,包括:单机签名值传输子模块用于,将本机节点的单机签名值按照设定顺序向其他实际参与节点传输,以供各所述实际参与节点顺序将单机签名值进行累加,并顺序传输,直至最后一个实际参与节点累加生成总签名值;或,将本机节点的单机签名值向实际参与节点中的设定节点传输,以供所述设定节点根据所有实际参与节点的单机签名值累加生成所述总签名值。
可选的,签名参数生成模块1030,具体用于将所有实际参与节点的单机公钥Pi进行累加,以得到签名参数R。
可选的,所述待签名数据为区块链事务请求,所述多方节点中的至少一个节点为区块链节点。
本申请实施例所提供的基于密钥的门限签名装置可执行本申请任意实施例所提供的基于密钥的门限签名方法,具备执行基于密钥的门限签名方法相应的功能模块和有益效果。
图11是根据本申请实施例提供的一种基于密钥的门限签名验签装置的示意图。参见图11,本申请实施例公开了一种基于密钥的门限签名验签装置1100,阿贝尔群的第二元素确定子模块,所述密钥包括单机私钥、单机公钥、公共公钥、门限公钥和身份公钥,所述密钥为本申请任意实施例所提供的密钥生成方法所生成的,所述签名结果为本申请任意实施例所提供的基于密钥的门限签名方法所生成的,所述验签装置包括:数据获取模块1110和签名验证模块1120。
数据获取模块1110,用于获取待签名数据作为验签数据,并根据所述签名结果确定的实际参与节点来获取所述实际参与节点的单机公钥和门限公钥;
签名验证模块1120,用于采用双线性映射函数,基于所述门限公钥、所述实际参与节点的单机公钥、第二阿贝尔群的基点以及待签名数据,对所述签名结果中的总签名值和签名参数进行签名验证。
本申请实施例的技术方案,通过获取待签名数据作为验签数据,并根据所述签名结果确定的实际参与节点来获取所述实际参与节点的单机公钥和门限公钥,采用双线性映射函数,基于所述门限公钥、所述实际参与节点的单机公钥、第二阿贝尔群的基点以及待签名数据,对所述签名结果中的总签名值和签名参数进行签名验证。本申请实施例提供的基于密钥的门限签名验签方法与本申请实施例提供的基于密钥的门限签名方法相配合,有效地保证了区块链的事务数据验证过程的安全性及可信性,此外本申请实施例利用阿贝尔群的双线性映射性质完成了对基于密钥的门限签名的验签,减少了密钥生成过程中,多方节点之间的交互过程,简化了密钥生成流程。
可选的,签名验证模块1120具体用于:验证如下公式是否成立:
其中,e()为双线性映射函数,且满足e(a,b)=c的函数关系,a、b、c 分别是第二阿贝尔群、第一阿贝尔群和第三阿贝尔群的元素;N为实际参与节点编号的集合;L为待签名数据;hash1()为用于将待哈希内容转换为第一阿贝尔群中元素的哈希函数;G2为第二阿贝尔群的基点。
其中,所述Hash()用于将待哈希内容进行哈希运算,并乘以阿贝尔群基点,以获取所述阿贝尔群中的元素。
本申请实施例所提供的基于密钥的门限签名验签装置可执行本申请任意实施例所提供的基于密钥的门限签名验签方法,具备执行基于密钥的门限签名验签方法相应的功能模块和有益效果。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图12示出了可以用来实施本公开的实施例的示例电子设备1200的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图12所示,设备1200包括计算单元1201,其可以根据存储在只读存储器(ROM)1202中的计算机程序或者从存储单元1208加载到随机访问存储器(RAM)1203中的计算机程序,来执行各种适当的动作和处理。在RAM 1203中,还可存储设备1200操作所需的各种程序和数据。计算单元1201、ROM 1202以及RAM 1203通过总线1204彼此相连。输入/输出(I/O)接口1205也连接至总线1204。
设备1200中的多个部件连接至I/O接口1205,包括:输入单元1206,例如键盘、鼠标等;输出单元1207,例如各种类型的显示器、扬声器等;存储单元1208,例如磁盘、光盘等;以及通信单元1209,例如网卡、调制解调器、无线通信收发机等。通信单元1209允许设备1200通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元1201可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1201的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元1201执行上文所描述的各个方法和处理,例如密钥生成方法、基于密钥的门限签名方法或者基于密钥的门限签名验签方法。例如,在一些实施例中,密钥生成方法、基于密钥的门限签名方法或者基于密钥的门限签名验签方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1208。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1202和/或通信单元 1209而被载入和/或安装到设备1200上。当计算机程序加载到RAM 1203 并由计算单元1201执行时,可以执行上文描述的密钥生成方法、基于密钥的门限签名方法或者基于密钥的门限签名验签方法的一个或多个步骤。备选地,在其他实施例中,计算单元1201可以通过其他任何适当的方式 (例如,借助于固件)而被配置为执行密钥生成方法、基于密钥的门限签名方法或者基于密钥的门限签名验签方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/ 或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入) 来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (34)
1.一种密钥生成方法,由多方节点中的任一节点执行,所述方法包括:
生成本机节点的单机私钥和单机公钥;其中,所述多方节点各自的单机公钥为第二阿贝尔群中的元素;
根据所有节点的单机公钥生成公共公钥;其中,所述公共公钥综合所述多方节点中所有节点的单机公钥得到;
根据每个节点的单机公钥相对于公共公钥的关系,生成门限公钥;其中,所述门限公钥根据每个节点的单机公钥相对于公共公钥的差异得到;
根据每个节点采用各自的单机私钥对所述门限公钥进行签名的签名碎片,分别生成每个节点的身份公钥;其中,所述签名碎片包括参与签名节点的身份信息;
其中,所述单机私钥、所述门限公钥和所述身份公钥用于对待签名数据进行签名以产生签名结果;所述门限公钥用于对所述签名结果进行签名验证;所述公共公钥、所述门限公钥和所述身份公钥为第二阿贝尔群中的元素。
2.根据权利要求1所述的方法,其中,根据所有节点的单机公钥生成公共公钥包括:将所有节点的单机公钥Pi按照如下公式进行累加,以生成所述公共公钥PC:PC=sum(Pi)=P1+P2+……+PM;其中,M为多方节点的节点数量。
3.根据权利要求2所述的方法,其中,将所有节点的单机公钥进行累加,以生成所述公共公钥之前,还包括:
将所述本机节点的单机公钥Pi传输给所述多方节点中的其他节点,并接收其他节点传输的、各自生成并传输的单机公钥Pj;其中,i,j∈[1,M],M为多方节点的节点数量。
4.根据权利要求1所述的方法,其中,根据每个节点的单机公钥相对于公共公钥的关系,生成门限公钥包括:
根据本机节点的单机公钥Pi和所述公共公钥PC,计算本机节点的单机公钥Pi相对于所述公共公钥PC的偏离值Ki;
根据每个节点的偏离值Ki和单机公钥Pi,计算确定每个节点的偏离公钥PKi;
将每个节点的偏离公钥PKi进行累加,以计算确定门限公钥PD。
5.根据权利要求4所述的方法,其中,根据本机节点的单机公钥Pi和所述公共公钥PC,计算本机节点的单机公钥Pi相对于所述公共公钥PC的偏离值Ki包括:
根据本机节点的单机公钥Pi和所述公共公钥PC,采用如下公式计算所述偏离值Ki:
Ki=hash(hash(Pi)+hash(PC))
或
Ki=hash(Pi+PC)
其中,hash()为哈希函数。
6.根据权利要求4所述的方法,其中,根据每个节点的偏离值Ki和单机公钥Pi,计算确定每个节点的偏离公钥PKi之前,还包括:
根据接收到的其他节点的单机公钥,计算其他节点的偏离值和偏离公钥;或
接收其他节点各自计算并传输的偏离公钥。
7.根据权利要求1所述的方法,其中,根据每个节点采用各自的单机私钥对所述门限公钥进行签名的签名碎片,分别生成每个节点的身份公钥包括:
根据每个节点各自的编号j、所述门限公钥PD、本机节点i的偏离值Ki和单机私钥Xi,为每个节点各自生成一个签名碎片Bji,其中,j=1,2,…,M;
将生成的签名碎片Bji传输给对应节点编号j的节点,并接收其他节点各自生成并传输的签名碎片Bij;
根据本机生成和其他节点传输的M个签名碎片,进行累加以获得本机节点的身份公钥PE。
8.根据权利要求7所述的方法,其中,根据每个节点各自的编号j、所述门限公钥PD、本机节点i的偏离值Ki和单机私钥Xi,为每个节点各自生成一个签名碎片Bji包括:
根据每个节点各自的编号j、所述门限公钥PD、本机节点i的偏离值Ki和单机私钥Xi,采用如下公式为每个节点各自生成一个签名碎片Bji:
Bji=Ki*Xi+Hash(PD||j),j=1,2,...,M
其中,Hash()为哈希函数,||代表字符串拼接。
9.一种基于密钥的门限签名方法,由多方节点中的任一节点执行,所述密钥包括单机私钥、单机公钥、公共公钥、门限公钥和身份公钥,所述密钥为权利要求1-8任一所述密钥生成方法所生成的,所述方法包括:
采用门限公钥、以及本机节点的身份公钥和单机私钥,对待签名数据进行签名,以产生单机签名值;所述单机签名值为第一阿贝尔群的第一元素;
根据各实际参与节点的单机签名值,生成总签名值;
根据各实际参与节点的单机公钥,产生签名参数;
将所述总签名值、签名参数和所有实际参与节点的节点编号,进行封装,以产生签名结果。
10.根据权利要求9所述的方法,其中,采用门限公钥、以及本机节点的身份公钥和单机私钥,对待签名数据进行签名,以产生单机签名值包括:
采用门限公钥PD和待签名数据L进行拼接,并乘以第一阿贝尔群的基点G,以得到第一阿贝尔群的第一元素;
采用本机节点的单机私钥Xi乘以所述第一元素,以得到第一阿贝尔群的第二元素;
将所述第二元素加上本机节点的身份公钥PE,以得到本机节点的单机签名值Si;其中,所述单机签名值Si为第一阿贝尔群的第三元素。
11.根据权利要求9所述的方法,其中,根据各实际参与节点的单机签名值,生成总签名值包括:
根据各实际参与节点的单机签名值进行累加,以生成总签名值。
12.根据权利要求9所述的方法,其中,根据各实际参与节点的单机签名值,生成总签名值包括:
将本机节点的单机签名值按照设定顺序向其他实际参与节点传输,以供各所述实际参与节点顺序将单机签名值进行累加,并顺序传输,直至最后一个实际参与节点累加生成总签名值;或
将本机节点的单机签名值向实际参与节点中的设定节点传输,以供所述设定节点根据所有实际参与节点的单机签名值累加生成所述总签名值。
13.根据权利要求9-12任一所述的方法,其中,根据各实际参与节点的单机公钥,产生签名参数包括:
将所有实际参与节点的单机公钥Pi进行累加,以得到签名参数R。
14.根据权利要求9所述的方法,其中,所述待签名数据为区块链事务请求,所述多方节点中的至少一个节点为区块链节点。
15.一种基于密钥的门限签名验签方法,由多方节点中的任一节点执行,所述密钥包括单机私钥、单机公钥、公共公钥、门限公钥和身份公钥,所述密钥为权利要求1-8任一所述密钥生成方法所生成的,所述签名结果为权利要求9-14任一所述的基于密钥的门限签名方法所生成的,所述验签方法包括:
获取待签名数据作为验签数据,并根据所述签名结果确定的实际参与节点来获取所述实际参与节点的单机公钥和门限公钥;
采用双线性映射函数,基于所述门限公钥、所述实际参与节点的单机公钥、第二阿贝尔群的基点以及待签名数据,对所述签名结果中的总签名值和签名参数进行签名验证。
17.一种密钥生成装置,配置于多方节点中的任一节点,所述装置包括:
单机私钥和公钥生成模块,用于生成本机节点的单机私钥和单机公钥;其中,所述多方节点各自的单机公钥为第二阿贝尔群中的元素;
公共公钥生成模块,用于根据所有节点的单机公钥生成公共公钥;其中,所述公共公钥综合所述多方节点中所有节点的单机公钥得到;
门限公钥生成模块,用于根据每个节点的单机公钥相对于公共公钥的关系,生成门限公钥;其中,所述门限公钥根据每个节点的单机公钥相对于公共公钥的差异得到;
身份公钥生成模块,用于根据每个节点采用各自的单机私钥对所述门限公钥进行签名的签名碎片,分别生成每个节点的身份公钥;其中,所述签名碎片包括参与签名节点的身份信息;
其中,所述单机私钥、所述门限公钥和所述身份公钥用于对待签名数据进行签名以产生签名结果;所述门限公钥用于对所述签名结果进行签名验证;所述公共公钥、所述门限公钥和所述身份公钥为第二阿贝尔群中的元素。
18.根据权利要求17所述的装置,其中,公共公钥生成模块,具体用于,将所有节点的单机公钥Pi按照如下公式进行累加,以生成所述公共公钥PC:
PC=sum(Pi)=P1+P2+……+PM;
其中,M为多方节点的节点数量。
19.根据权利要求18所述的装置,其中,所述装置还包括:
单机公钥传输模块,用于在将所有节点的单机公钥进行累加,以生成所述公共公钥之前,将所述本机节点的单机公钥Pi传输给所述多方节点中的其他节点,并接收其他节点传输的、各自生成并传输的单机公钥Pj;其中,i,j∈[1,M],M为多方节点的节点数量。
20.根据权利要求17所述的装置,其中,门限公钥生成模块,包括:
偏离值计算子模块,用于根据本机节点的单机公钥Pi和所述公共公钥PC,计算本机节点的单机公钥Pi相对于所述公共公钥PC的偏离值Ki;
偏离公钥计算子模块,用于根据每个节点的偏离值Ki和单机公钥Pi,计算确定每个节点的偏离公钥PKi;
门限公钥确定子模块,用于将每个节点的偏离公钥PKi进行累加,以计算确定门限公钥PD。
21.根据权利要求20所述的装置,其中,偏离值计算子模块,具体用于:
根据本机节点的单机公钥Pi和所述公共公钥PC,采用如下公式计算所述偏离值Ki:
Ki=hash(hash(Pi)+hash(PC))
或
Ki=hash(Pi+PC)
其中,hash()为哈希函数。
22.根据权利要求20所述的装置,其中,所述装置,还包括:
其他节点的偏离值和偏离公钥处理模块,用于在根据每个节点的偏离值Ki和单机公钥Pi,计算确定每个节点的偏离公钥PKi之前,根据接收到的其他节点的单机公钥,计算其他节点的偏离值和偏离公钥;或
接收其他节点各自计算并传输的偏离公钥。
23.根据权利要求17所述的装置,其中,身份公钥生成模块,包括:
签名碎片生成子模块,用于根据每个节点各自的编号j、所述门限公钥PD、本机节点i的偏离值Ki和单机私钥Xi,为每个节点各自生成一个签名碎片Bji,其中,j=1,2,…,M;
签名碎片处理子模块,用于将生成的签名碎片Bji传输给对应节点编号j的节点,并接收其他节点各自生成并传输的签名碎片Bij;
身份公钥确定子模块,用于根据本机生成和其他节点传输的M个签名碎片,进行累加以获得本机节点的身份公钥PE。
24.根据权利要求23所述的装置,其中,签名碎片生成子模块,具体用于:
根据每个节点各自的编号j、所述门限公钥PD、本机节点i的偏离值Ki和单机私钥Xi,采用如下公式为每个节点各自生成一个签名碎片Bji:
Bji=Ki*Xi+Hash(PD||j),j=1,2,...,M
其中,Hash()为哈希函数,||代表字符串拼接。
25.一种基于密钥的门限签名装置,配置于多方节点中的任一节点中,所述密钥包括单机私钥、单机公钥、公共公钥、门限公钥和身份公钥,所述密钥为权利要求1-8任一所述密钥生成方法所生成的,所述装置包括:
单机签名值生成模块,用于采用门限公钥、以及本机节点的身份公钥和单机私钥,对待签名数据进行签名,以产生单机签名值;所述单机签名值为第一阿贝尔群的第一元素;
总签名值生成模块,用于根据各实际参与节点的单机签名值,生成总签名值;
签名参数生成模块,用于根据各实际参与节点的单机公钥,产生签名参数;
签名结果生成模块,用于将所述总签名值、签名参数和所有实际参与节点的节点编号,进行封装,以产生签名结果。
26.根据权利要求25所述的装置,其中,单机签名值生成模块,包括:
第一阿贝尔群的第一元素确定子模块,用于采用门限公钥PD和待签名数据L进行拼接,并乘以第一阿贝尔群的基点G,以得到第一阿贝尔群的第一元素;
第一阿贝尔群的第二元素确定子模块,用于采用本机节点的单机私钥Xi乘以所述第一元素,以得到第一阿贝尔群的第二元素;
本机节点单机签名值确定子模块,用于将所述第二元素加上本机节点的身份公钥PE,以得到本机节点的单机签名值Si;其中,所述单机签名值Si为第一阿贝尔群的第三元素。
27.根据权利要求25所述的装置,其中,总签名值生成模块具体用于,根据各实际参与节点的单机签名值进行累加,以生成总签名值。
28.根据权利要求25所述的装置,其中,总签名值生成模块,包括:
单机签名值传输子模块,用于将本机节点的单机签名值按照设定顺序向其他实际参与节点传输,以供各所述实际参与节点顺序将单机签名值进行累加,并顺序传输,直至最后一个实际参与节点累加生成总签名值;或
将本机节点的单机签名值向实际参与节点中的设定节点传输,以供所述设定节点根据所有实际参与节点的单机签名值累加生成所述总签名值。
29.根据权利要求25-28任一所述的装置,其中,签名参数生成模块,具体用于将所有实际参与节点的单机公钥Pi进行累加,以得到签名参数R。
30.根据权利要求25所述的装置,其中,所述待签名数据为区块链事务请求,所述多方节点中的至少一个节点为区块链节点。
31.一种基于密钥的门限签名验签装置,配置于多方节点中的任一节点中,所述密钥包括单机私钥、单机公钥、公共公钥、门限公钥和身份公钥,所述密钥为权利要求1-8任一所述密钥生成方法所生成的,所述签名结果为权利要求9-14任一所述的基于密钥的门限签名方法所生成的,所述验签装置包括:
数据获取模块,用于获取待签名数据作为验签数据,并根据所述签名结果确定的实际参与节点来获取所述实际参与节点的单机公钥和门限公钥;
签名验证模块,用于采用双线性映射函数,基于所述门限公钥、所述实际参与节点的单机公钥、第二阿贝尔群的基点以及待签名数据,对所述签名结果中的总签名值和签名参数进行签名验证。
33.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-8中任一项所述的密钥生成方法,或执行权利要求9-14中任一项所述的基于密钥的门限签名方法,或执行权利要求15-16中任一项所述的基于密钥的门限签名验签方法。
34.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行权利要求1-8中任一项所述的密钥生成方法,或执行权利要求9-14中任一项所述的基于密钥的门限签名方法,或执行权利要求15-16中任一项所述的基于密钥的门限签名验签方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011594343.7A CN112751667B (zh) | 2020-12-29 | 2020-12-29 | 密钥生成方法、签名和验签方法、装置、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011594343.7A CN112751667B (zh) | 2020-12-29 | 2020-12-29 | 密钥生成方法、签名和验签方法、装置、设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112751667A CN112751667A (zh) | 2021-05-04 |
CN112751667B true CN112751667B (zh) | 2023-03-14 |
Family
ID=75646706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011594343.7A Active CN112751667B (zh) | 2020-12-29 | 2020-12-29 | 密钥生成方法、签名和验签方法、装置、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112751667B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116089991B (zh) * | 2023-04-13 | 2024-02-20 | 北京百度网讯科技有限公司 | 数据对齐方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019021105A1 (en) * | 2017-07-24 | 2019-01-31 | nChain Holdings Limited | METHODS AND SYSTEMS FOR ENCRYPTION EVENT ENCRYPTION IMPLEMENTED BY BLOCK CHAINS |
CN110971405A (zh) * | 2019-12-06 | 2020-04-07 | 支付宝(杭州)信息技术有限公司 | 多方协同的sm2签名、解密方法及其系统 |
CN111639361A (zh) * | 2020-05-15 | 2020-09-08 | 中国科学院信息工程研究所 | 一种区块链密钥管理方法、多人共同签名方法及电子装置 |
CN111819827A (zh) * | 2018-03-09 | 2020-10-23 | 区块链控股有限公司 | 用于控制区块链上的资源的访问和完整性的方法和系统 |
CN111934889A (zh) * | 2020-10-13 | 2020-11-13 | 百度在线网络技术(北京)有限公司 | 密钥生成方法、签名和验签方法、装置、设备和介质 |
-
2020
- 2020-12-29 CN CN202011594343.7A patent/CN112751667B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019021105A1 (en) * | 2017-07-24 | 2019-01-31 | nChain Holdings Limited | METHODS AND SYSTEMS FOR ENCRYPTION EVENT ENCRYPTION IMPLEMENTED BY BLOCK CHAINS |
CN111819827A (zh) * | 2018-03-09 | 2020-10-23 | 区块链控股有限公司 | 用于控制区块链上的资源的访问和完整性的方法和系统 |
CN110971405A (zh) * | 2019-12-06 | 2020-04-07 | 支付宝(杭州)信息技术有限公司 | 多方协同的sm2签名、解密方法及其系统 |
CN111639361A (zh) * | 2020-05-15 | 2020-09-08 | 中国科学院信息工程研究所 | 一种区块链密钥管理方法、多人共同签名方法及电子装置 |
CN111934889A (zh) * | 2020-10-13 | 2020-11-13 | 百度在线网络技术(北京)有限公司 | 密钥生成方法、签名和验签方法、装置、设备和介质 |
Non-Patent Citations (1)
Title |
---|
基于区块链的高效公平多方合同签署协议;高莹等;《密码学报》;20181015;第05卷(第05期);第556-565页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112751667A (zh) | 2021-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110825349B (zh) | 随机数生成方法、区块链节点、系统及介质 | |
CN111934889B (zh) | 密钥生成方法、签名和验签方法、装置、设备和介质 | |
CN108989047B (zh) | 一种基于sm2算法的通信双方协同签名方法与系统 | |
EP3725026B1 (en) | Computer-implemented systems and methods for performing computational tasks across a group operating in a trust-less or dealer-free manner | |
CN111200502B (zh) | 协同数字签名方法和装置 | |
US20130326602A1 (en) | Digital Signatures | |
AU2021204543B2 (en) | Digital signature method, signature information verification method, related apparatus and electronic device | |
CN113536379B (zh) | 一种隐私数据的查询方法、装置及电子设备 | |
CN111934890B (zh) | 密钥生成方法、签名和验签方法、装置、设备和介质 | |
CN112380495B (zh) | 安全多方乘法运算方法及系统 | |
CN110602114A (zh) | 基于区块链的身份验证方法及装置、存储介质、电子设备 | |
CN110084600A (zh) | 决议事务请求的处理、验证方法、装置、设备及介质 | |
CN112751667B (zh) | 密钥生成方法、签名和验签方法、装置、设备和介质 | |
CN112737777B (zh) | 基于密钥的门限签名和验签方法、装置、设备和介质 | |
CN111681141B (zh) | 文件认证方法、文件认证装置及终端设备 | |
CN102769530A (zh) | 一种计算高效的在线/离线数字签名方法 | |
CN112184245A (zh) | 一种跨区块链的交易身份确认方法及装置 | |
CN114389820B (zh) | 基于区块链的签名验证方法、装置、设备和存储介质 | |
CN114389821B (zh) | 基于区块链的签名监管方法、装置、设备和存储介质 | |
KR102070061B1 (ko) | 묶음 검증 방법 및 장치 | |
CN114389822A (zh) | 基于区块链的签名生成方法、装置、设备和存储介质 | |
CN112861189B (zh) | 签名的生成方法和验证方法、装置、设备和介质 | |
CN113806441B (zh) | 基于区块链的签名处理方法、装置、电子设备和存储介质 | |
CN109801066B (zh) | 远程存储服务的实现方法及装置 | |
CN117081744B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |