Es gab eine Menge Diskussionen über den kürzlich eingeführten LUKS-Nuke-Patch, den wir dem cryptsetup-Paket in Kali Linux hinzugefügt haben. Wir wollten diese Gelegenheit nutzen, um diese Funktion besser zu erklären und einige nützliche Ansätze zu demonstrieren, die es wert sind, sie kennenzulernen.
LUKS Nuke in Kürze
Wie von Michael Lee in seinem ZDNet-Artikel gut erklärt, wird beim Erstellen eines verschlüsselten LUKS-Containers ein Hauptschlüssel zufällig generiert. Eine Passphrase wird dann verwendet, um den Hauptschlüssel wiederum zu verschlüsseln. Dieser Prozess bedeutet, dass die Passphrase nicht direkt an die Daten gekoppelt ist. Das heißt, wenn zwei Sätze identischer Daten verschlüsselt und dieselbe Passphrase verwendet werden, bleiben die Hauptschlüssel für jeden Satz einzigartig und können nicht ausgetauscht werden. Das bedeutet aber auch, dass unabhängig von der verwendeten Passphrase bei Verlust des Hauptschlüssels keine Datenwiederherstellung möglich ist. Dieser Vorgang eignet sich bequem als Atombombe, indem die Tasten absichtlich gelöscht werden.
Beispielanwendungsfall von LUKS Nuke
Unser Hauptzweck für die Einführung dieser Funktion in Kali Linux ist es, den Prozess des sicheren Reisens mit vertraulichen Kundeninformationen zu vereinfachen. Während „LUKS Nuking“ Ihr Laufwerk zu einer unzugänglichen Festplatte führt, ist es möglich, Ihre Keyslots vorher zu sichern und im Nachhinein wiederherzustellen. Auf diese Weise können wir unsere empfindlichen Laptops vor jeder Reise „zerlegen“, uns von den Wiederherstellungsschlüsseln (die wir verschlüsseln) trennen und sie dann an einem sicheren Ort auf den Maschinen „wiederherstellen“. Wenn unsere Hardware während unserer Reise verloren geht oder anderweitig darauf zugegriffen wird, kann auf diese Weise niemand die Daten darauf wiederherstellen, einschließlich uns selbst.
Es gibt andere Möglichkeiten, Ihre Keyslots zu löschen, aber der Vorteil der Nuke-Option ist, dass sie schnell und einfach ist und Sie sich nicht vollständig bei Ihrer Kali-Installation anmelden müssen. Wenn Sie ein Backup Ihres Headers führen, können Sie die Keyslots nuklearisieren, wann immer Sie sich unwohl fühlen. Führen Sie dann eine Wiederherstellung durch, wenn Sie sich sicher fühlen.
Probieren Sie es selbst aus
Lassen Sie uns die Schritte zum Verschlüsseln, Sichern, Vernichten und anschließenden Wiederherstellen Ihrer Daten mit Kali Linux durchgehen. Beginnen Sie mit dem Herunterladen und Installieren von Kali Linux 1.0.6 mit Full Disk Encryption. Danach können Sie Ihre Informationen wie folgt überprüfen:
[email protected]:~# cryptsetup luksDump /dev/sda5
LUKS header information for /dev/sda5
Version: 1
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha1
Payload offset: 4096
MK bits: 512
MK digest: 04 cd d0 51 bf 57 10 f5 87 08 07 d5 c8 2a 34 24 7a 89 3b db
MK salt: 27 42 e5 a6 b2 53 7f de 00 26 d3 f8 66 fb 9e 48
16 a2 b0 a9 2c bb cc f6 ea 66 e6 b1 79 08 69 17
MK iterations: 65750
UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d
Key Slot 0: ENABLED
Iterations: 223775
Salt: 7b ee 18 9e 46 77 60 2a f6 e2 a6 13 9f 59 0a 88
7b b2 db 84 25 98 f3 ae 61 36 3a 7d 96 08 a4 49
Key material offset: 8
AF stripes: 4000
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED
Wie Sie sehen können, haben wir Steckplatz 0 aktiviert, während die Steckplätze 1 bis 7 nicht verwendet werden. An dieser Stelle fügen wir unseren Nuke-Key hinzu.
[email protected]:~# apt install cryptsetup-nuke-password
[email protected]:~# dpkg-reconfigure cryptsetup-nuke-password
Am LUKS-Container hat das nichts geändert, stattdessen das Nuke-Passwort und einen kleinen Hook in der initrd installiert. Dieser Hook erkennt, wenn Sie beim Booten Ihr Nuke-Passwort eingeben, und ruft „cryptsetup luksErase auf ” auf Ihrem damaligen LUKS-Container.
Wunderbar. Jetzt müssen wir die Verschlüsselungsschlüssel sichern. Dies kann einfach mit der Option „luksHeaderBackup“ durchgeführt werden.
[email protected]:~# cryptsetup luksHeaderBackup --header-backup-file luksheader.back /dev/sda5
[email protected]:~# file luksheader.back
luksheader.back: LUKS encrypted file, ver 1 [aes, xts-plain64, sha1] UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d
[email protected]:~#
In unserem Fall möchten wir diese Daten also für die Speicherung verschlüsseln. Es gibt eine Reihe von Möglichkeiten, dies zu tun, aber wir werden openssl verwenden, um den Prozess schnell und einfach zu machen, indem wir die Standardwerkzeuge in Kali verwenden.
[email protected]:~# openssl enc -aes-256-cbc -salt -in luksheader.back -out luksheader.back.enc
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
[email protected]:~# ls -lh luksheader.back*
-r-------- 1 root root 2.0M Jan 9 13:42 luksheader.back
-rw-r--r-- 1 root root 2.0M Jan 9 15:50 luksheader.back.enc
[email protected]:~# file luksheader.back*
luksheader.back: LUKS encrypted file, ver 1 [aes, xts-plain64, sha1] UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d
luksheader.back.enc: data
Großartig, jetzt haben wir den verschlüsselten Header bereit, um gesichert zu werden. In diesem Fall möchten wir die Kopfzeile an einer leicht zugänglichen Stelle platzieren. Dies könnte so einfach sein wie auf einem USB-Stick, der an einem sicheren Ort aufbewahrt wird. Lassen Sie uns an dieser Stelle neu starten und die Nuke-Taste verwenden und sehen, wie Kali reagiert.
Also haben wir die Nuke-Taste verwendet, und wie erwartet können wir Kali nicht mehr booten. Sehen wir uns an, was auf der eigentlichen Festplatte passiert ist, indem wir eine Kali-Live-CD booten und den LUKS-Header erneut ausgeben.
[email protected]:~# cryptsetup luksDump /dev/sda5
LUKS header information for /dev/sda5
Version: 1
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha1
Payload offset: 4096
MK bits: 512
MK digest: 04 cd d0 51 bf 57 10 f5 87 08 07 d5 c8 2a 34 24 7a 89 3b db
MK salt: 27 42 e5 a6 b2 53 7f de 00 26 d3 f8 66 fb 9e 48
16 a2 b0 a9 2c bb cc f6 ea 66 e6 b1 79 08 69 17
MK iterations: 65750
UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d
Key Slot 0: DISABLED
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED
Wie wir sehen können, werden keine Keyslots verwendet. Der Nuke funktionierte wie erwartet. Um den Header wieder an Ort und Stelle wiederherzustellen, ist es einfach, den verschlüsselten Header von Ihrem USB-Laufwerk abzurufen. Sobald wir das haben, können wir es entschlüsseln und unsere Wiederherstellung durchführen:
[email protected]:~# openssl enc -d -aes-256-cbc -in luksheader.back.enc -out luksheader.back
enter aes-256-cbc decryption password:
[email protected]:~# cryptsetup luksHeaderRestore --header-backup-file luksheader.back /dev/sda5
WARNING!
========
Device /dev/sda5 already contains LUKS header. Replacing header will destroy existing keyslots.
Are you sure? (Type uppercase yes): YES
[email protected]:~# cryptsetup luksDump /dev/sda5
LUKS header information for /dev/sda5
Version: 1
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha1
Payload offset: 4096
MK bits: 512
MK digest: 04 cd d0 51 bf 57 10 f5 87 08 07 d5 c8 2a 34 24 7a 89 3b db
MK salt: 27 42 e5 a6 b2 53 7f de 00 26 d3 f8 66 fb 9e 48
16 a2 b0 a9 2c bb cc f6 ea 66 e6 b1 79 08 69 17
MK iterations: 65750
UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d
Key Slot 0: ENABLED
Iterations: 223775
Salt: 7b ee 18 9e 46 77 60 2a f6 e2 a6 13 9f 59 0a 88
7b b2 db 84 25 98 f3 ae 61 36 3a 7d 96 08 a4 49
Key material offset: 8
AF stripes: 4000
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED
Unsere Slots sind jetzt wiederhergestellt. Alles, was wir tun müssen, ist einfach neu zu starten und unser normales LUKS-Passwort einzugeben, und das System befindet sich wieder in seinem ursprünglichen Zustand.