Knobeln und Skat spielen am Telefon

iazd.uni.hannover.de

Knobeln und Skat spielen am Telefon

Kryptographie-

Seminar 2002

by Sven Heß

Knobeln und

Skat spielen am Telefon


Überblick:

1.) Münzwurf am Telefon

- Problemstellung

- Commitment

- Bit-Commitment

- Legendre- und Jacobisymbol

- Protokoll für den Münzwurf

2.) Knobeln am Telefon

- Problemstellung

- Isomorphie von Graphen

- Einwegfunktion aus Graph

- Protokoll fürs Knobeln

3.) Skat spielen am Telefon

- Problemstellung

- Begrifffestlegung

- Protokoll für das Mischen der Karten

- Protokoll für das Austeilen

4.) Zero-Knowledge-Verfahren

- Definition der Zero-Knowledge-Verfahren

- Ein Bespielprotokoll

- Definition der Zero-Knowledge-Eigenschaft


1.) Münzwurf am Telefon

Alice und Bob wollen zusammen weggehen, aber sie können sich nicht einigen wohin. Alice

würde gerne ins Kino gehen, Bob dagegen lieber ins Kaffee...

Da Alice keinen Streit will, macht sie den Vorschlag eine Münze zu werfen.

Damit hätten Alice und Bob gleiche Chancen den Abend in ihrem Sinn zu verbringen.

Jeder legt sich auf eine Seite also Kopf oder Zahl fest. Doch bei näherer Betrachtung stellt

sich das Problem, dass sich die beiden zwar grundsätzlich vertrauen, doch ganz sicher finden

sie diese Methode übers Telefon nicht, da nur einer kann das Ergebnis des Münz wurfs sehen.

Somit hätte dieser die Möglichkeit, das Ergebnis zu seinen Gunsten zu fälschen.

Gibt es einen Ausweg aus dieser scheinbar unlösbaren Situation?

Problemstellung

-Es fehlt eine Möglichkeit zu prüfen, ob der Gegenspieler die Wahrheit sagt oder nicht.

Dann könnte man mit einem Münzwurf das Problem lösen.

-Ein anderer Ansatz wäre ein System bzw. eine Methode, bei dem es

beiden Spielern nicht möglich ist, ihre Wahl oder das Ergebnis nochmals zu ändern.

Auch damit wäre eine unparteiische Lösung sichergestellt.


Commitment

Beim einfachen Commitment(engl. für Festlegen) soll eine bestimmte Nachricht bis zu einem

bestimmten Zeitpunkt geheim bleiben. Nachdem die Nachricht erst einmal erstellt wurde darf

für niemanden, weder dem Empfänger noch dem Absender, die Möglichkeit bestehen die

hinterlegte Nachricht zu ändern. Mit einer einfachen Verschlüsselung ist dies nicht möglich

weil der Absender bewusst einen anderen Schlüssel für die Entschlüsselung angeben könnte

und somit die Nachricht verändern könnte. Deswegen verschickt man auch nicht die wirkliche

Nachricht, sondern eine Art Signatur der Nachricht, die nur zur dieser speziellen Nachricht

passt. Mit deren Hilfe muss eine eindeutige Überprüfung möglich sein ob die Nachricht echt

und unverändert geblieben ist.

Praktisch realisiert man das in folgender Weise:

Man sucht sich eine kollisionsfreie Einwegfunktion f, mit der man dann die Nachricht m

verschlüsselt:

c = f ( m )

Durch die Einwegfunktion f ist es natürlich nicht möglich mit Hilfe der Funktion selbst und

der verschlüsselten Nachricht c wieder auf die eigentliche Nachricht m zu schließen.

Dieses c kann somit an den Empfänger übermittelt werden.

Nun kann die Nachricht nicht mehr verändert werden, da eine kollisionsfreie Funktion

gewählt wurde. Es gibt keine Nachricht die das selbe c ergibt:

c' = f ( m’ ) aber immer mit der Eigenschaft: c ≠ c’

Nun kann zu beliebiger Zeit die Nachricht übermittelt werden. Der Empfänger kann die

