Verschlüsselte Dateien mit EncFS
Obwohl das Verschlüsselungsprogramm EncFS im Sommer schon seinen sechsten Geburtstag feiert, zählt es noch längst nicht zum alten Eisen. Im Fahrwasser von Truecrypt geriet es allerdings etwas in Vergessenheit -- zu unrecht, denn es bietet einige Vorteile.
Wer unter Linux seine Daten vor fremden Blicken schützen möchte, hat die Wahl zwischen verschiedenen Lösungen. Wer nur ein paar Dateien vor fremden Blicken schützen will, schießt mit manchen von ihnen aber mit Kanonen auf Spatzen. So verlangt beispielsweise Truecrypt nach einer Containerdatei, in der der Anwender erst umständlich eine virtuelle Festplatte anlegen muss, die dann zu allem Überfluss auch noch ordentlich Festplattenplatz schluckt. Die umfangreichen Parameter der Kommandozeilenprogramme schrecken zudem Normalanwender ab, die teilweise nötigen Root-Rechte erledigen schließlich ihr übriges.
Eine interessante Alternative stellt EncFS dar. Im Gegensatz zur Konkurrenz verschlüsselt es einfach nur alle Dateien in einem beliebigen Verzeichnis. Es gibt somit keinen fetten Container, der sich beim Backup wie eine sperrige Schrankwand beim Umzug verhält. Stattdessen belegt das Verzeichnis nur den Platz, den sein verschlüsselter Inhalt auch tatsächlich beansprucht.
Peepshow
Um die Daten wieder zu entschlüsseln, geht EncFS einen etwas unorthodoxen Weg: Der Anwender hängt das verschlüsselte Verzeichnis wie einen echten Datenträger in einen anderen, leeren Ordner. Dieser bietet dann eine unverschlüsselte Sicht auf das von EncFS geschützte Verzeichnis. Sobald der Anwender den verschlüsselten Ordner wieder aushängt, sind dessen Inhalte wieder vor fremden Blicken geschützt. Der Mount-Point dient somit gewissermaßen als Safetür. Klingt kompliziert, gestaltet sich aber in der Praxis als äußert einfach und elegant, wie das folgende Beispiel beweist.
EncFS liegt schon seit einer gefühlten Ewigkeit jeder guten Distribution bei. Unter Ubuntu spielem Sie einfach das Paket »encfs« ein:
sudo apt-get install encfs
Zum Redaktionsschluss lag in den Repositories allerdings nur die veraltete Version 1.4.2. Wer das aktuelle EncFS 1.5.0 nutzen möchte, muss daher zum Quellcode greifen [1]. Dass dieser ebenfalls recht fix installiert ist, zeigt der Kasten ,,Installation aus den Quellen``.
Im eigenen Home-Verzeichnis erstelln Sie nun zwei Ordner. Der erste enthält später alle verschlüsselten Dateien:
mkdir privat
Der zweite dient gleich als Mount-Point:
mkdir lesbar
Als nächstes hängen Sie mit EncFS das Verzeichnis »privat« unter »lesbar« ein:
encfs /home/tim/privat /home/tim/lesbar
Dabei müssen Sie übrigens zwingend den vollen Pfad angeben, das Heimatverzeichnis können Sie allerdings mit »~« abkürzen (wie in Abbildung 1).

Abbildung 1: Ein verschlüsseltes Verzeichnis zu erstellen, erfordert nur einen Befehl und ein Passwort. Wenn die als Parameter übergebenen Ordner noch nicht existieren, legt sie »encfs« selbstständig an.
EncFS bereitet im ersten Schritt den Ordner »privat« auf die Verschlüsselung vor, wozu es dem Anwender ein paar Fragen stellt. Ein bereits vorhandenes Verzeichnis kann EncFS leider nicht umwandeln. Wenn »privat« bereits Dateien enthält, ignoriert die Verschlüsselungssoftware sie kurzerhand.
Quizshow
Gleich die erste Frage beantworten Sie mit der Eingabetaste. Die so gewählten Standardeinstellungen zwingen EncFS zu einer zeitgemäßen AES-Verschlüsselung mit einer Schlüssellänge von 192 Bit (Abbildung 1). Der alternativ über »p« aktivierte »Paranoia-Modus« für Sicherheitsfanatiker nutzt eine Schlüssellänge von 256 Bits. Wer detaillierten Einfluss auf den Verschlüsselungsalgorithmus benötigt, wählt »x« für den »Experten-Modus«. Die dann verfügbaren Optionen erklärt der Kasten ,,Der Expertenmodus``.
Als nächstes vergeben Sie das Passwort. Da es den einzigen Schlüssel zum Datentresor bildet, sollten Sie es nicht nur möglichst sicher wählen, sondern auch die angezeigte Warnmeldung ernst nehmen: Wer das Passwort vergisst, dem bleibt nur unbrauchbarer Datenmüll.
Abschließend mountet EncFS den jetzt verschlüsselten Ordner »privat« unter »lesbar«. Dabei greift es auf die Dienste des Filesystem in Userspace (FUSE) zurück, das Dateisystemtreiber aus dem Kernel in den Userspace verlagert [2]. Damit ist es auch normalen Anwendern möglich, die verschlüsselten Verzeichnisse selbst zu mounten.
Unter der Motorhaube
Sobald der Benutzer eine Datei unter »lesbar« ablegt, verschlüsselt EncFS ihren Inhalt und legt sie unter einem kryptischen Dateinamen unter »privat« ab. EncFS ist also entgegen seiner Bezeichnung kein richtiges Dateisystem beziehungsweise Block-Device, sondern nur eine Zwischenschicht, die Dateien abfängt, sie verschlüsselt und dann weiterhin im normalen Dateisystem ablegt (Pass-Through-Dateisystem). Man kann daher weiterhin sein eigenes Lieblingsdateisystem einsetzen, beispielsweise weil es eine hohe Datensicherheit bietet. EncFS rüstet gewissermaßen die fehlende Verschlüsselung nach.

