EncFS (Español)

From ArchWiki
Esta traducción de EncFS fue revisada el 2020-08-06. Si existen cambios puede actualizarla o avisar al equipo de traducción.

EncFS es un sistema de archivos criptográfico apilable ejecutado en el espacio de usuario similar a eCryptfs, y tiene como objetivo asegurar los datos con las mínimas complicaciones. Utiliza FUSE para montar un directorio encriptado en otro directorio especificado por el usuario. No utiliza un sistema loopback como algunos otros sistemas comparables como TrueCrypt y dm-crypt.

Definitivamente EncFS es el software más simple si desea probar el cifrado de disco en Linux.

Esto tiene una serie de ventajas y desventajas en comparación con otros sistemas. En primer lugar, no requiere ningún privilegio de root para implementarlo; cualquier usuario puede crear un repositorio de archivos cifrados. En segundo lugar, no necesita crear un único archivo ni un sistema de archivos dentro de ese; funciona en el sistema de archivos existente sin modificaciones.

Sin embargo, esto implica algunas desventajas; debido a que los archivos cifrados no se almacenan en su propio archivo, alguien que tuviere acceso al sistema (a pesar del cifrado) podría ver la estructura de los directorios subyacentes, la cantidad de archivos, sus tamaños y cuándo se modificaron. Sin embargo, no podrían ver los contenidos.

Este método de asegurar los datos en particular, obviamente no es perfecto, pero hay situaciones en las que es útil.

Para obtener más detalles sobre EncFS en comparación con otras soluciones de cifrado de disco, consulte Data-at-rest encryption (Español)#Cuadro comparativo.

Comparación con eCryptFS

ECryptfs se implementa en el espacio del kernel y, por lo tanto, es un poco más difícil de configurar. Con este método se deben recordar varias opciones de cifrado (algoritmo de cifrado usado, tipo de clave, etc.). No es el caso con EncFS, porque este almacena la información de metadatos de cifrado en un archivo de configuración por directorio (.encfs6.xml). Por lo tanto, no tiene que recordar nada (excepto la frase de contraseña).

El rendimiento de ambos depende del tipo de actividad del disco. Si bien eCryptFS puede funcionar más rápido en algunos casos porque hay menos sobrecarga por el contexto en el que opera (entre el kernel y el espacio de usuario). EncFS tiene ventajas en otros aspectos, porque los metadatos de cifrado están centralizados y no almacenados en los encabezados de los archivos individuales. Para obtener más información, el proyecto EncFS proporciona ejemplos de referencia.

Instalación

Instale el paquete encfs.

Advertencia: Una review de seguridad de encfs (febrero de 2014) descubrió una serie de problemas de seguridad en la versión estable 1.7.4 (junio de 2014). Tenga presente este informe y sus referencias para tener información actualizada antes de usar dicha versión.

Utilización

Para crear un repositorio seguro, escriba la orden siguiente:

$ encfs ~/.cifrado ~/original

Tenga en cuenta que se deben utilizar rutas absolutas. Esta orden vendrá seguida por un mensaje preguntándole sobre si desea optar por las opciones predeterminadas o por una configuración experta. La configuración predeterminada es bastante segura. La experta permite especificar algoritmos y otras opciones. Después de ingresar una clave para el cifrado, se creará y montará el sistema de archivos codificado. Los archivos codificados se almacenarán, en este ejemplo, en ~/.cifrado, y sus versiones no cifradas en ~/original.

Sugerencia: El uso de EncFS en un sistema de archivos FUSE, por ejemplo NTFS-3G, puede abocar a un rendimiento lento. En este caso, considere la posibilidad de cambiar el sistema de archivos.

Para desmontar el sistema de archivos, escriba:

$ fusermount -u ~/nombre

Para volver a montar el sistema de archivos, emita la primera orden e ingrese la clave utilizada para codificarlo. Una vez ingresada la clave, el sistema de archivos se volverá a montar.

Cambiar la contraseña

Para cambiar la contraseña de un directorio cifrado por EncFS se puede usar la siguiente orden:

$ encfsctl passwd ~/.nombre

En este ejemplo, ~/.nombre es la ruta al directorio que contiene los archivos codificados. El programa le pedirá su contraseña actual y luego podrá establecer una nueva.

Herramientas para facilitar el montaje

Gnome Encfs Manager

Gnome Encfs Manager es un administrador y montador de encfs fácil de usar, con una configuración predefinida, con soporte para Gnome Keyring, con un menú de bandeja inspirado en Cryptkeeper pero usando la API AppIndicator y otras características propias.

Tiene disponible tanto el paquete gnome-encfs-manager-binAUR como el más actualizado gnome-encfs-manager-bzrAUR.

Montar utilizando gnome-encfs

gnome-encfs integra las carpetas EncFS en el escritorio de GNOME, almacenando sus contraseñas en el depósito de claves y, opcionalmente, montándo dichas carpetas al iniciar sesión utilizando el mecanismo de inicio automático de GNOME. Este método tiene la ventaja de que se puede montar y automatizar, y la contraseña no tiene que ser la misma que su contraseña de usuario.

Montar utilizando el icono CryptKeeper

Aplicación bastante simple, basta instalar cryptkeeperAUR y añadirla a su sesión X.

Montar utilizando encfsui

El script de bash encfsui proporciona una interfaz gráfica de usuario simple diseñada con zenity, creada en torno de la utilidad de línea de órdenes de EncFS, para montar y desmontar un directorio cifrado. Incluye un lanzador de escritorio. Instálelo con encfsuiAUR.

Montar con fstab

Añadir una entrada en /etc/fstab le permitirá montar el volumen encfs con un simple mount /ruta/destino y luego se le pedirá su contraseña.

/etc/fstab
encfs#/ruta/a/datos/encfs  /mnt/decrypted  fuse  noauto,user  0  0

La opción noauto evita el intento de montar el volumen en el arranque, lo que podría retrasar el proceso de arranque mientras el sistema espera que se ingrese una contraseña. Se puede omitir user si se quiere que solo el usuario root pueda montar el volumen.

Montar al iniciar sesión utilizando pam_encfs

Instale pam_encfsAUR. Véase también:

Contraseña única

Advertencia: Tenga en cuenta que si va a usar la misma contraseña (por ejemplo: utilizando el parámetro try_first_pass o use_first_pass) para iniciar tanto sesión como encfs (para que encfs se monten durante su inicio de sesión), entonces debe usar SHA password hashes (preferiblemente SHA512 con gran cantidad de rondas) y (lo que es más importante) contraseña segura, porque el hash de su contraseña probablemente se almacene en forma no cifrada en el archivo /etc/shadow al que un atacante podría acceder con el fin de obtener su contraseña de encfs (porque es la misma que su contraseña de inicio de sesión normal de Unix).

/etc/pam.d/

Tenga en cuenta que cuando utilice el parámetro try_first_pass en pam_unix.so, deberá configurar EncFS para que use la misma contraseña que está utilizando para iniciar sesión (o viceversa) y bastará ingresar una única contraseña. Sin este parámetro, deberá ingresar dos contraseñas.

configurar pam_encfs para todos los métodos de inicio de sesión

Coloque la línea encfs en /etc/pam.d/system-login como sigue:

...
auth       sufficient pam_encfs.so
...
inicio de sesión

En esta sección se explica cómo hacer que encfs se monte automáticamente cuando inicie sesión con un terminal virtual.

Nota: Si solo desea usar encfs a través de GDM, puede saltarse esta sección e ir directamente a la sección GDM.

Edite el archivo /etc/pam.d/login:

#%PAM-1.0

auth		required	pam_securetty.so
auth		requisite	pam_nologin.so
auth		sufficient	pam_encfs.so
auth		required	pam_unix.so nullok try_first_pass
#auth		required	pam_unix.so nullok
auth		required	pam_tally.so onerr=succeed file=/var/log/faillog
# use this to lockout accounts for 10 minutes after 3 failed attempts
#auth		required	pam_tally.so deny=2 unlock_time=600 onerr=succeed file=/var/log/faillog
account		required	pam_access.so
account		required	pam_time.so
account		required	pam_unix.so
#password	required	pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
#password	required	pam_unix.so md5 shadow use_authtok
session		required	pam_unix.so
session		required	pam_env.so
session		required	pam_motd.so
session		required	pam_limits.so
session		optional	pam_mail.so dir=/var/spool/mail standard
session		optional	pam_lastlog.so
session		optional	pam_loginuid.so
-session	optional	pam_ck_connector.so nox11
#Automatic unmount (optional):
#session	required	pam_encfs.so
Advertencia: Tenga en cuenta que el desmontaje automático se procesará incluso cuando exista otra sesión. Por ejemplo: cerrar sesión en la consola virtual puede desmontar encfs montada en una sesión GDM que aún esté activa.
gdm

Esta sección explica cómo hacer que encfs se monte automáticamente al iniciar sesión con GDM (GNOME Display Manager).

Nota: Para propósitos de depuración de errores, puede intentar primero el montaje automático con el inicio de sesión en una consola virtual. Este artículo aborda el montaje automático en el inicio de sesión en una consola virtual.

Edite el archivo /etc/pam.d/gdm-password.

Inserte (no sobrescriba) lo siguiente en la parte inferior de gdm-password:

#%PAM-1.0
auth            requisite       pam_nologin.so
auth            required        pam_env.so
auth            sufficient      pam_encfs.so
auth            required        pam_unix.so try_first_pass
auth            optional        pam_gnome_keyring.so
account         required        pam_unix.so
session         required        pam_limits.so
session         required        pam_unix.so
session         optional        pam_gnome_keyring.so auto_start
password        required        pam_unix.so
session         required        pam_encfs.so

Guarde y salga.

Configuración

Edite /etc/security/pam_encfs.conf:

Recomendado: comente la línea:

encfs_default --idle=1

Este indicador desmontará su carpeta cifrada después de 1 minuto de inactividad. No obstante, si la carpeta se ha montando automáticamente al iniciar sesión, probablemente deseará mantenerla montada durante el tiempo que esté conectado.

En la parte inferior, comente las entradas de demostración existentes y añada:

#USERNAME       SOURCE                                  TARGET PATH                 ENCFS Options           FUSE Options
foo             /home/foo/EncryptedFolder             /home/foo/DecryptedFolder       -v                    allow_other
Nota: No es posible montar múltiples carpetas EncFS al iniciar sesión usando pam_encfs. Si se especifican varias entradas en /etc/security/pam_encfs.conf, solo se montará la primera y el resto se ignorarán. Para montar múltiples carpetas EncFS al iniciar sesión es necesario usar pam_mount. Vea #Montar al iniciar sesión utilizando pam_mount para más detalles.

Además, si ve la línea de abajo, elimine allow_root de las opciones. De lo contrario, entrará en conflicto con allow_other definido anteriormente.

fuse_default allow_root,nonempty

A continuación, edite /etc/fuse.conf y descomente:

user_allow_other

Para probar su configuración, abra una nueva terminal virtual (por ejemplo con Ctrl+Alt+F4) e inicie sesión. Debería comprobar que pam monta con éxito su carpeta EncFS.

Montar al iniciar sesión utilizando pam_mount

Instale y configure pam_mount como se explica en su página wiki. Los montajes de EncFS se pueden especificar en el archivo de configuración de pam_mount de la siguiente manera:

/etc/security/pam_mount.conf.xml
<volume fstype="fuse" path="encfs#/ruta/a/datos/cifrados/con/encfs" mountpoint="/ruta/a/puntodemontaje/de/datos/descifrados" options="nonempty" />

Los montajes de EncFS deben tener la misma contraseña que su cuenta de usuario. La opción nonempty hace posible montar el sistema de archivos cifrados incluso cuando el punto de montaje no está vacío. Puede eliminar esta opción si este no es el comportamiento deseado.

Es posible montar múltiples carpetas EncFS al iniciar sesión especificando múltiples entradas <volume> consecutivas en el archivo de configuración.

Montar cuando se inserta una unidad USB con carpetas EncFS utilizando fsniper

Este es un método simple para montar automáticamente encfs (solicitando contraseña) cuando se inserta una unidad USB con una o más carpetas cifradas con EncFS en su raíz. Usaremos fsniperAUR (sistema de archivos que explora utilizando el demonio inotify) y git (para pedir contraseñas binarias).

Para conocer más, consulte https://github.com/Harvie/Programs/tree/master/bash/encfs/automount (última versión de los archivos utilizados en #Cómo hacerlo).

Cómo hacerlo

1. Necesitará un montaje automático de USB que funcione para esto, como lo hace Thunar o Gnome Files.
2. Cree una carpeta cifrada en su unidad extraible, por ejemplo: encfs /media/USB/somename /media/USB/somename.plain (y ​​luego desmonte todo).
3. Cree un archivo en su unidad local ~/.config/fsniper/config:

watch {
	/etc/ {
		mtab {
			# %% is replaced with the filename of the new file
			handler = encfs-automount.sh %%;
		}
	}
}

4. Instale el script de ayuda:

#!/bin/sh
#	~/.config/fsniper/scripts/encfs-automount.sh
# Quick & dirty script for automounting EncFS USB drives
# TODO:
#  - Unmounting!!!
#
ASKPASS="/usr/lib/git-core/git-gui--askpass"

lock=/tmp/fsniper_encfs.lock
lpid=$(cat "$lock" 2>/dev/null) &&
ps "$lpid" | grep "$lpid" >/dev/null && {
	echo "Another instance of fsniper_encfs is running"
	exit;
}
echo $BASHPID > "$lock";
sleep 2;

echo
echo ==== EncFS automount script for fsniper ====

list_mounts() {
	cat /proc/mounts | cut -d ' ' -f 2
}

list_mounts | while read mount; do
	config="$mount"'/*/.encfs*';
	echo Looking for "$config"
	config="$(echo $config)"
	[ -r "$config" ] && {
		cyphertext="$(dirname "$config")";
		plaintext="$cyphertext".plain
		echo Found config: "$config";
		echo Trying to mount: "$cyphertext to $plaintext";
		list_mounts | grep "$plaintext" >/dev/null && {
			echo Already mounted: "$plaintext"
		} || {
			echo Will mount "$cyphertext to $plaintext"
			"$ASKPASS" "EncFS $cyphertext to $plaintext" | encfs --stdinpass "$cyphertext" "$plaintext"
		}
	}
