Wie funktioniert die Pre-Boot-Authentifizierung mit Festplattenverschlüsselung technisch?

Wie funktioniert die Pre-Boot-Authentifizierung mit Festplattenverschlüsselung technisch?

Ich suche nach einer Lösung zur vollständigen Verschlüsselung meines Dual-Boot-SSD-Laufwerks (es ist noch neu und leer, und ich möchte die Verschlüsselung einrichten, bevor ich etwas darauf speichere).

Obwohl im Internet zu dieser Frage viel Chaos herrscht, scheint TrueCrypt dazu in der Lage zu sein, obwohl ich seinen Bootloader auf einer zusätzlichen Bootdiskette benötigen könnte. Soweit ich weiß, könnten einige Linux-Tools (einschließlich einiger modifizierter GRUB2-Tools) dazu ebenfalls in der Lage sein.

Ich habe jedoch meine Zweifel, und keiner der Artikel, die ich gelesen habe, ging wirklich tief genug in die Materie, um eine grundlegende Frage zu beantworten: Wenn die gesamte Festplatte verschlüsselt ist und ein Pre-Boot-Tool den Benutzer nach einem Schlüssel zum Entschlüsseln fragt, bedeutet das dann nicht, dass dieses Tool unter dem zu bootenden Betriebssystem ausgeführt werden muss? Mit anderen Worten: Gibt es Tools, die das Betriebssystem nicht darüber informieren, dass die Festplatten, die es sieht, tatsächlich verschlüsselt sind?

Wenn es kein solches Tool gibt, bedeutet das dann nicht, dass das Entschlüsselungstool beim Booten irgendwie Entschlüsselungsinformationen an das Betriebssystem weitergeben muss? Ich kann mir vorstellen, dass dies plattformübergreifend schwierig wäre.

Antwort1

Wenn die gesamte Festplatte verschlüsselt ist und ein Pre-Boot-Tool den Benutzer zur Entschlüsselung nach einem Schlüssel fragt, bedeutet das dann nicht, dass dieses Tool unter dem zu bootenden Betriebssystem ausgeführt werden muss?

Ja, so ziemlich.Hardwarebasierte vollständige Festplattenverschlüsselungtut dies: Die Verschlüsselung wird vollständig vom Gerät (Festplatte/Flash) oder möglicherweise von einem Controller entlang der Kette, die zu den physischen Geräten führt, gehandhabt und ist für das Betriebssystem nicht „sichtbar“.
Damit führt das Betriebssystem E/A genau so aus, als ob es mit einem einfachen, unverschlüsselten Gerät zu tun hätte; die Magie geschieht in der Hardware (und/oder Firmware – jedenfalls „unterhalb“ des Betriebssystems).

Wenn es kein solches Tool gibt, bedeutet das dann nicht, dass das Entschlüsselungstool beim Booten irgendwie Entschlüsselungsinformationen an das Betriebssystem weitergeben muss?

Es müsste tatsächlich eine Art Informationstransfer geben, wenn die Verschlüsselung nicht „unterhalb“ des Betriebssystems erfolgen kann (entweder wie oben oder möglicherweise mithilfe von Virtualisierungstechniken – aber dann laufen quasi zwei (oder mehr) Betriebssysteme). Und ja, das bedeutet, dass betriebssystemübergreifende Nutzung schwierig ist.
Sie müssen außerdem den Bootstrap-Code (zumindest den Bootloader) entschlüsseln, wenn Sie keine Hardware-/Firmware-Unterstützung haben.

Die WikipediaFestplattenverschlüsselungWeitere Informationen hierzu finden Sie im Artikel.

Antwort2

Wenn Ihre Hardware (oder genauer gesagt Firmware, d. h. BIOS) verschlüsselte Laufwerke unterstützt, können Sie die gesamte Festplatte mit der Firmware verschlüsseln. Dies hat jedoch auch Nachteile: Es gibt nicht viele Computer, die Festplattenverschlüsselung unterstützen, und Sie sind an eine bestimmte Firmware gebunden (oder schlimmer noch: Wenn Ihr Computer über ein TPM verfügt und der Verschlüsselungsschlüssel in einem TPM steckt, sind Sie an dieses bestimmte Motherboard gebunden, sofern Sie den Speicherverschlüsselungsschlüssel nicht gesichert haben).

