Jonathan Goodman自认做对了所有能做对的事:种子短语从没连过网,设备锁进多个保险柜和银行保管箱,从不外泄。结果他还是被偷走了160万美元。问题不出在他这里,出在硬件钱包厂商Coinkite代码里一行留了近五年的错误。
这不是一起孤立盗窃案。区块链安全公司Galaxy Research监测显示,截至本周二,至少12个不同黑客团伙正在同时洗劫使用Coldcard硬件钱包的比特币用户,累计被盗金额约1.3亿美元。加密监测机构Elliptic联合创始人Tom Robinson向TechCrunch确认,这个数字大致准确。
1.3亿美元是怎么被算出来的
Coldcard是一种"冷钱包":私钥或种子短语只存在从不联网的硬件设备里,理论上黑客隔着互联网够不着,这也是它比交易所App、浏览器插件这类"热钱包"更受信任的原因。今年以来加密行业已发生超过200起黑客事件,损失超过9.5亿美元,几乎都发生在联网环节。
这次Coldcard栽的不是网络攻破,而是密钥生成本身出了问题。
Coinkite官方公告写清楚了根源:2021年3月的一次固件更新,错误地用软件伪随机数生成器替代了本该使用的硬件随机数生成器。不同型号设备生成的种子短语,实际熵值只有40到72位,远低于设计要求的128位安全线。
- 结论.硬件钱包的安全边界从来不在是否联网,而在密钥生成那一刻的随机性是否可信。
熵值不够意味着什么?密钥空间小到黑客不需要撬开保险柜偷钥匙,直接把所有可能的钥匙形状配一遍就够了。断网、保密、多重保险箱,全部防线形同虚设,因为对手根本没打算突破它们,他绕过去了。
密钥生成那一刻的随机性,才是硬件钱包真正的保险柜。
哪些设备该立刻查
受影响的是2021年3月之后、修复版本发布之前生成过种子的所有Coldcard型号:Mk2/Mk3固件4.0.1至4.1.9,Mk4/Mk5标准版5.6.0之前,Q标准版1.5.0Q之前,以及对应的Edge版本。基本覆盖了这几年买过Coldcard的大部分用户。
更麻烦的是,Coinkite在公告里特别强调:只升级固件不解决问题。旧种子已经生成,漏洞已经发生,升级只是关上门,门后面丢的东西还留在外面。用户必须走完整流程——装新固件、生成全新种子、备份验证、先转小额测试、确认无误再搬全部资金,旧备份留到迁移彻底完成再销毁。
- 风险.仅升级固件不能修复已生成的旧种子,不完成迁移,资产仍暴露在暴力枚举范围内。
有一个例外:如果最初生成种子时手动加入了至少50次独立掷骰子的熵源,或者设置了足够强的BIP-39密码短语,风险会小很多。但对绝大多数按默认流程操作的用户,这道题没有捷径。
冷钱包的安全感,一直建在看不见的地方
硬件钱包卖的从来不是"离线"两个字本身,而是"离线之后钥匙足够随机"这个前提。用户能验证的只有前半句:设备有没有联网、种子有没有外泄、保险柜锁没锁好。后半句——密钥生成那一刻的随机数够不够格——普通人完全没有能力自己核实,只能相信厂商的实现是对的。
这次暴露的正是这个信任黑箱。近五年时间里,数以万计用户的种子短语其实可以被算出来,没人知道,包括Coinkite自己,直到黑客先一步发现。这不是能靠社会工程或钓鱼防住的失误,是产品出厂那一刻就已经埋好的隐患。
类似的教训历史上不是第一次。2008年Debian系统的OpenSSL库出过几乎一样的事故:一次代码改动削弱了密钥生成的随机性,导致大量SSH密钥可被穷举,清理工作持续了近两年。随机数生成器一旦出错,踩坑的从来不是某一个用户的失误,而是所有用户共同撞上同一扇门——漏洞不挑人,它只挑时间窗口。
至少12个团伙几乎同时盯上同一个缺陷,更像说明这个漏洞早已在小圈子里流传了一段时间,而不是某人临场灵光一现。谁先发现、怎么扩散、Coinkite的响应是否已经太晚,这些目前还看不清,值得继续盯着。
Coinkite这次的公告写得算详细,迁移流程给得完整,例外条款也说清楚了。但对Goodman这样已经损失真金白银的用户,流程写得再规范,钱也回不来。硬件钱包厂商欠用户的,从来不只是一次事后补救,而是一个从一开始就经得起审计的随机数实现——这道题,其他做硬件钱包的厂商现在也该重新算一遍。
