鉴于Coldcard硬件钱包中存在灾难性的低熵漏洞,并且与7月30日开始公开观测到的盗窃事件相关联,比特币持有者已开始重新评估其硬件钱包设置中的信任假设。
Coldcard的熵漏洞是如何运作的
Coldcard设备配备了看似功能正常的STM32“真随机数生成器”,该生成器依赖物理过程来产生无法猜测的助记词种子。
然而,在Coldcard创始人NVK决定启动固件重写,从GPL许可的自由软件模式切换到只读模式后,一个严重的漏洞似乎被引入了。
从2021年3月发布的固件版本4.0.1开始,该设备使用了MicroPython的Yasmarang伪随机数生成器,而没有正确使用STM32硬件RNG。
随机数生成是计算机科学中一个无法解决的问题,这就是为什么生成安全、不可猜测的私钥总是需要在一定程度上依赖外部的物理过程。
使用Yasmarang PRNG被该领域的分析师广泛描述为一种预设的回退机制。然而,Coinkite最近在X上的一篇帖子中对这种描述提出了异议:
关于Coldcard被编程为默认采用一种明显不安全的种子生成方式的推测,也在X上引发了关于这是否是故意放置后门的猜测。
调查性比特币记者Hodlnaut推测,该漏洞源于粗心的开发实践以及通过随机更改来抑制错误的努力。
Coinkite估计,Mk2和Mk3设备生成的种子具有40位的熵,而Mk4、Mk5和Q型设备达到了大约70位。这两者都远低于安全12词助记词所需的128位。
自那以后,攻击者成功地暴力破解了私钥,窃取了价值超过1亿美元的比特币。一个钱包被找到的可能性取决于是否添加了额外的骰子熵,或者是否使用了BIP-39密码短语和非标准路径。
相关阅读:Coldcard黑客将64枚BTC和200枚ETH转移至加密货币混币器
此后,James O’Beirne建立了一个包含蜜罐地址的网站,名为cktripwire,目的是估计攻击者正在有效扫描哪些类型的钱包。

cktripwire追踪的蜜罐。来源:cktripwire.com
物理熵如何拯救了一些钱包
Coldcard漏洞再次痛苦地印证了社区的核心原则之一:不要信任,要验证。
那些没有依赖一块不透明的工程来为过程中最关键的安全部分生成熵,而是使用了足够多次掷骰子的用户,他们的币因此免于被利用。
掷骰子是一个简单、直观透明、普通用户可以自行审计并直观理解的过程。而验证TRNG则需要对电子设备进行详细的物理检查和对固件的审查。
尽管一些人利用近期事件作为借口,宣称自我托管时代的终结,但遵循这一最佳实践留给远程攻击者的选择极少。
如果助记词种子是通过物理熵生成的,而不依赖于硬件钱包的安全性,那么钱包生成过程中真正的单点故障就被消除了。
相关阅读:Coldcard攻击是否意味着所有硬件钱包都不安全了?
从种子派生出的xpub和接收地址可以通过将其导入其他设备进行交叉验证。
通过气隙进行的随机数泄露也可以通过检查两个设备在给定相同的未签名交易时,是否生成相同的符合RFC 6979标准的签名来发现。
因此,安全的熵生成是安全钱包的绝对先决条件。自Coldcard漏洞公开以来,X上流传着各种生成熵的方法和建议。
最流行的方法是通过应用SHA-256哈希来交叉检查设备将骰子点数正确转换为BIP-39助记词种子的能力。使用超过100次掷骰子就足以生成24词助记词所需的熵。
简单的纸质方法,例如Bitbox发布的表格,将BIP-39种子词的搜索空间分区,使得六次掷骰子和一次掷硬币的组合可以直接分配一个种子词,而无需使用电子设备。
更复杂的模板,如codex32骰子去偏工作表,使用可以手工计算的范纽曼提取器,即使在骰子有偏差的情况下也能生成安全的助记词。
掷骰子的替代方法是打印出BIP-39种子词,将它们剪成大小相同的小纸片,彻底洗牌,然后随机抽取24个词。诸如Seedsticks或Entropia之类的产品使这一过程更加方便和可靠。
Frostsnap等专用硬件试图在多个设备之间可验证地分布熵生成过程。
一些用户开始设计自己的物理熵设备,这些设备生成助记词的速度几乎可以和电子硬件一样快。
相关阅读: Coldcard攻击是否意味着所有硬件钱包都不安全了?