Wenn das Betriebssystem die Verschlüsselung durchführt, muss auf der Festplatte ein kleiner, nicht verschlüsselter Bereich vorhanden sein, in dem die ersten Teile des Betriebssystems gespeichert sind. Eine gängige Konfiguration unter Linux besteht darin, eine separate Klartextpartition zu haben /bootund jede andere Partition zu verschlüsseln. „Vollständige Festplattenverschlüsselung“ ist ein wenig irreführend: Normalerweise wird damit „vollständige Volumeverschlüsselung“ bezeichnet, wobei ein Volume normalerweise eine Partition und keine Festplatte ist. Bei vollständiger Festplattenverschlüsselung wird nicht jede Datei (oder zumindest ein Verzeichnisbaum) einzeln verschlüsselt.

Unter Linux ist das Standardtool für die Festplattenverschlüsselungdmcrypt. Es ist in allen wichtigen Distributionen verfügbar und in viele Installationsprogramme integriert.

Antwort3

Ja, mit Grub2 /bootkann die Partition mit LUKs verschlüsselt werden:

  • /bootals Ordner auf /einer LUKs-verschlüsselten Partition
  • /bootauf einem LUKs, der auf einer Partition verschlüsselt ist
  • Und so weiter, da Linux Ihnen erlaubt, jede nicht sortierte Blockliste als Gerät zu verwenden und ein solches die Wurzel sein kann (die Konfiguration von initramfs für solche nicht sortierten Blocklisten ist sehr komplex, aber es ist machbar, es ist eine paranoide Methode).

Ich habe auch die paranoide Methode getestet /boot, (wenn es sich um eine Partition handelt) mit mehr als einer Schicht zu verschlüsseln:

  1. /dev/sda5als einzige logische Partition auf der Festplatte (MBR mit nur zwei erweiterten Partitionen /bootund /)
  2. Darüber /dev/sda5habe ich LUKs Level 1 gelegt, abgebildet auf/dev/mapper/level_0001
  3. Darüber /dev/mapper/level_0001habe ich LUKs Level 2 gelegt, abgebildet auf/dev/mapper/level_0002
  4. Darüber /dev/mapper/level_0002habe ich LUKs Level 3 gelegt, abgebildet auf/dev/mapper/level_0003
  5. Und so weiter. Darüber /dev/mapper/level_####lege ich LUKs-Level ####+1, abgebildet auf/dev/mapper/level_####+1
  6. Darüber /dev/mapper/level_3436habe ich LUKs Level 3437 gelegt, abgebildet auf/dev/mapper/level_3436
  7. Darüber /dev/mapper/level_3437habe ich ein Ext4 gelegt, gemountet als/boot
  8. Darüber /bootinstalliere ich Grub2 nach dem Ausführenecho GRUB_CRYPTODISK_ENABLE=y >> /etc/default/grub
  9. Darüber /dev/sda6habe ich /mit nur einer Ebene von LUKs gelegt

Beim Booten werde ich nach 3437 verschiedenen Passwörtern gefragt, für jedes verwende ich mehr als 32 Zeichen.

Es war nur ein Proof of Concept, die Bootzeit ist schrecklich.

Wenn ich das Gleiche mache, /ist die Lese-/Schreibgeschwindigkeit des gesamten Systems ebenfalls schrecklich, aber immerhin funktioniert Linux. Ich habe auch mit mehr als zehntausend Levels getestet; es funktioniert teilweise, das Lesen/Schreiben geht auf meiner CPU auf 10 KiB/s zurück (ja, wirklich schrecklich), das Booten dauert einen ganzen Tag und Anwendungen neigen dazu, aufgrund von Festplatten-Timeouts beim Online-Zugriff (Surfen usw.) häufig abzustürzen.

Daher ist die Verwendung von drei oder vier LUK-Ebenen akzeptabel, auch zehn. Dies hängt stark von Ihrer CPU ab und davon, wofür Sie CPU oder DISK, 3D-Render oder riesige Datenmengen-Verschlüsselung usw. verwenden.

PD: Sie können auch auf jeder Ebene der LUKs unterschiedliche Hash-Funktionen und Algorithmen verwenden und diese auch nutzen, --iter-time=#um die Mount-Zeit zu verlängern (Warnung: Beim Pre-Boot von Grub2 ist diese Mount-Zeit drei- oder viermal länger, die Verwendung eines Wertes um die zehntausend führt beim Pre-Boot zu knapp dreißig Sekunden).

verwandte Informationen