如何将 UEFI 安全启动与 Amazon EC2 实例配合使用
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。