【电子取证篇】一文带你了解哈希!作为取证人员,我不允许你不懂哈希,也不允许你只懂哈希

【电子取证篇】一文带你了解哈希!作为取证人员,我不允许你不懂哈希,也不允许你只懂哈希

哈希值(散列值)是针对电子数据内容来计算的,内容变则哈希变;但计算对象的文件名属性等改变不会影响散列值,不同类型可能不一样,可以自行测试!!!—【蘇小沐】

(一)什么是哈希?

1、哈希算法定义

**密码杂凑算法(Hash Algorithm)**也称作“散列算法、哈希(Hash)算法”,在现在的密码行业标准中统称其为密码杂凑算法,简称“杂凑算法”或“杂凑函数”。

因为音译及前期习惯,我们普遍遇到的都是MD5、SHA1、SHA2多,所以口语习惯叫"哈希算法"。实际还有很多算法,如国密SM3算法是国内自主研制的,所以在密码行业领域会更加倾向于叫"密码杂凑算法"。

2、哈希算法原理

密码杂凑算法是通过特定的散列算法把任意长度的输入数据,输出成固定长度的"消息摘要/杂凑值(Hash Value,校验码、消息摘要值、完整性校验值)"等,用于标识电子数据的唯一性完整性,可用于数字签名、完整性保护、安全认证、口令保护等。

主要过程表示为:h =H(M)

“h为处理后的杂凑值,长度通常是固定的”,M为输入消息;H为杂凑算法。**杂凑值的长度取决于所使用的密码杂凑算法。

(二)密码杂凑算法三大性质(安全性)

1、抗原像攻击(单向性)

**散列函数的关键是它的"单向性"这个函数只单向计算,不反向计算。**即给定杂凑值h,找到消息使得h= H(M)是困难的,密码杂凑函数是单向的,从消息计算杂凑值很容易,但从杂凑值推出消息是非常困难的。

图片

2、抗第二原像攻击(弱抗碰撞性)

抗第二原像攻击(弱抗碰撞性),“即给定消息M1,找到另外一个消息M2”,使得H(M2)= H(M1)是困难的,输入的任何微小变化都会使杂凑结果有很大不同。

【注意事项】

文件名称改变:哈希值不会变

而同一份文件,只是被重命名了文件名称,那么哈希并不会改变!!!(说到这又得吐槽下微信转发文件的SB操作,每转发一次,自动复制一份到本地,而不是链接过去😒)

举例:复制了一份副本,只是文件名称改变,哈希并不会变!
在这里插入图片描述

文件内容改变:哈希值会变!!!

这里的更改是指文件内容的更改!!!

比如word文档里面那怕只是增加一个空格,一个标点符号等,原始的word哈希值都将会被改变。

举例:同一份文档,加了空格,重新计算文档,哈希值被改变!

图片

图片

3、强抗碰撞攻击

强抗碰撞攻击,“即找到两个消息M1和M2(M1不同于M2)”,使得H(M2)= H(M1)是困难的。

(三)杂凑算法强度

1、安全强度(Security Strength)

事实上没有什么是绝对安全的!!!取决于破译的代价是否超过被加密信息的价值与破译所花费的时间是否超过信息的有效期!

安全强度(Security Strength):表征攻破一个密码算法或系统所需的工作量,单位为bit

意义:一个算法安全强度为x bit,则意味着攻破它所需的计算量最多为 2ᕽ 次。

安全强度 ≠ 密钥长度,还取决于多种因素:算法、参数规模(密钥、分组长度等)、用途、现有攻击方法……

2、杂凑算法的安全强度与对比

低于80 bit安全强度的算法已经禁止使用。2030年以后(算力算法的不断改进,或许用不到那个时候就可能被破解了),112 bit安全强度也不再满足要求,会被禁止或限制使用。

不同杂凑算法的输出长度不同,SM3就是我国自主研发的杂凑算法,具体总结如下表!

图片

3、MD5碰撞实例

2004年,中国山东大学的王小云教授在国际密码学会议(Crypto2004)做了关于MD系列哈希算法碰撞的报告:

● 碰撞是指寻找两个不同的字符串x≠x’,使得它们的MD5哈希结果相同,即H(x)= H(x’);更进 一步的,对于已知字符串x,通过修改部分bit,使得其MD5值为特定MD5值

● 对于数字签名,哈希碰撞可以对两组不同的数据m≠m’产生相同的签名。攻击者只需要拥有一组签名数据(m, Sig(m)),再根据其中的哈希值来构造自己的数据m’。就可以伪造新的合法数字签名(m’,Sig(m)), 因为Sig(m) = Sig(m’)。

**4
**

SHA-1的碰撞

● 2005年,王小云等人公布SHA-1攻击方法,能在263计算复杂度内找到碰撞

● 2013年,Marc Stevens 发表论文提出了构造SHA-1碰撞的新攻击方法,复杂度为261,并在随后 的几年里不断改进方法

● 2017年2月23日,荷兰阿姆斯特丹CWI研究所和Google公司在谷歌安全博客上发布了世界第一 例公开的SHA-1哈希碰撞实例。

