Fiat Shamir Identifikation und Zero Knowledge Proofs Sinem Kuz

Werbung
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
Herunterladen