比特币私钥:比特币私钥是怎么产生的,它可以被

比特币私钥:比特币私钥是怎么产生的,它可以被破解吗?


比特币私钥:比特币私钥是怎么产生的,它可以被破解吗?

  如果你拥有比特币,你可能最关心的是余额,而决定余额的是私钥,所以你最应该关心的,其实是私钥。当我们谈到比特币安全相关的问题时,我们也会提到私钥,之前的文章《比特币的助记符是什么》里提到的助记符,其实也可以理解为私钥的一种表现形式,但私钥究竟是什么?也许鲜有人知道。

  私钥是什么

  私钥是一个256位的随机数

  私钥的定义非常简单,但其中有2个专业术语可能会使不了解计算机的同学感到困惑,一个是256位,另一个是随机数,下面内容是该定义的白话文解释,已经理解了的同学可以跳过:

  256位 - 字面上很容易被理解为256个十进制数字,其实不是的,因为计算机是用二进制来存储和计算的,所以256位指代的是256个二进制数字,下图是一个例子

  随机数 - 意思是这个数的产生没有规律

  所以

  私钥是一个数字,这个数字可以取从0到2²⁵⁶-1之间的任意值

  私钥可以被破解吗

  看到这里,你可能也会产生和我一样的疑惑——私钥也太简单了把,我随便写一个数,只要不超过最大值,就可以用作私钥,对吗?是这样的,没错。

  那按照私钥可以算出公钥,公钥可以产生地址的逻辑,岂不是我随便选一个数作为私钥,然后算出它的地址,如果这个地址上正好有未使用的比特币,是不是就代表我破解了别人的账号呢?

  年轻人,你说得没错,其实我一开始也是这样想的,虽然现在回想起来觉得有点Naive……

  虽然私钥只是一个简单的数字,但它仍然很难被破解,原因在于这个数字的集合足够大,大到我们很难穷尽所有数字,并对它们进行逐一的验证。2的256次方近似于10的77次方,10的77次方有多大,我再举个例子你就清楚了

  到目前为止,人类可观测的宇宙中的原子数约为10的80次方

  进一步,因为这个数的范围很大,所以我们能猜中一个正确私钥的概率就变得非常低,假设地球上使用比特币的人数达到100亿,也就是10的10次方,则你猜中一个比特币私钥的概率是

  这个概率到底有多小呢,我再给你举两个例子:

  "双色球"一等奖的中奖概率是8×10ˉ⁸。——摘自《中国福利彩票的中奖概率》

  从全世界范围来看(假设全世界人口为70亿),一年中每个人遭遇雷击的概率是175万分之一(5×10ˉ⁷)。——摘自中国气象局-《遭遇雷击的概率有多高》

  说明什么呢?说明

  被雷击中的概率 > 抽中500万的概率 >> 猜中比特币私钥的概率

  上面的不等式中,我用了>>这个符号表示远远大于

  从概率的角度,我们确实很难破解私钥,但此时你可能会问,彩票一等奖和被雷击中很难发生,在于它们发生的频率很低,但计算机不一样,计算机的计算速度很快,我们可以很容易的利用计算机的处理速度,来提升猜中私钥的可能性,也就是快速计算10的67次方个私钥,总有一次猜中把。

  是的,通过这种暴力破解的方法确实可以实现破解比特币的私钥,但它要付出的代价也是极其高昂的,下面我们就来做个试验。

  我在我的Macbook Pro 2015版上运行了一条命令

  $ begin=`date +%s`; for ((i=0;i<10;i++));do bx seed | bx ec-new | bx ec-to-public | bx ec-to-address | xargs -I@ ./btc_balance -addr @ > /dev/null; done; end=`date +%s` ; echo `echo "scale=2;$end-$begin" | bc`15

  这条命令看不明白没关系,我来介绍下它的功能:

  这条命令会随机产生10个比特币的私钥和地址,并获取它的余额,这是暴力破解的基本步骤(其实还差一步判断余额是否大于0,如果大于0就代表猜中了,但我们这里只预估成本,可以省去这一步),产生10个私钥的目的是为了利用计算机的并行能力,因为我的CPU有4个核心;这条命令还会输出程序运行所需要的时间,可以看到最后一行的15表示运行了15秒

  利用这个程序的输出,我们就可以计算出猜中一个私钥需要花多长时间了,猜10个私钥需要15秒,那么10⁶⁷次猜测,需要

  

  注意,经过换算,等式右边的单位已经是年了,通过简单的实验和计算,我们可以估算出,想要暴力破解比特币私钥,几乎是不可能完成的任务。

  使用安全的算法产生私钥

  即便私钥的设计已经足够安全,但如果使用不当,仍然会产生严重的后果,正如统计结果显示:目前还是有很多人使用1234567作为他们的账户密码——就是一个典型的例子。

  我们不要自己去生成私钥,最好借用比特币软件,例如钱包或bitaddress.org这样的站点来帮你产生私钥,这里简单介绍下这些软件产生私钥的原理,大致分为3个步骤:

  产生一个很长的随机字符串(随机源)——例如bitaddress.org网站就是通过捕捉人们滑动鼠标的随机行为来产生随机源的。

  将步骤1的数据输入到SHA256 hash算法,输出一个256位的数

  确保产生的数在私钥规定的范围之内,否则重新回到第1步。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。【本站不拥有所有权,不承担相关法律责任。】

上一篇:比特币事件:印度爆发史上最疯狂比特币失窃事件 下一篇: 美卡币 (二十四):区块链货币介绍。

本文地址:http://www.bruyi.com/btbzx/1818.html

站长统计