Bayerische Julius – Maximilians – Universität Würzburg Erste Staatsprüfung für ein Lehramt an Realschulen Schriftliche Hausarbeit Thema: „Scio nescire Vorstellung zweier Zero – Knowledge – Verfahren„ Eingereicht von: Bernd Götzelmann Fach: Eingereicht am: 12.12.2007 Dozent: Prof. Dr. Jörn Steuding 1 Mathematik Scio nescire – Ich w eiß, dass ich nichts w eiß Sokrates, 469 – 399 v. Chr. 2 Inhaltsverzeichnis 1. Das menschliche Bedürfnis nach Geheimhaltung ............................................................. 5 1.1 Die Kryptographie.......................................................................................................... 5 1.2 Die klassische und die moderne Kryptographie.......................................................... 6 1.3 Protokolle ........................................................................................................................ 9 2. Asymmetrische Verschlüsselungen – die Public – Key – Verfahren ............................. 10 3. Heranführung an die Zero – Knowledge – Thematik anhand zweier Beispiele........... 12 3.1 Das „Wo ist Walter – Problem“.................................................................................. 12 3.2 Die magische Tür.......................................................................................................... 16 4. Die mathematischen Grundlagen ..................................................................................... 22 4.1 Graphentheorie............................................................................................................. 22 4.1.1 Definition: Graph................................................................................................... 22 4.1.2 Definition: Untergraph .......................................................................................... 23 4.1.3 Definition: Adjazente (benachbarte) Knoten ........................................................ 23 4.1.4 Definition: Grad eines Knotens ............................................................................. 23 4.1.5 Definition: Kantenzug............................................................................................ 23 4.1.6 Definition: Kreis..................................................................................................... 24 4.1.7 Definition: Isomorphie zweier Graphen ............................................................... 24 4.1.7.1 Kriterien zum Ausschluss der Isomorphie zweier Graphen ...................... 24 4.1.7.2 Methode zum Auffinden eines Isomorphismus zwischen zwei Graphen .. 26 4.1.8 Algebraische Darstellung von Graphen .............................................................. 27 4.2 Kongruenzen und Restklassen .................................................................................... 28 4.2.1 Kongruenzen.......................................................................................................... 28 4.2.2 Restklassen............................................................................................................. 29 4.2.2.1 Grundlegendes ................................................................................................ 29 4.2.2.2 Prime Restklassen .......................................................................................... 31 4.3 Arithmetik von Restklassenringen.............................................................................. 32 4.3.1 Zusammenhang zwischen dem Grad eines Polynoms und dessen Nullstellen 32 4.3.2 Ordnung eines Restklassenringes ........................................................................ 33 4.3.3 Berechnung der Euler – Funktion ....................................................................... 33 4.3.4 Ordnung eines Elementes einer Restklasse......................................................... 34 4.3.5 Satz von Lagrange................................................................................................. 34 4.3.6 Satz von Euler – Fermat ....................................................................................... 34 3 4.3.7 Zusammenhang zwischen der Ordnung einer Gruppe und der eines Elementes dieser Gruppe ................................................................................................................. 35 4.3.8 Chinesischer Restsatz............................................................................................ 35 4.3.9 Der euklidische Algorithmus................................................................................ 36 4.3.10 Darstellung des ggT zweier Zahlen als Linearkombinationen dieser Zahlen 36 5. Vorstellung der beiden Zero – Knowledge – Verfahren................................................. 38 5.1 Isomorphie von Graphen............................................................................................. 38 5.1.1 Grundlegendes zum Verfahren............................................................................ 38 5.1.2 Anwendung des Verfahrens „Isomorphie von Graphen“ ................................. 40 5.1.3 Praxisbezug des Verfahrens ................................................................................. 46 5.2 Fiat – Shamir – Algorithmus....................................................................................... 47 5.2.1 Grundlegendes zum Verfahren............................................................................ 47 5.2.2 Berechnung von Quadratwurzeln mod p............................................................ 52 5.2.3 Berechnung von Quadratwurzeln mod n............................................................ 54 5.2.4 Zusammenhang zwischen der Berechnung einer Wurzel von a mod n und der Primfaktorzerlegung von n ........................................................................................... 58 5.2.5 Das Problem der Faktorisierung großer Zahlen................................................ 60 5.2.6 Anwendung des Fiat – Shamir – Verfahrens...................................................... 64 5.2.7 Praxisbezug des Fiat – Shamir – Verfahrens...................................................... 69 5.3 Was wäre wenn…......................................................................................................... 71 6. Zero – Knowledge – Verfahren in der Schule? ............................................................... 72 7. Quisquater, Guillou: „How to Explain Zero – Knowledge Protocols to Your Children“74 8. Literaturverzeichnis........................................................................................................... 79 9. Danksagungen..................................................................................................................... 81 10. Erklärung.......................................................................................................................... 82 4 1. Das menschliche Bedürfnis nach Geheimhaltung In Zeiten, in denen das Internet jedem die Möglichkeit bietet, nach grenzenlos vielen Informationen zu suchen, sich mit anderen Leuten aus aller Welt anonym mittels diverser Programme zu unterhalten, sich gegenseitig Emails zu schreiben und vieles, vieles mehr, steigt naturgemäß auch das Interesse bestimmter Gruppen daran, die Inhalte solcher Unterhaltungen und dieses Emailverkehrs zu kennen. Dass dies nicht im Sinne eines Nutzers dieser Services sein kann, sollte wohl allen klar sein. Doch wie kann man dies verhindern? Wie kann man erreichen, dass Informationen, die streng geheim sind, auch geheim bleiben? 1.1 Die Kryptographie Die Wissenschaft, die sich mit diesem Problem auseinander setzt, ist die Kryptographie. Das Wort stammt aus dem Griechischen, von den Worten „kryptόs“ – verborgen und „gráphein“ – schreiben. Sie befasst sich insbesondere mit der Verschlüsselung von Informationen. Dabei wird die Information so entstellt, dass sie für einen Außenstehenden keinerlei Sinn ergibt. Jedoch soll eine Person, die berechtigt ist, den Inhalt der Information zu erfahren, auch Zugang zu ihr haben. Hierfür benötigt diese Person „etwas, was [sie][…] vor allen anderen auszeichnet“1, eine Zusatzinformation, die sie befähigt, die ursprüngliche Information zu entschlüsseln. Diese Zusatzinformation wird in der Kryptographie als „Schlüssel“ bezeichnet. Im Wesentlichen sollen mit diesem geheimen Schlüssel Geheimhaltung (Etwas Geheimes soll geheim bleiben.) und Authentikation (Mit dem Schlüssel soll man seine Identität gegenüber anderen beweisen können.) gewährleistet werden. Natürlich besteht das Bedürfnis danach, Informationen nur denjenigen zugänglich zu machen, die sie auch wirklich sehen sollen, nicht erst seit Einführung des Internets. Den frühesten bekannten Einsatz von Verschlüsselung findet man 1900 v. Chr. bei den Ägyptern, die damals unübliche Hieroglyphen nutzten, um geheime Botschaften aufzuschreiben.2 Ein bekannteres Beispiel für Kryptographie findet sich im ersten Jahrhundert vor Christus, zu Lebzeiten von Julius Caesar. In dieser Zeit wurde der heute als Verschiebechiffre oder Caesar – 1 BEUTELSPACHER, Albrecht; SCHWENK, Jörg; WOLFENSTETTER, Klaus – Dieter: „Moderne Verfahren der Kryptographie“. Vieweg Verlag, 4. Auflage, 2001, S. 1 2 http://de.wikipedia.org/wiki/Kryptographie, aufgerufen am 12.06.07 5 Verschlüsselung bekannte Code entwickelt. Hierbei wird jeder Buchstabe des Alphabetes um eine bestimmte Anzahl von Positionen zyklisch verschoben. Bei einer Verschiebung um 3 Buchstaben, wie sie Caesar meist praktizierte, wird das A zum D, das B zum E usw. Wollte man dann einen Text verfassen, war jedem Buchstaben aus dem normalen Alphabet ein Buchstabe aus dem anderen Alphabet zugeordnet. Zum Beispiel wurde so aus dem Wort HALLO das verschlüsselte Wort KDOOR.3 Ein weiteres geschichtsträchtiges Beispiel ist die Chiffriermaschine ENIGMA, die vor allem im Zweiten Weltkrieg auf Seite der faschistischen Diktatur der Nazis Verwendung gefunden hat. Sehr lange Zeit war es wegen dieser Maschine den Alliierten Streitkräften nicht möglich, die von den Deutschen versendeten Nachrichten zu dechiffrieren.4 Da die Funktionsweise der ENIGMA sehr kompliziert ist, würde deren Erläuterung hier den Rahmen sprengen. 1.2 Die klassische und die moderne Kryptographie Wenn die bisherigen Beispiele auch große Differenzen hinsichtlich ihrer Komplexität aufweisen, so haben sie doch eines gemeinsam: Beide Parteien, der Nachrichterstellende sowie der Nachrichtempfangende, müssen die Art und Weise, wie die Nachricht chiffriert wurde, kennen, benötigen also den gleichen Schlüssel. Der erste, um den Text zu verschlüsseln, der zweite, um ihn zu entschlüsseln und damit wieder lesbar zu machen. In Anbetracht der Rollen, die Sender und Empfänger bei diesen Verschlüsselungsverfahren spielen, spricht man in der Praxis von „symmetrischer Verschlüsselung“. Insbesondere werden derartige Verfahren der „Klassischen Kryptographie“ zugeschrieben.5 Bei diesem Begriff werden leicht Assoziationen mit alten, nicht mehr aktuellen Verfahren geweckt. Dies ist jedoch so absolut nicht richtig! Eine wichtiges symmetrisches Verfahren ist zum Beispiel der im Jahre 1976 von IBM und der National Security Agency (NSA) entwickelte DES – Algorithmus (Data Encryption Standard – Algorithm), mit dem „ein[…] sichere[r] einheitliche[r] Standard für behördenübergreifende Verschlüsselung“6 geschaffen wurde. Dieses Verfahren wird heute immer noch benutzt, auch 3 http://de.wikipedia.org/wiki/Verschiebechiffre, aufgerufen am 30.06.07 http://de.wikipedia.org/wiki/Enigma_%28Maschine%29, aufgerufen am 30.06.07 5 BEUTELSPACHER, Albrecht; SCHWENK, Jörg; WOLFENSTETTER, Klaus – Dieter: „Moderne Verfahren der Kryptographie“. Vieweg Verlag, 4. Auflage, 2001, S. 1 6 http://de.wikipedia.org/wiki/Kryptographie, aufgerufen am 12.06.07 4 6 wenn Behörden mittlerweile auf dessen Weiterentwicklung, den AES – Algorithmus (Advanced Encryption Standard), umgestiegen sind. Vorgestellt wurde dieses Verfahren im Jahr 2000 und auch dieses ist wieder symmetrisch.7 Man sieht also: der Begriff „klassisch“ ist in diesem Zusammenhang keinesfalls mit „alt“ oder „überholt“ gleich zu setzen! Im Gegensatz zur klassischen Kryptographie steht die „moderne Kryptographie“. Es ist nicht leicht, deren Beginn genau zu umgrenzen, dennoch kann man sagen, dass ihre Grundlagen der 1949 veröffentlichte Artikel „Communication Theory Of Secrecy Systems“ von Claude Shannon bildete8. Darin wird erstmals dargelegt, dass die Kryptographie im Wesentlichen auf mathematischen Verfahren und Algorithmen basiert.9 Der erste große Fortschritt der modernen Kryptographie war anschließend geprägt durch folgende wichtige Entdeckung: In dem Artikel „New Directions in Cryptography“ veröffentlichten Whitfield Diffie und Martin Hellman eine absolut revolutionäre Idee hinsichtlich der Schlüsselverteilung, die so genannten „Public – Key – Verfahren“. Der Schwachpunkt der bisherigen kryptographischen Verfahren lag immer darin, dass die Schlüssel symmetrisch waren, also sowohl zum Verschlüsseln als auch zum Entschlüsseln einer Nachricht benötigt wurden. Damit der Empfänger die Nachricht dechiffrieren konnte, musste dieser Schlüssel auf einem sicheren Weg vom Sender zum Empfänger gelangen, was immer mit einer gewissen Unsicherheit verbunden war. Diffies und Hellmans Public – Key Kryptographie machte dies nun überflüssig. Hierbei wird nämlich nicht mehr ein einzelner Schlüssel genutzt, sondern ein Paar zusammenpassender Schlüssel. Auf diese Art der Verschlüsselung werden wir in Kapitel 2 noch detaillierter eingehen. Eine weitere, für die moderne Kryptographie extrem wichtige, Entdeckung waren die in „The Knowledge Complexity of Interactive Proof-Systems“ im Jahre 1985 von Goldwasser, Micali und Rackoff vorgestellten „Zero – Knowledge – Verfahren“10. Diese basieren im Wesentlichen auf folgendem Problem: 7 http://de.wikipedia.org/wiki/Advanced_Encryption_Standard, aufgerufen am 26.07.07 SHANNON, Claude: „Communication Theory of Secrecy Systems“. Bell System Technical Journal, vol. 28, n. 4, o. V., 1949, S. 656ff 9 http://www.netplanet.org/kryptografie/einfuehrung.shtml, aufgerufen am 26.07.07 10 GOLDWASSER, Shafi; MICALI, Silvio; RACKOFF, Charles: „The Knowledge Complexity of Interactive Proof-Systems“. Proceedings of the 17th Annual ACM Symposium on Theory of Computing, ACM Press, 1985, S. 291 – 304 8 7 Eine Person A besitzt ein Geheimnis und muss eine Person B davon überzeugen, dass sie dieses Geheimnis kennt. Dies soll jedoch so gestaltet sein, dass Person B, die überzeugt werden soll, einerseits nichts (aber auch wirklich gar nichts) über dieses Geheimnis erfährt, andererseits aber nach Ablauf des Verfahren davon überzeugt ist, dass Person A das Geheimnis wirklich kennt.11 Diese Zero – Knowledge – Verfahren werden nun das Thema dieser Arbeit sein. Da sie jedoch ohne ein gewisses mathematisches und kryptographisches Vorwissen nur schwer verständlich sind, werden auch die Grundlagen, die zum Verständnis benötigt werden, in dieser Arbeit dargestellt. Im folgenden Kapitel werden wir jedoch zunächst den, in der Kryptographie sehr wichtigen, Begriff des „Protokolls“ näher erläutern. Im Anschluss daran werden wir uns mit der kryptographischen Grundlage der Zero – Knowledge - Verfahren, den „Public – Key – Verfahren“ beschäftigen, um dann mit zwei Beispielen fortzufahren, anhand derer wir zwei Fragen klären wollen: 1. Was macht ein Zero – Knowledge – Problem aus? 2. Welche Bedingungen muss ein Verfahren erfüllen, damit es ein Zero – Knowledge – Verfahren ist? In Kapitel 4 behandeln wir dann die mathematischen Grundlagen zu den Themen „Graphentheorie“ und „Kongruenzen und Restklassen“. Diese werden benötigt, um die mathematischen Inhalte der beiden Verfahren, die wir vorstellen wollen, zu verstehen. Dies wird in Kapitel 5 geschehen. Wir werden uns dabei mit zwei Verfahren auseinandersetzen, zum einen mit dem Verfahren „Isomorphie von Graphen“ und zum anderen mit dem „Fiat – Shamir – Algorithmus“. Weiter werden wir in diesem Kapitel auch auf die interessante Frage eingehen, was es für dieses Verfahren bedeuten würde, wenn bestimmte Grundlagen weg brächen. In Kapitel 6 wollen wir uns mit der Frage auseinandersetzen, inwieweit es sinnvoll sein kann, die Zero – Knowledge – Thematik bzw. entsprechende Verfahren in der Schule zu behandeln. Das abschließende Kapitel dieser Arbeit stellt der Artikel „How to explain Zero – Knowledge – Protocols to Your Children“ von Jean – Jacques Quisquater und Louis Guillou dar. Darin wird die Zero – Knowledge Thematik und insbesondere die Voraussetzungen, die an ein Verfahren geknüpft sind, damit es ein Zero – Knowledge – Verfahren ist, anschaulich erklärt. 11 http://de.wikipedia.org/wiki/Kryptographie, aufgerufen am 12.06.07 8 Zum einen eignet sich dieses Beispiel durch seine Anschaulichkeit und seinen etwas märchenhaften Charakter, um Kindern das Thema „Zero – Knowledge – Verfahren“ näher zu bringen, zum anderen stellt es in gewisser Weise eine Erläuterung dessen, was diese Verfahren eigentlich ausmacht, in spielerischer Weise dar. 1.3 Protokolle Ein wichtiger Begriff, der im Verlauf der Arbeit immer wieder auftauchen wird, ist der des „Protokolls“. Wir werden uns bei der Begriffsbestimmung im Wesentlichen an folgende Definition halten: „Wenn mehrere Personen oder Instanzen gemeinsam ein Ziel verfolgen, müssen sie kooperieren und zu diesem Zweck sinnvoll kommunizieren. Um ein Ziel durch Kommunikation zu erreichen, müssen sich die Personen an gewisse Regeln halten […]. Die Gesamtheit dieser Regeln nennt man ein Protokoll.“12. Weiter ist es wichtig zu wissen, dass die Begriffe „Protokoll“ und „Verfahren“ beinahe als Synonyme verwendet werden. Trotzdem bestehen minimale Differenzen hinsichtlich ihrer Definitionen: Der Begriff „Verfahren“ wird dabei hauptsächlich für generelle Vorgehensweisen benutzt, „Protokolle“ eher für konkrete Abläufe dieser Verfahren oder für Anwendungen.13 12 BEUTELSPACHER, Albrecht; SCHWENK, Jörg; WOLFENSTETTER, Klaus – Dieter: „Moderne Verfahren der Kryptographie“. Vieweg Verlag, 4. Auflage, 2001, S. 10 13 http://www.inf.tu-dresden.de/content/institutes/sya/dud/lectures/2007sommersemester/KPDatensicherheit/ v9_doku.pdf, aufgerufen am 26.05.07 9 2. Asymmetrische Verschlüsselungen – die Public – Key – Verfahren Wie bereits in der Einleitung erwähnt, muss man zwischen zwei Arten der Kryptographie unterscheiden, nämlich der klassischen und der modernen Kryptographie. Die Zero – Knowledge – Verfahren, die wir im weiteren Verlauf der Arbeit betrachten werden, basieren auf der von Hellman und Diffie entwickelten Public – Key – Kryptographie (was im wesentlichen äquivalent ist zum Begriff der modernen Kryptographie). Diese Art der Verschlüsselung zeichnet sich durch eine Asymmetrie der Schlüsselverteilung aus. Ist es bei symmetrischen Verfahren so, dass sowohl Sender als auch Empfänger einer Nachricht den gleichen Schlüssel benötigen, so liegt der Fortschritt der Public – Key – Verfahren nun darin, dass „jeder [Hervorhebung durch den Verfasser] einem Empfänger eine verschlüsselte Nachricht schicken [kann] – ohne irgendeine Geheiminformation zu besitzen.“14 Allerdings ist nur der Empfänger in der Lage, die Verschlüsselung wieder aufzuheben. Beutelspacher vergleicht dieses Verfahren in „Moderne Verfahren der Kryptographie“ mit einem Briefkasten: jede Person kann eine geheime Nachricht hineinwerfen, aber nur der Besitzer des Briefkastens kann diesen öffnen und die geheime Nachricht lesen. Etwas formaler formuliert laufen die Public – Key – Verfahren wie folgt ab: Zunächst erhält jeder Teilnehmer eines Systems einen privaten Schlüssel d T und einen öffentlichen Schlüssel eT (die Buchstaben „d“ und „e“ ergeben sich als Anfangsbuchstaben der englischen Wörter „decode“ – entschlüsseln und „encrpyt“ – verschlüsseln). Dabei ist der private Schlüssel d T auf jeden Fall geheim zu halten. Im Gegensatz hierzu wird eT veröffentlicht und damit vielen Personen zugänglich gemacht. Nehmen wir nun an, wir wollen einen Text m verschlüsseln (m heißt dann „Klartext“). Dazu benutzen wir einen Algorithmus f, der unter Einbeziehung des öffentlichen Schlüssels eT unserem Klartext m einen Geheimtext c zuordnet: c = f eT (m) . Umgekehrt ordnet dieser Algorithmus unter Einbeziehung unseres privaten Schlüssels d T jedem Text d, der vorher mit f chiffriert wurde, einen Klartext m’ zu: m' = f dT (d ) . Bei der Anwendung von f erhalten wir, unter Einbeziehung unserer Schlüssel eT und d T , somit zwei Funktionen: Eine Verschlüsselungsfunktion f eT und eine Entschlüsselungsfunktion f dT . 14 BEUTELSPACHER, Albrecht; SCHWENK, Jörg; WOLFENSTETTER, Klaus – Dieter: „Moderne Verfahren der Kryptographie“. Vieweg Verlag, 4. Auflage, 2001, S. 10 10 An diesen beiden Funktionen erkennt man, dass jede Person einen Klartext mit eT und dem Algorithmus f verschlüsseln, aber im Prinzip nur der Besitzer des privaten Schlüssel d T den so entstandenen Geheimtext wieder entschlüsseln kann. Für unseren Algorithmus f müssen dabei die beiden folgenden Regeln gelten: 1. Korrekte Entschlüsselung: Wurde ein Klartext m mit f eT zu dem Geheimtext c verschlüsselt, so muss die Anwendung von f dT auf den entstandenen Geheimtext c den Klartext m wieder hervorbringen: m' = f dT (c) = f dT ( f eT (m)) = m Diese Eigenschaft muss für alle Klartexte m gelten 2. Public – Key – Eigenschaft: Es muss praktisch unmöglich sein, aus der Kenntnis des öffentlichen Schlüssels eT den privaten Schlüssel d T erlangen zu können.15 Zur weiteren Verdeutlichung der Public – Key – Verfahren wollen wir noch ein zusätzliches Schaubild betrachten: Klartext m Verschlüsselung f eT Geheimtext c Entschlüsselung f dT Klartext m Diese Darstellung führt uns noch einmal die Funktionsweise der Public – Key – Verfahren vor Augen: Mit Hilfe des (öffentlichen) Verschlüsselungsalgorithmus f eT wird aus dem Klartext m der Geheimtext c. Dieser kann dann ausschließlich mit dem Entschlüsselungsalgorithmus f dT wieder dechiffriert werden. Genau von dieser Art sind auch die beiden Zero – Knowledge – Verfahren, die wir in den Kapiteln 5.1 und 5.2 betrachten werden. 15 Ebd., S. 10f 11 3. Heranführung an die Zero – Knowledge – Thematik anhand zweier Beispiele Nun kennen wir also die kryptographische Grundlage der Zero – Knowledge – Thematik. Dennoch bleibt die Frage, womit genau sich dieses Thema eigentlich beschäftigt… Wir wollen hierzu zwei Probleme betrachten, die den Charakter eines Zero – Knowledge – Problems besitzen. Dabei soll das erste Problem in einer gewissen spielerischen Weise vermitteln, was ein Zero – Knowledge – Problem eigentlich ausmacht. Das zweite wiederum wird mehr fachlicher Natur sein und aufzeigen, welche Bedingungen an ein Verfahren geknüpft sind, so dass es zu einem Zero – Knowledge – Verfahren wird. 3.1 Das „Wo ist Walter – Problem“ In den „Wo ist Walter“ Suchbildern von Martin Handford geht es darum, auf einem großen, sehr detaillierten Bild, auf dem sehr viele unterschiedliche Personen zu sehen sind, eine bestimmte Person (Walter) zu finden. Walter sieht folgendermaßen aus: Abbildung 1: Walter16 Ein solches Suchbild ist auf der folgenden Seite abgebildet… 16 HANDFORD, Martin: „Wo ist Walter?“. Sauerländer Verlag, 4. Auflage, 2001, vorderer Vorsatz 12 Abbildung 2: „Wo ist Walter“ – Suchbild17 17 HANDFORD, Martin: „Wo ist Walter?“. Sauerländer Verlag, 4. Auflage, 2001, S. 24 13 Der interessierte Leser sollte sich an dieser Stelle die Frage stellen: „Wo ist eigentlich Walter?“. Da die beiden Personen, die wir nun gleich einführen werden, vor genau dem gleichen Problem stehen, sei dem interessierten Leser das Suchen selbst überlassen… ☺ Nehmen wir an, diese zwei Personen, nennen wir sie Alice und Bob, starten einen kleinen Wettstreit: Wer Walter auf diesem Suchbild zuerst gefunden hat, hat gewonnen. Nachdem die beiden eine Weile gesucht haben, sagt Alice, sie habe Walter entdeckt. Bob glaubt ihr allerdings nicht. Auch nach mehrmaligem Versichern, dass sie nicht lüge, ändert Bob seine Meinung nicht. Nun stellt sich für Alice folgendes Problem: Wie kann sie Bob davon überzeugen, dass sie den Ort, an dem Walter abgebildet ist, kennt, ohne diesen jedoch zu verraten? Insbesondere soll Bob bei der Lösung dieses Problems auch nichts über die Umgebung lernen, in der sich Walter befindet. Ich habe diese Frage auch in meinem Bekanntenkreis gestellt und bekam oft die Antwort „einfach die Lösung aufschreiben und wenn Bob Walter ebenfalls gefunden hat, die Lösungen vergleichen“. Dieses Verfahren löst das Problem jedoch nicht. Zum einen müsste Alice warten, bis auch Bob Walter entdeckt hat. Zum anderen, und das ist in diesem Zusammenhang wesentlich gravierender, müsste Alice dann die Position von Walter trotzdem verraten. Dies war aber gerade nicht der Sinn einer Lösung dieses Problems. Wir müssen uns folglich andere Verfahren überlegen, die es Alice ermöglichen, Bob glaubhaft zu versichern, dass sie den Ort, an dem Walter abgebildet ist, kennt, ohne ihm diesen zu verraten. Für die erste Lösung benötigen Alice und Bob ein Stück Karton, das sowohl doppelt so lang als auch doppelt so breit ist, wie das Suchbild. In diesem Karton muss eine Aussparung vorhanden sein, gerade so, dass man Walter darin erkennen kann, wenn man den Karton auf das Suchbild legt. Um Bob nun zu beweisen, dass sie Walters Aufenthaltsort kennt, legt Alice den Karton auf das Suchbild, genau so, dass Walter in der Aussparung erscheint (siehe hierzu nebenstehendes Bild). Bob darf ihr dabei natürlich nicht zusehen, da er ja sonst etwas über den Ort lernen würde, an dem Walter abgebildet ist. Im Anschluss daran zeigt Alice Bob das entstandene Bild. Da er nun Walter selbst sieht, sollte er davon überzeugt sein, dass Alice den Aufenthaltsort von Walter kennt. 14 Zuletzt wird der Karton wieder von dem Suchbild entfernt. Wichtig an diesem Verfahren ist, dass Bob mit dem Wissen darum, dass Alice den Ort, an dem Walter abgebildet ist, kennt, nichts anfangen kann. Insbesondere hat er nicht erfahren, wo sich Walter befindet. Er kann aus dem neu gewonnenen Wissen also selbst keinen Nutzen ziehen. Eine zweite Möglichkeit, wie Alice Bob von ihrem Wissen überzeugen kann, ist die folgende: Die beiden benötigen für dieses Verfahren zunächst einen Kopierer, mit dem sie eine Kopie des Suchbilds erstellen. Anschließend schneidet Alice Walter aus der Kopie heraus, wobei Bob natürlich wiederum nicht zusehen darf. Die Reste der Kopie werden vernichtet, damit Bob nicht anhand derer die Position von Walter herausfinden kann. Nun kann Alice Bob ihr ausgeschnittenes Bild von Walter zeigen, was Bob in gewisser Weise davon überzeugen sollte, dass Alice den Aufenthaltsort von Walter kennt. Bob zweifelt jedoch nach wie vor an dem Wissen von Alice, begründet auf das Argument, dass Alice ihm auch ein Bild von Walter, welches sie von einem anderen Suchbild ausgeschnitten hat, zeigen könnte. Anders formuliert: die Sicherheit, dass Alice ihm wirklich den Walter zeigt, der sich auch auf dem Suchbild befindet, das die beiden betrachteten, ist Bob nicht hoch genug. Auch dieses Problem können die beiden relativ leicht lösen. Nach dem Kopieren des Suchbilds zeichnet Bob ein unregelmäßiges Muster (am besten eignen sich hier wohl unregelmäßige Spiralen, Ellipsen oder Karos) auf die Rückseite der Kopie. Dann schneidet Alice wiederum Walter aus der Kopie heraus, die Reste des Papiers werden vernichtet. Nun hat sie ein Abbild von Walter mit einem speziellen Muster auf der Rückseite, das sie nicht im Voraus hätte erraten können. Dieses Bild zeigt sie Bob, der nun anerkennen muss, dass Alice den Aufenthaltsort von Walter kennt. Sein vorheriger Einwand ist ausgeräumt, da er anhand des Musters auf der Rückseite erkennen kann, ob der Bildausschnitt tatsächlich von der Kopie stammt, oder bereits vor dem Erstellen der Kopie existierte.18 Alice hat mit diesen zwei Lösungen (mit diesen zwei Verfahren) jedes Mal ihr Ziel erreicht: Sie hat Bob nichts über den Ort verraten, an dem Walter abgebildet ist (insbesondere auch nichts über die Umgebung) und trotzdem glaubt ihr Bob ihre Behauptung. Das Problem, das sich Alice am Anfang stellte, kann man als Zero – Knowledge – Problem ansehen: Alice will Bob einerseits glaubhaft versichern, dass sie ein bestimmtes Wissen besitzt, andererseits will sie ihm dieses Wissen jedoch nicht verraten. 18 http://www.wisdom.weizmann.ac.il/~naor/PUZZLES/waldo.html, aufgerufen am 28.05.07 15 Genau diese Problematik macht die Zero – Knowledge – Verfahren interessant. Die beiden Verfahren, die wir in diesem Kapitel betrachtet haben, eignen sich sehr gut als Lösung des oben genannten Problems, können jedoch nicht als „Zero – Knowledge – Verfahren“ im eigentlichen Sinne bezeichnet werden. Dafür müssen nämlich drei Bedingungen erfüllt sein, auf die wir im nächsten Kapitel eingehen werden. 3.2 Die magische Tür Wir wollen nun ein Beispiel behandeln, mit dessen Hilfe wir herleiten werden, welche Bedingungen ein Verfahren erfüllen muss, damit es ein Zero – Knowledge – Verfahren ist. Wie im vorherigen Kapitel benötigen wir wiederum zwei Personen: 1. Frau A, die sich im Besitz eines streng geheimen Zauberspruchs befindet, der eine ganz bestimmte „magische Tür“ öffnet, und deren Gesicht niemand kennt 2. Herr B, ein Kontrolleur, der sich von der Identität von Frau A überzeugen will Da niemand das Aussehen von Frau A kennt, hat die einzige Möglichkeit, wie sie ihre Identität nachweisen kann, mit ihrem geheimen Zauberspruch zu tun. Sie ist schließlich die einzige Person, die diesen kennt, und kann sich so über ihren Zauberspruch „ausweisen“. Natürlich wäre es auch möglich, sie anhand ihres Personalausweises zu kontrollieren. Dies birgt jedoch immer die Gefahr in sich, dass sich eine Betrügerin ihren Ausweis gefälscht hat und sich als Frau A ausgibt. Herr B hätte dann nicht die Möglichkeit, diese zu entlarven (zumindest nicht, wenn er sich lediglich auf die Überprüfung des Ausweises beschränkt). Damit Herr B nun die Identität von Frau A überprüfen kann, führen beide ein Verfahren durch, für das sie folgendes Gebäude benötigen: magische Tür Frau A Linke Tür Rechte Tür Kontrolleur Herr B Vorraum 16 Die „magische Tür“ in dem Gebäude ist gerade die Tür, die nur durch den Zauberspruch von Frau A geöffnet werden kann und durch nichts sonst. Aus diesem Grund ist das Gebäude auch genau so konstruiert, wie es ist: bei einem anderen Grundriss wäre es eventuell nicht möglich, dass Frau A den Kontrolleur B von ihrer Identität überzeugt, ohne dass dieser ihren geheimen Zauberspruch erfährt. Zudem nimmt Herr B seine Sicht der nun folgenden Interaktion mit einer Videokamera auf Band auf. Die so entstehende Videokassette nennen wir ein Protokoll. Das Verfahren an sich läuft dann folgendermaßen ab: 1. Frau A begibt sich in den Vorraum und schließt die Eingangstür hinter sich. Dann wählt sie eine der beiden Türen, die vor ihr sind, also entweder die linke oder die rechte, geht in den von ihr gewählten Gang und schließt auch dort wieder die Tür hinter sich. 2. Nun betritt der Kontrolleur Herr B den Vorraum. Er weiß natürlich nicht, in welchem der beiden Gänge sich Frau B befindet und hat auch keinerlei Anhaltspunkte dafür. Auch er sucht sich nun eine Seite heraus und ruft entweder „links“ oder „rechts“. Dann erwartet er, dass Frau A aus der von ihm genannten Tür herauskommt. 3. Befindet sich Frau A zufällig auf der Seite, die Herr B gerufen hat, so kann sie einfach zu der entsprechenden Tür herauskommen. Nennt B jedoch die Seite, auf der sie sich gerade nicht befindet, so muss Frau A ihren Zauberspruch anwenden, um die magische Tür zu öffnen und so in den jeweils anderen Gang zu gelangen. Nur so kann sie B’s Wunsch auch erfüllen und auf der von ihm gewählten Seite herauskommen. 4. Dieses Verfahren wird nun t – mal wiederholt, sooft, bis Herr B davon überzeugt ist, dass Frau A den Zauberspruch auch wirklich kennt. Damit hat sie ihre Identität dem Kontrolleur gegenüber nachgewiesen. 5. Als Ergebnis dieses Verfahrens bleibt die Aufzeichnung der Kamera von Herrn B. Auf dieser ist t – mal folgendes zu sehen: A verschwindet in dem Gebäude. Dann betritt B den Vorraum, ruft entweder „links“ oder „rechts“ und A kommt zu der von B geforderten Tür heraus. 17 Dieses Verfahren erfüllt nun die drei Bedingungen, die an ein Zero – Knowledge – Verfahren gestellt werden: • Wenn Frau A den Zauberspruch kennt, kann sie jedes Mal dem Wunsch des Kontrolleurs nachkommen, auf der entsprechenden Seite heraustreten und so ihre Identität beweisen. Diese Bedingung nennt man Vollständigkeit. • ~ Nehmen wir an, eine Frau A , die das Geheimnis nicht kennt, möchte sich als Frau A ausgeben. Um sich gegenüber dem Kontrolleur B als Frau A auszuweisen, muss natürlich auch sie das oben genannte Verfahren durchlaufen. Sie geht also in den Vorraum, wählt eine der beiden Türen vor ihr, begibt sich in den entsprechenden Gang und schließt die Tür hinter sich. Dann betritt Herr B den Vorraum, ruft entweder „links“ oder „rechts“ und erwartet, dass sich die vermeintliche Frau A auf der entsprechenden Seite zeigt. ~ Da sowohl die Wahl von B als auch die von A zufällig geschieht, ist die ~ Wahrscheinlichkeit dafür, dass A sich gerade auf der von B gewünschten Seite befindet, gerade 1 . Da dieses Verfahren jedoch nicht nur einmal, sondern 2 ~ t – mal durchgeführt wird, ist die Wahrscheinlichkeit, dass A sich immer auf ( 2 ) . Bei t = 20 Durchgängen liegt diese der von B genannten Seite befindet 1 t Wahrscheinlichkeit bereits bei ≈ 0,95 *10 −6 und ist folglich sehr gering. Natürlich ist es B möglich, durch eine häufigere Durchführung des Verfahrens diese Wahrscheinlichkeit weiter zu minimieren. Auf diese Weise kann er die Gefahr, eine Person, die den geheimen Zauberspruch in Wirklichkeit gar nicht kennt, fälschlicherweise als Frau A zu identifizieren, beinahe komplett beseitigen. ~ Somit ist es einer Person A , die den geheimen Zauberspruch nicht kennt, praktisch nicht möglich, sich als Frau A auszugeben. Diese Bedingung nennt man Korrektheit. 18 • Die letzte Bedingung, die erfüllt sein muss, damit es sich bei dem oben genannten Verfahren um ein Zero – Knowledge – Verfahren handelt, ist die Zero – Knowledge – Eigenschaft. Der Begriff „Zero – Knowledge“ bedeutet in diesem Zusammenhang, dass während des Verfahrens keinerlei Wissen von Frau A auf Herrn B übertragen wird, er also nach Ablauf des Protokolls nicht mehr weiß, als dass Frau A den geheimen Zauberspruch kennt. Da dies nicht ohne weiteres zu beweisen ist, benötigen wir zunächst eine Definition des Begriffs „Zero – Knowledge“, die es uns erlaubt, zu beweisen, dass während des Verfahrens keine Informationen übertragen werden. Dazu erinnern wir uns zunächst daran, dass das ganze Verfahren, dass Frau A und Herr B durchführen, von dem Kontrolleur auf einem Band festgehalten wird. Dieses Band zeigt t – mal die in Schritt 5. genannten Dinge (siehe hierzu Seite 17). Die Zero – Knowledge – Eigenschaft ist nun genau dann erfüllt, wenn es dem Kontrolleur Herrn B zusammen mit einer beliebigen Frau M, die sich im Allgemeinen nicht im Besitz des geheimen Zauberspruchs befindet, gelingt, ein vom Originalband nicht unterscheidbares Video herzustellen. Eine formale Definition könnte dann wie folgt lauten: „Eine Interaktion [(diese ist unser vorgestelltes Verfahren)] zwischen der Geheimnisträgerin A und [dem Kontrolleur] B besitzt genau dann die Zero – Knowledge – Eigenschaft, wenn es“19 B zusammen mit einem Simulator M möglich ist, die Interaktion, die auf dem Band zu sehen ist, so zu rekonstruieren, dass das so entstandene Video von einem Außenstehenden nicht vom Originalband unterschieden werden kann. Diese Definition ist durchaus sinnvoll. Schließlich ist alles, was ein Angreifer bei diesem Zero – Knowledge – Verfahren lernen kann, auf dem von Herrn B gedrehten Videoband festgehalten. Es ist allerdings möglich, dieses Band ohne das Wissen um den geheimen Zauberspruch aufzunehmen (dazu gleich mehr). 19 BEUTELSPACHER, Albrecht; SCHWENK, Jörg; WOLFENSTETTER, Klaus – Dieter: „Moderne Verfahren der Kryptographie“. Vieweg Verlag, 4. Auflage, 2001, S. 45 19 „Wenn man jedoch keine Information hineinstecken muss [um es zu produzieren], dann kann man (so die Schlußfolgerung) auch keine Information herausholen.“20 Natürlich interessiert uns nun, wie Kontrolleur B zusammen mit Simulator M das Videoband ohne das Wissen des Zauberspruchs reproduzieren kann. Die beiden stellen hierzu einfach die Abläufe des ursprünglichen Bands nach. 1. Simulator M (der natürlich in diesem Fall weiblich sein muss…) begibt sich in das Gebäude und schließt die Tür hinter sich. Dann versucht sie, die anschließende Frage des Kontrolleurs zu erraten und verschwindet hinter der Tür, von der sie vermutet, dass Herr B danach fragen wird. 2. Dann betritt Herr B den Vorraum und ruft „links“ oder „rechts“. 3. Nun muss M die Anfrage von B erfüllen: a) Befindet sich M dabei zufällig auf der Seite, die B gefordert hat, so kann sie dessen Bitte nachkommen und einfach heraustreten. Anschließend wird die nächste Szene gedreht. Das Verfahren startet also wieder bei 1. b) Ist M jedoch auf der falschen Seite, so bleibt ihr nichts anderes übrig, als durch die falsche Tür herauszukommen. Der Grund hierfür ist, dass sie den Zauberspruch nicht kennt, der die magische Tür öffnen und so dazu führen würde, dass sie durch die richtige Tür herauskommen kann. 4. Tritt Fall 3 b) ein, so löscht B einfach die soeben gedrehte Szene und die beiden starten noch einmal von neuem. Dieses Verfahren wiederholen B und M sooft, bis sie t – viele Szenen haben, in denen M aus der von B geforderten Tür kommt. Da die Wahrscheinlichkeit dafür, dass M hinter der gleichen Tür verschwindet, die später von B gefordert wird, bei 1 2 liegt, dürften die beiden für die Reproduktion des Videobands im Schnitt 2t – viele Versuche benötigen.21 Statt eines Kontrolleurs werden wir im weiteren Verlauf der Arbeit von einem „Verifizierer“ sprechen. Dieser hat die gleiche Aufgabe, wie der Kontrolleur Herr B: er soll sich von der Identität einer Person oder eines Gerätes, das einer Person zugeordnet ist, überzeugen und wenn es sich um die entsprechende Person handelt, diese bestätigen, sie „verifizieren“. 20 21 Ebd., S. 46 Ebd., S. 44 ff 20 Nun wollen wir noch einmal kurz zusammenfassen, welche Bedingungen ein Verfahren erfüllen muss, damit es ein Zero – Knowledge – Verfahren ist. Hierzu nehmen wir an, dass ausschließlich ein bestimmtes Geheimnis zur Verifikation einer Person benutzt werden darf. 1. Vollständigkeit: Kennt eine Person dieses Geheimnis, so wird sie immer von dem Verfizierer verifiziert werden. 2. Korrektheit: Es ist möglich, eine Person, die das Geheimnis nicht besitzt, mit beliebig hoher Wahrscheinlichkeit als eine solche zu entlarven. 3. Zero – Knowledge – Eigenschaft: Es muss möglich sein, die Interaktion (das Protokoll), die zur Verifikation der Person, die das Geheimnis kennt, geführt hat, ohne das Wissen um das Geheimnis, nachzustellen. Dies muss in der Form geschehen, dass die so entstandene Interaktion von einem Außenstehenden nicht von der Originalinteraktion zu unterscheiden ist. 21 4. Die mathematischen Grundlagen In den folgenden Kapiteln werden wir die mathematischen Grundlagen besprechen, die wir später für die Erörterung der beiden Zero – Knowledge – Verfahren benötigen. Dabei beziehen sich die Ausführungen zu Kapitel 4.1 „Graphentheorie“ im Wesentlichen auf das Buch „Discrete Mathematics And Its Applications“ von Kenneth Rosen. Das Kapitel 4.2 „Kongruenzen und Restklassen“ beinhaltet als Grundlage zahlentheoretische Überlegungen und bezieht sich auf das Werk „Zahlentheorie“ von Harald Scheid. Sollten die hier vorliegenden Ausführungen zu den beiden Themen zum Verständnis nicht ausreichen, seien dem geneigten Leser durchaus diese beiden Bücher zum Nachschlagen ans Herz gelegt. 4.1 Graphentheorie 4.1.1 Definition: Graph Ein Graph G besteht aus einer nichtleeren Menge V von Knoten und einer Menge E von ungeordneten Paaren aus der Menge V, die Kanten genannt werden. Man schreibt einen Graphen folgendermaßen: G = (E, V). Ein Graph könnte z. B. so aussehen: Dabei besteht die Knotenmenge V aus den Knoten a, b, c, d und e, also V = {a, b, c, d, e}. Zudem haben wir folgende Kanten vorliegen: [a,b], [a,e], [b,e], [c,d] und [d,e]. Die Kantenmenge E besteht dann genau aus diesen Kanten: E = {[a,b], [a,e], [b,e], [c,d], [d,e]}. Achtung: Wir gehen bei unseren Überlegungen davon aus, dass jedes Knotenpaar des Graphen durch maximal eine Kante verbunden wird! (Man spricht in diesem Zusammenhang von „einfachen Graphen“.) 22 4.1.2 Definition: Untergraph Ein Untergraph eines Graphen G = (V, E) ist ein Graph H = (W, F), wobei gilt, dass die Knotenmenge des Graphen H eine Teilmenge der Knotenmenge von G ( W ⊆ V ) und die Kantenmenge von H eine Teilmenge der Kantenmenge von G ( F ⊆ E ) ist. So ist z. B. die Knotenmenge {a,b,e} zusammen mit den Kanten [a,b], [b,e] und [a,e] ein Untergraph des letzten Beispiels. 4.1.3 Definition: Adjazente (benachbarte) Knoten Zwei Knoten u und v eines Graphen G heißen adjazent, wenn [u,v] eine Kante des Graphen G ist. Im oben genannten Beispiel sind folgende Knoten adjazent, da eine Kante zwischen ihnen existiert: a und b, a und e, b und e, c und d, d und e. 4.1.4 Definition: Grad eines Knotens Der Grad eines Knotens v entspricht der Anzahl der Kanten, die an diesem Knoten anliegen. Er wird geschrieben als deg(v). Wir wollen den Grad der Knoten im ersten Beispiel herausfinden. Dazu zählen wir einfach die Kanten, die den Knoten verlassen. deg(a) = 2, deg(b) = 2, deg(c) = 1, deg(d) = 2, deg(e) = 3 4.1.5 Definition: Kantenzug Sei G = (E, V) ein Graph und u, v ∈ V beliebig. Dann nennen wir eine Abfolge von Kanten [ xo , x1 ], [ x1 , x 2 ], ..., [ x n −1 , x n ] mit x0 = u und x n = v einen Kantenzug von u nach v. Dabei entspricht die Länge eines Kantenzuges der Anzahl der Kanten, die er beinhaltet. Wir betrachten hierzu ein einfaches Beispiel und nehmen uns den folgenden Graphen: Ein Kantenzug der Länge 4 ist z. B. {[a,e],[e,d],[d,c],[c,b]}, einer der Länge 3 z. B. {[b,c],[c,d],[d,e]} usw. Dieser Graph besitzt natürlich unendlich viele Kantenzüge. 23 4.1.6 Definition: Kreis Ein Kantenzug { [ xo , x1 ], [ x1 , x 2 ], ..., [ x n −1 , x n ] } heißt Kreis, wenn x0 = x n gilt, wobei n ≥ 3 . 4.1.7 Definition: Isomorphie zweier Graphen Zwei Graphen G = (E, V) und G’ = (E’, V’) heißen isomorph, wenn eine bijektive Abbildung σ existiert, mit der gilt: σ(G) = G’. Genauer formuliert bedeutet dies: Die beiden Graphen sind isomorph, wenn die Knotenmenge E mit der bijektiven Abbildung σ so auf E’ abgebildet wird, dass für alle Knoten a, b ∈ E gilt: Sind a und b durch eine Kante verbunden, so sind dies auch σ(a) und σ(b). 4.1.7.1 Kriterien zum Ausschluss der Isomorphie zweier Graphen In diesem Zusammenhang stellt sich die Frage: Welche Bedingungen führen dazu, dass zwei Graphen als isomorph gelten? Kurz gesagt: wenn man einen Isomorphismus findet, der den einen Graphen auf den anderen abbildet. Im Allgemeinen sind diese Abbildungen jedoch nicht leicht zu finden, da man speziell Rücksicht auf folgende Punkte nehmen muss: • Die beiden Graphen müssen die gleiche Anzahl Knoten und Kanten haben. • Insbesondere muss die Anzahl der Knoten eines bestimmten Grades übereinstimmen. • Beide Graphen müssen die gleiche Anzahl von Kreisen einer bestimmten Länge besitzen. Sind diese Punkte erfüllt, so bedeutet dies noch nicht, dass die beiden untersuchten Graphen wirklich isomorph sind. Ist jedoch eine der Bedingungen nicht erfüllt, so lässt sich bereits aussagen, dass kein Isomorphismus existiert, der den einen Graphen auf den anderen abbildet. 24 Zur Veranschaulichung der oben genannten Bedingungen behandeln wir zwei Beispiele: Beispiel a) Graph G Graph H Um herauszufinden, ob es möglich ist, dass die beiden Graphen isomorph sind, untersuchen wir die oben genannten Punkte: • Beide Graphen haben je 6 Knoten und 8 Kanten. • Beide Graphen haben 2 Knoten mit Grad 2 (G: a, d / H: a,d) und 4 Knoten mit Grad 3 (G: b, c, e, f / H: b, c, e, f). • G besitzt einen Kreis der Länge 3 {[a,b], [b,f], [f,a]}. H hat keinen Kreis der Länge 3. Da dies jedoch eine notwendige Bedingung für die Existenz eines Isomorphismus zwischen G und H darstellt, können die beiden Graphen nicht isomorph sein. Beispiel b) Graph G Graph H Sind diese Graphen isomorph? • Beide besitzen je 5 Knoten und 6 Kanten. • Beide haben je 3 Knoten mit Grad 2 (G: b, d, e / H: b, d, e) und 2 Knoten mit Grad 3 (G: a, c / H: a, c) • Beide beinhalten einen Kreis der Länge o 3: G: {[a,b], [b,c], [c,a]} / H: {[a,c], [c,d], [d,a]} o 4: G: {[a,c], [c,d], [d,e], [e,a]} / H: {[a,e], [e,b], [b,c], [c,a]} o 5: G: {[a,b], [b,c], [c,d], [d,e], [e,a]} / H: {[a,e], [e,b], [b,c], [c,d], [d,a]} Die oben genannten Bedingungen sind alle erfüllt. Folglich besteht durchaus die Möglichkeit, dass G und H isomorph sind. Wir kennen nun also Kriterien, mit denen wir die Existenz eines Isomorphismus zwischen zwei Graphen ausschließen können. 25 4.1.7.2 Methode zum Auffinden eines Isomorphismus zwischen zwei Graphen Nehmen wir an, wir hätten bei einer Untersuchung zweier Graphen die Möglichkeit von deren Isomorphie festgestellt (dies würde Beispiel b) entsprechen): Graph G Graph H Dann stellt sich unter Annahme der Isomorphie in diesem Zusammenhang die Frage: wie findet man einen Isomorphismus zu diesen zwei Graphen? Dazu durchlaufen wir die Kantenzüge, so dass adjazente Knoten denselben Grad haben. Suchen wir z. B. einen Isomorphismus zwischen den beiden Graphen G und H, so sieht dies folgendermaßen aus: Haben die Knoten in Graph G beim Durchlaufen eines Kantenzuges, der alle Knoten des Graphen beinhaltet, nacheinander Grad 2, 4, 2, 5 und 3, so muss diese „Grad – Abfolge“ der Knoten auch für einen Kantenzug innerhalb des Graphen H existieren. Zur weiteren Verdeutlichung betrachten wir die Graphen G und H aus dem oben genannten Beispiel: Wir starten in Graph G mit Knoten a (Grad 3) zu Knoten b (Grad 2), durchlaufen die Knoten c (Grad 3) und d (Grad 2) und enden mit Knoten e (Grad 2). Nun müssen wir H so durchlaufen, dass die Knoten nacheinander vom Grad 3, 2, 3, 2 und 2 sind. Dies ist beispielsweise für die Abfolge c, d, a, e, b der Fall. Ein Isomorphisus σ, der G auf H abbildet, ist also: a b c d e (sprich Knoten a wird auf c abgebildet, b auf d, c auf a usw.) σ = c d a e b Neben dieser Schreibweise hat sich die so genannte Zykelschreibweise (aus der Zuordnung zweier Mengen) etabliert, da man hier den Isomorphismus in einer Zeile zusammenfassen kann. Zu deren Erläuterung benutzen wir unser Beispiel. In der Zykelschreibweise sieht der Isomorphismus σ wie folgt aus: (ac)(bde). Dies bedeutet, dass a auf c abgebildet wird. Nach dem Knoten c wird die Klammer geschlossen, da das Bild von c wieder der Anfangsknoten a ist. Weiter geht es mit b, das auf d abgebildet wird, das wiederum auf e und das anschließend wieder auf b. 26 Dass diese Schreibweise insbesondere bei größeren Graphen einen Schreibvorteil bietet, dürfte wohl klar sein. 4.1.8 Algebraische Darstellung von Graphen Da die grafische Darstellung eines Graphen mit seinen Knoten und Kanten relativ unhandlich ist, benötigt man zusätzlich eine algebraische Darstellung. Dies geschieht insbesondere unter Verwendung von Matrizen, den so genannten Adjazenzmatrizen. Für einen Graphen G mit n Knoten ist die Adjazenzmatrix A die n × n Matrix, die eine 1 an der (i, j) – ten Stelle hat, wenn die Knoten vi und v j adjazent sind, und eine 0, wenn sie dies nicht sind. Hierbei ist wichtig, die Zeilen und Spalten der Matrix einheitlich durchzunummerieren. Darauf werden wir in dem folgenden Beispiel näher eingehen: Wir wollen zu diesem Graph die Adjazenzmatrix erstellen. Dazu betrachten wir zunächst den Knoten a hinsichtlich der Kanten zu anderen Knoten. a besitzt Kanten zu b, c und e, nicht aber zu d. Folglich steht bei dem (a, b) –, dem (a, c) – und dem (a, e) – Eintrag in der Matrix eine 1 und bei dem (a, d) – Eintrag eine 0. Dieses Verfahren wird nun mit allen Knoten durchgeführt und bringt uns dann zu folgender Matrix: 0 1 A = 1 0 1 1 0 1 0 0 1 1 0 1 0 0 0 1 0 1 1 0 0 1 0 In der ersten Zeile wird hierbei mit 0 oder 1 eingetragen, ob (der Reihe nach) die Knoten a, b, c, d und e mit a adjazent sind: a und a sind nicht adjazent, deshalb ein 0 – Eintrag, a und b sind es, daher eine 1, a und c sind es ebenfalls, was wieder zu einer 1 führt, a und d sind wiederum nicht adjazent, also ein 0 – Eintrag, a und e sind es hingegen wieder, was einen 1 – Eintrag nach sich zieht. Nun wird das gleiche Verfahren in der zweiten Zeile für den Knoten b vollführt, in der dritten für c usw. Führen wir dieses Verfahren für alle Knoten durch, erhalten wir die oben genannte Matrix. 27 Man kann bei der Erstellung der Adjazenzmatrizen deren Symmetrie ausnutzen. Die Begründung hierfür ist trivial: Besteht in einem Graphen zwischen den Knoten a und b eine Kante, so auch zwischen b und a. Sind die beiden Knoten nicht adjazent, gilt das entsprechende. Folglich müssen der (a, b) – und der (b, a) – Eintrag der Matrix gleich sein. Mit den Adjazenzmatrizen besitzen wir nun eine übersichtliche und handliche Darstellungsform für Graphen. 4.2 Kongruenzen und Restklassen 4.2.1 Kongruenzen Definition: Sei m ∈ . Lassen a und b ∈ bei Division durch m denselben Rest, so können wir a und b in folgender Form darstellen: a = z1 * m + r ; b = z 2 * m + r . Dann nennen wir a und b kongruent modulo m und schreiben dafür a ≡ b mod m (in Zukunft a = b mod m). Gilt nun a = b mod m, so ist dies äquivalent zur der Aussage, dass m Teiler der Differenz von a und b ist: a = b mod m ⇔ m a − b [Begründung: Mit a = z1 * m + r und b = z 2 * m + r ergibt sich: a − b = z1 * m + r − ( z 2 * m + r ) = m * ( z1 − z 2 ) .] Eine Folgerung daraus ist: a = b mod m a – b = 0 mod m. Beispiele zur Verdeutlichung: a) Die beiden Zahlen 19 und 51 sind modulo 8 kongruent, denn 8 | 51 – 19 = 32 bzw. 8 | 19 – 51 = -32. Diese Aussagen sind richtig. Folglich gilt: 51 – 19 = 0 mod 8 51 = 19 mod 8 (bzw. 19 – 51 = 0 mod 8 19 = 51 mod 8). b) Die Zahlen 13 und 17 sind mod 3 inkongruent, denn die Differenz der beiden ergibt 17 – 13 = 4 und 3 ist kein Teiler von 4. Dies bedeutet, dass 13 ≠ 17 mod 3 (mod 2 wären die beiden Zahlen wieder kongruent). 28 Die genannte Kongruenz mod m bildet eine Äquivalenzrelation auf , da sie folgende Eigenschaften besitzt: a) Reflexivität: a = a mod m denn m | a – a = 0 b) Symmetrie: a = b mod m b = a mod m a und b seien von der Form, die sie in der ersten Definition besitzen. Für a = b mod m gilt m | a – b: m z1 * m + r − ( z 2 * m + r ) = m * ( z1 − z 2 ) Für b = a mod m gilt m | b – a: m z 2 * m + r − ( z1 * m + r ) = m * ( z 2 − z1 ) c) Transitivität: a = b mod m ∧ b = c mod m a = c mod m a, b und c lassen sich also wie folgt schreiben: a = z1 * m + r b = z2 * m + r c = z3 * m + r Somit gilt für die Differenz von a und c: a − c = z1 m + r − ( z 3 m + r ) = m * ( z1 − z 3 ) . Diese Differenz lässt sich also als Vielfaches von m darstellen. Folglich ist m ein Teiler von (a – c): m | (a – c) . Diese Aussage ist wiederum äquivalent zu a = c mod m. 4.2.2 Restklassen 4.2.2.1 Grundlegendes Durch diese Äquivalenzrelation erhalten wir Äquivalenzklassen, die Restklassen modulo m. Die Restklasse a mod m besteht aus allen ganzen Zahlen, die bei der Division durch m den gleichen Rest wie a hinterlassen. Statt a mod m schreibt man kürzer [a ]m oder einfach [a ] , wenn klar ist, mit welchem m gerechnet wird. 29 Die Restklassen werden durch die Angabe eines Vertreters beschrieben, einem so genannten Repräsentanten. Zum Modul m existieren trivialerweise m verschiedene Restklassen: [0]m , [1]m , [2]m , ... [m − 1]m Die Menge aller Restklassen mod m wird mit ( / m) bezeichnet. Beispiel für eine Restklassenmenge: Die Restklassen mod 8: ( / 8 )= {[0],[1],[2],[3],[4],[5],[6],[7]} Nach der 7 (= m-1) geht der Zyklus wieder von vorne los: 8 mod 8 = 0, 9 mod 8 = 1 usw. In diesen Restklassen werden Rechenregeln definiert: [a]m + [b]m = [a + b]m [a]m * [b]m = [a * b]m (modulare Addition) (modulare Multiplikation) Diese „neuen“ Rechenregeln für die Addition und die Multiplikation von Restklassen sind also über Addition und Multiplikation in definiert. Zudem besitzen diese Verknüpfungen zusammen mit den Restklassen eine gewisse mathematische Struktur: • Beide Verknüpfungen sind sowohl assoziativ, als auch kommutativ. • Das neutrale Element bezüglich der Addition ist [0], bezüglich der Multiplikation ist es [1]. • Zu der Addition existiert ein inverses Element, nämlich – [a], welches definiert wird durch – [a] := [-a] • Zudem gilt für „ * “ ein Distributivgesetz. Durch diese Eigenschaften werden die Restklassen modulo m bezüglich der Verknüpfungen „ + “ und „ * “ zu einem kommutativen Ring mit Einselement. Ist m eine Primzahl, so ist der Restklassenring mod m sogar ein Körper. Der Einfachheit halber wird in dieser Arbeit auf die eckigen Klammern und die Indizes verzichtet, d.h. dass z. B. die Restklasse 1 mod 5, bisher geschrieben als „ [1]5 “, einfach als „1 mod 5“ geschrieben wird, bzw. nur als „1“ wenn klar ist, um welchen Modul es sich handelt. 30 4.2.2.2 Prime Restklassen Definition a mod m heißt prime Restklasse, wenn a und m teilerfremd sind, d.h. ggT (a, m) = 1. Es gilt, dass a + mk mod m = a mod m (Begründung: mk ist mod m = 0, denn es gilt, dass m die Differenz mk – 0 teilt). Folglich ist mit dem Repräsentanten a auch jedes Element von a mod m teilerfremd zu m (also a+m, a-m, a+2m, a-2m usw.). In diesem Zusammenhang benötigen wir natürlich eine Bezeichnung für die Menge aller primen Restklassen mod m. Diese werden wir in Zukunft als ( / m)* schreiben. Beispiel für prime Restklassen: Die Menge der primen Restklassen mod 8: ( / 8)* = {1, 3, 5, 7} Analog zu den normalen Restklassen wiederholt sich auch dieser Zyklus wieder: 9 mod 8 = 1, 11 mod 8 = 3 usw. Gruppeneigenschaft der primen Restklassen mod m zusammen mit „*“ Die Menge der primen Restklassen mod m ist multiplikativ abgeschlossen und hat 1 mod m als neutrales Element. Zudem existiert zu jedem Element der primen Restklasse mod m ein multiplikatives Inverses. Somit bilden die primen Restklassen mod m bezüglich der Multiplikation eine Gruppe. Wir wollen nun kurz die Struktur einer solchen Gruppe erläutern und ziehen dafür unser zuletzt gewähltes Beispiel heran, die prime Restklasse mod 8. Die Verknüpfungstabelle zu dieser Gruppe ist die folgende: * 1 3 5 7 1 1 3 5 7 3 3 1 7 5 5 5 7 1 3 7 7 5 3 1 Wie man anhand der Verknüpfungstabelle leicht erkennt, erfüllen die primen Restklassen mod 8 zusammen mit der Verknüpfung „*“ die Anforderungen an eine Gruppe: 31 • Zwei beliebigen Elementen a, b ∈ ( / 8)* wird genau ein Element a*b ∈ ( / 8)* zugeordnet (Abgeschlossenheit). • Die Verknüpfung ist zudem assoziativ, da die modulare Multiplikation auf der Multiplikation in basiert und diese bereits assoziativ ist (Assoziativität). • Bezüglich „*“ wirkt „1“ als neutrales Element dieser Menge (Existenz eines neutralen Elements). • Zudem existiert zu jedem Element a ∈ ( / 8)* ein multiplikatives Inverses, für das gilt: a * a −1 = a −1 * a = 1 (Existenz eines inversen Elements). • Die Gruppe ist sogar abelsch, da für alle Elemente ∈ ( / 8)* gilt: a*b = b*a. (Diese Eigenschaft besitzt bereits .) 4.3 Arithmetik von Restklassenringen 4.3.1 Zusammenhang zwischen dem Grad eines Polynoms und dessen Nullstellen Sei p prim und f(x) ein Polynom mit ganzzahligen Koeffizienten vom Grad n und Leitkoeffizient ≠ 0 mod p . Dann besitzt die Kongruenz f(x) = 0 mod p auf dem Körper ( / p) höchstens n Lösungen. Das Polynom f besitzt also in ( / p) höchstens n Nullstellen. Als Beispiele betrachten wir die Nullstellen zweier Polynome vom Grad 2, eines bei dem p nicht prim ist und eines bei dem es prim ist. a) Der Restklassenring ( / 8) besteht aus den Elementen {0, 1, 2, 3, 4, 5, 6, 7}. Wir wollen nun die Gleichung x² = 1 mod 8, also x² - 1 = 0 mod 8 lösen. Als mögliche Lösungen erhalten wir 1, 3, 5 und 7. Insgesamt also vier Elemente, die die Gleichung x² - 1 = 0 mod 8 auf ( / 8) erfüllen. Die Anzahl der Lösungen der Gleichung und der Grad des Polynoms, dessen Nullstellen wir berechnen wollen, stehen also in keinem direkten Zusammenhang, wie dies bei Satz 4.3.1 der Fall ist. b) Im Gegensatz zu diesem Beispiel wollen wir nun die Lösungen von x² = 2 mod 7, also des Polynoms x² - 2 = 0 mod 7, auf der primen Restklassengruppe ( / 7)* erörtern. ( / 7)* besteht aus den Elementen {1, 3, 5, 7}. Auf dieser Gruppe wird das Polynom x² - 2 = 0 mod 7 lediglich von den Elementen 3 und 4 gelöst 32 (3² = 9 = 2 mod 7 und 4² = 16 = 2 mod 7). Die Kongruenz x² - 2 = 0 mod 7 hat also auf der primen Restklassengruppe mod 7, dem Grad des Polynoms entsprechend, genau zwei Lösungen. 4.3.2 Ordnung eines Restklassenringes Sei ( / m) der Restklassenring mod m. Dann heißt #( / m) die Ordnung oder Kardinalität dieses Restklassenringes. Handelt es sich insbesondere um prime Restklassen, also um die Menge ( / m)*, so ist die Ordnung dieser Gruppe #( / m)* = ϕ (m) . Dabei heißt φ die Euler – Funktion. Spezialfall: Ist m eine Primzahl, so ist ϕ (m) = m – 1. (mit m = p: ϕ ( p ) = p – 1) Wir erörtern diese Definition nun anhand einiger Beispiele: a) Hierzu betrachten wir die Menge der Restklassen mod 8: ( / 8) = {0, 1, 2, 3, 4, 5, 6, 7}. Dieser Ring besitzt die Ordnung 8, da er genau 8 Elemente enthält, also #( / 8) = 8. b) Wenden wir uns hingegen den primen Restklassen mod 8 zu, also ( / 8)*, so ändert sich mit der Struktur der Menge (diese ist nun eine multiplikative Gruppe!) natürlich auch deren Ordnung. Sie ist gegeben durch die Elemente ( / 8)* = {1, 3, 5, 7} und hat somit die Ordnung 4: #( / 8)* = ϕ (8) = 4 c) Zuletzt behandeln wir den Spezialfall, dass p eine Primzahl ist. Dazu betrachten wir die prime Restklassengruppe mod 7, ( / 7)* = {1, 2, 3, 4, 5, 6}. Diese beinhaltet 6 = p – 1 Elemente. Folglich ist #( / 7)* = ϕ (7) = p – 1 = 6. 4.3.3 Berechnung der Euler – Funktion Für ein n ∈ hat die Euler – Funktion φ den Wert ϕ (n) = n * ∏ 1 − p|n 1 , wobei sich dieses Produkt auf alle Primteiler von n erstreckt. p Als Beispiel betrachten wir die prime Restklassengruppe ( / 30)*. Die Primteiler von 30 sind 2, 3 und 5. 33 Also ergibt sich die Euler – Funktion zu: 1 1 1 4 ϕ (30) = 30 * 1 − * 1 − * 1 − = 30 * = 8 . 15 5 3 2 In der Tat besteht ( / 30)* aus 8 Elementen, nämlich {1, 7, 10, 13, 17, 19, 23, 29}. 4.3.4 Ordnung eines Elementes einer Restklasse Ist a mod m eine prime Restklasse, dann nennt man die kleinste natürliche Zahl k mit a k mod m = 1 die Ordnung von a. Man schreibt ord (a) = k. Auch dies soll kurz anhand eines Beispiels verdeutlicht werden: Wir wählen die prime Restklassengruppe ( / 8)* und daraus das Element 5. Nun bilden wir 51 = 5 mod 8 und 5 2 = 25 = 1 mod 8 . Folglich ist für k = 2 5 k = 1 mod 8 und somit die Ordnung des Elementes 5 in ( / 8)* gleich 2: ord (5) = 2. 4.3.5 Satz von Lagrange Für alle Elemente g der endlichen abelschen Gruppe G mit der Verknüpfung „ o “ gilt: Verknüpft man das Element g #G – mal mit sich selbst, so ergibt sich das neutrale Element e der Gruppe G: g #G = g o g o ... o g = e . Die Spezifizierung dieses Satzes ist der 4.3.6 Satz von Euler – Fermat Ist a eine prime Restklasse mod m, so gilt: a ϕ ( m ) = 1 mod m . Insbesondere gilt: ist m eine Primzahl, so wird ϕ (m) = m − 1 und somit die letzte Gleichung zu a m −1 = 1 mod m (auch bekannt unter dem „kleinen Fermat“). Hier geben wir zwei Beispiele, eines mit m ist kein Element der Menge aller Primzahlen und eines mit m ist Primzahl: a) Sei m = 8. Wir wissen aus 4.3.2 b), dass ϕ (8) = 4 . Wir wählen wiederum ein beliebiges Element aus ( / 8)*, z. B. sei dies 7, und bilden 7 4 = 2401 = 1 mod 8 . 34 b) Wir betrachten ein Element aus der Gruppe ( / 7)*, z. B. das Element 4. Für die Ordnung von ( / 7)* gilt nach 1.3.2 c) #( / 7)* = ϕ (7) = 6. Nun berechnen wir 4 6 = 4096 = 1 mod 7 . Wir erhalten also bei beiden Beispielen das neutrale Element 1. 4.3.7 Zusammenhang zwischen der Ordnung einer Gruppe und der eines Elementes dieser Gruppe Für alle primen Restklassen a ∈ ( / n)* gilt: ord ( a ) | #( / n)* = ϕ (n) Als Beispiel nehmen wir wieder ( / 8)* und wählen ein beliebiges Element, o.B.d.A. sei dies 7. Nun bestimmen wir die Ordnung dieses Elementes in der Gruppe: 71 = 7 mod 8, 7 2 = 49 = 1 mod 8 Da wir für 7² das neutrale Element 1 der Gruppe ( / 8)* erhalten, ist ord ( 7 ) = 2. Über ϕ (8) wissen wir aus 4.3.2, dass ϕ (8) = 4. Also gilt auch ord ( 7 ) = 2 | ϕ (8) . 4.3.8 Chinesischer Restsatz Sind m1 , m2 , ..., mk paarweise teilerfremde natürliche Zahlen und c1 , c 2 , ..., c k ganze Zahlen, dann existiert genau eine Restklasse x zum Modul m = m1 * m2 * ... * mk , für die gilt: x = ci mod mi , für i = 1,2, …, k. Da wir später aus diesem Satz nur die Existenz eines solchen x benötigen, wird das Beispiel hier weg gelassen. 35 4.3.9 Der euklidische Algorithmus „Für a, b ∈ bezeichnet man folgende Kette von Divisionen mit Rest als euklidischen Algorithmus: a = v0 * b + r1 mit 0 < r1 < b b = v1 * r1 + r2 mit 0 < r2 < r1 r1 = v 2 * r2 + r3 mit 0 < r3 < r2 M rn −3 = v n − 2 * rn − 2 + rn−1 mit 0 < rn −1 < rn − 2 rn − 2 = v n −1 * rn −1 + rn mit 0 < rn < rn −1 rn −1 = v n * rn [wobei v j ∈ und r j ∈ 0 gilt] Dabei ist n dadurch bestimmt, dass rn der letzte von 0 verschiedene Rest in dieser Divisionskette ist. Ein solches n existiert, denn die Folge der Reste nimmt streng monoton ab: b > r1 > r2 > r3 > .... > rn −1 > rn “22, wobei alle Reste > 0 sind. Dieser sehr nützliche Algorithmus, der sich insbesondere zur Bestimmung des größten gemeinsamen Teilers zweier Zahlen a und b benutzen lässt (denn dieser ist ja gerade rn = ggT (a, b) ), soll an einem Beispiel verdeutlicht werden: Wir suchen ggT (348, 72). Die Anwendung des euklidischen Algorithmus liefert: 348 = 4 * 72 + 60 72 = 1 * 60 + 12 60 = 5 * 12 + 0 12 ist also der letzte von 0 verschiedene Rest. Folglich ist 12 der größte gemeinsame Teiler von 348 und 72. 4.3.10 Darstellung des ggT zweier Zahlen als Linearkombinationen dieser Zahlen Der ggT zweier Zahlen a und b ist die kleinste nichtnegative Zahl, die sich als Linearkombination von a und b darstellen lässt: ggT (a, b) = z1 * a + z 2 * b , mit z1 , z 2 ∈ . Zwei Bemerkungen: 1. Diese Darstellung ist nicht eindeutig. 2. Die effektivste Berechnung von z1 , z 2 erfolgt durch die Umkehrung des euklidischen Algorithmus. 22 SCHEID, Harald: „Zahlentheorie“. Spektrum Akademischer Verlag, 4. Auflage, 2007, S. 28 36 Wir wollen nun den größten gemeinsamen Teiler der Primzahlen a = 37 und b = 53 als Linearkombination der beiden schreiben. Hierzu berechnen wir zunächst explizit deren ggT mit dem euklidischen Algorithmus: 53 = 1*37 + 16 37 = 2*16 + 5 16 = 3*5 + 1 5 = 5*1 + 0 Der größte gemeinsame Teiler der beiden Primzahlen 37 und 53 ist erwartungsgemäß 1. Nun stellen wir 1 mit der Umkehrung des euklidischen Algorithmus als Linearkombination von 37 und 53 dar. Dazu setzen wir den ggT(37, 53) (in diesem Fall „1“) als Differenz der zwei Zahlen an, die bei Division durcheinander genau den ggT(37, 53) = 1 als Rest hinterlassen haben. Anschließend ersetzen wir alle Reste, die im euklidischen Algorithmus entstanden sind, durch eine entsprechende Differenz. 1 = 16 – 3*5 = 16 – 3*(37 – 2*16) = 16 – 3*37 + 6*16 = 7*16 – 3*37 = 7*(53 – 1*37) – 3*37 = 7*53 – 7*37 – 3*37 = 7*53 – 10*37 Somit ist z1 = 7 und z 2 = −10 . 37 5. Vorstellung der beiden Zero – Knowledge – Verfahren Es existieren im Wesentlichen zwei Verfahren, mit denen man Zero – Knowledge – Protokolle herstellen kann. Diese beiden sind von den mathematischen Grundlagen her relativ verschieden. Das erste Verfahren, das wir vorstellen werden, begründet sich auf die Graphentheorie im Allgemeinen und die Isomorphie von Graphen im Speziellen. Die Quellen des zweiten Verfahrens, dem Fiat – Shamir – Algorithmus, liegen hingegen in der Zahlentheorie. Die Zahlen- und die Graphentheorie sind von der mathematischen Thematik sehr unterschiedliche Gebiete, was wiederum zeigt, dass nicht nur die Verwendungsmöglichkeiten von Zero – Knowledge – Protokollen sehr vielfältig sind (dazu im weiteren Verlauf mehr), sondern auch deren mathematische Grundlagen. Den Ausführungen in 5.1 und 5.2 liegt der Artikel „Was ist Zero – Knowledge“ von Albrecht Beutelspacher und Jörg Schwenk aus den Mathematischen Semesterberichten Band 40 zu Grunde. Ich habe mir nach meinen eigenen Erfahrungen mit diesem Artikel erlaubt, an den Stellen zu kommentieren, wenn ich ihn für jemanden, der nicht so tief in der Thematik verwurzelt ist, für schwer verständlich hielt. Weiter habe ich versucht, eventuelle Missverständnisse oder Verständnisschwierigkeiten, die bei Lesen dieses Artikels auftreten könnten, in dieser Arbeit auszuräumen. 5.1 Isomorphie von Graphen 5.1.1 Grundlegendes zum Verfahren Dieses Verfahren zur Herstellung von Zero – Knowledge – Protokollen beruht im Wesentlichen auf dem Fakt, dass es außerordentlich schwer ist, zu erkennen, ob zwei Graphen isomorph sind. Insbesondere begründet es sich auf das Problem, einen Isomorphismus zwischen zwei isomorphen Graphen zu finden. Im Gegensatz zu diesen beiden Punkten ist es relativ leicht, zueinander isomorphe Graphen zu erzeugen. Hierzu benutzt man einfach die Knotenmenge eines Graphen G = (E, V) und permutiert diese, so dass der Graph G’ = (E’, V’) entsteht. Die Kanten zwischen den Knoten bleiben hierbei erhalten. Ordnet man die Knotenmengen E und E’ also einander bijektiv zu und erhält die entsprechenden Kanten, so erhält man einen Isomorphismus. 38 Zudem ist es mit vertretbar hohem Aufwand möglich, zu überprüfen, ob eine Abbildung ein Isomorphismus ist oder nicht. Man überprüft dazu einfach die Definition eines Graphenisomorphimus: sind zwei Knoten vi , v j ∈ E adjazent, so sind es auch deren Bilder vi ' , v j '∈ E ' . Von genau dieser „Diskrepanz zwischen der Schwierigkeit, einen Isomorphismus zu finden, und dem ganz einfachen Nachweis, dass eine vorgelegte Abbildung ein Isomorphismus ist“23, lebt dieses Zero – Knowledge – Verfahren, auf welches wir an späterer Stelle eingehen werden. Zuerst wollen wir jedoch die Schwierigkeit, zwei Graphen auf Isomorphie zu überprüfen, etwas tiefer betrachten. Bei kleineren Graphen, wie denen aus den Beispielen bei 4.1.7, lässt sich diese Überprüfung noch mit vertretbarem Zeitaufwand durchführen. Doch bereits bei mehreren Knoten und einer entsprechenden Anzahl an Kanten wird der Test sehr mühsam. Das folgende Beispiel zeigt, dass bereits zwei Graphen mit 15 Knoten nur mit sehr großem Zeitaufwand auf Isomorphie zu überprüfen sind. Graph A Graph B Die Fragen, ob es möglich ist, auszuschließen, dass die beiden Graphen isomorph sind oder gar festzustellen, ob sie es sind, sind, wie erwartet, alles andere als leicht zu beantworten. Das Vorgehen nach der bei den Definitionen genannten Methode zum Ausschluss der Isomorphie sowie die Methode zum Auffinden eines Isomorphismus werden hier nämlich extrem kompliziert bzw. sehr zeitaufwendig, da die in den Graphen auftretenden Kreise wesentlich zahlreicher und komplexer in Erscheinung treten, als es noch in den oben genannten Beispielen der Fall war. 23 BEUTELSPACHER, Albrecht; SCHWENK, Jörg: „Was ist Zero – Knowledge?“. Mathematische Semesterberichte, Band 40, Heft 1, 1993, S. 77 39 Würde man nun versuchen, einen Isomorphismus σ zu raten, der Graph A auf Graph B abbildet, so müsste man 15!≈ 1,31 *1012 mögliche Permutationen überprüfen. Dies ist in angemessener Zeit kaum zu schaffen. Wenn wir nun bedenken, dass vorgeschlagen wurde, das Verfahren in der Praxis mit Graphen von mehreren hundert bis hin zu 1000 Knoten zu betreiben, kann man sich angesichts des zuletzt genannten Beispiels vorstellen, welch Aufwand dafür nötig sein wird: bereits bei 100 Knoten hätten wir 100! Möglichkeiten, die Knotenmenge zu permutieren… Wie aber bereits erwähnt wurde, stellt es kein schwieriges Problem dar, zu überprüfen, ob eine Permutation zwei Graphen tatsächlich isomorph aufeinander abbildet. Im Bezug auf das letzte Beispiel ist es kein Problem, zu überprüfen, ob die Permutation σ = (1 4 6 7)(2 11)(3 13 10 15 9 12 8)(5 14) ein Isomorphismus ist oder nicht. Hierzu wenden wir den in der Einleitung dieses Kapitels genannten Test an. Wir überprüfen, ob die Bilder zweier adjazenter Knoten wieder adjazent sind. Nehmen wir uns z. B. die adjazenten Knoten 1 und 8 aus Graph A, so müssen deren Bilder, die Knoten 4 und 3 aus Graph B, wieder benachbart sein, wenn es sich bei σ um einen Isomorphismus handelt. In der Tat sind diese Bilder wieder adjazent. Im weiteren Verfahren werden alle Bilder von adjazenten Knoten auf Adjazenz überprüft. Ist diese Bedingung für die entsprechenden Knotenpaare erfüllt, so ist die vorgelegte Abbildung σ ein Isomorphismus. 5.1.2 Anwendung des Verfahrens „Isomorphie von Graphen“ Nachdem wir uns nun mit der Schwierigkeit des Überprüfens auf Isomorphie zweier Graphen, dem Problem des Auffindens eines Isomorphismus’ zwischen zwei isomorphen Graphen und der Überprüfung einer Permutation auf die Eigenschaften eines Isomorphismus’ beschäftigt haben, wollen wir uns dem eigentlichen Zero – Knowledge – Verfahren widmen. Wie die meisten kryptographischen Verfahren, so wird auch dieses in eine Geheimniserzeugungsphase und eine Anwendungsphase untergliedert. Zunächst wollen wir uns mit der Geheimniserzeugungsphase beschäftigen: Im Allgemeinen benötigen wir zu aller erst ein Identitätsmerkmal (einen Schlüssel), anhand dessen man einen Benutzer identifizieren kann. Wir wählen hierzu zwei isomorphe Graphen G0 und G1 . Damit der Benutzer seine Identität nachweisen kann, benötigt er einen Isomorphismus σ, der G0 und G1 aufeinander abbildet. Da es (wie oben beschrieben) äußerst schwierig ist, eine bijektive Abbildung zwischen den beiden bestehenden Graphen herauszufinden, ist hier folgende Technik ratsam: 40 Der Benutzer nimmt den Graphen G0 und wählt eine zufällige Permutation σ der Knotenmenge E 0 . Durch Anwenden dieser Abbildung entsteht der zu G0 isomorphe Graph G1 . G0 und G1 werden anschließend veröffentlicht, wobei σ das individuelle Geheimnis des Benutzers bleibt und die beiden Graphen der späteren Verifikation dienen. In der Anwendungsphase des Verfahrens stellt sich nun die Frage, wie der Benutzer A einen Verifizierer B davon überzeugen kann, dass er σ besitzt, ohne ihm sein individuelles Geheimnis explizit mitzuteilen. Dieses Problem wird mit dem folgenden Protokoll gelöst. 1. A wählt beliebig einen der beiden Graphen G0 und G1 . Anschließend wendet er eine zufällige Permutation τ auf den gewählten Graphen an. Als Ergebnis wird er den Graphen H erhalten, der sowohl zu G0 als auch zu G1 isomorph ist, unabhängig davon, welchen Graph er permutiert hat. 2. Der Graph H wird an den Verifizierer B geschickt. 3. Dieser darf nun entweder den Isomorphismus zwischen G0 und H oder zwischen G1 und H sehen. 4. Je nachdem, welchen Isomorphismus B wünscht, schickt ihm A entweder τ , τσ −1 oder τσ. Begründung: O. B. d. A. nehmen wir an, A hätte am Anfang G0 mit σ permutiert und so ( ) σ G1 erhalten G0 → G1 (für den umgekehrten Fall analog). Dann gibt es zwei Möglichkeiten: ( ) τ → H . 1. A permutiert G0 mit τ und erhält so den Graphen H G0 a) Möchte B dann den Isomorphismus zwischen G0 und H sehen, schickt A ihm einfach τ. b) Fordert der Verifizierer die Abbildung zwischen G1 und H, so erhält er von A τσ −1 −1 τ → H ). (denn G1 σ→ G0 41 ( ) τ → H . 2. A permutiert G1 mit τ und erhält so den Graphen H G1 a) Will B den Isomorphismus zwischen G0 und H erhalten, so σ τ → G1 → H ). schickt A ihm τσ (denn G0 b) Fordert B die Abbildung zwischen G1 und H, so erhält er von A wiederum einfach τ. 5. Nun kann der Verifizierer B mit dem oben genannten Verfahren einfach überprüfen, ob die Abbildung, die er erhalten hat, tatsächlich ein Isomorphismus zwischen den beiden Graphen ist, oder nicht. 6. Dieses Protokoll wird beliebig oft wiederholt, bis B davon überzeugt ist, dass A den geheimen Isomorphismus σ besitzt. Nach Abhandlung dieses Protokolls drängen sich die Fragen auf: a) Kann B den Benutzer A immer verifizieren? b) Ist es möglich auszuschließen, dass B von einer anderen Person getäuscht wird? c) Wurde mit diesem Verfahren wirklich kein Wissen um das Geheimnis σ übermittelt? Erfüllt dieses Protokoll also die Anforderungen an ein Zero – Knowledge – Protokoll? Ja, denn die Bedingungen „Vollständigkeit“, „Korrektheit“ und „Zero – Knowledge – Eigenschaft“ (entsprechen den jeweiligen Fragen von oben) werden allesamt erfüllt: a) Vollständigkeit Da A den Isomorphismus σ zwischen G0 und G1 kennt, kann er jede Frage von B nach den Isomorphismen zwischen G0 und H und zwischen G1 und H beantworten, egal nach welcher der beiden Abbildungen B verlangt. Der Grund hierfür ist, dass A nur durch das Wissen um σ in der Lage ist, die Abbildungen τσ −1 und τσ zu bilden. A kann also alle Wünsche von B erfüllen und B kann sich mit beliebig hoher Sicherheit davon überzeugen, dass A den geheimen Isomorphismus σ wirklich besitzt. 42 b) Korrektheit ~ Nehmen wir an, eine Person A , die das Geheimnis σ nicht besitzt, möchte B fälschlicherweise davon überzeugen, dass sie σ kennt. Wir werden nun veranschaulichen, dass dies im oben genannten Verfahren praktisch nicht möglich ist. Dazu betrachten wir das Protokoll und erläutern, an ~ welchem Punkt A scheitern wird. 1. Die beiden isomorphen Graphen G0 und G1 sind gegeben. Dabei sei o. B. d. A. der Graph G1 durch die Permutation σ von G0 entstanden. ~ A wählt nun zuerst einen der beiden Graphen (o. B. d. A. wähle er G0 ) und permutiert die Knotenmenge des Graphen mit dem Isomorphismus τ. Aus dem τ →H . Graphen G0 wird so der Graph H: G0 2. H schickt er dann an den Verifizierer B. 3. Dieser wünscht nun entweder den Isomorphismus zwischen G0 und H oder zwischen G1 und H zu sehen. ~ 4. Wünscht B den Isomorphismus zwischen G0 und H zu sehen, kann ihm A einfach die (selbst erstellte) Permutation τ schicken. Die Wahrscheinlichkeit, dass B gerade diese Abbildung sehen will, liegt bei 1 , da er aus zwei 2 gleichwahrscheinlichen Ereignissen eines auswählen kann. ~ Fordert B jedoch den Isomorphismus zwischen G1 und H, so bekommt A ein Problem: diese Abbildung ist nämlich τσ −1 und um diese zu bilden benötigt er σ, was er nicht kennt. ~ Könnte A diese Frage beantworten, so wäre er auch in der Lage σ zu berechnen und könnte sich so in Besitz des Geheimnisses bringen. Wie wir ~ jedoch gleich zeigen werden, ist die Wahrscheinlichkeit, dass A die Abbildung τσ −1 heraus bekommt, äußerst gering. Dazu gehen wir nun davon aus, dass er versucht, die Abbildung σ bzw. in diesem Fall σ −1 zu erraten. Wie wir jedoch oben gezeigt haben, existieren bereits bei einem Graph mit 15 Knoten 15! ≈ 1,30 *1012 Möglichkeiten, die Knotenmenge zu permutieren. Die Wahrscheinlichkeit, eine bestimmte dieser Möglichkeit zu erraten, ergibt sich aus dem reziproken Wert, ist also sehr klein. Somit dürfte die Wahrscheinlichkeit, die richtige Permutation σ zu erraten, in 43 der Praxis bei 0 liegen, da dort Graphen mit mehreren hundert Knoten verwendet werden. Wenn B das Verfahren einmal durchführt, hat ~ A folglich die Wahrscheinlichkeit 1 , nicht als Betrüger entlarvt zu werden. Dies ist nämlich 2 ~ genau dann der Fall, wenn B den Isomorphismus zu sehen wünscht, den A selbst erstellt hat (in unserem Fall den zwischen G0 und H). Führt B diesen Dialog nicht einmal, sondern t – mal durch, so ergibt sich die ~ Wahrscheinlichkeit, dass B jedes Mal die von A erstellte Abbildung zu sehen ( 2 ) . Bereits bei t = 15 Runden wird diese Wahrscheinlichkeit verschwindend klein, nämlich ≈ 0,031 *10 . Da (1 ) eine streng monotone 2 wünscht, zu 1 t −3 t fallende Nullfolge ist, kann B durch beliebig häufige Durchführung des ~ Dialoges die Wahrscheinlichkeit, dass er von A betrogen wird, beliebig minimieren. ~ Folglich ist es A beinahe unmöglich, den Verifizierer B fälschlicherweise davon zu überzeugen, das Geheimnis σ zu besitzen. ~ In den analogen Fällen (dass G0 aus Permutation von G1 entstand bzw. dass A ~ nicht G0 sondern G1 mit τ permutiert) entstehen äquivalente Probleme für A . c) Zero – Knowledge – Eigenschaft Um das vorgestellte Verfahren auf Zero – Knowledge – Eigenschaft zu überprüfen, müssen wir feststellen, ob es möglich ist, mit einer beliebigen Person M (die im Allgemeinen das Geheimnis σ nicht kennt) und dem Verifizierer B ein Protokoll zu erstellen, das ein Außenstehender nicht von dem ursprünglichen unterscheiden kann, sprich ob es möglich ist, ein dementsprechendes Protokoll ohne das Wissen von σ herzustellen. Hierzu gehen M und B nach dem auf den Seiten 41 und 42 vorgestellten Dialog vor: 1. M wählt zufällig G0 oder G1 und permutiert den gewählten Graphen mit τ zu dem Graphen H, der nun zu G0 und G1 isomorph ist. 2. Der Graph H wird an den Verifizierer B geschickt. 44 3. Weiter fordert B den Isomorphismus zwischen G0 und H oder den zwischen G1 und H zu sehen. 4. Will B die Abbildung zwischen dem von M am Anfang permutierten Graphen und H sehen, so schickt ihm M einfach τ. Einen solchen Dialog nennen wir ab sofort „erfolgreichen Dialog“. Möchte B jedoch den Isomorphismus zwischen H und dem Graphen, den M nicht am Anfang gewählt hat, übermittelt bekommen, so kann M dessen Wunsch nicht nachkommen. Daher wird der Dialog abgebrochen und von neuem gestartet. 5. In dem Falle, dass B von M die Permutation τ erhält, überprüft er einfach, ob die erhaltene Abbildung tatsächlich ein Isomorphismus zwischen den beiden von ihm genannten Graphen ist (was sie sein wird, da τ ja genauso konstruiert wurde). B wird M also verifizieren. 6. Dieser Dialog wird nun sooft ausgeführt, bis M und B die gleiche Anzahl an erfolgreichen Dialogen haben, wie im Originalprotokoll entstanden sind (wobei der von M am Anfang zu permutierende Graph immer wieder neu zufällig ausgewählt wird). Da M immer nur auf die Frage nach dem Isomorphismus zwischen dem von ihm am Anfang gewählten Graphen und dem Graphen H antworten kann, werden die beiden im Schnitt zwei Versuche benötigen, um einen erfolgreichen Dialog zu erstellen. Jeder erfolgreiche Dialog wird als ein Tripel abgespeichert, das folgendes beinhaltet: 1. Den Graphen H, der durch die Permutation τ entstanden ist, 2. die Wahl von M, welchen Isomorphismus er zu sehen gewünscht hat und 3. die Permutation τ. Bezeichnet man den Wunsch von M, die Abbildung zwischen G0 und H zu sehen mit 0 und die Aufforderung, den Isomorphismus zwischen G1 und H darzulegen mit 1, so könnte ein solches Tripel (unter Benutzung unseres Beispielgraphen von oben) wie folgt aussehen: , 0, (1 4 6 7)(2 11)(3 13 10 15 9 12 8)(5 14) 45 Sinnvollerweise würde man für die Darstellung des Graphen wohl eine algebraische Darstellung, wie die Darstellung in einer Adjazenzmatrix, wählen. Dies würde dann so aussehen: 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 1 0 1 1 1 0 0 0 1 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 , 0, (1 4 6 7)(2 11)(3 13 10 15 9 12 8)(5 14) 1 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 Davon ausgehend, dass im Originalprotokoll t – viele dieser Tripel entstanden sind, führen M und B den Dialog sooft durch, bis sie ebenfalls t – viele dieser Tripel, also t – viele erfolgreiche Dialoge, haben. Ist dies vollzogen, so haben M und B ein Protokoll erstellt, bei dessen Erzeugung das Geheimnis σ zwar nicht benutzt wurde, das aber für einen Außenstehenden das gleiche Ergebnis liefert, wie der Originaldialog: t – viele Tripel, die einen Graphen, dessen Urbild und die Abbildung, die zu diesem Graphen führte, enthalten. Damit ist dieses erstellte Protokoll nicht von dem Originalprotokoll zu unterscheiden und erfüllt somit die Zero – Knowledge – Eigenschaft. 5.1.3 Praxisbezug des Verfahrens Beschäftigt man sich mit der Zero – Knowledge – Thematik, so beschäftigt man sich automatisch auch mit diesem Verfahren. Es ist sehr anschaulich und bei angemessenem Wissen über Graphentheorie auch leicht verständlich. In der Praxis findet es hingegen wenig Anwendung. Dies könnte zum einen daran liegen, dass die Entscheidung (und damit die letztendliche Verifizierung), ob eine gegebene Abbildung ein Isomorphismus ist, zwar relativ leicht durchführbar ist, es aber trotzdem einige Schritte benötigt, bis alle Bilder von adjazenten Knoten auf Adjazenz überprüft sind. Ein weiteres Problem, dass sich in Anbetracht dieses Verfahrens stellen könnte, ist die Speicherkapazität, die benötigt wird, um die Darstellung eines großen Graphen zu archivieren und abzurufen. 46 Diese Probleme stellen sich in dem im weiteren Verlauf vorgestellten Verfahren nicht mehr. Darin muss ein Verifizierer nämlich nur sehr wenige Schritte bzw. Rechnungen für eine Überprüfung und die anschließende Verifikation durchführen. Doch dazu im Folgenden mehr. 5.2 Fiat – Shamir – Algorithmus 5.2.1 Grundlegendes zum Verfahren Der Fiat – Shamir – Algorithmus ist das wohl bekannteste Zero – Knowledge – Verfahren. Es wurde 1987 von Uriel Feige, Amos Fiat und Adi Shamir in „Zero knowledge proofs of identity“24 vorgestellt. Da im Gegensatz zu unserem ersten Verfahren ein wesentlich geringerer Rechenaufwand nötig ist, ist es zudem auch das meist benutzte Zero – Knowledge – Verfahren. Die Grundlagen des Fiat – Shamir – Algorithmus liegen in der Zahlentheorie, vor allem in der Modularen Arithmetik. Insbesondere begründet er sich auf die Schwierigkeit, Wurzeln eines quadratischen Restes modulo einer sehr großen Zahl zu berechnen. Dies wollen wir nun ausführlich erläutern: Sei n ∈ und ( / n)* sei wie oben beschrieben die Menge der primen Restklassen mod n. Nach 4.2.2.2 ist diese Menge zusammen mit der Verknüpfung „*“ (modulare Multiplikation) eine Gruppe. Im weiteren benötigen wir zudem die folgenden Definitionen: a) Ein Element a aus ( / n)* wird quadratischer Rest modulo n genannt, wenn ein b ∈ ( / n)* existiert, mit b 2 (= b * b ) = a mod n . Dabei heißt b eine Quadratwurzel von a. b) Zwei Quadratwurzeln b und b’ von a mod n heißen wesentlich verschieden, wenn gilt, dass b ≠ b' ≠ n − b' mod n. Definition a) wird zunächst durch ein Beispiel verdeutlicht. Hierzu betrachten wir die Menge der primen Restklassen mod 15 hinsichtlich ihrer Quadrate: ( / 15)* = {1, 2, 4, 7, 8, 11, 13, 14} 24 FEIGE, Uriel; FIAT, Amos; SHAMIR, Adi: „Zero knowledge proofs of identity“. Proceedings of the 19th Annual ACM Symposium on Theory of Computing, ACM Press, 1987, S. 210 – 217 47 Die Verknüpfungstabelle dieser Menge bezüglich der Multiplikation ist die folgende: * 1 2 4 7 8 11 13 14 1 1 2 4 7 8 11 13 14 2 2 4 8 14 1 7 11 13 4 5 8 1 13 2 14 7 11 7 7 14 13 4 11 2 1 8 8 8 1 2 11 4 13 14 7 11 11 7 14 2 13 1 8 4 13 13 11 7 1 14 8 4 2 14 14 13 11 8 7 4 2 1 Die quadratischen Reste in dieser Gruppe sind somit 1 und 4. Wichtig für den Fiat – Shamir – Algorithmus ist nun, dass die Quadrate 1 und 4 bzw. alle Quadrate mod 15 mehr als zwei Wurzeln besitzen. Im Beispiel gilt: 1 = 1*1 mod 15 = 4*4 mod 15 = 11*11 mod 15 = 14*14 mod 15 4 = 2*2 mod 15 = 7*7 mod 15 = 8*8 mod 15 = 13*13 mod 15 1 besitzt also als Quadratwurzeln die Elemente 1, 4, 11 und 14, 4 die Wurzeln 2, 7, 8 und 13. Diese oben genannte Tatsache wird nun in den Sätzen 1 und 2 genauer beschrieben. Dabei befasst sich Satz 1 mit den Quadraten und der Anzahl der Quadratwurzeln modulo einer Primzahl und Satz 2 mit dem Analogen für Module von Produkten zweier Primzahlen. SATZ 1 Ist p ≠ 2 eine Primzahl, so hat jeder quadratische Rest mod p genau 2 Quadratwurzeln. Ist b die eine Wurzel von a (d.h. es gilt b 2 = a mod p ), so ist p – b die andere. Beweis Es soll bewiesen werden, dass der quadratische Rest a genau 2 Wurzeln hat, nämlich b und p – b. Zuerst zeigen wir, dass p – b eine Quadratwurzel von a mod p ist, wenn dies bereits für b gilt. An dieser Stelle wird der Artikel etwas oberflächlich: „dass mit b auch p – b eine Quadratwurzel ist, folgt durch einfaches Nachrechnen“ ist zwar in der Tat richtig, sollte aber zum besseren Verständnis doch explizit erfolgen: 48 Da b eine Quadratwurzel von a ist, gilt: a = b 2 mod p Nun soll gezeigt werden, dass auch a = ( p − b) 2 mod p richtig ist: Ausmultiplizieren von ( p − b) 2 liefert: p 2 − 2 pb + b 2 p 2 und -2pb sind mod p jeweils gleich 0. Also ist ( p − b) 2 = p 2 − 2 pb + b 2 mod p = 0 − 0 + b 2 mod p = b 2 mod p , was nach Voraussetzung kongruent ist zu a mod p. Folglich ist auch (p – b) eine Quadratwurzel von a und a besitzt mindestens 2 Quadratwurzeln, nämlich b und p – b. Um herauszufinden, ob dies die einzigen x sind, für die gilt x 2 = a mod p , interessieren uns die Nullstellen des Polynoms x 2 − a , denn x 2 = a mod p ⇔ x 2 − a = 0 mod p . Nach Satz 4.3.1 kann dieses Polynom auf dem Körper ( / p) maximal zwei Nullstellen besitzen. Diese sind bereits b und p – b. Folglich sind b und p – b die einzigen Wurzeln von a. ♠ SATZ 2 Sei n = p*q und p ≠ q seien ungerade Primzahlen. Dann hat jeder quadratische Rest mod n genau 4 Quadratwurzeln. Beweis Nach dem Chinesischen Restsatz (siehe 4.3.8) existiert ein eindeutiges Element a ∈ ( / n)*, für das gilt: 1.) a = 1 mod p bzw. 1 = a mod p ∧ 2.) a = -1 mod q bzw. -1 = a mod q. Setzt man nun b := n – a = pq – a, so ergibt sich b mod p und mod q jeweils zu: 1.) b = pq – a mod p = -a mod p = -1 mod p, denn pq ist mod p = 0 2.) b= pq – a mod q = -a mod q = 1 mod q, denn pq ist mod q = 0. Zusammengefasst bedeutet dies: a = 1 mod p b = -1 mod p a = -1 mod q b= 1 mod q (Ж) Weiter gilt, dass die Elemente a, b, -1 und 1 mod n verschieden sein müssen. 49 Die Begründung hierfür ist im Artikel wiederum sehr knapp in dieser Form beschrieben: „Da p und q ungerade sind, ist es klar, dass a, b, 1 und -1 mod n verschieden sind.“ Wir wollen die Argumentation zum besseren Verständnis detaillierter darstellen: Hierzu führen wir die Annahmen, die Elemente seien paarweise gleich, zum Widerspruch. 1. Annahme: b = 1 mod n n | b – 1 Gilt dies für n, muss es auch für p gelten, denn p | n. Demnach ergibt sich p | b – 1, was wiederum äquivalent ist zu b = 1 mod p. Nach (Ж) gilt jedoch auch p | b + 1. Da aber p ≥ 3 kann es nicht b – 1 und b + 1 gleichzeitig teilen. 2. Annahme: b = -1 mod n n | b + 1 Begründung analog zur 1. Annahme: Gilt diese Aussage für n, so muss sie auch für q gelten, da q | n, also q | b + 1. Nach (Ж) gilt jedoch auch q | b – 1. Da aber auch q ≥ 3 , kann es nicht b – 1 und b + 1 gleichzeitig teilen. Die Begründungen zur dritten und vierten Annahme werden verkürzt dargestellt, da sie komplett analog zu den ersten beiden Begründungen verlaufen. 3. Annahme: a = 1 mod n n | a – 1 Aus q | n folgt q | a + 1. Nach (Ж) gilt aber auch q | a – 1. Da q ≥ 3 kann es nicht a – 1 und a + 1 gleichzeitig teilen. 4. Annahme: a = -1 mod n n | a + 1 Aus p | n folgt p | a + 1. Nach (Ж) gilt aber auch p | a – 1. Da p ≥ 3 kann es nicht a – 1 und a + 1 gleichzeitig teilen. 5. Annahme: a = b mod n Mit der Definition b := n – a ergibt sich a = n – a mod n = -a mod n, da n mod n = 0. Dies wiederum ist äquivalent zu 2a = 0 mod n n | 2a. Als Produkt zweier ungerader Primzahlen ist auch n ungerade, was bedeutet, dass n kein Teiler von 2 sein kann. Also muss n | a gelten. Da p und q Teiler von n sind, müssen sowohl p als auch q Teiler von a sein: p | a ∧ q | a. Dies ist jedoch für p und q ≥ 3 falsch, denn dann kann nicht gelten p| a ∧ p | a – 1 (nach (Ж)) bzw. q | a ∧ q | a + 1 (nach (Ж)). 50 6. Annahme: 1 = -1 mod n n | 1 – (-1) = 2 Als Produkt zweier ungerader Primzahlen ist auch n ungerade, was bedeutet, dass n kein Teiler von 2 sein kann. Da alle 6 Annahmen zu einem Widerspruch geführt haben, müssen die Elemente a, b, 1, -1 mod n verschieden sein! Zudem gilt in ( / n)*, dass a 2 = b 2 = 1 mod n. ( Θ ) Im Artikel wird dies nicht weiter begründet, was hier jedoch geschehen soll. Formuliert man die Annahme um, so ergibt sich: a 2 = 1 mod n ⇔ a 2 − 1 = 0 mod n ⇔ (a − 1)(a + 1) = 0 mod n , analog erfolgt die Rechnung für b bzw. b². Wie bei (Ж) gezeigt wurde, gilt p | a – 1 und q | a + 1. Dies bedeutet, wenn wir es ausführlich schreiben, dass α, β ∈ existieren mit α * p = a − 1 und β * q = a + 1 . Multipliziert man die Seiten nun paarweise miteinander, ergibt sich α * p * β * q = (a − 1)(a + 1) α * β * p * q = (a − 1)(a + 1) Mit α * β = λ und p*q = n folgt dann λ * n = (a − 1)(a + 1) n | (a – 1)(a + 1). Dies ist äquivalent zur Annahme bei ( Θ ). Für b² = 1 mod n ist die Begründung absolut analog. Trivialerweise gilt natürlich auch 1² = 1 mod n und (-1)² = 1 mod n. a, b, 1 und -1 sind also verschiedene Wurzeln von 1 mod n. Womit nun gilt, dass auch ax, bx, x und –x vier verschiedene Wurzeln von x² sind. ♠ An der Beweisführung lässt sich insbesondere erkennen, dass jeweils zwei der vier Wurzeln eines quadratischen Restes mod n den Quadraten und deren Wurzeln mod p bzw. mod q entstammen. 51 Da jetzt bekannt ist, wie viele Wurzeln ein quadratischer Rest mod p und mod n = mod pq besitzt (wobei p ≠ q ∧ p, q ≥ 3 und p,q prim), ist nun interessant, wie man Quadratwurzeln mod p und mod n berechnen kann. Wir wenden uns zunächst der Berechnung von Quadratwurzeln mod p zu, um dann mit den Quadratwurzeln mod n fortzufahren. 5.2.2 Berechnung von Quadratwurzeln mod p Da ungerade Primzahlen entweder von der Form p = 4k + 1 oder p= 4k + 3 sind, müssen 2 Fälle unterschieden werden. Hier erfolgt die Quadratwurzelberechnung nur für den zweiten Fall. (Die alleinige Betrachtung des Falles p = 4k + 3 ist durchaus legitim, da die Menge der Primzahlen dieser Form unendlich groß ist. Wäre dies nicht der Fall, würde man im Hinblick auf die Verschlüsselung auf Probleme stoßen.) Sei p eine Primzahl der Form p = 4k + 3 und a ein quadratischer Rest mod p. Dann ist w = a p +1 4 eine Wurzel von a und p – w die andere. Beweis Zunächst wird w quadriert: w = (a 2 p +1 2 4 ) =a p +1 2 Das Umformen dieses Ergebnisses liefert uns: a p +1 2 = a*a p −1 2 (= w²) Zudem definieren wir b zu b = a p −1 2 Dies setzen wir nun in die Zeile darüber ein und erhalten so w 2 = a * b ( Џ ). Da wir auf der primen Restklasse ( / p)* operieren, ist die Ordnung von ( / p)* nach Satz 4.3.2 gleich ϕ ( p ) = p − 1 . Nach dem Satz von Euler - Fermat (siehe 4.3.6) gilt nun b =a 2 ( p −1 2 ) 2 = a p −1 = 1 mod p . Also ist b 2 − 1 = 0 mod p ⇔ (b − 1)(b + 1) = 0 mod p. 52 Diese Aussage wiederum ist äquivalent dazu, dass p das Produkt aus b – 1 und b + 1 teilt (denn (b − 1)(b + 1) = 0 mod p ⇔ p | (b − 1)(b + 1) ). Es gilt also entweder p | b + 1 b + 1 = 0 mod p b = -1 mod p oder p | b – 1 b – 1 = 0 mod p b = 1 mod p. Folglich ist b entweder 1 oder -1 mod p. ( Ξ ) Nun wird gezeigt, dass -1 kein Quadrat mod p sein kann. Hierzu nehmen wir an, -1 sei ein Quadrat und führen diese Annahme zum Widerspruch. Ist -1 ein Quadrat, so besitzt es eine Wurzel i mit i² = -1 mod p. Jetzt konstruieren wir über die Elemente i und -1 eine Gruppe M bezüglich der Multiplikation mod p. Diese muss wegen der Abgeschlossenheit einer Gruppe zusätzlich die beiden Elemente –i und 1 enthalten. Die dazugehörige Verknüpfungstabelle sieht dann wie folgt aus: * i -1 -i 1 i -1 -i 1 i -1 -i 1 i -1 -i 1 i -1 -i 1 i -1 -i 1 So wie M konstruiert wurde, stellt es eine Untergruppe von ( / p)* dar, da alle vier Elemente bereits in dieser Gruppe liegen. Zudem wird M erzeugt von dem Element i, da für dieses gilt: i 1 = i, i 2 = −1, i 3 = −i, i 4 = 1 Also ist nach 4.3.4 ord( i ) = 4. Nach Satz 4.3.7 teilt die Ordnung eines Elementes einer Gruppe immer die Kardinalität dieser Gruppe. Da M Untergruppe von ( / p)* und da i ∈ M ⊆ ( / p)*, muss folglich gelten, dass die Ordnung von i die Kardinalität von ( / p)* teilt, also ord( i ) | #( / p)* = ϕ ( p ) . Dies ist jedoch nicht richtig, da ord( i ) = 4 und nach Satz 1.3.2 ϕ ( p ) = p – 1 = 4k + 3 – 1 = 4k + 2 ist. Folglich kann -1 kein Quadrat mod p sein. 53 w2 . Da a ein Quadrat mod p ist (und deswegen als x² Eine Umformung von (Џ) ergibt b = a w2 w2 geschrieben werden kann), ist dies auch = 2 = b . Also ist auch b ein Quadrat mod p. a x Nach (Ξ) ist b ∈ {−1, 1} . Da b ein Quadrat sein muss und -1 nach oben kein Quadrat mod p ist, muss gelten, dass b = 1 mod p. Setzt man dieses Ergebnis nun in ( Џ ) ein, so ergibt sich: w 2 = a * b mod p = a *1 mod p w² = a mod p Also ist w ist eine Wurzel von a. Dass p – w die andere Quadratwurzel ist, ergibt sich wiederum durch einfaches Nachrechnen: ( p − w) 2 = p 2 − 2 pw + w 2 mod p p² und -2pw sind mod p natürlich = 0, womit gilt: ( p − w) 2 = 0 − 0 + w 2 mod p = w 2 mod p = a mod p ♠ Wir besitzen nun also eine Methode, mit der wir ziemlich leicht Wurzeln eines Quadrates mod p errechnen können. In der Praxis werden jedoch keine Wurzeln eines Quadrates modulo einer Primzahl benutzt (w² = a mod p), sondern Wurzeln eines Quadrates modulo eines Produktes n zweier verschiedener großer Primzahlen p und q (w² = a mod n=pq). Dies hat insbesondere sicherheitstechnische Gründe, wie wir später noch sehen werden. 5.2.3 Berechnung von Quadratwurzeln mod n Seien p, q verschiedene ungerade Primzahlen und a ∈ ( / n)* so gewählt, dass gilt a = u² mod p und a = v² mod q (also so, dass a ein quadratischer Rest mod p und mod q ist). Dann ist a auch ein quadratischer Rest mod n und man kann eine Lösung der Gleichung a = w² mod n ( Ψ ) wie folgt berechnen. 54 Da p und q teilerfremde Primzahlen sind, ist ihr größter gemeinsamer Teiler 1. Dieser ggT lässt sich dann mit dem Euklidischen Algorithmus nach 4.3.10 wie folgt darstellen: 1 = a*p + b*q mit a, b ∈ . Nun definieren wir c = bq = 1 – ap und d = ap = 1 – bq. Setzen wir dies in 1 = a*p + b*q ein, so ergeben sich für c und d: c = 0 mod q (= bq mod q) c = 1 mod p (= 1 – ap mod p) d = 0 mod p (= ap mod p) d = 1 mod q (= 1 – bq mod q). Weiter bestimmen wir nun w näher durch w = cu + dv. Um herauszufinden, ob dieses w tatsächlich eine Wurzel von a mod n und somit Lösung der Gleichung (Ψ) ist, überprüfen wir, ob w eine Wurzel mod p und mod q ist: a) Zunächst erfolgt die Überprüfung für w² = a mod p: w 2 mod p = (cu + dv)² mod p = (c 2 u 2 + d 2 v 2 + 2cduv) mod p Da c = 1 mod p und d = 0 mod p ergibt sich die Gleichung dann zu w 2 mod p = (1u 2 + 0 + 0) mod p = u 2 mod p. Nach Definition ist u² = a mod p. Also ist w eine Wurzel von a mod p. b) Analog der Test für w² = a mod q: w 2 mod q = (cu + dv)² mod q = (c 2 u 2 + d 2 v 2 + 2cduv) mod q Mit c = 0 mod q und d = 1 mod q können wir die Gleichung wie folgt umformulieren: w 2 mod q = (0 + 1v 2 + 0) mod q = v 2 mod q = a mod q w ist also sowohl Wurzel von a mod p als auch von a mod q: Es gilt somit w² = a mod q und w² = a mod p bzw. q | w² - a und p | w² - a. Folglich muss auch das Produkt aus p und q die Differenz (w² - a) teilen: pq | w² - a. Dies formulieren wir um. Es ergibt sich: w² - a = 0 mod pq w² = a mod pq ♠ 55 Diese Berechnung lässt nun zweierlei Schlussfolgerungen zu: 1. Es ist möglich, Quadratwurzeln mod n zu berechnen, wenn man die Faktorisierung von n kennt. 2. Das Berechnen von Quadratwurzeln mod n ist nicht schwerer, als n zu faktorisieren. Allerdings ist aus der zweiten Folgerung im Moment noch nicht wirklich viel gewonnen, da die Faktorisierung sehr großer Zahlen ein schweres mathematisches Problem darstellt. Beispiel zu dem vorgestellten Verfahren Da dieses Verfahren relativ komplex ist, wird es nun anhand eines Beispiels vorgeführt: Dazu wählen wir p = 17 und q = 23, also n = p*q = 391. Nun stellt sich die Frage nach quadratischen Resten mod p und mod q. Die Menge ( / 17)* ist die folgende: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}. Hierbei sind die quadratischen Reste dieser Gruppe die Elemente 1, 2, 4, 8, 9, 13, 15 und 16. Die Wurzeln zu den Quadraten werden wegen der besseren Übersichtlichkeit tabellarisch aufgeführt: Quadratischer Rest Quadratwurzeln 1 1, 16 2 6, 11 4 2, 15 8 5, 12 9 3, 14 13 8, 9 15 7, 10 16 4, 13 ( / 23)* beinhaltet die Elemente 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 und 22. Dabei sind elf Elemente dieser Gruppe quadratische Reste, nämlich 1, 2, 3, 4, 6, 8, 9, 12, 13, 16 und 18. 56 Deren Quadratwurzeln stellen wir wiederum in einer Tabelle dar: Quadratischer Rest Quadratwurzeln 1 1, 22 2 5, 18 3 7, 16 4 2, 21 6 11, 12 8 10, 13 9 3, 20 12 9, 14 13 6, 17 16 4, 19 18 8, 15 Vergleichen wir nun die quadratischen Reste mod 17 und mod 23, so stellen wir fest, dass die Elemente 1, 2, 4, 8, 9, 13 und 16 in beiden primen Restklassengruppen quadratische Reste sind. Somit müssen diese Elemente auch Quadrate mod 17*23 sein. Aus diesen quadratischen Resten wählen wir nun einen aus, z. B. a = 13 und berechnen eine Wurzel davon. Zunächst gilt: u = 8 mod 17 ∨ u = 9 mod 17 v = 6 mod 23 ∨ v = 17 mod 23 (mit u² = 13 mod 7 und v² = 13 mod 11) Nun gilt es herauszufinden, welches w die Gleichung w² = 13 mod 17*23 löst. Hierzu bestimmen wir zunächst mit dem euklidischen Algorithmus die Linearkombination von 17 und 23, die auf deren größten gemeinsamen Teiler 1 führt: 23 = 1*17+6 17 = 2*6 +5 6 = 1*5 +1 5 = 5*1 +0 Für die Umkehrung des Algorithmus setzen wir den ggT(17, 23) (in diesem Fall „1“) als Differenz der zwei Zahlen an, die bei Division durcheinander genau den ggT(17, 23) = 1 als 57 Rest hinterlassen haben. Anschließend ersetzen wir alle Reste, die im euklidischen Algorithmus entstanden sind, durch eine entsprechende Differenz. Das Ergebnis wird der ggT(17, 23) sein, dargestellt als Linearkombinationen der Zahlen 17 und 23: 1 = 6 – 1*5 = 6 – (17 – 2*6) = 3*6 - 17 = 3*(23 – 1*17) – 17 = 3*23 – 4*17 Also ist a = -4 und b = 3. Hieraus ergeben sich dann c und d zu c = b*q = 3*23 = 69 d = a*p = -4*17 = -68 Zudem ist w definiert als w = c*u + d*v. Einsetzen der ermittelten Werte führt dann zu w = 69*8 + (-68)*6 mod 7*11 (hier wäre auch eine andere Kombination von u und v möglich, da zu a mod p*q vier Wurzeln existieren.) = 144 mod 7*11 In der Tat gilt, dass w² = 144² = 20736 mod 7*11 = 13 mod 391. Wir haben nun also unter Miteinbeziehung der Primfaktorzerlegung von n eine Wurzel ( 144 ) des quadratischen Rests 13 mod 391 berechnet. 5.2.4 Zusammenhang zwischen der Berechnung einer Wurzel von a mod n und der Primfaktorzerlegung von n Im folgenden Satz wird nun der unmittelbare Zusammenhang zwischen der Primfaktorzerlegung einer Zahl und dem Ergebnis eines Algorithmus zur Wurzelberechnung modulo dieser Zahl hergestellt. SATZ 3 Sei n = pq, wobei p und q zwei verschiedene ungerade Primzahlen sind. Dann gilt: Besitzt man einen Algorithmus zur Berechnung von Quadratwurzeln mod n, so kann man diesen auch zur Faktorisierung von n verwenden. Dies bedeutet, dass das Berechnen von Quadratwurzeln mod n genauso schwierig ist, wie das Faktorisieren von n. 58 Beweis Wir wählen zufällig ein b1 ∈ ( / n)* und quadrieren dieses: b1 = a mod n . 2 Nun wenden wir auf a den in Satz 3 erwähnten Algorithmus zur Berechnung von Quadratwurzeln mod n an und erhalten so eine Wurzel b2 . Die Anwendung der bei 5.2.3 genannten Methode ist hierbei nicht möglich, da dieser voraussetzt, dass wir die Faktorisierung von n bereits kennen. Genau die wollen wir jedoch herausfinden… (Dass die Anwendung dieses Algorithmus eben nicht möglich ist, wird in dem Artikel von Beutelspacher und Schwenk nicht erwähnt, was leicht zu Verständnisschwierigkeiten beim Lesen führen kann.) Da b1 zufällig gewählt wurde und es genau 4 verschiedene Wurzeln von n gibt, von denen jeweils zwei von den Wurzeln mod p und mod q stammen, sind b1 und b2 mit der Wahrscheinlichkeit ½ wesentlich verschieden. Zudem gilt in ( / n)*: (b1 + b2 )(b1 − b2 ) = b1 − b2 = a − a = 0 mod n , was bedeutet, dass n 2 2 und somit dessen beiden Primfaktoren p und q, das Produkt (b1 − b2 )(b1 + b2 ) teilen. p teilt einen der beiden Faktoren, o. B. d. A. gelte p | b1 − b2 . Dann gilt, dass q Teiler des anderen Faktors ist, also q | (b1 + b2 ) . Eine Begründung für diese Aussage fehlt in Beutelspachers und Schwenks Artikel. Da dies jedoch nicht unbedingt eine triviale Tatsache darstellt, soll hier die Begründung aufgeführt werden: Wir nehmen an, dass q kein Teiler von (b1 + b2 ) ist. Dann muss q ein Teiler von b1 − b2 sein, da sonst nicht pq | (b1 − b2 )(b1 + b2 ) gelten kann. Zudem gilt aber auch p | (b1 − b2 ) , womit sich pq | (b1 − b2 )(b1 + b2 ) vereinfachen lässt zu pq | (b1 − b2 ) . Dies bedeutet, dass (b1 − b2 ) = 0 mod pq, was sich weiter umformen lässt zu b1 = b2 mod pq . Da aber b1 ≠ b2 ≠ n − b2 mod n , denn die drei sind nach Voraussetzung wesentlich verschieden, ist das nicht möglich. Nun berechnen wir den ggT( b1 − b2 , n) und erhalten daraus p oder q. Anschließend teilen wir n durch die erhaltene Zahl und haben so n faktorisiert. ♠ 59 Um den vorangehenden Satz zu verdeutlichen, behandeln wir ein Beispiel. Wir suchen uns ein n, das das Produkt zweier Primzahlen ist. Welche dies sind, wollen wir nun mittels der zuletzt behandelten Methode herausfinden. Zunächst wählen wir n = 667, da diese Zahl genau die oben geforderte Struktur besitzt. (Warum wir diese Zahl wählen, wird im weiteren Verlauf klar.) Die Restklassengruppe ( / 667)* besteht nach der Formel aus 4.3.3 aus ϕ (667) = 616 Elementen. Es wird also bereits sehr schwierig, eine Wurzel eines Quadrates durch bloßes Ausprobieren zu finden. Wir nehmen uns zunächst ein beliebiges Element b1 aus ( / 667)*, etwa b1 = 71 und quadrieren es mod 667: 71² mod 667 = 372 mod 667 Folglich ist ein quadratischer Rest a = 372 mod 667. Nun finden wir mit einem Algorithmus eine weitere Wurzel b2 von 372 mod 667. Wir erhalten z. B. das Element b2 = 393 . Achtung, der Algorithmus muss eine Wurzel liefern, die von b1 wesentlich verschieden ist, sonst funktioniert das Verfahren nicht! Weiter wissen wir, dass 667 | (71 – 393)(71 + 393). Nun nehmen wir an, dass p die Differenz (71 – 393) und q die Summe (71 + 393) teilt. Um zur Faktorisierung von n zu gelangen, müssen wir nur noch den ggT ((71 – 393), 667) = ggT (-322, 667) berechnen. So erhalten wir einen der beiden Faktoren. Dies geschieht wieder mit dem euklidischen Algorithmus: 667 = 2*322 + 23 322 = 14*23 + 0 Wir bekommen also 23 als größten gemeinsamen Teiler der beiden Zahlen. Dies ist nun ein Primfaktor von 667. Den anderen erhalten wir durch die Division 667 : 23 = 29. Folglich lautet die Primfaktorzerlegung von n = pq = 23*29. Wir haben also über die Berechnung von Quadratwurzeln mod 667 die Faktorisierung der Zahl 667 erhalten. 5.2.5 Das Problem der Faktorisierung großer Zahlen Wie bereits erwähnt, stellt die Faktorisierung von sehr großen Zahlen ein schwieriges Problem der Mathematik dar. Viele Experten sind der Meinung, dass kein Algorithmus existiert, mit dem man in vertretbarer Zeit die Faktorisierung großer Zahlen betreiben kann. Dass dies so ist, konnte man allerdings bis jetzt nicht beweisen. 60 In diesem Zusammenhang stellt sich natürlich die Frage, welcher Algorithmus zur Faktorisierung großer Zahlen der (zur Zeit) beste bzw. schnellste ist. Beachtet man, wie viele Stellen die in der Praxis genutzten Zahlen besitzen (es wird empfohlen, Zahlen mit 2048 Bit, also ca. 617 Stellen, zu verwenden), so ist das Number Field Sieve, das Zahlkörpersieb, der zur Zeit beste Algorithmus zur Faktorisierung solcher Zahlen. Dieser Algorithmus sollte für Zahlen ab 110 Stellen benutzt werden.25 Hat eine Zahl weniger Stellen, so ist es möglich, mit anderen Algorithmen teilweise wesentlich schneller zu faktorisieren. Das Problem, das auch dieser Algorithmus nicht löst, ist, dass auch er für die Faktorisierung einer Zahl mit z. B. 300 Stellen sehr lange braucht (wobei diese Zahl nach wie vor das Produkt zweier großer ungleicher Primzahlen sein soll). Um uns eine Vorstellung davon zu verschaffen, wie zeitaufwendig und schwierig es ist, große Zahlen zu faktorisieren, wollen wir die Inhalte und Ergebnisse der RSA Factoring Challenge näher betrachten. Dieser Wettbewerb wurde von den RSA Laboratories 1991 ins Leben gerufen und 2007 beendet. Das Ziel des Wettstreites war, 54 Zahlen, die die RSA Laboratories veröffentlicht hatten, zu faktorisieren. Das besondere an diesen Zahlen ist, dass sie das Produkt zweier großer Primzahlen sind und dass sie von den RSA Laboratories für „besonders schwer“ zu faktorisieren gehalten werden. Die Länge der Zahlen reicht dabei von 100 Stellen (330 Bit) bis hin zu 617 Stellen (2048 Bit). Sinn dieses Wettbewerbs war es, herauszufinden, bis zu wie vielen Stellen hin man zum jeweils aktuellen Zeitpunkt fähig war, Zahlen zu faktorisieren. Aus diesen Ergebnissen konnte man dann natürlich den Schluss ziehen, wie viele Stellen eine Zahl mindestens haben muss, dass ihre Faktorisierung für die heutigen Techniken ein Problem darstellt. Daraus wiederum gewann man die Erkenntnis, wie viele Stellen eine Zahl besitzen sollte, damit sie als sichere Verschlüsselung in bestimmten Verfahren (unter anderen auch im Fiat – Shamir – Verfahren) der Kryptographie verwendet werden kann. Ebenfalls sollte man an den Ergebnissen erkennen können, wie lange man anschließend eine solche Verschlüsselung als sicher ansehen kann. Die kleineren Zahlen (bis hin zu 130 Stellen) wurden relativ schnell faktorisiert, nämlich in den Folgejahren von 1991. Danach ging es jedoch nicht mehr so zügig voran. So war die letzte „RSA – Zahl“, deren Primfaktorzerlegung man gefunden hat, eine Zahl mit 200 Stellen, also 663 Bit. Dies geschah 2005.26 25 http://www.mathematik.de/mde/information/wasistmathematik/rsa/rsa_diskussion.html, aufgerufen am 05.07.07 26 http://en.wikipedia.org/wiki/RSA_Factoring_Challenge, aufgerufen am 28.06.07 61 Man kann an diesen Ergebnissen erkennen, wie weit die aktuellen Techniken und Algorithmen noch davon entfernt sind, eine Zahl mit 2048 Bit, also 617 Stellen, zu faktorisieren. An diesem Punkt möchte ich kurz eine eigene Erfahrung mit einbringen. Ich versuchte vor kurzem die 72 – stellige Zahl 321265486413218956123486461214646468654862156484654131655491677317571327 von meinem Computer mit dem Programm Derive faktorisieren zu lassen. Das Ermitteln der Primfaktoren dieser Zahl dauerte über vier Stunden. Jedoch bestand diese Zahl nicht aus zwei Primfaktoren, wie es im Fiat – Shamir – Verfahren üblich ist, sondern aus sechs Stück. Zwei davon waren 13 und 43, was die Faktorisierung der Zahl wiederum vereinfacht. Bedenkt man nun zusätzlich, welch große Zahlen für das Fiat – Shamir – Verfahren verwendet werden, so stellt man schnell fest, dass die zur Zeit genutzten Schlüssel auf jeden Fall sicher sind: 2048 Bit Zahlen sind im Moment definitiv nicht in einer angemessenen Zeitdauer zu faktorisieren. Wenn wir nun davon ausgehen, dass es uns irgendwann möglich ist, eine derartige Zahl zu faktorisieren, stellt das trotzdem kein Problem für das Fiat – Shamir – Verfahren dar. Die Zahlen, die für n gewählt werden, würden einfach größer gewählt: statt 2048 Bit Zahlen könnte man dann 4096 Bit Zahlen verwenden und wieder würde die aktuelle Technik vor Problemen stehen. Das einzige Problem, das sich in diesem Zusammenhang dem Verfahren (und in analoger Weise auch anderen Verfahren der Kryptographie) stellen könnte, wäre die Entdeckung eines Algorithmus, der die Faktorisierung einer großen Zahl „leicht“ macht. Es existiert momentan sogar ein Algorithmus, der es schafft, Zahlen „schnell“ zu faktorisieren, der „Shor – Algorithmus“. Dieser wurde 1994 von Peter Shor in der Arbeit „Polynomial – Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer“27 vorgestellt. Wie der Name der Arbeit bereits aussagt, ist dieser Algorithmus auf die Verwendung auf Quantencomputern ausgelegt. Der Vorteil dieser Rechner ist, dass sie, im Gegensatz zu den zur Zeit verwendeten Computern, ihre Informationen mit mehr als zwei binären Zahlen verschlüsseln. Ihre elektronischen Bauteile arbeiten nämlich nicht mehr mit Stromimpulsen (an / aus bzw. 1 / 0), sondern mit Überlagerungszuständen einzelner Atome. 27 SHOR, Peter W.: „Polynomial – Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer“. SIAM Journal on Computing, vol. 26, SIAM, 1997, S. 1484 - 1509 62 Zwar funktionieren Ein – und Ausgabe der Informationen ebenfalls mit Nullen und Einsen, beim Rechnen selbst ist es jedoch möglich, dass nicht nur diese beiden Bits auftreten, sondern auch Zwischenzustände, so genannte „Überlagerungen“. Ein relativ treffendes Analogon zu diesen Zwischenzuständen bringt das Beispiel eines Münzwurfs: Vor und nach dem Wurf existiert entweder der Zustand „Kopf“ oder der Zustand „Zahl“. Während die Münze aber in der Luft ist, gibt es weitere Zustände zwischen Kopf und Zahl. Die Verwendung des Shor Algorithmus auf einem solchen Quantencomputer führt nun dazu, dass das Faktorisieren einer großen Zahl wesentlich schneller geht, als es mit einem herkömmlichen Computer der Fall wäre: „Für das Zerlegen einer 130stelligen Zahl benötigt ein Quantencomputer 10 Millionen mal weniger Rechenschritte als klassiche[…] Rechner.“28. Eine Zahl mit 600 Stellen wird gar um einen Faktor 10 20 schneller faktorisiert. Kurz gesagt (und etwas verallgemeinert) ist der Shor Algorithmus zusammen mit einem Quantencomputer ein Algorithmus der polynomiale Laufzeit besitzt. Diese steht im krassen Gegensatz zu der Laufzeit des Number Field Sieve, die mit steigender Stellenzahl der Zahl, die man faktorisieren will, exponentiell wächst. Man könnte auch sagen, der Shor Algorithmus ist ein, für die Faktorisierung sehr großer Zahlen, effektiver Algorithmus und das Number Field Sieve nicht. Somit wäre das Problem der Faktorisierung sehr großer Zahlen gelöst… Wenn dem so wäre, würden einige kryptographische Verfahren schlichtweg unbrauchbar für die Verschlüsselung von Informationen. Es gibt jedoch ein gravierendes Problem mit dem Algorithmus bzw. viel mehr mit den Quantencomputern: Es existieren momentan nur Prototypen im Labormaßstab. Es ist den Wissenschaftlern einfach noch nicht gelungen, einen Quantencomputer mit ausreichend hoher Rechenkapazität herzustellen. Schenkt man Shor jedoch Glauben, so werden in 10 bis 20 Jahren große Institute, Militär sowie Universitäten mit diesen Rechnern arbeiten. Er ist zwar auch der Ansicht, dass Hackern diese Technik nicht zugänglich sein wird, dies ist jedoch in meinen Augen eher eine Illusion.29 Tatsache ist, dass mit der Herstellung eines Quantencomputers, der ausreichend Rechenkapazität besitzt, die Faktorisierung einer sehr großen Zahl n kein Problem mehr darstellen würde. Somit würde das Fiat – Shamir – Verfahren und einige andere Verfahren der Kryptographie ihre Sicherheit einbüßen. 28 29 http://www.vossyline.de/artikel/multimedia/quantencomputer.htm, aufgerufen am 10.08.2007 http://www.vossyline.de/artikel/multimedia/quantencomputer.htm, aufgerufen am 10.08.2007 63 Denn dann könnte jeder die Zahl n faktorisieren und damit z. B. nach dem bei 5.2.3 genannten Algorithmus die benötigten Quadratwurzeln ausrechnen. Auf ein derartiges Problem werden wir in dem Kapitel „Was wäre, wenn…“ noch etwas detaillierter eingehen. Wie jedoch gesagt, ist dieses Problem rein hypothetischer Natur: sowohl die aktuelle Mathematik als auch die aktuelle Forschung auf dem Gebiet des Quantencomputers ist noch nicht auf diesem Stand, weshalb das Fiat – Shamir - Verfahren nach wie vor sicher ist. Zur Sicherheit des Verfahren trägt zudem folgende Tatsache bei (siehe hierzu Satz 3): Je größer eine Zahl n gewählt wird, desto schwerer fällt nicht nur ihre Faktorisierung, sondern auch die Wurzelberechnung mod n. Und ohne einen Algorithmus zur Wurzelberechnung ist man ebenfalls nicht in der Lage, die Wurzelbestimmung mit vertretbarem Zeitaufwand durchzuführen. Dies stellt das äquivalente Problem zur Faktorisierung dieser Zahl n dar. 5.2.6 Anwendung des Fiat – Shamir – Verfahrens Genau auf den zuletzt genannten Schwierigkeiten basiert der Fiat – Shamir – Algorithmus. Zentral in diesem Verfahren ist, dass Person A eine Wurzel x eines quadratischen Restes a mod n besitzt, wobei n eine sehr große Zahl ist. Diese Wurzel ist aus einem bestimmten Grund sehr wichtig und daher geheim zu halten. Dann ist es einer Person D praktisch nicht möglich, dieses x zu errechnen oder gar zu erraten. Nun stellt sich wie bei 5.1 die Frage, wie Person A einem Verifizierer B beweisen kann, dass sie x besitzt, ohne aber B das Geheimnis x mitzuteilen. (x spielt in diesem Fall die Rolle des bei 5.1 geheimen Isomorphismus σ.) Mit diesem Problem befasst sich nun der eigentliche Fiat – Shamir – Algorithmus. Wie das bei 5.1 erörterte Zero – Knowledge – Verfahren, so wird auch der Fiat – Shamir – Algorithmus in zwei Phasen untergliedert, die Geheimniserzeugungsphase und die Anwendungsphase. In der Geheimniserzeugungsphase werden von einer Zentrale die Geheimnisse erzeugt. Dies geschieht in der Regel dadurch, dass sie zwei sehr große (mindestens 1024 Bit) voneinander verschiedene Primzahlen p und q nimmt und deren Produkt n = pq bildet. Die Zahl n wird veröffentlicht, wobei p und q auf jeden Fall geheim bleiben müssen bzw. nur der Zentrale bekannt sein dürfen, da sich bei Bekanntsein der beiden die individuellen Geheimnisse der Teilnehmer errechnen ließen. Nun bestimmt die Zentrale für jeden Teilnehmer die Elemente s und v, wobei gilt v = s² mod n. s (~ secret) ist das individuelle Geheimnis des Teilnehmers, während v (~ verifier) zur 64 Verifizierung dieses Geheimnisses genutzt wird. Insbesondere bedeutet dies, dass s nur dem Teilnehmer bekannt ist und v veröffentlicht wird. In diesem Zusammenhang stellt sich die Frage, wie die Zentrale zu der Bestimmung der Elemente s und v gelangt. Schließlich soll vor allem v einen gewissen Bezug zum jeweiligen Teilnehmer, der das Geheimnis s besitzt, herstellen. Im Wesentlichen gibt es hierfür 2 Möglichkeiten. Die erste stellt sich folgendermaßen dar: Die Zentrale wählt s selbst und bildet damit v = s 2 mod n . Da man hierfür die Primfaktorzerlegung von n (die das Geheimnis der Zentrale ist) nicht benötigt, kann dies der Benutzer sogar selbst tun. Allerdings hat diese Methode einen Nachteil. Dadurch, dass die Zentrale s wählt, hat die Zahl v, die den Benutzer später öffentlich identifizieren soll, in gewissem Maße Zufallscharakter und stellt keinerlei Bezug zum Teilnehmer, dem s zugeteilt wird, dar. Insbesondere hat v mit wichtigen Daten wie „Name, Kontonummer und Bankleitzahl oder ähnliche[n], die den Teilnehmer in anderen Zusammenhängen identifizieren“30 dementsprechend wenig zu tun. Im Gegensatz hierzu orientiert sich die zweite Methode an der Miteinbindung dieser Daten in die Erzeugungsphase. Hier erhält die Zentrale zuerst eine Zahl I, die die Identität des Teilnehmers darstellt, z. B. als Kombination von Kontonummer und Bankleitzahl oder ähnlichem. Dann verwandelt die Zentrale die Zahl I auf nachvollziehbare Weise in ein Quadrat mod n. Dies könnte z. B. dadurch geschehen, dass nacheinander die Zahlen j ∈ {0, 1, 2, ...} angehängt werden. Anschließend wird I( j ) darauf untersucht, ob es ein Quadrat mod n ist und wenn es dies ist, wird eine Quadratwurzel s der so erhaltenen Zahl berechnet. Dies könnte z. B. mit der bei 5.2.3 behandelten Methode erfolgen. Diese setzt zur Berechnung von v und s natürlich das Wissen der Zentrale um die Primfaktorzerlegung von n voraus. Da jedes Quadrat mod n genau 4 Wurzeln hat, besitzt die prime Restklassengruppe mod n n – viele quadratische Reste. Folglich liegt die Wahrscheinlichkeit, dass I( j ) ein 4 quadratischer Rest ist, für jedes angehängte j bei ¼ und die Zentrale dürfte zum Ermitteln eines Quadrates im Schnitt 4 Versuche benötigen. Ist letztlich v = I ( j ) ein quadratischer Rest mod n, so ist diese Zahl die öffentliche Identität des Teilnehmers und s dessen individuelles Geheimnis. 30 BEUTELSPACHER, Albrecht; SCHWENK, Jörg: „Was ist Zero – Knowledge?“. Mathematische Semesterberichte, Band 40, Heft 1, Springer Verlag, 1993, S. 82 65 In der Anwendungsphase des Algorithmus muss nun A einen Verifizierer B davon überzeugen, dass er das Geheimnis s besitzt, jedoch ohne dieses preis zu geben. Hierzu führen A und B folgendes Protokoll durch: 1. A wählt zufällig ein r ∈ ( / n)* und quadriert dieses: x = r² mod n. Dann wird das Quadrat x an B gesendet. 2. B wählt zufällig ein Bit (0 oder 1) und sendet dieses an A. a) Wählt B das Bit b = 0, so sendet A einen Wert y an B, wobei y definiert ist als y = r mod n. b) Fällt die Wahl von B auf b = 1, sendet A wiederum den Wert y an B, wobei y in diesem Fall definiert wird als y = r*s mod n. 3. Je nach Wahl des Bits überprüft B folgendes: a) Gilt y² = x mod n? b) Gilt y² = r² * s² mod n = x*v mod n? Ist die entsprechende Prüfung erfolgreich, so verifiziert B Person A. Dieser Vorgang wird nun beliebig oft wiederholt, wobei darauf zu achten ist, dass A das Element r jedes Mal neu und zufällig wählt. Zudem sollte bei genauer Betrachtung des Protokolls klar werden, dass B nur verifizieren kann, dass A das Geheimnis s besitzt, wenn er b = 1 wählt. Wie im Folgenden beschrieben wird, erfüllt dieses Protokoll, wie das bei 5.1 vorgestellte, die drei Voraussetzungen für ein Zero – Knowledge – Verfahren: 1. Vollständigkeit Kennt A das Geheimnis s, so kann er B bei einer beliebigen Anzahl des oben erläuterten Tests davon überzeugen, da in ( / n)* gilt y 2 = (r * s b ) 2 = r 2 * s 2b = r 2 * v b = x * v b mod n , wobei b ∈ {0, 1} . 2. Korrektheit ~ Ein Betrüger A , der behauptet, das Geheimnis s zu kennen, kann mit beliebig hoher Wahrscheinlichkeit entlarvt werden. Hierzu müssen wir das Protokoll näher betrachten: ~ Wir nehmen an, eine Person A versucht im oben genannten Dialog B davon zu überzeugen, dass er s besitzt (was er natürlich nicht tut, da s das Geheimnis von A ist). 66 ~ Also wählt A wiederum ein r ∈ ( / n)*, quadriert dieses (x = r² mod n) und schickt x an B. (1) Nun wählt B entweder b = 0 oder b = 1. ~ Wählt B das Bit b = 0, so kann A einfach y = r an B schicken (2a) und sich von diesem verifizieren lassen (3a). Die Wahrscheinlichkeit, dass die Wahl von B auf b = 0 fällt, ist dabei ½, da er aus 2 gleichwahrscheinlichen Ereignissen eines auswählt. ~ Wählt B aber b = 1 (2b), benötigt A das Geheimnis s (das er nicht besitzt) um r*s zu bilden und sich so im Anschluss von B verifizieren zu lassen. ~ Nun besteht durchaus die Möglichkeit, dass A sein Unterfangen, B davon zu überzeugen, dass er s besitzt, trotz der Wahl B’s von b = 1 nicht aufgibt und versucht, s zu erraten. Dann interessiert uns natürlich, wie hoch die Wahrscheinlichkeit ist, dass ~ A mit seinem Versuch richtig liegt: Um diese Wahrscheinlichkeit zu bestimmen, müssen wir etwas weiter ausholen. s ist ein Element aus ( / n)*, was nach Definition 4.3.2 die Kardinalität ϕ (n) besitzt. Der Versuch, ein bestimmtes Element aus dieser Menge zu erraten, besitzt also die Wahrscheinlichkeit 1 . Da das (öffentliche) Quadrat v aber vier ϕ ( n) Wurzeln besitzt und jede dieser Wurzeln zur erfolgreichen Verifizierung heran gezogen werden kann, erhöht sich die Wahrscheinlichkeit, s zu erraten auf 4 . ϕ ( n) Diese Wahrscheinlichkeit ist jedoch sehr gering, da n als das Produkt zweier 1024 Bit Primzahlen sehr groß ist, was dann natürlich auch für ϕ (n) gilt. Folglich geht die Wahrscheinlichkeit, dass man s errät, für sehr großes ϕ (n) gegen 0. Da Verifizierer B natürlich nicht nur b = 1 wählt, sondern auch b = 0, betrachten wir ein Protokoll mit t Runden und berechnen, wie hoch die Wahrscheinlichkeit ist, dass ~ A in allen diesen Runden richtig liegt. Hierzu setzen wir fest, dass in diesen t Runden B t 0 - mal b = 0 und t1 - mal b = 1 wählt (also t = t 0 + t1 ). Da die Wahlen von b in jeder Runde unabhängige Ereignisse sind, lassen sich die Einzelwahrscheinlichkeiten für b = 0 und b = 1 einfach in ihrer Anzahl multiplizieren: ~ P( A liegt in t Runden richtig) = t t1 t 0 1 1 1 4 = * * 2 2 2 ϕ ( n) − t1 t1 t t1 4 1 8 . = * * 2 ϕ ( n) ϕ ( n) 67 ~ An dieser Gleichung sieht man, dass B die Wahrscheinlichkeit, dass A ihn fälschlicherweise davon überzeugen kann, s zu kennen, durch eine Mehrfachdurchführung des Dialogs beliebig minimieren kann. Zum einen geht nämlich der erste Faktor für größer werdendes t streng monoton gegen 0, zum anderen ist der zweite Faktor (da ϕ (n) sehr groß ist) bereits wesentlich kleiner als 1 und geht deshalb ebenfalls streng monoton gegen 0. Befinden wir uns beispielsweise in ( / 77)*, so ist ϕ (n) = 60. Wird der Dialog dann 20 mal durchgeführt und wählt b davon nur 5 mal b = 1, so ist 20 5 ~ 1 8 P( A liegt in t Runden richtig) = * ≈ 0,95 * 10 −6 * 42 * 10 −6 = 3,99 * 10 −11 . 2 60 Da in der Praxis natürlich wesentlich größere Zahlen als n = 77 benutzt werden, ist es ~ A praktisch nicht möglich, B bei häufiger Durchführung des Dialoges davon zu überzeugen, dass er s besitzt. 3. Zero – Knowledge Damit das oben genannte Verfahren die Zero – Knowledge – Eigenschaft aufweist, muss es möglich sein, den Dialog ohne das Wissen von s zu simulieren. Dies führen nun ein Simulator M und der Verifizierer B durch: a) M wählt dazu zufällig m = 0 oder m = 1 sowie eine Zahl r ∈ ( / n)*. Dann bildet er x = r 2 v − m mod n und sendet x an B. b) B wählt ebenfalls zufällig ein Bit b und sendet dieses an M. c) Wenn b = m ist, schickt M y = r mod n an B. d) B überprüft daraufhin, ob y 2 = xv b mod n gilt. Diese Prüfung wird stets erfolgreich sein, schließlich lässt sich xv b umformulieren zu x * v b = r 2 v − m * v b = r 2 = y 2 mod m (denn laut c) ist b = m, also v − m * v b = 1 ). Im Falle von b ≠ m wird die Runde gelöscht und neu gestartet. Die Wahrscheinlichkeit, dass M und B das gleiche Bit wählen, beträgt 1 1 1 * = . 2 2 4 M und B dürften also im Schnitt 4 Versuche benötigen, um zu einer Übereinstimmung ihrer Bits und so zu einer Verifizierung seitens B zu kommen. Dabei wird ein erfolgreicher Fall mit b = m in einem Zahlentripel (x, b, y) festgehalten. 68 Das Verfahren wird nun sooft durchgeführt, bis man genauso viele (zufällige) Zahlentripel (x, b, y) besitzt, wie im Originalprotokoll entstanden sind. Diese Zahlentripel lösen allesamt die Gleichung xv b = y 2 . Da wir nun zwei Protokolle besitzen, deren jeweilige Ergebnisse die gleiche Anzahl an Zahlentripeln sind, die der gleichen Bedingung gehorchen, sind die beiden Dialoge für einen Außenstehenden nicht zu unterscheiden. Wir haben den oben genannten Dialog ohne Benutzung des Geheimnisses s simuliert. Da die Bedingungen Vollständigkeit, Korrektheit und Zero – Knowledge – Eigenschaft erfüllt sind, besitzt dieses Protokoll alle Voraussetzungen für ein Zero – Knowledge – Verfahren. 5.2.7 Praxisbezug des Fiat – Shamir – Verfahrens Wie bereits weiter oben erläutert wurde, findet das bei 5.1 vorgestellte Verfahren „Isomorphie von Graphen“ in der Praxis eher wenig Anwendung, das Fiat – Shamir – Verfahren hingegen durchaus. So eignet es sich sehr gut, um die Identität einer Person gegenüber einer Maschine nachzuweisen. Dies beruht im Wesentlichen darauf, dass das Fiat – Shamir – Verfahren ein Public – Key – Verfahren ist: derjenige, der die Identität eines Teilnehmers überprüfen will, muss keinerlei geheime Informationen mit dem Zu – Überprüfenden teilen.31 Insbesondere wird das Verfahren dazu verwendet, die Identität einer Chipkarte, einer so genannten Smartcard, die einer Person zugeteilt wurde, zu überprüfen. Smartcards sind Chipkarten, die im Vergleich zu „normalen“, reinen speichernden, Chipkarten, dazu fähig sind, eigenständig Rechenoperationen durchzuführen.32 Natürlich wird dann nicht mehr die Identität der Person direkt überprüft. Die Karte dient so zu sagen als Vermittler zwischen der überprüfenden Maschine und der Person. Damit die Smartcard nicht von einer beliebigen Person genutzt werden kann, muss sich jeder Nutzer gegenüber der Chipkarte ausweisen. Normalerweise geschieht dies in Form einer Personal Identification Number, kurz PIN. So wird sichergestellt, dass nur Personen, die berechtigt sind, die Karte zu nutzen, dies tun können. Natürlich sind die Rechenleistungen einer solchen Smartcard stark begrenzt, weshalb die Chips darauf auch nur Algorithmen ausführen können, die sehr wenige Rechenschritte haben. Der Fiat – Shamir – Algorithmus ist ein solcher. So muss der Chip der Smartcard „pro Runde 31 BEUTELSPACHER, Albrecht; SCHWENK, Jörg; WOLFENSTETTER, Klaus – Dieter: „Moderne Verfahren der Kryptographie“. Vieweg Verlage, 4. Auflage, 2001, S. 51 32 http://www.ubka.uni-karlsruhe.de/cgi-bin/psview?document=ira/2000/18&format=0&page=81, aufgerufen am 13.06.07 69 im Durchschnitt nur 1,5 modulare Multiplikationen ausführen, nämlich die Berechnung von r² und in der Hälfte der Fälle die Berechnung von rs.“33 Da es relativ einfach ist, „das Fiat – Shamir – Verfahren auf einer Chipkarte zu implementieren“34, fand man ziemlich schnell eine praktische Verwendungsmöglichkeit dafür: man nutzte die Karten für Fernsehsender, deren Nutzung, neben den in Deutschland üblichen GEZ Gebühren, weitere Kosten entstehen ließen: das so genannte Pay – TV. So gab es beispielsweise 1991 eine Patentanmeldung für ein Pay – TV – System, das unter dem Namen „Videocrypt“ bekannt ist. Wenn auch dieses System heute keine Verwendung mehr findet, so basierte es, wie alle heute verwendeten Pay – TV – Modelle, auf folgendem System: Man erhält einen Decoder, der selbst keinerlei Geheimnisse enthält, jedoch alleine auch nicht den Empfang kostenpflichtiger Fernsehprogramme ermöglicht. Zusätzlich benötigt man eine Smartcard, auf der sich alle, für die Entschlüsselung der Fernsehsender benötigten, Daten befinden. Natürlich gibt es bei kostenpflichtigem Fernsehen immer Personengruppen, die versuchen, die Entgeldpflicht zu umgehen. Diese versuchen, Smartcards herzustellen, die es ermöglichen, gebührenpflichtiges Fernsehen empfangbar zu machen, ohne jedoch dafür an die Pay – TV – Sender zahlen zu müssen. Da dies nicht im Sinne der Sender sein kann, soll der Decoder erkennen können, ob er gerade eine Originalkarte oder eine gefälschte Karte überprüft und einer gefälschten Karte dementsprechend den Zugang zum kostenpflichtigen Fernsehen verweigern. Allerdings soll der Decoder zusätzlich keinerlei Geheimnisse speichern, da man diese evtl. auslesen und bei der Entwicklung der gefälschten Karten verwenden könnte. Folglich kommt für das Überprüfungsverfahren des Decoders nur ein Public – Key – Verfahren in Frage, da nur dieses gewährleistet, dass der Überprüfende keine Informationen mit dem zu Überprüfenden teilen muss. Bei dem Pay – TV – System „Videocrypt“ nutzte man eben das Fiat – Shamir – Verfahren.35 33 BEUTELSPACHER, Albrecht; SCHWENK, Jörg: „Was ist Zero – Knowledge?“. Mathematische Semesterberichte, Band 40, Heft 1, Springer Verlag, 1993, S. 84 34 BEUTELSPACHER, Albrecht; SCHWENK, Jörg; WOLFENSTETTER, Klaus – Dieter: „Moderne Verfahren der Kryptographie“. Vieweg Verlag, 4. Auflage, 2001, S. 51 35 Ebd. S. 51 70 5.3 Was wäre wenn… Nun wollen wir noch einmal die Überlegung aufgreifen, was es für die beiden vorgestellten Zero – Knowledge – Verfahren bedeuten würde, wenn man Algorithmen besäße, die es in vertretbarer Zeit ermöglichen, entweder einen Isomorphismus zwischen zwei isomorphen Graphen zu finden oder das Produkt n zweier großer Primzahlen zu faktorisieren. Schließlich verleiht allein die derzeitige Unkenntnis über die Existenz und die eventuelle Beschaffenheit solcher Algorithmen den beiden Zero – Knowledge – Verfahren die nötige Sicherheit… Um herauszufinden, welche Folgen aus der oben gemachten Annahme für unsere Verfahren entstehen würden, betrachten wir einfach die Voraussetzungen an ein Zero – Knowledge – Verfahren. So wären die Bedingung „Vollständigkeit“ nach wie vor erfüllt: kennt Person A das Geheimnis, wird Verifizierer B sie jedes Mal identifizieren können. Ebenfalls unabhängig von der Existenz der oben genannten Algorithmen ist die „Zero – Knowledge – Eigenschaft“ eines Verfahrens: es ist Verifizierer B in beiden Verfahren weiterhin möglich, Person A zu verifizieren, ohne dass diese etwas von ihrem Geheimnis preisgeben muss. Die Bedingung, die jedoch mit der Existenz dieser Algorithmen unerfüllt bleibt, ist die ~ „Korrektheit“. Mit einem Algorithmus wäre es einer beliebigen Person A , die das Geheimnis ursprünglich nicht kannte, nun möglich, sich in den Besitz entweder eines Isomorphismus zwischen zwei isomorphen Graphen oder einer Wurzel eines Quadrates mod n zu bringen.36 ~ Mit diesen könnte A dann den Verifizierer B fälschlicherweise davon überzeugen, dass er das Geheimnis von A kennt und sich somit als A ausgeben. B kann nämlich weder in dem Verfahren aus 5.1 noch in dem aus 5.2 unterscheiden, ob der Schlüssel, den er vorgelegt bekommt (im Verfahren „Isomorphie von Graphen“ spielt τ , τσ oder τσ −1 die Rolle des Schlüssels, im „Fiat – Shamir – Verfahren“ tut dies r² oder rs) wirklich das Geheimnis der Person A ist oder nicht. Folglich könnte sich jeder, der einen entsprechenden Algorithmus kennt, als A ausgeben und würde jederzeit von B verifiziert werden. Genau dies würde die von uns behandelten Dialoge als Zero – Knowledge – Verfahren unbrauchbar machen. 36 Ebd., S. 55 71 6. Zero – Knowledge – Verfahren in der Schule? Wenn man, wie ich als Student der Mathematik für das Lehramt an Realschulen, eine Arbeit über Zero – Knowledge – Verfahren verfasst, so stellt sich logischerweise auch die Frage: Eignet sich dieses Thema oder Teile dieses Themas für die Verwendung im Schulunterricht? Dies lässt sich nicht mit einem pauschalen „ja“ oder „nein“ beantworten, sondern besitzt sowohl Argumente, die dafür sprechen, als auch welche, die es als wenig sinnvoll erscheinen lassen, die Thematik im Unterricht zu behandeln. Zunächst einmal lässt sich sagen, dass es wohl kaum möglich ist, die beiden hier vorgestellten Verfahren in der Schule durchzunehmen. So führt insbesondere die, für Schüler mit Sicherheit sehr komplizierte modulare Arithmetik dazu, dass es wahrscheinlich nicht gelingen würde, den meisten Schülern das Fiat – Shamir – Verfahren verständlich näher zu bringen. Insbesondere haben wir bei den mathematischen Grundlagen gesehen, dass nicht nur Grundlagen aus der modularen Arithmetik benötigt werden, sondern auch algebraische Strukturen wie Gruppen und Ringe. Derartige Dinge dürften einen Schüler der Sekundarstufe 1 mit großer Wahrscheinlichkeit überfordern. Nicht umsonst wird die Thematik der algebraischen Strukturen erst an der Universität aufgegriffen. Folglich würde sich, rein von den mathematischen Grundlagen her gesehen, nur das Verfahren „Isomorphie von Graphen“ für den Einsatz als Lehrstoff in der Schule eignen. Da sich jedoch keinerlei Graphentheorie in den Lehrplänen der Sekundarstufe 1 wieder findet, wäre es unabdingbar, dass man deren Grundlagen vor der Behandlung des eigentlichen Verfahrens mit den Schülern durchgenommen und eingeübt hat. Diese Grundlagen besitzen, wie wir oben gesehen haben, einen gewissen Umfang, weshalb für deren Behandlung auch eine nicht geringe Zeit benötigt würde. Zusammen mit der Darstellung des eigentlichen Verfahrens käme man auf einen Stoffumfang, der nur innerhalb eines Projektes zu vermitteln wäre. Hier setzt nun ein weiterer Punkt an: Da der Stoff absolut lehrplanfremd ist, könnten die Schüler im weiteren Verlauf ihrer schulischen Karriere relativ wenig mit dem neu erlernten Wissen anfangen. Eventuell würden sie das Projekt gar als reine Zeitverschwendung empfinden und ein entsprechendes Engagement an den Tag legen. Auf Grund des Stoffumfangs erscheint es ebenfalls als wenig sinnvoll, Zero – Knowledge – Verfahren in der Schule vorzustellen: Der Stoff innerhalb des Lehrplans ist relativ dicht. Ob sich in diesem Zusammenhang überhaupt die Möglichkeit ergeben würde, lehrplanfremden Stoff mit den Schülern durchzunehmen, ist sehr fraglich… 72 Dies waren zunächst die negativen Aspekte. Es gibt jedoch durchaus auch Argumente, die dafür sprechen, ein derartiges Projekt durchzuführen. Zuerst würden die Schüler durch die Behandlung der Graphentheorie eine Seite an der Mathematik kennen lernen, die sie mit großer Wahrscheinlichkeit noch nie gesehen haben. Für viele Schüler besteht die Mathematik lediglich aus Geometrie und Algebra. Dabei wird die Geometrie meist als Kombination aus Planimetrie und etwas Stereometrie, die Algebra hingegen als reines Rechnen empfunden. Mit der Behandlung der Graphentheorie könnte man die Schüler für einen, für sie neuen, Bereich der Mathematik aufschließen. Da die Thematik an sich sehr leicht verständlich und anschaulich ist, würde man hier vermutlich sehr schnell auf Verständnis stoßen. Zudem ergeben sich aus der Behandlung dieser Grundlagen sehr schnell Verbindungen zu Anwendungen im Alltag, wie z. B. dem Routenplaner. Ein weiterer Punkt, den die Schüler anhand eines solchen Projekts lernen könnten, ist, dass die Mathematik mehr ist, als Formeln anwenden, Rechnen und Zeichnen. Insbesondere könnten sie problemlösendes Denken einüben, vorausgesetzt man behandelt entsprechende Beispiele wie das „Wo ist Walter – Problem“ aus Kapitel 3.1. Die Schüler müssten sich mit dem Problem auseinander setzen „Wie kann ich meinem Gegenüber glaubhaft versichern, dass ich ein Geheimnis kenne, ohne es ihm zu verraten?“. Verschiedene Medien und andere Lehrplankritiker stellen immer wieder fest, dass problemlösendes Denken in der Schule nicht genug gefördert wird. Hier wäre nun eine Möglichkeit, wie das Fach Mathematik dazu beitragen kann. Ich halte es in der Tat für sehr wichtig, den Schülern zu zeigen, dass Mathematik mehr ist, als Rechnen, Konstruieren oder Formeln auflösen, dass es Anwendungen in unserem Alltag gibt, die ohne Mathematik nicht funktionieren würden. Trotz der genannten Vorteile empfinde ich es aus den oben genannten Gründen als nicht sehr sinnvoll, die Thematik der Zero – Knowledge – Verfahren in der Schule zu behandeln. 73 7. Quisquater, Guillou: „How to Explain Zero – Knowledge Protocols to Your Children“37 – ins Englische übersetzt von Tom Berson – The Strange Cave of Ali Baba O Know, oh my children, that very long ago, in the Eastern City of Baghdad, there lived an old man named Ali Baba. Every day Ali Baba would go to the bazaar to buy or sell things. This is a story which is partly about Ali Baba, and partly also about a cave, a strange cave whose secret and wonder exist to this day. But I get ahead of myself… One day in the Baghdad bazaar a thief grabbed a purse from Ali Baba who right away started to run after him. The thief fled into a cave whose entryway forked into two dark winding passages: one to the left and the other to the right. (The Entry of the Cave) Ali Baba did not see which passage the thief ran into. Ali Baba had to choose which way to go and he decided to go to the left. The left-hand passage ended in a dead end. Ali Baba searched all the way from the fork to the dead end, but he did not find the thief. Ali Baba said to himself that the thief was perhaps in the other passage. So he searched the right-hand passage, which also came to a dead end. But again he did not find the thief. “This cave is pretty strange,“ said Ali Baba to himself, “Where has my thief gone?“ The following day another thief grabbed Ali Baba’s basket and fled, as the first thief had fled, into the strange cave. Ali Baba pursued him, and again did not see which way the thief went. This time Ali Baba decided to search to the right. He went all the way to the end of the righthand passage, but he did not find the thief. He said to himself that, like the first thief, the second thief had also been lucky in taking the passage Ali Baba did not choose to search. This had undoubtedly let the thief leave again and to blend quietly into the crowded bazaar. The days went by, and every day brought its thief. Ali Baba always ran after the thief, but he never caught any of them. On the fortieth day a fortieth thief grabbed Ali Baba‘s turban and fled, as thirty-nine thieves had done before him, into the strange cave. Ali Baba yet again did not see which way the thief went. This time Ali Baba decided to search the heft-hand passage, but again he did not find the thief at the end of the passage. Ali Baba was very puzzled. 37 http://dsns.csie.nctu.edu.tw/research/crypto/html/pdf/c89/628.pdf, aufgerufen am 10.06.2007 74 He could have said to himself, as he had done before, that the fortieth thief had been as lucky as each of the other thirty-nine thieves. But this explanation was so far-fetched that even Ali Baba did not believe lt. The luck of the forty thieves was just too good to be a matter of chance. There was only one chance in a million million that all of the forty would escape! So Ali Baba said to himself that there must be another more likely explanation. He began to suspect that the strange cave guarded a secret! And Ali Baba set out to discover the secret of the strange cave. He decided to hide under some sacks at the end of the right-hand passage. After a very uncomfortable wait he saw a thief arrive who, sensing he was pursued by his victim, whispered the magic words, “Open sesame.“ Ali Baba was amazed to see the wall of the cave slide open. The thief ran through the opening. Then the wall slid closed again. The pursuer arrived, and was all upset to find only Ali Baba under the sacks at the dead end of the passage. The thief had escaped. But Ali Baba was all happy, for he was finding out the Secret of the Strange Cave. Ali Baba experimented with the magic words. He discovered to his amazement that when the wall slid open the right-hand passage was connected with the left-hand passage. Now Ali Baba knew how all of the forty thieves had escaped from him. Ali Baba worked and worked with the magic words, and he finally managed to replace them with new magic words, a little like you change the combination for some padlocks. The very next day a thief was caught. Ali Baba recorded this story and his discovery in a lovely illuminated manuscript. He did not write down the new magic words, but he included some subtle clues about them. The Fate of the Manuscript… Ali Baba‘s lovely illuminated manuscript arrived in Italy in the Middle Ages. Today it is in the United States, near Boston. There it has recently held the full attention of several curious researchers. Through decryption of the subtle clues, these researchers have even recovered the new magic words! After several archaeological excavations in the ruins of the old Baghdad bazaar, the strange cave was located. It was not a myth! And, despite the centuries, the magic words still worked. All agog, the curious researchers went through the end wall between the two passages. 75 The television networks were quickly made aware of the unusual events taking place in Baghdad. A big American network even got an exclusive on the story. One of the researchers, a certain Mick Ali, a descendent perhaps of Ali Baba, wanted to demonstrate that he knew the secret. But he did not want to reveal the secret. Here is what he did. First, a television crew filmed a detailed tour of the cave with the two dead-end passages. Then everybody went out of the cave. Mick Ali went back in alone and went down one of the passages. Then the reporter, accompanied by the camera, went inside only as far as the fork. There he flipped a coin to choose between right and left. If the coin come up heads he would tell Mick to come out on the right. If the coin came up tails he would tell Mick to come out on the left. It was heads, so the reporter called out loud, “Mick, come out on the right.“ And Mick did just that. In memory of the forty thieves this demonstration scene was played forty times. Each of the times everybody went back out of the cave and Mick entered alone all the way in to one of the passages. Then the reporter and the camera went as far as the fork where he chose by flipping a coin which order to give to Mick. Mick succeeded in all forty scenes. Anybody who did not know the secret of the cave would have been exposed on the first failure. Each new test divided by two the chances of success for someone without the secret. On the other hand, the secret allowed Mick to come out each time by the required exit. The Jealous Reporter Employed by another television network, a jealous reporter wanted to also film a story on the strange cave. Mick refused to participate because he had given exclusive rights to the story to the first network. But Mick mischievously suggested to the jealous reporter that the story could be filmed without possessing the secret. The jealous reporter thought and thought, and finally he understood. He said to himself, “I even know a stage actor who looks like Mick Ali and who could be mistaken for him.“ And the second story was filmed. In the course of the filming half of the scenes were spoiled because Mick‘s double did not know how to get from one passage to the other! The jealous reporter edited the tape and only kept the successful scenes until he had forty of them. The two stories were broadcast at the same hour on the same evening by the two competing American networks. The matter was taken to court. Both videotapes were placed into evidence. But the judges and the experts could not tell the tapes apart. Which tape was simulated? Which tape was genuine? The tapes alone were not enough 76 to judge by. The simulation surely conveyed no knowledge of the secret. But the simulation and the genuine tape were indistinguishable. So the genuine tape did not convey knowledge of the secret either. The reporter who bad gotten the exclusive story had been convinced at the time that Mick Ali knew the secret, but the reporter could not pass his conviction on to the judges in court or to the television audience either. Mick Ali had achieved his real objective. He wanted, in fact, to show that it is possible to convince without revealing, and so without unveiling his secret. The Tests in Parallel Meanwhile, other researchers in Israel observed that by using several secrets and making tests in parallel, one could reduce the number of scenes in the films. In other words, the length of the authentication. They imagined an apartment building with one cave per floor, each having its own magic words. They needed was one extra actor per cave. All the floors could be filmed at once to see where the actor came out on each floor. They even proposed an arithmetic solution where a reply with a single number as proof could replaced many actors. Still, a compromise between the number of secrets and the number of scenes to film may not always be optimal. It would be much better to have a single secret and a single scene. Besides that, simulation by successive attempts becomes less and less practical as the number of secrets increases. Do we have no conveyance of knowledge when you cannot simulate with successive attempts? The Prior Agreement All of this really intrigued some European researchers. They made an observation that applies equally to the serial version and to the parallel version. To save time filming, the jealous reporter and Mick Ali‘s double would have been pretty clever to think of agreeing in advance on a list of forty random selections between right and left. During the filming, the jealous reporter would have then pretended to choose the questions at random in his head, and the double, who knew in advance the questions he would be asked, would not need to know the secret and could still pass all of the tests one after the other. Therefore to the simulation technique of successive attempts where only the successful scenes are kept was added a simulation technique of prior agreement between prover and verifier. 77 A Single Test, A Single Secret In response to this observation a new cave was set up with more passages ending at a fork. (The Revised Cave) Certainly the physical construction of the cave becomes problematic when the number of passages increases. It is impossible to build a cave with a million million passages. But whatever the number of passages, you could simulate by prior agreement. A more arithmetic scheme would allow a verifier to choose a question from a set of a million million questions. With a single test you could directly reach the level of security obtained with forty successive tests in the cave with two passages. The court is completely unable to tell the videotapes apart: one depicting a demonstration, the other a simulation by prior agreement. Therefore, even when the size of the question is large the demonstration does not show knowledge of the secret‘s value. Epilogue And so, my children, you have heard how Ali Baba learned the secret of the strange cave, and how his descendent, the clever researcher Mick Ali, was able to convince a television reporter that he knew the secret without having to tell him what the secret was. Countless people saw Mick Ali on the television, and he became famous and had adventures around the world. He still has not revealed the secret of the strange cave, but has convinced many others, including me, that he does know lt. The keeping of secrets reminds me of the story of the Merkle Hellman and his super-increasing knapsack. But the hour grows late. That is another story for another time. 78 8. Literaturverzeichnis BEUTELSPACHER, Albrecht; SCHWENK, Jörg: „Was ist Zero – Knowledge“. Erschienen in: Mathematische Semesterberichte, Band 40, Heft 1. Springer Verlag, Berlin, 1993, Seite 73 – 85 BEUTELSPACHER, Albrecht; SCHWENK, Jörg; WOLFENSTETTER, Klaus – Dieter: „Moderne Verfahren der Kryptographie“. Vieweg Verlag, Braunschweig, 4. Auflage, 2001 FEIGE, Uriel; FIAT, Amos; SHAMIR, Adi: „Zero knowledge proofs of identity“. Erschienen in: Proceedings of the 19th Annual ACM Symposium on Theory of Computing. ACM Press, New York, 1987, S. 210 – 217 GOLDWASSER, Shafi; MICALI, Silvio; RACKOFF, Charles: „The Knowledge Complexity of Interactive Proof-Systems“. Erschienen in: Proceedings of the 17th Annual ACM Symposium on Theory of Computing. ACM Press, Rhode Island, 1985, S. 291 – 304 HANDFORD, Martin: „Wo ist Walter“. Sauerländer Verlag, Düsseldorf, 4. Auflage, 2001 KARADENIZ, Besim: „Einführung in die Kryptographie“. Erhältlich unter: http://www.netplanet.org/kryptografie/einfuehrung.shtml, Stand: 26.07.2007 N.N.: „Advanced Encryption Standard“. Erhältlich unter: http://de.wikipedia.org/wiki/Advanced_Encryption_Standard, Stand: 26.07.2007 N.N.: „Applied Kid Kryptographie“. Erhältlich unter: http://www.wisdom.weizmann.ac.il/~naor/PUZZLES/waldo.html, Stand: 28.05.2007 79 N.N.: „Diskussion von RSA“. Erhältlich unter: http://www.mathematik.de/mde/information/wasistmathematik/rsa/rsa_diskussion.html, Stand: 05.07.2007 N.N.: „Enigma“. Erhältlich unter: http://de.wikipedia.org/wiki/Enigma_%28Maschine%29, Stand: 30.06.2007 N.N.: „Kryptographie“. Erhältlich unter: http://de.wikipedia.org/wiki/Kryptographie, Stand: 12.06.2007 N.N.: ohne Titel. Erhältlich unter: http://www.inf.tu-dresden.de/content/institutes/ sya/dud/lectures/2007sommersemester/KPDatensicherheit/v9_doku.pdf, Stand: 26.05.2007 N.N.: ohne Titel. Erhältlich unter: http://www.ubka.uni-karlsruhe.de/cgibin/psview?document=ira/2000/18&format=0&page=81, Stand: 13.06.2007 N.N.: „RSA Factoring Challenge“. Erhältlich unter: http://en.wikipedia.org/wiki/RSA_Factoring_Challenge, Stand: 28.06.2007 N.N.: „Verschiebechiffre“. Erhältlich unter: http://de.wikipedia.org/wiki/Verschiebechiffre, Stand: 30.06.2007 QUISQUATER, Jean – Jacques; GUILLOU, Louis: „How to Explain Zero – Knowledge Protocols to Your Children“. Erhältlich unter: http://dsns.csie.nctu.edu.tw/research/crypto/html/pdf/c89/628.pdf, Stand: 10.06.2007 ROSEN, Kenneth H.: „Discrete Mathematics And Its Applications“. McGraw – Hill Companies, Boston, 4. Auflage, 1999 SCHEID, Harald: „Zahlentheorie“. Spektrum Akademischer Verlag, Heidelberg, 4. Auflage, 2007 80 SHANNON, Claude: „Communication Theory Of Secrecy Systems“. Erschienen in: Bell System Technical Journal, vol. 28., n. 4. o. V., o. O., 1949, S. 656ff SHOR, Peter W.: „Polynomial – Time Algorithms for Prime Factorization and Discrete Logarithms an a Quantum Computer“. Erschienen in: SIAM Journal on Computing, vol. 26. SIAM, Philadelphia, 1997, S. 1484 – 1509 VOßBERG, Rüdiger: „Diese Computer knacken Geheimcodes, Peter Shor über Quantencomputer“. Erhältlich unter: http://www.vossyline.de/artikel/multimedia/quantencomputer.htm, Stand: 10.08.2007 9. Danksagungen Mein Dank gilt vor allem Herrn Prof. Dr. Steuding, der es sehr schnell schaffte, mich für dieses Thema zu begeistern und immer ein offenes Ohr für meine Fragen hatte. 81 10. Erklärung Hiermit versichere ich, dass ich die Arbeit in allen Teilen selbstständig gefertigt und keine anderen als die in der Arbeit angegebenen Hilfsmittel benutzt habe. Die Zeichnungen, Tabellen und bildlichen Darstellungen habe ich selbst gefertigt. Würzburg, den 15.10.2007 Bernd Götzelmann 82