I.F.T.C.

Per quanto riguarda l’argomento Trusted Computing ci sono due post molto interessanti da segnalare sul blog di Joanna.

Il primo si intitola “Why do I miss Microsoft Bitlocker?” e spiega in dettaglio la differenza tra Bitlocker +TPM e qualsiasi altro SW di encryption per dischi. Ne avevo parlato in precedenza ma Joanna racconta con dovizia di particolari gli scenari di attacco usando un esempio alla portata di tutti.

Il secondo post si chiama invece Attacking Intel Trusted Execution Technology. Parla molto bene di questa nuova tecnologia che permette di far girare codice trusted su una piattaforma untrusted. L’equivalente in codice – se vogliamo – del protocollo di scambio di chiave che va sotto il nome di Diffie-Hellmann.

Una cosa che ha subito colto la mia attenzione è la sigla I.F.T.C.: Irrational Fear of the Trusted Computing. Per fortuna qualcuno, dopo aver letteralmente sfrantecato gli zebedei su quanto funesto sarebbe stato l’arrivo inevitabile di questa tecnologia, ha cominciato a dedicarsi ad argomenti più leggeri anche se non meno controversi. A chi è ancora scettico sull’utilità del trusted boot dedico questo splendido paragrafo:

In other words, our system can be all full of boot sector viruses and BIOS rootkits, and god-knows-what-else, and still TXT should allow to load a clean VMM (or OS kernel) in a secure way, immune to all those rootkits present in the system in a moment just before the load process. This TXT-supported load process is called Late Launch, and is implemented via a special new CPU instruction called SENTER.

[…]

It is hard to overemphasize the potential impact that a technology such as TXT could have on computer security. One can immediately see that it could eliminate all the system-level persistent malware — in other words we can easily build systems (VMMs or even standard OSes) that would be immune to attacks that try to compromise system binaries on disk, or attack the system right from the bootloader or BIOS. Combining this with VT-x and VT-d technologies, system developers (for the first time, at least as far as the "PC" platform is considered) have gotten extremely strong tools into their hands that should allow them to create really secure VMMs and OSes…

È ancora troppo presto però per gioire, la tecnologia TXT (conosciuta anche come La Grande) è ancor meno diffusa del TPM.

-quack

Pubblicato giovedì 22 gennaio 2009 alle 1:12 AM - 20 commenti so far
Archiviato in: Trusted Computing

Post Fritzante

Nolan Bushnell l’ha sparata grossa:

“There is a stealth encryption chip called a TPM that is going on the motherboards of most of the computers that are coming out now,” he pointed out

“What that says is that in the games business we will be able to encrypt with an absolutely verifiable private key in the encryption world - which is uncrackable by people on the internet and by giving away passwords - which will allow for a huge market to develop in some of the areas where piracy has been a real problem.”

La notizia è stata riportata su P.I. e sinceramente la reazione, non tanto dei troll del forum quanto dell’insolito duo, la stavo aspettando. Era da un po’ che non mi cappottavo così tanto dalle risate.

Primo perché il cosiddetto esperto non ha neanche capito che Nolan l’ha sparata davvero grossa: immagino che anche Nolan sia cascato vittima di pessima informazione.

Secondo perché la reazione è davvero esilarante:

Eh sì, perché da qualche anno a questa parte sembra che noi oppositori del Fritz Chip siamo rimasti vittima del nostro stesso successo.

Un grande. Da domani comincio a postare di un eventuale attacco alieno alla terra e sperare di cavarmela qualche giorno dopo dicendo che gli alieni hanno avuto paura di Paperino, capace di sgominare il loro piano. Ma la cosa che mi fa sorridere di più è il vizietto di ridurre tutto in “politica”. Non è più una questione di sicurezza/integrità/quello che si vuole, ma di Open Source vs. Closed Source:

inutile creare blindature quando non c'è niente da proteggere.

