Decodifica delle chiavi avvolte dalla chiave di archiviazione (SRK) di un TPM

3

Diciamo che ho una chiave simmetrica avvolta con una chiave radice di archiviazione (SRK) in un TPM. L'SRK non può essere letto da un utente malintenzionato e pertanto eseguo la decrittografia e utilizzo l'SRK e ottengo la chiave simmetrica in memoria per eseguire operazioni successive utilizzando la chiave simmetrica. Come si ottiene la sicurezza della chiave simmetrica in memoria? Su uno standard Linux (Android) non dovrei essere in grado di scaricare il contenuto della memoria e quindi ottenere la chiave simmetrica? Allora, qual è la zona di fiducia e il wrapping con SRK mi dà? C'è un modo per proteggere questa chiave simmetrica e tutte le operazioni successive usando la chiave simmetrica? Ricordo di aver letto qualche tempo fa che nella Trust Zone possiamo eseguire solo il codice firmato che è buono ma non è necessaria la memoria crittografata per essere sicuro? Esiste una modalità di zona di fiducia in cui ottengo memoria crittografata proteggendo la chiave in memoria?

In che modo Android lo risolve? Se esiste un'opzione per utilizzare la memoria crittografata in Android, come viene crittografata la memoria, con quale chiave e in che modo viene fornita / generata la chiave?

    
posta user220201 27.03.2016 - 06:28
fonte

2 risposte

2

TrustZone e TPM (con il suo SRK) sono due cose molto diverse. Proverò a deferenziare entrambi prima di spiegare come possono essere utilizzati per ottenere ciò che hai spiegato.

TrustZone è un ambiente con piattaforma ARM. Fornisce un secondo ambiente che è pensato per essere sicuro. Con questo voglio dire, molte funzionalità sono disponibili per ottenere sicurezza.

Nel tuo esempio, l'ambiente normale (il mondo ricco in termini TrustZone) eseguiva Android e un cosiddetto kernel sicuro / di fiducia (il TEE) sarebbe sul lato TrustZone (il mondo sicuro). Queste protezioni sono definite dal TEE stesso e dipendono dai suoi obiettivi effettivi. Ciò che sta funzionando nel mondo sicuro utilizza la memoria protetta che non può essere scritta / letta dal mondo normale (Android) e alcuni dispositivi potrebbero essere mediati o riservati esclusivamente dal kernel TrustZone.

Hai ragione quando dici che una chiave simmetrica avvolta dall'SRK del TPM viene normalmente esposta direttamente nella memoria una volta scartata. Il TPM non offre nulla a quel punto. L'assunto è che lo stai facendo solo da un ambiente fidato. Tuttavia, se ci uniamo sia a TPM che a TrustZone, possiamo crittografare / decrittografare i dati con SRK (ad esempio una chiave simmetrica) e solo esporre il testo in chiaro al mondo protetto, proteggendolo quindi dalla normale parola, Android.

Questo è fondamentalmente il modo in cui Apple protegge informazioni sensibili / processi (ovviamente molto semplificati).

    
risposta data 29.11.2016 - 18:40
fonte
0

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.

    
risposta data 29.11.2016 - 21:27
fonte

Leggi altre domande sui tag