(四)哈希值用途

1、完整性校验

取证领域中常用于文件完整性校验(Integrity Check)**,用以检测文件的完整性,**确保数据复制结果与被复制数据完全一致的校验性比对过程。

图片

2、密码存储

在信息安全领域中的密码常以散列值形式保存,比如Windows密码,应用程序数据库用户的密码信息等。

密码测评、网络抓包要是抓到密码这些关键信息是明文,尤其是大型企业,关键领域,嘿嘿嘿,处罚单正在派送中,请注意签收……

3、数字签名

对信息进行数字签名以确定发送者身份。

用于完整性保护时,杂凑算法常常与密钥一同使用,生成的杂凑值称为MAC,这样的杂凑算法称为**“带密钥的杂凑算法”(Keyed-hash Message Authentication Code,HMAC)**。此外,杂凑算法也与公钥密码算法一同使用来产生数字签名。

图片

数字签名的实现

图片

密码技术和数字签名组合运用

图片

(五)常见哈希算法

1、MD5(输出128,分组512)

MD5(message digest)消息摘要算法,由Rivest设计(1991)(89-MD2,90-MD4)。这个哈希函数的输入可以是任意长度的消息,对输入按b=512位进行分组,输出是n=128比特。

结构:M-D结构。

年份:2010年 美国软件工程学会(SEI)认为MD5算法已被破解不在适用。

特点/参数:

① 最终输出为128比特的消息杂凑。

② 散列函数

③ 已被破解,不安全的算法

应用场景:一般用于数字签名(数字指纹)、完整性保护、安全认证、口令保护等。

2、SHA-1(输出160,分组512)

SHA-1基于MD4设计。与MD5相比,SHA-1生成160位的消息摘要,虽然执行更慢,却被认为更安全。

SHA系列均为单向散列函数

结构:SHA-1为M-D结构。

年份:SHA-1 2005年 王小云教授首次给出了SHA-1的碰撞攻击,复杂度为2^69比特。

2017年 国家秘密管理局发布使用SHA-1密码算法的风险警示。

特性/参数:

SHA-1:160比特的消息摘要

应用场景:用户密码保护(密码的散列值校验)、接口验签、文件完整性校验等。

3、SHA-2(SHA256)

2001年 NSA和NIST提出的标准算法。SHA-2是组合值,有不同的位数,我们常计算的是256位,所以需要注明具体的算法位数。

结构:SHA-2为M-D结构

年份:SHA-2 2001年 NSA和NIST提出的标准算法。

特性/参数:

SHA-2包括:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256

应用场景:用户密码保护(密码的散列值校验)、接口验签、文件完整性校验等。

【SHA-256用于区块链网络的两个部分:生成新的比特币地址和采矿中使用的(proof of work)算法】

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。

结构:SHA-3为海绵结构。

特性/参数:

SHA-3包括:SHA3-224、SHA3-256、SHA3-384、SHA3-512。

应用场景:用户密码保护(密码的散列值校验)、接口验签、文件完整性校验等。

【*扩展】

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在同等条件下相当。单独使用杂凑算法并不能保证数据的完整性,因为在传输信道不安全的情况下,攻击者可以将消息和杂凑值一同篡改,即在修改或替换消息后重新计算一个杂凑值。

图片

(六)Windows命令计算哈希:CertUtil命令

1、有参数命令:计算MD5、SHA1、SHA256命令

Windows命令下的哈希计算方法-CertUtil命令

1certutil -hashfile  <文件的绝对路径>  <hash类型>

例子:

  • certutil -hashfile D:\suy\桌面\蘇小沐.pdf md5

  • certutil -hashfile D:\suy\桌面\蘇小沐.pdf sha1

  • certutil -hashfile D:\suy\桌面\蘇小沐.pdf sha256

图片

2、无参数命令:默认算SHA1哈希值

如果不指定哈希参数,则 certutil -hashfile 命令会默认计算文件的 SHA1(Secure Hash Algorithm) 哈希值。

例子:

  • certutil -hashfile D:\suy\桌面\蘇小沐.pdf

图片

总结

目前MD5、SHA1都已被破解,所以不建议再使用两种哈希算法来校验文件。

书写片面,纯粹做个记录,有错漏之处欢迎指正。

公众号回复关键词**【哈希】**自动获取资源合集。

【声明:欢迎转发收藏,个人创作不易,喜欢记得点点赞!!!转载引用请注明出处,著作所有权归 [蘇小沐] 所有】

【注:共享资源收集于官网或互联网公开材料,仅供学习研究,如有侵权请联系删除,谢谢!】

记录

开始编辑:2024年 03月 28日‍

最后编辑:2024年 03月 29日

【往期精彩回顾】

图片

▲ 【电子取证篇】WinHex入门教程合集,看这一篇就够了

图片

▲ 【电子取证篇】FTK Imager取证教程合集,看这一篇也够了(附下载)

关注我,了解更多取证知识,别忘了点赞+在看哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DFIR蘇小沐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值