El cifrado de nuestros datos es esencial hoy en día, especialmente con tantos dispositivos móviles en los que almacenamos información sensible. En este Cybertruco vamos a ver como utilizando LUKS (Linux Unified Key Setup) podemos conseguir uno de los cifrados más seguros que existen para nuestros dispositivos a través del cifrado de dispositivo de bloques.

cifrado

 

Las distribuciones actuales de Linux utilizan el cifrado de dispositivo de bloques, este opera por debajo del sistema de archivos asegurando que todo lo presente en un dispositivo de bloques (disco completo, partición o fichero actuando como dispositivo loop) sea cifrado, solo siendo accesible su contenido cuando el dispositivo se ha montado. Este método es quasi obligado en dispositivos móviles como portátiles, tablets..

Para conseguir ese cifrado se utiliza principalmente LUKS (Linux Unified Key Setup). Este se instala sobre la utilidad cryptsetup, que también es capaz de utilizar otros métodos de cifrado como el dm-crypt, loop-AES o TrueCrypt. LUKS entre otras ventajas almacena toda la información en la cabecera de la partición, por lo que facilita la migración de particiones a otros discos o sistemas y también nos permite cifrar particiones swap, este último punto lo veremos en otro Cybertruco.

Como decíamos utilizaremos cryptsetup para este Cybertruco. A través de esta herramienta cifraremos nuestro dispositivos que posteriormente podremos montar y desmontar con utilidades de disco estandard. Hay que tener en cuenta que este método borra toda la información existente en la partición que estemos cifrando. Para el ejemplo vamos a suponer que disponemos de la partición /dev/sdc1

Cifrar una partición

Este proceso lo haremos con el siguiente comando

sudo cryptsetup -y -v luksFormat /dev/sdc1

Los parámetros utilizados son el -y para que nos pregunte de nuevo la passphrase que no es recuperable y el -v para ver más datos en pantalla. En este momento tendremos que proveer una passphrase para poder utilizar el volumen cifrado posteriormente. En el caso que nuestro kernel no soporte el método de cifrado por defecto usado por cryptsetup y el anterior comando nos devuelva un error podemos comprobar los métodos soportados en el archivo /proc/crypto y relanzar el comando por ejemplo como

sudo cryptsetup luksFormat --cipher aes /dev/sdc1

Montar un volumen cifrado

Para inicializar nuestro volumen ya cifrado ejecutaremos de nuevo cryptsetup esta vez con luksOpen, para crear un mapeo de nuestro dispositivo y le daremos un nombre, tras lo cual se nos preguntará por nuestra passphrase.

sudo cryptsetup --verbose luksOpen /dev/sdc1 particioncifrada

Podemos comprobar el estado de esta inicialización con

cryptsetup -v status particioncifrada

Una vez inicializado, si es la primera vez que utilizamos la partición, podemos formatearla con

sudo mkfs.ext4 /dev/mapper/particioncifrada

Hecho esto, la podemos montar allá donde queramos con el comando mount

sudo mount /dev/mapper/particioncifrada /mnt

Desmontando y cerrando partición

Una vez acabemos de trabajar con nuestro volumen cifrado podemos desmontar la partición con umount

sudo umount /mnt

Cerrando el volumen con luksClose

sudo cryptsetup --verbose luksClose particioncifrada

Montar el volumen en el arranque de sistema

Lo que hemos explicado previamente está muy bien para usos ocasionales, pero en el caso que necesitemos utilizar la partición de manera fija debemos añadir el montaje en el propio arranque de sistema, vamos a ver como.

Para hacer esto deberemos realizar los dos siguiente pasos. Primero crearemos una entrada en /etc/fstab

/dev/mapper/particioncifrada /mnt ext4 defaults 0 0

Segundo, crearemos otra entrada, esta vez en /etc/crypttab

​​​​​​particioncifrada ​/dev/sdc1

Espero que os sea de utilidad
saludos