

# 如何将 UEFI 安全启动与 Amazon EC2 实例配合使用
<a name="how-uefi-secure-boot-works"></a>

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](https://uefi.org/revocationlistfile) 为许多已知不良的二进制文件和证书维护了公开可用的 dbx。

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

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