done
echo

rm "$lock" 2>/dev/null

5. Asegúrese de que /usr/lib/git-core/git-gui--askpass funciona (es por eso que necesita el paquete git, aunque también podría reajustar el script de ayuda).
6. Pruebe fsniper --log-to-stdout en la terminal (la petición de contraseña debe aparecer cuando se inserte la unidad USB).
7. Agregue fsniper --daemon a su sesión.
8. No olvide desmontar encfs antes de quitar la unidad extraible.

Montar utilizando KDE KWallet

Esto se puede hacer en KDE con el script kdeencfs. También deberá instalar los paquetes kdialog, kdebase-runtimeAUR[enlace roto: package not found], qt5-tools y kwallet-pam desde los repositorios oficiales. kwallet-pam tiene que comenzar con la sesión por defecto (si no es así, agregue /usr/lib/pam_kwallet_init al inicio de sesión). El script se puede usar llamandolo con kdeencfs carpeta-cifrada carpeta-descifrada.

Copia de seguridad cifrada

Advertencia: Si se siguen los siguientes ejemplos para separar el archivo de opciones de cifrado de los datos, evidentemente también debe asegurarse de tener una copia de seguridad separada del archivo de opciones en texto sin formato. Si su disco se bloquea y no ha hecho una copia de seguridad del texto sin formato, la copia de seguridad por sí sola no ayudará en nada porque el archivo contiene metadatos criptográficos. Lo bueno es que el archivo es estático, no necesita repetir la copia de seguridad una y otra vez a menos que cambie la contraseña.

Copia de seguridad del directorio cifrado

Se puede hacer una copia de seguridad de un directorio cifrado y restaurarlo en otra ubicación. Esto es posible porque el archivo de configuración con las opciones de cifrado/metadatos se almacena en el propio directorio en texto sin formato en el archivo oculto .encfs6.xml. Esto no compromete la seguridad, porque la contraseña no está en él.

Sin embargo, si, por ejemplo, almacena la copia de seguridad en una ubicación remota (por ejemplo, en la nube) o en un dispositivo portátil, puede sentirse incómodo al respecto. En este caso, tampoco es un problema mover manualmente el archivo oculto fuera del directorio antes de crear la copia de seguridad. Incluso puede moverlo permanentemente y aún montar y acceder a los archivos cifrados, si pasa su ubicación a encfs a través de la variable de entorno ENCFS6_CONFIG. Para el ejemplo anterior dado en #Utilización:

$ mv ~/.nombre/.encfs6.xml ~/.
$ ENCFS6_CONFIG=~/.encfs6.xml encfs ~/.nombre ~/nombre

Copia de seguridad del directorio de texto sin formato

El siguiente ejemplo supone que desea crear una copia de seguridad cifrada del directorio de texto sin formato existente ~/mythesis que contiene el archivo thesis.txt.

Primero, creamos la copia de seguridad cifrada del directorio de texto sin formato existente:

$ encfs --reverse ~/mythesis /tmp/thesisbackup

Tenga en cuenta que en este caso el orden del directorio se invierte respecto al uso normal. El uso de la opción --reverse tiene dos efectos: en primer lugar, el archivo de configuración ahora se almacena en el directorio de texto sin formato y /tmp/thesisbackup solo lo contiene en forma cifrada. En segundo lugar, los archivos en /tmp/thesisbackup no son persistentes. Se eliminarán una vez que se desmonte (no, esto no se debe al uso del punto de montaje en /tmp).

En segundo lugar, ahora es el momento de copiar los archivos cifrados en la ubicación deseada antes de desmontar nuevamente el directorio temporal encfs:

$ cp -R /tmp/thesisbackup/* /mnt/usbstick/
$ fusermount -u /tmp/thesisbackup 

y hecho.

Para restaurar (o ver) la copia de seguridad, necesitamos acceso a las opciones de cifrado en texto sin formato, que debe pasarse a encfs con la variable de entorno ENCFS6_CONFIG (utilizamos un directorio diferente para no estropear el archivo ~/mythesis existente):

$ ENCFS6_CONFIG=~/mythesis/.encfs6.xml encfs ~/mnt/usbstick/thesisbackup ~/restoremythesis

Si ahora lista el contenido restaurado, contendrá dos archivos:

$ ls -la ~/restoremythesis
... 
-rw-r--r--  1 student student    1078  3. Jan 12:33 .encfs6.xml
-rw-r--r--  1 student student      42  3. Jan 12:33 thesis.txt
...

Véase también