Blog.

Trusted Execution Environment | Cos’è un TEE?


Autore
Andrea Provino
Data
Tempo di lettura
4 minuti
Categoria
Data Science, Privacy Preserving

trusted-execution-environment-tee-data-science-come-fuziona

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:

  1. Costruttore, azienda produttrice del chipset con all’interno il TEE
  2. Azienda A, realtà che intende eseguire codice in cloud su dati riservati, che non possono essere in alcun modo trafugati
  3. 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.

  1. Ogni hardware ha un codice identificativo univoco noto al Costruttore (e.g. Intel, ARM), e contenente una chiave privata inaccessibile
  2. 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.
  3. 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.
  4. 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

Taggeddata scienceprivacy


Ultimi post

Patricia Merkle Trie

Il Practical Algorithm To Retrieve Information Coded In Alphanumeric Merkle Trie, o Patricia Merkle Trie è una struttura dati chiave-valore usatada Ethereum e particolarmente efficiente per il salvataggio e la verifica dell’integrità dell’informazione. In questo post ne studieremo le caratteristiche. Prima di procedere, ci conviene ripassare l’introduzione al Merkle Tree nella quale abbiamo chiarito il […]

Andrea Provino
ethereum-patricia-merkle-tree
Tree Data Structure: cos’è un Merkle Tree

Un Merkle Tree è una struttura dati efficiente per verificare che un dato appartenga a un insieme esteso di elementi. È comunemente impiegato nelle Peer to Peer network in cui la generazione efficiente di prove (proof) contribuisce alla scalabilità della rete. Capire i vantaggi di questa struttura ci tornerà utile nel nostro percorso di esplorazione […]

Andrea Provino
merkle-tree-cover
UTXO: come funziona il modello Unspent Transaction Outputs

Per tenere traccia dei bilanci utente, la blockchain di Bitcoin sfrutta un modello di contabilità definito UTXO o Unspent Transaction Outputs. In questo articolo ne esaminiamo le caratteristiche. Ogni blockchain è dotata di un sistema di contabilità, un meccanismo attraverso cui tenere traccia dei bilanci di ciascun utente. I due grandi modelli di riferimento nel […]

Andrea Provino
bitcoin-utxo
Cos’è Ethereum

Possiamo definire Ethereum come una macchina a stati distribuita che traccia le transizioni di un archivio dati general-purpose (i.e. una memoria in grado di registrare qualsiasi dato esprimibile come coppia di chiave e valore o key-value) all’interno della Ethereum Blockchain. È arrivato il momento di esplorare uno dei progetti tecnologici più innovativi e interessanti degli […]

Andrea Provino
ethereum