Š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.
Nitrokey Pro 2 nebo Nitrokey Storage 2 inicializovaný s klíči.
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#
Instalace závislostí
$ sudo apt install scdaemon opensc gnupg2
Vytvoření adresáře smartcard-luks
$ mkdir smartcard-luks && cd smartcard-luks
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
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.
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/.
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
.
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.
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.
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.
Zadejte svůj uživatelský kód PIN a odemkněte jednotku
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.