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 Installer (zumindest bei der Alternative 12.04) können Sie zwischen der Einrichtung einer Passphrase oder einer Schlüsseldatei wählen. Ich würde gerne eine Kombination der beiden verwenden; auch nicht, aber beide erfordern.

Warum? Weil das die Sicherheit erhöht (Zwei-Faktor); Sie müssen etwas haben und Sie müssen etwas wissen, um es zu entsperren. Dann möchte ich das Keyfile auf einem kleinen Wechseldatenträger (USB-Stick) ablegen und nur während der Boot-Zeit einstecken. Das Ergebnis sollte sein, dass es erforderlich ist, das richtige Flash-Laufwerk einzulegen und die richtige Passphrase bereitzustellen, um die Root-Partition zu entsperren.

Mit anderen Worten: Ich möchte beim Booten nach dem Passwort gefragt werden, mit dem die Schlüsseldatei auf einem externen Laufwerk verschlüsselt ist.

Ich sehe ein /usr/share/initramfs-tools/hooks/cryptgnupg Hilfsskript, das helfen kann, es zu erreichen, aber ich habe keine Ahnung, wie man es benutzt.

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

    
gertvdijk 22.07.2013, 21:35

1 Antwort

5

Ich mache das gleiche, aber ich fürchte, meine Antwort wird nicht befriedigend sein, da ich aus verschiedenen Gründen mit einem völlig benutzerdefinierten Initramfs ging.

Anstelle von GnuPG , das ein extra Binary ist, das im Initramfs enthalten sein muss (und im Fall von GnuPG-2 ein ziemlich komplexes), habe ich einfach das verwendet, was bereits da ist . Und das ist offensichtlich dm-crypt/LUKS .

Angenommen, Sie haben keyfile . Vorzugsweise eins 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 ihm eine Verschlüsselung mit LUKS hinzu (fügen Sie die Verschlüsselungseinstellungen Ihrer Wahl 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 Keyfile (512 Byte) und eine Keyfile.Luks (2MB, die cryptsetup aus irgendeinem Grund den 192k LUKS Header schreiben muss). Da die Initramfs sowieso komprimiert werden, ist das nicht so 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 dazu schreiben, wenn Sie es ändern möchten, also könnten wir die Datei vorher mit Nullen initialisiert haben.)

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

In Initramfs init könnten Sie dann damit fortfahren, den echten LUKS-Datenträger zu öffnen (vorausgesetzt, Sie haben den Schlüssel zuerst 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 Vorteile von LUKS, wie zum Beispiel mehrere Passphrasen für den Schlüssel, Chiffre Ihrer Wahl und so weiter. Ganz zu schweigen von einer netten (meist regulären) Passwortabfrage mit mehreren Wiederholungen.

    
frostschutz 22.07.2013 22:19

Tags und Links