Il Trusted Platform Module (, 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 FAQ sul Trusted Platform Module , FAQ. Tali chip sono diffusi tra i portatili destinati all'utenza business e diversi produttori di schede madri e computer desktop forniscono il supporto opzionale a questa tecnologia. Secondo la International Data Corporation, entro il 2010 tutti i portatili e praticamente quasi tutti i PC avrebbero dovuto esser dotati di TPMMicrosoft's leaner approach to Vista security ,. Nonostante tale previsione, il chip TPM non si è diffuso in tutte le architetture. Quando Apple passò ai processori Intel nel 2006, inserì il TPM in alcune schede madri Mac Apple Drops Trusted Computing , TPM assente delle nuove motherboard Apple, per poi eliminarlo completamente nel 2009. A luglio del 2013, al rilascio delle specifiche di Windows 8.1 Pro, Microsoft lo ha incluso tra i requisiti obbligatori a partire dal 1º gennaio 2015Requisiti windows 81, TPM tra i requisiti di windows 8.1.

Microsoft inoltre ha reso obbligatorie tali specifiche inserendole nei requisiti richiesti per poter aggiornare un dispositivo da Windows 10 a Windows 11.

L’ultima versione del modulo TPM è la 2.0 ed è di norma già presente nei nuovi PC desktop, portatili e Microsoft Surface di ultima generazione immessi sul mercato. Mentre, per chi aggiorna da Windows 10 a Windows 11, tale modulo, se presente, dev'essere opportunamente abilitato tramite BIOS/UEFI.

Architettura

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

Ogni TPM deve offrire determinate minime funzioni Specifiche del Trusted Computing , versione 1.2, revisione 103, pagine 16 e successive., ovvero: generazione di numeri pseudo-casuali; generazione e memorizzazione di chiavi crittografiche (RSA); cifratura e decifratura di informazioni con RSA; generazione e verifica di hash SHA1.

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 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 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 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

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 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 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 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 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 su 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 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 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

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 a 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, , e data binding, 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 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, 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

ovvero, il contenuto delli-esimo PCR viene aggiornato (al tempo ) con l'hash SHA1 (US Secure Hash Algorithm 1, RFC 3174) calcolato sul contenuto precedente dello stesso registro (al tempo ) e sulle informazioni prelevate attualmente (al tempo ) 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. Per ovvie ragioni di sicurezza il TPM potrebbe impedire l'avvio del sistema da qualsiasi unità che non sia quella dove è installato, anche se sull'Uefi fosse impostata una sequenza di avvio diversa oppure si forzasse l'avvio da un'altra unità. Questa funzione o è predefinita o è configurabile. Anche l'avvio di un'unità di ripristino o un ambiente live potrebbe essere legittimamente impedito. Questa situazione obbliga l'utente a prestare estrema attenzione nel conoscere esattamente dove la chiave di cifratura è memorizzata e a conservare altrove la password di ripristino.

Abilitazione