iX 2/2019
S. 124
Praxis
Sichere Dateisysteme
Aufmacherbild

Native Datenverschlüsselung mit OpenZFS

Im Vertrauen

Wenn Datenträger abhandenkommen, hilft Verschlüsselung, den Schaden zu minimieren. OpenZFS kann das nun auch ohne externe Werkzeuge.

Geht ein Datenträger verloren, kommen vertrauliche Informationen schnell in falsche Hände. Backups und Replikate schützen zwar vor Datenverlust, doch um auch den Datenzugriff durch Unberechtigte zu verhindern, sollten Daten zusätzlich verschlüsselt gespeichert sein. Bei Handys und anderen Mobilgeräten ist das inzwischen so etabliert, dass Nutzer die Verschlüsselung ihrer Daten nicht einmal mehr bemerken. Was das Telefon nebenbei erledigt, benötigt auf dem Fileserver hingegen noch etwas Zusatzaufwand. Die gute Nachricht für Storage-Administratoren: Wer eine Implementierung des freien OpenZFS verwendet, kann künftig eine besonders bequeme Verschlüsselung nutzen, die direkt ins Dateisystem integriert ist.

ZFS bietet diese Funktion zwar schon seit einigen Jahren an, aber nur in der von Oracle hinter verschlossenen Türen entwickelten proprietären Version. Für die freien Varianten unter dem Dach von OpenZFS hat federführend Tom Caputi vom US-amerikanischen Backup-Spezialisten Datto eine ähnliche Funktion erstellt. Deren Nutzerschnittstelle orientiert sich zwar teilweise an der Oracle-Version, die Implementierung ist jedoch unabhängig. Das Speicherformat aktueller Pools ist zwischen Oracle- und OpenZFS inzwischen ohnehin inkompatibel.

Freie Alternativen zum Oracle-Code

Auch das OpenZFS-Lager musste seine Daten bislang nicht zwingend im Klartext speichern, benötigte dazu aber den Umweg über Werkzeuge wie dm-crypt (Linux), geli (FreeBSD) oder FileVault (macOS), die ganz allgemein die Inhalte von Blockgeräten verschlüsseln. Ein Pool aus einzeln vollständig verschlüsselten Festplatten, wie ihn beispielsweise FreeNAS anbietet, gewährleistet hohe Datensicherheit, schützt aber ausschließlich das lokale System und kann nur im entsperrten Zustand arbeiten.

Andere gängige Szenarien nutzen ZFS nicht als Dateisystem, sondern lediglich als Volume Manager, der Blockgeräte (ZVOLs) bereitstellt. Darauf lassen sich wieder die oben genannten Verschlüsselungswerkzeuge und schließlich ein herkömmliches Dateisystem wie ext4 oder xfs setzen. Diese Variante bietet mehr Flexibilität und kann wesentliche ZFS-Funktionen etwa zur Konsistenzprüfung auch im verschlüsselten Zustand nutzen, erzeugt aber mehr Verwaltungsaufwand und nimmt durch das zusätzliche Dateisystem etwa bei der Snapshot-Integration Reibungsverluste in Kauf. Dem gegenüber steht nun die neue, native Verschlüsselung, die nahtlos zusammenspielt mit weiteren ZFS-Funktionen wie Komprimierung, Online-Konsistenzprüfung, Replikation und Deduplizierung, dabei jedoch Teile der Verwaltungsdaten des ZFS-Pools unverschlüsselt lässt.

Konkret bedeutet das: Nur wer Daten eines verschlüsselten ZFS-Dateisystems lesen oder ändern möchte, muss auch den zugehörigen Schlüssel kennen. Um Snapshots zu erstellen, den Datenbestand effizient zu replizieren oder die Konsistenz und Integrität der gespeicherten Daten zu überprüfen, können sie verschlüsselt bleiben. Entscheidend ist dabei vor allem das Zusammenspiel zwischen Verschlüsselung und Replikation, denn es ebnet einen besonders einfachen Weg für sichere Cloud-Backups selbst umfangreicher Datenbestände.

Eine Schlüsselkette für besseres Handling

Technisch setzt die Implementierung ein gängiges Schema aus miteinander verketteten Schlüsseln um: Für jeden neuen Block im Dateisystem oder ZVOL würfelt ZFS zwei neue Zufallszahlen, aus denen es den Initialisierungsvektor sowie den eigentlichen Schlüssel für ein symmetrisches Verschlüsselungsverfahren ableitet und den Block damit verschlüsselt. In die Berechnung des Blockschlüssels geht darüber hinaus noch ein weiterer Schlüssel ein, der „Master-Key“. Er ist ebenfalls zufällig erzeugt, aber einheitlich für das gesamte Dateisystem. Administratoren bekommen lediglich einen dritten Schlüssel zu Gesicht, den sogenannten „Wrapping-Key“. Er sichert den auf dem Datenträger gespeicherten Master-Key. Auf diese Weise lässt sich der von außen vorgegebene Wrapping-Key bei Bedarf beliebig ändern, ohne dass man den gesamten Datenbestand neu verschlüsseln muss.