真有这种操作,比特币、暴雪和下载盗版电影都应用了同一种算法

钛媒体  •  扫码分享
我是创始人李岩:很抱歉!给自己产品做个广告,点击进来看看。  

真有这种操作,比特币、暴雪和下载盗版电影都应用了同一种算法

在ICO泡沫迅速涌起和迅速破灭后,比特币仍然一路高歌,在最近突破了9600美金的大关。作为一种独立于货币体系的数字加密币,比特币成功的本质还是要归功于技术——区块链的安全和隐私支撑起了比特币最核心的价值。

提到区块链,非对称加密算法和哈希算法是两个不能避开的技术名词。尤其是哈希算法,在区块链相关的技术文章中总能看到这个名字,却很难真正理解它的奥秘。今天,我们就来看看哈希算法是如何保护比特币和其他数据的?

学好哈希算法,用脑子储存比特币

如果你准备购买比特币,你就会拥有一个“比特币钱包”。通常来讲,比特币钱包会是一个移动/本地客户端,用户可以通过客户端进行交易。但是还有一种更高端的玩法:脑钱包。

真有这种操作,比特币、暴雪和下载盗版电影都应用了同一种算法

我们知道,比特币实际上是一种“资源”,它并不是像文档一样躺在谁的U盘里,而想要确立这种资源的所有权,则需要由用户自己生成一串数字密钥并储存到某个地方。交易时,先生成一套只能由交易中某一方用来解密的私有密钥,再根据私有密钥单向加密生成双方都能看到的共有密钥。

由于密钥的生成是独立于比特币协议和区块链的,所以如何保护好自己的密钥成了一个大问题,以前甚至发生过黑客破解比特币钱包客户端获取比特币的事件。

为了避免这种问题,就有人想出了一个新方法:自己生成一段比特币密钥,然后记在自己脑子里。

生成比特币密钥的方式并不难,最初始的密钥只是一串256位的二进制数字,抛二百多次硬币即可得到。但想记住二百多个0和1实在是太复杂了,脑钱包概念的关键在于,用哈希算法SHA-256对密钥进行校验,让256位二进制数字变成更短的编码,就可以保证让这串字符适合人脑记忆。

来自国家安全局,怪不得哈希算法很安全!

不管是抛二百次硬币用脑子记忆的脑钱包,还是在移动端、PC端作为客户端的电子钱包,基本都绕不开用SHA-256算法校验这一步骤。

其实SHA-256算法发明的最初目的和比特币毫无关系,1993年,美国国家安全局设计了一套用于安全加密的密码散列函数——Secure Hash Algorithm,翻译过来就是安全散列算法。人们更愿意把它叫做SHA,1993年推出的版本名为SHA-0,后来随着算法不断的被破解又不断自我修正,最终推出了数个SHA算法的变体,其中就包括SHA-256。

真有这种操作,比特币、暴雪和下载盗版电影都应用了同一种算法

SHA最主要的特性就是,接收到二进制数字消息时会形成一串“数字摘要”,而这一摘要还可以用来验证数字消息的完整性。如上文所示,SHA-256就意味着算法可以把256位的二进制数字进行压缩。

很多人会感到疑惑的是,哈希算法对数字进行压缩、摘要,那么为什么不可以根据这些摘要反向“破解”呢?

哈希算法与其说是“加密”,其实更接近于“压缩”。这其中涉及到一个“映射”的概念。所谓映射,我们可以理解为“代表”。举个例子,可以用ABC这样的字符去代表10001101这样的数字,字符A可以代表1、001、0001等等,但只得到字符A时,我们无法得知加密前的数字究竟是1还是001还是0001还是……

用更简单的案例解释一下:在比特币交易中,交易双方都能得知的共有密钥是“100”,但只有其中一方知道加密前的私有密钥是2+78+5+5+10。