Echtheit der Nachricht prüfen, indem er die erhaltene Nachricht verschlüsselt und sein

berechnetes c mit dem übermitteltem vergleicht.

Das Commitment besteht somit aus zwei Phasen, dem Festlegen und dem zu einem

beliebigen Zeitpunkt dem Überprüfen bzw. Öffnen.

Was passiert wenn man als zu verschlüsselndes m nur die Menge {0,1} besitzt?

Hier tritt ein mathematisches Problem bedingt durch die Länge der Nachricht auf:

Jede Nachricht hat eine bestimmte Länge. Meistens ist diese nicht nur ein oder zwei Worte

lang, sondern hat eine bestimmte Anzahl an Seiten und somit relativ viele Zeichen.

Deswegen gibt es hier sehr viele Funktionen welche die Bedingungen, Einwegfunktion

und Kollisionsfreiheit, erfüllen.

Aber sobald die Nachricht eine gewisse Länge unterschreitet und dann einer Einwegfunktion

unterworfen wird, nimmt auch die Anzahl der möglichen Abbildung ab, um m zu

verschlüsseln. Der Extremfall ist, wenn man sich nur auf ein Bit festlegen muss. Man kann

also nur aus der Menge { 0, 1 } wählen.

In diesem Fall gibt es keine Einwegfunktion.

Man benötigt also ein abgeändertes Verfahren:


Bit-Commitment

Man legt sich nicht nur auf das Bit b, sondern auch noch zusätzlich auf eine Zufallszahl r

fest. Diese sollte aber genügend groß gewählt werden. Dann übergibt man b und r einer

Einwegsfunktion f (b, r) . Die Kollisionsfreiheit muss allerdings nur für das erste Argument

garantiert sein und nicht für die komplette Funktion.

Ein Beispiel einer solchen Einwegfunktion ist:

f(b, r) := y b r 2 mod n

- wobei n = pq das Produkt zweier Primzahlen ist

- y ein fester quadratischer Nichtrest modulo n mit Jacobisymbol +1 ist.

Die gesamte Funktion besitzt wegen r² insgesamt vier Quadratwurzeln modulo n, ist also nicht

kollisionsfrei; zumindest auf die ganze Funktion gesehen. Betrachtet man aber nur die erste

Komponente, stellt man fest, dass diese immer kollisionsfrei ist, weil f(0, r) immer ein

quadratischer Rest und f(1, r) immer ein quadratischer Nichtrest ist.

Mit dieser Einwegfunktion lässt sich wieder wie beim Commitment arbeiten.

Legendre- und Jacobisymbol

Quadratische Reste:

Definition: n ist eine natürlich Zahl. Das Element a aus Z n * heißt quadratischer Rest

modulo n, falls es ein b aus Z n * gibt, das folgende Eigenschaft erfüllt:

b² = b * b = a (mod n)

b heißt dann Quadratwurzel von a modulo n.

a heißt quadratischer Nichtrest modulo n, aber nur wenn a kein quadratischer Rest ist.

Beispiel mit n=55: die Zahl 34 aus Z 55 * hat die Quadratwurzeln 12, 43, 23, 32, denn es gilt

hier z.B. 12 * 12 mod 55 = 144 mod n = 34.

Normal ist für uns, dass jede Zahl entweder keine oder genau zwei Quadratwurzel besitzt. In

Z n * gilt dies genau dann, wenn n eine Primzahl ist. Daraus folgt, dass bei einem Produkt aus

Primzahlen n = p*q, dieses genau keine oder vier Quadratwurzeln (x, n -x, y, n-y) hat.

Wie einfach es ist eine modulare Quadratwurzel auszurechen hängt entscheidend von der

Wahl von n ab. Wenn n zum Beispiel eine Primzahl ist kann man mit guten Verfahren relativ

schnell Quadratwurzeln modulo n berechnen. Viel schwieriger ist es, wenn n eine

zusammengesetzte Zahl ist, zum Beispiel aus zwei verschiedenen Primzahlen.


Quadratwurzeln und Faktorisierung:

Wie schwer es ist modulare Quadratwurzel zu berechnen hängt vom gewählten n ab. Ist n

selbst eine Primzahl gibt es schnelle Verfahren um Quadratwurzeln modulo n zu berechen.

Ist aber eine zusammengesetzt Zahl, ist es im allgemeinen relativ schwer die

Quadratwurzeln zu finden. In der Kryptographie wird n meistens aus zwei Primzahlen

berechnet. Dann gilt aber:

Seien p und q zwei Primzahlen und n = p * q.

Dann ist das Berechnen von Quadratwurzeln modulo n genauso schwierig

wie das Faktorisieren von n.

Beweis:

Es genügt zu zeigen, dass das Berechnen von Quadratwurzel modulo n mindestens so

schwierig ist, wie das Faktorisieren von n. Dies ist gegeben, wenn man es schafft, jeden

Algorithmus zur Bestimmung von Quadratwurzeln so auszubauen, das er einem

Faktorisierungsalgorithmus entspricht: (Faktorisierung ≤ Quadratwurzelbestimmung)

-Man wählt ein Element b aus Z n * .

-Quadriert es: a:= b 1 mod n.

-Wendet auf a einen Quadratwurzelalgorithmus an und erhält eine Wurzel b 2 .

Da b 1 zufällig gewählt wurde und a genau vier verschiedene

Quadratwurzeln x, n-x, y, n-y besitzt, ist b 2 mit der Wahrscheinlichkeit ½

nicht aus {b 1 , n-b 1 ).

Wir unterscheiden zwei Fälle:

- Ist b 2 aus {b 1 , n-b 1 ) beginnen wir von vorne.

- Ist b 2 aber nicht aus (b 1 , n-b 1 ) ist dies ein guter Fall, denn dann gilt in Z n *

(b 1 +b 2 ) (b 1 -b 2 ) = (b 1 ²-b 2 ²) = a-a = 0

Das heißt das p und q das Produkt (b 1 +b 2 )(b 1 -b 2 ) teilen. Somit teilt p einen Faktor.

Weil aber b 1 ≠ b 2 und außerdem b 1 ≠ n-b 2 ist, muss q den anderen Faktor teilen.

Um p oder q zu bestimmen nimmt man einfach den ggT( n, b 1 +b 2 ).

Damit wurde n faktorisiert.

Beispiel eines Algorithmus,

der dies realisiert:


Quadratische Restannahme:

Für die Formulierung benötigen wir allerdings noch zwei Begriffe. Zum einem das

Legendresymbol und zum anderen das Jacobisymbol.

• Definition des Legendresymbol:

Das Legendresymbol (x | p) ist für Primzahlen p und den Zahlen Z p * erklärt:

(x | p) :=

+1 falls x ein quadratischer Rest modulo p ist

-1 falls x ein quadratischer Nichtrest modulo p ist

• Definition des Jacobisymbol:

Das Jacobisymbol ist eine Verallgemeinerung der Legendresymbols. Es ist für alle Zahlen n

und x aus Z n * definiert, wobei für die Kryptographie nur das Produkt aus n = p * q

interessant ist:

( x | n ) := (x | p ) (x | q )

• Rechenregeln für die Berechnung:

x und y sind ganze Zahlen und teilerfremd zu n

(i) ( x| n) = ( x mod n| n)

(ii) ( x| n) = ( x * y | n)

(iii) (-1| n) = ( -1) (n-1)/2

(iv) ( 2| n) = ( -1) (n²-1)/8 für n ungerade

außerdem gilt nach dem quadratischen Reziprozitätsgesetz(welches auf Gauß zurückgeht) für

alle ungerade und zueinander teilerfremden Zahlen m,k > 2 :

(v) ( k| m) ( m| k) = (-1) (m-1)(k-1)/4

Jeder quadratische Rest modulo n= pq muss quadratischer Rest modulo p und modulo q sein.

Daher ist jede Zahl mit Jacobisymbol –1 ein quadratischer Nichtrest, da für sie genau eine der

genannten Bedingungen nicht zutrifft. Die Umkehrung trifft aber nicht zu:

Denn wenn eine Zahl x das Jacobisymbol +1 besitzt, so kann man nichts mehr über sie

aussagen, da +1 = (1) * (1) = (-1) * (-1) ist, also immer beide Bedingungen zutreffen

müssen oder bei beiden die Bedingung nicht erfüllt ist.

• Für diese Zahlen gilt die quadratische Restannahme:

Wenn n= pq und x aus Z n * mit Jacobisymbol +1 ist praktisch unmöglich, um zu

entscheiden, ob x ein quadratischer Rest ist oder nicht!

Ein Beispiel zur Berechnung des Legendresymbols:

(76 | 131) = ( 2| 131) ( 2| 131) ( 19 | 131) = ( 19| 131)

= ( 131| 19) (-1) (131-1)(19-1)/4 = - ( 17| 19)

= - ( 19| 17) = - ( 2| 17) = - (-1) (17²-1)/8 = -1

Somit ist 76 ein quadratischer Nichtrest modulo der Primzahl 131.


Beispiel für das Protokoll eines Münzwurfs per Telefon:

1) Alice teilt Bob den Wert eines Bits („Münzwurf“) so mit, dass Bob ihn nicht ohne ihre

Hilfe lesen kann (Festlegung):

-Sie wählt also ihr Bit und eine beliebige Zufallszahl r.

-Außerdem benötigt sie eine n = pq und ein passendes y

-Sie berechnet mit Hilfe der Einwegfunktion f(b, r) = y b r 2 mod n ihr c

und verschickt es an Bob

Alice c Bob

-Da Bob nicht auf b schließen kann, muss er dass Ergebnis raten und übergibt Alice sein

geratenes Bit b’:

Alice b’ Bob

2) Überprüfung ob Bob richtig liegt (Öffnen):

-Alice kann ihre Wahl nun nicht mehr ändern. Sie schickt ihr b an Bob.

Alice b Bob

-Bob kann nun feststellen, ob er richtig geraten hat.

-Und Alice selbst weiß ja, ob Bob gewonnen hat!


2.) Knobeln am Telefon

Nehmen wir hier wieder unser Paar Alice und Bob. Angenommen

die Beiden haben sich getrennt und deshalb ihre gemeinsame Wohnung aufgelöst.

Sie sind nun in verschiedene Städte umgezogen, um mehr Abstand voneinander

zu haben. Auch ihr Hab und Gut ist schon soweit aufgeteilt, dass für sie

alles soweit geklärt schien.

Da fällt ihnen aber ein, dass sie sich noch nicht geeinigt haben, wer von

Beiden den Wagen, einen wunderschönen alten Käfer, bekommen soll.

Bei ihrem Telefonat entschließen sie sich, um ihn zu knobeln.

Sie wollen sich aber nicht extra treffen, nur um das auszuhandeln.

Normal würde dieses Spiel über Handzeichen funktionieren, doch am Telefon

stellt sich das Problem, dass der Gesprächspartner nicht sehen kann, wer welchen

Begriff mit der Hand gewählt hat.

Auch wenn sich die beiden die Begriffe nennen, tritt auf der anderen Seite

das Problem auf, dass derjenige immer den Nachteil hat ,welcher als erster

antwortet. Der Nachtteil entsteht dadurch, dass der Zweite seine Meinung

nachträglich in der Weise ändern kann, dass er gewinnt. Auch der Weg,

dass Beide gleichzeitig ihren Begriff nennen , funktioniert nicht, weil sie sich sonst

gegenseitig nicht verstehen.

Die herkömmlichen Regeln fürs Knobeln sollen gelten, die sich in die

folgenden Spielregeln fassen lassen:

- Es gibt nur drei verschiedene Begriffe:

- Und es gewinnt:

Papier, Schere und Stein

Papier gegen Stein

Stein gegen Schere

Schere gegen Papier


Schwierigkeiten

Wir stoßen also wieder auf die selben Probleme, welche auch beim Münzwurf

aufgetreten sind:

-Wie können wir sicher sein, dass der Gegenspieler die Wahrheit sagt?

-Wie kann man sicherstellen , dass er seine Entscheidung nicht mehr nachträglich

ändern kann?

Da wir dieselben Schwierigkeiten haben, versuchen wir, ob unser Bit-Commitment

auch beim Knobeln angewendet werden kann.

Leider stellt man dann aber relativ schnell fest, dass beim Knobeln eine etwas

abgewandelte Commitment-Technik benötigt wird. Das resultiert aus dem Umstand,

dass wir uns jetzt nicht auf eine 2-elementige Menge {0,1} sondern auf eine

3-elementige Menge {Papier, Stein, Schere} festlegen müssen.

Gelöst wird dieses Problem mit Hilfe der Isomorphie von Graphen:

Isomorphie von Graphen

Begriffsdefinition:

Zwei Graphen werden als strukturgleich (isomorph) bezeichnet, wenn durch

Umordnen der Menge von Punkten und deren Verbindungen (Kanten) des

einen Graphen, der andere entsteht.

Man nennt diesen Fall dann die Abbildung von Graph 1 auf Graph 2, oder auch eine

bijektive Abbildung der Punktemenge des Graph 1 auf Graph 2.

Auf welche Weise die Punkte getauscht wurden, kann man mit einer Permutation

festlegen, die genau beschreibt, welche Punkte miteinander getauscht werden müssen.

Als Beispiel nehmen wir diese beiden isomorphen Graphen. Diese müssen viele

Bedingungen erfüllen, wie zum Beispiel müssen sie die gleiche Anzahl an Punkten

und Kanten aufweisen, aber sie dürfen anders angeordnet sein:


Die Permutationen wiederum kann man in der Zyklenschreibweise darstellen:

Zum Beispiel kann man die Menge {1,2,3} auf {2,1,3} abbilden, d. h die 1 wird auf

die 2, die 2 auf die 1 und die 3 auf sich selbst projiziert. Dies wird in der

Zyklenschreibweise folgendermaßen dargestellt:

π = (1 2) (3)=(1 2)

So kann man natürlich leicht isomorphe Graphen erzeugen indem man einfach die

Punkte permutiert. Dagegen ist es aber im Allgemeinen unheimlich schwer,

zu entscheiden ob zwei Graphen isomorph sind, oder auch nicht. Dies ist zwar bei

diesem Beispiel noch relativ leicht möglich, aber sobald mehr Punkte benützt werden,

muss man sehr viele Möglichkeiten ausprobieren, um an die Lösung zu kommen.

Zum Beispiel wären es bei einem Graph mit 12 Ecken und 5 Kanten schon

12! Möglichkeiten. Also ~ 479.001.600 Permutationen, was dann schon zu einer

erheblich Rechenzeit führt.

Dagegen kann man die bekannte Permutation leicht überprüfen.

also wieder eine Art „Einwegfunktion“...

zurück zum Knobeln...

Um diese Isomorphie auszunützen, wählen wir drei nichtisomorphe Graphen G Papier ,

G Stein und G Schere . Natürlich sollte man darauf achten, dass diese genügend groß sind.

(Die Graphen im Beispiel sind viel zu klein, um eine „sichere“ Permutation zu

erhalten)


Protokoll fürs Knobeln am Telefon:

• Einigung auf drei nicht-isomorphe Graphen.

• Alice kann sich nun einen der drei Graphen auswählen und wendet dann eine

beliebige Permutation auf diesen Graphen an. Das Ergebnis davon schickt sie

an Bob.

(Dieser kann jetzt nicht erkennen um welchen ursprünglichen Graphen es sich

handelt.)

• Nun muss dieser einen Graphen auswählen, permutiert ihn und schickt das

Ergebnis zu Alice.

• Jetzt können Alice bzw. Bob einfach ihre Wahl und die Permutationen

preisgeben und austauschen. Da der übermittelte Graph jeweils nur zu einem

der drei Ursprunggraphen isomorph ist, kann jeder von beiden leicht an Hand

der Permutation prüfen, ob der übermittelte Graph gleich dem übermittelten ist.

Falls bei beiden Übereinstimmung herrscht, haben sich beide an die Spielregeln

gehalten.

Es ist also Dank der Kryptographie möglich diese Aufgabe sogar am Telefon zu

realisieren.

Außerdem ist diese Methode relativ sicher. Die Wahrscheinlichkeit die passende

Permutation zu finden besteht zwar, wird aber mit zunehmender Graphengröße sehr

gering. Man kann diese Größe beliebig variieren, bis eine annehmbare Relation

zwischen Rechenaufwand und Sicherheit besteht.

Somit ist dieses Verfahren auch wieder korrekt und durchführbar.


3.) Skat spielen am Telefon

Anton, Bernd und Christoph haben eine gemeinsame Leidenschaft, das Skatspielen.

Das ist auch der Grund dafür, dass sie sich regelmäßig treffen, um dieses Hobby

auszuüben. „Leider“ steht nun die Ferienzeit an und die drei wollen mit Ihren Familien

in den Urlaub fahren. Doch dieses Jahr wollen sie nicht wieder den ganzen Urlaub

lang auf ihre Skatrunde verzichten. Verzweifelt suchen sie nach einer Lösung für ihr

Problem. Bis dann zufällig ein Bekannter der Drei vom dem Dilemma erfährt und den

Dreien vorschlägt, einfach übers Telefon zu spielen. Natürlich können sich die Drei

zuerst überhaupt nicht vorstellen, wie das funktionieren soll. Aber er erklärt Ihnen

folgendes System und kann sie damit überzeugen:

Problemstellung:

Das größte Schwierigkeit liegt, wie in vielen Kartenspielen darin, die Karten zuerst

einmal zu mischen und dann verdeckt an die Mitspieler zu verteilen. Dazu müssen die

Karten verschlüsselt werden. Natürlich darf das Austeilen nicht nur eine Person

übernehmen, denn sonst könnte er ja die verschlüsselte Karte- er weiß ja welche Karte

er verschlüsselt hat- gezielt verteilen und somit mogeln.

Deshalb sollte das Mischeln und Austeilen von möglichst vielen Mitspielern, am

besten allen, übernommen werden, damit auch ausgeschlossen werden kann, dass sich

ein Paar Spieler dabei zusammentun.

Die Lösung für ein ähnliches Problem, elektronisches Pokern, wurde von Schamir,

Rivest und Adlemann gefunden, das sich teilweise auf unser Problem übertragen lässt:

Schritt 1: Vorbereitung

Um das System nicht zu kompliziert zu halten beschränken wir uns auf drei Mitspieler

im folgenden nur noch A, B und C genannt. Zuerst einigen sich die Drei auf eine

geeignete, große Primzahl. Wie schon beim No-Key-Verfahren von Shamir berechnet

dann Spieler A aus der Primzahl p die Zahlen a und a’. Analog für Spieler B und C:

a * a’ = b * b’ = c * c’ = 1(mod p -1)

Die Karten selbst werden auf folgende Weise codiert. Die Anzahl der Karten im

Kartenspiel ist n. Somit läßt sich jede Karte im Kartenstapel als Tupel (i , x i ) aus der

Kartefarbe/Wert x i und Lage im Stapel i eindeutig bestimmen.

x i Wert Kartenfarbe

1 7

Herz

2 8

3 9

... ...

8 As

9 7

Kreuz

10 8

... ..


Schritt 2: Das Mischeln der Karten

Damit sich nicht zwei Mitspieler verbünden können, lassen wir, den Stapel mit 32

Karten von allen drei Mitspielern mischen.

K={(1 , x 1 ), (2 , x 2 ),... (32 , x 32 )}

Spieler A verschlüsselt die zweite Komponente(x i ) der Tupelmenge mit seinem a.

Dann wählt er sich eine beliebige Permutation α der Menge {1,2,..,32} und wendet

diese auf die erste Komponente(i) der Tupel aus K an. Indem er die Tupel in K nach

der ersten Komponente sortiert mischelt er die Karten:

K’ = {(α(1), x 1

a

mod p),…,(α(32), x 32

a

mod p)}

Dabei sind die Karten auf folgende Weise sortiert:

a

(1, x k mod p) mit k = α -1 (1)

a

