在过去几天里,那些试图做到一切正确的人失去了他们的比特币。他们购买了一款受人尊敬的硬件签名器,使用该设备离线生成了种子,并信任该设备完成签名器存在的唯一目的:生成一个没有人能够猜测的数字。然而,Coldcard并没有做到。一个检查错误的预处理器保护程序悄悄地将种子生成路由到一个弱软件伪随机数生成器(PRNG)——MicroPython的Yasmarang,而不是硬件熵源。在某些型号上,有效熵降至约40位。这个缺陷在2021年3月发布,并在公开可读的固件中存在了超过五年。在任何人理解原因之前,攻击者已经扫荡了500个地址;几天内,Galaxy Research的统计数字达到了4,585个地址和近9000万美元;截至本文撰写之日,攻击仍在继续。
Coinkite的工作假设在X上得到了广泛认可,即有人利用AI梳理公开可用的固件以找到这个漏洞。无论这位攻击者是否就是这样找到它,下一位攻击者肯定会。尽管在盗窃发生前几周进行了AI辅助审计,但并未发现任何问题(可能是由于模型的能力,也可能是由于搜索的具体构造)。自攻击开始以来,研究人员已经展示了几个前沿模型在几分钟内通过单一提示定位到相同的缺陷。代码在五年内开放供人类审查,但没有人发现它。
在Foundation Devices使用该代码开发竞争产品后,Coinkite将其固件从自由软件许可证转移到源代码可用条款,即MIT许可证加上Commons Clause。你可以阅读源代码,但无法基于此建立业务。这并没有改变任何事情。这个漏洞存在于机器可以读取的代码中,无论许可证允许什么;事实上,它是在剥离最后一段GPL代码的重写中进入树中的。许可证的变更并没有增加保护;它只是改变了发现漏洞的经济学。
在高度熟练的AI时代,所有分发的内容都是可读的,或者很快就会变得可读。剥离二进制文件的符号,通过反编译器运行,出来的是伪C代码,迎接任何打开Ghidra的人:无名变量、扁平化控制流、标记为FUN_00401a20的函数。对大多数人来说是不可读的。这个高门槛的人类理解能力是“封闭源代码”的全部安全溢价。
编译程序别无选择,只能讲真话。保持加密的代码无法运行。在执行的瞬间,处理器必须接收实际的指令,因此无论程序做什么,它都向机器提供了如何执行的完整且准确的说明。信息都在机器代码中。混淆并不能,也无法去除它。
如果阅读二进制文件听起来对机器来说太难以掌握,那么与机器已经在处理的更复杂的问题相比,这个难度就显得微不足道。阅读二进制文件是分析:你所需的每一个事实都在你面前,工作就是提取。数学发明则是另一种难度,因为它要求一个没有人见过的对象。在协调世界时2023年7月20日02:19,和Anthropic的Claude Fable 5合作的数学家Levent Alpöge发布了Keller的雅可比猜想的反例,这是一个自1939年以来悬而未决的问题,难度足以让它位于Stephen Smale的21世纪挑战列表上。几代人曾尝试解决这个问题。反证是三个变量的三个多项式。Lean在几小时内验证了它,且足够简短,任何人都可以在计算机代数系统中在大约一分钟内确认。
雅可比猜想在一个下午被攻克,而提问者显然在观看国际足联世界杯的决赛。在5月,OpenAI模型推翻了自1946年以来悬而未决的Erdős单位距离猜想;在7月底,一个30年的图论猜想在四个提示下被攻克;在它们之间是雅可比的反证和一系列其他几十年来未解的结果。
设定这样的节奏,正如在互联网上阅读机器代码的简单任务。如今的模型比起原始字节,更能处理源代码和反编译输出,因此完全封闭的二进制文件保持着微薄的边际。这一边际是一个成本的速度障碍,并且正在以你在其他地方看到的速度侵蚀。将安全性寄托于它能持续多久,意味着在与一个只会加速的时钟对赌。
找到你的熵漏洞的能力也能读取你的专有方法。这是更安静的伤亡,影响那些从未认为自己暴露于开源任何事物的公司。已交付软件中的商业机密一直只是穿着西装的模糊性。法律自商业秘密法存在以来就如此规定:逆向工程你合法拥有的产品是公平的,因此一个秘密只有在逆向工程保持昂贵时才能存活。当提取成本降至一个订阅和一个提示时,你交给客户的代码中所体现的秘密便不再是秘密。你的聪明算法、你的未记录格式、你在二进制中的优势:对任何愿意查看的人都是可读的,时间线越来越以分钟为单位。
这一切并不一定使开源安全。Heartbleed在全球最广泛部署的TLS库中隐藏了两年,因为没有资金关注的可见性什么也发现不了。xz后门表明,开放贡献模型本身就是一个攻击面,一个耐心的对手可以以友好的面孔和两年的良好提交穿越。虽然开放曾经是一个保护伞,但现在不再是。它所带来的确实是被允许查看的审查者、可以独立重现和验证的构建、在供应商死亡或转变时的退出,以及承认这一切都会发生,无论你喜欢与否。
现在我们必须假设每一行交付的代码都会被希望造成伤害的人阅读,因为这将会发生。防御者拥有攻击者永远无法拥有的一个结构性优势:时间。你可以在发布前对自己的代码使用相同的前沿模型,在提交和交付之间的空间中,而攻击者则在等待一个尚不存在的二进制文件。使你的构建可重现,以便它能与源代码联系起来,并且源代码可以被检查。设计为封闭失败,并保持受信任的核心足够小,以至于一个漏洞无法摧毁一切。对于持有比特币的特定业务,实时学习Coldcard所教的教训:拥有你无法承受被猜测的熵,保持安全元素最小并在已发布的接口后面,并将你的密钥分散在独立的实现中,以便没有单一设备,也没有单一供应商的错误,能成为你全部的暴露。
对于比特币来说,风险是无情的,这种情况在其他地方并不存在,因为仅仅知道私钥就意味着拥有。熵漏洞留下了永久的伤疤。修补生成器对它已经产生的种子没有任何帮助;一个弱的密钥空间将永远可以被清扫,而泄露则将攻击者交给了配方。我们之前见过这种情况。libbitcoin探索工具bx中的Milk Sad漏洞,从一个32位值生成私钥,攻击者在这个漏洞公开之前就已经在清空它所生成的钱包。攻击者保持自己的时间表,无论是否被邀请。对于无法追回的钱来说,“最终可找到”是“最终消失”的同义词。
比特币从未信任模糊性。协议是开放的,其规则可以被任何人检查,其安全性不依赖于秘密,而是依赖于在全视野中保持的数学和激励。我们围绕它构建的硬件和软件应当遵循同样的标准,因为替代方案不再可行。选择从来不是开放或封闭,而是有纪律或暴露。
这次冷卡片(Coldcard)事件的更广泛教训是,拥有闭源软件就像拥有一个由损坏的冷卡片生成的种子;它看起来不错,但根本上是建立在沙子上的。每个人都可以阅读代码——唯一剩下的问题是你是否承认这一事实,或者你和你的用户像冷卡片的用户一样,一次一个被耗尽的地址去学习这一点。
这是Colin Crossman的客座文章,他是Fedi的内容制作人。所表达的观点完全是他们自己的,并不一定反映BTC Inc或Bitcoin Magazine的观点。
本内容仅供参考,不构成任何金融、投资、法律或税务建议。文中提及的任何活动、奖励、线上活动或相关信息,不应被视为对购买、出售或交易任何加密资产的推荐、招揽或邀请。加密资产具有高波动性,存在价值损失风险。WEEX服务、产品及相关活动的可用性可能因地区而异。用户在参与前有责任确保符合当地适用法律法规。





























