Trusty è un sistema operativo (OS) sicuro che fornisce un Trusted Execution Environment (TEE) per Android. Il sistema operativo Trusty funziona sullo stesso processore del sistema operativo Android, ma Trusty è isolato dal resto del sistema sia dall'hardware che dal software. Trusty e Android funzionano parallelamente tra loro. Trusty ha accesso a tutta la potenza del processore principale e della memoria di un dispositivo ma è completamente isolato. L'isolamento di Trusty lo protegge dalle app dannose installate dall'utente e dalle potenziali vulnerabilità che potrebbero essere scoperte in Android.
Trusty è compatibile con processori ARM e Intel. Sui sistemi ARM, Trusty utilizza Trustzone™ di ARM per virtualizzare il processore principale e creare un ambiente di esecuzione sicuro e affidabile. Un supporto simile è disponibile anche sulle piattaforme Intel x86 che utilizzano la tecnologia di virtualizzazione di Intel.
Trusty è composto da:
- Un piccolo kernel del sistema operativo derivato da Little Kernel
- Un driver del kernel Linux per trasferire i dati tra l'ambiente sicuro e Android
- Una libreria in spazio utente Android per comunicare con applicazioni attendibili (ovvero attività/servizi protetti) tramite il driver del kernel
Nota: Trusty e l'API Trusty sono soggetti a modifiche. Per informazioni sull'API Trusty, consulta la Guida di riferimento API .
Perché fidato?
Altri sistemi operativi TEE vengono tradizionalmente forniti come blob binari da fornitori di terze parti o sviluppati internamente. Lo sviluppo di sistemi TEE interni o la concessione in licenza di un TEE da terze parti può essere costoso per i fornitori e gli OEM di System-on-Chip (SoC). Il costo monetario combinato con sistemi di terze parti inaffidabili crea un ecosistema instabile per Android. Trusty viene fornito ai suoi partner come alternativa open source affidabile e gratuita per il loro ambiente di esecuzione affidabile. Trusty offre un livello di trasparenza che semplicemente non è possibile con i sistemi closed source.
Android supporta varie implementazioni TEE quindi non sei limitato all'utilizzo di Trusty. Ogni sistema operativo TEE ha il proprio modo unico di distribuire applicazioni affidabili. Questa frammentazione può rappresentare un problema per gli sviluppatori di applicazioni affidabili che cercano di garantire che le loro app funzionino su ogni dispositivo Android. L'utilizzo di Trusty come standard aiuta gli sviluppatori di applicazioni a creare e distribuire facilmente applicazioni senza tenere conto della frammentazione di più sistemi TEE. Trusty TEE offre a sviluppatori e partner trasparenza, collaborazione, ispezionabilità del codice e facilità di debug. Gli sviluppatori di applicazioni affidabili possono convergere attorno a strumenti e API comuni per ridurre il rischio di introdurre vulnerabilità di sicurezza. Questi sviluppatori avranno la certezza di poter sviluppare un'applicazione e riutilizzarla su più dispositivi senza ulteriore sviluppo.
Applicazioni e servizi
Un'applicazione Trusty è definita come una raccolta di file binari (eseguibili e file di risorse), un manifesto binario e una firma crittografica. In fase di runtime, le applicazioni Trusty vengono eseguite come processi isolati in modalità non privilegiata nel kernel Trusty. Ogni processo viene eseguito nella propria sandbox di memoria virtuale utilizzando le funzionalità dell'unità di gestione della memoria del processore TEE. La build dell'hardware modifica l'esatto processo seguito da Trusty, ma, ad esempio, il kernel pianifica questi processi utilizzando uno scheduler round-robin basato sulla priorità guidato da un timer sicuro. Tutte le applicazioni Trusty condividono la stessa priorità.
Applicazioni Trusty di terze parti
Attualmente tutte le applicazioni Trusty sono sviluppate da un unico soggetto e confezionate con l'immagine del kernel Trusty. L'intera immagine viene firmata e verificata dal bootloader durante l'avvio. Al momento lo sviluppo di applicazioni di terze parti non è supportato in Trusty. Sebbene Trusty consenta lo sviluppo di nuove applicazioni, tale operazione deve essere esercitata con estrema cautela; ogni nuova applicazione aumenta l'area della Trusted Computing Base (TCB) del sistema. Le applicazioni attendibili possono accedere ai segreti del dispositivo ed eseguire calcoli o trasformazioni di dati utilizzandoli. La capacità di sviluppare nuove applicazioni eseguibili nei TEE apre molte possibilità di innovazione. Tuttavia, a causa della definizione stessa di TEE, queste applicazioni non possono essere distribuite senza una qualche forma di fiducia. In genere si presenta sotto forma di firma digitale da parte di un'entità considerata attendibile dall'utente del prodotto su cui viene eseguita l'applicazione.
Usi ed esempi
Gli ambienti di esecuzione attendibili stanno rapidamente diventando uno standard nei dispositivi mobili. Gli utenti fanno sempre più affidamento sui dispositivi mobili nella vita di tutti i giorni e il bisogno di sicurezza è sempre crescente. I dispositivi mobili dotati di TEE sono più sicuri dei dispositivi senza TEE.
Sui dispositivi con implementazione TEE, il processore principale viene spesso definito "non attendibile", il che significa che non può accedere a determinate aree della RAM, registri hardware e fusibili riscrivibili in cui sono archiviati dati segreti (come le chiavi crittografiche specifiche del dispositivo). memorizzato dal produttore. Il software in esecuzione sul processore principale delega tutte le operazioni che richiedono l'uso di dati segreti al processore TEE.
L’esempio più noto di ciò nell’ecosistema Android è il framework DRM per i contenuti protetti. Il software in esecuzione sul processore TEE può accedere alle chiavi specifiche del dispositivo necessarie per decrittografare il contenuto protetto. Il processore principale vede solo il contenuto crittografato, fornendo un elevato livello di sicurezza e protezione contro gli attacchi basati su software.
Esistono molti altri usi per un TEE come pagamenti mobili, servizi bancari sicuri, autenticazione a più fattori, protezione dal ripristino del dispositivo, archiviazione persistente protetta da replay, elaborazione sicura di PIN e impronte digitali e persino rilevamento di malware.