币点学堂:一直挂在嘴边的哈希算法你真的了解吗?

Posted 币点学堂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了币点学堂:一直挂在嘴边的哈希算法你真的了解吗?相关的知识,希望对你有一定的参考价值。



欢迎收听币点学堂

如果说区块链相当于一个人

那么密码算法毫无疑问就是它的骨骼

如果没有密码算法

比特币的诞生不知道又要往后多少年

而提到区块链中的加密算法

首当其冲的就是哈希算法

可以说,哈希算法贯穿到了

区块链系统的方方面面

今天我们就带大家一起来了解

《白话区块链》中这一章哈希算法

币点学堂:一直挂在嘴边的哈希算法你真的了解吗?

《白话区块链》

币点学堂:一直挂在嘴边的哈希算法你真的了解吗?

区块链骨骼

(一)什么是哈希算法?

通俗点来说就是通过一种方法,将一段任意输入的字符串计算出一个固定长度的值,相当于计算出一个身份证号。通过哈希算法计算出的结果,是无法再通过一个算法还原出原始数据的,也就是说整个过程是单向的,因此适合一些身份验证的场合,同时由于哈希值能够起到一个类似于身份证号的作用,因此也可以用于判断数据的完整性,哪怕数据发生微小的变化,重新计算后的哈希值都会与之前不一样。

让我们举个例子理解一下:如果我们要在图片库中录入一张新图片,如何判断图片库是否已添加了新图片?在没有人工标注的情况下,在巨大的图库中想要以图搜图是一件及其庞大而又困难的工作量,可是在训练集上,通过哈希算法,可以得到一系列哈希函数,通过这些函数,可以将每一张图片转化成一串0~1的编码,用同样的算法计算新图片的编码,看看新图片的编码是否在图片库已有的所有编码中就可以判断了。

为了保证哈希函数在密码学上的安全性,必须满足以下3个条件。

1)抗冲突(collision-resistance)。简单来说,哈希函数抗冲突指的是不同的输入不能产生相同的输出。

2)信息隐藏(information hiding)。这个特性是指如果知道了哈希函数的输出,不可能逆向推导出输入。

3)可隐匿性(puzzle friendly)。如果有人希望哈希函数的输出是一个特定的值(意味着有人事先知道了哈希函数的输出结果),只要输入的部分足够随机,在足够合理的时间内都将不可能破解。这个特性主要是为了对付伪 造和仿制。

币点学堂:一直挂在嘴边的哈希算法你真的了解吗?

区块链骨骼

(二)哈希算法的种类

密码学中常用的哈希算法有MD5、SHA1、SHA2、SHA256、SHA512、SHA3、RIPEMD160,下面简单介绍一下。

·MD5(Message Digest Algorithm5)。MD5是输入不定长度信息,输出固定长度128bits的算法。经过程序流程,生成4个32位数据,最后联合起来成为一个128bits哈希。基本方式为求余、取余、调整长度、与链接变量进行循环运算,得出结果。MD5算法曾被广泛使用,然而目前该算法已被证明是一种不安全的算法。王晓云教授已经于2004年破解了MD5算法。

·SHA1。SHA1在许多安全协议中广为使用,包括TLS和SSL。2017年2月,Google宣布已攻破了SHA1,并准备在其Chrome浏览器产品中逐渐降低SHA1证书的安全指数,逐步停止对使用SHA1哈希算法证书的支持。

·SHA2。这是SHA算法家族的第二代,支持了更长的摘要信息输出,主要有SHA224、SHA256、SHA384和SHA512,数字后缀表示它们生成的哈希摘要结果长度。

·SHA3。看名称就知道,这是SHA算法家族的第三代,之前名为Keccak算法,SHA3并不是要取代SHA2,因为目前SHA2并没有出现明显的弱点。

·RIPEMD-160(RACE Integrity Primitives Evaluation Message Digest160)RIPEMD160是一个160位加密哈希函数。它旨在替代128位哈希函数MD4、MD5和RIPEMD-128。

币点学堂:一直挂在嘴边的哈希算法你真的了解吗?

区块链骨骼

(三)区块链中的哈希算法

1. 区块哈希:

我们都知道区块链结构的数据具有不可篡改性,这其实就是哈希算法的功劳。区块链中的哈希算法就是对区块头进行哈希计算,得出某个区块的哈希值,用这个哈希值可以唯一确定某一个区块,相当于给区块设定了一个身份证号,各区块之间就是通过这样一个身份证号来进行串联的,从而形成了一个区块链的结构。

2. 梅克尔树:

梅克尔树在不同的区块链系统中有着不同的细节,但本质是一样的,我们以比特币中的梅克尔树来说明。比特币中的梅克尔树称为二叉梅克尔树,而且每一个区块都有自己的梅克尔树,是通过将区块中的交易事务哈希值两两结对计算出新的哈希值,然后哈希值再两两结对进行哈希计算,递归循环,直到计算出最后一个根哈希值,这样的一棵树也称为哈希树。梅克尔书既用于校验区块数据的完整性,也能对SPV钱包进行支付验证。 

币点学堂:一直挂在嘴边的哈希算法你真的了解吗?


梅克尔树的优势:

1. 我们能知道信息是否被篡改。

2. 我们还能知道是第几页或者第几块的信息被篡改了。

币点学堂:一直挂在嘴边的哈希算法你真的了解吗?


币点学堂:一直挂在嘴边的哈希算法你真的了解吗?

区块链骨骼

(四)哈希算法会不会被破解?

事实上,MD5和SHA-1这两种应用最为广泛的数字签名加密算法都已经被山东大学的数学教授王小云破解。因此有很多人都在怀疑,比特币用算法来保证比特币被稳定的发现在2100万枚,那么这个算法可信吗?是否有一天会被破解呢?

随着比特币被更多人了解,大家开始好奇中本聪为何选择了SHA256,同时对SHA256的安全性发表各种意见,SHA256妥妥经受了质疑,到目前为止,没有公开的证据表明SHA256有漏洞,它依然牢牢抗住了保卫比特币安全的大旗。

假设真的有一天攻击者发现一种新算法,能够假冒“SHA-256”,快速计算出结果,而且验证结果也是正确的,我们假设这种算法,计算速度比“SHA-256”快一万倍,然而它要破坏当前的挖矿体系也是极其困难的。

它可能能够更快的挖到矿,但要伪造交易,却必须拥有当前50%以上的算力,即使它的算力提到了一万倍,但鉴于当前算力非常庞大,仍然是难以伪造的。而且伪造得到的报酬,远不如诚实挖矿得到的报酬多。

但对于“SHA-256”算法的攻击问题,目前可以肯定是,对该算法的攻击肯定是存在的。因此,大家心里都明白,没有永远安全的算法,SHA256被替代是早晚的事,中本聪自己也说明了算法升级的必要和过程。

因此,虽然哈希算法本身虽然在理论上是不可逆,但是它的思想保证了它也不是绝对可靠的。被认为安全的算法往往没能使用多久就被成功攻击,新的更安全的算法会相继被设计出来。



喜欢点点姐姐的声音就关注我吧






以上是关于币点学堂:一直挂在嘴边的哈希算法你真的了解吗?的主要内容,如果未能解决你的问题,请参考以下文章

你真的了解mysql索引吗?

哈希机制真的安全吗?

和你聊聊哈希算法

五分钟带你了解哈希算法究竟是什么!

你真的可以通过哈希有效地将相同的字符串分组吗?

我可以根据初始密钥和输出哈希识别哈希算法吗?