Un TEE, o Trusted Execution Environment è un modello software / hardware che permette l’esecuzione di codice con garanzie di sicurezza, avendo quindi la prova che l’operazione venga eseguita correttamente e su un sistema isolato, protetto da attacchi.
Il motivo per cui una simile tecnologia sia di nostro interesse è presto detto.
Nell’ambito di quelle che definiamo essere Privacy Enhancing Technologies, un Trusted Execution Environment si configura come una cassaforte all’interno della quale poter eseguire operazioni sui dati senza che questi possano essere intercettati da un aggressore, e dunque fuoriuscire dai confini di sicurezza definiti.
Inoltre, lascia che ti dica una cosa.
Al contrario di sistemi basati sulla Crittografia Omomorfica, in cui i tempi di esecuzione sono alti a causa dell’elaborazione del testo cifrato, un Trusted Execution Environment promette prestazioni superiori pur mantenendo diverse garanzie di sicurezza.
Tutto ciò è possibile grazie alla particolare configurazione di un TEE.
Spero di essere riuscito a stuzzicare in te l’interesse di continuare la lettura di questo post.
Qualora avessi fallito, scrivimi nei commenti cosa avresti voluto di presentassi diversamente.
In caso contrario, se ho accesso in te la fiamma del desiderio di conoscenza… seguimi!
Stiamo per scoprire le meraviglie che si celano a un Trusted Execution Environment.
A cosa serve un TEE
Prima di capire come funzioni un Trusted Execution Environment chiariamo a cosa serva.
Considera un’azienda generica il cui piano seminterrato della grande sede è interamente dedicato a ospitare i server.
Decine e decine di rack, con ventole in costante servizio per raffreddare processori, harddisk e memorie RAM.
Questa azienda ha vecchi sistemi, che funzionano ancora, ma che poco si apprestano a svolgere carichi di lavoro computazionalmente intensi.
Allenare un modello di machine learning è cosa proibitiva.
Il cloud pubblico (e.g. AWS, Azure, IBM) sarebbe un’alternativa con costi inferiori e servizi maggiori se non fosse per l’impossibilità di trasferire i preziosi dati privati al di fuori dei confini privacy aziendali.
Lo spieghi te al CDO che vuoi esportare un file CSV di dati soggetti a Intellectual Property dal gestionale interno, per caricarli su un bucket S3? (i.e. il Simple Storage Service del Cloud di Amazon, AWS. Una sorta di google drive per enterprise).
Chiaramente non può essere questa la strada.
Se solo esistesse un modo per sfruttare le potenzialità dell’ambiente cloud pur garantendo che i dati non possano in alcun modo essere trafugati…
Ecco che l’idea di un ambiente di esecuzione fidato inizia a prendere forma…
Funzionamento di un TEE
Il funzionamento di un Trusted Execution Environment si basa sull’idea di creare un ambiente isolato, sia a livello hardware che software, permettendo l’esecuzione di programmi con garanzie di inalterazione.
Praticamente un TEE è una partizione protetta della memoria accessibile unicamente dal processore, che può in tal modo proteggere la riservatezza e l’integrità del codice.
Poiché la sicurezza è in parte legata all’hardware, la radice di integrità è riconosciuta al produttore dei chipset, Intel, AMD o ARM che si pone a garante dei dispositivi fisici.
Il codice eseguito in un TEE deve quindi seguire un flusso di verifica, che coinvolge di verse parti, atto a garantirne la validità.
I dettagli del flusso possono variare in funzione del chipset scelto, ma condividono tutti alcuni passaggi fondamentali.
Le relazioni tra le parti
Poiché esistono più parti, adottiamo una convenzione che ci aiuti a eliminare dubbi e renderne più facile la comprensione. Riconosciamo allora i seguenti personaggi, e ruoli:
- Costruttore, azienda produttrice del chipset con all’interno il TEE
- Azienda A, realtà che intende eseguire codice in cloud su dati riservati, che non possono essere in alcun modo trafugati
- Azienda B, fornitrice del servizio di Confidential Computing, e cioè sviluppatrice del software che sarà eseguito all’interno del chipset del Costruttore sui dati dell’Azienda A
Come funziona un TEE
Vediamo dunque come garantire integrità e sicurezza in un Trusted Execution Environment.
- Ogni hardware ha un codice identificativo univoco noto al Costruttore (e.g. Intel, ARM), e contenente una chiave privata inaccessibile
- Quando l’Azienda A richiede l’accesso al TEE per eseguire su di esso delle operazioni, l‘Azienda B fornitrice del servizio invia un report (n.b. il nome qui cambia in base al Costruttore, e per semplificare ho omesso alcuni passaggi intermedi di verifica ulteriore). Il report contiene dati sul codice eseguito all’interno del TEE.
- L’Azienda A può attestare che il codice e gli intenti di esecuzione siano conformi a quanto dichiarato dall’Azienda B, inviando i dati al Costruttore che ne certifica l’autenticità validandoli.
- L‘Azienda A può quindi criptare i dati con la chiave pubblica del TEE, che a questo punto potranno essere decifrati solamente all’interno del Trusted Execution Environment.
Come ti accennavo, il processo reale di attestazione e verifica richiede molti più passaggi, e varia sulla base del hardware scelto. Pensa solo che la guida tecnica per Intel SGX, il TEE di Intel, è un file da 40 pagine.
Una piacevole lettura serale per amanti dei tecnicismi spacca cervelli.
Per il momento è tutto.
Per aspera, ad astra.
Un caldo abbraccio, Andrea