Ich versuche, eine verschlüsselte HFS+-Partition in Ubuntu zu mounten.
Einälterer Eintragbeschreibt ganz gut, wie es geht, es fehlen aber die Informationen zur Verwendung verschlüsselter Partitionen.
Was ich bisher gefunden habe, ist:
# install required packages
sudo apt-get install hfsprogs hfsutils hfsplus loop-aes-utils
# try to mount it
mount -t hfsplus -o encryption=aes-256 /dev/xyz /mount/xyz
Aber wenn ich dies ausführe, erhalte ich die folgende Fehlermeldung:
Error: Password must be at least 20 characters.
Ich habe also versucht, es zweimal einzugeben, aber das Ergebnis lautet:
ioctl: LOOP_SET_STATUS: Invalid argument, requested cipher or key (256 bits) not supported by kernel
Irgendwelche Vorschläge?
Antwort1
Dukann nicht mounteneine HFS+ Partition, die in OS X mit mount
der Option verschlüsselt wurde encryption=aes
. Der Grund dafür ist, dass verschlüsselte HFS+ Partitionen und Volumes eineproprietärFormat.
WederKryptoschleifenochLoop-AES, die zugrunde liegenden Entschlüsselungsmethoden von mount
und encryption
, verstehen dieses Format.
Das habe ich herausgefunden:
Cryptoloop kann Partitionen oder Disk-Images mounten, die als ein einziger AES-Block verschlüsselt sind (dies wird Single-Key-Modus genannt, siehehttp://www.tldp.org/HOWTO/html_single/Cryptoloop-HOWTO/#cryptoloop-introduction):
/dev/sdXX
disk image /dev/loopX
+-----------+ +-------------+
| | | |
| | | |
| | | unencrypted |
| AES block | -AES passwd->AES key->decrypt I/O to loop device-> | partition |
| | | |
| | | |
| | | |
+-----------+ +-------------+
AES-Loop kann sowohl mit einem Schlüssel (wie oben) als auch mit mehreren Schlüsseln verschlüsselte Partitionen oder Disk-Images mounten:
/dev/sdXX
disk image /dev/loopX
+------------+ +-------------+
|AES block #1| | |
+------------+ | |
|AES block #2| | unencrypted |
+------------+ -AES passwd->AES key(s)->decrypt I/O to loop dev-> | partition |
|AES block #3| | |
+------------+ | |
| ... | | |
+------------+ +-------------+
Andererseits eine verschlüsselte HFS+-Partition:
- beinhaltet eineHeader(Sie können es mit entsorgen
xxd
) - VerwendetmehrereSchlüssel auf undokumentierte Weise (siehehttp://events.ccc.de/congress/2006/Fahrplan/attachments/1244-23C3VileFault.pdf)
- Ab OS X 10.7 "Lion" ist es in einer CoreStorage Logical Volume Group verpackt (siehe
man diskutil
oderhttps://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man8/diskutil.8.html) VerwendetAES-XTS:
$ diskutil coreStorage list (...) +-> Logical Volume Family D1C4665F-EAC8-4DAB-B392-634842A59559 ---------------------------------------------------------- Encryption Status: Unlocked Encryption Type: AES-XTS (...)
was weder von Cryptoloop noch von Loop-AES unterstützt zu werden scheint.
Der Nachfolger von Cryptoloop dm-crypt
kann verschlüsseltes HFS+ ebenfalls nicht lesen.
Doch bevor alle Hoffnung verloren ist:
Eine Gruppe von Kryptographie-Experten hat Folgendes erstellt
vfdecrypt
(im Ubuntu-Paket enthaltendmg2img
, tar.gz finden Sie hier): http://code.google.com/p/iphone-elite/downloads/list), das verschlüsselte FileVault-Disk-Images entschlüsselt (funktioniert nicht mit Gerätedateien).Dieses Tool sieht sehr vielversprechend aus, funktionierte aber bei keinem der verschlüsselten Disk-Images, die ich
Disk Utility
unter OS X 10.8.2 „Mountain Lion“ erstellt habe. Andere Leute (http://bre.klaki.net/blog/2011/08/17/) scheinen mit alten verschlüsselten Bildern Erfolg gehabt zu haben.Weitere Experten arbeiten an dem Projekt
libfvde
(https://code.google.com/p/libfvde), das einen Befehlfvdemount
zum Lesen von mit FileVault verschlüsselten Systemvolumes enthält. Der limitierende Faktor hier ist das „Systemvolume“. Partitionen auf Wechselmedien werden nicht unterstützt. Falls Sie neugierig sind, finden Sie die Beschreibung hier: https://code.google.com/p/libfvde/wiki/Mounting#Mouting_the_system_volume. Der Quellcode kann hier heruntergeladen werden: https://code.google.com/p/libfvde/downloads/list.
Zu den Fehlermeldungen, die Ihnen angezeigt wurden:
Erster Fehler:
Error: Password must be at least 20 characters.
Überraschenderweise mount
erzwingt lange Passwörter nicht nur für die Verschlüsselung, sondern auch fürEntschlüsselung, obwohl Sie möglicherweise keine Kontrolle über die zu entschlüsselnde Partition haben. Sie können dieses Problem nur umgehen, indem Sie die Quelle herunterladen, bearbeiten und neu kompilieren. (Andere Distributionen, wie SuSE Linux Enterprise Server (SLES), haben diese Einschränkung nicht.)
Zweiter Fehler:
ioctl: LOOP_SET_STATUS: Invalid argument, requested cipher or key (256 bits) not supported by kernel
Sie müssen das Cryptoloop-Kernelmodul laden:
$ sudo modprobe cryptoloop
denn obwohl Sie das Paket installiert haben loop-aes-utils
,sind nichtmit Loop-AES.
Loop-AES verwendet mehrere modifizierte Userspace-Tools ( mount
, umount
, losetup
, swapon
und swapoff
, bereitgestellt von loop-aes-utils
) und ein modifiziertes loop.ko
Kernelmodul. Neuere Ubuntu-Versionen kompilieren ein unverändertes loop
Modul in den Kernel:
$ cd /usr/src/linux-source-3.2.0/linux-source-3.2.0/drivers/block/
$ diff -q /tmp/loop.c-3.x.patched loop.c
Files /tmp/loop.c-3.x.patched and loop.c differ
Loop-AES kann daher nicht sofort unter Ubuntu verwendet werden. Sie müssen den Kernel wie hier beschrieben patchen und neu kompilieren:http://loop-aes.sourceforge.net/loop-AES.READMEAus diesem Grund mount
wird Cryptoloop weiterhin benötigt.
Wenn Sie nach dem Laden immer noch eine ähnliche Fehlermeldung erhalten, cryptoloop.ko
wird der Verschlüsselungstyp möglicherweise nicht erkannt. Beispielsweise hat mein Ubuntu 12.04 nicht erkannt aes-128
, aber aes
. SLES erkennt nur aes-128
.
Antwort2
Eigentlich gibt es Java-Anwendunghfsexplorerdas verschlüsselte Dateien öffnen kann .dmg
und entschlüsselte Images erstellt .dmg
, die in Linux gemountet werden können.
Ich konnte verschlüsselte .dmg
Dateien in OS X 10.9.5 erstellen und das Image dann von einer virtuellen Maschine aus untersuchen, auf der Ubuntu 14.04.2 LTS läuft. Sowohl die AES-128- als auch die AES-256-Verschlüsselung funktionierten für meine Testfälle.
So habe ich das .dmg
Bild erstellt:
$ hdiutil create -size 10m -layout NONE -fs HFS+ -encryption AES-256 -volname "Vault" vault.dmg
Von der virtuellen Maschine mit Ubuntu aus konnte ich das Image öffnen:
$ ./hfsexplorer-0/bin/hfsexplorer.sh /tmp/vault.dmg
Es fordert zur Eingabe eines Passworts auf und zeigt dann den Inhalt des Images an. Es gibt eine Option (Tools -> Disk-Image erstellen), die ein entschlüsseltes Disk-Image erstellt, das dann mit den HFS-Tools von Linux gemountet werden kann.
$ mount vault_decrypted.dmg /mnt/hfs/
Sogar HFS+ Journaled-Dateisysteme funktionierten. Die einzige Einschränkung besteht darin, dass die Schreibunterstützung für HFS+J-Dateisysteme unter Linux standardmäßig deaktiviert ist.
Dies zeigt, dass die Verschlüsselung .dmg
verstanden wird hfsexplorer
und ggf. im mount
Befehl umgesetzt werden kann. Durch das Erstellen einer unverschlüsselten Datei .dmg
ist es schließlich möglich, das Image in Linux zu mounten.
vfdecrypt
hat bei mir auch nicht funktioniert.