Wie funktioniert FDE (Full Disk Encryption) so schnell?


12

Ich bin gespannt, wie Ubuntus vollständige Festplattenverschlüsselung unter der Haube funktioniert. Hier ist ein Beispiel:

Betrachten Sie die folgende Zeichenfolge als den gesamten Inhalt der Festplatte:

hello world

Nach dem Anwenden einer Verschlüsselungsmethode würde es ungefähr so ​​aussehen:
(Ich habe für dieses Beispiel eine Caesar-Chiffre mit einer Verschiebung von +1 verwendet, z. B. A → B; B → C ...)

ifmmp xpsme

Soweit ich weiß, ist der Inhalt des Laufwerks beim Ausschalten des Computers die obige Zeichenfolge. Aber wenn es wieder eingeschaltet ist, muss Ubuntu seinen Inhalt wieder haben hello world, um erfolgreich zu booten.

Was ich nicht wirklich verstehe, ist das in der realen Welt der Inhalt der Festplatte viel komplexer und der Verschlüsselungsalgorithmus viel komplexer ist und ich es für den Computer schwierig finde, alles in nur wenigen Sekunden vollständig zu verschlüsseln / zu entschlüsseln (Das Booten oder Herunterfahren dauert nicht länger).

Wie ist das möglich?

Antworten:


10

Wie funktioniert die AES / Rijndael-Verschlüsselung im Allgemeinen?

Diese Seite bietet eine unterhaltsame Strichmännchen-Anleitung zum Advanced Encryption Standard (AES) , die leicht zu verstehen ist, obwohl es sich um mehr als 50 Bilder handelt, zum Beispiel diese beiden:

Geben Sie hier die Bildbeschreibung ein

und

Geben Sie hier die Bildbeschreibung ein

Es ist viel zu viel, um alles hier zu duplizieren, aber wenn Sie ein All-in-One-Bild haben müssen, ist es dieses:

Geben Sie hier die Bildbeschreibung ein


Oder es gibt eine kompaktere Erklärung unter http://www.password-depot.com/know-how/blowfish_and_rijndael.htm

Die Rijndael-Verschlüsselungsmethode basiert auf dem Ersetzen, Ändern und Ausführen von xor-Operationen für Bytes. Die Methode sieht folgendermaßen aus:

  • Aus dem 128-Bit-Schlüssel generiert Rijndael 10 Schlüssel mit jeweils 128 Bit.
  • Diese Schlüssel werden in 4x4-Arrays platziert.
  • Der Klartext ist auch in 4x4-Arrays (jeweils 128 Bit) unterteilt.
  • Jedes der 128-Bit-Klartextelemente wird in 10 Runden verarbeitet (10 Runden für 128-Bit-Schlüssel, 12 für 192, 14 für 256).
  • Nach der 10. Runde wird der Code generiert.
  • Jedes einzelne Byte wird in einer S-Box ersetzt und durch den Kehrwert in GF (2 8) ersetzt.
  • Dann wird eine bitweise Modulo-2-Matrix angewendet, gefolgt von einer XOR-Operation mit 63.
  • Die Zeilen der Matrizen werden zyklisch sortiert.
  • Die Spalten der Matrixmultiplikation sind auf GF (2 8) vertauscht.
  • Die Unterschlüssel jeder Runde werden einer XOR-Operation unterzogen.

Die Sicherheitsstufe dieser Verschlüsselungsmethode erhöht sich, wenn Rijndael mehrmals mit verschiedenen Unterschlüsseln ausgeführt wird.


Wie funktioniert die vollständige Festplattenverschlüsselung von Ubuntu?

Ich glaube, es funktioniert, indem eine Partition mit LUKS verschlüsselt wird (Standardeinstellungen mit AES) und dann einige Volumes mit LVM (wie /Swap) darauf gelegt werden und diese beim Booten entschlüsselt und bereitgestellt werden, nachdem Sie eine Passphrase eingegeben haben. Und es gibt eine reguläre (nicht verschlüsselte) Boot-Partition, die genug bootet, um nach der Passphrase zu fragen.

