UEFI 安全启动的工作原理 - Amazon Elastic Compute Cloud

UEFI 安全启动的工作原理

UEFI 安全启动是 UEFI 中指定的一项功能,它提供了有关启动链状态的验证。它旨在确保固件自初始化后只执行经过加密验证的 UEFI 二进制文件。这些二进制文件包括 UEFI 驱动程序和主启动加载程序以及链加载组件。

UEFI 安全启动指定了四个密钥数据库,这些数据库在信任链中使用。数据库存储在 UEFI 变量存储中。

信任链如下所示:

平台密钥(PK)数据库

PK 数据库是信任根。它包含一个公有 PK 密钥,该密钥在信任链中用于更新密钥交换密钥(KEK)数据库。

要更改 PK 数据库,必须拥有私有 PK 密钥才能签署更新请求。这包括通过写入空 PK 密钥来删除 PK 数据库。

密钥交换密钥(KEK)数据库

KEK 数据库是信任链中用于更新签名(db)和拒绝列表(dbx)数据库的公有 KEK 密钥的列表。

要更改公有 KEK 数据库,必须拥有私有 PK 密钥才能签署更新请求。

签名(db)数据库

db 数据库是信任链中用于验证所有 UEFI 启动二进制文件的公有密钥和哈希值的列表。

要更改 db 数据库,必须拥有私有 PK 密钥或私有 KEK 密钥中的任何一个才能签署更新请求。

签名拒绝列表(dbx)数据库

dbx 数据库是不受信任的公有密钥和二进制哈希的列表,在信任链中用作吊销文件。

dbx 数据库始终优先于所有其他密钥数据库。

要更改 dbx 数据库,必须拥有私有 PK 密钥或私有 KEK 密钥中的任何一个才能签署更新请求。

UEFI 论坛在 https://uefi.org/revocationlistfile 为许多已知不良的二进制文件和证书维护了公开可用的 dbx。

重要

UEFI 安全启动在任何 UEFI 二进制文件上强制执行签名验证。要允许在 UEFI 安全启动中执行 UEFI 二进制文件,请使用上述任何私有 db 密钥对其进行签名。

默认情况下,UEFI 安全启动处于禁用状态,且系统处于 SetupMode 中。当系统处于 SetupMode 时,所有密钥变量都可以在没有加密签名的情况下进行更新。设置 PK 后,启用 UEFI 安全启动并退出 SetupMode。