Encriptando un disco duro externo con LUKS en Linux

Mis necesidades de espacio en disco me han hecho prescindir por varios meses de un backup completo con lo cual he vivido al limite tecnológicamente hablando. Antes de que el cataclismo maya acabe con mis datos acabo de adquirir un disco Buffalo Technology MiniStation Stealth que se veía bastante prometedor y con buenos comentarios.

Todo informático que se respete encripta sus discos duros removibles y pendrives cuando transporta información sensible y en un país como Guatemala esto tiene más sentido ya que en cualquier momento te asaltan con tortilla tiesa o patadas voladoras acompañadas de desarmadores y revolvers.

0.- Preeliminares

El tema de encripción es por demás un tema bastante amplio y complicado 😀 donde tenemos mil opciones para asegurar nuestros datos, por tal motivo presento un método que va con mis necesidades las cuales se limitan a una partición encriptada y que Gnome reconozca automáticamente al montarla. Algunos conceptos antes de empezar

Dm-crypt un device mapper que hace la encripción de datos transparente, en otras palabras lo que hará que nuestra partición encriptada termine como un dispositivo transparente /dev/mapper/foo

LUKS uno de los muchos estandares de encripción disponibles para Linux, es ideal para discos duros externos porque guarda la configuración de encripción en la partición (algoritmo, modo de trabajo, etc.) y no en archivos externos lo cual nos asegura portabilidad entre distribuciones o incluso Windows. LUKS basicamente generará y encriptará mediante una clave maestra que a su vez se encriptará con una clave que el usuario proporciona, si deseamos cambiar nuestra clave o utilizar más de una clave, solo se reencriptara la clave maestra y nos evitara reencriptar todos nuestros datos ¿interesante no?.

AES y SHA256 algoritmos seguros de encripción y hashing respectivamente que no explicare en este documento, pero son bastante seguros 🙂 (Tanto que se AES esta aprobado por la NSA).

– Todos los comandos en este mini-tutorial se ejecutan con privilegios de root.

1.- Particionando
Como un paso previo podemos llenar el disco duro entero con datos random y de esta forma agregamos un poco más de dificultad al intentar crackear el disco. Ya que estamos trabajando sobre un disco duro externo, haremos de cuenta que el dispositivo esta ubicado en /dev/sdb

dd if=/dev/urandom of=/dev/sdb bs=4K

Antes de comenzar debemos de instalar el paquete cryptsetup disponible en nuestra distribución favorita, por ejemplo en Gentoo

emerge cryptsetup

Luego de esto debemos preparar el disco con LUKS, el metodo más facil es utilizar una partición sin formatear.

En mi caso el disco duro externo tendrá dos particiones, una partición /dev/sdb1 convenientemente formateada bajo NTFS para compartir las ultimas peliculas pr0n independientes con mis amigos usuarios de Windows con un maximo de 50 GB y otra particion /dev/sdb2 que tendrá todos mis datos encriptados bajo el esquema dm-crypt/LUKS de aproximadamente 950 GB las particiones las podemos crear con fdisk, cfdisk o incluso gparted.

Como primer paso preparamos la partición para soportar LUKS, cryptsetup hara este trabajo y nos preguntara una clave que no debemos olvidar:

cryptsetup --verify-passphrase luksFormat /dev/sdb2 -c aes -s 256 -h sha256

Las opciones fueron las siguientes

  • –verify-passphrase – verifica el password que introducimos
  • -c aes -s 256 – configuramos una encripción AES de 256 bits
  • -h sha256 – y tambien configuramos el algoritmo de hashing SHA de 256 bits

Una vez configuramos la partición es momento de desbloquearla para trabajar con ella y poder formatearla

cryptsetup luksOpen /dev/sdb2 discoseguro

El nombre en el parametro final sera el que utilizara dm-crypt para poder trabajar con la partición la cual encontraremos en /dev/mapper/discoseguro y procedemos a formatear, en mi caso con ext4.

mkfs -t ext4 /dev/mapper/discoseguro

Y con esto tenemos lista nuestra partición encriptada, ya podemos montarla de manera transparente con nuestro siempre confiable comando mount

mount /dev/mapper/discoseguro /media/disk

Hasta el momento el dueño de los datos aun es root, lo cual podemos cambiar con

chown tuxtor:users /media/disk

En mi caso quiero que el dueño sea el usuario tuxtor y que el grupo sea users. La próxima vez que conectemos nuestro disco Gnome nos preguntara por nuestra clave para utilizar la partición encriptada.

Una respuesta a “Encriptando un disco duro externo con LUKS en Linux”

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *