Controllo della protezioneBitLocker e le complessità dei rapporti di fiducia

Justin Troutman

Windows Vista. Non ho mai pronunciato queste due parole nei miei articoli precedenti; ecco perché scrivendo questo articolo mi sono sentito come un bambino di cinque anni con un assegno in bianco che entra in un negozio di giocattoli. Innumerevoli sono le funzionalità di cui discutere, enorme è il patrimonio di conoscenze che vale la pena esplorare e numerose sono le strade che una discussione può aprire.

Un po' di tempo fa, mentre leggevo il blog del guru della protezione, Bruce Schneier, mi sono imbattuto in una voce che esprimeva un concetto all'epoca completamente nuovo per me: BitLocker™. Dopo alcune rapide ricerche ho scoperto che si tratta di una tecnologia progettata per fornire funzionalità di crittografia in Windows Vista®. La mia reazione immediata di fronte a tale scoperta fu di sgomento: "Oh no. La crittografia in Windows Vista? Non ne verrà nulla di buono. Ma se anche consentisse di ottenere risultati discreti, da qualche parte nel sistema ci deve essere una backdoor".

Alcuni argomenti storici (validi o meno) forniscono una spiegazione del perché si potrebbe avere qualche esitazione prima di utilizzare le funzionalità di protezione integrate in Windows®. Questo tuttavia esula dall'ambito dell'articolo, con cui mi propongo invece di spiegare perché ritengo che esistano valide ragioni per dare una chance a BitLocker. Voglio inoltre spezzare una lancia a favore del tipo di filosofia che garantisce la vitalità del software o dell'hardware di crittografia.

Non bisogna fraintendere: non sto proponendo BitLocker come una panacea in grado di garantire la protezione nel suo complesso. BitLocker è semplicemente una delle tante tessere che compongono il puzzle della sicurezza. Si prefigge lo scopo di fornire flessibilità nell'ambito di determinati modelli di rischio.

In particolare BitLocker è utile per far fronte ai danni derivanti dalla perdita (o furto) di un computer portatile. I lavoratori mobili portano continuamente con sé ogni sorta di informazione riservata, ovunque: treni e aerei, ristoranti e alberghi, abitazioni private e uffici. Queste informazioni sono memorizzate in computer portatili e altri dispositivi mobili che, per natura, non garantiscono una reale protezione, rendendo i dati memorizzati estremamente vulnerabili agli attacchi. Cosa accade ai dati quando un utente dimentica un computer portatile in qualche luogo?

Non è possibile eliminare la negligenza della natura umana. Per fortuna, è possibile limitare il caos che ne potrebbe derivare. Il costo che un'azienda deve sostenere per la sostituzione di un computer portatile è minimo rispetto al costo associato alla gestione dei problemi che derivano dalla compromissione di dati riservati. Questo è il tipo di protezione che si intende fornire con la tecnologia BitLocker.

Le opinioni degli esperti

In questo articolo si illustra BitLocker da una prospettiva interessante. Personalmente non ho ancora provato a utilizzare la tecnologia BitLocker. Questa dichiarazione indurrà probabilmente molti utenti a fare commenti del tipo: come può esprimere un'opinione o scrivere qualcosa di utile su una tecnologia uno che non l'ha mai utilizzata? A chi è assalito dal dubbio, faccio presente quanto segue. Lo scopo principale dell'articolo è trattare la crittografia da una prospettiva più generale e illustrare le filosofie di progettazione che sono fondamentali per il successo di una soluzione.

Tutto è iniziato dopo aver letto il blog di Bruce Schneier. Si supponga ad esempio che al cinema venga proiettato un film che si desidera vedere. In base al trailer e agli attori principali del cast si sono già fatte alcune supposizioni sul film. È vero che un buon cast non è garanzia di un bel film. Tuttavia, l'elenco del cast può dire molto sul film e sulle proprie aspettative. Esiste un'alta probabilità che un film che prevede nel proprio cast attori di rilevo come Chris Rock e Ben Stiller o Kate Winslet e Johnny Depp non deluda le aspettative del proprio pubblico.

