在 BIP39 中,初始熵先变成助记词,再由助记词和可选 passphrase 生成二进制种子。BIP32 从中派生主密钥和 chain code。这些数值和步骤不能混用;其他备份格式可能采用不同流程。
BIP39 用于把计算机生成的随机性转写为可读文字,而不是处理人编的句子。因此,选择熟悉的名言或自行排列词语,不等于按照指定流程生成熵。 [BIP39 — Mnemonic generation and seed conversion]
Linux getrandom() 默认等待来源初始化。GRND_NONBLOCK 可能不等待而返回 EAGAIN。实现必须处理状态和返回长度;读取失败不能被当作成功获取了输入。 [Linux getrandom — Initialization and return values]
Web Crypto getRandomValues() 向整数数组提供密码学安全的字节;超过 65536 字节时抛出 QuotaExceededError。仅符合该接口,不能验证已加载代码、后续处理或助记词的防泄露保护。 [W3C Web Crypto — getRandomValues contract]
BIP39 为 128 位输入附加 4 位校验和,组成 12 个词;为 256 位输入附加 8 位,组成 24 个词。这些位来自 SHA256,不是额外的独立熵。 [BIP39 — Mnemonic generation and seed conversion]
BIP39 使用 PBKDF2-HMAC-SHA512 和 2048 次迭代派生 512 位种子。输入包括助记词,以及由字面文本 mnemonic 加 passphrase 组成的盐,均采用 UTF-8 NFKD。没有 passphrase 时使用空字符串;输出长度不能证明有 512 位输入熵。 [BIP39 — Mnemonic generation and seed conversion]
BIP32 以 Bitcoin seed 为密钥,用 HMAC-SHA512 处理种子,再将结果分成主私钥和 chain code。私钥值为零或超出允许范围时无效;整个种子不会直接当作一个私钥使用。 [BIP32 — Master key generation]
BIP39 公布包含熵、助记词和种子的测试向量,使用测试 passphrase TREZOR。结果匹配说明该输入的转换正确,不证明实际生成器不可预测。公开测试输入不能作为真实资金的秘密备份。 [BIP39 — Mnemonic generation and seed conversion]
NIST SP 800-90C 将熵源与生成机制连接起来。因此,钱包评估还必须跟踪具体版本、错误处理和数值向后续步骤的传递。单个组件的证据不能单独证明整个流程或后续备份存储的安全性。 [NIST SP 800-90C — Random bit generator constructions]
要获得更完整的理解,请将本词条与以下词条结合阅读: Random Number Generator, BIP 39, HD Wallet, Seed Phrase. 反向关联还来自: Random Number Generator, CSPRNG, Deterministic RNG, Entropy Mixing.