Mmmh qualcuno dovrebbe spiegare che proteggere i dati aziendali non è “proprio niente”, soprattutto se l’azienda è un’agenzia governativa e su qualche laptop trafugato potrebbero esserci mie informazioni personali. Ancora:

Nessuna software house e nessuna game house può competere con concorrenti che sono centinaia di volte più grandi e veloci e che rilasciano i propri prodotti gratis.

[...]

il software commerciale e le software house devono intervenire quando, per un motivo o per l'altro, la comunità degli utenti non è in grado di sopperire autonomamente alle sue esigenze di sviluppo software.

Decisamente esilarante.

-quack

Technorati Tags:

Pubblicato venerdì 30 maggio 2008 alle 12:10 AM - 11 commenti so far
Archiviato in: Trusted Computing

TPM e bitlocker

bitlock Nella "puntata" precedente ho raccontato come funziona il secure boot su una Trusted Platfrom (TP). Bitlocker è una feature di encryption "tombale" introdotta con Vista per arginare il fenomeno del trafugamento dei dati via furto dei laptop. Bitlocker, per funzionare, non richiede la presenza del TPM ma laddove esistente ed abilitato ne può fare uso. In questo post farò ampio uso di terminologia (es. sealing, PCR) introdotta nella puntata precedente.

Bitlocker funziona in maniera piuttosto semplice. Innanzitutto divide la partizione principale (es. C:\) in due partizioni "asimmetriche". Una piccolina e destinata a contenere il minimo indispensabile verrà usata per fare il boot (di solito chiamata S:\); l'altra verrà usata per contenere tutto il resto del contenuto originale di C:\. Nella versione attuale Bitlocker non permette di sigillare drive non di sistema (D:\, E:\, ecc.).

Splittata la partizione di sistema, l'attivazione di Bitlocker avviene in due fasi: la creazione di una chiave simmetrica e successiva criptazione del drive C:\ con tale chiave simmetrica. La chiave simmetrica, che va sotto il nome di Volume Master Key (VMK), può essere memorizzata in due diverse locazioni: in assenza di TPM può essere archiviata su chiave USB[1]; laddove il TPM è presente la VMK viene "sigillata" e salvata sul drive S:\

Una copia della VMK (recovery) viene generata per dare la possibilità di sbloccare il boot laddove succeda legittimamente qualcosa che possa prevenire l'un-sealing della VMK (esempio: installazione di hardware che cambia la configurazione del BIOS). Ovviamente il consiglio è di stampare la chiave di recovery e tenerla chiusa in un posto "tranquillo": il parallelo è con la copia della chiave di casa.

La criptazione del drive avviene in background grazie al low priority IO e in maniera safe. L'algoritmo basato su AES, la cui interessantissima descrizione è contenuta in questo paper in inglese, è sector based: il SO è in grado di distinguere quali settori sono criptati e quali no, nel caso un evento esterno possa interrompere il processo di criptazione.

In aggiunta alla chiave simmetrica è possibile proteggere il boot tramite PIN. Tali impostazioni sono poi forzabili a livello aziendale via group policy.

Per ulteriori approfondimenti consiglio una visita al System Integrity Team Blog da cui cito un paio di post interessanti:

Possibili FAQ:

Quale differenza c'è tra tenere la chiave di volume (VMK) su pendrive e fare uso di TPM?
Aldilà di una questione soggettiva di praticità, solo un TPM può garantire che il sistema è integro tramite il meccanismo di secure boot.

Cosa succede se il sistema non si riavvia e chiede la chiave di recovery?
Questo può accadere per svariati motivi, uno dei quali la modifica legittima di impostazioni del BIOS, l'aggiunta/rimozione di hardware, installazione di un menù multi-boot, ecc. Una volta inserita la chiave di recovery, il sistema si avvia e a questo punto basta disattivare/riattivare Bitlocker per rigenerare l'impronta del sistema con le nuove impostazioni. Dal successivo riavvio la chiave di recovery non sarà più necessaria. Un'altra possibilità, per evitare questa noiosissima operazione in caso di frequenti cambi di impostazioni (es. il Sony Vaio ha uno switch stamina-performance che cambia le impostazioni nel bios), è quella di indicare esplicitamente i registri PCR da usare per il sealing della VMK. Questo si può fare con i seguenti via gpedit.msc -> Administrative Templates - Windows Components -Bitlocker Drive Encryption -> "Configure TPM Platform Validation Profile"