Allo stesso modo, quando ho visto che Bruce Schneier, considerato a livello internazionale un "guru" in materia di tecnologie di protezione, trattava di BitLocker sul suo blog, ho fatto alcune supposizioni. Innanzitutto, ho pensato che questa nuova tecnologia doveva essere o sufficientemente valida da meritare attenzione da parte di un personaggio così autorevole o così inutile da richiedere una divulgazione pubblica. Con mia grande sorpresa, il verdetto finale di Bruce Schneier è stato positivo.

Una frase in particolare mi ha colpito nella sua recensione: "Non esistono backdoor per la polizia". Questa affermazione racchiude in sé grande vigore. Mi ha colpito la certezza con cui è stata formulata. Nel suo articolo l'autore ha inoltre incluso un collegamento al blog di Microsoft® System Integrity Team. Ho seguito il collegamento e ho trovato un post di Niels Ferguson, uno sviluppatore Microsoft che opera nel settore della protezione, in cui venivano denunciate alcune voci speculative in base alle quali Microsoft aveva intenzionalmente incluso backdoor in BitLocker per ottemperare ai requisiti legali. Ferguson affermava che le backdoor sono inaccettabili e che non avrebbe mai partecipato a un progetto che prevedeva stratagemmi di questo tipo. Spiegava inoltre che, anche se Microsoft fosse stata obbligata dalle autorità competenti a includere una backdoor, la società lo avrebbe annunciato pubblicamente o avrebbe ritirato completamente la funzionalità dal mercato.

Il nome sul post, Niels Ferguson, spiega la fiducia riposta da Schneier in questa nuova tecnologia. E quel nome ha infuso una certa fiducia anche in me. Ferguson è un personaggio che sa il fatto suo e può vantare un curriculum di tutto rispetto che assicura l'elevato livello di attendibilità di ciò che dice. Bruce Schneier e Niels Ferguson sono coautori di Practical Cryptography (un libro che ha fatto scuola e in cui viene illustrato come applicare una tecnologia di crittografia efficace in modo semplice, corretto e sicuro) e co-progettisti della crittografia a blocchi, Twofish, una rete di Feistel a 128 bit conosciuta la sua robustezza alla crittoanalisi dopo essersi classificata come finalista nel processo di selezione del programma AES (Advanced Encryption Standard).

Ovviamente, la partecipazione a un progetto di un crittografo di grande esperienza non offre alcuna garanzia che il prodotto finale sarà sicuro. Anche i più esperti del settore possono talvolta mancare qualche colpo. Tuttavia, indipendentemente dagli sviluppi futuri di BitLocker, si può almeno confidare sul fatto che nella sua creazione hanno giocato un ruolo fondamentale efficaci strategie di progettazione.

Parlando di colpi mancati, si possono annoverare tentativi in buona fede degli sviluppatori che non dispongono di alcuna conoscenza in materia di crittografia e tentativi in cattiva fede degli sviluppatori che sono interessati semplicemente a lanciare sul mercato un prodotto. Entrambi i tentativi, indipendentemente dall'intento, sono destinati a dare risultati fallimentari nell'ambito della protezione. Nessuno dei due sembra, tuttavia, riguardare BitLocker. Il coinvolgimento almeno di un crittografo esperto e l'utilizzo di un'ampia gamma di risorse a supporto dello "sforzo" promette bene.

Qualche parola sulla fiducia

Non molto tempo fa, Phil Zimmerman, creatore della crittografia PGP, ha condiviso con me alcune regole generali. Se dovesse mai essere pubblicato un libro su un credo per gli sviluppatori in materia di protezione, il suo consiglio dovrebbe essere collocato in cima alle preferenze. Sebbene le sue considerazioni non riguardino specificamente la tecnologia BitLocker, le filosofie di progettazione che tali considerazioni promuovono possono essere applicate a qualsiasi soluzione di crittografia. Le sue argomentazioni potrebbero essere considerate ovvie o eccessivamente zelanti. Tuttavia, considerato lo stato della protezione oggi, vale la pena farne esplicita menzione.

