La protezione dei dati personali, soprattutto quando ci si sposta dall’ufficio, è diventa oggi sempre più essenziale ed è anche un requisito di legge, come prescrivono gli adempimenti contenuti nel Regolamento generale sulla protezione dei dati (GDPR). Per i professionisti e le aziende è quindi essenziale dotarsi di strumenti che permettano di proteggere i dati riservati in transito e a riposo. Abbiamo visto cos’è BitLocker e perché si tratta di una funzionalità da attivare anche in ottica GDPR. Se si sceglie la soluzione Microsoft, è però opportuno accertarsi che il bypass BitLocker non sia fattibile.
BitLocker può essere utilizzata per crittografare il contenuto di partizioni e intere unità di memorizzazione (compresi hard disk e SSD): l’obiettivo è evitare che gli utenti non in possesso delle chiavi giuste possano accedere al sistema contro la volontà dell’utente. Con BitLocker To Go è anche possibile crittografare il contenuto delle chiavette USB e di altre unità portatili: si evita che i dati salvati nei dispositivi che si portano spesso con sé possano cadere nelle mani di persone non autorizzate ad accedervi. Non è infrequente perdere chiavette USB e altri dispositivi di memorizzazione: BitLocker fa sì che i dati siano illeggibili da parte di utenti terzi.
In passato abbiamo suggerito di usare sempre BitLocker con la richiesta del PIN pre-boot: diversamente, c’è un istante in cui la chiave crittografica viaggia in chiaro tra chip TPM (Trusted Platform Module) e processore. L’avevano dimostrato a suo tempo gli esperti di Dolos Group, lo conferma adesso un ricercatore francese, Guillaume Quéré, che si serve di un notebook Lenovo e di un analizzatore logico economico per dimostrare come sia possibile forzare un sistema protetto mediante BitLocker.
Bypass BitLocker: essenziale un analizzatore logico. Quali devono essere le sue caratteristiche
Un analizzatore logico (logic analyzer) è un dispositivo elettronico utile ad analizzare e comprendere il comportamento dei segnali digitali all’interno di un sistema. Si tratta di uno strumento che consente agli ingegneri, agli sviluppatori e ai ricercatori di esaminare e catturare i segnali elettronici digitali che attraversano circuiti, componenti o microprocessori.
Quéré fa presente che per acquisire la chiave crittografica di BitLocker, la frequenza di campionamento dovrebbe essere da 3 a 4 volte la frequenza del bus. Ciò significa che se il bus SPI funziona a 33 MHz, il campionamento dovrebbe essere effettuato ad almeno MHz. L’analizzatore logico DSLogic Plus, come da specifiche, può raggiungere 400 MHz su un massimo di 16 canali.
Per inciso, maggiore è il numero di canali acquisiti contemporaneamente (per gruppi di 3), minore è la frequenza di campionamento. Nel caso dell’analizzatore economico usato dal ricercatore, in modalità stream è possibile inviare i risultati direttamente al computer host. È possibile acquisire set di grandi dimensioni, fino a un minuto, ma il campionamento è limitato a 100 MHz su 3 canali. La modalità buffer consente invece il campionamento a 400 MHz ma funziona solo per pochi millisecondi, quindi non ha alcun utilizzo pratico nel caso di specie.
Un analizzatore logico del valore di 100-150 euro, come quello presentato, è quindi appena sufficiente a vincere la sfida contro BitLocker. In alternativa si possono scegliere logic analyzer più costosi e versatili come la linea Saleae Logic Pro, che però ha costi ben diversi. Prodotti alternativi sono disponibili in questa pagina.
Cos’è il bus SPI
Il bus SPI (Serial Peripheral Interface) è un protocollo di comunicazione seriale ampiamente utilizzato nell’elettronica per connettere dispositivi microcontroller, sensori, memorie e altri componenti a microcontrollori o microprocessori. Nel contesto della piattaforma TPM, il bus SPI è utilizzato per stabilire una comunicazione seriale tra CPU e chip di sicurezza.
Proprio attraverso il bus SPI, la CPU invia comandi al chip TPM e resta in attesa delle risposte. È usato, ad esempio, per richiedere operazioni crittografiche o per accedere alle funzioni di sicurezza offerte dal TPM.
Come funziona BitLocker a basso livello
Per ciascun volume crittografato, BitLocker genera una chiave simmetrica FVEK (Full Volume Encryption Key) in modo pseudocasuale. Tale chiave è utilizzata per crittografare e decodificare i dati memorizzati all’interno del volume BitLocker. A sua volta, la chiave FVEK è crittografata con una chiave pubblica ed è memorizzata insieme ai metadati del volume, proprio accanto ai dati crittografati. Questo approccio consente di effettuare la rotazione delle chiavi senza dover crittografare nuovamente l’intero disco.
Si chiama invece Volume Master Key (VMK) la chiave crittografica principale utilizzata per cifrare e decifrare FVEK. VMK è generata da BitLocker utilizzando una combinazione di fattori, tra cui la password dell’utente, la chiave di ripristino BitLocker, le chiavi TPM e altre informazioni di autenticazione. Una copia della chiave VMK viene codificata utilizzando la chiave di ripristino.
Poiché VMK è conservata nel chip TPM, il contenuto di un’unità cifrata con BitLocker può essere decodificato solo quando gestito con lo stesso computer (esiste comunque un meccanismo di ripristino basato su Active Directory).
Quando BitLocker è chiamato a crittografare un volume dati, la funzionalità di sicurezza Microsoft genera la chiave FVEK per quello specifico volume quindi la cifra utilizzando la chiave VMK. I dati sul volume sono protetti utilizzando la chiave FVEK. Quando si accede ai dati, la chiave VMK è utilizzata per decifrare FVEK, che a sua volta serve per accedere effettivamente ai dati memorizzati sul volume. Il processo avviene “dietro le quinte” senza che l’utente si accorga di nulla.
Per decodificare il contenuto di un’unità crittografata con BitLocker, ad un certo punto la CPU chiede al chip TPM di inviare la VMK sul bus SPI. Questo significa che in un certo istante, la chiave VMK transita in chiaro ed è scambiata tra TPM e CPU: può quindi essere catturata e utilizzata per decifrare i dati.
Bypass BitLocker e recupero della chiave VMK
Quéré ricorda che SPI è un bus condiviso quindi è possibile collegare l’analizzatore logico su un chip flash SPI vicino al TPM (i pin TPM sono scomodi da usare per via delle loro dimensioni ridottissime).
La chiave VMK viene utilizzata nella fase POST (Power-On Self-Test) ovvero subito all’avvio del sistema informatico. Il ricercatore racconta che lo scambio di quell’informazione è avvenuta subito dopo la comparsa della schermata iniziale sul sistema Lenovo L13 usato per il test.
Al paragrafo Decoding the captured signal, lo studioso racconta che sono complessivamente tre i livelli da decodificare: SPI (layer fisico), TIS e TPM 2.0 (contiene la chiave VMK cercata).
L’analizzatore logico decodifica correttamente SPI, che è contraddistinto da uno schema di funzionamento piuttosto semplice: un’onda quadra blu che rappresenta il clock e due linee dati.
Quéré spiega di aver riscontrato invece la maggior parte dei problemi nell’elaborazione e nel comprendere i segnali TIS (TPM Interface Specification). TIS definisce una serie di comandi e protocolli di comunicazione per interagire con un modulo TPM attraverso un’interfaccia a basso livello.
Il comando TPM che richiede la restituzione della chiave è TPM2_Unseal
: è descritto nella parte 3 della specifica TPM 2.0. Per individuarlo, il ricercatore ha filtrato i dati grezzi SPI usando un’apposita maschera. L’inizio di una trasmissione TPM è infatti identificato con una specifica intestazione e, a fronte di un manciata di risposte TPM (qualche decina), la risposta contenente la chiave VMK è di solito quella più lunga.
Montaggio dell’unità crittografata BitLocker e accesso ai dati
Per accedere al contenuto dell’unità crittografata e bypassare BitLocker, è quindi possibile – una volta recuperata la chiave VMK – avviare il sistema da un supporto di avvio. Allo scopo va benissimo una distribuzione Linux live. Quéré ha utilizzato i seguenti tre comandi da finestra del terminale Linux:
echo CHIAVE_VMK | xxd -r -p > key
dislocker-fuse -K key /dev/sdd3 ./mnt/
mount ./mnt/dislocker-file ./mnt2/
Il primo comando stampa il valore della chiave VMK e converte la stringa esadecimale in dati binari (xxd
) per poi salvare l’output in un file chiamato key
.
Con l’istruzione dislocker-fuse
viene eseguito uno strumento che consente di montare partizioni BitLocker crittografate sul sistema Linux. Le opzioni specificate insieme con il comando indicano di usare il file key
generato al passo precedente. Più a destra, si specificano l’unità BitLocker crittografata mentre ./mnt/
è il percorso della directory di mount dove verranno visualizzati i file decrittografati.
L’ultimo comando utilizza mount
per montare il contenuto decrittografato dell’unità BitLocker precedentemente elaborata.
A questo punto, per accedere al desktop e superare le credenziali impostate, Quéré ha utilizzato un meccanismo molto simile a quello che abbiamo proposto per entrare in Windows in caso di password dimenticata (funziona sia con Windows 10 che con Windows 11).
In conclusione, la configurazione di un PIN pre-boot con BitLocker è essenziale per godere di un elevato livello di sicurezza e scongiurare attacchi come quello presentato da Quéré. Le istruzioni per procedere in tal senso, sono nell’articolo citato nell’introduzione. In alternativa, anziché un chip hardware TPM, è possibile usare un fTPM ovvero la versione della tecnologia implementata nel firmware della scheda madre.
Credit immagine in apertura: iStock.com/natatravel