Chiavi sicure nell'hardware

2

So che i tasti del dispositivo per Android sono in hardware e hanno creato i fusibili usati. Dov'è la memoria di questo fusibile? È direttamente accessibile al processore?

Poiché la chiave hardware non deve essere letta nella memoria, significa che l'operazione AES deve essere eseguita direttamente nel processore. Dove viene eseguita l'implementazione AES che utilizza questa chiave fusa? Esiste un equivalente di istruzioni AES-NI impostato sul braccio?

Se questo non è il posto giusto per questa domanda, dove posso chiederlo?

    
posta stflow 14.03.2018 - 05:30
fonte

1 risposta

5

Le chiavi di sicurezza hardware non sono una funzionalità di Android, sono una funzionalità di alcuni (ma non tutti) dispositivi con sistema operativo Android, compresi la maggior parte se non tutti gli smartphone e tablet di fascia alta e di fascia media. Il loro modo di lavorare dipende dalle capacità dell'hardware.

Tutti i processori basati su un core ARM Cortex-A (e alcuni più vecchi), a 32 o 64 bit, hanno una funzione chiamata TrustZone , che è una sorta di virtualizzazione altamente specializzata. Ci sono solo due partizioni: il mondo sicuro e il mondo normale. Il mondo sicuro ha accesso al mondo normale, il mondo normale non ha accesso al mondo sicuro. TrustZone non è abbastanza per fare qualcosa di utile: il bus di memoria deve applicare la protezione, che è il caso della maggior parte (ma non di tutti) system-on-chips (SoC) basato su un Cortex-A.

Su un processore adatto, il mondo sicuro esegue un ambiente di esecuzione fidato (TEE) con un piccolo sistema operativo. Su versioni Android ragionevolmente moderne, le chiavi del keymaster Android sono memorizzate nel TEE, Android (anche completamente root) non ha accesso diretto ad esse. Esistono telefoni in cui la chiave di crittografia del dispositivo risiede all'interno del TEE, ma non è sempre il caso.

I dati TEE vengono archiviati crittografati utilizzando una chiave a cui Android non può accedere. Questa chiave è derivata da una chiave radice che è memorizzata nella memoria write-once (può trattarsi di fusibili o altra tecnologia di memoria programmabile una sola volta (OTP)). Il motivo per cui Android non può accedere a questa chiave è che il processore garantisce che sia accessibile solo al mondo sicuro.

Su alcuni SoC, il mondo sicuro legge direttamente la memoria. Su altri SoC, c'è un componente dedicato nel SoC che ha accesso esclusivo alla chiave radice e tutto ciò che il mondo sicuro sul processore principale può fare è richiedere una derivazione della chiave basata sulla chiave radice. Questo non cambia molto per quanto riguarda la sicurezza del sistema: in entrambi i casi, la chiave su cui si basa la sicurezza del sistema è una chiave che viene archiviata in una memoria mondiale sicura.

Limitare il mondo sicuro a una chiave derivata ha un vantaggio: la chiave può essere cambiata modificando il tweak sulla derivazione. Un utente malintenzionato che ha parzialmente violato il TEE e è riuscito a leggere i dati, ma non a eseguire codice arbitrario, avrebbe avuto accesso alla chiave. Se il bug è corretto e la nuova versione TEE utilizza un parametro di derivazione della chiave diverso, l'autore dell'attacco non sarà più in grado di leggere i dati TEE.

Alcuni processori ARMv8 (compresi tutti i telefoni di fascia alta oggi) hanno istruzioni simili a AES-NI, ma ciò non ha alcun impatto sulla sicurezza (tranne indirettamente, rendendo la crittografia meno costosa e meno incline agli attacchi dei canali laterali). AES-NI e l'equivalente ARM sono solo modi per calcolare AES più velocemente, le chiavi e i dati sono ancora nello stesso posto.

    
risposta data 15.03.2018 - 21:05
fonte

Leggi altre domande sui tag