文件完整性校验的必要性

    本来这一篇应该是讲数据加密的,但是后来仔细想了想,文件完整性校验可以为数据加密做铺垫,于是就先写了文件完整性校验了。

    文件校验是什么?文件为什么要校验?

    先来看一下这张图吧。
图片来自GPG4Win
    可能很多人在下载软件时都有注意过这个SHA256(SHA1/MD5),但是却不知道这个东西是干吗用的。

    其实早在几年前,迅雷的会员加速和离线加速可以加速任何东西的时候,网上充斥着大量的盗版资源,而最流行的,就是Windows7的系统镜像了。

    当时装系统可能是最没有技术含量的东西了。下个镜像,做一个U盘启动,然后用激活软件激活系统,一气呵成。

    然后没过多久,就爆发了一种大范围的病毒。

    后来经研究发现,有人在官方的系统镜像里植入了后门,也就是说下载的系统本来就不是干净的系统。那怎么在安装系统之前检查自己的系统是不是官方的版本呢。于是CRC(循环冗余校验)出来了。

    循环冗余校验英语:Cyclic redundancy check,通称“CRC”)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。生成的数字在传输或者存储之前计算出来并且附加到数据后面,然后接收方进行检验确定数据是否发生变化。一般来说,循环冗余校验的值都是32位的整数。由于本函数易于用二进制的计算机硬件使用、容易进行数学分析并且尤其善于检测传输通道干扰引起的错误,因此获得广泛应用。
上文引自维基百科 
 
    最开始这个东西是为了验证数据在传输的过程中有没有完整的从一端传输到另一端,由于其特殊的算法,人们发现一个文件只要其中的1B(比特)数据发生改变,那么计算出来的字符串将与原字符串完全不一样,而计算的速度又非常快,所以逐渐应用在文件完整性校验这一块了。

    那么SHA1/SHA2/MD5有什么区别?

    SHA1早在2005年就已被确认为不够安全,而后面也确实被证明出其的不安全性。
2005年,密码分析人员发现了对SHA-1的有效攻击方法,这表明该算法可能不够安全,不能继续使用[3],自2010年以来,许多组织建议用SHA-2SHA-3来替换SHA-1[4][5][6]Microsoft[7]Google[8]以及Mozilla[9][10][11]都宣布,它们旗下的浏览器将在2017年前停止接受使用SHA-1算法签名的SSL证书
2017年2月23日,CWI AmsterdamGoogle宣布了一个成功的SHA-1碰撞攻击[12][13],发布了两份内容不同但SHA-1散列值相同的PDF文件作为概念证明。[14]
上文引自维基百科 


    既然SHA1不安全,那么就后续推出了SHA2。
SHA-2,名称来自于安全散列算法2英语:Secure Hash Algorithm 2)的缩写,一种密码散列函数算法标准,由美国国家安全局研发[3],由美国国家标准与技术研究院(NIST)在2001年发布。属于SHA算法之一,是SHA-1的后继者。其下又可再分为六个不同的算法标准,包括了:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。
上文引自维基百科

    通过计算得出一个文件的SHA2值然后与其官方发布的SHA2进行对比,如果SHA值一致则可以验证其文件的完整性;如果SHA值不一致则可以认为其传输过程中有丢包或者是下载了被第三方修改过的文件。

    那么如何来校验一个文件的完整性?这里我推荐两个我常用的工具。

    7-Zip(https://www.7-zip.org/)和HashCalc(https://www.slavasoft.com/hashcalc/)。

    7-Zip它本质上来说并不是一个校验软件,它的主要领域是文件的压缩与解压。然而其64bit的版本却附带了校验的功能。

7-Zip 64bit
    虽然它只能校验4种算法的文件值,但是作为一个附加功能,对于非专业人士来说也是绝对够用的。

    对需要校验的文件 右键-->CRC SHA-->*(选择要计算的算法) 然后根据文件大小等待一段时间即可得出文件的校验值。

7-Zip计算的校验值
    而7-Zip的安装也非常简单,只需去7-Zip的官网(https://www.7-zip.org/)点击下载然后安装即可。需要注意的是,32bit的版本并没有这个功能,而64bit的版本需要你使用的操作系统是64bit的才可安装,如果是32bit的系统或者是需要更专业的软件时,就使用HashCalc吧。

    HashCalc是一个专业计算校验值的文件,根据其官方的介绍以及对软件的使用,它总共支持十二种算法:MD2, MD4, MD5, SHA-1, SHA-2( 256, 384, 512), RIPEMD-160, PANAMA, TIGER, ADLER32, CRC32。

    而这个软件的安装和使用一样很简单,同样是去其官网(https://www.slavasoft.com/hashcalc/)下载安装即可。

    安装完毕打开软件之后可以点击右上角的小点选择要校验的文件,也可将要校验的文件拖入程序内,左边一列则是选择的算法,要用哪种算法计算将对应算法打上勾即可,然后点击右下角的 Calculate 即可进行计算。

HashCalc校验
    需要注意的是,如SHA512这类算法,算出的字符串太长则需要将其复制出来再进行对比。由于此类算法的特性,对比时无需将整个字符串进行对比,只需将前几个字符或后几个字符对比,即可反映出整个字符串是否与其官方的一致。

PS:
由于我个人的原因,博客的更新频率可能会变的非常慢,如有催更的,请发邮件到我邮箱。



评论

  1. Where is the best way to play Blackjack at casinos? - Dr.MCD
    I've 사천 출장마사지 written reviews and found 창원 출장안마 some of the best Blackjack games online. Best Blackjack Sites. 전라북도 출장안마 The site is 부산광역 출장샵 also rated "A" and reviewed 양주 출장샵 by

    回复删除

发表评论

此博客中的热门博文

各Linux发行版桌面环境与上手舒适度横向评测

写在前面