哈希值(散列值)是针对电子数据内容来计算的,内容变则哈希变;但计算对象的文件名属性等改变不会影响散列值,不同类型可能不一样,可以自行测试!!!---【蘇小沐】
1
(一)
什么是哈希?
1
哈希算法定义
密码杂凑算法(Hash Algorithm)也称作“散列算法、哈希(Hash)算法”,在现在的密码行业标准中统称其为密码杂凑算法,简称“杂凑算法”或“杂凑函数”。
因为音译及前期习惯,我们普遍遇到的都是MD5、SHA1、SHA2多,所以口语习惯叫"哈希算法"。实际还有很多算法,如国密SM3算法是国内自主研制的,所以在密码行业领域会更加倾向于叫"密码杂凑算法"。
2
哈希算法原理
2
(二)
密码杂凑算法三大性质(安全性)
1
抗原像攻击(单向性)
2
抗第二原像攻击(弱抗碰撞性)
而同一份文件,只是被重命名了文件名称,那么哈希并不会改变!!!(说到这又得吐槽下微信转发文件的SB操作,每转发一次,自动复制一份到本地,而不是链接过去😒)
举例:复制了一份副本,只是文件名称改变,哈希并不会变!
这里的更改是指文件内容的更改!!!
比如word文档里面那怕只是增加一个空格,一个标点符号等,原始的word哈希值都将会被改变。
举例:同一份文档,加了空格,重新计算文档,哈希值被改变!
3
强抗碰撞攻击
3
(三)
杂凑算法强度
1
安全强度(Security Strength)
事实上没有什么是绝对安全的!!!取决于破译的代价是否超过被加密信息的价值与破译所花费的时间是否超过信息的有效期!
安全强度(Security Strength):表征攻破一个密码算法或系统所需的工作量,单位为bit。
意义:一个算法安全强度为x bit,则意味着攻破它所需的计算量最多为 2ᕽ 次。
安全强度 ≠ 密钥长度,还取决于多种因素:算法、参数规模(密钥、分组长度等)、用途、现有攻击方法……
2
杂凑算法的安全强度与对比
低于80 bit安全强度的算法已经禁止使用。2030年以后(算力算法的不断改进,或许用不到那个时候就可能被破解了),112 bit安全强度也不再满足要求,会被禁止或限制使用。
不同杂凑算法的输出长度不同,SM3就是我国自主研发的杂凑算法,具体总结如下表!
3
MD5碰撞实例
4
SHA-1的碰撞
● 2005年,王小云等人公布SHA-1攻击方法,能在263计算复杂度内找到碰撞
● 2013年,Marc Stevens 发表论文提出了构造SHA-1碰撞的新攻击方法,复杂度为261,并在随后 的几年里不断改进方法
● 2017年2月23日,荷兰阿姆斯特丹CWI研究所和Google公司在谷歌安全博客上发布了世界第一 例公开的SHA-1哈希碰撞实例。
4
(四)
哈希值用途
1
完整性校验
2
密码存储
3
数字签名
数字签名的实现
5
(五)
常见哈希算法
1
MD5(输出128,分组512)
2
SHA-1(输出160,分组512)
3
SHA-2(SHA256)
4
SHA-3(Keccake算法)
SHA-3,之前名为Keccak算法,由Guido Bertoni,Joan Daemen,Michael,Peeters以及GillesVan Asschei设i计,"2012年10月2号",Keccak被选为NIST杂凑函数竞赛的胜利者。
SHA-3并不是要马上取代SHA-2,因为SHA-2目前并没有出现明显的弱点。
由于对MD5出现成功的破解,以及对SHA-0和SHA-1出现理论上破解的方法,NIST感觉需要一个与之前算法不同的,可替换的杂凑算法,也就是现在的SHA-3。
Keccak使用海绵函数,海绵函数(sponge function)接收任何长度的输入比特串,满足任何长度的输出。
海绵函数是由三个部分组成:一个内存状态S,包含b位,分成两个区块,R(大小为r位元)与C(大小为b-r 位元);一个能置换或者转换内存状态、固定大小的转换函数f;一个填充方式(padding function)P。
填充时,会在输入里面增加足够的长度,让输入的位比特串长度变成r的整数倍。因此填充过后的输入可以被切成长度为r的数个分段。
这里P(i)是输入的分段,Z(i)是输出的分段。
5
SM3(商密,输出256,分组512)
我国商用密码标准中的密码杂凑算法是SM3算法。SM3于2010年正式发布,2012年行标,2016年国标GB,2018年国际标准。SM3适用于商用密码应用中的"数字签名和验证",消息认证码的生成与验证以及随机数的生成。
-
采用了Merkle–Damgard模型(简称MD模型);
-
消息分组后,经过填充、扩展、迭代压缩后最终得出杂凑值;
-
关键特征:分组长度512比特,输出256比特。SM3能够有效避免高概率的局部碰撞,能够抵抗目前已知的攻击方法,具有较高的安全冗余。在保障安全性的前提下,SM3算法的综合性能指标与SHA-256在同等条件下相当。单独使用杂凑算法并不能保证数据的完整性,因为在传输信道不安全的情况下,攻击者可以将消息和杂凑值一同篡改,即在修改或替换消息后重新计算一个杂凑值。
6
(六)
Windows命令计算哈希:CertUtil命令
1
有参数命令:计算MD5、SHA1、SHA256命令
Windows命令下的哈希计算方法-CertUtil命令
1
certutil -hashfile <文件的绝对路径> <hash类型>
<文件的绝对路径>要包含文件的扩展名(文件类型后缀)!否则会提示"系统找不到指定的文件"。
-
certutil -hashfile D:suy桌面蘇小沐.pdf md5 -
certutil -hashfile D:suy桌面蘇小沐.pdfsha1 -
certutil -hashfile D:suy桌面蘇小沐.pdfsha256
2
无参数命令:默认算SHA1哈希值
如果不指定哈希参数,则 certutil -hashfile 命令会默认计算文件的 SHA1(Secure Hash Algorithm) 哈希值。
-
certutil -hashfile D:suy桌面蘇小沐.pdf
目前MD5、SHA1都已被破解,所以不建议再使用两种哈希算法来校验文件。
书写片面,纯粹做个记录,有错漏之处欢迎指正。
公众号回复关键词【哈希】自动获取资源合集。
【声明:欢迎转发收藏,个人创作不易,喜欢记得点点赞!!!转载引用请注明出处,著作所有权归 [蘇小沐] 所有】
【注:共享资源收集于官网或互联网公开材料,仅供学习研究,如有侵权请联系删除,谢谢!】
记录 |
开始编辑:2024年 03月 28日 |
|
END
往期精彩回顾
关注我,了解更多取证知识,别忘了点赞+在看哦!
原文始发于微信公众号(网络安全与取证研究):【电子取证篇】一文带你了解哈希!作为取证人员,我不允许你不懂哈希,也不允许你只懂哈希
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论