Controllo significativo dei dati nei sistemi distribuiti.
Oak è una piattaforma software per la creazione di sistemi distribuiti che forniscono, in modo trasparente, asserzioni verificabili (o falsificabili) dall'esterno sul comportamento del sistema.
Oak fornisce componenti di base utilizzati per costruire Enclave Application, ovvero applicazioni isolate dall'host su cui vengono eseguite e attestabili da remoto.
In questo documento ci concentriamo sui sistemi distribuiti composti da "nodi" eterogenei; un nodo può essere un'Enclave Application in esecuzione su un server (ad es. data center privato, provider cloud pubblico, ecc.), un'applicazione normale in esecuzione su un dispositivo client (ad es. telefono, laptop), un normale servizio HTTP o gRPC, un sistema di storage, ecc. Quando due nodi comunicano tra loro, uno o entrambi possono essere Enclave Application. Per ogni interazione tra due nodi, li indichiamo come "initiator" e "responder". Evitiamo i termini "client" e "server" per questi ruoli, perché in alcuni casi il nodo "initiator" potrebbe in realtà essere in esecuzione su un "server" - tutte le combinazioni sono possibili.
Un'Enclave Application in un sistema distribuito Oak può attestarsi da remoto verso altri nodi: ciò consiste nel fornire prove della propria identità software e hardware, vincolate a chiavi crittografiche locali (memorizzate in hardware a prova di manomissione, che garantisce che le chiavi non possano essere esfiltrate o copiate), firmate in ultima istanza da una o più root of trust software o hardware disponibili sull'host di quel nodo. L'identità software di un'Enclave Application consiste in misurazioni (ovvero digest / hash) dei binari eseguibili che contribuiscono ad essa, nonché in dati aggiuntivi (ad es. configurazione).
Oak si concentra sui Trusted Execution Environments (TEE) basati su VM (ad es. AMD SEV-SNP, Intel TDX) come root of trust hardware per le Enclave Application. Ciò consente a un'Enclave Application di fornire un report di attestazione remota firmato da chiavi vincolate all'hardware nel TEE, che non sono accessibili al provider del servizio. Queste chiavi sono in ultima istanza radicate nel produttore del TEE (ad es. AMD, Intel); ciò riduce (idealmente, elimina) la necessità di fidarsi del provider del servizio di quel nodo per validare le sue prove, distribuendo la fiducia tra più attori non collusi.
All'avvio, ogni Enclave Application genera una coppia di chiavi locale e vincola la chiave pubblica alle proprie prove. Quando un nodo intende comunicare con un'Enclave Application (come initiator o responder), viene stabilito un canale cifrato end-to-end tra i due nodi. Nell'ambito della creazione del canale, ciascun nodo fornisce anche le proprie prove (se presenti) all'altro nodo e può utilizzare le prove fornite dall'altro nodo per stabilirne l'affidabilità, prima di decidere se scambiare dati con esso.
Questo canale cifrato e attestato fornisce:
Al fine di minimizzare la superficie di attacco e la Trusted Computing Base (TCB) di un'Enclave Application, Oak incoraggia un'architettura split:
Enclave Application: un binario compilato (in modo riproducibile) da codice open source, in esecuzione all'interno del TEE. L'Enclave Application ha accesso alle chiavi di decifratura legate alle prove di attestazione; decifra le richieste in arrivo dagli altri nodi, le elabora, cifra le risposte e le invia di nuovo attraverso il canale di comunicazione. Questo è il binario associato alle dichiarazioni verificabili esternamente. Nessun altro binario ha accesso alle richieste in arrivo in chiaro.
Host Application: un binario che viene eseguito nell'ambiente del server host (non attendibile) e che funge da front-end per l'Enclave Application; espone un endpoint gRPC raggiungibile dall'esterno da altri nodi. Questo binario gestisce sempre e solo dati cifrati; il suo compito principale è creare e mantenere un'istanza dell'Enclave Application nel TEE e inoltrare i dati cifrati da e verso l'Enclave Application. Può anche contenere logica proprietaria necessaria per interagire con il control plane o con altri sistemi interni necessari per l'esecuzione sull'infrastruttura del fornitore di servizi.
Questa architettura implica che il fornitore di servizi non sarebbe in grado di sostituire il binario dell'Enclave Application con uno diverso (potenzialmente malevolo) senza essere rilevato. Se il fornitore di servizi introducesse una backdoor nell'Enclave Application, dovrebbe firmare il binario e pubblicarlo in un log verificabile tramite il processo Transparent Release, il che renderebbe la backdoor irreversibilmente visibile agli osservatori esterni.
Un uso canonico di Oak è la creazione di applicazioni di sealed computing che preservano la privacy.
In un'applicazione di sealed computing, un nodo (di solito un dispositivo client) invia dati a un'enclave application (di solito un server), che elabora i dati senza che il fornitore di servizi che ospita l'enclave application possa vedere gli input, gli output o gli effetti collaterali del calcolo.
Quello che segue è un diagramma architetturale semplificato.
Oak supporta due varianti di sistemi operativi all'interno del TEE, su cui possono essere distribuite le Enclave Applications: