End-to-End-Verschlüsselung / E2E bei Nextcloud 14 – So funktioniert es

11 September 2018 5 Kommentare Autor: Jürgen (jdo)

Wie in der Übersicht zu Nextcloud 14 versprochen, gibt es hier einen separaten Beitrag zur End-to-End-Verschlüsselung oder E2E oder Ende-zu-Ende-Verschlüsselung. Für mich persönlich ist es eine der attraktivsten Neuerungen bei der Nextcloud. Klären wir zunächst, was End-to-End-Verschlüsselung in diesem Zusammenhang bedeutet oder wie E2E mit der Nextcloud 14 funktioniert.

Eigentlich wollte ich zuerst auf die visuellen Änderungen der Web-Oberfläche und so weiter eingehen, dann hat mich die Neugier zu E2E aber nicht losgelassen.

Wichtiger Hinweis! Beim mir hat das Aktivieren der E2E App dazu geführt, dass die Versionierung NICHT mehr funktionierte! So ganz astrein ist das Ding noch nicht und ich rate Dir, wirklich nur auf einer Test-Instanz damit zu spielen.

Was ist End-to-End-Verschlüsselung?

Ganz einfach gesagt darfst Du einen Ordner anlegen und dann bestimmen, dass er End-to-End Verschlüsselt wird. Die Dateien in dem Ordner werden zwar auf den Server hochgeladen, allerdings so verschlüsselt, dass nicht einmal der Administrator die Datei lesen oder entschlüsseln kann. Der Schlüssel liegt nämlich in Deiner Hand und damit ist E2E die sicherste Methode, wie Du Daten auf der Nextcloud speichern kannst. Auf jeden Fall haben neugierige Augen oder Schnüffler keine Chance, Deine sensiblen Daten zu lesen.

Sehr wichtig! Verlierst Du den Schlüssel oder die sogenannte Mnemonic-Passphrase, lassen sich Deine Daten nicht mehr entschlüsseln. Sie wäre in so einem Fall verloren! Später ausführlichere Informationen dazu.

Ich habe eine separate Instanz genommen und nicht meine produktive Nextcloud 13, deswegen habe ich mich komplett austoben können.

Wie funktioniert das bei der Nextcloud 14?

Wer mit dem Begriff asynchrone Verschlüsselung etwas anfangen kann, der hat gerade schon gewonnen. Jeder Benutzer bekommt eine einzigartiges Schlüsselpaar (public / private Key), sobald er die End-to-End-Verschlüsselung erstmalig aktiviert (erkläre ich später noch ausführlicher).

Der public Key oder öffentliche Schlüssel wird an den Server geschickt und daraus wird ein Zertifikat generiert. Die anderen Clients des Nutzers benutzen die gleiche Methode, um auf die verschlüsselten Daten zugreifen zu können. Dazu brauchen sie aber den private Key und den hast eben (hoffentlich) nur Du.

Ohne privaten Schlüssel gibt es keinen Zugriff auf die Daten.

Was bringt mir E2E?

In so speziellen Ordner sind nicht nur die Dateien verschlüsselt, sondern auch die Ordner-Struktur ist nicht sichtbar. Das Ding ist für den Server eine komplette Black Box. Es ist laut den Entwicklern zwar möglich, einen Generalschlüssel zu benutzen, allerdings ist das nicht der Standard. Sollte das der Fall sein, bekommen die Anwender aber einen Warnhinweis. Im Endeffekt ist es Quatsch, weil damit das komplette E2E-Konzept für die Katz ist. Ich kann mir aber schon vorstellen, dass man das in einer Familie so abspricht, dass im Notfall Dateien entschlüsselt werden können. Aber sind sie nicht so wichtig, müssten sie eben in keinen speziellen E2E-Ordner. Muss jeder selbst wissen.

