Zur Verschlüsselung des Cloud-Speichers von ProLinOS

Bei dem Projekt ProLinOS und dem darunter auf Basis von Nextcloud laufenden Cloud-Speicher spielt die Datensicherheit eine zentrale Rolle. Damit einhergehend stellt sich auch die Frage nach Verschlüsselungsmaßnahmen auf dem Server und den Anwendungen. Hierzu und zu dem Umstand, dass alle Serverdienste von ProLinOS grundsätzlich nur per TLS verschlüsselter Verbindung zugänglich sind und somit weder Benutzernamen und Passwörter im Klartext noch Up- oder Downloads ungesichert (Transportwegverschlüsselung) übertragen werden, habe ich bereits einiges unter dem Menüpunkt „Server-Info“  ausgeführt.

Verschlüsselte Benutzerpasswörter in der Datenbank.

Neben der Verschlüsselung per TLS zum Schutz der Kommunikation und der Serverzugänge werden zudem, wie auf dem nebenstehenden Bild ersichtlich, auch die Passwörter der Benutzer nicht im Klartext, sondern ebenfalls verschlüsselt und als Hash in der Datenbank auf dem Server abgelegt, so dass sie selbst von dem Administrator des Servers nicht eingesehen oder ausgelesen werden können.

Serverseitige Verschlüsselung (Server-Site-Encryption) aktivieren

In diesem Beitrag möchte ich jetzt auf die innerhalb von Nextcloud mögliche Verschlüsselung von Dateien durch den Server selbst eingehen und hierbei deren Nutzung auf dem Cloud-Speicher von ProLinOS sowie die bei dieser Form der Verschlüsselung zu beachtenden Besonderheiten darlegen. Um diese Verschlüsselungsform nutzen zu können, ist in Nextcloud bereits ein entsprechendes Verschlüsselungs-Modul „Default encryption module“ enthalten, welches eine asymmetrische Verschlüsselung erzeugen kann. Allerdings ist dieses Modul und damit auch die serverweite Verschlüsselung standardmässig nicht aktiviert. Der Administrator des Cloud-Speichers muss insoweit, wie dies in der nachstehenden Bilderstrecke aufgezeigt wird, zur Aktivierung im Administrationsbereich zunächst die entsprechenden Einstellungen vornehmen.

Die Aktivierung der serverseitigen Verschlüsselung durch den Administrator wirkt sich auf den gesamten Cloud-Speicher aus. Der einzelne Nutzer hat insoweit keine Möglichkeit, hier selbst zu entscheiden, ob er sie überhaupt oder in welcher Form er sie nutzen möchte. Sobald die Verschlüsselung aktiviert ist, wird für jeden Benutzer, wenn er sich nach einer entsprechenden Aufforderung, die ihm bei der nächsten Anmeldung im Webinterface eingeblendet wird, neu anmeldet, automatisch ein 4096 Bit starkes asymmetrisches Schlüsselpaar generiert, welches aus einem privaten und öffentlichen Schlüssel besteht. Der erzeugte private Schlüssel wird dann wiederum mit dem Passwort des jeweiligen Benutzers verschlüsselt (AES-256) und anschliessend in seinem persönlichen Datenverzeichnis abgelegt. Neben diesem Schlüsselpaar werden zudem noch einige weitere Schlüsselpaare erzeugt, um Freigaben für andere Benutzer und auch das öffentliche Teilen sicher zu ermöglichen.

Nach der Initialisierung des Schlüsselpaares können alle ab diesem Zeitpunkt hochgeladenen Dateien des Benutzers auf dem Cloud-Speicher mit seinem öffentlichen Schlüssel verschlüsselt und dann nur mit seinem privaten Schlüssel wieder entschlüsselt werden, wobei zu dessen Freigabe noch sein Passwort erforderlich ist, welches er neben dem Benutzernamen eingibt, wenn er sich in den Cloud-Speicher zu seinem Account anmeldet. Obwohl jetzt seine Dateien auf dem eigenen Server bzw. Cloud-Speicher verschlüsselt abgelegt sind, erhält der Benutzer nach dem Einloggen in seinen Account ebenso wie bei der Synchronisation mit seinen diversen Geräten (Desktoprechner, Laptop, Tablet oder Smartphone) immer unverschlüsselte Dateien, da Nextcloud hier als Verschlüsselungsgateway agiert und die serverseitige Ver- und Entschlüsselung künftig im Hintergrund automatisch abläuft. Für den einzelnen Benutzer insoweit durchaus eine sehr komfortable Angelegenheit, da er zur Nutzung der Verschlüsselung keine zusätzlichen Kennwörter eingeben, sondern sich wie gewohnt lediglich mit seinem Benutzernamen und Passwort am Cloud-Speicher anmelden muss.

