LUKS con Cryptsetup y dm-crypt rápido para gente sin tiempo

Cryptsetup nos permite cifrar nuestro disco duro, algo muy recomendable para portátiles viajeros.

LUKS (Linux Unified Key Setup) es una especificación estándar de cifrado de disco. Anteriormente cada software de cifrado implementaban una versión y casi ninguna estaba correctamente documentada y en muchas ocasiones, esta documentación ni si quiera llegaba a estar disponible de forma pública.

Mediante el programa cryptsetup y con la ayuda del subsistema de cifrado/descifrado dm-crypt, que internamente hace uso de la cryptoAPI del kernel de Linux 2.6, nos permite cifrar por bloques dispositivos como: discos, particiones, archivos, etc.

Aunque originalmente es un estándar hecho para GNU/Linux, el programa FreeOTFE puede abrir dispositivos formateados con LUKS en Microsoft Windows.

Crear un dispositivo cifrado

Formatear como dispositivo cifrado

# cryptsetup luksFormat /dev/dispositivo

Abrir un dispositivo cifrado

# cryptsetup luksOpen /dev/dispositivo nombre-montado

Formatear el sistema de archivos sobre el dispositivo descifrado (montado)

# mkfs.ext4 /dev/mapper/dispositivo-montado

Cerrar el dispositivo descifrado (bloquearlo)

# cryptsetup luksClose nombre-montado

Montar y desmontar un dispositivo cifrado

Abrir (desbloquear) el dispositivo cifrado

# cryptsetup luksOpen /dev/dispositivo nombre-montado

Montar el dispositivo descifrado en algún punto de montaje:

# mount /dev/mapper/nombre-montado /mnt/punto-montaje

Desmontar el dispositivo:

# umount /mnt/punto-montaje

Volver a bloquear el dispositivo cifrado:

# cryptsetup luksClose nombre-montado

Otras opciones útiles

Cómo ver qué dispositivos hay y en donde está la partición o dispositivo cifrado

# lsblk -o name,size,fstype,label,mountpoint

Comprobar si un dispositivo es LUKS

# cryptsetup isLuks /dev/dispositivo

Ver información sobre los slots, cifrado, UUID, etc

# cryptsetup luksDump /dev/dispositivo

Cambiar la clave a un dispositivo cifrado

Un dispositivo cifrado tiene 8 slots (huecos) que van del 0 al 7. Estos slots pueden almacenar cada uno una clave, por tanto puede haber hasta 8 llaves o claves que pueden descifrar el dispositivo.

La primera llave, por defecto se almacena en el slot 0.

Cambiar la clave directamente

¡Atención, peligroso! Sólo pregunta por la clave 1 vez, si la tecleas mal, olvídate de acceder:

# cryptsetup luksChangeKey /dev/sda3 -S 0

Método recomendado para el cambio de clave

0) Mirar con luksDump (hay un ejemplo del comando arriba) si tiene la llave en el slot 0 o sino, en cual está:

# cryptsetup luksDump /dev/dispositivo

1) Añadir una nueva clave en el slot 1 (o en otro si ese está ocupado). La opción (-S 1) indica el slot donde se añadirá la clave, cámbialo de ser necesario:

# cryptsetup luksAddKey /dev/dispositivo -S 1

2) Reiniciar la máquina (si tiene el disco cifrado) o desmontar y bloquear si es un disco externo.

3) Tratar de descifrar o desbloquear el dispositivo usando la clave del slot 1 o la que hayamos añadido.

3) Si funciona el descifrado, borrar la llave del slot 0 o la del slot donde estuviera (paso 0).

# cryptsetup luksRemoveKey /dev/dispositivo -S 0

Tendremos que escribir la clave del slot que queremos borrar, si no la recordamos, también podremos borrarla directamente con el comando:

# cryptsetup luksKillSlot /dev/dispositivo 0

Y si tienes entorno gráfico o eres alérgico a la consola, siempre puedes ir al menú -> Preferencias -> Discos, seleccionar la partición cifrada, darle a la rueda de configuración de abajo y seleccionar la opción «Cambiar frase de paso…».

No obstante, no he encontrado forma de añadir en el entorno gráfico una segunda llave o clave en otro slot.

Si el portátil es de empresa, el departamento de informática debería establecer una llave de descifrado adicional para cada portátil. Con esta llave, se podrá recuperar la información en caso de olvido de contraseña u otras contingencias.

Más información

Otros artículos de interés