详细了解Windows Vista内核的安全性
2008-01-11 16:57:29 来源:WEB开发网因为证书颁发机构会对其服务收取费用并进行基本的背景检查,如验证业务识别,所以很难产生在 64 位 Windows Vista 上运行的匿名内核模式恶意软件。此外,设法溜过验证进程的恶意软件可能会留下线索,这些线索在受到危害的系统发现恶意软件时,可以反击作者。KMCS 还有一些次要的用途,如在怀疑驱动程序有使客户系统崩溃的错误和解除高清晰度多媒体内容锁定(我会在稍后简单介绍)时,会向 Windows 在线崩溃分析团队提供联系信息。
KMCS 使用 Windows 十多年来一直采用的公钥加密技术,并要求内核模式代码包括由受信任证书颁发机构之一生成的数字签名。如果发布者将驱动程序提交给 Microsoft Windows 硬件质量实验室 (WHQL),并且驱动程序通过了可靠性测试,则 Microsoft 会充当签署代码的证书颁发机构。大多数发布者将通过 WHQL 获得签名;但是如果驱动程序没有 WHQL 测试程序,发布者不想提交到 WHQL 测试,或者驱动程序是在系统启动早期加载的引导启动驱动程序,则发布者必须自己签署代码。为此,他们必须首先从 Microsoft 确定为受信任内核模式代码签名的证书颁发机构之一获得代码签名证书。然后,作者通过数字方式哈希代码,通过使用私钥进行加密来签署哈希,并将证书和加密的哈希包含在代码中。
当驱动程序尝试加载时,Windows 会使用存储在证书中的公钥解密包含在代码中的哈希,然后验证哈希与代码中包含的哈希是否匹配。证书的真实性也通过相同的方式进行检查,但使用 Windows 附带的证书颁发机构的公钥。
Windows 还检查相关的证书链,一直检查到 Windows 启动加载器和操作系统内核中嵌入的根颁发机构之一。尝试加载未签名的 64 位驱动程序不应该发生在生产系统,因此不同于“即插即用”管理器(它在指向加载没有确认是否通过 WQHL 测试签名的驱动程序时显示警告对话框),64 位 Windows Vista 在阻止加载未签名驱动程序时,在无提示的情况下随时将事件写入代码完整性应用程序事件日志,如图 5 所示。32 位 Windows Vista 也检查驱动程序签名,但允许加载未签名的驱动程序。阻止它们将会破坏升级的 Windows XP 系统(要求在 Windows XP 上加载驱动程序,并且还允许支持仅存在 Windows XP 驱动程序的硬件)。不过,32 位 Windows Vista 还会在加载未签名驱动程序时将事件写入代码完整性事件日志。
更多精彩
赞助商链接