Cifrar con LUKS

LUKS (del inglés Linux Unified Key Setup, Configuración de clave unificada de Linux), completamente de código abierto, opera a nivel de núcleo y emplea el subsistema device mapper a través del módulo dm-crypt. En este tutorial vamos a crear una partición cifrada con autenticación desde un fichero y desde contraseña, mas adelante quiero implementar la autenticación con el modulo TPM2.
Vamos a crear una partition con una longitud de clave de 512 bit y un hash de SHA-512.
Supongamos que tenemos un pendrive y queremos guardar en el información sensible, nos vale un disco duro externo también.
Mi recomendación es crear al menos 2 particiones en el dispositivo externo, la primera pequeña, si puede ser de al menos 1Gb perfecto, si puedes mas, mejor, para ficheros temporales y en FAT32.
No me guardes en esa partición la clave de la partición cifrada
y la otra partición con el tamaño restante del dispositivo, creamos una partición formateada en EXT4, esto nos da igual ahora mismo, ya que vamos crear el volumen cifrado y luego lo vamos a formatear. Aquí tengo mi HDD externo de 1Tb con 2 particiones, lo que comentaba, la primera de 32GB en FAT32, sin cifrado y la segunda con el resto de capacidad cifrada y formateada en EXT4.

Para cifrar una partición y la autenticación con fichero, con una longitud de clave de 512 bit y un hash SHA-512, donde /dev/sdaX
cambiarlo por la partición que os corresponda.
sudo cryptsetup luksFormat --cipher=aes-xts-plain64 --key-size=512 --hash=sha512 --use-random /dev/sdaX
y en un momento tendremos la partición cifrada, pero aun no hemos terminado.
Ahora vamos a darle formato, antes de nada debemos desbloquear la partición. Podemos poner el nombre que queramos.
sudo cryptsetup luksOpen /dev/sdaX {nombre}
Y la formateamos, en este caso de tipo ext4
sudo mkfs.ext4 /dev/mapper/{nombre}
La volvemos a bloquear una vez terminado el formateo de la partición.
sudo cryptsetup luksClose {nombre}
Y ya tenemos nuestro dispositivo cifrado y bien cifrado, ya puedes memorizar bien la clave, no la dejes junto con el dispositivo.
Podemos ver la cabecera de LUKS de nuestro dispositivo con
sudo cryptsetup luksDump /dev/sdaX
Y nos devolverá algo similar:
LUKS header information
Version: 2
Epoch: 3
Metadata area: 16384 [bytes]
Keyslots area: 16744448 [bytes]
UUID: fe223394-1612-8c20-9a0b-ac6e202294a2
Label: (no label)
Subsystem: (no subsystem)
Flags: (no flags)
Data segments:
0: crypt
offset: 16777216 [bytes]
length: (whole device)
cipher: aes-xts-plain64
sector: 512 [bytes]
Keyslots:
0: luks2
Key: 512 bits
Priority: normal
Cipher: aes-xts-plain64
Cipher key: 512 bits
PBKDF: argon2id
Time cost: 14
Memory: 1048576
Threads: 4
Salt: 60 31 f1 b7 6a 6e 55 8c 45 45 a5 b5 ac 18 46 08
64 92 1d 83 2a f4 e3 93 89 2f 26 7a 70 87 3d 0e
AF stripes: 4000
AF hash: sha512
Area offset:32768 [bytes]
Area length:258048 [bytes]
Digest ID: 0
Tokens:
Digests:
0: pbkdf2
Hash: sha512
Iterations: 264791
Salt: ca ad 4c d3 6e ba 83 2f 4f 70 c7 0c 11 91 24 e7
cf 73 a6 5a 7c 43 4c 37 28 3b 1b 57 5b c3 6d 6c
Digest: e3 38 c7 ea 0a 58 14 c6 8e 24 ae 8f 45 57 d4 55
34 79 ca 0b a6 b5 45 bc 83 ee 1e e9 6a f6 de c6
62 40 d2 57 ae 71 e0 f6 29 3c e8 86 c9 31 1f b2
ed 44 57 6d d5 94 e3 de 60 64 88 f2 f4 ab 34 bb
Nos interesa de esa cabecera los puntos:
Key: 512 bits
Cipher: aes-xts-plain64
Hash: sha512
Si conectamos nuestro disco externo, nos pedirá la contraseña para desbloquear la partición cifrada.

Esto lo podemos aplicar para cifrar un disco antes de instalar el sistema operativo, lo que probado Fedora 41, Anaconda si detecta el cifrado LUKS si lo has cifrado previamente y puedes instalar el sistema operativo (marcando sin cifrar), en cada inicio luego te pide las password para continuar el arranque, cuidado con cifrar /boot y EFI. Un gallifante para Fedora por el buen trabajo de integración de Anaconda con LUKS. En Debian 12.9 no detecta LUKS, con lo que si esta cifrado instalará encima el sistema normalmente pisando lo que tenga el disco. Mal Debian, MAL!!!
Last updated
Was this helpful?