Trusty TEE

Trusty è un sistema operativo sicuro che fornisce un Trusted Execution Environment (TEE) per Android. Trusty OS viene eseguito sullo stesso processore del sistema operativo Android, ma è isolato dal resto del sistema sia a livello hardware che software. Trusty e Android vengono eseguiti in parallelo. Trusty ha accesso a tutta la potenza del processore e della memoria principali di un dispositivo, ma è completamente isolato. L'isolamento di Trusty lo protegge da app dannose installate dall'utente e da potenziali vulnerabilità in Android.

Trusty è compatibile con i processori ARM e Intel. Sui sistemi ARM, Trusty utilizza TrustZone di ARM per virtualizzare il processore principale e creare un TEE sicuro. Un supporto simile è disponibile anche sulle piattaforme Intel x86 che utilizzano la tecnologia di virtualizzazione di Intel.

Diagramma panoramica di Trusty

Figura 1. Diagramma panoramico di Trusty.

Trusty è costituito 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 userspace Android per comunicare con app attendibili (ovvero servizi e attività 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 Trusty.

Vantaggi di Trusty

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 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 suoi partner come alternativa open source affidabile e senza costi per il loro TEE. Trusty offre un livello di trasparenza impossibile con i sistemi closed source.

Android supporta varie implementazioni TEE, quindi non sei limitato all'utilizzo di Trusty. Ogni sistema operativo TEE ha un modo unico di eseguire il deployment di app attendibili. Questa frammentazione può essere un problema per gli sviluppatori di app attendibili che cercano di garantire il funzionamento delle loro app su ogni dispositivo Android. L'utilizzo di Trusty come standard aiuta gli sviluppatori di app a creare e implementare app senza tenere conto della frammentazione di più sistemi TEE. Trusty TEE offre a sviluppatori e partner trasparenza, collaborazione, ispezionabilità del codice e debug semplice. Gli sviluppatori di app attendibili possono convergere su strumenti e API comuni per ridurre il rischio di introdurre vulnerabilità di sicurezza. Questi sviluppatori hanno la sicurezza di sviluppare un'app e riutilizzarla su più dispositivi senza ulteriori sviluppi.

App e servizi

Un'app Trusty è una raccolta di file binari (eseguibili e file di risorse), un manifest binario e una firma crittografica. In fase di esecuzione, le app Trusty vengono eseguite come processi isolati in modalità senza privilegi nel kernel Trusty. Ogni processo viene eseguito nel proprio sandbox di memoria virtuale utilizzando le funzionalità dell'unità di gestione della memoria del processore TEE. La build dell'hardware modifica la procedura esatta seguita da Trusty, ma ad esempio il kernel pianifica questi processi utilizzando uno scheduler round robin basato sulla priorità e guidato da un tick del timer sicuro. Tutte le app Trusty condividono la stessa priorità.

Panoramica dell'app Trusty

Figura 2. Panoramica dell'app Trusty.

App Trusty di terze parti

Tutte le app Trusty sono sviluppate da un'unica parte e pacchettizzate con l'immagine del kernel Trusty. L'intera immagine viene firmata e verificata dal bootloader durante l'avvio. Lo sviluppo di app di terze parti non è supportato in Trusty. Sebbene Trusty consenta lo sviluppo di nuove app, procedi con estrema cautela: ogni nuova app aumenta l'area della base di calcolo attendibile (TCB) del sistema. Le app attendibili possono accedere ai segreti del dispositivo ed eseguire calcoli o trasformazioni dei dati utilizzandoli. La possibilità di sviluppare nuove app che vengono eseguite nel TEE apre molte possibilità di innovazione. Tuttavia, a causa della definizione stessa di TEE, queste app non possono essere distribuite senza una qualche forma di attendibilità. Si tratta di una firma digitale di un'entità considerata attendibile dall'utente del prodotto su cui viene eseguita l'app.

Utilizzo ed esempi

Le TEE stanno diventando uno standard nei dispositivi mobili. Gli utenti fanno sempre più affidamento sui propri dispositivi mobili per la vita quotidiana e la necessità di sicurezza è in aumento. I dispositivi mobili con un TEE sono più sicuri di quelli senza.

Sui dispositivi con un'implementazione TEE, il processore principale viene spesso definito *non attendibile*, il che significa che non può accedere a determinate aree di RAM, registri hardware e fusibili write-once in cui vengono memorizzati dal produttore dati segreti (come chiavi crittografiche specifiche del dispositivo). Il software in esecuzione sul processore principale delega al processore TEE qualsiasi operazione che richiede l'utilizzo di dati secreti.

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, fornendo un elevato livello di sicurezza e protezione contro gli attacchi basati su software.

Il TEE ha altri utilizzi, come pagamenti mobile, operazioni bancarie sicure, autenticazione a più fattori, protezione del ripristino del dispositivo, archiviazione permanente protetta da replay, elaborazione sicura di PIN e impronte e persino rilevamento di malware.