破解比特币私钥有多难?
阿牛哥 Lv4

破解比特币私钥有多难?今天阿牛哥替大家算一算。

比特币用到了哪些密码学算法?

密码学是现代信息安全的基石,我们们天不管是上网、娱乐还是购物,都会用到密码技术。数字货币又名加密货币,也是充分利用了各种加密技术后的成果。

比特币利用了非对称加密算法和数字摘要算法。其中非对称加密算法具体指的是椭圆曲线算法ECDSA,而数字摘要是SHA256。

至于什么是非对称加密,什么是数字摘要,请自行搜索,这里不做赘述。

这些算法都是很难破解的,要破解没有捷径可走,只能一个个去猜去试,也就是所谓的暴力破解。

暴力破解的形象比喻

对于不可逆的算法,我们只能进行暴力破解。打个比方,有一间没有门窗的完全封闭的屋子,屋内的墙壁是反光镜,虽然很不平整能够完全反射光线,一束光照上去可能向任意角度反射光线。

现在在屋顶上开一个小孔,照一束光进去,光线会在屋子里来回反射,假设经过几亿亿次的反射后最终落到了一个点上。

已知了光线最后的落点,现在要求出光线一开始入射的位置和角度。这个问题就是一个不可逆的过程。从入射参数计算出最终落点是很简单的,可是要从最终的落点计算出入射参数呢?不是不可能,而是计算量太大,也许要通过不知道多少个亿亿次的计算才能碰巧碰到真实的入射参数。

这就是暴力破解的难题所在:计算量巨大,即使能算出来,花费的时间和成本也是大到难以想象的。

暴力破解ECDSA

相比ECDSA,大家更熟悉的是RSA,它们都是非对称加密算法。RSA是最早被广泛使用的非对称加密算法法。相比RSA,ECDSA是一种破解难度更大的算法。

网上有个比喻,假如破解RSA需要的电力能烧开一壶水的话,那么破解ECDSA需要的能量足以将整个地球的水烧开。

我们现在破解RSA需要的能量也远大于烧开一壶水,所以可见破解ECDSA需要多少成本!简言之,破解ECDSA在当下是不可能的。

有人了解过量子计算机,据说用量子计算机破解密码效率远大于经典计算机,后面我们会算一算到底量子计算机破解需要多久。

暴力破解SHA256

SHA256是数字摘要算法,不管你拿什么样的值作为输入,SHA256都会给出一个固定长度的字符串作为输出。

1
2
3
4
5
echo '破解比特币私钥有多难?' | sha256sum
c9981aedc092480c8d999c13244e66f96d9b1da12a61b2f6a95737b0e2b72394 *-

echo '破解比特币私钥有多难!' | sha256sum
3cad400704b2d82592af896b51944c3de6a992c1717155ff37f776a2ccecd7d8 *-

如上,只要输入有一点点变化,输出的值也将变得与之前的输出值完全不同。

我们无法根据最后输出的那一串固定长度的字符串来确定输入是什么样。破解的方式就是用无限多的输入去猜,直到出现想要的输出为止,这种计算想想都知道有多离谱,比大海捞针还难。

比特币的私钥、公钥和地址的关系

比特币的私钥是钱包拥有者唯一要妥善保管的数据,决不能泄露。因为公钥和地址都是从私钥计算出来的。

比特币生成钱包地址的过程如下:

  1. 生成一个256bit的随机数作为私钥
  2. 通过ECDSA计算出公钥
  3. 对公钥进行SHA256哈希
  4. 对上一步结果再计算一次RIPEMD160变换
  5. 对上一步结果做Base58变换,得到钱包地址

上述就是私钥到地址的生成过程:私钥->公钥->地址,其中只有最后两部是可逆的,前3步都是单向不可逆的。暴力破解就是要从SHA256的结果猜测出公钥,从公钥猜测出私钥。

破解过程

地址是一个160bit的二进制数,所以比特币一共可以有2^160个地址。那么不难看出破解出一个地址的概率是

概率 = 有效地指数 * 破解速度 / (2 ^ 160)

我们以目前BTC的有效地指数10,000,000来计算。破解速度代表每秒从猜测私钥到获取到该私钥所对应的地址的速度,以目前的硬件计算能力看,最多猜测10,000个/秒,那么我们来算一下每秒钟我们有多大概率碰撞到一个有效的钱包地址。

10000000 * 10000 / (2 ^ 160) = 6.8 * 10 ^ -38

以上就是每秒钟破解到一个私钥的概率,这个数字有多小呢?把换算成每年破解到一个的概率就是

6.8 * 10 ^ -38 * 3600 * 24 * 365 = 2.1 * 10 ^ -30

一年内破解出一个的概率是0.0000000000000000000000000000021。破解一个平均需要470000000000000000000000000000年!已经超远远远远过了宇宙的年龄啦!

如果用更快的量子计算机来破解,假设量子计算机每秒能猜测1,000,000,000,000,000个每秒,那也破解一个需要470000000000,也远超宇宙年龄。

还有一点,比特币目前还处在活跃的开发当中,即使今后量子计算机破解真的可行了,比特币的密码算法也会升级,一旦切换到抗量子破解的算法,比如格密码,那么比特币依然是安全的!

写在最后

由此可见破解比特币私钥有多难,即是真的有人破解了(当然这不可鞥),耗费的电力也会远远大于去挖矿获得的收益。