eCryptFS: comment monter une sauvegarde d'un répertoire personnel chiffré?

10

J'utilise eCryptFS pour crypter le répertoire personnel de mon ordinateur portable. Mon script de sauvegarde copie les fichiers cryptés sur un serveur (avec tout le reste (home/.ecryptfs).

Comment puis-je monter les fichiers cryptés de la sauvegarde? Je voudrais vérifier que je peux le faire et que tout est en place.

Mon essai naïf avec

mount -t ecryptfs /backup/home/.ecryptfs/boldewyn /mnt/test

n'a pas fonctionné, eCryptFS a voulu créer une nouvelle partition.

Boldewyn
la source

Réponses:

15

En supposant que vous utilisez le schéma de cryptage standard d'Ubuntu, sans modifications supplémentaires.

Le "dossier" $ HOME / .ecryptfs n'est en fait qu'un lien.

Le véritable endroit où vos fichiers restent est /home/.ecryptfs/$USER

Il y a deux dossiers, .Private (avec vos fichiers cryptés) et .ecryptfs, avec des fichiers comme auto-mount, auto-umount, Private.mnt, Private.sig, wrapped-passphrase.

Espérons que les fichiers cibles soient copiés dans la sauvegarde de votre hôte.

S'il n'y a pas de sauvegarde de votre mot de passe enveloppé dans ce serveur, vous êtes perdu. S'il existe une sauvegarde, votre schéma de chiffrement a été affaibli en stockant votre phrase secrète encapsulée sur le Web, sauf si vous contrôlez l'hôte sur lequel vous effectuez la sauvegarde.

J'ai trouvé ce script pour le montage:

ROOT = / home / .ecryptfs / $ USER
CIBLE = / mnt / $ USER

# ROOT doit être le parent des dossiers .ecryptfs et .Private

sudo mkdir -p $ TARGET
cd $ ROOT

echo Tapez votre mot de passe:
PASS = $ (ecryptfs-unwrap-passphrase .ecryptfs / wrapped-passphrase | sed s / Passphrase: \ //)
SIG1 = $ (head -n1 .ecryptfs / Private.sig)
SIG2 = $ (tail -n1 .ecryptfs / Private.sig)

phrase de passe d'écho:
echo $ PASS
Signatures d'écho:
echo $ SIG1
echo $ SIG2

echo Doit être vide:
sudo keyctl clear @u
sudo keyctl list @u

echo Ne saisissez rien:
echo $ PASS | sudo ecryptfs-add-passphrase --fnek

l'écho devrait avoir des signatures:
sudo keyctl list @u

echo Montage de $ ROOT sur $ TARGET ...
sudo mount -t ecryptfs -o key = passphrase, ecryptfs_cipher = aes, ecryptfs_key_bytes = 16, ecryptfs_passthrough = no, ecryptfs_enable_filename_crypto = yes, ecryptfs_sig = $ SIG1, ecryptfs_fnek_sig = $ SIG2, echo $ passG $

ls $ TARGET

unset -v PASS
user39559
la source
Ah, le déballage de la phrase secrète était l'astuce! Je vous remercie!
Boldewyn
1
Bon que ça marche. Quoi qu'il en soit, la conservation de votre phrase secrète enveloppée sur le serveur affaiblira, et parfois détruira, votre sécurité de chiffrement.
user39559
3
Lien vers le script d'origine ( fil complet ).
kenorb
Je vous remercie! Je suis surpris qu'il n'y ait pas de commande standard pour faire ce genre de chose. Si vous utilisez EncryptedPrivateDirectory pour crypter uniquement votre $HOME/Privatepoint de montage, utilisez-le simplement ROOT=$HOMEdans le script. J'ai changé le script pour ROOT=${ROOT:-/home/.ecryptfs/$USER}que je puisse simplement passer cette valeur via l'environnement.
nealmcb
Ahh - Je vois que le commentaire de @ kenorb renvoie à un rapport de bogue avec des détails sur les raisons pour lesquelles l'approche normale consistant à se monter lui-même demande la phrase secrète via sudo mount -t ecryptfs .Private /mnt/privatene fonctionne pas dans Ubuntu. Hmm - bug de 6 ans ....
nealmcb