是否可以在不提供当前密钥的情况下向打开的 luks 卷添加密钥?

是否可以在不提供当前密钥的情况下向打开的 luks 卷添加密钥?

正如标题所述,我需要知道是否有一种方法可以添加密钥,而不需要用户重新输入密码/为已打开的 luks 卷提供密钥文件。我实际上需要实现它,因此请举个例子。

答案1

是的,就像这样:

cryptsetup luksAddKey <DEVICE> --master-key-file <(dmsetup table --showkey /dev/mapper/<MAP> | awk '{print$5}' | xxd -r -p)

<DEVICE>用包含 LUKS 分区的块设备(例如/dev/sda1)和<MAP>映射的名称(例如)替换sda1_crypt

来源:https://access.redhat.com/solutions/1543373

答案2

不,这不是理智的——但对手可以。

cryptsetup工具会对加密卷本身进行操作,无论它当前是否打开。它需要从卷中检索卷密钥;为此,它需要一种方法来解码现有密钥槽之一(密码或密钥文件),否则您需要将裸卷密钥传递给它(您几乎不会将其放在身边)。

如果卷已安装,则内核在内存中拥有卷密钥。但毫不奇怪,它没有提供检索它的接口。

您可以编写并加载一个内核模块来检索卷密钥(我认为您必须克服重重困难,但从安全角度来看,这很简单),除非模块加载被禁用或经过身份验证。您可以通过从内存转储中检索密钥/dev/kmem,除非它被禁用(我预计有现成的取证工具可以做到这一点,但我不能说出任何一种)。我想就是这样。

相关内容