糟糕的熵,仍在悄然掏空加密资产数百万美元

如果没有强制的熵标准,下一场数十亿美元的损失或许已经在发生。

Author logo
Patrick Dike-Ndulue
已更新
Post image

2026 年 7 月 31 日,一名攻击者在 25 分钟内清空了大约 500 个比特币钱包。这次行动共转移了约 594 BTC,价值约 3800 万美元,而每一个受害钱包的主人,原本都是为了避免这种后果才专门购买了硬件钱包。
 

Coinkite disclosed that COLDCARD firmware had been generating keys using a software pseudorandom number generator rather than the hardware generator built into the device. Two functions in the codebase shared the same name and signature, so the linker selected the wrong one, and the build produced no warning.
 

这只是漫长案例清单中的最新一例。过去十年里,加密货币领域最大的损失往往不是来自复杂的漏洞,而是更基础的问题:随机性不够随机

私钥背后的“熵”是什么?

无论是 App、浏览器插件还是硬件钱包,加密钱包的安全都取决于一件事:生成别人无法猜测或复现的数字。这就是“熵”在这里的含义——生成数字的不确定性有多少。


熵是钱包用来生成私钥的原始随机性,以比特为单位。比特数越多,攻击者需要穷举的密钥空间就越大。熵在钱包初始化时注入,每个密钥、地址和签名都遵循固定的数学规则,之后不会再有新的随机性参与。

熵的来源

理论上,钱包可以通过 伪随机数生成器(PRNG)获取随机性:这种算法能把少量“真实”熵扩展成所需的任意长度,但前提是初始种子本身足够不可预测。

在浏览器标签页或刚启动的手机上运行的软件,往往像处于感官剥夺舱。要生成真正的随机数,程序需要“噪声”——来自外部世界、不可预测的输入,比如处理器时序抖动、鼠标移动或专用硬件组件。

设备刚上电的最初几毫秒内,这些噪声池可能为空或只初始化了一部分。如果加密库过早调用随机数生成器,可能只能从浅层池中取数,虽然技术上是“随机”,但实际可穷举的空间很小。


浏览器自身也有限制。JavaScript 的 Math.random() 从未为安全设计,即使更安全的 crypto.getRandomValues() 也依赖操作系统底层的熵池。如果熵池本身较弱(如移动沙盒、虚拟机或精简 IoT 设备),随机性在到达生成私钥的代码前就已被削弱。


交易签名中的随机性

签署比特币或以太坊交易时,并不会直接用私钥,而是先生成一个 nonce(一次性随机数),再与私钥一起用于椭圆曲线数字签名算法(ECDSA)生成签名。

关键在于:如果同一个 nonce 被同一私钥重复使用,攻击者就能通过数学公式直接解出私钥。
ECDSA 签名是一对数字 (r, s),满足如下特定方程:

  • 私钥(d),
  • nonce(k),
  • 哈希后的交易消息(z)。

如果 k 在两条不同消息中相同,方程就能联立,任何看到两组签名的人都能算出 k。一旦 k 被算出,d(私钥)也能通过简单的乘法和模逆推算出来。


2013 年,flaw in Android’SecureRandom function caused early Bitcoin wallets on the platform to produce predictable nonces. 当时平台上的比特币钱包因为这个漏洞生成了可预测的 nonce,用户资金在毫无察觉的情况下被盗。


与普通的代码错误不同,低质量的随机性并不能通过读源码直接发现。函数调用看似没问题,但如果不实际测量输出比特并做统计测试验证其不可预测性,致命漏洞可能在明面上隐藏数月甚至数年,直到被耐心的攻击者利用。

 

熵为何始终是顽疾?原因可以归纳为:

  • 启动熵枯竭:设备刚上电时,尚未积累足够环境噪声为 PRNG 提供种子。

  • 浏览器限制:JavaScript 的 Math.random() 不安全,crypto.getRandomValues() 也依赖主机环境的熵池。

  • 不安全的工具:定制地址生成器、离线脚本或维护不善的库,常常为追求速度或可复现性牺牲了随机性。

  • 人为输入:“脑钱包”和用户自定义短语,往往被字典攻击轻松破解。

密码学界长期以来更青睐硬件随机数生成器(HRNG),也称为真随机数发生器。它们将电子抖动、热噪声、放射性衰变等物理现象转化为随机比特,并能持续自检是否存在故障或偏差。

硬件如何解决这一问题

在高安全级别系统中,解决方案很直接:在内置认证 HRNG 的芯片内生成密钥,并且绝不复制密钥。

A secure element is a purpose-built, tamper-resistant microcontroller. It is a fortified chip designed to store secrets and perform cryptographic operations without revealing the underlying keys. They are the same class of component used in passports to prevent cloning, SIM cards to authenticate devices to mobile networks, and contactless payment cards to authorize transactions.


安全元件可以内置硬件随机数生成器,其不可预测性来自物理噪声(如热波动、振荡器抖动),而不仅仅依赖数学算法。 


