使用 dm-crypt 进行全盘加密(无 LUKS)

使用 dm-crypt 进行全盘加密(无 LUKS)

我目前正在尝试在普通模式下使用 dm-crypt 实现全磁盘加密,无需 LUKS 标头,并/boot在 USB 记忆棒上单独使用。

我的主要目标是在基于 Debian 的发行版上实现合理的否认性。目前,我已成功使用单独的 USB 密钥加密分区cryptsetup并将分区安装到该分区。/boot一切都按预期进行,因为加密标头没有存储在 LUKS 中,所以我需要在 initramfs 屏幕上手动输入它,但在这一步我只是收到一个错误,表明 initramfs 中没有 cryptsetup ("/bin/ sh: cryptsetup: not found") 在尝试解析标头时。

综上所述:

  • dev/sda使用dm-crypt/root/home卷)加密:
cryptsetup --hash=sha512 --cipher=twofish-xts-plain64 create crypt /dev/sda
  • dev/sdb安装了 grub 的引导棒

我可以从启动棒成功启动。我看到 Ubuntu 启动画面大约 20 秒,这正是我想要实现的看似合理的推诿,然后它下降到 initramfs 抱怨无法找到/dev/mapper/root— 这也是我想要实现的。

问题是,当我想解析允许我输入密码并继续启动的 cryptsetup 行时,initramfs 会抱怨“cryptsetup:未找到”。

我想这个投诉是真的。我的问题是:如何将 cryptsetup 安装到 initramfs 中,以便进一步启动密码提示?

另外,我知道我在添加适当的条目时遗漏了一些内容/etc/fstab/etc/crypttab并且在启动过程中找不到设备。

这些是我找到并用于设置所有当前配置的指南,也许这会清除我的问题中未涵盖的内容:

第一个有点过时,第二个适用于 Arch Linux,但我在最新的 Lubuntu 安装中使用了其中两个,几乎没有进行任何调整。

答案1

根据initramfs-工具(8),可以通过将以下内容添加到 initrd 映像来将程序添加到钩子脚本:

copy_exec /sbin/cryptsetup /sbin

示例挂钩脚本可以在/usr/share/initramfs-tools/hooks我的 Ubuntu 系统中找到,/usr/share/initramfs-tools/hooks/cryptroot确实添加到了映像/sbin/cryptsetupinitrd

例子:

$ gzip -dc /boot/initrd.img-`uname -r` | cpio -tv 2>/dev/null | cpio -tv 2>/dev/null | grep 密码设置
=> 尚未包含 cryptsetup。

$ cat /etc/initramfs-tools/hooks/fde
#!/bin/sh

。 /usr/share/initramfs-tools/hook-functions
copy_exec /sbin/cryptsetup /sbin

$ sudo chmod 0755 /etc/initramfs-tools/hooks/fde
$ sudo update-initramfs -u

$ gzip -dc /boot/initrd.img-`uname -r` | cpio -tv 2>/dev/null | cpio -tv 2>/dev/null | grep 密码设置
-rwxr-xr-x 1 root root 59248 八月 21 04:04 sbin/cryptsetup
-rw-r--r-- 1 root root 158848 八月 21 04:04 lib/x86_64-linux-gnu/libcryptsetup.so.4

相关内容