繁体   English   中英

安全启动和内核锁定之间有什么关系吗?

[英]Is there any relationship between Secure Boot and Kernel Lockdown?

到目前为止,我用谷歌搜索,这两个功能似乎是独立的。

安全启动依赖于内核签名,因此引导加载程序将检查(内核/单映像应用程序)签名,如果有效将调用内核启动函数。

锁定是另一个功能,其中“锁定代码旨在允许内核在启动早期锁定 - 足够早,以至于我们还没有kmalloc()的能力。甚至不允许特权用户访问内核中存在的机密数据记忆。”

在内核被验证为有效后,通过引导参数/sysfs 控制进入锁定。

我的理解正确吗?

因此,在禁用安全启动的情况下,锁定功能应该仍然有效。

是的,我会说你的理解是正确的。

安全启动是在硬件中实现的安全功能(即直接在您的 CPU 中,但它也可以在 UEFI 固件中实现)。 这是一种验证机制,在打开计算机电源时首先完成。 一些已知的公钥存储在硬件中,用于在运行引导加载程序之前验证其签名。 然后可以通过引导过程的多个阶段重复该过程,其中每个阶段验证下一个阶段,直到操作系统启动。 要了解更多信息,请查看有关安全启动的 Debian 文档页面

内核锁定是 Linux 内核的一项安全功能,最近在 5.4 版中作为可选安全模块引入。 正如LWN 这篇有趣的文章中提到的,内核锁定的目的是为了区分以 root 身份运行和以内核模式运行代码的能力。 根据配置,内核锁定可以禁用允许修改正在运行的内核或从用户空间提取机密信息的内核功能。 查看将功能引入 Linux 的相关提交消息

安全启动和内核锁定之间的关系可以通过这个非常重要的考虑来解释(来自上面链接的同一篇 LWN 文章):

UEFI 安全启动的支持者认为这种分离 [即内核锁定] 是必要的; 否则安全启动的承诺(系统只会在内核模式下运行受信任的代码)就无法兑现。 关闭特权攻击者可以在内核模式下运行任意代码的路径需要禁用内核中的许多功能。

换句话说,如果经过验证和运行的内核可以被用户进程修改,那么人们可能会争辩说安全启动是无用的。 事实上,如果没有适当的内核强化,潜在的攻击者可以利用特权用户进程来改变正在运行的内核,从而破坏系统的整个安全模型。

另一方面,人们可以很容易地争辩说,如果没有安全启动,内核锁定是没有用的,因为潜在的攻击者可能会破坏启动链(例如,修改引导加载程序或磁盘上的内核映像)并使机器运行修改后的内核下次开机。

尽管如此,这两个特征是相互独立的 仍然有没有内核锁定的安全启动的有效用例,反之亦然,没有安全启动的内核锁定。 这一切最终取决于您的威胁模型是什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM