MSTR Cat

区块链/等级 II · 运作机制/2.1 密码学/课程 7

助记词(BIP39)

十二个单词、一个校验和,以及控制一切的512位种子值

材料BIP39英文单词列表(github.com/bitcoin/bips)笔记本

好奇

  1. 为什么一段随机的比特序列会变成十二个英文单词,而不是保持十六进制形式?
  2. 如果将该短语中的一个词替换为列表中的另一个词,钱包会怎样?
  3. 同样的十二个单词怎么就能生成两个完全不同的钱包呢?

探索

  1. BIP39由包括Trezor硬件钱包背后团队在内的开发者于2013年编写,可将原始的密码学熵转换为人类可读的助记词。手抄32或64个十六进制字符容易出错,而单词更便于书写、回读和核对。该标准定义了二进制序列与固定词典中单词之间的确定性映射,使用户只需记住或写下一份简短的单词列表,就能恢复整个密钥层级结构。
  2. 该过程始于熵:一段长度为128、160、192、224或256位的随机序列。取熵的SHA-256哈希值的前N位作为校验和附加在熵之后,其中N等于熵的长度除以32。对于标准的12个单词助记词(128位熵),会附加4位;对于24个单词(256位熵),则附加8位。该校验和使钱包软件在导入时就能立即检测出大多数抄写错误。
  3. 熵与校验和组合后的字符串被分割为若干11位的片段,每个片段对应BIP39英文单词表中2,048个不重复单词中的一个。该单词表经过精心挑选,任意两个单词的前四个字母都不相同,以减少手动抄写时的歧义。由于最后一个片段包含部分校验和,随机选取的单词通常无法通过校验:随机的12个单词序列中只有约1/16能通过校验(24个单词则为1/256)。
  4. 为生成用于密钥生成的真正种子,需将助记句以及可选的密码短语输入 PBKDF2-HMAC-SHA512 算法,并进行 2,048 次迭代处理。盐值由字符串“mnemonic”加上密码短语构成(如果没有密码短语,则仅为“mnemonic”)。该算法能够生成一个确定的 512 位种子。即便攻击者掌握了全部十二个单词,只要密码短语足够强、难以被猜测,他们依然无法在没有密码短语的情况下推导出该种子。
  5. 这一机制构成了双层安全模型。助记词提供恢复能力和基本的错误检测,而密码短语则充当“隐藏钱包”层。有些用户会在不加密码短语的助记词下放一个小额诱饵钱包,而把主要资金放在密码短语之后。然而,这也是一个造成资产丢失的途径:一旦密码短语被遗忘或丢失,就将永久失去对资金的访问权,因为仅凭助记词无法恢复密码短语。
  6. 并非所有钱包都遵循 BIP39:Electrum 使用自己的方案,而 SLIP-0039 则将秘密拆分为 Shamir 份额,用于多方托管。尽管如此,由于在各类硬件设备和软件应用之间具有广泛的兼容性,BIP39 仍是主流标准。此处生成的 512 位种子是 BIP32 分层确定性密钥派生的根输入,这意味着钱包中的每一个私钥最终都可以追溯到这一特定的助记词与密码短语组合。

关键事实

  • BIP39将128至256位的熵值以及SHA-256校验和,映射为来自2,048个单词列表中的12到24个单词。
  • 该英文单词表的设计使得每个单词的前四个字母能够唯一标识该单词。
  • 使用 PBKDF2-HMAC-SHA512 进行 2,048 次迭代,将助记词和密码短语拉伸为 512 位的种子。
  • 对相同的助记词应用不同的密码短语,就会生成一个完全不同且有效的钱包。
  • 一旦丢失助记词或对应的密码短语,将永久无法访问这些资金。
  • SLIP-0039 是一种独立且不兼容的标准,它将秘密拆分为 Shamir 份额,以实现门限恢复。

练习 九、六、三、一

9收集列出9种钱包或签名设备,并注明每种设备是使用BIP39、自身的方案,还是SLIP-39。
6归类按照备份密钥的方式将这9种分为6类:12个单词、24个单词、单词加密码短语、Shamir 份额、多签配置,或其他。
3提炼将这6类归纳为恢复便利性与防盗能力之间的3种权衡。
1凝结用一句话解释,为什么 BIP39 助记词的最后一个单词在数学上与前面十一个单词不同。

事实核查

日期、数字及数据均依据下方列出的已发表资料进行核实。

在互动学院中打开 →

EN PT ES JA KO RU DE FR MS