Almacenamos datos confidenciales en GNU/Linux
El manual es complementario al art�culo Almacenamos datos confidenciales en GNU/Linux (Hakin9 01/2005). Supongamos que los ejercicios descritos se realizar�n con Hakin9 Live que acompana a la revista.
!Nota! No recomendamos cifrar los datos reales que tengan valor con el sistema Hakin9 Live – esto puede provocar su p�rdida despu�s de reiniciar el ordenador.
Objetivo: Despu�s de realizar los ejercicios descritos, el Lector:
sabr� cifrar de forma sim�trica y asim�trica archivos separados usando el paquete GnuPG,
sabr� crear y usar la carpeta cifrada con la herramienta EncFS,
sabr� crear y montar una partici�n cifrada (real o virtual) con el uso de la herramienta cryptoloop.
Cifrado sim�trico de archivos – paquete GnuPG
En el primer ejercicio vamos a emplear el paquete GnuPG para cifrar un archivo separado. En nuestro caso ser� el archivo HK1204.pdf.
[01] En el manual vamos a emplear el algoritmo AES (tiene la mejor relaci�n del rendimiento a la calidad). Vamos a empezar por cargar el m�dulo del n�cleo responsable de su soporte:
$ su -
# modprobe aes
# exit
[02] Creamos el directorio /home/haking/encrypted, en el cual vamos a almacenar nuestros datos cifrados:
$ mkdir ~/encrypted
En �l guardamos el archivo HK1204.pdf.
[03] Ya es la hora de cifrar. Damos el siguiente comando:
$ gpg --output ~/encrypted/cyph1 --symmetric --cipher-algo AES192 ~/encrypted/HK2104.pdf
El comando mencionado nos obliga a cifrar de forma sim�trica el archivo HK2104.pdf al archivo de salida ~/encrypted/cyph1 con el uso del algoritmo AES con la clave de 192-bits.
[04] Para cifrar es necesario dar una contrasena. Vamos a pensar un momento la frase que no tiene sentido pero que sea f�cil de memorizar – por ejemplo – Por las noches los enanos y el elefante con su nariz tocan rumba. As� se divierten, 666. As� ser� la contrasena.
[05] El archivo ha sido cifrado. Ahora tenemos que quitar con seguridad el original:
$ shred -n 35 -z -u ~/encrypted/HK2104.pdf
[06] Para descifrar el archivo y recuperar los datos vamos a usar el siguiente comando:
$ gpg --output HK2104.pdf --decrypt ~/encrypted/cyph1
Directorios cifrados – EncFS
[07] Antes de usar la aplicaci�n EncFS tenemos que crear dos directorios. En uno (en nuestro caso ~/.crypto) vamos a almacenar nuestros datos en forma cifrada (no vamos a emplearlo directamente), en cambio en el otro (~/secret) se montar�n y descifrar�n en el vuelo a cualquier solicitud de acceso. El montaje puede tener lugar tan s�lo al dar la contrasena correcta.
$ mkdir ~/.crypto
$ mkdir ~/secret
[08] El siguiente paso activar� el mecanismo EncFS:
$ su -; insmod fuse; exit
$ encfs ~/.crypto ~/secret
Al pulsar la tecla [Enter] se nos pedir� el modo de selecci�n de la configuraci�n. Vamos a decidirnos por el modo predeterminado paranoico.
Es la hora de fijar la contrasena para nuestro archivo. Despu�s de darla y confirmar nuestro sistema virtual de archivos est� preparado a usar.
[09] Copiamos en �l unos archivos (echo, ls, telnet):
$ cp /bin/echo /bin/ls /bin/telnet ~/secret/
Comprobamos qu� es lo que se encuentra en los directorios ~/secret y ~/.crypto:
$ ls ~/secret
$ ls ~/.crypto
Como podemos ver, en el primero se encuentran nuestros archivos mientras que en el segundo est� su versi�n cifrada. Para que nadie pueda leer su contenido, ahora podemos desmontar el sistema virtual de archivos, con el siguiente comando:
$fusermount -u ~/crypto
!�xito! Nuestros datos ya son seguros.
[10] Ahora vamos a tratar de montarlos otra vez – con una protecci�n adicional la cual, de forma autom�tica, va a desmontar despu�s de pasar unos minutos de inactividad (10 minutos):
$ encfs --idle=10 ~/.crypto ~/secret
Nuestros archivos son accesibles de nuevo en el directorio ~/secret. Cuando esperemos 10 minutos, nos convenceremos de que se desmontar� autom�ticamente.
Sistema de archivos cifrado – cryptoloop
Nos ha quedado tan s�lo una herramienta que nos ayudar� proteger los archivos confidenciales. Es la aplicaci�n cryptoloop incluida en el kernel de Linux.
[11] Suponemos que no tenemos actualmente ninguna partici�n que est� libre (as� es en el caso de Hakin9 Live), vamos a emplear un c�modo rasgo del mecanismo de retorno &ndash loopback – que permitir� emplear como sistema de archivos un archivo ordinario. Vamos a prepararlo:
$ dd if=/dev/urandom of=~/crypto.raw bs=1k count=10000
Esto hace que creemos un archivo de 10 megabytes, lleno de valores aleatorios (basura).
[12] La siguiente acci�n es asociar el archivo creado con un dispositivo libre loop y cifrarlo con el m�todo que nosotros seleccionemos:
$ su -
# losetup -e aes-192 /dev/loop1 /home/haking/crypto.raw
La aplicaci�n nos pedir� la contrasena de 20 caracteres como m�nimo.
[13] Como ya tenemos espacio preparado, tenemos que ordenarlo un poco, es decir, crear un sistema de archivos. Por ejemplo ext2:
# mkfs.ext2 /dev/loop1
[14]Despu�s de realizar la operaci�n podemos ya soltar (opci�n -d) el dispositivo
loop1:
# losetup -d /dev/loop1
# exit
[15] Nuestro sistema de archivos cifrado ya est� preparado para montarlo y usarlo de igual forma como cualquier otro sistema de archivos. Vamos a montarlo y veremos como funciona:
$ mkdir ~/encrypted_disk
$ mount -t ext2 ~/crypto.raw ~/encrypted_disk -oencryption=aes-192
mount, al dar la contrasena correcta, por si mismo va a asociar el archivo con el primer dispositivo libre loop.
[16] Vamos a copiar nuestros archivos a un contenedor seguro:
$ cp /bin/echo /bin/ls /bin/telnet ~/encrypted_disk
Es todo – ya podemos montar y desmontar nuestro nuevo disco cifrado sin ninguna limitaci�n. Nadie sin conocer la contrasena de acceso tendr� la posibilidad de mirar su interior.