Im Handbuch des einfachen Computers zur vollständigen Festplattenverschlüsselung mit Ubuntu (aktualisiert am 28. Juni 2015) heißt es, dass die Verschlüsselung des Standardinstallationsprogramms so funktioniert, und erwähnt, dass das Dual-Booten des Laufwerks nicht funktionieren würde (zumindest nicht sofort einsatzbereit ) MBR muss verwendet werden, damit " wenn Ihr Computer über UEFI verfügt, die Distribution im Legacy-BIOS-Modus installiert wird, sodass Sie Secure Boot nicht verwenden können " und " Sie eine Swap-Größe erhalten, die der Ihres System-RAM (häufig nicht erforderlich) entspricht, und Sie Ich habe keine Wahl, welche Art von Verschlüsselung verwendet wird. "


Wie schnell ist die Verschlüsselung?

Wenn Sie cryptsetup benchmarkes ausführen, werden Tests ausgeführt und Sie erfahren, wie schnell die Verschlüsselung allein dauert. Achten Sie auf die (derzeit) Standardzeilen von aes-xts:

#  Algorithm | Key |  Encryption |  Decryption
     aes-xts   256b    150.0 MiB/s    145.0 MiB/s

Eine durchschnittliche Lesegeschwindigkeit der Festplatte kann 80-160 MB / s betragen, sodass Sie nicht viel länger als ein normaler Lesevorgang sind. Möglicherweise wurden die gerade gelesenen Sektoren bereits entschlüsselt, während Sie noch auf die warten Festplatte, um mehr zu lesen.

Eine SSD könnte möglicherweise schneller sein, vielleicht 200-550 MB / s, also könnten Sie es bemerken. Zufällige Lesevorgänge können jedoch langsamer sein, und ich habe gelesen, dass sich die SSD-Geschwindigkeit nach der Verwendung verlangsamen kann (möglicherweise, wenn das Laufwerk vollständig voll ist und Sektoren "gelöscht" werden müssen?).

Wie kann der Computer das gesamte Laufwerk in nur wenigen Sekunden vollständig verschlüsseln / entschlüsseln (das Booten oder Herunterfahren dauert nicht länger)?

Es muss nicht alles zuerst entschlüsseln. Die Verschlüsselung (LUKS) arbeitet mit Datenblöcken , kann jeden Block zufällig entschlüsseln und wirkt wie eine Schicht zwischen den verschlüsselten Daten des Laufwerks und dem, was das Dateisystem sieht.

Wenn das Dateisystem einen Datenblock sehen möchte, entschlüsselt LUKS diesen Block zuerst und gibt dann die entschlüsselten Daten an das Dateisystem weiter. Sie warten zunächst, bis das Laufwerk den Datenblock gelesen hat (genau wie ohne Verschlüsselung), und haben nur eine zusätzliche Verzögerung für die Entschlüsselung dieses einzelnen Datenblocks (oder einiger weniger Datenblöcke) - und wenn die Entschlüsselung schneller als die des Laufwerks ist lesen kann, die Entschlüsselung könnte beendet sein , bevor der Antrieb den nächsten Block von Daten liest.

So wie ein normales Dateisystem nicht das gesamte Laufwerk lesen muss, um eine Datei zu lesen, muss beim Hinzufügen der Verschlüsselung auch nicht das gesamte Laufwerk gelesen werden, und es macht die Dinge nicht viel langsamer.

Die Daten auf der Festplatte sind immer verschlüsselt , sodass beim Herunterfahren nichts anderes zu tun ist, als den Schlüssel zu vergessen.


