BIP-39 Passphrase: 给助记词再加一道保险

过去一年, 安全事件一波接一波, COLDCARD 只是最新的一起。

7 月底, 一款硬件钱包的固件版本里, 生成助记词时随机数出了问题: 本该用硬件真随机源, 却在特定情况下悄悄回退到很弱的软件随机数。助记词只剩几十 bit 的熵, 攻击者直接推导出私钥, 41 分钟内卷走数千万美元。

看了这么多复盘, 我这一年最大的改变是: 不再无条件信任任何环节。固件可能悄悄回退、随机源可能变弱、供应链可能被投毒、AI 又把攻击门槛拉低了一大截——钱包安全链条上每一环都可能出问题。所以防线不能只有一道, 助记词也绝不能是唯一那道锁。

随机数是硬指标

这次攻击的根源, 不是助记词被偷拍, 而是它可以被重新计算出来

一套 12 词助记词背后是 128 位随机数。128 bit 意味着 2 的 128 次方种可能, 正常情况下穷举到宇宙尽头也试不完。可一旦随机源只剩 40~72 bit 的熵, 攻击者只要知道某台设备那个时间窗口用的是弱随机源, 就能顺着同样的算法, 把生成助记词的过程重演出来。

这个区别很重要: 不是"泄露", 是"可推导"。任何"别告诉别人助记词"的提醒, 在这种情况下都失效了。

Passphrase 一定要加

那有没有一种东西, 即使助记词被完整推导出来, 依然能拦住攻击者?

有, 就是 BIP-39 Passphrase(助记词口令, 俗称"第 13 词", 24 词助记词则是第 25 词)。它是一串自己定义的字符串, 和助记词一起参与密钥推导:

关键在于: 助记词和 Passphrase 是两份互相独立的信息。这次攻击里, 攻击者手里有的是"重新计算出来的助记词", 而不是口令。不知道 Passphrase, 推导不出私钥。

所以这次事件里, 凡是设置了强口令的受害者, 钱是保住的。 它不修复随机数本身, 但让"拿到助记词"从充分条件变成了必要条件之一。这就是为什么——在固件、随机数、供应链都可能不可信的今年——passphrase 不是可选项, 是必选项。

一定要和助记词分开存放

这里必须单独强调: passphrase 如果和助记词放在一起, 就等于没加。

同一张纸、同一个截图、同一个云盘——两道防线架在同一个阵地上, 攻击者拿到助记词的同时就拿到了口令。分开存放指的是: 助记词一份介质, 口令另一份介质, 最好再换个地方。这样即使其中一份被拿到, 另一份还在自己手里。

passphrase 的代价, 也要讲清楚

它是把双刃剑, 三个代价必须接受:

  • 忘了就是永别。助记词丢了还有可能靠规律硬推, passphrase 忘了基本没有恢复手段。
  • 输错没有任何提示。它没有校验位, 打错一个字符, 打开的就是另一张空钱包, 而且完全不报错。
  • 弱口令等于白设。如果口令是常见词, 攻击者拿着助记词离线硬试也能破解——口令必须够长、够随机, 最好用密码管理器生成。

自己保护自己

这一年教会我的不是"哪家钱包更安全", 而是"只能自己保护自己"。固件会有缺陷、厂商也可能犯错、AI 还在让攻击变得更容易——这些都不是我们能控制的。我们能控制的, 只有给自己多留几层。

现在花两分钟: 给钱包加上 passphrase, 找另一个地方单独存好。助记词之外多这一道锁, 是今年成本最低的一道保险。

文章链接:

https://time-friend.com/zh/archive/bip39-passphrase-coldcard-entropy-failure/

# 相关文章推荐