TPM (Trusted Platform Module)

Indice dei contenuti

    Il TPM (Trusted Platform Module) è un microcontroller crittografico dedicato, fisicamente integrato nella scheda madre o implementato come firmware nel processore principale (fTPM), che fornisce una radice di fiducia hardware (hardware root of trust) per le operazioni di sicurezza del sistema. Standardizzato dal Trusted Computing Group (TCG), con la versione corrente TPM 2.0 (ISO/IEC 11889: 2015), è presente in tutti i PC moderni — Microsoft lo richiede obbligatoriamente per Windows 11.

    Il principio fondamentale è che alcune operazioni crittografiche critiche — generazione di chiavi, firma, cifratura — vengano eseguite all’interno del chip, dove le chiavi non sono mai esposte al software dell’host, nemmeno al sistema operativo o all’hypervisor.

    Funzionalità principali

    Generatore di numeri casuali hardware (HRNG): il TPM contiene un generatore di entropia fisico, indipendente dal software. Usato come sorgente di entropia per la generazione di chiavi crittografiche robuste.

    Gerarchia di chiavi: il TPM gestisce una gerarchia di chiavi crittografiche con radice nell’EK (Endorsement Key) — coppia RSA o ECC generata e memorizzata permanentemente nel TPM alla produzione, non esportabile, usata come identità hardware unica del chip. Da essa si derivano chiavi per diversi usi (storage, attestazione, firma).

    Platform Configuration Registers (PCR): registri a sola estensione (extend-only) che accumlano misure crittografiche dello stato del sistema durante il boot. Ogni step del boot (UEFI firmware, bootloader, kernel, driver) calcola l’hash dei propri componenti e lo estende nei PCR. Il valore finale di un PCR è il digest dell’intera catena di misure — rappresenta in modo compatto e verificabile lo stato del sistema al momento del boot.

    Sealing (binding al PCR): il TPM può cifrare (seal) dati legandoli a specifici valori PCR. I dati possono essere decifrati (unseal) solo se il sistema si trova nello stesso stato di boot (stessi valori PCR) in cui erano stati cifrati. Se il firmware è stato modificato (es. bootkit installato), i PCR cambiano e i dati cifrati diventano inaccessibili.

    Casi d’uso

    BitLocker: la cifratura disco di Windows usa il TPM per proteggere la VMK (Volume Master Key). La chiave è sigillata ai PCR del boot. Se il sistema si avvia normalmente (firmware non modificato, Secure Boot attivo), il TPM rilascia la chiave automaticamente — nessun PIN richiesto. Se il firmware è stato alterato, i PCR cambiano, il TPM non rilascia la chiave e il disco rimane cifrato. BitLocker senza TPM richiede un PIN o una USB key ad ogni avvio.

    Remote attestation: il TPM può firmare i valori PCR con la sua chiave di attestazione (AK), producendo una quote verificabile da un server remoto. Il server può così verificare crittograficamente che il client si trovi in uno stato di boot specifico e non abbia componenti modificati — base di architetture Zero Trust che non si fidano del client senza attestazione.

    Generazione e protezione di chiavi applicative: applicazioni possono chiedere al TPM di generare coppie di chiavi la cui parte privata non lascia mai il chip. La firma o la decifratura avvengono dentro il TPM — un malware che compromette il sistema operativo non può estrarre le chiavi private.

    TPM e attacchi fisici

    Il TPM resiste agli attacchi software — le chiavi non sono esportabili tramite API. Ma non è immune agli attacchi fisici avanzati. Il bus sniffing attack (dimostrato su BitLocker senza PIN pre-boot): la comunicazione tra TPM discreto e CPU avviene sul bus LPC o SPI della scheda madre, in chiaro. Con accesso fisico al dispositivo e un analizzatore di protocollo, è possibile catturare la VMK di BitLocker durante il boot. La mitigazione è configurare BitLocker con PIN pre-boot (il TPM non rilascia la chiave senza PIN, quindi non c’è niente da catturare sul bus senza il PIN).

    Il TPM 2.0 fTPM (implementato nel firmware del processore) non è vulnerabile al bus sniffing — la comunicazione rimane interna al SoC — ma dipende dalla sicurezza del firmware del processore.

    Ultimo aggiornamento: