Trusted Platform Module

Da Wikipedia, l'enciclopedia libera.

Il Trusted Platform Module (letteralmente modulo per una piattaforma fidata, spesso abbreviato come TPM) è il nome con cui vengono indicate sia le specifiche per la costruzione di un microchip deputato alla sicurezza informatica, pubblicate dal Trusted Computing Group, sia il chip stesso. Tale microchip viene generalmente implementato come modulo aggiuntivo per la scheda madre di un computer, ma si può trovare anche in palmari e in altri dispositivi elettronici.

Tale chip era noto in precedenza come Chip Fritz, nome che deriva dal senatore statunitense Ernest "Fritz" Hollings, forte sostenitore di questo progetto. Lo scopo del TPM è l'aumento della sicurezza informatica: ogni chip è dotato di una coppia di chiavi crittografiche uniche, che lo rendono univocamente identificabile, e di un motore per la crittografia asimmetrica per la criptazione dei dati.

Il Trusted Platform Module è progettato per essere disponibile su qualsiasi sistema operativo o piattaforma[1]. Attualmente tali chip sono diffusi tra i portatili destinati all'utenza business e diversi produttori di schede madri e computer desktop e forniscono il supporto opzionale a tale tecnologia. Secondo la International Data Corporation, entro il 2010 tutti i portatili e praticamente quasi tutti i PC avrebbero dovuto esser dotati di TPM[2]. Nonostante tale previsione, il chip TPM, non si è tuttora diffuso in tutte le architetture. Quando Apple passò ai processori Intel nel 2006, inserì il TPM in alcune, ma non tutte, le schede madri Mac[3], per poi eliminarlo completamente nel 2009. A luglio del 2013, al rilascio delle specifiche di Windows 8.1, la Microsoft lo ha incluso tra i requisiti obbligatori a partire dal 1 gennaio 2015[4].

Architettura[modifica | modifica wikitesto]

Le specifiche pubblicate dal Trusted Computing Group[5] definiscono quale dev'essere l'architettura del processore e quali funzionalità minime esso deve offrire.

Ogni TPM deve offrire determinate minime funzioni[6], ovvero:

A tale scopo, ogni Trusted Platform Module deve essere dotato di specifiche componenti, connesse tra loro attraverso un bus interno e capaci di interagire con il resto del calcolatore con un bus esterno. Tali componenti devono essere i seguenti:

Dispositivo di Input/Output[modifica | modifica wikitesto]

Il componente di I/O deve essere in grado di gestire le comunicazioni sui bus interni ed esterni, crittografando e decodificando le informazioni quando necessario. Deve garantire l'accesso al dispositivo in associazione col dispositivo Opt-In.

Coprocessore Crittografico[modifica | modifica wikitesto]

Ogni dispositivo deve essere dotato di un processore in grado di eseguire le seguenti operazioni:

  • Generazione asimmetrica di chiavi
  • Crittazione e decrittazione asimmetrica
  • Generazione di numeri casuali
  • Hashing SHA-1

Tale processore può utilizzare anche la crittografia asimmetrica per comunicazioni interne al modulo, ma non deve esporre dati generati con algoritmi simmetrici all'esterno dello stesso. Per l'emissione di firme digitali, viene utilizzato l'algoritmo asimmetrico RSA con chiave di dimensione di 2048 bytes, sebbene il modulo debba supportare anche chiavi da 512 e 1024 byte. Tali chiavi possono essere note solo al modulo o in congiunzione tra un'entità esterna e il modulo stesso.

Generatore di Chiavi Crittografiche[modifica | modifica wikitesto]

Il generatore di chiavi deve essere in grado di generare coppie di chiavi asimmetriche e chiavi simmetriche. Non è posta alcuna limitazione sul tempo di creazione delle chiavi.

Motore HMAC[modifica | modifica wikitesto]

Exquisite-kfind.png Per approfondire, vedi HMAC.

Il motore HMAC deve essere in grado di fornire due importanti funzioni:

  • Provare la correttezza dei dati di identificazione
  • Provare che i dati in ingresso nel modulo sono autorizzati e non hanno subito modifiche durante la trasmissione.