I dati criptati con BitLocker sono inviolabili?
Assolutamente no. BitLocker usa algoritmi pubblicamente documentati e attacchi di forza bruta sono sempre possibili. BitLocker è un deterrente eccezionale per il trafugamento di dati ma non è un espediente magico contro le forze del male. Con sufficiente tempo e risorse qualsiasi algoritmo di criptazione diventa violabile.

Posso conservare la chiave di recupero nella partizione di boot (S:\)?
Certo, ma è come chiudere la porta a chiave e lasciare la chiave nella serratura. Non mi sembra un'ottima idea.

Lo voglio "comprare" ed "installare", cosa devo fare?
BitLocker, come tutte le feature "aziendali" di Vista, è disponibile solo su Vista Enterprise o Vista Ultimate. Su quest'ultima è disponibile - via Ultimate Extra - il BitLocker drive preparation tool che semplifica le operazioni di ripartizionamento dell'HD. In ogni caso una guida passo passo è presente a questa pagina in inglese.

Argomento del prossimo post sul Trusted Computing sarà il controverso meccanismo della remote attestation.

-quack

Technorati Tags: ,

[1] Per memorizzare la chiave su pendrive è necessario - per ovvi motivi - che il sistema BIOS+chiavetta supporti il boot da pendrive: questo garantisce che il codice di pre-boot possa accedere allo VMK sul pendrive senza bisogno di driver

Pubblicato giovedì 27 dicembre 2007 alle 4:58 PM - 9 commenti so far
Archiviato in: Trusted Computing, Vista

Come funziona il secure boot

Nell'ultimo post dedicato al trusted computing mi ero ripromesso di spiegare come funziona praticamente un dispositivo TPM.

L'architettura tipica di un dispositivo TPM 1.2 come quello di Infineon è descritta dalla seguente figura:

TPMArchitecture (fonte)

Come si può vedere un chip TPM fornisce diverse svariate funzionalità: è infatti possibile ad esempio di usare il TPM come generatore di numeri casuali (RNG), oppure come memoria (limitata) non volatile, ecc. Ogni funzionalità può essere usata in maniera più o meno indipendente dalle altre.

Per quanto riguarda il secure boot la funzionalità associata è quella dei platform configuration register (PCR). Ogni TPM viene fornito con un numero svariato di PCR: le specifiche richiedono che ne siano forniti almeno 24, i primi sedici dei quali (PCR0-PCR15) devono essere non resettabili. Per semplificare d'ora in poi mi riferirò con il termine PCR ai PCR non resettabili. Un PCR è un registro schermato e come tale protetto da interferenze e occhi indiscreti. Il PCR permette solo due tipi di operazioni 'semplici': lettura ed estensione.

  • la lettura restituisce al chiamante il valore contenuto nel PCR
  • l'estensione prende come input un valore di 160 bit e scrive nel PCR l'hash (comunemente si usa SHA-1 e quindi i PCR stessi sono grandi 160 bit) della concatenazione tra il valore del PCR e il valore in ingresso. In parole povere esegue la seguente operazione:
    PCR = SHA-1(PCR && input-value)
    il valore in ingresso rappresenta l'evento che si va a "misurare". Non è possibile sovrascrivere direttamente il valore dei vari PCR

Le specifiche del TCG per PC definiscono anche l'uso che si va a fare di ogni PCR:

PCR Uso
0 CRTM, BIOS and Platform Extensions
1 Platform Configuration
2 Option ROM Code
3 Option ROM Configuration and Data
4 IPL Code (MBR)
5 IPL Code Configuration and Data
6 State Transition and Wake Events
7 Reserved for future usage

