EncFS es un sistema de archivos criptográfico gratuito ( LGPL ) basado en FUSE . Encripta archivos de forma transparente, utilizando un directorio arbitrario como almacenamiento para los archivos encriptados. [4] [5]
En el montaje de un sistema de archivos EncFS intervienen dos directorios: el directorio de origen y el punto de montaje. Cada archivo del punto de montaje tiene un archivo específico en el directorio de origen que le corresponde. El archivo del punto de montaje proporciona una vista sin cifrar del que se encuentra en el directorio de origen. Los nombres de archivo se cifran en el directorio de origen.
Los archivos se cifran utilizando una clave de volumen, que se almacena dentro o fuera del directorio de origen cifrado. [6] Se utiliza una contraseña para descifrar esta clave.
Valient Gough, el desarrollador, declaró EncFS inactivo sin más actualizaciones en su página de Github en mayo de 2024.
EncFS ofrece varias ventajas sobre otro software de cifrado de disco simplemente porque cada archivo se almacena individualmente como un archivo cifrado en otra parte del árbol de directorios del host.
EncFS está disponible en múltiples plataformas, mientras que eCryptfs está vinculado al kernel de Linux .
EncFS implementa la detección de bitrot sobre cualquier sistema de archivos subyacente
EncFS no tiene " volúmenes " que ocupen un tamaño fijo: los directorios cifrados crecen y se reducen a medida que se agregan o eliminan más archivos del punto de montaje.
El directorio cifrado de EncFS se puede ubicar en un servidor de archivos normal (a través de NFS , SSHFS , etc.) y se puede reflejar y respaldar de manera eficiente con herramientas normales del sistema de archivos, como Rsync.
Es posible que algunos directorios en el punto de montaje existan en diferentes dispositivos físicos, si un sistema de archivos está montado sobre uno de los subdirectorios en el directorio de origen.
Las utilidades de copia de seguridad solo pueden realizar copias de seguridad de los archivos que han cambiado en el directorio de origen (sincronización de archivos, almacenamiento en la nube)
La corrupción de datos es más aislada. La corrupción de datos de archivos es local en un solo archivo y la corrupción de datos del sistema de archivos se puede corregir con una utilidad de reparación del sistema de archivos confiable como fsck . Algunos sistemas de cifrado de disco completo carecen de uno o ambos de estos atributos.
Dado que las modificaciones de los archivos se reflejan en el sistema de archivos subyacente, el sistema operativo aún puede realizar diversas optimizaciones, a diferencia del cifrado de disco completo. Por ejemplo, pasar información sobre el espacio liberado ( TRIM ) puede mejorar el rendimiento de las unidades SSD . Pero esto también es posible con dm-crypt .
Se puede acceder a los archivos de forma aleatoria. Por ejemplo, se puede saltar a la mitad de un vídeo cifrado muy largo sin tener que descifrar todo el archivo.
El uso de EncFS presenta algunas desventajas.
Los directorios EncFS montados comparten las mismas características y restricciones que el sistema de archivos que contiene el directorio de origen.
Debido al cifrado, los nombres de archivo de los archivos cifrados producidos por EncFS son más largos que los nombres de archivo originales. Por lo tanto, los nombres de archivo cuya longitud se acerca al máximo admitido por el sistema de archivos no pueden ser almacenados por EncFS, ya que superarán el límite de longitud después del cifrado. La mayoría de los sistemas de archivos limitan los nombres de archivo a 255 bytes; en ese caso, EncFS solo admite nombres de archivo de hasta 190 bytes. [7] [8]
Cualquier persona que tenga acceso al directorio de origen puede ver cuántos archivos hay en el sistema de archivos cifrados, qué permisos tienen, su tamaño aproximado y la última vez que se accedió a ellos o se modificaron, aunque los nombres y los datos de los archivos estén cifrados. [9]
En febrero de 2014 se realizó una auditoría de seguridad pagada que reveló varias vulnerabilidades potenciales y concluyó: [10]
EncFS es probablemente seguro siempre que el adversario solo obtenga una copia del texto cifrado y nada más. EncFS no es seguro si el adversario tiene la oportunidad de ver dos o más instantáneas del texto cifrado en diferentes momentos. EncFS intenta proteger los archivos de modificaciones maliciosas, pero existen serios problemas con esta función.
El anuncio de EncFS 1.8 incluyó varios cambios de diseño subyacentes, reconociendo las preocupaciones de seguridad planteadas en la auditoría anterior. Sin embargo, aún persisten ciertas preocupaciones con respecto a esas vulnerabilidades. [11]
Al crear un nuevo volumen EncFS, hay varias opciones diferentes disponibles para personalizar el sistema de archivos y adaptarlo a diversas necesidades.
EncFS utiliza cualquier cifrado que pueda encontrar en las distintas bibliotecas de cifrado del sistema. Blowfish y AES suelen estar disponibles.
La longitud de la clave de cifrado (keySize) se puede seleccionar para cifrados que admiten longitudes de clave variables.
Cada archivo se cifra en bloques y esta opción controla el tamaño de esos bloques. Cada vez que se lee un solo byte, se debe descifrar todo el bloque que lo contiene. Asimismo, para cada escritura, el bloque debe descifrarse, modificarse y volver a cifrarse.
El tamaño de bloque predeterminado de 1024 es suficiente para la mayoría de los propósitos.
Los nombres de archivo en el directorio de origen pueden ser simples o estar cifrados en modo de bloque o de flujo. El modo de bloque oculta un poco la longitud del nombre de archivo, mientras que el modo de flujo los mantiene lo más cortos posible, lo que puede ahorrar espacio en el sistema de archivos del directorio de origen según cómo administre dicho sistema de archivos el árbol de directorios.
Cuando está habilitado, el vector de inicialización para el cifrado de nombre de archivo se deriva de los directorios principales del archivo, lo que provoca que dos archivos con el mismo nombre (pero en directorios diferentes) tengan nombres de archivo cifrados diferentes.
Si se cambia el nombre de un directorio, será necesario volver a cifrar los nombres de archivo de todos los archivos y directorios que contiene, lo que puede resultar una operación costosa. Esta opción debe desactivarse si se cambiarán los nombres de los directorios con una gran cantidad de usuarios con frecuencia.
Cuando está habilitada, cada archivo se cifra con un vector de inicialización aleatorio de 8 bytes, que se almacena dentro del archivo cifrado en el directorio de origen. Si esta opción está deshabilitada, cada archivo se cifra con el mismo vector de inicialización, lo que puede hacer que la clave de volumen sea más fácil de descifrar.
Habilitar esta opción hace que el sistema de archivos sea más seguro a costa de 8 bytes adicionales por archivo.
Hace que el vector de inicialización de datos del archivo se derive de la cadena de vectores de inicialización del nombre del archivo. Los mismos datos se cifrarán de forma diferente según el nombre de archivo o directorio.
En consecuencia, para cambiar el nombre de un archivo cuando este modo está habilitado es necesario que el vector de inicialización aleatorio del archivo se compense con el cambio en la cadena de vectores de inicialización del nombre del archivo o que se vuelvan a codificar los datos. Los autores de EncFS han elegido la primera opción porque es considerablemente más rápida, especialmente para archivos grandes.
Hace que la codificación dependa de la ruta completa. Por lo tanto, cambiar el nombre o mover significa volver a codificar. No se admiten enlaces físicos.
Almacena una suma de comprobación con cada bloque cifrado, lo que hace que EncFS detecte la corrupción o modificación de los archivos cifrados. La suma de comprobación (blockMACBytes) es de 8 bytes y, opcionalmente, se pueden agregar hasta 8 bytes adicionales de datos aleatorios (blockMACRandBytes) a cada bloque para evitar que dos bloques con los mismos datos sin cifrar tengan la misma suma de comprobación. Esta opción genera una gran cantidad de sobrecarga de CPU , ya que la suma de comprobación de cada bloque debe calcularse cuando se leen los datos (para verificar la integridad) o se escriben (para actualizar la suma de comprobación).
Los nombres de archivo largos pueden superar los límites del sistema de archivos después del cifrado y la codificación.
Si su sistema de archivos subyacente lo limita a N caracteres en un nombre de archivo, entonces EncFS lo limitará a aproximadamente 3*(N-2)/4. Por ejemplo, si el sistema de archivos del host lo limita a 256 caracteres, entonces EncFS se limitará a nombres de archivo de 190 caracteres. Esto se debe a que los nombres de archivo cifrados siempre son más largos que los nombres de archivo de texto simple.