Rheinisch-Westfälische Technische Hochschule Aachen Lehrstuhl für Informatik I Prof. Dr. Berthold Vöcking Proseminar Datenstrukturen und Algorithmen im SS 2005 Fiat Shamir Identifikation und Zero Knowledge Proofs Sinem Kuz 1 Vorstellung und Überblick Einleitend in das Thema Zero Knowledge Proofs betrachten wir einen kleinen Ausschnitt aus einer Unterhaltung zwischen den Personen Peggy und Victor. Dabei besitzt Peggy ein vertrauliches Geheimnis, welches sie nicht weitergeben darf. Peggy will das aber unbedingt Victor erzählen. Dies ist eine typische Situation, wo die Zero Knowledge Eigenschaft nützlich wäre. Peggy wird versuchen den Victor davon zu überzeugen, dass sie dieses Geheimnis wirklich kennt, wird das aber nicht schaffen, ohne dabei das Geheimnis preiszugeben. Das Problem hierbei ist, dass Peggy allein durch ihre Überzeugungskraft Victor nicht überzeugen kann, dass sie dieses Geheimnis kennt und muss das Geheimnis verraten.Leider kann sie nicht ahnen, dass Victor dieses Geheimnis veröffentlichen wird.Also suchen wir eine Möglichkeit jemanden davon zu überzeugen, dass man ein Geheimnis kennt, ohne dabei dieses zu verraten. 2 Allgemein über Identifikationsverfahren Das Ziel der Identifikationsverfahren ist es, die Identität einer Person oder Instanz zu belegen. Diese Verfahren werden in vielen Situationen benötigt und auch eingesetzt, beispielsweise um sich einem Geldautomaten gegenüber zweifelsfrei ausweisen zu können. In solchen Verfahren verwendet man gewöhnlich Passwörter oder PINs. Diese Verfahren haben aber auch gewisse Schwächen. Jeder, dem ich mein Passwort oder PIN verrate, kann diese Information benutzen und somit auf meine geheimen Daten zugreifen. Die Identifikationsverfahren mit der Zero-Knowledge Eigenschaft bieten eine Möglichkeit diese Probleme zu vermeiden. 3 Interaktive Beweissysteme Bevor man die Zero Knowledge Beweise definiert, sollte man zunächst die Interaktiven Beweise beschreiben. Allgemein bestehen mathematische Beweise aus einer Agumentationskette, die logisch und lückenlos eine Aussage herleitet. Die Interaktivität an diesen Beweisen besteht darin, dass der Beweis als Dialog zwischen einem Beweisenden und einem Unwissenden dargestellt wird. Also brauchen wir dazu zwei Teilnehmer, nämlich den Prover(den Beweisenden) und den Verifier(den Unwissenden). Diese Beweissysteme bestehen aus zwei Berechnungsschritten, nämlich das Produzieren eines Beweises durch den Prover und das Überprüfen der Richtigkeit von den Verifier. Ein solcher interaktiver Beweis besteht aus folgenden Schritten, wobei meist der Prover beginnt und der Verifier den Ablauf beendet. 1. Eine Nachricht des anderen empfangen 2. Diverse Rechnungen durchführen 3. Eine Nachricht an den anderen senden Diese Schritte werden mehrmals wiederholt, dabei akzeptiert der Verifier nur, wenn der Prover auf alle Fragen der Verifiers richtig antwortet. Desweiteren muss ein interaktiver Beweis zwei wichtige Voraussetzungen erfüllen, nämlich: • Completeness: Wenn der Prover tatsächlich ein Geheimnis kennt, dann wird der Verifier auch immer akzeptieren. • Soundness: Wenn der Prover den Verifier mit hoher Wahrscheinlichkeit davon überzeugen kann, dass er ein Geheimnis kennt, dann besitzt er wirklich das entsprechende Geheimnis. Ein ehrlicher Prover bzw. Verifier führt alle Aktionen so durch wie es das Protokoll erlaubt. Ein betrügerischer Prover kennt kein Geheimnis versucht aber dennoch den Verifier davon zu überzeugen. Dagegen nennt man einen Verifier betrügerisch , wenn er nicht so handelt wie es das Protokoll vorsieht, zum Beispiel, wenn er durch Fragen versucht das Geheimnis des Provers ausfindig zu machen. Die Teilnehmer können deswegen nur bei ihren internen Berechnungen betrügen, sonst fällt dies sofort auf und die Kommunikation wird abgebrochen. 4 Zero Knowledge Proofs In einem interaktiven Beweis mit der Zero Knowledge Eigenschaft wird dem Verifier keine Information über das Geheimnis übermittelt, er wird aber dennoch von der Existenz des Gehemnisses überzeugt. Dieses geschieht nur dann, wenn der Prover in jedem Durchlauf auf alle Fragen des Verifiers richtige Antworten liefern kann. Von jetzt an betrachten wir den Prover und den Verifier als in Polynomzeit laufende Algorithmen. Rechnungen, die durch den Prover und den Verifier geführt werden, sind probabilistisch. Das bedeutet, dass zufällige Entscheidungen getroffen werden können. Etwas formaler kann man die Zero-Knowledge Eigenschaft auch so definieren: Ein Interaktives Beweissystem besitzt die Zero Knowledge Eigenschaft, wenn es einer am Protokoll nicht beteiligten Instanz, einem Simulator S gelingt, eine Kopie der Sicht auf das Protokoll zu erstellen, wie es der Verifier mitbekommt, ohne dabei mit dem Prover zu kommunizieren. Diese Kopie darf sich von der orginalen Unterhaltung zwischen dem Prover und dem Verifier nicht unterscheiden. Informal bedeutet das, dass der Verifier nichts vom Prover lernt, was er nicht auch alleine lernen könnte. Mit anderen Worten ist der Verifier in der Lage das Protokoll so zu simulieren, als ob der Prover sich mitbeteiligen würde. Diese Sachverhalte halten wir in folgenden zwei Definitionen fest: 1.DEFINITION (Transkript): Sei v die gemeinsame Eingabe an ein interaktives Beweissystem (P ; V ∗ ). Mit V ∗ bezeichnen wir alle Verifier, also ehrlich oder nicht. In jedem Schritt wird eine Nachricht gesendet. Wir nehmen an, dass ein Ablauf n Schritte umfasst. Desweiteren nehmen wir an, dass die erste Nachricht durch den Prover geschickt wird. mi bezeichnet dann die Nachricht, die im iten Schritt gesendet wird. Die Nachrichten m1 ; m3 ; .... werden vom Prover zum Verifier geschickt und die Nachrichten m2 ; m4 ; ... vom Verifier zum Prover. Das Transkript der gemeinsamen Berechnung von P und V ∗ wird durch trP,V ∗ (v):= (m1 ; .....; mn ) definiert. Wobei trP,V ∗ (v) ein akzeptierendes Transkript ist, wenn V ∗ nach der letzten Nachricht akzeptiert. Das Transkript hängt nur von den Zufallszahlen ab, die von den Algorithmen P und V ∗ während ihrer Berechnungen benutzt werden, nicht jedoch von der Eingabe v. 2.DEFINITION (Zero-Knowledge Eigenschaft): Ein interaktives Beweissystem (P ; V ) ist (perfekt) zero-knowledge, wenn es einen in Polynomzeit laufenden probabilistischen Simulator S(V ∗ ; v) gibt, der für jeden Verifier V ∗ bei Eingabe v ein akzeptierendes Transkript t von P und V ∗ ausgibt, so dass diese simulierten Transkripte die gleiche Wahrscheinlichkeitsverteilung besitzen, als ob sie von einer echten Kommunikation zwischen P und V ∗ stammten. Natürlich kann ein Simulator den Verifier nicht davon überzeugen, dass er das Geheimnis besitzt, denn sonst wäre das System nicht sound. Der Unterschied zwischen dem Prover und dem Simulator ist, dass der Simulator mehrere Versuche hat, um ein akzeptierendes Transkript zu erzeugen. 5 Zero Knowledge Protokolle 1. Simplified-Fiat-Shamir Identifikationsverfahren: Das von Fiat und Shamir im Jahre 1987 vorgestellte Verfahren besitzt die Zero-Knowledge Eigenschaft. Dieses Verfahren wird mit zwei Teilnehmern, genannt Peggy für Prover und Victor für Verifier, durchgeführt. Der Algorithmus wird beispielsweise auf Dekoderkarten für Bezahlfernsehsysteme eingesetzt. Die Idee beruht darauf, dass es praktisch unmöglich zu sein scheint, Quadratwurzeln in Zn∗ effizient zu berechnen. Es lässt sich zeigen, dass dieses Problem genauso schwer zu lösen ist, wie das Problem, die Primfaktoren einer Zahl n zu finden. Das Verfahren besteht aus zwei Phasen: (a) Schlüsselerzeugung: Um Victor von ihrer Identität zu überzeugen, wählt Peggy zwei große, verschiedene Primzahlen p und q und berechnet daraus das Produkt n = p · q und veröffentlicht n. Dann denkt sie sich eine geheime Zahl x ∈ N und berechnet v = x2 mod n. Die Zahl v wird von Peggy bekannt gegeben, aber die Zahl x bleibt ihr Geheimnis. (b) Anwendungsphase:Nachdem Peggy sich die geheime Zahl x ausgesucht hat, beginnt die Anwendungsphase des Verfahrens. Hier will Peggy Victor davon überzeugen, dass sie x kennt, ohne x selbst bekanntzugeben. • Peggy wählt zunächst eine Zahl r < n, quadriert diese modulo n und schickt das Ergebnis a = r2 mod n an Victor. • Victor sucht sich zufällig eine Zahl e ∈ {0, 1} aus und schickt sie an Peggy. • Peggy berechnet dann y := r · xe mod n und schickt y an Victor. • Victor überprüft, ob Peggy die zu seiner Zahl e gewählte Antwort berechnen kann. Er akzeptiert nur wenn y 2 mod n = a · v e mod n gilt. Die Betrugswahrscheinlichkeit bei der vereinfachten Version von Fiat-Shamir Verfahren beträgt 1/2, da eine Betrügerin nie beide Antworten, also für e = 0 und e = 1, kennen kann. Wenn Victor nämlich e = 0 wählt, dann will er y12 = a wissen, wenn er sich aber für e = 1 entscheidet, dann will er y22 = a · v sehen. Wenn Peggy beide Antworten kennt, dann kennt sie auch die Wurzel von v, also die geheime Zahl x, da: x = y2 /y1 (1) Die Wahrscheinlickeit 1/2 kann eine Betrügerin erzwingen: Wenn sie vermutet, dass e = 0 gesendet wird, so wählt sie a = r2 mod n, y = r. Wenn sie vermutet, dass e = 1 von Victor gesendet wird, so wählt sie a = r2 v −1 mod n und y = r, denn dann ist y 2 mod n = a · v mod n. Um nachzuweisen, dass das Simplified-Fiat-Shamir Verfahren die ZeroKnowledge Eigenschaft besitzt, geben wir einen Simulator S an, der für alle Verifier V ∗ - also ehrlich oder nicht- akzeptierende Transkripte erzeugt. In dem Algotrithmus für S werden folgende Schritte durchgeführt. • Zunächst rät S ein e e ∈ {0, 1} und wählt zufällig ein r ∈ Zn∗ und e berechnet a := r2 · v −e mod n und sendet a an den Verifier. • Der Victor wählt dann zufällig ein e ∈ {0, 1} und sendet dem Simulator seine Wahl. • Wenn e = e e dann ist y = r und (a, e, y) wird ausgegeben, sonst wird der Algorithmus abgebrochen. e • Wenn e = e e dann akzeptiert Victor, da y 2 = r2 = a · ve = a · ve . Der Simulator versucht Victors Wunsch zu erraten, dies gelingt ihm mit einer Wahrscheinlichkeit von 1/2, da S nur zwei Möglichkeiten für die Wahl von e e hat. Die Erwartung ist nun, dass S bei jedem zweiten Versuch ein akzeptierendes Transkript zurückliefert. Dieses Transkript kann man nicht von einem echten Transkript, das von (P ; V ∗ ) produziert wurde, unterscheiden. Das Protokoll ist zero-knowledge. 2. Fiat-Shamir Identifikationsverfahren: In der vereinfachten Version von Fiat-Shamir Identifikationsverfahren beträgt die Betrugswahrscheinlichkeit 1/2. Um diese Wahrscheinlichkeit zu reduzieren wird bei dem eigentlichen Verfahren eine Reihe von geheimen Zahlen gewählt, die dann als Vektor dargestellt sind. In der ersten Phase des Verfahrens veröffentlicht Peggy das modulo n und den Vektor v := (x21 , ...., x2t ). Im Prinzip werden dabei mehrere Simplified-FiatShamir Verfahren einfach parallel durchgeführt. Die Anwendungsphase sieht wie folgt aus: • Peggy wählt ein r mod n und setzt a = r2 mod n und sendet a an Victor. • Victor wählt zufällig e := (e1 , ..., et ) ∈ {0, 1}t und schickt e an Peggy. • Peggy berechnet dann y = r Qt i=1 xei i mod n und sendet y an Victor. • Victor akzeptiert nur wenn y 2 mod n = a Qt i=1 viei mod n. References [SAL96] Salomaa: P ublic − Key Cryptography. Springer Verlag 1996. [DK02] Delfs, Knebl: Introduction to Cryptography. Springer Verlag 2002. [UB04] Vorlesung Algorithmische Kryptographie. Walter Unger, Dirk Bongartz. Lehrstuhl für Informatik I. www − i1.informatik.rwth − aachen.de/Lehre/VAK0405/Folien/handout − nachrichten.pdf