Linux-Bootloader, die die vollständige Festplattenverschlüsselung unterstützen?

28

Gibt es Linux-Bootloader, die die vollständige Festplattenverschlüsselung unterstützen (a la TrueCrypt ) ? Ich weiß, es wurde daran gearbeitet, GRUB2 um Verschlüsselungsunterstützung zu erweitern, aber dies scheint noch nicht fertig zu sein. Irgendwelche anderen Optionen?

(Beachten Sie, dass ich mich hier wirklich auf die vollständige Festplattenverschlüsselung beziehe - einschließlich /boot)

Die meisten Antworten beschreiben eine Konfiguration, bei der /bootkeine Verschlüsselung vorliegt, und einige versuchen zu erklären, warum eine unverschlüsselte /bootKonfiguration in Ordnung sein sollte.

Hier ist ein Artikel, der genau beschreibt, was ich brauche, basierend auf einer modifizierten Version von GRUB2, ohne eine Diskussion darüber zu beginnen, warum ich / boot tatsächlich verschlüsseln muss:

Das Problem dabei ist, dass diese Modifikationen anscheinend in der aktuellen GRUB2-Codebasis nicht unterstützt werden (oder ich übersehen etwas).

Grodriguez
quelle
ja, hier gibt es ein exzellentes howto: wiki.archlinux.org/index.php/…
ebal

Antworten:

20

Ich denke, die aktuelle Version von GRUB2 unterstützt das Laden und Entschlüsseln von LUKS-Partitionen nicht (es enthält einige Chiffren, aber ich denke, sie werden nur für die Passwortunterstützung verwendet). Ich kann den experimentellen Entwicklungszweig nicht überprüfen, aber es gibt einige Hinweise auf der GRUB-Seite, dass einige Arbeiten geplant sind, um das umzusetzen, was Sie tun möchten.

Update (2015) : Die neueste Version von GRUB2 (2,00) enthält bereits Code für den Zugriff LUKS und GELI verschlüsselte Partitionen. (Die vom OP bereitgestellten xercestch.com-Links erwähnen die ersten Patches dafür, aber sie sind jetzt in der neuesten Version integriert).

Wenn Sie jedoch aus Sicherheitsgründen versuchen, die gesamte Festplatte zu verschlüsseln, beachten Sie, dass ein unverschlüsselter Bootloader (wie TrueCrypt, BitLocker oder ein modifizierter GRUB) nicht mehr Schutz bietet als eine unverschlüsselte /bootPartition (wie von JV in einem Kommentar oben angegeben). . Jeder, der physisch auf den Computer zugreifen kann, kann ihn genauso einfach durch eine benutzerdefinierte Version ersetzen. Dies wird sogar in dem Artikel auf xercestech.com erwähnt, den Sie verlinkt haben:

Um es klar auszudrücken, macht dies Ihr System in keiner Weise weniger anfällig für Offline-Angriffe. Wenn ein Angreifer Ihren Bootloader durch einen eigenen ersetzt oder den Bootprozess umleitet, um seinen eigenen Code zu booten, kann Ihr System dennoch gefährdet sein.

Beachten Sie, dass alle softwarebasierten Produkte für die vollständige Festplattenverschlüsselung diese Schwachstelle aufweisen, unabhängig davon, ob sie einen unverschlüsselten Bootloader oder eine unverschlüsselte Boot- / Preboot-Partition verwenden. Sogar Produkte mit Unterstützung für TPM-Chips (Trusted Platform Module) wie BitLocker können gerootet werden, ohne dass die Hardware geändert werden muss.

Ein besserer Ansatz wäre:

  1. auf BIOS - Ebene entschlüsseln (in Motherboard oder Festplattenadapter oder externer Hardware [Smartcard], mit oder ohne TPM - Chip) oder
  2. Tragen Sie den PBA-Code ( /bootin diesem Fall die Partition) auf einem Wechseldatenträger (z. B. einer Smartcard oder einem USB-Stick).

