多重签名与密钥管理

多重签名与密钥管理:消除「单一密钥」这一单点故障

分布式系统的安全,最终都归结到「如何守护私钥」。为摆脱一把钥匙的丢失或被盗即让一切化为乌有的结构,多重签名与门限密码技术应运而生。

所有者(签名者)Safe 合约门限:2-of-32 个签名即执行

2-of-3 的合约型多重签名。资产由合约持有,只有集齐门限数量签名的交易才会执行。

多重签名(M-of-N)的原理与实例

多重签名(multisignature)是指对转移资产或重要操作要求「N 个密钥持有者中至少 M 人的签名」的机制。例如在 2-of-3 的钱包中,三把钥匙中任意两把不齐就无法转账。一把钥匙被盗,资产也动不了;丢了一把,凭剩下两把即可恢复。能同时提升抗盗与抗丢正是其本质价值。

典型的 2-of-3 密钥分布方式是:第一把放在日常使用的手机钱包 App 中,第二把存放在家中保险柜里的硬件钱包中,第三把寄存在银行保险箱或律师等可信第三方处。日常转账只需手边这一把,再加上临时取出的另一把即可完成签名。由于三把钥匙从不集中在同一处,入室盗窃、设备丢失这类单一事故便不会让全部资产一并蒸发。

  • 个人·企业的钱包保护:把私钥分存于家中、保险柜、可信第三方等处,杜绝单一地点被攻破就丢失资产的风险。也用于交易所和托管方的内控(多岗位审批)。
  • 托管(第三方保管):由买方、卖方、仲裁者组成 2-of-3,交易顺利时凭当事双方签名结算,仅在起争议时由仲裁者站到一方以解决。仲裁者单独绝不能触碰资金。

比特币中的多重签名实现:P2SH 与 P2WSH

比特币的多重签名依靠 OP_CHECKMULTISIG 这一脚本操作码实现。早期做法是把「N 个公钥与 M-of-N 条件」原样写进收款脚本,但脚本越长手续费越高,且收款前对方就需要知晓复杂的花费条件。2012 年引入的 P2SH(Pay-to-Script-Hash,BIP16)解决了这一问题:无需公开实际的条件(redeem script),只把其哈希值作为地址(以 3 开头)公开,只有在花费资金时才出示具体条件。

SegWit 之后,P2WSH(Pay-to-Witness-Script-Hash)成为主流。把 redeem script 与签名数据分离到名为 witness 的独立区域后,在区块大小的计费方式上获得「折扣」,从而降低手续费,其地址以 bc1q 开头。2021 年 Taproot 上线后,借助 MuSig2 等密钥聚合协议,多个签名者协作产生的结果在链上看起来只是一次单签名,手续费与隐私性得以同时改善。

以太坊的智能合约钱包

在以太坊等支持智能合约的链上,把多重签名实现为合约(程序)的做法是主流。以其代表 Gnosis Safe(现 Safe)为例,资产由合约的地址持有,合约内记录着「所有者名单」和「门限 M」。针对转账等交易提议,所有者们收集签名,达到门限后由任何人提交执行交易,合约验证签名通过后资产才会动。

身为程序的强项在于灵活性:所有者的增删、门限的变更、单日转账上限、对特定操作的时间锁(timelock)、紧急停止乃至继承机制,都能把运营策略写进代码。另一面,历史也表明合约本身的漏洞会成为新的风险(2017 年的 Parity 钱包事故冻结了数十万 ETH),因此使用经过审计、久经考验的实现是铁律。详见智能合约

门限签名(TSS/MPC)与链上多重签名的对比

有两种技术常与多重签名混淆:门限签名和秘密分享。三者都具有「M-of-N」的性质,但机制和特性大相径庭。

  • 多重签名:N 方各持独立密钥,M 个签名原样以多份记录到链上。构成透明、易于审计,但签名数据较大,且谁签了名是公开的。
  • 门限签名(TSS:Threshold Signature Scheme)/MPC(多方计算):把一个私钥以数学「分片(share)」的形式分散生成,在完整密钥不在任何地方被重构的前提下,由 M 方协同计算出单个签名。从外部看只是一笔普通的单签名交易,因而在手续费和匿名性上更有利,但协议复杂,实现的可靠性备受考验。
  • Shamir 秘密分享(SSS):把秘密(密钥或口令)嵌入多项式并分成 N 个分片,集齐其中 M 个即可还原出秘密本身的经典手法。它擅长备份,但在还原的瞬间完整密钥会出现在一处,不适合每次签名都使用的运营方式。
维度链上多重签名TSS · MPC
实现位置以合约或脚本的形式存在于链上签名生成是链下的协同计算,链上只记录一次普通签名
链适配每条链都需要专门实现(如 Safe)只要签名算法一致,密钥管理便可较容易地做到与具体链无关
可审计性所有者构成与门限任何人都能在链上验证密钥构成隐藏在协议内部,外部验证手段有限
手续费·隐私签名数据较大,签名者数量是公开的手续费与外观都与单签名无异,签名者匿名性更强

DAO 金库管理实例

去中心化自治组织(DAO)的资金运作,是多重签名规模最大的实际应用领域之一。许多大型 DAO 都以社区投票选出的多名签名者组成的 Safe 多重签名,作为资金执行的最后一道防线。Uniswap、ENS、Gitcoin 等知名 DAO,都是通过由基金会或社区掌管的 Safe 来管理金库资金的,以此防止单一管理者卷款潜逃,或某一签名者密钥泄露就导致资金外流。

  • 链上投票 + 多重签名执行的两段式流程:提案先由治理代币投票通过,实际转账则由选出的签名者们的多重签名来执行,同时防范投票结果被篡改与签名者独断专行。
  • 与时间锁结合:在集齐门限签名之后再设置数天左右的延迟才允许执行,即便恶意提案侥幸通过,也能为社区争取到提出异议、采取应对措施的时间。
  • 资金分层:把用于日常小额支出的热钱包,与保管大部分资产、门限更高的 Safe(冷金库)分开,按需逐次转移所需金额,是常见做法。

密钥管理的最佳实践与社交找回

即便组建了多重签名,若每把密钥本身管理松散,一切也无从谈起。实务中已形成以下几项常见做法。

  • 签名者与保管地点的地理分散:不把密钥都集中在同一栋建筑或同一云服务商,避免因火灾、自然灾害或单一服务商故障而一并丢失。
  • 使用硬件钱包:在不联网的专用设备内生成并保管私钥,防止被恶意软件窃取。
  • 定期演练签名流程:用不实际转移资金的小额测试转账,定期确认所有签名者都能按流程正确操作;签名者调岗或离职时,也别忘了及时吊销并更换密钥。
  • 签名者任期制与轮换:为避免权力固化在特定个人身上,DAO 等组织通常会通过定期选举来轮换签名者。

在面向个人的钱包中,社交找回钱包(Social Recovery Wallet)这一方案也在逐渐普及。只要预先指定的多位监护人(可信的朋友、另一台设备、专业服务商等)中达到一定数量批准,即可在没有助记词的情况下重新取得钱包的访问权。就机制而言,它与多重签名同样采用「M-of-N」批准的思路,也是钱包一端对DID一节所提到的「密钥丢失后如何找回」问题给出的一种答案。

密钥管理既是「技术问题」,也是「运营问题」。多重签名、TSS、秘密分享,都是把消除单点故障这一 P2P 式思想,带入价值与权限管理之中的产物。

返回首页