这些 HRNG 并非“一次性”设备。根据 如 NIST SP 800-90B 等标准,芯片必须持续健康检测,检查每个输出流是否存在统计偏差、卡位或其他可能导致随机性下降的故障。如有异常,芯片会立即停止密钥生成。在优秀的硬件钱包中,安全元件的 HRNG 会将随机性直接注入芯片内部的密钥生成流程。


并非所有“硬件”都一样

“硬件钱包”这个概念涵盖了各种设计,不同产品在随机性和密钥隔离保护上差异很大。


低端设备多基于通用微控制器,这类芯片为灵活性而设计,难以抵御物理或侧信道攻击。多数仅内置基础随机数生成器。 


但这些生成器往往只用设备内部状态作为种子,未必符合 HRNG 标准要求。此类设计下,密钥生成可能在固件层完成,私钥临时存储于 RAM 或闪存。一旦固件有漏洞、侧信道攻击成功或遭到物理篡改,密钥就有泄露风险。
 

相比之下,基于安全元件的钱包将熵源和密钥生成逻辑都放在防篡改环境内。这种模式还强制访问控制:加密操作(签名、推导)均在芯片内完成,只有最终签名或公钥会输出,私钥绝不离开芯片。

标准早已确立

随机性问题并不是未解的科学难题。密码学家早已明确了高质量熵的标准。美国 国家标准与技术研究院(NIST)发布了 SP 800-90 系列标准,将问题细分为若干明确部分。


SP 800-90B 规定了如何评估熵源:即产生不可预测比特的物理或软件过程。标准要求对每个比特流进行严格的统计分析,估算真实熵值,并持续健康检测以监控偏差或故障。


SP 800-90C 则说明如何将熵与 确定性随机比特生成器(DRBG)结合,即使某一源退化,输出依然强健。


合规设备不会只生成一次随机数就“听天由命”,而是持续自检:如果 HRNG 噪声模式变化、比特“卡住”或输出未达统计阈值,系统会立即停止密钥生成,避免产生弱密钥。

如何判断自己是否有风险

大多数用户无法直接测量熵,但可以追问密钥是在哪里、如何生成的。如果是在“网页”或“老旧 Android 应用”里创建,尤其是 2010 年中期前,这些密钥大概率很弱。最安全的做法是在使用认证、可溯源随机性的硬件设备上新建钱包,再把资产转入。

熵攻击事件年表

熵不足让攻击者无需逆向推理。只需枚举被破坏生成器可能生成的密钥集合,推导各自的地址,再与区块链余额比对即可。历史案例包括:

  • 2018—IOTA 助记词生成器骗局:用户被要求用某网站生成钱包种子,站长私自保存了所有种子,后续盗走资金,共计约 400 万美元。此处随机性为零,攻击者完全知晓密钥。
     

  • 2019—Blockchain Bandit安全研究者发现 732 个弱以太坊私钥,未知攻击者数年间监控这些地址,只要有资金到账就立即转走,累计约 4.5 万 ETH。
     

  • 2022—Profanity 定制地址灾难:开源 Profanity 工具用仅 32 位熵生成以太坊定制地址,约 40 亿种可能。现代 GPU 数小时可穷举全部。伦敦做市商 Wintermute 因此损失约 1.6 亿美元。
     

  • 2023—Trust Wallet 浏览器插件漏洞Ledger 安全团队披露,该插件生成的钱包种子熵仅约 32 位。问题虽被迅速修复,Trust Wallet 也补偿了部分用户,但几个月内所有用该插件生成的钱包都处于风险中。
     

  • 2025—LuBian 指控Arkham 的说法尚未证实,但如果 127,426 BTC 的损失真因密钥可预测,那将是密钥生成环节失误导致资产归零的最极端案例。 
     

  • 2026:COLDCARD:Coinkite disclosed that a software pseudorandom generator had replaced the intended hardware generator in shipped firmware. The fallback entered the upstream dependency in May 2018 and reached key generation in March 2021.

    Coinkite estimates about 40 bits of effective search space on Mk3 hardware, and about 72 bits on later models that mixed in secure element data. Both figures sit below the 128-bit target.

    A guard existed to prevent exactly this. It tested whether a configuration macro was defined, rather than whether its value was non-zero; the macro was set to zero, so the check passed and the error never fired.

考虑从 COLDCARD 切换?

Tangem 会在认证安全元件芯片内,利用硬件随机数生成器直接生成你的密钥。

如果你厌倦了为助记词担惊受怕,我们的无助记词方案无需写下、拍照或保存 12 或 24 个单词,这正是大多数钱包被盗的根源。

已通过 Cure53、Kudelski 和 Riscure 独立审计。为此刻而生。

把你的币转到真正“随机”的地方。选用 Tangem Wallet

Author logo
作者 Patrick Dike-Ndulue

Senior editor covering crypto, onchain equities, and technology.

Author logo
經審核 Patrick Dike-Ndulue

Senior editor covering crypto, onchain equities, and technology.