sow*_*ust 7 luks cryptsetup disk-encryption
我有一个加密卷,我最初以交互方式为其设置了密码,它可以很好地解密分区。我通过以下两种方式使用密钥文件添加了更多密钥:
cryptsetup --keyfile=passphrase luksAddKey /dev/sdax
cryptsetup --luksAddKey /dev/sdax passphrase
Run Code Online (Sandbox Code Playgroud)
其中 passphrase 是包含密钥的文件,/dev/sdax 是加密卷。
然后我检查了密码是否有效使用
cat passphrase | cryptsetup --test-passphrase luksOpen /dev/sdax
dd if=passphrase bs=1 count=256 | cryptsetup --test-passphrase luksOpen /dev/sdax
Run Code Online (Sandbox Code Playgroud)
但他们都失败了:“此密码没有可用的密钥。” 使用 --key-file 选项的以下命令有效:
cryptsetup --test-passphrase --key-file passphrase luksOpen /dev/sdax
Run Code Online (Sandbox Code Playgroud)
在这一点上,我尝试查看传递密码内容的方法是否与唯一有效的密码(交互设置)一起使用。
echo "manually written working passphrase" > interactive_pass
cat interactive_pass | cryptsetup luksAddKey /dev/sdax
Run Code Online (Sandbox Code Playgroud)
这次它工作得很好。这两种方法和两个密钥文件有什么区别?我需要第一种管道文件内容的方法来处理从密钥文件添加的密码,因为它似乎是在 crypttab 中使用脚本时唯一可能的方法。是否可以?
cryptsetup
这在的手册页中有详细解释NOTES ON PASSPHRASE PROCESSING FOR LUKS
。存在一些差异,例如是否包含换行符、不同的大小限制(例如,交互式密码短语为 512 字节、检查cryptsetup --help
),...
如果您想避免这种特殊的麻烦,最好创建密钥文件,这些文件在终端上的交互式 cryptsetup 提示符中输入时也可以使用。这意味着密钥文件必须是纯文本字符串,并且末尾不得包含换行符。(使用echo -n
或printf "%s"
。)
例如,您可以用来pwgen
生成 64 个字符的密码keyfile.txt
,也可以在紧急情况下手动输入:
$ echo -n $(pwgen 64 1) | tee keyfile.txt
Aish6shaejongi9yug3quij7aijop7SieTh7ierahngaem8iov5isho5dae0pisu
Run Code Online (Sandbox Code Playgroud)
对于这样的密钥文件,无论您如何将其传递给cryptsetup
. 例外情况是键入时使用了错误的键盘布局。如果您预计键盘布局会出现问题,您可以添加密码两次,这样 LUKS 就会接受其中之一。
这在使用/dev/urandom
密钥文件时尤其重要......如果您以错误的方式使用它们,它可能会提前停止处理(出现随机换行符)并且您的密码比您想象的要短得多。
归档时间: |
|
查看次数: |
8141 次 |
最近记录: |