Je mehr Regierungen und Geheimdienste nach Backdoor oder Hintertür schreiben, desto wichtiger wird E2E. Es sind Deine Daten und die gehören keinen etwas an – Punkt! Mit End-to-End-Verschlüsselung kannst Du Deine Daten bald auch auf gehosteten Servern speichern und ohne Generalschlüssel kann keiner etwas damit anfangen. Ich traue so Anbietern wie Dropbox einfach nicht und so richtig lieb scheinen die Linux sowieso nicht mehr zu haben.

Weiterhin kannst Du ein Backup Deiner Nextcloud-Daten komplett auf eine Online-Festplatte legen und auch da sind die verschlüsselten Daten sicher.

Neue Geräte oder Clients lassen sich sehr einfach einrichten. Die Software fragt Dich nach Deiner Mnemonic-Passphrase und wird sich dann entsprechend synchronisieren.

Die eingesetzten Bibliotheken für die Verschlüsselung gibt es für Linux, PHP 7.0+, Android 6.0+, macOS 10.9+, iOS 9+ und Windows 7+.

Müssen wir bei End-to-End-Verschlüsselung Kompromisse eingehen?

Ja, das müssen wir. Du kannst mit E2E sensible Dateien sehr sicher speichern, allerdings opferst Du damit gewisse Funktionalitäten. Das ist aber keine Bosheit, sondern aus Sicherheitsgründen der Fall. In solche E2-Ordner würdest Du zum Beispiel die Datenbank Deines Passwort-Managers legen. Die geht nur Dich etwas an und ist damit doppelt geschützt. Auf jeden Fall gehen in solchen speziellen Ordner die nachfolgenden Funktionen verloren:

  • Zugriff auf die Dateien über die Web-Oberfläche – es funktioniert nur noch über die Clients, die den Schlüssel zu diesem Ordner haben. Das ist der ganze Witz bei E2E. In diesem Fall könnte man endlich mal sagen: It’s a feature not a bug!
  • Serverseitiger Papierkorb (gelöschte Dateien)
  • Versionierung auf dem Server
  • Suche auf dem Server
  • Serverseitige Vorschau
  • Teilen der Datei mit Gruppen
  • Teilen individueller Dateien im E2E-Ordner

Außerdem braucht Verschlüsselung immer ein paar zusätzliche Ressourcen. Damit sind sowohl Rechenleistung als auch Storage gemeint. Wie stark Du das merkst, hängt von Computer, Anzahl der Leute, Aktivitäten und natürlich den Dateien selbst ab.

Mein Server verträgt die zusätzliche Last locker

Ich kann Dir aber verraten, dass sich mein VPS Server bei Contabo mit 4 Kernen und 12 GByte RAM ziemlich langweilt, obwohl der Auftritt hier und ein paar andere Sachen ebenfalls darüber laufen. Ein Docker Container mit Collabora Online läuft auch für direkte Office-Integration in die Nextcloud 13 und trotzdem gehen meine CPUs kaum über 10 Prozent Auslastung (eine springt vielleicht mal zwischen 10 und 20) und von den 12 GByte RAM sind auch noch 10 frei. In dem Fall kann ich die Verschlüsselung locker noch mit einschalten. Der Server verträgt das. Beim Screenshot unten ist sogar ein Dokument via Collabora Online offen, ich speichere gleichzeitig über WordPress und das ist ein eher ausgelasteter Zustand.

Der Server ist nicht ausgelastet

Der Server verträgt das, aber ein Zombie?

Gleich mal nachsehen, was denn der Zombie ist. Einer geht ja, aber wenn es eine Herde wird -> The Walking Dead lässt grüßen. 🙂

Wie schaut das bei einem Raspberry Pi aus?

Ich weiß es ehrlich gesagt nicht. Natürlich kommt es zunächst einmal darauf an, welche Version des Raspberry Pi Du benutzt. Obwohl ein Pi 1 für Pi-Hole noch taugt, ist er mit einer Nextcloud schon am Schnaufen.

