如何将冷启动攻击的影响降到最低?

信息安全 加密 密钥管理 硬件 记忆
2021-09-03 16:39:37

如果没有足够的时间关闭电源并保持物理安全,有哪些有效的策略可以防止冷启动攻击泄露密钥,如果没有旨在防止此类攻击的硬件,任何事情都可以做吗?

http://citp.princeton.edu/memory/

4个回答

一种方法是使用高度非冗余的密钥调度。例如,如果您可以在内存中恢复任何大的 AES 扩展密钥计划,您可以反向运行扩展并恢复原始输入(然后允许您生成所有轮密钥,即使您只能恢复单轮的值,甚至不同轮的部分)。在某种程度上,这是 AES 设计所固有的,因此很难避免,但相比之下,请考虑 Blowfish 的 sbox 扩展设计 - 如果您设法恢复主密钥或整个 sbox,例如,恢复一半sbox 值。

另一种适用于 AES 的方法是通过将整个状态保存在SSE 寄存器调试寄存器中来简单地确保密钥永远不会命中 RAM 。这种方法只能由操作系统内核使用,但内核通常会执行最容易受到冷启动攻击的加密,例如磁盘加密,因此这可能是一种很有前途的方法。

我刚刚在寻找其他内容时找到了这篇文章, http://www.blackhat.com/presentations/bh-usa-08/McGregor/BH_US_08_McGregor_Cold_Boot_Attacks.pdf ,它概述了几种似乎可行的纯软件解决方案(几个这里已经提到过),虽然不是万无一失的。

  • 将密钥存储在无论启动什么操作系统都必须被覆盖的内存区域中。(迫使攻击者使用专门的硬件,而不仅仅是特殊的操作系统)
  • 将密钥存储在 MMX/SSE 寄存器中
  • 在地址空间中传播密钥,以最大限度地减少对攻击者的纠错好处。
  • 在重新启动/关闭之前覆盖密钥
  • 监控机箱入侵和温度传感器是否有攻击的前兆(机箱打开或内存温度突然下降),如果检测到任一事件,则立即开始覆盖密钥。(假设攻击者足够老练,可以将 RAM 从系统中取出以进行取证分析,也会尝试在系统关闭之前对其进行冷却,以最大限度地提高效率。)

好吧,如果您的系统被冷启动成功攻击,那不是您的加密系统失败,而是 IT 安全的物理层。

断电后,RAM中的数据会消失。如果您在解密密钥中丢失了一位,则密钥无效(好吧,您可以猜到只有一位丢失,但我想您明白了)。总而言之,关闭并为计算机供电会破坏任何遗留的密钥。

因此,要执行冷启动,您需要冻结 RAM 模块。为此,您需要“冷冻机”并访问模块。好吧,如果入侵者在有人关闭计算机时走进房间(并且奇迹般地没有注意到他),打开机箱并开始在 RAM 模块上喷洒冷冻机(而计算机仍在关闭)......

好吧,假设您遇到的问题比失败的密码系统要大得多。

编辑:Suma summare,在现实世界中,这是毫无意义的讨论(由于投资回报率)。最好的策略实际上是从社交角度 - 用户必须在计算机旁边,直到它完全关闭。

我认为杰克劳埃德的建议值得一看。

另一个经常使用的技巧是定期对内存中的键进行异或运算……当然,周期很短。PGP就是一个例子。从相当早期的版本开始,它曾经每秒翻转一次内存中的位。这会缩短关键重影的寿命。

当然,还有一个额外的位用于存储密钥的当前状态,并且整个 XOR 过程必须在单个原子事务中进行,并具有与密钥读取操作一样的锁定机制。