A tale scopo viene utilizzato l'algoritmo crittografico HMAC con una dimensione di chiave di 20 bytes e una dimensione di blocco dati di 64 bytes. Le peculiarità dell'algoritmo lo rendono adatto a tali scopi: HMAC utilizza infatti una combinazione del messaggio originale e della chiave segreta per la crittografia dei dati, garantendo la massima sicurezza.

Generatore di Numeri Pseudocasuali[modifica | modifica wikitesto]

Il motore di numeri casuali è la sorgente della casualità all'interno del modulo. Le specifiche prevedono l'utilizzo di un algoritmo generatore di numeri pseudo-casuali per la creazione di chiavi e per la firma digitale. Il generatore di numeri casuali deve essere costituito da un componente in grado di accettare e mescolare dati imprevedibili da un coprocessore per restituire tali dati come risultato di una funzione non invertibile, come l'algoritmo SHA-1. A ogni chiamata deve essere in grado di generare 32 bytes di dati casuali.

Il componente per la creazione di numeri casuali deve essere inizializzato durante la lavorazione con dati casuali, generati per esempio attraverso il disturbo termico del segnale o attraverso software appositi; dopo tale inizializzazione, nessuna entità, nemmeno il produttore stesso, deve essere in grado di controllare lo stato di tale generatore. Durante l'utilizzo, tale componente continuerà a usare casualità hardware o software per generare i dati casuali, come per esempio il controllo casuale di combinazioni di tasti premuti o combinando i movimenti del mouse. La funzione utilizzata come output deve necessariamente ricevere un minore numero di bit in input rispetto a quelli restituiti in output, per garantire l'impossibilità di risalire allo stato del generatore di numeri.

Motore SHA-1[modifica | modifica wikitesto]

Exquisite-kfind.png Per approfondire, vedi Hash.

Il modulo deve integrare un dispositivo in grado di gestire hash SHA-1 di 160 bits di dimensione. Tali hash vengono utilizzati per la firma digitale dei file.

Gestore di Alimentazione[modifica | modifica wikitesto]

Il Trusted Platform Module deve essere fornito di un componente in grado di gestire l'alimentazione del modulo e di informare il modulo stesso sullo stato di alimentazione dei dispositivi disponibili sulla macchina in cui è installato. Queste informazioni vengono utilizzate dal modulo per rilevare la presenza fisica di utilizzatori della macchina per fare in modo, per esempio, che alcune specifiche operazioni sul modulo siano eseguibili solo attraverso l'autorizzazione o, in caso di gestione remota, della presenza di un operatore.

Opt-In[modifica | modifica wikitesto]

Il componente Opt-In deve essere in grado di fornire i meccanismi e le protezioni necessarie per accendere, spegnere, attivare o disattivare il TPM. È inoltre il componente deputato al controllo della presenza fisica di operatori sulla macchina sui cui è installato il Trusted Platform Module. Il componente Opt-In deve garantire che il modulo possa essere acceso, spento, attivato o disattivato solo da utenti che detengono il controllo del TPM, definiti come TPM Owner, o, nel caso di Owner remoto, se vi sono operatori presenti sulla macchina.

Motore di Esecuzione[modifica | modifica wikitesto]

Il motore di esecuzione esegue il codice esterno, ottenuto dal modulo di Input/Output, per utilizzare le funzionalità del Trusted Platform Module. Deve essere in grado di garantire la trasparenza delle operazioni e la protezione dei dati sensibili.

Memoria non volatile[modifica | modifica wikitesto]

Il modulo deve essere dotato di memoria non volatile, deputata al mantenimento di informazioni quali l'identità del Trusted Platform Module. Tale memoria deve essere accessibile al proprietario del modulo, o da entità autorizzate dallo stesso, per la conservazione sicura di dati. Il modulo, a causa della limitata vita dei componenti di memoria non volatile, deve accedere a tali componenti in modo da non rendere loro e, quindi, il modulo stesso, prematuramente inutilizzabili.

Utilizzo[modifica | modifica wikitesto]

Exquisite-kfind.png Per approfondire, vedi Trusted Computing#Applicazioni del Trusted Computing.

