Wie kann man nach einem fehlgeschlagenen Upgrade mit einem Kennwort verschlüsselte Ecryptfs-Daten wiederherstellen?

Wie kann man nach einem fehlgeschlagenen Upgrade mit einem Kennwort verschlüsselte Ecryptfs-Daten wiederherstellen?

Ich habe vor Kurzem den Sprung gewagt und das Upgrade von 14.04 auf 16.04 akzeptiert. Ich habe den Computer verlassen, während er Pakete installierte. Als ich zurückkam, hatte ich einen schwarzen Bildschirm, auf dem nur ein einziger Cursor blinkte.

Nach dem Zurücksetzen kam ich zu dem Schluss, dass eskaputtes lohnt sich nicht mehr, es zu reparieren.

Wie kann ich verschlüsselte Daten wiederherstellen?

Antwort1

Wie habe ich das Problem behoben:

Ich habe das Ubuntu-Installationsprogramm gestartet und meine Root-Partition gelöscht. Die neue Neuinstallation fühlt sich viel gesünder an als die alte und ist daher wahrscheinlich sowieso notwendig.

Beim ersten Login erhielt ich eine Erinnerung, meinen ecryptfs-Schlüssel an einem sicheren Ort zu speichern -Ich kann mich nicht erinnern, dies bei meiner vorherigen Installation getan zu haben.

Als ich mein Home-Ordner-Array zusammenstellte, fand ich, was ich für meine verschlüsselten Daten hielt:

root@computer:~/mnt/user# ls -la
total 8
dr-x------ 2 user user 4096 jul  2  2011 .
drwxr-xr-x 8 root    root    4096 feb 18  2015 ..
lrwxrwxrwx 1 user user   56 jul  2  2011 Access-Your-Private-Data.desktop -> /usr/share/ecryptfs-utils/ecryptfs-mount-private.desktop
lrwxrwxrwx 1 user user   33 jul  2  2011 .ecryptfs -> /home/.ecryptfs/user/.ecryptfs
lrwxrwxrwx 1 user user   32 jul  2  2011 .Private -> /home/.ecryptfs/user/.Private
lrwxrwxrwx 1 user user   52 jul  2  2011 README.txt -> /usr/share/ecryptfs-utils/ecryptfs-mount-private.txt

Aber ich konnte es nicht entsperren.

root@computer:~# ecryptfs-unwrap-passphrase /root/mnt/user/.ecryptfs/wrapped
Passphrase:
ffffffffffffffffffffffffffffffff
root@computer:~# ecryptfs-recover-private /root/mnt/user
INFO: Found [/root/mnt/user].
Try to recover this directory? [Y/n]:
INFO: Could not find your wrapped passphrase file.
INFO: To recover this directory, you MUST have your original MOUNT passphras
INFO: When you first setup your encrypted private directory, you were told t
INFO: your MOUNT passphrase.
INFO: It should be 32 characters long, consisting of [0-9] and [a-f].

Enter your MOUNT passphrase:
INFO: Success!  Private data mounted at [/tmp/ecryptfs.lls9FwPj].
root@computer:~# ls -la /tmp/ecryptfs.lls9FwPj
total 8
dr-x------  2 user user 4096 Jul  2  2011 .
drwxrwxrwt 11 root    root    4096 Sep 11 11:08 ..
lrwxrwxrwx  1 user user   32 Jul  2  2011 .Private -> /home/.ecryptfs/user/.
lrwxrwxrwx  1 user user   33 Jul  2  2011 .ecryptfs -> /home/.ecryptfs/user/
lrwxrwxrwx  1 user user   56 Jul  2  2011 Access-Your-Private-Data.desktop -
lrwxrwxrwx  1 user user   52 Jul  2  2011 README.txt -> /usr/share/ecryptfs-

Keine Fehler, aber der Einhängepunkt enthält nur dieselben unverschlüsselten Daten wie der Quellordner.

Mit habe ecryptfs-unwrap-passphrase /root/mnt/user/.ecryptfs/wrapped-passphraseich bekommenASchlüssel, aber leider war es derselbe, den ich bekommen hätte, wenn ich die Datei nicht als Argument angegeben hätte. Ich schätze also, dass ich nur meinen aktuellen Schlüssel bekommen habe, nicht den für die alten Daten.

Die alten und neuen wrapped-passphraseDateien scheinen gleich zu sein:

root@computer:~# mount | grep md0
/dev/md0 on /root/mnt type ext4 (rw,relatime,data=ordered)
root@computer:~# md5sum /home/user/.ecryptfs/wrapped-passphrase /root/mnt/user/.ecryptfs/wrapped-passphrase  
52da6f1ea1ffff114795c7613b5c560e  /home/user/.ecryptfs/wrapped-passphrase
52da6f1ea1ffff114795c7613b5c560e  /root/mnt/user/.ecryptfs/wrapped-passphrase

