TPM-Fail: Vulnerabilità nei TPM integrati di Intel e quelli discreti di STMicroelectronics

14/11/2019

crittografia ecdsa side-channel-attack timing-attack TPM

TPM fail

I ricercatori Daniel Moghimi, Berk Sunar, Thomas Eisenbarth e Nadia Heninger hanno scoperto che alcuni moduli TPM sono vulnerabili a Timing Attack, in particolare sono affetti i TPM integrati nei chipset Intel e quelli della casa produttrice STMicroelectronics.

I ricercatori, nel loro articolo, hanno dimostrato come l’implementazione dell’algoritmo di firma digitale ECDSA abbia tempi di esecuzioni dipendenti da alcuni valori (i nonce) che dovrebbero rimanere segreti per impedire il recupero della chiave segreta. Cronometrando il tempo impiegato a generare un gran numero di firme, i ricercatori sono stati in grado di inferire la lunghezza effettiva dei nonce usati da ogni singola esecuzione dell’algoritmo, collezionando solo i valori sufficientemente piccoli da essere utilizzati con successo per il recupero della chiave tramite una tecnica di criptoanalisi basata su reticoli.

Nel loro articolo si dimostra come un attaccante possa recuperare la chiave segreta da un TPM anche senza privilegi amministrativi e perfino da remoto quando un server VPN è configurato per usare il TPM. L’esposizione della chiave privata permette di impersonare il server o forgiare contenuti arbitrari, con importanti ripercussioni in termini di sicurezza.

I TPM affetti sono quelli prodotti da STMicroelectronics, che sono chip discreti, e quelli integrati nei chipset di Intel (che sono implementati in software). Al momento risulta che:

  • Intel ha già rilasciato l’aggiornamento firmare e assegnato CVE-2019-11090 alla problematica.
  • STMicroelectronics ha aggiornato il suo chip e assegnato CVE-2019-16863 alla vulnerabilità.

Rimedi

Oltre all’aggiornamento software, dove possibile, può rendersi necessario evitare l’utilizzo del TPM per la firma digitale, in particolare il suo utilizzo con server VPN. I ricercatori suggeriscono anche possibili patch al sistema operativo per livellare artificialmente la durata delle chiamate API dello stack TPM.

Approfondisci

Il TPM, Intel TXT, chiavi segrete e fTPM

I TPM (Trusted Platform Module) sono chip discreti (separati da altri componenti come CPU o chipset) con funzioni crittografiche. Il loro compito è quello di fornire un’implementazione sicura di varie primitive crittografiche, di fornire una memoria sicura e a prova di contraffazione per il salvataggio di segreti (come chiavi private) e di una misura dell’ambiente di esecuzione.

Intel TXT e misure dell’ambiente di esecuzione

La tecnologia Intel TXT (Trusted Execution Technology, da non confondersi con SGX – Software Guard Extensions) necessita di un TPM in quando fa largamente uso dei PCR (Platform Configuration Register) presenti in quest’ultimo per misurare l’ambiente di esecuzione (firmware e configurazione del chipset). I PCR possono essere estesi (con altre misure, leggasi hash) ma non impostati ad un valore arbitrario, questo permette di implementare, in gergo, una Root Of Trust dinamica ed un Measured Environment.

La stessa tecnologia TXT è usata dalle CPU Intel, successive ad Haswell, al reset, per implementare Boot Guard il cui compito è stabilire una Root Of Trust statica per misurare l’ambiente di esecuzione del firmware (la misura è fatta dalla CPU tramite micro-code) UEFI o BIOS. Tramite bootloaders come tboot, questo ambiente può lanciare il kernel Linux in un ambiente a sua volta misurato da una root of trust dinamica.

Notare che la misura di un ambiente non ne garantisce la sicurezza ma solo l’attestabilità, ovvero la capacità di un attore remoto di verificarne l’autenticità e l’integrità. Per attestare le misure di un ambiente è di fondamentale importanza il TPM che è stato disegnato per firmare sicuramente le misure in questione in modo che non sia possibile via software alterarle (ma solo verificarle).

Chiavi segrete e TPM

Il TPM ha una complessa gerarchia di chiavi che permettono all’utilizzatore di generare una coppia di chiavi (una pubblica e l’altra privata) e di usare quella privata senza venirne mai a conoscenza in quanto confinata nel TPM. Tuttavia siccome la NVRAM disponibile in questo chip è necessariamente limitata, gli ideatori delle specifiche TPM 1.2 e 2.0 hanno reso disponibile un meccanismo per l’esportazione di una chiave cifrandola con un’altra detta Genitore (Parent).

Il TPM permette anche il caricamento di chiavi private esterne, questo è utile ad esempio in software come BitLocker che, una volta autenticato, può recuperarla evitando la necessità di salvarla su disco. Altro esempio è un server VPN configurato per usare una chiave segreta salvata nel TPM. In questo caso il software non deve neanche venire a conoscenza della chiave e può utilizzare direttamente le funzioni di firma del TPM (poichè la chiave privata è usata solo durante l’handshake). Quest’ultimo è uno degli scenari di compromissione testati dai ricercatori.

fTPM – TPM software

