为什么内核锁定会阻止休眠?

rug*_*ugk 5 security kernel linux-kernel uefi secure-boot

在我的 systemd 日志 (journalctl) 中,我经常看到此消息:

冬眠受到限制;参见 man kernel_lockdown.7

这似乎源于内核锁定功能,当您在启用安全启动的 UEFI 模式下启动时(仅?)处于活动状态。
据我了解,此功能旨在防止在用户空间运行的程序修改内核。

虽然到目前为止我确实明白这一点,但我只是没有明白一件事: 为什么内核锁定会禁用该功能?为什么它完全禁用休眠?

禁用此功能的休眠究竟是什么“不安全”?

似乎锁定的内核不希望我休眠我的设备。

Linux kernel v5.6.15
Fedora 32 Silverblue


在 Fedora Ask交叉发布。

Ste*_*itt 6

如联机帮助页中所述,

未加密的休眠/挂起交换是不允许的,因为内核映像被保存到随后可以访问的介质中。

未加密的休眠将休眠系统的内存内容按原样存储在磁盘上。这允许攻击者在系统休眠时修改这些内容,从而在系统恢复时对正在运行的系统进行更改,从而解除锁定。

联机帮助页给出了在锁定中支持加密休眠的错误希望,但目前情况并非如此,真正的要求似乎是签名的休眠图像,而不是(或者可能是除此之外,取决于锁定模式)加密图像。

请参阅此 Twitter 线程以了解修复此问题所涉及的内容;特别是:

相反,我们可以生成一个非对称密钥对并将其存储在引导服务变量中,生成一个对称密钥,用它加密图像,用非对称密钥加密对称密钥,保存,在重新启动时读取非对称对并在尝试后丢弃一半恢复?

  • 好吧,虽然我不得不说我的系统是 LUKS 加密的 LVM 安装,所以理论上,内核可以有一些空间来保存加密部分的内核。因此,该消息仍然没有意义,如果它可以加密存储系统,则不会禁用该功能...... (2认同)
  • 正确的原因是内核不支持签名的休眠映像。它在锁定时始终禁用休眠,并且在支持签名的休眠图像之前不会改变。 (2认同)