logo
Menu
30/04 2023

Ist die Linux-Festplatten­verschlüsselung geknackt?

Der Anarchist Ivan, der seit einiger Zeit in Frankreich in Untersuchungshaft sitzt, berichtete in einem Brief, dass die französische Polizei sich Zugriff auf die Inhalte seines Laptops verschaffen konnte.1 Auf dem betroffenen Laptop sei ein verschlüsseltes Ubuntu Linux installiert gewesen. Auf ein weiteres Gerät mit Windows-Installation und Bitlocker-Verschlüsselung konnte sich kein Zugriff verschafft werden. Ivan erklärte in seinem Brief, ein 20-stelliges Passwort bestehend aus Buchstaben, Zahlen und Sonderzeichen für das System genutzt zu haben.

TL;DR

Nein, die Festplattenverschlüssung unter Linux ist weder geknackt worden noch "unsicher". Die Leistungsfähigkeit der Technik als auch der Algorithmen haben sich weiterentwickelt, so dass die Einstellungen der Verschlüsselung überprüft und gegebenenfalls aktualisiert werden sollten.

Seither wurde im Netz und auch in unserem Umfeld diskutiert, wie das möglich war, ob womöglich ein veralteter Krypto-Algorithmus in Ivans Ubuntu-Installation daran schuld war und was das für die Sicherheit anderer Linux-Systeme bedeutet. Uns erreichte sogar die Behauptung, die Verschlüsselung des Tails-Betriebssystem - das ebenfalls ein Linux-System ist - sei aufgrund veralteter Algorithmen nicht sicher. Das Thema Geräteverschlüsselung ist für viele nicht leicht zugänglich, deswegen möchten wir die Diskussion mit diesem Post etwas einordnen.

Alle Linux-Betriebssysteme nutzen für die Verschlüsselung der Festplatte das Linux Unified Key Setup, kurz LUKS. Der Hintergrund der Vermutung, es könnte in Ivans Fall ein veralteter Algorithmus schuld sein, ist der, dass bei Ubuntu Version 18.04 (wie das Kürzel andeutet im April 2018 erschienen) noch der relativ veraltete “LUKS1”-Standard für die Verschlüsselung der Festplatte verwendet wird, während neuere Linux-Installationen hierfür den “LUKS2”-Standard nutzen.2 Um zu verstehen wieso das relevant ist, ist es nötig sich einen Überblick über LUKS-Verschlüsselung zu verschaffen und zu verstehen welche Rolle darin die sogenannte key derivation function spielt. Leider wird es hierfür etwas technisch, auch wenn wir versuchen wollen es so gut es geht herunterzubrechen.

Das Linux Unified Key Setup (LUKS) in a nutshell

Eine mit LUKS verschlüsselte Festplatte ist zunächst ein zweigeteilter Block mit einem unverschlüsselten Header (Kopf) und einem verschlüsselten Body (Körper). Im Body liegen die eigentlichen verschlüsselten Daten, während der Header als Bedienungsanweisung zu verstehen ist: Welcher Verschlüsselungs-Algorithmus wird für den Body verwendet, welche Größe sollte der Body haben, wo auf der Festplatte liegt der Body, was ist die Geräte-ID der Partition usw. - Das sieht etwa so aus:

LUKS header information
Version:        2
UUID:           d077227a-eb02-4349-ab5b-fd9494ade3a6

Data segments:
  0: crypt
        offset: 16764544 [bytes]
        length: (whole device)
        cipher: aes-xts-plain64
        sector: 512 [bytes]
        ...

Wichtig für uns: Im Header ist auch die Information hinterlegt, welche key derivation function (Schlüsselableitungsfunktion) beim Vorgang der Ver- oder Entschlüsselung zu verwenden ist. Die Schlüsselableitung ist eine kryptografische Umwandlung des Passworts in den Schlüssel, mit dem der Body verschlüsselt wurde und mit dem man den Body wieder entschlüsseln kann. Anders als man denken könnte, ist das Passwort nämlich selbst gar nicht der Schlüssel, mit dem der Body verschlüsselt wurde, sondern aus ihm wird nur der eigentliche Schlüssel abgeleitet. Wieso dieser Zwischenschritt nötig ist, erklären wir gleich. Zunächst ist nur wichtig, d/ass es viele verschiedene Algorithmen für die Ableitung gibt, und dass es für die Schlüsselableitung die im Header hinterlegte Information braucht.

Zur Übersicht eine Visualisierung, als Beispiel mit dem Passwort “dPhdWnv1.3k4d4,szv!”:

Schema der LUKS-Verschlüsselung