得到100这个共有密钥的人,想要破解私有密钥只能去挨个去排列“1+0+0+0+99”、“1+1+0+0+98”……如果变成256位的密钥,几乎是一个不可能完成的任务。而想要验证公有密钥也很简单,既然加密前的私有密钥是2+78+5+5+10,那么99、98这些公有密钥就都是错误的。

忘记比特币,下载过盗版电影的你早就认识了哈希算法

所以,目前看来哈希算法的压缩功能最大的用处是在比特币交易加密上?

实际上哈希算法最大的用处还是压缩数据,之所以被用在比特币上,是因为其中包含的大量运算贴合了以“消耗资源来获取比特币”的规则。在其他领域中,哈希算法也能发挥很大作用。

一个比较典型的例子是游戏公司暴雪推出的“One Way Hash”算法。

真有这种操作,比特币、暴雪和下载盗版电影都应用了同一种算法

作为手握魔兽争霸、星际等等数款大型游戏的企业,暴雪和其他企业一样,拥有一个巨大的数据库。而当数据库太大时,从中检索就成了一个巨大的麻烦。

通常情况下在数据库中寻找数据就像在KTV点歌,数据库是曲库,想要找到自己要点的歌,只能把曲库从头到尾翻个遍。但也有一种更简单的方法,那就是建立一种代表关系,把歌曲名字《小星星》简写成XXX,并把这种对应关系储存在数据库中。寻找歌曲时,如果连XXX都找不到,说明曲库中不可能存在《小星星》这首歌。

同理,《小星星》=XXX、《爱我中华》=AWZH,这种文字转化成拼音、拼音取首字母的对应方式在现实应用时可能会涉及到函数、坐标等等数学问题,总之这种对应方式被称作“哈希表”。

但我们在KTV点歌时,搜索XXX得出的结果不光有《小星星》、还有《笑哈哈》,面对这种同一字符串在哈希表上位置相同的问题,暴雪的程序猿们想出了一种绝妙的解决办法——在哈希表中用三个哈希值来校验位置。

也就是说在暴雪KTV的曲库中,《小星星》(xiaoxingxing)的哈希值可以分别是XXX、OGG和III,这时再搜索歌曲,就几乎不会遇到《小星星》和《笑哈哈》同时出现的情况了。

同样的作用也体现在P2P(点对点)传播上。如果是上古时代的互联网用户,可以对emule(电驴)这款下载软件有印象,在eMule上可以从全球所有eMule用户手中接收某一件文件的数据上行和下载。

其原理就是,当你想下载电影《战狼2》时,系统会提取《战狼2》的哈希值,通过对这一哈希值的搜索,可以发现所有拥有《战狼2》的用户,大家一起进行点对点的数据传送,eMule本身也不用建立数据库,只搭建平台就可以了。因为哈希算法的压缩特性,使得“全球搜索”这件事变的低成本并可行。

真有这种操作,比特币、暴雪和下载盗版电影都应用了同一种算法

虽然那个具备共享精神的好时代一去不复返,但即使是今天哈希算法也依然活跃在我们的视野中,即使有很多人声称自己破解了哈希算法,却也没有发生过因为算法被破解而造成损失的情况。

目前来看,哈希算法如果被抛弃,无非是出现以下两种情况:第一,量子计算开始应用,哈希算法和已知的所有密码、加密方式都被强大的计算能力和速度打败。第二,出现了更好用的压缩算法,比如美剧《硅谷》中的魔笛手成真,哈希算法由于不好用而被开发者抛弃。

评估一下以上这两种情况出现的可能性,相信大家就能知道哈希算法还会陪伴我们多久了。

更多精彩内容,关注钛媒体微信号(ID:taimeiti),或者下载钛媒体App


随意打赏

比特币交易平台比特币今日价格比特币是什么比特币挖矿机比特币价格比特币中国比特币行情比特币骗局比特时代
提交建议
微信扫一扫,分享给好友吧。