Un gruppo chiamato PrivacyIdea ha creato un piccolo pacchetto per aggiungere una routine di risposta alla sfida HMAC-SHA1 a initramfs, il che significa che Ubuntu può interrogarti per una sfida da passare a Yubikey e quindi utilizzare la risposta per sbloccare il volume LUKS. Per la maggior parte, sto seguendo queste istruzioni , con alcuni commenti aggiunti. Il processo è in realtà molto facile da fare.
Ho provato questo su Ubuntu 14.04, 16.04 e 18.04; usando un Yubikey Neo. Dovrebbe funzionare con qualsiasi recente Yubikey, con firmware 2.0+ e con qualsiasi versione di Ubuntu dopo il 14.04. Ho anche testato Ubuntu 19.04 con uno Yubikey 5C, era necessario del lavoro aggiuntivo ma può essere fatto funzionare. Potrebbero esserci anche altri dispositivi hardware HMAC-SHA1 di risposta alle sfide con cui funziona, ma non ne sono a conoscenza. Come sempre, assicurati di avere un backup dei tuoi dati prima di procedere: non dovrebbero esserci problemi qui, ma c'è sempre la possibilità che questo distrugga tutto sul tuo computer. Queste istruzioni non sono coperte da garanzia.
Aggiornamento: da Ubuntu 16.04, i pacchetti necessari sono nei repository principali e non è necessario PPA.
Aggiungi un commento se hai domande!
0. Prerequisiti
Affinché ciò funzioni, devi già avere la crittografia LUKS a disco intero impostata e funzionante. Puoi farlo selezionando l'opzione appropriata durante l'installazione di Ubuntu. Per la massima sicurezza, durante l'installazione è necessario disporre di una passphrase molto potente selezionata. Se la tua passphrase non è all'altezza, dovresti cambiarla con una migliore prima di continuare ( istruzioni più dettagliate qui ).
Il metodo seguente non sostituirà alcuna passphrase esistente, ma aggiungerà invece un'altra passphrase a uno degli slot LUKS. Quindi se perdi il tuo Yubikey puoi comunque sbloccare il tuo computer usando qualsiasi passphrase esistente - ti suggerisco di prenderne nota e nasconderlo in un posto sicuro - ne avrai bisogno anche alcune volte durante questa procedura. La tua nuova passphrase di sfida Yubikey dovrebbe essere ancora abbastanza forte, ma non deve essere lunga quanto la passphrase che hai usato durante l'installazione di Ubuntu.
1. Aggiungi PrivacyIdea PPA e installa il pacchetto
Su Ubuntu 14.04
Apri un terminale ed esegui il seguente comando:
sudo add-apt-repository ppa:privacyidea/privacyidea
Premi Invio quando richiesto, quindi esegui:
sudo apt-get update
Quindi installare il pacchetto con:
sudo apt-get install yubikey-luks
Su Ubuntu 16.04, 18.04
Non è necessario un PPA, è possibile installare il pacchetto con:
sudo apt-get install yubikey-luks
Su Ubuntu 19.04
Vedi questa risposta per come compilare il yubikey-luks
pacchetto dal sorgente per Ubuntu 19.04.
2. Installa il software Yubikey
Se stai usando la funzionalità HMAC-SHA1 di Yubikey per qualcos'altro, puoi saltare questa sezione. Cancellerà qualsiasi configurazione nel secondo slot Yubikey, quindi non eseguire questo passaggio se si utilizza HMAC-SHA1 per altri scopi con questo Yubikey.
Dovrai configurare il tuo Yubikey in modo che funzioni con Ubuntu installando il software richiesto, da Yubico PPA su Ubuntu 14.04 o dal repository principale di Ubuntu su 16.04 e versioni successive.
Su Ubuntu 14.04
Se non l'hai ancora fatto, aggiungi il PPA e installa il pacchetto con:
sudo add-apt-repository ppa:yubico/stable
sudo apt-get update
sudo apt-get install yubikey-personalization
Su Ubuntu 16.04, 18.04 (e versioni successive)
sudo apt-get install yubikey-personalization
3. Inizializzare lo slot Yubikey per HMAC-SHA1
Ora dobbiamo programmare il secondo slot di Yubikey con una configurazione HMAC-SHA1. Questo cancellerà la tua precedente configurazione di slot, che è vuota per impostazione predefinita. Ancora una volta, se si utilizza HMAC-SHA1 per qualcos'altro , non emettere questo comando: cancellerà la configurazione. È possibile utilizzare in modo sicuro la stessa chiave segreta all'interno di Yubikey per questa configurazione LUKS come per gli altri usi. (Ad esempio, con un altro computer che utilizza LUKS + Yubikey).
ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible
Il terminale visualizzerà alcune informazioni sulle modifiche apportate. Non è necessario annotare questo, ma mostrerà la chiave segreta utilizzata da Yubikey nell'algoritmo HMAC-SHA1 per calcolare la risposta quando viene data una sfida.
4. Iscrivere Yubikey allo slot LUKS
Ora modificheremo la configurazione LUKS per aggiungere la risposta di Yubikey come una delle chiavi di decrittazione.
La partizione che dobbiamo specificare dipende dal fatto che si stia utilizzando BIOS o UEFI per avviare il computer. Per BIOS, il volume crittografato è /dev/sda5
attivo per impostazione predefinita, per UEFI è impostato su /dev/sda3
. Puoi verificarlo aprendo l' disks
utilità e confermando il percorso della partizione - dovrebbe essere sda3
o sda5
. NOTA: sui computer più recenti con dischi NVMe, il percorso sarà simile /dev/nvme0n1p3
.
Esegui questo in un terminale:
sudo yubikey-luks-enroll -d /dev/sda3 -s 7
Questo scriverà nello slot 7 della configurazione LUKS, segui le istruzioni nel programma di installazione (variano leggermente a seconda della versione in esecuzione).
Allora hai finito! Dovresti essere in grado di riavviare il computer e, se Yubikey è inserito, puoi digitare la password della sfida e utilizzare Yubikey come secondo fattore per sbloccare la partizione LUKS e avviare il sistema. Dopo aver decifrato il disco rigido, puoi rimuovere Yubikey.
Se perdi il tuo Yubikey puoi comunque inserire la tua passphrase originale (si spera molto lunga) per decrittografare il disco rigido, quindi puoi seguire di nuovo questa procedura per registrare un nuovo Yubikey.
Modifica della passphrase di verifica della crittografia
Modificare la password in un secondo momento è abbastanza semplice, basta usare questo comando per resettare la chiave segreta. Non è del tutto necessario ripristinare la chiave segreta, ma non farà male. Tieni presente che questo distruggerà la chiave segreta precedente, non farlo se usi HMAC-SHA1 per qualcos'altro con questo Yubikey. (Ad esempio, con un altro computer che utilizza LUKS + Yubikey).
ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible
Quindi, in modo simile al passaggio 4 sopra, per registrare una nuova password nello slot della chiave LUKS, tranne che per cancellare lo slot 7 con questo comando:
sudo yubikey-luks-enroll -d /dev/sda3 -s 7 -c
Quando richiesto Enter any remaining passphrase
, utilizzare la passphrase di backup, non la passphrase di sfida di Yubikey. Quindi inserisci una nuova passphrase di sfida Yubikey, due volte, quindi alla fine dovrai inserire l'ultima passphrase di backup.
Ora la tua vecchia passphrase di sfida Yubikey è stata rimossa e solo la tua nuova decodificherà il disco rigido. La passphrase di backup precedente sarà sempre la stessa. È possibile modificare tale passphrase seguendo i collegamenti nel passaggio 0 .
Nota sulle implicazioni di sicurezza
L'aggiunta di un Yubikey aggiungerà un certo livello di sicurezza al tuo sistema: qualcuno deve conoscere sia la passphrase di sfida che il tuo Yubikey per poter sbloccare il disco rigido (o trovare la passphrase iniziale, che ora stai utilizzando come backup) . Tuttavia, è tecnicamente fattibile per un utente malintenzionato decrittografare il disco rigido se conoscono la passphrase della sfida (ad esempio, "navigando sulle spalle" durante la digitazione) e possono accedere a Yubikey solo per un breve periodo. Usando la passphrase di sfida potevano ottenere la risposta dallo Yubikey e archiviarlo, quindi utilizzarlo per decrittografare il disco rigido in qualsiasi momento senza lo Yubikey. O, ancora una volta, se un utente malintenzionato o un malware conosceva la tua passphrase ed era in grado di eseguire il codice su una macchina collegata al tuo Yubikey, poteva anche lanciare la sfida e archiviare la risposta. È quindi ancora estremamente importante essere vigili quando si inserisce la passphrase della sfida e assicurarsi di avere sempre Yubikey in un luogo sicuro. Dovresti anche collegarlo sempre e solo a una macchina di cui ti fidi. Se perdi traccia di Yubikey e sospetti che qualcuno possa averlo usato per provare ad apprendere la chiave di decodifica, esegui di nuovo i passaggi 2 e 3 per ripristinare la chiave segreta all'interno di Yubikey e scegli una nuova passphrase di sfida. Nota che se un avversario è riuscito a imparare una delle tue passphrase (o la risposta HMAC-SHA1 da Yubikey o il tuo backup), potrebbe fare un backup della chiave master LUKS, e quindi usarlo per decrittografare il tuo disco rigido anche se si cambia la passphrase in futuro. e per assicurarti di avere sempre Yubikey in un luogo sicuro. Dovresti anche collegarlo sempre e solo a una macchina di cui ti fidi. Se perdi traccia di Yubikey e sospetti che qualcuno possa averlo usato per provare ad apprendere la chiave di decodifica, esegui di nuovo i passaggi 2 e 3 per ripristinare la chiave segreta all'interno di Yubikey e scegli una nuova passphrase di sfida. Nota che se un avversario è riuscito a imparare una delle tue passphrase (o la risposta HMAC-SHA1 da Yubikey o il tuo backup), potrebbe fare un backup della chiave master LUKS, e quindi usarlo per decrittografare il tuo disco rigido anche se si cambia la passphrase in futuro. e per assicurarti di avere sempre Yubikey in un luogo sicuro. Dovresti anche collegarlo sempre e solo a una macchina di cui ti fidi. Se perdi traccia di Yubikey e sospetti che qualcuno possa averlo usato per provare ad apprendere la chiave di decodifica, esegui di nuovo i passaggi 2 e 3 per ripristinare la chiave segreta all'interno di Yubikey e scegli una nuova passphrase di sfida. Nota che se un avversario è riuscito a imparare una delle tue passphrase (o la risposta HMAC-SHA1 da Yubikey o il tuo backup), potrebbe fare un backup della chiave master LUKS, e quindi usarlo per decrittografare il tuo disco rigido anche se si cambia la passphrase in futuro. eseguire nuovamente i passaggi 2 e 3 per ripristinare la chiave segreta all'interno di Yubikey e scegliere una nuova passphrase di sfida. Nota che se un avversario è riuscito a imparare una delle tue passphrase (o la risposta HMAC-SHA1 da Yubikey o il tuo backup), potrebbe fare un backup della chiave master LUKS, e quindi usarlo per decrittografare il tuo disco rigido anche se si cambia la passphrase in futuro. eseguire nuovamente i passaggi 2 e 3 per ripristinare la chiave segreta all'interno di Yubikey e scegliere una nuova passphrase di sfida. Nota che se un avversario è riuscito a imparare una delle tue passphrase (o la risposta HMAC-SHA1 da Yubikey o il tuo backup), potrebbe fare un backup della chiave master LUKS, e quindi usarlo per decrittografare il tuo disco rigido anche se si cambia la passphrase in futuro.La pagina man di cryptsetup spiega questo, guarda la sezione luksHeaderBackup . Se si sospetta che ciò sia accaduto, è necessario creare un volume LUKS completamente nuovo per proteggere i dati.