前言:首先,这篇是微软关于Windows8 UEFI安全启动协议解读的完整版,前几日已有不少节选被编译出来,从时间上讲确实落后了;但鉴于各种对Microsoft 实施安全启动的方式的误解,比如解读为微软恶意打压Linux等。Win8之家决定以此文给大家一个交代,相信有助于大家的分辨。由生态系统团队的 Tony Mangefeste 撰写,来自Building Windows 8博客。
指导原则 – 在安全方面毫不迁就
UEFI 安全启动协议是实现跨平台和固件安全的基础,与体系结构无关。在执行固件映像之前,安全启动基于公钥基础结构 (PKI) 流程来验证固 件映像,帮助降低遭受启动加载程序攻击的风险。在 Windows 8 中,Microsoft 依赖此协议来改进用户的平台安全性。
什么是 UEFI?
UEFI(统一可扩展固件接口)由 UEFI 论坛统一管理,UEFI 论坛是由芯片组供应商、硬件供应商、系统供应商、固件供应商和操作系统供应商联合组建的一个组织。
UEFI 为个人计算机定义了下一代固件接口。基本输入和输出系统 (BIOS) 固件最初采用汇编语言进行编程,并使用中断来执行输入/输出操作,在出现之初即确定了 PC 生态系统的基本框架,但是随着计算技术的发展,“现代固件”定义应运而生,以满足下一代平板电脑和设备的需求。
UEFI 旨在定义一种标准通信方式,规范启动过程中操作系统与平台固件之间的通信。在 UEFI 出现之前,在启动过程中主要利用软件中断机制与硬件进行通信。现代 PC 可以在硬件和软件之间更快速、更高效地执行块输入/输出操作,在设计中使用 UEFI 可以发挥硬件的全部潜能。
什么是安全启动?
UEFI 具有固件验证过程(称为“安全启动”),该过程在 UEFI 2.3.1 规范第 27 章中定义。安全启动定义平台固件如何管理安全证书,如何进行固件验证以及定义固件与操作系统之间的接口(协议)。
Microsoft 的平台完整性体系结构利用 UEFI 安全启动以及固件中存储的证书与平台固件之间创建一个信任根。随着恶意软件的快速演变,恶意软 件正在将启动路径作为首选攻击目标。此类攻击很难防范,因为恶意软件可以禁用反恶意软件产品,彻底阻止加载反恶意软件。借助 Windows 8 的安全 启动体系结构及其建立的信任根,通过确保在加载操作系统之前,仅能够执行已签名并获得认证的“已知安全”代码和启动加载程序,可以防止用户在根路径中执行 恶意代码。
安全启动只是 Win8平台完整性保障系统的一个组成部分。结合 UEFI,Microsoft 还对其他可用硬件实施整体的安全策略,以便进一步增强平台的安全性。
背景知识:安全启动的工作原理
PC 开机时将启动代码执行过程,配置处理器、内存、和硬件外围设备,以便为执行操作系统做准备。无论基于哪一种硅体系结构(x86、ARM 等),在所有平台中,此过程都是一样的。
之后将启动系统,在切换到操作系统加载程序之前,固件将检查硬件外围设备(如网卡、存储设备或视频卡)中固件代码的签名。此设备代码称为“可选 ROM”,通过确保该设备已为切换到操作系统准备就绪,继续执行配置过程。
在启动过程的这一部分中,固件将检查固件模块中嵌入的签名(与应用程序很像),如果该签名与固件中的签名数据库匹配,则将允许执行该模块。这些签名存储在固件中的数据库中。这些数据库包含“允许”和“禁止”列表,用于确定是否可继续执行启动过程。
由谁来控制安全启动
迄今为止,用户掌握着其 PC 的控制权。Microsoft 的理念是:为用户提供最佳的体验是我们的第一原则,允许用户自行决定是否使用安全启动。我 们与 OEM 生态系统紧密合作,为用户提供了这一灵活性。借助 UEFI 通过安全启动提供的安全性,大多数用户的系统将能够抵御启动加载程序攻击。如 果用户希望运行早期的操作系统,则可以使用我们所提供的选项进行设置。
在下面的屏幕截图中可以看到,我们在固件设计中允许用户禁用安全启动。不过,您需自行承担禁用安全启动所带来的风险。
网友评论