Определите, в каком слоте есть пароль

15

У меня есть зашифрованный раздел 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
бедро
источник
2
Оказывается, он luksKillSlotзапрашивает парольную фразу из другого слота, поэтому нет риска уничтожить последний ключ, который у вас есть. Тем не менее, я считаю, что первоначальный вопрос остается в силе.
Гекл

Ответы:

14

Как вы обнаружили, вы можете использовать, cryptsetup luksDumpчтобы увидеть, какие слоты имеют ключи.

Вы можете проверить кодовую фразу для определенного слота с

cryptsetup luksOpen --test-passphrase --key-slot 0 /dev/sda2 && echo correct

Это будет успешно выполнено, если вы введете правильную фразу-пароль для слота ключа 0, и не получится иначе (в том числе, если пароль-пароль верен для какого-то другого слота ключа).

Если вы забыли одну из парольных фраз, то вы можете найти только то, в каком слоте она находится, путем исключения, а если вы забыли две парольные фразы, то нет никакого способа определить, какой именно (в противном случае хэш парольной фразы будет разбит).

Чтобы удалить забытую фразу-пароль, вы можете безопасно запустить cryptsetup luksKillSlot /dev/sda2 0и ввести фразу-пароль, которую вы помните. Протереть шпоночный паз, cryptsetupтребует ключевой фразы для другого ключевого паза, по крайней мере , когда он не работает в пакетном режиме (т.е. нет --batch-mode, --key-file=-или эквивалентный вариант).

Жиль "ТАК - прекрати быть злым"
источник
6

Более простой способ (сейчас?) - использовать команду с --verboseпараметром, но без указания --key-slot:

# cryptsetup --verbose open --test-passphrase /dev/sda2
Enter passphrase for /dev/sda2: 
Key slot 4 unlocked.

Он автоматически проверит для вас правильный слот, не заставляя вас искать подходящий :)

ratnoz
источник