
如果你曾经持有过加密货币,你几乎肯定听过同样的警告:"保护好你的助记词。"十二或二十四个写在纸上的单词,任何拿到它们的人都可以在世界任何地方掏空你的钱包。那一串单词就是大多数自托管钱包背后的整个安全模型——而这正是问题所在。丢失它,你的资金就没了。让别人复制它,你的资金也没了。一次错误、一刻分神、一个令人信服的钓鱼网站,结果都是一样的。
2-of-2 多重签名是应对这种脆弱性最易上手的答案。它将钱包的密钥分散到两台设备上,使得任何单一的助记词、屏幕或签名都无法独自转移你的币。本文将解释它如何运作、为什么重要,以及它能够阻止和无法阻止哪些攻击。
单一助记词失效模式
大多数加密货币钱包——无论是运行在你的手机上、浏览器扩展中,还是硬件设备上——都围绕一个秘密构建。这个秘密就是一组助记词:你首次设置钱包时生成的一串单词,该钱包中的每一个私钥都从中以数学方式派生出来。任何拥有这组助记词的人,就对该钱包中、它所覆盖的每一条区块链上的每一枚币拥有完全的、不可撤销的控制权。
这非常方便。但它同时也是一个单点故障。
想想这个秘密在你打算持币的这些年里需要经受多少考验。它必须经受小偷闯入你家、在抽屉里找到那张纸条。它必须经受火灾、洪水或好奇的小孩。它必须经受你的笔记本电脑感染那些扫描剪贴板和截图的恶意软件。它必须经受每一封钓鱼邮件、每一个伪造的浏览器弹窗、每一个让你把单词输入"验证"表单的"客服"电话。它必须经受你自己未来的失误——那些今天你无法预测的失误。
2022 年,FBI 估计仅美国消费者就因加密货币相关的盗窃和欺诈损失了超过 25 亿美元,而其中绝大多数损失都可以追溯到一个被攻陷的秘密。Mt. Gox、Bitfinex、Ronin 跨链桥——每一起家喻户晓的加密灾难都是同样的形式:一个秘密、一次入侵、一笔无法逆转的转账。
2-of-2 配置说的是:我的币不应该只因为一张被偷走的便条就消失。
简述 M-of-N 多重签名
多重签名(英文 "multi-signature" 的简称)是一种需要多于一个签名才能发起交易的钱包。一般形式称为 M-of-N:总共有 N 个密钥,其中任意 M 个必须签名,币才能被转移。
<span id="signer"></span>签名者是持有这 N 个密钥之一的设备或参与方。在实践中,签名者通常是一个独立的硬件或软件:你的手机、桌上的硬件钱包、一台笔记本电脑、一个协同签名服务,甚至一位可信赖的朋友。重要的特性是签名者之间彼此独立——攻陷其中一个,不应该让攻击者获得对其他任何一个的访问权。
<span id="threshold"></span>阈值(M)是花费所需的签名数量。如果阈值为 2,则 N 个签名者中必须有两个分别批准并以密码学方式签名,区块链才会接受该交易为有效。一个 2-of-3 钱包有三个签名者,任意两个即可。一个 3-of-5 钱包有五个签名者,任意三个即可。阈值在你创建钱包时就固定下来,由区块链本身强制执行,而不是由任何公司。
阈值和签名者数量共同定义了钱包的安全模型:你要花费需要多少事情同时正确,以及小偷要花费需要多少事情同时出错。
2-of-2 这一具体模型
<span id="2-of-2"></span>在 2-of-2 多重签名中,阈值等于签名者总数:恰好有两个密钥,且每次花费都必须由两者签名。没有备用、没有备份签名者、也没有可以退而求其次的法定人数。要么两台设备都批准一笔交易,要么这笔交易就不会发生。
这是仍能提供有意义保护的最简单的多重签名配置。与 2-of-3 相比,它更容易设置——你只需管理两个签名者而不是三个——而且不需要选择第三方或地点来存放备用密钥。代价是 2-of-2 没有内置的恢复路径:如果两个签名者之一被永久丢失或损毁,你将再也无法从该地址花费币。2-of-2 的恢复通过分别备份每个签名者的助记词来处理,通常使用与设备本身分开存放的密封纸质或钢制备份。
对于自托管用户来说,最常见的 2-of-2 搭配是"手机加硬件密钥"或"手机加第二台密封设备"。每一次,用户都在两者上签名。
钱包如何找到自己的地址:BIP48
<span id="bip48"></span>BIP48——Bitcoin Improvement Proposal 48——是告诉多重签名钱包如何从每个签名者的助记词派生公钥和地址的技术标准,而且方式在不同软件供应商之间是可移植的。正因为有它,一个在某个应用中创建的 2-of-2 钱包,多年后可以在另一个兼容的应用中重新打开、审计或恢复。
简化版本是:每个签名者的助记词都按照一条确定性路径被转换为密钥的层级结构。BIP48 规定了多重签名钱包的精确路径——包括记录该钱包是使用 legacy 地址、SegWit 还是 native SegWit 的位置——以及助记词内使用哪个"账户"的位置。当两个签名者各自沿着相同的 BIP48 路径派生其公钥时,钱包会将这两个公钥组合成一个多重签名地址。发送到该地址的币只能由两个原始助记词共同签名解锁。
这个标准为什么重要?因为没有它,多重签名钱包就是一个黑盒。如果供应商消失,你将拥有两组助记词,却没有可移植的方式来重建它们所保护的地址。BIP48 让地址纯粹是助记词和路径的函数——任何掌握该标准和助记词的人都可以永久地重建钱包,而无需信任任何公司。
以太坊和 EVM 链使用不同的机制(智能合约钱包和 ERC-4337),但用户可见的模型是相同的:两个签名者、一个地址,两者都必需。
2-of-2 实际能阻止什么
最清楚地看到 2-of-2 价值的方法是逐一审视具体的攻击,并问:当攻击者必须攻陷两个独立设备而不是一个时,情况会怎样变化?
钓鱼。 用户点击一个看上去可信的"钱包迁移"链接,把自己的某组助记词输入到一个伪造的页面上。在单助记词钱包中,资金会在几分钟内消失——攻击者导入助记词并广播一笔转账。而在 2-of-2 中,攻击者此时只持有钱包的一半。他们无法转移任何一枚币,除非也偷到第二组助记词,而那组助记词存放在用户从未在钓鱼页面上输入过的另一台设备上。钓鱼尝试从灾难性变成了仅仅令人警觉。
手机或笔记本上的恶意软件。 一段劫持剪贴板的恶意软件或信息窃取器攻陷了一台签名设备。在单密钥钱包中,只要该设备一发起任何交易,恶意软件就可以替换目标地址,而用户会亲手签名。在 2-of-2 中,第二台设备会在恶意软件无法控制的屏幕上向用户显示真实、未被篡改的交易详情。用户看到不一致,拒绝协同签名。
设备丢失。 用户的手机在火车上被偷。在仅由 PIN 保护的单签名热钱包中,坚定的攻击者可以在几小时内提取助记词。在 2-of-2 中,丢失的手机只是两个签名者之一——单独无用。用户有时间使用另一个仍然在手的签名者加上手机助记词的备份,把资金转移到新地址。
胁迫("5 美元扳手攻击")。 有人凭借物理接触强迫用户交出助记词。使用单一助记词时,屈服意味着全部损失。在 2-of-2 中,如果两个签名者分别存放在不同的物理位置——例如一个在家,一个在银行保险箱,或一个由可信的协同签名服务持有——用户就当真无法当场完成转账。攻击者得不到使这类攻击值得发动的即时回报。
在每一种情况下,基本原则都相同:同一个短时间窗口内发生两次独立的攻陷,远比一次困难得多。
2-of-2 无法防御什么
多重签名不是魔法。它无法防止你故意签署一笔恶意交易——如果两台设备都显示同样错误的目标地址,而你仍然批准,区块链无从得知。它无法防止你在同一场火灾或洪水中丢失两份备份,这就是为什么两份备份应该存放在物理上分开的地方。它无法防止钱包软件本身的 bug,不过这些钱包基于 BIP48 的开源、可移植性质,意味着这类 bug 可以被审计并被绕过,而封闭的托管系统则做不到。它也无法防止用户自己在足够有说服力的骗局面前,自愿地在两台设备上签字交出自己的币。阈值抬高了门槛,但并未把用户从决策回路中排除。
亲自试一试
理解 2-of-2 多重签名最有用的方法,是亲手搭建一个,并看着一笔真实的交易在广播前需要两次批准。SSP Wallet 从一开始就完全围绕这个模型设计——你的手机和你的浏览器作为两个签名者,背后并没有隐藏的单一助记词模式。
设置你的第一个 SSP 钱包将一步步带你完成配对、备份和第一笔签名交易。


