UEFI 安全启动在 Linux 发行版中日益增长的作用
随着开源实现的日益普及以及个人计算设备用途的扩展,包括移动和非 PC 设备以及传统的台式机和笔记本电脑,打击恶意软件的攻击和安全障碍对于广泛的供应商、开发人员和最终用户社区来说日益重要。 这种趋势提供了一个有用的例子,说明统一可扩展固件接口 (UEFI) 技术提供的灵活性和标准化如何应对共同的挑战,从而帮助将更好的产品和体验推向市场。
UEFI 规范定义了操作系统 (OS) 和平台固件之间行业领先的接口,提高了计算设备的性能、灵活性和安全性。 UEFI 技术专为可扩展性、可扩展性和互操作性而设计,简化了平台固件的技术演进。 2013 年,包括 Ubuntu 12.10、Fedora 18 和 OpenSUSE 12.3 在内的几个开源 Linux 操作系统开发人员开始在其发行版中使用 UEFI 规范。
UEFI 的其他功能包括改进的预启动模式安全性、更快的启动速度、对大于 2.2 TB 驱动器的支持以及与现代 64 位固件设备驱动程序的集成。 UEFI 标准是独立于平台的,并且与各种平台架构兼容——这意味着,包括 Linux 和商业系统在内的几种不同类型的操作系统的用户都可以享受 UEFI 的好处。 同样,由于 UEFI 规范包括多个 CPU 架构的绑定,因此这些好处适用于具有这些操作系统的各种硬件平台。
虽然 UEFI 安全启动可能是最受关注的功能之一,但 UEFI 规范中的完整功能集为操作系统和预启动应用程序提供了标准化的可互操作和可扩展的启动环境。 此环境的属性使其非常适合在快速扩展的 Linux 发行版中增加使用。 UEFI 规范是强大且经过设计的,可以补充甚至进一步推进 Linux 发行版。 行业专家预计在 2014 年及以后,UEFI 规范的使用将继续扩展。
Linux 发行版中的 UEFI 安全启动恶意软件开发者增加了攻击预启动环境的尝试,因为操作系统和防病毒软件供应商已经加强了他们的代码。 隐藏在固件中的恶意软件实际上是操作系统无法追踪的,除非搜索专门针对固件内的恶意软件。 UEFI 安全启动有助于系统固件、驱动程序和软件验证。 UEFI 安全启动还允许 Linux 发行版的用户在不禁用 UEFI 安全启动的情况下启动备用操作系统。 它为用户提供了以最安全和高效的方式运行他们选择的软件的机会,同时促进互操作性和技术创新。
安全启动是 UEFI 规范的可选功能。 是否实施该功能以及其实施细节(从最终用户的角度来看)的选择是设备制造商做出的业务决策。 例如,考虑最简单和最常见的情况,即平台使用符合 UEFI 标准的固件和支持 UEFI 的操作系统。 当此系统开机时(假设它已启用 UEFI 安全启动),UEFI 固件使用存储在平台中的安全密钥来验证从磁盘读取的引导加载程序。 如果引导加载程序签名与验证所需的签名密钥不匹配,系统将无法启动。
通常,签名检查会成功,因为平台所有者将购买已预装软件的系统,该软件由制造商设置以预先建立固件和操作系统之间的信任。 如果所有者已安装受信任的操作系统加载程序以及代表该信任的适当密钥(如果这些密钥尚未存在于平台中),则签名检查也会成功。 签名检查失败的情况最有可能发生在不受信任的恶意软件以某种方式潜入机器,将其自身插入启动路径并篡改先前安装的软件时。 通过这种方式,UEFI 安全启动提供了硬件验证、无恶意软件的操作系统引导过程的前景,这有助于提高系统部署安全性。
如果没有 UEFI 安全启动,恶意软件开发者可以更轻松地利用几个预启动攻击点,包括系统嵌入式固件本身,以及固件启动和操作系统加载之间的间隔。 UEFI 规范促进了安全增强接口的可扩展性和自定义,但允许实施者指定如何使用它们。 作为一个可选功能,平台制造商和系统所有者可以决定如何管理 UEFI 安全启动。 因此,实现方式可能在如何表达策略方面有所不同,当然,UEFI 安全启动并非针对每种类型的恶意软件或安全漏洞的万能药。 然而,在已经进入市场的各种实现中,UEFI 安全启动已被证明是提高平台完整性并成功防御危险的操作系统前恶意软件攻击点的实用且有用的工具。
UEFI 安全启动技术的广泛采用,特别是 Linux 社区的采用,不仅是迈向创新的运动,也是迈向新兴计算机平台安全保障的进步一步。 固件技术在各个领域的演进持续获得动力,增加了 UEFI 技术在 Linux 和商业系统中的使用。 这证明了 UEFI 在设备、软件和系统之间的跨功能性,以及其为几乎任何平台提供下一代技术的能力。
在开源实现中禁用 UEFI 安全启动开源社区中已经出现了各种使用 UEFI 安全启动的模型。 最简单的方法是使用禁用该功能的能力——几乎所有实现 UEFI 安全启动的平台都具备此功能。 这样做,平台所有者使机器与平台支持的任何操作系统兼容,而不管该操作系统是否支持 UEFI 安全启动。 这种方法的缺点是放弃了启用该功能为平台提供的保护,即在提高对操作系统前恶意软件的抵抗力方面。
关于在任何平台中启用或禁用安全启动的能力,有几个关键点需要理解。 UEFI 规范将是否实施安全启动以及是否提供“开/关开关”的选择权留给了系统设计人员。 实际考虑通常会使适当的选择变得显而易见,这取决于产品的预期用途。 例如,旨在用作自助服务终端的系统,该系统必须在零售店环境中在无人值守的情况下生存,则可能会选择尽可能锁定软件负载,以避免会损害自助服务终端基本功能的意外更改。 如果自助服务终端运行时使用 UEFI 安全启动启动,则作为最大化自助服务终端可用性和正常运行时间策略的一部分,不提供禁用该功能的方法可能是有意义的。
通用计算平台呈现出不同的动态。 在这些情况下,市场上的期望是,无论工厂发货时是什么操作系统,都可以在机器上安装所有者选择的一个或多个操作系统。 对于此类系统的制造商而言,是否允许启用/禁用 UEFI 安全启动的选择考虑了他们的客户希望从任何可用的操作系统中进行选择,因为有些操作系统可能不包含对 UEFI 安全启动的支持。 开源以及商业操作系统支持都是如此。 例如,构建一台支持 Microsoft 目录中所有操作系统产品的机器的供应商必须支持没有 UEFI 安全启动支持的旧版本,以及具有此类支持的 Windows 8 世代的新版本。 事实上,启用/禁用功能的需求出现在 Microsoft 自己的平台设计指南中,作为一项强制性要求,以确保符合标准的系统可以运行旧产品以及最新产品。
遵循相同的推理路线,大多数通用平台不仅随附启用/禁用功能,而且还随附平台所有者管理密钥库的功能。 这意味着所有者可以删除预安装的密钥,特别是添加他们自己选择的新密钥。 然后,此功能为那些选择滚动他们自己的操作系统加载程序映像(例如自签名)或选择由他们选择的 CA 签名的操作系统加载程序的人提供了基础,而不管适当的密钥是否从工厂发货。
在某些情况下,Linux 发行版的创建者选择直接参与 UEFI 安全启动生态系统。 在这种情况下,发行版包括由证书颁发机构 (CA) 签名的操作系统加载程序。 今天,主要的 CA 是 Microsoft 托管的 UEFI CA,它与 Microsoft 自己的软件产品管理使用的 CA 是分开但平行的。 在撰写本文时,没有其他 CA 提出参与; 但是,UEFI 论坛欢迎这样的提议,因为拥有签名事件的第二个供应来源将是理想的。
在其他情况下,Linux 发行版为用户提供了一个通用的 shim-bootloader,它将以安全的方式链式引导到标准的、更完整的 Linux 引导加载程序。 此过程将信任链从 UEFI 安全启动扩展到 Linux 系统环境,在该环境中,操作系统存在的代码负责确定如何处理该信任(如果有)。
利用 UEFI 安全启动的基于 Linux 的平台过去一年标志着 UEFI 规范在三个流行的基于 Linux 的操作系统中的实现:Ubuntu 12.10、Fedora 18 和 OpenSUSE。 以下是有关它们使用 UEFI 标准的更多详细信息。
Canonical 的 Ubuntu 12.10
Canonical 的 Ubuntu 和 UEFI 固件之间基本级别兼容性的支持始于 2012 年 10 月,发布了 12.10 64 位和 12.04.2 64 位版本。 在发布时,行业专家预测,大多数机器都将配备符合 UEFI 标准 2.3.1 版本的固件。 目前,所有 Ubuntu 64 位版本现在都支持 UEFI 安全启动功能。 在安全启动配置中部署时,Ubuntu 启动过程使用一个小的“boot shim”,它允许与第三方 CA 兼容。
Fedora 18
Fedora 18 中的 UEFI 安全启动实现可以防止在内核模式下执行未签名代码,并且可以在启用安全启动的系统上启动。 Fedora 也可以在不支持或已禁用安全启动的 UEFI 系统上启动。 引导加载程序可以在引导路径验证过程在没有 UEFI 的情况下进行的环境中运行。 在此模式下,对在内核模式下执行代码没有任何限制。 在 Fedora 18 中,UEFI 安全启动将信任链从 UEFI 环境扩展到内核。 验证过程发生在加载内核模块之前。
OpenSUSE 12.3
最近 UEFI 成为所有 x86 平台上的标准固件是开源社区的一个里程碑,特别是对于 OpenSUSE 而言。 OpenSUSE 12.2 包含对 UEFI 的支持,而最近的 OpenSUSE 12.3 提供了对安全启动扩展的实验性支持。
Linux 社区在下一代平台上越来越多地使用 UEFI 技术来解决安全问题在非传统市场领域,对固件创新的依赖日益增加,加上个人计算从传统台式机和笔记本电脑扩展到越来越广泛的外形尺寸,正在改变计算设备的格局。 虽然移动设备传统上具有自定义的、锁定的环境,但它们日益增长的多功能性和开源操作系统的日益普及带来了对复杂安全攻击日益增长的脆弱性。 虽然 UEFI 安全启动不能单方面消除任何设备上的安全攻击入侵,但它有助于为所有使用 UEFI 固件的平台(包括为平板电脑、智能手机和其他非 PC 设备设计的基于 Linux 的发行版)提供跨功能解决方案。 目前,没有人声称或演示过可以绕过 UEFI 安全启动的攻击,前提是正确实施和启用 UEFI 安全启动。 UEFI 技术向 Linux 领域的扩展满足了对安全性的日益增长的需求,尤其是在移动和非 PC 应用程序领域。
UEFI 技术在基于 Linux 的应用程序中的下一步是什么?随着 UEFI 规范继续推动各个领域固件技术的演进,它们的使用将继续获得动力。 此外,基于 Linux 的发行版的普及和激增将为 UEFI 技术创造更大的需求。 最近在基于 Linux 的操作系统(如 Ubuntu 12.10、Fedora 18 和 OpenSUSE 12.3)中使用 UEFI 规范就突显了这一趋势。
这些发行版公司以及 Linux 基金会和开源社区的许多其他思想领袖团体现在都是 UEFI 论坛的成员。 这对整个生态系统来说是向前迈出的重要一步,改善了固件和操作系统社区之间的创新与协作。 例如,如上所述,许多系统都包含用于自我管理平台中密钥库的功能,但如今,自动化这种功能的潜力有限。 来自开源社区的提案解决了这一限制,有望显着简化在售后场景中安装开源操作系统。 通过提供一个讨论此类提案的场所,让所有合适的利益相关者都能听到,UEFI 论坛有助于加速此类解决方案进入市场。 这正是 UEFI 论坛渴望促进的那种创新和协作。
UEFI 技术在 Linux 和商业系统中的日益普及证明了其为几乎任何平台提供下一代技术的能力。 越来越多的 Linux 发行版使用 UEFI 规范,允许用户启动他们选择的几乎任何操作系统,同时仍然享受 UEFI 安全启动的额外安全优势。 随着 UEFI 规范在众多平台上的扩展,其预期目的——通过促进软件、设备和系统之间的互操作性来简化和帮助固件创新——得以实现。
UEFI 的主要功能-
支持跨多个接口的更安全的系统。
-
更快的启动时间。
-
更快的上市时间。
-
开发期间的可扩展性、模块化和轻松的原型设计。
-
UEFI 规范允许开发人员在构建过程中重用代码,从而提高效率。