Nun stellt sich die Frage, wofür es überhaupt den Zwischenschritt braucht, anstatt mit dem Passwort einfach direkt den Body der Festplatte zu ver-/entschlüsseln. Hierfür muss man sich erstmal das Angriffsszenario vor Augen führen, vor dem die Verschlüsselung geschützt werden soll: Es würde niemand versuchen, den eigentlichen Algorithmus - in diesem Fall: AES-XTS-PLAIN64 zu knacken: Dieser gilt in der Forschung als sicher. Üblicherweise versucht man stattdessen das Passwort zu erraten, indem man einfach alle denkbaren Zeichenkombinationen ausprobiert. Diese Methode nennt sich brute force, auf Deutsch rohe Gewalt. Jeder einzelne Versuch kostet Rechenaufwand, Speicher und Zeit, deswegen würde man in der Regel einen außergewöhnlich leistungsstarken Computer oder ein Cluster von vielen Computern benutzen. Es gibt außerdem eigens für diesen Zweck vorgesehene Software, die mit Listen bekannter Passwörter oder auch persönlichen Daten über die Besitzerin arbeitet, (Sprachen, Interessen, für andere Services verwendete Passwörter), um wahrscheinlichere Kombinationen zu erzielen.

Hier kommt die key derivation function ins Spiel: Die Idee ist es, das Ausprobieren des richtigen Passwortes durch den Zwischenschritt der Passwortableitung gerade so viele Millisekunden in die Länge zu ziehen, dass es im alltäglichen Gebraucht eines Laptops zwar nicht auffällt, aber den Aufwand für das massenhafte Ausprobieren massiv in die Höhe treibt. Die Schlüsselableitungsfunktion schützt vor allem kurze Passwörter und solche, die sich aus einem kleineren Pool möglicher Zeichen zusammensetzen: Für ein Passwort, das beispielsweise nur aus 6 Ziffern besteht, ist die Fülle aller möglicher Kombinationen wesentlich schneller durchgerechnet als bei einem 20-stelligen alpha-numerischen Passwort.

An die Schlüsselableitungsfunktion sind hohe Anforderungen geknüpft: Sie sollen auf der einen Seite riesigen Rechnerclustern standhalten, denen enorme Rechenleistung zur Verfügung steht, und gleichzeitig soll die Ver- und Entschlüsselung auf gewöhnlichen Laptops und PCs nicht so lange dauern, dass Verschlüsselung nicht mehr praktikabel ist. Die Lösung für dieses Problem ist - um es sehr grob herunterzubrechen - die Entwicklung mathematischer Algorithmen, die so konzipiert sind, dass selbst beim Vervielfachen der Rechenleistung der zeitliche Aufwand zur Schlüssel-Ableitung verhältnismäßig gleich bleibt.

Die Schwachstelle in Ubuntu 18.04, Tails u.a.

Wo die Bedeutung der Schlüsselableitungsfunktion erklärt ist, kommen wir zurück zu Ivans Laptop: Auf diesem war seinem Brief zufolge nämlich Ubuntu Version 18.04 installiert. Diese Version von Ubuntu benutzt noch den veralteten LUKS1-Standard, welcher wiederum eine veraltete Schlüsselableitungsfunktion (PBKDF2) nutzt. Von dieser ist bekannt, dass sie gegen spezialisierte Hardware wenig nützt, und gilt daher nicht mehr als sicher. Daher nun die Vermutung, die veraltete Schlüsselableitungsfunktion habe den Zugriff auf Ivans Laptop ermöglicht. Von dieser möglichen Schwachstelle sind auch andere Versionen betroffen, falls deren Erstinstallation lange zurück liegt: Der Algorithmus wird bei einer bestehenden Installation in der Regel nämlich nicht verbessert, wenn ein vollständiges Versions-Upgrade durchgeführt wird (z.B. von Ubuntu 18.04 auf Ubuntu 22.04).3 Ebenfalls ist diskutiert worden, dass zwar die Entwickler:innencommunity hinter dem Tails-Betriebssystem seit einigen Jahren den Wechsel zur sichereren LUKS2-Verschlüsselung in der Todo-Liste hat, diesen aber bisher noch nicht umgesetzt hat. Das scheint wieder andere dazu verleitet zu haben, zu behaupten, die Verschlüsselung von Tails-Sticks sei unsicher.4

