Ende-zu-Ende Verschlüsselung für Cloudspeicher in 2020

Das Erscheinen der neuen Version von Ubuntu mit Langzeitsupport, Ubuntu 20.04 LTS und insbesondere die KDE-Variante (Kubuntu) hat mich bewogen das Thema Dateiverschlüsselung auf Cloudspeicherdiensten noch einmal zu überdenken. Insbesondere die im KDE-Desktop (Plasma) eingebauten Methoden zur Erstellung sogenannter „Vaults“ mittels EncFS oder CryFS haben mich etwas verwundert und ich nehme es gleich vorweg, beide haben sich für mich als untauglich erwiesen und ich stelle in diesem Artikel gocryptfs als im Jahr 2020 als bessere Alternative vor.

Warum sollte ich meine Daten überhaupt in der Cloud verschlüsseln?

Denken Sie bitte gar nicht erst daran, ob Sie etwas zu verbergen haben oder nicht. Die massenhafte Auswertung von Daten kann Ihnen in einer Art und Weise schaden, wie Sie es sich heute noch nicht vorstellen können. Die Abwägung, daß Sie nur dann ein braver Bürger sind wenn Sie nur alle private Daten offenlegen, sollten Sie in einem Rechtsstaat gar nicht treffen müssen. Hier nur einige Aspekte, die ich nur oberflächlich anführen möchte, die Sie aber gerne selbst recherchieren und für sich abwägen können:

  • Vertrauen Sie nicht auf Werbeversprechen der Cloudanbieter, Ihre Daten seien sicher und verschlüsselt. In der Regel behalten diese sich ein Zugriffsrecht vor und gefährden damit Ihre Daten, da der Zugriff dann nicht sicher gegenüber Dritten geschützt werden kann.
    • Eventuell befindet sich das Datenzentrum Ihres Cloudanbieters im Ausland unterliegt dort einer gesetzlichen Verpflichtung zur Offenlegung einer Datenschnittstelle auf Anforderung. Auch hier gilt: der Schutz einer solchen Schnittstelle gegen unberechtigte Zugriffe und Hackerangriffe ist nirgendwo ausreichend sichergestellt und ist ein Ding der Unmöglichkeit.
  • Datenverlust ist ein Megatrend. In der Fachpresse kann man wöchentlich, ja beinahe täglich von massiven Verlusten von Kundendaten lesen. Wenn es nur Ihre sicher verschlüsselten Daten wären, die Sie verloren haben, dann können Sie sich entspannt zurücklehnen.
  • Betreiben Sie ein Gewerbe und speichern Sie Firmen- oder Kundendaten in der Cloud? In diesem Fall könnte für Sie eine gesetzliche Pflicht zur Sicherung Ihrer Daten vor Fremdzugriffen bestehen. Dieser können Sie nur durch starke Verschlüsselung nachkommen.
  • Arbeiten Sie im Homeoffice oder von Unterwegs? Für viele ist es im Jahr 2020 Normalität. Auch in diesem Fall kann für Sie eine dienstliche Verpflichtung zum Schutz Ihrer Daten bestehen.

Warum CryFS und EncFS dazu untauglich sind

Die Auswahl gerade dieser beiden Verschlüsselungsmethoden zur Erstellung sogenannter Plasma-Vaults hat mich überrascht. Von EncFS weiß man eigentlich seit Jahren von einer Sicherheitslücke und einer theoretischen Möglichkeit der Entschlüsselung, sobald mehrere Kopien einer verschlüsselten Datei vorliegen. Dies ist in der Cloud durchgehend der Fall, wo oft Versionen der veränderten Dateien über Monate hinweg aufbewahrt werden. Der Nachfolger ecryptfs wird in Ubuntu zwar noch zur Verschlüsselung des Homeverzeichnisses eingesetzt und ist sogar Teil des Linuxkernels, das Verfahren ist jedoch nicht geeignet wenn es mehrere Zugriffe auf eine Datei geben kann. Dies kann der Fall sein, wenn ein Verzeichnis eingebunden ist und währenddessen an der Verzeichnisstruktur durch einen Syncclient (also ohne Nutzerinteraktion) etwas geändert wird, um das Problem mal sehr verkürzt darzustellen.

CryFS ist dagegen ein noch sehr neues Verfahren, welches jedoch ausgezeichnete Sicherheitsmerkmale aufweist und die Schwächen von EncFS und ecryptfs zu bereinigen versucht. Dateien werden nicht nur inhaltlich und im Namen verschlüsselt, sondern auch in etliche kleinere Blöcke eingeteilt, sodass nicht einmal mehr Anhand der Dateigröße ein Rückschluß gezogen werden kann die Art der Dateien. Anhand der Größe ließe sich beispielsweise erraten, ob es sich um Videos, Textdokumente oder Ähnliches handeln könnte.

Test mit CryFS

Benutzt habe ich hierfür die im KDE-Desktop grafisch angebotene Möglichkeit zur Erstellung eines Plasma-Vaults mit CryFS. Das verschlüsselte Verzeichnis legte ich in ein Verzeichnis, welches durch einen Nextcloud-Client synchronisert wird.

Screenshot Plasma Vaults
Erstellung eines Plasma-Vaults in KDE

Die Erstellung sowie das anschließende Einbinden des Verzeichnisses ist über die grafische Oberfläche selbsterklärend. Sodann fülle ich das sogenannte Vault mit einigen Versuchsdaten und einem Verzeichnis mit Musikdateien, etwa 800MB groß.

