为什么私钥生成中的熵源至关重要

Author logo
Patrick Dike-Ndulue
Post image

你知道 Bitcoin 私钥是一个 256 位的数字吗?这意味着可能的组合数量高达 2^256——这个数字远远超过了可观测宇宙中的原子总数。
Private keys are the linchpin of cryptocurrency security, serving as the cryptographic equivalent of a master password for your digital assets. Their security relies heavily on randomness or entropy, which is crucial in generating them. Entropy is measured in bits, quantifying a system's degree of randomness or uncertainty.

为了让你直观感受到随机性的重要性,举个例子:熵不足导致私钥生成存在严重漏洞,甚至被黑客攻击。仅在 2024 年,因私钥泄露造成的损失就超过 2.39 亿美元,这再次说明高质量熵对于密钥安全生成有多么关键。

那么,如果 Bitcoin 私钥只是一个数字,超级计算机需要多长时间才能用暴力破解它?请阅读到文章结尾,答案即将揭晓。

什么是熵?

熵是衡量随机性或不可预测性的指标,对于生成安全的加密密钥至关重要。这个概念源自信息论,用于量化系统中的不确定性。简单来说,越不可预测,熵就越高。

高熵对于加密货币的私钥来说非常重要,能确保密钥几乎不可能被猜测或暴力破解。这种随机性通常来源于多种渠道,包括硬件事件、环境噪声,或用户的鼠标移动、键盘输入等操作系统会收集这些不可预测的事件,生成真正的随机数,为安全私钥打下基础。

如果熵不足,生成的密钥可能变得可预测,从而容易受到攻击。例如,如果熵源存在缺陷,可能会反复产生相同或相似的输出,让攻击者有机会预测或重现私钥。

这种随机性极为重要,甚至云平台和虚拟机等复杂系统也会配备专用硬件,确保加密操作中有高质量熵的稳定供给。

熵是如何工作的?

在硬件钱包中,熵对于生成安全私钥至关重要。具体流程如下:

熵源

像 Tangem Wallet 这样的硬件钱包配备了专用的硬件随机数发生器(HRNG)。这些设备通过测量电子噪声或热波动等物理现象来产生随机性,这些原始熵对于生成不可预测的私钥至关重要。
部分硬件钱包还允许用户通过掷骰子等方式手动输入随机数据参与熵的生成。虽然用户输入的熵与硬件生成的熵混合后对熵的提升有限,但作为趣味补充也无妨。

密钥生成

当收集到足够的熵后,钱包会用它来生成私钥。这个过程通常会将熵与加密算法(如 SHA-256)结合,生成 256 位密钥。许多硬件钱包采用 BIP39 标准,将熵转换为一组 12-24 个单词的助记词。如果需要,可以用这些助记词恢复私钥。

过程安全性

钱包固件会确保熵被充分混合,避免可预测性。随后,私钥会被安全地存储在设备内部的防篡改环境中。这也是大多数硬件钱包配备 CC 认证安全芯片的原因。Tangem 的固件还经过 Kudelski Security 和 Riscure 两家知名独立安全机构的两轮审计。
通常,硬件钱包会将熵生成和密钥存储与设备其他操作隔离开来,这种分离极大降低了被恶意软件或外部威胁攻击的风险。

备份与恢复

由熵生成的助记词可以抄写下来妥善保存。如果设备丢失或损坏,这组助记词对恢复钱包至关重要。助记词本身包含了生成密钥所用的熵,是一种安全的备份方式。

硬件钱包依赖高质量熵,确保生成的私钥安全且抗攻击,是存储加密资产最安全的方式之一。

为什么熵如此重要?

由于熵和恢复短语本质上包含相同的信息,只是格式不同,你的熵必须像你的恢复短语一样保密。再次强调,任何人只要获得你的熵,就能访问你整个钱包!

正如助记词可以让他人获取你所有私钥、进而控制钱包下的全部账户,熵同样如此。因此,确保熵足够随机且难以推算,对于安全至关重要。

