一、什么是哈希算法
“哈希”是英文Hash的音译词,而国内不少学术界学者及部分专家将其翻译为“散列”。“哈希算法”也叫散列算法或杂凑算法,是将目标数据转换成具有相同长度的字符串的算法,处理的结果称之为哈希值、散列值,或消息摘要,哈希算法不可逆。哈希算法是从事电子数据取证、信息安全相关领域专业人员必须了解和掌握的基础知识。目前哈希算法类型繁多,国外的有MD4、MD5、SHA-1、SHA-2及SHA-3等算法,国密中的哈希算法为SM3。SHA-2、SHA-3是两个哈希算法家族,SHA-2包括SHA-224、SHA-256、SHA-384、SHA-512,SHA-3包括SHA3-224、SHA3-256、SHA3-384、SHA3-512。以下是常见哈希算法类型及其对应的长度和表现形式。
表1. 常见哈希算法类型
哈希算法 | 长度(Bit) | 摘要值字符数 | 哈希摘要值范例 |
MD5 | 128bit | 32个 | 72721CF87852D563537BCFF650F1944E |
SHA-1 | 160bit | 40个 | FE85B63FBCE966009176C98DAC36042E86BDA5B5 |
SHA-256 | 256bit | 64个 | 553DCF932A632F1394530335FBFD8C6A167F819693051947208F6579B40483AB |
SHA-512 | 512bit | 128个 | 4565BF256F4A77FA3085A3A113271F544888F085170545F744ECAC8FA1A5C14030022527C458772689FF79CCA45265B1535BB98A96ED2D8EAE113FF0916B2A71 |
二、哈希算法应用
由于哈希算法经常用于对数据库的帐户密码进行保护,很多数据库中不保存密码明文而保存密码的哈希值,不少人都将哈希算法也当成是一种加密算法,实际上哈希算法和加密算法存在本质的差异。哈希算法为不可逆算法,无法通过哈希值推测出原文内容;加密算法主要分为对称加密算法和非对称加密算法,对称加密算法的加解密密钥相同,非对称加密算法的加解密密钥不同,但都可以由密文通过密钥计算出明文。
哈希算法在电子数据取证中最重要的运用是数据一致性校验。
为了保证流程的严谨、证据链的完整,证据保全期间制作镜像时应计算源数据及目标数据(克隆盘或镜像文件)的哈希。在取证分析及电子数据鉴定的各个环节,应校验数据的哈希值以确保数据的原始性和完整性。数据的完整性校验值一般也是某种哈希值。电子数据取证工作中,常使用 MD5、SHA-1及SHA-256等哈希算法计算数据的哈希值或对进行数据的一致性校验;计算的对象可以是硬盘、分区或特定文件。
通常相同的数据使用同一种哈希算法计算得到的消息摘要值完全一致,而不同的数据,哪怕只改变1bit,使用同一种哈希算法计算得到的消息摘要值则不同,这称之为哈希算法的雪崩效应。
CNAS认可的司法鉴定/法庭科学机构认可领域分类(详见CNAS─AL13文件)中电子数据鉴定一共有三类,分别是电子数据的提取、固定与恢复和电子数据真实性(完整性)鉴定以及电子数据同一性、相似性鉴定。其中电子数据的同一性鉴定需要用到国家标准GB/T 29361-2012《电子物证文件一致性检验规程》,该标准中要求的最重要也是计算并比较样本的哈希值。
哈希算法在电子数据中另一个重要应用是哈希库(Hash Library)功能。
美国NIST国家标准研究院基于常见的操作系统、应用软件等工具的相关文件进行了哈希计算,形成一个庞大的哈希库,因此,在电子数据取证中,国外取证人员常使用取证软件导入NIST的哈希库,将操作系统、应用软件等类型的文件进行排除。此外,国外也建立了一些重点文件哈希库(如儿童色情图片),一旦存储介质中(硬盘或手机等)存储了此类文件,即可进行快速比对,检查出与哈希库匹配的图片,从而提升现场取证的排查效率。
下图是取证神探使用哈希集过滤文件的效果。
哈希算法也可以用于对重要信息/数据的保护(如对数据库保存的用户密码的保护)。2013年国内知名的程序员网站CSDN因数据库信息泄露,数据库中存储的用户密码并未采用任何安全保护机制,因此,大量用户的明文密码直接泄露。后来,国内更加注重后台数据的安全保护,多数都采用哈希算法来保护明文密码,甚至采用基于salt加盐(随机数)的哈希计算,多轮哈希计算等方式提高安全性。
三、哈希碰撞(Hash Collision)
国内密码学专家王小云(山东大学教授、清华大学高等研究院教授、中科院院士)先后于2004年和2005年在国际密码大会上公布了 MD5 、MD4、HAVAL-128、RIPEMD及SHA-1的多个国际著名密码算法存在的安全隐患,她提出了密码哈希函数的碰撞攻击理论,即模差分比特分析法,破解了包括MD5、SHA-1在内的5个国际通用哈希函数算法;将比特分析法进一步应用于带密钥的密码算法包括消息认证码、对称加密算法、认证加密算法的分析[注1]。至此,基于 Hash 函数的 MD5 和 SHA-1——多年来国际公认最先进、应用范围最广的两大重要算法均被破解,证明电子签名在现实中的安全性难以完全保证。
什么是哈希碰撞(Hash Collision)? 哈希碰撞是指不同的信息通过某种哈希算法进行计算生成的摘要值相同,就称之为碰撞。目前已经发现MD5、SHA-1等哈希算法均存在一定概率的哈希碰撞。
表2. 指纹、MD5哈希值碰撞概率对照表
项目 | 研究人员 | 碰撞概率(分之一) |
指纹 | Sir Francis Galton | 6,400,000,000 |
指纹 | J.W. Osterburg | 100,000,000,000,000,000,000 |
MD5哈希 | / | 340,282,366,920,938,463,463,374,607,431,768,211,456 |
注:表2信息来自-美国OpenText EnCase DF120课程学员手册
2007年11月30日发表的一篇论文《Vulnerability of software integrity and code signing applications to chosen-prefix collisions for MD5》指出,可利用MD5碰撞概率,通过对两个不同的程序附加不同的代码,可生成具有相同MD5哈希摘要值的可执行程序。 [注2]
HelloWorld.cpp | GoodbyeWorld.cpp |
---|---|
编译为HelloWorld.exe | 编译为GoodbyeWorld.exe |
在EXE中附加相关代码,形成HelloWorld-colliding.exe | 在EXE中附加相关代码,形成GoodbyeWorld-colliding.exe |
计算文件MD5哈希: 18FCC4334F44FED60718E7DACD82DDDF | 计算文件MD5哈希: 18FCC4334F44FED60718E7DACD82DDDF |
结论: 通过算法可生成相同MD5哈希且功能不同的可执行程序,其他类型文件也存在可能。 |
使用MD5碰撞工具fastcoll[注4],普通计算机计算机在数秒内即可产生一个MD5碰撞。
通过以上的研究发现,可见在用于安全通讯、加密应用场景,使用MD5及SHA-1哈希算法不再安全。
然而在电子数据取证领域,存在哈希碰撞概率的MD5、SHA-1哈希算法是否还可以继续用于司法领域的数据一致性校验呢?目前的现状是,国际上目前多数取证分析软件(如EnCase、FTK等)还是以MD5、SHA-1为主,部分取证分析软件(如X-Ways Forensics)支持SHA-256及更多哈希类型的哈希计算。在国内司法取证应用中,由于CNAS能力验证提供者近几年推动使用碰撞概率低的哈希算法SHA-256,因此,国内越来越多计算机取证分析软件开始支持对文件、分区及磁盘进行SHA-256哈希的计算。
采用碰撞概率低的SHA-2 256哈希算法固然降低了碰撞概率,然而对存储介质(如大容量硬盘)进行哈希计算大幅增加计算时间,降低了效率,对于小文件的哈希计算则影响较小。下表是一份相同环境下常见算法的效率比较。[注3]
序号 | 算法 | 处理效率(MB/S) |
---|---|---|
1 | MD5 | 335 |
2 | SHA-1 | 192 |
3 | SHA-256 | 139 |
4 | SHA-512 | 154 |
虽然MD5和SHA-1存在一定碰撞概率,MD5碰撞概率远低于人类指纹重复的概率,指纹在刑侦案件中已经广泛被用做生物特征识别。因此,笔者认为MD5、SHA-1仍可作为一种用于验证文件、磁盘、证据镜像文件的有效方式。目前国际上电子数据取证领域也并未放弃存在一定碰撞概率的MD5、SHA-1哈希算法的使用。如案件涉及数据篡改伪造,那么可通过查找数据篡改或伪造痕迹,这是两个不同层面的问题,本文不再进一步探讨。
四、总结
哈希算法广泛应用于信息安全、电子数据取证等诸多领域,部分哈希算法的碰撞概率对于安全通讯、加密应用(数字证书/数字签名)等均存在一定影响。虽然,在电子数据取证领域,MD5、SHA-1等哈希算法存在一定碰撞概率,但鉴于其碰撞概率并不高、计算摘要值效率高等因素,笔者认为它们仍可继续用于常见的文件及磁盘的一致性校验。随着计算机处理器计算能力的逐步提升,国内相关机构及标准也可以推荐或逐步强制使用更高标准的哈希算法(如SHA-256、SHA-512),或同时采用多种哈希算法,以减少哈希碰撞概率。
注1:https://www.tsinghua.edu.cn/publish/cas/982/2017/20171129141857923431055/20171129141857923431055_.html
注2:https://www.win.tue.nl/hashclash/SoftIntCodeSign/
注3:https://www.cryptopp.com/benchmarks-amd64.html
注4:https://www.win.tue.nl/hashclash/fastcoll_v1.0.0.5.exe.zip
声明:本文来自神探学院,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。