
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 luksDump
para 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 0
e ingresar de forma segura la frase de contraseña que recuerdas. Para borrar una ranura de clave, cryptsetup
se 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 --verbose
opció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 :)