能不能穷举区块链私钥?

半兽人 发表于: 2018-05-09   最后更新时间: 2018-06-04 17:23:03  
{{totalSubscript}} 订阅, 7,106 游览

如果你知道一个私钥,意味着你可以转走里面的比特币。

如果有人运行一台超级电脑去穷举私钥,(由于不可能反演ESCDA和SHA,指用“公钥推导出私钥”)那么他要做的事情是:

  1. 随机生成私钥
  2. 检查该私钥是否有钱
  3. 返回1(重复)

这是否代表这个程序可以像彩票一样随机穷举出一个什么人的私钥呢?

宇宙的法则

每当人们仰望苍穹中银河系的星海,在巨大的宇宙尺度上,无数点繁星代表的是一个又一个遥远的世界。而每个世界又是由无数基本粒子组成的。可见宇宙中的原子大概有10的60到80次方个,而比特币的私钥总数2^256个,又比宇宙中原子的数量多出好几十个数量级。如果你用一台太阳系大小的超级计算机,使用太阳的全部输出功率,直到太阳燃尽也不能从1遍历到2^256-1,这只不过是遍历,更别说计算HASH和比较了。

因此比特币的数学基础,让人有一种对宇宙的敬畏。

私钥多到什么程度呢?

私钥有32个字节(1字节=8位二进制),所以私钥的总数是2^(8*32)=2^256个≈10^77个。

10^77是个什么概念,很多人可能都理解不了,我们打个比方,假设全宇宙都在穷举私钥。

假设宇宙有一亿个星系,
每个星系有一亿颗恒星,
每颗恒星有一亿颗人造卫星,
每颗人造卫星上有一亿台超级计算机,
每台超级计算机有一亿个CPU,
每个CPU每秒可以穷举一亿个私钥。

假设有一亿个私钥的地址上有BTC(每个地址平均0.21BTC),那么,多久可能穷举出一个有币的私钥?

10^77(私钥总数)/10^8(有币私钥)/10^8(星系)/10^8(恒星)/10^8(卫星)/10^8(超级计算机)/10^8CPU)/10^8(每秒穷举)=10^21秒。
10^21秒/3600秒/24小时/365天=317098亿年。

也就是说,假设全宇宙都在穷举私钥,那么每1000倍宇宙年龄,可以期望穷举到0.21 BTC。

相比之下,还是期望中彩票头奖(概率大概一千万分之一 = 10^7)比较靠谱,整整靠谱了10^62个数量级。

有没可能通过某种方法优化这个穷举过程?

比如说“集中算力在一个区块进行计算”,
“经过赛选出来的区域,算完这个区域,里面所有50个币的地址都会计算出来”。

私钥本质就是一串256位长度的 1101000100101010……,没有任何所谓的特征,区域。
至于通过中本聪地址来反推公钥或私钥的特征,那更是不可能,因为比特币地址的生成过程可以简单描述为:

私钥 —(椭圆曲线加密算法)—> 公钥 —(多次哈希算法)—> 地址。

其中公钥到地址经过了信息摘要的哈希算法,有信息损失,是不可能逆向的。

为什么呢?比如我写了一篇文章,然后我告诉你这篇文章有815个字(信息摘要),
那么,你能从这个信息摘要,反推出我这篇文章的内容吗?

显然不可能嘛……嗯嗯……除非把所有815字文章穷举出来。

所以,当然也不可能通过地址反推私钥。

更新于 2018-06-04

kang~`` 5年前

量子计算会破解吗?

查看blockchain更多相关的文章或提一个关于blockchain的问题,也可以与我们一起分享文章