Abbildung 2: Die Datei »wichtig.txt« ist nach ihrer Behandlung durch EncFS nicht mehr wiederzuerkennen.
Wer einen Blick in das verschlüsselte Verzeichnis riskiert, findet seine Dateien dort in recht kryptischer Form wieder (Abbildung 2). Um möglichst wenige Rückschlüsse auf den Inhalt der Datei zu hinterlassen, kodiert EncFS zusätzlich auch den Dateinamen. Heraus kommt dabei eine kryptische Zeichenkette, die absichtlich nicht die gleiche Länge wie der Originalname aufweist. Zusätzlich besitzt jedes verschlüsselte Verzeichnis eine XML-Datei (in Abbildung 2 ».encfs6.xml«). Sie enthält alle zur Entschlüsselung notwendigen (Meta-)Informationen. Welche genau, verrät ein einfacher Aufruf von: »encfsctl info privat« Dieses Hilfswerkzeug ändert mit »encfsctl passwd privat« auch nachträglich das Passwort.

Abbildung 3: »encfsctl« liefert alle wichtigen Informationen über ein verschlüsseltes Verzeichnis.
Rohes Ei
Entgegen der ersten Vermutung verschlüsselt EncFS die Dateien nicht mit dem vom Benutzer vorgegebenen Passwort. Stattdessen denkt sich die Software eine Zufallszahl aus, den so genannten Volume Key. Mit ihm verschlüsselt sie alle Dateien und ihre Namen. Anschließend verpackt EncFS den Volume Key mit dem Benutzer-Passwort und speichert ihn in der XML-Datei. Sollte der Benutzer sein Passwort ändern, muss EncFS nur den Volume Key und nicht gleich sämtliche Dateien neu verschlüsseln. Allerdings macht dieses Vorgehen die XML-Datei noch wertvoller: Geht sie verloren, lassen sich auch die Dateien nicht mehr entschlüsseln.
Daher sollte man den verschlüsselten Ordner selbst nur mit Samthandschuhen anfassen. In der Praxis nutzt man deshalb auch meistens einen Verzeichnisnamen mit einem vorangestellten Punkt. Damit ist das wertvolle Verzeichnis zumindest schon einmal aus den Augen.
Da in ihm ganz normale Dateien schlummern, kann man den Inhalt immerhin mit jedem beliebigen Backupprogramm sichern. Ganz wie gewohnt funktionieren dateiweise und inkrementelle Backups. Man könnte das komplette verschlüsselte Verzeichnis sogar vorübergehend auf einem (unsicheren) Dienst, wie etwa Dropbox im Internet parken, es per NFS über das Netzwerk hinzuholen oder in einem ZIP oder Tar-Archiv verstauen. Wichtig ist nur, dass die Datei mit den Meta-Informationen erhalten bleibt.
Schattenseiten
Ein verschlüsseltes Verzeichnis ist mit EncFS schnell und unkompliziert aufgesetzt, ein kleines Kommando reicht aus. Seine Arbeitsweise bedingt jedoch auch ein paar Nachteile: Zunächst einmal frisst die im laufenden Betrieb durchgeführte Ver- und Entschlüsselung etwas Rechenzeit, die in der Praxis jedoch subjektiv nicht spürbar war. Je nach gewähltem Verschlüsselungsverfahren wachsen die einzelnen Dateien zudem leicht in ihrer Größe an (siehe Kasten ,,Der Expertenmodus``). Die zusätzlichen Kosten halten sich aber auch hier in Grenzen.
Die ersten richtigen Probleme entstehen, sobald Angreifer in das verschlüsselte Verzeichnis hineinsehen können -- beispielsweise auf einem unsicheren Internet-Speicherplatz oder einem gestohlenen Notebook. Im Gegensatz zu verschlüsselten Containern, wie sie etwa TrueCrypt anlegt, sehen sie dann direkt, wie viele vertrauliche Dokumente in welcher Stückzahl vorliegen und welche Zugriffsrechte und Größen diese im Einzelnen besitzen. Genügend erschlichene Benutzerrechte vorausgesetzt, könnte sich ein Angreifer die in Frage kommenden Dateien sogar schnell auf einen USB-Stick ziehen und dann zuhause in Ruhe analysieren. Dabei helfen ihm auch noch die von EncFS hinterlassenen Metainformationen in der XML-Datei, die ausführlich Auskunft über das verwendete Verschlüsselungsverfahren geben.
Unterm Strich hängt die Sicherheit der Daten maßgeblich vom gewählten Passwort ab. In bestimmten Umständen ist jedoch selbst das keine Garantie mehr: Öffnet man nach dem Mounten eine der nun entschlüsselten Dateien, beispielsweise in einer Textverarbeitung, stehen ihre Inhalte im Klartext im Hauptspeicher. Lagert Linux diesen Teil zufällig noch in den Swap-Bereich aus, liegen dort alle Informationen möglicherweise tagelang ungeschützt herum.
Schließanlage
Solange das Verzeichnis »privat« eingebunden ist, sind auch seine Inhalte zugänglich. Hat es ein Angreifer geschafft, das System zu übernehmen, kann er alle Dokumente einsehen. Folglich sollte man das verschlüsselte Verzeichnis nach getaner Arbeit schleunigst wieder aushängen:
fusermount -u /home/tim/lesbar
Um später den Datentresor wieder zu öffnen, greift man erneut zum bekannten »encfs«-Befehl. Die Verschlüsselungssoftware fragt dann nach dem Passwort und hängt wie gewohnt den Inhalt von »privat« unter »lesbar« ein.
Fazit
EncFS bietet weder eine hundertprozentige Sicherheit, noch eignet es sich dazu, ein komplettes Linux-System zu verschlüsseln. Der Inhalt eines Speichersticks oder einer externen Festplatte lässt sich jedoch schnell und unkompliziert gegen neugierige Blicke schützen. (ofr)
| Ergänzungen |
|---|
|
Um EncFS herum haben sich einige nützliche Werkzeuge gruppiert. So erlaubt beispielsweise »pam-encfs«, das komplette Heimatverzeichnis automatisch beim Ein- und Ausloggen zu ent- beziehungsweise wieder zu verschlüsseln [3]. Diese Lösung ist allerdings nicht ganz unproblematisch, im schlimmsten Fall sperrt man sich aus. Wer wirklich sein komplettes Home-Verzeichnis schützen möchte, verschlüsselt besser eine ganze Partition. Ein Frontend für EncFS bietet K-EncFS [4], das seinem Namen entsprechend auf den KDE-Desktop zugeschnitten ist. Im Wesentlichen bildet es jedoch nur die Kommandozeilenparameter von »encfs« ab, kann nur mit genau einem verschlüsselten Verzeichnis umgehen (nämlich ».kencfs2/encrypted«) und wurde zudem länger nicht mehr weiterentwickelt. Mac-Anwender dürfte die Arbeitsweise von EncFS stark an ihr FileVault erinnern. Und tatsächlich gibt es mit EncFSVault ein Projekt, die Apple-eigene Lösung gegen EncFS zu ersetzen [5]. |
| Der Expertenmodus |
|---|
|
Im Expertenmodus möchte EncFS als erstes den zu verwendenden Verschlüsselungsalgorithmus wissen. Unter Ubuntu 9.04 stehen beispielsweise AES und Blowfish zur Wahl. Wie das Angebot genau aussieht, hängt vom verwendeten OpenSSL-Paket ab. Anschließend tippt man die Schlüssellänge ein. Hierbei gilt als Faustregel: Je länger desto sicherer. Der gewählte Algorithmus teilt eine Datei in Blöcke auf, die er dann anschließend jeweils einzeln verschlüsselt. Die Größe eines solchen Blocks möchte EncFS als nächstes wissen. Sofern man hier unsicher ist, sollte man die Vorgabe mit der Eingabetaste übernehmen. (EncFS arbeitet grundsätzlich im CBC Mode, sollte ein Block kleiner als die Vorgabe sein, schaltet die Software automatisch auf eine Stromverschlüsselung um und läuft im CFB-Modus mehrfach über die Daten.) Um wirklich keine Rückschlüsse auf den Inhalt der verschlüsselten Dateien zu hinterlassen, kodiert EncFS auf Wunsch auch ihre Namen. Zur Auswahl stehen dabei eine Block- und eine Stromverschlüsselung. Das erste Verfahren versteckt die Dateinamenlänge etwas, das zweite (mit der Nummer 3 in der Auswahl) führt zu relativ kurzen Dateinamen. Standardmäßig verwendet EncFS die Blockverschlüsselung. In jedem Fall sollten Sie Abstand von Punkt 2 Null nehmen: Damit schalten Sie die Verschlüsselung der Dateinamen ab und geben somit Angreifern wertvolle Hinweise auf den Dateiinhalt. Sobald Sie sich für ein Verfahren entschieden haben, möchte EncFS wissen, ob bei der Erstellung der kryptischen Dateinamen nur der Dateiname selbst oder aber der gesamte Pfad in die Berechnung einfließen soll. Letzteres garantiert, dass zwei gleichnamige Dateien aus verschiedenen Unterverzeichnissen voneinander abweichende kryptische Dateinamen erhalten. Da diese Variante sicherer ist, sollten Sie hier das »Yes« immer mit der Eingabetaste bestätigen. (In jedem Fall verwendet EncFS einen Initialisierungsvektor, der auf der HMAC-Checksumme des Dateinamens basiert.) EncFS nutzt einen so genannten Initialisierungsvektor, eine in die Verschlüsselung einbezogene Zufallszahl, die das Entziffern der Daten weiter erschweren soll. Auf Wunsch überlegt sich EncFS für jede zu verschlüsselnde Datei einen neuen Initialisierungsvektor, was auf der einen Seite die Sicherheit erhöht, auf der anderen aber auch etwas mehr Plattenplatz kostet -- nämlich 8 Bytes für jede Datei. Da angesichts von Terrabyte-Festplatten dieser Verlust zu verschmerzen ist, sollten Sie hier mit der Eingabetaste das »Yes« bestätigen. Um Fehler und Veränderungen in den verschlüsselten Dateien aufspüren zu können, erstellt EncFS eine Prüfsumme für jeden Datenblock (der Block Authentication Code Header). Dieser kostet pro Block 12 zusätzliche Bytes und etwas mehr Rechenzeit im laufenden Betrieb. Verzichtet man auf diese Alarmanlage, kann es passieren, dass man beispielsweise unbemerkt mehrere defekte Seiten in einem Textdokument mit sich herumschleppt. Standardmäßig verzichtet EncFS auf diesen Service. Um ihn einzuschalten, tippen Sie bei der folgenden Frage ein »y« ein. Als nächstes schlägt EncFS vor, an die Prüfsumme noch eine 8 Byte lange Zufallszahl anzuhängen. Sie soll verhindern, dass Datenblöcke mit dem gleichen Inhalt dieselbe Prüfsumme erhalten. Abschließend bietet EncFS noch an, im Falle so genannter File Holes auf eine Verschlüsselung der Datenblöcke zu verzichten. |
| Installation aus den Quellen |
|---|
|
EncFS aus seinem Quellpaket zu erstellen, setzt neben dem C++-Compiler und seinen Werkzeugen noch die folgenden Bibliotheken und Entwicklerpakete voraus: »fuse«, »rlog«, »openssl« und »boost«. Die Übersetzung erfolgt dann mit dem üblichen Dreisatz: ./configure make make install Bei Problemen sollte man insbesondere auf älteren Distributionen zunächst sicherstellen, dass das FUSE Kernelmodul geladen ist: sudo modprobe fuse Darüber hinaus muss jeder Benutzer, der EncFS nutzen können soll, noch in der Gruppe »fuse« stecken: sudo adduser tim fuse Zuletzt benötigen die Benutzer noch Zugriffsrechte auf »fusermount«: sudo chmod +x /usr/bin/fusermount |
Infos
- [1] Homepage von EncFS: [http://www.arg0.net/encfs]
- [2] Informationen zu FUSE: [http://de.wikipedia.org/wiki/Filesystem_in_Userspace]
- [3] pam-encfs: [http://code.google.com/p/pam-encfs/]
- [4] Marcel Hilzinger, In Sicherheit -- Dateien mit K-EncFS schützen, EasyLinux 01/2008, [http://www.easylinux.de/Artikel/ausgabe/2008/01/066-kencfs/index.html]
- [5] EncFSVault: [http://code.google.com/p/encfsvault/]

Kommentare
Kommentar hinzufügen