如何使用安全启动保护 initrd 和 grub.cfg?

Jue*_*gen 9 secure-boot

我正在使用带有 shim 和 grub2 的默认 ubuntu 方法,结合我自己的平台密钥(带有 sbsign 的自签名 shim)和加密的根分区,以安全启动我的 ubuntu 安装。但这仅验证 grubx64.efi 和内核,而不能保护未加密启动分区上的 initrd.img 和 grub.cfg 文件免受恶意修改。

那么如何在使用它们启动之前验证 initrd 和 grub 配置,可能使用 sha256 哈希?该验证可以在 shim、grub 或我可能使用的其他工具中进行,以补充或代替 shim 和/或 grub。

这个问题的目的是为了防止在修改后的环境(内核命令行和initrd)下执行内核,以防止将根分区加密密码泄露到任何地方。

尽管阅读了有关安全启动的网络教程/博客(包括 Ubuntu 和 Linux 基金会的 PreLoader.efi),但没有找到任何方法来验证启动配置,所有这些都解释了包括内核模块在内的可执行文件的验证如何工作,但没有其中提到了 grub.cfg 和(其中的 shell 脚本和配置文件)initrd,所以看起来我是第一个在启动过程中要求验证非二进制文件的人。我找到的最好的资源是Rod Smith 的资源

我还没有尝试的是修改 shim 或 grub 的源代码,创建一个 fork,或者直接为它们做贡献。那会是唯一的出路吗?

小智 0

Grub 似乎支持使用分离签名进行签名验证。我怀疑这就是你的答案。