È possibile utilizzare una crittografia completamente omomorfa per l'esecuzione del codice ignaro?


22

Dopo aver letto questa risposta qualche tempo fa, mi sono interessato alla crittografia completamente omomorfa. Dopo aver letto l'introduzione della tesi di Gentry, ho iniziato a chiedermi se il suo schema di crittografia potesse essere utilizzato per l'esecuzione del codice ignaro come definito nel terzo paragrafo.

In uno schema di crittografia completamente omomorfo in genere crittografiamo alcuni dati, li inviamo in un ambiente ostile in cui una determinata funzione viene calcolata sui dati, il cui risultato viene quindi rispedito (crittografato), senza che l'avversario scopra quali sono i dati ricevuti o il risultato della funzione è.

Con l'esecuzione del codice ignaro intendo che crittografiamo un pezzo di codice progettato per risolvere qualche problema P e inviarlo a un ambiente ostile. L'avversario vuole usare C per risolvere P , ma non vogliamo che sappia come funziona C. Se ha un input I per P , può crittografare I e quindi utilizzare (alcuni schemi di crittografia su) C con I , che quindi restituisce l'output (non crittografato) O (la soluzione di P per l'input ICPCPCioPioCioOPio). Lo schema di crittografia fa in modo che l'avversario non scopra mai come funziona il pezzo di codice, cioè per lui funziona come un oracolo.

Il principale uso pratico (mi viene in mente) per un tale schema di crittografia sarebbe quello di rendere la pirateria più difficile o addirittura impossibile.

Il motivo per cui penso che ciò possa essere possibile utilizzando uno schema di crittografia completamente omomorfo è perché possiamo eseguire circuiti arbitrari su dati crittografati, in particolare una macchina di Turing universale. Potremmo quindi crittografare il codice come se fossero dati e quindi utilizzare il circuito per una macchina Turing universale su questi dati crittografati per eseguire il codice.

Pongo questa domanda come una domanda perché non so se questa idea sia utilizzabile: non sono mai andata molto oltre l'introduzione della tesi di Gentry e la mia conoscenza della crittografia è limitata. Inoltre, non so se esiste già un termine spesso usato per l'esecuzione del codice ignaro: ho provato a cercare l'idea su Google ma non sapendo il termine corretto non ho trovato nulla.

Ci sono molti problemi a cui riesco a pensare che possono causare problemi con questo approccio. Innanzitutto, se utilizziamo una crittografia completamente omomorfa senza modifiche, il risultato del calcolo ( ) verrebbe crittografato. Sarebbe quindi inutile per l'avversario che desidera utilizzare il codice per risolvere POP . Anche se questo potrebbe essere utile, diciamo, per il cloud computing, non è quello che voglio ottenere.

In secondo luogo, poiché stiamo usando circuiti e non macchine di Turing arbitrarie, non possiamo usare quantità arbitrarie di memoria: siamo limitati a una quantità predeterminata di memoria. Ciò significa che se vogliamo eseguire un programma in questo modo, la sua impronta di memoria sarà sempre la stessa, vale a dire il suo massimo utilizzo della memoria.

Infine, le costanti coinvolte quasi sicuramente eliminerebbero qualsiasi uso pratico di un tale sistema, ma penso che l'idea sia comunque interessante.


sei sicuro del termine "Esecuzione del codice ignaro"? L'ho cercato per un po 'e non ho ottenuto nulla!
Deyaa,

Niente affatto: ho inventato il termine da solo poiché non conoscevo il termine corretto per esso. Obfuscation e offuscatori sono apparentemente i termini regolari per il concetto.
Alex ten Brink,

Risposte:


17

Sfortunatamente, esiste un risultato che teoricamente proibisce "l'esecuzione del codice ignaro":

Boaz Barak, Oded Goldreich, Russell Impagliazzo, Steven Rudich, Amit Sahai, Salil Vadhan e Ke Yang. Sulla (Im) possibilità di offuscamento programmi , Advances in CRIPTOLOGIA - CRYPTO 2001.