@Hewbot Ich habe einige Informationen (unten) über die Geschwindigkeit der Entschlüsselung für Dateien und Blöcke hinzugefügt, da der Titel Ihres Q so bearbeitet wurde, dass "so schnell?" (
Ist

3

Dies ist eine kleine Vereinfachung, aber ich werde versuchen, den Zugriff auf eine Datei in einem verschlüsselten Dateisystem durchzuführen.

Angenommen, am Anfang des verschlüsselten Dateisystems befindet sich eine Dateitabelle. Nehmen wir an, wir wollen lesen /foo.bar. Als erstes lesen wir den Anfang der Partition, entschlüsseln sie und durchsuchen sie nach der gewünschten Datei. Angenommen, die Datei beginnt bei 0x10000000 Byte. Zum Lesen beginnen wir also, an dieser Stelle von der Festplatte zu lesen und sie zu entschlüsseln. In ähnlicher Weise können wir zum Schreiben die neuen Inhalte verschlüsseln und an dieser neuen Stelle schreiben.

Hoffentlich hilft dies dabei, Verwirrung über den Prozess zu beseitigen.


1
Ich denke, dies ist die Antwort, die tatsächlich die Frage des OP beantwortet - sein / ihr Missverständnis ist, dass es das gesamte Laufwerk vollständig verschlüsseln / entschlüsseln muss, nicht nur die Bits, die gelesen / geschrieben werden, wenn sie verwendet werden.
SomeoneSomewhereSupportsMonica

2

Der Prozessor verwendet einen dedizierten Befehlssatz. Es ist deshalb möglich, AES-NI . Es ermöglicht eine schnelle Ver- und Entschlüsselung, oder Sie können sagen, es reduziert den Overhead. Es ist schnell, da es sich um eine Hardware-Implementierung handelt, wie hier erläutert .

Sie können über Auswirkungen auf die Leistung überprüfen hier und sie sind es wert für zusätzliche Sicherheit.


1
Darüber hinaus werden Daten auf der Festplatte nur nach Bedarf verschlüsselt / entschlüsselt. Beispielsweise werden beim Booten nur Startskripte, Benutzerinformationen, ausführbare DM / WE-Dateien usw. entschlüsselt
Nick Mertin

Viele CPUs haben keine AES-Unterstützung und Ubuntus Verschlüsselung funktioniert immer noch auf ihnen ... selbst wenn dies der Fall ist, beantwortet dies immer noch nicht wirklich die Frage, wie Ubuntus Verschlüsselung funktioniert
Xen2050

@shsh Wenn ich dann auf einem wirklich alten Computer wäre, wäre es unmöglich, FDE zu verwenden, weil es keine Hardware-Implementierung geben würde? Sollte ich dann verstehen, dass die gesamte Festplatte beim Booten und Herunterfahren verschlüsselt und entschlüsselt wird?
Hewbot

@ MagikM18 Wenn ja, woher weiß der Algorithmus, wo mit dem Entschlüsseln der gesamten "Zeichenfolge" begonnen werden soll? Ich meine, wenn ich ein Dokument öffne, woher kennt es die "Koordinaten", wo es ist?
Hewbot

@Hewbot genauso wie es sowieso wäre; Grundsätzlich ist die Verschlüsselung eine Schicht zwischen der physischen Festplatte und dem Dateisystem-Daemon. Wenn also das Lesen von Daten von der Festplatte angefordert wird, werden diese gelesen und dann entschlüsselt. Genau wie bei einem normalen fs liest es zuerst die Dateitabelle, findet die Startposition der Datei und liest dann von dort aus.
Nick Mertin

0

Moderne Computer können Milliarden von Vorgängen pro Sekunde ausführen, daher wundert es mich nicht, dass Ver- und Entschlüsselung schnell sind.

So würde ich intuitiv bewerten, wie schnell Computer Dinge tun:

  1. Berechnungen im Speicher (insbesondere im L1- und L2-Speicher) sind extrem schnell
  2. Lesen aus dem lokalen Speicher weniger schnell (Solid-State-Festplatten sind schneller als Festplatten)
  3. Lesen aus dem Netzwerk, noch weniger schnell.

Der andere wichtige Punkt ist, dass der Betrieb nicht die gesamte Festplatte entschlüsseln muss, um das System zu starten. Vielmehr kann das Betriebssystem nur die Teile der Festplatte entschlüsseln, die es im laufenden Betrieb benötigt, und das Gleiche gilt für das Schreiben.

So intuitiv wundert es mich nicht, dass die vollständige Festplattenverschlüsselung keinen großen Einfluss auf die Leistung hat, da ich mir den Flaschenhals als Festplatte vorstelle.

Natürlich stimmen diese Intuitionen nicht immer mit der Realität überein. In der Realität gab es beispielsweise Fälle, in denen die Festplattenverschlüsselung zu einem spürbaren Leistungseinbruch geführt hat. In der Regel werden diese Probleme jedoch gelöst, nachdem die Entwickler einige Optimierungsrunden durchlaufen haben.


1
Ich kann keinen Weg finden, wie diese Antwort möglich ist. Das Kopieren von 1 TB mit USB 3.0 dauert einige Minuten. Wenn ein mittlerer Vorgang durchgeführt werden muss (die Entschlüsselung), kann es Minuten dauern, bis ein Computer mit FDE gestartet wird.
Hewbot

@Hewbot Ich habe meine Antwort bearbeitet, um zu erklären, dass die Entschlüsselung im laufenden Betrieb erfolgt. Das Betriebssystem muss nicht 1 TB Daten lesen, um eine verschlüsselte 1 TB-Festplatte zu verwenden.
Flimm
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.