jump to navigation

Programmare il Fritz Chip (TPM) – Parte Prima January 10, 2006

Posted by laspinanelfianco in Trusted Computing.
trackback

Con questo articolo voglio dare inizio ad una brevissima serie dedicata alla programmazione dei sistemi di Trusted Computing. Salvo complicazioni, la serie dovrebbe riguardare questi argomenti:

  • La struttura del Fritz Chip
  • Le funzioni disponibili per pilotare il Fritz Chip
  • La procedura di utilizzo del Fritz Chip
  • Qualche esempio

Questa serie è ispirata ad un famoso articolo dell’altrettanto famoso ricercatore dell’IBM David Safford. L’articolo si chiama “Take control of TCPA” ed è apparso su Linux Journal il 1° Agosto del 2003.

La struttura del TPM

Da un punto di vista tecnico, il TPM è composto da 5 unità funzionali.

Generatore di numeri casuali (RNG: Random Number Generator). Questo generatore fornisce numeri casuali di “alta qualità” che vengono utilizzati per la generazione di chiavi crittografiche e per altre funzioni. Il fatto che si tratti di numeri di alta qualità significa semplicemente che, pur essendo generati da un algoritmo, questi numeri sembrano casuali anche se analizzati con raffinati strumenti statistici. Questo è essenziale per garantire la robustezza della cifratura dei dati.

Hash Unit. Questa unità serve per generare gli “hash” (o “digest”) di un file o di un insieme qualunque di dati. Uno hash è un numero, solitamente molto grande, che viene calcolato sulla base della sequenza di 0 ed 1 del file e che identifica in modo univoco il file stesso. Gli hash sono caratterizzati dal fatto che mentre è molto semplice calcolare l’hash di un file è quasi impossibile ricostruire il file partendo dal suo hash. Inoltre, è quasi impossibile che due file diversi diano origine allo stesso hash. Questo permette di usare l’hash come “impronta digitale” del file (o dell’insieme di dati).

Unità di calcolo HMAC. l’HMAC è una protocollo crittografico standard usato per garantire e verificare sia l’integrità che la autenticità dei messaggi trasmessi su una rete digitale. In altri termini, l’HMAC permette di scoprire se il messaggio è stato alterato o se proviene da una fonte diversa da quella dichiarata.

Unità per la generazione di chiavi RSA. Questa unità serve per generare delle coppie di chiavi (chiave privata e chiave pubblica) che vengono poi usate per cifrare e decifrare documenti e comunicazioni con l’algoritmo a chiave pubblica RSA. RSA è un protocollo (un “algoritmo”) di cifratura standard considerato molto robusto. RSA usa due diverse chiavi per cifrare i documenti: una chiave pubblica, così chiamata perchè non è necessario mantenerla segreta, ed una chiave privata, che deve invece essere mantenuta segreta. La robustezza della cifratura di RSA dipende dalla lunghezza di queste chiavi. Per questo motivo il TPM usa chiavi piuttosto lunghe (2048 bit, circa 4 volte la lunghezza abitualmente usata nelle applicazioni civili). Queste chiavi vengono generate basandosi sui numeri casuali generati dal RNG.

Unità di cifratura RSA. Questa unità cifra e decifra “al volo” file, documenti, flussi di dati (comunicazioni) e altri insiemi di dati digitali usando il protocollo RSA e le chiavi generate dalla apposita unità funzionale del chip. Il fatto che le operazioni di cifratura siano eseguite da hardware dedicato rende la cifratura estrememente veloce e scarica il processore principale della macchina (la CPU). Questa stessa unità crittografica è anche in grado di “firmare” digitalmente file, documenti ed insiemi di dati usando delle apposite tecniche standard. Questa funzionalità viene usata, ad esempio, per collegare logicamente un file (documento o programma) al suo “proprietario” (un essere umano od un altro programma).

Il Fritz Chip conserva al suo interno alcune chiavi di particolare importanza in un’area di memoria non volatile. Le chiavi in questione sono le seguenti.

Endorsement Key o “Chiave di attestazione”. Si tratta in realtà di una coppia di chiavi RSA (pubblica e privata) a 2048 bit che vengono create al momento della produzione del chip e che non possono essere cancellate. La chiave privata non lascia mai il chip e viene usata solo per decifrare i dati ricevuti. La chiave pubblica viene appunto resa pubblica e viene utilizzata da altri programmi e da altri dispositivi per cifrare i dati che vengono spediti al chip. Dato che questa chiave può essere usata per identificare in maniera univoca il chip (e quindi l’utente del sistema), può essere disabilitata completamente dal proprietario del sistema.

