Trusted Platform Module (TPM) in Windows 10 IoT Core

Che cos'è TPM?

Un TPM (Trusted Platform Module), è un coprocessore crittografico che include funzionalità per la generazione casuale di numeri, la generazione sicura di chiavi crittografiche e la limitazione dell'uso. Include anche funzionalità come l'attestazione remota e l'archiviazione sealed. La specifica tecnica di TPM è disponibile pubblicamente, basata sul gruppo TCG (Trusted Computing Group). La versione più recente TPM 2.0 (rilasciata a ottobre 2014), è una riprogettazione principale della specifica che aggiunge nuove funzionalità e corregge i punti deboli dell'ex TPM 1.2.

Perché TPM?

I computer che incorporano un TPM possono creare chiavi crittografiche e crittografarle in modo che possano essere decrittografate solo dal TPM. Questo processo, spesso definito "wrapping" o "binding" di una chiave, può contribuire a proteggere la chiave dalla divulgazione. Ogni TPM ha una chiave primaria di "wrapping", denominata chiave radice di archiviazione, archiviata all'interno del TPM stesso. La parte privata di una chiave creata in un TPM non viene mai esposta ad altri componenti, software, processi o persone.

I computer che incorporano un TPM possono anche creare una chiave che non solo è stata sottoposta a wrapping, ma anche a determinate misurazioni della piattaforma. Questo tipo di chiave può essere scollegato solo quando le misurazioni della piattaforma hanno gli stessi valori che avevano al momento della creazione della chiave. Questo processo è denominato "tenuta" della chiave al TPM. La decrittografia della chiave è denominata "unsealing". Il TPM può anche bloccare e annullare i dati generati all'esterno del TPM. Con questa chiave sealed e software, ad esempio Crittografia unità BitLocker, è possibile bloccare i dati fino a quando non vengono soddisfatte condizioni hardware o software specifiche.

Con un TPM, le parti private delle coppie di chiavi vengono mantenute separate dalla memoria controllata dal sistema operativo. Le chiavi possono essere sealed per il TPM e alcune garanzie sullo stato di un sistema (garanzie che definiscono la "attendibilità" di un sistema) possono essere effettuate prima che le chiavi non vengano bloccate e rilasciate per l'uso. Poiché il TPM usa il proprio firmware interno e i circuiti logici per le istruzioni di elaborazione, non si basa sul sistema operativo e non è esposto a vulnerabilità che potrebbero esistere nel sistema operativo o nel software dell'applicazione.

Architettura TPM

Differenza tra TPM 1.2 e TPM 2.0.
La specifica TPM è stata sviluppata due volte. La prima volta, è stata sviluppata da 1,1b a 1.2, incorporando nuove funzionalità richieste/identificate dal comitato di specifica. Questa forma di evoluzione a scorrimento delle caratteristiche ha reso la specifica TPM 1.2 finale molto complicata. Alla fine, i punti deboli crittografici di SHA-1 (che era l'algoritmo commerciale più forte in TPM 1.2) sono stati rivelati che hanno causato la necessità di una modifica. L'architettura TPM è stata riprogettata da zero, con conseguente progettazione molto più integrata e unificata di TPM 2.0.

Le modifiche e i miglioramenti rispetto al TPM 1.2 precedente includono:

  • Supporto per algoritmi di crittografia aggiuntivi
  • Miglioramenti alla disponibilità del TPM alle applicazioni
  • Meccanismi di autorizzazione avanzati
  • Gestione TPM semplificata
  • Funzionalità aggiuntive per migliorare la sicurezza dei servizi della piattaforma

Nota

Windows IoT Core supporta solo TPM 2.0 e non supporta il TPM 1.2 obsoleto.

Che cos'è TBS?

La funzionalità TPM Base Services (TBS) è un servizio di sistema che consente la condivisione trasparente delle risorse TPM. Condivide le risorse TPM tra più applicazioni nello stesso computer fisico tramite chiamate rpc (Remote Procedure Call). Centralizza l'accesso TPM tra le applicazioni usando le priorità specificate dalle applicazioni chiamante.

Il TPM fornisce funzioni di crittografia progettate per fornire attendibilità nella piattaforma. Poiché il TPM viene implementato nell'hardware, dispone di risorse limitate. Il TCG definisce uno stack TPM Software Stack (TSS) che usa queste risorse per fornire operazioni attendibili per il software applicativo. Tuttavia, non viene effettuato alcun provisioning per l'esecuzione di un'implementazione TSS affiancata al software del sistema operativo che può anche usare risorse TPM. La funzionalità TBS risolve questo problema abilitando ogni stack software che comunica con TBS per usare le risorse TPM controllando eventuali altri stack software in esecuzione nel computer.

Soluzioni TPM disponibili in Windows IoT Core

Alcune parole su Software TPM (sTPM), Firmware TPM (fTPM), TPM discreto (dTPM)...

Firmware TPM (fTPM)

Firmware TPM (fTPM) richiede un supporto speciale processore/SoC attualmente non implementato in Raspberry Pi 2 o 3. MinnowBoard Max richiede firmware versione 0.80 o successiva. DragonBoard410c offre funzionalità fTPM predefinite abilitate per impostazione predefinita.

TPM discreto (dTPM)

Il TPM discreto (dTPM) è considerato la soluzione più affidabile con tutti i mezzi.
Esistono diversi produttori di chip dTPM e moduli PCB supportati in Windows IoT Core:

Produttore Pagina Web Tipo di modulo TPM Chip
Infineon Infineon TPM Evalboard Infineon SLB9670 TPM 2.0
Pi3g Pi3g.com Mass Product & Evalboard Infineon SLB9670 TPM 2.0

Software TPM (sTPM)

Il TPM (sTPM) software è noto anche come simulatore TPM. È indipendente dalla piattaforma, supportato in Windows IoT Core.

Nota

sTPM è destinato solo a scopi di sviluppo e non offre vantaggi reali per la sicurezza.

Esempi

  • Esempio di libreria Urchin Questa esercitazione illustra come creare un'applicazione C++ di esempio che esercita la funzionalità TPM usando la libreria Urchin. Urchin è una libreria conforme alle specifiche derivata dall'implementazione di riferimento TPM 2.0. Fornisce al client la funzionalità per effettuare il marshalling/annullare il marshalling di tutte le strutture di dati, calcolare correttamente le autorizzazioni, eseguire la crittografia dei parametri ed eseguire il controllo.

Risorse aggiuntive