我将默认的ubuntu方法与shim和grub2结合使用,并结合了自己的平台密钥(带有sbsign的自签名shim)和加密的根分区,以安全引导我的ubuntu安装。但这仅验证grubx64.efi和内核,而不能保护未加密启动分区上的initrd.img和grub.cfg文件免受恶意修改。
那么,在使用它们引导之前,如何验证initrd和grub的配置(可能使用sha256哈希)?验证可以在垫片,grub或其他我可能使用的其他工具中进行,以补充或替代垫片和/或grub。
这个问题的目的是防止在修改后的环境(内核命令行和initrd)下执行内核,以防止将根分区加密密码泄漏到任何地方。
尽管已经阅读了几天有关安全启动的Web教程/博客,但仍未找到任何方法来验证启动配置,包括Ubuntu和Linux Foundation的PreLoader.efi,所有这些都解释了如何验证包括内核模块在内的可执行文件的工作方式,但是没有一个其中提到了grub.cfg和initrd(其中的shell脚本和配置文件),因此看起来我是第一个在引导过程中要求验证非二进制文件的人。我发现过的最好的资料是罗德·史密斯(Rod Smith)的资料。
我还没有尝试过修改shim或grub的源代码,创建一个fork或直接对其进行贡献。那是唯一的方法吗?