你肯定不希望有人猜出你的熵,从而盗取你的资金,对吧?这正是为什么这个数字必须难以猜测。它应该足够随机,以至于猜中序列或遇到相同组合的概率几乎为零。

如果熵容易被猜到,黑客就会利用这个漏洞,有可能窃取你的资金。因此,选择重视熵生成的加密钱包极为重要。
 

理解熵与助记词

你的助记词的随机性对安全至关重要。手动挑选单词或使用可预测的模式会极大削弱钱包的防护。Tangem 采用基于熵的方法,确保了抵御多种加密攻击所需的随机性和安全性。

虽然 Tangem 提供了安全熵生成的工具,但保护助记词的责任仍在你自己。切勿将助记词泄露给任何人,包括 Tangem 官方人员。助记词是你数字资产的钥匙,其保密性对钱包安全至关重要。
 

Trust Wallet 漏洞:高质量熵的重要性

选择加密钱包时,必须优先考虑钱包的随机数生成机制。2022 年 Trust Wallet 的安全事件,很大程度上就是因为熵生成方式可预测。

SecBit 在其博客中对该漏洞进行了详细研究与分析:Trust Wallet's Fomo3D Summer: Fresh Discovery of Low Entropy Flaw From 2018,这里简要总结要点。

Trust Wallet 的 iOS 端依赖 trezor-crypto 库生成 BIP39 助记词。该库包含了本不该用于生产环境的示例代码,并且代码中明确标注“仅用于测试,勿用于真实场景”。

  1. 代码分为两部分:random32() 和 random_buffer()。
  2. random32()
    - 该部分生成随机数,但方式并不安全。
    - 它使用当前时间作为生成随机数的起点。
    - 问题在于,如果知道大致生成时间,就有可能被猜中。
    - 更糟的是,如果两个人在同一秒生成随机数,会得到相同的“随机”数。
  3. random_buffer()
    - 该部分用随机字节填充空间。
    - 它依赖 random32(),因此存在相同的安全隐患。
  4. 核心问题
    - 这段代码用于生成助记词,进而控制用户的加密钱包。
      - 由于随机性不足,黑客猜出这些助记词的难度大大降低。
      - 本应有数百万种可能,实际上只需从几千种(基于生成时间)中猜测。
  5. 错误做法
      - Trust Wallet 忽略了警告,仍然采用了该代码。
      - 这导致生成钱包助记词时的熵极易被重现,安全性大打折扣。

Trust Wallet 的这次安全事件再次提醒我们,强熵生成对于加密钱包安全至关重要。Trust Wallet 事后为用户进行了赔付。

Tangem Wallet 如何生成熵

Tangem Wallet 从熵生成流程开始就为你的加密资产提供强大安全保障。钱包采用经过认证的真随机数发生器,并由独立专家严格测试,确保生成的数字不可预测,有效防止潜在攻击。

暴力破解 Bitcoin 私钥需要多久?

要回答这个问题,我们来拆解一下过程并估算任务规模:

Bitcoin 私钥本质上只是一个数字,但这个数字极其庞大。具体来说,它是一个 256 位的数字,也就是有 2^256 种可能的私钥。

即使用当今最强大的超级计算机,暴力破解一个 Bitcoin 私钥所需的时间也几乎无法想象,远远超过宇宙的寿命。

 

假设超级计算机每秒能验证 1 万亿(10^12)个密钥,平均找到一个私钥也需要约 3.67 × 10^57 年。而宇宙的年龄约为 138 亿年(1.38 × 10^10 年)。

换句话说,暴力破解一个 Bitcoin 私钥所需的时间,大约是宇宙年龄的 1.33 × 10^47 倍。

想想我们在这颗年轻又潮湿的地球上取得的成就,真的令人惊叹。

Author logo
作者 Patrick Dike-Ndulue

Senior editor covering crypto, onchain equities, and technology.

Author logo
經審核 Rukkayah Jigam

Writer & editor covering digital assets and product updates.