Inicio cifrado de eCryptfs - explicación

9

Estoy tratando de entender cómo funciona ecryptfs internamente y la documentación en ecryptfs.org no ayuda. Tal vez alguien pueda explicar cómo funciona realmente. Por supuesto, soy consciente de estas estructuras de directorio ocultas .Private / .ecryptfs. Mis preguntas son más detalladas:

  • ¿Cómo sabe el sistema que mi casa está encriptada y la desencripta cuando inicio sesión?
  • ¿Cómo busca directorios clave? Estos directorios generalmente se colocan en /home/.ecryptfs/ y se vinculan a inicio. ¿Qué ubicación es la clave? ¿Están los nombres de directorio ".ecryptfs" y ".Private" reservados y codificados o configurables?
  • Acerca del llavero: suponiendo que tengo varias claves en mi llavero, ¿cómo coincide la clave adecuada con cierto directorio cifrado?
Ardabro
fuente

Respuestas:

11

Esto describe la configuración de inicio encriptada estándar. Si desea utilizar diferentes frases de contraseña o carpetas, algoritmo de cifrado, tamaño de clave, etc., puede usarlo mount.ecryptfsdirectamente.

Cuando crea un usuario con un hogar encriptado, o lo usa ecryptfs-migrate-homeen un usuario existente, usa eCryptfs y configura un directorio que /home/.ecryptfs/contiene carpetas con el "hogar real" del nuevo usuario, que /home/.ecryptfs/user/contiene:

  • sus archivos cifrados reales /home/.ecryptfs/user/.Private/y el directorio de configuración de eCryptfs que /home/.ecryptfs/user/.ecryptfs/contiene:

    • auto-mount : si existe, le indica ecryptfs-mount-privateque se ejecute al iniciar sesión, montando la carpeta privada (inicio). Verman ecryptfs-mount-private

    • auto-umount : si existe, le indica ecryptfs-umount-privateque se ejecute al cerrar sesión, desmontando la carpeta privada (inicio). Verman ecryptfs-umount-private

    • Private.mnt : un archivo de configuración leído mount.ecryptfs_privateal iniciar sesión que define dónde se debe montar el directorio cifrado. Si ha encriptado su directorio de inicio, esto será $HOME.
    • Private.sig : contiene la firma de la frase de contraseña del punto de montaje. Proporciona un mecanismo seguro para que eCryptfs determine si está utilizando la clave correcta o no. (Ver Q sobre Private.sig y Private.mnt )
    • frase de contraseña envuelta: la frase de contraseña de eCryptfs real (aleatoria), cifrada ("envuelta") con su frase de contraseña de inicio de sesión

El directorio principal regular en /home/user/sólo contiene enlaces a /home/.ecryptfs/user/.ecryptfsy /home/.ecryptfs/user/.Privatey dos enlaces más a un archivo de ayuda y /usr/share/ecryptfs-utils/ecryptfs-mount-private.desktop(sólo se ejecuta ecryptfs-mount-private).

eCryptfs conjuntos de hasta PAM (ver archivos en /etc/pam.d/) para buscar automáticamente carpetas personales cifrados en /home/.ecryptfs/y montaje y umount cifrado carpetas de inicio de sesión / cierre de sesión, dependiendo de si o no el auto-mounty auto-umountarchivos existen. Consulte el código fuente de eCryptfs y los scripts preinst y postrm del paquete .deb (vinculados anteriormente) para obtener más detalles, y este clip de man ecryptfs-setup-private:

[E] l módulo pam_ecryptfs.so a la pila PAM que utilizará automáticamente la contraseña de inicio de sesión para desenvolver la frase de contraseña de montaje, agregar la frase de contraseña al llavero del núcleo del usuario y realizar el montaje automáticamente. Ver pam_ecryptfs (8).

  • Esta página de ayuda de Ubuntu tiene instrucciones sobre cómo " montar automáticamente un sistema de archivos cifrado ecryptfs en el arranque ... usando un /root/.ecryptfsrcarchivo que contiene opciones de montaje, junto con un archivo de frase de contraseña que reside en una llave USB " .

Una vez desenvueltas, las claves se almacenan en el conjunto de claves del kernel del usuario, puede echarle un vistazo keyctl show, ya que si utilizara el conjunto de claves raíz ( sudo keyctl show), un administrador podría encontrar la frase de contraseña. Puede usar ecryptfs-unwrap-passphrasepara ver la frase de contraseña ecryptfs real. eCryptfs descifra sus archivos usando la firma clave correspondiente (opciones ecryptfs ecryptfs_sig=(fekek_sig)y ecryptfs_fnek_sig) en el archivo Private.sig.


Más información

Ubuntu tiene buenos archivos de ayuda como archivos cifrados en su página de inicio y eCryptfs en la guía del servidor Ubuntu .

Arch Linux tiene una ayuda generalmente excelente, consulte https://wiki.archlinux.org/index.php/System_Encryption_with_eCryptfs

Y vea las manpáginas para ecryptfs(en línea allí o en su sistema) y todas sus herramientas, especialmente ecryptfs-setup-private.

Puede agregar un nuevo usuario con un hogar encriptado usando adduser --encrypt-home(Para obtener más información, consulte la opción -b de ecryptfs-setup-private) y ver cómo se configuran los archivos usted mismo. Y para realmente mojarse los pies con todos los detalles que probablemente nunca quisiste saber, mira el código fuente :

Xen2050
fuente
En / etc / crypttab solo tengo una fila para cryptswap; nada especial en fstab también. Mi casa está encriptada. Todavía no tengo idea de cómo sabe el sistema que mi casa está encriptada y que algo especial es necesario al iniciar sesión.
ardabro
Creo que se hace automáticamente cuando la casa se mira en @login. ¿Leíste la ayuda de Archlinux, nada en ningún lugar fue útil? Pero por favor defina "algo especial", ni yo ni "profesor google" estamos familiarizados con él. ¿Abreviatura de "algo especial"? ¿Como que?
Xen2050
algo especial es tomar la clave y montar el directorio encriptado que es una ruta adicional en el proceso de inicio de sesión. Arch wiki fue muy útil. Además hice una investigación en el código fuente de ecryptfs. Pero todavía no sé dónde está la instrucción clave "if" en el proceso de inicio de sesión y qué comprueba exactamente.
ardabro
Eso suena un poco más a cómo Linux encontraría y usaría cualquier carpeta de inicio, creo que alguna información se almacena en /etc/passwd(inicio y shell al menos), ¿se ve diferente para un usuario doméstico cifrado? También agregaré un poco de información sobre el llavero del núcleo a mi respuesta, ecryptfs aparentemente guarda las claves allí
Xen2050
1
Lo siento, me perdí la actualización. Gran explicación ¡Muchas gracias!
ardabro