为什么要加密交换分区

我在这个网站上看到许多Linux用户加密了交换分区。 加密交换有什么好处?

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

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

交换分区可以容纳大量未加密的机密信息,并且在关闭计算机后它仍然存在这一事实可能是一个问题。

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

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

来源:C。 Brüffer

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

交换在持久存储上分配空间(因为它更便宜),为操作系统提供更多虚拟内存。 所有应用程序都在虚拟内存中运行,包含操作的所有未加密数据。 您在磁盘上加密的部分数据在交换存储上未加密结束的可能性相当高。 此外,像加密密钥这样的临时内存内容可能会从物理内存移动到交换一段时间(如果内核决定这样做)。 使用普通加密密钥,攻击者肯定能够解密整个硬盘。

此外,与物理内存不同,在关闭PC后,交换不会被擦除。

另请注意,如果您hibernate系统,所有物理内存都将写入交换。 这为可能的攻击者提供了更大量的数据。

总而言之,在您的计算机上加密数据的情况下,从安全角度来看,如果您处理加密文件, 则不加密交换是一件非常糟糕的事情。 它甚至可以破坏你想要实现的完整安全性。

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

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

加密并不便宜,预计会有重大的性能损失。

我认识的唯一一个“做到这一切”的人经常旅行。 如果你只想修补,那就去吧。

PS之前有人做了一个关于无法加密主内存的明智的请访问http://bluerisc.com/ ,甚至指令集都是加密的。

这就是为什么很久以前我确信我的交换分区真的加密了。

请尝试以下命令:
首先找出你的交换设备,然后找出你的用户密码(或任何对你很重要的字符串)是否存储在交换内存的某个地方:

$ sudo swapon --summary Filename Type ... /dev/mapper/vg_ubu476-lv_swap partition ... $ sudo time strings < /dev/mapper/vg_ubu476-lv_swap | grep  

如果未找到密码,则命令以无输出结束。 对我来说这需要40秒,我的4 GiB交换。
尝试使用“| more”而不是“| grep <...>”; 如果您在加密之前从一开始擦除了磁盘,则会显示是否使用随机ASCII。

请注意一个问题:在这些命令之后,您的“密码子字符串”将保留在您的bash历史记录中,您可能觉得需要删除它。 使用“密码的子串”,你至少没有得到完整的密码……而且:只有root才能看到它。

我的字符串命令已经查看了系统的解密层,该层只在运行操作系统时存在。

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

当我第一次发现很多根密码时,我就做了“字符串”,因为我在“sudo su – ”中使用“su – root”。 现在,有了sudo,我找不到任何东西。

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