为什么糟糕的熵依然让加密货币损失数百万

如果没有强制的熵标准,下一个数十亿美元的损失可能已经在酝酿中。

Author logo
Patrick Dike-Ndulue
已更新
Post image

2026 年 7 月 31 日,攻击者在 25 分钟内清空了约 500 个比特币钱包。这次攻击共转移了约 594 BTC,价值约 3800 万美元,而这些钱包的所有者本是为了避免此类风险才特意购买了硬件钱包。
 

Coinkite disclosed that COLDCARD 固件一直在用软件伪随机数生成器来生成密钥,而不是设备内置的硬件生成器。代码库中有两个同名同签名的函数,链接器选择了错误的那个,编译时也没有任何警告。
 

这只是众多案例中的最新一例。在过去十年里,加密货币领域最大规模的损失往往并非源自复杂的攻击手法,而是因为一个更基础的问题:随机性不够“随机”

私钥背后的秘密是什么?

无论是应用、浏览器插件还是硬件设备,加密货币钱包的安全都取决于一件事:生成无人能猜到或复现的数字。在这里,“熵”指的就是生成数字时的不确定性。


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

熵的来源

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

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

设备刚开机的前几毫秒,这些噪声池可能还是空的,或只初始化了一部分。如果加密库过早调用随机数生成器,得到的数字虽然技术上是随机的,但实际可搜索空间很小,容易被穷举。


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


交易签名中的随机性

签署比特币或以太坊交易时,私钥并不会直接参与。你会先生成一个 随机数(nonce),然后将其与私钥结合,通过椭圆曲线数字签名算法(ECDSA)生成签名。

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

  • 私钥(d),
  • 随机数(k),
  • 交易消息的哈希(z)。

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


2013 年,一项 Android 平台的 SecureRandom 函数漏洞导致早期比特币钱包生成了可预测的 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 会直接为芯片内部的密钥生成过程提供随机性。


并非所有“硬件”都一样

硬件钱包涵盖了各种设计,并非都能为随机性和密钥隔离提供同等保护。


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


但这类设备往往只是用设备内部状态为伪随机生成器提供种子,而非完全符合标准、经过测试的 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 估算 Mk3 硬件的有效搜索空间约 40 位,后续混入安全元件数据的型号约 72 位,均低于 128 位目标。

    本有一项防护机制专为此类问题设计,但它只检测宏是否被定义,而非其值是否为零。宏被设为零,检测通过,错误未被触发。

考虑从 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.