Wie verwende ich dm-crypt (LUKS) mit GnuPG, um Zwei-Faktor für FDE zu verwenden?

9

Bei Verwendung der vollständigen Festplattenverschlüsselung mit Ubuntu (im Gegensatz zur Homedir-Verschlüsselung) wird dm-crypt mit LUKS zum Verschlüsseln des Volumes verwendet. Im Installationsprogramm (mindestens am 12.04. Alternative) können Sie wählen, ob Sie es mit einer Passphrase oder einer Schlüsseldatei einrichten möchten. Ich möchte eine Kombination aus beiden verwenden. nicht beides, sondern beides.

Warum? Weil dies die Sicherheit erhöht (Zwei-Faktor); Sie müssen etwas haben und Sie müssen etwas wissen , um es freizuschalten. Dann möchte ich die Schlüsseldatei auf einem kleinen Wechseldatenträger (USB-Flash-Laufwerk) ablegen und nur während des Startvorgangs anschließen. Das Ergebnis sollte sein, dass das richtige Flash-Laufwerk eingelegt und die richtige Passphrase zum Entsperren der Root-Partition angegeben werden muss.

Mit anderen Worten, ich möchte beim Booten nach der Passphrase gefragt werden, mit der die Schlüsseldatei auf einem externen Laufwerk verschlüsselt ist.

Ich sehe ein /usr/share/initramfs-tools/hooks/cryptgnupgHilfsskript, das dazu beitragen kann, aber ich habe keine Ahnung, wie ich es verwenden soll.

Nur um Verwirrung zu vermeiden: Ich frage nicht nach einer Möglichkeit , dem Volume einen zusätzlichen Schlüssel hinzuzufügen , um es zu entsperren.

gertvdijk
quelle
Ich habe einen Teil der Antwort selbst gefunden, indem ich ... die Dokumente gelesen habe . Lesen Sie, wie Sie dies verwenden können /usr/share/doc/cryptsetup/README.gnupg. Ich werde versuchen, etwas Zeit zum Ändern zu finden, damit eine Schlüsseldatei von externen Medien verwendet wird.
Gertvdijk

Antworten:

5

Ich mache das Gleiche, aber ich fürchte, meine Antwort wird nicht zufriedenstellend sein, da ich mich aus verschiedenen Gründen für ein vollständig benutzerdefiniertes Initramfs entschieden habe .

Anstelle GnuPGeiner zusätzlichen Binärdatei, die in den Initramfs enthalten sein muss (und im Falle GnuPG-2einer ziemlich komplexen), habe ich einfach das verwendet, was bereits vorhanden ist. Und das ist offensichtlich dm-crypt/LUKS.

Angenommen, Sie haben eine keyfile. Vorzugsweise eine mit zufälligen Daten.

# dd if=/dev/urandom of=keyfile count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000189802 s, 2.7 MB/s

Fügen Sie mit LUKS eine Verschlüsselung hinzu (fügen Sie die gewünschten Chiffriereinstellungen hinzu).

# truncate -s 2M keyfile.luks
# cryptsetup luksFormat keyfile --header keyfile.luks

WARNING!
========
This will overwrite data on keyfile.luks irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase: bananas
Verify passphrase: bananas

Jetzt haben Sie eine Schlüsseldatei (512 Byte) und eine Schlüsseldatei.luks (2 MB, die Cryptsetup aus irgendeinem Grund benötigt, um den 192k LUKS-Header zu schreiben). Da die Initramfs sowieso komprimiert werden, ist das nicht schlecht (immer noch kleiner als GnuPG).

Jetzt können Sie die Schlüsseldatei entschlüsseln:

# cryptsetup luksOpen keyfile --header keyfile.luks lukskey
Enter passphrase for keyfile: bananas

Und Sie haben 512 Byte zufällige Daten in /dev/mapper/lukskey. (Sie können darauf schreiben, wenn Sie es ändern möchten, sodass wir die Datei möglicherweise früher mit Nullen initialisiert haben.)

# blockdev --getsize64 /dev/mapper/lukskey
512

In Initramfs können init Sie dann das echte LUKS-Volume damit öffnen (vorausgesetzt, Sie haben zuerst den Schlüssel hinzugefügt).

cryptsetup --key-file=/dev/mapper/lukskey luksOpen /dev/yourdisk luksyourdisk
cryptsetup luksClose lukskey # clean up

Dieser Ansatz macht GnuPG völlig überflüssig und Sie erhalten alle LUKS-Vorteile, wie z. B. mehrere Passphrasen für den Schlüssel, eine Chiffre Ihrer Wahl usw. Ganz zu schweigen von einer netten (meist regulären) Passwortabfrage mit mehreren Wiederholungsversuchen.

Frostschutz
quelle
2
Coole Lösung, aber wie integriere ich das genau in meine initramfs? Sie geben an, dass Sie ein vollständig benutzerdefiniertes Initramfs verwenden, aber wäre dies nicht nur mit einem Hook möglich?
Gertvdijk
Bestimmt. Vielleicht sogar ohne Haken, wenn Sie sich eine Möglichkeit überlegen können, Crypttab zu zwingen, den Schlüssel zuerst zu finden und zu öffnen. ZB muss es keine Datei sein, Sie können eine separate Partition dafür auf dem USB-Stick erstellen. Da ich dies jedoch nicht so mache, kann ich keine konkrete Antwort darauf geben ... Entschuldigung: - /
Frostschutz
1
Kein Problem - GnuPG zu umgehen und LUKS wiederzuverwenden ist sicherlich eine überlegene Option. Für den Fall, dass ich Hooks für den GnuPG-Ansatz neu schreiben muss, sollte ich ihn besser umschreiben, ohne ihn überhaupt zu verwenden. Und ja, mir ist bewusst, dass dies keine Datei sein muss.
Gertvdijk
@gertvdijk Wenn Sie dies in Gang bringen, würde mich Ihre Antwort als zukünftige Referenz interessieren
Frostschutz