在 x86 上构建根目录和安全启动 - 可以做到吗?

在 x86 上构建根目录和安全启动 - 可以做到吗?

我正在尝试弄清楚 buildroot 是否可以生成具有安全启动功能的系统。安全启动需要正确签名的内核。目标硬件是支持 TPM 2.0 的 x86-64/AMD64 处理器。

安全启动可以通过 Ubuntu 等 Linux 发行版实现。

我查阅了 Buildroot 手册并进行了大量的 Google 搜索 - 没有找到任何明确的答案。

有人尝试过这个吗?

答案1

您可以通过以下方式获取签名的内核签署内核。它是如何构建的并不重要,只要你能插入额外的步骤来签名即可。任何 Authenticode 签名工具都可以使用,例如:

  • 签名工具
  • osslsigncode
  • 设计

但是,请记住,典型的 PC 仅配备一两个认可的签名者(Microsoft,有时是 Canonical)。

其他一切都必须通过代理机制;要么你将每个内核提交给微软签名(不现实),要么使用 Red Hat shim(已经签名)链式加载你的内核,或者当然,您可以在 EFI 固件中安装自己的安全启动密钥作为“受信任的签名者”,这只有通过固件设置界面才有可能。

因此,如果您完全控制目标硬件,您可以生成自己的 KEK/PK/db 密钥对并安装它们,然后只需在 vmlinuz 或任何其他涉及的 .efi 可执行文件上运行构建过程signtool(使用 db 密钥)。

(这Arch Linux Wiki 说明可能相关。密钥对是用于“代码签名”的自签名 X.509 证书 – 它们不必来自商业 CA。)

如果您无法完全控制硬件,则需要将 Shim 纳入启动过程,这意味着获取“其他人”的已由 Microsoft 签名的 Shimx64.efi 副本(例如 Fedora/RedHat 的副本),并让其启动您的 vmlinuz.efi 或 grubx64.efi。您将无法像使用 Ubuntu 那样实现完全无缝的安全启动(Ubuntu 的 Shim 版本只能“无缝”启动由 Ubuntu 签名的内核);至少有一个步骤是让 Shim 将您的 SB 签名密钥注册为“MOK”。

(Shim 实现了“MOK”(机器所有者密钥);UEFI 本身没有这样的概念。)

相关内容