论坛风格切换
正版合作和侵权请联系 sd173@foxmail.com
 
  • 帖子
  • 日志
  • 用户
  • 版块
  • 群组
帖子
购买邀请后未收到邀请联系sdbeta@qq.com
  • 1309阅读
  • 0回复

[求助-系统问题]文件校验 让下载更加安全 [复制链接]

上一主题 下一主题
离线quen2008
 
发帖
*
今日发帖
最后登录
1970-01-01
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-10-30 08:31:01
现如今网络中各式各样的陷阱越来越多,为此安全专家常常提醒网络用户,不要到不知名的网站下载软件。为什么会有这样的提醒呢?主要是很多网站会在文件上,捆绑流氓软件甚至木马病毒。还好现在有了文件校验码,利用它就知道文件是否被修改过,或者文件的哪一部分出现了缺失,甚至还可以起到防止木马、病毒等的作用。

1.CRC校验法

CRC的全称为循环冗余码校验,英文全称为Cyclical Redundancy Check。它是利用除法及余数的原理来作错误侦测(Error Detecting)的。实际应用时,发送装置计算出CRC值并随数据一同发送给接收装置,接收装置对收到的数据重新计算CRC并与收到的CRC相比较,若两个CRC值不同则说明数据通讯出现错误。

其实我们都不应该会对CRC陌生,回忆一下自己用过的WinRAR和WinZIP等压缩软件。它们在进行压缩文件解压的时候,是不是常常出现“CRC校验错误”的信息呢?由于现在网络用户常常从网路上下载各类型的文件,然而即使网络提供了可靠的传输环境,但有时难免会因各种因素使得下载的文件发生错误。由于不同用户通常难以查觉到文件的错误,因此大部份的压缩软件在压缩时,同时会加上自己的CRC检查码到文件里面中,以供文件解压缩时进行检测(如图1),我们可以看到,在WinRAR软件中的“CRC32”栏中的一串字符,就是CRC校验码。

图1

2.SFV校验法

SFV的全称为简单文件校验,英文全称为Simple File Verification。其实SFV文件是一个简单的文本文件,它利用CRC32算法来完成简易的文件校验功能。对每个文件计算出一个数值,然后写入一个.SFV文本文件中(如图2)。一般下载后用户会使用SFV工具,对下载得到的文件进行计算,并将结果和文件中的结果进行比对。如果不同则表明下载的文件有误,需要重新下载。

图2

其实进行压缩文件验证,利用上面提到的CRC校验即可。但是有些压缩软件在做分卷压缩时,由于提供的CRC信息不完全以致于解压缩时,明明知道其中有的文件发生CRC错误,但是却无法指出具体是哪些文件发生问题。最麻烦的情况是,用户可能因为这个原因而无法有的放矢地重新下载损坏的压缩包。如果这时若能先利用SFV软件,生成SFV校验文件。用户下载后先进行检测以确认所有文件的完整性,若有错误也能马上知道是哪个文件有问题,重新下载可以省下不少时间。

FlashSFV就是这样一个专门的SFV校验工具,它是著名的FTP软件FlashFXP的作者编写的一个免费文件校验工具,支持SFV和MD5的制作和校验。运行FlashSFV后点击“新建”按钮,接着在模拟的资源管理器窗口,选择需要创建SFV文件的文件,最后点击“创建”按钮就可以创建成功。如果要通过SFV文件进行文件校验,也需要点击“新建”来选择需要校验的文件,接着点击“校验”按钮,再点击“打开”按钮,来选择校验需要的SFV文件。最后点击“检查”按钮,如果结果为绿色的勾,那么就说明这个文件没有问题(如图3)。

图3

3.MD5校验法

我们在一些下载站点或论坛上下载软件的时候,有时会看到除了提供了软件的下载地址外,还提供了一串与软件本身对应的复杂字符,这就是MD5校验码。MD5的全称为信息摘要算法,英文全称为Message-Digest Algorithm 5。它是经过MD2、MD3和MD4发展而来的一种算法。

本来文件验证利用MD5进行校验就够了,但是这一切随着2004年8月17日美国加州圣巴巴拉的国际密码学会议上,来自中国山东大学的王小云教授做的破译MD5、HAVAL-128、 MD4和RIPEMD算法的报告,公布了MD系列算法的破解结果而终止。

从这份报告可以看出,两个文件可以产生出同一个MD5值,有兴趣的读者可以从http://www.win.tue.nl/hashclash/SoftIntCodeSign/HelloWorld-colliding.exe
http://www.win.tue.nl/hashclash/SoftIntCodeSign/GoodbyeWorld-colliding.exe这两个链接下载这两个不同的程序,然后用校验工具进行验证,你会发现它们的MD5校验码都是“18fcc4334f44fed60718e7dacd82dddf”(如图4/5),这就是所谓的“MD5碰撞”。

图4

图5

MD5曾一度被认为是非常安全的,同时又由于它易于实现,算法理解相对也比较简单,所以在国内外有着非常广泛的应用。但是王小云教授的发现,可以很快找到MD5的“碰撞”,使得两个文件可以产生相同的“指纹”。这意味着当你在网络下载了一个通过了MD5验证的软件,但它也许已经被修改,包含了危险的病毒或木马,但它的MD5校验码和未经修改的原文件的MD5校验码仍然是一样的。这样就带来了比较严重的安全隐患,MD5校验的方法也不靠了。

4.SHA校验法

SHA也是一种常见的文件校验方法,一些下载的提供者也会附上软件的SHA校验码(如图6)SHA的全称为安全散列算法,英文全称为Secure Hash Algorithm。它是美国国家标准和技术局发布的国家标准FIPS PUB 180-1,一般称为SHA-1。该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段密文,也可以简单的理解为取一串输入码,并把它们转化为长度较短、位数固定的输出序列即散列值的过程。散列函数值可以说时对明文的一种“指纹”或是“摘要”,所以对散列值的数字签名就可以视为对此明文的数字签名。因此,安全性相对更高的SHA校验法可以更好地保证文件的完整性。

图6

HashTab是一个优秀的Windows外壳扩展程序,安装后,它会在系统资源管理器的文件属性窗口中,自动添加了一个叫做“文件校验”的标签。该标签可以帮助用户方便地计算文件的MD5、SHA1与CRC-32哈希值。HashTab不仅可以计算文件的哈希值,另外还可以对两个文件的哈希值比较。

这个程序的使用方法很简单,安装完成后在需要查看哈希值的文件上,点击鼠标右键选择“属性”命令。在弹出的属性窗口里面选择“文件哈希值”标签,点击右键菜单中的“选项”命令。然后在弹出的窗口选择需要查看的算法选项(如图7),点击“保存”按钮返回到文件哈希值列表,就可以看到这个文件每个算法的哈希值(如图8)。如果要比较两个文件的哈希值,首先在列表中选中需要对比的那一种算法,接着点击“选择比较文件”按钮来选择文件,最后就可以看到这两个文件的哈希值是否相同。

图7
[attachment=62768]
图8

小结:通过上面对文件校验知识,以及相关工具的介绍,我们对文件校验有了基本的了解。但是笔者仍然需要提醒大家的是,校验码正确并不代表文件就是安全的。因为黑客在入侵网站后,也会修改网页里面所对应的校验码,所以在下载完成后最好还是用杀毒软件对不放心的文件检测一下。