一条种子长出信标链的钥匙树:ERC-2333 与 BLS 密钥派生 图 1
一条种子长出信标链的钥匙树:ERC-2333 与 BLS 密钥派生 · 图 1

老规矩在新曲线上失灵

以太坊信标链的验证者签名走 BLS 方案,底层曲线是 BLS12-381。钱包想沿用比特币世界的舒适区——一条种子、一棵 HD 密钥树——但 BIP-32 在这条曲线上水土不服:BLS 私钥必须小于群的阶,而按 BIP-32 的取模规则生成,超过半数的派生输出会落在阶外,直接是无效密钥。这不是工程细节,是标准强制要求的新派生函数。ERC-2333 因此而生,目标写得明确:用一条种子,长出一整棵合法且可分层管理的 BLS 密钥树。

派生函数的用法

核心是一个基于 HKDF 的 hkdf_mod_r 函数:输入密钥材料、密钥信息字符串和模数,输出一个均匀分布在该模数内的小整数。从主种子出发时,密钥信息里编入路径的各个层级——m 开头的逐级序号,以及每一层是否硬化。逐级下钻,每级都用上一层私钥做展开材料。派生只依赖种子和路径文本,不依赖链上任何状态,这让同一句助记词在任何机器上都能精确复原每个层级的密钥。至于验证者体系里签名密钥与提款密钥各走哪条路径,是由配套的 ERC-2334 层级规范另行约定的。

规范里有个值得普通用户记住的版本注记:由于 IETF 的 BLS 签名草案在演进中更新了 KeyGen 函数,ERC-2333 在 2020 年 9 月 17 日同步改过派生细节——在那之前按旧版实现的工具与之后生成的密钥并不互通。今天的主流质押命令行工具早已对齐新版,但用老工具恢复密钥时,版本号是第一个要对齐的参数。

顺手埋的抗量子保险

规范最有趣的一段是所谓应急备份:密钥派生的中间步骤会顺带生成一对拉蒙特密钥。拉蒙特签名是哈希一次一签的最古老方案,它的秘密值恰好在这套派生流程里以零额外存储成本的姿态存在。假如哪天 BLS12-381 被判定不再安全——比如量子计算突然跃进——验证者可以拿这对一次性密钥签一份公告,作为迁移到新签名方案的桥。它防的不是今天的攻击,而是签名方案本身的猝死,这种把后手写进标准第零层的做法,在密钥管理设计里相当少见。

一把钥匙的三种命运

同一棵树的三个层级对应三种暴露面:签名密钥驻留在联网的验证者客户端里,是设计上就会出事的一层,它的损失上限是罚没,但提款路径不经过它;提款密钥理想中永远离线,露面机会只有设置凭证与提取资金两次;助记词本身则是整棵树的母本,备份它的介质暴露等于一切归零。标准把这三层从一句话里分出来,安全策略才有了各自清晰的边界。

快速问答

问:ERC-2333 的助记词和比特币 BIP-39 助记词互通吗? 答:助记词格式可以同源,但派生算法完全不同;同一句词在两套体系下生成的密钥毫无关系。

问:提款密钥和签名密钥为什么分层? 答:签名密钥要联网在线签名,风险敞口大;提款密钥冷存、只在设置凭证和提取时露面。分层的意义是把热的那层失守时,钱的出口还捏在冷的那层手里。

它防的是一种少有人预演的事故

大多数密钥方案假设底层数学难题长期有效,ERC-2333 却为难题失效的那一天留了后门:派生过程中顺路生成的一次性密钥对,可以在算法被宣判死刑时签出迁移声明。规范甚至算过账——这套备份的存储成本是零,因为那些哈希值本来就要在派生中途诞生。安全设计的成熟度,常体现在为最不可能的场景预留的成本有多克制。

一条算术线

树形派生让层级数量线性增长、内存却只需保存当前路径上的几把钥匙;与每把钥匙独立生成相比,备份从一堆私钥文件简化回一句话。密钥管理的进步,往往就是让最脆弱的东西——人记得住的那句词——承担更多而不失守。

风险提示:本文介绍密码学标准,不构成投资建议;密钥生成与恢复请使用最新版本官方工具并核对标准版本。