Cifrado de carpetas en Ubuntu con ecryptfs

Uno de los mecanismos de seguridad más utilizados como sistema de protección de la confidencialidad de la información es la criptografía.

Este post no pretende dar los conocimientos teóricos de criptografía, sino más bien lo contrario, cómo ponerlos en práctica de una forma sencilla en nuestros equipos.

Nuestro objetivo es crear, dentro de nuestro home, una carpeta Privado que pueda ser cifrada / descifrada en cualquier momento. Para ello haremos uso del paquete ecryptfs.

ecryptfs es un sistema de ficheros cifrado que puede ser apilado en otro sistema de ficheros, como por ejemplo el ext3, sobre el que está instalado nuestro Ubuntu.

Lo primero que haremos será crear la carpeta que vamos a utilizar para contener la información cifrada / descifrada. Para ello, desde un terminal ejecutaremos lo siguiente:

$ mkdir ~/Privado

Y darle permisos para que solo el propietario pueda acceder a ella:

$ chmod 700 ~/Privado

Estos dos pasos también pueden hacerce desde el entorno gráfico.

Luego, instalaremos el paquete ecryptfs:

$ sudo apt-get install ecryptfs-utils

Y montaremos el sistema de fichero en la carpeta anteriormente creada:

$ sudo mount -t ecryptfs ~/Privado ~/Privado

Para el montaje se nos preguntarán distintas opciones:

Passphrase:
Select cipher:
1) aes: blocksize = 16; min keysize = 16; max keysize = 32 (loaded)
2) des3_ede: blocksize = 8; min keysize = 24; max keysize = 24 (not loaded)
3) cast6: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
4) cast5: blocksize = 8; min keysize = 5; max keysize = 16 (not loaded)
Selection [aes]:
Select key bytes:
1) 16
2) 32
3) 24
Selection [16]: 32
Enable plaintext passthrough (y/n) [n]:
Enable filename encryption (y/n) [n]: y
Filename Encryption Key (FNEK) Signature [f833eb8784d1be87]:
Attempting to mount with the following options:
ecryptfs_unlink_sigs
ecryptfs_fnek_sig=f833eb8784d1be87
ecryptfs_key_bytes=32
ecryptfs_cipher=aes
ecryptfs_sig=f833eb8784d1be87
WARNING: Based on the contents of [/root/.ecryptfs/sig-cache.txt],
it looks like you have never mounted with this key
before. This could mean that you have typed your
passphrase wrong.

Would you like to proceed with the mount (yes/no)? : yes
Would you like to append sig [f833eb8784d1be87] to
[/root/.ecryptfs/sig-cache.txt]
in order to avoid this warning in the future (yes/no)? : yes
Successfully appended new sig to user sig cache file
Mounted eCryptfs

De la configuración anterior destacamos la elección de la contraseña para el cifrado así como el método de encriptación y tamaño del bloque. En nuestro caso también hemos optado por ocultar el nombre de los archivos.

A partir de este momento podemos utilizar la carpeta como cualquier otra del equipo.

Cuando hayamos terminado, podremos desmontar la carpeta:

$ sudo umount ~/Privado

La carpeta seguirá existiendo, pero comprobaremos que el contenido está ilegible.

 Para utilizarla de nuevo tan solo tendremos que volver a montarla.

También es posible automatizar el montaje, de forma que nos ahorramos tener que introducir todos los parámetros de configuración cada vez. Para ello haríamos lo siguiente:

$ sudo mount -t ecryptfs ~/Privado ~/Privado -o ecryptfs_sig=f833eb8784d1be87,ecryptfs_fnek_sig=f833eb8784d1be87,ecryptfs_key_bytes=32,ecryptfs_cipher=aes,ecryptfs_unlink_sigs,ecryptfs_passthrough=no

Passphrase: 

Meteremos la clave seleccionada la primera vez y listo.

Eso es todo amigos!