Eseguire un algoritmo sui dati in remoto e assicurarsi che la risposta non sia stata manomessa


8

Sto pensando a questo particolare problema di elaborazione / crittografia / database da anni e voglio solo sapere se ci sono già soluzioni. Ad essere sincero, non so nemmeno a quale campo appartenga esattamente questo problema.

In breve: la persona A ha un elenco di dati, un'altra persona (B) ha un algoritmo che fornisce un punteggio a ciascun elemento di questo elenco e quindi somma tutti questi punteggi per fornire un punteggio complessivo per l'intero elenco. Come possiamo eseguire l'algoritmo nell'elenco dei dati in modo che i dati siano mantenuti estremamente sicuri (preferibilmente mai lasciando la persona A) ma in modo che la persona B possa essere certa che l'algoritmo sia stato eseguito correttamente e non sia stato manomesso.

Ecco un esempio: Anna e Bob vivono in un grande villaggio. Anna ha un elenco sul suo computer di tutte le cose che ha fatto nel villaggio, sia nel bene che nel male. Bob ha creato un algoritmo di punteggio molto semplice per tali elenchi, che viene eseguito su ciascun elemento dell'elenco e gli fornisce un punteggio, quindi aggiunge tutti questi numeri per dare ad Anna un punteggio finale. Questo punteggio fa sapere a Bob quanto Anna sia benefica per la comunità del villaggio ed è specifica per l'opinione di Bobs. (Questo è più di un esempio in quanto questo è in realtà il sistema che voglio fare)

Comunque Anna non vuole dare a Bob la sua lista, dato che ha accesso a informazioni potenzialmente imbarazzanti lì dentro (tutti hanno scheletri nel loro armadio). Bob, tuttavia, non si fida di Anna che esegue i suoi algoritmi da sola, poiché potrebbe solo mentire e dire a Bob che il punteggio era molto alto, quindi Bob ha maggiori probabilità di aiutarla.

Ci sono alcune soluzioni a cui ho già pensato, ma tutte hanno dei problemi:

A. Trova una persona a caso per prendere i dati ed eseguire l'algoritmo e rispedire il punteggio, ma può essere difficile garantire che questa persona a caso non conosca Anna e provare ad aiutarla o fare una copia dei dati e poi provare per rintracciarlo e ricattare Anna.

B. Lascia che Anna esegua l'algoritmo ma in qualche modo codifica un codice di spunta nei punteggi, ad esempio, invece di classificare un evento come 1 valutandolo come 1.0000000000797, in modo che Bob possa successivamente utilizzarlo come un codice di controllo per vedere se il dato il punteggio è corretto. Tuttavia, questo controllo potrebbe anche essere utilizzato in modo improprio da Bob per indicare quali azioni specifiche ha fatto Anna. Inoltre, posso immaginare che un tale sistema sarebbe banale per il reverse engineering in modo che Anna possa dare un punteggio falso con un codice di controllo corretto, considerando che Anna deve avere pieno accesso all'algoritmo di Bob per eseguirlo.

C. Il villaggio crea un server sicuro per prendere tali dati e algoritmi ed eseguirli insieme. Tuttavia, Anna e Bob non si fidano di nessuno abbastanza per farlo e non fare una copia dei dati o modificare i punteggi, a meno che non ci sia un'architettura fondamentalmente sicura per farlo. Inoltre preferirei che questo fosse un sistema P2P.


E se l'algoritmo di calcolo del punteggio di Bob è, ad esempio, la rappresentazione binaria di se Anna ha fatto o non ha fatto tutte le cose nella lista? (Quindi 1 * <ha fatto Anna cosa 1> + 2 * <ha fatto Anna cosa 2> + 4 * <ha fatto Anna cosa 3> ...) Quindi Bob avrà accesso ai dati di Anna solo in base all'output del algoritmo di punteggio.
TLW,

1
Mi chiedo se la crittografia omomorfa abbia qualche gioco qui? Risolve comunque il problema inverso: consente ad altri sistemi di eseguire calcoli sui dati senza apprendere i valori con cui sta lavorando.
Alan Wolfe,

@TLW Non sono del tutto sicuro se capisco cosa stai dicendo ... chi sta eseguendo l'algoritmo in questa situazione e ancora come possiamo essere sicuri che il valore finale non venga intercettato e manomesso?
Robin A

Risposte:


9

Nella comunità crittografica, questa attività è nota come calcolo delegato o delega verificabile. Desideri consentire al server (il "cloud") di fare il lavoro per te, ma vuoi anche che il cloud ti dia una prova del fatto che ha effettivamente eseguito il calcolo (e non ha semplicemente prodotto un output casuale, e è scappato con i tuoi soldi).

Un puntatore, al di sopra della mia testa, è "Delegare il calcolo: prove interattive per i babbani" (Goldwasser, Kalai e Rothblum, J. ACM (62), 2015). Probabilmente esistono altre soluzioni, guarda dentro.


1

Esiste un nuovo campo di crittografia omomorfa che generalmente si adatta alle tue esigenze:

La crittografia omomorfa è una forma di crittografia che consente di eseguire calcoli sul testo cifrato, generando così un risultato crittografato che, quando decodificato, corrisponde al risultato delle operazioni eseguite sul testo in chiaro.

L'entità di elaborazione non può sapere "nulla" sul testo cifrato, appare solo come dati casuali, può solo corrompere il calcolo e il client ha bisogno di un modo per rilevare / difendersi da dati / calcoli corrotti. questo può essere fatto con digest dei messaggi e calcolo a tolleranza d'errore .

La crittografia omomorfa è stata dimostrata come teoricamente possibile solo un po 'di recente, quindi è più nelle fasi concettuali e non sembra essere stata implementata molto nella pratica finora, ma alla fine l'idea è che potrebbe presentarsi come una capacità (ad esempio simile ad altri servizi standard come virtualizzazione) su grandi cluster di calcolo standardizzati, ad esempio Amazon ECC o motore di calcolo di Google .


Questo non risponde alla domanda che è stata posta. La crittografia omomorfa non consente (da sola) a B di verificare che l'algoritmo sia stato eseguito correttamente e che i dati non siano stati manomessi. La crittografia omomorfa garantisce solo riservatezza, non integrità, ma la domanda riguarda l'integrità.
DW

la domanda riguarda "l'esecuzione di un algoritmo sui dati da remoto", che è la ragion d'essere della crittografia omomorfa, e la risposta affronta direttamente questo, insieme alle preoccupazioni extra di manomissione che i messaggi digeriscono e le tecniche di elaborazione tolleranti ai guasti affrontano.
vzn
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.