Root Storage Key o “Chiave di Memorizzazione Primaria”. Anche in questo caso si tratta di una coppia di chiavi RSA a 2048 it. Queste chiavi vengono generate dal chip nel momento in cui il chip viene attivato attraverso una procedura nota come “Take Ownership” (“Presa di possesso”) e non lasciano mai il chip stesso. Queste chiavi di “primo livello” vengono usate per cifrare e decifrare le chiavi private di “secondo livello” che il chip genera. Le chiavi di secondo livello così protette possono essere spostate fuori dal chip (sul disco rigido od altrove) senza tenere che vengano compromesse. Queste chiavi di primo livello (RSK) possono essere cancellate dall’utente.

Owner Authorization secret key o “Chiave di Autorizazione”. Questa è una chiave più debole, a 160 bit, generata dal chip durante la “presa di possesso” ed usata come password. Questa chiave viene fornita dal Fritz Chip al proprietario del sistema ed il proprietario dovrà usarla in seguito per accedere ai comandi di gestione del TPM.

La memoria volatile del Fritz Chip contiene solitamente 10 “slot” che permettono di memorizzare altrettante chiavi a 2048 bit. La stessa memoria volatile contiene solitamente anche 15 slot che permettono di memorizzare 15 hash PCR (Platform Configuration Register). I PCR sono hash a 160 bit che vengono usati come “impronte digitali” per identificare e riconoscere file e programmi. Grazie a questi PCR il Fritz Chip è in grado di determinare se la configurazione hardware e software del sistema è stata modificata rispetto ad una situazione precedente già nota. Grazie a questi PCR il Fritz Chip è in grado di verificare che la sequenza di boot del sistema passi attraverso una sequenza di stati conosciuta e “certificata”.

La memoria volatile del Fritz Chip contiene anche alcune slot per memorizzare degli “handle” con cui accedere alle chiavi. Questi handle sono usati per identificare le chiavi e per facilitare l’accesso ad esse da parte dei programmi di controllo.

Per quanto riguarda il TPM (Fritz Chip), questo è tutto. Bisogna però ricordare che i “veri” sistemi Trusted Computing, come Intel LaGrande e AMD Presidio, mettono a disposizione altri strumenti oltre a quelli forniti dal Fritz Chip. Ad esempio, questi sistemi di “secondo livello” mettono a disposizione delle funzionalità di protezione della memoria (“Curtained Memory”) e di cifratura delle comunicazioni interne al PC. Queste funzionalità di LaGrande e Presidio non verranno analizzate in questa serie di articoli (magari in una prossima).
Nella prossima lezione, vedremo come venga utilizzato tutto questo ben di Dio crittografico, cominciando dalla “presa di possesso” del Fritz Chip e dalle operazioni più comuni.

Comments»

1. Blog navigabile a history » Programmare il Fritz Chip (TPM) - Parte Prima - March 18, 2006

[…] Questo post è tratto da: Programmare il Fritz Chip (TPM) – Parte Prima, di Alessandro Bottoni Indice “Visitati e Mancanti”   >> Next “Mancante” […]

2. Andreas E. - April 2, 2007

Ogni volta che leggo, questi testi mi viene un gran mal di stomaco! Da un po’ di tempo (non molto in verità) sono venuto a conoscenza di questo argomento… in pratica l’annuncio senza mezzi termini di un vero e proprio neofascismo digitale (e non solo, viste le implicazioni sociali e sulla vita di ognuno di noi ad ogni livello). Devo leggere queste cose a piccole dosi per non sprofondare nello scoramento, ma mi viene anche piùvoglia di combattere questo schifo. Ti ringrazio per questi dettagli tecnici che mi aiutano a capire meglio… pur avendo la preparazione di un Fisico, non sono un ingegnere ed alcuni argomenti sono un po’ ostici anche per me🙂

3. Hal - April 14, 2007

Io non me ne intendo ma voglio fare un ragionamento logico:
Il trusted computing dovrà essere supportato dal sistema operativo per funzionare perchè: il chip non può avere le informazioni necessarie per identificare quale software è OK e quale NO, deve per forza avere qualche dato dal sistema operativo, perchè se così fosse, con l’aumentare dei software, il chip dovrebbe subire degli aggiornamenti, e in che modo? tramite internet? e chi non ce l’ha? è irrealizzabile…, ho sentito che anche le prime edizioni di vista non lo supportano e verrà probabilmente implementato con aggiornamenti, aggiornamenti che volendo uno può anche non fare no?
Ammicc Ammicc

4. laspinanelfianco - April 14, 2007

Ciao Hal,
allora, una Trusted Platform (cioè unPC che aderisce alle specifiche TCG) non ha bisogno di sapere niente del software che ci gira sopra: è il fornitore dei documenti (musica, film, documenti word, etc.) a stabilire se un documento può essere aperto o meno con del software diverso da quello usato per crearlo. Se decide di no, l’utente ha due scelte: si compra il software che il fornitore impone o si attacca al… tram. Ovviamente, il fornitore può usare il TPM per imporre una infinita varietà di piacevoli sfumature di divieti all’utente. Leggi gli altri articoli di questo sito per i dettagli.

Alessandro Bottoni


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: