30.10.2013 Aufrufe

Diplomarbeit zu "`Zero-Knowledge Arguments"' - Telle-Online.de

Diplomarbeit zu "`Zero-Knowledge Arguments"' - Telle-Online.de

Diplomarbeit zu "`Zero-Knowledge Arguments"' - Telle-Online.de

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!