开源比特币种子生成器利用放射性衰变事件生成BIP39恢复短语
Entropy32 Plus 是一款离线硬件设备,能够将放射性衰变的时序转化为12词或24词的比特币BIP39恢复短语。该设备的固件在本地离线环境中收集512位比较比特,并通过SHA-256算法对数据池进行条件化处理。生成的词语暂时存储在随机存取存储器(RAM)中,用户随后可执行手动清除命令以删除数据。
其开发者指出,目前尚未通过NIST SP 800-90B测试及独立审查来验证熵源的质量。开源代码库涵盖了固件、电路板设计、制造数据、外壳以及用于检查的BIP39词表。
基于放射性衰变的物理熵源
该项目被称为“宇宙分叉器”(The Universe Bifurcator),它接收盖革计数器发出的脉冲并测量检测到的事件之间的时间间隔。其固件将连续间隔之间的比较转换为比特位:如果新间隔比前一个间隔长,则产生一个“1”;如果较短,则产生一个“0”。等长的间隔会被丢弃,低于200微秒的测量值因可能为故障而被拒绝。当设备收集满512位比特后,便停止采集。
放射性衰变在单个原子层面是不可预测的。Entropy32 Plus利用检测到的衰变事件的时间作为物理随机性来源,而非完全依赖软件生成的数值。当前设计通过3.5毫米接口接受来自GQ Electronics GMC-320SG盖革计数器的脉冲。文档指出,该计数器可以检测放射性源或背景辐射的发射。
接收到脉冲后,LM393比较器将计数器的模拟信号转换为数字输入。自定义电路板将该信号传递给ATmega328P微控制器。项目固件使用微秒定时器记录每个被接受的事件。
SHA-256处理原始种子数据
一旦512位数据池构建完成,Entropy32 Plus会将所有64个字节通过内置的SHA-256代码进行处理。固件取结果哈希的前16个字节用于生成12词短语,或取全部32个字节用于生成24词短语。
据项目介绍,哈希处理旨在减少与探测器死区时间、计数率变化或测量间相关性相关的可见模式。虽然哈希处理可以将可用熵分散到输出中,但它并不能证明原始数据中存在多少不可预测性。
固件包含一个SHA-256启动测试:计算字符串“abc”的哈希并与已知值进行比较。如果结果不正确,设备将在收集熵之前停止运行。通过自检仅确认实现返回了预期的测试向量结果,并未测试盖革计数器、评估脉冲独立性或测量进入哈希的最小熵量。
项目收集的比较比特数量是最大256位BIP39输入的两倍。在物理源经过正式测量之前,代码库并未确立每次比较包含多少可用熵。
从条件化数据映射到BIP39单词
经过SHA-256处理后,设备应用BIP39规范中定义的过程。BIP39将批准的熵长度转换为从标准化2,048词列表中选择的助记符句子。
- 12词短语:使用128位条件化数据并计算4位校验和。合并后的132位被分为12组11位,每组选择一个单词。
- 24词短语:使用256位数据和8位校验和。 resulting 264位序列被分割成24个单词索引。
恢复短语包含恢复钱包访问所需的信息。任何获得正确顺序单词的人都可以重建钱包密钥。需要注意的是,种子短语并非一组独立生成的单词的集合。现代比特币钱包从一个主种子派生出许多私钥,因此原始熵的弱点可能会影响由此生成的每一个地址。
Entropy32 Plus将完整的BIP39英文词表编译入固件中。根据代码库信息,词表占用13,117字节,约占微控制器闪存容量的43%。加上OLED界面、SHA-256实现和采集逻辑,编译后的程序使用了芯片可用的30,720字节中的30,006字节,仅剩714字节未使用。
离线设计使种子远离联网设备
公布的硬件文件未列出任何无线通信硬件。用户通过两个按钮操作生成器,并从0.91英寸的OLED屏幕上读取短语。
生成的单词索引暂时保留在微控制器的RAM中。一旦用户记录下短语,按下两个按钮即可开启确认过程,覆盖单词数组并重启熵收集。固件在处理复制后清除原始数据池。在计算完BIP39索引后,临时哈希、校验和和熵缓冲区也会被覆盖。
据开发者称,该设备不会将恢复短语保存到持久性存储器中。然而,开源设计不包含安全元件,也没有机制证明已安装的固件与公开代码匹配。物理隔离消除了多种基于网络的攻击途径,但无法验证设备是否正确组装或加载了受信任的软件。修改过的单元可能会显示预设单词或在外观不变的情况下保留生成的数据。
独立的熵测试尚未完成
代码库声明,基于盖革计数器的熵源尚未经过NIST特别出版物800-90B测试。NIST的方法论涵盖物理熵源的评估,包括针对独立和非独立数据的单独程序。
Higgins呼吁长期记录原始到达时间间隔,并使用NIST的非IID最小熵估计器对其进行检查。固件注释警告称,仅凭一般统计测试结果不足以确立足够的熵。“请验证您打算使用的熵源,否则请知悉您将自行承担使用该设备的风险。”README文件中写道。
开发者建议在为有价值资金创建钱包之前,将盖革衍生的数据与其他独立验证的来源混合。截至9月13日,代码库中未包含外部审计、NIST评估或公共原始事件数据集。
过去的钱包失败案例表明,为什么熵测试不仅仅是确认最终单词符合BIP39格式。技术审查解释了弱熵如何暴露比特币钱包,而无需揭露哪些人使用了受影响设备。攻击者可以生成可能的种子,派生其公共地址并在区块链上搜索匹配项。
Entropy32 Plus仍处于积极开发阶段。提交历史记录显示初始提交日期为9月4日,随后进行了固件、电路板和外壳的更改。截至9月13日,代码库没有标记的生产版本,也未公布完成独立安全评估的时间表。