Contenido sensible en el PC

Durante este verano no sólo me he dedicado a mi tesis. También he estado trabajando con el código de una empresa, código que, ni que decir tiene, es «sensible», en el sentido de «secreto». Esto plantea el dilema de cómo llevar el código objeto de protección en, por ejemplo, una llave USB, disco duro externo o incluso en el mismo portátil, en el caso infortunado de un robo, por ejemplo.

Así, el otro día un amigo me recordó una utilidad del gran Linux que viene al pelo: el cryptoloop. ¿Qué es el cryptoloop? Pues un sistema de ficheros que permanece cifrado en disco, y sólo se puede acceder a él montándolo y proporcionando la clave. Dicho así parece muy sencillo. El caso es que en linux tamibén es muy sencillo de llevar a la práctica. Siguiendo el magnífico tutorial de cryptoloop, y teniendo en cuenta que en Debian/Ubuntu están los paquetes listos para instalar sin ninguna configuración adicional, se puede hacer muy rápidamente. Primero se instala el paquete loop-aes-utils


# apt-get install loop-aes-utils


El núcleo por defecto en Ubuntu lleva soporte para cryptoloop, así que se puede crear la partición directamente. Lo único que hay que hacer es instalar el módulo adecuado:


# modprobe cryptoloop


Un posible uso más restrictivo es cifrar completamente una partición. Cada vez que arranque el ordenador y se monte la partición pedirá la clave. Yo por ahora sólo necesito un conjunto de ficheros, así que creo un fichero que contendrá el sistema de ficheros cifrado completo:


# dd if=/dev/urandom of=protegido bs=1024 count=65536


En este caso creo el fichero protegido de tamaño 64MB. Después hay que iniciar el dispositivo como un sistema de ficheros cifrado. Para eso se utiliza losetup:


# losetup -e aes-256 /dev/loop0 protegido


El dispositivo loop es el que se utiliza para montar sistemas de ficheros virtuales en linux. El algoritmo de cifrado usado en este caso es el "aes-256". Supongo que habrá otros, pero no he investigado más en ese tema, ya que en este caso, la fortaleza depende de la clave. losetup te pregunta la clave. Cuidado, sólo una vez.

A partir de aquí ya podemos usar /dev/loop0 como un dispositivo de disco normal. Lo formateamos y eliminamos la asociación con el dispositivo loop:


# mkfs.ext3 /dev/loop0
# losetup -d /dev/loop0


A continuación, y cada vez que lo queramos usar, tendremos que montarlo. Si es una partición, incluso se puede añadir la línea pertinente a /etc/fstab. En mi caso, es un fichero, y lo puedo montar como sigue:


# mount protegido /mnt -oencryption=aes-256
Contraseña: **************
# mount
protegido on /mnt type ext3 (rw,loop=/dev/loop1,encryption=aes-256)


Ya podemos usar el sistema de ficheros /mnt cifrado.

Hay, sin embargo, una serie de consideraciones a tener en cuenta:

1. El fichero "protegido" siempre permanece cifrado en el disco.
2. Mientras está montado, el contenido de ese fichero se puede acceder en claro. Esto significa que si dejamos el ordenador encendido y al alcance de otros, podrán extraer la información.
3. Así, el invento sólo es interesante para dispositivos que se puedan mover: discos, llaves USB, portátiles, etc.
4. Problema: no es compatible con Windows. Lo cual, ahora que lo pienso no es ningún problema, primero porque ¿quién usa Windows? Y segundo, es más, si alguien usa Windows no lo va a poder ver: es incompatible y además está cifrado :)

blog comments powered by Disqus