lunes, 12 de noviembre de 2012

Casi todo sobre eCryptfs

eCryptfs es un un sistema de ficheros encriptado que está integrado en el kernel Linux. Es lo que utiliza Ubuntu cuando activamos el directorio Home encriptado. Y funciona como una herramienta a medio camino entre GnuPG y Cryptsetup.

GnuPG nos permite encriptar ficheros uno a uno, y Cryptsetup nos permite encriptar todo el contenido del disco duro (o la partición) de manera transparente en GNU/Linux, incluyendo el sistema de ficheros.


eCryptfs funciona sobre un sistema de ficheros POSIX como ext4, también de forma transparente, encriptando cada fichero de manera individual y con toda la información necesaria sobre el cifrado incluida en el propio fichero. Se podría coger un solo fichero encriptado, enviarse a otro PC, y acceder a la información de ese fichero usando la misma contraseña.


Para utilizarlo hay que instalar el paquete ecryptfs-utils, y su uso mas sencillo es el siguiente:
$ sudo mount -t ecryptfs <dir. origen> <dir. destino>
De manera interactiva, nos pedirá la clave que queremos utilizar seguida de una serie de preguntas que podemos dejar en sus opciones por defecto pulsando enter. Una vez montado, todos los archivos que escribamos en el directorio destino aparecerán en directorio origen pero con el contenido encriptado.

Es habitual usar el mismo directorio como origen y destino. Por ejemplo:
$ sudo mount -t ecryptfs /dir/enc /dir/enc
Antes del comando mount, el contenido del directorio son los ficheros cifrados; después de mount estos se quedan ocultos y solo podremos ver los ficheros desencriptados, hasta que volvamos a usar umount.
$ sudo umount /dir/enc

Las preguntas que nos hace eCryptfs de manera interactiva son las siguientes:
  • Introducir la passphrase, es decir, la contraseña de encriptación.
  • El algoritmo de cifrado, que por defecto es AES.
  • Tamaño de la clave, que por defecto es de 16 bytes (128 bits).
  • Si queremos activar el plaintext passthrough, que es acceder a ficheros que no estén cifrados.
  • Si queremos encriptar los nombres de los ficheros. Por defecto solo se encripta el contenido.

Si hay ficheros sin cifrar en el directorio origen, al activar plaintext passthrough tendremos acceso al contenido de estos ficheros desde el directorio destino. Por defecto está desactivado y se producirá un error al intentar acceder a estos ficheros.

Al activar el cifrado de los nombres de ficheros también nos preguntará por la firma de la clave que queremos usar, que por defecto es la misma que para cifrar el contenido. En raras situaciones hace falta cambiarla. Con esta opción activada los nombres de los ficheros aparecerán en el directorio origen como largas cadenas de caracteres pseudo-aleatorias.

Además, la primera vez que utilicemos una clave nos avisará de que no se ha utilizado antes, y nos preguntará si queremos continuar. Hay que estar seguro de haber escrito correctamente la clave, entonces le decimos yes. Seguidamente nos preguntará si queremos guardar la firma de la clave en el fichero /root/.ecryptfs/sig-cache.txt para que no nos vuelva hacer estas dos últimas preguntas. Si le decimos yes y nos vuelve a salir este aviso en el futuro, es que no hemos escrito correctamente la clave.

Automatizando opciones

El comando mount nos mostrará un texto similar a este:
Attempting to mount with the following options:
  ecryptfs_unlink_sigs
  ecryptfs_key_bytes=16
  ecryptfs_cipher=aes
  ecryptfs_sig=7511300c76c56697
Son opciones que se pueden pasar a mount para responder las preguntas de manera no interactiva. Por ejemplo, si tenemos la firma de la clave metida de antemano en /root/.ecryptfs/sig-cache.txt, el siguiente comando sólo nos pedirá la clave
$ sudo mount -t ecryptfs /dir/enc /dir/enc -o ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_passthrough=no,ecryptfs_fnek_sig=7511300c76c56697

Las opciones que se le pueden pasar a mount son las siguientes:
  • ecryptfs_cipher=aes o el algoritmo elegido
  • ecryptfs_key_bytes=16 ó 24 ó 32
  • ecryptfs_passthrough o ecryptfs_passthrough=no para activar o desactivar plaintext passthrough
  • ecryptfs_fnek_sig=<sig> o ecryptfs_enable_filename_crypto=no para activar o desactivar el cifrado de nombres de ficheros
  • no_sig_cache para desactivar la comprobación de la firma en /root/.ecryptfs/sig-cache.txt

Para automatizarlo completamente podemos añadir una opción con la clave al resto de opciones usando una de estas dos alternativas:
  • key=passphrase:passwd=miclave
  • key=passphrase:passfile=/tmp/clave
En este último caso, el fichero /tmp/clave tiene que existir su contenido tiene que ser
passphrase_passwd=miclave
Aunque no es muy buena idea guardar un fichero con la clave en el mismo sitio que están los datos encriptados.

En caso de crear una entrada dentro de /etc/fstab es recomendable añadir también noauto si es previsible que nos pida algún dato de manera interactiva.

No hay comentarios:

Publicar un comentario