小编dir*_*obs的帖子

Shim 如何在安全启动中验证二进制文件?

UEFI 垫片加载器

shim 是一个简单的 EFI 应用程序,它在运行时会尝试打开并执行另一个应用程序。它最初会尝试通过标准 EFILoadImage()StartImage()调用来执行此操作。如果这些失败(例如,因为启用了安全启动并且二进制文件未使用适当的密钥签名),它将根据内置证书验证二进制文件。如果此操作成功并且二进制或签名密钥未列入黑名单,则 shim 将重新定位并执行二进制。

我一直在阅读以了解启用安全启动选项时验证过程是如何发生的:

vmlinuz *-generic 和 *-generic.efi.signed 的区别

安全启动实际上是如何工作的?

管理 Linux 的 EFI 引导加载程序:控制安全引导

我现在可以说程序是这样的:

Shim 首先由机器的固件运行。现在 shim 必须运行引导加载程序。我不明白的是 shim 如何验证二进制文件?例如,上面引用的段落指出 shim 尝试通过标准 EFILoadImage()StartImage()调用启动另一个应用程序,如果失败,shim 尝试从内置证书验证二进制文件。那么这个内置证书属于 shim 吗?本质上,为什么 shim 被称为 Machine Owner Key Manager (MOK)?因为它有自己的密钥数据库来验证二进制文件。

简单地说,机器的固件在 NVRAM 中有自己的密钥数据库来验证二进制文件,而 shim 有自己的密钥数据库来验证二进制文件?

在验证并执行引导加载程序后,引导加载程序在哪里查找需要引导的已签名内核的密钥,例如从固件的密钥数据库中?

boot grub2 bootloader uefi secure-boot

5
推荐指数
2
解决办法
6330
查看次数

标签 统计

boot ×1

bootloader ×1

grub2 ×1

secure-boot ×1

uefi ×1