Šifrování celého disku pomocí cryptsetup/LUKS#

Tato příručka ukazuje, jak nakonfigurovat svazky šifrované pomocí LUKS, aby se při spouštění ověřovaly pomocí Nitrokey Pro nebo Nitrokey Storage.

Abychom vám poskytli základní informace, nástroj cryptsetup-initramfs nyní podporuje použití čipových karet OpenPGP, jako jsou Nitrokey Pro a Nitrokey Storage, k odemykání svazků šifrovaných pomocí LUKS. Po dokončení nastavení stačí při spuštění systému vložit kartu Nitrokey a zadat uživatelský kód PIN namísto zadávání běžné přístupové fráze pro šifrování disku.

Tyto pokyny byly testovány v systémech Ubuntu 20.04 a Debian 10.

Varování

Následující průvodce vás může potenciálně zablokovat od počítače. Měli byste si být vědomi těchto rizik a doporučujeme použít níže uvedený skript na sekundárním počítači nebo po úplné záloze, protože byste mohli přijít o svá data.

Požadavky#

  • Počítač s Ubuntu nebo Debianem s alespoň jedním svazkem šifrovaným pomocí LUKS.

V níže uvedeném oddíle zjistíte, která metoda je kompatibilní s touto příručkou.

Známé problémy#

Skript zatím pracuje pouze s ručně rozdělenými svazky, které se skládají z nešifrovaného /boot oddílu a šifrovaného kořenového / oddílu.

V této příručce nezvolte automatické šifrování celého disku, které poskytuje operační systém, který používáte. Při automatickém rozdělení disku pomocí instalačního rozhraní v Ubuntu a Debianu se budete setkávat s opakujícími se chybami.

Pokyny#

  1. Instalace závislostí

$ sudo apt install scdaemon opensc gnupg2
  1. Vytvoření adresáře smartcard-luks

$ mkdir smartcard-luks && cd smartcard-luks
  1. Stáhněte si skript smartcard-luks

$ wget https://raw.githubusercontent.com/daringer/smartcard-key-luks/main/smartcard-key-luks
$ sudo chmod +x smartcard-key-luks
  1. Export veřejného klíče

Exportování veřejného klíče ze sady klíčů GnuPG:

$ gpg2 --armor --export KeyID > pubkey.asc

Pokud jste již veřejný klíč nahráli na server klíčů (nebo jej máte uložený někde jinde), měli byste jej načíst způsobem, který vám nejvíce vyhovuje, a přejít ke kroku 5.

  1. Určete a ověřte správný název zařízení LUKS pro kořenový oddíl:

$ cat /etc/crypttab
# if there is only one entry, you want the 1st column of this entry

Rada

Obvykle by to mělo být něco jako nvme0n1p3_crypt (pro NitroPC) nebo sda3_crypt (pro NitroPady). Můžete a měli byste zkontrolovat, zda UUID uvedené uvnitř /etc/crypttab je určený oddíl, a to kontrolou symbolického odkazu uvnitř /dev/disks/by-uuid/.

  1. Spusťte skript s názvem zařízení luks (např. nvme0n1p3_crypt) a pubkey.asc jako argumenty.

$ sudo ./smartcard-key-luks nvme0n1p3_crypt pubkey.asc

Jakmile skript spustíte s veřejným klíčem OpenPGP jako argumentem, automaticky nastaví nový tajný klíč LUKS, zašifruje jej proti tomuto veřejnému klíči a nastaví crypttab, LUKS, initramfs a GRUB.

Nejprve budete vyzváni k zadání User PIN.

img1

Po odemknutí klíče Nitrokey budete vyzváni k zadání OLD passphrase. Jedná se o přístupovou frázi, kterou jste zadali při šifrování svazku při instalaci.

img2

Poznámka

Jedná se o náhradní řešení pro případ ztráty klíče Nitrokey nebo jeho nedostupnosti. Zatím nebyla testována a uživatelé si musí být vědomi rizika zablokování počítače v případě, že záložní metoda nebude fungovat.

Po zadání přístupové fráze skript dokončí nastavení přibližně za jednu minutu. Nepřerušujte skript, jinak by mohlo dojít k zablokování počítače po restartu.

img3

Hotovo!

Nyní musíte restartovat počítač a měli byste být schopni odemknout zašifrovaný disk pomocí klíče Nitrokey.

Použití#

Po restartu byste měli být vyzváni k zadání uživatelského kódu PIN.

img5

Zadejte svůj uživatelský kód PIN a odemkněte jednotku

img6

Další tipy#

Změna přístupové fráze#

Po dokončení tohoto nastavení byste již neměli používat nástroj (gnome) disks ke změně (záložní) přístupové fráze. Správný způsob je zavolat cryptsetup přímo takto:

$ sudo cryptsetup luksChangeKey /dev/nvme0n1p3

nvme0n1p3 je oddíl, pro který jste nastavili klíče.

Použití více kláves#

Je snadné použít více (hardwarových) bezpečnostních klíčů, aby každý z nich mohl odemknout jednotku LUKS nezávisle na sobě. Stačí exportovat více veřejných klíčů a také předat více klíčů do instalačního skriptu takto:

$ sudo ./smartcard-key-luks nvme0n1p3_crypt pubkey-1.asc pubkey-2.asc

Nastavit jméno držitele karty#

Při zadávání kódu PIN při zavádění systému pro dešifrování kořenového oddílu LUKS se uživateli zobrazí držitel karty, pro jeho nastavení použijte $ gpg --edit-card a uvnitř výzvy zadejte admin a name pro nastavení držitele karty OpenPGP (Nitrokey Storage 2 nebo Nitrokey Pro 2).

Výměna/odstranění klíčů#

Klíče není možné přidávat/odebírat přímo. Proto je třeba odstranit/odstranit staré nastavení a znovu spustit nastavení s určeným klíčem (klíči):

Odstraňte soubor s klíčem (cestu, pokud jste použili výše uvedený skript) z luks-device (nvme0n1p3):

$ sudo cryptsetup luksRemoveKey /dev/nvme0n1p3 /etc/cryptsetup-initramfs/cryptkey.gpg

Odstranění samotného souboru s klíčem:

$ sudo rm /etc/cryptsetup-initramfs/cryptkey.gpg

Znovu proveďte výše uvedené nastavení.

Odemknutí LUKS2 pomocí certifikátu X509#

SystemD podporuje odemknutí oddílu LUKS2 pomocí certifikátu X509, skvělý blogový zápis o tom, jak to realizovat, najdete na Osobní blog Vladimira Timofeenka.