DCEP - 数字货币|央行数字货币DCEP

五分钟了解哈希函数的特性、分类与应用

更新时间:2021-09-09 15:47点击:

出处链接:mh3.weixin.qq.com

2160÷278=282year>1024year

所以,反向计算出哈希函数原像的困难程度太大,几乎不可能。

碰撞指的是在输入区间 D 中的任意两个不同输入 x、y,两者的哈希值是相同的。那样哈希函数的抗碰撞性意味着,找出任意两个不一样的输入值 x、y,使得 H = H 是困难的。。

以哈希函数 SH人工智能 为例:其输出空间为,假设有一万亿个哈希值,发生碰撞的概率仅为 3×10-25。被碰撞的概率太低,几乎不可能。

因此,哈希函数的碰撞虽非常难,但产生碰撞的几率并不为零。譬如,大家将十只鸽子放到五个箱子里面,必然会有两只鸽子是在同一个箱子里面。

再譬如下图的过生日攻击问题,考虑所有人的过生日都是独立均匀随机分布在 365 天内,由于第二个人不可以跟第一个人有相同的过生日 ,第三个人不可以跟前两个生活日相同 ,依此类推,用阶乘办法计算。最后得知,当 n=23 时,概率趋于 50%,而人的出生率并非均匀随机的,因此 23 人实质概率应该大于 50%。

因此,哈希函数的抗碰撞性依据其内部架构而定,不一样的哈希函数被攻击的几率不同。

从哈希函数这一定义诞生到今天,已经提出了几十种哈希算法,每类算法对应不一样的参数又会形成不一样的算法达成。海量的哈希函数好似一个江湖,其中 MD 家族和 SHA 家族是「哈希江湖」中最具声望的两大伙族。

国际: MD4、MD5、SHA-1、SHA-256、SHA-3。

国内:国产自主研发的商用密码哈希算法,即SM3。

MD5 由美国密码学家罗纳德·李维斯特设计,经 MD2、MD3 和 MD4 进步而来,输出的是 128 位固定长度的字符串。主要用于增强算法复杂度和不可逆性,因其常见、稳定、迅速的特征,仍广泛应用于一般数据的加密保护范围。

SHA-1 由美国国家安全局提出,输出的是 160 位固定长度的字符串,在 MD5 的基础上提升输出的长度,单向操作的数目与单向操作的复杂性,但未做任何根本改进去使其可以抵御更强大的机器。

SHA-3 是由美国国家标准与技术研究所发布的,使用了不同于 MD 算法 结构的海绵结构,是现在较为安全的哈希函数。

国内的哈希算法有国产自主研发的商用密码算法 SM3,由国家密码管理局于 2010 年发布,主要用于数字签名及验证、消息认证码生成及验证、随机数生成等,其算法是公开的。据国家密码管理局表示,其安全性及效率与 SHA-256 相当。

每一个算法都是有生命周期,不可能永远被用。譬如曾在商业市场广泛运用的 MD5 算法,被中国科学院院士、清华大学王小云教授攻破,导致密码学界的哄动。

王小云教授给出了首个在 MD5 算法上的碰撞例子,并且该碰撞案例是通过 IBM P690 计算机约 1 小时左右即可探寻到,从而证实了 MD5 算法没办法预防碰撞,不适用于安全性认证。

王小云教授对 MD5 防碰撞性的攻击表目前:

可以在较短期内计算找到消息 M1 和 M2,使得 M2 产生的哈希值与 M1 产生的哈希值相同。这样,MD5 的抗碰撞性就已不满足,使得 MD5 不再是安全的哈希算法。

因此,某个单一的哈希算法可能在十年甚至三十年内保证是安全的,能被大伙放心地用。一旦被攻破,大伙只能开始换用另一种算法。当然,这个过程是很漫长的。

哈希函数具备单向性和抗碰撞性,即便仅仅改变输入信息的一个字符也会产生一个完全不一样的哈希值,该特质帮大家预防数据被篡改。

大家可以将原始数据和经过哈希算法得到的数据一块发送给他们,他们收到数据之后,对数据用相同的哈希算法进行计算,假如得到的哈希值和他们发过来的相同,那样就说明数据没经过篡改。

