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.