ECryptfs

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 7 de julio de 2018; las comprobaciones requieren 4 ediciones .

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:

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:

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

  1. 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.
  2. Algoritmos de cifrado en ECryptfs . Consultado el 19 de septiembre de 2018. Archivado desde el original el 19 de septiembre de 2018.
  3. 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