首页 > 区块链 > 正文

区块链从来不是什么“防篡改”

分类:观点寒江雪真寒江雪 2018-08-29 01:00

  What The Fuck ?

  我没看错吧,老湿,你深夜连续两发,不是喝多了吧你?竟然说区块链不是防篡改?所有的书里都说区块链是防篡改的!

  哈哈,这篇澄清文章早就想写了。

  你是不是天天听到人说“区块链是防篡改”。

  在币圈吃饭,大家谈起一件什么事,就说把它记录在区块链上,这样就遗臭万年了、再也删不掉了!

  每次听到这种玩笑,我都感觉尬尬的……

  我来解释为何区块链不是防篡改。

  区块链鼻祖——大饼——里面应用了哈希函数,实现数据校验,也就是大家说的防篡改。

  说到哈希函数,这是我的老本行,密码学。

  现代密码学可以说就是两个东西,第一个叫哈希函数,第二个叫非对称加密。碰巧大饼里面这两个技术都用到了 ,所以大饼是现代密码学技术的集大成者。

  今天不说非对称加密的事,只说哈希函数。

  哈希函数还有好几个名字,什么陷门函数,单向函数,散列函数,你还可能听说“数据摘要”、“数据指纹”。大部分说法太老旧了,只见于早期的论文。

  币圈常用的词是哈希函数。你会经常听到一堆“哈希”的说法。估计一头雾水,但过了今晚就不雾水了。

  哈希函数是很简单的,它把一个很长的数据经过复杂计算,缩短为很短的数据。

  最简单的哈希函数,我把数据8位一截断,做一次异或运算……什么,不知道什么是异或运算?就是模2的加法运算?什么不知道什么是模2加?我想撞墙!模2加,就是两个数字加了再除以2的余数。

  直接上例子吧。

  一段数据:“玛丽有只小羊羔”

  这是汉字,汉字是编码的,这你听说过吧,你可能上网时看过GB和BIG5,这都是编码。

  好了,上面这句话“玛丽有只小羊羔”的编码是

  101100011010101010101010101010101

  不要看了,是我胡乱写的,我懒得查汉字编码库了。

  上面这段编码做哈希计算后,会变成什么样子呢?

  我们把它截断成8个比特一段,

  10110001 10101010 10101010 10101010

  把它们都做异或运算,就是加法,1 1=0, 1 0=1, 0 0=0

  算完后,得到这串数字

  00011011

  有没有注意到,经过哈希计算,原来的数据变短了,从32位变为8位。

  这就是哈希函数的功能,把数据变短。所以叫“数据摘要”。

  数据都变短了,肯定变不回去了,因为变短意味着“信息丢失”,原来32位,现在8位,不丢失才怪。你把一篇5000字的文章,缩写到20个字,“本文的中心思想是听人劝吃饱饭”。这样缩写完,信息肯定丢失了。

  因为数据变短、回不去了,所以叫“单向函数”。(加密是一种一一映射,是双向函数,A加密变成B,B反计算解密变成A。)

  那为何也叫“指纹”呢?

  因为这段“摘要”是放在数据末尾做数据校验的。你如果用电驴从网上下过小电影,会有一个“数据校验”的步骤。

  校验什么呢?

  校验你下载的数据是不是有错误啊。如果有一个1下载时候出错变成了0,看片时候就有锯齿了。

  刚才我用这个例子做哈希计算的时候,你可以看到,只要有一个数字出错了,计算的哈希结果就完全不同了。

  在数据传送之后,接收端重新计算哈希值,可以知道数据传送中是否发生过错误。

  这就是“数据的容错校验”。

  刚才解释这么多,是想说“指纹”一词的来历,因为一段数据计算的结果是“独特”的,像是这段数据的指纹一样。

  我以前讲过雍正皇帝的故事,如果康熙皇帝遗诏里加入一个哈希值,那就很难篡改这个遗诏了。

  可以设计最简单的哈希值,笔画数。

  “传位十四阿哥 一百三十画”

  我在后面附加了前面的字合计多少笔画这个信息,是不是这个遗诏就很难篡改了呢?

  有人说,在真实的清代遗诏里,会用满汉多种文字来书写,即使改了汉文,也改不了满文。

  这种写完汉文、再写一行满文,本身就是一种冗余校验。所有的数据校验,都必然要增加冗余的校验数据,要加一个小尾巴,或加一个大尾巴。

  哈希函数就是这样的小尾巴。

  哈希,英文词是hash,也有人翻译“散列”。这个词的英文原意就是“散乱”的意思,因为这个函数的功能就是把数据整凌乱了。你可以到百度搜SHA和MD5这些古老的哈希函数,一看就懂,不需要大学知识。

  流程图很复杂,但目的只有一个,就是把数据搞乱了。

  刚才讲雍正皇帝改遗诏的故事,你已经看到了,哈希函数可以防篡改。

  在密码学里,哈希函数就是拿来防篡改的,专业术语叫保护数据的“完整性”。

  当老百姓谈论密码的时候,觉得加密是为了防止别人偷窥你的数据的,这是密码学的另一个功能,保护数据的“保密性”。

  简单说,密码学就两个功能,一个是“保密性”,一个是“完整性”。

  完整性就是防篡改。像遗诏的例子,改了一笔画,后果多严重!

  说了这么多哈希函数,估计你都忘记我们最早来干嘛的。

  我们是来澄清区块链不是防篡改的。

  那区块链是什么?

  区块链是个综合技术,像收音机;哈希函数是区块链的技术组件,像收音机里的磁铁。

  收音机用到磁铁,是因为收音机要用磁铁做喇叭。

  如果有人玩了收音机,说收音机能“吸铁”,这就太太太……可笑了!

  现在很多人说区块链可以防篡改,就和说收音机可以当磁铁玩一样。

  收音机当然可以当磁铁玩,但收音机不是磁铁。收音机里面不仅有磁铁,还有电池,还有晶体管。

  区块链当然可以当数据保护玩,可以防篡改;但区块链不是数据保护器,如果你要保护数据防篡改,你就用哈希函数来保护,别用什么区块链。

  区块链就是收音机,是一个精密仪器,造收音机是为了听歌听相声的,你天天拿收音机当磁铁玩,那不是很可笑吗?

  有小孩子发现冰箱打开就可以照明,但你说电冰箱是电灯,可以照明看书,那不是很可笑吗?

  这就是为何我不看好所有溯源、防伪类落地方向的区块链项目,是由不懂区块链的人做的。

  当电动机发明的时候,看懂的人用它做了轮船、汽车,看不懂的人发现这玩意很重,竟然可以拿来压报纸呢!

本文标签:区块链 防篡改

上一篇:又一波区块链公号被封,有人筹备海外内容,强监管下区块链自媒体前路未卜

下一篇:区块链商业与法律实践高端研修班,报名启动!

猜您喜欢
关于我们联系我们作者投稿APP下载