Serverseitige Verschlüsselung von Fremdspeichern

Mit Hilfe der in Nextcloud verfügbaren und auf dem Cloud-Speicher von ProLinOS aktivierten App „External storage support“ besteht für einen Benutzer die Möglichkeit, über seine persönlichen Einstellungen diverse externe Speicher (FTP, SFTP, SMB/CIFS, etc.) und Speicherdienste (Google-Drive, Dropbox oder Amazon S3) nahtlos in seinen Cloud-Speicher einzubinden. Derartige mit ihren entsprechenden Zugangsdaten eingebundene Fremdspeicher erscheinen dann in der Dateiansicht des Webinterface seines Cloud-Speichers als normale Ordner, mit denen er wie üblich arbeiten und dort Dateien ablegen, erstellen oder löschen kann. Hier liegt auch der eigentliche Sinn oder Hauptzweck der in Nextcloud integrierten serverseitigen Verschlüsselung, da damit die Möglichkeit eröffnet wird, in den eigenen Cloud-Speicher eingebundene aber nicht selten wenig vertrauenswürdige externe Speicher oder Speicherdienste kommerzieller Anbieter und den damit häufig bis zu einem bestimmen Umfang kostenlos verfügbaren Speicherplatz künftig sicher und datenschutzkonform zu nutzen. Hier hat der Benutzer zudem auch die Möglichkeit, bei der Einbindung eines jeden Fremdspeichers selbst zu entscheiden, ob er für ihn die verfügbare serverseitige Verschlüsselung nutzen und aktivieren will.

Die Sicherheit bei dieser Form der Nutzung externer Speicherdienste ist in dem Umstand begründet, dass die Ver- und Entschlüsselung nur auf dem Server des eigenen Cloud-Speichers erfolgen kann, da die erforderlichen Schlüssel dort in den persönlichen Datenverzeichnissen eines jeden Nutzers abgelegt sind und diese nie verlassen. Dies führt zu dem Ergebnis, dass die Dateien bereits verschlüsselt zu dem externen Speicher, von dem in der Regel nicht bekannt ist, wo in dieser Welt er sich auf welchem Server befindet, übertragen werden und insoweit dort auch immer nur verschlüsselt abgelegt werden. Die Betreiber der externer Speicherdienste haben ebenso wie irgendwelche geheimen Dienste nun keine Möglichkeit mehr, die Inhalte der dort abgelegten Dateien einzusehen oder zu scannen, und auch eine Entschlüsselung ist auf dem externen Server nicht möglich, da die hierzu erforderlichen Schlüssel auf ihm ja nicht vorhanden sind.

Natürlich könnte, wie bei jeder Verschlüsselung versucht werden, diese zu brechen. Bei der gewählten Verschlüsselungsart und fehlender Kenntnis über den Inhalt der zu brechenden Datei wäre hierzu aber bei insoweit unsicherer Erfolgsaussicht über einen langen, letztlich nicht vorhersehbaren Zeitraum, ein enormer finanzieller Aufwand für die einzusetzende Rechenleistung nebst der hierzu benötigten Energie zu betreiben. Ein wohl wenig sinnvolles Unterfangen. Schlüssel werden daher eher gestohlen und nicht gebrochen oder dem arglosen Benutzer von Kommunikations- oder Speicherdiensten wird vollmundig eine sichere Verschlüsselung vorgegaukelt, bei der sich böswillige Betreiber ebenso wie geheime Dienste ein Hintertürchen offen halten.

Keine serverseitige Verschlüsselung des Hauptspeichers bei ProLinOS

Was bei der serverseitigen Verschlüsselung von externen Speichern fraglos eine feine Sache und das tragende Argument für deren Sicherheit ist, ist bei der Frage, ob auch die Daten auf dem eigenen Server bzw. Cloud-Speicher serverseitig verschlüsselt werden sollten, zugleich ein Argument gegen die Sinnhaftigkeit einer solchen Verschlüsselung, da sich alle Schlüssel hierbei natürlich ebenfalls auf diesem Server befinden.

