我正在编写一个 Chef LWRP 来向 LUKS 容器添加一个密钥,但我很难想出一种方法来确定我的密钥是否已经存在。 cryptsetup luksAddKey
将愉快地多次添加相同的密钥文件,所以我不能简单地继续调用luksAddKey
每个 Chef 运行。
到目前为止,我想出的最好的是
cryptsetup luksDump /dev/xvdf1 --dump-master-key --key-file <thenewkey> > /dev/null
那看起来:
- CPU密集型
- 不太安全
有人有更好的主意吗?
谢谢!
我看不到在不解锁卷的情况下测试密钥的任何机会(至少指的是 CPU 负载)。但是谁没有这几秒的CPU呢?每个系统是否有很多 LUKS 卷?
您也可以这样做:
每次添加密钥时,都会存储文件的摘要(甚至不需要是安全摘要;即使是 MD5 也可以)。你做一个目录
/etc/my_luks_keyfiles
。对于系统中的每个 LUKS 卷,您都使用 UUID (cryptsetup luksUUID /dev/bla
) 创建一个子目录。如果您添加一个密钥,那么您将创建一个文件,例如,时间戳作为名称,摘要作为内容。如果删除密钥,则删除文件。如果您想知道密钥是否处于活动状态,那么您可以将目录中的所有文件与摘要进行比较(即您不需要传输密钥文件)。而且,如果文件比活动插槽多或少,那么您就知道自己搞砸了……