dm-crypt + luks: Kann ich einen separaten Header haben, ohne ihn auf dem mit luks verschlüsselten Gerät zu speichern?

3865
user1861174

Ich möchte meine externe Festplatte mit dm-crypt + luks verschlüsseln, bin aber nicht mit allen Informationen zufrieden, die der LUKS-Header im Klartext bereitstellt.

Daher möchte ich den LUKS-Header und die verschlüsselten Daten voneinander getrennt halten:

  1. Speichern Sie die LUKS-Partition (CRYPT) ohne den Header auf dem externen Laufwerk.
  2. Wann immer ich auf die verschlüsselten Daten zugreifen möchte, mischen Sie Header und CRYPT zusammen und mounten Sie die luks-Partition normal.

Ich weiß bereits, wie ich dies manuell erreichen könnte:

  1. Sichern Sie den LUKS-Header mit dd.
  2. Überschreiben Sie den LUKS-Header auf dem externen Laufwerk.
  3. Wenn die LUKS-Partition gemountet werden soll, schreiben Sie sie zurück und mounten Sie sie normal.
  4. Unmount und überschreiben Sie den Header erneut, wenn Sie fertig sind.

Das ist nicht sehr optimal, da die Sectors des luks-Headers jedes Mal überschrieben werden, wenn das Laufwerk gemountet wird, und ich würde befürchten, dass diese Sektoren sicher schlecht werden.


Ein anderer Ansatz wäre, dass die Header-Datei und die verschlüsselte luks-Partition zu einem virtuellen Linux-Gerät zusammengefügt werden, das normalerweise gemountet werden kann.

Mit "Zusammenführen in ein virtuelles Gerät" meine ich, dass der Header nicht wirklich in die luks-Partition zurückgeschrieben wird, sondern das System dies so wahrnimmt. Der Header bleibt immer noch auf meinem USB-Stick.

Mein einziges Problem ist, dass ich nicht weiß, wie man ein solches virtuelles Gerät erstellt.

Jede Hilfe wäre dankbar.

3

1 Antwort auf die Frage

8
mic_e

Sie können LUKS einfach im Modus für getrennte Header verwenden:

cryptsetup luksFormat /dev/sda4 --header ~/lukshdr --align-payload 0 --cipher twofish cryptsetup open /dev/sda4 --header ~/lukshdr mycrypt cryptsetup luksSuspend mycrypt --header ~/lukshdr cryptsetup luksResume mycrypt --header ~/lukshdr 

Sie können die Header-Datei an einem beliebigen Ort ablegen, einschließlich eines Blockgeräts.

~/lukshdrmuss mindestens 1049600 Byte groß sein, um luksFormatfunktionieren zu können:

dd if=/dev/zero bs=1049600 count=1 > ~/lukshdr 

Wenn Sie ausführen lsblk -b, werden Sie feststellen, dass die Größe des zugeordneten Geräts genau der Größe des LUKS-Geräts entspricht. Es gibt keinen Raum, in dem sich Kopf- oder Metadaten verstecken könnten.

$ lsblk -b NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 80026361856 0 disk  ├─sda1 8:1 0 254803968 0 part /boot ├─sda2 8:2 0 5999951872 0 part [SWAP] ├─sda3 8:3 0 19999490048 0 part / └─sda4 8:4 0 53771067392 0 part  └─mycrypt 254:0 0 53771067392 0 crypt /tmp/mnt 

Solange die zugrunde liegenden Verschlüsselungen nicht unterbrochen sind, sieht das LUKS-Gerät für jeden, der nicht über die Header-Datei verfügt, wie zufällige Daten aus.

Es wäre schön, wenn Sie einen Link hinzufügen, von dem die genaue Nummer 1049600 stammt. mlt vor 8 Jahren 2
Warum kann ich die Partition immer noch entschlüsseln, ohne dass das USB-Gerät mit dem luks-Header angehängt ist? ChiseledAbs vor 7 Jahren 0
Der LUKS-Header wird nur während der `cryptsetup'-Befehle verwendet. Beim Öffnen eines Volumes wird der Schlüssel aus dem Header geladen und im Kernel-Speicher abgelegt. mic_e vor 7 Jahren 0