# 对未签名镜像进行哈希处理并更新数据库以进行镜像鉴权

Source: [https://docs.qualcomm.com/doc/80-70015-11SC/topic/hash-unsigned-images-and-update-db-for-image-authentication.html](https://docs.qualcomm.com/doc/80-70015-11SC/topic/hash-unsigned-images-and-update-db-for-image-authentication.html)

UEFI 安全启动允许镜像鉴权。此鉴权是通过存储在签名数据库 (DB) 中的镜像的哈希来实现的，即使镜像未签名或镜像中的证书不存在于数据库中也是如此。

此过程保留用于无法从其供应商提供的状态签名或更改的内容。如果镜像哈希在数据库拒绝 (DBX) 列表中可用，则可以撤销对已签名二进制文件的信任，而无需吊销相应的证书或密钥。例如，在处理易受最新攻击的先前签名的 Bootloader 时，这很有用。

应用签名并为同一二进制文件创建数据库哈希是多余的。如果镜像合成不需要任何更改（这意味着不会在镜像中添加或修改新密钥和证书，并且现有镜像不需要 UEFI 安全启动鉴权），按照以下步骤操作。

## 为未签名镜像生成 db.auth 文件

您可以按照以下步骤计算镜像的哈希值并生成允许的签名数据库文件：

1. 生成所有要验证的镜像的哈希值，并将哈希值转换为 `.esl` 文件：

        hash-to-efi-sig-list  <list of efis to be hashed>  <output file name with .esl extension>Copy to clipboard
2. 使用 DB 密钥对 `.esl` 哈希文件进行签名：

        sign-efi-sig-list -k < .key file location > -c < .crt file location > <secure variable name> <Above generated .esl file> <o/p .auth file>Copy to clipboard
3. 将生成的 `db.auth` 文件复制到 EFI 二进制文件中，并将密钥配置到设备中。

例如，在 Linux 主机上：

1. 将 `efi.bin` 文件挂载到 &lt;workspace&gt; 目录中，并在 &lt;workspace&gt; 目录中创建一个 efimountedbin 文件夹。
2. 在 Linux 计算机上，在 &lt;workspace&gt; 目录中创建一个 testkeys 文件夹，并将预先存在的密钥复制到该文件夹中。
3. 对镜像进行签名：

        hash-to-efi-sig-list <workspace>/efimountedbin/EFI/BOOT/ bootaa64.efi <workspace>/efimountedbin/EFI/Linux/uki.efi mergedhash.esl 
        sign-efi-sig-list -k keys db.key -c db.crt db mergedhash.esl db.authCopy to clipboard
4. 将 `db.auth` 文件复制到位于 `<workspace>/efimountedbin/loader/keys/qckeys` 的 qckeys 文件夹中。
5. 执行 dtb 签名步骤，对 dtb 镜像进行签名以生成新的 efi.bin 文件。更多信息，参见[签名镜像并将 (.auth) 密钥/签名文件复制到 EFI 分区](https://docs.qualcomm.com/doc/80-70015-11SC/topic/sign-images-and-copy-auth-key-signed-files-to-efi-partition.html)。
6. 对于目标上的 Linux 主机：
    1. 擦除任何现有的 UEFI 安全启动密钥，并使用 fastboot 刷写 EFI 二进制文件。
    2. 使用 systemd-boot 预配密钥。更多信息，参见[从 systemd-boot 菜单启用 UEFI 安全启动](https://docs.qualcomm.com/doc/80-70015-11SC/topic/enable-uefi-secure-boot-from-systemd-boot-menu.html)。
Note: 所有未签名的文件都使用其他密钥进行签名，并使用此方法向 UEFI 进行鉴权。

**Parent Topic:** [启用 UEFI 安全启动](https://docs.qualcomm.com/doc/80-70015-11SC/topic/enable-uefi-secure-boot.html)

Last Published: Dec 03, 2024

[Previous Topic
从 systemd-boot 菜单启用 UEFI 安全启动](https://docs.qualcomm.com/bundle/publicresource/80-70015-11SC/topics/enable-uefi-secure-boot-from-systemd-boot-menu.md) [Next Topic
示例 OpenSSL 配置](https://docs.qualcomm.com/bundle/publicresource/80-70015-11SC/topics/appendix-openssl-configuration.md)