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.