LUKS 中的密码和密钥文件之间的区别

LUKS 中的密码和密钥文件之间的区别

我一直试图理解 LUKS 中密码和密钥文件之间的区别,但没有成功。起初我以为它们是同一件事,区别在于密钥文件是通过文件提供的密码。事实证明这是错误的。使用

cryptsetup --key-file=/path/to/keyfile.txt luksFormat /path/to/drive.img

如果在密码提示中使用 keyfile.txt 中的文本,则会导致无法打开驱动器

cryptsetup luksOpen /path/to/drive.img devicename

的手册页cryptsetup显示:

使用 LUKS,通过 --key-file 提供的密码始终是命令请求的现有密码,但以下情况除外luks格式 其中 --key-file 相当于位置密钥文件参数。

这对我来说毫无意义。

我还有一些问题:

  1. 使用密钥文件加密通常比使用密码更安全吗?因为密码的长度仅限于某人愿意输入的内容。如果是真的:
  2. 稍后将密钥文件添加到密钥槽有什么用呢?因为它们不会增加安全性,而安全性受到较弱的密码的限制。

谢谢。

答案1

我在测试 LUKS 时遇到了与密码和密钥文件相同的问题。我以为将密码放入文件中可以让我在两者中使用单个密钥槽。

事实证明,我的密钥文件与我的密码短语并不完全相同。简而言之,在命令行上,密码短语在新行处停止。在密钥文件中,将读取整个文件,包括换行符。有关处理密码短语的更多详细信息,请参阅 cryptsetup 手册页部分。

我的错误是密钥文件末尾有一个换行符 (\n),这使其与命令行密码不同。使用以下命令重新创建我的测试密钥

# the -n suppresses the trailing newline
echo -n abcd12345 > keyfile

解决了差异并允许密钥文件和密码使用单个密钥槽。

答案2

对于 PKI,密码是用于对私钥进行对称加密的密钥。您可以相对安全地将加密的私钥存储在可移动磁盘上(如果您的密码很难被暴力破解)。还有一些应用程序,如 ssh-agent 或 gpg-agent,它们会要求输入一次密码,然后将密钥以未加密的形式存储在内存中以供重复使用。如果媒体与私钥一起被盗,它将毫无用处。

相关内容