Circuit ORAM e prestazioni pratiche
Analizzi i miglioramenti di Circuit ORAM e il sovraccarico prestazionale reale delle costruzioni ORAM.
Circuit ORAM e prestazioni pratiche è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.
Obiettivi di progettazione di Circuit ORAM
Circuit ORAM, proposta da Wang, Chan e Shi (2015), è stata progettata per minimizzare l'overhead della larghezza di banda, mantenendo al contempo una semplice implementazione nei framework di secure computation (garbled circuits e secret sharing). La sua innovazione principale consiste nel ridurre la dimensione dei bucket a Z = 2 blocchi, rispetto a Z = 5 in Path ORAM, dimezzando la larghezza di banda e mantenendo una probabilità di errore trascurabile. La procedura di eviction è stata riprogettata in modo da poter essere espressa come un piccolo circuito booleano.
Riduzione della dimensione dei bucket
In Path ORAM con Z = 5, la probabilità di overflow dello stash è controllata disponendo più blocchi per bucket, così da accogliere l'assegnazione casuale dei blocchi ai percorsi. Circuit ORAM dimostra che Z = 2 è sufficiente quando si utilizza una procedura di eviction deterministica (deep-first eviction) invece di una eviction casuale. Questo dimezza lo storage sul server e l'overhead di comunicazione rispetto a Path ORAM con gli stessi parametri di sicurezza.
Circuit ORAM per il secure computation
Circuit ORAM è stata progettata specificamente con una procedura di eviction esprimibile come un circuito booleano efficiente. Nei protocolli di secure computation (garbled circuits, SPDZ), l'accesso ORAM stesso deve essere valutato obliviously: il server che esegue il calcolo non deve apprendere quale posizione di memoria viene consultata. Il semplice circuito di eviction deterministico di Circuit ORAM è molto più efficiente da trasformare in un garbled circuit rispetto alla procedura di eviction di Path ORAM.
Analisi dell'overhead di comunicazione
Per un database di N blocchi di dimensione B byte, Circuit ORAM richiede 2 * log N * B byte per accesso, leggendo e scrivendo un percorso con Z = 2 blocchi per bucket. Per N = 2^20 blocchi da 4KB ciascuno, ciò corrisponde a 160KB per accesso, rispetto ai 400KB di Path ORAM (Z=5). L'overhead di larghezza di banda rispetto al testo in chiaro è di circa 40x con parametri tipici, in calo rispetto al valore di 100x di Path ORAM.
Oblix: strutture dati oblivious
Oblix (Misra, Schlegel, Sherwood, Tsudik, 2018) utilizza Circuit ORAM per creare versioni oblivious di strutture dati di alto livello: liste collegate oblivious, mappe oblivious (tabelle hash) e code di priorità oblivious. Queste strutture consentono di eseguire calcoli oblivious su dati dinamici senza rivelare i pattern di accesso. Oblix viene eseguito all'interno di enclave Intel SGX e si rivolge all'intersezione privata di insiemi e alle query private su database.
TaoStore: ORAM asincrono
TaoStore (Sahin, Zhu, Gunter, Borisov, 2016) estende Path ORAM per supportare accessi asincroni ad alta produttività, elaborando più richieste ORAM in parallelo e raggruppando in batch le eviction dei percorsi. Combinando gli accessi allo stesso percorso, TaoStore raggiunge un throughput significativamente superiore (richieste al secondo) rispetto alle costruzioni ORAM sincrone, risultando adatto ai server di archiviazione cloud con molti client simultanei.
Obladi: archiviazione transazionale oblivious
Obladi (Crooks, Park, Alvisi, Iyengar, 2018) costruisce un sistema completo di archiviazione transazionale sopra Path ORAM. Obladi supporta transazioni ACID su un'archiviazione cifrata che nasconde i pattern di accesso. Introduce l'esecuzione differita: le transazioni vengono raggruppate in epoche ed eseguite in modo da nascondere quali record specifici sono stati consultati all'interno di ciascuna epoca. Obladi funziona come proxy attendibile tra i client e un backend di archiviazione cloud non attendibile.
Latenza pratica di ORAM
Per un ORAM da 1 GB (262.144 blocchi da 4 KB) distribuito su AWS, con un client che accede ai blocchi via Internet, la latenza di Path ORAM è di circa 50–200 ms per accesso (dominata dal tempo di andata e ritorno necessario per gli accessi ai bucket log N = 18). Con il recupero parallelo dei bucket, è possibile ridurla. Per le applicazioni SGX locali con ORAM in RAM, la latenza è compresa tra 1 e 10 ms per accesso, un valore accettabile per molte applicazioni di calcolo sicuro.
Sovraccarico di banda nella pratica
Il sovraccarico di banda di ORAM dipende fortemente dai pattern di accesso. Per un ORAM di archiviazione cloud da 1 TB con blocchi da 1 MB, ogni accesso trasferisce circa 25 MB (un sovraccarico di 25x per i 25 livelli log N = 25). Per blocchi piccoli (4 KB), il sovraccarico per accesso è minore in termini di byte assoluti, ma maggiore in termini relativi. Le organizzazioni che implementano ORAM devono prevedere un'amplificazione della banda di 20–50x e assicurarsi che le proprie connessioni di rete e i costi di egress dal cloud ne tengano conto.
ORAM a confronto con l'hardware trusted
Un'alternativa a ORAM per la privacy degli accessi è l'hardware trusted: Intel SGX o AMD SEV forniscono un ambiente di esecuzione affidabile in cui persino il sistema operativo host non può osservare i pattern di calcolo o di accesso alla memoria (con difese appropriate). SGX senza ORAM continua a esporre all'hardware i pattern di accesso a livello di pagina, quindi per una protezione completa è necessario utilizzare ORAM all'interno di SGX. Rispetto al solo ORAM, l'hardware trusted riduce il sovraccarico di banda, ma richiede di fidarsi del produttore dell'hardware e della catena di approvvigionamento.
Quando implementare ORAM
ORAM è appropriato quando: l'avversario osserva i pattern di accesso lato server (provider cloud, co-tenant), la sensibilità dei dati giustifica un sovraccarico di banda di 20–50x e il pattern di accesso stesso potrebbe rivelare informazioni sensibili. Per la maggior parte delle applicazioni, la cifratura standard con un'attenta gestione delle chiavi è sufficiente. ORAM è uno strumento specializzato per scenari ad alta sicurezza: analisi di dati medici, machine learning privato, sistemi di trading finanziario e database delle forze dell'ordine.
Quiz sulla dimensione dei bucket di Circuit ORAM
Quale dimensione dei bucket utilizza Circuit ORAM e perché rappresenta un miglioramento rispetto a Path ORAM?
Riepilogo di Circuit ORAM e delle prestazioni pratiche
Circuit ORAM riduce la dimensione dei bucket a Z=2 (rispetto a Z=5 di Path ORAM), dimezzando la banda mediante un'eviction deterministica dalla profondità verso l'alto. È progettato per essere utilizzato all'interno del calcolo sicuro con circuiti garbled. Il sovraccarico pratico è un'amplificazione della banda pari a 40x per i parametri tipici. I sistemi di produzione includono Oblix (SGX + strutture dati oblivious), TaoStore (ORAM ad alto throughput con elaborazione in batch) e Obladi (ORAM transazionale). ORAM all'interno di SGX è necessario perché SGX da solo espone i pattern di accesso a livello di pagina.
Impara Cryptology Academy con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 67
- Lezioni
- 261
Domande Frequenti
La lezione «Circuit ORAM e prestazioni pratiche» è gratuita?
Sì — il testo completo di «Circuit ORAM e prestazioni pratiche» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.
Cosa imparerò in «Circuit ORAM e prestazioni pratiche»?
Analizzi i miglioramenti di Circuit ORAM e il sovraccarico prestazionale reale delle costruzioni ORAM. Eserciti Cryptology Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Cryptology Academy?
Non è richiesta alcuna esperienza precedente. Cryptology Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Circuit ORAM e prestazioni pratiche»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Cryptology Academy?
Sì. Ogni lezione Cryptology Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- La minaccia della fuga dai pattern di accesso
- Path ORAM: nascondere gli accessi alla memoria
- Circuit ORAM e prestazioni pratiche
- ORAM nello storage cloud e nei processori sicuri