在此之前,我简单地提到了私钥和公钥的功能就像用户名和密码一样,但实际上它们只不过是具有特殊数学关系的大整数。鉴于此,我经常被问到以下问题:
“能不能使用计算机猜测或者计算出一堆数字,并尝试将它们作为私钥使用?他们最终是否会碰到某个目标公私钥对的私钥,从而获得对该身份的控制权?”事实上,就比特币而言,这将使攻击者可能窃取一些公私钥对所持有的比特币。
这是一个很好的问题,但它并不会发生。如前所述,有几个拥有价值数百万美元BTC的比特币地址,但它们好几年一直都没有被转移——尽管盗取它们需要的只是正确的私钥——也就是正确的大整数!如果你能猜到这些地址的私钥,那么你就可以将其中的钱发送给任何人。与密码不同,你可以在自己的机器上本地验证私钥,没有服务器会限制你的尝试次数或频率。
那为什么还没有人偷走这些钱呢?答案在于用作私钥的数字近乎荒谬的大小。它们足够大。
我们从一个简单的思维实验开始。想象一下,你的私钥足够大,大到世界上所有的计算机一起工作,他们需要24小时才能猜到。如果在你的私钥上增加仅仅一位数字,计算机就需要十倍的计算量,也就是需要十天而不是一天。而增加六位数字会使这一时间达到27000年。
在任何情况下,生成私钥所需创建随机数的计算能力都是微不足道的。使用私钥生成签名以及使用公钥验证这些签名在计算上也是简单的。但猜测私钥所需的工作量却随着每添加一个额外数字呈指数增长。为了使私钥“免疫”于暴力破解,我们只需要添加足够的数字——我们只需要使它们足够大。
那多大是足够大?比特币中使用的私钥是256比特的整数,相当于一个长度为76位的数字。这一数字的大小是令人难以置信的。接下来的阐释大部分来自于Bruce Schneier的图书《Applied Cryptography(应用密码学)》,对足够大整数进行直观说明。
首先,需要了解到热力学第二定律的一个具体结论是改变单个二进制位信息存在所需要的最小能量(将1变为0或反之)。这意味着无论所使用的硬件如何,任何计算过程都需要一些最小的能量来执行。
现在假设你能够利用太阳的全部能量输出来驱动一台专门设计的计算机,这台计算机的工作是计算或猜测私钥,以找到一个公私钥对的私钥(可以控制BTC)。
使用一点点数学和热力学,你会发现一台具有太阳全年能量输出计算能力的高效计算机可以计算出2178个值。如果我们将这个值除以可能的私钥数量,即2256,我们发现这个拥有太阳全年能量输出计算能力的假想计算机只能猜测或计算出可能私钥总数的0.0000000000000000000003%。
此外,这还只是计数,并不包括实际检验每个私钥以验证它是否与正确的公钥对应这一更复杂的任务。因此,这台计算机在一年之内可能错过这0.0000000000000000000003%概率的正确私钥,而它甚至都不会意识到。
这些数字与设备的技术无关; 它们是根据20世纪30年代以来建立的热力学定律所得出的可能达到的最大值。这些数字意味着对256位密钥(比特币使用的密钥)的暴力攻击将是不可行的,除非计算机是由物质以外的东西构建并占用空间以外的东西。
这就是足够大整数的能力。无论黑客有多厉害,除非他能够利用3×1023个太阳的能力计算一年,或者一个太阳的能力计算3×1023年,否则他的电脑甚至无法完成对所有私钥的计数——更不用说测试或者以其他方式使用它们了。
原文作者:Editorial Staff
文章来源:《The Layman’s Guide to Bitcoin》
原文链接:http://t.cn/REu3ORD
著权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。