可启动计算机上的 LUKS 标头和 lvm

可启动计算机上的 LUKS 标头和 lvm

我正在尝试在 Debian 计算机上实现 LUKS 可否认性,但我遇到了困难。我在计算机上安装了 Debian,并按以下方式格式化硬盘:

  • sda 完全由 sda1 分区填充,这是 LUKS
  • 在这个 LUKS 容器 (sda1) 中,有一个包含 3 个卷的 lvm 组:根卷、主卷和交换卷
  • sdb1 是/boot(未加密分区)(位于可拆卸 USB 记忆棒上)

现在我想“移动” LUKS 标头以实现可否认性。因此,我将标头备份到存储棒上(在 initramfs 上):

cryptsetup luksHeaderBackup /dev/sda1 --header-backup-file /etc/luks_header/sda1-header-backup

我挂接了一个脚本,将可通过 initramfs 访问的标头放入其中,/usr/share/initramfs-tools/hooks/以创建/etc/luks_header并复制标头。然后我进行了以下更改/etc/crypttab

sda1_crypt UUID=xxx-xxx-xxx-xx none luks,header=/etc/luks_header/sda1-header-backup

所以现在我应该用 启动/sdb1。解密是/etc/luks_header/使用 (initramfs 的) 中的 LUKS 标头执行的。

然后为了完成可否认性,我需要删除 sda1 的 LUKS 标头:

dd if=/dev/urandom of=/dev/sda1 bs=2M count=1

(标头的大小为 2MB,从扇区 0 开始。)但是当我尝试启动时,提示告诉我他的 lvm 出现了问题。

我相信这是因为我破坏了标头后面的某些东西,所以我用 dd 将写入量减少到 1MB,但问题仍然存在。我以为我只触碰了标头(由于 crypttab,它不应该被读取),但我错了。有人能解释一下吗?

我找到更多信息的网站:

答案1

UUID在这 2MB 上也是如此。

您无法通过使用随机字节覆盖的 UUID 来引用磁盘。您需要通过磁盘/分区的内核名称来引用磁盘。如果需要更改硬件并保留引用/etc/crypttab/etc/fstab抵制这种情况,您可能能够获得更好的磁盘名称,即非内核启动过程依赖的磁盘名称/dev/sdb,例如来自/sys/devices/pci*

额外(信息安全相关)

请注意,cryptsetup/LUKS 的现任维护者 Arno Wagner 反对合理的否认:

[不使用 LUKS 的加密] 对当局的价值有限。在文明国家,他们无论如何都不能强迫你交出加密密钥。在世界上相当多的国家,他们可以强迫你交出密钥(使用监禁或更糟的方式向你施压,有时没有正当程序),在最坏的情况下,他们只需要对加密数据的存在有模糊的“怀疑”。有时这适用于所有人,有时只适用于你被怀疑拥有“非法数据”(定义可能会更改)时,有时专门用于跨越边境时。请注意,这种情况在美国和英国等国家正在发生,程度不同,有时法院会限制当局实际可以要求的内容。

这是引自Arno 的 cryptsetup 常见问题解答(第 2.4 和 5.8 节)

但还要注意的是,合理否认是一个极具争议的话题。例如,参见对于加密卷/磁盘来说,合理的否认实际上是否可行?

相关内容