Diplomarbeit zu "`Zero-Knowledge Arguments"' - Telle-Online.de
Diplomarbeit zu "`Zero-Knowledge Arguments"' - Telle-Online.de
Diplomarbeit zu "`Zero-Knowledge Arguments"' - Telle-Online.de
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Zero-<strong>Knowledge</strong> Arguments<br />
<strong>Diplomarbeit</strong> von<br />
Thomas Schwarze<br />
angefertigt bei<br />
Prof. Dr. Rutger Verbeek<br />
Fachbereich Informatik<br />
Theoretische Informatik II<br />
FernUniversität -Gesamthochschule- Hagen<br />
7. September 2003
Zero–<strong>Knowledge</strong> Proofs sind ein wesentlicher Bestandteil <strong>de</strong>r mo<strong>de</strong>rnen Kryptographie.<br />
Zur Verringerung kryptographischer Annahmen und Vorausset<strong>zu</strong>ngen wer<strong>de</strong>n Zero–<br />
<strong>Knowledge</strong> Arguments in <strong>de</strong>r Praxis immer stärker erforscht und eingesetzt. Die Sicherheit<br />
<strong>de</strong>r Zero–<strong>Knowledge</strong> Arguments ist dabei nur für die Nichtexistenz unendlich<br />
schneller Maschinen gewährleistet. Für die Zero–<strong>Knowledge</strong> Proofs existieren bereits einige<br />
<strong>de</strong>utschsprachige Arbeiten. Im Bereich <strong>de</strong>r Zero–<strong>Knowledge</strong> Arguments fehlen diese<br />
jedoch bislang, so dass Interessierte <strong>de</strong>r Einstieg in dieses Thema erschwert wird. Diese<br />
Lücke soll mit <strong>de</strong>r vorliegen<strong>de</strong>n <strong>Diplomarbeit</strong> geschlossen wer<strong>de</strong>n.
Inhaltsverzeichnis<br />
Inhaltsverzeichnis<br />
1 Einleitung 1<br />
1.1 Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1<br />
1.2 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1<br />
1.3 Aufbau <strong>de</strong>r Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2<br />
1.4 Überblick <strong>de</strong>r verwen<strong>de</strong>ten Themen <strong>de</strong>r Kryptographie . . . . . . . . . . 2<br />
1.5 Literaturhinweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4<br />
2 Definitionen 6<br />
2.1 Grundlegen<strong>de</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />
2.2 <strong>Knowledge</strong> und Zero–<strong>Knowledge</strong> . . . . . . . . . . . . . . . . . . . . . . . 7<br />
2.3 Interaktive Beweissysteme . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />
2.3.1 Probabilistische Turing Maschine . . . . . . . . . . . . . . . . . . 8<br />
2.3.2 Interaktive Turing Maschine . . . . . . . . . . . . . . . . . . . . . 9<br />
2.3.3 Interaktive Systeme . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />
2.3.4 Interaktives Beweissystem . . . . . . . . . . . . . . . . . . . . . . 10<br />
2.3.5 Interaktives Beweissystem mit Zusatzeingabe . . . . . . . . . . . . 12<br />
2.4 Unterscheidbarkeit <strong>de</strong>r Wahrscheinlichkeitsverteilung . . . . . . . . . . . 13<br />
2.4.1 Pseudo Zufallsgeneratoren . . . . . . . . . . . . . . . . . . . . . . 14<br />
2.5 Bit–Commitment–Scheme . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />
2.6 Schaltkreise (engl. Circuits) . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />
2.7 Einweg–Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />
2.8 Zahlentheorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23<br />
2.8.1 Integer modulo n . . . . . . . . . . . . . . . . . . . . . . . . . . . 23<br />
2.8.2 Multiplikative Gruppe ∗ n . . . . . . . . . . . . . . . . . . . . . . 24<br />
2.8.3 Quadratischer Rest . . . . . . . . . . . . . . . . . . . . . . . . . . 26<br />
2.8.4 Blum-Zahl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26<br />
2.8.5 Diskreter Logarithmus . . . . . . . . . . . . . . . . . . . . . . . . 27<br />
2.8.6 Binärer Körper – Galois-Feld GF (2) . . . . . . . . . . . . . . . . 28<br />
I
Inhaltsverzeichnis<br />
3 Zero–<strong>Knowledge</strong> Proof 30<br />
3.1 Definition <strong>de</strong>s Zero–<strong>Knowledge</strong> Proofs . . . . . . . . . . . . . . . . . . . 30<br />
3.2 Perfekt Zero–<strong>Knowledge</strong> versus Berechenbar Zero–<strong>Knowledge</strong> . . . . . . . 31<br />
3.3 Komplexität <strong>de</strong>s Zero–<strong>Knowledge</strong> Proofs . . . . . . . . . . . . . . . . . . 31<br />
3.4 Arthur–Merlin Beweissysteme . . . . . . . . . . . . . . . . . . . . . . . . 33<br />
3.5 Witness indistinguishing - Witness hiding . . . . . . . . . . . . . . . . . . 33<br />
3.6 Statistisch Korrekt versus Berechenbar Korrekt . . . . . . . . . . . . . . 34<br />
4 Zero–<strong>Knowledge</strong> Arguments 36<br />
5 Perfekte Zero–<strong>Knowledge</strong> Arguments mit polynomieller Run<strong>de</strong>nzahl 41<br />
5.1 Hintergrund . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />
5.2 Mo<strong>de</strong>ll und Definitionen . . . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />
5.3 Perfekt–sicheres simulierbares Bit–Commitment . . . . . . . . . . . . . . 44<br />
5.4 Beweis <strong>de</strong>r Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45<br />
6 Perfekte Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl 53<br />
6.1 Grobkonzept <strong>de</strong>s Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . 54<br />
6.2 Zahlentheoretische Vorausset<strong>zu</strong>ngen . . . . . . . . . . . . . . . . . . . . . 54<br />
6.3 Täuschungsmöglichkeit <strong>de</strong>s Provers . . . . . . . . . . . . . . . . . . . . . 55<br />
6.4 Commitment Zertifizierung . . . . . . . . . . . . . . . . . . . . . . . . . . 56<br />
6.5 Vorbemerkungen <strong>zu</strong>m Protokoll . . . . . . . . . . . . . . . . . . . . . . . 57<br />
6.6 Kurzbeschreibung <strong>de</strong>s Basis–Protokolls und Definitionen . . . . . . . . . 58<br />
6.7 Perfektes Zero–<strong>Knowledge</strong> Argument in konstanter Run<strong>de</strong>nzahl . . . . . 61<br />
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl 72<br />
7.1 Übersicht über das Grobkonzept . . . . . . . . . . . . . . . . . . . . . . . 73<br />
7.2 Definitionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74<br />
7.2.1 Black-Box Simulation . . . . . . . . . . . . . . . . . . . . . . . . . 74<br />
7.2.2 Statistisch ein<strong>de</strong>utiges Bit–Commitment–Scheme . . . . . . . . . 75<br />
7.2.3 Zero–<strong>Knowledge</strong> Argument of <strong>Knowledge</strong> . . . . . . . . . . . . . . 76<br />
7.2.4 Uniforme und Nicht-uniforme Wi<strong>de</strong>rsacher . . . . . . . . . . . . . 77<br />
II
Inhaltsverzeichnis<br />
7.2.5 Universelles Argument . . . . . . . . . . . . . . . . . . . . . . . . 78<br />
7.3 Zero–<strong>Knowledge</strong> Argument für uniforme Verifier . . . . . . . . . . . . . . 80<br />
7.3.1 FLS Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81<br />
7.3.2 Ein uniformes Generator Protokoll . . . . . . . . . . . . . . . . . 84<br />
7.4 Zero–<strong>Knowledge</strong> Argument für nicht-uniforme Verifier . . . . . . . . . . . 88<br />
7.4.1 FLS’ Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88<br />
7.4.2 Ein nicht-uniformes Generator Protokoll . . . . . . . . . . . . . . 93<br />
7.5 Beschränkt simultan Zero–<strong>Knowledge</strong> . . . . . . . . . . . . . . . . . . . . 96<br />
7.5.1 Beschränkt simultan Zero–<strong>Knowledge</strong> Argument . . . . . . . . . . 98<br />
8 Zusammenfassung und weiterführen<strong>de</strong> Themen 105<br />
Literatur A<br />
In<strong>de</strong>x H<br />
III
1 Einleitung<br />
1.1 Überblick<br />
1 Einleitung<br />
Interaktive Beweissysteme, bei <strong>de</strong>m eine Partei Alice einer an<strong>de</strong>ren Partei Bob etwas<br />
beweist (z.B. dass sie Kenntnis von <strong>de</strong>r Knotenfärbung eines 3-färbbaren Graphen hat<br />
o<strong>de</strong>r allgemeiner die Zugehörigkeit eines Wertes x <strong>zu</strong> einer Sprache L), sind seit längerer<br />
Zeit in <strong>de</strong>r theoretischen Informatik bekannt. So veröffentlichte Babai 1985 in [Bab85]<br />
ein heute noch als Grundlage verwen<strong>de</strong>tes System, welches als Arthur–Merlin Game mit<br />
Merlin als beweisen<strong>de</strong> und Artur als überprüfen<strong>de</strong> Patei bekannt wur<strong>de</strong>.<br />
Ebenfalls 1985 wur<strong>de</strong> von Goldwasser, Micali und Rackow in [GMR85] ein interaktives<br />
Beweissystem vorgestellt, bei <strong>de</strong>m die überprüfen<strong>de</strong> Partei keine Informationen<br />
über die Tatsache <strong>de</strong>s Beweises hinaus erhält. Diese Systeme wur<strong>de</strong>n nach einer weiteren<br />
formalen Definition von Goldreich, Micali und Wig<strong>de</strong>rson 1986 in [GMW86] Zero–<strong>Knowledge</strong><br />
Proofs genannt und hatten in <strong>de</strong>r Folgezeit einen bis heute ungebremsten Anstieg<br />
<strong>de</strong>r Forschungen <strong>zu</strong>r Folge. Die mo<strong>de</strong>rne, computergestützte Kryptographie hat davon<br />
erheblich profitiert.<br />
Die vorliegen<strong>de</strong> <strong>Diplomarbeit</strong> beschäftigt sich mit einem Teilgebiet <strong>de</strong>r Zero–<strong>Knowledge</strong><br />
Proofs, <strong>de</strong>n Zero–<strong>Knowledge</strong> Arguments. Dabei han<strong>de</strong>lt es sich um eine leichte<br />
Abschwächung <strong>de</strong>r Sicherheit, die sich in <strong>de</strong>r praktischen Anwendung jedoch nicht als<br />
Sicherheitslücke auswirkt. Da interaktive Beweissysteme mittels Kommunikation min<strong>de</strong>stens<br />
zweier Teilnehmer durchgeführt wer<strong>de</strong>n, besteht <strong>de</strong>r Ansatz <strong>de</strong>r Zero–<strong>Knowledge</strong><br />
Arguments darin, die notwendige Komplexität <strong>de</strong>s Kommunikationsprotokolls soweit wie<br />
möglich <strong>zu</strong> verringern, ohne <strong>de</strong>r Sicherheit eines <strong>de</strong>r beteiligten Teilnehmer <strong>zu</strong> scha<strong>de</strong>n.<br />
Beim Zero–<strong>Knowledge</strong> Argument wird die Sicherheit <strong>de</strong>r überprüfen<strong>de</strong>n Partei darüber,<br />
dass die beweisen<strong>de</strong> Partei nicht unbemerkt lügen o<strong>de</strong>r täuschen kann, auf die Dauer <strong>de</strong>r<br />
Kommunikation beschränkt. Gäbe es unendlich schnelle Computer als Beweiser, dann<br />
wäre die Sicherheit nicht mehr gewährleistet, was in <strong>de</strong>r praktischen Anwendung nicht<br />
vorkommt.<br />
1.2 Motivation<br />
Da es eine fast schon unüberschaubare Anzahl von Veröffentlichungen über Zero–<strong>Knowledge</strong><br />
Arguments sowie entsprechen<strong>de</strong> Konstruktionen und Entwürfe gibt, musste eine<br />
Grenze gefun<strong>de</strong>n wer<strong>de</strong>n, welche Verfahren vorgestellt und in welcher Tiefe diese erläutert<br />
wer<strong>de</strong>n.<br />
Die Entscheidung fiel <strong>zu</strong> Gunsten eines sehr <strong>de</strong>taillierten, tiefgehen<strong>de</strong>n Einstiegs,<br />
um ein paar ausgewählte Vertreter vorstellen und <strong>de</strong>ren Technik exakt beschreiben <strong>zu</strong><br />
können. Dieses Vorgehen ging <strong>zu</strong> Lasten eines generellen Überblicks über eine Vielzahl<br />
1
1 Einleitung<br />
von Protokollen. Die Motivation dafür entstand aus <strong>de</strong>m Wunsch, anhand ausgesuchter<br />
Beispiele die Technik <strong>de</strong>r Konstruktion von Zero–<strong>Knowledge</strong> Arguments sowie die damit<br />
verbun<strong>de</strong>nen Probleme und Lösungsansätze vor<strong>zu</strong>stellen. Mit diesem Wissen ist es<br />
leichter, an<strong>de</strong>re Veröffentlichungen <strong>zu</strong> fin<strong>de</strong>n, <strong>zu</strong> verstehen und <strong>zu</strong> verarbeiten. Mit einer<br />
bloß überblickhaften Vorstellung ” aller“ Verfahren wäre die Vermittlung <strong>de</strong>s tieferen<br />
Verständnisses nicht möglich gewesen.<br />
Die wissenschaftliche Literatur <strong>zu</strong> diesem Thema wird fast ausschließlich in englischer<br />
Sprache veröffentlicht. Zum besseren Verständnis beim Einstieg in die Problematik <strong>de</strong>r<br />
Zero–<strong>Knowledge</strong> Arguments wer<strong>de</strong>n in <strong>de</strong>r vorliegen<strong>de</strong>n <strong>Diplomarbeit</strong> soweit vorhan<strong>de</strong>n<br />
<strong>de</strong>utsche Begriffe gewählt, die <strong>de</strong>n Sinn <strong>de</strong>r Fachausdrücke wie<strong>de</strong>rgeben. Wie in weiten<br />
Bereichen <strong>de</strong>r Informationstechnik existieren aber in einigen Fällen keine einprägsamen<br />
<strong>de</strong>utschen Entsprechungen, weshalb in diesen speziellen Fällen <strong>de</strong>r weltweit übliche englische<br />
Fachausdruck verwen<strong>de</strong>t wird. Ich hoffe, dass ich dabei die akzeptable Balance<br />
zwischen Verständlichkeit und Notwendigkeit im Umgang mit <strong>de</strong>n Begriffen getroffen<br />
habe. Die jeweilige Entscheidung ist dabei subjektiv ausgefallen. Im Interesse eines ” vernünftigen“<br />
Leseflusses wur<strong>de</strong> aber versucht, sinnentsprechen<strong>de</strong> <strong>de</strong>utsche Begriffe <strong>zu</strong> verwen<strong>de</strong>n,<br />
wenn dieses möglich war bzw. sogar geboten erschien, wenn angloamerikanische<br />
Begriffe Verwendung fan<strong>de</strong>n, <strong>de</strong>ren tieferer Sinn sich erst nach eingehen<strong>de</strong>r Kenntnis <strong>de</strong>r<br />
Fachsprache eröffnet.<br />
1.3 Aufbau <strong>de</strong>r Arbeit<br />
Nach dieser Einleitung, die mit ein paar über <strong>de</strong>n Inhalt dieser Arbeit hinausgehen<strong>de</strong>n<br />
Literaturhinweisen en<strong>de</strong>t, erfolgen in Abschnitt 2 die Beschreibungen und Definitionen<br />
<strong>de</strong>r verwen<strong>de</strong>ten Grundlagen. Dabei wur<strong>de</strong> <strong>de</strong>r Rahmen absichtlich etwas weiter gesteckt<br />
und unter an<strong>de</strong>rem durch einige mathematischen Grundlagen <strong>de</strong>r Zahlentheorie ergänzt,<br />
um so <strong>zu</strong>m besseren Verständnis <strong>de</strong>r späteren Algorithmen bei<strong>zu</strong>tragen.<br />
In Abschnitt 3 erfolgt <strong>de</strong>r Einstieg in die Zero–<strong>Knowledge</strong> Beweissysteme, in<strong>de</strong>m<br />
dort die Zero–<strong>Knowledge</strong> Proofs beschrieben wer<strong>de</strong>n. Da<strong>zu</strong> wer<strong>de</strong>n ausgesuchte Beson<strong>de</strong>rheiten<br />
dieser Systeme vorgestellt, <strong>de</strong>ren Kenntnis und Verständis im weiteren Verlauf<br />
notwendig ist.<br />
In <strong>de</strong>n daran anschließen<strong>de</strong>n Abschnitten 4 bis 7 wer<strong>de</strong>n die eigentlichen Zero–<br />
<strong>Knowledge</strong> Arguments entwickelt, wobei sich im Abschnitt 4 die grundlegen<strong>de</strong> Beschreibung<br />
<strong>de</strong>r Zero–<strong>Knowledge</strong> Arguments im Unterschied <strong>zu</strong> <strong>de</strong>n Zero–<strong>Knowledge</strong><br />
Proofs befin<strong>de</strong>t. In <strong>de</strong>n Abschnitten 5, 6 und 7 wer<strong>de</strong>n konkrete interaktive Systeme<br />
und <strong>de</strong>ren Protokolle, Algorithmen und Beweise vorgestellt.<br />
2
1 Einleitung<br />
1.4 Überblick <strong>de</strong>r verwen<strong>de</strong>ten Themen <strong>de</strong>r Kryptographie<br />
Hier soll ein kurzer Überblick über einige Arbeiten gegeben wer<strong>de</strong>n, die historisch gesehen<br />
von einiger Be<strong>de</strong>utung sind, soweit die veröffentlichten Techniken in dieser Arbeit<br />
Verwendung fin<strong>de</strong>n. Es han<strong>de</strong>lt sich dabei um keine abschließen<strong>de</strong> Aufzählung aller Forschungsarbeiten.<br />
Zero–<strong>Knowledge</strong> Proof. Diese Systeme wur<strong>de</strong>n 1985 erstmals von Goldwasser, Micali<br />
und Rackoff in [GMR85] veröffentlicht. Goldreich, Micali und Widgerson zeigten in<br />
[GMW86], dass <strong>de</strong>rartige Beweissysteme für je<strong>de</strong> Sprache in N P einen Zero–<strong>Knowledge</strong><br />
Proof liefern können. Die ersten Protokolle, welche einen Zero–<strong>Knowledge</strong> Proof in konstanter<br />
Run<strong>de</strong>nzahl durchführten, wur<strong>de</strong>n von Feige und Shamir in [FS90b], Brassard,<br />
Crépeau und Yund in [BCY89] und von Goldreich und Kahn in [GK96a] vorgestellt.<br />
Black-Box Simulator. Die bisherigen Arbeiten verwen<strong>de</strong>ten <strong>zu</strong>m Beweis <strong>de</strong>r Zero–<br />
<strong>Knowledge</strong> Eigenschaft einen sogenannten Black-Box Simulator, was erstamls von Goldreich<br />
und Krawczyk [GK96b] bemängelt wur<strong>de</strong>. Das erste Protokoll, welches keinen<br />
Black-Box Simulator verwen<strong>de</strong>te, war die Arbeit von Hada und Tanaka in [HT98]. Einen<br />
an<strong>de</strong>ren Weg mit praktikablen Annahmen schlug Barak in [Bar03] ein, um ein Verfahren<br />
mit einem nicht Black-Box Simulator <strong>zu</strong> erzeugen.<br />
Bit–Commitment–Scheme Um bei theoriebasierten Überlegungen nicht von <strong>de</strong>r Existenz<br />
konkreter z.B. algebraischer Verfahren abhängig <strong>zu</strong> sein, wird eine Abstraktion<br />
existieren<strong>de</strong>r o<strong>de</strong>r vermuteter Verfahren vorgenommen. Aufbauend auf Arbeiten u.a.<br />
von Blum [Blu81], Chaum [Cha87] aber auch [GMR85, GMW86] entwickelten Brassard,<br />
Chaum und Crépeau [BCC88] <strong>de</strong>n Begriff <strong>de</strong>s Bit–Commitments. Formal <strong>de</strong>finiert und<br />
beschrieben wur<strong>de</strong>n Bit–Commitment–Schemes unter an<strong>de</strong>rem von Meyer in [Mey92],<br />
Naor in [Nao91] und Goldreich in [Gol01]. Darüber hinaus gibt es immer wie<strong>de</strong>r Veröffentlichungen<br />
neuer Ansätze <strong>zu</strong> Bit–Commitment–Schemes, die gera<strong>de</strong> für <strong>de</strong>n Einsatz in<br />
Zero–<strong>Knowledge</strong> Systemen von Interesse sind, so z.B. von Halevi und Micali in [HM96].<br />
Witness Indistinguishing. Die Technik <strong>de</strong>r Zeugnis–ununterscheidbarkeit (engl. witness<br />
indistinguishing und witness hiding) wur<strong>de</strong> von Feige und Shamir in [FS90a] vorgestellt.<br />
Sie ermöglicht eine neue, eventuell schwächere aber in vielen Anwendungsfällen<br />
ausreichen<strong>de</strong> Formen <strong>de</strong>s Zero–<strong>Knowledge</strong> Proofs <strong>zu</strong> konstruieren.<br />
Zero–<strong>Knowledge</strong> Proof of <strong>Knowledge</strong>. Das Grundkonzept dieser interaktiven Beweissysteme<br />
stammt aus [GMR85] und wur<strong>de</strong> von Feige, Fiat und Shamir in [FFS87]<br />
sowie von Tompa und Woll in [TW87] formal <strong>de</strong>finiert. Von Bellare und Goldreich wur<strong>de</strong>n<br />
in [BG92] einige Lücken dieser Definitionen geschlossen.<br />
3
1 Einleitung<br />
Zero–<strong>Knowledge</strong> Argument In <strong>de</strong>r Literatur auch als Computationally Sound (CS)<br />
Proof bezeichnet. Zero–<strong>Knowledge</strong> Arguments wur<strong>de</strong>n von Brassard, Chaum und Crépeau<br />
in [BCC88] vorgestellt, wobei ein perfektes Zero–<strong>Knowledge</strong> Verfahren mit Hilfe<br />
<strong>de</strong>s Faktorisierungsproblems entwickelt wur<strong>de</strong>. Naor, Ostrovsky, Venkatesan und Yung<br />
zeigten in [NOVY92] einen perfekten Zero–<strong>Knowledge</strong> Algorithmus, <strong>de</strong>r nur noch auf<br />
<strong>de</strong>r Existenz beliebiger Einweg–Permutationen beruht.<br />
1.5 Literaturhinweise<br />
Als grundsätzlicher Einstieg in die Thematik <strong>de</strong>r mo<strong>de</strong>rnen Kryptographie unter Berücksichtigung<br />
<strong>de</strong>r interaktiven Beweissysteme wer<strong>de</strong>n hier einige Bücher, Artikel und<br />
sonstige Veröffentlichungen vorgestellt. Mit Ausnahme eines Artikels befassen sich alle<br />
hier genannten Werke nicht nur mit <strong>de</strong>m Spezialgebiet <strong>de</strong>r Zero–<strong>Knowledge</strong> Arguments,<br />
son<strong>de</strong>rn sind als Einstieg, Nachschlagewerke o<strong>de</strong>r hilfreiche Literatur <strong>zu</strong> verstehen, um<br />
die Zero–<strong>Knowledge</strong> Arguments im Gesamtkontext <strong>de</strong>r mo<strong>de</strong>rnen Kryptographie und<br />
theoretischen Informatik <strong>zu</strong> verstehen bzw. die notwendigen Grundlagen dafür erarbeiten<br />
<strong>zu</strong> können.<br />
• Bellare und Goldwasser [BG01b]: Ein sehr umfassen<strong>de</strong>s Vorlesungsskript über die<br />
Kryptographie.<br />
• Goldreich [Gol99]: Erstes Buch von Goldreich über die mo<strong>de</strong>rne Kryptographie.<br />
• Goldreich [Gol01]: Standardwerk von Goldreich über Grundlagen <strong>de</strong>r mo<strong>de</strong>rnen<br />
Kryptographie. Es ist eines <strong>de</strong>r am meisten zitierten Werke und von <strong>de</strong>r Wissenschaft<br />
als das Grundlagenwerk überhaupt auf diesem Gebiet an<strong>zu</strong>sehen.<br />
• Goldreich [Gol02]: Sehr interessante Abhandlung über das gesamte Gebiet <strong>de</strong>r Zero–<strong>Knowledge</strong><br />
Systeme als Rückschau über die Forschungsergebnisse <strong>de</strong>r letzten<br />
20 Jahre.<br />
• Mattern [Mat01]: Teil einer <strong>de</strong>utschsprachigen Vorlesung über Sicherheit in verteilten<br />
Systemen. Anschaulicher und leicht verständlicher Überblick über die Problematik.<br />
• Menezes, van Oorschot und Vanstone [MvV01]: Sehr verständliches Buch über die<br />
angewandte Kryptographie. Zu Beginn wer<strong>de</strong>n sogar die mathematischen Grundlagen<br />
erklärt, so dass dieses Buch als Nachschlagewerk sehr empfehlenswert ist.<br />
• A. Pfitzmann [Pfi00]: Sehr umfangreiches, <strong>de</strong>utschsprachiges Vorlesungsmaterial<br />
<strong>zu</strong>r Kryptographie und Datensicherheit.<br />
4
1 Einleitung<br />
• B. Pfitzmann [Pfi98]: Umfangreiche, <strong>de</strong>utschsprachige Folien <strong>zu</strong>r Vorlesung über<br />
Sicherheit in praktischer Informatik mit <strong>de</strong>m Schwerpunkt kryptographischer Systeme.<br />
• B. Pfitzmann [Pfi99]: Ein weiteres, englischsprachiges Vorlesungsskript über ” Higher<br />
cryptographic protocols“.<br />
• Quisquater, Guillou und Berson [QGB90]: ” How to explain zero-knowledge protocols<br />
to your children“ ist eine nette nicht-digitale und nicht-formale Geschichte<br />
über das Prinzip <strong>de</strong>s Zero–<strong>Knowledge</strong> Proofs und <strong>de</strong>ssen Nachweis.<br />
• Stammnitz [Sta02]: Kurzer, <strong>de</strong>utschsprachiger Überblick über einige mathematische<br />
Grundlagen, die in Verschlüsselungsverfahren Anwendung fin<strong>de</strong>n.<br />
5
2 Definitionen<br />
2.1 Grundlegen<strong>de</strong>s<br />
2 Definitionen<br />
Für die Diskussion <strong>de</strong>r Zero–<strong>Knowledge</strong> Arguments wer<strong>de</strong>n in diesem Kapitel die grundlegen<strong>de</strong>n<br />
Definitionen und Vereinbarungen dargelegt.<br />
Diese Arbeit beschäftigt sich mit Beweissystemen, in <strong>de</strong>nen von einer Partei eine<br />
Behauptung aufgestellt wird, z.B. dass sie im Besitz eines Wortes w aus <strong>de</strong>r Sprache<br />
L ist, die von einer an<strong>de</strong>ren Partei akzeptiert o<strong>de</strong>r als falsch erkannt wird. Die Partei,<br />
die die Behauptung aufstellt und <strong>de</strong>n Beweis antritt, wird im Nachfolgen<strong>de</strong>n Prover<br />
(P) genannt. Die Partei, <strong>de</strong>r die Behauptung bewiesen wird bzw. diese Behauptung<br />
prüft, wird als Verifier (V ) bezeichnet. Häufig wird in <strong>de</strong>r Literatur <strong>de</strong>r Prover auch<br />
A wie Alice und <strong>de</strong>r Verifier B wie Bob genannt. Bei <strong>de</strong>r Untersuchung einer Maschine<br />
wird diese oftmals mit allen an<strong>de</strong>ren, eventuell täuschen<strong>de</strong>n bzw. von <strong>de</strong>m vorgegebenen<br />
Protkoll abweichen<strong>de</strong>n Maschinen verglichen. Diese wer<strong>de</strong>n in <strong>de</strong>r Diskussion mit einem<br />
∗ versehen, bei Untersuchung von P entsprechend P ∗ . 1<br />
Die Anzahl <strong>de</strong>r Eingaben einer Maschine A wird wie folgt beschrieben. Bezeichne |x|<br />
die Länge <strong>de</strong>s Eingabewertes x und tA : → , tA(|x|) die Anzahl <strong>de</strong>r Schritte <strong>de</strong>r<br />
Maschine A, dann heißt A polynomiell beschränkt in Be<strong>zu</strong>g auf die Länge <strong>de</strong>r Eingabe<br />
x o<strong>de</strong>r einfach nur polynomiell, wenn es ein Polynom pA(|x|) gibt, so dass für je<strong>de</strong>s x<br />
aus <strong>de</strong>m Definitionsbereich von A gilt: tA(|x|) ≤ pA(|x|). Existiert kein entsprechen<strong>de</strong>s<br />
Polynom, dann heißt A polynomiell nicht beschränkt o<strong>de</strong>r einfach nicht-polynomiell.<br />
Wahrscheinlichkeit<br />
Im weiteren Verlauf spielt die <strong>zu</strong>fällige Wahl eines Wertes eine beson<strong>de</strong>re Rolle, ohne<br />
dass hier das Problem diskutiert wird, wie von einer Maschine ein echter Zufall erzeugt<br />
bzw. genutzt wer<strong>de</strong>n kann. Diesbezüglich wird auf die Literatur z.B. von H˚astad, Impagliazzo,<br />
Levin und Luby [HILL95], Goldreich [Gol99], Babai [Bab85] o<strong>de</strong>r Naor [Nao91]<br />
verwiesen.<br />
Sei S eine Wahrscheinlichkeitsverteilung, dann wird mit x ∈R S ein <strong>zu</strong>fällig gewähltes<br />
Element aus S bezeichnet, so dass x gleichverteilt über <strong>de</strong>r Menge S ist.<br />
Für <strong>de</strong>n Wahrscheinlichkeitsraum S bezeichnet<br />
Pr[p(x) : x ∈R S]<br />
die Wahrscheinlichkeit, dass das Prädikat p(x) wahr ist bei <strong>de</strong>r Zuordnung von x ∈R S.<br />
Ist die Zuordnung <strong>de</strong>r Variablen x aus <strong>de</strong>m Zusammenhang ersichtlich, wird manchmal<br />
nur Pr[p(x)] geschrieben.<br />
1 In <strong>de</strong>r Literatur wer<strong>de</strong>n diese Maschinen auch häufig mit P o<strong>de</strong>r auch P bezeichnet.<br />
6
Relation und Zeugnis<br />
2 Definitionen<br />
Sei R ⊆ {0, 1} ∗ × {0, 1} ∗ eine binäre Relation, dann ist L(R) <strong>de</strong>f<br />
= {x | ∃y; (x, y) ∈<br />
R}. Wenn x ∈ L(R) gilt und y eine Zeichenkette mit <strong>de</strong>r Eigenschaft (x, y) ∈ R ist,<br />
dann heißt y ein Zeugnis für x ∈ L(R). Die Menge <strong>de</strong>r Zeugnisse für x wird mit R(x)<br />
bezeichnet, d.h. R(x) = {y | (x, y) ∈ R}. Bezeichne T : → eine beliebige Funktion.<br />
Für eine Sprache L gilt L ∈ Ntime(T (n)), wenn eine Relation R mit L = L(R) sowie<br />
eine Turing Maschine M existieren, so dass M bei Eingabe von (x, y) höchstens T (|x|)<br />
Schritte durchläuft und eine ” 1“ ausgibt, wenn (x, y) ∈ R gilt, und ” 0“ sonst.<br />
2.2 <strong>Knowledge</strong> und Zero–<strong>Knowledge</strong><br />
Eine erste Frage im Zusammenhang mit Zero–<strong>Knowledge</strong> Arguments betrifft die Be<strong>de</strong>utung<br />
und <strong>de</strong>n Umfang <strong>de</strong>s Begriffs <strong>Knowledge</strong>. Seit <strong>de</strong>r Veröffentlichung von Goldwasser,<br />
Micali und Rackoff [GMR85] sowie darauf aufbauend von Goldreich, Micali und Widgerson<br />
[GMW86] wird mit diesem Begriff ein dynamischer Prozess in Beweisverfahren<br />
verbun<strong>de</strong>n, <strong>de</strong>r nur die Kommunikation zwischen Teilnehmern, hier Prover und Verifier<br />
genannt, betrifft. Im Gegensatz da<strong>zu</strong> stehen statische Beweisverfahren z.B. in mathematischen<br />
Beweisen, die für sich alleine Gültigkeit haben.<br />
Mit ” <strong>Knowledge</strong>“ wer<strong>de</strong>n hier nur solche Kommunikationsinhalte in <strong>de</strong>n <strong>zu</strong> betrachten<strong>de</strong>n<br />
Beweisen bezeichnet, die seitens <strong>de</strong>s Provers über die Korrektheit <strong>de</strong>r behaupteten<br />
Tatsache hinaus Informationen offenbaren.<br />
Der Begriff ” Zero–<strong>Knowledge</strong>“ ist dabei die (relative) Sicherheit dafür, dass ein Verifier<br />
mit keinem (berechenbaren) Verfahren und mit keiner Täuschungshandlung weitere<br />
Informationen über die Behauptung hinaus erlangen kann. Einschränkend sind mit diesen<br />
Informationen jedoch nur solche gemeint, die von <strong>de</strong>m Verifier nicht selbst gewonnen<br />
bzw. berechnet wer<strong>de</strong>n können, für ihn also fremd und (fast) unmöglich allein <strong>zu</strong> erlangen<br />
sind. Die I<strong>de</strong>e, die hinter <strong>de</strong>r Definition von Zero–<strong>Knowledge</strong> liegt, besteht darin,<br />
dass alles, was <strong>de</strong>r Verifier aus einer Kommunikation lernen kann, auch dadurch erlangt<br />
wer<strong>de</strong>n kann, dass <strong>de</strong>r Verifier lediglich seine Eingabe betrachtet.<br />
Ein Beispiel aus [Gol01] soll dieses <strong>de</strong>utlich machen. Wenn Alice behauptet, sie wisse,<br />
was die Summe aus ” 1+1“ ist, könnte sich Bob dieses durch einen später noch <strong>zu</strong> klären<strong>de</strong>n<br />
Zero–<strong>Knowledge</strong> Beweis beweisen lassen. Aber selbst, wenn Alice Bob das Ergebnis<br />
direkt mitteilte, gewönne er keine neuen Informationen, da die übermittelte Information<br />
von Bob sehr einfach in polynomieller Zeit selbst ermittelt wer<strong>de</strong>n könnte. Somit sind in<br />
diesem Zusammenhang nur solche Informationen mit <strong>de</strong>m Begriff ” <strong>Knowledge</strong>“ verbun<strong>de</strong>n,<br />
die entwe<strong>de</strong>r überhaupt nicht berechenbar o<strong>de</strong>r <strong>zu</strong>min<strong>de</strong>st durch <strong>de</strong>n Teilnehmer<br />
Bob nicht berechenbar sind.<br />
Ein Teilbereich <strong>de</strong>r Forschung befasst sich mit <strong>de</strong>n Aspekten <strong>de</strong>r nichtinteraktiven<br />
Beweissystemen. Auf diese wird in dieser Arbeit jedoch nicht eingegangen. Daraus folgt<br />
7
2 Definitionen<br />
eine weitere Notwendigkeit, dass mit Zero–<strong>Knowledge</strong> Verfahren nur solche gemeint sind,<br />
bei <strong>de</strong>nen <strong>de</strong>r Verifier <strong>de</strong>m Prover min<strong>de</strong>stens eine Information übergeben muss, auf die<br />
o<strong>de</strong>r mit <strong>de</strong>r <strong>de</strong>r Prover reagieren muss.<br />
2.3 Interaktive Beweissysteme<br />
Die Zero–<strong>Knowledge</strong> Systeme bauen auf <strong>de</strong>n in [GMR85] begrün<strong>de</strong>ten interaktiven Beweissystemen<br />
auf. Diese bestehen aus zwei probabilistischen Turing Maschinen, die <strong>zu</strong><br />
interaktiven Turing Maschinen erweitert wer<strong>de</strong>n und <strong>zu</strong>sammen ein interaktives System<br />
ergeben.<br />
Nachfolgend wer<strong>de</strong>n diese aus <strong>de</strong>n bekannten Turing Maschinen abgeleiteten Maschinen<br />
<strong>de</strong>finiert. Dabei wird auf eine informationstheoretisch formale Darstellung <strong>de</strong>r<br />
Turing Maschinen als 4- o<strong>de</strong>r 5-Tupel mit Angabe <strong>de</strong>s Bandalphabets Σ, <strong>de</strong>r Konfigurationen<br />
usw. verzichtet. Für diese formale Beschreibung <strong>de</strong>r Zero–<strong>Knowledge</strong> Proof<br />
Theorie wird z.B. auf die Arbeiten von Wellner [Wel90] o<strong>de</strong>r Meyer [Mey92] verwiesen.<br />
2.3.1 Probabilistische Turing Maschine<br />
Die weitere Darstellung baut auf <strong>de</strong>m Mo<strong>de</strong>ll <strong>de</strong>r Turing Maschine, auch <strong>de</strong>terministische<br />
Turing Maschine genannt, auf.<br />
Definition 2.1 (Probabilistische Turing Maschine)<br />
Eine probabilistische Turing Maschine ist eine Turing Maschine mit einem <strong>zu</strong>sätzlichen<br />
Nur-Leseband, genannt das Zufallsband, welches o.B.d.A. links beschränkt und nach<br />
rechts unendlich ist sowie eine unendliche Folge von <strong>zu</strong>fälligen Bits σ ∈ {0, 1} enthält.<br />
Nach je<strong>de</strong>m Lese<strong>zu</strong>griff wird <strong>de</strong>r Lesekopf <strong>de</strong>r Turing Maschine um eine Stelle nach rechts<br />
bewegt. Es ist das einzige Zufallsband <strong>de</strong>r Turing Maschine.<br />
Der einem Lese<strong>zu</strong>griff auf das Zufallsband folgen<strong>de</strong> Zustand ist abhängig davon, ob<br />
eine 0 o<strong>de</strong>r eine 1 gelesen wur<strong>de</strong>. Der Eintritt eines Folge<strong>zu</strong>stands nach einem Lese<strong>zu</strong>griff<br />
auf das Zufallsband aus einem Paar von Zustän<strong>de</strong>n tritt mit <strong>de</strong>r Wahrscheinlichkeit von<br />
genau 1 ein. Somit ist nicht mehr ein<strong>de</strong>utig genau ein Folge<strong>zu</strong>stand <strong>de</strong>finiert, so dass auch<br />
2<br />
die Ausgabe bzw. <strong>de</strong>r Halte<strong>zu</strong>stand <strong>de</strong>r gesamten probabilistischen Turing Maschine bei<br />
Eingabe eines Wertes x nicht mehr ein<strong>de</strong>utig bestimmt ist.<br />
Das Zufallsband kann dadurch ersetzt wer<strong>de</strong>n, dass die probabilistische Turing Maschine<br />
bei <strong>de</strong>n Zustän<strong>de</strong>n, die einem Zugriff auf das Zufallsband entsprechen, <strong>zu</strong>fällig<br />
ein σ ∈R {0, 1} wählt. Der ” Zugriff auf das Zufallsband“ wird auch Münzwurf und die<br />
Maschine Münzwurf Maschine genannt.<br />
Sei A die probabilistische Turing Maschine und x ∈ {0, 1} ∗ die Eingabe. Dann wird<br />
mit<br />
Pr[A(x)]<br />
8
2 Definitionen<br />
die Ausgabe <strong>de</strong>r probabilistischen Turing Maschine als Wahrscheinlichkeitsverteilung<br />
über alle x in Abhängigkeit <strong>de</strong>r Münzwürfe angegeben.<br />
2.3.2 Interaktive Turing Maschine<br />
Die bisher aufgeführten probabilistischen Turing Maschinen wer<strong>de</strong>n um zwei weitere<br />
Bän<strong>de</strong>r <strong>zu</strong>r interaktiven probabilistischen Turing Maschine erweitert. Bei<strong>de</strong> Bän<strong>de</strong>r sind<br />
jeweils einseitig unendlich, wobei das Sen<strong>de</strong>band beschreibbar aber nicht löschbar und<br />
das Empfangsband nur lesbar ist. Die Bän<strong>de</strong>r sind o.b.d.A. links beschränkt. Auf <strong>de</strong>m<br />
Empfangsband darf nur dann eine Rechtsbewegung erfolgen, wenn rechts min<strong>de</strong>stens ein<br />
Zeichen vorhan<strong>de</strong>n ist. Auf <strong>de</strong>m Sen<strong>de</strong>band darf nur ein leeres Feld beschrieben wer<strong>de</strong>n.<br />
2.3.3 Interaktive Systeme<br />
Zwei interaktive probabilistische Turing Maschinen A und B wer<strong>de</strong>n <strong>zu</strong> einem gemeinsamen<br />
System <strong>zu</strong>sammengeschlossen, so dass das Sen<strong>de</strong>band <strong>de</strong>r einen das Empfangsband<br />
<strong>de</strong>r an<strong>de</strong>ren Maschine ist und vice versa.<br />
Zur Bezeichnung <strong>de</strong>r Kommunikation bzw. Interaktion zwischen <strong>de</strong>n bei<strong>de</strong>n Maschinen<br />
wur<strong>de</strong> in <strong>de</strong>r Literatur <strong>de</strong>r Begriff Run<strong>de</strong> (engl. round) und Zug (engl. move)<br />
eingeführt. In dieser Arbeit wird mit einem Zug eine vollständige und abgeschlossene<br />
Interaktion bzw. Nachricht zwischen Prover und Verifier bezeichnet. Eine Run<strong>de</strong> beschreibt<br />
zwei aufeinan<strong>de</strong>rfolgen<strong>de</strong> Züge also eine von A nach B und die darauffolgen<strong>de</strong><br />
Antwort von B nach A. 2<br />
Definition 2.2 (Interaktives System)<br />
Zwei interaktive Turing Maschinen A und B ergeben <strong>zu</strong>sammen ein interaktives System<br />
(A, B) wenn<br />
1. A und B das selbe Eingabeband teilen und<br />
2. A’s Sen<strong>de</strong>band das Empfangsband von B ist und umgekehrt.<br />
B startet die Kommunikation. Hält eine <strong>de</strong>r bei<strong>de</strong>n Maschinen A o<strong>de</strong>r B, dann hält das<br />
interaktive System (A, B). Sei ai <strong>de</strong>r i-te String, <strong>de</strong>n A auf sein Sen<strong>de</strong>band geschrieben hat<br />
und entsprechend bi von B. Dann ist <strong>de</strong>r Text <strong>de</strong>r Kommunikation nach n Run<strong>de</strong>n von<br />
(A, B) die Folge {b1, a1, . . . , bn, an}, wobei an leer ist, wenn B als erstes <strong>de</strong>n Halte<strong>zu</strong>stand<br />
erreicht hat.<br />
2 In <strong>de</strong>r Literatur besteht keine Einigung über die Begriffe Run<strong>de</strong> und Zug, so dass die Gefahr einer<br />
Verwechselung besteht. Während einerseits in Arbeiten zwei Züge eine Run<strong>de</strong> beschreiben, wie in<br />
<strong>de</strong>r vorliegen<strong>de</strong>n Ausarbeitung, bezeichnen an<strong>de</strong>re Autoren mit Run<strong>de</strong> nur eine Interaktion, also<br />
einen Zug.<br />
9
2 Definitionen<br />
Analog <strong>de</strong>r probabilistischen Turing Maschine ist die Wahrscheinlichkeit je<strong>de</strong>r Berechnung,<br />
die von (A, B) bei Eingabe von x ausgeführt wird, abhängig von <strong>de</strong>n Münzwürfen,<br />
die von <strong>de</strong>n Maschinen A und B durchgeführt wer<strong>de</strong>n.<br />
2.3.4 Interaktives Beweissystem<br />
Von Goldwasser, Micali und Rackoff wur<strong>de</strong> in [GMR85] gezeigt, dass mit interaktiven Systemen<br />
Sprachen bewiesen wer<strong>de</strong>n können, so dass interaktive Beweissysteme entstehen.<br />
In diesen interaktiven Beweissystemen übernimmt A die Rolle <strong>de</strong>r beweisen<strong>de</strong>n Partei<br />
und wird daher mit Prover P bezeichnet. B kommt die Rolle <strong>de</strong>r <strong>zu</strong> überzeugen<strong>de</strong>n<br />
Partei, <strong>de</strong>m Prüfer, <strong>zu</strong> und wird Verifier V genannt.<br />
Definition 2.3 (Interaktives Beweissystem)<br />
Sei L ⊆ {0, 1} ∗ eine Sprache, P und V interaktive probabilistische Turing Maschinen,<br />
wobei V polynomiell–beschränkt ist, und sei (P, V) ein interaktives System, welches beim<br />
Akzeptieren einer Eingabe eine ” 1“ auf die Ausgabe schreibt. Dann ist (P, V) ein interaktives<br />
Beweissystem für eine Sprache L, wenn gilt:<br />
• Vollständigkeitsbedingung (engl. completeness):<br />
∀k ∈ , ∃N ∈ : ∀x ∈ L, |x| ≥ N : Pr[(P, V)(x) = 1] ≥ 1 − 1<br />
|x| k<br />
• Korrektheits- o<strong>de</strong>r Ein<strong>de</strong>utigkeitsbedingung (engl. soundness):<br />
Für je<strong>de</strong> (möglicherweise täuschen<strong>de</strong>) interaktive probabilistische Turing Maschine<br />
P ∗ gilt<br />
∀P ∗ : ∀k ∈ , ∃N ∈ : ∀x /∈ L, |x| ≥ N : Pr[(P ∗ , V)(x) = 1] < 1<br />
|x| k<br />
Die erste Bedingung besagt somit, dass <strong>de</strong>r Nachweis für x ∈ L mit einer beliebig<br />
kleinen Fehlerwahrscheinlichkeit erbracht wer<strong>de</strong>n kann. Die zweite Bedingung sagt aus,<br />
dass es fast unmöglich ist, x ∈ L <strong>zu</strong> beweisen, wenn x /∈ L gilt.<br />
Anmerkung: Während im Regelfall die Vollständigkeitsbedingung relativ einfach<br />
nachweisbar ist, muss die Korrektheitsbedingung beson<strong>de</strong>res sorgfältig geprüft wer<strong>de</strong>n.<br />
Daher wur<strong>de</strong>n von Micali und Reyzin Arbeiten veröffentlicht, die interaktive Beweissysteme<br />
nach <strong>de</strong>m Grad <strong>de</strong>r Korrektheit unterteilen. Einzelheiten da<strong>zu</strong> können in<br />
[MR01b, Rey01] nachgelesen wer<strong>de</strong>n.<br />
Definition 2.4 (Klasse IP)<br />
Sei (P, V) ein interaktives Beweissystem gemäß Definition 2.3, wobei V polynomiell zeitbeschränkt<br />
ist. Die Klasse IP (engl. Interactiv Proof) enthält alle Sprachen L, für die<br />
ein interaktives Beweissystem (P, V) existiert.<br />
10
2 Definitionen<br />
Definition 2.5 (Klasse BPP)<br />
Eine Sprache L wird von einer probabilistischen polynomiell–beschränkten Turing Maschine<br />
M akzeptiert, wenn gilt:<br />
• ∀x ∈ L : Pr[M(x) = 1] ≥ 2<br />
3<br />
• ∀x /∈ L : Pr[M(x) = 0] ≥ 2<br />
3<br />
Die Klasse BPP (engl. Boun<strong>de</strong>d-Probability Polynomial-time) enthält alle Sprachen<br />
L, die durch eine probabilistische polynomiell–beschränkte Turing Maschine erkannt<br />
wer<strong>de</strong>n kann.<br />
Die Wahl von 2 ist dabei willkürlich. Es muss lediglich sichergestellt wer<strong>de</strong>n, dass die<br />
3<br />
Wahrscheinlichkeit <strong>de</strong>r Akzeptanz <strong>de</strong>utlich größer als 1 ist. Somit erfüllt je<strong>de</strong> Konstante<br />
2<br />
die Klassen<strong>de</strong>finition.<br />
größer 1<br />
2<br />
o<strong>de</strong>r auch Funktion mit einer Funktionswert größer 1<br />
2<br />
Anmerkung: In [GMR85] wur<strong>de</strong> erstmalig gezeigt, dass je<strong>de</strong> Sprache L ∈ N P ein<br />
interaktives Beweissystem hat, somit also N P ⊆ IP gilt. Weiterhin kann in [Gol99] und<br />
[Gol01] nachgelesen wer<strong>de</strong>n, dass N P ∪ BPP ⊆ IP gilt, wobei nicht bekannt ist, ob<br />
BPP ⊆ N P gilt. Bekannt ist jedoch, dass je<strong>de</strong> Sprache L ∈ PSPACE ein interaktives<br />
Beweissystem hat, so dass IP = PSPACE gilt.<br />
Die Komplexität von interaktiven Systemen wird sowohl für <strong>de</strong>n Zeit- als auch für<br />
<strong>de</strong>n Run<strong>de</strong>naufwand wie folgt angegeben.<br />
Definition 2.6 (Zeitaufwand, Mächtigkeit <strong>de</strong>s Provers)<br />
Sei T : → eine Funktion, P eine interaktive probabilistische Turing Maschine. Mit<br />
IPT wird die Menge <strong>de</strong>r Sprachen L aus IP bezeichnet, in <strong>de</strong>r für beliebige interaktive<br />
probabilistische Turing Maschinen V ∗ <strong>de</strong>r Prover in <strong>de</strong>m interaktiven Beweissystem<br />
(P, V ∗ ) für je<strong>de</strong> Eingabe x ∈ L in T (|x|) Schritten hält.<br />
Definition 2.7 (Run<strong>de</strong>naufwand)<br />
Sei f : → eine Funktion, (P, V) ein interaktives Beweissystem L eine Sprache und<br />
x ∈ L eine beliebige Eingabe. Dann wird mit IP[f] die Menge <strong>de</strong>r Sprachen aus IP<br />
bezeichnet, für <strong>de</strong>ren Beweis die Maschinen P und V höchstens f(|x|) Run<strong>de</strong>n benötigen.<br />
Für die weitere Diskussion wird noch eine Möglichkeit benötigt, das Empfangs- und<br />
Zufallsband 3 einer einzelnen Maschine in einem interaktiven Beweissystem formal <strong>zu</strong><br />
beschreiben. Da<strong>zu</strong> wird das für eine Maschine sichtbare Protokoll wie folgt <strong>de</strong>finiert.<br />
Definition 2.8 (viewA(·))<br />
Sei (A, B) ein interaktives Beweissystem. Dann bezeichnet viewA(A(·), B(·)) o<strong>de</strong>r kurz<br />
viewB A (·) eine Zufallsvariable, die <strong>de</strong>n Inhalt <strong>de</strong>s Empfangsban<strong>de</strong>s von A und <strong>de</strong>s von A<br />
benutzten Teil <strong>de</strong>s Zufallban<strong>de</strong>s <strong>de</strong>r Kommunikation mit B enthält. Entsprechend gilt<br />
viewB(·) für die Sicht <strong>de</strong>r Maschine B.<br />
3 Dabei wer<strong>de</strong>n nur die Münzwürfe <strong>de</strong>s Zufallsban<strong>de</strong>s erfasst, die von <strong>de</strong>r Maschine verarbeitet wur<strong>de</strong>n.<br />
11
2 Definitionen<br />
Neben <strong>de</strong>r Angabe <strong>de</strong>s für die Maschine A sichtbaren Protokolls <strong>de</strong>r Kommunikation<br />
wird die Ausgabe von A wie folgt <strong>de</strong>finiert.<br />
Definition 2.9 (outA(·))<br />
Sei (A, B) ein interaktives Beweissystem. Dann bezeichnet outA(A(·), B(·)) o<strong>de</strong>r kurz<br />
outB A (·) eine Zufallsvariable, die die Ausgabe von A am En<strong>de</strong> <strong>de</strong>r Kommunikation enthält<br />
(rsp. outB(·) für die Maschine B).<br />
Zur Beschreibung <strong>de</strong>s Kommunikationsprotokolls zwischen <strong>de</strong>n bei<strong>de</strong>n Turing Maschinen<br />
eines interaktiven Beweissystems dient nachfolgen<strong>de</strong> Definition.<br />
Definition 2.10 (transcript(AB)(·))<br />
Sei (A, B) ein interaktives Beweissystem. Dann bezeichnet transcript(A(·), B(·)) o<strong>de</strong>r<br />
auch transcript(AB)(·) alle Nachrichten, die zwischen A und B ausgetauscht wur<strong>de</strong>n.<br />
Daneben existiert <strong>zu</strong>r Beschreibung einer Turing Maschine noch folgen<strong>de</strong> Definition.<br />
Definition 2.11 (<strong>de</strong>sc(M))<br />
Sei M eine Turing Maschine. Dann bezeichnet <strong>de</strong>sc(M) die Beschreibung (engl. <strong>de</strong>scription)<br />
von M.<br />
2.3.5 Interaktives Beweissystem mit Zusatzeingabe<br />
Eine Erweiterung stellen interaktive Beweissysteme dar, die <strong>zu</strong>sätzlich <strong>zu</strong> <strong>de</strong>r gemeinsamen<br />
Eingabe x jeweils ein Geheimnis sP und sV als Eingabe erhalten. Von Chaum,<br />
Evertse und von <strong>de</strong> Graaf wur<strong>de</strong> in [CEv88] ein interaktives Beweissystem vorgestellt,<br />
bei <strong>de</strong>m sowohl P als auch V polynomiell–beschränkte Münzwurf Maschinen sind und<br />
sP = leer sowie im Allgemeinen sV = leer sind. Diese Grundlage wird weiter entwickelt<br />
<strong>zu</strong>m interaktiven Beweissystem mit Zusatzeingabe.<br />
Definition 2.12 (Interaktives Beweissystem mit Zusatzeingabe)<br />
Sei (P, V) ein interaktives Beweissystem gemäß Definition 2.3, wobei P und V bei<strong>de</strong> polynomiell<br />
beschränkt sind. (P, V) heißt interaktives Beweissystem mit Zusatzeingabe,<br />
wenn wenigstens P o<strong>de</strong>r V neben <strong>de</strong>m gemeinsamen noch min<strong>de</strong>stens ein jeweils<br />
eigenes Eingabeband haben, so dass bei gemeinsamer Eingabe x jeweils P(x, ·) bzw.<br />
V(x, ·) berechnet wird.<br />
Man beachte im Unterschied <strong>zu</strong>m interaktiven Beweissystem, dass hier auch <strong>de</strong>r<br />
Prover P polynomiell beschränkt ist. Bei frei gewähltem, aber festem x wer<strong>de</strong>n die<br />
Maschinen auch mit Ax(·) = A(x, ·) bezeichnet.<br />
12
2 Definitionen<br />
2.4 Unterscheidbarkeit <strong>de</strong>r Wahrscheinlichkeitsverteilung<br />
In <strong>de</strong>r weiteren Diskussion, vor allem aber für die Definition <strong>de</strong>r Zero–<strong>Knowledge</strong> Proof-<br />
Systeme in Kapitel 3 ab Seite 30 und darauf aufbauend <strong>de</strong>r Zero–<strong>Knowledge</strong> Arguments<br />
spielt die Ausgabe <strong>de</strong>r an einem solchen System beteiligten Maschinen eine beson<strong>de</strong>re<br />
Rolle. Da i.d.R. alle Teilnehmer eines Beweissystems probabilistische Turing Maschinen<br />
sind, kann die jeweilige Ausgabe nur über <strong>de</strong>ren Wahrscheinlichkeitsverteilung für eine<br />
Eingabe x betrachtet wer<strong>de</strong>n. Zur Überprüfung <strong>de</strong>r übermittelten Informationen wird<br />
<strong>de</strong>r Unterschied eines Wahrscheinlichkeitsraums in noch <strong>zu</strong> präzisieren<strong>de</strong>n Verfahren mit<br />
an<strong>de</strong>ren Wahrscheinlichkeitsverteilungen verglichen.<br />
In <strong>de</strong>r Literatur z.B. bei Meyer [Mey92], Goldreich [Gol01] u.a. wer<strong>de</strong>n mehrere<br />
Unterscheidungen von Wahrscheinlichkeitsverteilungen beschrieben. Für die vorliegen<strong>de</strong><br />
Arbeit ist die Einteilung in zwei Gra<strong>de</strong> jedoch ausreichend. Es han<strong>de</strong>lt sich dabei<br />
um perfekt ununterscheidbar (engl. perfect indistinguishable) und algorithmisch ununterscheidbar<br />
(engl. computational indistinguishable). 4 Einfach ausgedrückt sind zwei Familien<br />
von Wahrscheinlichkeitsverteilungen perfekt ununterscheidbar, wenn sie i<strong>de</strong>ntisch<br />
sind. Sie sind algorithmisch ununterscheidbar, wenn die Unterscheidbarkeit kleiner ist als<br />
eine Funktion, die schneller klein wird, als <strong>de</strong>r Kehrwert je<strong>de</strong>s Polynoms. Diese Funktion<br />
wird als vernachlässigbare Funktion (engl. negligible function) o<strong>de</strong>r auch µ-Funktion<br />
bezeichnet.<br />
Definition 2.13 (vernachlässigbare Funktion)<br />
Eine Funktion µ : → [0, 1] heißt vernachlässigbar, wenn gilt<br />
∀k ∈ , ∃nk ∈ , ∀n ≥ nk : µ(n) ≤ 1<br />
n k<br />
Es existieren noch an<strong>de</strong>re Definitionen <strong>de</strong>r vernachlässigbaren Funktion, so z.B. von<br />
Bellare, Jakobsson und Yung [BJY97]. Wie von Bellare in [Bel02] gezeigt wur<strong>de</strong>, sind<br />
diese jedoch equivalent.<br />
Es sei darauf hingewiesen, dass es für die kryptographische Untersuchung nicht ausreichend<br />
ist, wie in einigen Arbeiten (z.B. [Wel90, Mey92]) <strong>zu</strong> for<strong>de</strong>rn, dass<br />
lim<br />
|x|→∞<br />
x∈L<br />
µ(x) = 0<br />
gilt, da z.B. f(x) = 1 dieses erfüllte. An<strong>de</strong>rs als in <strong>de</strong>r theoretischen Informatik wird<br />
x<br />
in <strong>de</strong>r theoretischen Kryptographie eine Bearbeitung mit endlichen Zahlen betrachtet,<br />
um eine Berechenbarkeit mit gegebenen Maschinen <strong>zu</strong> erhalten. Es ist daher erfor<strong>de</strong>rlich,<br />
dass eine Funktion die erfor<strong>de</strong>rliche Ununterscheidbarkeit schon bei relativ kleinen<br />
4 Weitere Unterscheidungsgra<strong>de</strong> sind die statistische und die Schaltkreis-Ununterscheidbarkeit, wobei<br />
für die vorliegen<strong>de</strong> Arbeit ausreichend ist, die statistischen <strong>de</strong>n perfekten Verfahren und die schaltkreisunterscheidbaren<br />
Verfahren <strong>de</strong>n algorithmischen <strong>zu</strong><strong>zu</strong>ordnen.<br />
13
2 Definitionen<br />
Zahlen beschreibt. Durch die Wahl <strong>de</strong>r µ-Funktion als z.B. eine exponentiell kleine Funktion,<br />
die für genügend große x schneller klein wird, als je<strong>de</strong>s Polynom, ist diese For<strong>de</strong>rung<br />
erfüllt.<br />
Damit kann die Definition <strong>de</strong>r Ununterscheidbarkeit erfolgen.<br />
Definition 2.14 (Ununterscheidbarkeit)<br />
Sei L ⊆ {0, 1} ∗ eine Sprache, U = {Ux}x∈L und V = {Vx}x∈L Familien von Wahrscheinlichkeitsverteilungen,<br />
eine für je<strong>de</strong>s x ∈ L.<br />
1. Die Familien U und V heißen berechenbar ununterscheidbar, wenn es eine<br />
vernachlässigbare Funktion µ(·) gibt, so dass für alle probabilistischen polynomiell–beschränkten<br />
Turing Maschinen A gilt<br />
<br />
Pr[A(Ux) = 1] − Pr[A(Vx) = 1] ≤ µ(|x|)<br />
2. Die Familien U und V heißen statistisch ununterscheidbar, wenn es eine vernachlässigbare<br />
Funktion µ(·) gibt, so dass für alle (nicht nur polynomiell–beschränkten)<br />
Turing Maschinen B gilt<br />
<br />
Pr[B(Ux) = 1] − Pr[B(Vx) = 1] ≤ µ(|x|)<br />
3. Die Familien U und V heißen perfekt ununterscheidbar o<strong>de</strong>r auch i<strong>de</strong>ntisch,<br />
wenn U = V gilt.<br />
2.4.1 Pseudo Zufallsgeneratoren<br />
Da in <strong>de</strong>r Kryptographie polynomiell–beschränkte Maschinen eingesetzt wer<strong>de</strong>n, spielt<br />
die Zufälligkeit eine entschei<strong>de</strong>n<strong>de</strong> Rolle. Mehr noch als in <strong>de</strong>r theoretischen Kryptographie<br />
kommt in <strong>de</strong>r mo<strong>de</strong>rnen praktischen Kryptographie <strong>de</strong>r Nut<strong>zu</strong>ng von maschinenerzeugbaren<br />
Zufallsfolgen eine <strong>de</strong>r entschei<strong>de</strong>n<strong>de</strong>n Be<strong>de</strong>utungen <strong>zu</strong>. Dabei wird in <strong>de</strong>r<br />
Literatur oftmals die Abkür<strong>zu</strong>ng PRG für Pseudo Random Generator genutzt. Diese<br />
können wie folgt <strong>de</strong>finiert wer<strong>de</strong>n:<br />
Definition 2.15 (Pseudo Zufallsgenerator PRG)<br />
Seien l, n ∈ mit l < n und Ul rsp. Un gleichverteilte Wahrscheinlichkeitsräume über<br />
die Mengen {0, 1} l rsp. {0, 1} n . Eine <strong>de</strong>terministische polynomiell berechenbare Funktion<br />
PRG : {0, 1} l → {0, 1} n heißt Pseudo Zufallsgenerator, wenn die Zufallsvariable<br />
PRG(Ul) berechenbar ununterscheidbar von Un ist.<br />
Es gibt weitere Definitionen für Pseudo Zufallsgeneratoren insbeson<strong>de</strong>re für statistische<br />
und perfekte Ununterscheidbarkeit. Diese wer<strong>de</strong>n in dieser Arbeit jedoch nicht<br />
benötigt. Das grundlegen<strong>de</strong> Prinzip, aus einem Ausgangswert einen neuen <strong>zu</strong>fälligen<br />
14
2 Definitionen<br />
bzw. <strong>zu</strong>fällig erscheinen<strong>de</strong>n Wert <strong>zu</strong> erzeugen, <strong>de</strong>r min<strong>de</strong>stens ein Bit länger als <strong>de</strong>r<br />
Ausgangswert ist, ist unabhängig vom Grad <strong>de</strong>r Unterscheidbarkeit. Die Elemente <strong>de</strong>s<br />
Definitionsbereich von PRG wer<strong>de</strong>n dabei als Saat (engl. seed) bezeichnet. Die Realisierung<br />
von Pseudo Zufallsgeneratoren erfolgt in <strong>de</strong>r Regel über Einweg–Funktionen, die<br />
in Abschnitt 2.7 ab Seite 18 beschrieben wer<strong>de</strong>n.<br />
2.5 Bit–Commitment–Scheme<br />
Eine wichtige Grundlage <strong>de</strong>r mo<strong>de</strong>rnen Kryptographie ist die Existenz von ” schweren“<br />
Problemen. Darunter wer<strong>de</strong>n in Abhängigkeit <strong>de</strong>r Zweckerfüllung mathematische o<strong>de</strong>r<br />
informationstheoretische Verfahren verstan<strong>de</strong>n, die gar nicht, nicht mit existieren<strong>de</strong>n<br />
Maschinen o<strong>de</strong>r nicht in einer überschaubaren Zeit berechnet wer<strong>de</strong>n können. Um bei<br />
theoriebasierten Überlegungen nicht von <strong>de</strong>r Existenz konkreter z.B. algebraischer Verfahren<br />
abhängig <strong>zu</strong> sein, wird eine Abstraktion existieren<strong>de</strong>r o<strong>de</strong>r vermuteter Verfahren<br />
vorgenommen.<br />
Aufbauend auf Arbeiten u.a. von Blum [Blu81], Chaum [Cha87] aber auch [GMR85,<br />
GMW86] entwickelten Brassard, Chaum und Crépeau [BCC88] <strong>de</strong>n Begriff <strong>de</strong>s Bit–Commitments,<br />
wobei ein Bit–Commitment–Scheme das Basisverfahren für ein einzelnes Bit<br />
ist, die wie<strong>de</strong>rholt ausgeführt einen String m mit |m| > 1 in einem Commitment–Scheme<br />
verarbeiten. Nachfolgend wird ein Überblick über (Bit-)Commitment–Schemes gegeben,<br />
soweit es hier notwendig ist. Weiterführen<strong>de</strong> Ausführungen sowie Grundlagen <strong>zu</strong> Bit–<br />
Commitment–Schemes können u.a. bei Meyer [Mey92] (formaltheoretische Definitionen<br />
und Beschreibungen), Naor [Nao91] o<strong>de</strong>r auch Goldreich [Gol01] nachgelesen wer<strong>de</strong>n.<br />
Darüber hinaus gibt es immer wie<strong>de</strong>r Veröffentlichungen neuer Ansätze <strong>zu</strong> Bit–Commitment–Schemes,<br />
die gera<strong>de</strong> für <strong>de</strong>n Einsatz in Zero–<strong>Knowledge</strong> Proofs und Zero–<strong>Knowledge</strong><br />
Arguments von Interesse sind, so z.B. von Halevi und Micali [HM96].<br />
Bit–Commitment–Schemes bestehen aus zwei Unterprotokollen, <strong>de</strong>r Festlegungsphase<br />
(commit stage) und <strong>de</strong>r Öffnungsphase (opening stage). In <strong>de</strong>r Festlegungsphase wird<br />
ein Bit σ ∈ {0, 1} von <strong>de</strong>m sen<strong>de</strong>n<strong>de</strong>n Teilnehmer S so festgelegt, dass es hinterher<br />
nicht mehr verän<strong>de</strong>rt wer<strong>de</strong>n kann, während σ für je<strong>de</strong>n an<strong>de</strong>ren nicht sichtbar ist. Das<br />
veröffentlichte Paket wird dabei Commitment genannt. In <strong>de</strong>r Öffnungsphase wird das<br />
festgelegt Bit σ <strong>de</strong>m empfangenen Teilnehmer E bekannt gegeben, wobei durch das Bit–<br />
Commitment–Scheme garantiert ist, dass nur das von S ursprünglich festgelegte Bit σ<br />
und nicht 1 − σ herauskommen kann.<br />
Commitment–Schemes sind das digitale Anlogon <strong>zu</strong> versiegelten, undurchsichtigen<br />
Briefumschlägen, bei <strong>de</strong>nen sichergestellt ist, dass die Inhalte wirklich von <strong>de</strong>n Absen<strong>de</strong>rn<br />
stammen und nach <strong>de</strong>m Versiegeln nicht mehr verän<strong>de</strong>rt wer<strong>de</strong>n konnten.<br />
Commitment–Schemes haben zwei wesentliche Eigenschaften:<br />
15
2 Definitionen<br />
• Ein<strong>de</strong>utigkeit (engl. binding property): Der Sen<strong>de</strong>r kann <strong>de</strong>n Wert nach <strong>de</strong>r Festlegungsphase<br />
nicht mehr än<strong>de</strong>rn.<br />
• Geheimhaltung (engl. hiding property): Der Empfänger lernt vor <strong>de</strong>r Öffnungsphase<br />
nichts über <strong>de</strong>n Wert.<br />
Ausgehend von Brassard, Chaum und Crépeau wer<strong>de</strong>n Commitments auch manchmal<br />
als blobs bezeichnet [BCC88, BCY89].<br />
Damit kann jetzt die allgemeine Definition <strong>de</strong>s Bit–Commitment–Schemes erfolgen.<br />
Definition 2.16 (Bit–Commitment–Scheme)<br />
Sei (S, E) ein interaktives Beweissystem (S für Sen<strong>de</strong>r und E für Empfänger) und σ ∈<br />
{0, 1} das nur S bekannte Bit. (S, E) ist ein Bit–Commitment–Scheme, wenn gilt<br />
• Geheimhaltung (engl. hiding):<br />
Der Empfänger E kann vor <strong>de</strong>r Öffnung ein 0–Commitment nicht von einem 1–<br />
Commitment unterschei<strong>de</strong>n, selbst wenn er von <strong>de</strong>m Protokoll abweicht. Sei E ∗ eine<br />
beliebige (möglicherweise täuschen<strong>de</strong>) Turing Maschine. Dann sind nach <strong>de</strong>r Festlegungsphase<br />
{viewE ∗((S(σ = 0), E ∗ )(n))}n∈ und {viewE ∗((S(σ = 1), E ∗ )(n))}n∈<br />
statistisch rsp. berechenbar ununterscheidbar.<br />
• Festlegung o<strong>de</strong>r Ein<strong>de</strong>utigkeit (engl. binding):<br />
Seien ν ∈ {0, 1} das nur S bekannte Bit und n ∈ beliebig. Nach <strong>de</strong>r Festlegungsphase<br />
sei viewE((S(ν), E)(n)) ein mögliches ν-Commitment. Dann darf<br />
viewE((S(ν), E)(n)) berechenbar rsp. statistisch nicht gleichzeitig ein mögliches 0–<br />
Commitment und ein mögliches 1–Commitment sein.<br />
Die gemeinsame Eingabe n kann dabei als ein beliebig gewählter Sicherheitsparameter<br />
angesehen wer<strong>de</strong>n.<br />
Anmerkung: Alle nachfolgen<strong>de</strong>n Protokolle von Bit–Commitment–Scheme sind entwe<strong>de</strong>r<br />
statistisch ein<strong>de</strong>utig o<strong>de</strong>r statistisch geheim, aber nicht bei<strong>de</strong>s gleichzeitig, wie bei<br />
Goldreich [Gol01] o<strong>de</strong>r Pfitzmann [Pfi99] nachgelesen wer<strong>de</strong>n kann. Intuitiv besteht <strong>de</strong>r<br />
Grund darin, dass nach <strong>de</strong>r Festlegungsphase entwe<strong>de</strong>r zwei Möglichkeiten <strong>zu</strong>r Öffnung<br />
<strong>de</strong>s Commitments bestehen, dann ist es nicht statistisch ein<strong>de</strong>utig, o<strong>de</strong>r es existiert nur<br />
eine, dann ist es nicht statistisch geheim.<br />
Um mittels eines Commitment–Schemes nicht nur ein einzelnes Bit son<strong>de</strong>rn ganze<br />
Zeichenketten verschlüsseln <strong>zu</strong> können, ist es notwendig, das Bit–Commitment–Scheme<br />
mehrfach entwe<strong>de</strong>r sequenziell o<strong>de</strong>r parallel aus<strong>zu</strong>führen. Es wur<strong>de</strong> nachgewiesen (z.B. in<br />
[GMW86, Gol01]), dass die Geheimhaltung bei sequenzieller Ausführung aller Bit–Commitment–Scheme<br />
erhalten bleibt. Dem entgegen steht jedoch die Erkenntniss, dass dieses<br />
16
2 Definitionen<br />
im Allgemeinen bei <strong>de</strong>r parallelen Ausführung nicht <strong>de</strong>r Fall ist (z.B. [GK96b, BCY91]).<br />
Um die Anzahl <strong>de</strong>r Interaktionen <strong>zu</strong> reduzieren, ist jedoch eine parallele Ausführung notwendig.<br />
Der Entwurf eines Commitment–Scheme, eventuell im Zusammenhang mit <strong>de</strong>m<br />
Protokoll, in <strong>de</strong>m das Commitment–Scheme eingesetzt wird, muss somit im Beson<strong>de</strong>ren<br />
darauf gerichtet sein, die Geheimhaltung bei <strong>de</strong>r parallelen Verarbeitung <strong>zu</strong> erhalten.<br />
2.6 Schaltkreise (engl. Circuits)<br />
Kryptographische Verfahren wer<strong>de</strong>n oftmals sowohl informationstheoretisch als auch verbal<br />
mit Hilfe von Schaltkreisen (engl. circuits) untersucht und beschrieben. Die Beschreibung<br />
<strong>de</strong>r Schaltkreise ist <strong>zu</strong>m Teil <strong>de</strong>r Arbeit von Meyer [Mey92] entnommen. Schaltkreise<br />
sind eine weitere Möglichkeit, Berechnungen und Algorithmen <strong>zu</strong> mo<strong>de</strong>llieren. Im<br />
Gegensatz <strong>zu</strong>r Turing Maschine, die Eingaben beliebiger Länger verarbeiten kann, ist<br />
ein Schaltkreis immer nur für eine feste Eingabelänge geeignet.<br />
Definition 2.17 (Boolescher Schaltkreis)<br />
Das Tripel C = (G, In, Φ) heißt <strong>de</strong>terministischer Boolescher Schaltkreis, wenn gilt:<br />
• G = (V, E) ist ein gerichteter azyklischer Graph mit einer endlichen Menge V =<br />
{1, . . . , n} von Knoten und da<strong>zu</strong>gehörigen Kanten E ⊆ V × V .<br />
• In ⊆ IN(G) = {v ∈ V |in(v) = 0} mit in(v) = |{w|(w, v) ∈ E}| ist die Menge <strong>de</strong>r<br />
Eingangsknoten.<br />
• Φ : V \In → {∨, ∧, ¬, 0, 1} ist eine Funktion, die je<strong>de</strong>m Knoten v ∈ V \In eine<br />
Boolesche Funktion <strong>zu</strong>ordnet. Dabei sind folgen<strong>de</strong> Bedingungen erfüllt:<br />
in(v) = 2 ⇒ Φ(v) ∈ {∨, ∧},<br />
in(v) = 1 ⇒ Φ(v) = ¬,<br />
in(v) = 0 ⇒ Φ(v) ∈ {0, 1}.<br />
Eine Sprache L ⊆ {0, 1} n wird von einem Schaltkreis C genau dann entschie<strong>de</strong>n,<br />
wenn x ∈ L ⇔ C(x) = 1 gilt. Um Eingaben beliebiger Länge mit Schaltkreisen verarbei-<br />
ten <strong>zu</strong> können, wer<strong>de</strong>n Familien von Schaltkreisen über einer abzählbaren In<strong>de</strong>xmenge<br />
untersucht. Sei {Cx}x∈{0,1} ∗ eine Familie von Schaltkreisen mit einem Ausgangsknoten.<br />
Dann heißt<br />
L = {x ∈ {0, 1} ∗ |Cx(x) = 1}<br />
die von {Cx}x∈{0,1} ∗ entschie<strong>de</strong>ne Sprache.<br />
Definition 2.18 (Probabilistischer Schaltkreis)<br />
Ein Tupel C = (C ′ , p) heißt probabilistischer Schaltkreis, wenn gilt:<br />
• C ′ = (G, In, Φ) ist ein <strong>de</strong>terministischer Schaltkreis.<br />
17
2 Definitionen<br />
• InP ⊆ In ist die Menge <strong>de</strong>r probabilistischen Eingangsknoten.<br />
InD = In\InP ist die Menge <strong>de</strong>r <strong>de</strong>terministischen Eingangsknoten von C.<br />
• p : InP → [0, 1] ist eine Funktion, die für je<strong>de</strong>n Knoten v ∈ InP die Wahrscheinlichkeit<br />
p(v) angibt, dass v <strong>de</strong>n Wert 1 annimmt.<br />
In [Mey92] und [Wel90] sind weiterführen<strong>de</strong> formale Darstellungen <strong>de</strong>r Schaltkreise<br />
nach<strong>zu</strong>lesen. Dort wird auch gezeigt, dass je<strong>de</strong> probabilistische Turing Maschine in eine<br />
Familie probabilistischer Schaltkreise überführt wer<strong>de</strong>n kann. Insbeson<strong>de</strong>re wird in<br />
[Wel90] gezeigt, dass für zwei polynomiell–beschränkte Familien von Wahrscheinlichkeitsfunktion<br />
U = {Ux}x∈L und V = {Vx}x∈L folgen<strong>de</strong> Beziehung gilt:<br />
2.7 Einweg–Funktionen<br />
U, V i<strong>de</strong>ntisch<br />
⇓<br />
U, V Schaltkreis - ununterscheidbar<br />
⇓<br />
U, V algorithmisch ununterscheidbar<br />
Einweg–Funktionen (engl. one-way-function) sind einfach gesagt Funktionen, die leicht<br />
<strong>zu</strong> berechnen praktisch aber nicht <strong>zu</strong> invertieren sind. Die Einschränkung ” praktisch“ ist<br />
dabei im Zusammenhang mit <strong>de</strong>m Einsatz innerhalb <strong>de</strong>r Kryptographie <strong>zu</strong> sehen beim<br />
Einsatz genügend großer Zahlen. So kann z.B. die Funktion y = f(x) eine Komplexität<br />
von O(n log n) haben, die von x = f −1 (y) jedoch O(2 n ).<br />
Einweg–Funktionen stellen dabei eines <strong>de</strong>r be<strong>de</strong>utendsten Primitive innerhalb <strong>de</strong>r<br />
mo<strong>de</strong>rnen Kryptographie dar. Dabei ist wichtig <strong>zu</strong> beachten, dass die gesamten Überlegungen<br />
bezüglich <strong>de</strong>r Einweg–Funktionen auf P = N P beruhen.<br />
Es existiert noch kein mathematischer Beweis dafür, das es Einweg–Funktionen gibt.<br />
Trotz<strong>de</strong>m gibt es Funktionen wie die Multiplikation zweier großer Primzahlen mit <strong>de</strong>m<br />
Problem <strong>de</strong>r Primfaktorzerlegung o<strong>de</strong>r Restklassenringe mit <strong>de</strong>m Problem <strong>de</strong>s diskreten<br />
Logarithmus, 5 die vermutete Einweg–Funktionen sind.<br />
Die Angaben in diesem Abschnitt stammen unter an<strong>de</strong>rem aus <strong>de</strong>n Veröffentlichungen<br />
von Mattern [Mat01], Menezes, van Oorschot und Vanstone [MvV01] sowie insbeson<strong>de</strong>re<br />
aus <strong>de</strong>m Buch von Goldreich [Gol01].<br />
5 Siehe da<strong>zu</strong> <strong>de</strong>n Abschnitt 2.8 Zahlentheorie ab Seite 23.<br />
18
2 Definitionen<br />
Definition 2.19 (Einweg–Funktionen)<br />
Eine Funktion f : {0, 1} ∗ → {0, 1} ∗ wird Einweg–Funktion genannt, wenn die folgen<strong>de</strong>n<br />
bei<strong>de</strong>n Bedingungen erfüllt sind:<br />
1. Einfach <strong>zu</strong> berechnen: Es existiert ein (<strong>de</strong>terministischer) polynomiell–beschränkter<br />
Algorithmus A, so dass dieser bei Eingabe von x f(x) ausgibt (A(x) =<br />
f(x)).<br />
2. Schwer <strong>zu</strong> invertieren: Für je<strong>de</strong>n probabilistischen polynomiell–beschränkten Algorithmus<br />
A ∗ , alle genügend großen n ∈ und alle r, r ′ ∈R {0, 1} n gilt<br />
mit µ als vernachlässigbarer Funktion.<br />
Pr[A ∗ (f(r ′ ), 1 n ) ∈ f −1 (f(r))] < µ(n)<br />
Die Wahrscheinlichkeit <strong>de</strong>r zweiten Bedingung wird dabei über alle n, r, r ′ und die<br />
Münzwürfe von A ∗ mit gleichverteilter Wahrscheinlichkeit berechnet.<br />
Anmerkung: Es wird nicht gefor<strong>de</strong>rt, dass A ∗ das spezifische Urbild von f(x) berechnet.<br />
Je<strong>de</strong>s Urbild, d.h. je<strong>de</strong>s Element aus f −1 (f(x)) ist ausreichend. Natürlich gilt<br />
x = f −1 (f(x)), falls f bijektiv ist, aber im Allgemeinen können an<strong>de</strong>re Urbil<strong>de</strong>r die<br />
Vorausset<strong>zu</strong>ng erfüllen.<br />
Die <strong>zu</strong>sätzliche Eingabe 1 n dient lediglich <strong>de</strong>m Zweck <strong>zu</strong> verhin<strong>de</strong>rn, dass eine Funktion<br />
nur <strong>de</strong>shalb als Einweg–Funktion gilt, weil <strong>de</strong>ren Ausgabe so stark verkürzt wur<strong>de</strong>,<br />
dass <strong>de</strong>r Invertierung keine Zeit verbleibt, die Ausgabe aus<strong>zu</strong>geben. Sei z.B. y = bin(x)<br />
die Funktion, um die binäre Darstellung von x aus<strong>zu</strong>geben. Dann ist |bin(x)| = log 2 |x|<br />
und kein Algorithmus kann in Polynomialzeit bezüglich |y| bin invertieren. Die Hilfseingabe<br />
1 n verhin<strong>de</strong>rt, dass eine praktisch invertierbare Funktion als Einweg–Funktion<br />
bezeichnet wird.<br />
Neben dieser Definition existieren noch weitere, die entwe<strong>de</strong>r auf die obige <strong>zu</strong>rückgeführt<br />
wer<strong>de</strong>n können o<strong>de</strong>r <strong>de</strong>ren Unterschie<strong>de</strong> für die vorliegen<strong>de</strong> Arbeit nicht relevant<br />
sind.<br />
Von weiterer Be<strong>de</strong>utung sind noch injektive Einweg–Funktionen, die in <strong>de</strong>r Fachliteratur<br />
oft mit 1-1 o<strong>de</strong>r one-one bezeichnet wer<strong>de</strong>n, da diese Funktionen in vielen Zero–<strong>Knowledge</strong><br />
Protokollen Anwendung fin<strong>de</strong>n. Ist eine Einweg–Funktion sogar bijektiv,<br />
dann wird diese Funktion <strong>zu</strong>r<br />
Definition 2.20 (Einweg–Permutationen)<br />
Sei f eine Einweg–Funktion gemäß Definition 2.19 und bijektiv. Dann heißt f eine Einweg–Permutation.<br />
Die Bijektivität erscheint für eine Einweg–Funktion auf <strong>de</strong>n ersten Blick sinnlos. Sie<br />
ist aber insbeson<strong>de</strong>re dann von Wichtigkeit, wenn für die Invertierung eine Zusatzinformation<br />
vorhan<strong>de</strong>n ist, die es erlaubt, f −1 effizient <strong>zu</strong> berechnen. Diese Umkehrfunktionen<br />
19
2 Definitionen<br />
so<strong>zu</strong>sagen mit ” Hintertür“ wer<strong>de</strong>n als Trapdoor Funktion bezeichnet. 6 Um die Trapdoor<br />
Funktionen genauer <strong>de</strong>finieren <strong>zu</strong> können, wer<strong>de</strong>n Familien o<strong>de</strong>r Kollektionen von Funktionen<br />
benötigt.<br />
Definition 2.21 (Kollektion von Funktionen)<br />
Eine Kollektion von Funktionen besteht aus einer endlichen Menge Ī von Indizees und einer<br />
da<strong>zu</strong>gehörigen endlichen Menge von Funktionen {fi} i∈Ī. D.h. für je<strong>de</strong>s i ∈ Ī existiert<br />
ein endlicher Wertebereich Di, in <strong>de</strong>r die Funktion fi enthalten ist.<br />
Weiterhin wird ein effizienter Algorithmus I benötigt, <strong>de</strong>r nach Eingabe einer Zahl n<br />
<strong>zu</strong>fällig einen In<strong>de</strong>x i mit |i| = poly(n) auswählt und damit eine Funktion fi sowie <strong>de</strong>n<br />
da<strong>zu</strong>gehörigen Wertebereich Di festlegt. Das führt <strong>zu</strong> folgen<strong>de</strong>r Definition.<br />
Definition 2.22 (Kollektion von Einweg–Funktionen)<br />
Eine Kollektion von Funktionen {fi : Di → {0, 1} ∗ } i∈Ī wird Kollektion von Einweg–<br />
Funktionen genannt, wenn drei probabilistische polynomiell–beschränkte Algorithmen<br />
I, D und F existieren, so dass die folgen<strong>de</strong>n bei<strong>de</strong>n Bedingungen erfüllt sind:<br />
1. Leicht <strong>zu</strong> berechnen: Die Verteilung <strong>de</strong>r Ausgabe von I bei Eingabe von 1 n ist eine<br />
Zufallsvariable über <strong>de</strong>r Menge Ī ∩ {0, 1}n . Die Verteilung <strong>de</strong>r Ausgabe von D bei<br />
Eingabe von i ∈ Ī ist eine Zufallsvariable über die Werte in Di. Bei Eingabe von<br />
i ∈ Ī und x ∈ Di gibt F stets fi(x) aus.<br />
Somit ist Di ⊆ <br />
m≤poly(|i|) {0, 1}m , wobei angenommen wer<strong>de</strong>n kann, dass Di ⊆<br />
{0, 1} poly(|i|) gilt und dass F <strong>de</strong>terministisch ist.<br />
2. Schwer <strong>zu</strong> invertieren: Für je<strong>de</strong>n probabilistischen polynomiell–beschränkten Algorithmus<br />
A ∗ , und alle genügend großen n gilt<br />
Pr[A ∗ (In, fIn(Xn)) ∈ f −1<br />
In (fIn(Xn))] < µ(n)<br />
wobei In eine Zufallsvariable ist, die die Ausgabe <strong>de</strong>s Algorithmus I bei Eingabe<br />
von 1 n darstellt, und Xn eine Zufallsvariable ist, die die Ausgabe <strong>de</strong>s Algorithmus<br />
D bei Eingabe von In darstellt.<br />
Je<strong>de</strong> Kollektion von Einweg–Funktionen kann durch eine Einweg–Funktion repräsentiert<br />
wer<strong>de</strong>n und umgekehrt, wobei je<strong>de</strong> Formulierung Vorteile hat.<br />
Trapdoor Funktionen können nun als Kollektionen von Einweg–Permutationen {fi}<br />
angesehen wer<strong>de</strong>n, die die Eigenschaft haben, dass fi leicht <strong>zu</strong> invertieren ist, wenn erst<br />
einmal eine Hilfseingabe als ” Abkür<strong>zu</strong>ng“ für <strong>de</strong>n In<strong>de</strong>x i gegeben ist. Diese Hilfseingabe<br />
6 Da die Überset<strong>zu</strong>ng Falltür Funktion irreführend ist, sich jedoch kein besserer <strong>de</strong>utscher Begriff etabliert<br />
hat, wird hier weiterhin <strong>de</strong>r Begriff Trapdoor verwen<strong>de</strong>t.<br />
20
2 Definitionen<br />
für <strong>de</strong>n In<strong>de</strong>x i, bezeichnet mit t(i) kann nicht effizient von i berechnet wer<strong>de</strong>n, obwohl<br />
es leicht möglich ist, ein korrespondieren<strong>de</strong>s Tupel (i, t(i)) <strong>zu</strong> erzeugen.<br />
Definition 2.23 (Kollektion von Trapdoor Permutationen)<br />
Sei I : 1 ∗ → {0, 1} ∗ × {0, 1} ∗ ein probabilistischer Algorithmus und bezeichne I1(1 n ) das<br />
erste Element <strong>de</strong>s Tupels, welches von I(1 n ) ausgegeben wird. Ein Tripel von Algorithmen<br />
(I, D, F ) wird als Kollektion von Trapdoor Permutationen genannt, wenn<br />
die bei<strong>de</strong>n folgen<strong>de</strong>n Bedingungen erfüllt sind.<br />
1. Das Tripel (I1, D, F ) bil<strong>de</strong>t eine Kollektion von Einweg–Permutationen. (Dabei<br />
gilt insbeson<strong>de</strong>re F (i, x) = fi(x).)<br />
2. Es existiert ein polynomieller Algorithmus F −1 , so dass für je<strong>de</strong>s (i, t) im In<strong>de</strong>xbereich<br />
von I und für je<strong>de</strong>s x ∈ Di gilt, dass F −1 (t, fi(x)) = x ist.<br />
Eine nützliche Abschwächung <strong>de</strong>r Bedingungen ist die For<strong>de</strong>rung, dass die Bedingungen<br />
mit sehr hoher Wahrscheinlichkeit erfüllt wer<strong>de</strong>n. Insbeson<strong>de</strong>re wird <strong>de</strong>m In<strong>de</strong>x–<br />
generieren<strong>de</strong>n Algorithmus I gestattet, mit vernachlässigbarer Wahrscheinlichkeit Tupel<br />
(i, t) als Ausgaben <strong>zu</strong> erzeugen, für die sowohl fi keine Permutation ist als auch<br />
F −1 (t, fi(x)) = x nicht für alle x ∈ Di erfüllt ist. Weiterführen<strong>de</strong> Abhandlungen <strong>zu</strong><br />
Trapdoor Funktionen sind unter an<strong>de</strong>rem von Yao in [Yao82] veröffentlicht wor<strong>de</strong>n.<br />
Eine weitere für die mo<strong>de</strong>rne Kryptographie be<strong>de</strong>utsame Klasse von Funktionen sind<br />
die Claw-Free Funktionen. 7 Bei einer Claw-Free Kollektion han<strong>de</strong>lt es sich um eine Menge<br />
von Paaren von Funktionen, die leicht <strong>zu</strong> evaluieren sind, bei <strong>de</strong>m je<strong>de</strong>s Paar von<br />
Funktionen <strong>de</strong>nselben Bildbereich haben, und für die es unmöglich ist, ein Element aus<br />
<strong>de</strong>m Bildbereich <strong>zu</strong> fin<strong>de</strong>n, welches in bei<strong>de</strong>n Funktionen <strong>de</strong>nselben Ursprungswert hat.<br />
Definition 2.24 (Claw-Free Kollektion)<br />
Eine Kollektion von Paaren von Funktionen besteht aus einer unendlich großen Menge<br />
von Indizes Ī, zwei endlichen Mengen D0 i und D1 i für je<strong>de</strong>s i ∈ Ī und zwei Funktionen<br />
f 0 i und f 1 i , <strong>de</strong>finiert über D0 i rsp. D1 i . Eine solche Kollektion wird Claw-Free genannt,<br />
wenn drei probabilistische polynomiell–beschränkte Algorithmen I, D und F existieren,<br />
so dass die folgen<strong>de</strong>n drei Bedingungen erfüllt sind:<br />
1. Leicht aus<strong>zu</strong>wählen und <strong>zu</strong> berechnen: Die Zufallsvariable I(1n ) ist Werten <strong>de</strong>r<br />
Menge Ī ∩{0, 1}n <strong>zu</strong>geordnet. Für je<strong>de</strong>s i ∈ Ī und σ ∈ {0, 1} ist die Zufallsvariable<br />
D(σ, i) verteilt über Dσ i und für je<strong>de</strong>s x ∈ Dσ i gilt F (σ, i, x) = f σ i (x).<br />
2. I<strong>de</strong>ntische Bildverteilung: Für je<strong>de</strong>s i in <strong>de</strong>r In<strong>de</strong>xmenge Ī sind die Zufallsvariablen<br />
f 0 i (D(0, i)) und f 1 i (D(1, i)) i<strong>de</strong>ntisch verteilt.<br />
7 Ähnlich wie bei <strong>de</strong>n Trapdoor Funktionen existiert für die Claw-Free Funktionen keine sinnvolle<br />
<strong>de</strong>utsche Überset<strong>zu</strong>ng. Claw, im Englischen Klaue o<strong>de</strong>r Kralle, meint hier die Be<strong>de</strong>utung von Aneinan<strong>de</strong>rklammern<br />
o<strong>de</strong>r wie mit einer Klaue <strong>zu</strong>sammengehalten.<br />
21
2 Definitionen<br />
3. Schwer, Claws <strong>zu</strong> erzeugen: Ein Paar (x, y), welches f 0 i (x) = f 1 i (y) erfüllt, wird als<br />
Claw für <strong>de</strong>n In<strong>de</strong>x i bezeichnet. Bezeichne Ci die Menge <strong>de</strong>r Claws für <strong>de</strong>n In<strong>de</strong>x<br />
i. Es ist erfor<strong>de</strong>rlich, dass für je<strong>de</strong>n probabilistischen polynomiell–beschränkten<br />
Algorithmus A ∗ und alle ausreichend großen n<br />
Pr[A ∗ (In) ∈ CIn] < µ(n)<br />
gilt, wobei In eine Zufallsvariable ist, die die Ausgabeverteilung <strong>de</strong>s Algorithmus<br />
I bei Eingabe von 1 n beschreibt.<br />
Die erste For<strong>de</strong>rung in Definition 2.24 entspricht <strong>de</strong>rjenigen in Definition 2.22, wohingegend<br />
die bei<strong>de</strong>n an<strong>de</strong>ren For<strong>de</strong>rungen sich wi<strong>de</strong>rsprechen. Auf <strong>de</strong>r einen Seite wird<br />
gefor<strong>de</strong>rt, dass Claws existieren. Auf <strong>de</strong>r an<strong>de</strong>ren Seite sollen diese Claws nicht effizient<br />
berechnet wer<strong>de</strong>n können. Es ist klar, dass eine Kollektion von Claw-Free Funktionen<br />
eine Kollektion von Einweg–Funktionen liefert. Von beson<strong>de</strong>rem Interesse sind dabei<br />
Funktionen mit i<strong>de</strong>ntischem Wertebereich (d.h. Di<br />
<strong>de</strong>f 0 = Di = D1 i ), wenn die Zufallsvariable<br />
D(σ, i) gleichverteilt über Di ist und die Funktionen f 0 i und f 1 i Permutationen über<br />
Di sind. Derartige Kollektionen wer<strong>de</strong>n Kollektionen von Claw-Free Permutationen von<br />
Paaren genannt.<br />
Den Abschnitt <strong>de</strong>r Einweg–Funktionen soll die Definition <strong>de</strong>r Hashfunktionen und<br />
insbeson<strong>de</strong>re <strong>de</strong>r kollisions-resistenten Hashfunktionen abschließen. Diese Funktionen<br />
wer<strong>de</strong>n ebenfalls in einem Großteil <strong>de</strong>r mo<strong>de</strong>rnen kryptographischen Algorithmen verwen<strong>de</strong>t.<br />
Definition 2.25 (Hashfunktionen)<br />
Seien h eine Funktion, lh ∈ ein beliebiger aber fester Wert und x aus <strong>de</strong>m Definitionsbereich<br />
von h. Dann heißt h Hashfunktion, wenn die folgen<strong>de</strong>n drei Bedingungen<br />
erfüllt sind:<br />
1. Komprimierung: ∀x, ∃lh : |h(x)| = lh<br />
2. Einfach <strong>zu</strong> berechnen: Bei Eingabe von x ist h(x) einfach <strong>zu</strong> berechnen.<br />
3. Schwer <strong>zu</strong> invertieren: Sei y = h(x). Dann ist es ohne Kenntnis von x berechenbar<br />
unmöglich, ein x ′ <strong>zu</strong> fin<strong>de</strong>n, so dass h(x ′ ) = y gilt.<br />
Hashfunktionen haben dabei zwei wesentliche Eigenschaften:<br />
• Sei M eine Nachricht und h eine Hashfunktion. Dann steht y = h(M) in keinem<br />
erkennbaren Zusammenhang mehr mit M.<br />
• Der erzeugte Hashwert ist im Allgemeinen wesentlich kürzer als die beliebig lange<br />
Nachricht |y| < |M|.<br />
22
2 Definitionen<br />
Von beson<strong>de</strong>rem Interesse sind dabei häufig die kollisions-resistenten Hashfunktionen.<br />
Definition 2.26 (Kollisions-resistente Hashfunktion)<br />
Sei h eine Hashfunktionen gemäß Definition 2.25 und stammt x aus <strong>de</strong>m Definitionsbereich<br />
von h. h heißt kollisions-resistente Hashfunktion, wenn es berechendbar<br />
unmöglich ist, ein x ′ = x <strong>zu</strong> fin<strong>de</strong>n, so dass h(x) = h(x ′ ) gilt.<br />
2.8 Zahlentheorie<br />
Die nachfolgen<strong>de</strong>n Ausführungen sollen nur einen kleinen Überblick über die notwendigen<br />
zahlentheoretischen Grundlagen liefern. Für das tiefere Verständnis <strong>de</strong>r kryptographischen<br />
Verfahren ist das Wissen darum unabdingbar. Als Einstieg wird in Be<strong>zu</strong>g auf<br />
kryptographische Beson<strong>de</strong>rheiten z.B. auf die Ausführungen von Goldreich [Gol01], A.<br />
Pfitzmann [Pfi00], B. Pfitzmann [Pfi98] und von Menezes, van Oorschot und Vanstone<br />
[MvV01] verwiesen.<br />
Im Weiteren bezeichne n ∈ eine positive ganze Zahl und ggT(·) <strong>de</strong>n größten<br />
gemeinsamen Teiler.<br />
Primzahl<br />
Eine ganze Zahl p ∈ ist eine Primzahl bzw. hat die Eigenschaft prim, wenn gilt<br />
∀i ∈ , i < p : ggT(i, p) = 1.<br />
Relativ prim<br />
a, b ∈ heißen relativ prim, wenn gilt ggT(a, b) = 1.<br />
Euler’sche Phi Funktion φ(n)<br />
Für n ≥ 1 bezeichnet φ(n) die Anzahl <strong>de</strong>r ganzen Zahlen im Intervall [1, n], die relativ<br />
prim <strong>zu</strong> n sind.<br />
2.8.1 Integer modulo n<br />
Modulo<br />
Seien a, b ∈ , Dann be<strong>de</strong>utet a ≡ b (mod n), dass a kongruent b ist, wenn n (a − b)<br />
teilt, geschrieben n|(a − b).<br />
∃m ∈ ; a − b = m · n<br />
Da<strong>zu</strong> gelten folgen<strong>de</strong> Eigenschaften. Seien a, a1, b, b1, c ∈ . Dann gilt<br />
(i) a ≡ b (mod n) dann und nur dann, wenn a und b das gleiche Restglied haben.<br />
23
(ii) (Reflexivität) a ≡ a (mod n)<br />
2 Definitionen<br />
(iii) (Symmetrie) a ≡ b (mod n) ⇐⇒ b ≡ a (mod n).<br />
(iv) (Transitivität) Aus a ≡ b (mod n) und b ≡ c (mod n) folgt a ≡ c (mod n).<br />
(v) Wenn a ≡ a1 (mod n) und b ≡ b1 (mod n) gilt, dann gilt auch a + b ≡ a1 + b1<br />
(mod n) und ab ≡ a1b1 (mod n).<br />
Die Äquivalenzklasse einer ganzen Zahl a ∈ ist die Menge aller ganzen Zahlen, die<br />
kongruent <strong>zu</strong> a mod n sind. Aus <strong>de</strong>n Eigenschaften (ii), (iii) und (iv) folgt, das für ein<br />
festes n die Relation <strong>de</strong>r Kongruenz modulo n die Menge in Äquivalenzklassen teilt.<br />
Sei a = qn+r mit 0 ≤ r < n, dann gilt a ≡ r (mod n). Je<strong>de</strong> ganze Zahl a, die kongruent<br />
modulo n <strong>zu</strong> einer ein<strong>de</strong>utigen ganzen Zahl x mit 0 ≤ x ≤ n − 1 ist, wird als kleinster<br />
Rest eines Modulo n bezeichnet. Somit sind a und r in <strong>de</strong>r selben Äquivalenzklasse und<br />
r kann als Repräsentant dieser Äquivalenzklasse dienen.<br />
Restklassenring von n: n<br />
Die Menge aller ganzen Zahlen modulo n wer<strong>de</strong>n als n bezeichnet und stellen die<br />
Menge <strong>de</strong>r (äquivalenten Klassen <strong>de</strong>r) ganzen Zahlen von {0, 1, . . . , n−1} dar. Addition,<br />
Subtraktion und Multiplikation in n wer<strong>de</strong>n jeweils modulo n ausgeführt.<br />
Multiplikatives inverses Element<br />
Seien a, b, x ∈ n. Das multiplikative Inverse von a mod n ist eine ganze Zahl x, so dass<br />
ax ≡ 1 (mod n) gilt. Wenn so ein inverses Element existiert, dann ist es einmalig und a<br />
wird invertierbar genannt. Das inverse Element von a wird mit a −1 bezeichnet.<br />
Eine Division von a durch b mod n ist ein Produkt von a und b −1 mod n und ist nur<br />
dann <strong>de</strong>finiert, wenn b invertierbar modulo n ist.<br />
Beispiel 1<br />
Die invertierbaren Elemente von 9 sind 1, 2, 4, 5, 7 und 8, wie am Beispiel <strong>de</strong>r 4 <strong>zu</strong><br />
sehen ist. 4 −1 = 7 da 4 · 7 ≡ 1 (mod 9).<br />
Sei d = ggT(a, n). Die Kongruenzrelation ax ≡ b (mod n) hat eine Lösung x dann<br />
und nur dann, wenn d|b gilt. In diesem Fall existieren exakt d Lösungen zwischen 0 ≤<br />
n − 1. Alle Lösungen sind kongruent modulo n<br />
d .<br />
2.8.2 Multiplikative Gruppe ∗<br />
n<br />
Die mulitplikative Gruppe von n wird mit ∗ n = {a ∈ Zn | ggT(a, n) = 1} bezeichnet.<br />
Insbeson<strong>de</strong>re gilt, falls n eine Primzahl ist, ∗ n = {a | 1 ≤ a ≤ n − 1}<br />
24
2 Definitionen<br />
Beispiel 2<br />
Sei n = 21 = prim. Dann ist ∗ 21 = {1, 2, 4, 5, 8, 10, 11, 13, 16, 17, 19, 20}. Sei n = 13 =<br />
prim. Dann ist ∗ 13 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}.<br />
Sei p ein Primzahl. Dann gilt<br />
(i) (kleiner Fermat’schen Satz) Wenn ggT(a, p) = 1, dann gilt a p−1 ≡ 1 (mod p).<br />
(ii) Aus r ≡ s (mod p−1) folgt a r ≡ a s (mod p) für alle ganzen Zahlen a. Mit an<strong>de</strong>ren<br />
Worten, wenn modulo einer Primzahl p gearbeitet wird, können die Exponenten<br />
mit modulo (p − 1) reduziert wer<strong>de</strong>n.<br />
(iii) Insbeson<strong>de</strong>re gilt a p ≡ a (mod p) für alle a ∈ .<br />
Grad von a<br />
Sei a ∈ ∗ n. Der Grad von a, bezeichnet mit grad(a), ist die kleinste Zahl t ∈ , für die<br />
gilt: a t ≡ 1 (mod n).<br />
Beispiel 3<br />
Sei n = 21 mit ∗ 21 = {1, 2, 4, 5, 8, 10, 11, 13, 16, 17, 19, 20}. Dann ist φ(21) = φ(7)·φ(3) =<br />
12 = | ∗ 21|. Die Gra<strong>de</strong> <strong>de</strong>r Elemente von ∗ 21 sind in <strong>de</strong>r Tabelle 1 aufgelistet.<br />
a ∈ ∗ 21 1 2 4 5 8 10 11 13 16 17 19 20<br />
Gra<strong>de</strong> von a 1 6 3 6 2 6 6 2 3 6 6 2<br />
Erzeugen<strong>de</strong>s Element von ∗<br />
n<br />
Tabelle 1: Grad <strong>de</strong>r Elemente von ∗ 21<br />
Sei α ∈ ∗ n. Ist grad(α) = φ(n), dann heißt α das erzeugen<strong>de</strong> Element (engl. generator)<br />
o<strong>de</strong>r auch primitive Elemenet von ∗ n. ∗ n heißt zyklisch, wenn es ein erzeugen<strong>de</strong>s Element<br />
α hat.<br />
Eigenschaften <strong>de</strong>s erzeugen<strong>de</strong>n Elements<br />
(i) ∗ n hat dann und nur dann ein erzeugen<strong>de</strong>s Element, wenn n = 2, 4, p k , 2p k gilt,<br />
wobei p eine ungera<strong>de</strong> Primzahl und k ≥ 1 sind. Insbeson<strong>de</strong>re gilt, wenn p prim<br />
ist, dass ∗ n ein erzeugen<strong>de</strong>s Element hat.<br />
(ii) Wenn α ein erzeugen<strong>de</strong>s Element von ∗ n ist, dann ist ∗ n = {α i mod n | 0 ≤ i ≤<br />
φ(n) − 1}.<br />
25
2 Definitionen<br />
(iii) Vorausgesetzt, α ist ein erzeugen<strong>de</strong>s Element von ∗ n. b = α i mod n ist ebenfalls<br />
ein erzeugen<strong>de</strong>s Element von ∗ n dann und nur dann, wenn ggT(i, φ(nI) = 1). Falls<br />
∗ n zyklisch ist, folgt daraus, dass die Anzahl <strong>de</strong>r erzeugen<strong>de</strong>n Elemente φ(φ(n))<br />
ist.<br />
(iv) α ∈ ∗ n ist ein erzeugen<strong>de</strong>s Element von ∗ n dann und nur dann, wenn für je<strong>de</strong>n<br />
Primzahlteiler p von φ(n) gilt α φ(n)<br />
p ≡ 1 (mod n).<br />
Beispiel 4<br />
∗ 21 ist nicht zyklisch, weil φ(21) = 12 ∈ ∗ 21 (siehe Tabelle 1). Beachte, dass α = 21<br />
nicht die Eigenschaft (i) für erzeugen<strong>de</strong> Elemente erfüllt. Dagegen ist ∗ 25 zyklisch und<br />
hat α = 2 als erzeugen<strong>de</strong>s Element.<br />
2.8.3 Quadratischer Rest<br />
a ∈ ∗ n wird als quadratischer Rest modulo n bezeichnet, wenn ein x ∈ ∗ n exisiert, so<br />
dass x 2 ≡ a (mod n) gilt. Existiert kein <strong>de</strong>rartiges x, dann wird a als quadratischer<br />
Nichtrest modulo n bezeichnet.<br />
Die Menge aller quadratischen Reste modulo n wird mit Qn, die <strong>de</strong>r quadratischen<br />
Nichtreste modulo n mit Q n bezeichnet. Dabei gilt per Definition 0 ∈ ∗ n, wobei 0 ∈ Qn<br />
und 0 ∈ Q n gilt.<br />
Sei p eine ungera<strong>de</strong> Primzahl und a ein erzeugen<strong>de</strong>s Element von ∗ n. x ∈ ∗ n ist<br />
ein quadratischer Rest modulo p dann und nur dann, wenn x = ai (mod p) für eine<br />
gera<strong>de</strong> Zahl i ∈ . Es folgt, dass |Q| = p−1<br />
p−1<br />
und |Q| = . Das heißt, dass die Hälfte<br />
2 2<br />
<strong>de</strong>r Elemente von ∗ n quadratische Reste und die an<strong>de</strong>re Hälfte quadratische Nichtreste<br />
sind.<br />
Beispiel 5<br />
a = 6 ist erzeugen<strong>de</strong>s Element von ∗ 13. Die Potenzen von a ergeben sich aus folgen<strong>de</strong>r<br />
Tabelle:<br />
i 1 2 3 4 5 6 7 8 9 10 11 12<br />
a i mod 13 1 6 10 8 9 2 12 7 3 5 4 11<br />
Daraus folgt Q13 = {1, 3, 4, 9, 10, 12} sowie Q 13 = {2, 5, 6, 7, 8, 11}.<br />
2.8.4 Blum-Zahl<br />
Eine Zahl n ∈ wird Blum-Zahl genannt, wenn es zwei Primzahlen p = q mit n = pq<br />
gibt, die kongruent <strong>zu</strong> 3 modulo 4 sind<br />
26
2 Definitionen<br />
Sei n = pq eine Blum-Zahl und a ∈ Qn. Dann hat a genau vier Quadratwurzeln<br />
modulo n, von <strong>de</strong>nen genau eine ebenfall in Qn liegt. Diese einzige in Qn liegen<strong>de</strong> Zahl<br />
wird Hauptquadratwurzel genannt.<br />
Beispiel 6<br />
Sei n = 21 eine Blum-Zahl. Die vier Wurzeln für eine Zahl a = 4 lauten dann 2, 5, 16<br />
und 19. Die einzige in Qn liegen<strong>de</strong> Hauptquadratwurzel ist dabei 16.<br />
Ist n = pq eine Blum-Zahl, dann ist die Funktion f : Qn → Qn <strong>de</strong>finiert durch<br />
f(x) = x 2 (mod n) eine Permutation. Das Inverse <strong>de</strong>r Funktion f ist<br />
2.8.5 Diskreter Logarithmus<br />
f −1 (x) = x (p−1)(q−1)+4<br />
8 mod n.<br />
Die Sicherheit vieler kryptographischer Techniken basiert auf <strong>de</strong>r Schwierigkeit <strong>de</strong>s diskreten<br />
logarithmischen Problems (DLP).<br />
Für diesen Abschnitt bezeichnet G eine endliche zyklische Gruppe vom Grad n mit<br />
<strong>de</strong>m erzeugen<strong>de</strong>n Element α. G kann sich vorgestellt wer<strong>de</strong>n als eine multiplikative<br />
Gruppe ∗ n vom Grad p−1, beim <strong>de</strong>m die Gruppenoperation eine Multiplikation modulo<br />
p ist.<br />
Diskreter Logarithmus<br />
Seien G und α wie beschrieben und sei β ∈ G. Der diskrete Logarithmus von β <strong>zu</strong>r Basis<br />
α, bezeichnet mit log α β, ist die ein<strong>de</strong>utige ganze Zahl x mit 0 ≤ x ≤ n − 1, so dass<br />
β = α x gilt.<br />
Beispiel 7<br />
Sei p = 97. Dann hat die zyklische Gruppe ∗ 97 <strong>de</strong>n Grad n = 96. Ein erzeugen<strong>de</strong>s<br />
Element von ∗ 97 ist α = 5. Da 5 32 ≡ 35 (mod 97) gilt, liegt log 5 35 = 32 in ∗ 97.<br />
Nachfolgend ein paar elementare Regeln über Logarithmen:<br />
Sei G eine zyklische Gruppe vom Grad n mit einem erzeugen<strong>de</strong>n Elemente α. Seien<br />
weiterhin β, γ ∈ G und s eine beliebige ganze Zahl. Dann gilt:<br />
(i) log α(βγ) = (log α β + log α γ) mod n<br />
(ii) log α β s = s log α β mod n<br />
27
2 Definitionen<br />
Problem <strong>de</strong>s diskreten Logarithmus (DLP)<br />
Das diskrete Logarithmus Problem besagt folgen<strong>de</strong>s: Seien p eine Primzahl, α ein erzeugen<strong>de</strong>s<br />
Element von ∗ p und β ∈ ∗ p. Dann wird die ganze Zahl x mit 0 ≤ x ≤ p − 2<br />
gesucht, für die α x ≡ β (mod p) gilt.<br />
Da<strong>zu</strong> existiert die allgemeine Form <strong>de</strong>s<br />
Problem <strong>de</strong>s allgemeinen diskreten Logarithmus (GDLP) 8<br />
Sei G eine endliche zyklische Gruppe vom Grad n mit <strong>de</strong>m erzeugen<strong>de</strong>n Element α und<br />
einem weiteren Element β ∈ G. Gesucht wird die ganze Zahl x mit 0 ≤ x ≤ n − 1, so<br />
dass α x = β gilt.<br />
Anmerkung: Die Schwiergikeit <strong>de</strong>s GDLP ist unabhängig vom gewählten erzeugen<strong>de</strong>n<br />
Element. Seien α und γ zwei erzeugen<strong>de</strong> Elemente <strong>de</strong>r zyklischen Gruppe G<br />
vom Grad n und sei β ∈ G. Seien x = log α β, y = log γ β und z = log α γ. Dann gilt<br />
α x = β = γ y = (α z ) y . Daraus folgt x = zy mod n und<br />
log γ β = (log α β)(log α γ) −1 mod n<br />
Das be<strong>de</strong>utet, dass je<strong>de</strong>r Algorithmus, <strong>de</strong>r <strong>de</strong>n Logarithmus <strong>zu</strong>r Basis α berechnet,<br />
benutzt wer<strong>de</strong>n kann, um <strong>de</strong>n Logarithmus <strong>zu</strong> je<strong>de</strong>r beliebigen Basis γ <strong>zu</strong> berechnen,<br />
wenn γ ein erzeugen<strong>de</strong>s Element von G ist.<br />
Die einfachste Lösung für das GDLP besteht darin, nacheinan<strong>de</strong>r alle α 0 , α 1 , α 2 , . . .<br />
<strong>zu</strong> berechnen, bis β gefun<strong>de</strong>n wur<strong>de</strong>. Diese Metho<strong>de</strong> benötigt O(n) Versuche, wobei n<br />
<strong>de</strong>r Grad von α, β ist, und ist daher für große n ineffizient (was im Falle <strong>de</strong>r Kryptographie<br />
von beson<strong>de</strong>rem Interesse ist). Eine Form von Annäherungsverfahren kann nicht<br />
verwen<strong>de</strong>t wer<strong>de</strong>n, <strong>de</strong>nn im Gegensatz <strong>zu</strong>r reellen Logarithmusfunktion kann man über<br />
die diskrete nicht sagen, sie sei stetig o<strong>de</strong>r monoton. Beispielsweise folgt aus x < y nicht<br />
log α(x) < log α(y).<br />
Die schnellsten bislang bekannten Verfahren <strong>zu</strong>r Berechnung <strong>de</strong>s diskreten Logarithmus<br />
benötigen in Abhängigkeit <strong>de</strong>r Gruppeneigenschaft und <strong>de</strong>s Gra<strong>de</strong>s (z.B. ob <strong>de</strong>r<br />
Grad eine Primzahl o<strong>de</strong>r sogar eine Blum-Zahl ist) subexponenzielle Zeit, wer<strong>de</strong>n hier<br />
jedoch nicht weiter aufgeführt.<br />
2.8.6 Binärer Körper – Galois-Feld GF (2)<br />
Die meisten <strong>de</strong>r in dieser Arbeit vorgestellten Protokolle arbeiten in <strong>de</strong>n Basis-Algorithmen<br />
lediglich auf einzelnen Bits. Aus diesem Grund sind einige explizit auf <strong>de</strong>m binären<br />
Körper <strong>de</strong>finiert bzw. nutzen diesen.<br />
8 engl: generalized discrete logarithm problem<br />
28
2 Definitionen<br />
Im Gegensatz <strong>zu</strong> <strong>de</strong>n unbeschränkten Körpern wie z.B. o<strong>de</strong>r , die unendlich viele<br />
Elemente beinhalten, wer<strong>de</strong>n in <strong>de</strong>r modularen Arithmetik nur Körper mit endlich vielen<br />
Elementen betrachtet. Endliche Körper wer<strong>de</strong>n auch Galois-Fel<strong>de</strong>r genannt und mit GF<br />
bezeichnet, wobei mit einer Zahl p <strong>de</strong>r Grad <strong>de</strong>s Körpers GF (p) angegeben wird. Dieser<br />
Körper enthält genau p unterschiedliche Elemente. Die Zahl p darf nicht beliebig gewählt<br />
wer<strong>de</strong>n, um die Axiome <strong>de</strong>r endlichen Körper <strong>zu</strong> erfüllen. Sie muss eine Primzahl o<strong>de</strong>r<br />
eine geradzahlige Potenz einer Primzahl sein.<br />
Das Rechnen modulo p von ganzen Zahlen aus genügt allen Axiomen eines Ringes.<br />
Dabei bil<strong>de</strong>t die Menge aller Zahlen unter <strong>de</strong>n bei<strong>de</strong>n Rechenoperationen Addition und<br />
Multiplikation jeweils modulo p <strong>de</strong>n Restklassenring GF (p) = (p, ⊕, ⊙).<br />
Hier soll keine vertiefen<strong>de</strong> Einführung in die endlichen Körper vorgenommen wer<strong>de</strong>n.<br />
Da<strong>zu</strong> wird auf weiterführen<strong>de</strong> Literatur verwiesen, die hauptsächlich <strong>de</strong>r Nachrichtentechnik<br />
und <strong>de</strong>n Codierungsverfahren entstammt. Dort wer<strong>de</strong>n Galois-Fel<strong>de</strong>r unterschiedlicher<br />
Gra<strong>de</strong> verwen<strong>de</strong>t. Als ein Einstieg <strong>zu</strong> Galois-Fel<strong>de</strong>rn kann u.a. [Sta02]<br />
empfohlen wer<strong>de</strong>n.<br />
Für die mo<strong>de</strong>rne Kryptographie ist beson<strong>de</strong>rs <strong>de</strong>r zweielementige o<strong>de</strong>r binäre Körper<br />
GF (2) = ({0, 1}, +, ∗) von Interesse. Aufgrund <strong>de</strong>r Modulo-Rechnung gelten folgen<strong>de</strong><br />
Rechenregeln, die in Form einer Additions- und Multiplikationstabelle dargestellt wer<strong>de</strong>n:<br />
+ 0 1 * 0 1<br />
0 0 1 0 0 0<br />
1 1 0 1 0 1<br />
Tabelle 2: Additions- und Multiplikationstabelle im GF (2)<br />
Der Umgang mit <strong>de</strong>m Körper GF (2) ist im Hinblick auf die mo<strong>de</strong>rne Kryptographie<br />
und die <strong>zu</strong>vor beschriebenen Schaltkreise beson<strong>de</strong>rs gut geeignet, da eine Addition in<br />
GF (2) einem XOR-Gatter und eine Multiplikation einem AND-Gatter entspricht (siehe<br />
auch Beschreibung von Schaltkreisen in Abschnitt 2.6 ab Seite 17).<br />
29
3 Zero–<strong>Knowledge</strong> Proof<br />
3 Zero–<strong>Knowledge</strong> Proof<br />
3.1 Definition <strong>de</strong>s Zero–<strong>Knowledge</strong> Proofs<br />
Aufgrund <strong>de</strong>r beson<strong>de</strong>ren Be<strong>de</strong>utung <strong>de</strong>r Zero–<strong>Knowledge</strong> Proofs sowohl in <strong>de</strong>r theoretischen<br />
Kryptographie als auch in <strong>de</strong>r theoretischen Informatik wur<strong>de</strong>n in <strong>de</strong>r Folgezeit<br />
unzählige Arbeiten über dieses Thema veröffentlicht. Neben <strong>de</strong>n Hauptarbeiten<br />
von Goldwasser, Micali und Rackoff [GMR85] sowie Goldreich, Micali und Widgerson<br />
[GMW86] sowie ähnlich gelagerten Arbeiten wie die Arthur–Merlin Games von Babai<br />
[Bab85] o<strong>de</strong>r eine praxisnähere Abwandlung <strong>de</strong>r Arbeiten aus [GMR85] durch Tompa<br />
und Woll [TW87] ist als allgemeine Einführung insbeson<strong>de</strong>re das Grundlagenwerk von<br />
Goldreich [Gol01] <strong>zu</strong> erwähnen.<br />
In dieser Arbeit soll nur ein einführen<strong>de</strong>r Überblick über Zero–<strong>Knowledge</strong> Proofs<br />
gegeben wer<strong>de</strong>n, um dann in Kapitel 4 ab Seite 36 darauf aufbauend die Zero–<strong>Knowledge</strong><br />
Arguments <strong>zu</strong> <strong>de</strong>finieren.<br />
Kurz gesagt be<strong>de</strong>utet Zero–<strong>Knowledge</strong> Proof ein interaktives Beweissystem (P, V ),<br />
wenn <strong>de</strong>m Verifier V in <strong>de</strong>r Interaktion mit <strong>de</strong>m Prover P für eine Eingabe x ∈ L keine<br />
Information vermittelt wird, die V nicht selber aus x ohne Interaktion mit P berechnen<br />
kann. Das gilt auch für einen eventuell täuschen<strong>de</strong>n Verifier V ∗ . Zero–<strong>Knowledge</strong> ist<br />
eine Eigenschaft <strong>de</strong>s Prover P. Sie besagt, wie sicher P gegen Angriffe ist, die auf die<br />
Herausgabe von Informationen gerichtet sind.<br />
Zur Prüfung <strong>de</strong>r Zero–<strong>Knowledge</strong> Eigenschaft wird daher ein formales Kriterium<br />
benötigt, mit <strong>de</strong>m die Ausgabe von P während <strong>de</strong>r gesamten Kommunikationsphase<br />
mit beliebigen Verifiern V ∗ überprüft wer<strong>de</strong>n kann. Zur Prüfung wird für je<strong>de</strong> Maschine<br />
V ∗ ein polynomiell–beschränkter Simulator konstruiert, so dass sich die Ausgabe dieses<br />
Simulators (berechenbar) nicht von <strong>de</strong>m für V ∗ sichtbaren Protokoll unterschei<strong>de</strong>t.<br />
Definition 3.1 (Zero–<strong>Knowledge</strong> Proof)<br />
Sei (P, V ∗ ) ein interaktives Beweissystem für eine Sprache L mit x ∈ L. Dann hat<br />
(P, V ∗ ) die Zero–<strong>Knowledge</strong> Eigenschaft bzw. ist ein Zero–<strong>Knowledge</strong> Proof, wenn für<br />
je<strong>de</strong> Maschine V ∗ eine probabilistische polynomiell–beschränkte Maschine M ∗ existiert,<br />
so dass die bei<strong>de</strong>n Familien von Wahrscheinlichkeitsverteilungen {view P<br />
V ∗(x)}x∈L und<br />
{M ∗ (x)}x∈L (berechenbar) ununterscheidbar sind.<br />
Dabei ist <strong>zu</strong> beachten, dass berechenbar ununterscheidbar eine Schwächung <strong>de</strong>r Sicherheit<br />
<strong>de</strong>s Provers be<strong>de</strong>utet, da in <strong>de</strong>r Praxis <strong>de</strong>r Verifier nach <strong>de</strong>r Kommunikation<br />
erheblich mehr Zeit und gegebenenfalls eine höhere Berechnungskomplexität <strong>zu</strong>r Verfügung<br />
haben kann, um aus <strong>de</strong>m Kommunikationsprotokoll eventuell doch noch weitere<br />
Informationen <strong>zu</strong> berechnen.<br />
30
3 Zero–<strong>Knowledge</strong> Proof<br />
3.2 Perfekt Zero–<strong>Knowledge</strong> versus Berechenbar Zero–<strong>Knowledge</strong><br />
Entsprechend <strong>de</strong>r Einteilung in Definition 2.14 auf Seite 14 wird daher Zero–<strong>Knowledge</strong><br />
in Perfekt Zero–<strong>Knowledge</strong> und Berechenbar Zero–<strong>Knowledge</strong> unterschie<strong>de</strong>n.<br />
Der entschei<strong>de</strong>n<strong>de</strong> Unterschied zwischen berechenbarem und perfektem Zero–<strong>Knowledge</strong><br />
liegt darin, dass im ersten Fall <strong>de</strong>r Verifier möglicherweise Informationen über das<br />
Geheimnis <strong>de</strong>s Provers erlangt, die von <strong>de</strong>m Verifier nicht in polynomieller Zeit entschlüsselt<br />
wer<strong>de</strong>n können (außer die kryptographischen Annahmen versagen), während<br />
im zweiten Fall <strong>de</strong>r Verifier überhaupt keine Informationen über das Geheimnis <strong>de</strong>s<br />
Provers erhält (über die Existenz und <strong>de</strong>m Umstand, dass <strong>de</strong>r Prover eines hat, hinaus).<br />
Die von einer Maschine V ∗ erlangten Informationen könnten trotz einer entsprechen<strong>de</strong>n<br />
polynomiellen Beschränkung V ∗ ’s im Nachhinein für einen beliebigen Zeitraum<br />
und unter Zuhilfenahme einer beliebige Anzahl weiterer Maschinen ” untersucht“ wer<strong>de</strong>n.<br />
In <strong>de</strong>r Praxis existieren Verfahren, wo <strong>de</strong>r Zeitraum unter Beachtung <strong>de</strong>r vorhan<strong>de</strong>nen<br />
Rechnerkapazitäten überschaubar ist, in <strong>de</strong>m die Informationen <strong>de</strong>s Provers geheim<br />
bleiben müssen. In diesen Fällen kann mittels <strong>de</strong>s Sicherheitsgrenzwerts nk bei <strong>de</strong>r µ-<br />
Funktion (siehe da<strong>zu</strong> Definition 2.13 auf Seite 13) die gewünschte Höhe <strong>de</strong>r Sicherheit<br />
gewählt wer<strong>de</strong>n.<br />
In an<strong>de</strong>ren Fällen <strong>de</strong>r praktischen Kryptographie ist es dagegen erfor<strong>de</strong>rlich, dass<br />
die <strong>de</strong>m Prover bekannten Informationen auch im Nachhinein nicht berechenbar sind, so<br />
dass ein perfektes Zero–<strong>Knowledge</strong> Verfahren benötigt wird.<br />
Es ist somit von <strong>de</strong>r relativen Wichtigkeit bezüglich <strong>de</strong>r Geheimhaltung, <strong>de</strong>r Rechengeschwindigkeit<br />
<strong>de</strong>r Maschinen in Verbindung mit <strong>de</strong>r Komplexität <strong>de</strong>r verwen<strong>de</strong>ten Algorithmen<br />
sowie <strong>de</strong>r Täuschungssicherheit gegen <strong>de</strong>n Prover abhängig, welche Verfahren<br />
eingesetzt wer<strong>de</strong>n. In <strong>de</strong>r Praxis kann davon ausgegangen wer<strong>de</strong>n, dass die Ehrlichkeit<br />
<strong>de</strong>s Provers und damit <strong>de</strong>ssen Täuschungspotenzial nur für die Dauer <strong>de</strong>r Ausführung<br />
eine mitentschei<strong>de</strong>n<strong>de</strong> Rolle spielt, weshalb die Entscheidung für perfekte bzw. berechenbare<br />
Zero–<strong>Knowledge</strong> Verfahren überweigend nur noch von <strong>de</strong>r Komplexität <strong>de</strong>r<br />
Algorithmen beeinflusst wer<strong>de</strong>n.<br />
3.3 Komplexität <strong>de</strong>s Zero–<strong>Knowledge</strong> Proofs<br />
Die Menge <strong>de</strong>r Sprachen L, für die ein Zero–<strong>Knowledge</strong> Proof existiert, wird wie folgt<br />
beschrieben.<br />
Definition 3.2 (Klasse <strong>de</strong>r Zero–<strong>Knowledge</strong> Proofs)<br />
Die Klasse ZK enthält alle Sprachen, für die ein Zero–<strong>Knowledge</strong> Proof existiert. Mit<br />
PZK rsp. CZK wer<strong>de</strong>n die Klassen <strong>de</strong>r Sprachen bezeichnet, die einen perfekten Zero–<strong>Knowledge</strong><br />
Proof rsp. einen berechenbaren (engl. Computational) Zero–<strong>Knowledge</strong><br />
Proof haben.<br />
31
3 Zero–<strong>Knowledge</strong> Proof<br />
Von Goldreich, Micali und Widgerson wur<strong>de</strong> in [GMW86] gezeigt, dass je<strong>de</strong> Sprache<br />
in N P einen Zero–<strong>Knowledge</strong> Proof besitzt. Das wur<strong>de</strong> mittels <strong>de</strong>r N P-vollständigen<br />
3-färbbaren Graphen nachgewiesen, die <strong>zu</strong>r Klasse 3C gehören, für die die Existenz von<br />
Zero–<strong>Knowledge</strong> Proofs bewiesen wur<strong>de</strong>. Somit gilt 3C ∈ ZK.<br />
Der da<strong>zu</strong>gehörige Zero–<strong>Knowledge</strong> Proof wur<strong>de</strong> wie folgt durchgeführt.<br />
Definition 3.3 (Zero–<strong>Knowledge</strong> Proof für Dreifärbbare Graphen)<br />
Sei G(V, E) ein Graph. Die Knotenfärbung sei eine Funktion φ : V → {1, 2, 3}. Seien<br />
n = |V |, m = |E| und <strong>de</strong>r Einfachheit halber V = {1, 2, . . . , n}.<br />
Die folgen<strong>de</strong>n vier Schritte wer<strong>de</strong>n m 2 Mal ausgeführt, wobei in je<strong>de</strong>m Schritt unabhängige<br />
Münzwürfe benötigt wer<strong>de</strong>n.<br />
Unter <strong>de</strong>r Vorausset<strong>zu</strong>ng, dass ein sicheres und ein<strong>de</strong>utiges Verschlüsselungsverfahren<br />
mit f(x, r) = f(y, r) ⇒ x = y mit r als <strong>zu</strong>fälligem Münzwurf existiert, gilt:<br />
1. P wählt eine Permutation π ∈R Sym({1, 2, 3}) mit <strong>zu</strong>fälligen rv’s <strong>de</strong>r Drei-Färbung,<br />
verschlüsselt diese, in<strong>de</strong>m für je<strong>de</strong>s v ∈ V die Rv = f(π(φ(v)), rv) berechnet<br />
wer<strong>de</strong>n, und sen<strong>de</strong>t diesen verschlüsselten Graphen als Folge R1, . . . , Rn an V.<br />
2. V wählt <strong>zu</strong>fällig eine Kante e ∈R E und sen<strong>de</strong>t diese an P. Damit fragt V nach <strong>de</strong>r<br />
Färbung <strong>de</strong>r Endpunkte von e ∈ E.<br />
3. Wenn e = (u, v) ∈ E gilt, offenbart P die Färbung von u und v, in<strong>de</strong>m er die<br />
Verschlüsselung dieser Färbungen als (π(φ(u)), ru) und (π(φ(v)), rv) an V sen<strong>de</strong>t.<br />
Ist e /∈ E stoppt P.<br />
4. V prüft <strong>de</strong>n aus Schritt (3) übermittelten ” Beweis“. Insbeson<strong>de</strong>re prüft V ob<br />
• Ru = f(π(φ(u)), ru),<br />
• Rv = f(π(φ(v)), rv),<br />
• π(φ(u)) = π(φ(v)) und<br />
• π(φ(u)), π(φ(v)) ∈ {1, 2, 3}.<br />
Ist eine <strong>de</strong>r Bedingungen verletzt, dann lehnt V ab und stoppt. An<strong>de</strong>rnfalls fährt<br />
V mit <strong>de</strong>r nächsten Iteration fort.<br />
Die Drei-Färbung wird akzeptiert, wenn V alle Iterationen erfolgreich durchlaufen<br />
hat.<br />
Der Nachweis über die Korrektheit ist etwas umfangreicher und kann in [GMW86]<br />
nachgelesen wer<strong>de</strong>n. Darüber hinaus wird dort gezeigt, dass nicht nur je<strong>de</strong> N P-Sprache<br />
son<strong>de</strong>rn je<strong>de</strong> Sprache in IP einen Zero–<strong>Knowledge</strong> Proof hat. Damit sind auch diejenigen<br />
32
3 Zero–<strong>Knowledge</strong> Proof<br />
Sprachen umfasst, die zwar nicht in N P liegen, für die aber trotz<strong>de</strong>m ein effizientes<br />
Beweisverfahren existiert.<br />
In [Gol01] ist nach<strong>zu</strong>lesen, dass folgen<strong>de</strong> Beziehungen gelten:<br />
BPP ⊆ PZK ⊆ CZK ⊆ IP<br />
Es wird allgemein angenommen, dass die Beziehungen zwischen BPP, PZK und<br />
CZK sogar strikt sind. Unter <strong>de</strong>r Annahme <strong>de</strong>r Existenz von Einweg–Funktionen gilt<br />
darüber hinaus, dass CZK und IP i<strong>de</strong>ntisch sind. Somit dürften folgen<strong>de</strong> Beziehungen<br />
zwischen <strong>de</strong>n Klassen bestehen:<br />
BPP ⊂ PZK ⊂ CZK = IP<br />
3.4 Arthur–Merlin Beweissysteme<br />
1985 wur<strong>de</strong>n von Babai in [Bab85] die sogenannten Arthur–Merlin Games eingeführt.<br />
Dabei wur<strong>de</strong> versucht, die kleinste Klasse von Sprachen <strong>zu</strong> charakterisieren, für die interaktive<br />
Beweissyssteme existieren. Der grundsätzliche Unterschied <strong>zu</strong> <strong>de</strong>n bis hierher<br />
<strong>de</strong>finierten interaktiven Beweissystemen ist <strong>de</strong>r Umstand, dass bei <strong>de</strong>n Arthur–Merlin<br />
Games <strong>de</strong>r Prover und <strong>de</strong>r Verifier (dort als Merlin und Arthur bezeichnet) eine gemeinsame<br />
Eingabe bezüglich <strong>de</strong>s Zufallsban<strong>de</strong>s haben. Aus diesem Grund wer<strong>de</strong>n heute<br />
Zero–<strong>Knowledge</strong> Proof und Zero–<strong>Knowledge</strong> Argument Systeme, die über eine öffentliche,<br />
gemeinsame Eingabe verfügen, auch als Arthur–Merlin Systeme bezeichnet. Eine<br />
formale Definition <strong>de</strong>r Arthur–Merlin Games, wie sie von Babai erfolgte, wird hier unterlassen,<br />
da diese Definition nicht weiter benötigt wird. Von Goldwasser und Sipser<br />
wur<strong>de</strong> jedoch in [GS86] gezeigt, dass Arthur–Merlin bzw. öffentliche Münzwurf Systeme<br />
equivalent <strong>zu</strong> allgemeinen interaktiven Beweissystemen sind.<br />
3.5 Witness indistinguishing - Witness hiding<br />
Die Konstruktion von Zeugnis–ununterscheidbaren und Zeugnis–verbergen<strong>de</strong>n Systemen<br />
(engl. Witness Indistinguishable and Witness Hiding Protocols) wur<strong>de</strong> von Feige und<br />
Shamir in [FS90a] vorgestellt. Diese Technik ermöglicht innerhalb <strong>de</strong>r Zero–<strong>Knowledge</strong><br />
Proofs neue kryptographische Algorithmen mit Eigenschaften, die mit <strong>de</strong>r bisherigen<br />
Konstruktion <strong>de</strong>r Zero–<strong>Knowledge</strong> Proofs nicht möglich sind.<br />
Grob gesagt ist ein interaktives Protokoll (A, B) Zeugnis–ununterscheidbar, wenn A<br />
eines von vielen geheimen Zeugnissen für eine N P Behauptung nutzt, ohne dass B mit<br />
33
3 Zero–<strong>Knowledge</strong> Proof<br />
einiger Wahrscheinlichkeit sagen kann, welches Zeugnis A verwen<strong>de</strong>t. Das Protokoll ist<br />
Zeugnis–verbergend, wenn am En<strong>de</strong> <strong>de</strong>r Kommunikation B kein neues Zeugnis berechnen<br />
kann, welches er nicht schon <strong>zu</strong> Beginn <strong>de</strong>r Interaktion kannte.<br />
In [FS90a] wer<strong>de</strong>n dabei zwei zentrale Resultate bewiesen:<br />
1. Im Gegensatz <strong>zu</strong> Zero–<strong>Knowledge</strong> Protokollen bleibt die Zeugnis–ununterscheidbarkeit<br />
auch unter beliebiger Komposition, insbeson<strong>de</strong>re also auch unter paralleler<br />
Ausführung erhalten.<br />
2. Wenn eine Aussage min<strong>de</strong>stens zwei unabhängige Zeugnisse hat, dann ist je<strong>de</strong>s<br />
Zeugnis–ununterscheidbare Protokoll für diese Aussage auch Zeugnis–verbergend.<br />
Der entschei<strong>de</strong>n<strong>de</strong> Unterschied <strong>zu</strong> Zero–<strong>Knowledge</strong> Protokollen ist dabei, dass in<br />
<strong>de</strong>m Ausgabeprotokoll <strong>de</strong>s Provers eines Zero–<strong>Knowledge</strong> Protokolls überhaupt keine<br />
Information vorhan<strong>de</strong>n ist, die <strong>de</strong>r Verifier nicht auch selber berechnen könnte. Bei einem<br />
Zeugnis–verbergen<strong>de</strong>n Protokoll ist lediglich gefor<strong>de</strong>rt, dass in einem Ausgabeprotokoll<br />
<strong>de</strong>s Provers keine Information über das Geheimnis bzw. das Zeugnis enthalten ist.<br />
Definition 3.4 (Zeugnis–ununterscheidbar)<br />
Seien R eine binäre Relation, L = L(R) eine Sprache, x ein genügend großes Wort<br />
aus L und R(x) die Menge <strong>de</strong>r Zeugnisse für x. Ein Beweissystem (P, V) ist Zeugnis–ununterscheidbar<br />
über R, wenn für je<strong>de</strong>n Verifier V ∗ , alle z1, z2 ∈ R(x)<br />
und je<strong>de</strong> Hilfsfunktion f(·) für V ∗ die Familien {viewV ∗(P(x, z1), V ∗ (x, f(x)))}x∈L und<br />
{viewV ∗(P(x, z2), V ∗ (x, f(x)))}x∈L ununterscheidbar sind.<br />
Im Unterschied <strong>zu</strong>r Zero–<strong>Knowledge</strong> Definition wird dabei kein Simulator benötigt.<br />
In [FS90a] wird bewiesen, dass unter <strong>de</strong>r Vorausset<strong>zu</strong>ng <strong>de</strong>r Existenz von Einweg–<br />
Funktionen je<strong>de</strong> N P Sprache ein Zeugnis–ununterscheidbares Beweissystem mit konstanter<br />
Run<strong>de</strong>nzahl hat.<br />
Das Konzept <strong>de</strong>s Zeugnis–verbergends ist eine mögliche Alternative <strong>zu</strong> Zero–<strong>Knowledge</strong>.<br />
Es stellt geringere Anfor<strong>de</strong>rungen als Zero–<strong>Knowledge</strong>, erfüllt aber in vielen Fällen<br />
die Sicherheitsanfor<strong>de</strong>rungen in kryptographischen Protokollen.<br />
Im Rahmen dieser Arbeit ist die Eigenschaft eines Protokolls, Zeugnis–verbergend<br />
<strong>zu</strong> sein, nicht weiter relevant, so dass auf weitergehen<strong>de</strong> Erläuterungen verzichtet wird.<br />
3.6 Statistisch Korrekt versus Berechenbar Korrekt<br />
Eine weitere Unterscheidungsmöglichkeit bei bekannten Zero–<strong>Knowledge</strong> Protokollen ist<br />
die aus <strong>de</strong>r Sicht <strong>de</strong>s Verifiers, d.h. dass nach <strong>de</strong>m Grad <strong>de</strong>r Korrektheit <strong>de</strong>s Provers<br />
unterschie<strong>de</strong>n wird. 9<br />
9 Siehe da<strong>zu</strong> Definition 4.1, Korrektheitsbedingung, auf Seite 37<br />
34
3 Zero–<strong>Knowledge</strong> Proof<br />
Während oft beim perfekten versus berechenbaren Zero–<strong>Knowledge</strong> die Geheimhaltung<br />
über die Kommunikation hinaus gewährleistet sein muss, braucht in <strong>de</strong>n meisten<br />
Fällen die Korrektheit <strong>de</strong>s Provers nur während <strong>de</strong>r Kommunikationsphase von einigen<br />
Sekun<strong>de</strong>n bzw. Minuten gesichert sein. Das interaktive Beweissystem muss in <strong>de</strong>r Praxis<br />
keinem täuschen<strong>de</strong>n Prover mit unbegrenzter Rechenleistung o<strong>de</strong>r Rechenzeit standhalten.<br />
In Abhängigkeit bekannter Computerleistungen könnte z.B. <strong>de</strong>r Verifier nach einer<br />
wählbaren Zeitschranke die Kommunikation abbrechen bzw. bräuchte <strong>de</strong>m Prover beim<br />
Überschreiten <strong>de</strong>r Zeitschranke nicht mehr vertrauen.<br />
Aus diesem Grund hat sich ausgehend von Arbeiten von Brassard, Chaum und Crépeau<br />
[BC86, Cha87, BCC88] <strong>de</strong>r Begriff Zero–<strong>Knowledge</strong> Argument o<strong>de</strong>r auch Computational<br />
Sound Proofs gebil<strong>de</strong>t.<br />
In Anlehnung an Bellare, Jakobsson und Yung [BJY97] wer<strong>de</strong>n Zero–<strong>Knowledge</strong>-<br />
Proofs und Zero–<strong>Knowledge</strong>-Arguments nach ihrem Grad <strong>de</strong>r Korrektheit abgegrenzt.<br />
Es wird dabei unterschie<strong>de</strong>n, ob und mit welcher Mächtigkeit ein täuschen<strong>de</strong>r Prover<br />
einem Verifier eine unwahre Tatsache als wahr vermitteln kann. Bei einem Zero–<strong>Knowledge</strong><br />
Proof gelingt dieses selbst unbeschränkten Provern nur mit einer vernachlässigbar<br />
kleinen Fehlerwahrscheinlichkeit. Bei einem Zero–<strong>Knowledge</strong> Argument gilt dieser kleine<br />
Fehlerquotient nur noch für Prover, die eine polynomiell–beschränkte Rechenzeit besitzen.<br />
Falls x /∈ L gilt, stellt sich die Frage, wie klein die Fehlerwahrscheinlichkeit ε(·) ist,<br />
mit <strong>de</strong>r ein täuschen<strong>de</strong>r Prover P einen Verifier V davon überzeugen kann, dass trotz<strong>de</strong>m<br />
x ∈ L gilt.<br />
Definition 3.5 (Grad <strong>de</strong>r Korrektheit)<br />
Sei (P, V) in interaktives Beweissystem für eine Sprache L, x /∈ L, k ∈ eine Konstante<br />
und ε : → eine Funktion.<br />
Statistisch Korrekt 10 Nur ein nicht polynomiell–beschränkter Prover P wird V davon<br />
überzeugen können, dass x ∈ L gilt, wobei die erwartete Fehlerwahrscheinlichkeit<br />
ε(k) ist.<br />
Berechenbar Korrekt 11 Einem polynomiell–beschränkten Prover P ist es mit Ausnahme<br />
einer Fehlerwahrscheinlichkeit von ε(k) unmöglich, V davon <strong>zu</strong> überzeugen,<br />
dass x ∈ L gilt. Einem mächtigeren P könnte dieses jedoch mit großer Wahrscheinlichkeit<br />
gelingen.<br />
10 Das ist die Notation aus [GMR85].<br />
11 Diese ursprüngliche Notation stammt von Brassard, Chaum und Crépeau [BC86, Cha87, BCC88]<br />
35
4 Zero–<strong>Knowledge</strong> Arguments<br />
4 Zero–<strong>Knowledge</strong> Arguments<br />
Wie schon bei <strong>de</strong>r Diskussion <strong>de</strong>s Zero–<strong>Knowledge</strong> Proofs im Abschnitt 3.2 auf Seite 31<br />
erwähnt wur<strong>de</strong>, muss bei einem in <strong>de</strong>r Praxis eingesetzten Beweissystem in <strong>de</strong>r Regel<br />
nur für die Dauer <strong>de</strong>r Ausführung gewährleistet sein, dass <strong>de</strong>r Prover <strong>de</strong>n Verifier nicht<br />
täuschen kann. Kurz nach Veröffentlichung <strong>de</strong>r Zero–<strong>Knowledge</strong> Proofs versuchte die<br />
Forschung daher, für praktische Anwendungsfälle geringere aber ausreichen<strong>de</strong> Anfor<strong>de</strong>rungen<br />
an interaktive Beweissysteme stellen <strong>zu</strong> müssen. Brassard, Chaum und Crépeau<br />
[BCC88] veröffentlichten 1988 die erste Arbeit, die sich mit berechenbar ein<strong>de</strong>utigen im<br />
Gegensatz <strong>zu</strong> perfekt ein<strong>de</strong>utigen Beweissystemen befasst. Diese wer<strong>de</strong>n als computationally<br />
sound proof systems o<strong>de</strong>r auch argument systems bezeichnet.<br />
Der Hauptteil dieser Arbeit beschäftigt sich damit, typische Vertreter dieser Zero–<br />
<strong>Knowledge</strong> Arguments vor<strong>zu</strong>stellen. Aus <strong>de</strong>m Abschnitt 3.6 ergibt sich die Unterscheidung<br />
von Zero–<strong>Knowledge</strong> Arguments und Zero–<strong>Knowledge</strong> Proofs dadurch, dass Zero–<br />
<strong>Knowledge</strong> Arguments ausschließlich solche Zero–<strong>Knowledge</strong> Verfahren sind, die nur für<br />
die Dauer <strong>de</strong>r Kommunikation für (in <strong>de</strong>r Realität existieren<strong>de</strong>) polynomiell–beschränkte<br />
Prover 12 die Korrektheit <strong>de</strong>r Ausgaben <strong>de</strong>s Provers P garantieren.<br />
Somit erfüllen alle im weiteren Verlauf aufgeführten Protokolle die strengeren Anfor<strong>de</strong>rungen<br />
eines Zero–<strong>Knowledge</strong> Proofs bezüglich <strong>de</strong>r Korrektheit nicht. Da eine statistische<br />
Korrektheit selbstverständlich eine berechenbare Korrektheit umfasst, erfüllen alle<br />
Zero–<strong>Knowledge</strong> Proof Protokolle die Anfor<strong>de</strong>rungen an Zero–<strong>Knowledge</strong> Arguments.<br />
Hier wer<strong>de</strong>n jedoch nur diejenigen Protokolle dargestellt und die Beson<strong>de</strong>rheiten hervorgehoben,<br />
die sich aus <strong>de</strong>r Beschränkung auf die algorithmische Korrektheit ergeben.<br />
Insofern fallen Protokolle aus Arbeiten wie z.B. von Goldreich und Kahan [GK96a],<br />
Dwork und Stockmeyer [DS02] und an<strong>de</strong>ren heraus, die zwar für die Grundlagenforschung<br />
im Bereich <strong>de</strong>r Zero–<strong>Knowledge</strong> Systeme wichtig sind, aber die ausschließlich auf<br />
perfekte bzw. statistische Korrektheit aufbauen.<br />
Zero–<strong>Knowledge</strong> Arguments unterschei<strong>de</strong>n sich von <strong>de</strong>n Zero–<strong>Knowledge</strong> Proofs, in<br />
<strong>de</strong>m die Bedingung <strong>de</strong>r Ein<strong>de</strong>utigkeit <strong>de</strong>s <strong>zu</strong>grun<strong>de</strong> liegen<strong>de</strong>n interaktiven Systems nur<br />
für polynomiell–beschränkte Prover gewährleistet wird. Die formale Definition für interaktive<br />
Argumentsysteme lautet:<br />
Definition 4.1 (Interaktives Argumentsystem)<br />
Sei L ⊆ {0, 1} ∗ eine Sprache, P und V interaktive probabilistische polynomiell–beschränkte<br />
Turing Maschinen und sei (P, V) ein interaktives System, welches beim Akzeptieren<br />
einer Eingabe eine ” 1“ auf die Ausgabe schreibt. Dann ist (P, V) ein interaktives<br />
Argumentsystem für eine Sprache L, wenn gilt:<br />
12 Im Gegensatz <strong>zu</strong> <strong>de</strong>n informationstheoretisch existieren<strong>de</strong>n unbeschränkten Turing Maschinen.<br />
36
• Vollständigkeitsbedingung:<br />
4 Zero–<strong>Knowledge</strong> Arguments<br />
∀k ∈ , ∃N ∈ : ∀x ∈ L, |x| ≥ N : Pr[(P, V)(x) = 1] ≥ 1 − 1<br />
|x| k<br />
• Korrektheits- o<strong>de</strong>r Ein<strong>de</strong>utigkeitsbedingung:<br />
Für je<strong>de</strong> (möglicherweise täuschen<strong>de</strong>) interaktive probabilistische polynomiell–beschränkte<br />
Turing Maschine P ∗ gilt<br />
∀P ∗ : ∀k ∈ , ∃N ∈ : ∀x /∈ L, |x| ≥ N : Pr[(P ∗ , V)(x) = 1] < 1<br />
|x| k<br />
Somit sind die interaktiven Beweissysteme mit Zusatzeingabe gemäß Definition 2.12<br />
gleichzeitig auch interaktive Argumentsysteme mit Zusatzeingabe.<br />
Damit kann die Definition <strong>de</strong>r Zero–<strong>Knowledge</strong> Argument Systeme analog <strong>de</strong>r Definition<br />
3.1 für Zero–<strong>Knowledge</strong> Proofs erfolgen:<br />
Definition 4.2 (Zero–<strong>Knowledge</strong> Argument)<br />
Sei (P, V ∗ ) ein interaktives Argumentsystem für eine Sprache L mit x ∈ L. Dann ist<br />
(P, V ∗ ) ein Zero–<strong>Knowledge</strong> Argument, wenn für je<strong>de</strong> Maschine V ∗ eine probabilis-<br />
tische polynomiell–beschränkte Maschine M ∗ existiert, so dass die bei<strong>de</strong>n Familien von<br />
Wahrscheinlichkeitsverteilungen {view P<br />
V ∗(x)}x∈L und {M ∗ (x)}x∈L (berechenbar) ununterscheidbar<br />
sind.<br />
Ein wichtiges Untersuchungsfeld <strong>de</strong>r Forschung in Be<strong>zu</strong>g auf Zero–<strong>Knowledge</strong> Beweissysteme<br />
ist die Minimierung <strong>de</strong>r Komplexität. Im Zusammenhang mit Zero–<strong>Knowledge</strong><br />
Systemen bezieht sich <strong>de</strong>r Begriff Komplexität auf<br />
• die erfor<strong>de</strong>rlichen algebraischen bzw. informationstheoretischen Vorausset<strong>zu</strong>ngen<br />
und Annahmen, die für das entsprechen<strong>de</strong> Zero–<strong>Knowledge</strong> Argument erfor<strong>de</strong>rlich<br />
sind, und<br />
• die Anzahl <strong>de</strong>r Informationen, die während <strong>de</strong>r Kommunikation zwischen Prover<br />
und Verifier ausgetauscht wer<strong>de</strong>n müssen.<br />
Im ersten Fall ist das Ziel, möglichst keine Annahmen voraus<strong>zu</strong>setzen, die noch nicht<br />
bewiesen sind (wie z.B. die Fragen, ob P ⊂ N P und N P ⊆ P o<strong>de</strong>r ob N P ⊆ BPP)<br />
sowie möglichst niedrige Anfor<strong>de</strong>rungen an die eingesetzten algebraischen bzw. informationstheoretischen<br />
Verschlüsselungsverfahren <strong>zu</strong> stellen.<br />
Im zweiten Fall wird versucht, Protokolle <strong>zu</strong> entwickeln, die die Anzahl <strong>de</strong>r Nachrichten<br />
minimiert auf z.B. O(log |x|) o<strong>de</strong>r eine konstante Run<strong>de</strong>nzahl.<br />
37
4 Zero–<strong>Knowledge</strong> Arguments<br />
Um die unterschiedlichen Zero–<strong>Knowledge</strong> Arguments, die in <strong>de</strong>r Literatur bisher<br />
veröffentlicht wur<strong>de</strong>n, unterteilen <strong>zu</strong> können, wird in Anlehnung an Kapitel 3.2 entsprechend<br />
<strong>de</strong>n algebraischen bzw. informationstheoretischen Vorausset<strong>zu</strong>ngen und Annahmen<br />
bezüglich <strong>de</strong>r Verschlüsselung nach <strong>de</strong>r Sicherheit für <strong>de</strong>n Prover, keine ungewollten<br />
Informationen <strong>zu</strong> veröffentlichen, unterschie<strong>de</strong>n. Die nachfolgend dargestellten Protokolle<br />
wer<strong>de</strong>n daher unterglie<strong>de</strong>rt nach<br />
• berechenbaren Zero–<strong>Knowledge</strong> Verfahren sowie<br />
• perfekten Zero–<strong>Knowledge</strong> Verfahren.<br />
Zur Frage, welches Protokoll die bessere Wahl ist, hat Fortnow in [For87] folgen<strong>de</strong>s<br />
bewiesen: Eine statistische o<strong>de</strong>r perfekte Sicherheit <strong>de</strong>s Provers verlangt zwangsläufig<br />
einen beliebig mächtigen Prover (wobei ein exponentiell mächtiger ausreichend ist), <strong>de</strong>r<br />
<strong>de</strong>n Verifier täuschen kann. Daher ist es unwahrscheinlich, dass ein perfekter Zero–<strong>Knowledge</strong><br />
Proof für ein N P-vollständiges Problem existiert.<br />
Aus naheliegen<strong>de</strong>n Grün<strong>de</strong>n wird daher in bei<strong>de</strong> Richtungen geforscht, wobei <strong>de</strong>r<br />
Schwerpunkt <strong>de</strong>r informationstheoretischen, wissenschaftlichen Forschung bei berechenbaren<br />
Zero–<strong>Knowledge</strong> Verfahren liegt, da mit diesen N P-vollständige Berechenbarkeitsund<br />
Komplexitätsuntersuchungen mit neuen ” Werkzeugen“ möglich sind. Diese Verfahren<br />
können selbstverständlich auch in <strong>de</strong>r Praxis eingesetzt wer<strong>de</strong>n, verlangen dann aber<br />
eine Abschät<strong>zu</strong>ng über die Wahl <strong>de</strong>s Sicherheitsparameters, um das Geheimnis <strong>de</strong>s Provers<br />
für eine überschaubare Zeit sicher<strong>zu</strong>stellen. Für die eher praxisrelevante Forschung,<br />
die eine (zeitlich) unbegrenzte Sicherheit <strong>de</strong>s Provers beabsichtigt, stehen dagegen die<br />
perfekten Zero–<strong>Knowledge</strong> Verfahren im Mittelpunkt, auch wenn damit möglicherweise<br />
keine N P-vollständigen Verfahren <strong>de</strong>finiert wer<strong>de</strong>n können.<br />
Eine weitere Einteilung <strong>de</strong>r unterschiedlichen Zero–<strong>Knowledge</strong> Argument Verfahren<br />
wird in <strong>de</strong>r Literatur nach <strong>de</strong>r Anzahl <strong>de</strong>r benötigten Run<strong>de</strong>n gemäß Definition 2.7<br />
vorgenommen. Seien (P, V ) ein Zero–<strong>Knowledge</strong> Argument und f eine positive Funktion<br />
gemäß Definition 2.7.<br />
• Wenn f ∈ O(1) gilt, dann hat (P, V ) eine konstante Run<strong>de</strong>nzahl.<br />
• Sei p ein positives, wachsen<strong>de</strong>s Polynom und gilt f ∈ O(p), dann hat (P, V ) eine<br />
polynomielle Run<strong>de</strong>nzahl.<br />
Aus naheliegen<strong>de</strong>n Grün<strong>de</strong>n ist eine überpolynomielle Komplexität in Be<strong>zu</strong>g auf die<br />
Anzahl <strong>de</strong>r Run<strong>de</strong>n nicht von Interesse <strong>de</strong>r Forschung. An<strong>de</strong>rerseites fallen alle Verfahren,<br />
die nicht in konstanter (also auch sub-polynomieller) Run<strong>de</strong>nzahl arbeiten, in die Klasse<br />
<strong>de</strong>r polynomiellen Verfahren.<br />
38
4 Zero–<strong>Knowledge</strong> Arguments<br />
Zu <strong>de</strong>m Komplex <strong>de</strong>r berechenbaren Zero–<strong>Knowledge</strong> Arguments mit polynomieller<br />
Run<strong>de</strong>nzahl sind keine wissenschaftlichen Arbeiten vorhan<strong>de</strong>n. Daher wer<strong>de</strong>n im nachfolgen<strong>de</strong>n<br />
Text aufgrund <strong>de</strong>r Einteilung in<br />
1. perfekte Zero–<strong>Knowledge</strong> Arguments mit polynomieller Run<strong>de</strong>nzahl,<br />
2. perfekte Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl und<br />
3. berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
hauptsächlich die Arbeiten von<br />
• Naor, Ostrovsky, Venkatesan und Yung [NOVY92] in Abschnitt 5 ab Seite 41 als<br />
Vertreter von Punkt 1,<br />
• Brassard, Crépeau und Yung [BCY91] in Abschnitt 6 ab Seite 53 als Vertreter von<br />
Punkt 2 und<br />
• Barak [Bar03] in Abschnitt 7 ab Seite 72 als Vertreter für <strong>de</strong>n letzten Punkt<br />
ausführlich vorgestellt.<br />
Aus <strong>de</strong>m Vorhan<strong>de</strong>nsein von Protokollen mit konstanter Run<strong>de</strong>nzahl, die vor<strong>de</strong>rgründig<br />
besser sind, als diejenigen mit polynomieller Run<strong>de</strong>nzahl, kann aber nicht <strong>de</strong>r<br />
Schluss gezogen wer<strong>de</strong>n, dass Protokolle mit polynomieller Komplexität überflüssig sind.<br />
Der Vorteil <strong>de</strong>r konstanten Run<strong>de</strong>nzahl ist mit höheren Anfor<strong>de</strong>rungen an die Leistungsfähigkeit<br />
<strong>de</strong>r Teilnehmer <strong>de</strong>s interaktiven Systems verbun<strong>de</strong>n, die in einer geplanten<br />
Umgebung eventuell nicht realisiert wer<strong>de</strong>n kann. In diesen Fällen wird die erfor<strong>de</strong>liche<br />
Sicherheit über polynomielle Run<strong>de</strong>nzahlen, <strong>zu</strong> <strong>de</strong>r auch z.B. logarithmische gehören,<br />
erzielt.<br />
Neben <strong>de</strong>n Eigenschaften perfekt Zero–<strong>Knowledge</strong> in polynomieller Run<strong>de</strong>nzahl <strong>zu</strong><br />
sein ist die Arbeit [NOVY92] typisch für eine in <strong>de</strong>r mo<strong>de</strong>rnen Forschung angewandten<br />
Technik. Grob gesagt geht es in dieser Veröffentlichung darum, dass kein vollständiges<br />
Protokoll eines Zero–<strong>Knowledge</strong> Arguments vorgestellt son<strong>de</strong>rn <strong>de</strong>r erstmals in [GMW86]<br />
bewiesene Umstand ausgenutzt wird, dass es ausreichend ist, ein sicheres Verschlüsselungsverfahren<br />
<strong>zu</strong> konstruieren.<br />
Die Beson<strong>de</strong>rheit bei [BCY91] besteht darin, dass es die letzte vollständige Konstruktion<br />
eines in sich geschlossenen perfekten Zero–<strong>Knowledge</strong> Arguments mit konstanter<br />
Run<strong>de</strong>nzahl ist. Neuere Arbeiten verfolgen diesbezüglich <strong>de</strong>n Weg, <strong>de</strong>r auch in<br />
[NOVY92] gegangen wur<strong>de</strong>, in<strong>de</strong>m lediglich ein entsprechen<strong>de</strong>s Verschlüsselungsverfahren<br />
meistens in Form von Bit–Commitment–Schemes erzeugt wird. Bei [BCY91] ergeben<br />
sich dagegen die Konstruktion und die einzelnen Beweise noch in einem Zusammenhang.<br />
39
4 Zero–<strong>Knowledge</strong> Arguments<br />
Wie schon an <strong>de</strong>n Veröffentlichungsterminen <strong>zu</strong> sehen ist, beschäftigt sich die informationstheoretische<br />
Forschung im Bereich <strong>de</strong>r Zero–<strong>Knowledge</strong> Arguments in <strong>de</strong>n letzten<br />
Jahren <strong>zu</strong>m weitaus überwiegen<strong>de</strong>n Teil mit berechenbaren Zero–<strong>Knowledge</strong> Verfahren.<br />
Zu diesem Themenkomplex existieren eine Vielzahl von Veröffentlichungen. Zur Darstellung<br />
<strong>de</strong>r aktuellen Forschung wur<strong>de</strong> als Vertreter die Arbeit von Barak ausgewählt.<br />
Dieses erfolgt unter an<strong>de</strong>rem aufgrund <strong>de</strong>r Tatsachen, dass diese Arbeit sehr aktuell ist,<br />
einen völlig an<strong>de</strong>ren und für Än<strong>de</strong>rungen offenen Weg <strong>de</strong>r Konstruktion und <strong>de</strong>s Beweises<br />
aufweist, sich mit <strong>de</strong>r nicht Black-Box Simulation <strong>de</strong>s Verifieres auseinan<strong>de</strong>rsetzt und<br />
seit <strong>de</strong>m ersten Erscheinungstermin 2001 als Grundlage weiterer (auch Zero–<strong>Knowledge</strong><br />
Proof) Verfahren gedient hat.<br />
Für die drei Arbeiten gilt, dass alle einen völlig unterschiedlichen Weg <strong>de</strong>r Konstruktion<br />
und <strong>de</strong>r anschließen<strong>de</strong>n Beweisführung gegangen sind, so dass über die sehr<br />
<strong>de</strong>taillierte Darstellung ein Einblick in diese sehr verschie<strong>de</strong>nen Techniken erfolgt.<br />
40
5 Perfekte Zero–<strong>Knowledge</strong> Arguments mit polynomieller Run<strong>de</strong>nzahl<br />
5 Perfekte Zero–<strong>Knowledge</strong> Arguments mit<br />
polynomieller Run<strong>de</strong>nzahl<br />
Als Hauptvertreter dieser Verfahren wird das 1992 von Naor, Ostrovsky, Venkatesan<br />
und Yung in [NOVY92] vorgestellte Perfect Zero–<strong>Knowledge</strong> Arguments for N P<br />
dargestellt. Die Ausführungen da<strong>zu</strong> sind <strong>zu</strong>m größten Teil dieser Arbeit entnommen.<br />
Es wird kein vollständiges Zero–<strong>Knowledge</strong> Argument Verfahren von <strong>de</strong>n Autoren<br />
vorgestellt. Vielmehr beschränken sie sich darauf, ein Bit–Commitment–Scheme auf beliebigen<br />
Einweg–Permutationen als kryptographisches Primitiv <strong>zu</strong> erzeugen. Es wird<br />
gezeigt, dass entsprechend sichere Verschlüsselungsfunktionen existieren, 13 die dann gemäß<br />
[GMW86, IY87, BCC88] auf Zero–<strong>Knowledge</strong> Arguments reduzierbar sind. So kann<br />
das in [NOVY92] vorgestelte Bit–Commitment–Scheme in das Verfahren, welches in Abschnitt<br />
3.3 ab Seite 31 vorgestellt wur<strong>de</strong>, als nachgewiesene Einweg–Permutation eingesetzt<br />
wer<strong>de</strong>n.<br />
Das vorliegen<strong>de</strong> Schema ist in <strong>de</strong>m Sinne effizient, dass die Teilnehmer <strong>de</strong>s interaktiven<br />
Beweises diesen in polynomieller Zeit wärend <strong>de</strong>s Protokolls ausführen können.<br />
Dabei wird folgen<strong>de</strong> Sicherheit erreicht: Um <strong>zu</strong> täuschen o<strong>de</strong>r ein falsches Theorem <strong>zu</strong><br />
beweisen muss <strong>de</strong>r Prover on-line während <strong>de</strong>r Kommunikation kryptographische Vorausset<strong>zu</strong>ngen<br />
brechen, wohingegen <strong>de</strong>r Verifier niemals und uneingeschränkt im informationstheoretischen<br />
Sinn irgen<strong>de</strong>ine Information erlangen kann.<br />
Bis <strong>zu</strong>r Veröffentlichung 1992 waren die Komplexitätsvorausset<strong>zu</strong>ngen, die für ein<br />
perfektes Zero–<strong>Knowledge</strong> Argument benötigt wur<strong>de</strong>n, sehr hoch – sie setzten spezifische<br />
algebraische Verfahren voraus. Das stand im Gegensatz <strong>zu</strong>m Zero–<strong>Knowledge</strong> Proof, <strong>de</strong>r<br />
<strong>zu</strong> <strong>de</strong>m Zeitpunkt lediglich auf beliebigen Einweg–Funktionen basieren konnte. In <strong>de</strong>r<br />
Veröffentlichung wur<strong>de</strong> folgen<strong>de</strong>s Resultat gezeigt:<br />
Satz 5.1 (Hauptergebnis)<br />
Wenn Einweg–Permutationen existieren, dann ist es mit polynomiell–beschränkten Maschinen<br />
möglich, perfekte Zero–<strong>Knowledge</strong> Arguments für alle Sprachen in N P in polynomieller<br />
Run<strong>de</strong>nzahl aus<strong>zu</strong>führen.<br />
In <strong>de</strong>m Beweis wird ein informationstheoretisch sicheres Bit–Commitment–Scheme<br />
konstruiert. Gemäß Anmerkung nach Definition 2.16 han<strong>de</strong>lt es sich um ein Schema<br />
mit perfekter Geheimhaltung und lediglich berechenbarer Ein<strong>de</strong>utigkeit. In einer praktischen<br />
Anwendung könnte dieses sichere Zero–<strong>Knowledge</strong> Argument Verfahren z.B. mit<br />
Nachfolgern <strong>de</strong>s bekannten DES-Verfahrens 14 implementiert wer<strong>de</strong>n.<br />
13 Diese Existenz ist selbstverständlich nur unter <strong>de</strong>r Annahme gewährleistet, dass N = N P gilt.<br />
14 Bei <strong>de</strong>m DES-Verfahren (Data Encryption Standard) han<strong>de</strong>lt es sich um ein Blockchiffrierungsverfahren<br />
für 64 Bit große Blöcke, welches von IBM entwickelt und 1977 erstmals vom National Bureau<br />
of Standards (US) veröffentlicht wur<strong>de</strong>. Der DES wur<strong>de</strong> und wird immer noch hautpsächlich in<br />
41
5 Perfekte Zero–<strong>Knowledge</strong> Arguments mit polynomieller Run<strong>de</strong>nzahl<br />
5.1 Hintergrund<br />
Das Protokoll hat zwei Stufen. Zuerst wird gezeigt, wie ein informationstheoretisch sicheres<br />
Bit–Commitment–Scheme zwischen zwei polynomiell beschränkten Maschinen<br />
entworfen wird, welches auf je<strong>de</strong>r Einweg–Permutation aufbaut. Die Grundi<strong>de</strong>e da<strong>zu</strong><br />
wur<strong>de</strong>, jedoch unter an<strong>de</strong>ren Vorausset<strong>zu</strong>ngen, von Ostrovsky, Venkatesan und Yung in<br />
[OVY91] für unbeschränkte Maschinen veröffentlicht. Über dieses Verfahren hinaus ist<br />
das jetzt vorgestellte Protokoll so beschaffen, dass es in einer erwarteten polynomiellen<br />
Zeit simulierbar ist. Danach wird eine Reduktion <strong>de</strong>s ” perfekt-sicheren simulierbaren<br />
Bit–Commitment–Schemes“ auf ” perfekte Zero–<strong>Knowledge</strong> Argument“ angewen<strong>de</strong>t. Das<br />
grundsätzliche Schema, um verschie<strong>de</strong>ne Commitments mit verschie<strong>de</strong>nen Zero–<strong>Knowledge</strong><br />
Systemen <strong>zu</strong> verbin<strong>de</strong>n, wur<strong>de</strong> u.a. [IY87] entnommen.<br />
In <strong>de</strong>m vorgestellten Protokoll wer<strong>de</strong>n ausschließlich polynomiell–beschränkte Teilnehmer<br />
vorausgesetzt. Es wur<strong>de</strong> ausdrücklich als Mo<strong>de</strong>ll für die kryptographische Anwendung<br />
entwickelt. Ferner wer<strong>de</strong>n keine Trapdoor Eigenschaften benutzt, da Bit–Commitments<br />
und sichere interaktive Beweise keine Entschlüsselung benötigen son<strong>de</strong>rn lediglich<br />
die Urbil<strong>de</strong>r <strong>de</strong>r Commitments beweisen sollen.<br />
5.2 Mo<strong>de</strong>ll und Definitionen<br />
Die <strong>zu</strong>grun<strong>de</strong> liegen<strong>de</strong> Arbeit [NOVY92] beschreibt kein ” vollständiges“ Zero–<strong>Knowledge</strong><br />
Argument, son<strong>de</strong>rn lediglich <strong>de</strong>n dafür wichtigsten Teil <strong>de</strong>r Bit–Commitments für eine<br />
Reduktion auf ein Zero–<strong>Knowledge</strong> Argument. Die Teilnehmer <strong>de</strong>s Bit–Commitment-<br />
Protokolls wer<strong>de</strong>n als Sen<strong>de</strong>r S und Empfänger E bezeichnet. In einer tatsächlichen<br />
Implementation eines Zero–<strong>Knowledge</strong> Arguments mit diesem Bit–Commitment–Scheme<br />
kann daher <strong>de</strong>r Prover P als Sen<strong>de</strong>r o<strong>de</strong>r Empfänger <strong>de</strong>r Commitments vorkommen.<br />
Dieses ist abhängig davon, wie und für welchen Zweck das vorgestellte Bit–Commitment–Scheme<br />
in einem Zero–<strong>Knowledge</strong> Argument eingesetzt wird.<br />
Zugrun<strong>de</strong> liegt ein interaktives Argumentsystem mit Zusatzeingabe gemäß Abschnitt<br />
12, Seite 37, so dass bei<strong>de</strong> Maschinen polynomiell–beschränkt sind. Es wird unterstrichen,<br />
dass S zwar nur polynomielle Zeit benötigt, um das Protokoll <strong>zu</strong> erfüllen. Die Sicherheit<br />
bleibt aber auch erhalten, wenn S unbegrenzte Rechenkapazität hätte.<br />
Die Zusatzeingabe für <strong>de</strong>n Sen<strong>de</strong>r S liegt in Form eines ” Zeugnisses“ für die Behauptung<br />
vor. Der Empfänger E erhält keine Zusatzeingabe.<br />
O.b.d.A wird hier angenommen, dass <strong>de</strong>r Beweis eine Lösung für ein beliebiges SAT-<br />
Problem darstellt (an<strong>de</strong>rnfalls kann je<strong>de</strong>s N P-Problem <strong>zu</strong>sammen mit <strong>de</strong>m Zeugnis als<br />
Zusatzeingabe erst auf SAT reduziert wer<strong>de</strong>n). Am En<strong>de</strong> <strong>de</strong>s Protokolls akzeptiert E <strong>de</strong>n<br />
Beweis o<strong>de</strong>r weist ihn <strong>zu</strong>rück.<br />
finanziellen Transaktionsprotokollen eingesetzt, obwohl er nicht mehr als sicher gilt und En<strong>de</strong> <strong>de</strong>r<br />
90er Jahre <strong>de</strong>s letzten Jarhun<strong>de</strong>rts bereits innerhalb weniger Tagen berechnet wer<strong>de</strong>n konnte.<br />
42
5 Perfekte Zero–<strong>Knowledge</strong> Arguments mit polynomieller Run<strong>de</strong>nzahl<br />
Die Zero–<strong>Knowledge</strong> Eigenschaften <strong>de</strong>s Protokolls entsprechen <strong>de</strong>r Definition 3.1 mit<br />
folgen<strong>de</strong>n Än<strong>de</strong>rungen:<br />
• Die Maschine M ∗ hat lediglich eine erwartete polynomielle Laufzeitbeschränkung.<br />
• {view S<br />
E ∗(x)}x∈L und {M ∗ (x)}x∈L sind i<strong>de</strong>ntisch.<br />
Das verwen<strong>de</strong>te Bit–Commitment–Scheme entspricht <strong>de</strong>m Grundprinzip aus Definition<br />
2.16. Es wird nachfolgend konkretisiert:<br />
Definition 5.1 (Perfekt sicheres Commitment–Scheme)<br />
Sei (S, E) ein interaktives Beweissystem, σ ∈ {0, 1}, p ein beliebiges Polynom und n ein<br />
genügend großer Sicherheitsparameter. Ein Protokoll heißt perfekt sicheres Commitment–Scheme,<br />
wenn gilt:<br />
• Geheimhaltung: Wenn S <strong>de</strong>m Protokoll folgt, kann E nach <strong>de</strong>r Festlegungsphase<br />
{view S(σ)<br />
E (n)}n∈ mit keiner größeren Wahrscheinlichkeit als 1<br />
2<br />
+ 1<br />
p(n) schätzen.<br />
• Festlegung: Wenn E <strong>de</strong>m Protokoll folgt, kann S nach <strong>de</strong>r Festlegungsphase mit<br />
einer Wahrscheinlichkeit von min<strong>de</strong>stens 1 − 1 nur einen möglichen Wert auf-<br />
p(n)<br />
<strong>de</strong>cken.<br />
Anmerkung: Man beachte, dass für die Definition <strong>de</strong>s perfekt sicheren Commitment–<br />
Schemes <strong>de</strong>r Empfänger E nicht polynomiell beschränkt sein muss. Es wird betont, dass<br />
die Geheimhaltung nicht darauf aufbaut, dass E polynomiell beschränkt ist. Reicht eine<br />
polynomielle Rechenzeit für E jedoch aus, so wird das Verfahren ” effizient“ genannt,<br />
worauf sich das vorliegen<strong>de</strong> Protokoll konzentriert.<br />
Bei <strong>de</strong>r Definition <strong>de</strong>r Eigenschaften, die das Bit–Commitment haben muss, wur<strong>de</strong><br />
ein Szenario vorausgesetzt, in <strong>de</strong>m {view S<br />
E(n)}n∈ von E nicht mit einer höheren Wahr-<br />
scheinlichkeit als 1<br />
2 geschätzt wer<strong>de</strong>n kann. Im Allgemeinen15 bekommt E während <strong>de</strong>r<br />
Kommunikation aber möglicherweise Informationen übermittelt, die es E erlauben könnten,<br />
mit einer Wahrscheinlichkeit größer als 1 <strong>zu</strong> schätzen. Die Definition für diesen Fall<br />
2<br />
sieht vor, dass <strong>de</strong>r Vorteil, <strong>de</strong>n E als Ergebnis <strong>de</strong>r Festlegungsphase gewinnt, kleiner als<br />
1 sein muss. Alle Resultate <strong>de</strong>s vorgestellten Protokolls umfassen diesen allgemeinen<br />
p(n)<br />
Fall.<br />
Definition 5.2 (Polynomzeit simulierbar)<br />
Ein Commitment–Scheme wird als in Polynomzeit simulierbar (im Hinblick auf <strong>de</strong>n<br />
Empfänger) bezeichnet, wenn für einen Empfänger E ∗ die Wahrscheinlichkeitsverteilung<br />
{view S<br />
E ∗(x)}x∈L als Teil von {M ∗ (x)}x∈L in erwarteter Polynomialzeit gemäß Zero–<strong>Knowledge</strong><br />
Definition simuliert wer<strong>de</strong>n kann.<br />
15 Da das vorliegen<strong>de</strong> Protokoll für alle Einweg–Permutationen gültig ist, sind diesbezüglich keine Ein-<br />
schränkungen möglich.<br />
43
5 Perfekte Zero–<strong>Knowledge</strong> Arguments mit polynomieller Run<strong>de</strong>nzahl<br />
5.3 Perfekt–sicheres simulierbares Bit–Commitment<br />
Das perfekt–sichere Schema wird nachfolgend aufgeführt und <strong>de</strong>ssen Sicherheit bewiesen.<br />
Grob skizziert funktioniert es wie folgt. Der polynomielle Sen<strong>de</strong>r S generiert eine<br />
Bit-Verschlüsselung, die von zwei möglichen Verteilungen stammt. Der Sen<strong>de</strong>r wird die<br />
Verschlüsselung aber nur als Element einer <strong>de</strong>r bei<strong>de</strong>n Verteilungen öffnen können, auch<br />
wenn die Verteilungen i<strong>de</strong>ntisch sind.<br />
Das Schema baut auf beliebige Einweg–Permutationen auf.<br />
Protokoll 5.1 (Perfekt–sicheres simulierbares Bit–Commitment)<br />
Sei (S, E) ein interaktives Beweissystem mit Zusatzeingabe, f eine starke Einweg–Permutation<br />
auf {0, 1} n , σ ∈ {0, 1} das nur S bekannte Bit und B(x, y)<br />
das Skalarprodukt mod 2 von x und y.<br />
Festlegungsphase:<br />
1. Der Sen<strong>de</strong>r S wählt ein <strong>zu</strong>fälliges x ∈R {0, 1} n und berechnet y = f(x). S<br />
hält sowohl x als auch y vor E geheim.<br />
2. Der Empfänger E wählt h1, . . . , hn−1 ∈ {0, 1} n so, dass je<strong>de</strong>s hi einen<br />
<strong>zu</strong>fälligen Vektor über GF (2) in <strong>de</strong>r Form 0 i−1 1{0, 1} n−i darstellt. Zufällig<br />
in diesem Sinn be<strong>de</strong>utet, dass nach i−1 Nullen eine 1 folgt, an die sich eine<br />
beliebige Wahl für die letzten n − i Positionen anschließt. Die h1, . . . , hn−1<br />
sind linear unabhängig über GF (2).<br />
3. Für j von 1 bis n − 1 gilt<br />
• E sen<strong>de</strong>t hj an S.<br />
• S berechnet ηj = B(hj, y) und sen<strong>de</strong>t ηj an E.<br />
4. Zu diesem Zeitpunkt existieren genau zwei Vektoren y0, y1 ∈ {0, 1} n , die<br />
ηj = B(hj, yi) erfüllen 16 mit i ∈ {0, 1} und 1 ≤ j ≤ n − 1. Dabei wird<br />
y0 als <strong>de</strong>r lexikographisch kleinere <strong>de</strong>r bei<strong>de</strong>n Vektoren <strong>de</strong>finiert. S und E<br />
berechnen bei<strong>de</strong> y0 und y1.<br />
Sei<br />
η =<br />
5. S berechnet η und sen<strong>de</strong>t es an E.<br />
Öffnungsphase:<br />
1. S sen<strong>de</strong>t σ und x an E.<br />
<br />
0 wenn y = yσ<br />
1 wenn y = y1−σ<br />
16 Dass zwei Vektoren ηj = B(hj, yi) erfüllen, liegt an <strong>de</strong>r Eigenschaft von B(x, y) und daran, dass die<br />
h1, . . . , hn−1 linear unabhängig über GF(2) sind.<br />
44
5 Perfekte Zero–<strong>Knowledge</strong> Arguments mit polynomieller Run<strong>de</strong>nzahl<br />
2. E berechnet y = f(x) und überprüft,<br />
• ob die B(hj, y), 1 ≤ j ≤ n − 1, <strong>de</strong>n von S in <strong>de</strong>r Festlegungshase Pkt.<br />
3 übersandten ηj entsprechen und<br />
• ob y = yσ, falls η = 0 bzw. ob y = y1−σ, falls η = 1 ist .<br />
Es ist klar, dass das Protokoll in Polynomialzeit von bei<strong>de</strong>n Parteien ausgeführt<br />
wer<strong>de</strong>n kann. Nachfolgend wird gezeigt, dass es tatsächlich ein perfekt sicheres Bit–<br />
Commitment-Protokoll ist.<br />
5.4 Beweis <strong>de</strong>r Sicherheit<br />
Als erstes wird die grundlegen<strong>de</strong> Eigenschaft als Bit–Commitment–Scheme bewiesen.<br />
Satz 5.2<br />
Falls eine Einweg–Permutation f existiert, dann ist das Schema aus Protokoll 5.1 ein<br />
perfekt–sicheres berechenbar–ein<strong>de</strong>utiges Bit–Commitment–Scheme.<br />
Der Beweis folgt aus <strong>de</strong>n bei<strong>de</strong>n folgen<strong>de</strong>n Sätzen, <strong>de</strong>m Sicherheits-Satz und <strong>de</strong>m<br />
Ein<strong>de</strong>utigkeits-Satz.<br />
Satz 5.3 (Sicherheits-Satz)<br />
Nach <strong>de</strong>r Festlegungsphase ist für je<strong>de</strong>n Empfänger E ∗ das Bit σ informationstheoretisch<br />
sicher verborgen.<br />
Beweis:<br />
Induktiv kann über j geprüft wer<strong>de</strong>n, dass für je<strong>de</strong> Wahl <strong>de</strong>r h1, . . . , hj die bedingte<br />
Wahrscheinlichkeit von y über h1, . . . , hj und η1, . . . , ηj in <strong>de</strong>m von h1, . . . , hj und<br />
η1, . . . , ηj <strong>de</strong>finierten Unterraum gleichverteilt ist. Somit ist die Wahrscheinlichkeit in<br />
<strong>de</strong>r Festlegungsphase bei Pkt. 4, dass y = y0 ist, exakt 1.<br />
Daher wird mit η keine Infor-<br />
2<br />
mation über σ verbreitet.<br />
Satz 5.4 (Ein<strong>de</strong>utigkeits-Satz)<br />
Angenommen, es existiert eine probabilistische polynomiell–beschränkte Maschine S ∗ (n),<br />
die <strong>de</strong>m Protokoll in <strong>de</strong>r Festlegungsphase folgt, und einem ehrlichen Empfänger für ein<br />
σ zwei unterschiedliche Werte mit nichtvernachlässigbarer Wahrscheinlichkeit (bezüglich<br />
<strong>de</strong>r Münzwürfe) ε = ε(n) offenbarte. Dann existierte auch eine probabilistische polynomiell–beschränkte<br />
Maschine A, die für eine nichtvernachlässigbare Anzahl von y ∈<br />
{0, 1} n f invertieren kann.<br />
Beweis:<br />
Es wird eine Maschine A <strong>zu</strong>m Invertieren von f unter Anwendung eines <strong>de</strong>rartigen<br />
S ∗ konstruiert. A hat eine feste Polynomialzeit-Grenze und bricht die Berechnung ab,<br />
45
5 Perfekte Zero–<strong>Knowledge</strong> Arguments mit polynomieller Run<strong>de</strong>nzahl<br />
wenn die Grenze überschrittten wird. Unter <strong>de</strong>r Annahme, dass eine Menge Ω von ε(n)<br />
Bruchteilen von Zeichenketten existiert, und unter <strong>de</strong>r Vorausset<strong>zu</strong>ng, dass S ∗ mit ω ∈ Ω<br />
initialisiert wird, kann S ∗ zwei unterschiedliche Werte von σ nach <strong>de</strong>r Festlegungsphase<br />
von n − 1 Run<strong>de</strong>n auf<strong>de</strong>cken. Mit <strong>de</strong>r Festlegung eines beliebigen aber festen ω wird S ∗<br />
als <strong>de</strong>terministische Maschine betrachtet. Das ist möglich, weil A mit <strong>de</strong>m Zufallsband<br />
von S ∗ wie<strong>de</strong>rholt ausgeführt wer<strong>de</strong>n kann und initialisiert wird mit ωi, i := 1, ..., m = 1<br />
ε2 und <strong>de</strong>r Wahrscheinlichkeit <strong>de</strong>r ωi ∈ Ω von 1 − e−√m ∗<br />
. Daher wird S nachfolgend als<br />
<strong>de</strong>terminstischer Algorithmus betrachtet.<br />
Die Antworten ηi von S ∗ auf die Fragen hi von E <strong>de</strong>finieren einen Baum T mit<br />
Wurzel, <strong>de</strong>ssen Kanten aus {0, 1} markiert wer<strong>de</strong>n. Ein Pfad von <strong>de</strong>r Wurzel <strong>zu</strong> einem<br />
Blatt ist durch die Zuweisung von h1, . . . , hn−1 <strong>de</strong>finiert und wird mit <strong>de</strong>n η1, . . . , ηn−1<br />
gekennzeichnet. Ein Knoten U in Stufe i entspricht einem Zustand von S ∗ nach i − 1<br />
Schritten und wird <strong>de</strong>finiert durch h1, . . . , hi−1 und η1, . . . , ηi−1. Die abgehen<strong>de</strong>n Kanten<br />
von U entsprechen <strong>de</strong>n 2 n−i möglichen Fragen von E. Diese Kanten wer<strong>de</strong>n mit <strong>de</strong>n<br />
Antworten von S ∗ markiert. Zu beachten ist, dass die Antwort aufgrund einer möglichen<br />
Täuschung seitens S ∗ nicht konsistent sein muss und auf dieselbe Frage unterschiedliche<br />
Antworten in Abhängigkeit <strong>de</strong>r vorhergehen<strong>de</strong>n Fragen gegeben wer<strong>de</strong>n könnten.<br />
Bezeichne u ein Blatt, dann ist {yo(u), y1(u)} die Menge, die aus <strong>de</strong>n Antworten von<br />
S ∗ folgt. u wird als gut bezeichnet, wenn gilt: Sei u durch die Fragen von E festgelegt.<br />
Dann kann S ∗ das Bit–Commitment auf zwei unterschiedliche Wege öffnen; S ∗ invertiert<br />
sowohl y0(u) als auch y1(u).<br />
Protokoll 5.2 (Beschreibung von A)<br />
A erhält als Eingabe eine <strong>zu</strong>fällige Zeichenkette y ∈ {0, 1} n und versucht y<br />
<strong>zu</strong> invertieren. Um f −1 (y) <strong>zu</strong> berechnen, versucht A, ein gutes Blatt u <strong>zu</strong><br />
fin<strong>de</strong>n, so dass y ∈ {y0(u), y1(u)} gilt. An <strong>de</strong>r Wurzel beginnend entwickelt<br />
A Knoten für Knoten einen Pfad, <strong>de</strong>r <strong>zu</strong> y konsistent ist. Sei j fest gewählt<br />
mit n − 8 log<br />
ε + 1 . Für j Run<strong>de</strong>n führt A folgen<strong>de</strong>s aus: Für 1 ≤ i < j<br />
sind in Run<strong>de</strong> i die h1, . . . , hi−1 <strong>de</strong>finiert, so dass die Marken η1, . . . , ηi−1 mit<br />
ηi = B(hi, y) bestehen. Dann wird ein <strong>zu</strong>fälliges h aus 0i−11{0, 1} n−i gewählt.<br />
Anmerkung: h ist linear unabhängig von hk für k < i. Wenn die Kante h<br />
die Markierung B(h, y) hat, wird hi = h und <strong>de</strong>r Pfad wird durch <strong>de</strong>n neuen<br />
Knoten erweitert. An<strong>de</strong>rnfalls wird S ∗ auf <strong>de</strong>n Zustand vor seiner Antwort <strong>zu</strong>rückgesetzt<br />
und ein neuer Kandidat für hi wird ausgewählt. Das wird solange<br />
wie<strong>de</strong>rholt, bis entwe<strong>de</strong>r ein erfolgreiches hi gefun<strong>de</strong>n wur<strong>de</strong> o<strong>de</strong>r kein Kandidat<br />
mehr übrig ist. Im diesem Fall bricht A die weitere Berechnung ab. Wenn A<br />
die j-te Stufe erreicht, schätzt A die restlichen n − j Fragen hj, hj+1, . . . , hn−1<br />
und prüft, ob <strong>de</strong>r Pfad <strong>zu</strong> <strong>de</strong>m Blatt <strong>zu</strong> B(y, hi) konsistent markiert ist. Wenn<br />
das <strong>de</strong>r Fall und das erreichte Blatt gut ist, konnte A y invertieren.<br />
46
5 Perfekte Zero–<strong>Knowledge</strong> Arguments mit polynomieller Run<strong>de</strong>nzahl<br />
Der Rest dieses Beweises widmet sich <strong>de</strong>m Nachweis, dass die so <strong>de</strong>finierte Maschine<br />
A mit einer Wahrscheinlichkeit von min<strong>de</strong>stens ε 10<br />
8e 3 n 8 y invertiert. Dabei ist <strong>zu</strong> beachten,<br />
dass A nicht unbedingt nach einer polynomiellen Anzahl von Schritten hält. Trotz<strong>de</strong>m<br />
wird am En<strong>de</strong> <strong>de</strong>s Beweises gezeigt, dass die Anzahl <strong>de</strong>r vergeblichen Versuche, ein<br />
konsistentes h <strong>zu</strong> fin<strong>de</strong>n, auf 8n beschränkt wer<strong>de</strong>n kann, ohne signifikant die Wahrscheinlichkeit<br />
<strong>zu</strong> verringern, dass A y invertieren kann.<br />
Zuerst erfolgen ein paar Notationen. Da verschie<strong>de</strong>ne Typen von Vektoren <strong>de</strong>r Länge<br />
n über GF (2) benutzt wer<strong>de</strong>n, wer<strong>de</strong>n diese wie folgt unterschie<strong>de</strong>n: Von E gesen<strong>de</strong>te<br />
Vektoren wer<strong>de</strong>n als Fragen und die von S gesen<strong>de</strong>ten als Bil<strong>de</strong>r bezeichnet. Sei U ein<br />
Knoten an <strong>de</strong>r i-ten Stufe <strong>de</strong>s Baums, <strong>de</strong>finiert durch h1, . . . , hi−1 und η1, . . . , ηi−1. Dann<br />
wird y ∈ {0, 1} n ein Bild von U genannt, wenn B(hk, y) = ηk für alle 1 ≤ k < i. Die<br />
Menge aller Bil<strong>de</strong>r von U wird mit I(U) bezeichnet. 17 Es gilt |I(U)| = 2 n−i+1 . h ∈ {0, 1} n<br />
wird als Frage von U bezeichnet, wenn h die Form 0 i−1 1{0, 1} n−i hat.<br />
Sei A(U, y) = {h | h ist Frage von U und B(h, y) entspricht Markierung h von U} .<br />
Ein Bild y heißt ausgeglichen in Ui, einem Knoten <strong>de</strong>r i-ten Stufe, wenn gilt<br />
1 − 1<br />
n ≤ A(Ui, y) 1<br />
≤ 1 +<br />
2n−i−1 n<br />
Ein Bild y heißt voll ausgeglichen in U, einem Knoten <strong>de</strong>r j-ten Stufe, wenn es in allen<br />
Vorfahren von U ausgeglichen ist. Weiterhin sei F(U) = {y | y ∈ I(U) und y ist voll<br />
ausgeglichen in U}. 18 Für eine Menge H von Fragen am Knoten U und einem Bild y von<br />
U ist die Abweichung von y über H die absolute Differenz zwischen |H|<br />
und <strong>de</strong>r Anzahl<br />
2<br />
von Fragen in H, die mit y übereinstimmen. Es sei wie<strong>de</strong>rholt, dass j = n − 8 log n<br />
+ 1 ε<br />
ist.<br />
Lemma 5.1<br />
Für je<strong>de</strong>n Knoten U <strong>de</strong>r Stufe j haben min<strong>de</strong>stens 2n−j (1−β) mit β = 2 −3<br />
4(n−j) <strong>de</strong>r Bil<strong>de</strong>r<br />
von U die Eigenschaft 2n−j − 2 7<br />
8(n−j) ≤ A(U, y) ≤ 2n−j + 2 7<br />
8(n−j) .<br />
Beweis:<br />
Einleitend sei bemerkt, dass je<strong>de</strong>s Paar Fragen h ′ , h ′′ von U im Sinne von h ′′ und<br />
h ′ , h1, . . . , hj−1 linear unabhängig ist. Sei ein Bild y von U <strong>zu</strong>fällig gewählt und gel-<br />
te ah = 1, wenn B(h, y) und U’s Antwort auf h i<strong>de</strong>ntisch sind. Dann gilt für alle h,<br />
Pr[ah = 1] = 1<br />
2 und für je<strong>de</strong>s Paar (h′ , h ′′ ), ah ′ und ah ′′ sind paarweise unabhängig. Nun<br />
interessiert vor allem<br />
<br />
<br />
<br />
Pr<br />
ah − E<br />
≥ 2 7<br />
<br />
8(n−j)<br />
(1)<br />
h Frage von U<br />
h Frage von U<br />
17 I als Menge <strong>de</strong>r Bil<strong>de</strong>r, engl. Images.<br />
18 F als Menge <strong>de</strong>r voll ausgeglichenen Bil<strong>de</strong>r, engl. Fully balanced<br />
47<br />
ah
5 Perfekte Zero–<strong>Knowledge</strong> Arguments mit polynomieller Run<strong>de</strong>nzahl<br />
Mit <strong>de</strong>r Tschebyschev’schen Ungleichung ergibt sich<br />
<br />
<br />
Pr<br />
<br />
<br />
ah − E<br />
<br />
<br />
<br />
ah ≥ λ V ar ah<br />
<br />
≤ 1<br />
λ2 h Frage von U<br />
h Frage von U<br />
V ar[ <br />
h ah] ist dabei 2 n−j und daher ist (1) höchstens 2 −3<br />
4(n−j) . <br />
Lemma 5.2<br />
Für je<strong>de</strong>n Knoten U <strong>de</strong>r Stufe j und je<strong>de</strong>s <strong>zu</strong>fällige Bild y von U gilt: Die Wahrscheinlichkeit,<br />
dass y voll ausgeglichen ist, beträgt min<strong>de</strong>stens 1 − γ für γ = n2 −5<br />
8(n−j) .<br />
Beweis:<br />
Seien U1, . . . , Uj = U die Knoten auf <strong>de</strong>m Pfad nach U. Für je<strong>de</strong>s 1 ≤ i ≤ j wer<strong>de</strong>n die<br />
2n−i Fragen von Ui in 2j−i Teilmengen H1, . . . , H2j−i mit <strong>de</strong>r Größe 2n−j unterteilt, so<br />
dass für je<strong>de</strong>s 1 ≤ ℓ ≤ 2j−i und h ′ , h ′′ ∈ Hℓ gilt, dass die h ′ linear unabhängig von <strong>de</strong>n<br />
hi+1, . . . , hj, h ′′ sind. Entsprechend Lemma 5.1 gilt daher Pr[| <br />
h∈Hℓ −E[h∈Hℓ<br />
ah]| ><br />
2 7<br />
8(n−j) ≤ 2 −3<br />
4(n−j) , so dass nach <strong>de</strong>r Markov Ungleichung die Wahrscheinlichkeit, dass mehr<br />
als 2 −1<br />
8(n−j) Anteile <strong>de</strong>r Hℓ’s eine Abweichung größer als 2 7<br />
8(n−j) haben, höchstens 2 −5<br />
8(n−j)<br />
beträgt. Damit beträgt mit einer Wahrscheinlichkeit von min<strong>de</strong>stens 1−2 −5<br />
8(n−j) die totale<br />
Abweichung am Knoten Ui höchstens<br />
2 −1<br />
8(n−j) 2 n−j 2 j−i + (1 − 2 −1<br />
8(n−j) )2 7<br />
8(n−j) 2 j−i ≤ 2 · 2 7 1<br />
+ 8n 8j −i<br />
und schließlich mit einer Wahrscheinlichkeit von min<strong>de</strong>stens 1 − 2 −5<br />
8(n−j)<br />
1 − 1<br />
n<br />
−1<br />
≤ 1 − 2 8(n−j)+1 ≤ A(Ui, y)<br />
−1<br />
≤ 1 + 2 8(n−j)+1 ≤ 1 +<br />
2n−i−1 1<br />
n .<br />
Die Wahrscheinlichkeit, dass y in allen Stufen ausgeglichen ist, beträgt daher min<strong>de</strong>stens<br />
1 − n2 −5<br />
8(n−j) = 1γ <br />
Lemma 5.3<br />
Die Wahrscheinlichkeit, dass ein Knoten U auf Stufe j von einer Programmausführung<br />
durch A erreicht wird, beträgt 1−γ<br />
<strong>de</strong>r Wahrscheinlichkeit, dass U von einer Programm-<br />
e<br />
ausführung durch S ∗ erreicht wird.<br />
Beweis:<br />
Seien U1, . . . , Uj = U die Knoten auf <strong>de</strong>m Pfad von <strong>de</strong>r Wurzel <strong>zu</strong> U. Die Wahrscheinlichkeit<br />
für je<strong>de</strong>n Knoten Ui, dass dieser in S ∗ erreicht wird, beträgt j−1 1<br />
i=1 2n−i . Es gilt<br />
48<br />
(2)
5 Perfekte Zero–<strong>Knowledge</strong> Arguments mit polynomieller Run<strong>de</strong>nzahl<br />
Pr[U wird erreicht von A] = <br />
y∈I(U)<br />
≥ <br />
y∈F(U)<br />
≥ <br />
y∈F(U)<br />
≥ <br />
y∈F(y,U)<br />
≥ <br />
y∈F(U)<br />
Pr[y gewählt, U wird erreicht]<br />
Pr[y gewählt, U wird erreicht]<br />
1<br />
2n j−1 1<br />
A(Ui, y)<br />
i=1<br />
1<br />
2n j−1 <br />
i=1<br />
1<br />
2n j−1 <br />
i=1<br />
≥ 2n−j+1 (1 − γ)<br />
2 n<br />
≥<br />
(1 − γ)<br />
e<br />
j−1 <br />
i=1<br />
1<br />
(1 + 1<br />
n )2n−i−1<br />
1<br />
(1 + 1<br />
n )2n−i−1<br />
·<br />
1<br />
2 n−i<br />
1<br />
(1 + 1<br />
n )n<br />
j−1 <br />
i=1<br />
1<br />
2 n−i−1<br />
Lemma 5.4<br />
Die Wahrscheinlichkeit, dass das Bild, welches A <strong>zu</strong> invertieren versucht, auf <strong>de</strong>r Stufe<br />
j voll ausgeglichen ist, beträgt min<strong>de</strong>stens (1−γ)2<br />
. e<br />
Beweis:<br />
Für je<strong>de</strong>n Knoten auf Stufe j und je<strong>de</strong>s voll ausgeglichenes Bild y von U beträgt die<br />
Wahrscheinlichkeit Pr[y ist gewählt und U wird erreicht] ≥ (1−γ)<br />
2n j−1 1<br />
e i=1 2n−i−1 . Daher gilt<br />
Pr[U wird erreicht mit einem<br />
voll ausgeglichenen y] ≥ 2n−j 1 − γ<br />
(1 − γ) ·<br />
2n j−1 1<br />
e 2<br />
i=1<br />
n−i−1<br />
= (1 − γ)2<br />
e<br />
j−1 <br />
i=1<br />
1<br />
2 n−i<br />
Die Anzahl <strong>de</strong>r Knoten auf <strong>de</strong>r j-ten Stufe beträgt j−1 i=1 2n−i und daher ist die<br />
Wahrscheinlichkeit, dass das gewählte Bild auf Stufe j voll ausgeglichen ist, (1−γ)2<br />
. e<br />
49
5 Perfekte Zero–<strong>Knowledge</strong> Arguments mit polynomieller Run<strong>de</strong>nzahl<br />
Ein Knoten wird als gut bezeichnet, wenn min<strong>de</strong>stens ε <strong>de</strong>r Blätter <strong>de</strong>s Teilbaums,<br />
<strong>de</strong>r von U als neuer Wurzel aufgespannt wird, die Eigenschaft hat, dass S ∗ erfolgreich<br />
täuschen kann, d.h. bei<strong>de</strong> Bil<strong>de</strong>r invertieren kann. Gemäß Annahme ist <strong>de</strong>r Anteil <strong>de</strong>r<br />
guten Knoten U min<strong>de</strong>stens ε. Daher beträgt gemäß Lemma 5.3 die Wahrscheinlichkeit,<br />
dass A einen gutes U auf Stufe j erreicht, min<strong>de</strong>stens (1−γ)2<br />
e ε. <br />
Lemma 5.5<br />
In je<strong>de</strong>m guten U auf Stufe j beträgt <strong>de</strong>r Anteil <strong>de</strong>r guten Blätter, die wenigstens ein<br />
Bild aus F(U) haben, min<strong>de</strong>stens ε<br />
2 .<br />
Beweis:<br />
1<br />
Je<strong>de</strong>s Paar von Bil<strong>de</strong>rn y1 = y2 in I(U) kann in höchstens 2n−j <strong>de</strong>r Blätter <strong>zu</strong>sammen<br />
vorkommen: In je<strong>de</strong>m Knoten U ′ auf <strong>de</strong>m Weg von U <strong>zu</strong> <strong>de</strong>n Blätter. Darüber hinaus<br />
gilt für <strong>zu</strong>fällige Fragen von U ′ Pr[B(h, y1) = B(h, y2)] = 1.<br />
Weil höchstens γ2n−j+1<br />
2<br />
Bil<strong>de</strong>r existieren, die in U nicht voll ausgeglichen sind, haben höchstens<br />
γ2 n−j+1<br />
<br />
2<br />
2n−j−1 ≤ 2γ22 n−1 ≤ n 2 2 −1<br />
4(n−j) +1 = n 2 log n<br />
−2<br />
2 ε+1 +1 ≤ ε2<br />
2<br />
<strong>de</strong>r Blätter ihre bei<strong>de</strong>n Bil<strong>de</strong>r von <strong>de</strong>n unausgeglichenen. Daher sind min<strong>de</strong>stens ε− ε2<br />
2 ≥<br />
<strong>de</strong>r Blätter bei<strong>de</strong> gut und haben min<strong>de</strong>stens ein in U voll ausgeglichenes Bild. <br />
ε<br />
2<br />
Lemma 5.6<br />
Für je<strong>de</strong>n guten Knoten U <strong>de</strong>r Stufe j, <strong>de</strong>r mit einem voll ausgeglichenem y erreicht wird,<br />
und für ein z ∈ F(U), ist die Wahrscheinlchkeit, dass y = z gilt, min<strong>de</strong>stens<br />
Beweis:<br />
Für die untere Schranke gilt<br />
Pr[z ist gewählt und U wird erreicht]<br />
Pr[U wird erreicht und das Bild ist voll ausgeglichen]<br />
50<br />
1<br />
e22n−j+1 .<br />
(3)
Weiterhin gilt<br />
5 Perfekte Zero–<strong>Knowledge</strong> Arguments mit polynomieller Run<strong>de</strong>nzahl<br />
<br />
z∈F(U)<br />
Pr[U wird erreicht und das Bild<br />
ist voll ausgeglichen] =<br />
Pr[z gewählt, U wird erreicht] = <br />
y∈F(U)<br />
≤ <br />
y∈F(U)<br />
≤ <br />
y∈F(U)<br />
1<br />
2n j−1 1<br />
A(Ui, y)<br />
i=1<br />
1<br />
2n j−1 <br />
i=1<br />
1<br />
(1 − 1<br />
n )2n−i−1<br />
e<br />
2n j−1 1<br />
2<br />
i=1<br />
n−i−1<br />
≤ 2n−j<br />
j−1 1<br />
· e<br />
2n 2<br />
i=1<br />
n−i−1<br />
j−1 1<br />
≤ e<br />
2n−i Wie schon im Beweis <strong>zu</strong>m Lemma 5.3 gezeigt wur<strong>de</strong>, gilt für alle z ∈ F(U)<br />
i=1<br />
Pr[z ist gewählt und U wird erreicht] ≥<br />
Daher ist (3) min<strong>de</strong>stens<br />
1<br />
e2n−j+1 j−1 1<br />
2<br />
i=1<br />
n−i<br />
1<br />
e22n−j+1 . <br />
Lemma 5.7<br />
Die Wahrscheinlichkeit, das A erfolgreich ist, beträgt min<strong>de</strong>stens ε 10<br />
4ε 3 n 8 .<br />
Beweis:<br />
Angenommen, (i) dass A einen guten Knoten U <strong>de</strong>r Stufe j erreicht und dass y voll<br />
ausgeglichen ist, und (ii), dass hj, hj+1, ..., hn−1 einen Pfad <strong>zu</strong> einem guten Blatt <strong>de</strong>finiert,<br />
das min<strong>de</strong>stens ein Bild in F(U) hat. Nach Lemma 5.6 ist bekannt, dass die<br />
Wahrscheinlichkeit für y = z min<strong>de</strong>stens 1<br />
e 2 2 n−j beträgt. Die Wahrscheinlichkeit, dass (i)<br />
eintritt, ist nach Lemma 5.4 min<strong>de</strong>stens ε (1−γ)2<br />
und dass (ii) bei gegebenem (i) eintritt,<br />
e<br />
. Daher beträgt die Erfolgswahrscheinlichkeit min<strong>de</strong>stens<br />
nach Lemma 5.5 min<strong>de</strong>stens ε<br />
2<br />
ε2 (1−γ) 2<br />
2n−je3 ≥ ε10<br />
4e3n8 .<br />
An<strong>zu</strong>merken ist, dass A’s Erfolg nur für <strong>de</strong>n Fall betrachtet wur<strong>de</strong>, dass y auf Stufe<br />
j voll ausgeglichen ist. Dennoch ist die Wahrscheinlichkeit unter <strong>de</strong>r Vorausset<strong>zu</strong>ng,<br />
dass y auf Stufe j voll ausgeglichen ist, für A, viele nicht erfolgreiche Kandidaten bis<br />
51
5 Perfekte Zero–<strong>Knowledge</strong> Arguments mit polynomieller Run<strong>de</strong>nzahl<br />
<strong>zu</strong>m Erreichen <strong>de</strong>r j-ten Stufe verarbeiten <strong>zu</strong> müssen, sehr gering: Gemäß gegebener<br />
Vorausset<strong>zu</strong>ng ist y in <strong>de</strong>n Ui für alle 1 ≤ i < j ausgeglichen, so dass A(U,y)<br />
2n−i > 1<br />
4 gilt.<br />
Somit ist die Wahrscheinlichkeit, dass A mehr als 8n Kandidaten für die hi’s bis <strong>zu</strong>r<br />
j-ten Stufe testen muss, in n exponentiell klein. Selbst wenn die Laufzeit von A auf 8n2 ε beschränkt ist, beträgt die Erfolgswahrscheinlichkeit weiterhin min<strong>de</strong>stens 10<br />
8e3n8 . Wenn<br />
ε nicht vernachlässigbar klein ist, dann ist auch diese nicht vernachlässigbar klein. <br />
Dieses schließt <strong>de</strong>n Beweis <strong>zu</strong> Satz 5.4.<br />
Für die Anwendung <strong>de</strong>s Bit–Commitment–Schemes in einem Zero–<strong>Knowledge</strong> Argument<br />
ist es notwendig, dass das Commitment–Scheme simulierbar ist.<br />
Satz 5.5<br />
Es gibt ein simulierbares perfekt–sicheres Commitment–Scheme.<br />
Beweisskizze:<br />
Da alle Prozesse von S in polynomieller Zeit ablaufen, ist eine Simulierbakeit gegeben,<br />
die dieselbe Verteilung in polynomieller Zeit erzeugt. <br />
Nach <strong>de</strong>m Beweis eines perfekt–sicheren simulierbaren Commitment–Schemes erfolgt<br />
mit <strong>de</strong>m nächsten Satz die Anwendung <strong>de</strong>s ” Reduktions-Theorems“ aus <strong>de</strong>n Arbeiten<br />
über perfekte Zero–<strong>Knowledge</strong> Arguments von [GMW86, IY87, BCC88].<br />
Satz 5.6<br />
Wenn ein perfekt–sicheres Commitment–Scheme mit einem polynomiell–beschränkten<br />
Empfänger existiert, welches von einer probabilistischen Maschine in erwarteter Polynomialzeit<br />
simulierbar ist, dann existiert ein perfektes Zero–<strong>Knowledge</strong> Argument für je<strong>de</strong><br />
Behauptung in N P.<br />
Das simulierbare perfekt–sichere Bit–Commitment Protokoll kann gemäß dieses ” Reduktions-Theorems“<br />
genutzt wer<strong>de</strong>n, so dass unter <strong>de</strong>r Vorausset<strong>zu</strong>ng <strong>de</strong>r Existenz von<br />
Einweg–Permutationen perfekte Zero–<strong>Knowledge</strong> Arguments für alle Sprachen in N P<br />
existieren. Zusammengefasst ergibt sich damit <strong>de</strong>r Beweis <strong>de</strong>s Satzes 5.1.<br />
52
6 Perfekte Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
6 Perfekte Zero–<strong>Knowledge</strong> Arguments mit konstanter<br />
Run<strong>de</strong>nzahl<br />
Die einzigen Arbeiten, die perfekte Zero–<strong>Knowledge</strong> Argument in konstanter Run<strong>de</strong>nzahl<br />
vorstellen, stammen von Brassard, Crépeau und Yung [BCY89, BCY91] und bauen auf<br />
<strong>de</strong>n Arbeiten von Brassard, Crépeau sowie Chaum [BC86, Cha87, BCC88] auf.<br />
Das hier vorgestellte Protokoll entspricht <strong>de</strong>r Veröffentlichung [BCY91]: Constantround<br />
perfect zero-knowledge computationally convincing protocols und ist<br />
diesem <strong>zu</strong>m größten Teil entnommen.<br />
Bei diesem Verfahren wird die Sicherheit <strong>de</strong>s Provers bedingungslos garantiert, auch<br />
wenn mächtige Organisationen mit unbekannter Berechnungsmöglichkeit und algorithmischen<br />
Kenntnissen versuchen, das Geheimnis <strong>de</strong>s Provers <strong>zu</strong> erlangen, siehe da<strong>zu</strong> auch<br />
Unterschied zwischen berechenbarem und perfektem Zero–<strong>Knowledge</strong> in Abschnitt 3.2 auf<br />
Seite 31.<br />
Die Arbeit [BCY91] besagt folgen<strong>de</strong>s:<br />
Satz 6.1 (Hauptergebnis)<br />
Unter <strong>de</strong>r Vorausset<strong>zu</strong>ng, dass es unmöglich ist, <strong>de</strong>n diskreten Logarithmus einer natürlichen<br />
Zahl in polynomieller Zeit <strong>zu</strong> berechnen, existiert ein perfektes Zero–<strong>Knowledge</strong><br />
Argument Protokoll mit nur drei Run<strong>de</strong>n, um alle Sprachen in N P <strong>zu</strong> entschei<strong>de</strong>n.<br />
Das Protokoll basiert auf <strong>de</strong>r Verwendung eines Bit–Commitment–Schemes. Um nicht<br />
nur ein einzelnes Bit son<strong>de</strong>rn ganze Zeichenketten gesichert übertragen <strong>zu</strong> können, bei<br />
<strong>de</strong>m die Geheimhaltung auch bei paralleler Anwendung erhalten bleibt (siehe da<strong>zu</strong> Abschnitt<br />
2.5 ab Seite 15), wird in diesem Protokoll eine ” Verzahnung“ zweier Bit–Commitment–Schemes<br />
vorgenommen.<br />
In einem Standard Bit–Commitment–Scheme, wie es z.B. in Abschnitt 2.5 vorgestellt<br />
wur<strong>de</strong>, wird von <strong>de</strong>m Prover ein Bit verschlüsselt und <strong>de</strong>m Verifier mitgeteilt. Zu einem<br />
späteren Zeitpunkt wird das verschlüsselte Bit vom Prover aufge<strong>de</strong>ckt. Beim Einsatz<br />
in einem Zero–<strong>Knowledge</strong> Argument hängt die Öffnung eines Commitments u.a. von<br />
<strong>de</strong>r Wahl <strong>de</strong>s Verifiers ab. In dieser Wahl durch <strong>de</strong>n Verifier, im weiteren Verlauf auch<br />
Öffnungswahl o<strong>de</strong>r Öffnungsauffor<strong>de</strong>rung (in englischen Originaltexten oft challenge:<br />
Herausfor<strong>de</strong>rung) genannt, liegt das Problem <strong>de</strong>r parallelen Ausführung. In bestimmten<br />
Konstellationen kann <strong>de</strong>r Verifier, nach<strong>de</strong>m er die Commitments erhalten hat, seine<br />
Wahl <strong>zu</strong>r Öffnung <strong>de</strong>r Commitments so treffen, dass <strong>de</strong>r Verifier nach <strong>de</strong>r Öffnung das<br />
Geheimnis <strong>de</strong>s Provers berechnen kann.<br />
Das Funktionsprinzip <strong>de</strong>s hier vorgestellten Protokolls besteht darin, dass <strong>de</strong>r Verifier<br />
<strong>de</strong>m Prover schon vor <strong>de</strong>r Festlegungsphase mitteilt, welche Commitments später geöffnet<br />
wer<strong>de</strong>n sollen. Damit nun aber <strong>de</strong>r Prover auch keine Täuschungsmöglichkeit hat,<br />
wird diese Wahl vom Verifier ebenfalls in einem Bit–Commitment–Scheme übermittelt.<br />
53
6 Perfekte Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Dieses erste Bit–Commitment–Scheme, mit <strong>de</strong>m <strong>de</strong>r Verifier seine Wahl an <strong>de</strong>n Prover<br />
übermittelt, muss dabei in Be<strong>zu</strong>g auf die Geheimhaltung nur für die Dauer <strong>de</strong>r Kommunikation<br />
sicher sein. Eine berechenbare Sicherheit reicht dabei aus, wenn aufgrund<br />
<strong>de</strong>r gewählten Sicherheitsparameter gewährleistet ist, dass <strong>de</strong>r Prover in <strong>de</strong>n wenigen<br />
Sekun<strong>de</strong>n o<strong>de</strong>r Minuten bis <strong>zu</strong>m Auf<strong>de</strong>cken <strong>de</strong>r gewählten Bits <strong>de</strong>n kryptographischen<br />
Algorithmus nicht brechen kann.<br />
6.1 Grobkonzept <strong>de</strong>s Algorithmus<br />
Somit besteht <strong>de</strong>r grundlegen<strong>de</strong> Algorithmus <strong>de</strong>s Protokolls von Brassard, Crépeau und<br />
Yung aus folgen<strong>de</strong>n Schritten. Dabei han<strong>de</strong>lt es sich nur um einen groben Überblick. Die<br />
Einzelheiten, insbeson<strong>de</strong>re welche Parameter ausgetauscht wer<strong>de</strong>n und welche Inhalte<br />
bzw. Be<strong>de</strong>utungen die xk, yk und zk haben, wer<strong>de</strong>n im weiteren Verlauf dargestellt.<br />
Protokoll 6.1 (Grobkonzept <strong>de</strong>s Algorithmus)<br />
Gemeinsame Eingabe:<br />
• k: Sicherheitsparameter<br />
• p und α, die nachfolgend in <strong>de</strong>n zahlentheoretischen Vorausset<strong>zu</strong>ngen<br />
erläutert wer<strong>de</strong>n.<br />
Schritt V1: Der Verifier wählt ein s ∈ ∗ p und sen<strong>de</strong>t es. Er wählt weiterhin<br />
Bits y1, . . . , yk und sen<strong>de</strong>t sie in einem Commitment.<br />
Schritt P2: Der Prover sen<strong>de</strong>t seinen Beweis x1, . . . , xk in einem Commitment.<br />
Schritt V3: Der Verifier entschlüsselt seine Öffnungsauffor<strong>de</strong>rungen y1, . . . , yk<br />
für <strong>de</strong>n Prover.<br />
Schritt P4: Der Prover entspricht <strong>de</strong>n For<strong>de</strong>rungen und sen<strong>de</strong>t die gewünschten<br />
z1, . . . , zk.<br />
6.2 Zahlentheoretische Vorausset<strong>zu</strong>ngen<br />
Das Verfahren beruht auf <strong>de</strong>r Schwierigkeit, <strong>de</strong>n diskreten Logarithmus einer ganzen<br />
Zahl <strong>zu</strong> berechnen, siehe Abschnitt 2.8.5 ab Seite 27. Neben <strong>de</strong>r multiplikativen Gruppe<br />
∗ p = {1, . . . , p − 1} wird hier <strong>zu</strong>sätzlich die additive Gruppe p−1 = {0, . . . , p − 2}<br />
benötigt, in <strong>de</strong>r modulo p − 1 addiert wird. Bei<strong>de</strong> Gruppen enthalten dieselbe Anzahl an<br />
Elementen. Für alle a, b, ν ∈ mit <strong>de</strong>r Eigenschaft a ≡ 0 (mod p) und b ≡ ν (mod p−1)<br />
gilt nach einem Satz von Fermat a b ≡ a ν (mod p). In diesem Sinne existiert ein x i für ein<br />
x ∈ ∗ p und ein i ∈ p−1. Sei α ein erzeugen<strong>de</strong>s Element von ∗ p. Dann ist die Funktion<br />
exp α : p−1 → ∗ p, die <strong>de</strong>finiert wird als exp α(i) = α i , eine Permutation.<br />
54
6 Perfekte Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Zur Vorbereitung auf das Bit–Commitment–Scheme einigen sich <strong>de</strong>r Prover und Verifier<br />
auf ein große Primzahl p, für die bei<strong>de</strong> die Faktorisierung von p − 1 kennen. Derartige<br />
Primzahlen können mittels effizienter Verfahren gefun<strong>de</strong>n wer<strong>de</strong>n. Darüber hinaus<br />
einigen sich Prover und Verifier über ein erzeugen<strong>de</strong>s Element α ∈ ∗ p. Aufgrund <strong>de</strong>r<br />
polynomiellen Berechenbarkeit sind bei<strong>de</strong> Eigenschaften von bei<strong>de</strong>n Teilnehmern leicht<br />
<strong>zu</strong> prüfen.<br />
Diese bei<strong>de</strong>n Parameter α und p müssen nicht bei je<strong>de</strong>r Kommunikation geän<strong>de</strong>rt<br />
wer<strong>de</strong>n. Zusammen mit <strong>de</strong>r Faktorisierung von p − 1 können sie öffentlich bekannt sein<br />
und von einem Trust-Center verwaltet wer<strong>de</strong>n, wenn sie einmal überprüft wur<strong>de</strong>n. Ist<br />
eine Zahl i ∈ p−1 gegeben, kann sehr leicht α i berechnet wer<strong>de</strong>n. Es ist aber kein<br />
effizienter Algorithmus bekannt, diesen Prozess <strong>zu</strong> invertieren, wenn die Faktoren von<br />
p − 1 groß genug gewählt wur<strong>de</strong>n.<br />
Um ein Bit ν ∈ {0, 1} in einem Commitment <strong>zu</strong> verschlüsseln, wählt <strong>zu</strong>erst <strong>de</strong>r<br />
Empfänger ein beliebiges s ∈ ∗ p und sen<strong>de</strong>t es <strong>de</strong>m Sen<strong>de</strong>r. Dieser wählt ein <strong>zu</strong>fälliges<br />
r ∈R p−1 und berechnet x = α r s ν . Diese x ist das Commitment und wird <strong>de</strong>m<br />
Empfänger gesen<strong>de</strong>t. Das r wird dabei vom Sen<strong>de</strong>r geheim gehalten. Soll das Commitment<br />
geöffnet wer<strong>de</strong>n, wird das r vom Sen<strong>de</strong>r an <strong>de</strong>n Empfänger gesen<strong>de</strong>t, <strong>de</strong>r einfach<br />
x = α r s ν überprüfen kann.<br />
Da die exp α Funktion eine Permutation ist, kann je<strong>de</strong>s Element aus ∗ p dafür genutzt<br />
wer<strong>de</strong>n, sowohl eine 0 als auch eine 1 in einem Commitment <strong>zu</strong> verschlüsseln, welche über<br />
∗ p gleichverteilt sind. Daher ist es für <strong>de</strong>n Empfänger informationstheoretisch unmöglich,<br />
ein 0–Commitment von einem 1–Commitment <strong>zu</strong> unterschei<strong>de</strong>n.<br />
6.3 Täuschungsmöglichkeit <strong>de</strong>s Provers<br />
Unter bestimmten Vorausset<strong>zu</strong>ngen kann mit <strong>de</strong>m bisherigen Verfahren <strong>de</strong>r Prover immer<br />
noch betrügen. Da<strong>zu</strong> ein ein kleines Beispiel:<br />
Beispiel 8<br />
In Schritt 2 <strong>de</strong>s Protokolls 6.1 verschlüsselt <strong>de</strong>r Verifier seine Wahl, dass das Bit y später<br />
in Schritt 4 vom Prover geöffnet wer<strong>de</strong>n soll, mit einem <strong>zu</strong>fällig gewählten r ∈R p−1 und<br />
berechnet e = α r s y . Dieses Commitment wird an <strong>de</strong>n Prover gesen<strong>de</strong>t, <strong>de</strong>r seinerseits<br />
ein Bit x = y in einem Commitment mit x = α q e mit einem <strong>zu</strong>fällig gewählten q ∈R<br />
p−1 erstellt. Bis jetzt kann <strong>de</strong>r Prover dieses Commitment natürlich nicht wechselseitig<br />
öffnen. Nichts<strong>de</strong>stotrotz wird <strong>de</strong>r Verifier sein r in Schritt 4 öffnen und an <strong>de</strong>n Prover<br />
sen<strong>de</strong>n. Jetzt hat <strong>de</strong>r Prover die Möglichkeit, sein Commitment von x als Bit y mittels<br />
eines ” Zeugnisses“ q + r <strong>zu</strong> öffnen, da x = α q+r s y gilt (q und r sind Elemente von p−1<br />
und wer<strong>de</strong>n modulo p − 1 addiert).<br />
Dieses Problem enspringt nicht <strong>de</strong>m Protokoll 6.1 son<strong>de</strong>rn wohnt <strong>de</strong>r un<strong>zu</strong>reichen<strong>de</strong>n<br />
Definition <strong>de</strong>s Bit–Commitment–Schemes inne. Es reicht nicht aus, per Definition <strong>zu</strong><br />
55
6 Perfekte Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
verhin<strong>de</strong>rn, dass ein Sen<strong>de</strong>r sein Commitment nicht zwei<strong>de</strong>utig öffnen kann. Zusätzlich<br />
ist erfor<strong>de</strong>rlich, dass <strong>de</strong>r Sen<strong>de</strong>r <strong>zu</strong>m Zeitpunkt <strong>de</strong>r Erstellung <strong>de</strong>s Commitments weiß,<br />
wie er das Commitment öffnen kann. Mit an<strong>de</strong>ren Worten darf es nicht möglich sein, ein<br />
Bit <strong>zu</strong> verschlüsseln, welches noch nicht bekannt ist.<br />
Entsprechen<strong>de</strong> Commitments wer<strong>de</strong>n von Brassard, Crépau und Yung als ” EPRblobs“<br />
bzw. als EPR–Commitments bezeichnet. 19 Die Gefahr dieser EPR-Commitments<br />
besteht darin, dass diese nachträglich entwe<strong>de</strong>r 0–Commitments o<strong>de</strong>r 1–Commitments<br />
wer<strong>de</strong>n können, wenn <strong>de</strong>r Prover weitere Informationen vom Verifier erhält.<br />
Es wird daher ein Unterprozess <strong>zu</strong>r Commitment Zertifizierung eingeführt. Dieses<br />
erlaubt <strong>de</strong>m Prover <strong>de</strong>n Verifier davon <strong>zu</strong> überzeugen, dass ein gegebenes Commitment<br />
nicht EPR ist, ohne irgendwelche Informationen darüber <strong>zu</strong> veröffentlichen, ob es sich<br />
um ein 0–Commitment o<strong>de</strong>r ein 1–Commitment han<strong>de</strong>lt.<br />
6.4 Commitment Zertifizierung<br />
Sei x ein nicht–EPR Commitment das aktuelle Commitment und ν ∈ {0, 1} die Bezeichnung<br />
für x als ν–Commitment. Sei ferner z das Zeugnis <strong>de</strong>s Provers, dass dieser das<br />
Commitment öffnen kann, d.h. x = α z s ν . Um <strong>de</strong>n Verifier davon überzeugen <strong>zu</strong> können,<br />
dass er das Commitment x öffnen kann, erzeugt <strong>de</strong>r Prover k <strong>zu</strong>sätzliche Kontroll–<br />
Commitments u1, . . . , uk, in<strong>de</strong>m er k <strong>zu</strong>fällige Bits b1, . . . , bk <strong>zu</strong>sammen mit v1, . . . , vk<br />
in p−1 wählt und ui = α vi s bi mit 1 ≤ i ≤ k berechnet. Diese Kontroll Commitments<br />
wer<strong>de</strong>n <strong>de</strong>m Verifier übergeben. An diesem Punkt wählt <strong>de</strong>r Verifier <strong>zu</strong>fällige Öffnungsauffor<strong>de</strong>rungen<br />
h1, . . . , hk ∈ {0, 1} und sen<strong>de</strong>t diese <strong>de</strong>m Prover. Für je<strong>de</strong>s hi = 0 öffnet<br />
<strong>de</strong>r Prover die Kontroll Commitments ui, in<strong>de</strong>m er bi und vi übersen<strong>de</strong>t. Für je<strong>de</strong>s hi = 1<br />
zeigt <strong>de</strong>r Prover, dass er das aktuelle Commitment x dann und nur dann öffnen kann,<br />
wenn er das Kontroll Commitment ui öffnen kann. Dies geschieht folgen<strong>de</strong>rmaßen:<br />
• Falls ν = bi ist, berechnet <strong>de</strong>r Prover wi = vi − z und sen<strong>de</strong>t es <strong>de</strong>m Verifier, <strong>de</strong>r<br />
ui = α wi x prüft;<br />
• Falls ν = bi ist, berechnet <strong>de</strong>r Prover wi = vi + z und sen<strong>de</strong>t es <strong>de</strong>m Verifier, <strong>de</strong>r<br />
uix = α wi s prüft.<br />
Beweis:<br />
Wenn x kein EPR–Commitment ist, besteht <strong>de</strong>r einzige Weg für <strong>de</strong>n Prover <strong>zu</strong> täuschen<br />
darin, die h1, . . . , hk vorher exakt <strong>zu</strong> raten. In diesem Fall kann <strong>de</strong>r Prover die Kontroll<br />
Commitments ui vorbereiten, falls hi = 0 ist o<strong>de</strong>r an<strong>de</strong>rnfalls mit einem <strong>zu</strong>fällig gewähltem<br />
wi ∈ p−1 die ui <strong>zu</strong> berechnen mit ui = α wi (x · (1 − bi) + sx −1 · bi). Sollte irgen<strong>de</strong>ines<br />
19 Diese Bezeichnung wur<strong>de</strong> in Anlehnung an ein von Einstein-Podolsky-Rosen veröffentlichtes Para-<br />
doxon <strong>de</strong>r Quantenphysik gewählt.<br />
56
6 Perfekte Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
<strong>de</strong>r hi falsch geraten wor<strong>de</strong>n sein, wird <strong>de</strong>r Prover dabei erwischt, entwe<strong>de</strong>r das Kontroll<br />
Commitment nicht öffnen <strong>zu</strong> können (falls tatsächlich hi = 0) o<strong>de</strong>r das x nicht auf das<br />
hi beziehen <strong>zu</strong> können (falls hi = 1). Die Wahrscheinlichkeit für ein erfolgreiches Raten<br />
liegt bei 2 −k . Auf <strong>de</strong>r an<strong>de</strong>ren Seite ist offensichtlich, dass <strong>de</strong>r Verifier nichts über ν<br />
durch <strong>de</strong>n Wert bi erfährt, falls hi = 0 ist, bzw. ob ν = bi ist, falls hi = 1 ist. <br />
Es ist <strong>zu</strong> beachten, dass dieser Unterprozess parallel ausgeführt wer<strong>de</strong>n kann, ohne<br />
dabei seine Eigenschaften <strong>zu</strong> verlieren.<br />
Somit kann das endgültige Protokoll beschrieben wer<strong>de</strong>n. Dieses entspricht <strong>de</strong>m Protokoll<br />
6.1 mit <strong>de</strong>r Ausnahme, dass die Commitment Zertifizierung als Unterprozess zwischen<br />
Schritt 2 und 3 für je<strong>de</strong>s Commitment benutzt wird, welches vom Prover ausgegeben<br />
wird. Dadurch wird es für <strong>de</strong>n Prover mit einer Fehlerwahrscheinlichkeit von 2 −k<br />
unmöglich, mit Hilfe <strong>de</strong>r Informationen <strong>de</strong>s Verifiers aus Schritt 3 <strong>zu</strong> täuschen.<br />
6.5 Vorbemerkungen <strong>zu</strong>m Protokoll<br />
Wie eingangs erwähnt wird bezüglich <strong>de</strong>r Mächtigkeit <strong>de</strong>s Verifiers keine Einschränkung<br />
vorgenommen. Nichts<strong>de</strong>stotrotz muss <strong>zu</strong>r Ausführung <strong>de</strong>r ehrliche Verifier lediglich effizient<br />
sein, da an<strong>de</strong>rnfalls kein praktischer Nutzen für das Verfahren gegeben wäre. Von<br />
<strong>de</strong>m Prover wird ebenfalls keine informationstheoretisch geprägte Beschränkung wie z.B.<br />
polynomiell beschränkte Zeit verlangt, da diese Schranke lediglich asymptotisch sei. Es<br />
wird vielmehr vorausgesetzt, dass ein spezieller Teil <strong>de</strong>s Protokolls existiert, <strong>de</strong>n <strong>de</strong>r<br />
Prover während <strong>de</strong>r Laufzeit <strong>de</strong>s Protokolls nicht ausführen kann. 20 Es soll damit betont<br />
wer<strong>de</strong>n, dass die <strong>de</strong>m Prover auferlegten Grenzen tatsächlicher und nicht nur informationstheoretischer<br />
Natur seien. Selbst unter <strong>de</strong>r Vorausset<strong>zu</strong>ng, dass P = N P ist, wird es<br />
für einen Prover mit einer vernachlässigbaren Fehlerwahrscheinlichkeit unmöglich sein,<br />
einen genügend großen diskreten Logarithmus während <strong>de</strong>r Kommunikation mit <strong>de</strong>m<br />
Verifier <strong>zu</strong> berechnen.<br />
Desweiteren wird im Unterschied <strong>zu</strong> vielen an<strong>de</strong>ren Veröffentlichungen <strong>de</strong>r Sicherheitsparameter<br />
k nicht in Abhängigkeit <strong>zu</strong>r Behauptung <strong>de</strong>s Provers als Schranke einer<br />
Funktion genutzt. Nach Ansicht von Brassard, Crépeau und Yung besteht keine direkte<br />
Verbindung zwischen <strong>de</strong>r Wichtigkeit für <strong>de</strong>n Verifier, nicht betrogen <strong>zu</strong> wer<strong>de</strong>n, und<br />
<strong>de</strong>r <strong>zu</strong>r Diskussion stehen<strong>de</strong>n Behauptung.<br />
Der in diesem Verfahren eingesetzte Simulator <strong>zu</strong>r Überprüfung <strong>de</strong>r Zero–<strong>Knowledge</strong><br />
Eigenschaft ersetzt nicht <strong>de</strong>n Verifier. Vielmehr ruft <strong>de</strong>r Simulator <strong>de</strong>n Verifier als<br />
Unterprozess auf und verhält sich ihm gegenüber so, als kommuniziere <strong>de</strong>r Verifier direkt<br />
mit <strong>de</strong>m Prover. Zur nachvollziehbaren Steuerung hat <strong>de</strong>r Simulator jedoch die volle<br />
20 Was nach Auffassung <strong>de</strong>s Autors im Gegensatz <strong>zu</strong>r Meinung von Brassard, Crépeau und Yung gera<strong>de</strong><br />
von einer polynomiellen Schranke erfasst wird, da diese eine maximale Anzahl von Rechenschritten<br />
enthalten kann und damit <strong>de</strong>r in [BCY91] nur verbal formulierten Zeitobergrenze entspricht.<br />
57
6 Perfekte Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Kontrolle über die Münzwürfe, die <strong>de</strong>r Verifier während seiner Aktion durchführen muss.<br />
Weiterhin kann <strong>de</strong>r Simulator <strong>zu</strong> je<strong>de</strong>m Zeitpunkt einen Speicheraus<strong>zu</strong>g <strong>de</strong>s Verifiers<br />
durchführen o<strong>de</strong>r ihn <strong>zu</strong> einem früheren Status <strong>zu</strong>rückversetzen. 21 Somit ist gewährleistet,<br />
dass <strong>de</strong>r Verifier nichts vom Prover erfährt, da <strong>de</strong>ssen Geheimnis <strong>de</strong>m Simulator<br />
unbekannt ist.<br />
Der Simulator muss <strong>zu</strong>sätzlich effizient sein. Das heißt, dass die erwartete Zeit bis <strong>zu</strong>r<br />
Ausgabe seiner Sicht sich nur durch einen (kleinen) konstanten Faktor von <strong>de</strong>r erwarteten<br />
Zeit für die Ausgabe durch <strong>de</strong>n Prover bei <strong>de</strong>r Kommunikation mit <strong>de</strong>m Verifier<br />
bezüglich <strong>de</strong>r betreffen<strong>de</strong>n Behauptung unterschei<strong>de</strong>t. Der Simulator kann zwar <strong>de</strong>n Verifier<br />
beliebig <strong>zu</strong>rücksetzen und einige wenige Male mit leicht verän<strong>de</strong>rten Sichten weiter<br />
laufen lassen. Die erwartete Zahl dieser Wie<strong>de</strong>rholungen muss jedoch klein bleiben, so<br />
dass <strong>de</strong>r Simulator effizient arbeitet.<br />
Das Protokoll aus [BCY91] basiert wie anfangs erwähnt auf <strong>de</strong>r Arbeit von [BCC88],<br />
<strong>de</strong>ssen Protokoll hier in einer Kurzform vorgestellt wer<strong>de</strong>n soll, um die <strong>zu</strong>grun<strong>de</strong>liegen<strong>de</strong><br />
Technik und I<strong>de</strong>e besser verstehen <strong>zu</strong> können. Das Basis–Protokoll wird anschließend<br />
<strong>zu</strong> <strong>de</strong>m endgüligen Protokoll <strong>de</strong>s perfekten Zero–<strong>Knowledge</strong> Argument in konstanter<br />
Run<strong>de</strong>nzahl erweitert.<br />
6.6 Kurzbeschreibung <strong>de</strong>s Basis–Protokolls und Definitionen<br />
Mit <strong>de</strong>r Bezeichnung f : X → Y wird nur eine Funktion bezeichnet, die sich effizient<br />
berechnen lässt. Darüber hinaus bezeichnet aus Vereinfachungsgrün<strong>de</strong>n f einen effizienten<br />
Algorithmus <strong>zu</strong>r Berechnung dieser Funktion. Mit f : X R<br />
−→ Y wird ein effizienter<br />
probabilistischer Algorithmus bezeichnet, <strong>de</strong>r je<strong>de</strong>m x ∈ X eine Wahrscheinlichkeitsverteilung<br />
f(x) über Y <strong>zu</strong>ordnet. Wenn keine Verwechslungsgefahr besteht, wird mit f(x)<br />
das wahrscheinliche Ergebnis <strong>de</strong>s verwen<strong>de</strong>ten Algorithmus f bei <strong>de</strong>r Eingabe von x<br />
bezeichnet.<br />
Sei Σ = {0, 1} und Γ = {0, 1, }. Bei einer gegebenen Menge X wird mit X ⋆ die<br />
endliche Folge von Elementen aus X bezeichnet. (Das Symbol ∗ aus ∗ p ist nicht <strong>zu</strong><br />
verwechseln mit <strong>de</strong>m ⋆ von X ⋆ .) Für eine Zeichenkette x ∈ X ⋆ bezeichnet x[i] das ite<br />
Element. Für ν ∈ Σ ⋆ und ɛ ∈ Γ ⋆ sind ν und ɛ miteinan<strong>de</strong>r verträglich, bezeichnet<br />
durch ν ≍ ɛ, 22 wenn |ν| = |ɛ| und für alle i, 1 ≤ i ≤ |ν|, ν[i] = ɛ[i] gilt, falls ɛ[i] = .<br />
Dabei soll das Symbol ein ungeöffnetes Bit–Commitment repräsentieren. Da<strong>zu</strong> wird<br />
eine Überführungsfunktion ♦ : Γ → Σ mit ♦(0) = 0, ♦(1) = 1 und ♦() = 0 <strong>de</strong>finiert.<br />
Diese Funktion wird in entsprechen<strong>de</strong>r Weise auf ♦ : Γ ⋆ → Σ ⋆ erweitert.<br />
21Das heißt, dass <strong>de</strong>r Verifier als Turing Maschine betrachtet wie<strong>de</strong>r auf eine schon mal abgearbeitete<br />
Konfiguration gesetzt wird.<br />
22Das Symbol ≍ soll dabei an das = Symbol erinnern, wenngleich auch zwei Elemente unterschiedlicher<br />
Ausgangsmengen verglichen“ wer<strong>de</strong>n.<br />
”<br />
58
6 Perfekte Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Sei n ∈ , dann bezeichnet Bn die Menge aller Booleschen Ausdrücke mit n Variablen<br />
und B = <br />
n∈ Bn. Sei ferner Ψ ∈ B die Bezeichnung für einen Booleschen Ausdruck.<br />
Dann wird mit Wn = {a | a ∈ {wahr, falsch} n , a erfüllt Ψ} sowie W = <br />
n∈ Wn die<br />
Menge aller Belegungen bezeichnet, die die Booleschen Ausdrücke erfüllen.<br />
Weiterhin ist je<strong>de</strong>m Ψ ∈ B eine endliche Menge VΨ ⊆ Σ ⋆ <strong>de</strong>r ” verschlüsselten Schaltkreise“<br />
sowie EΨ ⊆ Γ ⋆ <strong>de</strong>r teilweise ” entschlüsselten Schaltkreise“ <strong>zu</strong>geordnet. Für je<strong>de</strong>n<br />
Ausdruck Ψ ∈ B und je<strong>de</strong> Zeichenkette ν ∈ Σ ⋆ (rsp. ɛ ∈ Γ ⋆ ) ist effizient entscheidbar,<br />
ob ν ∈ VΨ (rsp. ɛ ∈ EΨ) gilt. Überdies gilt für je<strong>de</strong>n Ψ ∈ B, dass alle Elemente aus VΨ<br />
und EΨ dieselbe Länge ℓ(Ψ) haben.<br />
Die Schlüsseleigenschaft <strong>de</strong>s Basis–Protokolls besagt nun folgen<strong>de</strong>s: Sei Ψ ∈ B ein<br />
beliebiger Ausdruck. Dann gilt<br />
∃ν ∈ VΨ, ∃ɛ ∈ EΨ : ν ≍ ɛ ⇐⇒ Ψ ist erfüllbar.<br />
Da<strong>zu</strong> existieren vier effiziente Algorithmen:<br />
1. ζ : B R<br />
−→ V<br />
2. ρ : B R<br />
−→ E<br />
3. γ : B × V × W → E ∪ {⊥} und<br />
4. δ : B × V × E → W ∪ {⊥}<br />
so dass folgen<strong>de</strong>s gilt:<br />
1. ∀Ψ ∈ B : ζ(Ψ) ist gleichverteilt über VΨ.<br />
2. ∀Ψ ∈ B : ρ(Ψ) ist gleichverteilt über EΨ.<br />
3. Sei Ψ ∈ Bn, a ∈ Wn erfüllt Ψ und ν ∈ VΨ. Dann ist γ(Ψ, ν,a) ∈ EΨ und verträglich<br />
mit ν. (An<strong>de</strong>rnfalls gilt γ(Ψ, ν,a) ∈ ⊥.) Außer<strong>de</strong>m gilt ∀Ψ ∈ B, ∀a ∈ W erfüllt Ψ :<br />
γ(Ψ, ζ(Ψ),a) ist gleichverteilt über EΨ.<br />
4. Seien Ψ ∈ B, ν ∈ VΨ und ɛ ∈ EΨ mit ν ≍ ɛ. Dann ist δ(Ψ, ν,ɛ) eine erfüllen<strong>de</strong><br />
Belegung <strong>zu</strong> Ψ. An<strong>de</strong>rnfalls ist δ(Ψ, ν,ɛ) = ⊥.<br />
Angenommen, <strong>de</strong>r Prover möchte <strong>de</strong>n Verifier davon überzeugen, dass er eine erfüllen<strong>de</strong><br />
Belegung für einige Ψ ∈ B kennt. Das Basis–Protokoll besteht aus k unabhängigen<br />
Run<strong>de</strong>n, die nacheinan<strong>de</strong>rn ausgeführt wer<strong>de</strong>n. Dabei sieht eine Run<strong>de</strong> i wie folgt aus:<br />
Protokoll 6.2 (Run<strong>de</strong> i <strong>de</strong>s Basis–Protokolls)<br />
Schritt P1: Der Prover berechnet νi = ζ(Ψ), verschlüsselt je<strong>de</strong>s Bit νi[j] in<br />
einem Commitment xi[j] und sen<strong>de</strong>t es.<br />
59
6 Perfekte Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Schritt V2: Der Verifier sen<strong>de</strong>t yi ∈ {0, 1} als seine Öffnungswahl <strong>de</strong>r Commitments.<br />
Schritt P3: War die Wahl eine ” 0“, öffnet <strong>de</strong>r Prover die xi[j], sen<strong>de</strong>t diese<br />
für je<strong>de</strong>s j und zeigt damit νi. Der Verifier prüft νi ∈ VΨ.<br />
War die Wahl eine ” 1“, nutzt <strong>de</strong>r Prover sein geheimes Wissen über eine<br />
erfüllen<strong>de</strong> Belegung a und berechnet ɛi = γ(Ψ, νi,a). Er sen<strong>de</strong>t lediglich<br />
die xi[j]’s, die ɛi[j] = entsprechen. (Zu beachten ist, dass in diesem<br />
Fall ɛi[j] = νi[j] gilt, da νi ≍ ɛi.) Der Verifier prüft ɛi ∈ EΨ.<br />
In bei<strong>de</strong>n Fällen stoppt <strong>de</strong>r Verifier und verwirft die Behauptung, wenn<br />
die Prüfung fehlerhaft war.<br />
Lemma 6.1<br />
Das Protokoll 6.2 ist berechenbar ein<strong>de</strong>utig, da <strong>de</strong>r Prover nicht im Voraus weiß, welche<br />
Auffor<strong>de</strong>rung in je<strong>de</strong>r Run<strong>de</strong> <strong>zu</strong> erwarten ist.<br />
Beweis:<br />
Seien νi und ɛi die Antworten auf die Öffnungswahlen in Run<strong>de</strong> i. Unter <strong>de</strong>r Vorausset<strong>zu</strong>ng,<br />
dass <strong>de</strong>r Prover die Commitments nicht zwei<strong>de</strong>utig öffnen kann, müssen νi und<br />
ɛi verträglich sein. Falls νi ∈ VΨ und ɛi ∈ EΨ gilt, dann ist δ(Ψ, νi,ɛi) eine erfüllen<strong>de</strong><br />
Belegung <strong>zu</strong> Ψ. Infolge<strong>de</strong>ssen ist Ψ erfüllbar und <strong>de</strong>r Prover kennt eine effizient berechenbare,<br />
erfüllbare Belegung dafür. An<strong>de</strong>rnfalls, wenn νi ∈ VΨ und ɛi ∈ EΨ gilt, beträgt<br />
die Wahrscheinlichkeit min<strong>de</strong>stens 50%, dass <strong>de</strong>r Verifier <strong>de</strong>n Prover beim Täuschen in<br />
dieser Run<strong>de</strong> erwischt. Die Wahrscheinlichkeit für unerkannte falsche Behauptung <strong>de</strong>s<br />
Provers beträgt somit 2 −k für das vollständige Protokoll, immer vorausgesetzt, dass <strong>de</strong>r<br />
Prover das Bit–Commitment–Scheme nicht überlisten kann.<br />
Lemma 6.2<br />
Das Protokoll 6.2 ist perfekt Zero–<strong>Knowledge</strong>, vorausgesetzt, dass ein 0–Commitment<br />
informationstheoretisch nicht von einem 1–Commitment <strong>zu</strong> unterschei<strong>de</strong>n ist.<br />
Beweis:<br />
Um eine Run<strong>de</strong> <strong>de</strong>s Protokolls <strong>zu</strong> simulieren, wirft <strong>de</strong>r Simulator eine Münze.<br />
Ist <strong>de</strong>r Kopf oben, generiert <strong>de</strong>r Simulator ν = ζ(Ψ), verschlüsselt je<strong>de</strong>s Bit in ν in<br />
einem Commitment und fragt <strong>de</strong>n Verifier nach seiner Wahl. Beträgt diese ” 0“, öffnet <strong>de</strong>r<br />
Simulator alle Commitments. An<strong>de</strong>rnfalls missachtet <strong>de</strong>r Simulator diese ” unglückliche“<br />
Wahl und startet einen neuen Versuch.<br />
Ist nach <strong>de</strong>m Münzwurf die Zahl oben, erzeugt <strong>de</strong>r Simulator ɛ = ρ(Ψ), setzt ν =<br />
♦(ɛ), verschlüsselt je<strong>de</strong>s Bit in ν in Commitments und fragt <strong>de</strong>n Verifier nach seiner<br />
Wahl. Beträgt diese ” 1“, öffnet <strong>de</strong>r Simulator die Commitments, die ɛ[j] = entsprechen.<br />
An<strong>de</strong>rnfalls missachtet <strong>de</strong>r Simulator diese ” unglückliche“ Wahl und startet einen neuen<br />
Versuch.<br />
60
6 Perfekte Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Da ein 0–Commitment und ein 1–Commitment ununterscheidbar sind, ist die Wahl<br />
<strong>de</strong>s Verifiers unabhängig von <strong>de</strong>m Münzwurf <strong>de</strong>s Simulators. Daher ist die erwartete<br />
Anzahl <strong>de</strong>r Versuche für eine erfolgreiche Simulation einer Run<strong>de</strong> 2.<br />
Somit ist die Simulation vollständig und alle k Run<strong>de</strong>n können eine nach <strong>de</strong>r an<strong>de</strong>ren<br />
in ungefähr doppelt soviel Zeit simuliert wer<strong>de</strong>n.<br />
6.7 Perfektes Zero–<strong>Knowledge</strong> Argument in konstanter<br />
Run<strong>de</strong>nzahl<br />
Nun kann die formale Beschreibung <strong>de</strong>s endgültigen Protokolls für das perfekte Zero–<br />
<strong>Knowledge</strong> Argument in konstanter Run<strong>de</strong>nzahl für das SAT-Problem erfolgen. Da das<br />
SAT–Problem N P-vollständig ist, folgt daraus, dass dieses Protokoll für alle Behauptungen,<br />
die in N P liegen, geeignet ist.<br />
Zusammenfassend wer<strong>de</strong>n hier nochmal alle Bezeichnungen aufgeführt, die in <strong>de</strong>m<br />
Protokoll verwen<strong>de</strong>t wer<strong>de</strong>n.<br />
• p, α und s entsprechen <strong>de</strong>m Protokoll 6.1, ∗ p einer multiplikativen Gruppe und<br />
p−1 einer additiven Gruppe gemäß Seite 54.<br />
• Σ = {0, 1}<br />
• Γ = {0, 1, }<br />
• ν das <strong>zu</strong> verschlüsseln<strong>de</strong> Bit<br />
• z ∈R p−1<br />
• x = α z s ν<br />
• β : Σ R<br />
−→ ∗ p × p−1 wird <strong>de</strong>finiert mit β(ν) = (x, z).<br />
Das Tupel (x, z) entspricht <strong>de</strong>m Commitment <strong>de</strong>s Bits ν, wobei x das eigentliche<br />
Commitment und z das Zeugnis darstellt.<br />
Diese Notation wird in natürlicher Weise erweitert auf β(ν) für ν ∈ Σ ⋆ . Sie wird<br />
ebenfalls erweitert auf β(ɛ) für ɛ ∈ Γ ⋆ , wobei hier β(ɛ) = β(♦(ɛ)) be<strong>de</strong>utet.<br />
O.b.d.A. wird für diesen Fall willkürlich ɛ[i] = als ɛ[i] = 0 angenommen.<br />
• ϕ : ∗ p × p−1 × Γ → {wahr, falsch} wird <strong>de</strong>finiert mit ϕ(x, z, ν) = wahr, wenn<br />
entwe<strong>de</strong>r ν = o<strong>de</strong>r x = α z s ν gilt, d.h. dann und nur dann, wenn entwe<strong>de</strong>r das<br />
Commitment x ungeöffnet bleibt o<strong>de</strong>r z ein korrektes Zeugnis dafür ist, dass x ein<br />
ν–Commitment ist.<br />
Diese Notation wird ebenfalls entsprechend erweitert auf ϕ : ( ∗ p) ℓ ×(p−1) ℓ ×Γ ℓ →<br />
{wahr, falsch} für je<strong>de</strong> ganze Zahl ℓ. In diesem Fall gilt ϕ(x, z, ν) = wahr dann<br />
und nur dann, wenn x[i] = α z[i] s ν[i] für alle i mit ν[i] = , 1 ≤ i ≤ ℓ.<br />
61
6 Perfekte Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
• Ψ ist ein erfüllbarer Boolescher Ausdruck. Es wird angenommen, dass <strong>de</strong>r Prover<br />
eine erfüllen<strong>de</strong> Belegung a für Ψ kennt.<br />
• Alle weiteren Notationen folgen <strong>de</strong>n Definitionen <strong>de</strong>s Basis–Protokolls ab Seite 58.<br />
Um das nachfolgen<strong>de</strong> Protokoll nicht mit trivialen Details <strong>zu</strong> überfrachten, wer<strong>de</strong>n<br />
offensichtliche aber notwendige Tests nicht explizit aufgeführt. Zum Beispiel muss <strong>de</strong>r<br />
Prover sicherstellen, dass im Schritt P1 s ∈ ∗ p gilt, weil <strong>de</strong>r Verifier sonst umgehend das<br />
Geheimnis erhält, wenn <strong>de</strong>r Prover die Kommunikation bei einem s = 0 fortführt.<br />
Protokoll 6.3 (Zero–<strong>Knowledge</strong> Argument in konstanter Run<strong>de</strong>nzahl)<br />
Gemeinsame Eingabe (Initialisierung)<br />
• p: Eine große Primzahl, von <strong>de</strong>ssen Vorgänger p−1 die Faktorisierung<br />
bekannt ist.<br />
• α ∈ ∗ p: Ein erzeugen<strong>de</strong>s Element.<br />
• k ∈ : Sicherheitsparameter<br />
Dieser Schritt zählt nicht bei <strong>de</strong>r Run<strong>de</strong>nzahl, da diese Einigung schon im<br />
Vorwege erfolgen kann. Desweiteren können p und α öffentlich bekannt und<br />
frei verfügbar sein.<br />
Schritt V1: (Der Verifier bereitet die Bit–Commitment–Scheme Paramter vor<br />
und verschlüsselt seine Öffnungsauffor<strong>de</strong>rung.) Der Verifier wählt <strong>zu</strong>fällige<br />
s ∈R ∗ p und y ∈R Σ k . Er berechnet (e, r) = β(y) und sen<strong>de</strong>t s und e an<br />
<strong>de</strong>n Prover.<br />
Schritt P1: (Der Prover verschlüsselt mit einem verschlüsselten Schaltkreis und<br />
sen<strong>de</strong>t die Kontroll Commitments <strong>zu</strong>sammen mit je<strong>de</strong>m aktuellen Commitment.)<br />
Für je<strong>de</strong>s i mit 1 ≤ i ≤ k berechnet <strong>de</strong>r Prover νi = σ(Ψ) und<br />
(xi, zi) = β(νi). Für je<strong>de</strong>s Commitment xi[j] wählt <strong>de</strong>r Prover ein <strong>zu</strong>fälliges<br />
bij ∈R {0, 1} k und berechnet (uij, vij) = β( bij). Er sen<strong>de</strong>t alle<br />
xi’s und uij’s an <strong>de</strong>n Verifier. (Das xi[j] repräsentiert dabei das akuelle<br />
Commitment für das j-te Bit <strong>de</strong>s i-ten verschlüsselten Schaltkreises und<br />
uij stellt eine Familie von Kontroll Commitments für xi[j] dar.)<br />
Schritt V2: (Der Verifier wählt für das aktuelle Commitment eine Öffnungsauffor<strong>de</strong>rung<br />
um sicher<strong>zu</strong>stellen, dass es kein EPR–Commitment ist.) Für je<strong>de</strong>s<br />
i und j wählt <strong>de</strong>r Verifier <strong>zu</strong>fällige hij ∈R {0, 1} k und sen<strong>de</strong>t diese hij an<br />
<strong>de</strong>n Prover.<br />
Schritt P2: (Der Prover zeigt, dass seine aktuellen Commitments nicht EPR<br />
sind.) Für je<strong>de</strong>s i, j und m berechnet <strong>de</strong>r Prover folgen<strong>de</strong>s:<br />
62
6 Perfekte Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Wenn hij[m] = 0 dann setzt er wij[m] = vij[m]<br />
und tij[m] = bij[m]<br />
Wenn hij[m] = 1 und νi[j] = bij[m] dann setzt er wij[m] = vij[m] − zi[j]<br />
und tij[m] = 0<br />
Wenn hij[m] = 1 und νi[j] = bij[m] dann setzt er wij[m] = vij[m] + zi[j]<br />
und tij[m] = 1<br />
Der Prover sen<strong>de</strong>t alle wij’s und tij’s an <strong>de</strong>n Verifier.<br />
Schritt V3: (Der Verifier prüft, dass die aktuellen Commitments nicht EPR sind.<br />
In diesem Fall öffnet er seine Öffnungsauffor<strong>de</strong>rung.) Für je<strong>de</strong>s i, j und m<br />
prüft <strong>de</strong>r Verifier:<br />
Wenn hij[m] = 0 prüft er ϕ(uij[m], wij[m], tij[m])<br />
Wenn hij[m] = 1 und tij[m] = 0 prüft er uij[m] = α wij[m] xi[j]<br />
Wenn hij[m] = 1 und tij[m] = 1 prüft er uij[m]xi[j] = α wij[m]<br />
Wenn einer dieser Kontrollen fehl schlägt, dann stoppt <strong>de</strong>r Verifier und<br />
verwirft die Behauptung. An<strong>de</strong>rnfalls sen<strong>de</strong>t <strong>de</strong>r Verifier r und y an <strong>de</strong>n<br />
Prover.<br />
Schritt P3: (Der Prover kontrolliert, dass die Öffnungsauffor<strong>de</strong>rung korrekt ist<br />
und folgt dieser.) Der Prover prüft ϕ(e, r, y). Falls die Prüfung fehl schlägt,<br />
been<strong>de</strong>t <strong>de</strong>r Prover die Kommunikation. An<strong>de</strong>rnfalls sen<strong>de</strong>t <strong>de</strong>r Prover<br />
folgen<strong>de</strong>s für alle i an <strong>de</strong>n Verifier:<br />
Wenn y[i] = 0 sen<strong>de</strong>t er zi und νi.<br />
Wenn y[i] = 1 berechnet er ɛi = γ(Ψ, νi,a),<br />
setzt zi[j] = 0 falls ɛi[j] = <br />
und sen<strong>de</strong>t zi und ɛi.<br />
Schritt V4: (Der Verifier kontrolliert, ob alles in Ordnung ist.) Für alle i prüft<br />
<strong>de</strong>r Verifier:<br />
Wenn y[i] = 0 prüft er νi ∈ VΨ und ϕ(xi, zi, νi).<br />
Wenn y[i] = 1 prüft er ɛi ∈ EΨ und ϕ(xi, zi,ɛi).<br />
Wenn einer dieser Kontrollen fehl schlägt, dann stoppt <strong>de</strong>r Verifier und<br />
verwirft die Behauptung. An<strong>de</strong>rnfalls stoppt <strong>de</strong>r Verifier und akzeptiert.<br />
Es ist offensichtlich, dass das Protokoll 6.3 perfekt vollständig ist. Als nächstes wird<br />
gezeigt, dass das Protokoll berechenbar ein<strong>de</strong>utig ist.<br />
Lemma 6.3 (Protokoll 6.3 ist berechenbar ein<strong>de</strong>utig)<br />
Angenommen, <strong>de</strong>r Prover versucht seinen Beweis auf eine Boolesche Formel Ψ <strong>zu</strong> begrün<strong>de</strong>n,<br />
die nicht erfüllbar ist. Weiterhin angenommen, dass <strong>de</strong>r Prover nicht in <strong>de</strong>r<br />
Lage ist, während <strong>de</strong>r Laufzeit <strong>de</strong>r Kommunikation <strong>de</strong>n diskreten Logarithmus von <strong>de</strong>m<br />
s aus<strong>zu</strong>rechnen, welches er in Schritt V1 von <strong>de</strong>m Verifier erhalten hat. Dann beträgt<br />
die Wahrscheinlichkeit, dass <strong>de</strong>r Täuschungsversuch unent<strong>de</strong>ckt bleibt, im besten Fall<br />
2 −k , wenn <strong>de</strong>r Prover gemäß Protokoll 6.3 mit einem ehrlichen Verifier interagiert.<br />
63
6 Perfekte Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Als Vorbemerkung <strong>zu</strong>m Beweis sei auf folgen<strong>de</strong>s hingewiesen. Das Verhalten <strong>de</strong>s<br />
Provers kann nicht von <strong>de</strong>m Vektor y, mit <strong>de</strong>m <strong>de</strong>r Verifiers seine Öffnungswahl festlegt,<br />
abhängig sein, da <strong>de</strong>r Vektor <strong>de</strong>r Commitments e informationstheoretisch nicht mit <strong>de</strong>r<br />
Öffnungswahl korreliert.<br />
Beweis:<br />
In Schritt P1 kann <strong>de</strong>r Prover entwe<strong>de</strong>r min<strong>de</strong>stens ein EPR–Commitment xi[j] ausgeben<br />
o<strong>de</strong>r alle <strong>de</strong>r xi’s sind vollständig aus nicht–EPR–Commitments <strong>zu</strong>sammengesetzt.<br />
Im ersten Fall beträgt die Wahrscheinlichkeit, dass ein solches Commitment vom Verifier<br />
in Schritt V3 nicht erkannt wird, entsprechend <strong>de</strong>r Commitment Zertifizierung auf<br />
Seite 56 maximal 2 −k . Im zweiten Fall kann es höchstens einen Öffnungsauffor<strong>de</strong>rungsvektor<br />
y geben, für <strong>de</strong>n <strong>de</strong>r Prover <strong>de</strong>n Verifier in Schritt V4 <strong>zu</strong>frie<strong>de</strong>n stellen kann.<br />
Dieses gilt unter folgen<strong>de</strong>r Vorausset<strong>zu</strong>ng. Es gibt ein i <strong>de</strong>rart, dass <strong>de</strong>r Prover in bei<strong>de</strong>n<br />
Fällen, sowohl bei yi = 0 (bei gegebenem νi) als auch bei yi = 1 (bei gegebenem ɛi),<br />
die Auffor<strong>de</strong>rung <strong>de</strong>s Verifiers <strong>zu</strong>m Öffnen <strong>de</strong>s Commitments <strong>zu</strong>frie<strong>de</strong>nstellen kann. In<br />
diesem Fall müssen νi und ɛi verträglich sein, da gemäß Vorausset<strong>zu</strong>ng <strong>de</strong>r Prover die<br />
Commitments nicht än<strong>de</strong>rn kann und diese nicht EPR sind. Aber dann muss δ(Ψ, ν,ɛ)<br />
eine erfüllen<strong>de</strong> Zuweisung für Ψ sein, was ein Wi<strong>de</strong>rspruch <strong>zu</strong>r Vorausset<strong>zu</strong>ng ist, dass<br />
Ψ nicht erfüllbar ist. Daher ist die Wahrscheinlichkeit, dass <strong>de</strong>r Verifier in Schritt V3<br />
gera<strong>de</strong> <strong>de</strong>n Öffnungsauffor<strong>de</strong>rungsvektor an <strong>de</strong>n Prover sen<strong>de</strong>t, <strong>de</strong>n dieser erwartet und<br />
mit <strong>de</strong>m er täuschen kann, höchstens 2 −k .<br />
Anschließend wird <strong>de</strong>r für das Protokoll 6.3 wichtigste Teil <strong>de</strong>s Satzes 6.1 bewiesen,<br />
die perfekte Zero–<strong>Knowledge</strong> Eigenschaft. Zu diesem Zweck muss ein Simulator gezeigt<br />
wer<strong>de</strong>n, <strong>de</strong>ssen Laufzeiteffizienz <strong>zu</strong> beweisen ist und <strong>de</strong>ssen Ausgabe <strong>de</strong>s Empfangsban<strong>de</strong>s<br />
dieselbe Verteilung aufweist, wie das aufgeführte Protokoll.<br />
Um die Kommunikation <strong>de</strong>s realen Provers mit je<strong>de</strong>m beliebigen Verifier perfekt<br />
und effizient simulieren <strong>zu</strong> können, müssen unterschiedliche Verhaltensmöglichkeiten <strong>de</strong>r<br />
Verifier beachtet wer<strong>de</strong>n. Unter an<strong>de</strong>rem muss <strong>de</strong>r Simulator folgen<strong>de</strong> Situationen berücksichtigen:<br />
1. Der Verifier wählt in Schritt V1 ein s <strong>de</strong>rart, dass <strong>de</strong>ssen diskreter Logarithmus<br />
bekannt ist. Dies erlaubt <strong>de</strong>m Verifier, in Schritt V1 ein simuliertes Commitment<br />
<strong>zu</strong> erzeugen und die echte Wahl <strong>de</strong>r Öffnungsauffor<strong>de</strong>rung nach Schritt V3 <strong>zu</strong><br />
verschieben.<br />
2. Der Verifier wählt in Schritt V1 ein s, ohne <strong>de</strong>ssen diskreten Logarithmus <strong>zu</strong> kennen.<br />
3. Der Verifier wählt das s so, dass er <strong>de</strong>ssen diskreten Logarithmus in Schritt V1<br />
nicht kennt, diesen aber in einigen Fällen vor <strong>de</strong>m Schritt V3 ausrechnen kann, <strong>zu</strong>m<br />
Beispiel durch Informationen, die vom Prover in <strong>de</strong>n Schritten P1 und P2 veröffentlicht<br />
wur<strong>de</strong>n. Natürlich helfen solche Informationen <strong>de</strong>m Verifier nur durch<br />
64
6 Perfekte Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
reines Glück, da <strong>de</strong>r Prover <strong>de</strong>n diskreten Logarithmus von s nicht kennt. Nichts<strong>de</strong>stotrotz<br />
ist <strong>de</strong>rartiges Glück möglich und muss berücksichtigt wer<strong>de</strong>n.<br />
4. Der Verifier weicht <strong>zu</strong> bestimmten Zeitpunkten von <strong>de</strong>m Protokoll ab, das heißt<br />
dass er die ” vernünftige“ Zusammenarbeit verweigert und dadurch <strong>de</strong>n Prover da<strong>zu</strong><br />
bringt, die Interaktion vorzeitig <strong>zu</strong> been<strong>de</strong>n. Dass geschieht <strong>zu</strong>m Beispiel in Schritt<br />
V1, wenn <strong>de</strong>r Verifier ein s = 0 liefert, o<strong>de</strong>r in Schritt V3, wenn er behauptet, <strong>de</strong>r<br />
Prover habe in Schritt P2 bei <strong>de</strong>n Kontroll Commitments getäuscht, ohne dass das<br />
tatsächlich <strong>de</strong>r Fall ist, o<strong>de</strong>r wenn er eine ” 2“ als eine <strong>de</strong>r Öffungsauffor<strong>de</strong>rungen<br />
yi in V3 liefert.<br />
Im ersten Fall könnte die Öffnungswahl <strong>de</strong>s Verifiers von <strong>de</strong>r Ausgabe <strong>de</strong>s Provers<br />
in <strong>de</strong>n Schritten P1 und P2 abhängig sein. Wenn dies eintritt, wird <strong>de</strong>r Simulator <strong>de</strong>n<br />
Verifier <strong>zu</strong>rücksetzen und dadurch <strong>de</strong>n diskreten Logarithmus von s erhalten. Wenn <strong>de</strong>r<br />
Simulator diese Information erst einmal hat, kann er in Schritt P3 ” mogeln“, da er damit<br />
<strong>de</strong>n Schlüssel <strong>zu</strong>m Invertieren <strong>de</strong>s Bit–Commitment–Schemes hat.<br />
Im zweiten Fall lässt <strong>de</strong>r Simulator <strong>de</strong>n Verifier einmal laufen, um die Öffnungswahl<br />
in Schritt V3 <strong>zu</strong> erhalten. Anschließend wird <strong>de</strong>r Verifier auf eine vorherige Konfiguration<br />
<strong>zu</strong>rückgesetzt, und <strong>de</strong>r Schritt P1 wird erneut simuliert. Diesmal jedoch mit Commitments,<br />
die <strong>de</strong>r Öffnungswahl <strong>de</strong>s Verifiers entsprechen.<br />
Die Fälle drei und vier sind schwieriger <strong>zu</strong> handhaben und wer<strong>de</strong>n bei <strong>de</strong>r nachfolgen<strong>de</strong>n<br />
formalen Beschreibung <strong>de</strong>s Simulators abgehan<strong>de</strong>lt.<br />
Um <strong>de</strong>n Simulator <strong>zu</strong> beschreiben, ist es einfacher sich vor<strong>zu</strong>stellen, dass <strong>de</strong>r Verifier<br />
eine <strong>de</strong>terministische Maschine ist, die Zugriff auf ein Zufallsband hat. Dieses Zufallsband<br />
unterliegt <strong>de</strong>r vollständigen Kontrolle <strong>de</strong>s Simulators. Anfangs ist das Band leer.<br />
Je<strong>de</strong>smal, wenn <strong>de</strong>r Verifier Zugriff auf ein neues Bit <strong>de</strong>s Zufallsban<strong>de</strong>s hat, führt <strong>de</strong>r<br />
Simulator einen Münzwurf aus und schreibt das Resultat für <strong>de</strong>n Verifier auf das Zufallsband.<br />
Zu je<strong>de</strong>r Zeit kann <strong>de</strong>r Simulator einen Speicheraus<strong>zu</strong>g vom Verifier anfertigen<br />
bzw. sich als Turing Maschine die Konfiguration merken und später <strong>de</strong>n Verifier exakt<br />
an dieser Stelle weiterarbeiten lassen. Wenn <strong>de</strong>r Verifier <strong>zu</strong> einer vorhergehen<strong>de</strong>n Konfiguration<br />
<strong>zu</strong>rückgesetzt wird, dann wird <strong>de</strong>r Lesekopf <strong>de</strong>s Zufallban<strong>de</strong>s ebenfalls auf<br />
die entsprechen<strong>de</strong> Stelle <strong>zu</strong>rückgesetzt, mit <strong>de</strong>m Unterschied, dass die bereits auf das<br />
Zufallsband geschriebenen Zufallsbits, die hinter dieser Stelle liegen, erhalten bleiben,<br />
so dass <strong>de</strong>r Verifier nach <strong>de</strong>m Rücksetzen exakt dieselben Bits wie<strong>de</strong>r verarbeitet, die<br />
er beim vorigen Durchlauf schon einmal gelesen hat. Der Vorteil dieses Ansatzes gegenüber<br />
<strong>de</strong>m einmaligen Erzeugen <strong>de</strong>s Zufallban<strong>de</strong>s durch <strong>de</strong>n Simulator für alle <strong>de</strong>nkbaren<br />
Zugriffe <strong>de</strong>s Verifiers liegt darin, dass damit Verifier simuliert wer<strong>de</strong>n können, die keine<br />
von vornherein bekannte Zeitschranke haben. Noch wichtiger ist jedoch, dass selbst<br />
dann, wenn nur Verifier mit einer erwarteten polynomiellen Laufzeit betrachtet wer<strong>de</strong>n,<br />
im Einzelfall signifikant mehr Zeit benötigt wird, wenngleich auch nur mit geringer<br />
Wahrscheinlichkeit.<br />
65
6 Perfekte Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Wer<strong>de</strong>n in <strong>de</strong>m nachfolgen<strong>de</strong>m Protokoll Schritte Vi o<strong>de</strong>r Pi erwähnt, beziehen sich<br />
diese auf die entsprechen<strong>de</strong>n Schritte aus Protokoll 6.3. Dabei ist <strong>zu</strong> beachten, dass <strong>de</strong>r<br />
Simulator bis einschließlich Schritt S6 exakt <strong>de</strong>m Protokoll 6.3 folgt (in <strong>de</strong>r Rolle <strong>de</strong>s<br />
Provers).<br />
Protokoll 6.4 (Simulator <strong>de</strong>s Protokolls 6.3)<br />
Schritt S0: Der Simulator führt die Initialisierung <strong>de</strong>r gemeinsamen Eingabe<br />
exakt so wie <strong>de</strong>r Prover durch. Falls <strong>de</strong>r Verifier von <strong>de</strong>m Protokoll 6.3<br />
abweicht, gibt <strong>de</strong>r Simulator <strong>de</strong>n bisherigen Inhalt <strong>de</strong>s Empfangs- und<br />
Zufallban<strong>de</strong>s <strong>de</strong>s Verifiers aus und stoppt.<br />
Schritt S1: Der Simulator wartet entsprechend Schritt V1 darauf, dass <strong>de</strong>r<br />
Verifier die s und e ausgibt. Falls <strong>de</strong>r Verifier von <strong>de</strong>m Protokoll 6.3<br />
abweicht, gibt <strong>de</strong>r Simulator <strong>de</strong>n bisherigen Inhalt <strong>de</strong>s Empfangs- und<br />
Zufallban<strong>de</strong>s <strong>de</strong>s Verifiers aus und stoppt. An<strong>de</strong>rnfalls fertigt <strong>de</strong>r Simulator<br />
einen Speicheraus<strong>zu</strong>g vom Verifier an.<br />
Schritt S2: Der Simulator verfährt entsprechend Schritt P1. Insbeson<strong>de</strong>re<br />
sen<strong>de</strong>t er die xi’s und uij’s an <strong>de</strong>n Verifier.<br />
Schritt S3: Der Simulator wartet darauf, dass <strong>de</strong>r Verifier wie in Schritt V2<br />
die hij’s liefert. Falls <strong>de</strong>r Verifier von <strong>de</strong>m Protokoll 6.3 abweicht, gibt<br />
<strong>de</strong>r Simulator <strong>de</strong>n bisherigen Inhalt <strong>de</strong>s Empfangs- und Zufallban<strong>de</strong>s <strong>de</strong>s<br />
Verifiers aus und stoppt.<br />
Schritt S4: Der Simulator verfährt entsprechend Schritt P2. Insbeson<strong>de</strong>re<br />
sen<strong>de</strong>t er die wij’s und tij’s an <strong>de</strong>n Verifier.<br />
Schritt S5: Der Simulator wartet darauf, dass <strong>de</strong>r Verifier wie in Schritt V3<br />
die r ’s und y ’s liefert. Falls <strong>de</strong>r Verifier von <strong>de</strong>m Protokoll 6.3 abweicht,<br />
gibt <strong>de</strong>r Simulator <strong>de</strong>n bisherigen Inhalt <strong>de</strong>s Empfangs- und Zufallban<strong>de</strong>s<br />
<strong>de</strong>s Verifiers aus und stoppt.<br />
Schritt S6: Der Simulator verifiziert ϕ(e, r, y). Misslingt diese Prüfung, gibt<br />
<strong>de</strong>r Simulator <strong>de</strong>n bisherigen Inhalt <strong>de</strong>s Empfangs- und Zufallban<strong>de</strong>s <strong>de</strong>s<br />
Verifiers aus und stoppt.<br />
Schritt S7: (Das ist <strong>de</strong>r Wen<strong>de</strong>punkt in dieser Simulation.) Der Simulator setzt<br />
<strong>de</strong>n Verifier auf diejenige Konfiguration <strong>zu</strong>rück, die sich <strong>de</strong>r Simulator<br />
am En<strong>de</strong> von Schritt S1 gemerkt hat.<br />
Schritt S8: (Der Simulator sen<strong>de</strong>t solche Commitments, die er nur dann öffnen<br />
kann, wenn die Öffnungsauffor<strong>de</strong>rungen ˆy erneut gestellt wer<strong>de</strong>n.) Für je<strong>de</strong>s<br />
i mit ˆyi = 0 berechnet <strong>de</strong>r Prover νi = σ(Ψ) und (xi, zi) = β(νi). Für<br />
je<strong>de</strong>s i mit ˆyi = 1 berechnet <strong>de</strong>r Prover ɛi = ρ(Ψ) und (xi, zi) = β(ɛi).<br />
Danach verfährt <strong>de</strong>r Simulator entsprechend Schritt P1. Für je<strong>de</strong>s Commitment<br />
xi[j] wählt <strong>de</strong>r Prover ein <strong>zu</strong>fälliges bij ∈R {0, 1} k und berechnet<br />
(uij, vij) = β( bij). Er sen<strong>de</strong>t alle xi’s und uij’s an <strong>de</strong>n Verifier.<br />
66
6 Perfekte Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Schritt S9: Der Simulator wartet darauf, dass <strong>de</strong>r Verifier wie in Schritt V2<br />
die hij’s liefert. Falls <strong>de</strong>r Verifier von <strong>de</strong>m Protokoll 6.3 abweicht, geht<br />
<strong>de</strong>r Simulator <strong>zu</strong>rück <strong>zu</strong> Schritt S7.<br />
Schritt S10: Der Simulator verfährt entsprechend Schritt P2 mit <strong>de</strong>r Ausnahme,<br />
dass dann, wenn ˆyi = 1 ist, νi[j] durch ♦(ɛi[j]) ersetzt wird.<br />
Insbeson<strong>de</strong>re sen<strong>de</strong>t er die wij’s und tij’s an <strong>de</strong>n Verifier.<br />
Schritt S11: Der Simulator wartet darauf, dass <strong>de</strong>r Verifier wie in Schritt V3<br />
die r ’s und y ’s liefert. Es ist möglich, dass die Antwort <strong>de</strong>s Verifiers sich<br />
von <strong>de</strong>rjenigen unterschei<strong>de</strong>t, die er vorher in Schritt S5 gegeben hat.<br />
Falls <strong>de</strong>r Verifier von <strong>de</strong>m Protokoll 6.3 abweicht, geht <strong>de</strong>r Simulator<br />
<strong>zu</strong>rück <strong>zu</strong> Schritt S7.<br />
Schritt S12: Der Simulator verifiziert ϕ(e, r, y). Misslingt diese Prüfung, geht<br />
<strong>de</strong>r Simulator <strong>zu</strong>rück <strong>zu</strong> Schritt S7.<br />
Schritt S13: An diesem Punkt gibt es zwei Möglichkeiten: Entwe<strong>de</strong>r es gilt<br />
y = ˆy o<strong>de</strong>r y = ˆy. Im ersten Fall hat <strong>de</strong>r Simulator seine Commitments<br />
so vorbereitet, dass er <strong>de</strong>r jeweiligen Öffnungsauffor<strong>de</strong>rung nachkommen<br />
kann. Im zweiten Fall be<strong>de</strong>utet dies, dass <strong>de</strong>r Verifier seine Öffnungswahl<br />
geän<strong>de</strong>rt hat, was <strong>de</strong>m Simulator ermöglicht, <strong>de</strong>n diskreten Logarithmus<br />
von s <strong>zu</strong> berechnen. Wenn y = ˆy gilt, fährt das Protokoll mit Schritt S15<br />
fort, sonst mit Schritt S14.<br />
Schritt S14: (Der Verifier hat seine Öffnungswahl zwischen Schritt S5 und S11<br />
geän<strong>de</strong>rt.) Es wer<strong>de</strong>n alle i mit 1 ≤ i ≤ k betrachtet, für die yi = ˆyi gilt.<br />
Der Simulator berechnet<br />
a =<br />
<br />
ri − ˆri falls yi = 0<br />
ˆri − ri sonst<br />
(Dabei ist <strong>zu</strong> be<strong>de</strong>nken, dass diese Subtraktion in p−1 und damit modulo<br />
p − 1 erfolgt.) Da α ri s yi = ei = α ˆri s ˆyi gilt, folgt damit α a = s. Somit hat<br />
<strong>de</strong>r Simulator <strong>de</strong>n diskreten Logarithmus von s.<br />
Für je<strong>de</strong>s i mit yi = 0 und ˆyi = 1 berechnet <strong>de</strong>r Simulator νi = σ(Ψ) und<br />
für je<strong>de</strong>s i mit yi = 1 und ˆyi = 0 berechnet er ɛi = ρ(Ψ). Für je<strong>de</strong>s i, für<br />
das yi = ˆyi gilt, und für je<strong>de</strong>s j, für das νi[j] = ♦(ɛi[j]) gilt, än<strong>de</strong>rt <strong>de</strong>r<br />
Simulator die zi[j]’s aus Schritt S8 wenn nötig wie folgt:<br />
zi[j] =<br />
<br />
zi[j] − a falls ˆyi = νi[j]<br />
zi[j] + a sonst<br />
Dies erlaubt <strong>de</strong>m Simulator, die ” Commitments“ aus <strong>de</strong>n xi’s in einer<br />
Weise <strong>zu</strong> öffnen, die die Öffnungsauffor<strong>de</strong>rungen yi erfüllen, auch wenn<br />
xi ursprünglich dafür vorbereitet war, die Öffnungswahl ˆyi <strong>zu</strong> erfüllen.<br />
67
6 Perfekte Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Schritt S15: (Der Simulator ist jetzt fertig, um die Sicht <strong>de</strong>s Verifiers aus<strong>zu</strong>geben.)<br />
Der Simulator gibt folgen<strong>de</strong> Speicherinhalte aus:<br />
• Das Zufallsband <strong>de</strong>s Verifiers.<br />
• Die xi’s und uij’s aus Schritt S8.<br />
• Die wij’s und tij’s aus Schritt S10.<br />
• Für je<strong>de</strong>s i mit y[i] = 0 die zi und νi.<br />
• Für je<strong>de</strong>s i mit y[i] = 1 setzt <strong>de</strong>r Simulator zi[j] = 0, falls ɛi[j] = <br />
ist, und gibt die zi und ɛi aus.<br />
Der Simulator hält.<br />
Es muss nachgewiesen wer<strong>de</strong>n, dass die von <strong>de</strong>m Simulator im Protokoll 6.4 erzeugte<br />
Ausgabe mit <strong>de</strong>rselben Wahrscheinlichkeitsverteilung erfolgt, wie die Sicht eines beliebigen<br />
Verifiers bei einer Kommunikation mit <strong>de</strong>m ehrlichen Prover im Protokoll 6.3 und<br />
dass <strong>de</strong>r Simulator effizient ausgeführt wer<strong>de</strong>n kann.<br />
Lemma 6.4<br />
Protokoll 6.3 ist perfekt Zero–<strong>Knowledge</strong>.<br />
Beweis:<br />
Seien Ψ ein erfüllbarer Boolescher Ausdruck und a eine <strong>de</strong>m ehrlichen Prover bekannte<br />
erfüllbare Belegung für Ψ. Mit ℓ = ℓ(Ψ) wird die Länge je<strong>de</strong>s Elements von VΨ und EΨ<br />
bezeichnet. R sei eine unendlich lange Reihe von <strong>zu</strong>fälligen Bits. Nachfolgend wer<strong>de</strong>n<br />
Ψ,a, ℓ, R und <strong>de</strong>r Verifier als beliebig aber fest angenommen. Daher kann gesagt wer<strong>de</strong>n,<br />
dass ” A ein<strong>de</strong>utig von B <strong>de</strong>terminiert“ ist, was be<strong>de</strong>utet ” von B und diesen festen<br />
Parametern“.<br />
Nachfolgend wird die Sicht eines Verifiers von Protokoll 6.3 mit <strong>de</strong>m Zufallsband R bei<br />
einer Kommunikation mit einem ehrlichen Prover verglichen mit <strong>de</strong>rjenigen Sicht, die von<br />
<strong>de</strong>m Simulator erzeugt wird, wenn dieser <strong>de</strong>n entsprechen<strong>de</strong>n Teil <strong>de</strong>sselben Zufallbands<br />
R bei <strong>de</strong>r Initialisierung erhält. Der Einfachheit halber wird davon ausgegangen, dass<br />
<strong>de</strong>r Verifier nicht schon vor <strong>de</strong>m Schritt P1 vom Protokoll abweicht. In diesem Fall ist<br />
es offensichtlich, dass <strong>de</strong>r Simulator perfekt ist. Ebenso offensichtlich ist, dass Schritt 0<br />
in Protokoll 6.3 von Schritt S0 in Protokoll 6.4 exakt simuliert wird.<br />
Bedingt durch die festgelegten Parameter insbeson<strong>de</strong>re <strong>de</strong>r Zufallbits sind die s und e<br />
<strong>de</strong>s Verifiers in Schritt V1 <strong>de</strong>terminiert. Somit können diese ebenfalls als fest betrachtet<br />
wer<strong>de</strong>n. Weiterhin sei darauf hingewiesen, dass <strong>de</strong>r einzige Schritt in Protokoll 6.3, in<br />
<strong>de</strong>m <strong>de</strong>r Prover eine Zufallsauswahl durchführt, P1 ist. Daher ist alles in Protokoll 6.3<br />
vollständig <strong>de</strong>terminiert durch die vom Prover gewählten νi’s, zi’s, bij’s und vij’s. (Die<br />
xi’s und uij’s sind <strong>de</strong>terminiert von diesen <strong>zu</strong>fälligen Auswahlen.)<br />
Die Sicht <strong>de</strong>s Verifiers in Protokoll 6.3 ist vor <strong>de</strong>m Schritt P3 vollständig von <strong>de</strong>n<br />
xi’s, uij’s und tij’s <strong>de</strong>terminiert, die von <strong>de</strong>m Prover in <strong>de</strong>n Schritten P1 und P2 gesen<strong>de</strong>t<br />
68
6 Perfekte Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
wur<strong>de</strong>n (außer wenn Schritt P2 nicht stattfand und nur die xi’s und uij’s allein die Sicht<br />
<strong>de</strong>s Verifiers <strong>de</strong>terministisch bestimmen). Das beruht darauf, dass die vom ehrlichen Prover<br />
in Schritt P2 gesen<strong>de</strong>ten wij’s (vorausgesetzt, dieser Schritt fin<strong>de</strong>t statt) ein<strong>de</strong>utig<br />
durch die xi’s, uij’s, tij’s und hij’s <strong>de</strong>terminiert wer<strong>de</strong>n, die vom Verifier in Schritt V2<br />
gesen<strong>de</strong>t wer<strong>de</strong>n, wobei die hij’s wie<strong>de</strong>rum ein<strong>de</strong>utig durch die xi’s und uij’s <strong>de</strong>terminiert<br />
wer<strong>de</strong>n. Um das <strong>zu</strong> verstehen, sei darauf hingewiesen, dass die Tests in Schritt<br />
V3 bezüglich <strong>de</strong>r wij’s, die <strong>de</strong>n Verifier nicht <strong>zu</strong>m Zurückweisen veranlassen, nicht <strong>de</strong>r<br />
Beliebigkeit unterliegen, da <strong>de</strong>r diskrete Logarithmus ein<strong>de</strong>utig <strong>de</strong>finiert ist.<br />
Eine entschei<strong>de</strong>n<strong>de</strong> Beobachtung ist weiterhin, dass alle vom Prover stammen<strong>de</strong>n<br />
xi’s, uij’s und tij’s <strong>zu</strong>fällig und unabhängig gleichverteilt über ∗ p, ∗ p und {0, 1} erzeugt<br />
wer<strong>de</strong>n (mit <strong>de</strong>r Ausnahme, dass die tij’s nicht erzeugt wer<strong>de</strong>n, wenn Schritt P2 nicht<br />
durchgeführt wird). Bezeichne Λ <strong>de</strong>n Raum <strong>de</strong>r möglichen Werte für die Familien <strong>de</strong>r xi’s,<br />
uij’s und tij’s mit Λ = ( ∗ p × ( ∗ p × {0, 1}) k ) ℓk . Dann wird je<strong>de</strong>s λ ∈ Λ als gut bezeichnet,<br />
wenn das Protokoll 6.3 Schritt V4 erreicht und die <strong>de</strong>m Verifier gelieferte Sicht auf λ im<br />
Einklang mit <strong>de</strong>n Schritten P1 und P2 steht. An<strong>de</strong>rnfalls ist λ schlecht. ( ” Im Einklang<br />
stehen“ be<strong>de</strong>utet dabei, dass die wij’s diejenigen ein<strong>de</strong>utigen Werte annehmen, die in<br />
Schritt V3 <strong>de</strong>n Verifier nicht <strong>zu</strong>m Zurückweisen veranlassen.) Schließlich bezeichne ℘<br />
die Anzahl <strong>de</strong>r guten Elemente von Λ im Verhältnis <strong>zu</strong> <strong>de</strong>r Gesamtzahl <strong>de</strong>r Elemente<br />
von Λ. Einfach ausgedrückt bezeichnet ℘ die Wahrscheinlichkeit, dass <strong>de</strong>r Verifier sich im<br />
Protokoll 6.3 an <strong>de</strong>n Protokollalgorithmus hält. Die Wahrscheinlichkeitsverteilung erfolgt<br />
dabei über die Zufallsauswahl <strong>de</strong>s Provers (ob <strong>de</strong>r Verifier in Schritt V4 die Behauptung<br />
verwirft, obwohl er sie gemäß Protokoll akzeptieren müsste, wird hierbei nicht betrachtet,<br />
da diese Entscheidung nicht Gegenstand dieser Betrachtung ist). Natürlich kann ℘ eine<br />
Funktion mit Be<strong>zu</strong>g auf das Zufallsband R sein. Das betrifft diese Betrachtung jedoch<br />
nicht, da R hier fest ist.<br />
Die Interaktion <strong>de</strong>s Verifiers mit <strong>de</strong>m ehrlichen Prover in Protokoll 6.3 ist wie folgt<br />
charakterisiert. Der Prover wählt die νi’s, zi’s, bij’s und vij’s in Schritt P1 <strong>zu</strong>fällig. Damit<br />
sind die xi’s und uij’s <strong>de</strong>terminiert. Falls <strong>de</strong>r Verifier in Schritt V2 von <strong>de</strong>m Algorithmus<br />
abweicht, müssen <strong>zu</strong>fällige Binärwerte für die tij’s in Betracht gezogen wer<strong>de</strong>n,<br />
an<strong>de</strong>rnfalls legen die xi’s und uij’s die hij’s <strong>de</strong>s Verifiers fest, welche wie<strong>de</strong>rum die tij’s<br />
<strong>de</strong>s Provers in Schritt P2 <strong>de</strong>terministisch bestimmen. Stehe λ für die Familie <strong>de</strong>r so<br />
erzeugten xi’s, wij’s und tij’s.<br />
Wenn λ gut ist, was mit einer Wahrscheinlichkeit von ℘ eintritt, bestimmt es die<br />
Wahl y <strong>de</strong>s Verifiers in Schritt V3. In Schritt P3 zeigt <strong>de</strong>r Prover <strong>de</strong>m Verifier νi’s aus<br />
VΨ, wenn yi = 0 und ɛi’s aus EΨ, wenn yi = 1 ist, jeweils mit <strong>de</strong>n da<strong>zu</strong>gehörigen zi’s.<br />
Obwohl die νi’s und ɛi’s schon in Schritt P1 <strong>de</strong>terministisch festgelegt wer<strong>de</strong>n, sind sie<br />
vollständig unabhängig von λ, da Commitments nicht mit <strong>de</strong>n Bits korrelieren, die sie<br />
verbergen. Außer<strong>de</strong>m sind die νi’s gleichverteilt über VΨ (weil sie durch einen Aufruf<br />
von σ(Ψ) in Schritt P1 erzeugt wer<strong>de</strong>n), und die ɛi’s sind gleichverteilt über EΨ (weil<br />
sie durch γ(Ψ, σ(Ψ),a) in <strong>de</strong>n Schritten P1 und P3 erzeugt wer<strong>de</strong>n). Ganz im Gegenteil<br />
69
6 Perfekte Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
da<strong>zu</strong> wer<strong>de</strong>n die zi’s vollständig von λ, <strong>de</strong>n νi’s (bei hi = 0) und <strong>de</strong>n ɛi’s (bei hi = 1)<br />
<strong>de</strong>terminiert.<br />
Als Schluss folgt daraus, dass die Sicht <strong>de</strong>s Verifiers in Protokoll 6.3 ein<strong>de</strong>utig <strong>de</strong>terministisch<br />
ist und bestimmt wird von einem über Λ gleichverteilten, <strong>zu</strong>fälligen λ und,<br />
falls λ gut ist, von einer Familie von <strong>zu</strong>fälligen νi’s und ɛi’s, die über VΨ respektive EΨ<br />
gleichverteilt sind.<br />
Nun wird die vom Simulator im Protokoll 6.4 erzeugte Sicht betrachtet, wenn dieser<br />
<strong>de</strong>n Verifier mit <strong>de</strong>m entsprechen<strong>de</strong>n Anfangssegment <strong>de</strong>sselben Zufallbands R aufruft.<br />
Bekannt ist, dass das Protokoll 6.4 das Protokoll 6.3 exakt simuliert, bis (und falls) es<br />
Schritt S7 erreicht. Somit wird <strong>de</strong>r Simulator Schritt S7 mit einer Wahrscheinlichkeit von<br />
1−℘ niemals erreichen und erzeugt die Ausgabe eines Verifiers, <strong>de</strong>r von <strong>de</strong>m Algorithmus<br />
abweicht. Diese Sicht wird mit <strong>de</strong>r gleichen Wahrscheinlichkeitsverteilung erzeugt, als<br />
wenn <strong>de</strong>r Verifier mit <strong>de</strong>m Prover interagiert hätte. Darüber hinaus steht diese Sicht im<br />
Einklang mit einem λ ∈ Λ, welches nicht gut ist, und dieses λ wird entsprechend <strong>de</strong>r<br />
Gleichverteilung <strong>de</strong>r schlechten Elemente von Λ erzielt (vorausgesetzt, dass ℘ = 1).<br />
An<strong>de</strong>rerseits erreicht <strong>de</strong>r Simulator Schritt S7 mit einer Wahrscheinlichkeit von ℘.<br />
Dieses erfolgt dann und nur dann, wenn die Sicht <strong>de</strong>s Verifiers bis hierher im Einklang mit<br />
einem guten λ ∈ Λ steht, wobei dieses λ gleichverteilt ist über die guten Elemente in Λ.<br />
Je<strong>de</strong>r Versuch weiter von Schritt S7 nach Schritt S13 <strong>zu</strong> gehen, kann als eine Stichprobe<br />
innerhalb von Λ angesehen wer<strong>de</strong>n, mit <strong>de</strong>r Hoffnung, erneut ein gutes Element <strong>zu</strong> treffen.<br />
Es ist einleuchtend, dass ein solches gutes Element entsprechend <strong>de</strong>r Gleichverteilung<br />
über <strong>de</strong>n guten Elementen in Λ erlangt wird.<br />
Von hier an erzeugt Schritt S15 νi’s aus VΨ, wenn die Wahl <strong>de</strong>s Verifiers yi = 0 ist,<br />
und ɛi’s aus EΨ, wenn yi = 1 gilt. Zusammen mit <strong>de</strong>n ein<strong>de</strong>utigen zi’s stehen diese im<br />
Einklang mit <strong>de</strong>n xi’s aus λ. Unabhängig davon, ob diese νi’s und ɛi’s in Schritt S8 o<strong>de</strong>r<br />
S14 gewählt wur<strong>de</strong>n, sind sie gleichverteilt über VΨ(mit einem Aufruf von σ(Ψ)) und<br />
EΨ(mit einem Aufruf von ρ(Ψ)) und korrelieren nicht mit λ.<br />
Zusammenfassend ist fest<strong>zu</strong>stellen, dass die Sicht, die von <strong>de</strong>m Simulator erzeugt<br />
wird, im Einklang mit einem <strong>zu</strong>fälligen λ steht, welches mit einer Wahrscheinlichkeit<br />
von 1 − ℘ gleichverteilt über die schlechten Elemente von Λ o<strong>de</strong>r mit einer Wahrscheinlichkeit<br />
von ℘ über die guten Elemente von Λ und somit über alle Elemente von Λ ist.<br />
Ist darüber hinaus λ gut, dann enthält diese Sicht <strong>zu</strong>sammen mit <strong>de</strong>n da<strong>zu</strong>gehörigen zi’s<br />
die νi’s und ɛi’s (wie sie von <strong>de</strong>n mit λ im Einklang stehen<strong>de</strong>n hi’s benötigt wer<strong>de</strong>n),<br />
die gleichverteilt über VΨ und EΨ sind. Mit an<strong>de</strong>ren Worten, die von <strong>de</strong>m Simulator<br />
produzierte Sicht ist exakt genauso verteilt, wie die Sicht eines Verifiers bei einer Kommunikation<br />
mit einem ehrlichen Prover. Die bei<strong>de</strong>n entschei<strong>de</strong>n<strong>de</strong>n Eigenschaften <strong>de</strong>s<br />
Protokolls 6.3 sind dabei <strong>zu</strong>m einen die Funktionen ρ(Ψ) und γ(Ψ, σ(Ψ),a), die Elemente<br />
von EΨ mit <strong>de</strong>rselben Wahrscheinlichkeitsverteilung erzeugen, und <strong>zu</strong>m zweiten,<br />
dass die Commitments informatiomstheoretisch nicht mit <strong>de</strong>n darin verborgenen Bits<br />
korrelieren. Daraus folgt <strong>de</strong>r Nachweis, dass <strong>de</strong>r Simulator perfekt ist. <br />
70
6 Perfekte Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Lemma 6.5<br />
Protokoll 6.3 ist effizient aus<strong>zu</strong>führen.<br />
Beweis:<br />
Seien ℘, Λ sowie die festen Parameter wie im Beweis <strong>zu</strong>m Lemma 6.4. Offensichtlich<br />
ist ℘ exakt die Wahrscheinlichkeit, mit <strong>de</strong>r <strong>de</strong>r Simulator in Protokoll 6.4 <strong>de</strong>n Schritt<br />
S7 erreicht, da bis dahin <strong>de</strong>r Simulator <strong>de</strong>m Protokoll 6.3 ohne Abweichung entspricht.<br />
Interessanter ist, dass ℘ ebenfalls exakt <strong>de</strong>r Wahrscheinlichkeit entspricht, dass <strong>de</strong>r Simulator,<br />
wenn er erst einmal Schritt S7 erreicht hat, ebenfalls Schritt 13 erreichen kann<br />
(und damit erfolgreich mit Schritt 15 die Simulation been<strong>de</strong>n kann), ohne dabei wenigstens<br />
einmal <strong>zu</strong>rück <strong>zu</strong> Schritt S7 gegangen <strong>zu</strong> sein. Um das <strong>zu</strong> sehen, ist <strong>zu</strong> beachten,<br />
dass die Familien <strong>de</strong>r xi’s, uij’s und tij’s, die in <strong>de</strong>n Schritten S8 und S10 <strong>zu</strong>fällig erzeugt<br />
wur<strong>de</strong>n, über Λ gleichverteilt sind.<br />
Infolge<strong>de</strong>ssen ist die erwartete Anzahl, wie oft Schritt S7 erreicht wird, exakt 1 (solange<br />
nicht ℘ = 0 ist, weil dann die Anzahl ebenfalls 0 ist). Es ist aber auch klar, dass<br />
die Schritte S0 bis S6 nicht mehr als einmal erreicht wer<strong>de</strong>n und dass kein Schritt nach<br />
S7 häufiger erreicht wird, als Schritt S7 selber. Daher ist die erwartete Zeit, die das Protokoll<br />
<strong>de</strong>s Simulators benötigt, nicht mehr als die einmalige Ausführung je<strong>de</strong>n Schrittes<br />
dieses Protokolls, was unter <strong>de</strong>r Berücksichtigung <strong>de</strong>r Effizient <strong>de</strong>s Verifiers insgesamt<br />
gesehen effizient ist. <br />
Satz 6.2<br />
Das Protokoll 6.3 ist effizient und für einen ehrlichen Prover bei einer Kommunikation<br />
mit je<strong>de</strong>m beliebigen Verifier perfekt Zero–<strong>Knowledge</strong>.<br />
Beweis:<br />
Der Beweis ergibt sich aus <strong>de</strong>m Lemma 6.4 und <strong>de</strong>m Lemma 6.5.<br />
71
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit<br />
konstanter Run<strong>de</strong>nzahl<br />
Wie in Kapitel 3.2 beschrieben, be<strong>de</strong>utet eine berechenbare Geheimhaltung, dass ein<br />
unbeschränkter Verifier V ∗ weiterführen<strong>de</strong> Informationen aus <strong>de</strong>m Kommunikationsprotokoll<br />
mit <strong>de</strong>m Prover berechnen könnte. Es reicht somit ein einfacherer Algorithmus<br />
seitens <strong>de</strong>s Provers im Gegensatz <strong>zu</strong> perfekten Zero–<strong>Knowledge</strong> Verfahren. Es existieren<br />
in <strong>de</strong>r Praxis zwar keine unbeschränkten Maschinen. Ein Verifier V ∗ kann jedoch nach<br />
<strong>de</strong>r Kommunikation über einen beliebigen Zeitraum hinweg mit einer unbekannt starken<br />
Rechenkraft versuchen, weitere Informationen aus <strong>de</strong>m Kommunikationsprotokoll<br />
<strong>zu</strong> berechnen.<br />
Um das <strong>zu</strong> verhin<strong>de</strong>rn, muss <strong>de</strong>r Sicherheitsgrenzwert nk <strong>de</strong>r µ-Funktion (Definition<br />
2.13 auf Seite 13) hoch genug gewählt wer<strong>de</strong>n. Bei Kommunikationen, die jedoch über<br />
Jahre hinweg einem Angriff durch einen Verifier V ∗ standhalten sollen, ist die Entwicklung<br />
einerseits immer stärkerer Maschinen und an<strong>de</strong>rerseits neuer informationstheoretischer<br />
Grundlagen <strong>zu</strong>r Berechenbarkeit schwieriger Verfahren bzw. <strong>de</strong>r da<strong>zu</strong> erfor<strong>de</strong>rlichen<br />
Komplexität nicht seriös kalkulierbar. Der Einsatz <strong>de</strong>r berechenbaren Zero–<strong>Knowledge</strong><br />
Arguments ist daher in <strong>de</strong>r Praxis auf entsprechen<strong>de</strong> Anwendungsbereiche beschränkt.<br />
Zwar kann <strong>de</strong>r Wert nk beliebig erhöht wer<strong>de</strong>n. Der damit verbun<strong>de</strong>ne Rechenaufwand<br />
nähert sich dann jedoch <strong>de</strong>m eines perfekten Zero–<strong>Knowledge</strong> Arguments.<br />
Die Hauptarbeiten <strong>de</strong>r berechenbaren Zero–<strong>Knowledge</strong> Arguments mit konstanter<br />
Run<strong>de</strong>nzahl stammen 1990 von Feige und Shamir [FS90a, FS90b], 1997 von Bellare,<br />
Jakobsson und Yung [BJY97] sowie 2001 (überarbeitet 2003) von Barak [Bar03]. Feige<br />
und Shamir entwickelten unter <strong>de</strong>r Vorausset<strong>zu</strong>ng <strong>de</strong>r Existenz von Einweg-Funktionen<br />
einen 2 1<br />
2<br />
Run<strong>de</strong>n und unter <strong>de</strong>r Vorausset<strong>zu</strong>ng <strong>de</strong>r Existenz von Einweg-Permutationen<br />
einen 2 Run<strong>de</strong>n Algorithmus. Diese Algorithmen bauen auf <strong>de</strong>m witness hiding Verfahren<br />
aus Abschnitt 3.5, Seite 33, auf. Der Algorithmus von Bellare, Jakobsson und<br />
Yung ist ein 2-Run<strong>de</strong>n Verfahren, welches als kryptographische Vorausset<strong>zu</strong>ng nur noch<br />
auf <strong>de</strong>r Existenz von Einweg-Funktionen beruht. Im Gegensatz da<strong>zu</strong> benutzt Barak als<br />
kryptographische Vorausset<strong>zu</strong>ng die Existenz kollisionsresistenter Hashfunktionen und<br />
nutzt die Entwicklung von Feige, Lapidot und Shamir [FLS00], das Problem <strong>de</strong>r Zero–<br />
<strong>Knowledge</strong> Argument Konstruktion in die Konstruktion zweier einfacher Algorithmen<br />
<strong>zu</strong> unterteilen, die bei<strong>de</strong> in konstanter Run<strong>de</strong>nzahl ablaufen können.<br />
Das Neue an <strong>de</strong>r Konstruktion von Barak ist, dass bei <strong>de</strong>r Entwicklung <strong>de</strong>s für <strong>de</strong>n<br />
Nachweis <strong>de</strong>r Zero–<strong>Knowledge</strong> Eigenschaft notwendigen Simulators auf <strong>de</strong>n Programmco<strong>de</strong><br />
<strong>de</strong>s Verifiers <strong>zu</strong>rückgegriffen wird, so dass eine Simulation in streng polynomieller<br />
Zeit bewiesen und damit sichergestellt wird. Von Barak und Lin<strong>de</strong>ll wird in [BL02] darüber<br />
hinaus nachgewiesen, dass ein Zero–<strong>Knowledge</strong> Argument, welches die Black-Box<br />
Technik 23 für <strong>de</strong>n Simulator verwen<strong>de</strong>t, in<strong>de</strong>m <strong>de</strong>r <strong>zu</strong> prüfen<strong>de</strong> Verifier ohne Kenntnis sei-<br />
23 Siehe Abschnitt 7.2.1, Seite 74.<br />
72
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
nes Programmco<strong>de</strong>s einfach <strong>zu</strong> einer vorhergehen<strong>de</strong>n Konfiguration <strong>zu</strong>rückgesetzt wird,<br />
die Simulation ausschließlich in erwarteter statt in streng polynomieller Zeit durchführen<br />
kann.<br />
Satz 7.1 (Hauptergebnis)<br />
Unter <strong>de</strong>r Vorausset<strong>zu</strong>ng <strong>de</strong>r Existenz kollisionsresistenter Hashfunktionen kann ein Simulator<br />
konstruiert wer<strong>de</strong>n, <strong>de</strong>r nicht als Black-Box funktioniert, so dass ein Zero–<strong>Knowledge</strong><br />
Argument für je<strong>de</strong> Sprache in N P existiert, das folgen<strong>de</strong> Eigenschaften erfüllt:<br />
1. Es ist Zero–<strong>Knowledge</strong> hinsichtlich nicht-uniformer 24 Wi<strong>de</strong>rsacher mit <strong>zu</strong>sätzlichen<br />
Informationen.<br />
2. Es hat eine konstante Run<strong>de</strong>nzahl und eine vernachlässigbare Fehlerwahrscheinlichkeit<br />
bezüglich <strong>de</strong>r Korrektheit.<br />
3. Es bleibt Zero–<strong>Knowledge</strong>, auch wenn es n-fach simultan bzw. parallel ausgeführt<br />
wird, wobei n <strong>de</strong>r Sicherheitsparameter ist. 25<br />
4. Es ist ein Arthur-Merlin Protokoll mit gemeinsamen Münzwürfen für <strong>de</strong>n Prover<br />
und <strong>de</strong>n Verifier.<br />
5. Der Simulator hat eine streng polynomielle statt nur eine erwartete polynomielle<br />
Laufzeit.<br />
7.1 Übersicht über das Grobkonzept<br />
Das hier vorgestellte Zero–<strong>Knowledge</strong> Argument basiert auf <strong>de</strong>r Technik von [FLS00].<br />
Darin wird ein interaktiver Beweis für eine Sprache L so modifiziert, dass <strong>de</strong>r Prover<br />
die Möglichkeit <strong>zu</strong>m Täuschen hat, wenn er eine Trapdoor Information 26 σ besitzt, so<br />
dass <strong>de</strong>r Verifier immer akzeptiert, auch wenn x /∈ L gilt o<strong>de</strong>r <strong>de</strong>r Prover kein Zeugnis<br />
für x ∈ L kennt. Natürlich muss sichergestellt sein, dass es unmöglich ist, während<br />
<strong>de</strong>r Interaktion mit <strong>de</strong>m Verifier diese Trapdoor Information σ <strong>zu</strong> bekommen, um die<br />
Korrektheit sicher<strong>zu</strong>stellen. Auch wenn diese Modifikation auf <strong>de</strong>n ersten Blick sinnlos<br />
erscheinen mag, ist sie entschei<strong>de</strong>nd, die Zero–<strong>Knowledge</strong> Eigenschaft <strong>zu</strong> erhalten.<br />
Der Grund liegt darin, dass es zwar für <strong>de</strong>n Prover während <strong>de</strong>r Kommunikation<br />
mit <strong>de</strong>m Verifier unmöglich ist, diese Trapdoor Information σ <strong>zu</strong> bekommen. Für <strong>de</strong>n<br />
24 siehe da<strong>zu</strong> Abschnitt 7.2.4<br />
25 Ein Protokoll, welches diese Eigenschaft aufweist, wird als beschränkt simultan Zero–<strong>Knowledge</strong> (engl.<br />
boun<strong>de</strong>t concurrent zero-knowledge) Protokoll bezeichnet. Das steht im Gegensatz <strong>zu</strong> an<strong>de</strong>ren simultanen<br />
Zero–<strong>Knowledge</strong> Protokollen wie z.B. [DNS99], die Zero–<strong>Knowledge</strong> bleiben, wenn sie simultan<br />
in einer polynomiellen Anzahl ausgeführt wer<strong>de</strong>n.<br />
26 Siehe Definition 2.23, Seite 21.<br />
73
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Simulator ist diese Trapdoor Information dagegen leicht <strong>zu</strong> erzeugen. Vor <strong>de</strong>r Arbeit von<br />
Barak wur<strong>de</strong> das in <strong>de</strong>r Regel dadurch erreicht, dass <strong>de</strong>r Simulator in einem Black-Box<br />
Zugriff <strong>de</strong>n Verifier <strong>zu</strong>rückgesetzt hat, um mit <strong>de</strong>n bislang erworbenen Informationen<br />
über das Verhalten <strong>de</strong>s Verifiers das erfor<strong>de</strong>rliche σ <strong>zu</strong> bekommen.<br />
Die vorliegen<strong>de</strong> Konstruktion nutzt einen ähnlichen Grundgedanken, än<strong>de</strong>rt aber <strong>de</strong>n<br />
Zugriff auf <strong>de</strong>n Verifier. Das Protokoll wird so konstruiert, dass die Trapdoor Information<br />
σ einfach die Beschreibung <strong>de</strong>r Funktion <strong>de</strong>r nächsten Nachricht <strong>de</strong>s Verifiers ist (d.h.<br />
<strong>de</strong>r Co<strong>de</strong> <strong>de</strong>s Verifiers). Da<strong>zu</strong> ist an<strong>zu</strong>merken, dass die nächste–Nachricht Funktion <strong>de</strong>s<br />
Verifiers schwer <strong>zu</strong> lernen sein kann (z.B. eine fest verdrahtete Zufallsfunktion). Für<br />
eine Black-Box Simulation ist es dann aber sehr schwer bzw. unmöglich, die korrekte<br />
Trapdoor Information <strong>zu</strong> erhalten.<br />
Die Technik aus [FLS00] erlaubt es, ein Zeugnis als Trapdoor Information für N P<br />
Sprachen <strong>zu</strong> benutzen. Das reicht für <strong>de</strong>n vorliegen<strong>de</strong>n Fall nicht aus. Das Problem<br />
dabei ist, dass die Laufzeit <strong>de</strong>s Verifiers durch kein festes Polynom beschränkt ist. Um<br />
das <strong>zu</strong> lösen, greift Barak auf die Metho<strong>de</strong> <strong>de</strong>s Universellen Arguments <strong>zu</strong>rück. Einfach<br />
ausgedrückt, kann mit einem Universellen Argument die Technik aus [FLS00] durch<br />
<strong>de</strong>n Einsatz eines Zeugnisses als Trapdoor Funktion für je<strong>de</strong> Sprache aus Ntime(T (n))<br />
genutzt wer<strong>de</strong>n, auch wenn T (·) super-polynomiell ist (z.B. T (n) = n log log n ).<br />
7.2 Definitionen<br />
Um ein Zero–<strong>Knowledge</strong> Argument <strong>zu</strong> konstruieren, <strong>de</strong>r die aufgeführten Eigenschaften<br />
aufweist, wer<strong>de</strong>n nachfolgend die Definitionen aufgeführt, die entwe<strong>de</strong>r neu sind o<strong>de</strong>r<br />
von <strong>de</strong>n in Abschnitt 2 beschriebenen abweichen.<br />
7.2.1 Black-Box Simulation<br />
Mit Black-Box Simulation wird ein Protokoll bezeichnet, welches die Kommunikation<br />
zwischen einem Prover und einem Verifier simulieren soll, ohne die Strategie bzw. <strong>de</strong>n<br />
Algorithmus <strong>de</strong>s Verifiers <strong>zu</strong> kennen. Um <strong>de</strong>n Verifier <strong>zu</strong>m Akzeptieren <strong>zu</strong> veranlassen,<br />
benötigt <strong>de</strong>r Simulator Kenntnis davon, unter welchen Vorausset<strong>zu</strong>ngen <strong>de</strong>r Verifier akzeptierend<br />
fortfährt. Aus diesem Grund wer<strong>de</strong>n die vom Verifier genutzten Münzwürfe<br />
vom Simulator selber erzeugt und <strong>de</strong>m Simulator über das Zufallsband eingespielt. Damit<br />
erscheint für eine feste Sequenz von Münzwürfen <strong>de</strong>r Verifier als erwartete <strong>de</strong>terministische<br />
Turing Maschine, die von <strong>de</strong>m Simulator wie folgt verwen<strong>de</strong>t wird.<br />
In <strong>de</strong>r Simulation ruft <strong>de</strong>r Simulator <strong>de</strong>n Verifier gemäß Protokoll als jetzt erwartete<br />
<strong>de</strong>terministische Funktion auf und übergibt je nach Bedarf die erfor<strong>de</strong>rlichen Münzwürfe.<br />
Ist innerhalb <strong>de</strong>r Simulation ein Punkt erreicht, an <strong>de</strong>m <strong>de</strong>r Prover <strong>de</strong>n Beweis für<br />
sein Geheimniss erbringen soll, übersen<strong>de</strong>t <strong>de</strong>r Verifier in <strong>de</strong>r Regel seine Öffnungsauffor<strong>de</strong>rung<br />
für vorab vereinbarte Beweise, die <strong>de</strong>r Prover anschließend öffnet. Mit diesem<br />
74
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Wissen über das Verhalten <strong>de</strong>s Verifiers spult <strong>de</strong>r Simulator <strong>de</strong>n Verifier wie<strong>de</strong>r <strong>zu</strong> einem<br />
vorherigen Stand <strong>zu</strong>rück und spielt einen Teil <strong>de</strong>r Interaktion erneut durch, nunmehr mit<br />
<strong>de</strong>m Wissen, was er später <strong>de</strong>m Verifier beweisen soll. Dadurch kann <strong>de</strong>r Simulator im<br />
zweiten Durchlauf entsprechen<strong>de</strong> Berechnungen anstellen, die ihm mit diesem Zusatzwissen<br />
ermöglichen, <strong>de</strong>n Öffnungsauffor<strong>de</strong>rungen <strong>de</strong>s Verifiers nach<strong>zu</strong>kommen.<br />
Dabei entstehen zwei Problemfel<strong>de</strong>r, die es <strong>de</strong>m Simulator im Einzelfall sehr schwer<br />
o<strong>de</strong>r sogar unmöglich machen, <strong>de</strong>n Öffnungsauffor<strong>de</strong>rungen <strong>de</strong>s Verifiers trotz <strong>de</strong>s Rücksetzens<br />
nach<strong>zu</strong>kommen. Zum Einen kann <strong>de</strong>r Verifier über einen hardcodierten Pseudo<strong>zu</strong>fallsgenerator<br />
verfügen, <strong>de</strong>r nicht über das vom Simulator gesteuerte Zufallsband<br />
<strong>de</strong>terminiert wird, so dass ein Rücksetzen mit einer nicht nur vernachlässigbaren Wahrscheinlichkeit<br />
nicht <strong>zu</strong>m Erfolg führt. Zum Zweiten kann die Laufzeit <strong>de</strong>s Verifiers <strong>zu</strong>min<strong>de</strong>st<br />
unter bestimmten Vorausset<strong>zu</strong>ngen super-polynomiell sein, so dass <strong>de</strong>m polynomiellen<br />
Simulator keine Möglichkeit gegeben wird, alle Abfragen durch<strong>zu</strong>führen. Da<strong>zu</strong><br />
wur<strong>de</strong> in [BL02] nachgewiesen, dass je<strong>de</strong>r Simulator, <strong>de</strong>r <strong>de</strong>n Programmco<strong>de</strong> <strong>de</strong>s Verifieres<br />
nicht kennt und somit die Black-Box Technik verwen<strong>de</strong>t, die Simulation nur in<br />
erwarteter Polynomzeit statt in streng polynomieller Zeit ausführen kann.<br />
7.2.2 Statistisch ein<strong>de</strong>utiges Bit–Commitment–Scheme<br />
Das in diesem Abschnitt verwen<strong>de</strong>te Bit–Commitment–Scheme entspricht <strong>de</strong>r Definition<br />
2.16. Es ist statistisch ein<strong>de</strong>utig und nur berechenbar geheim.<br />
Definition 7.1 (Statistisch ein<strong>de</strong>utiges Bit–Commitment–Scheme)<br />
Seien Com : {0, 1} × {0, 1} n → {0, 1} p(n) eine polynomiell berechenbare Funktion ohne<br />
weitere Hilfseingabe, p(·) ein beliebiges Polynom und n ein Sicherheitsparameter. Com<br />
ist ein statistisch ein<strong>de</strong>utiges Bit–Commitment–Scheme, wenn gilt:<br />
• Berechenbar geheim: Seien Un und U ′ n gleichverteilte Wahrscheinlichkeitsräume<br />
über <strong>de</strong>r Menge {0, 1} n . Dann sind die Zufallsvariablen Com(0, Un) und Com(1, U ′ n)<br />
berechenbar ununterscheidbar.<br />
• Statistisch ein<strong>de</strong>utig: Die Mengen Com(0, {0, 1} n ) und Com(1, {0, 1} n ) sind disjunkt.<br />
Notation: Sei Com(σ) = Com(σ, Un). Es wird Com −1 (y) = σ <strong>de</strong>finiert, wobei das<br />
ein<strong>de</strong>utige Bit σ ∈ {0, 1} ist, für das y = Com(σ, w) gilt (für ein w, falls σ existiert).<br />
An<strong>de</strong>rnfalls wird Com −1 (y) = ⊥ <strong>de</strong>finiert. Wie in Definition 2.16 erfolgt auch hier eine<br />
Zeichenkettenverarbeitung durch Konkatenation <strong>de</strong>r unabhängigen Commitments.<br />
75
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
7.2.3 Zero–<strong>Knowledge</strong> Argument of <strong>Knowledge</strong><br />
Neben <strong>de</strong>n bisher <strong>de</strong>finierten Zero–<strong>Knowledge</strong> Beweissystemen, die ausschließlich beweisen,<br />
dass ein Wort in einer Sprache vorhan<strong>de</strong>n ist, existieren noch interaktive Systeme,<br />
die beweisen, dass ” jemand“ ein Geheimnis bzw. ein Wort aus einer Sprache kennt (proof<br />
of knowledge). Diese Systeme wer<strong>de</strong>n als Zero–<strong>Knowledge</strong> Proof of <strong>Knowledge</strong> bzw. Zero–<strong>Knowledge</strong><br />
Argument of <strong>Knowledge</strong> bezeichnet. Da hier keine Proof of <strong>Knowledge</strong><br />
benötigt wer<strong>de</strong>n, beschränkt sich dieser Abschnitt auf die Einführung von Argument of<br />
<strong>Knowledge</strong>.<br />
In einem Zero–<strong>Knowledge</strong> Argument of <strong>Knowledge</strong> möchte <strong>de</strong>r Prover <strong>de</strong>n Verifier<br />
davon überzeugen, dass er da<strong>zu</strong> ein Zeugnis kennt, welches beweist, dass x ∈ L gilt.<br />
Dabei ist <strong>zu</strong> beachten, dass sich <strong>de</strong>r Beweis über die Kenntnis von x von <strong>de</strong>m Beweis <strong>de</strong>r<br />
bloßen Existenz von x unterschei<strong>de</strong>t. So erfor<strong>de</strong>rt z.B. die Kenntnis <strong>de</strong>r Primfaktoren<br />
einer Zahl n einen an<strong>de</strong>ren Beweis als <strong>de</strong>r Beweis, dass n <strong>zu</strong>sammengesetzt ist. Aus<br />
diesem Grund kann je<strong>de</strong>s Zero–<strong>Knowledge</strong> Argument in ein Zero–<strong>Knowledge</strong> Argument<br />
of <strong>Knowledge</strong> überführt wer<strong>de</strong>n. Die Umkehrung gilt im Allgemeinen jedoch nicht.<br />
Die Grundi<strong>de</strong>e <strong>zu</strong> Zero–<strong>Knowledge</strong> Proof of <strong>Knowledge</strong> stammt aus [GMR85] und<br />
wur<strong>de</strong> von Feige, Fiat und Shamir in [FFS87] und in [TW87] formal <strong>de</strong>finiert. Von Bellare<br />
und Goldreich wur<strong>de</strong>n in [BG92] einige Lücken dieser Definitionen geschlossen.<br />
Zur Definition <strong>de</strong>s Zero–<strong>Knowledge</strong> Argument of <strong>Knowledge</strong> wird <strong>de</strong>r Begriff <strong>de</strong>r<br />
Orakel–Maschine benötigt.<br />
Definition 7.2 (Orakel–Maschine)<br />
Sei E eine probabilistische Turing Maschine mit einem <strong>zu</strong>sätzlichen Orakel–Band und <strong>de</strong>n<br />
bei<strong>de</strong>n Zustän<strong>de</strong>n Anrufung <strong>de</strong>s Orakels (engl. oracle invocation) und Orakel–Auskunft<br />
(engl. oracle appeared). Die Berechnung von E mit <strong>de</strong>r Eingabe x erfolgt dabei mittels<br />
Zugriff auf eine interaktive Funktion A : {0, 1} ∗ → {0, 1} ∗ , die als Orakel bezeichnet wird.<br />
Dann heißt E eine Orakel–Maschine. E Ax (x) ist eine Zufallsvariable, die die Ausgabe<br />
von E mit <strong>de</strong>m Orakel Ax und <strong>de</strong>r Einabe x beschreibt, wobei die Wahrscheinlichkeit<br />
von <strong>de</strong>n Münzwürfen von E und A abhängt.<br />
Die Laufzeit <strong>de</strong>r Orakel–Maschine ist wie bei Turing Maschinen die Anzahl <strong>de</strong>r Schritte<br />
während <strong>de</strong>r Berechnung. Die Anrufung <strong>de</strong>s Orakels und <strong>de</strong>ssen Antwort für je<strong>de</strong><br />
Anfrage wird dabei als ein Schritt <strong>de</strong>finiert. Je<strong>de</strong> Auskunft <strong>de</strong>s Orakels an die Orakel–<br />
Maschine ist dabei unabhängig von <strong>de</strong>n vorhergehen<strong>de</strong>n Anrufungen.<br />
Sei p(x) die Wahrscheinlichkeit, dass <strong>de</strong>r Prover P <strong>de</strong>n Verifier V davon überzeugen<br />
kann, bei Eingabe von x <strong>zu</strong> akzeptieren. Dann ist zwinged erfor<strong>de</strong>rlich, dass es<br />
eine Maschine E gibt, genannt <strong>de</strong>n Extraktor (engl. knowledge extractor), <strong>de</strong>r in einer<br />
ein Zeugnis für die Behauptung von P ausgibt.<br />
(erwarteten) Zeit proportional <strong>zu</strong> 1<br />
p(x)<br />
Die Standardformulierung <strong>de</strong>r Definition von [BG92] wird hier durch eine Definition<br />
76
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
ersetzt, die von [Bar03] stammt und für Argumentsysteme anstatt für Beweissysteme<br />
formuliert wur<strong>de</strong>.<br />
Definition 7.3 (Argument of <strong>Knowledge</strong> Systeme)<br />
Seien L = L(R) und (P, V) ein Argumentsystem für L. Sei T : → eine Funktion.<br />
Dann heißt (P, V) ein T (n)-korrektes Argument of <strong>Knowledge</strong> für L, wenn eine probabilistische<br />
polynomiell–beschränkte Maschine E existiert (<strong>de</strong>r Extraktor), so dass für je<strong>de</strong>n<br />
T (n)-großen Prover P ∗ und für je<strong>de</strong>s x ∈ {0, 1} n gilt:<br />
Pr[E(P ∗ , x) ∈ R(x)] ≥ Pr[outV(P ∗ (x), V(x)) = 1] + µ(n),<br />
wobei µ eine vernachlässigbare Funktion ist.<br />
(P, V) ist ein Argument of <strong>Knowledge</strong>, wenn es ein T (n)-korrektes Argument of Know-<br />
vernachlässigbar klein ist.<br />
ledge und 1<br />
T (n)<br />
7.2.4 Uniforme und Nicht-uniforme Wi<strong>de</strong>rsacher<br />
Das Standardmo<strong>de</strong>ll effizienter Wi<strong>de</strong>rsacher, also von Maschinen, die <strong>zu</strong> täuschen versuchen,<br />
um weitere Informationen <strong>zu</strong> erlangen, sind Familien von polynomiell-großen<br />
Schaltkreisen. In diesem Fall wer<strong>de</strong>n als Mo<strong>de</strong>ll jedoch Schaltkreise <strong>de</strong>r Größe T (n) für<br />
eine super-polynomielle Funktion T : → (z.B. T (n) = n log n ) betrachtet.<br />
Daneben wer<strong>de</strong>n teilweise uniforme und beschränkte nicht-uniforme Wi<strong>de</strong>rsacher betrachtet.<br />
Bei bei<strong>de</strong>n han<strong>de</strong>lt es sich um solche, die mittels probabilistischer polynomiell–<br />
beschränkter Turing Maschinen beschrieben wer<strong>de</strong>n. Nicht-uniforme haben darüber hinaus<br />
eine <strong>zu</strong>sätzliche Hilfseingabe, 27 die als Ratschlag (engl. advice) bezeichnet wird und<br />
bei Eingaben <strong>de</strong>r Größe n eine Länge von l(n) aufweisen, wobei l eine beliebige feste<br />
Funktion l : → darstellt, die polynomiell in Be<strong>zu</strong>g auf n ist. Es sei betont, dass die<br />
Laufzeit eines solchen Wi<strong>de</strong>rsachers durch ein beliebiges Polynom beschrieben wer<strong>de</strong>n<br />
und damit insbeson<strong>de</strong>re länger als die von l(n) sein kann.<br />
Anmerkungen:<br />
• Es ist bekannt, dass in allen kryptographischen Umgebungen, in <strong>de</strong>nen nichtuniforme<br />
Wi<strong>de</strong>rsacher betrachtet wer<strong>de</strong>n, o.B.d.A. diese Betrachtung auf <strong>de</strong>terministische<br />
Wi<strong>de</strong>rsacher beschränkt wer<strong>de</strong>n kann, bei <strong>de</strong>nen eine Zufallserzeugung<br />
fest eincodiert ist. Das gilt nicht notwendigerweise bei uniformen o<strong>de</strong>r beschränkten<br />
nicht-uniformen Algorithmen.<br />
• In <strong>de</strong>n meisten kryptographischen Werken kann ein Beweis bezüglich <strong>de</strong>r Sicherheit<br />
gegen uniforme Wi<strong>de</strong>rsacher leicht auf einen Beiweis <strong>de</strong>r Sicherheit gegen nichtuniforme<br />
erweitert wer<strong>de</strong>n. Diese Erweiterungen funktionieren ausschließlich bei<br />
27 Da diese <strong>zu</strong>sätzliche Eingabe nicht gleichverteilt sein muss, sind auch die so beeinflussten Algorithmen<br />
nicht mehr gleichverteilt, weshalb diese als ” nicht-uniform“ bezeichnet wer<strong>de</strong>n.<br />
77
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Verwendung <strong>de</strong>r Black-Box-Technik. Da in <strong>de</strong>r hier vorgestellten Arbeit nur mit<br />
<strong>de</strong>r nicht-Black-Box-Technik gearbeitet wird, kann <strong>de</strong>r Sicherheitsbeweis gegen<br />
uniforme Wi<strong>de</strong>rsacher nicht automatisch auf nicht-uniforme übertragen wer<strong>de</strong>n.<br />
7.2.5 Universelles Argument<br />
Universelle Argumente sind eine Variation von (interaktiven) Zero–<strong>Knowledge</strong> Argumenten,<br />
wie sie von Micali [Mic94] und Kilian [Kil92] <strong>de</strong>finiert und konstruiert wur<strong>de</strong>n.<br />
Vereinfacht gesagt ist ein Universelles Argument ein Zero–<strong>Knowledge</strong> Argument, um die<br />
Klassen<strong>zu</strong>gehörigkeit einer super-polynomiellen Funktion T (·) in Ntime(T (n)) (anstelle<br />
von N P) <strong>zu</strong> beweisen.<br />
Seien<br />
• U ein gleichverteilter Wahrscheinlichkeitsraum über {0, 1} ∗ ,<br />
• RU eine Relation,<br />
• M eine Turing Maschine mit <strong>de</strong>r Beschreibung <strong>de</strong>sc(M) 28 ,<br />
• x, z ∈ 0, 1 ∗ Zeichenketten,<br />
• t eine Dualzahl, wenn M (x, z) innerhalb t Schritten akzeptiert,<br />
• 〈<strong>de</strong>sc(M), x, t〉 eine Zufallsvariable bezüglich <strong>de</strong>r Ausgabe von M bei Eingabe von<br />
x und t,<br />
• (〈<strong>de</strong>sc(M), x, t〉, z) ∈ RU,<br />
• TM(x, z) eine Funktion, die die Anzahl <strong>de</strong>r Schritte ausgibt, die M bei Eingabe<br />
von (x, z) ausführt und<br />
• die Sprache LU = L(RU).<br />
Dann gilt<br />
• (〈<strong>de</strong>sc(M), x, t〉, z) ∈ RU =⇒ TM(x, z) ≤ t,<br />
• |〈<strong>de</strong>sc(M), x, t〉| = |<strong>de</strong>sc(M)| + |x| + log t und<br />
• LU ∈ Ntime(2 n ).<br />
Weiter wird <strong>de</strong>finiert,<br />
• T : → als eine super-polynomielle Funktion (z.B. T (n) = n log log n ),<br />
28 siehe da<strong>zu</strong> Definition 2.11, Seite 12<br />
78
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
• RU T (n) als Relation mit: (〈<strong>de</strong>sc(M), x, t〉, z) ∈ RU T (n) falls (〈<strong>de</strong>sc(M), x, t〉, z) ∈ RU<br />
und t ≤ T (|〈<strong>de</strong>sc(M), x, t〉|),<br />
Damit gilt wie<strong>de</strong>rum<br />
• LU T (n) = L(RU T (n) ),<br />
• LU T (n) ist Ntime(T (n))-vollständig und<br />
• RU 2n = RU und LU 2n = LU.<br />
Ein Universelles Argument System für Ntime(T (n)) ist grundsätzlich ein Zero–<strong>Knowledge</strong><br />
Argument of <strong>Knowledge</strong> System für LU T (n) mit folgen<strong>de</strong>n Verän<strong>de</strong>rungen:<br />
• Es wer<strong>de</strong>n strengere Anfor<strong>de</strong>rungen an die Effizienz eines ehrlichen Provers gestellt.<br />
Statt eine obere Schranke für die Komplexität <strong>de</strong>s Provers bezüglich aller Eingaben<br />
einer bestimmten Länge fest<strong>zu</strong>legen wird gefor<strong>de</strong>rt, dass die Laufzeit <strong>de</strong>s Provers<br />
für die gemeinsamen Eingaben 〈<strong>de</strong>sc(M), x, t〉 und z polynomiell in TM(x, z) sein<br />
muss und somit insbeson<strong>de</strong>re polynomiell bezüglich t ist.<br />
• Da das Zeugnis z eine Länge von T (n) haben könnte, reicht möglicherweise Polynomialzeit<br />
nicht aus, um dieses nie<strong>de</strong>r<strong>zu</strong>schreiben. Daher kann <strong>de</strong>r Extraktor eine<br />
Laufzeit von T (n) O(1) aufweisen.<br />
Somit kann die formale Definition <strong>de</strong>r Universellen Argumente erfolgen:<br />
Definition 7.4 (Universelles Argument)<br />
Ein Universelles Argument System für Ntime(T (n)) ist ein Paar von Algorithmen (P,V),<br />
welches folgen<strong>de</strong> Eigenschaft erfüllt:<br />
Effizient verifizierbar: V ist ein probabilistischer polynomiell–beschränkter interaktiver<br />
Algorithmus.<br />
Vollständigkeit eines relativ effizienten Provers: Für je<strong>de</strong>s (〈<strong>de</strong>sc(M), x, t〉, z) ∈<br />
RU T (n) gilt<br />
Pr[outV(P(〈<strong>de</strong>sc(M), x, t〉, z), V(〈<strong>de</strong>sc(M), x, t〉)) = 1] = 1<br />
Außer<strong>de</strong>m existiert ein Polynom p(·), welches die maximale Gesamtlaufzeit von<br />
P(z) bei gemeinsamer Eingabe (<strong>de</strong>sc(M), x, t) angibt: p(TM(x, z)) ≤ p(t).<br />
Berechenbar Korrekt: Für je<strong>de</strong> polynomiell große Schaltkreisfamilie {P ∗<br />
n}n∈ und<br />
je<strong>de</strong>s y = 〈<strong>de</strong>sc(M), x, t〉 ∈ {0, 1} n \ LU gilt<br />
mit µ als vernachlässigbarer Funktion.<br />
Pr[outV(P ∗ (y), V(y)) = 1] < µ(n)<br />
79
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Schwacher Beweis <strong>de</strong>s Proof of <strong>Knowledge</strong>: Es existiert eine probabilistische<br />
Orakel Maschine E mit <strong>de</strong>r Laufzeit T (n) O(1) , so dass für je<strong>de</strong> polynomiell große<br />
Schaltkreisfamilie {P ∗<br />
n}n∈ und je<strong>de</strong>s y = 〈<strong>de</strong>sc(M), x, t〉 ∈ {0, 1} n gilt<br />
Pr[E P∗ n (y) ∈ RU T (n) (y)] ≥ Pr[outV(P ∗ (y), V(y)) = 1] + µ(n)<br />
mit µ als vernachlässigbarer Funktion.<br />
Zu dieser Definition existiert folgen<strong>de</strong>r Satz.<br />
Satz 7.2 (basierend auf [Mic94, Kil92])<br />
Vorausgesetzt, es existiert eine Familie von Hashfunktionen, die kollisionsresistent gegen<br />
Schaltkreise <strong>de</strong>r Größe n log n ist. Dann gibt es ein Universelles Argument System für<br />
Ntime(n log log n ), welches folgen<strong>de</strong> Eigenschaften hat:<br />
1. Das System hat eine konstante Run<strong>de</strong>nzahl und ist ein Arthur-Merlin Beweissystem.<br />
2. Das System ist Zeugnis–ununterscheidbar.<br />
Für je<strong>de</strong>s ε > 0 existiert so ein System (<strong>de</strong>sc(M), x, t) mit einer Kommunikationskomplexität<br />
von m ε , wobei m = |〈<strong>de</strong>sc(M), x, t〉| gilt.<br />
Die Wahl von Ntime(n log log n ) ist willkürlich gewählt, um die Darstellung <strong>zu</strong> vereinfachen.<br />
Sie kann durch Ntime(f(n)) für je<strong>de</strong> Funktion f(·) mit f(n) = n o(log n) ersetzt<br />
wer<strong>de</strong>n. Barak und Goldreich haben in [BG01a] gezeigt, dass unter <strong>de</strong>r Standardannahme<br />
<strong>de</strong>r Existenz von kollisionsresistenten Hashfunktionen gegen polynomiell große<br />
Schaltkreise Universelle Arguments für die Sprache LU existieren. Der Beweis <strong>de</strong>s Satzes<br />
7.2 folgt direkt <strong>de</strong>n Ausführungen in [Mic94, Kil92] und wird vollständig ersetzt durch<br />
die Ergebnisse in [BG01a]. Er wird hier nicht weiter ausgeführt.<br />
Anmerkung: Es ist sehr unwahrscheinlich, die Korrektheitsbedingung <strong>zu</strong> einer statistischen<br />
Korrektheit <strong>zu</strong> verschärfen, die auch gegen ineffiziente Prover stand hält: Falls<br />
L einen interaktiven Beweis mit einem polynomiellen Verifier hat, gilt L ∈ PSPACE<br />
und es wird angenommen, dass Ntime(n log log n ) ⊆ PSPACE gilt.<br />
7.3 Zero–<strong>Knowledge</strong> Argument für uniforme Verifier<br />
In diesem Abschnitt wird ein Arthur-Merlin Beweissystem für N P mit konstanter Run<strong>de</strong>nzahl<br />
konstruiert, welches für uniforme Verifier Zero–<strong>Knowledge</strong> ist (d.h. Verifier, die<br />
als Turing Maschinen implementierbar sind und keine externe Eingabe als Ratschlag erhalten).<br />
Das Protokoll verwen<strong>de</strong>t einen nicht-Black-Box Simulator, <strong>de</strong>r in streng polynomieller<br />
Zeit arbeitet. Das Protokoll in diesem Abschnitt erfüllt nicht alle Eigenschaften 1<br />
80
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
– 5, die in <strong>de</strong>r Definition 7.1 aufgeführt sind, da es lediglich bei uniformen Verifiern Zero–<br />
<strong>Knowledge</strong> ist und bei simultaner Ausführung nicht Zero–<strong>Knowledge</strong> bleibt (<strong>zu</strong>min<strong>de</strong>st<br />
ist dies nicht bekannt). Dennoch stellt es die Haupti<strong>de</strong>e <strong>de</strong>r Konstruktion anschaulich<br />
dar.<br />
7.3.1 FLS Protokoll<br />
In <strong>de</strong>r vorgestellten Konstruktion wird eine Technik genutzt, die schon in an<strong>de</strong>ren Zero–<br />
<strong>Knowledge</strong> Protokollen verwen<strong>de</strong>t wur<strong>de</strong> und erstmals von Feige, Lapidot und Shamir<br />
in [FLS00] erstmals vorgestellt wur<strong>de</strong>.<br />
Die sogenannte FLS Technik erlaubt es, das Problem <strong>de</strong>r Konstruktion eines Zero–<br />
<strong>Knowledge</strong> Proofs (o<strong>de</strong>r Arguments) auf das Problem <strong>de</strong>r Konstruktion zweier einfacher<br />
Objekte <strong>zu</strong> reduzieren: Ein Zeugnis–ununterscheidbares Beweissystem und ein (wie es<br />
hier genannt wird) Generator Protokoll (GenProt). Zeugnis–ununterscheidbare Systeme<br />
wur<strong>de</strong>n in Abschnitt 3.5 beschrieben. Das Generator Protokoll wird später <strong>de</strong>finiert<br />
(Definition 7.5).<br />
Ein Zero–<strong>Knowledge</strong> Protokoll, welches mittels <strong>de</strong>r FLS Technik konstruiert wird,<br />
wird als FLS Protokoll bezeichnet. Protokoll 7.1 beschreibt ein generisches FLS Zero–<br />
<strong>Knowledge</strong> Protokoll. Um eine spezielle Variante davon ab<strong>zu</strong>leiten, müssen das Generator<br />
Protokoll, welches in <strong>de</strong>n Schritten P,V1.x genutzt wird, die Sprache Λ und das Zeugnis–ununterscheidbare<br />
System in <strong>de</strong>m Schritt P,V2.x spezifiziert wer<strong>de</strong>n.<br />
Protokoll 7.1 (Generisches FLS Zero–<strong>Knowledge</strong> Protokoll)<br />
Gemeinsame Eingabe:<br />
• 1 n : Sicherheitsparameter<br />
• x ∈ {0, 1} n : Behauptung x ∈ L, die bewiesen wer<strong>de</strong>n soll.<br />
Hilfseingabe <strong>de</strong>s Provers: z: Zeugnis dafür, dass x ∈ L gilt.<br />
Schritte P,V1.x: (Generator ProtokollGenProt) Prover und Verifier einigen<br />
sich auf ein Generator Protokoll (GenProt). Dann sei τ =<br />
transcript (P,V )(·). 29<br />
Schritte P,V2.x: (Zeugnis–ununterscheidbarer Beweis für x ∈ L o<strong>de</strong>r τ ∈ Λ)<br />
Der Prover beweist mit einem Zeugnis–ununterscheidbaren Argument<br />
<strong>de</strong>m Verifier, dass entwe<strong>de</strong>r x ∈ L o<strong>de</strong>r τ ∈ Λ gilt, wobei Λ eine feste<br />
Sprache ist, die Teil <strong>de</strong>r Protokollspezifikation ist. Der Verifier akzeptiert,<br />
wenn <strong>de</strong>r Beweis erfolgreich abgeschlossen wur<strong>de</strong>. Formal gilt, <strong>de</strong>r Prover<br />
beweist (x, τ) ∈ M, wobei die Sprache M wie folgt <strong>de</strong>finiert ist: (x, τ) ∈<br />
M genau dann, wenn x ∈ L o<strong>de</strong>r τ ∈ Λ.<br />
29 transcript bezeichnet das Kommunikationsprotokoll aus Definition 2.10, Seite 12.<br />
81
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Generator Protokoll<br />
Die folgen<strong>de</strong> Definition <strong>de</strong>s Generator Protokolls wird von <strong>de</strong>r beabsichtigten Anwendung<br />
bestimmt. Die Anfor<strong>de</strong>rungen an ein Generator Protokoll garantieren dabei, dass<br />
das Resultat ein Zero–<strong>Knowledge</strong> Proof o<strong>de</strong>r Zero–<strong>Knowledge</strong> Argument System ist,<br />
wenn es in die Basisversion von Protokoll 7.1 eingesetzt wird. Es wird hier nur ein uniformes<br />
Generator Protokoll <strong>de</strong>finiert, da in diesem Abschnitt ein Protokoll entwickelt<br />
wird, welches Zero–<strong>Knowledge</strong> nur gegen Verifier ist, <strong>de</strong>ssen Strategie in einer uniformen<br />
probabilistischen polynomiell–beschränkten Turing Maschine implementiert wer<strong>de</strong>n<br />
kann. Die formale Definition lautet:<br />
Definition 7.5 (Uniformes Generator Protokoll)<br />
Sei GenProt ein Protokoll für zwei Teilnehmer, die Prover (P) und Verifier (V) genannt<br />
wer<strong>de</strong>n. Sei Λ ⊆ {0, 1} ∗ eine beliebige Sprache aus Ntime(T (n)) für eine beliebige (polynomiell<br />
berechenbare) Funktion T : −→ (z.B. T (n) = n log log n o<strong>de</strong>r T (n) = n 3 ).<br />
GenProt heißt ein uniformes Generator Protokoll (in Be<strong>zu</strong>g auf die Sprache Λ), wenn<br />
es folgen<strong>de</strong> Bedingungen erfüllt:<br />
Korrektheit: (Diese Bedingung garantiert, dass das Protokoll, in welches GenProt eingefügt<br />
wird, ebenfalls korrekt ist.) Sei τ = transcript (P,V)(·) aus GenProt. Wenn <strong>de</strong>r<br />
Verifier <strong>de</strong>r festgelegten Vorgehensweise folgt, gilt unabhängig vom Verhalten <strong>de</strong>s<br />
Provers Pr[τ ∈ Λ] < µ(n) mit µ als vernachlässigbarer Funktion.<br />
Uniforme Simulation: (Diese Bedingung garantiert, dass das Protokoll, in welches GenProt<br />
eingefügt wird, Zero–<strong>Knowledge</strong> gegen uniforme Verifier ist.) Es existiert ein Simulator<br />
SGenProt, <strong>de</strong>r folgen<strong>de</strong>s erfüllt: Sei V ∗ ein beliebiger polynomiell–beschränkter<br />
Verifier, <strong>de</strong>r in weniger als 2n Bits beschrieben wer<strong>de</strong>n kann, wobei n <strong>de</strong>r Sicherheitsparameter<br />
ist. Dann läuft SGenProt bei Eingabe von <strong>de</strong>sc(V ∗ ) in polynomieller<br />
Zeit in Be<strong>zu</strong>g auf V ∗ und gibt folgen<strong>de</strong>s Tupel (v, σ) aus:<br />
1. v ist berechenbar ununterscheidbar von <strong>de</strong>r Sicht <strong>de</strong>s V ∗ bei einer Ausführung<br />
in GenProt mit P als Prover.<br />
2. Sei τ = transcript (P,V ∗ )(·) , welches in <strong>de</strong>r Sicht v enthalten ist. Dann ist τ ∈ Λ<br />
und σ ist ein Zeugnis dafür. Desweiteren muss die Zeit, in <strong>de</strong>r ” σ ist Zeugnis<br />
für τ“ verifiziert wer<strong>de</strong>n kann, polynomiell in Be<strong>zu</strong>g auf die Laufzeit von V ∗<br />
sein. 30<br />
Anmerkung: Die bei<strong>de</strong>n Anfor<strong>de</strong>rungen <strong>zu</strong>sammen implizieren, dass Λ eine harte<br />
Sprache ist, weil in einer realen Ausführung mit einem ehrlichen Verifier das Kommunikationsprotokoll<br />
τ fast nie in Λ ist, wohingegen in <strong>de</strong>r berechenbaren, ununterscheidbaren,<br />
simulierten Ausführung τ immer in Λ ist.<br />
30 Diese Anfor<strong>de</strong>rung ist wichtig, wenn Λ ∈ Ntime(T (·)) für eine super-polynomielle Funktion T (·)<br />
betrachtet wird.<br />
82
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Nun kann <strong>de</strong>r Hauptsatz bewiesen wer<strong>de</strong>n, <strong>de</strong>r für die FLS Technik benötigt wird.<br />
Satz 7.3<br />
Sei GenProt ein Generator Protokoll in Be<strong>zu</strong>g auf eine Ntime(t) Sprache Λ (wobei<br />
T : −→ eine polynomiell berechenbare Funktion ist). Sei ZuProt ein Zeugnis–ununterscheidbares<br />
Beweis o<strong>de</strong>r Argument System für N P ∪ Ntime(T ) Sprachen. Sei L<br />
eine N P Sprache und FLSProt das Argument für L, welches dadurch entsteht, wenn<br />
GenProt und ZuProt in die Konstruktion 7.1 eingefügt wer<strong>de</strong>n. Dann ist FLSProt<br />
ein uniformes Zero–<strong>Knowledge</strong> Argument für L.<br />
Anmerkung: Satz 7.3 ist absichtlich so spezifiziert wor<strong>de</strong>n, dass es möglich ist, in einem<br />
uniformen Fall sowohl Λ ∈ N P als auch Λ ∈ Ntime(T ) für einige super-polynomielle<br />
T (·), <strong>zu</strong> behan<strong>de</strong>ln. Im ersten Fall ist es ausreichend, ein standard Zeugnis–ununterscheidbares<br />
Beweissystem für N P wie in [FS90a] <strong>zu</strong> nehmen. Im zweiten Fall wird ein<br />
Zeugnis–ununterscheidbares Universelles Argument gemäß Abschnitt 7.2.5 benutzt.<br />
Beweisskizze:<br />
Hier wird <strong>de</strong>r Beweis von Satz 7.3 lediglich skizziert, da er vollständig von <strong>de</strong>m <strong>de</strong>s nichtuniformen<br />
(Satz 7.5) ersetzt wird. Um <strong>zu</strong> zeigen, dass FLSProt ein Zero–<strong>Knowledge</strong><br />
Argument ist, müssen die drei Eigenschaften Vollständigkeit, Korrektheit und Zero–<br />
<strong>Knowledge</strong> bewiesen wer<strong>de</strong>n.<br />
Vollständigkeit: Die Vollständigkeit folgt aus <strong>de</strong>r Tatsache, dass, falls die gemeinsame<br />
Eingabe x ∈ L ist, die Aussage (x ∈ L o<strong>de</strong>r τ ∈ Λ) wahr ist. Außer<strong>de</strong>m kann das<br />
Zeugnis z für x als ein Zeugnis für diese Aussage dienen.<br />
Korrektheit: Angenommen, dass x /∈ L gilt und dass τ das Kommunikationsprotokoll<br />
<strong>de</strong>r ersten Stufe (Schritt P,V1.x) von FLSProt bezeichnet. Bedingt durch die<br />
Korrektheitseigenschaft <strong>de</strong>s Generator Protokolls GenProt, ist mit sehr hoher Wahrscheinlichkeit<br />
τ /∈ Λ. Daher wird die kombinierte Aussage (x ∈ L o<strong>de</strong>r τ ∈ Λ) ebenfalls<br />
mit sehr hoher Wahrscheinlichkeit falsch sein und somit wird es <strong>de</strong>m Prover durch die<br />
Korrektheit <strong>de</strong>s Zeugnis–ununterscheidbaren Beweis/Argument Systems nicht gelingen,<br />
<strong>de</strong>n Verifier <strong>zu</strong> überzeugen.<br />
Uniformes Zero–<strong>Knowledge</strong>: Um <strong>zu</strong> zeigen, dass FLSProt gegenüber einem uniformen<br />
Verifier Zero–<strong>Knowledge</strong> ist, wird <strong>de</strong>r Simulator aus Protokoll 7.2 verwen<strong>de</strong>t. Er<br />
benutzt <strong>de</strong>n Simulator S GenProt aus <strong>de</strong>m Generator Protokoll GenProt, um sowohl eine<br />
Simulation v für die erste Stufe <strong>zu</strong>sammen mit einem Zeugnis σ <strong>zu</strong> erhalten als auch<br />
um mit <strong>de</strong>m Algorithmus <strong>de</strong>s ehrlichen Provers aus <strong>de</strong>m Zeugnis–ununterscheidbaren<br />
System ZuProt die wahre Aussage (x ∈ L o<strong>de</strong>r τ ∈ Λ) <strong>zu</strong> beweisen. Der Simulator<br />
benutzt das Zeugnis σ als Hilfseingabe für <strong>de</strong>n Prover Algorithmus von ZuProt. Zusammen<br />
mit <strong>de</strong>r Eigenschaft <strong>de</strong>s effizienten Provers sichert die Vollständigkeit von ZuProt,<br />
dass <strong>de</strong>r Simulator in strenger probabilistischer Polynomialzeit läuft. Die Zeugnis–ununterscheidbarkeit<br />
von ZuProt garantiert, dass die Ausgabe <strong>de</strong>s Simulators tatsächlich<br />
83
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
berechenbar ununterscheidbar von <strong>de</strong>r Sicht <strong>de</strong>s Verifiers in <strong>de</strong>r realen Kommunikation<br />
ist. <br />
Protokoll 7.2 (Simulator für FLSProt)<br />
Eingabe:<br />
• 1 n : Sicherheitsparameter<br />
• x ∈ {0, 1} n : Behauptung (simulierter Beweis für ” x ∈ L“)<br />
• <strong>de</strong>sc(V ∗ ): Beschreibung <strong>de</strong>r Turing Maschine <strong>de</strong>s Verifiers<br />
Dabei bezeichne V ∗<br />
x <strong>de</strong>n Verifier V ∗ mit fest eincodiertem x. Da V ∗ eine Turing<br />
Maschine ist, kann angenommen wer<strong>de</strong>n, dass die Beschreibung <strong>de</strong>sc(V ∗<br />
x)<br />
von V ∗<br />
x höchstens 2n Bits lang ist.<br />
Simulierte Schritte P,V1.x: (Simuliertes Generator Protokoll) Sei (v, σ) =<br />
S GenProt(V ∗<br />
x) mit S GenProt als Simulator für das Generator Protokoll<br />
GenProt. Mit V ∗<br />
xv wird <strong>de</strong>r restliche Verifier V ∗<br />
x mit fest eincodiertem<br />
v bezeichnet.<br />
Simulierte Schritte P,V2.x: (Ehrlicher Zeugnis–ununterscheidbarer Beweis für<br />
(x ∈ L o<strong>de</strong>r τ ∈ Λ)) Ausführung <strong>de</strong>s Algorithmus <strong>de</strong>s ehrlichen Provers<br />
für das Zeugnis–ununterscheidbare System ZuProt, um die Aussage<br />
(x ∈ L o<strong>de</strong>r τ ∈ Λ) mit einem Zeugnis σ <strong>zu</strong> beweisen. V ∗<br />
xv wird als die<br />
Strategie <strong>de</strong>s Verifiers benutzt. Dann bezeichne v ′ die Sicht von V ∗<br />
xv in<br />
dieser Interaktion.<br />
Ausgabe: Das Tupel (v, v ′ ) mit <strong>de</strong>n bei<strong>de</strong>n Sichten dieser zwei Stufen.<br />
7.3.2 Ein uniformes Generator Protokoll<br />
Nach<strong>de</strong>m nun die FLS Technik beschrieben wur<strong>de</strong>, müssen die bei<strong>de</strong>n Komponenten<br />
Zeugnis–ununterscheidbares System und Generator Protokoll spezifiziert wer<strong>de</strong>n. Da das<br />
Protokoll eine konstante Run<strong>de</strong>nzahl aufweisen und vom Arthur-Merlin Typ sein soll,<br />
müssen allerdings bei<strong>de</strong> Komponenten konstant und Arthur-Merlin sein. Für das Zeugnis–ununterscheidbare<br />
System wird das in Abschnit 7.2.5 vorgestellte Zeugnis–ununterscheidbare<br />
Universelle Argument genutzt. Nach Satz 7.2 existiert unter <strong>de</strong>n gefor<strong>de</strong>rten<br />
Vorausset<strong>zu</strong>ngen solch ein System für Ntime(n log log n ). Daher verbleibt als Aufgabe, ein<br />
Generator Protokoll für beliebige Sprachen Λ ∈ Ntime(n log log n ) mit konstanter Run<strong>de</strong>nzahl<br />
und Arthur-Merlin Eigenschaft <strong>zu</strong> konstruieren.<br />
Protokoll 7.3 zeigt das gefor<strong>de</strong>rte uniforme Generator Protokoll. Es besteht aus zwei<br />
Run<strong>de</strong>n, wobei die einzige Nachricht <strong>de</strong>s Verifiers eine Zufallszeichenkette ist.<br />
Protokoll 7.3 (Uniformes Generator Protokoll)<br />
Gemeinsame Eingabe:<br />
1 n : Sicherheitsparameter<br />
84
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Schritt P1: (Erzeugung eines wahllosen Commitments) Der Prover berechnet<br />
w ∈R Com(0 3n ) 31 und sen<strong>de</strong>t w an <strong>de</strong>n Verifier.<br />
Schritt V2: (Versen<strong>de</strong>n einer Zufallszeichenkette) Der Verifier wählt eine Zeichenkette<br />
r ∈R {0, 1} n und sen<strong>de</strong>t diese.<br />
Das Kommunikationsprotokoll diese uniformen Generator Protokoll ist das<br />
Tupel τ = (w, r).<br />
Es erfolgt jetzt die Spezifikation <strong>de</strong>r Sprache Λ. Es sei nochmal darauf hingewiesen,<br />
dass für eine Zeichenkette y die Funktion Com −1 (y) das ein<strong>de</strong>utige x <strong>de</strong>rart bezeichnet,<br />
für dass das y das Commitment für x o<strong>de</strong>r für 0 3n ist, falls es kein entsprechen<strong>de</strong>s x gibt.<br />
Das heißt x = Com −1 (y), falls es ein s gibt, so dass Com(x, s) = y gilt. Die Entscheidung,<br />
ob x = Com −1 (y) gilt, erfolgt dabei in N P.<br />
Λ wird nun wie folgt <strong>de</strong>finiert: Seien τ = (w, r) und Π = Com −1 (w). Dann ist τ ∈ Λ,<br />
wenn die Turing Maschine, die durch Π beschrieben wird, und w als Eingabe erhält, ein<br />
log log |r|<br />
r innerhalb von |r| 5 Schritten ausgibt. 32<br />
Es ist offensichtlich, dass Λ ∈ Ntime(n log log n ) gilt. Nicht<strong>de</strong>terministisch ist es mög-<br />
lich, Π = Com −1 (w) <strong>zu</strong> erhalten, womit dann genug Zeit vorhan<strong>de</strong>n ist, die Turing<br />
log log n<br />
Maschine, die durch Π beschrieben wird, in n 5 Schritten <strong>zu</strong> simulieren.<br />
Damit kann nun <strong>de</strong>r folgen<strong>de</strong> Satz beschrieben wer<strong>de</strong>n.<br />
Satz 7.4<br />
Protokoll 7.3 ist ein uniformes Generator Protokoll (gemäß Definition 7.5).<br />
Beweis:<br />
Um Satz 7.4 <strong>zu</strong> beweisen, müssen die Korrektheitseigenschaft und die uniforme Simulierbarkeit<br />
<strong>de</strong>s Protokolls 7.3 bewiesen wer<strong>de</strong>n.<br />
Lemma 7.1<br />
Sei P ∗ ein beliebiger (möglicherweise täuschen<strong>de</strong>r) Prover für das Protokoll 7.3 und<br />
bezeichne τ das Kommunikationsprotokoll von P ∗ ’s Ausführung mit einem ehrlichen<br />
Verifier. Dann ist Pr[τ ∈ Λ] ≤ 2 −n .<br />
Beweis:<br />
Für je<strong>de</strong> erste Nachricht w <strong>de</strong>s Provers sei Πw = Com −1 (w) und sei f(w) die Ausgabe<br />
<strong>de</strong>r von Πw beschriebenen Turing Maschine bei Eingabe von w nach n<br />
log log n<br />
5 Schritten,<br />
wenn die Maschine hält, und 0 n sonst. Für je<strong>de</strong> Zeichenkette w beträgt die Wahrscheinlichkeit,<br />
dass ein <strong>zu</strong>fälliges r ∈R {0, 1} n equivalent <strong>zu</strong> f(w) ist, höchstens 2 −n . Daher<br />
31 Com bezeichnet das statistisch ein<strong>de</strong>utige Bit–Commitment–Scheme aus Definition 7.1, Seite 75<br />
32 Es wird nochmals darauf hingewiesen, dass |r| log log |r|<br />
5 willkürlich gewählt wur<strong>de</strong>. Es ist lediglich<br />
sicher<strong>zu</strong>stellen, dass Λ in Ntime(n log log n ) liegt.<br />
85
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
ist unabhängig von <strong>de</strong>r ersten Nachricht <strong>de</strong>s Provers die Wahrscheinlichkeit, dass τ in Λ<br />
liegt, höchstens 2 −n . <br />
Lemma 7.2<br />
Es existiert ein Simulator SGenProt für Protokoll 7.3 für je<strong>de</strong>n probabilistischen polynomiell–beschränkten<br />
Verifier V ∗ , <strong>de</strong>ssen Beschreibung höchstens 2n Bits lang ist, mit <strong>de</strong>r<br />
Ausgabe<br />
SGenProt(V ∗ ) = (v, σ)<br />
Dabei ist v berechenbar ununterscheidbar von viewV ∗(·) und σ ist ein Zeugnis dafür, dass<br />
das durch v bedingte Kommunikationsprotokoll τ in Λ liegt.<br />
Beweis:<br />
Der Algorithmus 7.4 ist ein Simulator für das Protokoll 7.3.<br />
Protokoll 7.4<br />
Eingabe:<br />
• 1 n : Sicherheitsparameter<br />
• <strong>de</strong>sc(V ∗ ): Beschreibung einer probabilistischen polynomiellbeschränkten<br />
Turing Maschine. Die Länge von V ∗ ist höchstens<br />
2n.<br />
• (Zufallserzeugung für V ∗ ): Bezeichne m die Anzahl <strong>de</strong>r Zufallbits,<br />
die V ∗ nutzt, und sei PRG : {0, 1} n<br />
2 → {0, 1} m ein Pseudo Zufallsgenerator.<br />
Dann wird mit einem <strong>zu</strong>fällig gewählten u ∈R {0, 1} n<br />
2 ein<br />
Zufallsstring s = PRG(u) berechnet.<br />
Simulierter Schritt P1: (Commitment für V ∗ ’s Programm) Bezeichne Π <strong>de</strong>n<br />
Algorithmus für die nächste Nachricht von V ∗ mit fest eincodiertem s<br />
als Zufall Π = <strong>de</strong>sc(V ∗<br />
s ). Es ist dabei <strong>zu</strong> beachten, dass |<strong>de</strong>sc(Π)| < 3n<br />
Bits gilt (<strong>de</strong>sc(V ∗ ), <strong>de</strong>sc(PRG) und die Saat u). Der Simulator berechnet<br />
w ∈R Com(Π) und sen<strong>de</strong>t“ w an <strong>de</strong>n simulierten Schritt V2.<br />
”<br />
Simulierter Schritt V2: (Berechnung <strong>de</strong>r Antwort von V ∗ ) Der Simulator berechnet<br />
die Antwort auf w von V ∗ mit <strong>de</strong>r Zufallszeichenkette s mit<br />
r = Π(w).<br />
Ausgabe: Das Tupel (v, σ) mit v = (s, z) und σ als Zeugnis für (w, r) ∈ Λ (σ<br />
enthält das Programm Π = V ∗<br />
s und die Münzwürfe, die in <strong>de</strong>r Berechnung<br />
<strong>de</strong>s Commitments w benutzt wur<strong>de</strong>n).<br />
Die bei<strong>de</strong>n Eigenschaften, die von (v, σ) vorausgesetzt wer<strong>de</strong>n, sind:<br />
1. v ist berechenbar ununterscheidbar von viewV ∗(·) in <strong>de</strong>r realen Ausführung. Das<br />
ergibt sich aus Folgen<strong>de</strong>m:<br />
• PRG ist ein Pseudo Zufallsgenerator und <strong>de</strong>ssen Ausgabe s somit berechenbar<br />
ununterscheidbar von V ∗ ’s Zufallsband aus einer realen Ausführung.<br />
86
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
• Com ist ein Commitment–Scheme und damit ist Com(Π) ununterscheidbar<br />
von Com(0 3n ).<br />
2. Für das v entsprechen<strong>de</strong> Kommunikationsprotokoll τ = (w, r = V ∗<br />
s (w)) gilt folgen<strong>de</strong>s.<br />
• τ ∈ Λ, da w = Com(Π) mit <strong>de</strong>r Eigenschaft, dass Π bei Eingabe von w<br />
log log n<br />
innerhalb polynomiell vieler (und damit weniger als n 5 ) Schritten ein r<br />
ausgibt.<br />
• σ ist ein Zeugnis für τ ∈ Λ. σ enthält Π und die Münzwürfe vom Commitment<br />
w und ist daher dafür ein Zeugnis. Zu beachten ist dabei, dass die Zeugniseigenschaft<br />
von σ für τ in polynomieller Zeit in Be<strong>zu</strong>g auf die Laufzeit von V ∗<br />
verifiziert wer<strong>de</strong>n kann.<br />
Der Algorithmus 7.4 ist ein nicht Black-Box Simulator, <strong>de</strong>r die Beschreibung <strong>de</strong>s Verifier<br />
als Eingabe bekommt und diese an<strong>de</strong>rs benutzt, als eine simple Black-Box Funktion<br />
o<strong>de</strong>r ein Orakel. Weiterhin ist wichtig <strong>zu</strong> beachten, dass <strong>de</strong>r Algorithmus in probabilistischer<br />
streng polynomiell–beschränkter Zeit läuft. <br />
Aus Lemma 7.1 und Lemma 7.2 folgt die Korrektheit von Satz 7.4.<br />
Als Resultat folgt, dass mit <strong>de</strong>m Generator Protokoll von Protkoll 7.3 und <strong>de</strong>m Universellen<br />
Argument System für Ntime(n log log n ) aus Abschnitt 7.2.5, bei<strong>de</strong>s eingefügt in<br />
das generische FLS Protokoll 7.1, ein Zero–<strong>Knowledge</strong> Argument für N P <strong>zu</strong>r Verfügung<br />
steht. Es hat dabei eine konstante Run<strong>de</strong>nzahl und ist vom Arthur-Merlin Typ. Der Simulator<br />
für das Zero–<strong>Knowledge</strong> Argument ist ein nicht Black-Box Simulatur und läuft<br />
dabei in probabilistischer strenger Polynomialzeit.<br />
Tatsächlich ist das Protokoll nicht nur Zero–<strong>Knowledge</strong> gegen voll uniforme Verifier<br />
son<strong>de</strong>rn auch gegen Verifier, die beschränkt nicht uniform sind. Das sind Verifier, die in<br />
Bits beschrieben wer<strong>de</strong>n können, wobei n <strong>de</strong>r Sicherheitsparamter ist.33<br />
n<br />
2<br />
Trotz<strong>de</strong>m ist ein uniformes und beschränkt nicht-uniformes Zero–<strong>Knowledge</strong> Protokoll<br />
nicht ausreichend. Zum Beispiel ist nicht bekannt, wie eine sequenzielle Komposition<br />
für uniforme o<strong>de</strong>r auch beschränkt nicht-uniforme Zero–<strong>Knowledge</strong> Argumente bewiesen<br />
wer<strong>de</strong>n können [GK96b]. Im nächsten Abschnitt wird daher gezeigt, wie die bisherige<br />
Konstruktion modifiziert wer<strong>de</strong>n kann, um ein nicht-uniformes Zero–<strong>Knowledge</strong> Argument<br />
für N P <strong>zu</strong> erlangen.<br />
33 Der Wert n<br />
2 ist leicht willkürlich. Durch das Skalieren“ <strong>de</strong>s Sicherheitsparameters für je<strong>de</strong>s Polynom<br />
”<br />
p(·) erhält man ein Argument System, welches gegen Verifier sicher ist, die in höchstens p(n) Bits<br />
beschrieben wer<strong>de</strong>n können.<br />
87
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
7.4 Zero–<strong>Knowledge</strong> Argument für nicht-uniforme Verifier<br />
In diesem Abschnitt wird ein nicht-uniformes Zero–<strong>Knowledge</strong> Argument System konstruiert,<br />
dass auf <strong>de</strong>n Eigenschaften vom vorherigen Abschnitt aufbaut. Es erfüllt die<br />
Eigenschaften 1 – 2 und 4 – 5, die in <strong>de</strong>r Definition 7.1 aufgeführt sind. Lediglich die Eigenschaft<br />
3 (beschränkt simultan Zero–<strong>Knowledge</strong>) wird noch nicht erfüllt wer<strong>de</strong>n. Eine<br />
Modifikation, die dann auch noch die letzte Eigenschaft aufweist, wird im anschließen<strong>de</strong>n<br />
Abschnitt gezeigt.<br />
7.4.1 FLS’ Protokoll<br />
Genau wie das uniforme Protokoll aus Abschnitt 7.3 nutzt das nicht-uniforme die FLS<br />
Technik. Es muss jedoch eine leichte Abschwächung <strong>de</strong>r Korrektheitsbedingung <strong>de</strong>s Generator<br />
Protokolls aus Definition 7.5 vorgenommen wer<strong>de</strong>n. Es wird die Möglichkeit eingeräumt,<br />
dass das Kommunikationsprotokoll τ nicht nur mit vernachlässigbarer Wahrscheinlichkeit<br />
aus Λ stammen kann. Es wird jedoch auch in diesem Fall unmöglich sein,<br />
ein Zeugnis dafür vor<strong>zu</strong>zeigen, dass τ aus Λ stammt. Ein <strong>de</strong>rartiges Generator Protokoll<br />
ist hinreichend, um in die Konstruktion 7.1 eingefügt <strong>zu</strong> wer<strong>de</strong>n, wenn in <strong>de</strong>r zweiten<br />
Stufe (Schritte P,V2.x) statt eines Beweises <strong>de</strong>r bloßen Mitglie<strong>de</strong>igenschaft ein Zeugnis–ununterscheidbarer<br />
Beweis (o<strong>de</strong>r Argument) <strong>de</strong>r exakten Kenntnis (engl. Proof /<br />
Argument of <strong>Knowledge</strong>) 34 benutzt wird. Im Gegensatz da<strong>zu</strong> wird die Simulationseigenschaft<br />
<strong>de</strong>r Definition 7.5 verschärft und verlangt <strong>zu</strong>sätzlich die Simulierbarkeit für<br />
nicht-uniforme Verifier.<br />
Ein Protokoll, welches das nicht-uniforme Generator Protokoll <strong>zu</strong>sammen mit einem<br />
Zeugnis–ununterscheidbaren Argument of <strong>Knowledge</strong> auf diese Weise nutzt, wird ein<br />
FLS’ Protokoll genannt. Zur Vollständigkeit wird die Beschreibung <strong>de</strong>s FLS’ Protokolls<br />
nachfolgend nochmals <strong>zu</strong>sammenhängend aufgezeigt.<br />
Protokoll 7.5 (Generisches FLS’ Zero–<strong>Knowledge</strong> Protokoll)<br />
Gemeinsame Eingabe:<br />
• 1 n : Sicherheitsparameter<br />
• x ∈ {0, 1} n : Behauptung x ∈ L, die bewiesen wer<strong>de</strong>n soll.<br />
Hilfseingabe <strong>de</strong>s Provers: z: Zeugnis dafür, dass x ∈ L gilt.<br />
Schritte P,V1.x: (Generator ProtokollGenProt’) Prover und Verifier einigen<br />
sich auf ein nicht-uniformes Generator Protokoll (GenProt’). Dann sei<br />
τ = transcript (P,V )(·).<br />
Schritte P,V2.x: (Zeugnis–ununterscheidbares Argument of <strong>Knowledge</strong>für x ∈<br />
L o<strong>de</strong>r τ ∈ Λ) Der Prover beweist mit einem Zeugnis–ununterscheidbaren<br />
34 Zur Beschreibung von Argument of <strong>Knowledge</strong> siehe Abschnitt 7.2.3 auf Seite 76.<br />
88
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Argument of <strong>Knowledge</strong> <strong>de</strong>m Verifier, dass entwe<strong>de</strong>r x ∈ L o<strong>de</strong>r τ ∈ Λ<br />
gilt, wobei Λ eine feste Sprache ist, die Teil <strong>de</strong>r Protokollspezifikation<br />
ist. Der Verifier akzeptiert, wenn <strong>de</strong>r Beweis erfolgreich abgeschlossen<br />
wur<strong>de</strong>. Formal gilt, <strong>de</strong>r Prover beweist (x, τ) ∈ M, wobei die Sprache M<br />
wie folgt <strong>de</strong>finiert ist: (x, τ) ∈ M genau dann, wenn x ∈ L o<strong>de</strong>r τ ∈ Λ.<br />
Die formale Definition <strong>de</strong>s nicht-uniformen Generator Protokolls sieht wie folgt aus:<br />
Definition 7.6 (Nicht-Uniformes Generator Protokoll)<br />
Sei GenProt’ ein Protokoll mit einem Prover und einem Verifier. Sei Λ ⊆ {0, 1} ∗ eine<br />
beliebige Sprache aus Ntime(T (n)) für beliebige (polynomiell berechenbare) Funktionen<br />
T : → . GenProt’ heißt ein Nicht-Uniformes Generator Protokoll (in Be<strong>zu</strong>g<br />
auf die Sprache Λ), wenn es folgen<strong>de</strong> zwei Bedingungen erfüllt:<br />
Berechenbar Korrekt: Für je<strong>de</strong>n (möglicherweise täuschen<strong>de</strong>n) Prover P ∗ mit <strong>de</strong>r Größe<br />
von T (n) O(1) gilt: Sei τ = transcript (P ∗ ,V)(·) von GenProt’. Dann ist die Wahrscheinlichkeit<br />
vernachlässigbar klein, dass P ∗ am En<strong>de</strong> <strong>de</strong>r Interaktion ein Zeugnis<br />
τ ∈ Λ erfolgreich ausgeben kann.<br />
Nicht-uniforme Simulation: Es existiert ein probabilistischer polynomiell–beschränkter<br />
Simulator S GenProt ′, <strong>de</strong>r folgen<strong>de</strong>s erfüllt:<br />
Sei V ∗ ein polynomiell großer Verifer. Dann gibt S GenProt ′ bei Eingabe von <strong>de</strong>sc(V ∗ )<br />
ein Tupel (v, σ) mit folgen<strong>de</strong>n Eigenschaften aus:<br />
1. v ist berechenbar ununterscheidbar von viewV ∗(·) bei einer Ausführung von<br />
GenProt’ mit <strong>de</strong>m beschriebenen Algorithmus <strong>de</strong>s Provers.<br />
2. Bezeichne τ das Kommunikationsprotokoll, welches in <strong>de</strong>r Sicht v enthalten<br />
ist. Dann ist τ ∈ Λ und σ ein Zeugnis dafür. Desweiteren muss die Zeit, in<br />
<strong>de</strong>r ” σ ist Zeugnis für τ“ verifiziert wer<strong>de</strong>n kann, polynomiell in Be<strong>zu</strong>g auf die<br />
Laufzeit von V ∗ sein.<br />
Anmerkungen: Das Erfor<strong>de</strong>rnis <strong>de</strong>r berechenbaren Korrektheit bezieht sich auf<br />
T (n) O(1) große Wi<strong>de</strong>rsacher statt auf polynomiell große. Falls Λ in Ntime(T (n)) liegt<br />
kann es bei einer super-polynomiellen Funktion T (·) sein, dass es super-polynomielle<br />
Schritte benötigt, nur um ein Zeugnis dafür nie<strong>de</strong>r<strong>zu</strong>schreiben.<br />
Weiterhin sei darauf hingewiesen, dass im Gegensatz <strong>zu</strong>r Definition 7.5 in dieser Definition<br />
nicht vorausgesetzt wird, dass das Entscheidungsproblem für Λ hart ist. Lediglich<br />
das Suchproblem in Λ, ein Zeugnis <strong>zu</strong> fin<strong>de</strong>n, muss hart sein.<br />
Hier nun <strong>de</strong>r Satz und Beweis über das nicht-uniforme Analogon <strong>zu</strong> Satz 7.3:<br />
89
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Satz 7.5<br />
Sei GenProt’ ein nicht-uniformes Generator Protokoll in Be<strong>zu</strong>g auf eine Ntime(t)<br />
Sprache Λ (wobei T : −→ eine polynomiell berechenbare Funktion ist). Sei ZuProt<br />
ein Zeugnis–ununterscheidbares Argument System für N P ∪ Ntime(T ) Sprachen. Sei L<br />
eine N P Sprache und FLSProt’ das Argument für L, welches dadurch entsteht, wenn<br />
GenProt’ und ZuProt in das Protokoll 7.5 eingefügt wer<strong>de</strong>n. Dann ist FLSProt’<br />
ein nicht-uniformes Zero–<strong>Knowledge</strong> Argument für L.<br />
Beweis:<br />
Der Beweis von Satz 7.5 ist ähnlichem <strong>de</strong>m Beweis von Satz 7.3, <strong>de</strong>r in Abschnitt 7.3.1<br />
skizziert wur<strong>de</strong>. Um <strong>zu</strong> zeigen, dass FLSProt’ ein Zero–<strong>Knowledge</strong> Argument ist, müssen<br />
die drei Eigenschaften Vollständigkeit, Korrektheit und Zero–<strong>Knowledge</strong> bewiesen<br />
wer<strong>de</strong>n. Davon wird <strong>zu</strong>erst die Korrektheit bewiesen, da in diesem Beweis <strong>de</strong>r größte<br />
Unterschied <strong>zu</strong>m Beweis von Satz 7.3 liegt.<br />
Korrektheit: Es wird ein Wi<strong>de</strong>rspruchsbeweis geführt. Sei P FLSProt′<br />
ein polynomiell<br />
großer Prover für FLSProt’. Für <strong>de</strong>n Wi<strong>de</strong>rspruch wird angenommen, dass die<br />
Ausführung von P FLSProt′<br />
und <strong>de</strong>m ehrlichen Verifier für beliebige x /∈ L mit einer nicht<br />
vernachlässigbaren Wahrscheinlichkeit von ε <strong>zu</strong> einem akzeptieren<strong>de</strong>n Zustand führt.<br />
P FLSProt′<br />
wird genutzt, um einen täuschen<strong>de</strong>n Prover P GenProt′<br />
<strong>zu</strong> konstruieren, <strong>de</strong>r <strong>de</strong>r<br />
berechenbaren Korrektheit <strong>de</strong>s Generator Protokolls GenProt’ wi<strong>de</strong>rspricht.<br />
Der Prover P GenProt′<br />
arbeitet wie folgt: Bei <strong>de</strong>r Interaktion mit <strong>de</strong>m Verifier <strong>de</strong>s Protokolls<br />
GenProt’ nutzt <strong>de</strong>r Prover P GenProt′<br />
die Strategie <strong>de</strong>s Provers P FLSProt′<br />
in <strong>de</strong>r<br />
ersten Stufe von FLSProt’ bei Eingabe von x. Bezeichne τ das Kommunikationsprotokoll<br />
und v die Sicht <strong>de</strong>s Provers dieser Interaktion. Nach<strong>de</strong>m die Interaktion been<strong>de</strong>t<br />
ist, wird <strong>de</strong>r Prover P GenProt′<br />
<strong>de</strong>n restlichen Teil <strong>de</strong>s Provers P FLSProt′<br />
mit <strong>de</strong>m Zustand<br />
v ausführen. Dieser zweite, restliche Teil <strong>de</strong>s Provers wird als P ZuProt bezeichnet,<br />
da er die Strategie <strong>de</strong>r zweiten Stufe von FLSProt’, <strong>de</strong>r Zeugnis–ununterscheidbaren<br />
Beweisstufe, spezifiziert. Der Prover P GenProt′<br />
wen<strong>de</strong>t dabei <strong>de</strong>n Extraktor <strong>de</strong>s Zeugnis–<br />
ununterscheidbaren Systems für P ZuProt an. Dieses kostet T (n) O(1) Schritte. Wenn die<br />
Extraktion erfolgreich ist, erhält P GenProt′<br />
ein Zeugnis für die Behauptung x ∈ L o<strong>de</strong>r<br />
”<br />
τ ∈ Λ“. Da x /∈ L angenommen wur<strong>de</strong>, be<strong>de</strong>utet das, dass ein Zeugnis für τ ∈ Λ erlangt<br />
wur<strong>de</strong>.<br />
Um <strong>de</strong>n Wi<strong>de</strong>rspruchsbeweis <strong>zu</strong>r berechenbaren Korrektheit von GenProt’ <strong>zu</strong> führen,<br />
reicht es daher aus <strong>zu</strong> zeigen, dass die Ausführung mit nicht-vernachlässigbarer<br />
Wahrscheinlichkeit erfolgreich ist. Wenn die Wahrscheinlichkeit über das ganze Protokoll<br />
einer erfolgreichen Ausführung von P FLSProt′<br />
mit einem ehrlichen Verifier ε ist,<br />
<strong>de</strong>r Ausführungen <strong>de</strong>r ersten Stufe, dass es eine ε<br />
2 Wahr-<br />
dann gilt für min<strong>de</strong>stens ε<br />
2<br />
scheinlichkeit dafür gibt, die zweite Stufe erfolgreich <strong>zu</strong> been<strong>de</strong>n. Das impliziert mit<br />
einer Wahrscheinlichkeit von ε<br />
2 , dass es <strong>de</strong>m Prover PZuProt mit einer Wahrscheinlichkeit<br />
von ε<br />
2 gelingt, <strong>de</strong>n Verifier von x ∈ L o<strong>de</strong>r τ ∈ Λ“ <strong>zu</strong> überzeugen. Damit existiert<br />
”<br />
aber eine nicht-vernachlässigbare Wahrscheinlichkeit einer erfolgreichen Extraktion, was<br />
90
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
ein Wi<strong>de</strong>rspruch <strong>zu</strong>r Definition darstellt.<br />
Vollständigkeit: Die gemeinsame Eingabe seien x und ein Zeugnis z für x ∈ L. Der<br />
Algorithmus <strong>de</strong>s ehrliche Provers in FLSProt’ ist <strong>zu</strong>erst <strong>de</strong>r Algorithmus <strong>de</strong>s ehrlichen<br />
Provers aus GenProt’ und anschließend <strong>de</strong>r Algorithmus <strong>de</strong>s ehrlichen Provers aus <strong>de</strong>m<br />
Zeugnis–ununterscheidbaren System, um mit <strong>de</strong>m Zeugnis z die Behauptung ” x ∈ L o<strong>de</strong>r<br />
τ ∈ Λ“ <strong>zu</strong> beweisen. Da das Zeugnis–ununterscheidbare System bei effizienten Provern<br />
die Vollständigkeit garantiert, wird auch FLSProt’ nur polynomielle Zeit beanspruchen<br />
(wenn Λ ∈ N P gilt).<br />
Zero–<strong>Knowledge</strong>: Algorithmus 7.6 ist ein Simulator für das Protokoll GenProt’.<br />
Das Verfahren entspricht <strong>de</strong>m Simulator im Beweis <strong>zu</strong>m Satz 7.3. Der Simulator nutzt<br />
<strong>de</strong>n Simulator S GenProt aus <strong>de</strong>m Generator Protokoll GenProt’, um <strong>zu</strong>erst eine Simulation<br />
v für die erste Stufe <strong>zu</strong>sammen mit einem Zeugnis σ <strong>zu</strong> erhalten, welches mit<br />
<strong>de</strong>m Kommunikationsprotokoll in v vereinbar ist. Anschließend nutzt er <strong>de</strong>n Algorithmus<br />
<strong>de</strong>s ehrlichen Provers aus <strong>de</strong>m Zeugnis–ununterscheidbaren System ZuProt, um<br />
die wahre Behauptung ” x ∈ L o<strong>de</strong>r τ ∈ Λ“ <strong>zu</strong> beweisen. Dabei nutzt es das Zeugnis σ<br />
als Hilfseingabe für <strong>de</strong>n Proveralgorithmus von ZuProt.<br />
Protokoll 7.6 (Simulator für FLSProt’)<br />
Eingabe:<br />
• 1 n : Sicherheitsparameter<br />
• x ∈ {0, 1} n : Behauptung (simulierter Beweis für ” x ∈ L“)<br />
• <strong>de</strong>sc(V ∗ ): Beschreibung <strong>de</strong>s polynomiell großen Verifiers<br />
Dabei bezeichne V ∗<br />
x <strong>de</strong>n Verifier V ∗ mit fest eincodiertem x.<br />
Simulierte Schritte P,V1.x: (Simuliertes Generator Protokoll) Sei (v, σ) =<br />
S GenProt ′(V ∗<br />
x) mit S GenProt ′ als Simulator für das Generator Protokoll<br />
GenProt’. Mit V ∗<br />
xv wird <strong>de</strong>r restliche Verifier V ∗<br />
x mit fest eincodiertem<br />
v bezeichnet.<br />
Simulierte Schritte P,V2.x: (Ehrlicher Zeugnis–ununterscheidbarer Beweis für<br />
(x ∈ L o<strong>de</strong>r τ ∈ Λ)) Ausführung <strong>de</strong>s Algorithmus <strong>de</strong>s ehrlichen Provers<br />
für das Zeugnis–ununterscheidbare System ZuProt, um die Aussage<br />
(x ∈ L o<strong>de</strong>r τ ∈ Λ) mit einem Zeugnis σ <strong>zu</strong> beweisen. V ∗<br />
xv wird als die<br />
Strategie <strong>de</strong>s Verifiers benutzt. Dann bezeichne v ′ die Sicht von V ∗<br />
xv in<br />
dieser Interaktion.<br />
Ausgabe: Das Tupel (v, v ′ ) mit <strong>de</strong>n bei<strong>de</strong>n Sichten dieser zwei Stufen.<br />
Damit muss nur noch das folgen<strong>de</strong> Lemma bewiesen wer<strong>de</strong>n:<br />
91
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Lemma 7.3<br />
Seien V ∗ ein polynomiell großer Verifier für FLSProt’, x ∈ L und (VR, V ′ R ) die Zufallsvariable<br />
<strong>de</strong>r Sicht von V ∗ bei <strong>de</strong>r Kommunikation mit einem ehrlichen Prover und<br />
<strong>de</strong>r Eingabe von x (wobei R für real im Gegensatz <strong>zu</strong>r simulierten Ausführung steht,<br />
VR die Sicht in <strong>de</strong>r ersten Stufe und V ′ R die Sicht in <strong>de</strong>r zweiten Stufe ist.) Sei (VS, V ′<br />
S )<br />
die Zufallsvariable von <strong>de</strong>r Ausgabe <strong>de</strong>s Protokolls 7.6 bei Eingabe von x. Dann sind<br />
) berechenbar ununterscheidbar.<br />
(VR, V ′ R ) und (VS, V ′<br />
S<br />
Beweis:<br />
Der Beweis folgt einem Mischargument (engl. hybrid argument). Es wird bewiesen, dass<br />
bei<strong>de</strong> Verteilungen von <strong>de</strong>r gemischten Verteilung (VS, V ′ R ) berechenbar ununterscheidbar<br />
sind, wobei VS die Simulation <strong>de</strong>r ersten Stufe und V ′ R die reale Ausführung <strong>de</strong>r zweiten<br />
Stufe repräsentiert. Das heißt, (VS, V ′ R ) ist die Ausgabe eines Hybridsimulators“, <strong>de</strong>r<br />
”<br />
<strong>de</strong>n Simulator von GenProt’ in <strong>de</strong>r ersten Stufe aber das Zeugnis für x (anstatt <strong>de</strong>s<br />
Zeugnisses für τ) in <strong>de</strong>r zweiten Stufe nutzt.<br />
Die Verteilung (VS, V ′ R ) ist aufgrund <strong>de</strong>r Zeugnis–ununterscheidbaren Eigenschaft<br />
von ZuProt von (VS, V ′<br />
S ) berechenbar ununterscheidbar. Falls es einen Algorithmus<br />
U gibt, <strong>de</strong>r zwischen diesen bei<strong>de</strong>n Verteilungen mit einer Wahrscheinlichkeit von ε<br />
unterschei<strong>de</strong>n kann, muss es insbeson<strong>de</strong>re eine einzelne Sicht v = VS von <strong>de</strong>r ersten Stufe<br />
mit <strong>de</strong>r Wahrscheinlichkeit ε geben, dass U zwischen (VS, V ′ R ) und (VS, V ′<br />
S ) unterschei<strong>de</strong>n<br />
könnte. Seien τ das Kommunikationsprotokoll, das in v enthalten ist, und σ das Zeugnis<br />
für τ, wie es vom Simulator geliefert wird. Seien U ∗<br />
v <strong>de</strong>r Unterscheidungsschaltkreis<br />
U mit fest eincodiertem v und V ∗<br />
v <strong>de</strong>r restliche Verifier V ∗ mit fest eincodiertem v.<br />
Dann könnte U ∗<br />
v mit einer Wahrscheinlichkeit von ε zwischen einer Kommunikation<br />
von V ∗<br />
v mit einem ehrlichen Prover <strong>de</strong>s Zeugnis–ununterscheidbaren Systems, das σ als<br />
Hilfseingabe nutzt, und einer Kommunikation von V ∗<br />
v mit einem ehrlichen Prover <strong>de</strong>s<br />
Zeugnis–ununterscheidbaren Systems, das z (als Zeugnis für x) als Hilfseingabe nutzt,<br />
unterschei<strong>de</strong>n. Dies ist aber aufgrund <strong>de</strong>r Zeugnis–ununterscheidbaren Eigenschaft von<br />
ZuProt nur mit vernachlässigbarer Wahrscheinlichkeit möglich, so dass ε ebenfalls nur<br />
vernachlässigbar ist.<br />
Die Verteilung (VS, V ′ R ) ist aufgrund <strong>de</strong>r Simulationseigenschaft <strong>de</strong>s Generator Protokoll<br />
GenProt’ berechenbar ununterscheidbar von (VR, V ′ R ). Angenommen, es gibt einen<br />
Algorithmus U, <strong>de</strong>r zwischen bei<strong>de</strong>n Verteilungen mit einer Warhscheinlichkeit von ε unterschei<strong>de</strong>n<br />
kann. Dann kann ein Unterscheidungsschaltkreis U ′ konstruiert wer<strong>de</strong>n, <strong>de</strong>r<br />
wie folgt im Wi<strong>de</strong>rspruch <strong>zu</strong>r Simulationseigenschaft <strong>de</strong>s Generator Protokolls steht.<br />
Der Unterscheidungsschaltkreis U ′ hat das Zeugnis z fest eincodiert. Wenn er eine Zeichenkette<br />
v als Eingabe erhält, führt er <strong>de</strong>n Algorithmus <strong>de</strong>s ehrlichen Provers aus <strong>de</strong>m<br />
Zeugnis–ununterscheidbaren Beweis für die Behauptung x ∈ L o<strong>de</strong>r τ ∈ Λ“ aus (wo-<br />
”<br />
bei τ das in v enthaltene Kommunikationsprotokoll ist) und dabei das Zeugnis y nutzt.<br />
Er simuliert <strong>de</strong>n Verifier, in<strong>de</strong>m er <strong>de</strong>n restlichen Verifier V ∗ mit <strong>de</strong>r Eingabe v nutzt.<br />
Bezeichne v ′ die Sicht <strong>de</strong>s Verifiers in <strong>de</strong>m Zeugnis–ununterscheidbaren Beweis. Der<br />
92
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Unterscheidungsschaltkreis U ′ liefert U(v, v ′ ) <strong>zu</strong>rück. Wie <strong>zu</strong> sehen, kann U ′ mit einer<br />
Wahrscheinlichkeit von ε zwischen <strong>de</strong>r Sicht von V ∗ in einer realen Ausführung von<br />
GenProt’ und <strong>de</strong>r Ausgabe von S GenProt ′(V ∗ ) unterschei<strong>de</strong>n. Aufgrund <strong>de</strong>r Simulationseigenschaft<br />
von GenProt’ ist ε daher vernachlässigbar. <br />
Mit <strong>de</strong>m Nachweis <strong>de</strong>r Zero–<strong>Knowledge</strong> Eigenschaft durch Lemma 7.3 sowie <strong>de</strong>r <strong>zu</strong>vor<br />
erfolgten Vollständigkeit und Korrektheit ist <strong>de</strong>r Beweis von Satz 7.5 abgeschlossen.<br />
7.4.2 Ein nicht-uniformes Generator Protokoll<br />
Nach<strong>de</strong>m Satz 7.5 bewiesen ist, verbleibt noch die Konstruktion eines nicht-uniformen<br />
Generator Protokolls in Be<strong>zu</strong>g auf eine Ntime(n log log n ) Sprache Λ. Diese basiert auf <strong>de</strong>r<br />
<strong>de</strong>r uniformen Konstruktion von Protokoll 7.3.<br />
Es sei nochmals daran erinnert, wie das Protokoll 7.3 die Bedingung <strong>de</strong>r uniformen<br />
Simulation erfüllt. Der Simulator (Algorithmus 7.4) berechnet ein Commitment w für die<br />
” nächste-Nachricht Funktion“ <strong>de</strong>s uniformen Verifiers als eine eigene Nachricht in <strong>de</strong>m<br />
Protokoll. Das Problem bei <strong>de</strong>r Verwendung <strong>de</strong>s statistisch ein<strong>de</strong>utigen Commitment–<br />
Schemes ist, dass notwendiger Weise gelten muss, dass die Länge <strong>de</strong>s Commitments<br />
w länger sein wird als die Länge <strong>de</strong>r Beschreibung <strong>de</strong>r nächste-Nachricht Funktion.<br />
Sobald aber nicht-uniforme Verifier berücksichtigt wer<strong>de</strong>n, muss für die Beschreibung <strong>de</strong>r<br />
nächste-Nachricht Funktion eine beliebige polynomielle Länge <strong>zu</strong>lässig sein. Insbeson<strong>de</strong>re<br />
kann diese länger als die Kommunikationskomplexität <strong>de</strong>s hier betrachteten Protokolls<br />
sein. Statt eines statistisch ein<strong>de</strong>utigen Commitment–Schemes wird daher ein lediglich<br />
berechenbar ein<strong>de</strong>utiges Commitment–Scheme verwen<strong>de</strong>t.<br />
Ein berechenbar ein<strong>de</strong>utiges Commitment–Scheme, das es erlaubt, Commitments von<br />
Nachrichten <strong>zu</strong> erstellen, die länger als die Ausgabe sind, kann so konstruiert wer<strong>de</strong>n, dass<br />
eine Komposition eines standardmäßigen statistisch ein<strong>de</strong>utigen Commitment–Scheme<br />
mit einer kollisions-resistenten Hashfunktion erstellt wird. Dabei wird ersichtlich, warum<br />
die Korrektheitseigenschaft <strong>de</strong>r Definition <strong>de</strong>s Generator Protokolls GenProt’ abgeschwächt<br />
wer<strong>de</strong>n muss: Da lediglich ein berechenbar ein<strong>de</strong>utiges Commitment–Scheme<br />
verwen<strong>de</strong>t wird, kann auch das dadurch erstellte Protokoll nur berechenbar korrekt sein.<br />
Das Protkoll 7.7 ist das konstruierte nicht-uniforme Generator Protokoll GenProt’.<br />
Protokoll 7.7 (Nicht-Uniformes Generator Protokoll)<br />
Gemeinsame Eingabe:<br />
1 n : Sicherheitsparameter<br />
Schritt V1: (Auswahl einer Hashfunktion) Der Verifier wählt eine <strong>zu</strong>fällige<br />
Hashfunktion h ∈R Hn und sen<strong>de</strong>t h <strong>de</strong>m Prover.<br />
Schritt P2: (Erzeugung eines wahllosen Commitments) Der Prover berechnet<br />
ein <strong>zu</strong>fälliges w ∈R Com(h(0 3n )) und sen<strong>de</strong>t w an <strong>de</strong>n Verifier.<br />
93
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Schritt V3: (Versen<strong>de</strong>n einer Zufallszeichenkette) Der Verifier wählt eine Zeichenkette<br />
r ∈R {0, 1} n und sen<strong>de</strong>t diese.<br />
Das Kommunikationsprotokoll dieses nicht-uniformen Generator Protokolls ist<br />
das Tripel τ = (h, w, r).<br />
Nun wird die Sprache Λ <strong>de</strong>finiert. Sei τ = (h, w, r). Dann gilt τ ∈ Λ, wenn ein<br />
Programm Π existiert, so dass w = Com(h(Π)) gilt und Π(w) eine Ausgabe r innerhalb<br />
log log |r|<br />
log log n<br />
von |r| 5 Schritten erzeugt. Dieses kann in Ntime(n 5 ) verifiziert wer<strong>de</strong>n. Ein<br />
Zeugnis für (h, w, r) ∈ Λ ist ein Tupel (Π, s), so dass w = Com(Π, s) gilt und Π(w) eine<br />
log log |r|<br />
Ausgabe r innerhalb von |r| 5 erzeugt.<br />
Anmerkung: Es kann sein, dass Λ einfach <strong>zu</strong> entschei<strong>de</strong>n ist (tatsächlich könnte<br />
Λ = {0, 1} ∗ sein), aber die Korrektheitsbedingung von Definition 7.6 verlangt lediglich,<br />
dass es unmöglich ist, ein Zeugnis dafür <strong>zu</strong> fin<strong>de</strong>n.<br />
Satz 7.6<br />
Protokoll 7.7 ist ein nicht-uniformes Generator Protokoll in Be<strong>zu</strong>g auf eine Sprache Λ<br />
(entsprechend Definition 7.6).<br />
Beweis:<br />
Zum Beweis, dass Protokoll 7.7 die Definition 7.6 erfüllt, müssen zwei Eigenschaften<br />
erfüllt sein: Die berechenbare Korrektheit und die nicht-uniforme Simulation.<br />
Berechenbare Korrektheit: Sei P ∗ eine n O(log log n) große Strategie für Protokoll 7.7<br />
und bezeichne τ das Kommunikationsprotkoll <strong>de</strong>r Ausführung von P ∗ mit <strong>de</strong>m ehrlichen<br />
Verifier. Dann ist die Wahrscheinlichkeit vernachlässigbar klein, dass P ∗ ein Zeugnis für<br />
τ ∈ Λ auf sein Hilfsband schreibt.<br />
An<strong>de</strong>rnfalls sei angenommen, dass P ∗ ein Zeugnis mit nicht vernachlässigbarer Wahrscheinlichkeit<br />
ε habe. Dann gilt für min<strong>de</strong>stens einen ε<br />
2 Teil von h ∈R Hn, dass P ∗ mit<br />
einer Wahrscheinlichkeit von min<strong>de</strong>stens ε ein Zeugnis für das Kommunikationsprotokoll,<br />
2<br />
welches mit h beginnt, besitzt. Sei ein <strong>de</strong>rartiges h ∈ Hn fest. O.B.d.A. sei angenommen,<br />
dass P ∗ <strong>de</strong>terministisch sei. Dann ist die Nachricht w, welches die Antwort auf h<br />
ist, ebenfalls fest. Mit dieser Annahme und <strong>de</strong>r Wahl von r ∈R {0, 1} n ist <strong>de</strong>r Prover<br />
mit einer Wahrscheinlichkeit von ε in <strong>de</strong>r Lage, ein Programm Π aus<strong>zu</strong>geben (innerhalb<br />
2<br />
log log |r|<br />
von |r| 5 Schritten), so dass w ein Commitment von h(Π) und Π(w) = r ist. Das<br />
be<strong>de</strong>utet, dass bei einer unabhängigen Wahl von r ∈R {0, 1} n und r ′ ∈R {0, 1} n mit einer<br />
Wahrscheinlichkeit von ε2<br />
4 zwei Programme Π, Π′ erlangt wer<strong>de</strong>n, so dass w ein Commitment<br />
sowohl <strong>zu</strong> h(Π) als auch <strong>zu</strong> h(Π ′ ) ist und dass Π(w) = r und Π ′ (w) = r ′ gilt. Da<br />
w ein statistisch ein<strong>de</strong>utiges Commitment–Scheme ist, folgt daraus h(Π) = h(Π ′ ). Da<br />
r = r ′ angenommen wer<strong>de</strong>n kann (mit einer Wahrscheinlichkeit von 1−2−n ), folgt daraus<br />
Π(w) = Π ′ (w) und damit, dass Π und Π ′ unterschiedliche Programme sind. Das be<strong>de</strong>utet<br />
aber, dass Π und Π ′ Kollisionen für h sind. Damit existiert ein nO(log log n) großer<br />
94
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Algorithmus, <strong>de</strong>r für einen ε großen Teil von h ∈R Hn eine Kollision für h mit einer<br />
Wahrscheinlichkeit von O(ε 2 ) erzeugt. Das steht im Wi<strong>de</strong>rspruch <strong>zu</strong>r Kollisionsresistenz<br />
gegen n log n große Wi<strong>de</strong>rsacher <strong>de</strong>r Hn Familie. <br />
Nicht-uniforme Simulation: Der Beweis dafür, dass Protokoll 7.7 die Simulationseigenschaft<br />
erfüllt, ist ähnlich <strong>de</strong>m <strong>de</strong>r uniformen (Lemma 7.2). Es muss gezeigt wer<strong>de</strong>n,<br />
dass ein Simulator S GenProt ′ für Protokoll 7.7 existiert, so dass für je<strong>de</strong>n polynomiell<br />
großen Verifier V ∗ S GenProt ′(V ∗ ) ein Tupel (v, σ) ausgibt, so dass v berechenbar unun-<br />
terscheidbar von view ∗<br />
V (·) ist und dass σ ein Zeugnis dafür ist, dass das <strong>zu</strong> v gehören<strong>de</strong><br />
Kommunikationsprotokoll τ aus Λ ist.<br />
Protokoll 7.8<br />
Eingabe:<br />
• 1 n : Sicherheitsparameter<br />
• V ∗ : Ein polynomiell großer Schaltkreis (o.B.d.A. ist V ∗ <strong>de</strong>terministisch).<br />
Simulierter Schritt V1: (Auswahl einer Hashfunktion) Berechnung von h =<br />
V ∗ (): Die erste Nachricht von V ∗ .<br />
Simulierter Schritt P2: (Commitment für V ∗ ’s Programm) Bezeichne Π <strong>de</strong>n<br />
Algorithmus für die nächste Nachricht von V ∗ . Berechnung eines <strong>zu</strong>fälligen<br />
w ∈R Com(h(Π), s), wobei s ∈R {0, 1} poly(n) Münzwürfe für das<br />
Commitment–Scheme sind.<br />
Simulierter Schritt V3: (Berechnung <strong>de</strong>r Antwort von V ∗ ) Berechnung <strong>de</strong>r<br />
Antwort von V ∗ auf die Nachricht w. Das heißt, r = Π(w) = V ∗ (w).<br />
Ausgabe: Das Tupel (v, σ) mit v als die Sicht w und σ = (Π, s) als Zeugnis<br />
für (h, w, r) ∈ Λ.<br />
Protokoll 7.8 ist ein Simulator für Protokoll 7.7. Die Ausgabe von Protokoll 7.8 ist<br />
ein Tupel (v, σ), so dass v = w ist (was das Kommunikationsprotokoll (h, w, r) mit<br />
h = V ∗ (·) und r = V ∗ (w) impliziert) und σ = (Π, s) ein Zeugnis für v ∈ Λ ist. Die zwei<br />
Eigenschaften, die von (v, σ) benötigt wer<strong>de</strong>n, sind folgen<strong>de</strong>:<br />
1. v ist berechenbar ununterscheidbar von view ∗<br />
V (·) in einer realen Ausführung. Dieses<br />
folgt aus <strong>de</strong>m Umstand, dass Com ein Commitment–Scheme ist und somit<br />
Com(h(Π)) ununterscheidbar von Com(h(O 3n )) ist.<br />
2. Das <strong>zu</strong> v passen<strong>de</strong> Kommunikationsprotokoll τ ist aus Λ und σ ist ein Zeugnis dafür.<br />
Das <strong>zu</strong> v passen<strong>de</strong> Kommunikationsprotokoll ist (h, w, r). Das Tupel σ = (Π, s)<br />
ist ein Zeugnis dafür, da w = Com(h(Π), s) ist und Π(w) in einer polynomiellen<br />
Anzahl von Schritten (und damit kleiner als |r|<br />
log log |r|<br />
5 ) r ausgibt. Zu beachten<br />
ist dabei, dass die Zeit <strong>zu</strong>m Verifizieren, dass σ ein Zeugnis für τ ist, tatsächlich<br />
polynomiell <strong>zu</strong>r Laufzeit von V ∗ ist.<br />
95
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Protokoll 7.8 ist wie Protokoll 7.4 ein nicht Black-Box Simulator. Weiterhin ist an<strong>zu</strong>merken,<br />
das es in streng probabilistischer polynomiell–beschränkter Zeit läuft.<br />
7.5 Beschränkt simultan Zero–<strong>Knowledge</strong><br />
In diesem Abschnitt wird gezeigt, wie das Zero–<strong>Knowledge</strong> Protokoll <strong>de</strong>s vorherigen Abschnitts<br />
modifiziert wer<strong>de</strong>n muss, um ein Zero–<strong>Knowledge</strong> Protokoll <strong>zu</strong> erhalten, welches<br />
beschränkt simultan betrieben wird. Ein Zero–<strong>Knowledge</strong> Protokoll ist beschränkt simultan<br />
Zero–<strong>Knowledge</strong>, wenn es bei einer n-fachen simultanen bzw. parallelen o<strong>de</strong>r auch<br />
konkurrieren<strong>de</strong>n Ausführung Zero–<strong>Knowledge</strong> bleibt, wobei n <strong>de</strong>n Sicherheitsparameter<br />
bezeichnet. Da dieser Sicherheitsparameter beliebig skaliert wer<strong>de</strong>n kann, be<strong>de</strong>utet<br />
das, dass für je<strong>de</strong>s feste Polynom p(·) ein Protokoll konstruiert wer<strong>de</strong>n kann, das bei<br />
p(n)-facher Ausführung Zero–<strong>Knowledge</strong> bleibt.<br />
Dieses Protokoll hier wird abhängig von p(·) sein und insbeson<strong>de</strong>re eine Kommunikationskomplexität<br />
größer als p(n) haben. Das steht im Gegensatz <strong>zu</strong> <strong>de</strong>m unbeschränkt<br />
simultanen Zero–<strong>Knowledge</strong> von [DNS99], wo ein einzelnes Protokoll existiert, welches<br />
für je<strong>de</strong> p(n)-fache Ausführung für je<strong>de</strong>s Polynom p(·) Zero–<strong>Knowledge</strong> bleibt.<br />
Beschränkt simultan Zero–<strong>Knowledge</strong> wird hier nachfolgend <strong>de</strong>finiert. Vorher wird<br />
jedoch formal <strong>de</strong>finiert, was eine simultane Ausführung be<strong>de</strong>utet:<br />
Definition 7.7 (Simultane Ausführung)<br />
Seien (P, V) ein Protokoll mit zwei Teilnehmern, V ∗ eine beliebige interaktive Maschine<br />
und {(ai, bi)} t i=1 die Menge von t Eingaben für das Protokoll (P, V). Eine t-fach simultane<br />
Ausführung von (P, V), die von V ∗ mit <strong>de</strong>r Eingabe {(ai, bi)} t i=1 koordiniert wird, liegt<br />
vor, wenn folgen<strong>de</strong> Eigenschaften erfüllt sind:<br />
1. Ausführung von t unabhängigen Kopien von P, wobei die i-te Kopie ai als Eingabe<br />
erhält.<br />
2. V ∗ erhält die b1, . . . , bt.<br />
3. In je<strong>de</strong>m Schritt gibt V ∗ die Nachricht (i, m) aus. Die i-te Kopie von P erhält dabei<br />
die Nachricht m. Der Verifier V ∗ bekommt die Antwort <strong>de</strong>s Provers.<br />
Definition 7.8 (Beschränkt simultan Zero–<strong>Knowledge</strong>)<br />
Sei (P, V) ein interaktives Beweis o<strong>de</strong>r Argument System für eine Sprache L = L(R).<br />
Dann heißt (P, V) beschränkt simultan Zero–<strong>Knowledge</strong>, wenn ein probabilistischer<br />
polynomiell–beschränkter Algorithmus S existiert, so dass für je<strong>de</strong>n polynomiell<br />
großen V ∗ und je<strong>de</strong> Liste {(xi, yi)} n i=1 mit (xi, yi) ∈ R die bei<strong>de</strong>n folgen<strong>de</strong>n Zufallsvariablen<br />
berechenbar ununterscheidbar sind:<br />
1. Die Sicht von V ∗ in einer n-fach simultanen Ausführung von (P, V) mit <strong>de</strong>r Eingabe<br />
{(xi, yi)} n i=1.<br />
96
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
2. S(V ∗ , x1, . . . , xn)<br />
Das hier vorgestellte Protokoll ist ein FLS’ Protokoll und benutzt ein nicht-uniformes<br />
Generator Protokoll, welches <strong>de</strong>m von Protokoll 7.7 ähnelt. Tatsächlich ist <strong>de</strong>r einzige<br />
Unterschied zwischen <strong>de</strong>n Generator Protokollen <strong>de</strong>s Protokolls aus diesem Abschnitt<br />
und <strong>de</strong>s Protokolls 7.7, dass eine längere Zeichenkette r als Nachricht <strong>de</strong>s Verifiers<br />
(Schritt V2) benutzt wird. Das heißt, dass r ∈R {0, 1} n4 statt r ∈R {0, 1} n benutzt<br />
wird. 35 Protokoll 7.9 ist das modifizeirte Generator Protokoll.<br />
Protokoll 7.9 (Nicht-Uniformes Generator Protokoll)<br />
(für beschränkt simultanes Zero–<strong>Knowledge</strong>)<br />
Gemeinsame Eingabe:<br />
1 n : Sicherheitsparameter<br />
Schritt V1: (Auswahl einer Hashfunktion) Der Verifier wählt eine <strong>zu</strong>fällige<br />
Hashfunktion h ∈R Hn und sen<strong>de</strong>t h <strong>de</strong>m Prover.<br />
Schritt P2: (Erzeugung eines wahllosen Commitments eines Hashes) Der Prover<br />
berechnet ein <strong>zu</strong>fälliges w ∈R Com(h(0 3n )) und sen<strong>de</strong>t w an <strong>de</strong>n Verifier.<br />
Schritt V3: (Versen<strong>de</strong>n einer langen Zufallszeichenkette) Der Verifier wählt eine<br />
Zeichenkette r ∈R {0, 1} n4 und sen<strong>de</strong>t diese.<br />
Das Kommunikationsprotokoll dieses nicht-uniformen Generator Protokolls ist<br />
das Tripel τ = (h, w, r).<br />
Darüber hinaus wird auch die Definition <strong>de</strong>r Sprache Λ verän<strong>de</strong>rt. Sei τ = (h, w, r).<br />
Dann gilt τ ∈ Λ, wenn ein Programm Π existiert, so dass w = Com(h(Π)) gilt und eine<br />
Zeichenkette y existiert mit |y| ≤ |r|<br />
2<br />
log log |r|<br />
und Π(w, y) eine Ausgabe r innerhalb von |r| 5<br />
log log n<br />
5 ) verifiziert wer<strong>de</strong>n. Ein Zeugnis für<br />
Schritten erzeugt. Dieses kann in Ntime(n<br />
(h, w, r) ∈ Λ ist ein Tripel (Π, s, y), so dass w = Com(Π, s) und |y| ≤ |r|<br />
gilt sowie<br />
2<br />
log log |r|<br />
Π(w, y) eine Ausgabe r innerhalb von |r| 5 erzeugt. Das be<strong>de</strong>utet, dass die Sprache<br />
so verän<strong>de</strong>rt wird, dass das verschlüsselte Programm Π, welches r ausgibt, nicht nur<br />
das w als Eingabe erhält son<strong>de</strong>rn darüber hinaus eine <strong>zu</strong>sätzliche Eingabe y bekommen<br />
kann, solange diese nicht <strong>zu</strong> lang ist (genauer nicht länger als |y| ≤ |r|<br />
2 ).<br />
Das modifizierte Protokoll ist weiterhin ein nicht-uniformes Generator Protokoll, wie<br />
folgen<strong>de</strong>r Satz zeigt:<br />
Satz 7.7<br />
Protokoll 7.9 ist ein nicht-uniformes Generator Protokoll in Be<strong>zu</strong>g auf Λ.<br />
35 Der Wert n 4 ist ebenfalls ein bisschen willkürlich. Es wur<strong>de</strong> nicht versucht, die Relation zwischen <strong>de</strong>r<br />
Kommunikationskomplexität und <strong>de</strong>r Anzahl <strong>de</strong>r simultanen Sit<strong>zu</strong>ngen <strong>zu</strong> optimieren.<br />
97
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Beweisskizze:<br />
Der Beweis wird lediglich skizziert, da er überwiegend i<strong>de</strong>ntisch <strong>zu</strong> <strong>de</strong>m <strong>de</strong>s Satzes 7.6,<br />
Seite 94, ist. Der Umstand, dass die Nachricht r länger ist, än<strong>de</strong>rt nichts an <strong>de</strong>m Beweis,<br />
so dass lediglich gezeigt wer<strong>de</strong>n muss, dass die Än<strong>de</strong>rung von Λ nichts scha<strong>de</strong>t.<br />
In <strong>de</strong>r Tat ist <strong>de</strong>r Beweis <strong>de</strong>r nicht-uniformen Simulation unverän<strong>de</strong>rt, da <strong>de</strong>r Simulator<br />
7.8, <strong>de</strong>r in <strong>de</strong>m Beweis <strong>zu</strong>m Satz 7.6 präsentiert wur<strong>de</strong>, ebenfalls ein Simulator für<br />
das Protokoll 7.9 ist. Das Zeugnis, das von diesem Simulator ausgegeben wird, ist auch<br />
für die modifizierte Sprache Λ ein gültiges Zeugnis (es verwen<strong>de</strong>t einfach ein leeres Wort<br />
für die Zeichenkette y).<br />
Der Beweis <strong>de</strong>r berechenbaren Korrektheit ist leicht verän<strong>de</strong>rt. Zur Erinnerung sei<br />
darauf hingewiesen, dass <strong>de</strong>r Beweis <strong>zu</strong> Satz 7.6 darauf beruht, einen täuschen<strong>de</strong>n Prover<br />
in einen Algorithmus <strong>zu</strong> überführen, <strong>de</strong>r Kollisionen <strong>de</strong>r Hashfunktion sucht. Dabei wur<strong>de</strong><br />
folgen<strong>de</strong> Beobachtung gemacht: Wenn für einige Werte w gilt, dass ein Programm<br />
Π existiert mit Π(w) = r und bei einer <strong>zu</strong>fälligen Wahl von r ′ ∈R {0, 1} n mit einer<br />
Wahrscheinlichkeit von ε ein zweites Programm Π ′ existiert mit Π ′ (w) = r ′ , dann unterschei<strong>de</strong>t<br />
sich Π mit einer Wahrscheinlichkeit von min<strong>de</strong>stens ε − 2 −n von Π ′ . Hier wird<br />
diese Beobachtung genutzt, um <strong>zu</strong> zeigen wie ein täuschen<strong>de</strong>r Prover genutzt wird, um<br />
ein Kollisionspaar Π und Π ′ für die Hashfunktion <strong>zu</strong> erhalten.<br />
Die entschei<strong>de</strong>n<strong>de</strong> Beobachtung dabei ist folgen<strong>de</strong>: Wenn für einige Werte w gilt, dass<br />
ein Programm Π existiert mit ∃y ∈ {0, 1} m/2 ; Π(w, y) = r und bei einer <strong>zu</strong>fälligen Wahl<br />
von r ′ ∈R {0, 1} m mit einer Wahrscheinlichkeit von ε ein zweites Programm Π ′ existiert<br />
mit ∃y ′ ∈ {0, 1} m/2 ; Π ′ (w, y ′ ) = r ′ , dann unterschei<strong>de</strong>t sich Π mit einer Wahrscheinlichkeit<br />
von min<strong>de</strong>stens ε−2 −m/2 von Π ′ . Denn für <strong>de</strong>n Fall Π = Π ′ gilt r ′ ∈ Π(w, {0, 1} m/2 ),<br />
was höchstens mit einer Wahrscheinlichkeit von 2 −m/2 eintritt. <br />
7.5.1 Beschränkt simultan Zero–<strong>Knowledge</strong> Argument<br />
Das <strong>zu</strong> konstruieren<strong>de</strong> Zero–<strong>Knowledge</strong> Protokoll wird das Protokoll 7.9, und das Zeugnis–ununterscheidbare<br />
Universelle Argument System von Satz 7.2 in <strong>de</strong>r Ausführung<br />
von Protokoll 7.5, Seite 88, benutzen. Der Beweis dafür, dass es beschränkt simultan<br />
Zero–<strong>Knowledge</strong> ist, ist nicht so modular aufgebaut wie in <strong>de</strong>n vorherigen Beweisen.<br />
Das heißt, dass das vollständige Zero–<strong>Knowledge</strong> Argument als Ganzes erörtert wird,<br />
anstatt Aussagen <strong>de</strong>r einzelnen Komponenten <strong>zu</strong> beweisen. Die in Protokoll 7.10 folgen<strong>de</strong><br />
Konstruktion ist ein beschränkt simultanes Zero–<strong>Knowledge</strong> Argument für N P.<br />
Nachrichtenlänge: Es ist notwendig, die Länge <strong>de</strong>r Nachrichten, die vom Prover<br />
gesen<strong>de</strong>t wer<strong>de</strong>n, <strong>zu</strong> betrachten. Nachrichten, die eine Länge von weniger als n 2 Bits<br />
aufweisen, wer<strong>de</strong>n als kurz bezeichnet. Es wird bei <strong>de</strong>r anschließen<strong>de</strong>n Beobachtung<br />
entschei<strong>de</strong>nd sein, dass alle Nachrichten <strong>de</strong>r Prover von Protokoll 7.10 ” kurz“ sind. (Das<br />
gilt nicht für <strong>de</strong>n Verifier, da die Nachricht r aus Schritt V1.3 eine Länge von n 4 hat.)<br />
In <strong>de</strong>r ersten Stufe kann angenommen wer<strong>de</strong>n, dass die Nachrichten <strong>de</strong>r Prover in Schrit<br />
98
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
P1.2 (das Commitment w = Com(h(0 3n ))) kurz ist, da es Konstruktionen von Commitment–Schemes<br />
gibt, bei <strong>de</strong>nen die Länge <strong>de</strong>s Commitments einer Nachricht <strong>de</strong>r Länge<br />
n höchstens n 2 ist. In <strong>de</strong>r zweiten Stufe wird <strong>de</strong>r Umstand ausgenutzt, dass gemäß Satz<br />
7.2, Seite 80, für je<strong>de</strong>s ε > 0 ein Zeugnis–ununterscheidbares Universelles Argument mit<br />
einer Kommunikationskomplexität von m ε existiert, wobei m die Länge <strong>de</strong>r Instanz ist.<br />
Daher kann sichergestellt wer<strong>de</strong>n, dass alle Nachrichten aller Prover in <strong>de</strong>r zweiten Stufe<br />
eine Länge von höchstens n 2 haben. (Auch wenn die Länge <strong>de</strong>r Behauptung, die in dieser<br />
Stufe bewiesen wird, länger als n 4 ist.)<br />
Protokoll 7.10 (Beschränkt simultanes Zero–<strong>Knowledge</strong> Protokoll)<br />
Gemeinsame Eingabe:<br />
• 1 n : Sicherheitsparameter<br />
• x ∈ {0, 1} n : Behauptung x ∈ L, die bewiesen wer<strong>de</strong>n soll.<br />
Hilfseingabe <strong>de</strong>s Provers: z: Zeugnis dafür, dass x ∈ L gilt.<br />
Schritte P,V1.x: Generator Protokoll<br />
Schritt V1.1: (Auswahl einer Hashfunktion) Der Verifier wählt eine <strong>zu</strong>fällige<br />
Hashfunktion h ∈R Hn und sen<strong>de</strong>t h <strong>de</strong>m Prover.<br />
Schritt P1.2: (Erzeugung eines wahllosen Commitments eines Hashes) Der Prover<br />
berechnet ein <strong>zu</strong>fälliges w ∈R Com(h(0 3n )) und sen<strong>de</strong>t w an <strong>de</strong>n<br />
Verifier. (Kurze Nachricht.)<br />
Schritt V1.3: (Versen<strong>de</strong>n einer langen Zufallszeichenkette) Der Verifier wählt<br />
eine Zeichenkette r ∈R {0, 1} n4 und sen<strong>de</strong>t diese.<br />
Das Kommunikationsprotokoll dieser Stufe ist das Tripel τ = (h, w, r).<br />
Schritte P,V2.x: Zeugnis–ununterscheidbares Universelles Argument<br />
Schritte P,V2.1.x: (Zeugnis–ununterscheidbares Universelles Argument für x ∈<br />
L o<strong>de</strong>r τ ∈ Λ) Der Prover beweist mit einem Zeugnis–ununterscheidbaren<br />
Universellen Argument <strong>de</strong>m Verifier, dass entwe<strong>de</strong>r x ∈ L o<strong>de</strong>r τ ∈ Λ<br />
gilt. (Alle Nachrichten <strong>de</strong>s Provers hier sind kurz.)<br />
Der Hauptsatz dieses Abschnitts lautet wie folgt:<br />
Satz 7.8<br />
Protkoll 7.10 ist ein beschränkt simultanes Zero–<strong>Knowledge</strong> Argument.<br />
Beweis:<br />
Das Protokoll 7.10 baut auf <strong>de</strong>n Protokollen 7.5 von Seite 88, 7.7 von Seite 93 und 7.9 von<br />
Seite 97 auf, <strong>de</strong>ssen Vollständigkeit und Korrektheit bewiesen wur<strong>de</strong>. Da sich bei einer<br />
99
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
parallelen bzw. simultanen Ausführung an <strong>de</strong>n Eigenschaften <strong>de</strong>r Vollständigkeit und<br />
Korrektheit nichts än<strong>de</strong>rt, verbleibt die Notwendigkeit, die Zero–<strong>Knowledge</strong> Eigenschaft<br />
<strong>de</strong>s Protokolls 7.10 <strong>zu</strong> beweisen.<br />
Für <strong>de</strong>n Beweis wird ein Simulator benötigt, <strong>de</strong>ssen Ausgabe untersucht wer<strong>de</strong>n muss.<br />
Zuerst wird ein Überblick über die Funktionalität <strong>de</strong>s Simulators gegeben. Anschließend<br />
erfolgt die <strong>de</strong>taillierte Beschreibung und Analyse.<br />
Überblick über <strong>de</strong>n Simulator Sei V ∗ ein polynomiell großer Algorithmus, <strong>de</strong>r<br />
die Strategie eines Verifier in einer n-fach simultanen Ausführung von Protokoll 7.10<br />
beschreibt. Zur Erinnerung an die Definition 7.7, Seite 96, sei nochmal darauf hingewiesen,<br />
dass bei einer n-fach simultanen Ausführung eines Protokolls die Ausführung von n<br />
Sit<strong>zu</strong>ngen mit eingeschlossen sind, die je nach Entscheidung <strong>de</strong>s Verifieres verschachtelt<br />
sind. Mit mj wird die j-te Nachricht aller Prover (über alle Sit<strong>zu</strong>ngen hinweg) bezeichnet.<br />
Je<strong>de</strong> Nachricht mj bezieht sich dabei auf eine bestimmte Sit<strong>zu</strong>ng i (wobei 1 ≤ i ≤ n<br />
gilt). Da die Ausführungen simultan ablaufen gilt nicht notwendiger Weise, dass die einzelnen<br />
Sit<strong>zu</strong>ngen konsekutiv sind, aber je<strong>de</strong> einzelne ist für sich geordnet (d.h. die erste<br />
Nachricht in Sit<strong>zu</strong>ng i kommt immer vor <strong>de</strong>r zweiten Nachricht <strong>de</strong>r Sit<strong>zu</strong>ng i). Die Sicht<br />
<strong>de</strong>s Verifiers in <strong>de</strong>r Ausführung ist die Folge (m1, . . . , mcn), wobei c die konstante Anzahl<br />
<strong>de</strong>r Nachrichten <strong>de</strong>r Prover in Protokoll 7.10 ist. Die Aufgabe <strong>de</strong>s Simulators muss<br />
daher sein, eine Folge (m1, . . . , mcn) <strong>zu</strong> erzeugen, die ununterscheidbar von <strong>de</strong>r Sicht <strong>de</strong>s<br />
Verifiers in <strong>de</strong>r realen Ausführung ist.<br />
Anmerkung: In diesem Abschnitt wird i als In<strong>de</strong>x einer Sit<strong>zu</strong>ng (d.h. 1 ≤ i ≤ n)<br />
und j und k als In<strong>de</strong>x aller Nachrichten <strong>de</strong>r Prover (d.h. 1 ≤ j, k ≤ cn) sein. Teilweise<br />
wer<strong>de</strong>n die Nachrichten <strong>de</strong>r Prover o<strong>de</strong>r <strong>de</strong>s Verifiers mit <strong>de</strong>r Sit<strong>zu</strong>ngsnummer<br />
und Schrittnummer (z.B. ” r ist die Nachricht <strong>de</strong>s Verifiers in Schritt V1.3 in <strong>de</strong>r i-ten<br />
Sit<strong>zu</strong>ng“) bezeichnet.<br />
Der Simulator wird diese Folge inkrementell erzeugen. Das heißt, dass die Nachricht<br />
mj nur erzeugt wird, wenn schon (m1, . . . , mj−1) erzeugt wur<strong>de</strong> und dass eine einmal<br />
erzeugte Nachricht nicht rückwirkend wie<strong>de</strong>r verän<strong>de</strong>rt wird. Daher ist es möglich und<br />
sinnvoll sich <strong>de</strong>n Simulator so vor<strong>zu</strong>stellen, als wenn er mit <strong>de</strong>m Verifier V ∗ interagiert.<br />
Natürlich besteht <strong>de</strong>r Unterschied dieser Interaktion mit einer realen Interaktion darin,<br />
dass <strong>de</strong>r Simulator <strong>de</strong>n ” unfairen“ Vorteil hat, <strong>de</strong>n Co<strong>de</strong> von V ∗ <strong>zu</strong> kennen.<br />
Der erste naive Ansatz ist <strong>zu</strong> versuchen, <strong>de</strong>n Simulator von Protokoll 7.8 von Seite<br />
95 n-fach unabhängig auf<strong>zu</strong>rufen. Das kann jedoch nicht funktionieren. Angenommen,<br />
dass die k-te Nachricht <strong>de</strong>s Provers in Schritt P1.2 in <strong>de</strong>r i-ten Sit<strong>zu</strong>ng berechnet wer<strong>de</strong>n<br />
muss. Im vorherigen Schritt (Schritt V1.1) sen<strong>de</strong>t <strong>de</strong>r Verifier eine Hashfunktion h worauf<br />
in Schritt P1.2 ein Commitment w für h(Π) mit Π als irgen<strong>de</strong>in Programm berechnet<br />
wird. Wenn <strong>de</strong>n Anweisungen <strong>de</strong>s einzelnen Simulators gefolgt wird, besteht Π einfach<br />
aus <strong>de</strong>m Programm <strong>de</strong>s restlichen Verifiers V ∗ an diesem Punkt. Sei nun angenommen,<br />
dass <strong>de</strong>r Verifier sich entschei<strong>de</strong>t, an diesem Punkt einige weitere Sit<strong>zu</strong>ngen <strong>zu</strong> planen<br />
(d.h. unterschiedliche <strong>zu</strong> i). Das heißt, dass die nächsten Nachrichten mk+1, . . . , mj−1,<br />
100
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
die <strong>de</strong>r Verifier empfängt, Teile von Sit<strong>zu</strong>ngen sind, die sich von i unterschei<strong>de</strong>n (wobei<br />
mj die nächste Nachricht <strong>de</strong>s Provers nach mk ist, die sich auf die i-te Sit<strong>zu</strong>ng bezieht).<br />
Angenommen, dass <strong>de</strong>r Verifier die Zeichenkette r entsprechend Schritt V1.3 <strong>de</strong>r i-ten<br />
Sit<strong>zu</strong>ng sen<strong>de</strong>t, dann berechnet <strong>de</strong>r Verifier r als Funktion <strong>de</strong>r empfangenen Nachrichten<br />
mk+1, . . . , mj−1. Da Π <strong>de</strong>r restliche Verifier am Punkt k ist, gilt nicht Π(w) = r<br />
und somit auch nicht (h, w, r) = Λ, was be<strong>de</strong>utet, dass <strong>de</strong>r Versuch, <strong>de</strong>n Simulator einfach<br />
unabhängig laufen <strong>zu</strong> lassen, fehl schlägt. Trotz<strong>de</strong>m ist <strong>de</strong>r Ansatz in Ordnung: Es<br />
folgt nämlich r = Π(w, mk+1, . . . , mj−1). Das heißt, r ist die Antwort von V ∗ , nach<strong>de</strong>m<br />
er die Nachrichten m1, . . . , mj−1 empfangen hat, wobei m1, . . . , mj−1 bereits Teil <strong>de</strong>r<br />
Beschreibung von Π und mk = w ist.<br />
Die entschei<strong>de</strong>n<strong>de</strong> Beobachtung hierbei ist, dass aus <strong>de</strong>r Tatsache, dass alle Nachrichten<br />
<strong>de</strong>r Prover ” kurz“ sind (mit einer Länge von höchstens n 2 ) und dass es höchstens<br />
cn Nachrichten gibt (wobei c die konstante Anzahl <strong>de</strong>r Run<strong>de</strong>n in Protokoll 7.10 ist),<br />
folgt, dass<br />
gilt.<br />
|mk+1| + . . . + |mj−1| ≤ O(n 3 ) < n4<br />
2<br />
= |r|<br />
2<br />
Somit existiert ein Zeugnis dafür, dass das Kommunikationsprotokoll (h, w, r) aus Λ<br />
ist, weil es gemäß <strong>de</strong>r Definition von Λ in diesem Abschnitt nämlich nicht erfor<strong>de</strong>rlich<br />
ist, Π(w) = r <strong>zu</strong> beweisen son<strong>de</strong>rn lediglich <strong>zu</strong> zeigen, dass Π(w, y) = r für beliebige<br />
kurze Zeichenketten y gilt (d.h. für y mit |y| < |r|<br />
2 ).<br />
Aus diesem Grund kann die Simulation an dieser Stelle fortgeführt wer<strong>de</strong>n. In dieser<br />
Sit<strong>zu</strong>ng wird einfach die Strategie <strong>de</strong>s ehrlichen Provers für das Zeugnis–ununterscheidbare<br />
Universelle Argument benutzt, <strong>zu</strong>sammen mit Π, (mk+1, . . . , mj−1) und <strong>de</strong>n<br />
Münzwürfen, die in <strong>de</strong>r Berechnung <strong>de</strong>s Commitments w verwen<strong>de</strong>t wur<strong>de</strong>n.<br />
Somit kann die Beschreibung <strong>de</strong>s hier verwen<strong>de</strong>ten Simulators erfolgen:<br />
Protokoll 7.11 (Beschreibung <strong>de</strong>s Simulators)<br />
Eingabe:<br />
• x1, . . . , xn: Zu beweisen<strong>de</strong> Behauptung in <strong>de</strong>r i-ten Sit<strong>zu</strong>ng, dass xi ∈<br />
L gilt.<br />
• <strong>de</strong>sc(V ∗ ): Beschreibung <strong>de</strong>s polynomiell großen Verifiers, <strong>de</strong>r n simultane<br />
Ausführungen koordiniert.<br />
Initialisierung: Der Simulator erzeugt eine leere Tabelle A <strong>de</strong>r Länge n. Nach<strong>de</strong>m<br />
<strong>de</strong>r simulierte Schritt P1.2 <strong>de</strong>r i-ten Sit<strong>zu</strong>ng verarbeitet und die<br />
Nachricht w berechnet wur<strong>de</strong>, enthält A[i] <strong>de</strong>n Inhalt (Π, s), so dass<br />
w = Com(h(Π), s) gilt, wobei h die vom Verifier gewählte Hashfunktion<br />
aus Schritt V1.1 <strong>de</strong>r i-ten Sit<strong>zu</strong>ng ist. Nach<strong>de</strong>m <strong>de</strong>r Simulator vom<br />
101
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Verifier die Nachricht r in Schritt V1.3 erhalten hat, fügt er eine Zeichenkettte<br />
y mit <strong>de</strong>r Eigenschaft Π(w, y) = r <strong>zu</strong> A[i] hin<strong>zu</strong>, die eine<br />
Länge von weniger als n4 hat. Das heißt, dass A[i] an diesem Punkt ein<br />
2<br />
Zeugnis (Π, s, y) für (h, w, r) ∈ Λ enthält, wobei h, w und r die jeweiligen<br />
Nachrichten aus <strong>de</strong>n Schritten V1.1, P1.2 bzw. V1.3 <strong>de</strong>r simulierten i-ten<br />
Sit<strong>zu</strong>ng sind.<br />
Simulation <strong>de</strong>r Schritte: Für j = 1, . . . , cn berechnet <strong>de</strong>r Simulator die j-te<br />
simulierte Nachricht <strong>de</strong>s Provers mj auf folgen<strong>de</strong> Weise:<br />
Die vorher berechneten Nachrichten (m1, . . . , mj−1) wer<strong>de</strong>n V ∗ <strong>zu</strong>geführt<br />
und damit die j-te Nachricht <strong>de</strong>s Verifiers (i, m) erzeugt (wobei i die Sit<strong>zu</strong>ng<br />
ist, für die die Nachricht <strong>de</strong>s Verifiers bestimmt ist). Daraufhin wird<br />
die Nachricht mj entsprechend <strong>de</strong>s aktuellen Schritts in <strong>de</strong>m simulierten<br />
Beweis <strong>de</strong>r i-ten Sit<strong>zu</strong>ng berechnet:<br />
Schritt P1.2: (Commitment <strong>de</strong>s Programms) Wenn die Nachricht <strong>de</strong>s Verifiers<br />
für <strong>de</strong>n Schritt V1.1 <strong>de</strong>r i-ten Sit<strong>zu</strong>ng bestimmt ist, dann berechnet <strong>de</strong>r<br />
Simulator folgen<strong>de</strong>s:<br />
• Bezeichne h die Nachricht <strong>de</strong>s Verifiers.<br />
• Berechnung <strong>de</strong>r Beschreibung <strong>de</strong>s folgen<strong>de</strong>n Programms Π:<br />
Π(w, y) erzeugt V ∗ (m1, . . . , mj−1, w, y).<br />
Anmerkung: Die Werte m1, . . . , mj−1 wur<strong>de</strong>n vorher berechnet.<br />
• w = Com(h(Π), s) wobei s die Zufallszeichenketten für das Commitment<br />
ist.<br />
• Speicherung von Π und s in A[i].<br />
• Die j-te Nachricht mj wird <strong>zu</strong> w.<br />
Schritt V1.3: (Nachrichtenempfang) Wenn die Nachricht <strong>de</strong>s Verifiers für <strong>de</strong>n<br />
Schritt V1.3 <strong>de</strong>r i-ten Sit<strong>zu</strong>ng bestimmt ist, dann berechnet <strong>de</strong>r Simulator<br />
folgen<strong>de</strong>s:<br />
• Bezeichne r die Nachricht <strong>de</strong>s Verifieres, wobei r = V ∗ (m1, . . . , mj−1)<br />
ist.<br />
• Bezeichne k <strong>de</strong>n In<strong>de</strong>x über alle Nachrichten <strong>de</strong>r Prover in Schritt<br />
P1.2 in <strong>de</strong>rselben Sit<strong>zu</strong>ng, das heißt, mk ist die Nachricht w <strong>de</strong>rselben<br />
Sit<strong>zu</strong>ng.<br />
• Bezeichne y = (y1, . . . , yj−k−1) die Folge (mk+1, . . . , mj−1). Dabei ist<br />
<strong>zu</strong> beachten, dass j ≤ cn ist und daher |y| ≤ cn · 10n 2 < n4<br />
2 für<br />
genügend große n gilt.<br />
• y wird <strong>zu</strong> A[i] hin<strong>zu</strong>gefügt. Dabei ist <strong>zu</strong> beachten, dass A[i] bereits<br />
(Π, s) enthält, so dass w = Com(h(Π), s) und Π(w, y) = r gelten.<br />
102
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
Schritte P2.x: (Zeugnis–ununterscheidbares Universelles Argument) In diesen<br />
Schritten wird einfach <strong>de</strong>n Strategien <strong>de</strong>r ehrlichen Prover für Zeugnis–<br />
ununterscheidbare Universelle Argumente gefolgt, um <strong>zu</strong> beweisen, dass<br />
entwe<strong>de</strong>r xi ∈ L gilt o<strong>de</strong>r dass das Kommunikationsprotokoll τ <strong>de</strong>r ersten<br />
Stufe <strong>de</strong>r i-ten Sit<strong>zu</strong>ng aus Λ stammt. Dabei ist <strong>zu</strong> beachten, dass A[i]<br />
als ein Zeugnis dafür verwen<strong>de</strong>t wer<strong>de</strong>n kann, dass das Kommunikationsprotokoll<br />
<strong>de</strong>r ersten Stufe tatsächlich aus Λ ist.<br />
Das Lemma, welches beweisen wer<strong>de</strong>n muss, lautet wie folgt:<br />
Lemma 7.4<br />
Bezeichne S einen Simulator gemäß Protokoll 7.11. Dann gilt für je<strong>de</strong>n polynomiell<br />
großen Verifier V ∗ und für je<strong>de</strong> Eingabe {(xi, yi)} n i=1 mit ” yi ist ein Zeugnis für xi ∈ Λ“,<br />
dass die bei<strong>de</strong>n folgen<strong>de</strong>n Zufallsvariablen X und Y berechenbar ununterscheidbar sind:<br />
• X = viewV ∗ ({(xi, yi)} n i=1) einer n-fach simultanen Ausführung von Protkoll 7.10.<br />
• Y = outS(V ∗ , (x1, . . . , xn)).<br />
Beweis:<br />
Bezeichne S ′ einen beliebigen Algorithmus, <strong>de</strong>r bei Eingabe von (V ∗ , {(xi, yi)} n i=1) <strong>de</strong>rselben<br />
Strategie wie S bei Eingabe von V ∗ und (x1, . . . , xn) folgt, mit <strong>de</strong>r Ausnahme,<br />
dass S ′ bei <strong>de</strong>r Simulation <strong>de</strong>r Schritte <strong>de</strong>r Zeugnis–ununterscheidbarer Universellen Argumente<br />
(Schritte P2.x) in <strong>de</strong>r i-ten Sit<strong>zu</strong>ng yi als Eingabe für <strong>de</strong>n ehrlichen Prover<br />
Algorithmus verwen<strong>de</strong>t.<br />
Sei Z = out S ′(V ∗ , (V ∗ , {(xi, yi)} n i=1)). Das Lemma wird bewiesen, in<strong>de</strong>m gezeigt wird,<br />
das w berechenbar ununterscheidbar sowohl von X als auch von Y ist und somit kein<br />
Algorithmus existiert, <strong>de</strong>r X von Y berechenbar unterschei<strong>de</strong>n kann.<br />
1. Z ist berechenbar ununterscheidbar von Y :<br />
Es ist <strong>zu</strong> beachten, dass <strong>de</strong>r einzige Unterschied zwischen Z und Y das Zeugnis ist,<br />
welches als Eingabe für <strong>de</strong>n Prover <strong>de</strong>s Zeugnis–ununterscheidbaren Universellen<br />
Arguments dient. Darüber hinaus gilt, dass auf die von <strong>de</strong>m Prover <strong>de</strong>s Zeugnis–ununterscheidbaren<br />
Systems genutzte Zufallszeichenkette von an<strong>de</strong>ren Teilen<br />
<strong>de</strong>r Simulation we<strong>de</strong>r <strong>zu</strong>gegriffen noch von diesen verwen<strong>de</strong>t wird. Damit folgt die<br />
Behauptung grundsätzlich <strong>de</strong>m Umstand, dass die Zeugnis–ununterscheidbarkeit<br />
unter simultaner Komposition abgeschlossen ist. Da das Protokoll darüber hinaus<br />
Nachrichten enthält, die sich nicht auf das Zeugnis–ununterscheidbare Universelle<br />
Argument beziehen, wird <strong>de</strong>r Beweis noch weiter geführt.<br />
Seien die Sit<strong>zu</strong>ngen in Be<strong>zu</strong>g auf die Ausführungsreihenfolge im ersten Schritt <strong>de</strong>r<br />
zweiten Stufe (<strong>de</strong>r Zeugnis–ununterscheidbaren Universellen Argument Stufe) sortiert.<br />
Bezeichne Zi eine Verteilung, bei <strong>de</strong>r in <strong>de</strong>n ersten i Sit<strong>zu</strong>ngen <strong>de</strong>r Strategie<br />
103
7 Berechenbare Zero–<strong>Knowledge</strong> Arguments mit konstanter Run<strong>de</strong>nzahl<br />
von S und in <strong>de</strong>n letzten n − i Sit<strong>zu</strong>ngen <strong>de</strong>r Strategie von S ′ gefolgt wird, wobei<br />
Z0 = Z und Zn = Y gilt. Dann reicht es aus <strong>zu</strong> beweisen, dass für alle 0 ≤ i < n<br />
Zi berechenbar ununterscheidbar von Zi+1 ist.<br />
Angenommen, es gibt einen Unterscheidungsalgorithums U, <strong>de</strong>r mit <strong>de</strong>r Wahrscheinlichkeit<br />
ε zwischen Zi und Zi+1 unterschei<strong>de</strong>t. Sei weiterhin eine Auswahl<br />
von Münzwürfen beliebig aber fest angenommen, die in allen Sit<strong>zu</strong>ngen vor <strong>de</strong>r<br />
i + 1-ten und in <strong>de</strong>r ersten Sit<strong>zu</strong>ng verwen<strong>de</strong>t wird, in <strong>de</strong>r U zwischen Zi und Zi+1<br />
abhängig von diesen Münzwürfen mit einer Wahrscheinlichkeit von ε unterschei<strong>de</strong>n<br />
kann. Dabei ist <strong>zu</strong> beachten, dass nun die <strong>zu</strong> beweisen<strong>de</strong> Behauptung in Y und Z<br />
i<strong>de</strong>ntisch ist. Da die Ausführung aller Sit<strong>zu</strong>ngen außer <strong>de</strong>r i-ten in Y und Z dieselben<br />
sind und da die Strategien für diese Ausführungen eine Funktion <strong>de</strong>r Eingabe<br />
ist, könnten die Münzwürfe und möglicherweise die öffentlichen Nachrichten <strong>de</strong>r<br />
i-ten Sit<strong>zu</strong>ng aus <strong>de</strong>m Unterscheidungsalgorithums U einen Unterschei<strong>de</strong>r für das<br />
Zeugnis–ununterscheidbare Universelle Argument System machen.<br />
2. Z ist berechenbar ununterscheidbar von X:<br />
Der einzige Unterschied zwischen Z und X besteht darin, dass das Commitment<br />
in Schritt P1.2 über h(Π) anstatt über h(0 3n ) berechnet wird. Darüber hinaus gilt,<br />
dass auf die von Z und X genutzte Zufallszeichenkette von an<strong>de</strong>ren Teilen <strong>de</strong>r<br />
Simulation we<strong>de</strong>r <strong>zu</strong>gegriffen noch von diesen verwen<strong>de</strong>t wird (da die Zeugnis–<br />
ununterscheidbare Stufe yi als Zeugnis verwen<strong>de</strong>t). Die Behauptung wird unten<br />
nochmals bewiesen, obwohl sie prinzipiell von <strong>de</strong>r Sicherheit <strong>de</strong>s Commitment–<br />
Scheme bezüglich Mehrfachabfragen impliziert wird.<br />
Nun wer<strong>de</strong>n die Sit<strong>zu</strong>ngen bezüglich <strong>de</strong>r Reihenfolge <strong>de</strong>r Nachrichten in Schritt<br />
P1.2 sortiert. Xi wird <strong>de</strong>finiert als eine Verteilung, in <strong>de</strong>r in <strong>de</strong>n ersten i Sit<strong>zu</strong>ngen<br />
Com(h(0 3n )) und in <strong>de</strong>n letzten n − i Sit<strong>zu</strong>ngen die Strategie <strong>de</strong>s Simulators S mit<br />
Com(h(Π)) benutzt wird. Dabei ist <strong>zu</strong> beachten, dass X0 = X und Xn = Z gilt.<br />
Angenommen, es gibt einen Unterscheidungsalgorithums U, <strong>de</strong>r mit <strong>de</strong>r Wahrscheinlichkeit<br />
ε zwischen Xi und Xi+1 unterschei<strong>de</strong>t. Sei weiterhin eine Auswahl<br />
von Münzwürfen beliebig aber fest angenommen, die in allen Sit<strong>zu</strong>ngen mit Ausnahme<br />
<strong>de</strong>r i-ten verwen<strong>de</strong>t wird, so dass U zwischen Xi und Xi+1 abhängig von<br />
diesen Münzwürfen mit einer Wahrscheinlichkeit von ε unterschei<strong>de</strong>n kann. U kann<br />
dann in einen Unterschei<strong>de</strong>r zwischen einem Commitment h(Π) und einem Commitment<br />
h(0 3n ) überführt wer<strong>de</strong>n, in<strong>de</strong>m alle Nachrichten vor <strong>de</strong>r Nachricht von<br />
Schritt P1.2 <strong>de</strong>r i-ten Sit<strong>zu</strong>ng fest eincodiert wer<strong>de</strong>n, wodurch die späteren Nachrichten<br />
eine Funktion <strong>de</strong>r Eingabe und <strong>de</strong>r vorhergehen<strong>de</strong>n Nachrichten sind.<br />
Somit ist X berechenbar ununterscheidbar von Y und <strong>de</strong>r Simulator 7.11 garantiert<br />
die Zero–<strong>Knowledge</strong> Eigenschaft <strong>de</strong>s Protokolls 7.10 von Seite 99. <br />
Abschließend ist Satz 7.8 und damit auch das Hauptergebnis in Satz 7.1 bewiesen,<br />
dass das Protokoll 7.10 ein beschränkt simultanes Zero–<strong>Knowledge</strong> Argument ist.<br />
104
8 Zusammenfassung und weiterführen<strong>de</strong> Themen<br />
8 Zusammenfassung und weiterführen<strong>de</strong> Themen<br />
Zero–<strong>Knowledge</strong> Arguments sind eine für die praktische Anwendung sinnvolle und notwendige<br />
Erweiterung <strong>de</strong>r Zero–<strong>Knowledge</strong> Proofs. Das ist nicht nur an <strong>de</strong>r Vielzahl<br />
wissenschaftlicher Veröffentlichungen <strong>zu</strong> diesem Thema ab<strong>zu</strong>lesen, die hier nur <strong>zu</strong> einem<br />
kleinen Teil angeführt bzw. wie<strong>de</strong>rgegeben wer<strong>de</strong>n konnten. Aus <strong>de</strong>m Umstand, dass sich<br />
die vorliegen<strong>de</strong> Arbeit fast ausschließlich mit <strong>de</strong>n Zero–<strong>Knowledge</strong> Arguments befasst,<br />
darf aber nicht geschlossen wer<strong>de</strong>n wer<strong>de</strong>n, dass eine echte Teilung zwischen <strong>de</strong>n Beweisund<br />
<strong>de</strong>n Argumentensystemen existiert. Die Forschung in bei<strong>de</strong>n Bereichen ist sehr eng<br />
miteinan<strong>de</strong>r verbun<strong>de</strong>n und viele neue Erkenntnisse, die bei <strong>de</strong>r Veröffentlichung einer<br />
Arbeit z.B. für Beweissysteme bekannt wer<strong>de</strong>n, gelten auch für Argumentensysteme und<br />
umgekehrt.<br />
Als ein Beispiel darf da<strong>zu</strong> die von Barak 2001 [Bar03] erstmals veröffentlichte Erkenntnis<br />
sein, dass nachweisbar interaktive Argumentensysteme mit konstanter Run<strong>de</strong>nzahl<br />
und einem Simulator, <strong>de</strong>r in strenger Polynomialzeit arbeitet, nicht mit einem<br />
Black-Box Simulator konstruierbar sind. Dieses Ergebnis, dass einen erheblichen Einfluss<br />
auf die Art und Weise hat, wie ein Argumentensystem <strong>zu</strong> konstruieren ist, ist auch auf<br />
Beweissysteme übertragbar.<br />
Alle drei in dieser Arbeit vorgestellten Argumentensysteme als jeweilige Vertreter für<br />
perfekte bzw. berechenbare Zero–<strong>Knowledge</strong> Arguments in polynomieller bzw. konstanter<br />
Run<strong>de</strong>nzahl dienen sowohl <strong>de</strong>r wissenschaftlichen Forschung als auch <strong>de</strong>n praktischen<br />
Informatikern als Grundlagen für weitere Arbeiten. In <strong>de</strong>r Praxis ist es damit möglich<br />
gewor<strong>de</strong>n, unter Ausnut<strong>zu</strong>ng <strong>de</strong>r speziellen Eigenschaften mo<strong>de</strong>rner Computertechniken<br />
und Kommunikationsmöglichkeiten kryptographische Verfahren <strong>zu</strong> entwickeln, die genau<br />
auf <strong>de</strong>n Einsatzzweck abgestimmt wer<strong>de</strong>n können. 36<br />
Über die in dieser Arbeit aufgeführten Verfahren und Veröffentlichungen hinaus existieren<br />
im Bereich Zero–<strong>Knowledge</strong> Proofs und Zero–<strong>Knowledge</strong> Arguments aber noch<br />
eine Vielzahl weiterer Arbeiten. Aufgrund <strong>de</strong>s fast unüberschaubaren Umfangs sollen<br />
und können nicht alle Forschungsgebiete von Be<strong>de</strong>utung erwähnt wer<strong>de</strong>n. Es existieren<br />
jedoch Teilbereiche innerhalb <strong>de</strong>r Kryptographie, die sich zwar nicht direkt o<strong>de</strong>r allein<br />
mit Zero–<strong>Knowledge</strong> Arguments beschäftigen, die aber Erkenntnisse mit Tragweite auch<br />
für die Argumentensysteme hervorgebracht haben.<br />
Davon sollen einige beispielhafte Themen <strong>zu</strong>m Abschluss aufgeführt wer<strong>de</strong>n.<br />
36 Z.B. wer<strong>de</strong>n bei leistungsschwachen Teilnehmern wie Chipkarten Argumentensysteme eingesetzt, die<br />
die notwendige Sicherheit durch eine polynomielle Run<strong>de</strong>nzahl erreichen, da die Kommunikationszeiten<br />
unkritisch und Angriffe auf die Kommunikationswege überschaubar sind. Im Gegensatz da<strong>zu</strong><br />
wird bei einer störanfälligen Funk- o<strong>de</strong>r Internetverbindung, bei <strong>de</strong>r die Teilnehmer eine starke<br />
Rechenleistung haben und Angreifer mit unbekanntem Leistungsvermögen vorhan<strong>de</strong>n sind, Argumentensysteme<br />
eingesetzt, <strong>de</strong>ren Sicherheit durch die hohe Rechenleistung erreicht wird und damit<br />
<strong>de</strong>ren Rundzahl auf eine geringe Konstante begrenzt wer<strong>de</strong>n kann.<br />
105
8 Zusammenfassung und weiterführen<strong>de</strong> Themen<br />
Nicht–interaktive Zero–<strong>Knowledge</strong> Proof<br />
Diese Beweissysteme bestehen ebenfalls aus einem Prover und einem Verifier, die eine<br />
gemeinsame, gleichverteilte Zufallszeichenkette lesen können. Im Gegensatz <strong>zu</strong> <strong>de</strong>n in<br />
dieser Arbeit vorgestellten interaktiven Beweissystemen wird hier jedoch nur eine Nachricht<br />
vom Prover an <strong>de</strong>n Verifier geschickt. Ein Nachrichtenfluss vom Verifier <strong>zu</strong>m Prover<br />
existiert nicht. Nicht–interaktive Zero–<strong>Knowledge</strong> Proof Systeme wur<strong>de</strong>n von Blum,<br />
Feldman und Micali in [BFM88] eingeführt. Eine weitere Konstruktion wur<strong>de</strong> von Feige,<br />
Lapidot und Shamir in [FLS00] beschrieben, von <strong>de</strong>r Teile im Verlauf <strong>de</strong>r vorliegen<strong>de</strong>n<br />
Arbeit in <strong>de</strong>m Verfahren von Barak genutzt wer<strong>de</strong>n.<br />
Ehrlicher Verifier versus unehrlicher Verifier<br />
Von Goldreich, Sahai und Vadhan wird in [GSV98] gezeigt, wie ein interaktives Beweissystem,<br />
welches statistisch Zero–<strong>Knowledge</strong> bei einem ehrlichen Verifier ist, in ein<br />
Beweissystem überführt wer<strong>de</strong>n kann, welches statistisch Zero–<strong>Knowledge</strong> bei je<strong>de</strong>m<br />
(auch täuschen<strong>de</strong>n) Verifier ist. Dabei wer<strong>de</strong>n we<strong>de</strong>r die Vorausset<strong>zu</strong>ngen bezüglich <strong>de</strong>r<br />
Berechungskomplexität noch bezüglich <strong>de</strong>r Komplexität eines Verifiers verschärft.<br />
Concurrent Zero–<strong>Knowledge</strong><br />
Dabei han<strong>de</strong>lt es sich um Systeme, bei <strong>de</strong>nen mehrere Prover gleichzeitig, überlappend<br />
und im Allgemeinen unabhängig voneinan<strong>de</strong>r mit einem Verifier kommunizieren. Bei <strong>de</strong>r<br />
simultanen Ausführung von Zero–<strong>Knowledge</strong> Beweissystemen können solche Systeme,<br />
die nur für die Kommunikation eines Provers mit einem Verifier konstruiert wur<strong>de</strong>n,<br />
versagen. Insbeson<strong>de</strong>re können zwei Prover, die in Absprache untereinan<strong>de</strong>r mit einem<br />
Verifier interagieren, die Nachrichten <strong>de</strong>s Verifers an <strong>de</strong>n zweiten Prover da<strong>zu</strong> nutzen, um<br />
Informationen <strong>zu</strong>r Täuschung durch <strong>de</strong>n ersten Prover <strong>zu</strong> gewinnen. Die erste Veröffentlichung<br />
über Probleme, die beim Interagieren mehrerer Prover mit einem Verifier auftreten<br />
(Multi-Prover Zero–<strong>Knowledge</strong> Proof), stammt von Ben-Or, Goldwasser, Kilian<br />
und Wig<strong>de</strong>rson in [BOGKW88]. Erstmals vorgestellt wur<strong>de</strong>n Zero–<strong>Knowledge</strong> Systeme,<br />
die auch bei simultaner bzw. konkurrieren<strong>de</strong>r Ausführung ihre Eigenschaften bewahren,<br />
1998 von Dwork, Naor und Sahai in [DNS99] mit einem Zeitschrankenmo<strong>de</strong>ll. Später<br />
veröffentlichten Kilian, Petrank und Rackoff in [KPR98] sowie Richardson und Kilian in<br />
[RK99] Verfahren in einem Standardmo<strong>de</strong>ll mit polynomieller Run<strong>de</strong>nzahl. Kilian und<br />
Petrank verbesserten die Komplexität in [KP00] auf polylogarithmische Run<strong>de</strong>n. Dwork<br />
und Sahei zeigten in [DS98], wie das Zeitschrankenmo<strong>de</strong>ll weiter reduziert wer<strong>de</strong>n kann.<br />
Damg˚ard zeigt in [Dam99] ein Mo<strong>de</strong>ll, welches unter bestimmten Vorausset<strong>zu</strong>ngen ein<br />
konkurrieren<strong>de</strong>s Zero–<strong>Knowledge</strong> Argument System mit konstanter Run<strong>de</strong>nzahl ergibt.<br />
Nicht <strong>zu</strong>letzt ist dass von Barak in [Bar03] beschriebene Protokoll ebenfalls für eine<br />
paralelle Ausführung geeignet.<br />
106
Resettable Zero–<strong>Knowledge</strong><br />
8 Zusammenfassung und weiterführen<strong>de</strong> Themen<br />
Eine Verschärfung <strong>de</strong>r Anfor<strong>de</strong>rungen an ein interaktives Beweissystem stellt die Möglichkeit<br />
dar, dass eine <strong>de</strong>r beteiligten Parteien von <strong>de</strong>m ” Gegner“ <strong>zu</strong>rück gesetzt wird, um<br />
einen Angriff auf die Verschlüsselung durch<strong>zu</strong>führen. Dieser Umstand hat bezüglich <strong>de</strong>r<br />
Probleme herkömmlicher Zero–<strong>Knowledge</strong> Systeme Ähnlichkeiten mit <strong>de</strong>m parallelen<br />
Zugriff mehrerer Prover auf einen Verifier. Veröffentlichungen da<strong>zu</strong> sind unter an<strong>de</strong>rem<br />
von Canetti, Goldreich, Goldwasser und Micali in [CGGM00], von Barak, Goldreich,<br />
Goldwasser und Lin<strong>de</strong>ll in [BGGL01] sowie von Micali und Reyzin in [MR01a] erschienen.<br />
Dort wer<strong>de</strong>n Algorithmen beschrieben, die <strong>de</strong>rartigen Angriffen standhalten.<br />
107
Literatur<br />
Literatur<br />
[Bab85] Babai, László: Trading group theory for randomness. In: STOC ’85<br />
[STO85], Seiten 421–429.<br />
[Bar03] Barak, Boaz: How to Go Beyond the Black-Box Simulation Barrier,<br />
Januar 2003. Überarbeitete Version. Vorher erschienen in FOCS 2001,<br />
Seiten 106–115, Oktober 2001.<br />
[BC86] Brassard, Gilles und Clau<strong>de</strong> Crépeau: Non-Transitive Transfer of<br />
Confi<strong>de</strong>nce: A Perfect Zero-<strong>Knowledge</strong> Interactive Protocol for SAT and<br />
Beyond. In: FOCS ’86 [FOC86], Seiten 188–195.<br />
[BCC88] Brassard, Gilles, David Chaum und Clau<strong>de</strong> Crépeau: Minimum<br />
disclosure proofs of knowledge. Journal of Computer and System Sciences,<br />
37(2):156–189, Oktober 1988.<br />
[BCY89] Brassard, Gilles, Clau<strong>de</strong> Crépeau und Moti Yung: Everything<br />
in NP can be argued in perfect zero-knowledge in a boun<strong>de</strong>d number of<br />
rounds. In: Advances in Cryptology – EUROCRYPT ’89, Nummer 434<br />
in Lecture Notes in Computer Science, Seiten 192–195, Berlin Hei<strong>de</strong>lberg,<br />
Deutschland, 1989. Springer-Verlag.<br />
[BCY91] Brassard, Gilles, Clau<strong>de</strong> Crépeau und Moti Yung: Constantround<br />
perfect zero-knowledge computationally convincing protocols. Theoretical<br />
Computer Science, 84(1):23–52, 1991.<br />
[Bel02] Bellare, Mihir: A Note on Negligible Functions. Technischer Bericht,<br />
University of California at San Diego, La Jolla, California, USA, März<br />
2002.<br />
[BFM88] Blum, Manuel, Paul Feldman und Silvio Micali: Non-interactive<br />
zero-knowledge and its applications. In: STOC ’88 [STO88], Seiten 103–<br />
112.<br />
[BG92] Bellare, Mihir und O<strong>de</strong>d Goldreich: On Defining Proofs of <strong>Knowledge</strong>.<br />
In: CRYPTO ’92 [CRY92], Seite 390 ff.<br />
[BG01a] Barak, Boaz und O<strong>de</strong>d Goldreich: Universal Arguments and their<br />
Applications. Electronic Colloquium on Computational Complexity (EC-<br />
CC), 093, 2001.<br />
[BG01b] Bellare, Mihir und Shafi Goldwasser: Lecture Notes on Cryptography.<br />
Vorlesung <strong>zu</strong>: ” Cryptography and Cryptanalysis“ sowie ” Cryptography<br />
and network security“, MIT Laboratory of Computer Science,<br />
Cambridge, Massachusetts, USA, August 2001.<br />
A
Literatur<br />
[BGGL01] Barak, Boaz, O<strong>de</strong>d Goldreich, Shafi Goldwasser und Yehuda<br />
Lin<strong>de</strong>ll: Resettably-Sound Zero-<strong>Knowledge</strong> and its Applications. Cryptology<br />
ePrint Archive, Report 2001/063, 2001. – URL http://eprint.<br />
iacr.org/2001/063.ps.gz – Zugriffsdatum 22.11.2002.<br />
[BJY97] Bellare, Mihir, Markus Jakobsson und Moti Yung: Round-<br />
Optimal Zero-<strong>Knowledge</strong> Arguments Based on any One-Way Function,<br />
July 1997. Überarbeitete Version. Vorher erschienen in Advances in Cryptology<br />
– EUROCRYPT ’97, Nummer 1233 in Lecture Notes in Computer<br />
Science, Springer-Verlag, 1997.<br />
[BL02] Barak, Boaz und Yehuda Lin<strong>de</strong>ll: Strict Polynomial-time in Simulation<br />
and Extraction. In: STOC ’2002 [STO02], Seiten 484–493.<br />
[Blu81] Blum, Manuel: Coin flipping by telephone. In: Advances in Cryptology<br />
– CRYPTO ’81, Seiten 11–15, August 1981.<br />
[BOGKW88] Ben-Or, Michael, Shafi Goldwasser, Joe Kilian und Avi Wig<strong>de</strong>rson:<br />
Multi-prover interactive proofs: How to remove intractability assumptions.<br />
In: STOC ’88 [STO88], Seiten 113–131.<br />
[CEv88] Chaum, David, Jan-Hendrik Evertse und Jeroen van <strong>de</strong> Graaf:<br />
An improved protocol for <strong>de</strong>monstrating possession of discrete logarithms<br />
and some generalizations. In: Advances in Cryptology – EUROCRYPT<br />
’87, Nummer 304 in Lecture Notes in Computer Science, Seiten 127–141,<br />
Berlin Hei<strong>de</strong>lberg, Deutschland, 1988. Springer-Verlag.<br />
[CGGM00] Canetti, Ran, O<strong>de</strong>d Goldreich, Shafi Goldwasser und Silvio<br />
Micali: Resettable zero-knowledge (exten<strong>de</strong>d abstract). In: Proceedings<br />
of the 32nd Annual ACM Symposium on Theory of Computing (STOC<br />
2000), Seiten 235–244, Portland, Oregon, USA, 2000. ACM Press.<br />
[Cha87] Chaum, David: Demonstrating that a public predicate can be satisfied<br />
without revealing any information about how. In: Advances in Cryptology –<br />
CRYPTO ’86, Nummer 263 in Lecture Notes in Computer Science, Seiten<br />
195–199, Berlin Hei<strong>de</strong>lberg, Deutschland, 1987. Springer-Verlag.<br />
[CRY90] Advances in Cryptology, Nummer 435 in Lecture Notes in Computer<br />
Science, Berlin Hei<strong>de</strong>lberg, Deutschland, 1990. Springer-Verlag.<br />
[CRY92] Advances in Cryptology, Nummer 740 in Lecture Notes in Computer<br />
Science, Berlin Hei<strong>de</strong>lberg, Deutschland, 1992. Springer-Verlag.<br />
[CRY98] Advances in Cryptology, Nummer 1462 in Lecture Notes in Computer<br />
Science, Berlin Hei<strong>de</strong>lberg, Deutschland, 1998. Springer-Verlag.<br />
B
Literatur<br />
[Dam99] Damg˚ard, Ivan: Concurrent Zero-<strong>Knowledge</strong> is Easy in Practice. Cryptology<br />
ePrint Archive, Report 1999/014, 1999. – URL http://eprint.<br />
iacr.org/1999/014.ps.gz – Zugriffsdatum 22.11.2002.<br />
[DNS99] Dwork, Cynthia, Moni Naor und Amit Sahai: Concurrent zeroknowledge,<br />
1999. Überarbeitete Version. Vorher erschienen in Proceedings<br />
of the 30th ACM Symposium on Theory of Computing (STOC ’98), 1998,<br />
S. 409–418.<br />
[DS98] Dwork, Cynthia und Amit Sahai: Concurrent Zero-<strong>Knowledge</strong>: Reducing<br />
the Need for Timing Constraints. In: CRYPTO ’98 [CRY98], Seiten<br />
442–457.<br />
[DS02] Dwork, Cynthia und Larry Stockmeyer: 2-round zero knowledge<br />
and proof auditors. In: STOC ’2002 [STO02], Seiten 322–331.<br />
[FFS87] Feige, Uriel, Amos Fiat und Adi Shamir: Zero knowledge proofs of<br />
i<strong>de</strong>ntity. In: STOC ’87 [STO87], Seiten 210–217.<br />
[FLS00] Feige, Uriel, Dror Lapidot und Adi Shamir: Multiple Non-<br />
Interactive Zero <strong>Knowledge</strong> Proofs Un<strong>de</strong>r General Assumptions. SIAM<br />
Journal on Computing, 29(1):1–28, 2000.<br />
[FOC86] Proceedings of 27th IEEE Symposium on Foundation of Computer Science,<br />
1986.<br />
[For87] Fortnow, Lance: The complexity of perfect zero-knowledge. In: STOC<br />
’87 [STO87], Seiten 204–209.<br />
[FS90a] Feige, Uriel und Adi Shamir: Witness indistinguishable and witness<br />
hiding protocols. In: Proceedings of the 22nd Annual ACM Symposium on<br />
Theory of Computing (STOC ’90), Seiten 416–426, Baltimore, Maryland,<br />
USA, 1990. ACM Press.<br />
[FS90b] Feige, Uriel und Adi Shamir: Zero <strong>Knowledge</strong> Proofs of <strong>Knowledge</strong> in<br />
Two Rounds. In: CRYPTO ’89 [CRY90], Seiten 526–544.<br />
[GK96a] Goldreich, O<strong>de</strong>d und Ariel Kahan: How To Construct Constant-<br />
Round Zero-<strong>Knowledge</strong> Proof Systems for NP. Journal of Cryptology:<br />
The journal of the International Association for Cryptologic Research,<br />
9(3):167–189, Sommer 1996.<br />
[GK96b] Goldreich, O<strong>de</strong>d und Hugo Krawczyk: On the composition of Zero-<br />
<strong>Knowledge</strong> Proof Systems. SIAM Journal on Computing, 25(1):169–192,<br />
1996.<br />
C
Literatur<br />
[GMR85] Goldwasser, Shafi, Silvio Micali und Charles Rackoff: The<br />
<strong>Knowledge</strong> Complexity of Interactive Proof-Systems. In: STOC ’85<br />
[STO85], Seiten 291–304.<br />
[GMW86] Goldreich, O<strong>de</strong>d, Silvio Micali und Avi Wig<strong>de</strong>rson: Proofs that<br />
Yield Nothing But their Validity and a Methodology of Cryptographic Protocol<br />
Design. In: FOCS ’86 [FOC86], Seiten 174–187.<br />
[Gol99] Goldreich, O<strong>de</strong>d: Mo<strong>de</strong>rn Cryptography, Probabilistic Proofs and Pseudorandomness.<br />
Springer-Verlag, Berlin Hei<strong>de</strong>lberg, Deutschland, 1999.<br />
[Gol01] Goldreich, O<strong>de</strong>d: Foundations of Cryptography, Band 1: Basic Tools.<br />
Cambridge University Press, Cambrige, 2001.<br />
[Gol02] Goldreich, O<strong>de</strong>d: Zero-<strong>Knowledge</strong> twenty years after its invention, Dezember<br />
2002.<br />
[GS86] Goldwasser, Shafi und Michael Sipser: Private coins versus public<br />
coins in interactive proof systems. In: Proceedings of the 18th Annual ACM<br />
Symposium on Theory of Computing (STOC ’86), Seiten 59–68, Berkeley,<br />
USA, Mai 1986. ACM Press.<br />
[GSV98] Goldreich, O<strong>de</strong>d, Amit Sahai und Salil Vadhan: Honest-verifier<br />
statistical zero-knowledge equals general statistical zero-knowledge. In: Proceedings<br />
of the 30th Annual ACM Symposium on Theory of Computing<br />
(STOC ’98), Seiten 399–408, Dallas, Texas, USA, 1998. ACM Press.<br />
[HILL95] H˚astad, Johan, Russell Impagliazzo, Leonid A. Levin und Michael<br />
Luby: Construction of Pseudorandom Generator from any One-<br />
Way Function, 1995. Überarbeitete Version. Vorversionen erschienen in<br />
Proceedings of the 21st ACM Symposium on Theory of Computing (STOC<br />
’89) und Proceedings of the 22nd ACM Symposium on Theory of Computing<br />
(STOC ’90), ACM-Press.<br />
[HM96] Halevi, Shai und Silvio Micali: Practical and Provably-Secure Commitment<br />
Schemes from Collision-Free Hashing. In: Advances in Cryptology<br />
– CRYPTO ’96, Nummer 1109 in Lecture Notes in Computer Science, Seiten<br />
201–215, Berlin Hei<strong>de</strong>lberg, Deutschland, 1996. Springer-Verlag.<br />
[HT98] Hada, Satoshi und Toshiaki Tanaka: On the Existence of 3-Round<br />
Zero-<strong>Knowledge</strong> Protocols. In: CRYPTO ’98 [CRY98], Seite 408ff. – URL<br />
http://eprint.iacr.org/1999/009.ps.gz – Zugriffsdatum 23.12.2002.<br />
[IY87] Impagliazzo, Russell und Moti Yung: Direct Minimum-<strong>Knowledge</strong><br />
Computations. In: Advances in Cryptology – CRYPTO ’87, Nummer 293<br />
D
Literatur<br />
in Lecture Notes in Computer Science, Seiten 40–51, Berlin Hei<strong>de</strong>lberg,<br />
Deutschland, 1987. Springer-Verlag.<br />
[Kil92] Kilian, Joe: A note on efficient zero-knowledge proofs and arguments. In:<br />
Proceedings of the 24th Annual ACM Symposium on Theory of Computing<br />
(STOC ’92), Seiten 723–732, Victoria, British Columbia, Canada, 1992.<br />
ACM Press.<br />
[KP00] Kilian, Joe und Erez Petrank: Concurrent Zero-<strong>Knowledge</strong> in<br />
Poly-logarithmic Rounds. Cryptology ePrint Archive, Report 2000/013,<br />
2000. – URL http://eprint.iacr.org/2000/013.ps.gz – Zugriffsdatum<br />
22.11.2002.<br />
[KPR98] Kilian, Joe, Erez Petrank und Charles Rackoff: Lower Bounds<br />
for Zero <strong>Knowledge</strong> on the Internet. In: Proceedings of 39th IEEE Symposium<br />
on Foundation of Computer Science (FOCS ’98), Seiten 484–492,<br />
Palo Alto, California, USA, November 1998.<br />
[Mat01] Mattern, Frie<strong>de</strong>mann: Sicherheit in verteilten Systemen, 2001.<br />
– URL http://www.inf.ethz.ch/vs/edu/SS2000/DS/VertSys2000_22.<br />
pdf – Zugriffsdatum 01.11.2001.<br />
[Mey92] Meyer, Bernd: Bit-Commitment-Schemes und Zero-<strong>Knowledge</strong>. <strong>Diplomarbeit</strong>,<br />
Universität <strong>de</strong>s Saarlan<strong>de</strong>s, Juli 1992.<br />
[Mic94] Micali, Silvio: CS proofs. In: Proceedings of 35th IEEE Symposium on<br />
Foundation of Computer Science (FOCS ’94), Seiten 436–453, Santa Fe,<br />
New Mexico, USA, November 1994.<br />
[MR01a] Micali, Silvio und Leonid Reyzin: Min-round Resettable Zero-<br />
<strong>Knowledge</strong> in the Public-Key Mo<strong>de</strong>l. In: Advances in Cryptology – EU-<br />
ROCRYPT 2001, Nummer 2045 in Lecture Notes in Computer Science,<br />
Seiten 373–393, Berlin Hei<strong>de</strong>lberg, Deutschland, 2001. Springer-Verlag.<br />
[MR01b] Micali, Silvio und Leonid Reyzin: Soundness in the Public-Key Mo<strong>de</strong>l.<br />
In: Advances in Cryptology – CRYPTO 2001, Nummer 2139 in Lecture<br />
Notes in Computer Science, Seiten 542–565, Berlin Hei<strong>de</strong>lberg, Deutschland,<br />
2001. Springer-Verlag.<br />
[MvV01] Menezes, Alfred, Paul van Oorschot und Scott Vanstone:<br />
Handbook of APPLIED CRYPTOGRAPHY. CRC Press, 5. Auflage, August<br />
2001. – URL http://www.cacr.math.uwaterloo.ca/hac/ – Zugriffsdatum<br />
09.02.2003.<br />
E
Literatur<br />
[Nao91] Naor, Moni: Bit Commitment Using Pseudo-Randomness. Journal of<br />
Cryptology: the journal of the International Association for Cryptologic<br />
Research, 4(2):151–158, 1991.<br />
[NOVY92] Naor, Moni, Rafail Ostrovsky, Ramarathnam Venkatesan und<br />
Moti Yung: Perfect Zero-<strong>Knowledge</strong> Arguments for NP Can Be Based<br />
on General Complexity Assumptions (Exten<strong>de</strong>d Abstract). In: CRYPTO<br />
’92 [CRY92], Seiten 196–214.<br />
[OVY91] Ostrovsky, Rafail, Ramarathnam Venkatesan und Moti Yung:<br />
Fair Games Against an All-Powerful Adversary. Erstmals veröffentlicht<br />
in DIMACS workshop, 1990. Journal Version in AMS DIMACS Series in<br />
Discrete Mathematics and Theoretical Computer Science. Vol 13. (Jin-Yi<br />
Cai ed.) S. 155–169, 1993, 1991.<br />
[Pfi98] Pfitzmann, Birgit: Sicherheit. Folien <strong>zu</strong>r Stammvorlesung ” Praktische<br />
Informatik“, UNIVERSITÄT DES SAARLANDES, Saarbrücken,<br />
Deutschland, 1998. – URL http://www-krypt.cs.uni-sb.<strong>de</strong>/WS9899/<br />
Vorlesung9899/Folien/pdf.4auf1.bunt/Pfit_98aFolien12bunt.<br />
4auf1.pdf – Zugriffsdatum 13.08.2002.<br />
[Pfi99] Pfitzmann, Birgit: Higher cryptographic protocols. Vorlesungsmaterial<br />
<strong>zu</strong><br />
” Höhere kryptographische Protokolle“, UNIVERSI-<br />
TÄT DES SAARLANDES, Saarbrücken, Deutschland, July 1999.<br />
– URL http://www-krypt.cs.uni-sb.<strong>de</strong>/SS00/VorlKryptProt/<br />
KryptProt990715.pdf – Zugriffsdatum 13.08.2002.<br />
[Pfi00] Pfitzmann, Andreas: Sicherheit in Rechnernetzen. Vorlesungsmaterial<br />
<strong>zu</strong> ” Datensicherheit und Kryptographie“, Technische Universität Dres<strong>de</strong>n,<br />
Dres<strong>de</strong>n, Deutschland, Oktober 2000. – URL http://dud.inf.<br />
tu-dres<strong>de</strong>n.<strong>de</strong>/~pfitza/DSuKrypt.pdf – Zugriffsdatum 09.02.2003.<br />
[QGB90] Quisquater, Jean-Jacques, Louis Guillou und Tom Berson: How<br />
to explain zero-knowledge protocols to your children. In: CRYPTO ’89<br />
[CRY90], Seiten 628–631.<br />
[Rey01] Reyzin, Leonid: Zero-<strong>Knowledge</strong> with Public Keys. Doktorarbeit, Massachusetts<br />
Institute of Technology, Juni 2001.<br />
[RK99] Richardson, Ranso und Joe Kilian: On the Concurrent Composition<br />
of Zero-<strong>Knowledge</strong> Proofs. In: Advances in Cryptology – EUROCRYPT<br />
’99, Nummer 1592 in Lecture Notes in Computer Science, Seite 415ff.,<br />
Berlin Hei<strong>de</strong>lberg, Deutschland, 1999. Springer-Verlag.<br />
F
Literatur<br />
[Sta02] Stammnitz, Peter: Einführung in Kanalcodierungsverfahren -<br />
Mathematische Grundlagen, 2002. – URL http://bs.hhi.<strong>de</strong>/<br />
~stammnit/Skript/Kap\protect\T1\textun<strong>de</strong>rscore4/Kap\protect\<br />
T1\textun<strong>de</strong>rscore4.pdf – Zugriffsdatum 21.01.2003.<br />
[STO85] Proceedings of the 17th Annual ACM Symposium on Theory of Computing,<br />
Provi<strong>de</strong>nce, Rho<strong>de</strong> Island, USA, 1985. ACM Press.<br />
[STO87] Proceedings of the 19th Annual ACM Symposium on Theory of Computing,<br />
New York, New York, USA, 1987. ACM Press.<br />
[STO88] Proceedings of the 20th Annual ACM Symposium on Theory of Computing,<br />
Chicago, Illinois, USA, 2–4 Mai 1988. ACM Press.<br />
[STO02] Proceedings of the 34th Annual ACM Symposium on Theory of Computing,<br />
Montreal, Quebec, Canada, Mai 2002. ACM Press.<br />
[TW87] Tompa, Martin und Heather Woll: Random Self-Reducibility and<br />
Zero-<strong>Knowledge</strong> Interactive Proofs of Possession of Information. In: Proceedings<br />
of 28th IEEE Symposium on Foundation of Computer Science<br />
(FOCS ’87), Seiten 472–482, 1987.<br />
[Wel90] Wellner, Ingrid: Zur Theorie <strong>de</strong>r Zero <strong>Knowledge</strong> Proofs. <strong>Diplomarbeit</strong>,<br />
Universität <strong>de</strong>s Saarlan<strong>de</strong>s, März 1990.<br />
[Yao82] Yao, Andrew Chi-Chih: Theory and applications of trapdoor functions.<br />
In: Proceedings of 23th Annual Symposium on Foundations of Computer<br />
Science (FOCS ’82), Seiten 80–91, November 1982.<br />
G
In<strong>de</strong>x<br />
Symbole<br />
∗ p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24, 54<br />
p−1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54<br />
µ(·). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />
3C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32<br />
A<br />
Arthur–Merlin. . . . . . . . . . . . . . . . . . . . . . . 33<br />
B<br />
Beschränkt simultan Zero-<strong>Knowledge</strong> 96<br />
Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />
Bit–Commitment–Scheme . . . . . . . . . . . 15<br />
Bit-Commitment-Scheme. . . . . . . . . . . . 16<br />
Black-Box . . . . . . . . . . . . . . . . . . . . . . . . . . . 74<br />
Blum-Zahl. . . . . . . . . . . . . . . . . . . . . . . . . . . 26<br />
BPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11, 33<br />
C<br />
Circuit . . . . . . . . . . . . . . . . siehe Schaltkreis<br />
Claw-Free Funktion . . . . . . . . . . . . . . . . . 21<br />
Com . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75<br />
Commitment . . . . . . . . . . . . . . . . . . . . . . . . 15<br />
Completeness. . . . . . . . . . . . . . . . . . . . . 10, 37<br />
CZK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31, 33<br />
D<br />
<strong>de</strong>sc(M) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />
Diskreter Logarithmus . . . . . . . . . . . 27, 28<br />
Dreifärbbare Graphen<br />
Zero-<strong>Knowledge</strong>-Proof. . . . . . . . . . . 32<br />
E<br />
Ein<strong>de</strong>utigkeit . . . . . . . . . . . . . . . . . . . . . . . . 16<br />
Einweg<br />
Claw-Free Funktion . . . . . . . . . . . . . 21<br />
Funktion . . . . . . . . . . . . . . . . . . . . . . . . 18<br />
Hashfunktion . . . . . . . . . . . . . . . . . . . . 22<br />
Permutation . . . . . . . . . . . . . . . . . . . . . 19<br />
Trapdoor Permutation . . . . . . . . . . 21<br />
H<br />
Empfangsband . . . . . . . . . . . . . . . . . . . . . . . . 9<br />
EPR–Commitments . . . . . . . . . . . . . . . . . 56<br />
Erzeugen<strong>de</strong>s Element α . . . . . . . . . . . . . 25<br />
Extraktor . . . . . . . . . . . . . . . . . . . . . . . . . . . 76<br />
F<br />
Festlegung. . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />
Festlegungsphase . . . . . . . . . . . . . . . . . . . . 15<br />
FLS protokoll . . . . . . . . . . . . . . . . . . . . . . . 81<br />
FLS’ protokoll . . . . . . . . . . . . . . . . . . . . . . . 88<br />
G<br />
Galois-Feld . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />
Geheimhaltung . . . . . . . . . . . . . . . . . . . . . . 16<br />
Geheimnis . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />
Generator Protokoll . . . . . . . . . . . . . . . . . 82<br />
GF . . . . . . . . . . . . . . . . . . . siehe Galois-Feld<br />
H<br />
Hashfunktion . . . . . . . . . . . . . . . . . . . . . . . . 22<br />
kollisions-resistent . . . . . . . . . . . . . . . 23<br />
Hiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />
I<br />
Interaktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />
Interaktives Argumentsystem . . . . . . . 36<br />
Interaktives Beweissystem . . . . . . . . . . . 10<br />
mit Zusatzeingabe . . . . . . . . . . . . . . . 12<br />
Interaktives System . . . . . . . . . . . . . . . . . . . 9<br />
IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10, 33<br />
K<br />
<strong>Knowledge</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />
Kollektion von Einweg–Funktionen. . 20<br />
Kollektion von Funktionen . . . . . . . . . . 20<br />
Korrektheitsbedingung . . . . . . . . . . . 10, 37<br />
M<br />
Modulo n . . . . . . . . . . . . . . . . . . . . . . . . . . . 23<br />
Münzwurf Maschine . . . . . . . . . . . . . . . . . . . 8<br />
Multiplikative Gruppe. . . . . . . . . siehe ∗ p
N<br />
negligible function . . . . . . . . . . . . siehe µ(·)<br />
Nicht-Uniforme Verifier . . . . . . . . . . 77, 88<br />
Nicht-Uniformes Generator Protokoll88,<br />
89<br />
O<br />
Öffnungsauffor<strong>de</strong>rung . . . . . . siehe Wahl<br />
Öffnungsphase. . . . . . . . . . . . . . . . . . . . . . . 15<br />
Öffnungswahl. . . . . . . . . . . . . . . siehe Wahl<br />
one-way function siehe Einweg Funktion<br />
Orakel–Maschine . . . . . . . . . . . . . . . . . . . . 76<br />
outA(·) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />
P<br />
Pr[·] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />
Proof of <strong>Knowledge</strong> . . . . . . . . . . . . . . . . . 88<br />
Prover . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />
Pseudo Zufallsgenerator . . . . . . . . . . . siehe<br />
Zufallsgenerator<br />
PZK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31, 33<br />
Q<br />
Quadratischer Rest . . . . . . . . . . . . . . . . . . 26<br />
R<br />
Restklassenring. . . . . . . . . . . . . . . . . . . . . . 24<br />
Run<strong>de</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />
S<br />
Schaltkreis . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />
Boolescher. . . . . . . . . . . . . . . . . . . . . . . 17<br />
Probabilistischer . . . . . . . . . . . . . . . . 17<br />
Sen<strong>de</strong>band . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />
Simulator. . . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />
Simultane Ausführung . . . . . . . . . . . . . . 96<br />
Soundness . . . . . . . . . . . . . . . . . . . . . . . . 10, 37<br />
T<br />
transcript(AB)(·) . . . . . . . . . . . . . . . . . . . . . 12<br />
Trapdoor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />
Turing Maschine . . . . . . . . . . . . . . . . . . . . . . 8<br />
Deterministische . . . . . . . . . . . . . . . . . . 8<br />
Interaktive . . . . . . . . . . . . . . . . . . . . . . . . 9<br />
In<strong>de</strong>x<br />
I<br />
Interaktive Probabilistische . . . . . . . 9<br />
Probabilistische . . . . . . . . . . . . . . . . . . . 8<br />
U<br />
Uniforme Verifier . . . . . . . . . . . . . . . . . 77, 80<br />
Universelles Argument . . . . . . . . . . . . . . 78<br />
Ununterscheidbarkeit . . . . . . . . . . . . . . . . 14<br />
V<br />
Verifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />
uniforme . . . . . . . . . . . . . . . . . . . . . . . . 77<br />
vernachlässigbare Funktion . . . siehe µ(·)<br />
viewA(·) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />
Vollständigkeitsbedingung . . . . . . . . 10, 37<br />
W<br />
Wahl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53<br />
Wahrscheinlichkeitsverteilung . . . . . . . 13<br />
Unterscheidbarkeit . . . . . . . . . . . . . . 13<br />
Witness indistinguishing . siehe Zeugnis<br />
Z<br />
Zero-<strong>Knowledge</strong> . . . . . . . . . . . . . . . . . . . . . . . 7<br />
Argument . . . . . . . . . . . . . . . . . . . . . . . 37<br />
Argument of <strong>Knowledge</strong>. . . . . . 76, 77<br />
beschränkt simultan . . . . . . . . . . . . . 96<br />
Perfekt . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />
Proof . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />
Proof of <strong>Knowledge</strong> . . . . . . . . . . . . . 76<br />
Zero-<strong>Knowledge</strong> Argument . . . . . . . . . . 36<br />
Nicht-Uniforme . . . . . . . . . . . . . . . . . . 88<br />
Uniforme . . . . . . . . . . . . . . . . . . . . . . . . 80<br />
Zeugnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7, 33<br />
ununterscheidbar . . . . . . . . . . . . . . . . 33<br />
ZK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />
Zufallsband. . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />
Zufallsgenerator . . . . . . . . . . . . . . . . . . . . . 14<br />
Zug. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9