安全启动

安全启动是电脑行业成员开发的一种安全标准,用于帮助确保设备仅使用受原始设备制造商 (OEM) 信任的软件进行启动。 当电脑启动时,固件会检查每个启动软件片段的签名,包括 UEFI 固件驱动程序(也称为选项 ROM)、EFI 应用程序和操作系统。 如果签名有效,则电脑将会启动,而固件会将控制权转递给操作系统。

OEM 可以使用固件制造商提供的指令创建安全启动密钥,并将其存储在电脑固件中。 添加 UEFI 驱动程序时,还需要确保这些驱动程序已签名并包含在安全启动数据库中。

有关安全引导进程的工作原理的信息,请参阅保护 Windows 10 启动进程

安全启动的要求

若要支持安全启动,必须提供以下各项。

硬件要求 详细信息
UEFI 版本 2.3.1 勘误表 C 变量 必须将变量设置为 SecureBoot=1SetupMode=0,并使用所需的签名数据库 (EFI_IMAGE_SECURITY_DATABASE)(包括有效 KEK 数据库中设置的 PK)来启动安全预配的计算机。 有关详细信息,请在下载的 Windows 硬件兼容性计划规范和策略 PDF 文件中搜索“System.Fundamentals.Firmware.UEFISecureBoot 系统要求”。
UEFI v2.3.1 第 27 部分 平台必须公开一个符合 UEFI v2.3.1 第 27 部分所述配置文件的接口。
UEFI 签名数据库 平台必须在 UEFI 签名数据库 (db) 中预配正确的密钥,使 Windows 能够启动。 平台还必须支持在经过身份验证的情况下对数据库进行安全更新。 安全变量的存储必须与正在运行的操作系统相互隔离,以防在不经受检测的情况下修改这些变量。
固件签名 必须至少使用 RSA-2048 和 SHA-256 加密算法为所有固件组件签名。
启动管理器 打开电源时,系统必须开始执行固件中的代码,并根据算法策略使用公钥加密法来验证启动顺序中所有映像的签名,直到验证了 Windows 启动管理器为止。
回滚保护 系统必须防止固件回滚到旧版本。
EFI_HASH_PROTOCOL 平台提供 EFI_HASH_PROTOCOL(符合 UEFI v2.3.1 规范)用于卸除加密哈希运算负载,并提供 EFI_RNG_PROTOCOL(由 Microsoft 定义)用于访问平台熵。

签名数据库和密钥

在部署电脑之前,OEM 需在该电脑上存储安全启动数据库。 这包括签名数据库 (db)、吊销的签名数据库 (dbx) 和密钥注册密钥数据库 (KEK)。 在制造时,这些数据库存储在固件的非易失性 RAM (NV-RAM) 中。

签名数据库 (db) 和吊销的签名数据库 (dbx) 将列出 UEFI 应用程序、操作系统加载程序(例如 Microsoft 操作系统加载程序或启动管理器)以及可在设备上加载的 UEFI 驱动程序的签名者或映像哈希。 吊销的列表包含不再受信任且不可加载的项。 如果映像哈希位于这两个数据库中,则吊销的签名数据库 (dbx) 优先。

密钥注册密钥数据库 (KEK) 是单独的签名密钥数据库,可用于更新签名数据库和吊销的签名数据库。 Microsoft 要求在 KEK 数据库中包含指定的密钥,以便 Microsoft 将来可向签名数据库添加新的操作系统,或者向吊销的签名数据库添加已知错误的映像。

添加这些数据库并完成最终的固件验证和测试后,OEM 将锁定固件以避免对其进行编辑(但使用正确密钥进行签名的更新,或者由使用固件菜单的实际用户所做的更新除外),然后生成平台密钥 (PK)。 PK 可用于对 KEK 的更新进行签名或关闭安全启动。

如需相关的工具或者在创建这些数据库时需要帮助,请与固件制造商联系。

启动顺序

  1. 打开电脑后,将会根据平台密钥检查每个签名数据库。
  2. 如果固件不受信任,则 UEFI 固件必须启动 OEM 特定的恢复过程,以还原受信任的固件。
  3. 如果 Windows 启动管理器出现问题,固件将尝试启动 Windows 启动管理器的备份副本。 如果此措施仍然失败,则固件必须启动 OEM 特定的补救过程。
  4. 在 Windows 启动管理器开始运行后,如果驱动程序或 NTOS 内核出现问题,则会加载 Windows 恢复环境 (Windows RE),以便能够恢复这些驱动程序或内核映像。
  5. Windows 加载反恶意软件。
  6. Windows 加载其他内核驱动程序并初始化用户模式进程。