为什么要加密交换分区


Answers:


19

交换空间的加密用于保护敏感信息。考虑一个处理密码的应用程序。只要这些密码保留在物理内存中,这些密码就不会写入磁盘,也不会在重新启动后清除。如果操作系统开始换出内存页面以释放其他应用程序的可用空间,则密码可能未加密地写入磁盘。加密交换空间可以是这种情况的解决方案。

交换分区默认情况下不加密,在继续操作之前,应清除所有敏感数据。

交换分区可以保存许多未加密的机密信息,并且在关闭计算机后该分区仍然存在是一个问题。

要加密SWAP,请参阅Ubuntu上的加密交换分区

额外阅读:交换加密Ubuntu-如何加密交换分区

资料来源:C。布吕弗


2

我假设您正在谈论主目录或全盘加密安装。

交换是在持久性存储上分配的空间(因为它更便宜),从而为操作系统提供了更多的虚拟内存。您的所有应用程序都在虚拟内存中运行,其中包含用于操作的所有未加密数据。磁盘上加密的部分数据很有可能在交换存储中以未加密的形式结束。同样,临时内存中的东西(例如加密密钥)也可以从物理内存中移出以交换一段时间(如果内核决定这样做的话)。使用简单的加密密钥,攻击者肯定可以解密整个硬盘。

此外,与物理内存不同,关闭计算机后交换不会消失。

另请注意,如果您使系统休眠,则所有物理内存将被写入以进行交换。这为可能的攻击者提供了更大数量的数据。

综上所述,在机器上加密数据的上下文中,从安全的角度来看,如果不处理交换文件,则不加密交换是非常不好的事情。它甚至可能破坏您要实现的完整安全性。


2

这就是为什么很久以前我就说服了真正对我的交换分区进行加密的原因。

尝试以下命令:
首先找出您的交换设备,然后找出您的用户密码(或对您而言关键的任何字符串)是否存储在交换存储器上的某个位置:

  $ sudo swapon --summary  
  Filename                                Type        ...  
  /dev/mapper/vg_ubu476-lv_swap           partition   ...  

   $ sudo time strings < /dev/mapper/vg_ubu476-lv_swap | grep <any substring of your password>

如果找不到密码,则该命令以无输出结束。我花了40秒钟完成了4 GiB的交换。
尝试使用“ |更多”而不是“ | grep <...>”;这将显示您是否从一开始就擦除磁盘,然后再使用随机ASCII加密。

提防问题:执行这些命令后,您的“密码子字符串”将保留在bash历史记录中,您可能会感到需要擦除它。使用“密码子字符串”,您至少没有那里的完整密码...而且:只有root才能查看其中的密码。

我的字符串命令已查看系统的解密层,该层仅在运行OS时存在。

接下来是LVM,然后是解密的LUKS容器,最后是加密的设备(大分区)。您可以尝试使用“字符串”扫描它们。

当我第一次使用“字符串”时,我发现很多root密码,就像我使用“ su-root”代替“ sudo su-”一样。现在,使用sudo我什么都找不到。

性能 -相信我:我正在ThinkPad W520的三个SSD上处理1,3 TB的加密内容(系统+大照片数据库),而不会感到任何延迟。但是至少8 GiB内存可能有所帮助。


这在加密的Ubuntu 18.10中不起作用。我收到“ bash:<目录>:权限被拒绝。” 在控制台中。
Patrick黑暗

1

出于相同的原因,您可能希望加密主内存。程序具有您的信息的纯文本副本,并且调度程序会不时将它们换出到磁盘(交换分区)中。如果一个人有足够的动力和能力,则可以为该个人数据挖掘交换空间。

但是,如果未加密根磁盘,则加密交换并不重要。

加密并不便宜,预计会对性能造成重大影响。

我认识的唯一一个“全力以赴”的人广泛旅行。如果您只想修补,那就去吧。

PS在有人对无法加密主存储器做出明智决定之前,请访问http://bluerisc.com/,即使指令集已加密。


我了解加密交换数据。但是...正在加密RAM ...应该防止什么威胁模型?
杰·沙利文

1
起动器的总线分析仪。如果军人在野外失去资产,这就是他们会感兴趣的事情。
ppetraki 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.