如何在GnuPG中使用dm-crypt(LUKS)对FDE使用二因子?


9

当在Ubuntu上使用全盘加密(与homedir加密相对)时,带有LUKS的dm-crypt用于加密卷。在安装程序中(至少在替代版本12.04上),您可以选择使用密码短语密钥文件进行设置。我想将两者结合使用;都不是,但两者都需要。

为什么?因为这样可以增强安全性(两个因素);你需要一些东西,你需要知道的东西来解锁。然后,我想将密钥文件放在一个小型可移动存储设备(USB闪存驱动器)上,并仅在启动时将其插入。结果应该是需要放入正确的闪存驱动器提供正确的密码短语来解锁根分区。

因此,换句话说,我想在启动过程中被要求提供外部驱动器上的密钥文件已加密的密码短语。

我看到了一个/usr/share/initramfs-tools/hooks/cryptgnupg可能有助于完成它的帮助程序脚本,但是我不知道如何使用它。

只是为了避免造成混淆:我并没有要求向卷添加其他密钥以对其进行解锁的方法。


通过阅读文档,我自己找到了答案的一部分。在中阅读如何使用它/usr/share/doc/cryptsetup/README.gnupg。我将尝试寻找一些时间来进行更改,以使其使用来自外部媒体的密钥文件。
gertvdijk

Answers:


5

我做同样的事情,但是由于各种原因,我选择了完全自定义的Initramfs,恐怕我的回答不能令人满意。

代替GnuPG,它是Initramfs中必须包含的一个额外的二进制文件(如果是GnuPG-2,则是一个相当复杂的二进制文件),我只是使用已经存在的二进制文件。那显然是dm-crypt/LUKS

因此,假设您有一个keyfile。最好是随机数据。

# dd if=/dev/urandom of=keyfile count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000189802 s, 2.7 MB/s

使用LUKS为其添加加密(随意添加您选择的密码设置)。

# truncate -s 2M keyfile.luks
# cryptsetup luksFormat keyfile --header keyfile.luks

WARNING!
========
This will overwrite data on keyfile.luks irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase: bananas
Verify passphrase: bananas

现在,您有了一个密钥文件(512字节)和一个密钥文件.luks(2MB,出于某种原因该cryptsetup需要编写192k LUKS头文件)。由于无论如何都会对Initramfs进行压缩,因此这还不错(仍然小于GnuPG)。

现在您可以解密密钥文件:

# cryptsetup luksOpen keyfile --header keyfile.luks lukskey
Enter passphrase for keyfile: bananas

并且您在中有512字节的随机数据/dev/mapper/lukskey。(如果要更改它,可以写它,因此我们可以早些时候用零初始化文件。)

# blockdev --getsize64 /dev/mapper/lukskey
512

然后,您可以在Initramfs init中用它打开实际的LUKS卷(假设您首先添加了密钥)。

cryptsetup --key-file=/dev/mapper/lukskey luksOpen /dev/yourdisk luksyourdisk
cryptsetup luksClose lukskey # clean up

这种方法使GnuPG完全多余,而且您还获得了LUKS的所有优势,例如密钥的多个密码短语,您选择的密码等等。更不用说一个不错的(通常是常规的)密码提示,带有多次重试。


2
很酷的解决方案,但是如何将其准确集成到我的initramfs中呢?您声明使用了完全自定义的initramfs,但是仅使用钩子就不可能实现吗?
gertvdijk

当然。如果您能想到一种方法来强制crypttab首先以某种方式查找和打开密钥,甚至可能没有钩子。例如,它不一定是文件,您可以在USB记忆棒上为其创建单独的分区。但是,因为我没有那样做,所以我无法对此做出具体的答案……对不起:-/
frostschutz

1
完全没有问题-绕开GnuPG并重用LUKS当然是一个更好的选择。万一我需要为GnuPG方法重写钩子,最好不使用它就重写它。是的,我知道这不必是文件。
gertvdijk

@gertvdijk,如果您能解决这个问题,我会对您的回答感兴趣,以供将来参考
frostschutz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.