代码行数。1,596 BTC 消失
完整事件报告 · 13个来源 · Anzen Lab 两个文件,四行代码,五年未被注意。这是 COLDCARD 熵故障逐步解构——缺陷是什么,攻击者如何找到钱包,受影响的拥有者应该怎么做——以及OneKey运行的四个检查,以便同样的事情不能在这里悄悄发生。一个被忽视的设定,五年内漏洞存在于完全公开的代码中,未被注意到 1 1,596+ BTC 确认被盗,来自大约 7,300 个地址——并且仍在上升 7 41分钟,最大的单笔转账——1,083 BTC,当时约 7000万美元 9 1万亿 攻击者必须要打败的概率在Mk3上——设计要求在一个具有78位数字的数字中有一个机会 1 出了什么问题 一个安全检查存在,却没有任何作用 六个步骤,没有行话。每个步骤旁边的备注是精确的技术版本,供任何想要检查工作的人员使用。 01 其他所有假设这个数字 A 硬件钱包执行几项工作。它显示你真正要签署的内容,而不是让你信任被感染计算机的屏幕,并且它将你的密钥保存在一个旨在抵抗打开的芯片内部。每一个防御假设的都是一样的:你的密钥派生的数字是不可能被猜到的。如果可以被猜到,攻击者就不必突破任何一道防线。一个24个词的短语应该从一个池中提取,该池大约包含可观察宇宙中每千个原子对应一个数字。关键并不是你的短语是隐藏的,而是这个池是无法被搜索的。技术细节 12个单词携带128位熵,24个单词携带256位,加上该熵的SHA-256校验和。BIP-39将结果扩展为BIP-32主密钥。技术细节 12个单词携带128位熵,24个单词携带256位,加上该熵的SHA-256校验和。BIP-39将结果扩展为BIP-32主密钥。 02 COLDCARD停止从那个池中提取 2021年的固件更改悄悄停止了钱包向其专用随机性芯片请求该编号,而是让普通软件计算一个。对比之下,这是整个事件:读取为安全性削减三分之二是很诱人的。但实际上并非如此。每一位都双倍增加了工作量,因此失去88位并不会将工作缩小三分之一的量级——而是缩小为2⁸⁸的因子。对一个人来说万亿仍然是一个很大的数字;但对于一个租赁高性能机器来逐一处理它的人来说,这就不是一个大数字。技术细节 种子生成从ckcc.rng_bytes()移动到ngu.random.bytes()。Coinkite估计Mk3上大约剩余40位搜索空间,而Mk4/Mk5/Q上约有72位,目标是128位。Block的独立分析得出了相同的数量级——低于2⁴⁰·⁷和低于2⁷³·³,并发现在更窄的条件下剩余的更少。 2 技术细节 种子生成从ckcc.rng_bytes()移动到ngu.random.bytes()。Coinkite估计Mk3上大约剩余40位搜索空间,而Mk4/Mk5/Q上约有72位,目标是128位。Block的独立分析得出了相同的数量级——低于2⁴⁰·⁷和低于2⁷³·³,并发现在更窄的条件下剩余的更少。 2 24个单词应该从 115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,936 中提取 而COLDCARD实际从 1,099,511,627,776中提取 03 因为软件无法随机 想一想什么使得硬币投掷不可预测:投掷的力度、重力、空调吹来的空气、地面的微弱震动。你可以命名数十种影响,和你无法命名的数十种影响。没有人能计算出轨迹,因此没有人能确定结果。软件没有这些。它对一小部分起始值运行固定公式并产生固定答案——在这里,起始值是芯片的序列号和设备通电的时间。一个了解到这个配方和材料的攻击者不会猜测输出。他们重新计算。技术细节 在硬件随机数生成器被禁用的情况下,rng_get()链接到MicroPython的Yasmarang PRNG,来自非机密状态的种子——UID、SysTick、RTC——此后未收集新熵,因此候选者在离线枚举。Coinkite不认为与50个或更多公平、私密的投掷混合的种子单独面临这一问题的风险:50 × log₂6 ≈ 129 位。 3 技术细节 在硬件随机数生成器被禁用的情况下,rng_get()链接到MicroPython的Yasmarang PRNG,来自非机密状态的种子——UID、SysTick、RTC——此后未收集新熵,因此候选者在离线枚举。Coinkite不认为与50个或更多公平、私密的投掷混合的种子单独面临这一问题的风险:50 × log₂6 ≈ 129 位。 3 04 而检查以防止这一情况的检查问了错误的问题 这是值得深思的一部分。构建中有一个防护措施,专门写来阻止没有硬件生成器的固件发布。它询问一个设定是否存在。它并没有询问这个设定是否被打开。该设定存在
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