(2, x l mod p) mit l = α -1 (2)

...

(32, x z

a

mod p) mit z = α -1 (32)

Ist Spieler A fertig, übergibt er Spieler B den Stapel K’. Dieser überlegt sich eine

Permutation β von {1,2,...,32} mit der er K’ mischelt und mit seinem b verschlüsselt:

K’’= {β((α(1)),( x 1 a ) b mod p),…,β(α(32)), (x 32 a ) b mod p)}

Schließlich darf auch Spieler C mit dem von B erhaltenen Stapel K’’ seine

Verschlüsselung und Permutation γ anwenden. Wir erhalten somit einen gemischten

und verschlüsselten Kartenstapel K’’’:

K’’’= {γ(β((α(1))),(( x 1 a ) b ) c mod p),…,γ(β(α(32))), ((x 32 a ) b ) c mod p)}

Dieser Stapel wir jetzt an alle Mitspieler gegeben, im folgenden sprechen wir nur vom

gemischelten und verdeckten Stapel L:

L = K’’’


Schritt 3: Das Austeilen der Karten

Nachdem jetzt jeder die Karten gemischt und „seine“ Verschlüsselung angewendet

hat, kann nun zum Austeilen übergegangen werden.

Spieler A nimmt sich die oberste Karte vom Stapel (1, x i abc mod p) , wobei die

1 = α(β(γ(i))) ist. Die Karte ist für den Spieler C bestimmt. Darum entfernt A jetzt

auch seine Entschlüsselung:

(x i abc ) a’ = x i

bc

(mod p)

Diese Karte gibt a dann an B weiter, der wiederum seine Verschlüsselung entfernt:

(x i bc ) b’ = x i

c

(mod p)

Spieler C erhält schließlich seine Karte (1, x i c mod p) und hat jetzt als einziger die

Möglichkeit, den Wert der Karte mit seinem c’ zu bestimmen:

x i = (x i c ) c’ (mod p)

Karten für Spieler B durchlaufen analog zuerst Spieler C und A:

Und die für Spieler A über Spieler B und C:

C-A-B

B-C-A

So lassen sich die Karten verteilen. Dem Spielen nach den Skatregeln steht somit

nichts mehr im Weg. Die Karten können jetzt normal ausgespielt werden.

Schritt 4: Evtl. Kontrolle

Am Ende jeder Runde lässt sich nachprüfen, ob sich jeder an die Spielregeln gehalten

und nur Karten ausgespielt hat, die er wirklich erhalten hat. Dazu veröffentlichen die

Spieler Ihre Permutationen α,β,γ und Ihre geheimen Zahlen a, a’, b, b’, c, c’.

Schummeln im Spiel lässt sich damit allerdings nicht verhindern, aber spätestens beim

Prüfen fliegt der Falschspieler auf.

Hier liegt auch der Unterschied zum Pokern. Beim Poker muss es auch möglich sein

zu „Bluffen“, d.h. man darf nicht alle Karten aufdecken können, sonst wäre der Reiz

des Pokers verloren. Niemand soll über mehrere Runde eine eventuelle Strategie eines

Spielers herausfinden können. Trotzdem sollen aber bestimmte Kontrollen möglich

sein, die aufgedeckten Karten zu überprüfen.

(Eine mögliche Lösung von C. Crepau: Literaturverweis:

“A zero-knowledge Poker protocol that achieves confidentiality of the players’

strategy“ or “How to achieve an electronic Poker face” )


Definition:

4.) Zero-Knowledge-Verfahren

Wie der Name schon ausdrückt - Zero-Knowledge (engl. zero=null,

Knowledge=Wissen) – wird bei diesen Verfahren kein „Wissen“ übertragen.

Mittels Zero-Knowledge-Protokollen kann eine Person A – Alice – einer Person

B – Bob – die Kenntnis eines Geheimnisses beweisen, ohne dieses Preis zu geben.

Im Anschluss an die Beweisübermittlung muss Bob von der Existenz des

Geheimnisses überzeugt sein. Er darf jedoch keine beweisbare Information über das

Geheimnis gewonnen haben.