哈希函数的应用很广泛,比如以下几种:

在区块链中,哈希函数的主要价值是防篡改。每个区块都存有前一个区块的哈希值,前一个区块叫做目前区块的父区块。当修改目前区块的任意值,都会对父区块产生影响。

前面大家提到,每一个算法都是有生命周期,不可能永远被用。假如 SHA-256 算法被攻破,是否意味着区块链就挂了?是的,除非全网升级新的哈希算法。SHA-256 算法可能被用 30 多年或者更长期,这都非常难被确定。

值得一提的是,BTC用 SHA-256 来转换数据的方法很有趣,它将算法在协议中连续实行了两次。注意,这并非为了抵御过生日攻击。显然假如 Hash = Hash,那样也有 Hash) = Hash),为了缓解长度扩展攻击。

从本质上说,这种攻击需要恶意攻击者知晓哈希输入值的长度,在这个已知的长度上再加上一个秘密的字符串,就可以发动哈希函数内部的一部分,从而扰乱哈希函数。因为 SHA-256 是 SHA-2 算法家族的成员,它有这些的弱点,而BTC通过将哈希函数连续运行两次来缓解这个缺点。

总的来讲,哈希函数在生活当中无处不在,包括大家平时在互联网上输入的口令,背后都是哈希函数在起用途。不只这样,它在区块链中的应用和价值也是显而易见的,通过提升其内部操作的复杂性或输出长度,使得被运用的哈希函数在肯定时间内足够安全。

好似哈希函数的进步史,当有旧的算法被攻破,就有新的算法被创造。大家一直在尽全力探索一个计算更高效的将来,不断挑选最好的工具,经得起时间的考验!

以下是计算过程:

73TH/s=73×1012/s≈2×1022/year≈278/year

哈希函数具备单向性和抗碰撞性,被广泛应用于区块链、口令保护及软件保护。

原文标题:《【图学院】这里有哈希函数「家族」的秘密 ......》
撰文:PlatON

哈希函数是现代密码体系中的一个要紧组成部分,被常见应用在社会生产生活当中。平常大伙比较有兴趣的数字虚拟货币,就用了哈希函数。

从理论角度来看,哈希函数是以任意长度的数据为输入,输出相应固定长度的值。这个值为哈希值,又称摘要、散列、杂凑、指纹。这可能看着非常难理解,其实就是一种数学函数,输入的长度可以是任意的,但输出的长度是固定的。

密码学的不少定义是从现实世界的定义迁徙而来,譬如哈希是模拟人类的指纹。由于人类的指纹一直不变,不可能跟随人的胖瘦而更改,也不可能同年代表两个人。

在互联网安全协议中,哈希函数可以用来处置电子签名,将冗长的签名文件压缩为一段独特的数字信息,像指纹辨别身份一样保证原来数字签名文件的合法性和安全性。

哈希函数具备两大基本属性:单向性和抗碰撞性。单向性决定了哈希函数的正向计算效率高,反向计算困难程度很大,几乎不可能;而抗碰撞性决定了没办法找到两个不一样的输入,使得其输出是一致的。

下面,让大家依次进行讲解。

哈希函数的单向性意味着,给定一个哈希值,大家没办法逆向计算出其原像输入。即给定一个哈希值 y,大家没办法计算出 x,使得 y=H 。容易来讲,是没办法逆向推理。

对于没办法逆向推理,你可能会产生疑问:难道就不可以通过不断试错的办法,试试看看,得到最后的 x 值吗?也就是说,尝试不一样的 x 值,总有一个经过哈希后能得到正确的 y 值吧?这只能说,实践出真知。

以哈希函数 SH人工智能 为例,假设计算机拥有的算力为 73TH/s ,Bitman 算力最高矿机 AntminerS17+),那样其一年可实行的哈希运算为 2×1022 次,要搜索出每个原像大概需要 282 年,超越 100 万亿亿年。

上一篇:没有了 下一篇:没有了

相关阅读

官方微信公众号