BIP-39 密码短语(第25个词):高级钱包安全
BIP-39 密码短语(passphrase)通常被称为“第25个词”,它是加密货币钱包中最强大但也最容易被误解的安全功能之一。它会在种子派生过程中加入一段由用户选择的字符串,使同一组助记词生成完全不同的一组密钥和地址。正确使用时,它可在助记词泄露场景下提供纵深防御;使用不当时,则可能导致资金永久丢失。
本指南将准确说明密码短语的工作原理、何时使用、会引入哪些风险,以及如何安全实施。
密码短语如何工作
技术机制
如 BIP-39 标准 所述,种子派生过程使用 PBKDF2-HMAC-SHA512:
Seed = PBKDF2(
password = mnemonic_words,
salt = "mnemonic" + passphrase,
iterations = 2048,
key_length = 512 bits
)
当未设置密码短语时,salt 仅为字符串 "mnemonic"。当提供密码短语时,它会被拼接到 salt:"mnemonic" + "YourPassphrase"。由于 salt 不同,PBKDF2 输出会完全不同,从而生成完全不同的主密钥,进而得到完全不同的派生路径、私钥、公钥与地址。
关键特性
任何密码短语都有效。 密码短语没有校验和或验证机制。任何字符串(包括空字符串、单个字符或 500 字符的句子)都会生成一个有效钱包。输入错误密码短语不会报错;它只会静默打开另一个(通常为空的)钱包。
同一助记词,不同钱包。 24 词助记词配合密码短语 "alpha" 生成的钱包,与同一助记词配合 "bravo" 生成的钱包完全不同。攻击者无法检测这两个钱包之间的任何密码学关系。
大小写与编码都重要。 "MyPassphrase" 与 "mypassphrase" 会生成不同钱包。带尾随空格的密码短语与不带空格的也不同。密码短语在哈希前会做 UTF-8 NFKD 归一化,但除此之外必须精确字符匹配。
为什么要使用密码短语
防止助记词被盗
如果攻击者窃取了你的 24 词助记词(来自纸质备份、金属板或被攻陷设备),他们可以访问钱包中的全部资金,除非你设置了密码短语。没有密码短语时,他们只能看到“基础”钱包(由空密码短语派生)。你真正的资金位于受密码短语保护的钱包中,仍无法被访问。
这会将你的安全模型从单因子(你持有的东西:助记词)升级为双因子(你持有的东西:助记词 + 你知道的东西:密码短语)。
合理否认(Plausible Deniability)
由于每个密码短语都会生成有效钱包,你可以基于同一助记词维护多个钱包:
- 无密码短语:放少量资金的诱饵钱包。
- 密码短语
"alpha":存放主要资产的主钱包。 - 密码短语
"bravo":用于额外防护的次级钱包。
如果你被胁迫交出助记词(所谓“$5 扳手攻击”),你可以只提供助记词而不提供密码短语。攻击者会看到一个真实且有少量资金的钱包,但无法知道是否还存在其他受密码短语保护的钱包,可能会满足于他们看到的内容。
这通常被称为“胁迫钱包”或“隐藏钱包”策略。
防止硬件被攻陷
如果硬件钱包存在供应链漏洞(例如随机数发生器后门),攻击者可能已知设备生成的助记词。若用户选择的密码短语从未在硬件钱包中输入或生成,就会增加攻击者未知的熵。
如何设置密码短语
硬件钱包
大多数主流硬件钱包都支持 BIP-39 密码短语:
Ledger:
- 在 Ledger Live 中进入 Settings。
- 在 Advanced settings 下启用 “Passphrase”。
- 有两种模式:“Attached to PIN”(为方便在设备上保存哈希)和 “Temporary”(每次都需输入)。
- 选择并确认你的密码短语。
Trezor:
- 在 Trezor Suite 中启用密码短语功能。
- 每次连接时,Trezor 都会提示输入密码短语。
- 你可以输入任意密码短语,不会保存确认信息。
Coldcard:
- 在菜单中进入 Passphrase。
- 在设备上输入密码短语。
- Coldcard 会显示派生出的首个地址,请核对是否符合预期。
软件钱包
支持 BIP-39 密码短语的软件钱包通常会在初始设置或导入助记词时提供选项。请在设置流程中查找 “Advanced options”、“Optional passphrase” 或 “25th word”。
选择高强度密码短语
如果助记词泄露,密码短语应具有足够熵来抵御暴力破解:
| 密码短语类型 | 近似熵 | 暴力破解所需时间(ASIC) |
|---|---|---|
| 常见英文单词 | ~10 bits | 几秒 |
| 随机 4 词短语 | ~50 bits | 数年 |
| 随机 6 词短语 | ~75 bits | 数百万年 |
| 20+ 随机字符 | ~120+ bits | 直到宇宙热寂 |
建议:
- 至少使用 4-6 个随机词,或 16+ 个随机字符。
- 不要使用个人信息(姓名、生日、常见短语)。
- 不要使用单个词典词。
- 考虑使用密码短语生成器(如
diceware),而非自行编造。
密码短语备份策略
密码短语现在是恢复机密的一部分。如果你丢失助记词或密码短语中的任意一个,就会失去资金访问权。这带来了备份挑战:你需要同时保存二者,但把二者放在一起又会失去安全意义。
策略 1:分离存储位置
- 将助记词存放在地点 A(例如家中的防火保险箱)。
- 将密码短语存放在地点 B(例如银行保管箱)。
- 攻击者必须同时攻破两个地点。
策略 2:记忆 + 实体备份
- 记住密码短语。
- 将密码短语的加密备份保存在与助记词不同的位置。
- 若你失去行为能力,加密备份可确保继承人恢复资金。
策略 3:对密码短语使用 Shamir's Secret Sharing
- 使用 Shamir's Secret Sharing 将密码短语拆分为多个份额。
- 将份额分发给多个可信方。
- 需要 M-of-N 份额才能重构。
不要这样做
- 不要把密码短语和助记词放在一起。 这会完全消除安全收益。
- 不要只依赖记忆。 尤其在多年或数十年后,记忆并不可靠。
- 不要使用你无法稳定复现的密码短语。 大小写、空白与精确字符都很关键。
- 不要将密码短语存入同时也保存助记词的密码管理器。
风险与陷阱
风险 1:忘记密码短语导致永久丢币
这是使用密码短语的最大风险。不同于带校验和的助记词,密码短语没有机制验证“是否正确”。若你忘记它、哪怕记错一个字符,或引入隐藏字符(尾随空格、错误 Unicode 归一化),你都会打开另一个空钱包,资金将永久不可访问。
缓解措施: 在转入资金前充分测试密码短语。先完成钱包设置,核对首个收款地址,转入小额资金,再在另一台设备用“助记词 + 密码短语”恢复,并确认可访问资金。
风险 2:输入密码短语时被键盘记录
密码短语总要在某个时刻输入钱包。在软件钱包中,这意味着在电脑上输入,可能被键盘记录器或屏幕录制工具窃取。在支持设备端输入的硬件钱包(Coldcard、Trezor)上,密码短语在设备屏幕输入,安全性显著更高。
缓解措施: 仅在支持设备端输入的硬件钱包上输入密码短语,或在隔离网络的电脑上输入。
风险 3:继承复杂性上升
使用密码短语会增加继承规划复杂度。你的继承人需要:
- 助记词。
- 密码短语。
- 知道密码短语存在且必须使用。
- 如何使用它的说明。
如果缺少任何一项,继承都会失败。请参考我们的助记词指南,其中包含考虑密码短语的继承规划策略。
风险 4:错误的安全感
弱密码短语(单个常见词、生日、宠物名)在攻击者已获得助记词时可被暴力破解。攻击者拥有助记词和 GPU 集群后,可以针对已知 PBKDF2 函数测试数十亿个候选密码短语。请使用高强度、随机生成的密码短语。
风险 5:设置时输入错误(拼写错误)
如果你设置钱包时密码短语有未注意到的拼写错误,钱包仍会正常工作,你也能正常收款与转账。但下次你用助记词恢复并输入“无错版本”(或另一种错误)时,会得到不同钱包。你的资金就被“困”在那个错误拼写后面了。
缓解措施: 设置完成后,立即在另一台设备上用“助记词 + 密码短语”恢复钱包,验证出现的是完全相同的地址。
“第25个词”的误解
“第25个词”这个说法是简化表达,可能会误导:
- 密码短语不局限于 BIP-39 词表词汇。它可以是任意 UTF-8 字符串。
- 密码短语不会被编码成额外助记词,它是 PBKDF2 salt 的一部分。
- 密码短语没有校验和;而助记词第 24 个词包含校验位。
- 12 词助记词同样可以使用密码短语;按这个逻辑它应是“第13个词”,但“第25个词”只是泛称。
技术上更准确的术语是 “BIP-39 passphrase” 或 “mnemonic passphrase”。
使用 SafeSeed Key Derivation Tool 查看同一助记词在不同密码短语下如何生成完全不同的地址。输入一组测试助记词,分别在有/无密码短语情况下观察效果。所有计算都在浏览器内完成,不会传输任何数据。
密码短语 vs. 钱包 PIN vs. 密码
这三者经常被混淆:
| 功能 | BIP-39 密码短语 | 钱包 PIN | 钱包密码 |
|---|---|---|---|
| 保护对象 | 种子派生 | 设备访问 | 应用访问 |
| 存储位置 | 不存储(你自行记忆) | 设备上 | 设备/服务器上 |
| 是否可更改 | 否(会创建新钱包) | 是 | 是 |
| 忘记后果 | 资金不可访问 | 重置设备并从种子恢复 | 可重置密码 |
| 暴力破解目标 | 带种子的 PBKDF2 | 设备锁定机制 | 取决于实现 |
| 作用范围 | 该种子下的全部钱包 | 单台设备 | 单个应用 |
密码短语本质上不同,因为它会改变派生出来的密钥。PIN 或密码只是控制对设备上已存在密钥的访问。
高级用例
多个隐藏钱包
高级用户可以基于同一助记词维护多个钱包:
- 空密码短语:小额资金(诱饵)
- 密码短语 A:主要储蓄
- 密码短语 B:交易资金
- 密码短语 C:应急储备
每个钱包都完全独立,链上不存在可见关联。需要记忆和备份的密码短语越多,风险也随之上升。
与多签结合
对机构级或超高价值存储,可将 BIP-39 密码短语与多重签名结合:
- 每位签名者的密钥都由“助记词 + 唯一密码短语”派生。
- 攻击者必须获取多个助记词以及对应的密码短语。
- 这提供了多层彼此独立的安全防护。
FAQ
什么是 BIP-39 密码短语或“第25个词”?
BIP-39 密码短语是用户可选的一段字符串,会加入种子派生过程(PBKDF2 salt)。启用后,同一助记词会生成完全不同的一组密钥和地址。它常被称为“第25个词”,但它可以是任意文本字符串,不必是 BIP-39 词汇。
我可以更改密码短语吗?
不能像普通密码那样直接“修改”。由于密码短语决定派生出的密钥,更改密码短语就等于打开一个地址完全不同的新钱包。若要“更改”,你必须用新密码短语创建新钱包,并把旧密码短语钱包中的全部资金转移过去。
如果我忘记密码短语会怎样?
你的资金会永久不可访问。没有恢复机制、没有重置选项,也无法暴力破解高强度密码短语。这就是为什么必须妥善备份密码短语。
密码短语会存储在我的硬件钱包上吗?
某些硬件钱包提供将密码短语关联到次级 PIN 的选项(如 Ledger 的 “Attached to PIN” 模式)。此时设备会保存提示信息或哈希以方便使用。不过,更标准的方式是 “temporary” 模式:每次都需输入密码短语,且设备不存储任何内容。
每个钱包都支持 BIP-39 密码短语吗?
多数兼容 BIP-39 的钱包支持该功能,但有些不会在界面中暴露选项。请查看钱包文档。主流硬件钱包(Ledger、Trezor、Coldcard)都支持。
攻击者能知道我是否使用了密码短语吗?
不能。因为默认的空密码短语也会生成有效钱包,仅凭助记词无法判断是否存在额外受密码短语保护的钱包。即使攻击者拿到助记词并在基础钱包中看到资金,他们也无法确认是否还有受密码短语保护的钱包。
密码短语区分大小写吗?
是的。"MyPassphrase"、"mypassphrase" 和 "MYPASSPHRASE" 会生成不同钱包。空白字符也有区别,"my pass" 与 "mypass" 不同。记录密码短语时务必极其精确。
12 词助记词也能用密码短语吗?
可以。密码短语功能适用于任何 BIP-39 助记词长度(12、15、18、21 或 24 词)。无论助记词长度如何,PBKDF2 过程都相同。