Um dies auf die zweite Art und Weise zu tun, können Sie das Linux Full Disk Encryption (LFDE) -Projekt unter folgender Adresse überprüfen: http://lfde.org/. Dort finden Sie ein Skript zum Verschieben der /bootPartition auf ein externes USB-Laufwerk, mit dem der Schlüssel verschlüsselt wird GPG und speichern Sie es auch in den USB. Auf diese Weise ist der schwächere Teil des Bootpfads (die unverschlüsselte /bootPartition) immer bei Ihnen (Sie sind der einzige, der physisch auf den Entschlüsselungscode UND den Schlüssel zugreifen kann). ( Hinweis : Diese Seite ist verloren gegangen und der Blog des Autors ist ebenfalls verschwunden. Die alten Dateien finden Sie jedoch unter https://github.com/mv-code/lfde. Beachten Sie, dass die letzte Entwicklung vor 6 Jahren durchgeführt wurde.) Als leichtere Alternative können Sie die unverschlüsselte Startpartition während der Installation Ihres Betriebssystems auf einem USB-Stick installieren.

Grüße, MV

MV.
quelle
1
Entschlüsseln auf BIOS-Ebene wäre in der Tat eine sehr gute Lösung (ich habe dies als Option in Betracht gezogen) ...
1
Ich kenne keine funktionierende Implementierung, aber EFI / UEFI bietet die Möglichkeit, einen benutzerdefinierten EFI-Boot-Manager einzubauen, um einen herkömmlichen Bootloader zu ersetzen, und möglicherweise eine Entschlüsselungsebene hinzuzufügen, um die Daten zu entschlüsseln (dann benötigen Sie natürlich eine EFI-Plattform) ). Oder vielleicht kann ein Teil des CoreBoot-Projekts (ADLO, SeaBIOS, OpenBIOS usw.) dazu geändert werden. Nur Ideen.
4
Nur um weitere Informationen über die Schwäche eine nicht verschlüsselten / boot - Partition mit Hilfe von Add (aber auch für ein nicht-verschlüsselten Bootloader gelten): twopointfouristan.wordpress.com/2011/04/17/... (wie die Boote ändern Partition in 10 Minuten physischen Zugriffs, um die Mount-Passphrase sowie alle anderen Dateien in der verschlüsselten Partition abzurufen)
1
@ MV .: Danke. Ich kann es selbst testen und hier eine Antwort mit detaillierteren Schritten hinzufügen, um verschlüsselte /bootPartitionen mit GRUB2 zu verwenden.
Peque
1
@ 에이 바: nein, das ist verwandt (unter Verwendung von LUKS mit einem TPM), aber es ist nicht dasselbe Projekt, das zuvor bei lfde.org gehostet wurde (das jetzt eine Site über einen Aeroclub ist).
MV.
4

Stellen Sie sicher, dass Ihre Initial RAMdisk und Ihr / boot-Ordner keine Verschlüsselung verwenden.

Dies wird eine „minimal“ kernel, mit Treibern und Unterstützung Schalter in die „eigentliche“ Root - Dateisystem aufgerufen , das ist verschlüsselt.

Bevor Sie behaupten, dass dies ein Hack ist, denken Sie daran, dass die meisten (wenn nicht alle) Linux-Distributionen heute standardmäßig auf diese Weise booten. Dies ermöglicht Ihrem System explizit das Booten und Laden Ihres Root-FS unter Verwendung von Modulen, die es aus einem Dateisystem laden muss. (Eine Art Henne-Ei-Problem). Zum Beispiel, wenn sich Ihr Root-Dateisystem auf einem Hardware-RAID-Volume befand und Sie dessen Treiber laden mussten, bevor Sie Ihren Root-FS mounten konnten.

Brad
quelle
3

Ich habe den Link überprüft, den Sie gepostet haben. Obwohl es keine Boot-Partition gibt, befindet sich noch ein unverschlüsselter Bootloader auf der Festplatte, auf den mit einem bösen Dienstmädchenangriff zugegriffen und der kompromittiert werden könnte. Ich habe ein ähnliches Setup untersucht, bei dem sich keine unverschlüsselten Daten auf der Festplatte befinden. Bisher habe ich jedoch nur einen Bootloader von einem Wechsellaufwerk aus gestartet.


quelle
Ja, es gibt immer noch einen unverschlüsselten Bootloader. Das wäre für mich akzeptabel.
Das böse Mädchen kann den Bootloader infizieren, um eine falsche Passwortabfrage durchzuführen, die Sie zum Narren hält, und dann einfach den unverschlüsselten trojanisierten Kernel laden. Das Verschlüsseln des Kernels ohne Verschlüsselung des Bootloaders bringt nur geringe Vorteile.
Skaperen
1

Ich glaube, die meisten von ihnen tun dies. Sie benötigen zunächst eine Anleitung zur Installation des Betriebssystems mit verschlüsselter Festplatte.

