Windows 2000和Windows XP中神秘的数字签名

大家知道吗?微软发布的具有数字签名的SP2才是正式版本(右击打开文件属性窗口可以查看到图1所示的数字签名信息),这是怎么一回事呢?
图1一、Windows的文件保护功能在Windows 2000以前的Windows版本中,安装操作系统之外的软件,可能会覆盖掉一些共享的系统文件,例如动态链接库(*.dll文件)、可执行文件(*.exe),这样可能会导致程序运行不稳定、系统出现故障,这主要是由于所谓的DLL陷阱所导致 。
为了彻底解决这一问题,在Windows 2000和Windows XP中,微软引入了“Windows文件保护”机制用来防止替换受到保护的系统文件,包括*.sys、*.dll、*.ocx、*.ttf、*.fon、*.exe等类型的文件,Windows文件保护在后台自动运行,可以保护Windows安装程序安装的所有文件 。
Windows文件保护能够检测到其他程序要替换或移动受保护的系统文件的意图,那么它是依据什么来检测的呢?其实,Windows文件保护是通过检测文件的数字签名,以确定新文件的版本是否为正确的Microsoft版本,如果文件版本不正确,Windows文件保护会自动调用dllcache文件夹或Windows中存储的备份文件替换该文件,如果Windows文件保护无法定位相应的文件,那么会提示用户输入该位置或插入安装光盘 。
二、认识数字签名
数字签名是允许用户验证的,如果某文件没有有效的数字签名,那么将无法确保该文件确实来自它所声明的来源,或者无法确保它在发行之后未被篡改过(可能由病毒篡改) 。此时,比较安全的做法是,除非你确定该文件的创建者而且知道其内容,那么才能安全地打开,否则建议不要轻易打开该文件 。凡是通过了微软数字签名的硬件或软件,其外包装上一般都会出现“为Microsoft Windows XP设计(Designed for Microsoft Windows XP)”的徽标 。
在计算机上安装新软件时,系统文件和设备驱动程序文件有时会被未经过签名的或不兼容的版本覆盖,导致系统不稳定 。随Windows XP一起提供的系统文件和设备驱动程序文件都有Microsoft数字签名,这表明这些文件都是原始的未更改过的系统文件,或者它们已被Microsoft同意可以用于Windows 。在Windows 2000/XP中提供了“文件签名验证”工具(见图2),Windows 9x则提供了“系统文件检查器”,我们可以通过这些工具来检查系统文件的数字签名状态 。
图2
默认情况下,Windows文件保护始终处于启用状态,同时允许Windows数字签名文件替换现有文件 。目前,签名文件通过以下方式进行分发:Windows Service Pack、修补程序分发、操作系统升级、Windows Update、Windows设备管理器/类别安装程序 。
三、数字签名实例秀
说了半天,除了保护系统文件外,数字签名究竟能够给普通用户带来哪些好处呢?下面,我们通过几个实例来进行说明:
实例1:验证Windows XP的核心文件是否被替换
现在Windows XP版本有大企业版本、联想随机版本等,那么如何来验证手头的Windows XP属于微软原版呢?
这里,我们只要检查Windows XP的系统文件是否能够通过文件签名验证即可 。在“开始→运行”对话框键入“sigverif”命令打开“文件签名验证”窗口,点击“开始”按钮,首先会建立文件列表,稍候会看到图3所示窗口,这里未经过数字签名的文件大都是驱动程序文件,只要winlogon.exe、licdll.dll两个文件未出现在列表中,那么说明你的Windows XP未被篡改过 。
图3
实例2:驱动程序签名
Windows XP自带的驱动程序都通过了微软的WHQL数字签名,在查看通过数字签名的驱动程序时会看到一个图标 。不过当我们在安装或升级设备驱动程序时,经常会看到图4所示的警告信息,说是“没有通过Windows徽标测试,无法验证它同Windows XP的相容性”,其实这是Windows XP的文件保护功能在起作用,以降低用户安装无保护驱动程序的风险,当然我们只要选择“仍然继续”按钮就可以忽略这一提示并完成驱动程序的安装 。

推荐阅读