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.
quelle
Antworten:
In der Krypto-Community wird diese Aufgabe als delegierte Berechnung oder überprüfbare Delegierung bezeichnet. Sie möchten, dass der Server (die "Cloud") die Arbeit für Sie erledigt, aber Sie möchten auch, dass die Cloud Ihnen einen Beweis dafür liefert, dass sie die Berechnung tatsächlich durchgeführt hat (und nicht nur eine zufällige Ausgabe ausgegeben hat und weggelaufen ist) mit deinem Geld).
Ein Hinweis aus meinem Kopf ist "Berechnung delegieren: interaktive Beweise für Muggel" (Goldwasser, Kalai und Rothblum, J. ACM (62), 2015). Andere Lösungen existieren wahrscheinlich, schauen Sie hinein.
quelle
Es gibt ein neues Feld der homomorphen Verschlüsselung , das im Allgemeinen Ihren Anforderungen entspricht:
Die Verarbeitungseinheit kann "nichts" über den Chiffretext wissen, er wird nur als zufällige Daten angezeigt, er kann nur die Berechnung beschädigen und der Client benötigt eine Möglichkeit, beschädigte Daten / Berechnungen zu erkennen / zu verteidigen. Dies kann mit Message Digests und fehlertolerantem Computing erfolgen .
Homomorphe Verschlüsselung wurde erst in jüngster Zeit als theoretisch möglich demonstriert, befindet sich also eher in konzeptionellen Phasen und scheint in der Praxis bisher nicht viel implementiert zu sein, aber schließlich besteht die Idee darin, dass sie sich als eine Fähigkeit herausstellen könnte (z. B. ähnlich wie bei anderen Standarddiensten wie Virtualisierung) auf großen standardisierten Rechenclustern, z. B. Amazon ECC oder Google Compute Engine .
quelle