
У меня есть зашифрованный раздел luks, который был защищен парольной фразой и файлом ключа. Файл ключа был для обычного доступа, а парольная фраза была в запечатанном конверте для экстренных случаев. Прошло несколько месяцев, и я случайно уничтожил файл ключа, поэтому я восстановил его, используя парольную фразу из конверта. Теперь я хочу знать, у меня есть два активных слота ключей, но я не знаю, какой из них содержит бесполезную парольную фразу файла ключа, а какой — мою аварийную парольную фразу. Очевидно, если я удалю не тот, я потеряю все данные на диске.
#cryptsetup luksDump /dev/sda2
LUKS header information for /dev/sda2
Version: 1
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha256
Payload offset: 4096
MK bits: 256
MK digest: xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
MK salt: xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
MK iterations: 371000
UUID: 28c39f66-dcc3-4488-bd54-11ba239f7e68
Key Slot 0: ENABLED
Iterations: 2968115
Salt: xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
Key material offset: 8
AF stripes: 4000
Key Slot 1: ENABLED
Iterations: 2968115
Salt: xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
Key material offset: 264
AF stripes: 4000
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED
решение1
Как вы уже обнаружили, вы можете использовать его, cryptsetup luksDump
чтобы увидеть, в каких слотах для ключей находятся ключи.
Вы можете проверить парольную фразу для определенного слота с помощью
cryptsetup luksOpen --test-passphrase --key-slot 0 /dev/sda2 && echo correct
Это сработает, если вы введете правильную парольную фразу для слота ключа 0, и не сработает в противном случае (в том числе, если парольная фраза верна для какого-либо другого слота ключа).
Если вы забыли одну из парольных фраз, то вы сможете найти, в каком слоте она находится, только методом исключения, а если вы забыли две парольные фразы, то нет никакого способа определить, какая из них какая (иначе хеш парольной фразы будет взломан).
Чтобы удалить забытую вами парольную фразу, вы можете безопасно запустить cryptsetup luksKillSlot /dev/sda2 0
и ввести парольную фразу, которую вы помните. Чтобы стереть слот ключа, cryptsetup
требуется парольная фраза для другого слота ключа, по крайней мере, когда он не запущен в пакетном режиме (т. е. нет --batch-mode
, --key-file=-
или эквивалентная опция).
решение2
Более простой способ (сейчас?) — использовать команду с опцией --verbose
, но не указывать ее --key-slot
:
# cryptsetup --verbose open --test-passphrase /dev/sda2
Enter passphrase for /dev/sda2:
Key slot 4 unlocked.
Он автоматически проверит нужный слот, и вам не придется тратить время на поиск подходящего :)