解密区块链:二、密码学哈希函数(1)

上一章我们讲了虚拟货币的历史,帮助大家了解了虚拟货币的安全性问题,在这一章我们就谈一下虚拟货币的实现基础——密码学哈希函数。

说起密码学可能很多朋友很陌生,但是说起摩斯密码,我想只要看过香港片《无间道》的朋友应该都会有印象。在无间道这部电影中,梁朝伟饰演的陈永仁在卧底时,向黄秋生饰演的黄志成警官发出的信号,用的就是摩斯密码。

解密区块链:二、密码学哈希函数(1)_第1张图片
image

莫斯密码

而应用在区块链里的哈希函数也是密码学的一种。

哈希函数作为一个数学函数,主要有以下三个特性:1、输出可以是任意大小的字符串;2、能够产生固定大小的字符串;3、对于特定的输入字符串,都可以算出哈希函数的输出,即n→O(n)。

在区块链中,我们关注点在与加密的哈希函数,昨天我们讲到货币的安全性,要使得哈希函数安全,我们需要对其加上三个附加特性:1、碰撞阻力;2、隐秘性;3、谜题友好。

今天先给大家讲解一下第1个,碰撞阻力。

哈希函数的碰撞阻力即对于任意的两个不同输出,可以产生相同的输出。

如图所示:

解密区块链:二、密码学哈希函数(1)_第2张图片
image

哈希函数流程图

可能有的朋友会问道什么是碰撞阻力?

碰撞阻力的定义为:如果无法找到两个值,x和y,且x≠y,使得H(x)=H(y),则称该函数H具有碰撞阻力。

就目前我们的认知而言,有很多时候我们无法找到x和y,那么这样的函数是否具有碰撞阻力呢?

答案是否定的,因为我们目前的计算机水平找不到,但是不代表这两个数不存在,只是在我们目前的认知范围内找不到,姑且我们就暂定认可他们是具有碰撞阻力的,这也是为什么计算机安全一直在迭代更新。

其实要是想找到该碰撞值,一个最简单的方法就是对于一个256位输出的哈希函数,我们直接选择2256 +1个不同的数值,就一定可以找到该碰撞值!

但是这门技术有多难呢?就是假设从人类计算机发展的第一天开始计算,大概一直算到太阳熄灭,或许这个值都不能计算出来吧。换一种说法就是算出来的几率,比同时有两颗小行星撞击地球的概率都低!

解密区块链:二、密码学哈希函数(1)_第3张图片
image

小行星撞击地球

因此我们便知道了,虽然哈希函数的碰撞阻力存在的可能性极小,但是目前我们的计算机水平是没有办法计算出来其碰撞阻力的,因此我们坚定的认为,在虚拟货币中,其安全技术的等级是最高级别的。

而哈希函数的出现,可以保护主体采用哈希函数,碰撞阻力的因素,使得主体不受到其它实体的恶意攻击。

本章的内容可能比较苦涩,希望大家好好理解。

下一章我会写隐秘性,欢迎大家持续关注!

你可能感兴趣的:(解密区块链:二、密码学哈希函数(1))