我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:神州彩票 > 二进制数字 >

加密世界里最强大的数字:2²⁵⁶

归档日期:04-23       文本归类:二进制数字      文章编辑:爱尚语录

  声明:本文由站长之家内容合作伙伴 36 氪战略合作区块链媒体“Odaily星球日报” 授权发布。

  我们知道,计算机都是基于二进制数字计算的。下面是一个示例,如果以两位数字表示的话,每位上的数字只能用“0”或“1”,那么我们可以产生下面四种可能的组合(注意我们计数是从 0 开始的):

  如果以位数是 3,那么可能的二进制组合就有九种,即“2 的 3 次方”,如下所示:

  如果位数有 256 个,那么就意味着有“2 的 256 次方”种可能的二进制组合,这也是一个非常非常大的数字组合!那么,“2 的 256 次方”在十进制中是什么样子呢?请不要眨眼,答案就是:

  如果你无法直观了解“2 的 256 次方”——即“1.158 乘 10 的 77 次方”有多大的话,我们在此做一个比较,或许能让你更清楚地了解这个数字的“可怕”,相比之下:

  2、在“可观察”的宇宙里,估计有“30 乘 10 的 21 次方”到“70 乘 10 的 21 次方”或“10 乘 10 的 23 次方”颗恒星;

  3、在“可观察”的宇宙里,估计有“1 乘 10 的 78 次方”到“1 乘 10 的 83 次方”个原子。

  所以,“2 的 256 次方”是可观察的宇宙中所有恒星总量的 3.5 倍,仅比可观察宇宙中的原子总量“少几个零”。

  “2 的 256 次方”非常重要,因为它是加密技术在区块链中可能使用的私钥值的全部“感知”范围。

  在加密货币世界里,如果要破解一个 256 位的加密安全系统,就必须要猜对一个 256 位的比特串,而且还要猜对两次,第一次要在电子签名的时候,第二次是在解密码哈希函数的时候。

  举个例子,如果你想找到一条信息,让它的 SHA256 哈希值等于某个 256 位比特串的话,基本上没有别的好办法,只能随机猜测并检验结果——这意味着,平均下来,你需要尝试“2 的 256 次方”次!(除非你的运气非常非常非常...好,好到拥有了“2 的 256 次方”分之一次的运气)

  “2 的 256 次方”这个数字比我们通常遇到的数字都要大得多,因此很难去体会它的规模,但你可以把它看作是“2 的 32 次方和自己相乘 8 次”,这样想会让你容易理解,因为“2 的 32 次方”大约等于 40 亿(4,294,967,296)。现在,我们要做的就是去体会一下 40 亿连续乘 8 次是怎样的概念:

  相信我们大多数人都知道,计算机里的 GPU 可以飞快地进行大量并行计算,因此要是你专门让 GPU 反复计算密码哈希函数,一个性能很好的 GPU 每秒也许能算出接近 10 亿个哈希值,假如你拥有一堆这样的 GPU,然后全部塞进计算机里,让你的计算机每秒能计算出 40 亿个哈希值,那么最开始的 40 亿就代表了每台计算机每秒算出的哈希值数目,想象一下 40 亿台这样满载 GPU 的计算机——对比一下,虽然谷歌没有对外公布他们的服务器数量,但有人估算大约有几百万台,而现实中谷歌的大部分服务器算力都不如我们满载 GPU 的电脑,不过我们假设谷歌把上百万个服务器全部换成满载 GPU 的计算机,那么 40 亿台计算机大概就相当于 1000 个这种“打了鸡血”的谷歌,为了更好地解释,我们暂时把这种算力成为“千谷歌(thousand Google)”。

  现在,全世界人口总数大约有 73 亿,接下来,我们假设有 40 亿人人手都拥有一台这样的“千谷歌”计算机。然后,再想象一下有40 亿 个地球(作为对比,银河系检测到的恒星数量大约为 1000-4000 亿颗,虽然不太确定,但估算大致就在这个范围),所以相当于银河系 1% 的恒星会有一个地球,并且这个地球上超过一半的人口都拥有自己的“千谷歌”计算机。

  接着想象有 40 亿个这样的银河系,我们把它叫做“亿万星系超级计算机”,每秒能猜“2 的 160 次方”次。下面,40 亿秒大概是 126.8 年,而它的 40 亿倍就是 5070 亿年,差不多是宇宙年龄的 37 倍,所以就算你有——满载 GPU 的 40 亿台计算机 + 40 亿人手一台“千谷歌”计算机+ 40 亿个像地球一样的行星+ 亿万星系超级计算机,再花上 37 倍宇宙年龄的时间,也只有 40 亿分之一的可能性得到密钥的正确答案。

  顺便提一下,目前比特币的哈希算力——把所有矿工都加起来,每秒能猜测并检验 500 亿亿个哈希值,只相当于之前提到的“千谷歌”计算机算力的三分之一。当然这并不是因为真的有几十亿台满载 GPU 的计算机,而是因为矿工使用的是比 GPU 算力强 1000 倍左右的芯片,它叫做“专用集成电路(ASIC)”,这些硬件是为比特币挖矿量身定做的,但这种芯片什么都不会做,只会计算基于 SHA256 算法的哈希值。换句话说,如果你想获得庞大的算力,就不得不放弃一般的计算需求,去设计一个只能执行一个单一任务的集成电路。

  不完全是这样,并非所有“2 的 256 次方”范围内的数字都会用在查找匹配公钥的数字曲线上。比特币和以太坊(以及其他许多加密货币)使用的是 secp256k1 椭圆曲线,该区先定义的公钥匹配范围略小于“2 的 256 次方”。如果再略微准确地表达 secp256k1 椭圆曲线数字范围的话,可能这个结果是:

  在数学上,这是一个近似值的问题,就好像我们会把 100 亿减 10 的结果看作仍是 100 亿一样。

  (星球君 o-daily 注:简单解释一下“secp256k1”的含义,它其实是“SEC”、“P”、“256”、“K”和“1”这几个字母和数字的组合,每个都有不同的含义:其中“SEC”代表了 SEC2 高效密码学的标准,“P”代表曲线 位长,“K”表示它是所谓 Koblitz 曲线”表示它是该类型的第一个、也是唯一的曲线标准。)

  同时也存在着 128,256,320 位元的这种算法,称为 RIPEMD-128、RIPEMD-256 和 RIPEMD-320。 128 位版本的用意仅是取代原始版RIPEMD,因为原版也同样是 128 位元,并且被发现有潜在的安全问题。 而 256 和 320 位版本只有减少碰撞发生的机率,但没有提升安全等级。不过,RIPEMD 的设计者们没有线 位元这两种标准,他们只是在 128 位元和 160 位元的基础上,修改了初始参数和 s-box 来达到输出为 256 和 320 位元。所以,256 位的强度和 128 相当,而 320 位的强度和 160 位相当,且 RIPEMD 建立在 md 的基础之上,所以其添加数据的方式和 md5 完全一样。

  以太坊将密钥长度减少到 160 位,这仍然是一个非常大的数字,以十进制表示的线。

  这个数字有多大呢?目前我们可观测的宇宙宽度为 8.8 x 10²⁶ 或 8.8 x 10²⁹ 毫米,如果我们把一个比特币或以太坊地址看作为 1 毫米,那么其密钥长度相当于超过了可观察宇宙长度的两倍。

  对于以太坊来说,其唯一钱包地址实际总量可能是 1.46 x 10⁴⁸,这也引发了一个棘手的问题:我们有 2²⁵⁶ 个可能的私钥却要映射到 2¹⁶⁰ 个可能的公钥上,逻辑告诉我们,每个公钥都可能会有超过 1 个私钥。但即便如此,这也意味着你需要在 2⁹⁶ 个私钥(假设每两个私钥映射一个公钥)中找到能够对应某个地址的公钥哈希——在此,我也许只能祝你好运了!

  加密货币私钥的可能值范围非常非常大,即便其可能会略低于 SEC2 标准中定义的“2 的 256 次方”,但仍然是一个异常庞大的数字,所以两个私钥相同的可能性超级低,除非有骗子要做坏事。

本文链接:http://runhappyplace.com/erjinzhishuzi/25.html

上一篇:没有了

下一篇:看浙江新闻关注浙江在线微信