Sicher in die Wolke mit EncFS
Mit EncFS kann man unter Linux wichtige Dateien verschlüsseln, die aus irgendeinen Grund über Ubuntu One oder Dropbox in die Cloud sollen, und sie können auf Linux-Systemen wie Ubuntu oder Android, aber auch unter Windows, MacOS X und zukünftig unter iOS wieder entschlüsselt werden. In diesem Punkt bietet EncFS einen klaren Vorteil gegenüber anderen Verschlüsselungstools wie Truecrypt oder GnuPG.
EncFS unter Ubuntu
In der aktuellen Ubuntu-User zeigt der Artikel „Sicher in die Wolke“, wie man seine Dateien mit GnuPG verschlüsseln kann, bevor man sie einer Cloud-Anwendung wie Ubuntu One oder Dropbox übergibt und wieder entschlüsselt. Da das Ver- und Entschlüsseln der Dateien dabei im Terminal stattfindet, wirkt das Verfahren unnötig kompliziert. Die Webseite nosinmiubuntu zeigt, wie es mit Cryptkeeper und EncFS unter Ubuntu 10.11.10 Oneiric Ocelot und Unity einfacher geht. Da sich Cryptkeeper und EncFS in den Repositories von Oneiric befinden, kann man beide Programme über das Software-Center oder über das Terminal installieren:
sudo apt-get install cryptkeeper encfs |
Einrichten des Panel Applets
Damit Cryptkeeper nach dem nächsten Ab- und wieder Anmelden des Benutzers als Panel Applet im System-Tray von Unity erscheint, muss man das Programm in eine sogenannte „Whitelist“ eintragen. Im Gegensatz zu Gnome ist das Panel Applet in Unity ziemlich eingeschränkt. Am einfachsten kann man sich alle Applets anzeigen lassen:
gsettings set com.canonical.Unity.Panel systray-whitelist "['all']" |
Die unerwünschte Nebenwirkung ist dann aber, dass man wirklich alle Applets im Panel sieht. Will man nur das Panel Applet von Cryptkeeper zusätzlich zulassen, sollte man erst einmal schauen, welche Applets bereits auf der Whitelist stehen:
gsettings get com.canonical.Unity.Panel systray-whitelist |
Wenn die Ausgabe nichts anzeigt, reicht ein
gsettings set com.canonical.Unity.Panel systray-whitelist "['Cryptkeeper']" |
um Cryptkeeper zum Panel hinzu zufügen. Sieht die Ausgabe aber wie im folgenden Beispiel aus,
$ gsettings get com.canonical.Unity.Panel systray-whitelist ['JavaEmbeddedFrame', 'Mumble', 'Wine', 'Skype', 'hp-systray'] |
sollte man Cryptkeeper an das Ende der Liste setzen:
$ gsettings set com.canonical.Unity.Panel systray-whitelist "['JavaEmbeddedFrame', 'Mumble', 'Wine', Skype', 'hp-systray', 'Cryptkeeper']" |
Anschließend sollte man nochmal prüfen, ob es geklappt hat. Wenn die Ausgabe in etwa so, wie die folgende aussieht, scheint es funktioniert zu haben:
$ gsettings get com.canonical.Unity.Panel systray-whitelist['JavaEmbeddedFrame', 'Mumble', 'Wine', 'Skype', 'hp-systray', 'Cryptkeeper'] |
Danach muss Cryptkeeper noch unter „Startprogramme“ eingetragen werden. Dazu drückt man die Super-Taste (das ist die ehemalige Windows-Taste) und trägt in das Suchfeld „Startprogramme“ ein. Das Programm-Icon taucht schon nach nur wenigen Buchstaben auf.
Der Eintrag sieht dann folgendermaßen aus und wird über den Button „Speichern“ und „Schließen“ festgeschrieben:
Erst nach dem Ab- und wieder Anmelden werden die Änderungen sichtbar, und man sieht, ob es wirklich geklappt hat, wenn man das Symbol mit dem Schlüsselpaar im Panel sieht:
Cryptkeeper im Einsatz
Um einen Ordner zu verschlüsseln oder einen bereits mit EncFS verschlüsselten Ordner zu importieren, klickt man mit der linken Maustaste auf das Schlüsselpaar. Um einen neuen verschlüsselten Ordner anzulegen, wählt man „Erstelle verschlüsselten Ordner“.
In dem Fenster, das sich anschließend öffnet, wählt man den übergeordneten Ordner aus, z.B. „Ubuntu One“ und trägt den Namen des neuen Ordners ein, z.B. „Dokumente“ und klickt dann, was ein wenig gewöhnungsbedürftig ist, links auf „Vor“. Dann trägt man sein Passwort zweimal ein. Das Passwort sollte natürlich nicht zu einfach sein. Man darf es aber auch nicht vergessen, denn dann sind die Daten im verschlüsselten Verzeichnis verloren. Ein Beispiel, für ein gutes Passwort, das ein paar Kriterien wie mindestens 8 Zeichen, Buchstaben gemischt mit Zahlen und Sonderzeichen erfüllt, aber auch gleichzeitig leicht zu merken ist, ist das Wort Passwort, wenn man es in dieser oder einer ähnlich Form schreibt:
Pa$$w0r+
[Update] Bitte beachtet den Kommentar von dakira weiter unten. Zitat: „Bei einem Dictionary-Angriff werden auch alle möglichen beliebten Substitutionen geprüft.“[/Update] Ein gutes Verhältnis zwischen praktischem Nutzen und Sicherheit muss aber jeder für sich selbst finden. Bestätigt man das Passwort, indem man wieder links auf „Vor“ klickt, wird der verschlüsselte Ordner angelegt. Klickt man wieder mit der linken Maustaste auf das Schlüsselsymbol, werden dieser und eventuell andere verschlüsselte Ordner angezeigt. Ist der Ordner geöffnet, sieht man einen Haken davor.
Klickt man auf diesen Haken, wird der Ordner geschlossen. Klickt man erneut auf den Eintrag, wird das Passwort angefordert und die Dateien werden wieder entschlüsselt, was unter anderem durch den Haken anzeigt wird.
EncFS ver- und entschlüsselt aber nicht nur Ordner und die darin enthaltenen Dateien, es legt auch einen Mount-Punkt für die entschlüsselten Daten an, über den man auf seine Dateien zugreifen kann. Der Mount-Punkt kann leider nicht über den Dateimanager ausgehängt werden, sondern nur über Cryptkeeper, indem man, wie gesagt, den Haken bzw. den Eintrag mit dem Verzeichnis-Pfad anklickt.
Wie man im Terminal des Bildausschnitts sieht, bildet das FUSE-Framework das Fundament von EncFS, um normalen Nutzern das Mounten von verschlüsselten Verzeichnissen zu ermöglichen. Da EncFS dateiorientiert arbeitet, benötigt man keine eigene Partition und auch keinen Container, wie bei Truecrypt. Auf der anderen Seite hätte Truecrypt aber den Vorteil, dass man auch unter einem anderen Betriebssystem wie zum Beispiel Windows 7 wieder an seine verschlüsselten Daten kommen könnte, da FUSE nur unter Unix- und Gnu/Linux-Systemen verfügbar ist.
EncFS unter Windows
Man kommt an Windows leider nicht immer vorbei, es gibt aber mit EncFS4Win glücklicherweise ein Projekt, das einen Port für Windows auf der Basis von Dokan — user mode file system for windows bereit stellt. Daher installiert man zuerst die aktuelle Dokan-Bibliothek, um danach die Datei encfs.zip nach „C:\Program Files“ zu entpacken. Das Programm ENCFSW.EXE, das man zum Entschlüssen der Ordner startet, bringt schon eine grafische Oberfläche ähnlich wie Cryptkeeper mit.
Man erkennt EncFS4Win an das Schlüsselsymbol in der Taskleiste. Soll das Programm automatisch starten, kann man einen Haken bei der Option „Start at login“ setzen. Um einen verschlüsselten Ordner zu öffnen oder anzulegen, klickt man auf „Open/Create“.
Anschließend wählt man den verschlüsselten Ordner aus.
Da Windows anders als Unix-artige Betriebssysteme keine Mount-Punkte kennt, muss man dem zu entschlüsselnden Ordner einen Laufwerksbuchstaben zuweisen.
Der entschlüsselte Inhalt des Ordners steht dann unter diesem Laufwerksbuchstaben bereit. Anders als unter Ubuntu aber nur unter diesem Laufwerksbuchstaben und nicht nochmal innerhalb eines Ordners in Ubuntu One oder im Dropbox-Ordner.
EncFS unter Android
Mit Boxcrypter aus dem Android-Market hat man sogar die Möglichkeit, seine mit EncFS verschlüsselten Ordner unter Android zu öffnen. Kleiner Wermutstropfen ist aber, dass das leider nur mit Dropbox funktioniert. Andere Dateisynchronisations-Dienste wie Ubuntu One werden zur Zeit nicht unterstützt. Außerdem ist Boxcrypter noch in der Entwicklungsphase und kann verschlüsselte Dateien nur lesen. Die Schreibunterstützung soll aber bald folgen. Seit Anfang Oktober kann die kostenpflichtige Version von BoxCryptor auch innerhalb eines EncFS-Containers schreiben.
Ein weiterer Nachteil von Boxcrypter ist auch, dass es EncFS nicht voll unterstützt. Man muss beim Verschlüsseln der Dateien ein paar EncFS-Optionen deaktivieren, damit es funktioniert. Zuguter letzt ist noch wichtig, dass der Schlüssel nicht von der Synchronisierung durch Dropbox ausgenommen wird. Denn dann funktioniert es nicht.
Um einen verschlüsselten Ordner zu erstellen, der auch unter Android funktioniert, legt man ihn zusammen mit dem Mount-Punkt für das Volumen, in das man später die Dateien kopiert, im Terminal an:
mkdir ~/Dropbox/.encrypted mkdir ~/Dropbox/Dokumente |
Dann erfolgt die Einrichtung der Verschlüsselung mit EncFS:
encfs ~/Dropbox/.encrypted ~/Dropbox/Dokumente |
Im folgenden Auswahlmenü wählt man dann „x“ für den Expertenmodus:
Neuer verschlüsselter Datenträger wird erstellt. Bitte wählen Sie eine der folgenden Optionen: "x" für den Expertenmodus, "p" für den vorkonfigurierten Paranoia-Modus, etwas anderes oder eine Leerzeile wählt den Standard-Modus. ?> x Manuelle Konfiguration gewählt. |
Als Verschlüsselungsalgorithmus kann man AES wählen,
Die folgenden Verschlüsselungsalgorithmen sind verfügbar 1. AES : 16 byte block cipher unterstützte Schlüssellänge zwischen 128 und 256 Bits unterstützte Blockgröße zwischen 64 und 4096 Bits 2. Blowfish : 8-Byte-Blockchiffre unterstützte Schlüssellänge zwischen 128 und 256 Bits unterstützte Blockgröße zwischen 64 und 4096 Bits Geben Sie die Nummer Ihrer Auswahl an: 1 Gewählter Algorithmus "AES" |
und bei der Schlüssellänge 128 Bit:
Bitte wählen Sie eine Schlüssellänge in Bit. Die von Ihnen gewählte Verschlüsselung unterstützt Längen von 128 bis 256 Bit in 64 Bit Schritten. Zum Beispiel: 128, 192, 256 Gewählte Schlüssellänge: 128 Verwenden Schlüssellänge von 128 Bit |
Bei der Dateisystem-Blockgröße kann man einfach mit der Enter-Taste den Standard übernehmen.
Anschließend ist es aber wichtig, bei den Verschlüsselungsalgorithmen für Dateinamen „Stream“ zu wählen, in dem man die Taste „3“ drückt:
Die folgenden Verschlüsselungsalgorithmen für Dateinamen stehen zur Verfügung: 1. Block : Blockverschlüsselung, versteckt die Dateinamengröße etwas 2. Null : No encryption of filenames 3. Stream : Stromchiffre, möglichst kurze Dateinamen Geben Sie die Nummer Ihrer Auswahl an: 3 Gewählter Algorithmus "Stream"" |
Beim Vector-Chaining muss man mit „no“ bestätigen, bzw. irgendeine Antwort eingeben, die mit einem „n“ beginnt, alles andere bedeutet ja:
Enable filename initialization vector chaining? This makes filename encoding dependent on the complete path, rather then encoding each path element individually. The default here is Yes. Any response that does not begin with 'n' will mean Yes: no |
Das Gleiche, also mit einer Eingabe, die mit einem „n“ beginnt Nein zu sagen, muss man nochmal in der nächsten
Enable per-file initialization vectors? This adds about 8 bytes per file to the storage requirements. It should not affect performance except possibly with applications which rely on block-aligned file io for performance. The default here is Yes. Any response that does not begin with 'n' will mean Yes: no |
und in der übernächsten Abfrage machen:
Externe IV Verkettung abgeschaltet, da 'IV Verkettung' und 'einmalige IV' Merkmale für diese Option benötigt werden. Enable block authentication code headers on every block in a file? This adds about 12 bytes per block to the storage requirements for a file, and significantly affects performance but it also means [almost] any modifications or errors within a block will be caught and will cause a read error. The default here is No. Any response that does not begin with 'y' will mean No: no |
Zum Schluss muss man nochmal darauf achten, dass jedem Block-Vorspann keine Zufallsbytes hinzugefügt werden, indem man die Zahl 0 eingibt:
Sollen jedem Block-Vorspann Zufallsbytes hinzugefügt werden? Das wird die Leistung veringern, aber sicherstellen, dass die Blöcke unterschiedliche Sicherheitscodes verwenden. Sie können das selbe Resultat mit geringeren Leistungseinbußen erzielen, indem Sie die dateispezifischen Initialisierungsvektoren aktivieren. Auswahl der Anzahl der Bytes, von 0 (Keine Zufallsbytes) bis 8: 0 |
Mit Cryptkeeper kann man den neu erstellten verschlüsselten Ordner danach importieren. Wenn man im Fenster „Import an EncFS encrypted Folder“ auf den Stift klickt, kann man den Pfad auch per Hand eingeben. Bei mir lautet er ~/Dropbox/.encrypted/
:
Nach dem ersten Start von BoxCryptor auf dem Android-Handy muss man den verschlüsselten Ordner auswählen, in meinem Fall also .encrypted
:
Hat man sein Passwort eingegeben, das man vorher bei der Erstellung des EncFS-Ordners angegeben hat, kann man auf seine verschlüsselten Dateien und Ordner lesend zugreifen:
Andere Linux-Versionen
Unter openSuse gibt es leider keinen Cryptkeeper. Wer die KDE-Version von openSuse benutzt, kann stattdessen einen Einzeiler in der Konsole verwenden. Erstmal muss man encfs
installieren:
zypper update && zypper install encfs |
Nach der Installation und dem Anlegen des Mountpunktes, in dem das verschlüsselte Verzeichnis eingehängt wird, folgt der Befehl in der Konsole:
encfs ~/Dropbox/.encrypted ~/Dropbox/Dokumente -idle=30 --extpass="kdialog -password Password for ENCRYPTED" -- -o nonempty |
Das verschlüsselte Verzeichnis ~/Dropbox/.encrypted
wird nach ~/Dropbox/Dokumente
eingehängt und durch die Option idle
nach 30 Minuten automatisch wieder ausgehängt. Mit der Option extpass
wird das Programm kdialog
für die Passworteingabe benutzt.
Wenn man den Ordner wieder vor Ablauf der 30 Minuten schließen möchte, kann man das mit diesem Befehl machen:
fusermount -u ~/Dropbox/Dokumente |