In Kapitel 10 von HAC (10.4.2) sehen wir das bekannte Feige-Fiat-Shamir-Identifikationsprotokoll, das auf einem Null-Wissens-Beweis basiert, der die (angenommene) Schwierigkeit nutzt, Quadratwurzeln zu extrahieren, die modulo ein Composite sind, das schwer zu faktorisieren ist. Ich werde das Schema in meinen eigenen Worten wiedergeben (und es hoffentlich richtig machen).
Beginnen wir mit einem einfacheren Schema: Sei eine Blum-Ganzzahl (also n = p q und jedes von p und q ist 3 mod 4) mit einer ausreichend großen Größe, dass Factoring unlösbar ist. Da n eine ganze Zahl von Blum ist, haben die Hälfte der Elemente von Z ∗ n das Jacobi-Symbol +1 und die andere Hälfte -1. Für die + 1-Elemente hat die Hälfte davon Quadratwurzeln, und jedes Element mit einer Quadratwurzel hat vier von ihnen, wobei genau eines selbst ein Quadrat ist.
Nun wählt Peggy ein zufälliges Element aus Z ∗ n aus und setzt v = s 2 . Sie schickt dann v an Victor. Als nächstes folgt das Protokoll: Victor möchte überprüfen, ob Peggy eine Quadratwurzel von v kennt, und Peggy möchte es ihm beweisen, ohne etwas über s preiszugeben, das über die Tatsache hinausgeht, dass sie ein solches s kennt .
- Peggy wählt ein zufälliges in Z ∗ n und schickt r 2 an Victor.
- Victor schickt wahrscheinlich oder b = 1 zurück zu Peggy.
- Peggy sendet zu Victor.
Victor kann überprüfen, ob Peggy die richtige Antwort gesendet hat, indem er das, was er erhält, quadriert und mit dem richtigen Ergebnis vergleicht. Natürlich wiederholen wir diese Interaktion, um die Wahrscheinlichkeit zu verringern, dass Peggy nur eine glückliche Vermutung ist. Dieses Protokoll soll ZK sein; Ein Beweis kann an verschiedenen Stellen gefunden werden (z. B. in Boaz Baraks Vorlesungsnotizen ).
Wenn wir dieses Protokoll erweitern, um es effizienter zu gestalten, wird es Feige-Fiat-Shamir genannt. es ist sehr ähnlich wie oben. Wir beginnen Peggy mit Zufallswerten s 1 ⋯ s k und Zufallszeichen t 1 = ± 1 , ⋯ t k = ± 1. Sie veröffentlicht ihre Quadrate als v 1 = t 1 s 2 1 , ⋯ , v k = t k s 2 k . Mit anderen Worten, wir negieren zufällig einige der v . Jetzt
- Peggy wählt ein zufälliges in Z ∗ n und schickt r 2 an Victor.
- Victor sendet wahrscheinlich Werte b i von { 0 , 1 } zurück an Peggy.
- Peggy schickt an Victor.
Meine Frage: Warum sind die -Zeichenbits erforderlich? In Klammern weist HAC darauf hin, dass dies eine technische Voraussetzung ist, um zu beweisen, dass keine geheimen Informationen weitergegeben werden. Die Wikipedia-Seite für Feige-Fiat-Shamir (was das Protokoll falsch macht) impliziert, dass ohne dies ein bisschen durchgesickert ist.
Ich kann keine Attacke finden, die Peggy etwas entzieht, wenn sie die Zeichen auslässt.