Die Raspberry Pis mit den Multi-Cores machen sich da schon besser. Im Endeffekt hilft nur ausprobieren. Ich würde die miroSD-Karte klonen und dann einfach eine neue Instanz einer Nextcloud aufsetzen. Danach die Verschlüsselung aktivieren und einfach ein bisschen Last drauf geben. Dann siehst Du schon, ob die Verschlüsselung läuft oder nicht.

An dieser Stelle ist aber auch zu bedenken, wo der Raspberry Pi steht. Ist das Ding bei Dir im Wohnzimmer und Du greifst über das Internet darauf zu, dann hast Du sowieso die Kontrolle über Deine Daten. Klar, wenn das Gerät gestohlen wird… Aber hier muss man wohl ein bisschen die Kirche im Dorf lassen.

Wie richte ich die End-to-End-Verschlüsselung ein?

Wichtig bei der End-to-End-Verschlüsselung ist, dass Du die Serverseitige Verschlüsselung einmal aktivierst, damit die Schlüssel generiert werden! Das ist so nicht sofort ersichtlich und ehrlich gesagt ist das ein bisschen lästig. Aktiviere ich die Apps für die Verschlüsselung, erwarte ich eigentlich, dass ich

  • Entweder einen Hinweis darauf bekomme
  • Die Schlüssel von der anderen App generiert werden

Ich hatte aber das Verschlüsselungsmodul vorher aktiviert und kam dann nicht mal mehr in meine Einstellungen, weil sie nicht mehr klickbar waren. Somit bekam ich zwar diese Warnmeldung, konnte das Modul über die Web-Oberfläche aber nicht mehr deaktivieren. Die Fehlermeldung ist dazu noch irreführend:

Falscher privater Schlüssel für die Verschlüsselungs-App. Bitt aktualisiere Deinen privaten Schlüssel in Deinen persönlichen Einstellungen um wieder Zugriff auf die verschlüsselten Dateien zu erhalten.

Die Fehlermeldung bei der Verschlüsselung ist irreführend

Also irgendwas mit falscher Schlüssel, aber sehr irreführende Fehlermeldung

Also ging es zunächst mal auf die Kommandozeile und das Modul für Verschlüsselung wurde mit nachfolgendem Befehl deaktiviert.

sudo -u www-data php occ app:disable encryption

Danach habe ich mich wieder auf die Web-Oberfläche begeben und zunächst die Serverseitige Verschlüsselung aktiviert. Meine Schritte im Detail:

  • Öffne als Administrator die Einstellungen und klicke unter Verwaltung -> Sicherheit. Dort aktivierst Du die Serverseitige Verschlüsselung.
  • Nun öffnest Du die Apps und aktivierst das Modul Default encryption module.
  • Die Serverseitige Verschlüsselung benutzt es automatisch. Das Ganze sieht bei mir dann so aus:
Willst Du End-to-End-Verschlüsselung nutzen, muss die serverseitige Verschlüsselung aktiv sein

Serverseitige Verschlüsselung muss für End-to-End-Verschlüsselung aktiviert sein

Benutzerverzeichnisse verschlüsseln – bringt das was?

Per Standard ist außerdem aktiviert, dass die Benutzerverzeichnisse verschlüsselt werden. Sie ist so beschrieben:

Die Aktivierung dieser Option verschlüsselt alle Dateien die auf dem Hauptspeicher gespeichert sind, ansonsten werden nur Dateien auf dem externen Speicher verschlüsselt

Das bedeutet, dass alle Dateien verschlüsselt werden, die auf den Server kommen. Bist Du aber Herr über den Server und benutzt kein externes Storage, ist die Funktion ein bisschen obsolet. Es gibt hierfür einen Generalschlüssel, der sich auf dem Server befindet.

Sicherst Du den kompletten Server auf ein externes Storage, würdest Du damit auch den Generalschlüssel sichern. Überlege Dir gut, ob Du die Funktion brauchst. Ich habe die Verschlüsselung der Benutzerverzeichnisse deaktiviert, weil sie für mich gerade durch End-to-End-Verschlüsselung obsolet ist. Ich kann ja nun sehr gezielt sensible Daten verschlüsseln.

