我想使用在启动时通过随机密钥加密的交换驱动器。不过,我不确定我这样做是否安全。
我目前有 /etc/crypttab 基于Arch wiki 上的示例。与他们的文章不同,我从 mkswap 获取了交换的 UUID。它不允许我将交换区放入超过 1MB ext2 分区的未分配空间中,如 arch wiki 示例中所示。因此,我对 arch wiki 的例子有点警惕。
我当前的 crypttab 是:
cryptswap UUID=... /dev/urandom swap,cipher=aes-cbc-essiv:sha256,size=256,offset=2048
这是设置加密交换的正确方法吗?我不确定如果尝试写入驱动器的最后 1MB,offset 会如何表现。
可能值得注意的是,我在虚拟机中执行所有这些操作以进行测试,然后再在我的硬件上执行此操作。
更新:
这是当我尝试使用 ext2 格式的驱动器时显示的错误消息,完全按照 arch 教程中所示进行操作:
sudo /etc/init.d/cryptdisks reload
[ ok ] Stopping remaining crypto disks...cryptswap (stopped)...done.
[....] Starting remaining crypto disks...[info] cryptswap (starting)...
[....] cryptswap: the precheck for '/dev/disk/by-label/cryptswap' failed: - The [warne /dev/disk/by-label/cryptswap contains a filesystem type ext2. ... (warning).
[FAILswap (failed)...failed.
答案1
与他们的文章不同,我从 mkswap 获取了交换的 UUID。
这可能不是一个好主意。如果设备上有未加密的交换标头,并使用同一设备以 1 MiB 偏移量进行加密交换,则无论出于何种原因激活两个交换分区,交换都会覆盖彼此的数据,因为它们是同一设备。
1MB ext2 分区不存在这种歧义 - 因为 ext2 限制为 1MB,即使您使用它(挂载它、写入它,...)它仍然是安全的,不会将内容写入 ext2 使用的区域加密交换。这里唯一危险的操作是resize2fs
。
它不允许我将交换区放入超过 1MB ext2 分区的未分配空间中,如 arch wiki 示例中所示。
最后,Debian 和 ArchLinux 是不同的,因此他们的解决方案可能不一定适合您。如果它是 GPT,您可能可以使用PARTUUID
而不是UUID
.只是,如果您想将该分区用于其他用途,您应该删除该分区并创建一个新分区(带有新分区PARTUUID
),这样下次重新启动时它就不会无意中再次格式化为交换...
如果您在这方面需要更具体的帮助,也许您应该详细说明错误消息等...我猜在 Debian 中存在一个过滤器脚本,它会拒绝看起来像文件系统的内容,以避免数据丢失的情况。您可能可以通过添加来禁用它precheck=/bin/true
。
这种 cryptswap 确实很危险(就意外格式化错误的设备而言),如果可能的话,请完全避免它。使用 LUKS 标头进行适当的加密会更安全,即使这意味着必须输入另一个密码。
我不确定如果尝试写入驱动器的最后 1MB,offset 会如何表现。
没有问题,offset
只是导致设备映射更小。因此,如果您有一个1000MiB
分区并使用偏移量为 1MiB 的普通 crypttab 映射,则生成的 crypt 设备的999MiB
大小是合适的。