确定 LUKS/dmcrypt 密钥是否存在

确定 LUKS/dmcrypt 密钥是否存在

我正在编写一个 Chef LWRP 来向 LUKS 容器添加密钥,但我无法想出一种方法来确定我的密钥是否已经存在。 cryptsetup luksAddKey很乐意多次添加相同的密钥文件,所以我不能简单地继续调用luksAddKey每个 Chef 运行。

到目前为止,我能想到的最好的办法是

cryptsetup luksDump /dev/xvdf1 --dump-master-key --key-file <thenewkey> > /dev/null

那看起来:

  1. CPU 密集型
  2. 不太安全

谁有更好的主意吗?

谢谢!

答案1

我不认为在不解锁卷的情况下测试密钥有任何机会(至少参考 CPU 负载)。但谁没有这么几秒钟的 CPU 时间呢?每个系统都有很多 LUKS 卷吗?

您也可以这样做:

每次添加密钥时,您都会存储文件的摘要(甚至不需要是安全摘要;即使 MD5 也可以)。您创建一个目录/etc/my_luks_keyfiles。对于系统中的每个 LUKS 卷,您都会创建一个具有 UUID(cryptsetup luksUUID /dev/bla)的子目录。如果您添加密钥,则创建一个文件,例如以时间戳为名称,以摘要为内容。如果删除密钥,则删除文件。如果您想知道密钥是否有效,则将目录中的所有文件与摘要进行比较(即您不需要传输密钥文件)。

如果文件数量多于或少于活动插槽数量,那么您就知道您搞砸了……

相关内容