Daten|teiler
Kopieren als Kulturtechnik

Sicher in die Wolke mit EncFS

27. November 2011 von Christian Imhorst

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

Geschrieben in Android, Gnu/Linux, Windows

19 Antworten

  1. Felix Bartels

    Nur eine kurze Ergänzung:

    seit Anfang Oktober gibt es auch eine Version von BoxCryptor welche das schreiben innerhalb eines EncFS Kontainers erlaubt:
    http://blog.boxcryptor.com/boxcryptor-for-android-10-available

    Ansonsten sehr schöner Artikel.

  2. nobbert

    Hi,
    Danke für die tolle Anleitung!
    Ich stehe solchen Cloud Diensten aufgrund der Datensicherheit skeptisch gegenüber, aber mit dem Verschlüsseln ist das ja wieder eine andere Sache.
    Das werde ich gleich mal ausprobieren.

    Sorry, aber ich muss dich an einer kleinen Stelle verbessern:
    “Ubuntu 10.11 Oneiric Ocelot”
    Zahlendreher: 11.10

    Gruß
    nobbert

  3. keinorhase

    Guter Beitrag, fehlt noch die Anleitung für Mac und es wäre komplett=)
    Gruß keinohrhase

  4. dakira

    Schoener umfassender Artikel. Aber dein Passwort-Tip ist hoeflich gesagt unguenstig. Solche Passwoerter werden genauso leicht geknackt, wie normale Woerter. Bei einem dictionary-angriff werden auch alle moeglichen beliebten Substitutionen geprueft. Und ich spreche da aus eigener Erfahrung (Uni-Account gesperrt weil mein 10-stelliges Passwort die monatliche dictionary-attack der admins nicht ueberlebt hat). Sowas wie “Passwoerter sind echt mal doof.” ist deutlich sicherer und deutlich einfacher zu merken:

    Relevante XKCD-Comics:
    http://xkcd.com/936/
    http://xkcd.com/792/

  5. dakira

    Oh.. und cryptfolder-indicator sieht ja auch ganz nett aus. Als Ersatz zu cryptkeeper. Das erspart einem die Whitelist und hat wohl noch mehr features (Passwoerter im Schluesselbund speichern, automount bei login).

  6. Matthias

    Hallo,

    auf deinen Screenshots wird die Oberfläche von Cryptkeeper in deutsch angezeigt. Bei mir ist es in Englisch.
    Kann man die Sprache irgendwo einstellen?

    MFG Matthias

  7. Christian Imhorst

    Hallo Matthias,

    wenn ich mich richtig erinnere, habe ich einfach Cryptkeeper aus den Repos installiert und es war auf deutsch. Keine Ahnung, was ich gemacht habe, oder bei dir fehlt. Sind alle Sprachpakete bei dir installiert?

    Viele Grüße
    Christian

  8. et voila

    Sicherlich schon von Wuala gehört? Wollte es nur mal erwähnen, ist zwar propreitär aber läuft auf Win, Mac, Linux und Android.

  9. furore

    Hallo,
    ich verstehe den Vorgang nicht so richtig. Es werden 2 Ordner verwendet:
    mkdir ~/Dropbox/.encrypted
    mkdir ~/Dropbox/Dokumente
    Der 1. enthält die verschlüsselten Daten, der 2. die Orginale. Jedoch sind beide Ordner auch Unterordner von Dropbox und werden demzufolge synchronisiert. So kann man gleich auf die Verschlüsselung verzichten.

  10. Christian Imhorst

    Hallo furore,

    der erste Ordner “.encrypted” enthält die verschlüsselten Dateien, der zweite “Dokumente” ist ein Mountpoint.

    Viele Grüße
    Christian

  11. tuxor

    Naja, da hat furore aber nicht ganz unrecht.

    Wenn der Mountpoint in der Dropbox liegt, ist das Ganze schon recht nutzlos.

    gruß

  12. Christian Imhorst

    Ah, ok, den Punkt hatte ich beim ersten Mal leider überlesen. Aber es stimmt natürlich, der Mount-Point im Dropbox-Ordner, der dann synchronisiert wird, macht natürlich keinen Sinn.

  13. csh

    Cryptonite (http://code.google.com/p/cryptonite/) sollte EncFS unter Android ohne Einschraenkungen unterstuetzen, das es auf dem gleichen Code beruht.

  14. tsm

    Dieser Artikel hat mir ein wenig geholfen im umgang mit EncFS, danke dafür. Für die Automount & Autoentschlüsselung nutze ich unter Ubuntu ein kleines script, das klappt bestens.

    Unter Windows wollte ich das nun so ähnlich einrichten, aber EncFS4Win/Dokan unterstützt scheinbar nicht das automatische “einbinden”/entschlüsseln beim Systemstart?! Ich weiß, das automatische entschlüsseln dürfte wohl eher zu den “ungeschickten” Methoden gehören, allerdings hat niemand sonst zugriff auf meine Geräte. Gibt es eine möglichkeit EncFS4Win/Dokan so einzurichten das er es doch tut bzw. gibt es eine Alternative dazu (evtl. auch über ein Script wie bei Ubuntu)?

    Gruß
    tsm

  15. MIT UBUNTU DATEN SICHER IN DER CLOUD HALTEN :: WEB BLOG BERLIN

    […] gemacht. Da man beim Einrichten des EncFS Ordners was beachten muss, verweiße ich hier mal auf diese Seite. Unter Windows kann man das laut kurzer Internet Recherche auch verwenden, scheint aber nicht ganz […]

  16. Christian Imhorst

    Im Prinzip dürfte sich so eine Batch unter Windows basteln lassen, denn Dokan bringt mit “dokanctl.exe” und Encfs mit “encfsctl.exe” Kommandozeilenprogramme mit. Nähere Infos zu Dokan findet man in der Readme.txt. Bislang habe ich nur wenig Infos zu den beiden Programmen gefunden, vielleicht hast du ja mehr Glück.

  17. realmic

    Wer bei EncFS unter Ubuntu 12.04 den Automount beim Login haben will (Zusammenspiel mit Seahorse bzw. dem Schlüsselbund funktioniert), kann hier auf gnome-encfs-manager zurückgreifen (Cryptkeeper wird nicht benötigt), geht wunderbar unter Unity, mit Tray (keine Whitelist-Anpassung im Panel nötig) und auch beim Start ist es minimiert ;)

    Mehr hier:
    http://forum.ubuntuusers.de/topic/gnome-encfs-konfigurationsproblem/

  18. Thomas

    Gnome-Encfs-Manager ist sehr angenehm zu bedienen und gefällt mir gut!
    Für Android empfehle ich allerdings Encdroid. Es können Verschlüsselte Ordner erstellt und importiert werden. Ubun

    BoxCryptor verschlüsselt die Dateinamen nicht und die mit Boxcryptor erstellten Ordner können zwar mit Gnome-Encfs-Manager entschlüsselt werden aber umgekehrt kann Boxcryptor die im PC erstellten Encfs-Ordner nicht entschlüsseln.

  19. Android-Tutorial: Wie man das Android-Smartphone optimal schützt | Nakanos Rumpelkammer

    […] EncFS Artikel: Einrichten des Verschlüsselungstools EncFS unter Windows, OSX, Linux und Android. […]