Je pense à ce problème informatique / crypto / base de données depuis des années et je veux juste savoir s'il existe déjà des solutions. Pour être honnête, je ne sais même pas à quel domaine ce problème appartient exactement.
En bref: la personne A a une liste de données, une autre personne (B) a un algorithme qui attribue un score à chaque élément de cette liste, puis additionne tous ces scores pour fournir un score global pour toute la liste. Comment pouvons-nous exécuter l'algorithme sur la liste des données afin que les données soient extrêmement sécurisées (de préférence sans jamais quitter la personne A) mais pour que la personne B puisse être certaine que l'algorithme a fonctionné correctement et n'a pas été falsifié.
Voici un exemple: Anna et Bob vivent dans un grand village. Anna a une liste sur son ordinateur de toutes les choses qu'elle a faites dans le village, bonnes et mauvaises. Bob a créé un algorithme de notation très simple pour ces listes, qui s'exécute sur chaque élément de la liste et lui donne un score, puis additionne tous ces chiffres pour donner à Anna un score final. Ce score permet à Bob de savoir à quel point Anna est bénéfique pour la communauté du village et est spécifique à son opinion. (C'est plus qu'un exemple car c'est en fait le système que je veux créer)
Cependant Anna ne veut pas donner à Bob sa liste, car alors il a accès à des informations potentiellement embarrassantes (tout le monde a des squelettes dans son placard). Cependant, Bob ne fait pas confiance à Anna pour exécuter ses algorithmes elle-même, car elle peut simplement mentir et dire à Bob que le score était très élevé afin que Bob soit plus susceptible de l'aider.
Il y a quelques solutions auxquelles j'ai déjà pensé, mais toutes ont des problèmes:
A. Trouver une personne au hasard pour prendre les données et exécuter l'algorithme et renvoyer le score, mais il peut être difficile de s'assurer que cette personne au hasard ne connaît pas Anna et d'essayer de l'aider ou de faire une copie des données et d'essayer plus tard pour le retrouver et faire chanter Anna.
B. Laissez Anna exécuter l'algorithme, mais en quelque sorte coder un code de contrôle dans les scores, par exemple, au lieu de noter un événement comme 1, notez-le comme 1.0000000000797, de telle manière que Bob puisse plus tard l'utiliser comme code de contrôle pour voir si le donné le score est correct. Cependant, cette vérification pourrait également être utilisée à mauvais escient par Bob pour indiquer quelles choses spécifiques Anna a faites. Je peux également imaginer qu'un tel système serait trivial à rétroconcevoir afin qu'Anna puisse donner un faux score avec un code de contrôle correct, étant donné qu'Anna doit avoir un accès complet à l'algorithme de Bob pour l'exécuter.
C. Le village crée un serveur sécurisé pour prendre ces données et algorithmes et les exécuter ensemble. Cependant, Anna et Bob ne font pas suffisamment confiance à quiconque pour le faire et ne font pas de copie des données ni ne modifient les scores, sauf s'il existe une architecture fondamentalement sécurisée pour le faire. Je préférerais également que ce soit un système P2P.