Zero-Knowledge-Protokolle stellen eine Teilmenge der interaktiven

Beweissysteme dar, welche zusätzlich die Zero-Knowledge-Eigenschaft besitzen.

Interaktiv deshalb, weil Bob nicht nur zuhört, sondern auch eingreifen bzw. den

Beweis nach seiner Entscheidung lenkt, wie man im folgenden Beispiel sehen wird:

Beispiel eines Zero-Knowledge-Beweis an Hand Isomorpher Graphen:

Nehmen wir an Alice hat einen Graphen G 1 und wendet auf diesen eine Permutation σ

an, dass der Isomorphe Graph G 2 entsteht: G 2 = σ(G 1 )

Nun veröffentlicht Alice die beiden Graphen (G 1 ,G 2 ), aber behält Ihr Geheimnis, die

Permutation σ für sich. Das folgende Protokoll beruht wieder darauf, dass es praktisch

unmöglich ist den Isomorphismus zweier großer (isomorpher) Graphen zu finden:

Alice (G 1 ,G 2 ) Bob

G 2 = σ (G 1 )

Dann verschlüsselt sie zufällig einen der beiden Graphen mit einer zweiten zufälligen

gewählten Permutation τ und erhält einen Graphen H, den sie an Bob sendet.

H = σ (G b )

mit b ∈ {0,1} zufällig

H

Jetzt greift Bob ein und darf ein Bit c ∈ {0,1} wählen.

c Wählt ein c ∈ {0,1}

Falls c = 0 muss Alice die Permutation von G 1 zu H, ansonsten die von G 2 zu H

preisgeben. Das ist je nach gewähltem Bit b dann entweder τ, τσ -1 oder τσ.

α:= τ (σ -1 (σ 2 ) b ) b + c mod 2 α Überprüft α (G c+1 ) = H


Da Alice immer das richtige α senden kann, ist das Protokoll durchführbar.

Definition der Zero-Knowledge-Eigenschaft:

Ein interaktives Beweissystem besitzt genau dann die Zero-Knowledge-

Eigenschaft, wenn es einen Simulator S gibt, welcher ohne Kenntnis des

Geheimnisses in der Lage ist, ein Protokoll einer Interaktion anzufertigen, so

dass dieses nicht von einem Originalprotokoll – also der Interaktion zw. Alice

und Bob – unterscheidbar ist.

Ein interaktives Beweissystem mit Zero-Knowledge-Eigenschaft ist ein

Zero-Knowledge-Protokoll.

In unserem Beispiel könnte sich jemand als A ausgeben und behaupten er kenne das

Geheimnis, die Permutation σ . Nennen wir diese Person A’. Das Protokoll läuft genau

gleich ab, bis auf den letzten Schritt. Da A’ nur τ kennt, aber nicht σ, kann er immer

nur eine der von b zufällig geforderten Permutation zurückgegeben.

Das heißt A’ liegt mit einer Wahrscheinlichkeit von ½ richtig und kann somit mit

dieser Wahrscheinlichkeit betrügen.

Allerdings hängt diese Wahrscheinlichkeit auch von der Anzahl der durchgeführten

Runden ab. Nach t absolvierten Runden liegt die Betrugswahrscheinlichkeit bei (1/2) t .

Somit ist das vorgeführte Protokoll auch sicher und korrekt.


Quellen:

1.) Moderne Verfahren der Kryptografie, von Albrecht Beutelspacher, Jörg

Schwenk und Klaus Dieter Wolfenstetter. 3.verb. Auflage 1999, erschienen im

Vieweg-Verlag

2.) Graphen Algorithmen Netze, von Firoz Kaderalim, Werner Poguntke

Vieweg-Verlag 1995

3.) Applet über Graphenisormophie von http://www.educeth.ch

4.) Hompage der Uni Bielefeld

http://www.wiwi.uni-bielefeld.de/StatCompSci/lehre/

material_spezifisch/statalg00/rsa/node20.htm

5.) Technische Universität Dresden : hs.ps

von http://www.inf.tu-dresden.de

Weitere Magazine dieses Users
Ähnliche Magazine