Nachdem ich diese Antwort vor einiger Zeit gelesen hatte, interessierte ich mich für eine vollständig homomorphe Verschlüsselung. Nachdem ich die Einleitung zu Gentrys These gelesen hatte, fragte ich mich, ob sein Verschlüsselungsschema für die unbewusste Codeausführung verwendet werden könnte, wie im dritten Absatz definiert.
In einem vollständig homomorphen Verschlüsselungsschema verschlüsseln wir normalerweise einige Daten und senden sie an eine feindliche Umgebung, in der eine bestimmte Funktion für die Daten berechnet wird, deren Ergebnis dann zurückgesendet (verschlüsselt) wird, ohne dass der Gegner herausfindet, was die empfangenen Daten sind oder Das Ergebnis der Funktion ist.
Mit vergessener Codeausführung meine ich, dass wir einen Teil des Codes verschlüsseln , um ein Problem zu lösen, und ihn an eine feindliche Umgebung senden. Der Gegner möchte , um zu lösen , aber wir möchten nicht, dass er weiß, wie funktioniert. Wenn er eine Eingabe für , kann er verschlüsseln und dann (ein Verschlüsselungsschema auf) mit , was dann die (nicht verschlüsselte) Ausgabe (die Lösung von für die Eingabe ) zurückgibtP C P C I P I C I O P I). Das Verschlüsselungsschema stellt sicher, dass der Gegner nie herausfindet, wie der Code funktioniert, dh für ihn funktioniert er wie ein Orakel.
Die hauptsächliche praktische Verwendung (ich kann mir vorstellen) für ein solches Verschlüsselungsschema wäre, Piraterie schwieriger oder sogar unmöglich zu machen.
Der Grund, warum ich denke, dass dies mit einem vollständig homomorphen Verschlüsselungsschema möglich sein könnte, ist, dass wir beliebige Schaltungen für verschlüsselte Daten ausführen können, insbesondere für eine universelle Turing-Maschine. Wir könnten dann den Code verschlüsseln, als ob es Daten wären, und dann die Schaltung für eine universelle Turing-Maschine für diese verschlüsselten Daten verwenden, um den Code auszuführen.
Ich stelle das hier als Frage, weil ich nicht weiß, ob diese Idee brauchbar ist: Ich bin nie viel weiter gekommen als bis zur Einführung von Gentrys These, und mein Wissen über Kryptographie ist begrenzt. Außerdem weiß ich nicht, ob es bereits einen häufig verwendeten Begriff für die unbeabsichtigte Codeausführung gibt: Ich habe versucht, Google nach der Idee zu durchsuchen, aber nicht den richtigen Begriff gefunden.
Ich kann mir mehrere Probleme vorstellen, die bei diesem Ansatz Probleme verursachen können. Erstens würde das Ergebnis der Berechnung ( ) verschlüsselt , wenn wir eine vollständig homomorphe Verschlüsselung ohne Änderung verwenden . Es wäre daher nutzlos für den Gegner, der Ihren Code verwenden möchte, um zu lösen . Dies könnte zum Beispiel für Cloud Computing noch nützlich sein, aber das ist nicht das, was ich erreichen möchte.P
Zweitens, weil wir Schaltkreise und keine willkürlichen Turing-Maschinen verwenden, können wir keine willkürlichen Speichermengen verwenden: Wir sind auf eine vorbestimmte Speichermenge beschränkt. Das heißt, wenn wir ein Programm auf diese Weise ausführen möchten, ist der Speicherbedarf immer derselbe, nämlich die maximale Speichernutzung.
Schließlich würden die beteiligten Konstanten mit ziemlicher Sicherheit jeden praktischen Einsatz eines solchen Systems zunichte machen, aber ich halte die Idee dennoch für interessant.