Ich fand das sehr merkwürdig, da es md0bei der Installation nicht einmal zusammengebaut war.

Dieses Unterrätsel wurde jedoch dadurch gelöst, dass ich richtig las:

root@computer:~# ls -l /root/mnt/user/.Private
lrwxrwxrwx 1 user user 32 Jul  2  2011 /root/mnt/user/.Private -> /home/.ecryptfs/user/.Private

Scheinbar habe ich über einen symbolischen Link auf den neuen Home-Ordner anstatt auf die alten Daten reagiert.

Das Lesen der richtigen Datei ergab einen anderen (richtigen) Schlüssel!

root@computer:~/mnt/.ecryptfs/user# ecryptfs-unwrap-passphrase /root/mnt/.ecryptfs/user/.ecryptfs/wrapped-passphrase 
Passphrase:
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

Das ist eigentlich die Antwort auf meine ursprüngliche Frage: Die wrapped-passphraseDatei ist mit meinem Anmeldekennwort verschlüsselt. Solange ich also die Datei habe und mein Kennwort kenne, sollte ich auf meine Daten zugreifen können.

Die Verwendung einer vernünftigeren Pfad-/Tastenkombination hat leider keinen großen Unterschied gemacht:

root@computer:~/mnt/.ecryptfs/user# ls -al
total 52
drwxr-xr-x   4 user user  4096 Jul  2  2011 .
drwxr-xr-x   3 root    root     4096 Jul  2  2011 ..
drwxr-xr-x 121 user user 36864 Sep  8 14:58 .Private
drwx------   2 user user  4096 Mar 15  2015 .ecryptfs
root@computer:~/mnt/.ecryptfs/user# ecryptfs-recover-private /root/mnt/.ecryptfs/user
INFO: Found [/root/mnt/.ecryptfs/user].
Try to recover this directory? [Y/n]:
INFO: Could not find your wrapped passphrase file.
INFO: To recover this directory, you MUST have your original MOUNT passphrase.
INFO: When you first setup your encrypted private directory, you were told to record
INFO: your MOUNT passphrase.
INFO: It should be 32 characters long, consisting of [0-9] and [a-f].

Enter your MOUNT passphrase:
INFO: Success!  Private data mounted at [/tmp/ecryptfs.dKQkSvjC].
root@computer:~/mnt/.ecryptfs/user# ls -al /tmp/ecryptfs.dKQkSvjC
total 52
drwxr-xr-x   4 user user  4096 Jul  2  2011 . 
drwxrwxrwt  12 root    root     4096 Sep 11 12:32 ..
drwxr-xr-x 121 user user 36864 Sep  8 14:58 .Private
drwx------   2 user user  4096 Mar 15  2015 .ecryptfs

Da einige der ecryptfs-tools fest codierte Pfade haben, habe ich sogar Folgendes versucht:

root@computer:~# mount /dev/md0 /home
root@computer:~# su - user
Signature not found in user keyring
Perhaps try the interactive 'ecryptfs-mount-private'
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

user@computer:~$ ecryptfs-mount-private
Enter your login passphrase:
Inserted auth tok with sig [e403598bcfe01170] into the user session keyring
mount: No such file or directory

Aber auch da ist nichts dabei.

Das Gleiche tunohnedie Montage funktioniert allerdings auch nicht md0./home

user@computer:~$ dash -e -x `which ecryptfs-mount-private`
+ PRIVATE_DIR=Private
+ WRAPPING_PASS=LOGIN
+ PW_ATTEMPTS=3
+ TEXTDOMAIN=ecryptfs-utils
+ gettext Enter your login passphrase:
+ MESSAGE=Enter your login passphrase:
+ [ -f /home/user/.ecryptfs/wrapping-independent ]
+ WRAPPED_PASSPHRASE_FILE=/home/user/.ecryptfs/wrapped-passphrase
+ MOUNT_PASSPHRASE_SIG_FILE=/home/user/.ecryptfs/Private.sig
+ /sbin/mount.ecryptfs_private
+ [ -f /home/user/.ecryptfs/wrapped-passphrase -a -f /home/user/.ecryptfs/Private.sig ] 
+ tries=0
+ stty -g
+ stty_orig=2d00:5:bd:ca1b:3:1c:7f:1f:4:0:1:0:11:13:1a:ff:12:f:17:16:ff:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0
+ [ 0 -lt 3 ]
+ echo -n Enter your login passphrase:
Enter your login passphrase:+ stty -echo
+ head -n1
+ LOGINPASS=MyLoginPassword
+ stty 2d00:5:bd:ca1b:3:1c:7f:1f:4:0:1:0:11:13:1a:ff:12:f:17:16:ff:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0
+ echo

