比特币钱包(4) BIP39 助记词

1. 定义生成助记词

助记词句子(mnemonic word sequence)作为密码,使用若干个助记词来替换之前直接生成随机数的方式(确定性钱包的种子随机数)。

1.1. 生成步骤

1) . 生成 128~256 位 (bits) 的随机数,称为熵(以128bits为例);

规定熵的位数必须是 32 的整数倍,所以熵的长度取值位 128 到 256 之间取 32 的整数倍的值,分别为 128, 160, 192, 224, 256;

2) . 计算熵 checksum

将熵进行 SHA256 哈希,取出前 4bits 用作校验码;(校验码长度 = 数据总长度 / 32);

3) . 将原始熵和 checksum 拼接为 132bits 长度
4) . 将 132bits 长度按照 11bits 分割为 12 份
5) . 每 11bits 对应为 2048 长度的单词表中的一个单词;

(助记词库有 2048 个词,用 11 位可全部定位词库中所有的词,作为词的索引)

比特币钱包(4) BIP39 助记词_第1张图片

1.2. 随机位数与助记词个数的对应表

校验和 = 长度为熵的长度/32 位
助记词个数 = (熵+校验和)/11

熵(bits) 校验和(bits) 熵+校验和(bits) 助记词个数
128 4 132 12
160 5 165 15
192 6 198 18
224 7 231 21
256 8 264 24

2. 助记词生成 Master Seed(512 位,64 字节)

BIP39 采用PBKDF2函数推算种子.

  • 哈希函数HMAC-SHA512(key =“mnemonic” , passphrase 作为盐)
  • 2048 作为重复计算的次数

比特币钱包(4) BIP39 助记词_第2张图片


【参考】

[1] HMAC算法可参考"HMAC(2)哈希运算消息认证码HMAC"

你可能感兴趣的:(比特币技术)