Bootstrapping Mutual Attestation with Kleene's Second Recursion Theorem
Questo articolo risolve il regresso infinito dell'attestazione reciproca applicando il secondo teorema di ricorsione di Kleene per costruire nodi che possano ricostruire e verificare reciprocamente l'esatto codice sorgente l'uno dell'altro partendo dai soli dati integrati, eliminando così la necessità di terze parti fidate o valori di riferimento esterni attraverso diverse architetture informatiche.
Articolo originale sotto licenza CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta né approvata dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo
Nel mondo dell'informatica sicura, esiste un bisogno fondamentale di dimostrare che un programma per computer sia esattamente ciò che dichiara di essere. Questo processo, noto come attestazione remota, è l'equivalente digitale di una guardia di sicurezza che controlla la patente di guida prima di far entrare qualcuno in un edificio riservato. La guardia confronta la foto e i dettagli sulla patente con un database attendibile di come debba apparire una patente valida. Se i dettagli corrispondono, la persona è autorizzata a entrare. Nel regno digitale, un programma per computer genera un'impronta digitale unica, chiamata misura, che viene confrontata con un valore di riferimento — un'impronta digitale nota ed attesa — detenuta dal verificatore. Questo sistema funziona perfettamente quando una parte controlla un'altra, ma si scontra con un muro logico quando due o più computer devono controllarsi a vicenda simultaneamente. Se il Computer A deve conoscere l'impronta del Computer B per verificarlo, e il Computer B deve conoscere l'impronta del Computer A per verificarlo, nessuno dei due può iniziare il processo senza avere già la risposta. Ciò crea una dipendenza circolare in cui ogni macchina aspetta che l'altra fornisca la prova stessa di cui ha bisogno per iniziare.
I ricercatori di Acompany Co., Ltd. a Nagoya, in Giappone, hanno trovato un modo per rompere questo cerchio senza fare affidamento su un'autorità centrale o su una lista preesistente di codici fidati. Hanno affrontato il problema non come un enigma di sicurezza, ma come una questione di logica e autoreferenzialità. Applicando un principio matematico noto come il secondo teorema della ricorsione di Kleene, hanno dimostrato che un gruppo di computer può essere programmato per contenere il codice sorgente esatto di ogni altro membro all'interno della propria memoria. Ciò consente a ogni macchina di ricostruire il codice dei propri pari da zero, calcolare l'impronta corretta al volo e verificare l'identità dell'altro senza mai dover chiedere una risposta a una parte esterna. Il team ha costruito prototipi funzionanti per dimostrare questo concetto, mostrando che due computer sicuri potevano verificare con successo l'integrità l'uno dell'altro utilizzando solo i dati che portavano con sé.
Il cuore del problema risiede nella natura degli ambienti sicuri moderni, come i Trusted Execution Environments (Ambienti di Esecuzione Fidati), che sono spazi isolati dove i dati sensibili possono essere elaborati senza timore di essere visti o manomessi. In una configurazione tipica, un singolo computer dimostra la propria affidabilità a un server. Il server detiene una lista di impronte di codice approvate e controlla il rapporto del computer rispetto a tale lista. Tuttavia, in una rete decentralizzata in cui più computer devono collaborare su compiti riservati, ogni macchina agisce sia come controllore che come controllato. Se provano a inserire in modo rigido le impronte attese dei loro partner nel proprio software, si imbattono in un loop infinito. Per conoscere l'impronta del Partner B, il Computer A deve conoscere il codice del Partner B. Ma il codice del Partner B contiene l'impronta del Computer A, il che richiede la conoscenza del codice del Computer A, che contiene l'impronta del Partner B, e così via all'infinito. Le soluzioni precedenti a questo dilemma prevedevano l'intervento di una terza parte fidata per distribuire le impronte, o facevano affidamento su specifiche caratteristiche hardware per iniettare i valori all'avvio. Questi metodi funzionano, ma reintroducono un punto centrale di fiducia o legano la soluzione a un tipo specifico di hardware, limitandone l'uso e l'applicazione.
I ricercatori hanno proposto una strada diversa, trattando il gruppo di computer come un unico sistema interconnesso. Si sono resi conto che la dipendenza circolare poteva essere risolta se ogni computer fosse stato in grado di generare il codice dei suoi pari da un insieme condiviso di istruzioni. Utilizzando un concetto dell'informatica che permette a un programma di riferirsi al proprio codice sorgente, hanno progettato un metodo in cui un gruppo di programmi viene trasformato in un insieme di unità autosufficienti. Ogni unità porta con sé una descrizione completa dell'intera famiglia di programmi. Quando un computer si avvia, legge questa descrizione interna, ricostruisce l'esatto codice sorgente del suo partner e poi calcola l'impronta del partner. Poiché la ricostruzione avviene dall'interno, il computer non ha bisogno di fidarsi di un elenco esterno; esso semplicemente calcola la risposta basandosi sui dati che già possiede. Questo approccio elimina la necessità di un'autorità centrale e funziona su diversi tipi di hardware sicuro senza richiedere modifiche agli strumenti di sicurezza sottostanti.
Per provare questa teoria, il team ha creato due dimostrazioni funzionanti. La prima si è concentrata su sistemi che misurano direttamente il codice mentre viene eseguito, come i sistemi Linux standard. Hanno costruito uno strumento chiamato PyReflect, che prende un modello di codice e genera automaticamente i programmi autoreferenziali. Nel loro test, due macchine virtuali supportate da un modulo di sicurezza software hanno scambiato con successo rapporti di verifica. Ogni macchina ha ricostruito il codice dell'altra, ha calcolato l'impronta attesa e ha confermato che il peer stava eseguendo il software corretto. La seconda dimostrazione ha riguardato sistemi che misurano un artefatto di build compilato, come gli AWS Nitro Enclaves, che sono contenitori sicuri specializzati. In questo caso, il processo è più complesso perché il computer deve non solo ricostruire il codice sorgente, ma anche ricostruire esattamente il file eseguibile finale così come era stato creato. Hanno sviluppato uno strumento chiamato NixReflect per gestire questo compito. Nel loro esperimento, due enclave sicure sono state lanciate e ciascuna ha ricostruito indipendentemente l'intera immagine dell'altra partendo dai dati memorizzati nella propria memoria. Hanno poi calcolato l'impronta dell'immagine ricostruita e l'hanno confrontata con quella riportata dal peer. I risultati coincidevano perfettamente, provando che le macchine potevano derivare i valori di riferimento corretti solo dai propri dati interni.
I ricercatori hanno anche misurato il costo di questo approccio. Nel caso delle enclave sicure, il processo di ricostruzione dell'immagine del partner è stato significativamente più lungo del semplice calcolo di un hash del codice. Per il loro caso di test specifico, il processo di ricostruzione e ricostruzione dell'immagine ha richiesto circa 6,8 secondi, mentre un semplice calcolo di hash ha richiesto meno di 0,1 secondi. Questa differenza è destinata a crescere per applicazioni più complesse, poiché il computer deve attraversare l'intera catena di dipendenze per ricostruire il software. Nonostante questo costo temporale, l'esperimento ha confermato che il metodo è fattibile e non richiede alcun nuovo hardware o una terza parte fidata. Il team ha osservato che, per sistemi più complessi, potrebbe essere possibile delegare il processo di ricostruzione a un ambiente di build sicuro prima del deployment, il che ridurrebbe il costo di runtime, sebbene ciò introdurrebbe un diverso set di assunzioni di fiducia riguardo all'ambiente di build stesso.
La portata di questo lavoro risiede nella sua capacità di risolvere un vicolo cieco logico che ha a lungo ostacolato l'informatica sicura completamente decentralizzata. Dimostrando che l'attestazione reciproca può essere raggiunta attraverso la ricostruzione autosufficiente, i ricercatori hanno tracciato una strada per reti peer-to-peer in cui nessun singolo ente è fidato da tutti i partecipanti. La soluzione è indipendente dall'architettura, il che significa che può essere applicata a vari tipi di hardware sicuro senza richiedere modifiche personalizzate all'hardware stesso. Essa si basa sulle proprietà fondamentali del calcolo piuttosto che su specifiche caratteristiche hardware, rendendola uno strumento versatile per il futuro dell'informatica riservata. Sebbene gli attuali prototipi siano dimostrazioni di prova di concetto, essi stabiliscono che il problema del bootstrapping del valore di riferimento può essere risolto senza una terza parte fidata, aprendo la porta a reti sicure più robuste e indipendenti.
Sommerso dagli articoli nel tuo campo?
Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.