有一种简单的方法来进行全磁盘加密,这需要特定的拇指驱动器和密码才能启动。
您要做的是从完全加密的硬盘驱动器上拆下LUKS标头,并将其存储在拇指驱动器上。
我假设您已经具有以下设置:
# /dev/sda1 is the boot partition (100MB)
# /dev/sda2 is the encrypted partition
parted /dev/sda mklabel msdos
parted /dev/sda -- mkpart primary ext2 1M 200M
parted /dev/sda -- mkpart primary ext4 200M -100M
cryptsetup luksFormat /dev/sda2
创建luks标头的副本并将其从本地设备中删除:
mkdir /media/ramdisk && mount -t tmpfs -osize=20m,rw tmpfs /media/ramdisk
cryptsetup luksHeaderBackup /dev/sda2 --header-backup-file /media/ramdisk/header.img
dd if=/dev/urandom of=/dev/sda2 bs=1M count=2
如果您是高预算代理商的目标,请多次运行最后一步。我还创建了一个ramdisk来临时保存标题,这样以后就不会再出现了。
将您的USB设备放在/ dev / sdb中,创建2MB分区并将标头加载到其中:
parted /dev/sdb -- mklabel MSDOS
parted /dev/sdb -- mkpart primary 1M 3M
dd if=/media/ramdisk/header.img of=/dev/sdb1
现在,/ dev / sda2中的所有内容看起来都像是随机数据,并且您的标头位于/ dev / sdb1中。要手动访问加密的驱动器,请使用:
cryptsetup luksOpen --header /dev/sdb1 /dev/sda2 rootfs
mount /dev/mapper/rootfs /target
下一步是让您的启动过程要求在启动时插入pendrive。我发现更容易假设它会在那里,否则失败。首先,找出您设备的ID和UUID:
find -L /dev/disk/by-id/ -samefile /dev/sdb1
/dev/disk/by-id/usb-Generic-_Compact_Flash-part1
find -L /dev/disk/by-id/ -samefile /dev/sda2
/dev/disk/by-id/scsi-SATA_ST3320820AS_5QF28W6V-part2
blkid /dev/sdb1
/dev/sdb1: UUID="63347546-2db3-4bc1-9414-1142739a4c9f" TYPE="crypto_LUKS"
接下来编辑您的/etc/crypttab
行,如下所示:
root /dev/disk/by-id/scsi-SATA_ST3320820AS_5QF28W6V-part2 none luks,header=/dev/disk/by-id/usb-Generic-_Compact_Flash-part1
(您可能需要此补丁才能获得对中header
选项的支持crypttab
)
最后但并非最不重要的一点是,更新您的initram:
update-initramfs -u
您可以更进一步,将整个启动分区实际加载到USB驱动器上。本文的作者正在该站点上进行后续跟踪。
有许多 不同的方法 可以采取,伴有不同程度的安全和舒适。
关于安全性的特别注意事项:如果您的密码短语遭到破坏,那么即使您稍后更改了密码短语,持有标头副本的任何人也都可以解密数据。