Das Modul für die End-to-End-Verschlüsselung aktivieren

Da Du nun die allgemeine Verschlüsselung aktiviert hast, besuchst Du abermals die Apps. Suche einfach nach encrypt und Du wirst das Modul End-to-End Encryption finden. Klicke auf Herunterladen und aktivieren und das war es im Prinzip schon.

Suche nach dem Modul End-to-End Encryption und aktiviere es

Modul End-to-End Encryption herunterladen und aktivieren

Herzlichen Glückwunsch! Die End-to-End-Verschlüsselung ist auf dem Server nun scharf geschaltet. Ab hier geht es um die Clients. Klären wir aber zunächst das Rätsel mit der Mnemonic-Passphrase

Was ist diese Mnemonic-Passphrase?

Mnemonic ist Englisch für Gedächtnisstütze oder Eselsbrücke. Einfach gesagt ist es ein Passwort, das aus Worten besteht und somit lesbar ist oder das Du Dir einfacher merken kannst. Wer sich mit Kryptowährungen beschäftigt, der trifft dauernd auf solche Mnemonic-Passwörter.

Ich habe in der Zwischenzeit ehrlich gesagt so viele dieser Mnemonic-Passphrasen, dass ich mir keine einzige davon merken kann. Dafür gibt es ja Lösungen wie zum Beispiel KeePassXC. Dort sind meine Mnemonic-Passwörter sicher aufgehoben.

Das Mnemonic-Passwort bei der End-to-End-Verschlüsselung für die Nextcloud besteht aus 12 Wörtern. So, haben wir das nun auch geklärt.

Wichtig! Schreibe Dir die Mnemonic-Passphrase unbedingt auf! Geht sie verloren, lassen sich Deine Daten aus den E2E-Ordnern nicht mehr entschlüsseln!

Hier gibt es aber gleich eine gute Nachricht: Solange mindestens ein Client noch mit der Nextcloud verbunden ist, kannst Du das Mnemonic-Passwort wiederherstellen oder zumindest Deine Daten entschlüsseln!

Wie seht es mit den Clients bei E2E-Verschlüsselung aus?

Ich möchte gleich vorweg nehmen, dass der Android Client schon sehr gut funktioniert und der für die Desktops noch etwas Schluckauf hat. Deswegen möchte ich zwischen Android und Desktop strikt trennen, weil sich die Desktop-Version auch noch in einer Entwicklungsphase befindet.

Es ist egal, mit welchem Client Du zuerst einen Ordner verschlüsselst. Auf jeden Fall wird dann die Verschlüsselung eingerichtet und die Mnemonic-Passphrase festgelegt.

E2E mit Nextcloud Client für Android

Ich habe mit dem Android Client begonnen. Du kannst nur einen leeren Ordner als verschlüsselt deklarieren! Also habe ich den Ordner mit dem kreativen Namen test angelegt und ihn danach als verschlüsselt festgelegt.

Ich verschlüssele den leeren ordner test.

Der leere Ordner test wird verschlüsselt

Da meldet sich doch gleich die Nextcloud und präsentiert mir meine Mnemonic-Passphrase. Schreibe sie Dir am besten sofort auf und lege sie an einem sicheren Ort ab, weil Du brauchst sie vielleicht wieder.

Das Mnemonic-Passwort ist wichtig!

Das ist Dein Mnemonic-Passwort – gut merken!

Nachdem Du das Passwort aufgeschrieben hast, tippst Du auf Verschlüsselung einrichten. Der Ordner test wird nun mit einem Schloss versehen.

Alle Dateien, die Du mit Deinem Client nun in den Ordner test legst, werden verschlüsselt. Das gilt auch für Unterordner und so weiter. wie gesagt sieht der Server nur noch, wie viele Objekte im Ordner test liegen. Er kann aber nicht bestimmen, um welche Dateiarten es sich handelt und ob es Ordner sind.

