En este documento vamos a ver cómo Encriptar una Partición o un Volumen usando el dispositivo LOOP de forma que nuestros datos queden protegidos con algún tipo de algoritmo de encriptación como AES, DES, Triple-DES, MD5, SHA1, BLOWFISH, SERPENT, ANUBIS, KHAZAD, etc., y de esta forma asegurar que los datos no van a poder ser sutraidos. La partición quedará montada con la encriptación elegida y con un password de 20 caracteres.
Todos los ejemplos de este documento fueron probados bajo la dristribución GNU/Debian. El documento consta de dos partes y una tercera parte que se deja para otro documento.
Comprobamos los algoritmos de encriptación (ciphers) que tenemos cargados en nuestro kernel. Lo vemos de la siguiente manera:
cat /proc/crypto
Los módulos de encriptación los encontaremos aquí:
cd /lib/modules/`uname -r`/kernel/crypto
De esta forma vemos los módulos que tenemos. Ahora queremos utilizar la encriptación AES256 pero vemos que sólo disponemos de AES. Para solucionarlo instalamos loop-aes-utils que nos permitirá utilizar aes con 256bits.
Si usamos GNU/Debian basta con:
apt-get install loop-aes-utils
Esto nos creará los dispositivos en /dev/loop[0-7]. Para ver los dispositivos loop de los que disponemos hacemos:
ls /dev/loop*
Podemos observar que por defecto nos crea 8 dispostivos loop. Si necesitamos más deberemos hacer lo siguiente:
rmmod loop
modprobe loop max_loop=número(max 256)
Si el paquete no se encuentra disponible en los repositorios de nuestra distribución podemos obtener las fuentes de http://loop-aes.sourceforge.net
Compilamos e instalamos. En la página tienen sus propios algoritmos de encriptación (ciphers), como son:
twofish128 twofish160 twofish192 twofish256
blowfish128 blowfish192 blowfish256
serpent128 serpent192 serpent256
Una vez instalado loop-aes-utils recargamos los módulos:
modprobe cryptoloop loop
Comprobamos qué tipo de algoritmos de encriptación están soportados por nuestro kernel. Lo vemos de la siguiente manera:
cat /proc/crypto
Comprobamos con lsmod que tenemos cargados los módulos. Creamos un nuevo volumen del tamaño que necesitemos para nuestra partición encriptada. En el ejemplo creamos un volumen de 5GB:
dd if=/dev/zero of=VolumenSeguro.img count=1 bs=5GB
Ahora le asociamos a la imagen creada un dispositivo por bloques loop y un módulo de encriptación, que en nuestro caso será aes256:
losetup -e aes256 /dev/loop0 VolumenSeguro.img
Nos pedirá un password que debe ser igual o superior a 20 caracteres. Ahora creamos el filesystem que queramos. Nosotros hemos elegido ext3:
mkfs -t ext3 /dev/loop0
Ahora que ya disponemos de nuestro sistema de ficheros loop0 lo montamos de la siguiente manera:
mount VolumenSeguro.img -o loop=/dev/loop0,encryption=AES256 /mnt/secure -t ext3
Nos pedirá el password de 20 caracteres que le pusimos anteriormente. Si necesitamos comprobar que nuestro sistema de ficheros encriptado está montado, lo podemos ver con la utilidad mount. Observaremos que ya disponemos de la partición encriptada.