CN113556237B - 基于聚合多签的阈值签名方法、系统、装置及存储介质 - Google Patents
基于聚合多签的阈值签名方法、系统、装置及存储介质 Download PDFInfo
- Publication number
- CN113556237B CN113556237B CN202111102907.5A CN202111102907A CN113556237B CN 113556237 B CN113556237 B CN 113556237B CN 202111102907 A CN202111102907 A CN 202111102907A CN 113556237 B CN113556237 B CN 113556237B
- Authority
- CN
- China
- Prior art keywords
- signature
- public key
- aggregation
- nodes
- aggregated
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- 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/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Abstract
本发明公开了基于聚合多签的阈值签名方法、系统、装置及存储介质,方法包括以下步骤:基于区块链网络的n个签名节点选取m个签名节点,基于m个签名节点生成聚合公钥及聚合临时公钥,集合所有聚合公钥形成聚合公钥组合;基于聚合公钥组合创建默克尔树结构,获取默克尔根;通过n个签名节点生成第二聚合公钥,并结合默克尔根派生阈值签名地址;在阈值签名地址中生成交易事务,在m个签名节点对交易事务进行签名,聚合所有签名并结合聚合临时公钥生成聚合签名,基于聚合签名执行交易事务。通过该方法为阈值签名提供可验证的聚合多签,并通过MAST结构统一脚本编码保护隐私,并采用加密通信增加聚合签名过程的安全性,最终实现安全高效的阈值签名扩展。
Description
技术领域
本发明属于区块链及跨链技术领域,具体涉及一种基于聚合多签的阈值签名方法、系统、装置及存储介质。
背景技术
在区块链技术领域中,助记词则是推导出私钥的一种方式,为了保证资金的安全,助记词或私钥的保管就需要足够的谨慎,因此要进行备份,以防私钥丢失,但是即使备份也会增加被盗风险。
为了提高资产的安全性,目前通常有这两个方案:多签签名和密钥共享模式。
如果是大额的资产,通常会使用多签的方式来分担风险与责任,多签通常需要有多个私钥,只有当其中的几个私钥参与的签名,才可以动用资产,因此正确使用可以提高安全性,因为即使部分私钥被盗或丢失,资产依然是安全的。使用多签签名时,还应该避免私钥复用,私钥复用会增加私钥泄漏的风险。多签签名通常使用链上合约实现,因此存在这样的缺点:需要支付更高的交易费用以及多人异步签名导致的更长的交易确认时间。
而密钥共享模式则是通过将密钥分成多个部分并以冗余方式分开保管,发起交易则将一定数量的密钥重新组装为密钥进行签名,不仅解决了密钥被盗的风险,还解决了多签费用高的缺点,但是会存在若当密钥被重新组装时密钥容易被攻击者获取。
从20世纪80年代末和90年代,围绕门限密码问题出现了大量的研究,在最一般的形式中,这个问题考虑的是设置一个在n个参与者之间共享的私钥,其属性是t个参与者的任意子集都可以解密或签名,但小于t个参与者的任何集合都不能做任何事情。这是安全多方计算的一个特定示例,其中计算的功能是解密或签名。
快速阈值加密协议存在于各种各样的问题,包括RSA签名和解密、ElGamal和ECIES加密、Schnorr签名、Cramer-Shoup等。尽管取得了上述成功,尽管DSA/ECDSA是一种广泛使用的标准,但DSA/ECDSA一直抵制为阈值签名构建有效协议的尝试。所以亟需一种技术手段找到更加完善的签名方法解决区块链网络交易中遇到的交易签名共识问题,使其更具安全性和去中心化。
发明内容
鉴于上述,本发明提供了一种基于聚合多签的阈值签名方法,利用聚合签名结合基于MAST结构的默克尔树形成全新的阈值签名。
一种基于聚合多签的阈值签名方法,MAST结构的默克尔树包括步骤如下:
基于区块链网络的n个签名节点选取m个签名节点,基于m个签名节点中每个签名节点生成随机私钥和临时公私钥对进而生成聚合公钥及聚合临时公钥,集合m个签名节点中所有聚合公钥形成聚合公钥组合;
基于所述聚合公钥组合创建默克尔树结构,获取默克尔根;
用这些可能的聚合公钥作为MAST结构的脚本分支进行哈希运算,也就是在该过程种,每个签名节点只需提供他们正在执行签名的脚本分支,以及将脚本分支连接到固定大小默克尔根的哈希值,以此构建默克尔树结构,这将赎回堆栈的大小从 O(n) 减少到 O(log n)(n 作为脚本分支的数量)。
通过区块链网络的n个签名节点生成第二随机私钥进而生成第二聚合公钥,通过第二聚合公钥和所述默克尔根派生阈值签名地址;
在所述阈值签名地址中生成交易事务,在m个签名节点中任一签名节点利用其随机私钥和临时私钥对交易事务进行签名;聚合所述签名并结合所述聚合临时公钥生成聚合签名,基于聚合签名执行交易事务。MAST结构的默克尔树在这里借鉴Musig数字签名算法来聚合公钥和签名的多签方案。允许多个节点使用各自的私钥创建一个组合公钥,这个聚合公钥与任何其他公钥都是大小一致且无法区分的,包括单个节点的公钥。它进一步描述了创建公钥的节点如何能够共同安全地创建与公钥对应的签名。像聚合公钥一样,这个签名也和其他的签名没有什么区别。与传统的基于脚本的 多签相比,聚合签名使用更少的块空间并且有更多的私有空间,但它也可能需要参与者之间更多的交互性。在区块链系统中,验证效率是最重要的因素,除非确实需要更多的安全性,否则没有必要向验证者提供签名者更多的细节。这样做有一个明显的好处就是能够提高隐私性,因为它能隐藏具体签名者的信息。
采用MuSig 签名方案的一个新变体。MuSig 允许多个签名者从他们各自的私钥中创建一个聚合公钥,然后共同为该公钥创建一个有效签名,通过这个方式创建的聚合公钥与其他公钥是无法区分的。最初的 MuSig 需要三轮签名,但是新的 聚合签名方案实现了一个简单的只需要两轮的签名协议,而且不需要零知识证明。它是一种简单且高度实用的两轮多重签名方案,通过增加多个临时公私钥对,加大节点参与签名的随机性和隐私性,具有优势: i) 在并发签名会话下是安全的,ii) 支持密钥聚合,iii) 输出普通签名,iv) 只需要两轮通信,v) 具有与普通 Schnorr 签名相似的签名者复杂性。
Merkelized Abstract Syntax Tree (MAST)是使用 Merkle 树来编码脚本中的分支。消费时,用户可能只提供他们正在执行的分支,以及将分支连接到固定大小默克尔根的哈希值。这将赎回堆栈的大小从 O(n) 减少到 O(log n)(n 作为分支的数量)。这实现了目前由于脚本大小和操作码限制而无法实现的复杂赎回条件,通过隐藏未执行的分支来提高隐私性,并允许以非常低的成本或无需额外成本包含非共识强制执行的数据。
在本发明中基于MAST结构构建Merkle 树实现了n/m的阈值签名。首先Merkle 分支让每个签名节点只记录显示其脚本的实际执行部分,无需记录所有节点的脚本路径,最大限度地节省了空间。
其次解决了聚合签名过程中所有签名节点参与的签名过程,通过结合MAST结构构建阈值签名地址,在该地址中通过验证聚合签名并执行交易事务,完成阈值签名的过程。
进一步地,所述基于区块链网络的n个签名节点选取m个签名节点,基于m个签名节点每个签名节点生成随机私钥和临时公私钥对进而生成聚合公钥及聚合临时公钥,集合m个签名节点中所有聚合公钥形成聚合公钥组合,包括以下步骤:
基于m个签名节点每个签名节点生成随机私钥和临时公私钥对,基于随机私钥得到签名公钥,其中,临时公私钥对包括临时公钥和临时私钥;其中私钥是运用随机函数生成的随机私钥,公钥是根据椭圆曲线算法生成的作为签名公钥,分别用于后面的聚合签名使用;
调用通讯加密协议将签名公钥和临时公钥传输至区块链网络其他签名节点,收集所有签名公钥和所有临时公钥;
基于所有签名公钥得到公钥列表,将公钥列表及签名公钥进行组合哈希运算得到聚合公钥;
为所有临时公钥匹配相关系数,将每个临时公钥与系数进行线性组合并求和得到聚合临时公钥;
还包括对所述聚合公钥组合的聚合公钥添加版本号,用于区分不同的聚合公钥,所述聚合公钥脚本是由聚合公钥版本号和公钥脚本组成。
在这里使用随机函数生成多个临时私钥即Nonce,其产生的随机数仍然是不可预测的,再利用椭圆曲线算法计算每个临时私钥对应的临时公钥。
生成聚合公钥和聚合临时公钥用于后续对聚合签名的验证过程,在聚合多签的过程中,生成多个临时公私钥对,从原来的三轮通信交互(MuSig)优化为只需要两轮的通信交互。
在n个签名节点中创建阈值为m的阈值签名(n≥m),首先计算n个签名节点第二签名公钥的聚合哈希形成的第二聚合公钥,为了实现n个节点中阈值为m的多重签名,从n个签名节点选取其中m个签名节点的签名公钥,计算聚合公钥,在这里聚合公钥是有种聚合可能。例如:n为3,m为2,即3个签名节点A、B、C中创建阈值为2的阈值签名,其可能的聚合公钥组合有即A-B、B-C、A-C这3种聚合公钥组合。基于端到端隐私加密通信协议,作为每个签名节点的私密通信基础,在执行聚合多签的两轮(签名公钥和临时公钥以及签名聚合)传递通信过程中提供加密保护。通过分布式加密网络,完成离线聚合签名交易的构建。
进一步地,所述通过区块链网络的n个签名节点生成第二随机私钥进而生成第二聚合公钥,包括以下步骤:
基于n个签名节点生成第二随机私钥,基于第二随机私钥得到第二签名公钥;
调用通讯加密协议将第二签名公钥传输至区块链网络其他签名节点,收集所有第二签名公钥;
基于所有第二签名公钥得到第二公钥列表,将第二公钥列表及第二签名公钥进行组合哈希运算得到第二聚合公钥。
进一步地,所述聚合所有签名并结合所述聚合临时公钥生成聚合签名,基于聚合签名执行交易事务,包括以下步骤:
响应链上交易请求,参与签名的m个签名节点启动对执行交易事务的阈值签名,在区块链网络中产生的交易是通过钱包地址进行转账交易的,在这里,提供阈值签名地址用于执行交易,代替传统多签地址:
调用通讯加密协议将m个签名节点中的每个签名节点的签名发送至其他签名节点,将每个签名节点最终持有的签名求和生成签名组合;
将签名组合结合所述聚合临时公钥生成聚合签名;
对所述阈值签名地址进行验证;
验证通过后,在所述链上形成包含交易事务的交易账本并记录在所述阈值签名地址中,在所述阈值签名地址中生成交易事务,基于聚合签名执行交易。
对交易事务签名是将交易事务、聚合公钥和聚合临时公钥进行哈希计算并增加临时私钥形成的。
进一步地,对所述阈值签名地址进行验证,具体为:从默克尔树结构中获取默克尔证明计算验证默克尔根,由验证默克尔根与第二聚合公钥进行组合哈希并生成验证阈值签名地址,对比验证阈值签名地址与阈值签名地址是否一致,若一致,则阈值签名地址正确。
特别地,所述基于聚合签名执行交易步骤之前,还包括对聚合签名进行验证,具体为:利用聚合公钥和聚合临时公钥对交易事务签名并与聚合签名的椭圆曲线计算结果对比,若一致,则所述聚合签名正确。
为了验证聚合签名,首先确认符合每个公钥脚本的执行阈值签名地址,在MAST结构中获取脚本分支, 以及其他关联的哈希值,计算验证MerkleRoot,然后进一步结合第二聚合公钥计算阈值签名地址与提供的阈值签名地址是否一致,若一致,则进一步利用聚合公钥和聚合临时公钥对聚合签名进行验签,最终构建完整的脚本路径并执行交易。
进一步地,所述通讯加密协议部署于两两签名节点之间;
调用通讯加密协议将签名公钥和临时公钥传输至区块链网络其他签名节点,或调用通讯加密协议将第二签名公钥和第二临时公钥传输至区块链网络其他签名节点,包括以下步骤:
利用签名节点的签名公钥或第二签名公钥作为初始密钥,利用X3DH算法生成两两签名节点的共享密钥,利用共享密钥对传递的签名公钥和临时公钥或第二签名公钥和第二临时公钥进行加密;
针对不同的签名节点之间的加密通讯传递,利用KDF算法更新替换共享密钥,对通讯消息进行一次性循环加密;
两两签名节点通过共享密钥解密获取签名公钥和临时公钥或第二签名公钥和第二临时公钥。
利用X3DH算法生成签名节点双方的共享密钥,该共享密钥用于本次通信过程的加密和解密;利用KDF算法更新替换共享密钥,即使存在恶意破解者,其无法通过破解共享密钥来获取整体的通信内容。并且KDF算法中引用随机数作为盐进行计算共享密钥,使恶意节点无法破解更新的共享密钥。
一种基于聚合多签的阈值签名系统,包括第一生成模块、获取模块、第二生成模块、签名模块和第三生成模块;
所述第一生成模块,基于区块链网络的n个签名节点选取m个签名节点,基于m个签名节点中每个签名节点生成随机私钥和临时公私钥对进而生成聚合公钥及聚合临时公钥,集合m个签名节点中所有聚合公钥形成聚合公钥组合;
所述获取模块,基于所述聚合公钥组合创建默克尔树结构,获取默克尔根;
所述第二生成模块,用于通过区块链网络的n个签名节点生成第二随机私钥进而生成第二聚合公钥,通过第二聚合公钥和所述默克尔根派生阈值签名地址;
所述签名模块,用于在所述阈值签名地址中生成交易事务,在m个签名节点中任一签名节点利用其随机私钥和临时私钥对交易事务进行签名;
所述第三生成模块,用于聚合所述签名并结合所述聚合临时公钥生成聚合签名,基于聚合签名执行交易事务。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现基于聚合多签的阈值签名的方法步骤。
一种基于聚合多签的阈值签名的装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现基于聚合多签的阈值签名的方法步骤。
本发明设计一种基于聚合多签的阈值签名方法,具有以下优势:
(1)利用聚合多签生成聚合公钥组合,避免传统多重签名的繁琐冗杂,并且提高签名效率;
(2)以聚合公钥组合为基础提供公钥脚本结构构建MAST结构的默克尔树结构,结合多重签名和统一脚本路径,有效通过隐藏未执行的分支来提高隐私性,并且交易脚本的字节数大大减少,可以有效减少交易费用的支出;
(3)通过分布式加密通信网络进行聚合签名的通信传输,增加隐私安全性;
(4)通过对阈值签名地址和聚合签名双验证实现聚合多签下的阈值签名。
附图说明
图1为基于聚合多签的阈值签名的整体结构流程图;
图2为默克尔树结构示意图;
图3为基于X3DH算法的加密通信示意图;
图4为基于聚合多签的阈值签名系统结构图。
具体实施方式
为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。
实施例1:
本发明提出一种基于聚合多签的阈值签名方法,在基于sr25519协议的架构区块链提供一个阈值签名方法(比如Substrate 支持 sr25519 和 Schnower 的多重签名,但不支持阈值签名),其整体结构流程如图1所示,在聚合多签的基础上结合MAST结构的默克尔树结构完成阈值签名,其中,设定该区块链网络中部署了n个签名节点用于链上交易的多重签名,m为所支持阈值签名的阈值,其中n≥m;在n个签名节点中每个签名节点均生成有一对公私钥对用于交易签名,私钥作为其第二随机私钥;公钥作为第二签名公钥。
具体包括步骤如下:
(1)从n个签名节点选取m个签名节点,产生种m个签名节点组合,基于m个签名节点生成聚合公钥脚本创建MAST结构的Merkle树结构并获取其MerkleRoot,将n个签名节点的第二聚合公钥与MerkleRoot派生阈值签名地址:
1)n个签名节点中利用加密通信协议传递各自的第二签名公钥至其他签名节点,集合所有第二签名公钥聚合生成第二聚合公钥;
3)将聚合公钥组合中的每个聚合公钥的脚本作为MAST结构的默克尔树结构相应的公钥脚本进行哈希运算,利用Merkle 树对每个脚本分支进行统一编码,获取其MerkleRoot,利用MerkleRoot与第二聚合公钥进行组合哈希获取地址公钥,由地址公钥派生阈值为m的阈值签名地址,其中聚合公钥组合的聚合公钥添加版本号,用于区分不同的聚合公钥,所述聚合公钥脚本是由聚合公钥版本号和公钥脚本组成。
(2)响应链上交易请求,针对m个签名节点利用聚合多签算法相应聚合签名:
1)响应链上交易请求,参与签名的m个签名节点启动对执行交易事务的阈值签名;
2)在m个签名节点中每个签名节点利用椭圆曲线算法生成多个临时公私钥对,调用通讯加密协议将其签名公钥和临时公钥传递至其他签名节点;
3)所述签名节点将持有的所有签名公钥进行聚合生成聚合公钥;所有临时公钥将进行线性组合并求和生成聚合临时公钥;
4)所述签名节点利用其随机私钥、临时私钥对交易事务进行签名,将所有签名求和生成聚合签名。
(3)验证阈值签名地址和聚合签名正确性并生成交易事务执行交易:
1)阈值签名地址验证:
从MAST结构的默克尔树结构中获取merkle证明(公钥脚本以及计算哈希值)计算验证merkle root,由验证merkle root与第二聚合公钥进行组合哈希并生成验证阈值签名地址,对比验证阈值签名地址与阈值签名地址是否一致,若一致则说明阈值签名地址正确。
2)聚合签名验证:
利用聚合公钥和聚合临时公钥对交易事务签名并与聚合签名的椭圆曲线计算结果对比,若一致则所述聚合签名正确。
在所述阈值签名地址中生成交易事务,在所述链上形成包含交易事务的交易账本并记录在所述阈值签名地址中,执行交易。
实施例2:
在本实施例中,从具体实施方法上描述本发明的阈值签名方法,具体如下:
(1)创建MAST结构的默克尔树结构,创建阈值签名地址:
在n个签名节点中创建阈值为m的多重签名(n≥m),首先计算n个签名节点形成的第二聚合公钥C:
C= hash(L,PK1’) ·PK1’+…+ hash(L,PKi’) ·PKi’+…+ hash(L,PKn’) ·PKn’);
其中L为公钥列表:L={PK1’,…,PKi’, …,PKn’}表示签名过程涉及的所有公钥组成的有序集合;
第二签名公钥PKi’=ski’·G(G为统一椭圆曲线基点);ski’为签名节点的第二随机私钥;i为n个签名节点中的任一一个节点。
为了实现n个节点中阈值为m的多重签名,从n个节点选取其中m个节点的公钥,计算聚合公钥(这里的聚合公钥的生成采用Musig2方案中聚合公钥的生成)。这里共有种组合数,因此共生成个聚合公钥。用这些聚合公钥作为脚本分支Scrpiti()进行哈希运算,利用Merkle 树对每个节点提供的公钥脚本进行编码,获取其MerkleRoot,其中i为脚本分支的版本号;利用Merkle 树对每个节点提供的公钥脚本进行统一32 字节编码,如图2所示为默克尔树结构示意图。
加入MerkleRoot,计算地址公钥为:
P=C+H(C||MerkleRoot)G,其中H(C||MerkleRoot)表示C和MerkleRoot的聚合hash;
由该地址公钥派生阈值签名地址:D:hash(P,s),s为随机数。
(2)聚合签名实施流程:
在阈值m个参与签名节点,每个签名节点生成随机私钥ski,计算签名公钥PKi=ski·G(G为统一椭圆曲线基点);此时i属于m个签名节点中的任一一个节点。
每个签名节点利用椭圆曲线算法生成v个临时公私钥对(r i,1,,R i,1)…(r i,j,,R i,j)(1=<j<=v);
调用通讯加密协议将PKi,(R i,1…Ri,j)传递至其他签名节点;
待收集所有签名公钥后计算公钥列表L=hash(PK1…PKm);
对公钥列表及签名公钥进一步哈希运算获得聚合公钥:
Pm= hash(L,PK1) ·PK1+…+ hash(L,PKm) ·PKm);
收集所有临时公钥后利用固定线性系数集合(b1,b2,…,bj)计算得到临时公钥,将每个临时公钥与系数进行线性组合并求和生成聚合临时公钥:
(b1,b2, …,bj)=(1,H(2, Pm,( (R1,R2, …,Rv)))
聚合临时公钥R=(R1+…+Rj);
签名节点利用随机私钥ski、临时私钥r i,j,对交易事务TX进行签名,将所有签名求和后生成聚合签名,此聚合签名为m个签名节点参与生成的:
Si=ri+hash(Pm,R,TX)·ski;
将所有签名求和S=(S1+…+Si);
与聚合随机数生成聚合签名(R,S)。
(3)验证阈值签名地址和聚合签名正确性并执行交易事务:
1)阈值签名地址验证:
在区块链网络中从创建的MAST结构的默克尔树结构中获取签名节点i 对应的脚本分支Scripti以及其他脚本分支的Hash值,通过计算获得可验证的merkle root,并利用地址公钥P=C+H(C||merkle root)G派生验证阈值签名地址:d:hash(P,s),s为随机数;对比d与D是否一致,若一致则说明阈值签名地址正确,进一步进行聚合签名验证;若不一致说明提供的阈值签名地址不正确,拒绝执行交易事务。
2)聚合签名验证:
利用聚合公钥和聚合临时公钥对交易事务签名并与聚合签名的椭圆曲线计算结果对比,若一致则所述聚合签名正确。
在执行提现交易时,验证是否存在S·G=R+ hash(Pm,R,TX)·Pm,
若存在,则验证成功,若不存在,则验证失败。
聚合签名验证成功后,在所提供的阈值签名地址中执行交易事务。因为这里只有m个签名节点参与就可以完成交易,所以体现出m/n的阈值签名。
实施例3:
于本实施例中,在生成聚合公钥所涉及到的各签名节点之间的签名公钥和临时公钥发送和在聚合签名的过程中涉及到的各签名节点之间签名公钥生成的签名的传递均利用加密通讯协议进行加密传递,其中各签名节点之间设置通讯服务器,用于存储更新后的共享密钥和传递加密后的消息密文:
如图3所示,利用签名节点的签名公钥作为初始密钥,比如签名节点a和b之间进行签名公钥或签名事务的发送,其节点a的私钥为Ska,对应签名公钥为Pa,节点b的私钥为Skb,对应签名公钥为Pb,节点a利用X3DH算法生成签名节点双方的共享密钥PK,并利用共享密钥对传递的签名公钥和临时公钥形成的通讯消息进行加密;
节点b通过共享密钥解密获取对方的签名公钥和临时公钥。
当节点b发送其签名公钥或签名事务到节点a时,利用KDF算法更新替换共享密钥PK,产生新的共享密钥,利用新的共享密钥加密形成通信密文发送至节点a,节点a同样采用新的共享密钥解密通信密文,获取b节点的签名公钥或签名事务。
基于X3DH算法的加密通信逻辑实施具体如下:
其中X3DH算法基于DH 协议,但是引入更多的公钥参数以提高安全性。
在X3DH算法下,有3个角色:
1) 通信发起者,本例假设是签名节点a;
2) 通信接收者,本例假设是签名节点b;
3) 通信服务器: 用于存储所有节点的各种公钥。
在X3DH算法中每个节点都要创建3种密钥对,分别如下:
1) 身份密钥对(IKP) —— 一个长期的符合DH协议的密钥对,用户注册时创建,与用户身份绑定,也就是签名节点的随机密钥对,包括随机私钥Ska,Skb和签名公钥Pa,Pb;
2) 已签名的预共享密钥(SPK) ——一个中期的符合DH协议的密钥对,节点注册时创建,由身份密钥签名,并定期进行轮换,此密钥可能是为了保护身份密钥不被泄露;
3) 临时密钥(EPK) —— 一次性使用的 Curve25519 密钥对队列,仅在一次通信过程中使用。
所有节点都要将这3种密钥对的公钥上传到通信服务器上,利用:
PK=KDF(DH1||DH2||DH3)
DH1=IPK-a mod SPK-b
DH2= EPK-a mod IPK-b
DH3=EPK-a mod SPK-b
计算共享密钥,注:“||”代表连接符,进行一次KDF计算(KDF是密钥衍生算法的一种,可以看成加强版的hash),以衍生出固定长度的共享密钥,结果即为最终加密解密的共享密钥PK;
签名节点a发送通信消息时,使用共享密钥PK对消息进行加密,连同自己的身份公钥IPK-a和临时密钥EPK-a一同发给b;
签名节点b利用节点a的身份公钥IPK-a和临时密钥EPK-a结合其自身的身份密钥对计算出共享密钥PK,解密加密密文;
节点b再次利用随机数作为KDF计算的盐进行重新计算共享密钥,此时更新了临时密钥EPK,进一步更新共享密钥:
PK’=KDF(DH1||DH2’||DH3’)
使用更新后的PK’对其发送至a的通信内容加密传输。
实施例4
一种基于聚合多签的阈值签名系统,如图4所示,为其系统结构图,包括第一生成模块、获取模块、第二生成模块、签名模块和第三生成模块;
所述第一生成模块,基于区块链网络的n个签名节点选取m个签名节点,基于m个签名节点中每个签名节点生成随机私钥和临时公私钥对进而生成聚合公钥及聚合临时公钥,集合m个签名节点中所有聚合公钥形成聚合公钥组合;
所述获取模块,基于所述聚合公钥组合创建默克尔树结构,获取默克尔根;
所述第二生成模块,用于通过区块链网络的n个签名节点生成第二随机私钥进而生成第二聚合公钥,通过第二聚合公钥和所述默克尔根派生阈值签名地址;
所述签名模块,用于在所述阈值签名地址中生成交易事务,在m个签名节点中任一签名节点利用其随机私钥和临时私钥对交易事务进行签名;
所述第三生成模块,用于聚合所述签名并结合所述聚合临时公钥生成聚合签名,基于聚合签名执行交易事务。
在本实施例中一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现基于聚合多签的阈值签名的方法步骤。
以及一种基于聚合多签的阈值签名的装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现基于聚合多签的阈值签名的方法步骤。
需要说明的是以上方法或系统中不是所有步骤和模块均是必须的,可以根据实际需求忽略某些步骤或模块,各步骤的执行顺序也可以根据需要进行调整,各模块是根据功能上的需求进行描述划分的,这些模块在实际操作中可以位于同一设备中也可以位于不同设备中。
各实施例中可以由硬件结合软件的方式实现,其中软件包括计算机可读指令,存储在可读存储介质中,因此各实施例可体现软件产品。
本申请的各个实施例通过由数据处理设备如计算机执行的数据处理程序来实现,硬件由专门的硬件或计算机可读指令来实现,因此数据处理设备装置构成了本申请。此外通常存储在一个存储介质的数据处理程序通过直接将程序读取存储介质或者将程序安装或复制在数据处理设备的存储设备(硬盘或内存)中执行,因此存储介质也构成了本申请。
上述对实施例的描述是为便于本技术领域的普通技术人员能理解和应用本发明。熟悉本领域技术的人员显然可以容易地对上述实施例做出各种修改,并把在此说明的一般原理应用到其他实施例中而不必经过创造性的劳动。因此,本发明不限于上述实施例,本领域技术人员根据本发明的揭示,对于本发明做出的改进和修改都应该在本发明的保护范围之内。
Claims (8)
1.一种基于聚合多签的阈值签名方法,其特征在于,包括以下步骤:
基于区块链网络的n个签名节点选取m个签名节点,基于m个签名节点的每个签名节点生成随机私钥和临时公私钥对进而生成聚合公钥及聚合临时公钥,集合m个签名节点中所有聚合公钥形成聚合公钥组合,具体为:n个签名节点选取m个签名节点产生种m个签名节点组合,集合种m个签名节点组合所产生的聚合公钥形成聚合公钥组合;
基于所述聚合公钥组合创建默克尔树结构,获取默克尔根,具体为:基于所述聚合公钥作为MAST结构的脚本分支进行哈希运算,每个签名节点提供正在执行签名的脚本分支,将脚本分支连接到固定大小默克尔根的哈希值并构建默克尔树结构;
通过区块链网络的n个签名节点生成第二随机私钥进而生成第二聚合公钥,通过第二聚合公钥和所述默克尔根派生阈值签名地址;
在所述阈值签名地址中生成交易事务,在m个签名节点中任一签名节点利用其随机私钥和临时私钥对交易事务进行签名;
聚合所述签名并结合所述聚合临时公钥生成聚合签名,基于聚合签名执行交易事务,执行交易事务之前还包括对所述阈值签名地址进行验证的步骤,具体为:从默克尔树结构中获取默克尔证明计算验证默克尔根,由验证默克尔根与第二聚合公钥进行组合哈希并生成验证阈值签名地址,对比验证阈值签名地址与阈值签名地址是否一致,若一致,则阈值签名地址正确;
所述基于聚合签名执行交易事务 步骤之前,还包括对聚合签名进行验证,具体为:利用聚合公钥和聚合临时公钥对交易事务签名并与聚合签名的椭圆曲线计算结果对比,若一致,则所述聚合签名正确。
2.根据权利要求1所述的基于聚合多签的阈值签名方法,其特征在于,所述基于区块链网络的n个签名节点选取m个签名节点,基于m个签名节点的每个签名节点生成随机私钥和临时公私钥对进而生成聚合公钥及聚合临时公钥,集合m个签名节点中所有聚合公钥形成聚合公钥组合,包括以下步骤:
基于m个签名节点的每个签名节点生成随机私钥和临时公私钥对,基于随机私钥得到签名公钥,其中,临时公私钥对包括临时公钥和临时私钥;
调用通讯加密协议将签名公钥和临时公钥传输至区块链网络其他签名节点,收集所有签名公钥和所有临时公钥;
基于所有签名公钥得到公钥列表,将公钥列表及签名公钥进行组合哈希运算得到聚合公钥;
为所有临时公钥匹配相关系数,将每个临时公钥与系数进行线性组合并求和得到聚合临时公钥;
3.根据权利要求1所述的基于聚合多签的阈值签名方法,其特征在于,所述通过区块链网络的n个签名节点生成第二随机私钥进而生成第二聚合公钥,包括以下步骤:
基于n个签名节点生成第二随机私钥,基于第二随机私钥得到第二签名公钥;
调用通讯加密协议将第二签名公钥传输至区块链网络其他签名节点,收集所有第二签名公钥;
基于所有第二签名公钥得到第二公钥列表,将第二公钥列表及第二签名公钥进行组合哈希运算得到第二聚合公钥。
4.根据权利要求1所述的基于聚合多签的阈值签名方法,其特征在于,所述聚合所述签名并结合所述聚合临时公钥生成聚合签名,基于聚合签名执行交易事务,包括以下步骤:
调用通讯加密协议将m个签名节点中的每个签名节点的签名发送至其他签名节点,将每个签名节点最终持有的签名求和生成签名组合;
将签名组合结合所述聚合临时公钥生成聚合签名;
对所述阈值签名地址进行验证;
验证通过后,在所述阈值签名地址中生成交易事务,基于聚合签名执行交易。
5.根据权利要求2-4任一项所述的基于聚合多签的阈值签名方法,其特征在于,所述通讯加密协议部署于两两签名节点之间;
调用通讯加密协议将签名公钥和临时公钥传输至区块链网络其他签名节点,或调用通讯加密协议将第二签名公钥和第二临时公钥传输至区块链网络其他签名节点,包括以下步骤:
利用签名节点的签名公钥或第二签名公钥作为初始密钥,利用X3DH算法生成两两签名节点的共享密钥,利用共享密钥对传递的签名公钥和临时公钥或第二签名公钥和第二临时公钥进行加密;
针对不同的签名节点之间的加密通讯传递,利用KDF算法更新替换共享密钥,对通讯消息进行一次性循环加密;
两两签名节点通过共享密钥解密获取签名公钥和临时公钥或第二签名公钥和第二临时公钥。
6.一种基于聚合多签的阈值签名系统,其特征在于,包括第一生成模块、获取模块、第二生成模块、签名模块和第三生成模块;
所述第一生成模块,基于区块链网络的n个签名节点选取m个签名节点,基于m个签名节点中每个签名节点生成随机私钥和临时公私钥对进而生成聚合公钥及聚合临时公钥,集合m个签名节点中所有聚合公钥形成聚合公钥组合,具体为:n个签名节点选取m个签名节点产生种m个签名节点组合,集合种m个签名节点组合所产生的聚合公钥形成聚合公钥组合;
所述获取模块,基于所述聚合公钥组合创建默克尔树结构,获取默克尔根,具体为:基于所述聚合公钥作为MAST结构的脚本分支进行哈希运算,每个签名节点提供正在执行签名的脚本分支,将脚本分支连接到固定大小默克尔根的哈希值并构建默克尔树结构;
所述第二生成模块,用于通过区块链网络的n个签名节点生成第二随机私钥进而生成第二聚合公钥,通过第二聚合公钥和所述默克尔根派生阈值签名地址;
所述签名模块,用于在所述阈值签名地址中生成交易事务,在m个签名节点中任一签名节点利用其随机私钥和临时私钥对交易事务进行签名;
所述第三生成模块,用于聚合所述签名并结合所述聚合临时公钥生成聚合签名,基于聚合签名执行交易事务,对所述阈值签名地址进行验证,具体为:从默克尔树结构中获取默克尔证明计算验证默克尔根,由验证默克尔根与第二聚合公钥进行组合哈希并生成验证阈值签名地址,对比验证阈值签名地址与阈值签名地址是否一致,若一致,则阈值签名地址正确;所述基于聚合签名执行交易步骤之前,还包括对聚合签名进行验证,具体为:利用聚合公钥和聚合临时公钥对交易事务签名并与聚合签名的椭圆曲线计算结果对比,若一致,则所述聚合签名正确。
7.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任意一项所述的方法步骤。
8.一种基于聚合多签的阈值签名的装置,包括存储器、处理器以及存储在所述存储器中并在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5任意一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111102907.5A CN113556237B (zh) | 2021-09-17 | 2021-09-17 | 基于聚合多签的阈值签名方法、系统、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111102907.5A CN113556237B (zh) | 2021-09-17 | 2021-09-17 | 基于聚合多签的阈值签名方法、系统、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113556237A CN113556237A (zh) | 2021-10-26 |
CN113556237B true CN113556237B (zh) | 2021-12-17 |
Family
ID=78106433
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111102907.5A Active CN113556237B (zh) | 2021-09-17 | 2021-09-17 | 基于聚合多签的阈值签名方法、系统、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113556237B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102582359B1 (ko) * | 2020-06-29 | 2023-09-25 | 한국전자통신연구원 | 블록체인 시스템의 블록 생성 방법 및 장치 |
US11968307B2 (en) * | 2021-09-27 | 2024-04-23 | International Bisuness Machines Corporation | Private ledger partitions in blockchain networks |
CN114172661B (zh) * | 2021-12-03 | 2023-12-08 | 杭州链网科技有限公司 | 一种数字资产的双向跨链方法、系统及装置 |
CN114169888B (zh) * | 2021-12-07 | 2022-06-28 | 北京众信星空网络技术有限公司 | 一种通用型支持多重签名的加密货币保管方法 |
CN115396173B (zh) * | 2022-08-23 | 2024-03-12 | 国网安徽省电力有限公司综合服务中心 | 一种用于电力资金安全管控的密钥监控系统 |
EP4343599A1 (en) * | 2022-09-23 | 2024-03-27 | Ecole Polytechnique Fédérale de Lausanne (EPFL) | Rapidly verifiable aggregate signatures |
CN117254912B (zh) * | 2023-11-17 | 2024-03-19 | 广东省电信规划设计院有限公司 | 基于区块链和生物特征的零知识身份认证方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103414731A (zh) * | 2013-08-29 | 2013-11-27 | 青岛大学 | 一种并行密钥隔离的基于身份的聚合签名方法 |
CN107370606A (zh) * | 2017-07-26 | 2017-11-21 | 中山大学 | 一种基于区块链的微博多重签名方法 |
CN111355584A (zh) * | 2018-12-21 | 2020-06-30 | 北京京东尚科信息技术有限公司 | 用于生成区块链多重签名的方法和装置 |
CN112199736A (zh) * | 2020-10-12 | 2021-01-08 | 南京邮电大学 | 一种基于区块链的有序多重签名方法 |
WO2021059090A1 (en) * | 2019-09-27 | 2021-04-01 | nChain Holdings Limited | Time-locked blockchain transactions and related blockchain technology |
CN112989436A (zh) * | 2021-03-30 | 2021-06-18 | 广西师范大学 | 一种基于区块链平台的多重签名方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11171791B2 (en) * | 2019-01-15 | 2021-11-09 | 0Chain, LLC | Systems and methods of aggregate signing of digital signatures on multiple messages simultaneously using key splitting |
CN111371564B (zh) * | 2020-03-04 | 2023-02-03 | 深圳大学 | 一种数字签名及区块链交易方法、装置及电子设备 |
-
2021
- 2021-09-17 CN CN202111102907.5A patent/CN113556237B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103414731A (zh) * | 2013-08-29 | 2013-11-27 | 青岛大学 | 一种并行密钥隔离的基于身份的聚合签名方法 |
CN107370606A (zh) * | 2017-07-26 | 2017-11-21 | 中山大学 | 一种基于区块链的微博多重签名方法 |
CN111355584A (zh) * | 2018-12-21 | 2020-06-30 | 北京京东尚科信息技术有限公司 | 用于生成区块链多重签名的方法和装置 |
WO2021059090A1 (en) * | 2019-09-27 | 2021-04-01 | nChain Holdings Limited | Time-locked blockchain transactions and related blockchain technology |
CN112199736A (zh) * | 2020-10-12 | 2021-01-08 | 南京邮电大学 | 一种基于区块链的有序多重签名方法 |
CN112989436A (zh) * | 2021-03-30 | 2021-06-18 | 广西师范大学 | 一种基于区块链平台的多重签名方法 |
Non-Patent Citations (4)
Title |
---|
《bip-0341.mediawiki》;bitcoin/bips;《https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki》;20210714;全文 * |
《Huffman:Taproot Optimization》;NewBTC World;《https://newdaycrypto.com/what-are-schnorr-signatures-what-is-taproot/》;20210716;全文 * |
《Simple Schnorr multi-signatures with applications to Bitcoin》;Gregory Maxwell et al.;《Designs, Codes and Cryptography》;20190202;全文 * |
《椭圆曲线型多重数字签名算法研究》;戴伟等;《无线通信技术》;20050930;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113556237A (zh) | 2021-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113556237B (zh) | 基于聚合多签的阈值签名方法、系统、装置及存储介质 | |
US10903991B1 (en) | Systems and methods for generating signatures | |
CN109672518B (zh) | 抗量子攻击的区块链的节点数据处理 | |
CN111682938B (zh) | 面向中心化移动定位系统的三方可认证密钥协商方法 | |
US9490979B2 (en) | System and method for providing credentials | |
CN108989050A (zh) | 一种无证书数字签名方法 | |
US11223486B2 (en) | Digital signature method, device, and system | |
CN114499898B (zh) | 一种区块链跨链安全接入方法及装置 | |
CN112187450B (zh) | 密钥管理通信的方法、装置、设备及存储介质 | |
CN114710275B (zh) | 物联网环境下基于区块链的跨域认证和密钥协商方法 | |
CN113297633A (zh) | 一种量子数字签名方法 | |
Gong et al. | Practical Certificateless Aggregate Signatures from Bilinear Maps. | |
Wang et al. | Dynamic threshold ECDSA signature and application to asset custody in blockchain | |
CN113179153B (zh) | 一种基于无证书的用户认证和密钥协商方法 | |
US20240121109A1 (en) | Digital signatures | |
CN108809996B (zh) | 不同流行度的删重存储数据的完整性审计方法 | |
CN112187451B (zh) | 抗量子计算的通信方法、装置、设备及存储介质 | |
CN116684093B (zh) | 身份认证与密钥交换方法及系统 | |
CN111565108B (zh) | 签名处理方法、装置及系统 | |
CN111245611B (zh) | 基于秘密共享和可穿戴设备的抗量子计算身份认证方法及系统 | |
CN110740034A (zh) | 基于联盟链的qkd网络认证密钥生成方法及系统 | |
CN116388995A (zh) | 一种基于puf的轻量级智能电网认证方法 | |
CN113766452A (zh) | 一种v2x通信系统、通信密钥分发方法与隐式认证方法 | |
CN116228234B (zh) | 一种量子安全的兑换数字货币的方法 | |
CN114529273A (zh) | 基于id密码学的抗量子计算数字货币匿名通信方法及系统 |
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 |