Data la stretta sinergia tra CPU Intel e TPM, la stessa Intel produce TPM; ma non di natura hardware, bensì software. Sono detti Firmware TPM (fTPM) in quando implementati tramite firmware. Inizialmente gli fTPM di Intel erano stati pensati per utilizzare SGX ed essere eseguiti dalla CPU. Tuttavia un approccio più conservativo è quello di utilizzare un micro-controllore esterno, dato che Intel produce anche i chipset per le relative CPU (ovvero i PCH – Platform Controller Hub, in questa fase della storia) e dato che in questi vi era già da tempo la necessità di un micro-controllore per la gestione di funzionalità complesse come Intel ME, Intel QuickAssist e simili, Intel ha deciso di fornire un fTPM riutilizzando il micro-controllore nei PCH (che di fatto è un Quark, ovvero un core IA32 basato su P6, quindi un processore vero e proprio).

Questa implementazione software è quella usata dalla maggior parte dei dispositivi, stando ai ricercatori la lista include HP, Dell e Lenovo.

 

Firme digitali tramite curve ellittiche e tempo di esecuzione

L’utilizzo di curve ellittiche rispetto al tradizionale gruppo moltiplicativo degli interi è ben nota in letteratura, il noto algoritmo DSA è stato quindi adattato per utilizzare il gruppo generato da una curva ellittica ottenendo ECDSA.

Gli algoritmi di firma devono essere progettati con attenzione in quando posso facilmente esporre la chiave privata. In particolare la firma ECDSA si basa sul calcolo

s = k−1 (H(m) + d(kQ)x) mod n

dove k è nonce scelto casualmente tra gli interi nell’ordine del gruppo della curva, H(m) un hash del messaggio e d la chiave segreta. L’utilizzo di nonce è fondamentale, altrimenti sottraendo due firme diverse è possibile ottenere un’equazione per k e da questa una per d.

L’equazione sopra mostra un aspetto fondamentale dell’operazione di firma: una moltiplicazione per uno scalare (k-1) come ultima operazione.

Tempi di esecuzione

I ricercatori hanno scoperto che il tempo di esecuzione dell’algoritmo dipende dalla “grandezza” di k, rappresentato da un numero fisso di bit ma il numero di bit a sinistra uguali a zero determina l’effettiva grandezza del numero rappresentato.

I circuiti di moltiplicazione classici sono ottimizzati per evitare il passo di addizione nel caso il bit, del fattore di riferimento, corrente sia zero e questo comporta che la durata della moltiplicazione è minore per numeri con tanti bit zero a sinistra. Questa è in sintesi la falla presente nei chip di STMicroelectronics.

In modo simile l’algoritmo software a finestre, usato per la moltiplicazione efficiente su un gruppo di una curva ellittica, può saltare i bit zero a sinistra, risultato in un tempo inferiore per nonce con molti zero a sinistra. Questa è la falla presente nei fTPM di Intel.

Una simile considerazione si può fare per la firma tramite l’algoritmo ECSchnorr.

 

Crittoanalisi sui reticoli

I reticoli sono strutture matematiche utilizzate in molte primitive crittografiche recenti (prime tra tutte la crittografia omomorfica) e presentano interessanti problemi con lo SVP (Shortest Vector Problem) che trovano applicazione in molti ambiti. In questo caso un problema detto HNP (Hidden Number Problem) e collegato ad SVP, risolvibile tramite l’utilizzo di reticoli (si veda l’algoritmo LLL), può essere usato per recuperare le chiavi a partire dalle firma a patto che i nonce usati siano sufficientemente piccoli.

I ricercatori hanno quindi usato le vulnerabilità riscontrate per filtrare le firme i cui nonce fossero sufficientemente piccoli e su queste hanno poi risolto l’HNP per ritrovare la chiave.

 

L’attacco

L’attacco consiste in tre fasi:

  1. Ottenere un gran numero di firme e la loro temporizzazione.
  2. Filtrare le firme in base alla distribuzione delle temporizzazioni.
  3. Utilizzare l’HNP per trovare la chiave segreta.

Inizialmente i ricercatori hanno modificato lo stack software per l’accesso al TPM per cronometrare la durata dei comandi di firma, questo ha permesso non solo di scoprire una correlazione tra grandezza effettiva dei nonce e tempo di esecuzione ma anche un distribuzione di riferimento da utilizzare per attacchi da user space e da remoto.

Correlazione tra lunghezza dei nonce e tempo di esecuzione (in cicli di CPU)

Utilizzando questa correlazione i ricercatori hanno filtrato i nonce troppo grossi ed hanno poi usato i rimanenti per il recupero della chiave segreta.

Attacco da user space e da remoto

Grazie alle distribuzioni ricavate sopra, i ricercatori hanno potuto adattare l’algoritmo di filtro dei nonce ai casi di un attacco da user space e da remoto. Questi sono contraddistinti da una maggiore e più variabile latenza ma grazie al fatto che le operazioni effettuate dai TPM sono molto lente (il TPM è pensato per essere economico, non efficiente), anche dell’ordine di 200ms, è stato comunque possibile montare l’attacco da user space e da remoto.

In quest’ultimo caso un server VPN è stato configurato per usare il TPM per firmare i parametri di sessione, questo aggiunge alle risposte del server una latenza che dipende dalla latenza del TPM (che dipende dalla lunghezza dei nonce).

Protocollo IKE e TPM

Ancora una volta, con opportuni accorgimenti durante il filtraggio è stato possibile recuperare la chiave, tuttavia la percentuale di successo è inferiore a quella degli attacchi locali.

Probabilità di successo