Trusty TEE

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 è isolato dal resto del sistema sia dal punto di vista hardware che software. Trusty e Android vengono eseguiti in parallelo. Trusty ha accesso alla piena potenza del processore e della memoria principali 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 attendibile sicuro. Un supporto simile è disponibile anche su piattaforme Intel x86 che utilizzano la tecnologia di virtualizzazione di Intel.

Figura 1. Diagramma di panoramica della funzionalità Attendibile.

Trusty è costituito da:

  • Un piccolo kernel del sistema operativo derivato da Little Kernel
  • Un driver del kernel Linux per trasferire dati tra l'ambiente sicuro e Android
  • Una libreria dello spazio utente Android per comunicare con applicazioni attendibili (ovvero attività/servizi sicuri) tramite il driver del kernel

Nota: Trusty e l'API Trusty sono soggetti a modifiche. Per informazioni sull'API Trusty, consulta il riferimento API.

Perché Trusty?

Altri sistemi operativi TEE vengono tradizionalmente forniti come blob di codice binario da fornitori di terze parti o sviluppati internamente. Lo sviluppo di sistemi TEE interni o la licenza di un TEE da parte di terze parti può essere costoso per i fornitori di system on a chip (SoC) e gli OEM. Il costo monetario combinato con sistemi di terze parti inaffidabili crea un ecosistema instabile per Android. Trusty viene fornito ai partner come alternativa open source affidabile e senza costi per il loro Trusted Execution Environment. Trusty offre un livello di trasparenza che non è possibile con i sistemi closed source.

Android supporta varie implementazioni di TEE, quindi non hai limitazioni nell'utilizzo di Trusty. Ogni sistema operativo TEE ha un proprio modo unico di implementare le applicazioni attendibili. Questa frammentazione può essere un problema per gli sviluppatori di applicazioni attendibili che cercano di garantire il funzionamento delle loro app su ogni dispositivo Android. L'utilizzo di Trusty come standard aiuta gli sviluppatori di applicazioni a creare ed eseguire facilmente il deployment di applicazioni senza dover tenere conto della frammentazione di più sistemi TEE. Trusty TEE offre a sviluppatori e partner trasparenza, collaborazione, possibilità di ispezionare il codice e facilità di debug. Gli sviluppatori di applicazioni attendibili possono convergere su API e strumenti 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 attendibile è definita come una raccolta di file binari (file eseguibili e di risorse), un manifest binario e una firma crittografica. In fase di esecuzione, le applicazioni attendibili vengono eseguite come processi isolati in modalità senza privilegi sotto il kernel attendibile. Ogni processo viene eseguito nella propria sandbox di memoria virtuale utilizzando le funzionalità dell'unità di gestione della memoria del processore TEE. La compilazione dell'hardware cambia il processo esatto seguito da Trusty, ma ad esempio il kernel pianifica questi processi utilizzando un programmatore round-robin basato su priorità basato su un tick timer sicuro. Tutte le applicazioni attendibili condividono la stessa priorità.

Figura 2. Panoramica delle applicazioni attendibili.

Applicazioni attendibili di terze parti

Attualmente, tutte le applicazioni Trusty vengono sviluppate da un singolo fornitore e pacchettizzate 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, questa operazione deve essere eseguita con estrema cautela. Ogni nuova applicazione aumenta l'area della base di calcolo attendibile (TCB) del sistema. Le applicazioni attendibili possono accedere ai segreti del dispositivo e possono eseguire calcoli o trasformazioni dei dati utilizzandoli. La possibilità di sviluppare nuove applicazioni che vengono eseguite nel TEE apre molte possibilità di innovazione. Tuttavia, a causa della stessa definizione di un TEE, queste applicazioni non possono essere distribuite senza una qualche forma di attendibilità. In genere si tratta di una firma digitale di un'entità considerata attendibile dall'utente del prodotto su cui viene eseguita l'applicazione.

Utilizzi ed esempi

Gli ambienti di esecuzione attendibili stanno rapidamente diventando uno standard nei dispositivi mobili. Gli utenti si affidano sempre di più ai propri dispositivi mobili per la vita quotidiana e la necessità di sicurezza è in costante crescita. I dispositivi mobili con un TEE sono più sicuri di quelli senza.

Sui dispositivi con un'implementazione TEE, il processore principale è spesso definito "non attendibile", il che significa che non può accedere a determinate aree di RAM, registri hardware e fusibili una volta scritti in cui i dati segreti (ad esempio le chiavi di crittografia specifiche del dispositivo) vengono archiviati dal produttore. Il software in esecuzione sul processore principale delega al processore TEE tutte le operazioni che richiedono l'utilizzo di dati riservati.

L'esempio più noto 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 decriptare i contenuti protetti. Il processore principale vede solo i contenuti criptati, offrendo un elevato livello di sicurezza e protezione contro gli attacchi basati su software.

Esistono molti altri utilizzi per un TEE, come pagamenti mobili, operazioni bancarie sicure, autenticazione a più fattori, protezione da reset del dispositivo, archiviazione permanente protetta da replay, elaborazione sicura di PIN e impronte digitali e persino rilevamento di malware.