jump to navigation

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

Posted by laspinanelfianco in Trusted Computing.
4 comments

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.

Cambiare le regole January 10, 2006

Posted by laspinanelfianco in Diritti Digitali.
1 comment so far

Come è ben noto a tutti (inclusi i manager delle industrie e gli uomini politici), su Internet esiste un vastissimo e attivissimo “movimento” che si oppone con decisione alla introduzione sul mercato di sistemi DRM e Trusted Computing. Tuttavia, molti gruppi di attivisti che si occupano di DRM e di Trusted Computing si limitano a combattere contro le applicazioni “illegali” di questi sistemi, come ad esempio l’uso del Trusted Computing per limitare la sana competizione tra industrie sul mercato o l’uso di sistemi DRM per “tracciare” abusivamente il comportamento dell’utente.

Soltanto pochi gruppi di attivisti osano mettere in discussione il diritto fondamentale del produttore di fare uso di sistemi DRM per proteggere la proprietà intellettuale od il diritto del produttore di inserire nei suoi prodotti delle funzionalità che sono utili ad altri produttori per creare sistemi DRM, come è il caso del Trusted Computing. Questa mancanza di ambizioni politiche porta ad uno spiacevole effetto: sembra che il diritto alla proprietà intellettuale, così com’è attualmente formulato dai trattati TRIPs del WTO, sia ormai pacificamente riconosciuto da tutti, quasi fosse un “diritto naturale” indiscutibile ed inalienabile. Nello stesso modo, sembra che sia pacificamente riconosciuto il diritto delle multinazionali di imporre all’intero pianeta le loro scelte tecnologiche, qualunque esse siano, senza che sia necessaria alcuna discussione democratica, quasi come se il modo di produrre i computer fosse altrettanto “irrilevante” del modo in cui producono le pentole. Quasi come se i computer e le reti non fossero il sistema nervoso delle nostre società.

Per il bene nostro, dei nostri figli e dei nostri nipoti, è necessario che ci si renda conto che questo non è assolutamente vero. Questi diritti del produttore non possono essere accettati passivamente dalle nostre società. Le tecnologie digitali hanno profondamente cambiato il panorama tecnologico, industriale e politico rispetto a quando questi diritti sono stati roconosciuti ed è quindi necessario che questi diritti vengano ridiscussi. Questi diritti devono passare nuovamente attraverso il processo di discussione democratica, di analisi politica e di formazione delle leggi che hanno già attraversato ai tempi della stampa di Gutenberg e dell’Editto della Regina Anna. In altri termini, è tempo di cambiare le regole del gioco per adattarle alla nostra realtà storica.

Secondo la mia modestissima e personalissima opinione, è necessario stabilire i seguenti diritti del produttore e del consumatore/cittadino.

Diritto d’autore

Il diritto d’autore, così com’è formulato attualmente, è di gran lunga troppo esteso nel tempo e nello “spazio legale” per poter essere accettato da una società che vuole fare buon uso delle sue risorse culturali. Dovrebbero essere stabiliti i seguenti principi:

  • Il diritto d’autore si estende per 10 anni dopo l’ultima pubblicazione del prodotto (libro, brano musicale, film, etc.) da parte dell’autore o di un suo editore e comunque per un massimo di 30 anni dalla data della prima pubblicazione. Dopo questo periodo, il prodotto diventa automaticamente di pubblico dominio.
  • Il diritto d’autore non può coprire gli usi “sociali” di un prodotto (come la creazione di un audiolibro per non vedenti a partire da un testo scritto).
  • Il diritto d’autore non può essere fatto valere sul frutto di lavori per cui gli autori siano già stati pagati con soldi pubblici (testi di professori universitari su progetti di ricerca finanziati con fondi pubblici, ad esempio).

Brevetti Industriali

Come per il diritto d’autore, è ovvio che la protezione offerta dall’attuale meccanismo dei brevetti industriale è di gran lunga troppo estesa nel tempo. Dovrebbe essere stabilito il principio che il brevetto rimane valido per 3 anni dopo la sua ultima utilizzazione industriale di serie da parte dei detentori e comunque per un massimo di 10 anni dalla sua introduzione sul mercato. Per il resto la legislazione europea corrente prevede già dei criteri adatti per limitare l’estensione dei brevetti nello spazio legale (criterio di novità, criterio di applicabilità industriale, obbligo di utilizzo entro alcuni anni dalla registrazione del brevetto, etc.).

Copyright e Trademark

La mania, tutta italiana, di proteggere con marchi di fabbrica e copyright ogni più insignificante creazione dell’italico genio è francamente patetica. Dovrebbe essere stabilito il solo concetto che non sia legittimo copiare pedestremente un prodotto altrui (plagio o clonazione). Ogni altro tipo di “riproduzione” creativa (varianti, parodie, etc.) dovrebbe essere permesso, per il bene del mercato e per il bene della salute mentale dei nostri paranoici e poco creativi produttori.

Sistemi di difesa del Diritto d’autore (DRM)

Dovrebbe essere esplicitamente stabilito che i sistemi di “gestione dei diritti” dovrebbero limitarsi a prevenire (e non certo a denunciare o punire) eventuali azioni dell’utente nei confronti dei diritti commerciali riconosciuti dalla società al produttore ed al distributore per la stessa estensione spaziale e temporale, e negli stessi modi, previsti dalla legge per la protezione manuale di questi diritti.

In altri termini, se il diritto d’autore scade, anche il DRM deve scadere. Se il diritto d’autore non è valido nei confronti di certi utenti (il proprietario o determinati utenti privilegiati), il DRM deve essere disabilitabile da questi utenti. Se il diritto d’autore non è applicabile per certi usi (usi interni all’università, ad esempio), il DRM deve essere disabilitabile per questi usi.

Dispositivi di controllo ausiliari (Trusted Computing)

Dovrebbe essere fatto esplicito divieto ai produttori di inserire nei loro prodotti dispositivi concepiti per controllare, sorvegliare o limitare in qualunque modo le attività dell’utente al di là del diritto del produttore a prevenire (con mezzi leciti) eventuali azioni illecite che l’utente potrebbe portare a termine contro i diritti commerciali del produttore.

Fair Use

Ogni uso di un prodotto non a fini di lucro e che non arrechi danno commerciale al produttore dovrebbe essere considerato legittimo.

Privacy ed Intercettazioni

Dovrebbe essere ovvio sin dai tempi di Erodoto che un cittadino è innocente finchè non è dimostrato che sia colpevole. Di conseguenza, per intercettare le comunicazioni di una persona e violare la sua privacy dovrebbe essere sempre necessario un mandato di un giudice, basato su indizi seri di una responsabilità pre-esistente e personale in una azione criminosa. In altri termini, non dovrebbero essere mai ammesse azioni di “screening” generalizzato, di adescamento od infiltrazione “alla ricerca di possibili attività criminose”, nemmeno per una buona causa. Potrebbero sembrare cose ovvie ma la situazione corrente in USA ed in Italia dimostra che per molti non lo sono.

Spero che in futuro si cominci a discutere seriamente su questi temi.