造冰箱的大熊猫@cnblogs 2019/2/20
emmmm,在这里把文件完整性校验相关的信息汇总一下
1、什么是文件完整性校验
所谓文件完整性校验就是对文件“验明正身”。攻击者会将恶意代码添加到某个受大众欢迎的软件中,然后发布到网络上。当用户下载并使用这种被篡改过的软件时,计算机病毒或者木马程序就会悄然进入用户的计算机。检验文件的完整性,就是检查下载到的软件是否被篡改过。
2、基于散列函数的文件完整性校验
文件完整性校验的常用方法是使用基于“散列函数”的校验算法。软件开发者在发布软件(比如一个exe文件)前,使用某个校验算法计算出该exe文件的“特征值”,然后将这个特征值和exe文件一同发布到网络上。用户使用相同的校验算法计算下载到exe文件的特征值,并与软件开发者发布的特征值比较。如果两个特征值相同,则认为下载到的exe文件是正确的。如果两个特征值不同,则认为下载到exe文件是被篡改过的。
以Ubuntu操作系统为例,在Ubuntu的下载网页上,用户既能找到Ubuntu安装镜像的下载链接,也能够找到“MD5SUMS”、“SHA1SUMS”、“SHA256SUMS”字样的文件。这些文件就是使用MD5、SHA1、SHA256等校验算法获得的Ubuntu安装镜像特征值。
点击右键看大图
校验算法本质上是建立文件和特征值的映射关系,用长度较短的特征值表征长度较长的待校验文件。由于特征值和待校验文件长度不匹配,无法保证两者的映射关系是唯一的。比如,某个校验算法使用32bit整数作为特征值,同时我们有232+1个内容互不相同的文件,那么一定有两个文件的特征值是相同的。当两个文件的特征值相同时,我们只能认为“这