Du kannst an dieser Stelle auch mit der Web-Oberfläche versuchen, den verschlüsselten Ordner test zu öffnen. Das geht nicht mehr, da er End-to-End verschlüsselt ist.

Die Verschlüsselung aufheben darfst Du aber. Tippe dazu die drei Punkte beim Ordner test an und Du bekommst die entsprechende Option.

Verschlüsselung wieder aufheben

Verschlüsselung wieder aufheben

Was funktioniert nicht mit der Android App?

Ich kann lediglich nicht finden, wie ich mir mit der momentan aktuellen Android App die Menemonic-Passphrase anzeigen lassen kann. Solltest Du sie vergessen und willst einen weiteren Client einrichten, bleibt Dir nur einer Wahl: Du musst die Daten entschlüsseln, weil Verschieben keine Option ist.

Mir stehen die Optionen zur Verfügung, die verschlüsselten Dateien mit anderen teilen zu können. Das geht zwar, aber die andere Person kann mit der Daeti natürlich nichts anfangen. Um Verwirrung zu vermeiden, sollte die Option einfach gar nicht angeboten werden. Oder sehe ich das falsch?

End-to-End-Verschlüsselung Nextcloud Client für Linux

Beim Linux-Client 2.3.3 habe ich keine Option gefunden, die End-to-End-Verschlüsselung zu aktivieren. Sie wird nicht unterstützt. Deswegen musst Du Dir eine test-Version des Linux Clients 2.5 herunterladen. Ich habe mich für den Weg des geringsten Widerstandes entschieden und ein AppImage des Daily Builds genommen. Die Software ist auf jeden Fall so weit, dass wir damit spielen können.

Sobald Du den Client mit dem Server verbindest, erkennt der Client sofort, dass es einen E2E-Ordner gibt und er bittet um Dein Mnemonic-Passwort. Das hast Du Dir ja aufgeschrieben und kannst es eintippen.

Du hast auch die Möglichkeit, Ordner mit dem Desktop Client zu verschlüsseln. Klicke mit der rechten Maustaste auf den Ordner und danach auf encrypt.

E2E-Verschlüsselung mit dem Linux Client

Ordner mit dem Linux Client E2E verschlüsseln

Während ich mir bei der Android App für die Nextcloud das Mnemonic-Passwort derzeit nicht anzeigen lassen kann, ist das beim Desktop-Client aber schon möglich.

So kommst Du an die E2E Mnemonic

E2E Mnemonic anzeigen

Hier ist noch ein Screenshot, das Dir zeigt, wie das Wechselspiel zwischen Client, Dateimanager und Server aussieht. Auf dem Server sind die Daten nicht identifizierbar.

Nextcloud 14: End-to-End verschlüsselt, Client und Server

Nextcloud 14: End-to-End verschlüsselt, Client und Server

Was funktioniert beim Desktop Client für Linux noch nicht?

Der Android Client kann schon mit Unterordnern umgehen, der Test-Client 2.5.0daily für Linux noch nicht. Ich kann zwar Unterordner anlegen, aber die werden nicht synchronisiert. Der Client hängt sich irgendwann in einer Warteschleife auf.

Natürlich kann ich in meinen Ordnern Dateien hin- und herschieben (verschieben ist beim Android Client keine Option), aber auch da hängt sich die Synchronisation auf.

Mit dem Desktop Client kann ich momentan aber keine Order entschlüsseln. Mit der Android-Version funktioniert das.

Fazit zur End-to-End-Verschlüsselung

Ja, OK, es ist noch in einer Testphase. Versteh mich bitte nicht falsch, ich liebe das Konzept und die Möglichkeit, meine Daten End-to-End verschlüsseln zu können, zumindest die wichtigsten oder sensibelsten. Allerdings ist die Einrichtung im Moment schon noch etwas holprig, weil es zu viele Stolperfallen gibt.

Hat sich der Administrator aber erst einmal durch die Konfiguration gebissen, dann ist es über die Android App eigentlich recht einfach, die Verschlüsselung einzurichten. das funktioniert wirklich gut. Der Nextclouod Client für Desktops ist noch in der Entwicklung und End-to-End-Verschlüsselung funktioniert im Ansatz, aber die Funktionalität des Clients ist noch nicht vollständig. Warten wir auf die stabile Version, weil die zählt im Endeffekt. Der Weg ist auf jeden Fall richtig und bald kannst Du wichtige Daten so verschlüsseln, dass nur noch Du auf sie zugreifen kannst.

Bei den Clients wäre eigentlich ein Hybrid aus Android App und Desktop-Software ideal. Die beiden würden sich genau so ergänzen, ein Ganzes zu ergeben. Von daher bin ich da sehr zuversichtlich, weil eigentlich schon alle funktioniert, aber eben nicht in einer Software.

Nette Pi-Konstellation

Du kannst gerne Deinen Senf zu diesem Beitrag geben: Hier geht es zu den Kommentaren




Schreiben macht durstig! Eine kleine Erfrischung kann daher nie schaden. Wem dieser freie Artikel gefallen hat, der darf mir gerne einen frisch gezapften Hopfen-Tee ausgeben (Paypal - der Spenden-Knopf
)
oder

Bitcoin-Adresse: 17F1hqc9LgsAC19DPv5PaRbqsEhuE8AmAA

Ethereum-Adresse: 0x9cc684575721dc07b629ad5d81b43ab4b992e76e

Verge-Adresse: DJaJtZeW494xhnRJJt19Lnt2R5pz7zRp5A

Ich freue mich über jede noch so kleine Spende. Vielen Dank und Prost!

 
 Alle Kommentare als Feed abonnieren

5 Kommentare zu “End-to-End-Verschlüsselung / E2E bei Nextcloud 14 – So funktioniert es”

  1. Eny sagt:

    Hey, danke für den ausführlichen Bericht. Ich habe eine Frage die mich schon lange beschäftigt und bis jetzt keine Lösung gefunden. Ich habe am Android Client die Verschlüsselung in Gang gesetzt. Mir natürlich nicht das Wort gemerkt/aufgeschrieben. Ich war zu schnell mit dem klicken. Also dennoch läuft es wie es soll, nur ist das so ja ziemlich leichtsinnig weiter zu machen. Gibt es keine Möglichkeit diesen Vorgang zurück zu setzten? Also ich will einfach noch mal die Möglichkeit haben einen neuen Schlüssel zu generieren, um dann die Verschlüsselung zu nutzen.

    MfG Eny

    • jdo sagt:

      So wie ich das sehe, ist das im Moment nicht möglich. Es soll aber künftig eine Schaltfläche kommen, mit der sich die Passphrase anzeigen lässt. Das heißt für den Moment:
      1. Du entschlüsselt die Daten und benutzt E2E derzeit nicht, weil wenn Dein Android-Gerät verloren / kaputt geht, sind die Daten weg. Das würde ich nicht riskieren.
      2. Du legst einen neuen User an und machst das mit der Passphrase noch einmal und stellst Dein System auf den neuen User um. Es gibt pro User eine separate Passphrase.

  2. Noname sagt:

    Vielen Dank für deine Anleitung.
    Kann ich das auch über den Webbrowser einrichten? Ich bin nach deiner Anleitung vorgegangen und würde jetzt gerne im Webbrowser im Pulldown "Auf verschlüsselt" festlegen, dies wird mir leider nicht angeboten.
    Was habe ich übersehen?

    • jdo sagt:

      Hi, nein das geht nicht. Ende-zu-Ende verschlüsselt heißt von der Nextcloud zu einem Client. Der Webbrowser kommuniziert direkt auf Server-Ebene. Würde hier die Verschlüsselung funktionieren, müsste der Server verschlüsseln und entschlüsseln und damit wäre das Konzept obsolet.

      Es würde nur funktionieren, wenn es für den Browser einen Client gäbe, das ist aber nicht der Fall. End-to-End-Verschlüsselung funktioniert nur mit den mobilen oder den Desktop-Clients.

Antworten