随着区块链技术的发展,数字货币钱包的需求日益增大。从早期的单签名钱包,到后来对安全性需求更高的多签名和阈值钱包,这些钱包的主要区别体现在密钥生成和签名验证的过程上。它们分别采用了不同的技术和算法。
多签名钱包,顾名思义就是需要多次签名的钱包,如果按照算法来区分的话我们可以将多签和阈值钱包统称为多签名钱包,他们都需要多次签名才能签署交易,但是却有着本质上的区别。在签名的过程中需要验证私钥或签名的正确性,如果按照链上或链下验证来区分多签名钱包的话,我们可以将其分为阈值钱包和多签钱包,前者依赖于链下Smpc算法,后者依赖于链上比特币脚本或以太坊智能合约。后续本文将详细介绍如何区分这些钱包,如何选择这些钱包。
单签名钱包是最基础的数字货币钱包,它使用一对公钥和私钥进行操作。公钥用于生成钱包地址,接收资金;私钥用于签署交易,证明资金所有权。私钥的安全存储和管理是数字货币钱包的主要挑战之一。此外,许多钱包还提供了助记词功能,这是一种将私钥转化为一组易记单词的方法,以帮助用户记住和恢复他们的私钥。
多签名钱包是一种需要多个私钥才能签名交易的钱包。这种钱包的设计目的是增加安全性,因为即使一个私钥被泄露,攻击者也无法独自完成交易。多签名钱包通常用在需要多方共同控制资金的场景,例如公司的共享账户或者DAO的共享账户。
在理解多签名钱包时,我们可以将其想象成一个需要多个高级管理人员共同签字才能完成的公司转账过程。例如,公司需要向其他账户转账,可能需要董事长、副董事长、财务负责人三个人同时在一笔交易上签字,才能完成交易。在区块链场景中,这就会产生三个公私钥对,分别代表董事长,副董事长和财务负责人。
我们都知道,在单签名钱包中,公钥代表收款地址。那么在多签名钱包中,我们用什么来代表收款地址呢?这就需要有一个”多签地址”。然而,在比特币和以太坊的原生协议和架构中,并没有多签地址这个概念。如果我们想在链上实现多签钱包的功能,就需要修改原生协议。但是,比特币中采用了一种名为P2SH (Pay-to-Script-Hash)的技术来实现多签名钱包,而以太坊则计划通过智能合约来实现这一功能。这些技术都是为了在不改变原生协议的情况下,实现多签名钱包的功能。
接下来我们来介绍基于三种不同协议实现的多签名钱包,他们都是发生在链上的,主要区别在于签名过程,ECDSA多签在比特币和以太坊中支持较好,但是需要多次签名多次验证。Schnorr和Bls可以实现签名聚合单次验证,但是目前在比特币和以太坊中支持并不是很好。
在比特币中,P2SH (Pay-to-Script-Hash)
是一种特殊的地址类型,它允许用户向一个脚本哈希地址发送交易,而不是向一个特定的公钥地址发送。这个脚本通常被称为赎回脚本,它定义了如何花费到这个地址的比特币。在多签名钱包的场景中,赎回脚本可以被设置为需要多个签名才能解锁的脚本,这就是如何实现基于ECDSA的多签名钱包的。
在以太坊中,智能合约是一种运行在以太坊虚拟机上的自动执行程序,它可以编程来定义和执行各种复杂的规则。在基于ECDSA的多签名钱包的场景中,智能合约可以被编程为需要多个签名才能执行交易。这些签名可以来自不同的私钥,这些私钥可以分别属于不同的参与者。在这种情况下,智能合约的代码会定义需要多少个签名才能批准交易,以及谁是被授权的签名者。当一个交易需要被执行时,所有的签名者都需要对交易进行签名。这些签名然后被提交到智能合约中,智能合约会验证这些签名是否满足其定义的规则。只有当所有必要的签名都被提供,并且都被验证为有效时,智能合约才会执行交易。
Schnorr签名算法它的主要优点是支持签名聚合,可以提高效率和隐私性,同时保持了较高的安全性。
比特币通过Taproot升级支持Schnorr签名的过程涉及到比特币协议的修改。Taproot升级是比特币历史上最大的协议升级之一,它在2021年被激活。Taproot升级引入了Schnorr签名,这是一种新的签名算法,它比比特币原来使用的ECDSA签名更高效,更安全。Schnorr签名的一个主要优点是它支持签名聚合,这意味着多个签名可以被聚合成一个单一的签名,这在多签名钱包中非常有用。此外,Schnorr签名还可以提高隐私性和扩展性。
以太坊并不支持Schnorr签名,这主要是因为以太坊的设计和目标与比特币不同。以太坊是一个通用的、可编程的区块链平台,它支持智能合约和复杂的应用程序。因此,以太坊的设计重点是灵活性和功能性,而不仅仅是交易效率和安全性。此外,以太坊已经有了一套成熟的加密和签名机制,即基于ECDSA的签名,如果要引入新的签名算法,需要对以太坊的底层协议进行大规模的修改,这需要大量的工作,并可能引入新的安全风险。因此,尽管Schnorr签名有其优点,但以太坊目前还没有计划支持它。
BLS (Boneh-Lynn-Shacham) 是一种签名算法,它的主要优点是能够实现紧凑、无需交互的多签名。然而,尽管BLS签名有其优点,但比特币和以太坊1.0目前都还不支持BLS签名。
在比特币中,其底层的加密库使用的是ECDSA签名算法,这是一种基于椭圆曲线密码学的签名算法。要在比特币中实现BLS签名,需要对其底层的加密库进行大规模的修改,以支持BLS签名所需的配对友好的椭圆曲线。这需要大量的工作,并可能引入新的安全风险。
在以太坊1.0中,同样使用的是ECDSA签名算法。尽管以太坊是一个通用的、可编程的区块链平台,它支持智能合约和复杂的应用程序,但要在以太坊1.0上实现BLS签名,也需要对其底层的加密库进行大规模的修改,这同样需要大量的工作,并可能引入新的安全风险。因此,以太坊1.0目前也还没有计划支持BLS签名。
然而,以太坊2.0支持BLS签名。这是因为以太坊2.0的设计目标之一就是提高扩展性和效率,而BLS签名的签名聚合特性可以帮助实现这个目标。在以太坊2.0中,验证者需要对每个新的区块进行签名,如果使用传统的签名算法,每个签名都需要单独验证,这会消耗大量的计算资源。但是,如果使用BLS签名,所有的签名可以被聚合成一个单一的签名,然后一次性验证,这大大提高了效率。因此,以太坊2.0选择了BLS签名作为其核心的签名算法。
阈值钱包是一种依赖于多方安全计算(Secure Multiparty Computation)算法的多签名钱包。在这种钱包中,签名过程发生在链下,只有最终的签名被发布到链上。阈值钱包的特点是只需要一定数量的私钥就可以完成签名,而不需要所有的私钥。
在阈值钱包中主要分为两类,一类是采用了Shamir’s Secret Sharing(简称SSS)或者Verifiable Secret Sharing(简称VSS)算法的阈值钱包,还有一类是Distributed Key Generation(简称DKG)阈值钱包。他们的主要区别是前者生成了完整的私钥后再生成私钥分片,而后者是直接生成私钥分片,没有完整的私钥。
Shamir’s Secret Sharing是由以色列著名密码学家 Adi Shamir 在 1979 年首次提出的算法。它允许信息被分解成许多份,而只需要一部分份额就能重构原始的秘密(私钥)。SSS 是一种基本的秘密共享方案,它允许一个秘密被安全地分割和共享,而不需要任何中心化的信任实体。
SSS在多签钱包中的实际应用,他可以将私钥分割成多个部分,每个参与者持有一部分。只有当收集到足够数量的私钥分片时,才能恢复出完整的私钥。然而,SSS 本身并不提供任何验证机制,这意味着如果一个恶意参与者提供了一个错误的秘密分片,那么这个错误可能在恢复秘密时才会被发现。
Verifiable Secret Sharing的概念最早在 1985 年由 Benny Chor, Shafi Goldwasser, Silvio Micali 和 Baruch Awerbuch 提出。在 VSS 方案中,每个参与者在接收到秘密分片后,都可以验证这个分片是否正确。这个验证步骤可以确保即使有恶意参与者提供错误的秘密分片,也不会影响到秘密的恢复。
VSS在多签钱包中的实际应用,他不仅可以分割私钥,还可以验证私钥分片的正确性,VSS在生成私钥分片的同时,还会生成一个验证信息,用于验证私钥分片的正确性。这样,即使有人试图伪造私钥分片,也能够被立即发现。
Distributed Key Generation协议最早在 1991 年由 Torben Pedersen 指定。这个最初的模型依赖于 Joint-Feldman Protocol 在秘密共享过程中的可验证秘密共享的安全性。DKG 是一种更复杂的协议,它允许一组参与者共同生成一个公钥和一组私钥分片,而无需任何参与者知道完整的私钥。
DKG的算法逻辑是每个参与者都会生成一个多项式,并将多项式的值(即私钥分片)分发给其他所有参与者。这个过程是基于多项式插值的原理,通过这种方式,每个参与者都可以得到一个私钥分片,而且这些私钥分片可以用来计算出公钥。
在DKG中,完整的私钥实际上从未生成过。每个参与者只有一部分私钥信息,而且这些信息是通过多项式插值计算出来的,没有人知道完整的私钥是什么。在签名过程中,每个拥有私钥分片的参与者都会对交易进行签名,生成一个签名分片。然后,这些签名分片会被收集起来,通过某种方式(如拉格朗日插值)组合成最终的签名。这个签名可以用公钥来验证,而且它与由完整私钥生成的签名在功能上是等价的。
阈值钱包和多签名钱包都是为了提高资产安全性而设计的,它们都需要多次签名才能完成交易。但它们的主要区别在于,阈值钱包的签名过程发生在链下,而多签名钱包的每个签名都会被发布到链上。这意味着,阈值钱包的交易过程更为隐私,因为只有最终的签名会被公开,而多签名钱包的每个签名都会被记录在区块链上,这可能会暴露一些额外的信息,选择哪种钱包取决于用户的具体需求和对隐私和安全性的考虑。
通俗一点的理解,多签名钱包更像一个装有多把锁的保险箱,每把锁(每个公私钥对)都需要独立的钥匙(私钥)来打开。这个保险箱(比特币脚本或智能合约)有个独立的地址(比特币脚本地址或智能合约地址),每次交易都需要多把钥匙(多个私钥)才能打开这个保险箱(完成交易)。
而阈值钱包则像是一个只有一把锁(公钥)的保险柜,但是这把锁的钥匙(私钥)被打碎(分割成私钥分片)并分给了多个保险柜的拥有者。每次交易,只需要一定数量的钥匙碎片(私钥分片)就可以打开这个保险柜(完成交易)。这样,即使有人得到了一部分钥匙碎片(私钥分片),也无法打开这个保险柜(完成交易),从而大大提高了资产的安全性。
选择适合自己的资产管理工具,需要考虑的因素包括安全性、易用性和成本等。单签名钱包适合个人用户,操作简单,但安全性相对较低。多签名钱包和阈值钱包适合需要多方共同控制资金的场景,如公司和DAO等,它们提供了更高的安全性,但操作相对复杂,成本也较高。
在这个背景下,Cregis的出现无疑为用户提供了一个全新的选择。Cregis是一个精心设计的数字资产自托管平台,它利用前沿的密码学技术,通过MPC加密分片技术和安全的TEE环境计算,实现了交易签名时不暴露原始私钥,为资产安全提供了强大的保障。同时,Cregis还提供了流程化、智能化的资产管理工具,帮助用户和团队高效、安全地协作管理资产。
Cregis的产品已经覆盖了macOS、Windows、iOS、Android等多个平台,无论你是个人用户还是企业用户,都可以轻松地找到适合自己的解决方案。Cregis的目标是帮助用户在保证资产安全的同时,提高资产运转的效率,降低资产管理的成本。
无论你是个人用户还是企业用户,无论你的需求是单签名钱包、多签名钱包还是阈值钱包,Cregis都能为你提供最优质的服务。如果你正在寻找一个安全、高效、易用的资产管理工具,那么Cregis无疑是你的最佳选择。