5.1 Hash算法与数字摘要 - 数据结构 - 机器学习
数据结构 - 机器学习
深度学习

当前位置:首页 » 区块链精品文章 » 正文
5.1 Hash算法与数字摘要
1183 人参与 2018年09月30日 10:23 分类 : 区块链精品文章 评论
5.1.1 Hash定义
Hash(哈希或散列)算法是非常基础也非常重要的计算机算法,它能将任意长度的二进制明文串映射为较短的(通常是固定长度的)二进制串(Hash值),并且不同的明文很难映射为相同的Hash值。
例如计算一段话“hello blockchain world,this is yeasy@github”的SHA-256 Hash值。
$ echo "hello blockchain world, this is yeasy@github"|shasum -a 256
db8305d71a9f2f90a3e118a9b49a4c381d2b80cf7bcef81930f30ab1832a3c90
这意味着对于某个文件,无需查看其内容,只要其SHA-256 Hash计算后结果同样为 db8305d71a9f2f90a3e118a9b49a4c381d2b80cf7bcef81930f30ab1832a3c90,则说明文件内容 极大概率上就是“hello blockchain world,this is yeasy@github”。
Hash值在应用中又常被称为指纹(fingerprint)或摘要(digest)。Hash算法的核心思想也经常被应用到基于内容的编址或命名算法中。
一个优秀的Hash算法将能实现如下功能:
·正向快速: 给定明文和Hash算法,在有限时间和有限资源内能计算得到Hash值;
·逆向困难: 给定(若干)Hash值,在有限时间内很难(基本不可能)逆推出明文;
·输入敏感: 原始输入信息发生任何改变,新产生的Hash值都应该出现很大不同;
·冲突避免: 很难找到两段内容不同的明文,使得它们的Hash值一致(发生碰撞)。
冲突避免有时候又称为“抗碰撞性”,分为“弱抗碰撞性”和“强抗碰撞性”。如果给定明文前提下,无法找到与之碰撞的其他明文,则算法具有“弱抗碰撞性”;如果无法找到任意两个发生Hash碰撞的明文,则称算法具有“强抗碰撞性”。
很多场景下,也往往要求算法对于任意长的输入内容,可以输出定长的Hash值结果。
5.1.2 常见算法
目前常见的Hash算法包括MD5和SHA系列算法。
MD4(RFC 1320)是MIT的Ronald L.Rivest在1990年设计的,MD是Message Digest的缩写。其输出为128位。MD4已被证明不够安全。
MD5(RFC 1321)是Rivest于1991年对MD4的改进版本。它对输入仍以512位进行分组,其输出是128位。MD5比MD4更加安全,但过程更加复杂,计算速度要慢一点。MD5已被证明不具备“强抗碰撞性”。
SHA(Secure Hash Algorithm)并非一个算法,而是一个Hash函数族。NIST(National Institute of Standards and Technology)于1993年发布其首个实现。目前知名的SHA-1算法在1995年面世,它的输出为长度160位的Hash值,抗穷举性更好。 SHA-1设计时模仿了MD4算法,采用了类似原理。SHA-1已被证明不具备“强抗碰撞性”。
为了提高安全性,NIST还设计出了SHA-224、SHA-256、SHA-384和SHA-512算法(统称为SHA-2),跟SHA-1算法原理类似。SHA-3相关算法也已被提出。
目前,MD5和SHA1已经被破解,一般推荐至少使用SHA2-256或更安全的算法。
提示 MD5是一个经典的Hash算法,和SHA-1算法一起都被认为安全性已不足应用于商业场景。
5.1.3 性能
Hash算法一般都是计算敏感型的。意味着计算资源是瓶颈,主频越高的CPU运行Hash算法的速度也越快。因此可以通过硬件加速来提升Hash计算的吞吐量。例如采用FPGA来计算MD5值,可以轻易达到数十Gbps的吞吐量。
也有一些Hash算法不是计算敏感型的。例如scrypt算法,计算过程需要大量的内存资源,节点不能通过简单地增加更多CPU来获得Hash性能的提升。这样的Hash算法经常用在避免算力攻击的场景。
5.1.4 数字摘要
顾名思义,数字摘要是对数字内容进行Hash运算,获取唯一的摘要值来指代原始完整的数字内容。数字摘要是Hash算法最重要的一个用途。利用Hash函数的抗碰撞性特点,数字摘要可以解决确保内容未被篡改过的问题。
细心的读者可能会注意到,从网站下载软件或文件时,有时会提供一个相应的数字摘要值。用户下载原始文件后可以在本地自行计算摘要值,并与提供的摘要值进行比对,可检查文件内容是否被篡改过。
5.1.5 Hash攻击与防护
Hash算法并不是一种加密算法,不能用于对信息的保护。但Hash算法常用于对口令的保存上。例如用户登录网站需要通过用户名和密码来进行验证。如果网站后台直接保存用户的口令明文,一旦数据库发生泄露后果不堪设想。大量用户倾向于在多个网站选用相同或关联的口令。
利用Hash的特性,后台可以仅保存口令的Hash值,这样每次比对Hash值一致,则说明输入的口令正确。即便数据库泄露了,也无法从Hash值还原回口令,只有进行穷举测试。
然而,由于有时用户设置口令的强度不够,只是一些常见的简单字符串,如password、123456等。有人专门搜集 了这些常见口令,计算对应的Hash值,制作成字典。这样通过Hash值可以快速反查到原始口令。这一类型以空间换时间的攻击方法包括字典攻击和彩虹表攻 击(只保存一条Hash链的首尾值,相对字典攻击可以节省存储空间)等。
为了防范这一类攻击,一般采用加盐(salt)的方法。保存的不是口令明文的Hash值,而是口令明文再加上一段随机字符串(即“盐”)之后的Hash值。Hash结果和“盐”分别存放在不同的地方,这样只要不是两者同时泄露,攻击者就很难破解了。
来源:我是码农,转载请保留出处和链接!
本文链接:http://www.54manong.com/?id=964
微信号:qq444848023 QQ号:444848023
加入【我是码农】QQ群:864689844(加群验证:我是码农)
- 第八章 区块链经济学的范式革命 [49] 2018-09-14 10:53
- 13.3 链码开发API2018-09-29 11:09
- 6.5 零币和零钞2018-09-12 13:52
- 区块链+金融2018-09-27 16:41
网站分类
- 数据结构
- 数据结构视频教程
- 数据结构练习题
- 数据结构试卷
- 数据结构习题解析
- 数据结构电子书
- 数据结构精品文章
- 区块链
- 区块链精品文章
- 区块链电子书
- 大数据
- 大数据精品文章
- 大数据电子书
- 机器学习
- 机器学习精品文章
- 机器学习电子书
- 面试笔试
- 物联网/云计算
标签列表
- 数据结构 (39)
- 数据结构电子书 (20)
- 数据结构习题解析 (8)
- 数据结构试卷 (10)
- 区块链是什么 (261)
- 数据结构视频教程 (31)
- 大数据技术与应用 (12)
- 百面机器学习 (14)
- 机器学电子书 (29)
- 大数据电子书 (37)
- 程序员面试 (10)
- RFID (21)
最近发表
- 找出数组中有3个出现一次的数字
- 《百面机器学习》电子书下载
- 区块链精品电子书《深度探索区块链:Hyperledger技术与应用_区块链技术丛书》张增骏
- 区块链精品电子书《比特币:一个虚幻而真实的金融世界》
- 区块链精品电子书《图说区块链》-徐明星 & 田颖 & 李霁月
- 区块链精品电子书《是非区块链:技术、投机与泡沫》-英国《金融时报》
- 区块链精品电子书《商业区块链:开启加密经济新时代》-威廉·穆贾雅
- 区块链精品电子书《人工智能时代,一本书读懂区块链金融 (互联网_时代企业管理实战系列)》-马兆林
-
(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https'){
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else{
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试
var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1276413723'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D1276413723%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));本站资源大部分来自互联网,版权归原作者所有!
评论专区