Software::Kernel
Disk-Verschlüsselung in Linux wird schneller
Dank der Arbeit von Cloudflare dürfte die Disk-Verschlüsselung in Linux mit LUKS deutlich schneller werden als bisher. Mitarbeiter des Unternehmens identifizierten veralteten, ineffizienten Code in diesem Bereich und entwickelten Patches.
Larry Ewing
Disk-Verschlüsselung kann auf verschiedenen Ebenen erreicht werden: Hardware, Disk-Treiber und Dateisysteme. Viele Speichergeräte verfügen über die Möglichkeit der Hardware-Verschlüsselung. Dies ist theoretisch die Methode mit der besten Schreib- und Leserate. Dennoch rät Cloudflare strikt davon ab, da sie massive Sicherheitsprobleme aufweisen kann. Auf der mittleren Ebene kann unter Linux mit dm-crypt verschlüsselt werden, das, wie der Name andeutet, ein Teil des Device Mapper-Subsystems ist. Dies ist für Cloudflare die präferierte Methode, mit ihr kann man auch die ganze Disk verschlüsseln und die Metadaten, angefangen beim Dateinamen, sind ebenfalls verschlüsselt. Verschlüsselung von Dateisystemen ist am ehesten für Systeme mit Benutzer-Verzeichnissen interessant. Dabei werden aber nur die Inhalte der Dateien, nicht die Metadaten verschlüsselt.
Wie Ignat Korchagin von Cloudflare jetzt schreibt, bemerkte das Unternehmen eines Tages, dass die Datenrate von den Disks nicht so hoch war wie gewünscht, und dies ließ sich eindeutig mit der Verschlüsselung begründen. Nun waren Korchagin und Kollegen gefragt, um erst einmal genaue Messungen durchzuführen und dann der Ursache auf den Grund zu gehen.
Für die Geschwindigkeitsmessungen wurde fio eingesetzt, die ermittelten Transferraten für Lesen und Schreiben wurden addiert. Um Hardware-Einflüsse auszuschalten, wurde mit RAM-Disks getestet. Auch auf ein Dateisystem wurde verzichtet. Eine unverschlüsselte Ramdisk kam auf 1126 MB/s, mit Verschlüsselung waren es nur noch 147, also etwa ein Siebtel.
Das Team untersuchte zunächst, ob es Optionen für dm-crypt oder andere Algorithmen gab, die das System beschleunigen. Doch das hatte kaum Auswirkungen, höher als 166 MB/s ging es nicht. Eine Nachfrage auf der dm-crypt-Mailingliste ergab nur die Antwort, dass Verschlüsselung nun einmal leistungshungrig sei. Der Autor dieser herablassenden und, wie sich zeigte, falschen Auskunft soll extern zum Projekt gewesen sein und noch nie Code zu dm-crypt beigetragen haben.
An der erhaltenen Auskunft zweifelnd, untersuchte das Team nun den Quellcode von dm-crypt und die Historie der Änderungen. Es stellte sich heraus, dass dm-crypt hochgradig asynchron arbeitet, was durch mehrere Änderungen im Laufe der Zeit zustande kam. Jede dieser Warteschlangen erzeugt jedoch Verzögerungen, zusammengenommen ergibt sich dadurch ein Durchsatz, der weit hinter dem Möglichen zurückbleibt. Cloudflare kritisiert diese Änderungen nicht, sondern hält jede davon zum jeweiligen Zeitpunkt für wohlbegründet. Allerdings sind manche dieser Gründe inzwischen weggefallen, ohne dass dm-crypt angepasst wurde.
Cloudflare nahm im Anschluss zwei Änderungen vor. Zum einen fügte es ein Flag zu dm-crypt hinzu, um auf synchrone Operation umzustellen. Es kann zur Laufzeit geändert werden, so dass die Resultate unmittelbar gemessen werden können. Dieser Patch ist im Github-Repositorium von Cloudflare zu finden. Die zweite Änderung betrifft das kryptografische Subsystem. Auch dieses arbeitet asynchron. Beim Versuch, den optimalen Algorithmus zu finden, der auch synchron funktioniert, ergab sich das Problem, dass dieser als intern markiert war, also von dm-crypt nicht genutzt werden konnte. Die Lösung war ein weiterer Patch, der ein neues Krypto-Modul hinzufügt, das den internen Algorithmus nutzbar macht.
Beide Patches zusammengenommen beschleunigen den Durchsatz auf rund 310 MB/s - mehr als das Doppelte der ursprünglichen Leistung. Misst man aber den Durchsatz auf physischen Disks, so sieht man laut Cloudflare keinen Unterschied mehr zwischen verschlüsselten und unverschlüsselten Disks, auch bei den Latenzen. Um diese Änderung in den Kernel zu bekommen, wird Cloudflare sicher noch einige Änderungen vornehmen müssen. Getestet wurde bis jetzt nur ein auf Intel-CPUs optimierter Algorithmus, weitere Tests sind für eine Vielzahl von Systemen nötig. Jeder Interessierte kann sich jetzt schon die Patches herunterladen und experimentieren.
Der Artikel zeigt einen der Vorzüge von freier Software auf: Jeder kann Problemen auf den Grund gehen, den Code im Detail analysieren und nach Belieben ändern. Zwar kann es passieren, wie das Beispiel zeigt, dass Probleme für einige Zeit bestehen oder sogar größer werden - doch nur, solange niemand es erkennt und einmal genauer hinschaut. Eine weitere wichtige Lektion ist, dass Kryptografie möglich ist, ohne an Geschwindigkeit zu verlieren, und es somit laut den Entwicklern keine Entschuldigung gibt, seine Daten nicht zu schützen.