Ubuntu hat eine schöne Seite mit Anweisungen zum Erstellen von verschlüsselten Partitionen, LMVPs, Ordnern usw., googeln Sie einfach Ihre Distros-Version davon ...

JV
quelle
2
Die meisten Linux-Distributionen, einschließlich Ubuntu, bieten eine gewisse Unterstützung für die Verschlüsselung von Partitionen, erfordern jedoch, dass / boot unverschlüsselt ist. Was ich suche, ist ein Bootloader, der eine vollständig verschlüsselte Festplatte verarbeiten kann.
1
Zumindest ein Teil des Bootloaders muss unverschlüsselt sein, da er sonst von der CPU nicht ausgeführt werden kann. Gibt es ein bestimmtes Problem, wenn Sie / boot unverschlüsselt lassen?
2
Der Bootloader und / boot sind verschiedene Dinge. Ich suche nach einem Bootloader, der eine vollständig verschlüsselte Festplatte booten kann. TrueCrypt kann das für Windows, aber nicht für Linux.
Der Unterschied besteht darin, dass der Windows-Bootloader in der MBR selbst enthalten ist, während die MBR unter Linux nur auf die erforderlichen / boot-Dateien verweist.
JV
1
"Die Pre-Boot-Authentifizierung wird vom TrueCrypt-Bootloader durchgeführt, der sich im ersten Track des Boot-Laufwerks befindet" - auch bekannt als "Mini- / Boot". Auch hier ist grub selbst in / boot enthalten, die mbr hat nur 512 Bytes und reicht nicht aus, um einen Entschlüsselungsalgorithmus zu speichern. Wie auch immer, ein Teil der Festplatte muss unverschlüsselt geliefert werden. Sie könnten in der Lage sein, Grub auf einer verschlüsselten Partition von einem Bootloader auf einer völlig anderen zu starten, aber das würde einen ernsthaft chaotischen Code erfordern ...
JV
0

Nein, ich denke es gibt keine.

Müssen Sie wirklich verschlüsseln / booten? Ich vermute nicht. Der Rest des Dateisystems kann mit normaler Linux-Software verschlüsselt werden, die sich auf einem initramfs in / boot befindet und den Benutzer entsprechend auffordert.

MarkR
quelle
2
Ja, ich muss verschlüsseln / booten. Alles außer dem Bootloader selbst muss verschlüsselt sein.
Erklären Sie bitte, warum Sie glauben, dass es keine Bootloader gibt, die die vollständige Festplattenverschlüsselung unterstützen.
this.josh
@Grodriguez: Wenn Sie / boot als Teil des Bootloaders betrachten, wird alles verschlüsselt - alle zur Laufzeit verwendeten Binärdateien, alle Benutzerdaten usw.
MarkR
2
Wie in einem Kommentar zu einer anderen Antwort angemerkt: Ich weiß, dass es immer "etwas" geben muss, das nicht verschlüsselt ist - ich brauche nur dieses "etwas" als Bootloader (MBR + Bootsektor) anstelle einer / boot-Partition .
0

Sie scheinen nach etwas Unmöglichem zu fragen und es mit einer Windows-Lösung zu vergleichen, die die Implementierung vor Ihnen verbirgt, aber in Wirklichkeit das Gleiche tut, was Linux tut.

Die beste Lösung, die ich mir vorstellen kann, ist die Verwendung einer Festplatte, die ein Sicherheitskennwort und eine Verschlüsselung implementiert. Einige Thinkpad-Laptops verwenden diese Hardwarelösungen.

Zan Lynx
quelle
2
Entschuldigung, aber ich verstehe nicht, warum dies "unmöglich" sein sollte. Der Artikel, auf den ich in meiner Frage verweise, zeigt, dass dies möglich ist. Ein Proof of Concept wurde mit einer modifizierten Version von GRUB 2 implementiert. Ich weiß, dass es immer "etwas" geben muss, das nicht verschlüsselt ist - ich brauche nur dieses "etwas", um stattdessen den Bootloader (MBR + Bootsektor) zu sein einer / boot-Partition.
@Grodriguez: Deine Anforderung macht keinen Sinn. Ist Ihre Anforderung erfüllt, wenn Sie eine virtuelle Maschine in einem anderen Betriebssystem verwenden? Wenn ja, starten Sie das Betriebssystem 1, entschlüsseln Sie das Laufwerk und starten Sie die VM.
Zan Lynx
2
Haben Sie tatsächlich versucht, den Artikel zu lesen, mit dem ich verlinkt bin? Die Tatsache, dass Sie die Anforderung nicht verstehen, bedeutet nicht, dass "es keinen Sinn macht". Ich habe gültige Gründe dafür (auf die ich nicht eingehen möchte).
Der Artikel macht in Absatz 3 deutlich, dass er die Situation nicht verbessert. Daher macht es für mich keinen Sinn, dem Rest zu folgen, bei dem es eher darum geht, wie man es einrichtet, als wie es funktioniert. Denken Sie darüber nach, was Ihnen sagen wird, dass ich Ihren Kernel oder den ganzen / boot durch meinen eigenen ersetzt habe (wenn ich als böse Magd fungiere).
Skaperen
0