Per essere utilizzato, ogni Trusted Platform Module richiede l'utilizzo di uno specifico Trusted Software Stack, anch'esso determinato dalle specifiche del Trusted Computing Group. Se usato insieme ad tale software, il TPM può:

  • attestare l'identità e lo stato fidato della piattaforma di cui fa parte (attestazione remota);
  • cifrare le informazioni che vengono inviate sui bus del sistema o salvate sulla memoria di massa (data sealing, lett. "sigillamento dei dati", e data binding. lett. "collegamento dei dati" al TPM);

La tecnica di sealing dei dati corrisponde al salvataggio dei dati cifrati usando una chiave che dipende dallo stato del sistema, ossia una la combinazione dell'hardware e del software in esecuzione. La decifratura degli stessi dati sarà possibile soltanto per mezzo della stessa chiave, cioè utilizzando la stessa configurazione del sistema all'atto del salvataggio (lo stesso hardware e lo stesso software in esecuzione).

Il binding si riferisce alla cifratura dei dati usando una chiave di approvazione detta Endorsement Key, ovvero una chiave RSA che identifica univocamente il TPM stesso inserita nel chip durante la sua fabbricazione garantendo così che tali dati siano decifrabili soltanto dallo stesso modulo che li ha criptati.

L'attestazione remota viene effettuata per mezzo di apposite chiavi di cifratura, dette AIK (Attestation Identity Key), generate all'occorrenza dal TPM .In alternativa dalla versione 1.2 delle specifiche TCG per autenticarsi su rete è possibile utilizzare il protocollo di Direct Anonymous Attestation [7][8], che consente l'autenticazione remota della macchina preservando la riservatezza del sistema autenticato.

