全部版块 我的主页
论坛 新商科论坛 四区(原工商管理论坛) 商学院 创业论坛
1906 1
2022-04-22
  哈希算法是什么?

  区块链的四大核心技术分别是密码学、分布式账本、共识机制以及智能合约。而密码学作为其中最重要的一部分,可以说是区块链的基石,而其他技术是以密码学为地基,才能搭建出区块链这座高楼大厦。

  区块链主要应用的密码学算法有两个部分:一个哈希算法,另一个是非对称加密。

  简单来说,哈希算法就是一种特殊的函数,不论输入多长的一串字符,只要通过这个函数都可以得到一个固定长度的输出值,这就好像身份证号码一样,永远都是十八位而且全国唯一。哈希算法的输出值就叫做哈希值。

  哈希算法有三个特点,它们赋予了区块链不可篡改、匿名等特性,并保证了整个区块链体系的完整。第一个特点是具有单向性。比如输入一串数据,通过哈希算法可以获得一个哈希值,但是通过这个哈希值是没有办法反推回来得到输入的那串数据的。这就是单向性,也正是基于这一点,区块链才有效保护了我们信息的安全性。

  哈希算法的第二个特点是抗篡改能力,对于任意一个输入,哪怕是很小的改动,其哈希值的变化也会非常大。它的这个特性,在区块与区块的连接中就起到了关键性的作用。区块链的每个区块都会以上一个区块的哈希值作为标示,除非有人能够破解整条链上的所有哈希值,否则数据一旦记录在链上,就不可能进行篡改。

  单向哈希是一种将可变长字符串变换成固定长度输出的函数,输出值称为哈希值。哈希函数是公开的,哈希函数只能从一个方向计算,没有陷门,只是计算一个消息的哈希值,用于判断消息有没有被篡改。例如我们用H(m)=S来表示使用某个单向哈希函数来计算消息m,得到哈希值S,但我们无法从S反推出消息m是什么,如果我把消息m和S一起发给你,你用同样的哈希函数计算m,如果得到的哈希等于S,这就意味着你收到的消息和我的原始消息相同,中途没有被截获篡改。

  必须强调的是单纯的单向哈希函数不使用密钥,不能对给你数据的人或者消息本身的真伪进行验证(不保证机密性、无法进行身份验证)。

  例如你从某个网站下载共享软件,网站页面上有该软件的哈希值,你可以在完成下载后计算该软件的哈希值,如果跟网站提供的不同,这意味着要么传输途中发生问题,要么网站上的软件被篡改。但是即使哈希值相同,你下载的软件就没有问题吗?如果软件是被植入了木马后再计算哈希呢?这样你下载的软件即使哈希相同,你安装后仍然会把你的电脑当做僵尸网络的一部分。

  所以需要多种加密技术一起使用才能获得完整的安全保障。后面的公钥基础架构一文中会专门探讨这个问题,现在我们可以扩展哈希函数,让它也有身份验证的功能,这就是第2节要讨论的MAC函数。

  各种哈希算法

  使用单向Hash函数的目的是提供消息指纹,如果不同的消息可以生成相同的哈希值(称为发生了碰撞),那么攻击者就能根据揭示出来的规律攻破这个安全机制。

  高安全强度的哈希函数应当为两条或多条不同的消息生成不同的哈希值。

  如果一个哈希算法采取了措施确保两条或多条不同的消息不会生成相同的哈希值,就称其为免碰撞(针对哈希算法的攻击基本上是试图找出碰撞)。

  高安全强度的哈希函数应当有以下特征:

  应当对整条消息计算哈希值;

  哈希函数应当是单向函数,避免哈希值泄露消息;

  给定一条消息及其哈希值,要找出另一条具有相同哈希值的消息应该是不可能的;

  哈希函数应当能够抵御生日攻击(碰撞攻击)。

  区块链以其不可篡改,可信任何公开透明性,让更多的数据安全流动起来。典型案例是区块链如何推动大数据基因测序,区块链大数据测序利用私钥限制访问权限,降低了利用法律限制个人获取基因数据的局限性,并且利用分布式计算资源,高效完成测序任务,区块链的安全性解决了基因测序的工业化问题,推动了数据的安全流动。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2023-1-27 16:13:56
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群