一个形同虚设的 安全检查
钱包所有的防护,都押在一个猜不到的数字上
硬件钱包有几项工作。它向你展示你实际签署的内容,而不是让你去信任受感染电脑的屏幕,并将你的密钥保留在专为防拆解而设计的芯片中。所有这些防御都假设你密钥所源自的数字是不可能被猜到的。如果能被猜到,攻击者就永远不必突破其中任何一道防线。 24 个单词的助记词所抽取自的密码池,其大小大约相当于可观测宇宙中每千个原子对应一个数字。这样大小的密码池是无法被穷举的。这就是整个安全模型。
12 个单词包含 128 位熵,24 个单词包含 256 位熵,外加基于该熵的 SHA-256 校验和。BIP-39 将其扩展为 BIP-32 主密钥。
12 个单词包含 128 位熵,24 个单词包含 256 位熵,外加基于该熵的 SHA-256 校验和。BIP-39 将其扩展为 BIP-32 主密钥。
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
因为软件无法做到真正的随机
想想是什么让抛硬币变得不可预测。投掷的力量、重力、空调吹出的气流、地面的微小震动。数十种你能说出的影响和数十种你无法说出的影响。没有人能够计算出轨迹,因此没有人能预言结果。 软件的工作方式则不同。它对少数几个初始值运行固定的公式,并产生固定的答案。在这里,这些值是芯片的序列号以及设备开机运行了多长时间。了解了配方和原料的攻击者会重新计算出输出结果,而不是去猜测它。
在硬件 RNG 被禁用后,rng_get() 链接到了 MicroPython 的 Yasmarang PRNG,该 PRNG 从非机密状态(UID、SysTick、RTC)获取种子,并且在此之后没有收集新的熵,因此候选密码可以在离线状态下被枚举。Coinkite 认为,与 50 次或更多公正、私密的投掷相混合的种子不会因这一问题本身而面临风险:50 × log₂6 ≈ 129 位。3
在硬件 RNG 被禁用后,rng_get() 链接到了 MicroPython 的 Yasmarang PRNG,该 PRNG 从非机密状态(UID、SysTick、RTC)获取种子,并且在此之后没有收集新的熵,因此候选密码可以在离线状态下被枚举。Coinkite 认为,与 50 次或更多公正、私密的投掷相混合的种子不会因这一问题本身而面临风险:50 × log₂6 ≈ 129 位。3
本应拦截此事的检查机制问错了问题
构建版本中曾有一个保护机制,专门用于阻止在没有硬件生成器的情况下发布固件。它检查的是是否存在某个设置,而不是该设置是否已开启。 该设置存在,并且它是关闭的。保护机制保持沉默,构建未报告任何错误,固件随之发布。
#ifndef 仅测试是否已定义。主板配置将 MICROPY_HW_ENABLE_RNG 定义为 0(既已定义又被禁用),因此 #error 从未触发,链接器将 rng_get() 解析为了软件备用方案。3
#ifndef 仅测试是否已定义。主板配置将 MICROPY_HW_ENABLE_RNG 定义为 0(既已定义又被禁用),因此 #error 从未触发,链接器将 rng_get() 解析为了软件备用方案。3
摘自源码的缺陷代码。3
这一切在五年里看起来毫无破绽
脆弱的恢复助记词看起来和强密码完全一样。二十四个普通的词,正确的校验和,一个表现正常的设备。屏幕上没有任何警告,构建过程中也没有任何错误。 源代码自始至终都是公开的。但要阅读它,仍然需要有人去打开那个特定的文件。
弱 PRNG 的输出长度、非零性和非重复性检查均可通过,因此常规的冒烟测试也无法发现它。
弱 PRNG 的输出长度、非零性和非重复性检查均可通过,因此常规的冒烟测试也无法发现它。
本页并非幸灾乐祸。
Coinkite 披露了该漏洞,发布了技术报告并推送了修复程序。外部研究人员能够还原发生的事情,是因为 COLDCARD 是开源的。
关于估算数据的一个提醒:它们描述的是在当前假设下攻击者面临的破解难度,而不是倒计时秒表。没有人能告诉你破解某个特定钱包具体需要多长时间。2
在进行任何操作前请先阅读
你需要做什么取决于你最初创建恢复助记词时使用的是哪款设备,而不是你今天手里拿的是哪款。
假设这种情况仍在发生。这些助记词在 2021 年变得可预测,现在该方法已经公开,因此任何人都可以运行相同的搜索。没有任何补丁能从外部封堵这个漏洞,攻击者也没有理由停手。如果你受到了影响,最稳妥的假设就是:时间是你和他们之间唯一的缓冲。
Mk2 和 Mk3:立即转移你的币
受影响的固件版本范围为 4.0.1 至 4.1.9。4.2.0 版本修复了新助记词的生成方式,但任何更新都无法为已经存在的助记词补足随机性。请在信任的设备上创建一个新钱包,并将资金转移过去。1
Mk4 和 Mk5:检查固件版本
如果助记词是在低于 5.6.0(或 Edge 构建版本的 6.6.0X)的固件上创建的,请更新固件,在更新后的固件上创建一个全新的钱包,然后转移你的资金。单纯更新固件并不能修复旧的助记词。1
Q:同样,分水岭是 1.5.0Q
请更新至 1.5.0Q 或更高版本(Edge 构建版为 6.6.0QX),创建一个新钱包,抄写并测试备份,发送一笔小额测试交易,然后再转移其余资金。1
不会。更新会改变设备生成新随机数的方式。它无法回溯并为已经存在的助记词增加不可预测性。那个数字是一次性从错误的密码池中抽取出来的,任何后续版本都无法改变当时抽取的结果。在受影响固件上创建的助记词在完全更新的设备上依然脆弱。解决方法是在更新后创建一个新钱包,并将资金转移到该钱包中。
大多数人并不知道,设备也没有记录这一点。Coinkite 的建议是:除非你能确凿排除,否则将该助记词视为存在风险,例如你仍然保留着购买或设置日期,或者你知道自己当时使用了骰子或 passphrase。如果你无法排除,请表现得如同你受到了影响。迁移一个本无问题的钱包只会浪费你一个下午的时间,而犯下另一个错误的代价是永久性的。
独立研究人员在 coldcardentropy.org 上发布了一个检查器,涵盖了六个证据层级中的 6,657 个地址。该查询在你的浏览器中运行,只需提供公开地址,绝不索要恢复助记词、密钥或 passphrase,任何索要这些内容的工具都不应使用。请按字面意思阅读其警告:匹配说明该地址存在于公共数据集中,并不代表资金已被盗;未匹配也并不证明钱包是安全的。
骰子可以。Coinkite 规定,仅凭骰子进行 50 到 98 次公正、独立、私密的投掷可达到 128 位,99 次或以上可达到 256 位左右,前提是这些投掷从未被记录或曝光。 passphrase(附加密码)叠加在助记词之上而不是替代它,因此它能为那些已经获得助记词的人争取时间。
官方通知从 Mk3 固件 4.0.1 开始,但 4.0.0 中也存在相同的代码,且独立研究人员将受影响的范围延伸得更早。请将已公布的范围视为底线。
所有 OneKey 设备均未受影响
在我们发布过的任何一款型号中都没有。我们的固件不包含任何 libngu、Coinkite、COLDCARD 或 CKCC 依赖项,因此导致失败的代码路径根本不存在,你可以在我们的代码库中亲自核实这一点。在我们当前的硬件上,密钥来自经认证的安全芯片内部真正的随机生成器,绝不来自主处理器上的软件。正是这种替换导致了此次故障。
我们对此也没有盲目信任。当消息传出时,Anzen Lab 对我们的随机性进行了端到端追踪(它来自哪里、什么调用了它、以及决定哪个版本能到达你设备的构建设置),并发布了他们检查的具体文件。12
阅读 Anzen Lab 的重新核查报告这会发生在 OneKey 身上吗?
此次故障需要同时满足三个独立的条件。在 OneKey 上这三个条件全都不成立,你可以亲自检查所有这三点。
那么 OneKey 的 随机数来自哪里?
在 EAL 6+ 认证芯片内部生成
您的密钥在专用的防篡改芯片中生成并存储,而非运行其他业务的通用处理器。EAL 6+ 是支付卡和身份卡所采用的安全保障级别。
具备自检机制的随机数
该芯片利用真实的物理噪声生成随机数,并持续测试自身的输出。如果随机性开始出现异常,芯片会注意到这一点,而不是默默地继续运行。
我们对自身产品进行了重新核查
在 COLDCARD 的消息传出后,Anzen Lab 对我们自己的随机性进行了全流程追踪(它来自哪里、实际调用了什么、以及决定哪个版本最终到达你设备的构建设置),并发布了他们查看的确切文件。11