Ecco i link:

L'abstract recita:

Informalmente, un offuscatore è un "compilatore" (efficiente, probabilistico) che accetta come input un programma (o circuito) P e produce un nuovo programma O ( P ) che ha la stessa funzionalità di P ma è "illeggibile" in un certo senso . Gli offuscatori, se esistessero, avrebbero una vasta gamma di applicazioni crittografiche e teoriche della complessità, che vanno dalla protezione del software alla crittografia omomorfa agli analoghi della teoria della complessità del teorema di Rice. La maggior parte di queste applicazioni si basa su un'interpretazione della condizione di "illeggibilità" nell'offuscamento nel senso che O ( P )OPO(P)PO(P)è una "scatola nera virtuale", nel senso che tutto ciò che si può calcolare in modo efficiente dato , si potrebbe anche calcolare in modo efficiente dato l'oracolo accesso a PO(P)P .

FπfFπ(f)fFπ(f) molto meglio di un'ipotesi casuale.

TC 0


Bene, quel tipo di smorza le cose. Ho appena letto come hanno dimostrato i loro risultati: sono rimasto particolarmente sconcertato quando ho letto che si presume che l'offuscatore abbia accesso al codice sorgente del programma contraddittorio! (anche se avrei potuto fraintendere il documento)
Alex ten Brink,

5
Comprendo che questi risultati si applicano solo al "vecchio" (non riuscito) modello di offuscamento che utilizza scatole nere virtuali, e che ora i ricercatori sul campo stanno cercando di adottare una nozione più debole di offuscamento con la speranza che si possano ottenere alcune garanzie. Una delle direzioni della ricerca è l'adozione della crittografia completamente omomorfa, e quindi direi che la domanda è aperta. Ricordo di aver partecipato a un discorso di Microsoft Research di questa estate su offuscatori a virgola fissa e scatole nere virtuali in cui il ricercatore ha fatto esattamente questo punto.
Ross Snider,

3
Potrebbe un ricercatore sul campo (o uno dei nomi impressionanti della lista degli autori) commentare?
Ross Snider,

1
@Ross: Sì, vorrei che anche altri ricercatori del settore commentassero ...
MS Dousti,

@ Ross, Sadeq: alcuni autori visitano il sito di tanto in tanto, speriamo che notino il tag. Avere la domanda sulle pagine delle domande in primo piano potrebbe anche aiutare.
Kaveh,

15

Infatti, mentre la crittografia completamente omomorfa è molto utile per eseguire codice tra più parti non attendibili (vedere ad esempio questo documento ), è necessario un qualche tipo di interazione, quando la parte che calcola l'output crittografato lo invia alla parte che conosce la chiave segreta .

L'idea che stai cercando sembra sospettosamente vicina all'offuscamento del software, per il quale abbiamo dimostrato un risultato di impossibilità menzionato sopra. Ho anche scritto una volta una panoramica informale di quel documento, che alcune persone potrebbero trovare utile.

Dato questo risultato di impossibilità, ci sono due modi (non disgiunti) di cui si può rilassare la definizione: o limitando le classi di programmi / funzioni che è necessario offuscare o dando una nozione più libera di sicurezza.

Il secondo approccio è forse possibile e osserviamo alcune nozioni deboli simili a offuscamento nel nostro documento. Tuttavia, tieni presente che il nostro attacco recupera completamente il codice sorgente originale di alcuni programmi, non importa quanto sia offuscato. Quindi dovresti in qualche modo fare una definizione di sicurezza che banalizza per il caso dei nostri controesempi.

Il primo approccio è stato fatto per tutte le funzionalità limitate (ad esempio, le funzioni punto), ma ancora una volta bisogna assicurarsi che la classe non contenga il nostro controesempio, il che significa approssimativamente che non dovrebbe contenere funzioni pseudocasuali.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.