明智的做法是,如果在GNU / Linux系统上实现了任何类型的块设备加密,也要对交换分区进行加密,因为任何解密的数据都可以随时以明文形式写入交换。
在debian手册页上查看“ crypttab”,我看到了一个在启动时创建随机密钥交换分区的示例,因此随着引导的进行,密钥是随机设置的,并且只有系统本身知道:
# Encrypted swap device
cswap /dev/sda6 /dev/urandom cipher=aes-cbc-essiv:sha256,hash=ripemd160,size=256,swap
在此示例中,交换设备由常规dev路径引用,即 /dev/sda6
例如,如果插入了USB驱动器,则绝对设备路径可能会更改,并在启动时重新分配。如果用户/dev/sda6
碰巧是一个与预期不同的分区,并且随后被随机交换数据覆盖,则用户将非常不高兴!
因此,解决方案似乎是:使用UUID代替设备路径(因为UUID不应更改),替换/dev/sda6
为/dev/disk/by-uuid/<whatever the uuid of dev/sda6 is>
但是……这就是问题所在:每次cryptsetup在引导时重新创建加密的交换分区时,都会为其生成一个新的UUID!h!
因此,我们需要以某种方式保留此加密文件系统的UUID。我认为cryptsetup可以通过其--offset
开关来做到这一点,从而允许保留LUKS标头和UUID。
我找到了以下URL:https : //wiki.archlinux.org/index.php/System_Encryption_with_LUKS#Using_UUIDs_with_encrypted_swap_partitions
有谁知道如何在Debian OS上实现针对Arch Linux所述的解决方案?该文档中引用的初始化脚本似乎在Debian OS上不存在
谢谢!
编辑
一个人可以使用以下命令使用ecryptfs达到相同的目的(加密的交换空间):
ecryptfs-setup-swap
避免困扰设备加密的问题。看看这个AskUbuntu查询
ecryptfs-setup-swap
它只是为您配置dm-crypt
/ 的助手crypttab
。与ecryptfs
文件级驱动程序一样,它不能处理整个分区,因此将其分配到dm-crypt
。您可能会发现此方法更加用户友好,但是最终您并没有取得任何不同。如果有的话,这种方法(包括UUID)的怪癖可能使我比起我刚从第一手原则开始做时更加困惑……尽管我学到了更多。