跳到主要内容

BIP39 passphrase(密码短语)

BIP39 passphrase(密码短语,有时也被称为“第 25 个单词”)是混入种子的一个可选的额外机密。同一组助记词搭配不同的 passphrase,会得到完全不同的钱包:主指纹、xpub 和地址都不同。

BitTool Signer 在创建和导入钱包时都支持它:打开 BIP39 passphrase,输入两次即可。它与助记词一起保存在加密的保险库中,因此用户签名时无需再次输入。

两个机密,两份备份

仅凭助记词无法恢复设置了 passphrase 的钱包。App 在每个备份界面都会说明这一点,而且所有备份形式(单词、二维码、恢复卡片)都不包含 passphrase。passphrase 也不是钱包密码:钱包密码只用于加密这部手机上的保险库。

passphrase 如何参与种子计算​

seed = PBKDF2-HMAC-SHA512(password = NFKD(phrase), salt = NFKD("mnemonic" + passphrase), 2048 iterations, 64 bytes)
  • passphrase 按照 BIP39 的要求使用 Unicode NFKD 进行规范化。这对包含重音符号、全角字符或 CJK 兼容字符的 passphrase 很重要:跳过规范化的钱包会从同样的文本派生出不同的种子。
  • 除此之外,它严格按输入原样使用:不做裁剪,也不做大小写转换。末尾的空格同样是 passphrase 的一部分。
  • 空的 passphrase 表示“没有 passphrase”。如果打开了该选项,passphrase 就不能为空,并且两次输入必须一致。
  • 最多 1,024 字节(UTF-8)。

该实现已通过已发布的 BIP39 向量以及官方日文向量的验证,后者包含一个带兼容字符的 passphrase。

示例​

公开测试助记词在不带 passphrase 和带 passphrase TREZOR(已发布的 BIP39 测试向量所用的 passphrase)时的对比:

无 passphrasepassphrase TREZOR
主指纹73c5da0ab4e3f5ed
Bitcoin m/84'/0'/0'/0/0bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyubc1qv5rmq0kt9yz3pm36wvzct7p3x6mtgehjul0feu
EVM m/44'/60'/0'/0/00x9858EfFD232B4033E47d90003D41EC34EcaEda940x9c32F71D4DB8Fb9e1A58B0a80dF79935e7256FA6
TRON m/44'/195'/0'/0/0TUEZSdKsoDHQMeZwihtdoBiN46zxhGWYdHTAyDUYP5rcf56xFwrg8cU1qQwvnWpkeapM
Solana m/44'/501'/0'/0'HAgk14JpMQLgt6rVgv7cBQFJWFto5Dqxi472uT3DKpqk7zSmbu6gKkb6HB7UDPtHYjwCWuBHU1D4TpNZFm4sndQe
64 字节种子
种子,无 passphrase
5eb00bbddcf069084889a8ab9155568165f5c453ccb85e70811aaed6f6da5fc19a5ac40b389cd370d086206dec8aa6c43daea6690f20ad3d8d48b2d2ce9e38e4
种子,passphrase TREZOR
c55257c360c07c72029aebc1b53c05ed0362ada38ead3e3e9efa3708e53495531f09a6987599d18264c1e1c92f2cf141630c7a3c4ab7c81b2f001698e7463b04

对你的钱包意味着什么​

没有什么特别之处:passphrase 从不离开 BitTool Signer。带 passphrase 的钱包只是使用它自己的主指纹和 xpub 进行配对,其签名请求必须携带该指纹。对你的集成来说,它只是另一个钱包。

两个实际影响:

  • 一组助记词,多个钱包。用户可以在 BitTool Signer 中添加同一组助记词两次,一次带 passphrase,一次不带。它们显示的指纹不同;不要按助记词或名称合并账户,只能按导出的公钥合并。
  • 指纹是一种快速检查手段。如果用户预期的是带 passphrase 的钱包,但配对的钱包指纹却是他们在无 passphrase 钱包上见过的那个,那么他们很可能忘了(或输错了)passphrase。