为什么私钥生成中的熵源至关重要
你知道吗?比特币私钥其实就是一个 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 亿美元,足以说明高质量熵源对于密钥安全至关重要。
那么,如果比特币私钥只是一个数字,超级计算机用暴力破解需要多久?请继续阅读,答案将在文末揭晓。
什么是熵?
熵是衡量随机性或不可预测性的指标,对于生成安全的密码学密钥至关重要。这个概念源自信息论,熵用来量化系统中的不确定性。简单来说,事物越难预测,熵就越高。
高熵对于加密货币的私钥来说非常重要,因为它保证密钥几乎不可能被猜测或暴力破解。这种随机性通常来自多种来源,包括硬件事件、环境噪音,或用户的鼠标移动、键盘输入等操作系统收集的不可预测事件,最终生成真正的随机数,为安全私钥打下基础。
如果熵不足,生成的密钥可能变得可预测,从而容易受到攻击。例如,如果熵源存在缺陷,可能会反复生成相同或类似的结果,攻击者就有可能预测或重建私钥。
由于随机性极为关键,即使是云平台、虚拟机等复杂系统也会采用专用硬件,确保加密操作有可靠的高质量熵源。
熵是如何工作的?
在硬件钱包中,熵对于生成安全私钥至关重要。其工作原理如下:
熵源
像 Tangem Wallet 这样的硬件钱包配备专用的硬件随机数发生器(HRNGs),通过测量电子噪声、热变化等物理现象来生成随机性。这些原始熵为生成不可预测的私钥提供了基础。
部分硬件钱包还允许用户通过掷骰子等方式手动输入随机数据,参与熵的生成。虽然用户参与的熵和硬件熵混合有时对熵的质量影响有限,但作为趣味补充无妨。
密钥生成
当收集到足够的熵后,钱包会用它来生成私钥。这个过程通常会结合 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 助记词。该库包含本不应在生产环境中使用的示例代码,并明确标注仅供测试,不能用于实际环境。
- 代码主要包含两个部分:random32() 和 random_buffer()。
- random32():
- 该部分用于生成随机数,但安全性很低。
- 它以当前时间为种子生成随机数。
- 问题在于,如果知道大致生成时间,攻击者可能推算出结果。
- 更糟的是,如果两个人在同一秒生成随机数,他们得到的“随机”数完全相同。 - random_buffer():
- 该部分负责填充随机字节(数据单元)。
- 它调用 random32(),因此存在同样的安全隐患。 - 主要问题:
- 这段代码被用于生成助记词,从而访问用户的加密钱包。
- 由于随机性不足,黑客比正常情况下更容易猜中助记词。
- 攻击者无需从数百万种可能中猜测,只需在几千种(基于生成时间)中尝试即可。 - 错误做法:
- Trust Wallet 忽略了警告,仍然采用了该代码。
- 这导致用户钱包助记词的熵极易被重现,远低于应有安全性。
Trust Wallet 最近的安全事件再次提醒我们,强熵生成对于加密钱包安全有多么重要。Trust Wallet 最终通过赔偿用户损失来解决了问题。
Tangem Wallet 如何生成熵
Tangem Wallet 从熵生成环节就为你的加密资产提供坚实的安全保障。钱包采用经过权威认证的真随机数发生器,并由独立专家严格测试,确保生成的数字不可预测,有效防止潜在攻击。
暴力破解比特币私钥需要多久?
要回答这个问题,我们先拆解一下整个过程和规模:
比特币私钥确实只是一个数字,但它极其庞大。具体来说,是一个 256 位的数字,也就是有 2^256 种可能的私钥。
即便用现今最强大的超级计算机,暴力破解比特币私钥所需时间也几乎无法想象,远远超过宇宙的年龄。
假设超级计算机每秒能检测 1 万亿(10^12)个密钥,找到一个私钥平均仍需 3.67 × 10^57 年。而宇宙的年龄约为 138 亿年(1.38 × 10^10 年)。
换句话说,暴力破解比特币私钥所需时间约为宇宙年龄的 1.33 × 10^47 倍。
想想我们在这颗年轻又湿润的地球上所取得的成就,实在令人惊叹。