Durante la progettazione di un'infrastruttura di crittografia, lo sviluppatore deve sempre aderire ai principi di semplicità, correttezza e protezione. Sebbene gli errori siano inevitabili, non devono essere accettati come un evento naturale e semplicemente minimizzati. Lo sviluppatore deve essere un convinto difensore di un meticoloso perfezionismo. Secondo Zimmerman, "progettare partendo dal presupposto che il minimo errore può costare la vita a un uomo". Un'esagerazione? Alla conferenza annuale sulle applicazioni per la protezione dei computer del 2005, il crittografo della NSA Brian Snow (che da allora si è ritirato) disse: "Funzioni e garanzie sono le due caratteristiche che cerco in un dispositivo di protezione. Noi non facciamo beta test presso il cliente. Se il prodotto fallisse, qualcuno potrebbe rimetterci la vita". Il costo di un errore non può, quindi, essere misurato solo in termini monetari.

Gli utenti meritano sicurezza. Guadagnarsi e mantenere la fiducia degli utenti è fondamentale. Zimmerman esprime questo concetto molto chiaramente quando afferma: "Guadagnati la fiducia degli utenti. Una volta assunta questa responsabilità, non puoi più tirarti indietro". Agendo in base a questo principio, l'azienda rafforzerà la fiducia dell'utente nei propri confronti e la propria reputazione come azienda attendibile. Se il rapporto di fiducia viene meno, non sarà più possibile recuperarlo.

Queste sono prospettive che spero Microsoft abbia tenuto in considerazione durante la progettazione di BitLocker (o qualsiasi altro prodotto per la protezione). Dopo la premessa, devo spiegare perché sono ottimista sull'adozione da parte di Microsoft del giusto comportamento e sulla creazione di una tecnologia di crittografia da prendere sul serio.

Autenticazione semplificata ed Elephant

