⽂件完整性校验
造冰箱的⼤熊猫@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个内容互不相同的⽂件,那么⼀定有两个⽂件的特征值是相同的。当两个⽂件的特征值相同时,我们只能认为“这两个⽂件内容相同的可能性⾮常⾼”。在散列函数的研究领域中,如果两个不同⽂件具有相同的特征值,则称这种情况为“发⽣碰撞”。显然,特征值的长度越短,发⽣碰撞的概率就越⾼。但⽆限增加特征值长度,⼜降低了校验的可⽤性。好的散列函数设计,就是要在特征值长度较短的前提下,尽可能地降低碰撞概率。散列函数属于数学/密码学的研究范
畴,专业性很强,它的可靠性和安全性留给数学⼤⽜们去思考,我们作为⼀般计算机⽤户,只需要掌握以下校验⼯具的使⽤⽅法。
2.1、⽅法1:在Windows下使⽤7-Zip⼯具
如果Windows计算机上安装了7-Zip,则
1)右键点击待校验的⽂件(或⽂件夹)。
2)在弹出的菜单中选择“CRC SHA”。
3)在⼦菜单中可以看到“CRC-32”、“CRC-64”、“SHA-1”、“SHA-256”和“*”五个不同选项。其中,前4项分别对应采⽤32位循环冗余校验(CRC)、64位CRC、SHA-1和SHA-25校验算法对被选中⽂件进⾏校验。第5项“*”,则输出被选中⽂件的CRC-32、CRC-64、SHA-1、SHA-256和BLAKE2sp五种校验结果以及该⽂件的基本信息(⽂件名、⽂件⼤⼩)。
点击右键看⼤图
2.2、⽅法2:在Windows 7下使⽤certutil命令
在Windows命令⾏下输⼊如下命令计算⽂件的校验值
certutil -hashfile FileName HashAlgorithm
其中,FileName为待校验⽂件名(路径)。HashAlgorithm为校验算法名,可能的取值为MD2, MD4, MD5, SHA1, SHA256,
SHA512。certutil命令的详细使⽤⽅法,请参考。
Windows XP不⽀持此命令。
2.3、⽅法3:在Windows XP下使⽤FCIV⼯具
微软提供了⼀个名为“File Checksum Integrity Verifier”(简称FCIV)的⼯具。该⼯具可在Windows 2000/XP/Server 2003上运⾏,计算某个⽂件或⽂件夹下所有⽂件的校验值(⽀持MD5和SHA1),并与之前记录的校验值进⾏⽐较。该⼯具的下载链接、安装和使⽤⽅法请参考。
2.3、⽅法4:在Windows XP下使⽤md5sums⼯具
本节内容2019.4.24补充
从下载md5sums软件的压缩包,解压缩获得,在命令⾏下执⾏
md5sums FileName
其中,FileName为待校验⽂件名(路径)。详细使⽤⽅法参见解压缩获得的⽂件。
2.5、⽅法5:在Linux下使⽤xxxsum命令
在Linux命令⾏下输⼊如下命令计算⽂件的校验值
xxxsum FileName
网页被篡改怎么办其中,FileName为待校验⽂件名(路径)。xxxsum为校验算法命令,可能的取值为
md5sum,sha1sum,sha256sum,sha512sum,crc32。
3、数字签名:下载⽂件的⾝份认证
⽂件完整性校验针对的是⽂件内容是否被篡改。如果⿊客攻击软件开发者的⽹站,将⽹站服务器上的
软件替换为被篡改过、含有恶意代码的软件,同时篡改了⽹站上发布的特征值,那该怎么办。⽤户如何检查⽂件来⾃合法⽤户(软件开发者)还是⾮法⽤户(⿊客)呢。为解决这⼀问题,软件开发者通常采⽤数字签名的⽅式对发布内容(exe⽂件、特征值)进⾏⾝份标记,⽤户对下载⽂件中的数字签名进⾏验证,检查下载到的⽂件是否为软件开发者发布的。通常很少有⼈会对下载⽂件进⾏⾝份认证的情况并不常见。有关数字签名的问题,我们以后单独讨论。
转载于:wwwblogs/pandabang/p/10404119.html
发布评论