eCryptfs home crypté - explication

9

J'essaie de comprendre comment ecryptfs fonctionne en interne et la documentation sur ecryptfs.org n'aide pas. Peut-être que quelqu'un peut expliquer comment cela fonctionne vraiment. Bien sûr, je connais ces structures de répertoires cachés .Private / .ecryptfs. Mes questions sont plus détaillées:

  • Comment le système sait-il que ma maison est chiffrée et la déchiffre-t-elle lorsque je me connecte?
  • Comment recherche-t-il les répertoires clés (ceux contenant des données chiffrées, leur point de montage (parfois c'est la maison, parfois / home / Private), le répertoire avec une phrase de passe enveloppée, etc.). Ces répertoires sont généralement placés dans /home/.ecryptfs/ et liés à la maison. Quel emplacement est la clé? Les noms de répertoires ".ecryptfs" et ".Private" sont-ils réservés et codés en dur ou configurables?
  • À propos du trousseau de clés: en supposant que j'ai plusieurs clés dans mon trousseau de clés - comment correspond-il à la bonne clé avec certains répertoires cryptés?
ardabro
la source

Réponses:

11

Ceci décrit la configuration de la maison cryptée standard. Si vous souhaitez utiliser différents mots de passe ou dossiers, algorithme de chiffrement, taille de clé, etc., vous pouvez les utiliser mount.ecryptfsdirectement.

Lorsque vous créez un utilisateur avec une maison chiffrée, ou utilisez ecryptfs-migrate-homesur un utilisateur existant, il utilise eCryptfs et configure un répertoire /home/.ecryptfs/contenant des dossiers avec la "vraie maison" du nouvel utilisateur, /home/.ecryptfs/user/contenant:

  • vos fichiers cryptés réels /home/.ecryptfs/user/.Private/et le répertoire de configuration eCryptfs /home/.ecryptfs/user/.ecryptfs/contenant:

    • auto-mount - s'il existe, il indique ecryptfs-mount-privatede s'exécuter à la connexion, en montant le dossier privé (home). Voirman ecryptfs-mount-private

    • auto-umount - s'il existe, il indique ecryptfs-umount-privatede s'exécuter à la déconnexion, en démontant le dossier privé (home). Voirman ecryptfs-umount-private

    • Private.mnt - un fichier de configuration lu par mount.ecryptfs_privatelors de la connexion qui définit où votre répertoire chiffré doit être monté. Si vous avez chiffré votre répertoire personnel, ce sera le cas $HOME.
    • Private.sig - contient la signature de la phrase secrète du point de montage. Il fournit un mécanisme sûr et sécurisé pour eCryptfs pour déterminer si vous utilisez la bonne clé ou non. (Voir Q sur Private.sig et Private.mnt )
    • phrase de passe enveloppée - la phrase de passe eCryptfs réelle (aléatoire), chiffrée ("enveloppée") avec votre phrase de passe de connexion

Le répertoire de base normal sur /home/user/contient uniquement des liens vers /home/.ecryptfs/user/.ecryptfset /home/.ecryptfs/user/.Privateet deux autres liens vers un fichier d'aide & /usr/share/ecryptfs-utils/ecryptfs-mount-private.desktop(s'exécute simplement ecryptfs-mount-private).

eCryptfs configure PAM (voir les fichiers dans /etc/pam.d/) pour rechercher automatiquement les dossiers de départ chiffrés dans /home/.ecryptfs/et monter et démonter les dossiers de départ chiffrés lors de la connexion / déconnexion, selon que les fichiers auto-mountet auto-umountexistent ou non . Voir le code source eCryptfs et les scripts preinst et postrm du package .deb (liés ci-dessus) pour plus de détails, et ce clip de man ecryptfs-setup-private:

[L] e module pam_ecryptfs.so de la pile PAM qui utilisera automatiquement la phrase de passe de connexion pour déballer la phrase de passe du montage, ajouter la phrase de passe au trousseau de clés du noyau de l'utilisateur et effectuer automatiquement le montage. Voir pam_ecryptfs (8).

  • Cette page d'aide d'Ubuntu contient des instructions sur la façon de " monter automatiquement un système de fichiers crypté ecryptfs au démarrage ... en utilisant un /root/.ecryptfsrcfichier contenant des options de montage, ainsi qu'un fichier de phrase secrète résidant sur une clé USB. "

Une fois déballées, les clés sont stockées dans votre trousseau de clés du noyau utilisateur, vous pouvez y jeter un œil keyctl show, car s'il utilisait le trousseau racine ( sudo keyctl show), un administrateur pourrait trouver la phrase secrète. Vous pouvez utiliser ecryptfs-unwrap-passphrasepour voir la phrase secrète ecryptfs réelle. eCryptfs décrypte vos fichiers en utilisant la signature de clé correspondante (options ecryptfs ecryptfs_sig=(fekek_sig)et ecryptfs_fnek_sig) dans le fichier Private.sig.


Plus d'informations

Ubuntu a de bons fichiers d'aide comme les fichiers cryptés dans votre maison et eCryptfs dans le guide du serveur Ubuntu .

Arch Linux a une aide généralement excellente, voir https://wiki.archlinux.org/index.php/System_Encryption_with_eCryptfs

Et consultez les manpages pour ecryptfs(en ligne là-bas ou sur votre système) et tous ses outils, en particulier ecryptfs-setup-private.

Vous pouvez ajouter un nouvel utilisateur avec une maison cryptée à l'aide de adduser --encrypt-home(Pour plus d'informations, reportez-vous à l'option -b de ecryptfs-setup-private) et regardez comment les fichiers sont configurés pour vous-même. Et pour vraiment vous mouiller les pieds avec tous les détails que vous n'avez probablement jamais voulu savoir, consultez le code source :

Xen2050
la source
Dans / etc / crypttab, je n'ai qu'une seule ligne pour cryptswap; rien de spécial dans fstab également. Ma maison est cryptée. Je ne sais toujours pas comment le système sait que ma maison est cryptée et que quelque chose de spécial est nécessaire à la connexion.
ardabro
Je pense que cela se fait automatiquement lorsque la maison est consultée sur @login. Avez-vous lu l'aide d'Archlinux, rien là-dedans n'a été utile? Mais s'il vous plaît définir "qch spécial", moi ni "professeur google" ne le connaissons. Abréviation de "quelque chose de spécial"? Comme ça?
Xen2050
sth spécial est de prendre la clé et de monter le répertoire crypté qui est un chemin supplémentaire dans le processus de connexion. Arch wiki était très utile. De plus, j'ai fait quelques recherches sur le code source ecryptfs. Mais je ne sais toujours pas où se trouve l'instruction clé "si" dans le processus de connexion et qu'est-ce qu'elle vérifie exactement.
ardabro
Cela ressemble un peu plus à la façon dont Linux trouverait et utiliserait n'importe quel dossier personnel, je pense que certaines informations sont stockées dans /etc/passwd(home & shell au moins), cela semble-t-il différent pour un utilisateur domestique crypté? J'ajouterai un peu d'informations sur le trousseau de clés du noyau à ma réponse, ecryptfs y stocke des clés apparemment
Xen2050
1
Désolé, j'ai raté la mise à jour. Grande explication. Merci beaucoup!
ardabro