e cioé per esempio nel PCR4 sarà caricato il valore finale di tutte le misurazioni del MBR (nella maggior parte dei casi una sola).

Altra nota importante: durante l'accensione tutti i PCR vengono resettati (e cioé conterranno 0).

Per comprendere come funziona il secure boot, bisogna introdurre un altro elemento della piattaforma, il Core Root of Trust Module (CRTM). Per banalizzare il concetto, il CRTM è il pezzo di codice IMMUTABILE che su una piattaforma TC viene eseguito per primo e che si occuperà di misurare se stesso ed il BIOS per poi passarvi il controllo. Questo avviene con il seguente pseudocodice:

Extend( PCR0, SHA1 (CRTM))
Extend( PCR0, SHA1 (BIOS))

Dopo di che il controllo viene passato al "BIOS" che procederà alla misurazione degli altri componenti (opzioni del BIOS, MBR, ecc.) e alle normali operazioni di boot. La fase di esecuzione del CRTM e del BIOS, che termina con il passaggio del controllo al MBR, è sempre la stessa e l'unico elemento variabile in gioco è il contenuto finale dei valori dei PCR. Questo significa che il codice contenuto nel MBR verrà eseguito comunque e sarà compito di tale codice prendere in considerazione o meno quanto registrato nei PCR.

A questo punto dovrebbe essere chiaro come funziona il secure boot, almeno in linee generali: si installa un SO che supporta il secure boot su una macchina da zero, il sistema operativo "prende nota" dei valori del PCR considerati da questo interessanti dopodiché se i valori non coincidono vuol dire che qualcosa è cambiato e sta al sistema operativo decidere come notificare l'utente e cosa fare.

I più curiosi invece si chiederanno come è possibile memorizzare tali valori da qualche parte senza che il malintenzionato di turno possa sostituirli e vanificare la protezione offerta dal secure boot. La piattaforma viene in aiuto degli sviluppatori di OS con due API simmetriche, TPM_Seal e TPM_Unseal. La prima prende in input una bitmask (rappresentante i PCR da usare) e un array di byte: l'array viene criptato e "firmato" usando come chiave i valori dei PCR specificati nella bitmask. La seconda fa esattamente l'opposto ma in più restituisce errore se i valori dei PCR, usati per firmare, non coincidono. Il compito del sistema operativo, una volta effettuato il primo boot, è quello di sigillare dei dati (volendo anche casuali) e memorizzarne il risultato sul disco. Nei boot successivi, se si riesce a desigillare il file, vuol dire che il sistema è integro altrimenti qualcosa è cambiato.

La sequenza di misurazioni/esecuzioni è rappresentata da questa figura:

ChainTrust (fonte)

dove in cima alla chain of trust c'è il CRTM. Il CRTM quindi, insieme al chip TPM, è di fondamentale importanza per l'integrità di una trusted computing platform. Un sistema che rispetta le specifiche TCG deve garantire una protezione "assoluta" contro attacchi software contro il TPM e CRTM. Per quanto riguarda la protezione da eventuali attacchi hardware cito da Trusted Computing Platforms:

The TCPA specification requires a limited but specified amount of physical protection for the TPM and CRTM. This reflects reality. In many cases it is impractical to provide a high level of physical protection, and in any case, it is impossible to provide absolute physical protection. If someone wants to physically interfere with a TPM and CRTM, they can (given enough time and money), and there is nothing that can be done to stop them.

Nella maggior parte dei sistemi TCP odierni (come il mio Vaio di lavoro) il CRTM è memorizzato in una parte non modificabile via software del BIOS. Le specifiche prevedono che - laddove il CRTM sia in qualche modo aggiornabile - possa essere aggiornato solo dal vendor del sistema (nel mio caso Sony). Le specifiche tuttavia non prescrivono in nessuna maniera come e dove implementare il CRTM, infatti in questo paper viene preso in considerazione un approccio diverso e proposta una soluzione con il CRTM embedded nello stesso TPM su cui non esprimo nessun parere personale. Nel prossimo post ho intenzione di entrare nei dettagli implementativi della funzionalità bitlocker di Vista che fa uso del TPM laddove presente.

