我在这个网站上看到很多 Linux 用户对交换分区进行加密。加密交换分区有什么好处?
答案1
加密交换空间用于保护敏感信息。考虑一个处理密码的应用程序。只要这些密码保留在物理内存中,这些密码就不会写入磁盘并在重新启动后被清除。如果操作系统开始交换内存页面以释放空间供其他应用程序使用,则密码可能会以未加密的形式写入磁盘盘片。加密交换空间可以解决这种情况。
交换分区默认未加密,继续操作之前应清除所有敏感数据。
交换分区可以保存大量未加密的机密信息,而这些信息在计算机关闭后仍然存在,这可能会带来问题。
要加密 SWAP,请参阅Ubuntu 上的加密交换分区
扩展阅读:交换加密, 和Ubuntu - 如何加密交换分区
来源:C. Brüffer
答案2
我假设您正在谈论主目录或全盘加密安装。
交换空间是在持久存储上分配的空间(因为更便宜),为操作系统提供更多虚拟内存。所有应用程序都在虚拟内存中运行,虚拟内存中保存着所有未加密的数据以供操作使用。磁盘上加密的部分数据很有可能最终以未加密的形式出现在交换存储中。此外,临时内存中的内容(如加密密钥)可能会从物理内存移动到交换存储一段时间(如果内核决定这样做)。有了普通的加密密钥,攻击者肯定能够解密你的整个硬盘。
此外,与物理内存不同,关闭 PC 后交换数据不会被清除。
还要注意的是,如果你让系统休眠,所有的物理内存都会被写入交换区。这为潜在的攻击者提供了更大量的数据。
总而言之,在机器上的数据加密方面,这是一件非常糟糕的事情不是从安全角度来看,如果您处理加密文件,则加密交换。它甚至可能破坏您试图实现的完全安全性。
答案3
这就是为什么很久以前我就决定要加密我的交换分区。
尝试以下命令:
首先找出您的交换设备,然后找出您的用户密码(或任何对您来说至关重要的字符串)是否存储在交换内存的某个地方:
$ 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。
尝试使用“| more”而不是“| grep <...>”;这将显示您是否从一开始就在加密之前使用随机 ASCII 擦除了磁盘。
当心一个问题:执行完这些命令后,您的“密码子字符串”将保留在您的 bash 历史记录中,您可能觉得需要将其删除。使用“密码子字符串”,您至少没有在那里获得完整的密码……并且:只有 root 可以查看它。
我的字符串命令已经查看了系统的解密层,该层仅在运行操作系统时存在。
在其下方是 LVM,然后是解密的 LUKS 容器,最后是加密设备(一个大分区)。您可以尝试使用“字符串”扫描它们。
当我第一次执行该“字符串”时,我发现了很多 root 密码,因为我使用“su - root”代替了“sudo su -”。现在,使用 sudo 后,我找不到任何密码。
表现- 相信我:我在 Thinkpad W520 的三个 SSD 上处理 1.3 TB 的加密内容(系统 + 大型照片数据库),没有感觉到任何延迟。但至少 8 GiB 内存可能会有所帮助。
答案4
出于同样的原因,您可能希望加密主内存。程序拥有您的信息的明文副本,并且调度程序会不时将它们交换到磁盘(交换分区)。如果有人有足够的动机和能力,交换分区可能会被用来挖掘个人数据。
然而,如果您没有加密根磁盘,那么加密交换就没那么重要了。
加密并不便宜,预计性能会受到很大影响。
我认识的唯一“全能”的人都经常旅行。如果你只是想修修补补,那就去做吧。
PS:在有人开玩笑说无法加密主内存之前,请访问http://bluerisc.com/,甚至指令集都是加密的。