O nedávno představeném jaderném patchi LUKS, který jsme přidali do balíčku cryptsetup v Kali Linuxu, se vedly značné diskuse. Chtěli jsme využít této příležitosti, abychom tuto funkci lépe vysvětlili a také ukázali některé užitečné přístupy, které stojí za to poznat.
LUKS Nuke v kostce
Jak dobře vysvětlil Michael Lee ve svém článku ZDNet, při vytváření šifrovaného kontejneru LUKS se náhodně vygeneruje hlavní klíč. K zašifrování hlavního klíče se pak použije přístupová fráze. Tento proces znamená, že přístupová fráze není přímo spojena s daty. To znamená, že pokud jsou zašifrovány dvě sady identických dat a použije se stejná přístupová fráze, hlavní klíče zůstanou jedinečné pro každou sadu a nelze je vyměnit. To však také znamená, že bez ohledu na použitou přístupovou frázi je v případě ztráty hlavního klíče nemožné obnovit data. Tento proces se pohodlně hodí k použití jako atomovka záměrným otřením klíčů.
Příklad použití LUKS Nuke
Naším hlavním účelem zavedení této funkce v Kali Linuxu je zjednodušit proces bezpečného cestování s důvěrnými klientskými informacemi. Zatímco „LUKS Nuking“ způsobí, že váš disk bude nepřístupný, je je možné předem zálohovat vaše keysloty a poté je obnovit. To nám umožňuje „odezdít“ naše citlivé notebooky před jakoukoli cestou, oddělit se od klíčů pro obnovení (které šifrujeme) a poté je „obnovit“ do počítačů, jakmile se vrátíte na bezpečné místo. Tímto způsobem, pokud se náš hardware ztratí nebo k němu dojde během cesty jiným způsobem, nikdo na něm není schopen obnovit data, včetně nás.
Existují i jiné způsoby, jak smazat vaše keysloty, nicméně výhodou možnosti Nuke je, že je rychlá, snadná a nevyžaduje, abyste se plně přihlašovali ke své instalaci Kali. Pokud udržujete zálohu vaší hlavičky, můžete vybuchovat klávesové sloty, kdykoli se cítíte nepohodlně. Poté proveďte obnovu, až se budete cítit bezpečně.
Vyzkoušejte to sami
Pojďme si projít kroky šifrování, zálohování, ničení a následné obnovy vašich dat pomocí Kali Linuxu. Začněte stažením a instalací Kali Linux 1.0.6 s Full Disk Encryption. Jakmile to uděláte, můžete ověřit své informace následovně:
[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
Jak můžete vidět, máme povolený slot 0 s nevyužitými sloty 1 až 7. V tomto okamžiku přidáme náš jaderný klíč.
[email protected]:~# apt install cryptsetup-nuke-password
[email protected]:~# dpkg-reconfigure cryptsetup-nuke-password
Tím se na kontejneru LUKS nic nezměnilo, místo toho se nainstalovalo heslo nuke a malý háček do initrd. Tento hák detekuje, když zadáte své nuke heslo při spouštění, a zavolá „cryptsetup luksErase ” na vašem kontejneru LUKS.
Báječné. Nyní musíme zálohovat šifrovací klíče. To lze snadno provést pomocí možnosti „luksHeaderBackup“.
[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]:~#
V našem případě bychom tedy rádi tato data pro uložení zašifrovali. Existuje několik způsobů, jak to lze provést, my však použijeme openssl, aby byl proces rychlý a snadný pomocí výchozích nástrojů v Kali.
[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
Skvělé, nyní máme šifrovanou hlavičku připravenou k zálohování. V tomto případě bychom chtěli hlavičku umístit někam, kde je snadno dostupná. To by mohlo být stejně jednoduché jako na USB flash disku, který je uložen na bezpečném místě. V tomto okamžiku nechte restartovat a použijte Nuke klíč a uvidíte, jak Kali zareaguje.
Použili jsme tedy Nuke klíč a podle očekávání již nemůžeme zavést do Kali. Podívejme se, co se stalo na skutečném disku, spuštěním živého CD Kali a opět vypuštěním hlavičky LUKS.
[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
Jak vidíme, nepoužívají se žádné sloty pro klíče. Nuke fungoval podle očekávání. Chcete-li obnovit hlavičku zpět na místo, je to jednoduchá záležitost načtení zašifrované hlavičky z jednotky USB. Jakmile to máme, můžeme to dešifrovat a provést obnovu:
[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
Naše sloty jsou nyní obnoveny. Vše, co musíme udělat, je jednoduše restartovat a zadat naše normální heslo LUKS a systém se vrátí do původního stavu.