Determinar en qué ranura se encuentra una frase de contraseña

Determinar en qué ranura se encuentra una frase de contraseña

Tengo una partición cifrada con luks que estaba protegida por una frase de contraseña y un archivo de clave. El archivo clave era para acceso de rutina y la frase de contraseña estaba en un sobre cerrado para emergencias. Pasaron los meses de mayo y accidentalmente destruí el archivo clave, así que lo recuperé usando la frase de contraseña del sobre. Ahora quiero saber, tengo dos ranuras de clave activas, pero no sé cuál contiene la frase de contraseña del archivo de clave inútil y cuál tiene mi frase de contraseña de emergencia. Obviamente, si elimino el incorrecto, perderé todos los datos del disco.

#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

Respuesta1

Como habrás descubierto, puedes utilizar cryptsetup luksDumppara ver qué ranuras para llaves tienen llaves.

Puede verificar la frase de contraseña para una ranura en particular con

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

Esto tiene éxito si ingresa la frase de contraseña correcta para la ranura de clave 0 y falla en caso contrario (incluso si la frase de contraseña es correcta para alguna otra ranura de clave).

Si olvidó una de las frases de contraseña, entonces solo podrá encontrar en qué ranura se encuentra mediante eliminación, y si olvidó dos de las frases de contraseña, entonces no hay forma de saber cuál es cuál (de lo contrario, el hash de la frase de contraseña se rompería).

Para eliminar la frase de contraseña que has olvidado, puedes ejecutar cryptsetup luksKillSlot /dev/sda2 0e ingresar de forma segura la frase de contraseña que recuerdas. Para borrar una ranura de clave, cryptsetupse requiere la frase de contraseña para una ranura de clave diferente, al menos cuando no se está ejecutando en modo por lotes (es decir --batch-mode, no --key-file=-u opción equivalente).

Respuesta2

Una forma más sencilla (¿ahora?) es usar el comando con la --verboseopción pero sin especificar cuál --key-slot:

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

Automáticamente comprobará la ranura correcta, sin que tengas que buscar la buena :)

información relacionada