我听说过很多有关微软如何在 Windows 8 中实现 UEFI 安全启动的消息。显然,它可以防止“未经授权”的引导加载程序在计算机上运行,从而防止恶意软件。自由软件基金会发起了一场反对安全启动的活动,很多人在网上说这是微软为了“消灭自由操作系统”而进行的“权力攫取”。
如果我购买了预装了 Windows 8 和安全启动的计算机,我以后还能安装 Linux(或其他操作系统)吗?还是说装有安全启动的计算机只能安装 Windows?
答案1
首先,简单回答你的问题:
如果你有 ARM 平板电脑运行 Windows RT(如 Surface RT 或 Asus Vivo RT),然后您将无法禁用安全启动或安装其他操作系统. 与许多其他 ARM 平板电脑一样,这些设备将仅有的运行其自带的操作系统。
如果你有一台非 ARM 计算机运行 Windows 8(如 Surface Pro 或任何配备 x86-64 处理器的超极本、台式机和平板电脑),然后您可以完全禁用安全启动或者您可以安装自己的密钥并签署自己的引导加载程序。无论哪种方式,您可以安装第三方操作系统,如 Linux 发行版或 FreeBSD 或 DOS 或任何您喜欢的。
现在,让我们来详细了解一下安全启动的工作原理:关于安全启动有很多错误信息,尤其是来自自由软件基金会和类似组织的信息。这使得很难找到有关安全启动实际作用的信息,所以我会尽力解释。请注意,我没有开发安全启动系统或类似东西的个人经验;这只是我从网上阅读中了解到的。
首先,安全启动不是这是微软想出的东西。他们是第一个广泛实施它的人,但他们并不是它的发明者。UEFI 规范的一部分,它基本上是您可能习惯的旧 BIOS 的较新替代品。UEFI 基本上是操作系统和硬件之间对话的软件。UEFI 标准由一个名为“UEFI 论坛”,该委员会由微软、苹果、英特尔、AMD 和少数计算机制造商等计算行业代表组成。
第二点,在计算机上启用安全启动不是意味着计算机永远无法启动任何其他操作系统。事实上,微软自己的 Windows 硬件认证要求规定,对于非 ARM 系统,您必须能够禁用安全启动并更改密钥(以允许其他操作系统)。稍后会详细介绍。
安全启动有什么作用?
本质上,它可以防止恶意软件通过启动顺序攻击您的计算机。通过引导加载程序进入的恶意软件很难被检测和阻止,因为它可以渗透到操作系统的低级功能中,使防病毒软件无法发现它。安全启动实际上所做的就是验证引导加载程序是否来自受信任的来源,并且没有被篡改。可以把它想象成瓶子上的弹出式瓶盖,上面写着“如果盖子弹出或密封被篡改,则请勿打开”。
在最高级别的保护中,您拥有平台密钥 (PK)。任何系统上只有一个 PK,它由 OEM 在制造期间安装。此密钥用于保护 KEK 数据库。KEK 数据库保存密钥交换密钥,用于修改其他安全启动数据库。可以有多个 KEK。然后是第三级:授权数据库 (db) 和禁止数据库 (dbx)。它们分别包含有关证书颁发机构、其他加密密钥和要允许或阻止的 UEFI 设备映像的信息。为了允许引导加载程序运行,必须使用密钥对其进行加密签名,该密钥是在数据库中,并且不是在 dbx 中。
图片来源构建 Windows 8:使用 UEFI 保护预操作系统环境
在实际的 Windows 8 认证系统上如何实现
OEM 生成自己的 PK,Microsoft 提供 KEK,OEM 需要将其预加载到 KEK 数据库中。然后,Microsoft 签署 Windows 8 引导加载程序,并使用其 KEK 将此签名放入授权数据库中。当 UEFI 启动计算机时,它会验证 PK,验证 Microsoft 的 KEK,然后验证引导加载程序。如果一切正常,则操作系统可以启动。
图片来源构建 Windows 8:使用 UEFI 保护预操作系统环境
Linux 等第三方操作系统从何而来?
首先,任何 Linux 发行版都可以选择生成 KEK,并要求 OEM 默认将其包含在 KEK 数据库中。这样,他们就可以像 Microsoft 一样完全控制启动过程。这样做的问题在于,由 Fedora 的 Matthew Garrett 解释,是:a) 让每家 PC 制造商都包含 Fedora 的密钥会很困难,并且 b) 这对其他 Linux 发行版来说不公平,因为他们的密钥不会包含在内,而较小的发行版没有那么多的 OEM 合作伙伴关系。
Fedora 选择使用微软的签名服务(其他发行版也纷纷效仿)。此方案要求向 Verisign(微软使用的证书颁发机构)支付 99 美元,并授予开发人员使用微软的 KEK 签署其引导加载程序的能力。由于大多数计算机中都已安装微软的 KEK,因此他们可以使用自己的 KEK 签署其引导加载程序以使用安全启动。最终,它与更多计算机兼容,并且总体成本低于设置自己的密钥签名和分发系统。上述博客文章中提供了有关其工作原理的更多详细信息(使用 GRUB、签名的内核模块和其他技术信息),如果您对此类内容感兴趣,我建议您阅读。
假设您不想处理注册微软系统的麻烦,或者不想支付 99 美元,或者只是对以 M 开头的大公司怀恨在心。还有另一种选择,仍然使用安全启动并运行 Windows 以外的操作系统。微软的硬件认证 需要OEM 允许用户将系统置于 UEFI“自定义”模式,在此模式下,他们可以手动修改安全启动数据库和 PK。系统可以进入 UEFI 设置模式,在此模式下,用户甚至可以指定自己的 PK,并自行签署引导加载程序。
此外,微软自身的认证要求强制要求 OEM 包含一种在非 ARM 系统上禁用安全启动的方法。您可以关闭安全启动!唯一无法禁用安全启动的系统是运行 Windows RT 的 ARM 系统,其功能与 iPad 更相似,无法加载自定义操作系统。虽然我希望能够在 ARM 设备上更改操作系统,但公平地说,微软在这里遵循了平板电脑方面的行业标准。
那么安全启动本质上并不是邪恶的吗?
因此,正如您所看到的,安全启动并不邪恶,并且不仅限于在 Windows 上使用。自由软件基金会和其他组织对此感到不满的原因是,它确实增加了使用第三方操作系统的额外步骤。Linux 发行版可能不喜欢付费使用 Microsoft 的密钥,但这是让安全启动在 Linux 上运行的最简单、最具成本效益的方式。幸运的是,关闭安全启动很容易,并且可以添加不同的密钥,从而避免与 Microsoft 打交道。
鉴于恶意软件数量日益增多,安全启动似乎是一个合理的想法。它并不是一个统治世界的邪恶阴谋,而且比一些免费软件专家让你相信的要可怕得多。
补充阅读:
- Microsoft 硬件认证要求
- 构建 Windows 8:使用 UEFI 保护预操作系统环境
- Microsoft 关于安全启动部署和密钥管理的演示
- 在 Fedora 中实现 UEFI 安全启动
- TechNet 安全启动概述
- 维基百科关于 UEFI 的文章
总结:安全启动可防止恶意软件在启动过程中以低水平、不可检测的程度感染您的系统。任何人都可以创建必要的密钥来使其工作,但很难说服计算机制造商分发你的密钥对所有人开放,因此您也可以选择向 Verisign 付费,以使用 Microsoft 的密钥对您的引导加载程序进行签名并使其运行。您还可以禁用安全启动任何非ARM计算机。
最后,关于 FSF 反对安全启动的活动:他们的一些担忧(即这使得它更难安装免费操作系统)是有效的达到某一点。但是,由于上述原因,声称这些限制将“阻止任何人启动除 Windows 之外的任何系统”显然是错误的。反对 UEFI/安全启动作为一种技术是目光短浅、误导性的,而且无论如何都不太可能有效。更重要的是确保制造商真正遵循微软的要求,让用户根据需要禁用安全启动或更改密钥。