Linko-bibliografia:

Trusted Computing Platforms
TCG Architecture Overview
TCG specifications for PC
How To Build Hardware Support For Secure Startup
A New Approach of TPM Construction Based on J2810
Trusted Computing for Linux
TCPA Misinformation Rebuttal
Trusted Computing Platform
The CRTM and authenticated boot process

-enjoy

Technorati tags: ,

Pubblicato mercoledì 5 dicembre 2007 alle 4:43 PM - 4 commenti so far
Archiviato in: Security, Trusted Computing

Paranoie vere

In questo post, che segue quello sulla definizione di integrità e Paranoiaquello sulla definizione di chain of trust, mi interessa presentare i quattro scenari che rappresentano le paranoie vere, quelle che hanno portato alla definizione del TPM così com'è oggi nella versione 1.2. In un certo senso tali scenari pre-datano l'invenzione del TPM e quindi esistono a priori. L'individuazione di tale scenari  porterà (spero) a chiarire due ruoli distinti ma spesso maliziosamente confusi nel tentativo di confutare la bontà di alcuni approcci (tornando all'esempio dei passaporti, qualcuno spesso confonde il ruolo del ministro degli interni con quello del titolare del passaporto). Uno dei quattro scenari l'ho già visto "implementato" (senza TPM e quindi con lacune importanti) nell'ultimo viaggio di lavoro quasi a garanzia che la paranoia è un linguaggio universale e universalmente riconosciuto.

Joe il paranoico (risk management)
La preoccupazione di Joe è il furto del portatile o la violazione dell'integrità del suo sistema. Joe non è un genio dell'informatica e qualsiasi mezzo che possa ridurre tali rischi è ben accetto, in quanto in possesso di informazioni di altissimo valore. In questo scenario proprietario ed utente sono la stessa entità.

Gestione dell'hardware
Il dipartimento IT della Vip&Vip Inc. è molto paranoico per quanto riguarda l'accesso alla rete interna. La soluzione perfetta sarebbe quella di garantire l'accesso alla rete solo a PC di proprietà dell'azienda opportunamente configurati. In questo caso invece proprietario (l'IT di Vip&Vip) e l'utente sono entità disgiunte.

E-commerce
Jeannie lavora con l'azienda Quartz&Tempus che gestisce contrattazioni di titoli in borsa. Sia Jeannie che Q&T sono molto paranoici riguardo la legittimità e la non repudiabilità delle transazioni e per protezione reciproca stanno cercando un protocollo che possa garantire entrambi. In questo scenario proprietario ed utente sono la stessa entità.

Gestione della sicurezza e risposta alle emergenze
Un net-worm imperversa nella rete interna di Vip&Vip e il dipartimento IT vuole dirottare tutti i PC infetti in una subnet con sandbox dove permettere di scaricare le patch necessarie. Il worm è abbastanza evoluto ed in grado di ingannare anche i più sofisticati engine di scansione. In questo caso invece proprietario (l'IT di Vip&Vip) e l'utente sono entità disgiunte.

Due note:

  1. Altri scenari sono ovviamente possibili, come pure anti-scenari (questa forse l'ho inventata io, ma mi piace la definizione di anti-pattern). Seguirà un post su qualcuno di questi.
  2. Ho volutamente evitato di spiegare come risolvere i vari problemi con un TPM.

Nel prossimo post finalmente si parla "in codice": ovvero di registri, di algoritmi e protocolli. Cominciando da come implementare il secure boot.

-quack

Technorati Tags:

Pubblicato martedì 23 ottobre 2007 alle 4:10 PM - 20 commenti so far
Archiviato in: Trusted Computing