本章目标: 用逐级放大的尺度走一遍「比特币私钥可能有多少个」这个数。读完你会明白,为什么「猜出别人的比特币私钥」不是一种可以通过增加算力来改进的策略。
为什么重要
你的比特币锁在私钥后面。谁知道私钥,谁就能花;谁不知道,就花不了。
这听起来很脆弱。什么能拦住攻击者把所有可能的密钥试一遍,直到撞上你的那把?
答案是「数学」。这不是随口一说。可能私钥的总数大到你关于「大」的一切直觉全部失效:比地球上的沙粒多,比可观测宇宙的星星多,比可观测宇宙的原子还要多出许多个数量级。
这篇专题就是对那个数的巡礼。目的不是教你密码学,而是让你从胃里感受到这个尺度——从而明白「暴力破解比特币私钥」根本不算一类真实威胁。它连菜单都不在。
那个数
比特币私钥是一个 256 位的数。「256 位」意味着它可以取 2^256 个可能的值——这就是密钥空间。(其中少数值被 secp256k1 曲线排除,但减掉的量可以忽略。)
2^256 写成十进制:
115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,936
七十八位数。我们对这么大的数没有直觉。那就来建立一点。
逐级放大
| 位宽 | 近似大小 | 大致相当于 |
|---|---|---|
| 2^32 | 4.3 × 10^9 | IPv4 地址总数 |
| 2^64 | 1.8 × 10^19 | 地球上的沙粒数 |
| 2^128 | 3.4 × 10^38 | 你身体里的原子数 |
| 2^160 | 1.5 × 10^48 | 比特币地址空间(160 位哈希) |
| 2^192 | 6.3 × 10^57 | 太阳里的原子数 |
| 2^224 | 2.7 × 10^67 | 银河系里的原子数 |
| 2^256 | 1.2 × 10^77 | 比特币私钥空间——接近可观测宇宙的原子总数 |
宇宙总共有 10^78 到 10^82 个原子。比特币的密钥空间(10^77)与之同一数量级。某种真实的意义上,每把比特币私钥都是宇宙中一个原子的地址。 这不是修辞,是算术对比。
实际意味着什么
比特币对抗暴力破解的全部底气,就是这个数大得离谱。说具体点:
- 想象你征用了地球上所有计算机,全部只干一件事:猜私钥。
- 想象每台每秒试一万亿把。
- 想象你坚持了一百亿年。
你将探索 2^256 里的约 2^140 把。在这个宽 2^256 的空间里,你挖了 2^116 深——覆盖了百分之一中的无穷小一个零头。你不会碰到任何一把在用的私钥。
数学不在乎你的硬件多快。算力翻倍只让你多前进一个位。暴力破解 256 位密钥,需要把搜索空间砍半 256 次。算力每翻一倍,只砍一次。 这不是买更多 GPU 能赢的战争。
为什么恰好 256 位
256 位是奢侈的。AES-128(从 WiFi 到硬盘无处不在的对称加密)用 128 位密钥,已被认为暴力破解意义上的安全。比特币直接翻倍。
多出来的余量因为:
- 量子计算机。 足够大的量子计算机跑 Grover 算法,会有效减半对称密码的位强度——128 位安全降到约 64 位(可能可行),256 位降到约 128 位(仍然安全)。选 256 位有部分面向未来的考量。
- 生日攻击。 在 256 位空间里找到任意碰撞只需约 2^128 的工作量,不是 2^256。比特币的设计考虑了这一点。
- 双保险。 密码学原语很少被暴力攻破,通常是被缺陷攻破。宽裕的位长是安全网。
现实中对比特币密钥的攻击几乎从不是暴力破解,而是:
- 助记词被盗(人的因素)
- 密钥生成时熵不足(缺陷因素)
- 硬件的侧信道攻击(实现因素)
- 钓鱼和社会工程学(其余一切因素)
2^256 挡住的是攻击者走那条显而易见的路。其他一切,挡的是他们走隐蔽的路。
实用结论
你不必「相信」比特币的密钥安全,你可以推理它:
- 随机生成密钥(好的熵源)
- 保密
- 用不泄露元数据的钱包
- 别被钓鱼
暴力破解不在威胁模型里。数学在尽职。剩下的攻击面全是操作性的,不是密码学的。
划重点: 再有人说比特币「迟早被计算机破解」,就问他:史上最强的计算机至今探索了 2^256 的百分之几?答案实际上是零——而且算力的指数级改进不改变这个答案。