Il chip, in sostanza, ha una funzione di controllo passivo sull'hardware ed il software installato sulla macchina su cui è presente. Per mezzo di speciali registri al suo interno, detti PCR (Platform Configuration Register), il TPM tiene traccia dell'evoluzione dello stato del sistema, misurandolo (si tratta praticamente dell'elaborazione di un hash delle informazioni prelevate dai dispositivi e del software in esecuzione) secondo la seguente formula

\mathrm{PCR}[i]_{t_1} = SHA1(\mathrm{PCR}[i]_{t_0} + \mathrm{informazioni\ prelevate}_{t_1})

ovvero, il contenuto dell'i-esimo PCR viene aggiornato (al tempo t_{1}) con l'hash SHA1 (US Secure Hash Algorithm 1, RFC 3174) calcolato sul contenuto precedente dello stesso registro (al tempo t_{0}) e sulle informazioni prelevate attualmente (al tempo t_{1}) dal sistema (all'avvio del sistema, il contenuto dei PCR è impostato a 0).

Il software (il boot loader, il sistema operativo, i programmi applicativi), realizzato opportunamente per interfacciarsi con il TPM, potrà quindi decidere, in base alle informazioni correntemente contenute nei PCR ed in base alla propria logica programmata, quali operazioni intraprendere.

Critiche[modifica | modifica wikitesto]

Exquisite-kfind.png Per approfondire, vedi Critiche sul Trusted Computing.

Molte opposizioni all'adozione di questo tipo di chip si sono levate dall'ambito del software libero e dei sostenitori del fair use. I detrattori sostengono che tale sistema possa essere usato non solo per rendere più sicura una macchina, anche se rimane da chiarire chi è che stabilisce le regole in base alle quali ritenere sicuro un determinato stato del sistema, ma anche per decidere quali programmi possano accedere a certi dati, creando od amplificando una sorta di monopolio da parte dei sostenitori del Trusted Computing. Il microchip, secondo le specifiche pubblicate dal Trusted Computing Group, ha però solo un controllo passivo sul software, ovvero non è in grado di decidere ciò che un utente può utilizzare; al contrario, però, un software basato sul Trusted Platform Module potrebbe decidere di non eseguire operazioni considerate non sicure come, per esempio, la connessione a una rete considerata non affidabile.

Critiche si sono sollevate contro il sistema di attestazione remota[9], mentre taluni ritengono che il sealing abbia come funzione essenziale la creazione di nuovi e più efficaci sistemi di Digital Rights Management, piuttosto che una protezione delle informazioni in sé.

Bug[modifica | modifica wikitesto]

Nell'ottobre 2007 è stata scoperta una falla di sicurezza basata sul buffer overflow nei servizi forniti dal modulo TPM installati sui Notebook IBM ThinkPad che permetterebbe l'esecuzione di codice arbitrario attraverso pacchetti HTTP[10]. IBM ha consegnato tutti i dati relativi alla falla a Lenovo[11] per la risoluzione del problema. A dicembre 2007 non sono disponibili ulteriori informazioni al riguardo.

Trusted Software Stack[modifica | modifica wikitesto]

Il Trusted Software Stack è una API standard per l'utilizzo del Trusted Platform Module, le cui specifiche sono pubblicate dal Trusted Computing Group[12].

Il Trusted Software Stack è progettato per l'interoperabilità su tutti i sistemi operativi. Con la versione 1.2 delle specifiche è stato aggiornato per garantire il supporto al protocollo di Direct Anonymous Attestation e la creazione di chiavi di attestazione AIK [13].

Principali Funzionalità[modifica | modifica wikitesto]

Quelle che seguono sono solo alcune delle funzionalità che il trusted software stack fornisce: In pratica, qualsiasi applicazione che sfrutti le funzionalità offerte dal trusted computing deve usare un trusted software stack per accedere alle funzioni offerte dal TPM. Le funzionalità elencate di seguito vanno quindi considerate come delle funzionalità che potrebbero essere offerte da applicazioni funzionanti su una trusted platform che sfruttino le API fornite dal Trusted software stack. Le funzionalità di dette applicazioni infatti non sono state standardizzate dal TCG.

Policy Translation[modifica | modifica wikitesto]

Implementazione di tutte le politiche di sicurezza che vengono imposte dai programmi all'utente o ai programmi dall'utente

Privacy Protection[modifica | modifica wikitesto]

Difesa dell' utente dagli abusi del TC (nessun software deve ad esempio fare il sealing dei dati o inviare la parte pubblica dell' Endorsement Key a terze parti senza il consenso del proprietario del TPM )

Trusted GUI[modifica | modifica wikitesto]

Garantisce la protezione dei dati considerati sensibili dalle applicazioni che sfruttano il TSS sia in input che in output

Compartment Manager[modifica | modifica wikitesto]

Gestisce le partizioni di esecuzione; alcune applicazioni possono essere avviate in una partizione di esecuzione protetta che sfrutta le funzionalità offerte dal trusted computing per garantire l'integrità dell'applicazione e la privacy dei dati da essa elaborati

Voci correlate[modifica | modifica wikitesto]

Bibliografia[modifica | modifica wikitesto]

Note[modifica | modifica wikitesto]

  1. ^ (EN) FAQ sul Trusted Platform Module, FAQ
  2. ^ (EN) Microsoft's leaner approach to Vista security,
  3. ^ (EN) Apple Drops Trusted Computing, TPM assente delle nuove motherboard Apple
  4. ^ Requisiti windows 81, TPM tra i requisiti di windows 8.1
  5. ^ Trusted Computing Group - Developers
  6. ^ (EN) Specifiche del Trusted Computing, versione 1.2, revisione 103, pagine 16 e successive.
  7. ^ (EN) Direct Anonymous Attestation
  8. ^ (EN) Direct Anonymous Attestation -versione ridotta
  9. ^ http://www.oceanidigitali.it/drupal/DAA
  10. ^ (EN) http://en.securitylab.ru/nvd/305875.php
  11. ^ (EN) http://www.irmplc.com/index.php/111-Vendor-Alerts
  12. ^ https://www.trustedcomputinggroup.org/faq/TSSFAQ/ (EN) FAQ sul Trusted Software Stack
  13. ^ https://www.trustedcomputinggroup.org/faq/TSS_1.2_FAQ/ (EN) FAQ sul Trusted Software Stack versione 1.2

Collegamenti esterni[modifica | modifica wikitesto]

Sicurezza informatica Portale Sicurezza informatica: accedi alle voci di Wikipedia che trattano di Sicurezza informatica