Was ist davon zu halten? Grundsätzlich ist es bedenklich, dass viele alte Linux-Installationen einen veralteten Algorithmus für die Festplattenverschlüsselung verwenden. Nutzer:innen mit älteren Installationen müssen nun abwägen, ob sie ihre Verschlüsselung selbst upgraden - in unserem Wiki gibt es eine Anleitung hierfür -, ihr System frisch installieren oder in aber Kauf nehmen, einen veralteten Algorithmus zu verwenden. Ob diese Schwachstelle aber Ivans Fall überhaupt eine Rolle gespielt hat, ist bisher nur eine Vermutung und kein Fakt. Dass er bei der Passworteingabe beobachtet oder gefilmt wurde, er sein Passwort an verschiedenen Stellen wiederverwendet hat, das Passwort womöglich einfach unsicher war, selbst dass die Gebrauchsspuren an der Tastatur Rückschluss auf das Passwort gegeben haben könnten, sind alles denkbare Erklärungen für den Zugriff auf seine Daten. Angesichts der vagen Informationen erscheinen uns Aussagen wie “Die Tails-Verschlüsselung ist geknackt” alarmistisch und unseriös.

Wie schwerwiegend der veraltete Algorithmus nun tatsächlich ist, lässt sich schwer abschätzen: Eine bessere Schlüsselableitungsfunktion, die das brute forcen erschwert, trägt ohne Zweifel sehr zur Sicherheit der Geräteverschlüsselung bei. Im Umkehrschluss bedeutet das aber nicht, dass alle Geräte, die einen veralteten Algorithmus zur Schlüsselableitung benutzen, deswegen grundsätzlich unsicher seien. In erster Linie ist die Sicherheit der LUKS-Verschlüsselung abhängig von der Sicherheit des Passwortes, und diese wird zwar durch ein gutes Passwort verbessert, aber durch eine veraltete Schlüsselableitung nicht verschlechtert. Ein gutes Passwort, d.h. ein wirklich zufällig generiertes Passwort, das eine ausreichende Länge besitzt und aus einem genügend großen Pool an Buchstaben, Ziffern und Sonderzeichen generiert wurde, erfordert selbst bei einer veralteten Schlüsselableitungsfunktion und selbst mit außerordentlich vielen Ressourcen außerordentlich viel Zeit. Welche Ressourcen einer möglichen Angreiferin aber zur Verfügung steht, können und wollen wir nicht abschätzen. Wir halten es aber für zumindest unwahrscheinlich, dass sich solche Passwörter - selbst bei schlechter Schlüsselableitung - ohne Weiteres bruteforcen lassen.

Sichere Passwörter

Ein kurzer Nachtrag zur Sicherheit von Passwörtern: Wenn von einem zufälligen Passwort die Rede ist, heißt das: Von einer Maschine generiert. Ein Passwort, das sich selbst ausgedacht wurde, wird niemals genauso sicher sein wie ein wirklich zufälliges Passwort: Auch das Passwort dPhdWnv1;3k4d4;szv! sieht mit seinen Klein- und Großbuchstaben, Zahlen und Sonderzeichen auf den ersten Blick sicher aus. Allerdings ist es nur die Kurzform des gar nicht so geheimen Satzes “Die Philosophen haben die Welt nur verschieden interpretiert; es kommt aber darauf an, sie zu verändern.”, mit einigen Vokalen die durch Zahlen ersetzt wurden und ein paar Sonderzeichen dazu. Solche und ähnliche Tricks sind sehr verbreitet, lassen sich aber nach etwas Recherche und Einfühlung leicht erraten und bilden keine Grundlage für ein sicheres Passwort.

Die Tails-Community empfiehlt in ihrer Dokumentation, Diceware Passwörter zu benutzen. Was das ist, kann man in diesem englischsprachigen Blogpost nachlesen: https://theintercept.com/2015/03/26/passphrases-can-memorize-attackers-cant-guess/


  1. https://lanemesi.noblogs.org/post/2023/04/09/qualche-novita-su-ivan-recluso-nel-carcere-di-villepinte-francia-8-aprile-2023/ und https://www.csrc.link/read/some-initial-notes-on-the-investigation-file-against-ivan.html ↩︎

  2. https://mjg59.dreamwidth.org/66429.html ↩︎

  3. Das ist für sich genommen nachvollziehbar: Das Herumdoktern an den Verschlüsselungseinstellungen kann im schlimmsten Fall zu Datenverlust führen und solche Risiken möchte man bei einem Systemupgrade natürlich vermeiden. ↩︎

  4. Die Tails-Community arbeitet an einem Fix, der voraussichtlich Ende Mai mit Tails 5.13 verfügbar sein soll: https://gitlab.tails.boum.org/tails/tails/-/merge_requests/1116 ↩︎

logo