Grundsätzlich führt eine auf dem eigenen Server bzw. Cloud-Speicher aktivierte serverseitige Verschlüsselung der Benutzerdateien (Hauptspeicher)  zu dem selben Ergebnis wie bei eingebundenen und verschlüsselten Fremdspeichern. Ab der Initialisierung der Schlüssel werden die zu den Hauptspeichern der Benutzer hochgeladenen Dateien automatisch verschlüsselt auf dem Server abgelegt und können fortan selbst von dem Administrator des Servers, auf dem der Cloud-Speicher läuft, nicht mehr eingesehen werden. Die Benutzer selbst erhalten nach dem Einloggen mit ihrem Passwort in ihren Account ebenso wie bei der Synchronisation mit ihren diversen Geräten automatisch immer unverschlüsselte Dateien. Soweit also ebenfalls eine feine Sache für Benutzer, die z.B. bei dem Projekt ProLinOS den darunter laufenden Cloud-Speicher mitbenutzen und ihre Dateien frei nach dem Motto „Damit eigene Dateien eigene Dateien bleiben“, gerne möglichst sicher und vor den Blicken anderer geschützt ablegen möchten.

Wie einleitend bereits angeführt, steht gegen die Sinnhaftigkeit einer solchen Verschlüsselung allerdings das Argument, dass hierbei anders als bei den eingebundenen Fremdspeichern die Situation gegeben ist, dass auch alle Schlüssel auf dem gleichen Server vorhanden sind, auf dem der Cloud-Speicher läuft. Daher würde nicht die gleiche Sicherheit wie bei externen Speichern gegeben sein, da zumindest für einen böswilligen Administrator des Servers oder einen Dritten, der in den Server eingebrochen ist, theoretisch die Möglichkeit besteht, auf die auf dem Server liegenden Schlüssel zuzugreifen und damit die Benutzerdateien zu entschlüsseln und einzusehen. Völlig entkräften lässt sich dieses Argument nicht. Allerdings wäre ein solches Vorgehen auch nicht mal ebenso zu bewerkstelligen und würde neben den nötigen Kenntnissen und dem zu betreibenden Aufwand natürlich auch einiges an krimineller Energie erfordern. Letztlich ist es für den Mitbenutzer eines Servers bzw. Cloud-Speichers vorrangig wohl immer eine Frage der Vertrauenswürdigkeit und der Fähigkeit des Administrators seine Server und Cloud-Speicher wirksam zu schützen.

Um falsche Vorstellungen über die Leistungsfähigkeit und die Auswirkungen einer serverseitigen Verschlüsselung zu vermeiden, führe ich nachstehend noch einige Punkte auf, die im Hinblick auf eine Aktivierung der serverseitigen Verschlüsselung von Bedeutung sind:

  • Die Verschlüsselung von Dateien auf externen Speichern hat zur Folge, dass dort die Ausführung der Servicedienste wie Voransichten, Bearbeiten oder Teilen nicht mehr funktionieren bzw. keinen Sinn machen, da nur verschlüsselte Dateien geteilt würden, die ein Empfänger nicht entschlüsseln könnte. Sollte ein Client des externen Speicheranbieters zur Synchronisation der Dateien mit einem PC genutzt werden, so würden auch nur verschlüsselte Dateien synchronisiert und auf dem PC keine Möglichkeit zu deren Entschlüsselung bestehen. Unverschlüsselte Dateien erhält ein Benutzer nur noch auf seinem Cloud-Speicher bei ProLinOS, auf dem die serverseitige Verschlüsselung vorgenommen wurde und auf dem dann auch die Servicedienste funktionieren, oder auf seinem PC über den Sync-Clienten, der mit seinem Cloud-Speicher bei ProLinOS zusammenarbeitet.
  • Das Verschlüsseln der Dateien erhöht die Dateigröße um bis zu 35% und führt zu einem höheren Speicherplatzverbrauch, was insbesondere auch bei der Nutzung von Fremdspeichern zu beachten ist, da dort verschlüsselt abgelegte Dateien dann ebenfalls mehr Speicherplatz beanspruchen.
  • Mit einer serverseitigen Verschlüsselung werden nur die Inhalte von Dateien verschlüsselt. Die Dateinamen und die Ordnerstruktur bleiben unverschlüsselt und sind insoweit sichtbar.
  • Mit der serverseitigen Verschlüsselung werden nicht alle Dateien verschlüsselt. Alte Dateien im Papierkorb, Miniaturansichten der Galerie-App, Vorschauen der Datei App, der Suchindex der Volltextsuche App und die Daten der App eines Drittanbieters bleiben unverschlüsselt.
  • Die serverseitige Verschlüsselung des Hauptspeichers kann dazu führen, dass die eine oder andere App eines Drittanbieters nicht funktioniert.

Die Entscheidung darüber, ob nun alle Dateien auf Haupt- und Fremdspeichern oder nur solche auf Fremdspeichern verschlüsselt abgelegt werden können, ist von dem Administrator des Cloud-Speichers zu treffen. Da der eigentliche Zweck einer serverseitigen Verschlüsselung für mich fraglos in der Absicherung von genutzten Fremdspeichern liegt und die Verschlüsselung des Hauptspeichers abgesehen von der Sinnhaftigkeit mit einigen gravierenden Funktionsbeeinträchtigungen verbunden ist, habe ich mich entschlossen, auf dem Cloud-Speicher von ProLinOS die Verschlüsselung des Hauptspeichers nicht zu aktivieren. Ein Benutzer hat aber hinsichtlich der von ihm eventuell genutzten Fremdspeicher die Möglichkeit selbst zu entscheiden, ob und welchen seiner Fremdspeicher er verschlüsseln möchte oder nicht, was insoweit letztlich ja auch dem eigentlichen Sinn und Zweck einer serverseitigen Verschlüsselung entspricht.

Passwortwiederherstellung bei aktivierter Verschlüsselung

Von ganz besonderer Bedeutung ist im Rahmen der aktivierten serverseitigen Verschlüsselung die Passwortwiederherstellung, da bei verschlüsselten Dateien ein Passwort nicht in der ansonsten übliche Weise zurückgesetzt werden kann, falls ein Benutzer es verloren hat und ein neues benötigt. Hier ist mit dem Wiederherstellungsschlüssel noch ein weiterer Schlüssel erforderlich, der zunächst von dem Administrator zu erzeugen und auch zu aktivieren ist, was auf dem Cloud-Speicher von ProLinOS grundsätzlich auch der Fall ist. Dieser zusätzliche Verschlüsselungsschlüssel, kann dann zum Verschlüsseln von Dateien benutzt werden und ermöglicht dem Administrator, da er den Schlüssel ja kennt, die Wiederherstellung der damit verschlüsselten Benutzerdateien, falls dies zur Passwortwiederherstellung erforderlich werden sollte. Hierzu wählt der Administrator in der nur ihm zugänglichen Benutzerverwaltung den entsprechenden Benutzer aus, vergibt für ihn ein neues Passwort und startet dann mit der Eingabe des Wiederherstellungsschlüssels die Passwortänderung. Hierbei werden die Benutzerdateien entschlüsselt, das neue Benutzerpasswort gesetzt und die Dateien sodann wieder verschlüsselt. Das neue Passwort muss dann natürlich dem Benutzer mitgeteilt werden, der es auch sofort wieder ändern und ein persönliches Passwort setzen kann.

Passwort-Wiederherstellung aktivieren oder nicht.

Sobald der Administrator des Cloud-Speichers den Wiederherstellungsschlüssel erzeugt und aktiviert hat, erscheint in den persönlichen Einstellungen der Benutzer eine weitere Einstellungsfläche mit der Bezeichnung „Basisverschlüsselungsmodul“, in der die Passwortwiederherstellung zunächst deaktiviert ist. Es ist insoweit jetzt die Entscheidung des Benutzers, ob er die Passwortwiederherstellung nutzen und aktivieren möchte oder nicht. Hierbei muss sich der Benutzer bewusst sein, dass ohne die Passwortwiederherstellung seine eventuell von ihm auf genutzten Fremdspeichern verschlüsselt abgelegten Dateien bei einem Passwortverlust unwiederbringlich verloren sind. Sollte er zudem kein entschlüsseltes Backup angelegt haben, dann ginge absolut nichts mehr. Andererseits ist die Aktivierung natürlich auch wieder eine Sache der Vertrauenswürdigkeit, da der Administrator theoretisch die Möglichkeit hat, über den Wiederherstellungsschlüssel die Dateien zu entschlüsseln und einzusehen.