确定 LUKS/dmcrypt 密钥是否存在

Aar*_*own 5 encryption disk-encryption luks

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

到目前为止,我想出的最好的是

cryptsetup luksDump /dev/xvdf1 --dump-master-key --key-file <thenewkey> > /dev/null
Run Code Online (Sandbox Code Playgroud)

那看起来:

  1. CPU 密集型
  2. 不是很安全

有人有更好的主意吗?

谢谢!

Hau*_*ing 4

我看不到在不解锁卷的情况下测试密钥的任何机会(至少指的是 CPU 负载)。但谁没有这几秒的CPU呢?每个系统是否有大量 LUKS 卷?

您也可以这样做:

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

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