ECryptfs
eCryptfs es un sistema de archivos criptográficos en capas compatible con POSIX en el kernel de Linux (introducido en la versión 2.6.19 del kernel).
Información general
La diferencia entre eCryptfs y la mayoría de los demás sistemas de archivos criptográficos es que todos los metadatos criptográficos se almacenan dentro del archivo encriptado. Esto permite que dichos archivos se muevan a través de canales confiables y al mismo tiempo permite que las personas autorizadas accedan al contenido de los archivos.
eCryptfs se implementa como un módulo del kernel de Linux, complementado con varias utilidades para trabajar con claves. Este módulo encripta el contenido de los archivos utilizando la API criptográfica del kernel. El módulo de almacenamiento de claves extrae información de los encabezados de archivos individuales y envía estos datos a la aplicación de cifrado. En función de la información recibida, se determinan las reglas de cifrado, según las cuales se toma una decisión sobre acciones adicionales (por ejemplo, solicitar al usuario que ingrese una contraseña o descifrar la clave de sesión usando la clave privada).
Características arquitectónicas
eCryptfs se basa en el formato de archivo OpenPGP descrito en RFC2440 [1] . Al mismo tiempo, para preservar la posibilidad de acceso aleatorio a los datos de un archivo, los desarrolladores se desviaron del estándar. De acuerdo con el formato OpenPGP, las operaciones de cifrado y descifrado deben realizarse en todo el contenido del archivo. Esto lleva al hecho de que no se puede leer un solo byte del archivo hasta que se descifra por completo. Para sortear este problema sin comprometer la seguridad del sistema, eCryptfs divide los datos en extensiones . De forma predeterminada, estos fragmentos tienen el tamaño de página del sistema de archivos (establecido en el núcleo, normalmente 4096 bytes ). Para leer datos de una pieza, se debe descifrar por completo y para escribir datos en un bloque, se debe cifrar todo el bloque.
Cada bloque tiene su propio vector de inicialización único. Varios vectores de inicialización se almacenan en un bloque que precede a varios bloques de datos posteriores. Cuando se escriben datos en un bloque, el vector de inicialización correspondiente en el bloque de dichos vectores se actualiza y sobrescribe antes de que se cifre el bloque. Los bloques se cifran con un cifrado de bloque elegido en función de las reglas correspondientes al archivo dado en el modo de concatenación de bloques de texto cifrado .
Implementar el cifrado a nivel del sistema de archivos y almacenar datos criptográficos junto con los propios archivos tiene ciertas ventajas:
- Las claves de cifrado se pueden adjuntar a archivos individuales en lugar de a un directorio o sistema de archivos como un todo.
- Las utilidades de copia de seguridad incremental pueden funcionar correctamente en archivos sin acceso a su contenido descifrado.
- Aumento de la productividad. En la mayoría de los casos, solo es necesario cifrar determinados archivos. Entonces, por ejemplo, las bibliotecas y los archivos ejecutables, por regla general, no necesitan cifrarse.
- Los archivos se pueden transferir libremente de un dispositivo a otro sin ninguna conversión.
Estructura de encabezado
Cada inodo de eCryptfs corresponde a un inodo del sistema de archivos subyacente y contiene un contexto criptográfico asociado. Este contexto incluye:
- Clave de cifrado de sesión
- Indicador: ¿el archivo está cifrado o no?
- Firmas de los tokens de autenticación asociados con este archivo
- Tamaños de extensión
eCryptfs puede almacenar en caché el contexto criptográfico de cada archivo para acelerar el sistema.
Trabajar con contraseñas
Para evitar ataques de diccionario a las contraseñas, eCryptfs "salta" las contraseñas de autenticación: la contraseña se concatena con una cadena "salt", luego la cadena concatenada se codifica iterativamente (65537 veces de forma predeterminada) para generar una firma de autenticación correspondiente a la contraseña.
Trabajando con teclas
eCryptfs funciona de la forma más transparente posible para todas las aplicaciones que funcionan con archivos cifrados. En la mayoría de los casos en los que el host no puede aplicar completamente el control de acceso, el hecho de que el archivo esté cifrado no debería ser un problema para el usuario. El cifrado, por definición, debe garantizar la integridad y confidencialidad de la información, y el sistema resuelve estos problemas mediante el uso de datos de autenticación del usuario para generar claves y acceder al contenido.
Teclas de sesión
Cada archivo recibe una clave de sesión generada aleatoriamente, que se utiliza para cifrar el contenido del archivo. eCryptfs almacena esta clave de sesión en los metadatos criptográficos del archivo. Estos, a su vez, son almacenados por el usuario respectivo. Cuando una aplicación cierra un archivo recién creado, eCryptfs encripta la clave de sesión exactamente una vez para cada token de autenticación asociado con ese archivo, de acuerdo con las reglas de encriptación. Estas claves de sesión cifradas se escriben luego en los encabezados de los archivos correspondientes. Cuando la aplicación abre más tarde el archivo cifrado, eCryptfs lee las claves de sesión cifradas y las extrae del contexto criptográfico del archivo. Luego, el sistema analiza los tokens de autenticación del usuario, tratando de hacer coincidir las claves de sesión cifradas. La primera clave encontrada se utiliza para descifrar la clave de sesión. En el caso de que ningún token sea adecuado para el descifrado, el sistema actúa de acuerdo con la política de trabajo. La siguiente acción puede ser, por ejemplo, una solicitud al módulo PKI o una solicitud de contraseña.
Algoritmos de cifrado utilizados
Los siguientes algoritmos de cifrado simétrico [2] se utilizan para el cifrado :
- AES con un tamaño de bloque de 16; tamaño de clave en bytes - 16, 32
- Pez globo con tamaño de bloque 8; tamaño de clave en bytes - 16, 56
- DES3_EDE con tamaño de bloque 8; tamaño de clave en bytes - 24
- Twofish con un tamaño de bloque de 16; tamaño de clave en bytes - 16, 32
- CAST6 con tamaño de bloque 16; tamaño de clave en bytes - 16, 32
- CAST5 con tamaño de bloque 8; tamaño de clave en bytes - 5, 16
Utilidades adicionales
eCryptfs tiene varias herramientas integradas para facilitar el trabajo con el sistema.
Complementos de autenticación
El módulo de autenticación conectable (PAM ) proporciona un mecanismo para ayudar al administrador a determinar cómo se autenticarán los usuarios finales. PAM obtiene la contraseña del usuario y la almacena en los datos del usuario. La contraseña se almacena como un token de autenticación sin sal. La ventaja de este sistema es la flexibilidad. Por lo tanto, la autenticación de contraseña se puede reemplazar fácilmente con la autenticación de llave USB.
Interfaz PKI
eCryptfs proporciona una PKI personalizable (infraestructura de clave pública). El módulo PKI acepta claves y datos como entrada y devuelve datos cifrados o descifrados.
Seguridad del sistema
En 2014, el sitio DefuseSec auditó [3] eCryptfs (casi simultáneamente con la auditoría del sistema EncFS). Según sus resultados, el sistema eCryptfs actualmente es seguro de usar. Sin embargo, necesita más investigación de seguridad ya que no fue desarrollado por un criptógrafo.
Véase también
Notas
- ↑ Donnerhacke, Lutz, Callas, Jon. Formato de mensaje OpenPGP . herramientas.ietf.org. Fecha de acceso: 30 de octubre de 2015. Archivado desde el original el 16 de noviembre de 2015.
- ↑ Algoritmos de cifrado en ECryptfs . Consultado el 19 de septiembre de 2018. Archivado desde el original el 19 de septiembre de 2018.
- ↑ Auditoría de seguridad de eCryptfs . defuse.ca. Fecha de acceso: 30 de octubre de 2015. Archivado desde el original el 17 de noviembre de 2015.
Enlaces
- sitio oficial de eCryptfs
- Halcrow, Michael Austin: " eCryptfs: un sistema de archivos cifrados de clase empresarial para Linux " (PDF) Proc. Simposio Linux