每一台 OneKey 都要过四重检查, 而每一重都不盲目信任其他三重
任何单一检查都可能有遗漏,关键在于四重检查同时遗漏同一问题的概率微乎其微——而 COLDCARD 的教训恰恰是,只要一个没人复核的构建设置就足以酿成事故。
真正可验证的开源
我们的固件和应用程序在 GitHub 上公开,并且我们的构建是可复现的,这意味着你可以亲自重新构建代码,并确认它产生的就是运行在你设备上的精确软件。这就是能够捕获“代码正确、版本错误”问题的步骤。
GitHub 上的 OneKey专职寻找自家产品漏洞的团队
Anzen Lab 是我们由硬件、固件和应用安全工程师组成的内部安全团队,并与轮换的外部研究人员合作。他们的工作是在任何产品发布之前破解硬件钱包,包括我们自己的。当这个消息爆发时,他们重新审查了 OneKey 自身的随机性端到端流程,并精确发布了他们检查的文件。11
阅读 Anzen Lab 分析报告我们付费邀请外部人员寻找我们的错误
任何人都可以通过我们在 BugRap 上的公开项目或直接发送邮件至 [email protected] 私下向我们报告漏洞,并获得漏洞赏金。严重程度决定了基于 CVSS 评分的赏金数额。核心目的在于让漏洞披露比公开出售更有价值。15
BugRap 上的 OneKey测试你手里的钱包
哪些钱包支持检查
外部人员是否能够读取设备原始随机数。这是一个狭窄的维度。请参阅其下方的说明。
这件事给整个行业留下的思考
我们发货的所有型号均未受影响。在 OneKey 设备中,密钥生成于安全芯片内部的硬件随机数发生器,绝非来自主处理器上的软件,而这种替代正是此次故障的根源。在消息公布后,Anzen Lab 重新追溯了我们自身的随机数生成机制,并公布了其核查的文件。
此缺陷存在于上述型号和版本的 COLDCARD 固件中。Coinkite 表示 TAPSIGNER、OPENDIME 和 SATSCARD 不受影响,因为它们采用不同的代码库。它没有提及任何其他制造商当前的固件,我们也无法审计其他任何人。如果你持有其他品牌,请询问制造商是否发布了足够的内容供外部人员检查。
在一定程度上,是的。entro.tools 检查链上公开地址是否存在弱生成机制的统计特征,并支持 OneKey、Trezor 和 KeepKey。它只读取区块链,从不索要你的恢复助记词,任何索要该助记词的工具都不应该被信任。
取决于你能亲自核实的内容。固件源代码是否公开,由该源码构建出的版本是否能与设备上的二进制文件匹配?是否有外部公司进行审计并发布报告?对于发现问题研究人员,是否存在付费且私密的沟通渠道?这三个答案决定了一个漏洞是被告诉制造商的人发现,还是被不告诉制造商的人发现。
参考资料
以下来源检索于 2026 年 8 月 6 日。首先是 Coinkite 自身的公告和技术报告,其次是独立的源码级分析和链上核算。损失数字仍在向上修正:Galaxy Research 在 8 月 4 日确认了 1,596 枚 BTC,并估计疑似损失接近 2,055 枚 BTC。
- 1. Coinkite · COLDCARD Mk3 Seed Generation Security Advisory
- 2. Coinkite · Technical Deep Dive into the Entropy Issue
- 3. Block Engineering · Predictable RNG Fallback and 32-Bit Reseed in COLDCARD Firmware
- 4. CoinDesk · Bitcoin cold-wallet attack spreads to 4,500 addresses as losses near $89 million
- 5. CoinDesk · Major bitcoin wallet flaw drains 594 BTC in 25-minute sweep
- 6. Crypto Briefing (Galaxy Research) · Galaxy Research identifies 1,367 BTC drained in attacks on Coldcard addresses
- 7. The Crypto Times (Galaxy Research) · Coldcard hack losses hit $100M with 1,596 BTC stolen in ongoing attack
- 8. The Crypto Times (Galaxy Research) · 15 attackers exploit ongoing Coldcard hack as losses approach $130M
- 9. The Hacker News · Coldcard Hardware Wallet Flaw Linked to $70 Million Bitcoin Theft in 41 Minutes
- 10. Bitcoin Magazine · Coinkite Releases Fixed Firmware After Coldcard Bug
- 11. OneKey Anzen Lab · The COLDCARD Entropy Failure: How a Silent RNG Fallback Cost Users $38 Million
- 12. OneKey · Statement: OneKey devices are not affected by this issue
- 13. OneKey · OneKey has passed a security audit by SlowMist — separate reports cover the Pro, the Classic 1S and the SDK
- 14. SlowMist · SlowMist Audit Report — OneKey Pro
- 15. BugRap · OneKey Bug Bounty Program
- 16. entro.tools · Entropy Check — verify your hardware wallet's randomness (device support matrix)









