作者:Shew,仙壤在Web3圈子里,私钥管理是生死攸关的大事,一旦钱包私钥被盗或丢失,数百万美元的资产都会在顷刻间化为乌有。然而,绝大多数人都习惯采用单点式的私钥管理,这就如同把所有鸡蛋放在一个篮子里,随时都可能因踩中钓鱼链接而把所有资产送给黑客。为了应对这...
作者:Shew,仙壤
在Web3圈子里,私钥管理是生死攸关的大事,一旦钱包私钥被盗或丢失,数百万美元的资产都会在顷刻间化为乌有。然而,绝大多数人都习惯采用单点式的私钥管理,这就如同把所有鸡蛋放在一个篮子里,随时都可能因踩中钓鱼链接而把所有资产送给黑客。
为了应对这一麻烦,区块链领域曾出现过各种各样的解决方案。从多签钱包到MPC,再到DeepSafe项目方提出的CRVA,每一次技术进步都在为资产管理开辟新的路径。本文将探讨上述三种资管方案的原理、特点和适用场景,帮助读者选择最适合自己的道路。
多签钱包的理念源于一种朴素的智慧:不要把所有权限集中在一个地方。这种思想在现实中早已得到广泛应用,比如三权分立,以及董事会投票。
同理,在Web3当中,多签钱包会创建多道独立的密钥来分散风险。最常见的是"M-of-N"模式,比如在"2-of-3"的设置中,系统总共生成三道私钥,但只要其中任意两道私钥都生成签名,就可以让指定账户执行交易。
这种设计提供了一定的容错能力——即便丢失了某一道私钥,资产仍然安全可控。如果你有多台用于存储密钥的独立设备,多签方案会比较可靠。
一般来说,多签钱包在技术上分为两类,一类是常规的多签,一般使用链上智能合约或公链底层的配套组件来实现,往往并不依赖于特定的密码学工具。还有一种是依赖于特殊密码学算法的多签钱包,安全性取决于具体的算法,有时可以完全无需链上合约的参与。下面我们将分别对两种方案展开讨论。
Safe钱包作为目前最受欢迎的多签方案之一,采用常规的Solidity智能合约实现多重签名。在Safe钱包的架构中,每个多签参与者都控制一道独立的密钥,而链上智能合约充当"仲裁者",只有收集到足够数量的有效签名时,合约才会批准让多签关联账户执行交易。
这种方法的优势在于透明度和可验证性,所有的多签规则都被明确编码在智能合约中,任何人都可以审计代码逻辑。此外,用户还可以为多签账户添加模块,使其具备更丰富的功能,如限制每一笔交易的资金上限。然而,这种透明性也意味着多签钱包的细则在区块链上是完全公开的,可能会暴露用户的资产管理结构。
除了Safe钱包这种以太坊生态内的知名多签方案,比特币网络内也存在使用BTC脚本构建的多签钱包,比如基于OP_CHECKMULTISIG
操作码构建的方案。这个操作码可以校验UTXO解锁脚本内包含的签名数量是否满足要求。
值得注意的是,上述介绍的常规多签算法都支持 "M-of-N",但在后文中介绍的基于特定密码学算法的多签,有些仅支持 "M-of-M" 模式,即用户要提供所有密钥才可以进行交易。
在密码学层面,可以通过特定的密码学算法来实现多签验证的效果,而这种方案有时可以摆脱链上智能合约的参与。我们往往会进行如下分类:
1.多签算法(Multisignatures)。这种签名算法只支持 "M-of-M" 模式,用户必须一次性提交所有密钥对应的签名
2.阈值签名算法(Threshold Signatures)。这种算法支持 "M-of-N" 模式,但一般来说构建难度相比于上面说的多签算法更复杂
3.密钥分割算法(Secret sharing)。在这种算法的设计中,用户可以将单一私钥分为多份,当用户收集了足够的私钥碎片后,就可以恢复原有的私钥并生成签名
比特币在隔离见证升级(SegWit)后引入了schnorr算法,天然可以实现多签验证。而以太坊共识层使用了BLS阈值算法实现了PoS体系内最核心的投票功能。
这种单纯依靠密码学算法的多签方案有更好的兼容性,因为它可以不依赖于智能合约,比如用纯链下方案来实现。
纯密码学多签方案生成的签名,与传统的单一私钥签名在格式上完全相同,可以被任何支持标准签名格式的区块链接受,所以具备很强的通用性。但是基于特定密码学的多签算法较为复杂,实现非常困难,使用的时候往往也需要依赖于一些特定设施。
尽管常见的多签钱包显著提高了资产安全性,但也带来了新的风险。最明显的问题是操作复杂性增加:每次交易都需要多方协调和确认,这在对时间敏感的场景中成为了重大障碍。
更严重的是,多签钱包往往将风险从私钥管理转移到了签名协调与验证环节。正如最近发生的Bybit盗窃案,攻击者通过在Safe依赖的AWS设施中植入钓鱼的Safe前端界面代码,成功欺骗了Bybit的多签管理者使其签署钓鱼交易。这说明,即便使用了较为先进的多签技术,前端界面和签名验证与协调环节的安全性仍然漏洞重重。
此外,并非所有区块链使用的签名算法都原生支持多签,比如以太坊执行层使用的secp256k1曲线上就较少存在多签算法,限制了多签钱包在不同生态中的应用。对于需要通过智能合约实现多签的网络,还存在着合约漏洞和升级风险等额外的考量。
如果说多签钱包是通过分散私钥来提高安全性,那么MPC(多方安全计算)技术则更进一步,它从根本上消除了完整私钥的存在。在MPC的世界里,完整的私钥从来不会在任何单一地点出现,甚至在密钥生成的过程中也是如此。同时,MPC往往支持更高级的功能,比如刷新私钥或调整权限。
在加密货币的应用场景中,MPC的工作流程展现了独特的优势。在密钥生成阶段,多个参与方各自生成随机数,然后通过复杂的密码学协议,每一方都计算出属于自己的"密钥片段"。这些份额单独来看没有任何意义,但它们在数学上相互关联,可以共同对应到一个特定的公钥和钱包地址。
当需要针对某笔链上操作进行签名时,各个参与方可以用自己的密钥片段生成"部分签名",然后通过MPC协议将这些部分签名巧妙组合起来。最终生成的签名与单一私钥的签名在格式上完全相同,外界观测者甚至看不出这是MPC设施生成的签名。
这种设计的革命性在于,整个过程中完整的私钥从未在任何地方出现过。即使攻击者成功入侵了某个参与方的系统,他们也无法获得完整的私钥,因为这道私钥本质上并未存在于任何地方。
虽然MPC和多签都涉及多方参与,但两者在本质上存在着根本性差异。从外界观察者来看,MPC生成的交易与普通的单签交易无法区分,这为用户提供了更好的隐私。
这种差异还体现在兼容性方面。多签钱包需要区块链网络的原生支持或依赖智能合约,这限制了它们在某些地方的使用。而MPC生成的签名使用标准的ECDSA格式,可以在任何支持这种签名算法的地方使用,包括比特币、以太坊以及各种DeFi平台中。
MPC技术还提供了更大的灵活性来调整安全参数。在传统多签钱包中,改变签名阈值或参与方数量通常需要创建新的钱包地址,这会带来风险。(当然,基于智能合约的多签钱包可以方便的修改参与方及其权限),而在MPC系统中,这些参数的调整可以更灵活更简洁化的完成,不需要改变链上账户和合约代码,为资产管理提供了更大的便利。
然而,MPC虽然比普通多签更优越,但还是存在相应挑战。首先是实现上的复杂性。MPC协议涉及复杂的密码学计算和多方通信,这使得系统的实现和维护更困难。任何bug都可能导致严重的安全漏洞。2025年2月,Nikolaos Makriyannis等人就发现了在MPC钱包内盗取其密钥的方法。
性能开销是另一个难题。MPC协议需要多方之间进行复杂的计算和数据交换,比传统的单签操作消耗更多的计算资源和网络带宽。虽然这种开销在大多数情况下可以接受,但在某些对性能要求极高的场景中可能成为限制因素。此外,MPC系统仍需要各参与方的在线协调来完成签名。虽然这种协调对用户来说是透明的,但在网络连接不稳定或者某些参与方离线的情况下,可能会影响系统的可用性。
此外,MPC仍然无法确保去中心化,2023年的Multichain一案中,21个参与MPC计算的节点均为一人控制,是典型的女巫攻击。此事足以证明,单纯表面上的几十个节点并不能提供较高的去中心化保障。
在多签和MPC技术都已经相对成熟的背景下,DeepSafe团队提出了一个更具前瞻性的解决方案:CRVA(加密随机验证代理)。DeepSafe的创新在于,它不是简单地替代现有的签名技术,而是在现有方案基础上构建了额外的安全验证层。
DeepSafe的核心思想是"双重保险":用户可以继续使用他们熟悉的钱包解决方案,如Safe钱包,当一笔完成了多签的交易被提交到链上后,会自动提交给CRVA网络,进行额外验证,类似于支付宝的2FA多因素验证。
在这种架构中,CRVA充当了守门员,会根据用户预先设置的规则来审核每一笔交易。比如单笔交易的限额、目标地址白名单、交易频率等限制,如果有异常情况随时可以中断交易。
这种2FA多因素验证的优势在于,即使多签过程被操纵(如Bybit事件中的前端钓鱼攻击),作为保险的CRVA仍然可以根据预设规则拒绝风险交易,保护用户的资产安全。
针对传统MPC资管方案的不足,DeepSafe的CRVA方案作出了大量改进。首先,CRVA网络节点采用资产质押的准入形式,达到约500个节点后才会正式启动主网,按照估算,这些节点质押的资产将长期维持在几千万美元或更高;
其次,为了提高MPC/TSS计算的效率,CRVA会通过抽签算法随机抽选节点,比如每隔半小时抽10个节点,由它们作为验证人,验证用户请求是否应通过,然后生成对应的门限签名予以放行。为了防止内部串谋或外部黑客攻击,CRVA的抽签算法采用原创的环状VRF,结合ZK来隐藏被抽中者的身份,让外界无法直接观测被抽选者。
当然,仅做到这种程度还不够,虽然外界不知道有谁被选中,但此时被抽中者本人知道,所以仍然有串谋的路径。为了进一步杜绝串谋,CRVA的所有节点都要把核心代码运行在TEE硬件环境内,相当于把核心工作放在黑箱里进行。这样一来,任何人都无法得知自己是否被抽中,除非他能够破解TEE可信硬件,当然根据目前的技术条件,这极难做到。
上面讲到的是DeepSafe的CRVA方案基本思路,在实际的工作流程中,CRVA网络内的节点间要进行大量的广播通信与信息交换,其具体的流程如下:
1.所有节点在进入CRVA网络前,要先在链上质押资产,留下一个公钥作为注册信息。这个公钥又称为“永久公钥”。
2.每过1小时,CRVA网络会随机挑选几个节点。但在此之前,所有候选人都要在本地生成一次性的“临时公钥”,同时生成ZKP,证明“临时公钥”与链上记录的“永久公钥”有关联;换句话说,每个人都要通过ZK证明自己存在于候选人名单中,但又不透露自己是哪个;
3.“临时公钥”的作用在于隐私保护。如果直接从“永久公钥”集合中抽签,公布结果时,大家会直接知道哪些人当选。如果大家只暴露一次性的“临时公钥”,再从“临时公钥”集合中选出几个人,你最多知道自己中签,但不知道其他中签的临时公钥对应着谁。
4.为了进一步防止身份泄露,CRVA打算让你自己都不知道自己的“临时公钥”是啥。临时公钥的生成过程在节点的TEE环境内完成,运行TEE的你无法看到里面发生了啥。
5.然后在TEE内把临时公钥明文加密为“乱码”后再发给外界,只有特定的Relayer节点可以还原。当然,还原流程也在Relayer节点的TEE环境里完成,Relayer并不知道这些临时公钥对应着哪些候选人。
6.Relayer还原出全部“临时公钥”后,把它们统一归集并提交给链上的VRF函数,从中抽选出中签者,由这些人验证用户前端发来的交易请求,然后根据验证结果生成门限签名,最后再提交至链上。(需要注意,这里的Relayer其实也是隐藏身份且定期抽选的)
可能有人要问,既然每个节点都不知道自己是否被抽中,那工作还怎么进行?其实前面提到,每个人都会在本地TEE环境内生成“临时公钥”,抽签结果出来后,我们直接把名单广播出去,每个人只要把名单传入TEE,在里面核对自己是否被选中即可。
DeepSafe这套方案的核心在于,几乎所有的重要活动都在TEE硬件内进行,从TEE外部无法观测到发生了什么。每一个节点都不知道被选中的验证人有谁,防止了串通作恶,并大幅度增加了外部攻击的成本。要攻击基于DeepSafe的CRVA委员会,理论上要攻击整个CRVA网络,加之每个节点都有TEE保护,攻击难度大幅攀升。
而对于CRVA作恶的情况,由于CRVA是一套自动化运行的节点网络系统,只要其初始启动时的代码中不包含恶意逻辑,就不会出现CRVA主动拒绝配合用户的情况,所以基本可以忽略;
如果CRVA因停电、洪灾等不可抗力导致节点大量停机,根据上述方案中提及的流程,用户依然有办法把资产安全提走。这里面的信任假设就在于,我们信任CRVA足够去中心化,不会主动作恶(理由前面已经充分说明)。
Web3签名技术的发展历程展现了人类在数字安全领域的不懈探索。从最初的单一私钥,到多签钱包,再到MPC,以及CRVA等新兴方案,每一次进步都在为数字资产的安全管理开辟新的可能。
然而,技术的进步并不意味着风险的消除。每一种新技术在解决既有问题的同时,也可能引入新的复杂性和风险点。从Bybit事件中我们看到,即使使用了先进的多签技术,攻击者仍然可以通过社会工程和供应链攻击来绕过技术防护。这提醒我们,技术解决方案必须与良好的操作实践和安全意识相结合。
最终,数字资产安全不仅仅是技术问题,更是一个系统性的挑战。无论是多签还是MPC,或是CRVA,都只是针对潜在风险的尝试性解决方案,随着区块链行业的发展,未来仍需推陈出新,寻找更安全更免信任的出路。