La tua domanda passa da TPM a TrustZone a metà. Si tratta di tecnologie diverse, che offrono funzionalità diverse, con diverse proprietà di sicurezza e sono disponibili su diverse piattaforme (in gran parte disgiunte). Ciò che hanno in comune è che entrambi sono ambienti di elaborazione che contengono una chiave segreta unica per il dispositivo a cui sono collegati e che è protetta dal sistema operativo principale in esecuzione su quel dispositivo.
Un TPM è un chip separato che fornisce un set fisso di servizi. Uno di questi servizi è proteggere una chiave a riposo avvolgendola con una chiave che non lascia il TPM. Per utilizzare questa chiave in un'applicazione, l'applicazione deve recuperare la chiave dal TPM e, a quel punto, la chiave finisce nel sistema operativo principale. TPM è praticamente esclusivamente collegato ai processori x86.
TrustZone (e tecnologie associate) fornisce un ambiente isolato in esecuzione sullo stesso processore del sistema operativo principale del dispositivo. È possibile utilizzarlo per proteggere una chiave a riposo e anche per proteggere una chiave in fase di esecuzione se la chiave viene manipolata da un'applicazione in esecuzione nel lato TrustZone del processore (l'ambiente di esecuzione attendibile (TEE) )). TrustZone è una funzionalità ARM.
Un TPM fornisce una funzione di memorizzazione delle chiavi. Android fornisce questa funzione tramite il servizio Keymaster. Su molti recenti telefoni Android, il servitore per keymaster è supportato da hardware , eseguito nel mondo sicuro di TrustZone. Ma alla fine la chiave deve essere recuperata dall'applicazione che lo usa.
TrustZone offre potenzialmente la funzionalità aggiuntiva di eseguire applicazioni personalizzate nel mondo sicuro. Se riesci a farlo, puoi avere una chiave che non lascia il mondo sicuro.
Alcuni processori x86 molto recenti hanno una funzionalità simile chiamata SGX . Permettono alle applicazioni di essere eseguite in un contesto protetto dal sistema operativo principale.
Se è possibile distribuire applicazioni su TrustZone o SGX, il problema successivo è come elaborare i dati crittografati o firmati con la chiave. Se tali dati vengono scambiati con un server che utilizza un canale sicuro, potrebbe non essere necessario fidarsi del sistema operativo principale. Il problema successivo, per molte applicazioni, è come stabilire una relazione con un dispositivo specifico, cioè il provisioning. Questo tende a richiedere un'infrastruttura piuttosto pesante.