Login
Newsletter
Werbung

Di, 15. August 2017, 14:39

Software::Kernel

ZFS für Linux erhält Verschlüsselungsoption

Das Projekt »ZFS on Linux« hat für die ZFS-Dateisystemimplementation für Linux eine Verschlüsselungsoption entwickelt. Ursprünglich schon mindestens seit 2011 in Solaris vorhanden, musste der Code für Linux teilweise neu geschrieben werden, was sich über Jahre hinzog.

ZFS on Linux

»ZFS on Linux« ist eine von der Referenzimplementation OpenZFS abgeleitete ZFS-Dateisystemimplementation für Linux. Wie die Referenz steht sie unter der freien, aber zur GPLv2 inkompatiblen Lizenz CDDL und kann daher nicht zu einem Bestandteil des Kernels werden.

Die Möglichkeit, das Dateisystem zu verschlüsseln, ist schon fast sechs Jahre lang ein Wunsch der Nutzergemeinschaft. Jetzt ist dieser Wunsch in Erfüllung gegangen. Die Erleuchtung kommt in Form eines Patches, der 163 Dateien betrifft und über 16.000 Zeilen Code ändert. Interessanterweise ist Brian Behlendorf, einer der Gründer des Apache-Webserver-Projekts und der Apache Software Foundation und aktuell auch Leiter des Hyperledger-Projekts der Linux Foundation, einer der Haupt-Begutachter des Codes, der in letzter Zeit maßgeblich von Tom Caputi entwickelt wurde.

Die Geschichte dieses Codes reicht allerdings schon weiter zurück. Wie der Diskussion entnommen werden kann, gab es Verschlüsselung in ZFS bereits in der ZFS Pool Version 30 in Solaris, allerdings als proprietärer Code. Freigegeben wurde dieser Code im Mai 2012. Einige Entwickler begannen danach mit der Umsetzung in Illumos und ZFS on Linux. Letztlich scheint die Entwicklung bei Illumos eingeschlafen zu sein, so dass ZFS on Linux das Projekt schließlich alleine meisterte. Dabei war von Anfang an klar, dass einiges an dem Code zu überarbeiten war. Der Code für die Verschlüsselungsalgorithmen wurde von Illumos portiert, da dieser Code die einzige freie Implementierung darstellte, die eine passende Lizenz aufwies; die Verschlüsselungs-Schnittstelle des Kernels konnte wegen der inkompatiblen Lizenz nicht genutzt werden. Die Diskussionen um die Implementation sowie die vollständig neue Entwicklung der Schlüsselverwaltung zogen sich daher jahrelang hin.

Die jetzt realisierte Verschlüsselung besteht aus drei wesentlichen Teilen. Der erste ist ein sicherer Schlüsselspeicher. Für jeden verschlüsselten Datensatz in ZFS gibt es einen eigenen DSL-Schlüssel, der mit dem Schlüssel des Benutzers verschlüsselt ist. Durch diese Indirektion können Benutzer ihre Schlüssel ändern, ohne dass ihre Datensätze neu verschlüsselt werden müssen. Neue Kommandos zur Verwaltung des Schlüsselspeichers sind zfs load-key, zfs unload-key und zfs change-key.

Der zweite Teil besteht aus den eigentlichen Verschlüsselungsoperationen. Hierbei verwaltet jedes Objekt einen Hash-Baum (Merkle Tree, in dem Patch fälschlich »Merkel Tree« geschrieben) mit Message Authentication Codes (MACs), mit denen die Daten verschlüsselt werden. Der dritte Teil ist die Fähigkeit, Dateisysteme ohne Entschlüsselung zu »senden« und zu »empfangen«, worunter das Kopieren von Volumes zu verstehen ist. Dies wird häufig für Backup-Zwecke eingesetzt und ermöglicht, Backups auf nicht vertrauenswürdigen Systemen anzulegen, da die Verschlüsselung erhalten bleibt.

Der neue Code ist nun im Github-Repositorium von ZFS für Linux zu finden und sollte folglich in einer der kommenden Ausgaben von ZFS für Linux erscheinen.

Werbung
Pro-Linux
Pro-Linux @Twitter
Neue Nachrichten
Werbung