休眠前是否从 RAM 中擦除了加密密钥,或者如何进行(Luks 和 Truecrypt)

信息安全 linux 磁盘加密 记忆 冷启动攻击
2021-08-23 14:31:47

使用 Linux,我有使用 LUKS 加密的系统和交换/休眠分区,以及使用 Truecrypt 加密的数据分区,我想知道我什么时候让我的笔记本电脑进入休眠状态,如果在计算机关闭之前从 RAM 中擦除了加密密钥,或者如果我必须等待几分钟才能完全免疫冷启动攻击。

从技术上讲,我猜加密软件即使检测到笔记本电脑将要休眠,也很难做到这一点,因为如果它在将内存复制到磁盘之前更改了内存,那么加密卷将不会在恢复时恢复。

可能只有内核可以安全地更改内存而不是磁盘上的内存映像,但它不会知道加密密钥,并且必须擦除整个 RAM,这可能不是默认情况下完成的。

但也许有一个内核选项可以做到这一点?

或者也许可以在休眠完成后但在计算机关闭之前运行一些 pm-utils 脚本?

或者还有另一种方法可以在休眠之后但在关机之前运行某些程序?

或者内核可能有一个更高级的选项,允许软件向内核发布一些内存地址范围,这些地址范围需要在休眠之后但在关机之前擦除?

编辑

显然,可以创建一个在关机后执行的 shutdownramfs(有关 systemd 中的实现,请参见此处),因此可以擦除那里的 RAM 以进行关机。然而,它似乎不需要休眠,而且设置似乎很棘手,至少在不使用 systemd 时是这样。

1个回答
  1. 我想知道如果在计算机关闭之前从 RAM 中擦除了加密密钥,我什么时候让我的笔记本电脑进入休眠状态?

不,因为无论您使用哪种加密工具,主解密密钥都保存在 DRAM 中。

  1. 或者如果我必须等待几分钟才能完全免疫冷启动攻击?

一些作者表示,休眠 5 分钟或更长时间会使机器免疫,但更多作者证明相反,包括我在下面提到的文章中,对这个问题的答案证实了

我们的结果表明,简单地锁定计算机屏幕(即保持系统运行但在系统与用户交互之前需要输入密码)并不能保护内存内容。暂停笔记本电脑的状态(“睡眠”)也是无效的,即使机器在唤醒时进入屏幕锁定,因为对手可以简单地唤醒笔记本电脑,重启它,然后提取其内存状态。挂起到磁盘(“休眠”)也可能无效,除非需要外部持有的机密才能恢复正常操作

另一个引述说休眠更容易受到攻击,因为除了冷启动攻击之外还有其他方法:

如果人们使用休眠或睡眠模式,或者锁定键盘,他们可能会以其他方式受到攻击。只需将计算机恢复到登录提示,然后开始攻击端口以寻找未修补的漏洞。因此,未完全关闭的计算机有效地绕过了全盘加密的保护——即使没有冷启动内存攻击。

你说:

从技术上讲,我猜加密软件即使检测到笔记本电脑将要休眠,也很难做到这一点,因为如果它在将内存复制到磁盘之前更改了内存,那么加密卷将不会在恢复时恢复。

是的,因为还有其他进程在继续运行。

你的问题的其余部分需要更多的努力和分析。我无法回答他们。


事实证明

普通 DRAM 通常会在几秒钟内逐渐丢失其内容,即使在标准工作温度下,即使从主板上取下芯片,如果芯片保持在低温下,数据也会保留几分钟甚至几小时

因此,除非您机器的 RAM 很旧,否则您不必担心这个问题。

这是为了简短的回答。由于 StackExchange 网站的帖子旨在持久,因此我转发您阅读我不想在此处复制的问题的更详细答案。

总是引用我链接的答案,您可以安全地关闭机器:

- Keep secure data in True Crypt cascade algorithm encrypeted file
-  Use Serpent

- Create a script to handle shutdown:

           truecrypt /wipecache 
           shutdown -h now

/wipecache确保关机后没有易受攻击的数据保留在 RAM 中。如果有人执行冷启动攻击,他们最多只能访问您的系统。他们不会将数据存储在单独的加密文件中。