文章

BIP-39 协议解析

BIP-39 是比特币改进提案中关于助记词生成的标准,它定义了如何创建和使用助记词来简化密码学种子的备份和恢复过程。这一标准已成为几乎所有加密货币钱包的基础。

BIP-39 核心概念

BIP-39 主要解决了以下问题:

  1. 将复杂的二进制随机数转化为容易记忆和抄写的单词列表

  2. 提供一种标准化方法来从这些单词生成确定性密钥

  3. 支持多语言单词列表

  4. 通过校验和提供错误检测机制

BIP-39 工作流程

让我通过流程图来展示BIP-39的整个工作过程:

BIP-39 详细步骤解析

1. 生成随机熵

首先,系统生成一个随机熵(ENT),长度通常为128至256位,步长为32位:

  • 128位 → 12个单词

  • 160位 → 15个单词

  • 192位 → 18个单词

  • 224位 → 21个单词

  • 256位 → 24个单词

2. 计算校验和

校验和(CS)通过对熵进行SHA-256哈希计算得到,取哈希结果的前ENT/32位:

  • 128位熵需要4位校验和

  • 256位熵需要8位校验和

3. 将熵和校验和分组

将熵和校验和组合起来,然后分成11位的组:

  • 例如:对于128位熵 + 4位校验和 = 132位

  • 132 ÷ 11 = 12组(正好对应12个单词)

4. 映射到单词表

每个11位值作为索引(0-2047)映射到预定义的2048个单词列表中。

例如:

  • 00000000000 (0) → "abandon"

  • 00000000001 (1) → "ability"

  • ...

  • 11111111111 (2047) → "zoo"

5. 生成种子

使用PBKDF2密钥延伸函数从助记词生成512位种子:

  • 输入:助记词(作为字符串,单词间以空格分隔)和盐值

  • 盐值:"mnemonic" + 可选密码短语

  • 参数:HMAC-SHA512, 2048次迭代

  • 输出:512位种子

BIP-39 示例流程

下面是一个简化的例子,说明从随机熵到最终种子的完整过程:

实际例子

当用户生成新的钱包时,可能会看到如下助记词:

abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about

这个特殊的助记词对应全零的熵值(除了最后部分,由于校验和),通常用于测试目的。

BIP-39 安全考量

使用BIP-39时的几个重要安全注意事项:

  1. 离线生成:在离线、安全的环境中生成助记词

  2. 密码短语:添加密码短语可以提供额外的安全层,即使助记词泄露

  3. 物理安全:助记词应当以物理方式安全存储(金属板、纸质等)

  4. 环境安全:生成助记词的设备应确保没有恶意软件

BIP-39 在钱包恢复过程中的应用

当用户需要恢复钱包时,BIP-39的价值就体现出来:

许可协议:  CC BY 4.0