Ich habe jahrelang über dieses spezielle Computer- / Krypto- / Datenbankproblem nachgedacht und möchte nur wissen, ob es bereits Lösungen dafür gibt. Um ehrlich zu sein, weiß ich nicht einmal genau, zu welchem Bereich dieses Problem gehört.
Kurz gesagt: Person A verfügt über eine Datenliste, eine andere Person (B) über einen Algorithmus, der jedem Element in dieser Liste eine Bewertung gibt und dann alle diese Bewertungen summiert, um eine Gesamtbewertung für die gesamte Liste bereitzustellen. Wie können wir den Algorithmus in der Datenliste ausführen, damit die Daten extrem sicher sind (vorzugsweise niemals Person A verlassen), aber damit Person B sicher sein kann, dass der Algorithmus ordnungsgemäß ausgeführt wurde und nicht manipuliert wurde.
Hier ein Beispiel: Anna und Bob leben in einem großen Dorf. Anna hat auf ihrem Computer eine Liste aller Dinge, die sie im Dorf getan hat, sowohl gute als auch schlechte. Bob hat einen sehr einfachen Bewertungsalgorithmus für solche Listen erstellt, der für jedes Element in der Liste ausgeführt wird, ihm eine Bewertung gibt und dann alle diese Zahlen addiert, um Anna eine endgültige Bewertung zu geben. Diese Punktzahl zeigt Bob, wie nützlich Anna für die Dorfgemeinschaft ist und ist spezifisch für Bobs Meinung. (Dies ist mehr als ein Beispiel, da dies tatsächlich das System ist, das ich erstellen möchte.)
Anna möchte Bob jedoch nicht ihre Liste geben, da er dann Zugriff auf möglicherweise peinliche Informationen hat (jeder hat Skelette in seinem Schrank). Bob vertraut Anna jedoch nicht, dass sie seine Algorithmen selbst ausführt, da sie möglicherweise nur lügt und Bob sagt, dass die Punktzahl sehr hoch war, so dass Bob ihr eher hilft.
Es gibt einige Lösungen, an die ich bereits gedacht habe, aber alle haben Probleme:
A. Suchen Sie eine zufällige Person, um die Daten zu übernehmen, den Algorithmus auszuführen und die Punktzahl zurückzusenden. Es kann jedoch schwierig sein, sicherzustellen, dass diese zufällige Person Anna nicht kennt, und versuchen, ihr zu helfen oder eine Kopie der Daten zu erstellen und es später zu versuchen um es zurückzuverfolgen und Anna zu erpressen.
B. Lassen Sie Anna den Algorithmus ausführen, aber codieren Sie beispielsweise einen Prüfcode in die Bewertungen, anstatt ein Ereignis mit 1 zu bewerten, und bewerten Sie es als 1.0000000000797, sodass Bob dies später als Prüfcode verwenden kann, um festzustellen, ob der angegebene Wert vorliegt Punktzahl ist korrekt. Diese Überprüfung könnte jedoch auch von Bob missbraucht werden, um anzuzeigen, welche spezifischen Dinge Anna getan hat. Ich kann mir auch vorstellen, dass ein solches System für das Reverse Engineering trivial wäre, damit Anna eine falsche Bewertung mit einem korrekten Checkcode abgeben kann, wenn man bedenkt, dass Anna vollen Zugriff auf Bobs Algorithmus haben muss, um es auszuführen.
C. Das Dorf erstellt einen sicheren Server, auf dem solche Daten und Algorithmen zusammen ausgeführt werden können. Anna und Bob vertrauen jedoch niemandem wirklich genug, um dies zu tun, und erstellen keine Kopie der Daten oder ändern die Ergebnisse, es sei denn, es gibt eine grundlegend sichere Architektur dafür. Ich würde es auch vorziehen, wenn dies ein P2P-System wäre.