
助记词、私钥、xpub:它们各自究竟能做什么
加密钱包会交给你好几种看起来像秘密的材料,而它们的危险程度并不相同。有些能花掉你拥有的一切。有些只能看。有些单独拿出来,两样都做不到。
大多数安全失误,都源于把它们当成可以互换的东西——把一串无害的字符当宝贝守着,或者把一串危险的字符粘贴进一个客客气气开口要的网站。解药是确切知道每一种能做什么。
助记词:一切,永远
你的助记词——那 12 或 24 个单词——是根。钱包据此确定性地推导出它将来会用到的每一条链、每一个账户的每一把私钥。
这使它成为你手里最有权力的东西。任何拿到这些单词的人,都能在自己的设备上重建你的钱包,并花掉它控制的每一枚币,今天或者十年后都行。它上面没有密码,没有第二重验证,也没有哪个客服能把事情撤回。
这也意味着,助记词是你恢复所需的唯一东西。丢了所有设备、但留着这些单词,你就什么都没丢。恢复一个钱包真正需要什么,归结起来就是这一张纸——而正因如此,它绝不能被输入到钱包本身以外的任何地方。
规则:任何正当的一方都不会向你索要助记词。客服不会,「同步」工具不会,验证表单也不会。
私钥:一把钥匙开一把锁
私钥由助记词推导而来,控制某一个具体地址,在某些方案里则控制一个账户。真正生成签名的就是它。
泄露单独一把私钥,损失的是这把钥匙所控制的部分,不一定是全部。这比助记词泄露范围更窄,但对那部分资金而言仍是全损——而且很多钱包允许按地址导出私钥,粗心的导出正是单个地址被掏空的常见途径。
你几乎永远不需要直接接触私钥。如果某个工具要你粘贴一把私钥,就像对待索要助记词那样去怀疑它。
扩展公钥:什么都看得见,什么都花不了
扩展公钥,也就是 xpub,是在账户层级由助记词推导出来的。它能生成该账户的每一个公开地址——但生成不了任何私钥。
所以 xpub 一枚币都挪不动。它能做的是看:看到这个账户用过或将来会用的每个地址,进而看到账户的全部余额和交易历史。把 xpub 交给别人,就是给他开了一扇永久通向该账户的窗,这也是为什么即便它对你的资金无害,它对链上隐私依然要紧。
值得记住的区别,全在这一句:
助记词和私钥能花钱。xpub 只能观看。
只读工具、记账软件和资产追踪器会正当地使用 xpub。合理地索要 xpub 并不是危险信号。索要助记词或私钥则永远是。
多重签名在哪里改变了这笔账
以上描述的都是单钥钱包。多重签名改变了单个秘密的分量。
在 SSP 中,你的资金放在一个二取二多重签名里:一把密钥在浏览器扩展里,一把在手机上,各自由自己的助记词推导而来。花钱需要两者都签名。所以单独一个泄露的助记词本身挪不动你的资金——攻击者仍然缺另一台设备的密钥。这正是二取二多重签名换来的真正保护:没有哪一个秘密是万能钥匙。
它不会让泄露的助记词变得无害。它把一次瞬间的损失,变成一个你还来得及应对的警告——而正确的应对仍然是把那个助记词视作作废,把资金转到一套全新的配置里。
多重签名下 xpub 的道理也一样。SSP 沿着 BIP-48 路径推导地址,m/48'/coin'/account'/script_type'/change/index,每台设备都持有另一方的 xpub,以便构造共同的地址。这些 xpub 让双方都能看到账户;没有一个能让任何人花钱。
一张实用速查表
助记词。 能花掉一切,而且永远有效。离线保存,除了钱包本身不要在任何地方输入,任何理由都不要与任何人分享。
私钥。 能花掉它所控制的部分。除非你确切知道原因,否则不要导出;绝不要粘贴到网站里。
xpub。 什么都花不了,但会暴露账户里的一切。只分享给你愿意托付全部历史的工具。
地址。 本来就是公开的。尽管分享——别人就是靠它给你打款——但要记得,重复使用同一个地址会把你的各笔收款串联起来。
已签名的交易和消息。 针对某个具体操作的一次性授权。用过之后就无害,只有在你签了自己没读过的东西时才危险。
唯一要问的问题
每当有东西向你索要钱包材料,就问一句:这东西能花钱,还是只能观看?
如果它能花钱,对于分享的回答就是不,而这个请求本身已经告诉你对方是谁。如果它只能观看,问题就变成你是否愿意让对方看到那个账户里的一切。自主保管中几乎所有本可避免的损失,都来自把这第一个问题答错了。


