Crittografia dell’intero disco con cryptsetup/LUKS#

(Nitrokey Storage 2 - Linux)

Questa guida mostra come configurare i volumi criptati LUKS, per autenticarsi all’avvio con Nitrokey Pro o Nitrokey Storage.

Per fornire un po” di background, cryptsetup-initramfs ora ha il supporto per l’utilizzo di smart card OpenPGP come Nitrokey Pro e Nitrokey Storage per sbloccare volumi criptati LUKS. Una volta terminata la configurazione, avrete solo bisogno di inserire la vostra Nitrokey all’avvio e inserire il vostro PIN utente, invece di digitare la normale passphrase per la crittografia del disco.

Queste istruzioni sono state testate su Ubuntu 20.04 e Debian 10.

Avvertimento

La seguente guida può potenzialmente bloccarvi fuori dal vostro computer. Dovresti essere consapevole di questi rischi, e ti raccomandiamo di usare lo script qui sotto su un computer secondario, o dopo un backup completo, perché potresti perdere i tuoi dati.

Requisiti#

  • Un computer Ubuntu o Debian con almeno un volume criptato LUKS.

Vedi la sezione sottostante per determinare quale metodo è compatibile con questa guida.

  • Una Nitrokey Pro 2 o Nitrokey Storage 2 ` inizializzata <openpgp.html>`_ con chiavi.

Problemi noti#

Finora, lo script funziona solo con volumi partizionati manualmente, che sono composti da una partizione /boot non criptata, e una partizione di root / criptata.

Per favore, non selezionate la crittografia automatica dell’intero disco fornita dal sistema operativo che state usando per questa guida. Vi troverete di fronte ad errori ricorrenti quando il partizionamento viene fatto automaticamente, utilizzando l’interfaccia di installazione su Ubuntu e Debian.

Istruzioni#

  1. Installare le dipendenze

$ sudo apt install scdaemon opensc gnupg2
  1. Creare la directory smartcard-luks

$ mkdir smartcard-luks && cd smartcard-luks
  1. Scarica lo smartcard-luks-script

$ wget https://raw.githubusercontent.com/daringer/smartcard-key-luks/main/smartcard-key-luks
$ sudo chmod +x smartcard-key-luks
  1. Esportare la chiave pubblica

Per esportare la vostra chiave pubblica dal portachiavi di GnuPG:

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

Se avete già caricato una chiave pubblica su un keyserver (o l’avete memorizzata da qualche altra parte), dovreste recuperarla nel modo in cui vi è più comodo, e procedere al passo 5.

  1. Determinare e verificare il nome corretto del dispositivo LUKS per la vostra partizione root:

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

Suggerimento

Di solito dovrebbe essere qualcosa come nvme0n1p3_crypt (per NitroPC) o sda3_crypt (per NitroPad). Potete e dovete verificare che l’UUID a cui si fa riferimento in /etc/crypttab sia la partizione designata controllando il link simbolico in /dev/disks/by-uuid/.

  1. Eseguire lo script con il nome del dispositivo luks (ad esempio, nvme0n1p3_crypt) e pubkey.asc come argomenti.

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

Una volta che si esegue lo script con la chiave pubblica OpenPGP come argomento, esso imposta automaticamente un nuovo segreto LUKS, lo cripta con quella chiave pubblica e imposta crypttab, LUKS, initramfs e GRUB.

Prima vi verrà richiesto il User PIN

img1

Una volta sbloccata la Nitrokey, vi verrà richiesto il vostro OLD passphrase. È la passphrase che hai inserito per criptare il tuo volume all’installazione.

img2

Nota

Questa è un’alternativa di ripiego nel caso in cui perdiate la vostra Nitrokey, o se non è disponibile. Finora, non è stato testato, e gli utenti devono essere consapevoli del rischio di essere bloccati fuori dal loro computer, se il metodo di ripiego non funziona.

Una volta inserita la passphrase, lo script finisce il setup in circa un minuto. Non interrompete lo script, o potreste essere bloccati dal vostro computer dopo il riavvio.

img3

Fatto!

A questo punto dovete riavviare, e dovreste essere in grado di usare la vostra Nitrokey per sbloccare il vostro disco criptato.

Uso#

Dopo il riavvio ti dovrebbe essere richiesto il tuo PIN utente

img5

Inserisci il tuo PIN utente per sbloccare l’unità

img6

Ulteriori suggerimenti#

Cambiare la passphrase#

Una volta fatto questo setup, non dovreste più usare l’utilità dischi (di Gnome) per cambiare la passphrase (di riserva). Il modo corretto per farlo è chiamare direttamente cryptsetup come questo:

$ sudo cryptsetup luksChangeKey /dev/nvme0n1p3

Con nvme0n1p3 che è la partizione per cui avete impostato le chiavi.

Usare più tasti#

È facile utilizzare più chiavi di sicurezza (hardware) in modo che ognuna di esse sia in grado di sbloccare l’unità LUKS in modo indipendente. Basta esportare più chiavi pubbliche e anche passare più chiavi allo script di configurazione in questo modo:

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

Imposta nome del titolare della carta#

Durante l’inserimento del PIN all’avvio per la decrittazione della partizione root LUKS viene presentato all’utente un titolare di carta, per impostarlo utilizzare $ gpg --edit-card e all’interno del prompt scrivere admin e name per impostare il titolare della carta OpenPGP (Nitrokey Storage 2 o Nitrokey Pro 2).

Sostituire/cancellare le chiavi#

Non è possibile aggiungere/rimuovere le chiavi direttamente. Quindi è necessario cancellare/rimuovere il vecchio setup e rieseguire il setup con la chiave o le chiavi designate:

Rimuovete il keyfile (percorso, se avete usato lo script sopra) da luks-device (nvme0n1p3):

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

Rimuovere il keyfile stesso:

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

Eseguire nuovamente il setup di cui sopra.

Sblocco di LUKS2 con certificato X509#

SystemD supporta lo sblocco di una partizione LUKS2 usando un certificato X509, trovate un ottimo post sul blog su come realizzarlo al blog personale di Vladimir Timofeenko