在使用 openSUSE LEap 15.2 安装 LUKS(v1)设备后,发现迭代次数设置得太高,导致成功解密主密钥需要超过 10 秒(存在相关错误报告)。
因此我使用更小的迭代次数添加了第二个键槽。
不过我很疑惑:据我所知,输入密码后,luksOpen 会尝试按顺序解密密钥槽,而不是并行解密,这意味着第一个密钥槽决定了解密成功的最短等待时间。对吗?
注意:启动时,我无法指定参数来选择特定的键槽。所以最有可能的解决方案是交换键槽,对吗?
答案1
测试设置
在 ramdisk 中创建一个文件来保存 LUKS 容器:
$ cd /dev/shm $ truncate -s 1G luksfile
准备相同大小的密钥文件进行测试:
$ dd if=/dev/urandom of=key1 bs=1M count=1 1+0 records in 1+0 records out 1048576 bytes (1,0 MB, 1,0 MiB) copied, 0,00897814 s, 117 MB/s $ dd if=/dev/urandom of=key2 bs=1M count=1 1+0 records in 1+0 records out 1048576 bytes (1,0 MB, 1,0 MiB) copied, 0,00792946 s, 132 MB/s
格式化文件:
$ cryptsetup luksFormat --key-file key1 luksfile WARNING! ======== This will overwrite data on luksfile irrevocably. Are you sure? (Type uppercase yes): YES
添加第二个键:
$ cryptsetup luksAddKey --key-file key1 luksfile key2
考试
for x in 1 2 3 4 5; do
time sudo cryptsetup open --key-file key1 luksfile test
sudo cryptsetup close test
done
我正在丢弃每个键的前 5 次运行的结果以消除缓存差异。
结果key1
:
2,30s user 0,02s system 97% cpu 2,369 total
2,39s user 0,01s system 97% cpu 2,454 total
2,41s user 0,02s system 97% cpu 2,509 total
2,25s user 0,02s system 97% cpu 2,336 total
2,21s user 0,02s system 97% cpu 2,291 total
结果key2
:
4,08s user 0,02s system 98% cpu 4,146 total
4,20s user 0,02s system 98% cpu 4,267 total
4,19s user 0,01s system 98% cpu 4,255 total
4,15s user 0,01s system 98% cpu 4,209 total
4,43s user 0,02s system 98% cpu 4,520 total
是的,钥匙会逐一检查。第二个键将会受到第一个键的缓慢影响。
解决方案
启动时,我无法指定参数来选择特定的键槽。
其实可以。使用第 4 列keyslot
中的选项。请参阅。/etc/crypttab
man crypttab