Essenzialmente, BitLocker rappresenta la tecnica con cui Windows Vista (in particolare le edizioni Enterprise e Ultimate) garantisce la crittografia di tutti i dati del volume di sistema. Da questo punto di vista, l'applicazione potrebbe sembrare piuttosto semplice; occorre tuttavia prendere in considerazioni i vincoli dello strumento. Poiché BitLocker garantisce la crittografia dei dati a livello di settore e il testo crittografato non può superare la lunghezza del testo normale, questo limite non lascia spazio sufficiente per l'utilizzo di altri meccanismi come nonce (un numero o una stringa utilizzata una sola volta per l'autenticazione), il vettore di inizializzazione (IV) o il codice MAC (Message Authentication Code). Ho anticipato che erano probabili vincoli così rigidi e le condizioni imposte di conseguenza, ma nello stesso tempo sapevo che l'autenticazione dei messaggi sarebbe stata in un modo o nell'altro affrontata.

BitLocker si basa su un'autenticazione semplificata. Il compromesso su cui si basa non è affatto moderato poiché presuppone che il testo crittografato manipolato non dà come risultato testo normale significativo. In altre parole, se manipolato, il testo crittografato dovrebbe, ad esempio, causare un arresto anomalo del sistema anziché consentire a un utente malintenzionato di eseguire una funzione.

Il team Microsoft responsabile della tecnologia BitLocker era consapevole del fatto che l'analisi di una crittografia a blocchi completamente nuova avrebbe richiesto tempi eccessivamente lunghi, ma le progettazioni esistenti o non erano state analizzate in modo adeguato oppure non erano sufficientemente efficienti. Pertanto, per la crittografia, Microsoft ha scelto AES in modalità CBC (Cipher Block Chaining) a cui in questo articolo si farà riferimento come AES-CBC. Questo meccanismo è indistinguibile nell'ambito del modello di attacco chosen plaintext (abbreviato in IND-CPA) ma non garantisce l'integrità. Inoltre, poiché non viene fornito il supporto per il codice MAC e CBC è una modalità di riservatezza, non esiste alcuna garanzia di integrità. A questo proposito entra in gioco Elephant.

Il nuovo componente Elephant fornisce due diffusori progettati per ottenere un'autenticazione semplificata più efficace rispetto all'utilizzo del normale meccanismo AES-CBC. È tuttavia disponibile un'opzione che consente di eseguire AES-CBC senza Elephant per coloro che devono rispettare rigorosi criteri di conformità agli standard. Sebbene non sia sempre la soluzione ideale, considerati i vincoli, l'autenticazione semplificata rappresenta la soluzione più appropriata ed Elephant mira a sfruttarne al massimo le potenzialità. Come funziona esattamente?

Nella Figura 1 è illustrato il funzionamento del meccanismo. Quando viene eseguita la crittografia, il testo non crittografato viene combinato, tramite XOR, con una chiave settore. Il testo viene quindi trasmesso attraverso due diffusori senza chiave. Nei diffusori il testo viene codificato con AES-CBC. La chiave settore e AES-CBC richiedono entrambi il materiale della chiave e pertanto sono dotati in modo indipendente di chiavi. Con questo metodo si semplifica la formalizzazione di una prova per la riduzione del livello di protezione garantito dalla combinazione di AES-CBC ed Elephant al solo AES-CBC. Elephant è una nuova primitiva e le nuove primitive possono essere accolte con riluttanza fino a quando non vengono rigorosamente analizzate. Tuttavia, questo approccio consente di trovare il giusto equilibrio, poiché BitLocker può mostrare che l'utilizzo congiunto di AES-CBC ed Elephant garantisce una minore vulnerabilità ad attacchi rispetto all'utilizzo del solo meccanismo AES-CBC.

Figura 1 Autenticazione semplificata con Elephant

Figura 1** Autenticazione semplificata con Elephant **

La chiave settore e i componenti AES-CBC ricevono 256 bit di materiale della chiave, determinando una lunghezza della chiave di 512 bit. Per impostazione predefinita, tuttavia, ciascuno di questi componenti utilizza solo 128 bit di materiale della chiave, vale a dire che una parte del materiale della chiave non viene utilizzato. La ragione di ciò risiede semplicemente nel fatto che è più semplice rimuovere i bit non necessari che modificare l'infrastruttura di gestione delle chiavi man mano che la lunghezza della chiavi cambia.

La lunghezza del blocco può essere pari a qualsiasi potenza di due, nell'intervallo compreso tra 512 e 8192 byte. Per garantire che un'eventuale manipolazione del testo crittografato determini la modifica casuale di tutto il testo normale di un settore, la crittografia a blocchi è progettata per soddisfare le esigenze di contesti con dimensioni di blocchi variabili. Inoltre, se si comporta come una crittografia a blocchi modificabile (come illustrato da Liskov, Rivest e Wagner), in cui l'algoritmo si modifica lievemente da un settore all'altro, un avversario non potrà spostare il testo crittografato di un settore in un altro settore.

Solo il tempo darà il verdetto finale

Le congetture sulla protezione crittografica di BitLocker non sono ancora inserite in un quadro più ampio. Per BitLocker, garantire una protezione valida non è necessariamente sufficiente perché questa tecnologia possa assolvere alla sua funzione. La ragione sta nel fatto che BitLocker non è una soluzione in se stessa, ma una delle tante appendici di Windows Vista. Secondo quanto afferma Microsoft, BitLocker è una funzionalità strettamente integrata in Windows Vista. Tuttavia, se esiste questa stretta integrazione con il sistema operativo, non è plausibile pensare che l'errore di un componente possa, a propria volta, causare il malfunzionamento o la compromissione di BitLocker?

Personalmente, credo nella modularità e nell'errore isolato. Una stretta integrazione senza modularità conduce alla complessità. Questo potrebbe non accadere con Windows Vista e BitLocker, ma solo il tempo, e un'analisi estesa, lo potranno confermare o smentire.

Cosa penso dunque di BitLocker? Apprezzo molto il progetto del Microsoft System Integrity Team per aver fatto affidamento su crittografi di tutto rispetto, che hanno operato con la massima professionalità. È ovvio che questa funzionalità è stata progettata per la crittografia e non per una campagna di marketing. Pertanto la mia risposta alla suddetta domanda è che BitLocker è una tecnologia da prendere sul serio. Questa affermazione non è un verdetto sulla capacità della tecnologia di garantire una protezione valida. Anche in questo caso, solo il tempo e la valutazione nel mondo reale potranno dare una risposta. Molti protocolli e primitive di crittografia non vengono più utilizzati. Ma, come minimo, il progetto Microsoft System Integrity Team ci ha fornito le conoscenze e le piattaforme su cui basare soluzioni anche migliori.

Justin Troutman è un crittografo e studente universitario di matematica. Il principale centro di interesse della sua attività è rappresentato dalla crittografia simmetrica. È inoltre il fondatore di Extorque, una società specializzata nella ricerca e nella consulenza crittografica.

© 2008 Microsoft Corporation e CMP Media, LLC. Tutti i diritti riservati. È vietata la riproduzione completa o parziale senza autorizzazione.