La crittografia dell’intero disco, conosciuta con il termine full disk encryption (FDE), permette di proteggere il contenuto di qualunque unità di memorizzazione. L’idea alla base di FDE è semplice ma efficace: ogni settore viene crittografato appena prima che venga scritto sul disco indipendentemente dal software, dall’utente, dal file o dalla directory cui i dati fanno capo. Il contenuto del settore sull’unità di memorizzazione viene decodificato appena dopo che viene richiesta un’operazione di lettura.
La cifratura dei dati è fondamentale, soprattutto sui dispositivi mobili: salvando i file in chiaro senza usare alcun algoritmo crittografico utenti non autorizzati possono facilmente estrarre i dati altrui, sottrarli e trasferirli a terzi. Si immagini cosa può succedere al contenuto di un notebook che non è protetto. In Windows è bene proteggere i dati con BitLocker e chiedere un PIN all’avvio del sistema.
Se si può dimostrare di aver attivato la FDE sul dispositivo portatile allora si può attestare che il sistema perso o rubato non porterà a una violazione dei dati perché agli occhi dei terzi le unità di memorizzazione non contengono dati effettivamente utilizzabili.
Quando si usano soluzioni per la FDE, tuttavia, è fondamentale porsi alcune domande: si è usato il giusto algoritmo crittografico? Si sono generate le chiavi in modo affidabile? Si è correttamente gestita la questione dell’integrità dei dati? Si può cambiare le password in modo sicuro e veloce?
Sfortunatamente il programma cryptsetup, ampiamente utilizzato per la crittografia dei sistemi Linux, pur affrontando tutti i temi di cui sopra, soffre di un brutto bug di sicurezza (CVE-2021-4122). Esso riguarda una caratteristica chiamata re-encryption che si occupa di decifrare e crittografare i dati, anche mentre il dispositivo è in uso, allorquando si avesse la necessità di modificare la password principale.
Per evitare alcune tipologie di attacchi cryptsetup mantiene parte del disco criptato con la vecchia chiave e il resto con quella nuova tenendo accuratamente traccia delle modifiche, cosa utile nel caso in cui il processo dovesse interrompersi a metà strada o il dispositivo venisse spento prima della conclusione dell’operazione.
Il fatto è che qualcuno con accesso fisico al disco crittografato con cryptsetup non in possesso della password per decifrarlo, poteva ingannare lo strumento facendogli credere di essere a metà di una procedura di decifratura e quindi indurre il software a decifrare parte del disco, lasciandolo così non protetto.
Il rischio, quindi, era quello di ritrovarsi con un’unità di memorizzazione che soltanto all’apparenza appariva crittografata ma che esponeva parte dei dati ivi conservati.
Secondo le informazioni rese note, l’attacco poteva anche essere in seguito invertito. Ciò significa che un utente malevolo avrebbe potuto decodificare in modo silente parti di un disco senza possedere alcuna password, per esempio il contenuto di un server, modificare i dati decriptati e poi disporre una nuova codifica dell’unità oggetto di aggressione.
In parole l’attaccante avrebbe potuto mettere in difficoltà un’altra persona inserendo nel suo sistema documenti che non vi erano mai stati memorizzati prima o aggiungendo informazioni compromettenti.
Per chi usa cryptsetup su Linux è quindi essenziale aggiornare alla versione 2.4.3 o successiva.
Per verificare la versione del programma in uso basta digitare cryptsetup --version
. Non sono necessari ulteriori interventi una volta applicata la versione più aggiornata.