In meinem verschlüsselten Verzeichnis stellt sich dies so dar: aus den 800MB und ein paar Dokumenten erstellt CryFS mehrere hundert Unterverzeichnisse mit nahezu 400.000 Dateien! Als ich den Synchronisierungsclient darüber laufen lasse benötigt dieser alleine für das Durchsuchen der Dateien und den Ableich, ohne Upload, eine knappe Stunde auf einem gut ausgestatteten Desktop PC. Hier handelt es sich wohlgemerkt wohl kaum um eine große Sammlung von Mediendateien sondern um nicht einmal ein GB an Daten. Unvorstellbar wie lange dies dauern würde, hätte man 10, 50 oder gar über 100GB an Daten. Es würde mehr als einen ganzen Tag dauern um eine Synchronisation zu verwirklichen!

Über dieses Ergebnis überrascht habe ich weiter im Netz recherchiert. Dies kann wohl kaum im Sinne des Erfinders gewesen sein. Zunächst zweifle ich an der Performanz des verwendeten Nextlcloud-Clients, doch ich finde im Netz mehrere Stellen, die von sehr ähnlichem Verhalten mit anderen Cloudspeicherdiensten berichten.
Auf dem Github des Entwicklers findet sich ein Eintrag, der mich darin bestätigt, daß CryFS – so erstaunlich es theoretisch auch sein mag – für jedes praktische Einsatzszenario eigentlich völlig ungeeignet ist.

despite its enormous potential, cryfs is an incredibly beautiful project, however, it is only theoretical. the way it does with files, makes its use in virtually all scenarios unfeasible. in practically all possible circumstances, the amount of files and the new volume generated, makes its use practically useless.

https://github.com/cryfs/cryfs/issues/70#issuecomment-678711745

Die Diskussion, welche in obenstehendem Beitrag mündet, ist seit 2016 eröffnet und die wesentlichen Probleme wurden seitdem in CryFS nicht behoben. Die schleppende Weiterentwicklung des Github-Projekts lässt leider den Schluß zu, daß mit einer Behebung nicht sehr bald gerechnet werden kann.

Verschlüsselung mittels gocryptfs

Kurz gesagt handelt es sich hierbei ebenfalls um ein neueres Projekt. Ziel ist es einen würdigen Nachfolger für das altgediente, für die Cloud jedoch ungeeignete, EncFS zu erstellen. Ein Sicherheitsaudit im Jahr 2017 scheint zu bestätigen, daß dies größtenteils gelungen ist. Mit Sirikali existiert ein einfach zu bedienendes Frontend, das Kommandozeilentool ist jedoch selbst so einfach, daß ich auf ein Frontend gerne verzichte.

Die Installation ist, soweit es sich um ein Ubuntu- oder Debianderivat handelt:

sudo apt-get install gocryptfs

Erstellung eines verschlüsselten Verzeichnisses

Angenommen, wir möchten ein Unterverzeichnis in Nextcloud anlegen in welchem unsere gesicherten Daten liegen. Nextcloud ist wahlweise mit einem Verzeichnis bzw. Speicherdienst eurer Wahl zu ersetzen.

mkdir /home/Benutzername/Nextcloud/encrypted

Ein weiteres Verzeichnis wird benötigt, in welches die verschlüsselten Daten im Klartext eingehängt werden. Um bei den Standardeinstellungen in Ubuntu zu bleiben benutze ich einfach weiterhin ein Unterverzeichnis „Vaults“ im Home des Benutzers und nenne es Nextcloud_enc.

mkdir /home/Benutzername/Vaults/Nextcloud_enc

Nun wird die Verschlüsselung initiiert.

gocryptfs -init /home/Benutzername/Nextcloud/encrypted/

Bei der Erstellung wird ein Passwort abgefragt, welches wir bei jedem Aufschalten wieder eingeben müssen. Es ist auch möglich eine Schlüsseldatei zu benutzen. Vorläufig bleiben wir jedoch beim Passwort. Selbstredend muß dieses natürlich sicher sein.

Aufschalten des verschlüsselten Verzeichnisses

gocryptfs /home/Benutzername/Nextcloud/encrypted/ /home/Benutzername/Vaults/Nextcloud_enc/

Beim Aufschalten wird das Passwort abgefragt. Der Vorgang ist so einfach, daß sich ein Frontend eigentlich nicht wirklich lohnt. Es ist auch möglich den Einhängprozess bei Systemstart zu automatisieren. Dazu vielleicht in einem späteren Artikel mehr.

Nachteile

  • Als Verschlüsselungsalgorithmus steht mit gocryptfs nur AES-256 zur Verfügung. Persönlich wünsche ich mir besonders für die Aufbewahrung in der Cloud einen Algorithmus mit hervorragender Sicherheitsbewertung. Etwa Twofish oder Serpent oder eine umfangreiche Auswahl wie Veracrypt sie bietet. Zumindest steht gocryptfs hier nicht anderen Anbietern wie Boxcryptor nach, die dasselbe benutzen.
  • Einige Sicherheitsmerkmale von CryFS fehlen hier. Möchte ich ein Video verschlüsselt hochladen, so könnte jemand aufgrund der Dateigröße erraten, daß es sich um ein Video handelt. Ich finde jedoch, daß dies ein Kompromiß ist den ich mit guten Gewissen eingehen kann.

Schreibe einen Kommentar