+ wc -l
+ [ 2 = 1 ]
+ printf %s\0 MyLoginPassword
+ ecryptfs-insert-wrapped-passphrase-into-keyring /home/user/.ecryptfs/wrapped-passphrase -
Inserted auth tok with sig [93196f7a8af1fdfe] into the user session keyring
+ break
+ [ 0 -ge 3 ]
+ /sbin/mount.ecryptfs_private
mount: No such file or directory
user@computer:~$ ls -l /sbin/mount.ecryptfs*
-rwxr-xr-x 1 root root 25944 jul 13 19:13 /sbin/mount.ecryptfs
-rwsr-xr-x 1 root root 19024 jul 13 19:13 /sbin/mount.ecryptfs_private

Daher passiert beim normalen Anmelden wahrscheinlich irgendein magischer Vorgang (über PAM?), der in meinem Beispiel fehlt.

Durch das Booten einer Live-CD konnte ich auf die Daten zugreifen!

root@ubuntu:~# apt install mdadm
Reading package lists... Done
[...]
root@ubuntu:~# mdadm --assemble /dev/md0 /dev/sd[bc]1
mdadm: /dev/md0 has been started with 2 drives.
root@ubuntu:~# mount /dev/md0 /home
root@ubuntu:/home# ecryptfs-recover-private /home/.ecryptfs/user/.PrivateINFO: Found [/home/.ecryptfs/user/.Private].
Try to recover this directory? [Y/n]:
INFO: Found your wrapped-passphrase
Do you know your LOGIN passphrase? [Y/n] Y
INFO: Enter your LOGIN passphrase...
Passphrase:
Inserted auth tok with sig [f403498bcfd01070] into the user session keyring
INFO: Success!  Private data mounted at [/tmp/ecryptfs.uHQ0z177].
root@ubuntu:/home# ls /tmp/ecryptfs.uHQ0z177/ | grep Doc
Documents

Aber selbst dann funktionieren die Tools nicht perfekt:

root@ubuntu:/home# ecryptfs-recover-private
INFO: Searching for encrypted private directories (this might take a while)...  
find: ‘/run/user/999/gvfs’: Permission denied
find: File system loop detected; ‘/sys/kernel/debug/pinctrl’ is part of the same file system loop as ‘/sys/kernel/debug’.

Ich fange also an zu denken, dass die meisten Probleme, die ich damit hatte, einfach darauf zurückzuführen sind, dass die Benutzerfreundlichkeit von ecryptfs wahrscheinlich erheblich verbessert werden könnte.

Durch einen Neustart meiner echten Installation kann ich jetzt auf die Daten zugreifen:

root@computer:~# mount /dev/md0 mnt
root@computer:~/mnt/.ecryptfs/user/.Private# cd /root/mnt/.ecryptfs/user/.Private/
root@computer:~/mnt/.ecryptfs/user/.Private# ecryptfs-recover-private .
INFO: Found [.].
Try to recover this directory? [Y/n]:
INFO: Found your wrapped-passphrase
Do you know your LOGIN passphrase? [Y/n]
INFO: Enter your LOGIN passphrase...
Passphrase:
Inserted auth tok with sig [f4f3498bcfd01070] into the user session keyring
INFO: Success!  Private data mounted at [/tmp/ecryptfs.ZMqBVhRu].
root@computer:~/mnt/.ecryptfs/user/.Private# ls /tmp/ecryptfs.ZMqBVhRu | grep Doc
Documents

BEARBEITEN :

Das Suchtool ecryptfs-recover-privatescheint nicht besonders gut darin zu sein, .PrivateOrdner zu finden. Die Angabe des richtigen absoluten Pfads funktioniert wie vorgesehen.

ecryptfs-recover-privatesucht nur, wenn kein Argument angegeben ist. Wenn ein Pfad angegeben wird, muss dieser auf den .PrivateOrdner zeigen.

In diesem Beispiel:

ecryptfs-recover-private /root/mnt/.ecryptfs/user/.Private

Und ja, wrapped-passphrasees wird durch die Verwendung Ihres LOGIN-Passworts verschleiert. Wenn Sie Ihr Passwort kennen und über die Datei verfügen, benötigen Sie den eigentlichen KEY-Ausdruck nicht.

Entschuldigen Sie den langen Beitrag, aber hoffentlich kann mein „Tagebuch“ hier jemand anderem ein paar Stunden ersparen.

verwandte Informationen