区块链自诞生以来,其不可篡改性、去中心化的特点,让大家对它的前景充满了想象力。但是,也有一部分人提出了自己的质疑:区块链中使用的密码学相关技术是否安全?量子计算机普及之后,又会对它有怎样的影响? 今天这篇文章就来为大家揭开区块链技术的核心:哈希函数,以及它究竟有多安全。 01?什么是哈希函数 在“狂轰乱炸”了一年以后,相信大家都知道了什么是比特币,什么是区块链,也对区块链中的核心之一“哈希函数”有所听闻。 哈希函数是区块链的核心技术之一,正因为哈希函数的不可逆性,保证了区块链的安全。 哈希函数和很多其他的学术概念一样,说简单一两句话也能懂,说难了跟“无字天书”没啥区别。今天不跟大家走“知乎风”了,咱们接地气地来看一看,哈希函数究竟是什么。 一句话来总结,哈希函数的特点就是:失之毫厘,差之千里! 凡是函数,基本都可以写成以下这种形式:f(x) = y 其中,x是输入,y是输出。哈希函数也不例外。 哈希函数的输入可以是任意信息或文件,但输出是固定的256位比特串。请一定牢记这一句定义,记住了这话,就抓住了哈希函数的精髓。 下面,举一个哈希函数的例子,语句I am HammerWang的哈希值: hash("I am HammerWang") = 11000111000001010000001011111101110111011110001100011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 然后,我们只把其中的H换成小写的h: hash("I am hammerWang") = 100100110101110110110011101010100110100010001000010110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 通过对比,大家可以看到,即使输入改变了一个字母的大小写,输出结果也相差很大。 那么,如果我们知道了哈希函数的输出/结果,要倒推输出,可以怎么做呢? 答案就是,除了猜,没有更好的办法! 注:“猜”的意思是,随机猜测输入,然后检测输出结果是否与已知的结果相符。所以,很容易就可以推算出,如果要猜出哈希函数的正确结果,我们大概平均要猜测2^256次(2的256次方)。 这里补充一下哈希函数在区块链中主要在哪些关键处被使用:签名 :保证个人账户安全;区块头哈希值:?保证了整个区块链系统的不可篡改性; 从以上两点,我们可以看出,无论从整个系统还是用户自身的角度出发,哈希函数都是至关重要的一个函数。一旦这个函数被攻克,那么整个区块链的安全岌岌可危。 很多人或许会很关心区块链的安全性究竟如何,但又很难想象2^256(2的256次方)到底是怎样一个量级?下面,我们就介绍本文最令人激动的部分:2^256到底有多大? ?02?2^256有多大? 曾经看到这样一个故事:有两个原始部落的酋长,他们就想说我们怎么找到一个很大的数字。于是,他们每个人说一个数字,看谁说的数字大。第一个酋长想了一会儿,说了一个数字”3”,第二个酋长想了半天,说你赢了! 如果让那个酋长想象1万亿有多大,他可能得会选择死亡。不过,这依然可能比我们想象2^256有多大,要容易得多。 为了更方便大家想象,我们先把2^256拆解成(2^32)^8, 也就是:2^32 * 2^32 * 2^32 * 2^32 * 2^32 * 2^32 * 2^32 * 2^32 这样做的好处就是,2^32大概是一个我们可以想象的数字:2^32≈40亿 这样我们就进一步可以把问题想象成:40亿连乘8次。 这是一个多大的数字呢?下面,我们将依次讲解每一个40亿: 1.?第一个40亿 大家都知道,现在深度学习之所以采用GPU,是因为GPU可以飞快地进行大量的并行计算。 所以,如果我们采用GPU来破解哈希值的输入,一个性能很好的GPU每秒大概可以算出接近10亿个哈希值。假设我们的电脑每秒都需要计算40亿次的话,大概需要“塞进去”4个(理想情况下)这样的GPU,这样的话:每台电脑的计算速度大概就是40亿次/秒。 2.?第二个40亿 现在,我们已经有了一台每秒可以计算40亿次的电脑。那么接下来,想象一下有40亿台装有这样GPU的电脑。 到这里大家可能要“懵逼”了,40亿台电脑又是什么鬼?完全想象不出啊。 虽然Google没有透露自己的集群数量,不过估计说,大概几百万台。现实生活中,绝大部分Google的电脑,性能都没有我们上面提到的“40亿次/秒”的电脑强。不过,我们姑且就算谷歌有这么强的实力吧,那么截至第二个40亿,差不多就相当于我们有:1000个这样“打了鸡血”的谷歌,我们暂时就把这个算力称为“千谷歌”吧。 3.?第三个40亿 2018年,全世界人口大约74亿,所以第三个40亿很简单,截至第三个40亿,我们就假设:全世界有一半多的人,每人人手一个“千谷歌”。 4.?第四个40亿 想必到这儿,有些人已经猜到了“第四个40亿”是什么——让我们想象有40亿个这样的地球。 作为参考,银河系大约有1000~4000亿颗恒星,所以截至第四个40亿,就相当于:银河系1%-4%的恒星会有一个地球,每一个地球上都有一半多的人人手一个“千谷歌”。 5.?第五个40亿 接着,想象有40亿个这样的银河系。这大概是“2^160次/秒”的算力了。让我们再给它一个称呼吧:亿万星系超级计算机。 6.?第六个40亿和第七个40亿 第六和第七个40亿,咱们就不在每秒的运算次数上继续扩展了。第六个40亿等于40亿秒:40亿秒 ≈126.8年。而126.8年的40亿倍,就是:5070亿年。 到了这里,5070亿年,这又是个难以想象的数字。那么我再给出一个参考数字:宇宙的年龄≈138.2亿年,所以5070亿年,约等于宇宙年龄的37倍。 到现在,我们就有了一个很酷炫的总结,即使我们有: 满载GPU电脑组成的千谷歌(1千个谷歌),并且地球上超过一半的人人手一个这样的千谷歌,银河系4%的恒星中都有一个这样的地球(40亿个地球),满负荷不断地猜上37倍的宇宙年龄的时间。 我们依然只有40亿分之一的概率(第八个40亿),可以猜到正确的输入值。 顺便提一句,目前比特币的哈希算力,把所有的矿工全部加在一起,每秒大概能猜测并检验500亿亿个哈希值。 这是个很大的数字吧。那么我要告诉你,这大概只相当于上面提到的“千谷歌”的1/3。 现实生活中,矿工们当然不会这么傻,使用这么贵的GPU来计算哈希值,而是用一种专门为计算哈希值而生的芯片ASIC来计算,它牺牲了其他的功能,别的都不会,就会计算哈希值,算力大概是GPU的1000倍。 ?03?课后题 为了让大家更加深刻地理解“2^256”的大小,大家可以自行百度量子计算机的算力大小,仿照上面的计算过程,计算出:如果我们全部使用量子计算机,要想破解哈希值的话,大概是一个怎样的难度? 如果你依然觉得量子计算机会对区块链造成威胁的话,没关系,通过算法调整,我们可以把256位改成512位啊! #硬盘挖矿##硬盘狗社区# —- 编译者/作者:百度搜索硬盘狗社 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
量子计算机的威胁?区块链告诉你:不存在的
2019-10-20 百度搜索硬盘狗社 来源:区块链网络
LOADING...
相关阅读:
- 【报告】稳定币的崛起(下)2020-08-05
- 以太坊网络的5年历程 (上)2020-08-05
- 十亿美元的加密货币交易商大肆推出新的DeFi加密货币,并表示Solana区块2020-08-05
- 十亿美元的加密货币交易商大肆推出新的DeFi加密货币,并表示Solana区块2020-08-05
- 终于等到牛市要来了?!2020-08-05