Die Antwort wird durch den Artikel angedeutet. "Dies ist jetzt mit Erweiterungen für den GRUB2-Bootloader der nächsten Generation möglich, der gepatcht wurde, um nicht nur" und "wir möchten unser neues luks-fähiges grub2-Image später installieren" sowie "Jetzt kompilieren wir die LUKS-fähige GRUB2-Quelle. " Es scheint, dass Sie einen Patch oder eine Erweiterung für GRUB2 oder eine gespaltene GRUB2-Quelle benötigen.

Skaperen
quelle
0

Grub2 Version 2.02 ~ Beta3 kann eine Menge Dinge, die Grub2 Version 2.02 ~ Beta2 nicht kann, von mir getestet:

  1. Booten Sie mit der Super Grub 2-Diskette
  2. Geben Sie die Taste 'c' ein, um zur Befehlszeile zu gelangen
  3. Geben Sie Befehle ein, um die gewünschte verschlüsselte Partition einzubinden
    • insmod luks
    • cryptomount (hd0, #) // wobei # die verschlüsselte Partition darstellt
  4. Geben Sie die Passphrase ein und einige Befehle mehr
    • multiboot (crypto0) /grub/i386-pc/core.img
    • Stiefel

Das wird eine andere Grub2 laden, die sich in einer verschlüsselten Partition befindet, ein böser Wahnsinnsangriff hat hier keinen Sinn ... Ich boote von einer CD (schreibgeschütztes Medium) und mounte dann eine verschlüsselte Partition (ohne die Passphrase, wie man es wagen kann) injiziere irgendetwas!), boote dann in einer verschlüsselten Partition und lade einen Grub2 mit eigenem Menü usw.

Hinweis: Ein solcher Grub 2.02 ~ Beta3-Boot (ich verwende Super Grub 2-CD) kann auf einem USB-Stick, einer USB-Festplatte usw. sein.

Warnung: Grub2 Version 2.02 ~ Beta2 kann nicht dasselbe tun, da einige BUGs (die auf Grub2 Version 2.02 ~ Beta3 behoben zu sein scheinen) im Zusammenhang mit dem Befehl cryptomount ...

Beta2-Bugs, über die ich spreche, sind:

  1. Die verschlüsselte Partition wird nicht wirklich eingehängt, sodass Sie nicht auf (crypto0) / * zugreifen können.
  2. Wenn es mehr als eine verschlüsselte Partition gibt, werden Sie cryptomount -anur nach einer Passphrase gefragt
  3. Nachdem cryptomount einmal ausgeführt wurde, wird es erneut ausgeführt, was nichts bewirkt

auf Beta 3:

  1. Es hängt wirklich verschlüsselte Partitionen ein und lässt Sie über (crypto0) / * oder (crypto1) / * usw. auf Dateien zugreifen, wenn mehr als eine Partition gleichzeitig gemountet ist
  2. Es fragt nach jeder Passphrase (eine pro verschlüsselter Partition)
  3. Sie können es so oft ausführen, wie Sie möchten. Sie können eines und dann ein anderes mounten usw.

Randnotiz: Ich habe nicht herausgefunden, wie ich sie aushängen soll, außer einen anderen oder denselben grub2 / anderen Bootloader usw. neu zu starten oder zu booten.

Hoffe, dies hilft, die Dinge zu klären, und hoffe, dass Grub2 Version 2.02 ~ Beta3 auf LiveCDs integriert wird, so dass wir alles installieren können, ohne es selbst kompilieren zu müssen.

PD: Mit Super Grub 2 kann ich keine Möglichkeit finden, Grub2 Version 2.02 ~ Beta3 auf der MBR / Boot-Partition usw. zu installieren.

Claudio
quelle