Jürgen Ecker Automatentheorie und Kryptologie Computer– und Mediensicherheit, FHS Hagenberg Skriptum zu den Vorlesungen in den Wintersemestern 2002/2003 und 2003/2004 und im Sommersemester 2003 ii Inhaltsverzeichnis 1 Caesar, Vigenère und Feistel 1 1.1 Caesar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 2 1.3 Vigenère’s chiffre indechiffrable“ . . . . . . . . . . . . . . . . . . . . . . . . . ” Scherbius . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4 Feistel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.5 Die Erfindung der asymmetrischen Verschlüsselung . . . . . . . . . . . . . . . 4 2 Rivest, Shamir und Adleman 7 2.1 Auf den Spuren Euklids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2 Falsch rechnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2.1 Noch einmal Caesar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.3 Diophantastisch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.4 Endliche Körper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.5 Das RSA-Verschlüsselungsverfahren . . . . . . . . . . . . . . . . . . . . . . . 19 2.5.1 Die Eulersche ϕ-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.5.2 Das RSA-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.6 Der chinesische Restsatz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.7 Attacken auf RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.7.1 Repeated Encryption . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.7.2 Gleiche Moduln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.7.3 Die Low Exponent Attacke . . . . . . . . . . . . . . . . . . . . . . . . 25 Faktorisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.8.1 . . . . . . . . . . . . . . . . . . . . . . . 26 Lineare Gleichungssysteme über endlichen Körpern . . . . . . . . . . . 27 Das quadratische Sieb . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Zufallszahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.9.1 Test auf Zufälligkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.9.2 Der BBS-Zufallszahlengenerator . . . . . . . . . . . . . . . . . . . . . 33 2.10 Erzeugung von Primzahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.8 2.8.2 2.8.3 2.9 Die Pollard-(p − 1)-Methode iii iv INHALTSVERZEICHNIS 2.10.1 Es gibt viele Primzahlen . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.10.2 Primzahltests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Probedivision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Der Fermat–Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Der Miller–Rabin–Test . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.10.3 Erzeugung von starken Pseudoprimzahlen . . . . . . . . . . . . . . . . 38 3 Diffie und Hellman 3.1 39 Gruppen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.1.1 Primitivwurzeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.2 Polynome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.3 Polynome über Zp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.4 Shared Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.4.1 Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.4.2 Chinesischer Restsatz . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3.5 Faktorisieren in Zp [x] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.6 Endliche Körper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.7 Diffie-Hellman-Key-Exchange . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.8 DL- und DH-public-key Systeme . . . . . . . . . . . . . . . . . . . . . . . . . 60 3.8.1 Das Massey-Omura-Kryptosystem . . . . . . . . . . . . . . . . . . . . 60 3.8.2 Das ElGamal-Kryptosystem . . . . . . . . . . . . . . . . . . . . . . . . 60 Berechnung diskreter Logarithmen – Der Index Calculus Algorithmus . . . . 61 3.10 Andere public-key Systeme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 3.10.1 Das Knapsack-Problem . . . . . . . . . . . . . . . . . . . . . . . . . . 64 3.10.2 Das Merkle-Hellman-Kryptosystem . . . . . . . . . . . . . . . . . . . . 65 3.10.3 Das Chor-Rivest-Kryptosystem . . . . . . . . . . . . . . . . . . . . . . 66 3.9 4 ElGamal 4.1 4.2 69 Hashfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 4.1.1 Stark kollisionsresistente Kompressionsfunktionen . . . . . . . . . . . . 70 4.1.2 Von Kompressionsfunktionen zu Hashfunktionen . . . . . . . . . . . . 71 Digitale Signaturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.2.1 RSA-Signaturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4.2.2 ElGamal Signaturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Attacken auf ElGamal Signaturen . . . . . . . . . . . . . . . . . . . . 74 4.3 Zero-Knowledge-Protokolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.4 Oblivious transfer channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 INHALTSVERZEICHNIS 5 Moore, Mealy und Vernam v 79 5.1 Das Vernam One Time Pad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 5.2 Automaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 5.2.1 Angewandte Automaten . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Linear feedback shift registers . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 5.3 6 Koblitz und Miller 87 6.1 Elliptische Kurven über R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 6.2 Elliptische Kurven über GF(q) . . . . . . . . . . . . . . . . . . . . . . . . . . 94 6.2.1 Quadratwurzeln in endlichen Körpern . . . . . . . . . . . . . . . . . . 94 6.2.2 Der Satz von Hasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 6.3 Kryptosysteme mit elliptischen Kurven . . . . . . . . . . . . . . . . . . . . . . 97 6.4 Faktorisieren mit elliptischen Kurven . . . . . . . . . . . . . . . . . . . . . . . 98 vi INHALTSVERZEICHNIS Abbildungsverzeichnis 5.1 Die einfache Mausefalle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 5.2 Die Mausefalle mit Speck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 x5 + x2 5.3 Das LFSR + 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 6.1 Elliptische Kurven über R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 6.2 Addition der Punkte P und Q . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 6.3 Verdopplung von P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 6.4 Die Addition von Punkten auf EC ist assoziativ . . . . . . . . . . . . . . . . . 93 vii viii ABBILDUNGSVERZEICHNIS Vorwort Dies ist ein Skriptum zur Vorlesung Automatentheorie und Kryptographie“ an der Fach” hochschule Hagenberg. Die Vorlesung folgt in weiten Teilen [Buc99] und [Kob94]. Genaue Beschreibungen vieler Algorithmen finden sich in [MvOV97], das auch online gelesen werden kann (siehe Literaturverzeichnis), und in [Sch96]. Detailliertere mathematische Grundlagen finden Sie in [Bun92] und eine Sammlung von zahlentheoretischen Algorithmen in [Coh93]. Für eine intensivere Beschäftigung mit endlichen Körpern empfehle ich [LN84]. Eine detailliertere Behandlung von elliptischen Kurven in der Kryptographie, die immer noch sehr leicht lesbar ist, finden Sie in [Wer02]. Eine sehr genaue historische Behandlung der Kryptologie fast bis in die ’70er Jahre finden Sie in [Kah67]. Etwas unterhaltsamer und auch für’s Nachtkasterl geeignet ist [Sin00]. ix x ABBILDUNGSVERZEICHNIS Die Kryptographie verfolgt im Wesentlichen die folgenden Ziele: Vertraulichkeit (confidentiality, secrecy, privacy): seit altersher das wichtigste Ziel der Kryptographie. Kommunikation soll vertraulich, also geheim, erfolgen. Kein Dritter soll die Kommunikation abhören können. Integrität (data integrity): die Manipulation von Daten zwischen dem Sender und dem Empfänger durch unbefugte Dritte soll verhindert werden. Authentifizierung (authentication): zwei Parteien, die miteinander kommunizieren, wollen sicherstellen, das sie wirklich mit dem jeweils anderen zu tun haben, und nicht mit einem Dritten, der sich als jemand anderer ausgibt. Nichtzurückweisung“ (non-repudiation): unterschreibt jemand einen Vertrag soll ” sichergestellt werden, dass er später nicht sagen kann, die Unterschrift sei nicht von ihm gewesen. Für jeden dieser Punkte werden wir mathematische Methoden entwickeln. Viel Vergnügen! Kapitel 1 Caesar, Vigenère und Feistel 1.1 Caesar Die mit Abstand am längsten verwendete Methode zur Verschlüsselung ist die monoalphabetische Substitution. Dabei werden einfach Zeichen durch andere Zeichen ersetzt. Das kann geschehen, indem man einfach Buchstaben durch andere Buchstaben ersetzt, oder indem man überhaupt neue Symbole erfindet. Der eingeweihte Empfänger der verschlüsselten Nachricht, der weiß, wie die Nachricht verschlüsselt wurde, dreht den Verschlüsselungsvorgang um und liest die Nachricht. Die wahrscheinlich bekannteste (und mit Abstand einfachste) Variante der monoalphabetischen Substitution trägt den Namen von Julius Caesar. Bei dieser Substitution wird beispielsweise A durch E, B durch F, C durch G, usw. ersetzt, es ist aber jeder andere Buchstabe als E genauso möglich. Wenn man erst einmal weiß, dass mit einem Caesar verschlüsselt wurde, ist es sehr einfach, einen verschlüsselten Text zu entschlüsseln. Versuchen Sie’s mit AIVMQ KPEWL EYWWM XDXWS PPRMG LXWXI MRIRA IVJIR Im schlimmsten Fall muss man alle 26 Möglichkeiten durchprobieren, bis man zu einer sinnvollen Nachricht kommt. (Alle Wörter einfach aneinander zu schreiben und dann Fünfergruppen zu bilden, hat sich sehr bald wegen der größeren Sicherheit eingebürgert.) Für Caesar’s Zeit mag dieses Verfahren ausgereicht haben. Bald jedoch brauchte man bessere Verfahren. Die monoalphabetische Substitution in allgemeiner Form bietet weit mehr Möglichkeiten. Es gibt 26! = 2 · 3 · 4 · · · 25 · 26 = 4 · 10 26 Möglichkeiten, irgendwie die 26 Buchstaben des Alphabets durch andere zu ersetzen. Da dürfte es ziemlich schwierig werden. Versuchen Sie sich an GIRTV SRDST DUROZ YSHFO RDRDB RTGSJ 1 2 KAPITEL 1. CAESAR, VIGENÈRE UND FEISTEL TRMSI DHRTR OVJZJ SNRMN SAFKR FPVJN TSIVJ ZRYSM NRDDR TRBRT GSJTR MFORY PMPSA QJSNR ZODVJ RDIND ZOZIZ OPMOM SAAHR YROMR TGPTY NORZR ZEROZ YRJTY PRHAO VJLRO ZRMCC. Sehr sicher ist das trotzdem nicht. Bald kam man dahinter, dass gewisse Buchstaben viel häufiger auftreten als andere. 1000 Buchstaben in einem durchschnittlichen deutschen Text verteilen sich in etwa folgendermaßen (Quelle: [Bau95]): A B C D E F G H I J K L M 65 19 27 48 175 17 31 42 77 3 15 35 26 N O P Q R S T U V W X Y Z 98 30 10 0 75 68 61 42 9 1 0 1 11 In einem halbwegs langen Text sind die Verhältnisse ähnlich.1 Das Symbol, das am häufigsten vorkommt, wird wahrscheinlich für E stehen, usw. So schaffen Sie den verschlüsselten Text von oben jetzt aber spielend. Fortgeschrittene Kryptanalytiker sehen sich auch die Häufigkeiten von Buchstabenkombinationen von 2 oder 3 Buchstaben an, den sogenannten Bigrammen und Trigrammen. Eine ausführliche Behandlung dieses Themas finden Sie in [Bau95]. Die Kryptographen versuchten sich zu schützen, indem sie für häufige Buchstaben mehrere verschiedene Symbole, sogenannte Homophone, verwendeten, die sie abwechselnd verwendeten, weiters füllten sie die Kryptogramme mit sogenannten Nullen, das sind Symbole, die keine Bedeutung haben und nur den Kryptanalytiker verwirren sollen. Kurz und gut, zur Zeit des 30-jährigen Krieges lasen Kryptanalytiker in der Wiener schwarzen Kammer“ täglich die sorgfältig verschlüsselte Korrespondenz der Botschafter der ” europäischen Länder, all diese Verbesserungen der monoalphabetischen Substitution waren nicht gut genug. 1.2 Vigenère’s chiffre indechiffrable“ ” Viel schwieriger wurde es für kurze Zeit, als man von der monoalphabetischen zur polyalphabetischen Substitution wechselte. 200 Jahre, nachdem Vigenére sein Ver1 Hier ist vom statistischen Durchschnitt die Rede, keineswegs hält sich jeder lange Text an diese Werte. Im Anhang von [Sin00] können Sie die erste Seite eines Romans lesen, der ganz ohne den Buchstaben e“ ” auskommt. 1.3. SCHERBIUS 3 schlüsselungssystem vorgestellt hatte, wurde es endlich verwendet. Lange schon war die monoalphabetische Substitution nutzlos, aber man hatte nicht zu dem etwas aufwendigeren System wechseln wollen. Das Vigenére-System verwendet mehr als eine Substitution zum Verschlüsseln, sondern mehrere. Nun wird der erste Buchstabe mit der ersten Substitution verschlüsselt, der zweite mit der zweiten, der dritte mit der dritten, usw. Hat man alle Substitutionen durch, so beginnt man wieder mit der ersten. Besonders gerne wurden als Substitutionen einfache Caesar-Substitutionen verwendet. Die Abfolge der verschiedenen Substitutionen merkte man sich mit einem Schlüsselwort. Zum Beispiel würde das Schlüsselwort PLUTO bedeuten, dass der erste Buchstabe gemäß A → P , der zweite gemäß A → L, schließlich der fünfte gemäß A → O, der sechste wieder wie der erste Caesar-verschlüsselt wird. Zum Entschlüsseln braucht man nur das Schlüsselwort. Aus PICKNICK würde dann (mit dem Schlüsselwort PLUTO) ETWDBXNE Wie man sieht, sieht man nichts. Gleiche Buchstaben werden verschieden verschl üsselt, verschiedene Buchstaben zuweilen gleich, eine Häufigkeitsanalyse macht hier keinen Sinn. Es dauerte leider nur ein paar Jahre, bis ein deutscher General auch dieses System knackte. Er fand heraus, dass man relativ leicht herausfinden kann, wie lang das verwendete Schl üsselwort ist. Hat man herausgefunden, dass das Schlüsselwort z.B. sieben Buchstaben lang ist, dann weiß man, dass der erste, der achte, der fünfzehnte, usw. Buchstabe mit dem selben Alphabet, also monoalphabetisch verschlüsselt wurden, und man kann die einzelnen monoalphabetischen Substitutionen einzeln wie früher analysieren. 1.3 Scherbius Im Lauf des 19. Jahrhunderts kamen mehr und mehr mechanische Hilfsmittel zum Ver- und Entschlüsseln in Gebrauch. Am Beginn des 20. Jahrhunderts wurden schließlich die ersten Patente für vollmechanische Verschlüsselungsmaschinen vergeben. Mit Ihnen wurde es möglich, sehr bequem polyalphabetische Substitution mit tausenden Alphabeten durchzuf ühren. Scherbius konnte seine Maschine dem deutschen Militär anbieten. Die von der deutschen Enigma verschlüsselten Texte konnte nur mit sehr großem Aufwand und vor allem Dank der Nachlässigkeit der Verschlüssler von britischen Kryptanalytikern gelesen werden. In [Sin00] und [Kah67] findet man eine nette Beschreibung der sehr komplexen Geschichte rund um die Enigma. 4 KAPITEL 1. CAESAR, VIGENÈRE UND FEISTEL 1.4 Feistel Moderne Verschlüsselungsverfahren arbeiten nicht mit einzelnen Zeichen. Auf Computern sind Daten in der Form von Bitfolgen gespeichert. Es bietet sich daher an, beim Verschl üsseln mit Bits oder mit Bitfolgen, sogenannten Blöcken zu operieren. Als Beispiel sehen wir uns eines der ältesten Verfahren an, den Data Encryption Standard (DES), der bis 2000 der amerikanische Verschlüsselungsstandard war. Im Jahr 2000 wurde DES abgelöst vom Advanced Encryption Standard (AES), der als wesentlich sicherer gilt. Nach wie vor wird DES aber (vor allem in der Variante 3DES) verwendet. Außerdem werden nach wie vor Verschlüsselungsverfahren teilweise oder ganz nach dem Vorbild des DES mit ein paar Verbesserungen entwickelt. Der DES und allgemeine Feistelchiffren sind in [Buc99] ausgezeichnet beschrieben. Der AES wird uns später beschäftigen, wenn wir mathematisch vorbereitet sind. 1.5 Die Erfindung der asymmetrischen Verschlüsselung Viele Verschlüsselungssysteme, oft auch viel verwendete, bezogen ihre Sicherheit aus der Geheimhaltung des Verfahrens. Auch heute noch gibt es Verschlüsselungsprogramme, deren einzige Sicherheit darin liegt, dass man das Verschlüsselungsverfahren nicht kennt. Das prominenteste Beispiel sind die GSM-Verschlüsselungsalgorithmen A3, A5 und A8. Hierbei handelt es sich aber nicht wirklich um Sicherheit, denn das Verschlüsselungsverfahren kann nicht geheim gehalten werden. Verschlüsselungsmaschinen und -software kann gestohlen werden, Software kann analysiert werden, Verräter können das Verfahren bekannt geben. Tatsächlich sind die GSM-Algorithmen längst geknackt. Ein vernünftiges Verschlüsselungsverfahren ist ein öffentlich bekanntes, das einzig Geheime ist der Schlüssel. Alle Verschlüsselungsverfahren, die wir bisher kennen gelernt haben, gehören zu den symmetrischen Verfahren. Zum Entschlüsseln einer Nachricht muss man das verwendete Verschlüsselungsverfahren und den verwendeten Schlüssel kennen. Dann dreht man das Verschlüsselungsverfahren einfach um und kann so den Klartext wieder erhalten. Wir versuchen es ein bisschen mathematischer: Definition 1.1. Ein Verschlüsselungsverfahren ist ein Quintupel (P, C, K, E, D) mit fol- genden Eigenschaften: 1. P ist die Menge aller Klartexte, der Klartextraum. 2. C ist die Menge aller verschlüsselten Texte oder Chiffretexte. 3. K ist die Menge aller möglichen Schlüssel. 1.5. DIE ERFINDUNG DER ASYMMETRISCHEN VERSCHL ÜSSELUNG 5 4. E = {Ek | k ∈ K} ist die Menge der Verschlüsselungsfunktionen Ek : P → C. 5. D = {Dk | k ∈ K} ist die Menge der Entschlüsselungsfunktionen Dk : C → P. 6. Zu jedem e ∈ K gibt es ein d ∈ K, so dass für jeden Klartext p ∈ P gilt: Dd (Ee (p)) = p. (Also: zu jedem Schlüssel zum Verschlüsseln gibt es einen Schlüssel zum Entschlüsseln.) Üblicherweise sind P, C, K, E und D bekannt, nur e ist geheim. Wer aber e kennt, kann auch d schnell finden. Mitte der ’70er Jahre fanden Mathematiker und Informatiker wie Diffie, Hellman ([DH76]), Rivest, Shamir und Adleman ([RSA77]) eine Möglichkeit zur asymmetrischen Verschlüsselung. Bei so einem Verfahren reicht es nicht aus, den zur Verschlüsselung verwendeten Schlüssel und das verwendete Verfahren zu kennen, um die Verschlüsselung rückgängig machen zu können. Man kennt also e und kriegt nicht heraus, was das dazugehörige d ist. Praktisch bedeutet das sogar, dass man den Schlüssel öffentlich bekanntmachen kann, so dass ihn jeder zum Verschlüsseln verwenden kann, trotzdem wird niemand anderer entschlüsseln können. Tatsächlich macht man das auch so. Den öffentlichen Schlüssel nennen wir public key (daher nennt man asymmetrische Verschlüsselungssysteme auch public-key Systeme). Neben diesem Schlüssel muss es aber auch einen Schlüssel zum Entschlüsseln geben, den sogenannten private key. Dass es so ein asymmetrisches Verschlüsselungssystem tatsächlich gibt, war Anfang der ’70er eine große Überraschung. In Kürze werden wir wissen, wie das geht. 6 KAPITEL 1. CAESAR, VIGENÈRE UND FEISTEL Kapitel 2 Rivest, Shamir und Adleman In den folgenden Kapiteln spazieren wir durch die Welt der Zahlen. Manche Probleme, die auf den ersten Blick kompliziert aussehen, werden sich ganz leicht lösen lassen. Andere werden ganz leicht aussehen, sich aber als ganz schwierig herausstellen. Aus diesen Problemen machen wir Verschlüsselungsverfahren. 2.1 Auf den Spuren Euklids Im Folgenden beschäftigen wir uns nur“ mit ganzen Zahlen. Die Menge der ganzen Zahlen ” bezeichnen wir mit Z. Die Menge der positiven ganzen Zahlen, also der natürlichen Zahlen bezeichnen wir mit N, die Menge der positiven Zahlen inklusive 0 mit N 0 . Wir erinnern uns kurz an die gute alte Zeit, als es noch keine Brüche gab. Wollte man damals eine ganze Zahl durch eine andere teilen, so ging das nicht immer, manchmal blieb ” ein Rest“. Wir beschreiben das exakt. Satz 2.1. Es seien a und b zwei beliebige ganze Zahlen. Dann gibt es zwei eindeutig bestimmte Zahlen q (Quotient) und r (Rest), so dass a = bq + r und 0≤r<b Manchmal geht sich die Division allerdings aus. Wir sagen, b teilt a und schreiben b | a, wenn es eine ganze Zahl q gibt, so dass a = bq. Beispiel 2.2. 7 8 KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN • Die Teiler von 18 sind ±1, ±2, ±3, ±6, ±9 und ±18. • Die Teiler von −4 sind ±1, ±2 und ±4. • Jede ganze Zahl ist Teiler von 0. Die Zahlen ±1 und ±a sind natürlich immer Teiler von a. Ist a positiv und es gibt keine weiteren Teiler, so heißt a Primzahl. Wir vereinbaren, dass 1 keine Primzahl ist. Die Menge aller Primzahlen bezeichnen wir mit P. Es liegt schon in der Luft, was jetzt kommt: Satz 2.3 (Eindeutigkeit der Primfaktorzerlegung). Jede ganze Zahl n lässt sich in der Form n = ±pe11 · pe22 · · · perr darstellen, wobei p1 , p2 , . . . , pr ∈ P, e1 , e2 , . . . , er ∈ N und alle pi (1 ≤ i ≤ r) verschieden sind. Diese Darstellung als Produkt von Potenzen von Primzahlen ist eindeutig. Die Primzahlen die in der Primfaktorzerlegung von n vorkommen, nennt man Primfaktoren von n. Eine Primfaktorzerlegung kann man zumindest für kleine Zahlen so wie in der Mittelschule ausrechnen. Wir erinnern uns: 240 2 120 2 60 2 30 2 15 3 5 5 also ist 240 = 24 · 3 · 5. 1 Kennt man die Primfaktorzerlegung einer Zahl, so kennt man bereits alle Teiler. Satz 2.4. Es sei n = pe11 · · · perr die Primfaktorzerlegung von n ∈ Z. Dann sind die Teiler von n genau die Zahlen t = pt11 · · · ptrr , wobei t1 , . . . , tr ∈ N0 und t1 ≤ e1 , . . . , tr ≤ er . 2.1. AUF DEN SPUREN EUKLIDS 9 Sind a, b ∈ Z, so nennen wir die größte ganze Zahl, die sowohl a als auch b teilt, den größten gemeinsamen Teiler von a und b. Wir schreiben dafür ggT(a, b). Ist ggT(a, b) = 1, so nennen wir a und b relativ prim oder teilerfremd. Beispiel 2.5. Der größte gemeinsame Teiler von 18 und 60 ist 6. Zu einer gegebenen Zahl n ∈ Z andere Teiler als ±1 und ±n zu finden, ist für große n sehr schwierig. Das RSA-Verschlüsselungsverfahren beruht auf dieser Schwierigkeit. Allein herauszufinden, ob es weitere Teiler gibt oder ob es sich um eine Primzahl handelt, ist außerordentlich schwierig. Überraschenderweise ist es jedoch sehr einfach, den größten gemeinsamen Teiler zweier Zahlen a und b zu finden. Die Methode, die einem zuerst einfällt, ist, zunächst die Primfaktorzerlegungen von a und von b zu bestimmen, und daraus den größten gemeinsamen Teiler zu berechnen. Beispiel 2.6. Für a = 21168 = 24 · 33 · 72 und b = 12600 = 23 · 32 · 52 · 7 ist ggT(a, b) = 23 · 32 · 7 = 504. Offenbar ist das aber zumindest genauso schwierig, wie das Finden aller Teiler von a. Der Euklidsche Algorithmus erledigt das schneller. Er beruht auf den folgenden Beobachtungen: Satz 2.7. Es seien a, b, c ∈ Z, c | a und c | b. Dann gilt: 1. ggT(a, b) = ggT(b, a), 2. c | a + b, 3. c | a − b, 4. c | a · b und 5. ggT(a, b) = ggT(r, b), wobei r der Rest bei der Division von a durch b ist (vgl.Satz 2.1). Wir formulieren den Euklidschen Algorithmus anhand eines Beispiels: 10 KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN Beispiel 2.8 (Euklidscher Algorithmus). Wir berechnen ggT(112, 203). ggT(112, 203) =(1) ggT(203, 112) =(5) ggT(91, 112) =(1) =(1) ggT(112, 91) =(5) ggT(21, 91) =(1) =(1) ggT(91, 21) =(5) ggT(7, 21) =(1) =(1) ggT(21, 7) =(5) ggT(0, 7) = 7 Der Euklidsche Algorithmus lässt sich noch etwas kompakter gestalten und etwas erweitern. Was dabei herauskommt, ist der erweiterte Euklidsche Algorithmus, der uns wieder an lineare Gleichungssysteme erinnert. Das selbe Beispiel nochmal: Beispiel 2.9. 203 112 I 203 1 0 II 112 0 1 III 91 1 -1 IV 21 -1 2 IV=II-III V 7 5 -9 V=III-4IV VI 0 III=I-II VI=IV-3V Von Interesse ist die Zeile V. Wir lesen ab, dass ggT(112, 203) = 7. Die erste Zeile können wir lesen als 203 = 1·203+0·112, die zweite Zeile als 112 = 0·203+1·112, es handelt sich also wirklich um Gleichungen. Insbesondere dürfen wir die Zeile V lesen als 7 = 5·203+(−9)·112. Wir halten fest: Satz 2.10. Der ggT zweier ganzer Zahlen lässt sich stets als Linearkombination der beiden Zahlen schreiben. Genauer: Seien a und b zwei ganze Zahlen. Dann gibt es ganze Zahlen x und y, so dass ggT(a, b) = ax + by 11 2.2. FALSCH RECHNEN und der erweiterte Euklidsche Algorithmus berechnet die Zahlen x und y. 2.2 Falsch rechnen Steht man um 7.00 früh auf und arbeitet 8 Stunden, so ist man um 15.00 fertig, klar 7+8=15. Spielt man nun 8 Stunden Tennis, so kann man um 23.00 zu Bett gehen, auch klar 15+8=23. Schläft man jetzt 8 Stunden, dann kann man um 7.00 wieder aufstehen. Hoppla, 23+8=7! In diesem Kapitel klären wir dieses Phänomen auf. Wir wählen eine Zahl n ∈ N . Für beliebige Zahlen a, b ∈ Z schreiben wir a ≡n b genau dann, wenn n | a − b und sagen dann, a und b sind kongruent modulo n. Beispiel 2.11. Je zwei gerade Zahlen sind kongruent modulo 2. Je zwei ungerade Zahlen sind kongruent modulo 2. Modulo 4 gilt 7 ≡ 4 3 und 2 ≡5 7 ≡5 −3. Offenbar sind 2 Zahlen genau dann kongruent modulo n, wenn sie bei Division durch n den selben Rest ergeben. Das erklärt schon viel, denn 23 + 8 = 31, aber 31 und 7 sind kongruent modulo 24. Wir bilden Mengen von kongruenten Elementen modulo n. Für k ∈ Z sei [k]n die Menge aller ganzen Zahlen, die kongruent zu k modulo n sind. [0]n := {0, ±n, ±2n, ±3n, . . .} [1]n := {1, ±n + 1, ±2n + 1, ±3n + 1, . . .} [2]n := {2, ±n + 2, ±2n + 2, ±3n + 2, . . .} .. . [n − 1]n := {n − 1, ±n + (n − 1), ±2n + (n − 1), ±3n + (n − 1), . . .} [n]n = [0]n Diese Mengen heißen Restklassen modulo n. 12 KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN Beispiel 2.12. Die Restklassen modulo 4 sind: [0]4 := {0, ±4, ±8, ±12, . . .} [1]4 := {. . . , −11, −7, −3, 1, 5, 9, 13, . . .} [2]4 := {. . . , −10, −6, −2, 2, 6, 10, 14, . . .} [3]4 := {. . . , −9, −5, −1, 3, 7, 11, 15, . . .} Wir schreiben ein paar einfache Beobachtungen auf: Satz 2.13. Es sei n ∈ N, a, b ∈ Z. Dann gilt 1. a kommt in genau einer der Restklassen [0] n , [1]n , . . . , [n − 1]n vor. 2. Falls a ≡n b, dann ist [a]n = [b]n , und umgekehrt. Es wird noch schlimmer. Anstatt mit ganzen Zahlen rechnen wir jetzt mit den Restklassen, also mit unendlich großen Mengen. Nämlich folgendermaßen: Definition 2.14. Es seien n, k ∈ N , a, b ∈ Z. Dann definieren wir [a]n + [b]n := [a + b]n [a]n − [b]n := [a − b]n [a]n · [b]n := [a · b]n [a]kn := [ak ]n Beispiel 2.15. • [6]12 + [7]12 = [13]12 = [1]12 • [3]9 · [7]9 = [21]9 = [3]9 • [2]5 − [7]5 = [−5]5 = [0]5 13 2.2. FALSCH RECHNEN Wir werden, wenn möglich, die Restklassen als Restklassen möglichst kleiner nichtnegativer Zahlen schreiben, also [1]12 statt [13]12 , [4]5 statt [−1]5 und [0]4 statt [−328]4 . Die Rechnerei mit Restklassen könnte eine Gefahr bergen. Wenn wir [a] n + [b]n berechnen, rechnen wir [a + b]n aus. Wir könnten die Restklassen aber auch als [a 0 ]n und [b0 ]n schreiben, indem wir einfach irgendein anderes a 0 ≡n a und b0 ≡n b wählen. Das Ergebnis wird dann [a0 + b0 ]n sein. Wenn nun [a + b]n 6= [a0 + b0 ]n , dann wissen wir nicht, was nun das richtige Ergebnis ist. Dieses Problem tritt aber glücklicherweise nicht auf, weder bei der Addition, noch bei der Subtraktion, der Multiplikation oder beim Potenzieren. Das klärt der folgende Satz 2.16. Es seien n, k ∈ N, a, b, a0 , b0 ∈ Z, so dass a ≡n a0 und b ≡n b0 . Dann gilt 1. a + b ≡n a0 + b0 , 2. a − b ≡n a0 − b0 , 3. a · b ≡n a0 · b0 und 4. ak ≡n (a0 )k . Rechnen modulo n heißt also rechnen mit Restklassen. Für die Menge der Restklassen modulo n schreiben wir ab sofort Zn , also ist Zn = {[0]n , [1]n , . . . , [n − 1]n }. Die Elemente der Menge Zn sind Mengen, weil wir damit aber rechnen können, nennen wir sie auch Zahlen in Zn . Der Trick mit den Uhrzeiten ist also ganz einfach. Wir rechnen anstatt mit ganzen Zahlen einfach mit den Restklassen modulo 24. Weil die Schreibweise mit den Restklassen auf die Dauer etwas umständlich wird, vereinbaren wir die Notation 2.17. Für n, k ∈ N, a, b, c ∈ Z verwenden wir nach Belieben eine der folgenden Schreibweisen: Restklassen Kongruenz alternative Schreibweise [a]n + [b]n = [c]n a + b ≡n c a + b = c mod n a · b ≡n c a · b = c mod n [a]n − [b]n = [c]n [a]n · [b]n = [c]n [a]kn = [c]n a − b ≡n c a − b = c mod n ak ≡n c ak = c mod n 14 KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN 2.2.1 Noch einmal Caesar Eine kryptographische Anwendung des Rechnens mit Restklassen kennen wir schon, Caesar’s Verschlüsselungssystem. Wir stellen uns die Buchstaben von A-Z durch die Zahlen A = 0, B = 1, . . . , Z = 25 dargestellt vor. Die Caesar-Substitution A → U lässt sich nun einfach durch die Formel x 7→ x + 20 mod 26 beschreiben. Allgemein sind x 7→ x + e mod 26 (0 ≤ e ≤ 25) alle Caesar-Substitutionen, e ist der Schlüssel, der zum Verschlüsseln verwendet wird, d = −e mod 26 ist der dazugehörige Schlüssel zum entschlüsseln. Das Entschlüsseln funktioniert genau gleich wie das Verschlüsseln mit der Formel x 7→ x + d mod 26. Es handelt sich um ein symmetrisches Verfahren, denn wer e kennt, kann auch d ohne viel Mühe berechnen. 2.3 Diophantastisch Beispiel 2.18. Eine Firma kauft Workstations um 46810 . Darunter sind welche um 1990 /Stk. und solche um 2740 /Stk. Wie viele Computer von welcher Sorte wurden gekauft? Wir machen den Ansatz x . . . Anzahl der Workstations um 1990 y . . . Anzahl der Workstations um 2740 und erhalten die Gleichung 1990x + 2740y = 46810 also eine Gleichung in 2 Unbekannten. Über R erhalten wir unendlich viele Lösungen. Wir sind aber nur an positiven ganzzahligen Lösungen interessiert. Gleichungen der Form ax + by = c mit a, b, c ∈ Z und x, y ∈ Z (2.1) heißen lineare Diophantische Gleichungen. Es sei d = ggT(a, b). Die Gleichung ax + by = c hat mit Sicherheit keine ganzzahligen Lösungen, wenn d kein Teiler von c ist, denn d ist Teiler von a und von b, also (wegen Satz 2.7) auch von ax und von by und damit von ax + by. Da ax + by = c ist, muss d also c teilen. Nehmen wir im Folgenden an, d teile c (sonst gibt es sowieso keine Lösungen). Dann lässt sich die Gleichung durch d dividieren und wir erhalten eine Gleichung a 0 x + b0 y = c0 , bei der nun ggT(a0 , b0 ) = 1 gilt. Ab nun gehen wir davon aus, dass die Koeffizienten der Gleichung relativ prim zueinander sind. 15 2.3. DIOPHANTASTISCH Mit dem erweiterten Euklidschen Algorithmus erhält man ganze Zahlen x0 , y0 , so dass gilt ax0 + by0 = 1 (2.2) Wir multiplizieren (2.2) mit c und erhalten a( x0 c ) + b( y0 c ) = c |{z} |{z} (2.3) x = x1 + bk, (2.4) y = y1 − ak. (2.5) =x1 =y1 Damit haben wir bereits eine Lösung (x1 , y1 ) von (2.1) gefunden. Sei nun k ∈ Z und Setzt man (2.4) in (2.1) ein, so erhält man a(x1 + bk) + b(y1 − ak) = ax1 + abk + by1 − abk = c Also ist für jedes beliebige k ∈ Z das Paar (x, y) aus (2.4) eine Lösung von (2.1). Tatsächlich findet man so alle ganzzahligen Lösungen. Beispiel 2.19 (Fortsetzung). Die Diophantische Gleichung lautet 1990x + 2740y = 46810 (2.6) Wir berechnen den ggT: 2740 1990 2740 1 0 1990 0 1 750 1 -1 490 -2 3 260 3 -4 230 -5 7 30 8 -11 20 -61 84 d = 10 69 -95 0 Wir erhalten d = 10 und beschäftigen uns nur mehr mit der Gleichung 199x + 274y = 4681. (2.7) 16 KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN Wir haben bereits berechnet, dass 199 · (−95) + 274 · 69 = 1 (2.8) und wir erhalten die ersten Lösungen durch Multiplikation mit 4681: x1 = (−95) · 4681 = −444695 y1 = 69 · 4681 = 322989 (2.9) (2.10) Nun sind alle ganzzahligen Lösungen gegeben durch x = −444695 + 274k y = 322989 − 199k, (2.11) wobei k ∈ Z (2.12) Von diesen unendlich vielen ganzzahligen Lösungen interessieren uns im speziellen Fall wieder nur die positiven Lösungen (negative Stückzahlen gibt es nicht). Wie müssen wir k ∈ Z wählen, damit x und y gleichzeitig positiv werden? x wird positiv, wenn x = −444695 + 274k ≥ 0, also wenn k ≥ 1622, 97. y wird positiv, wenn y = 322989 − 199k ≥ 0, also wenn k ≤ 1623, 06. In diesem Fall kommt also nur ein einziges k in Frage, nämlich k = 1623. Mit diesem k erhalten wir x = 7 und y = 12. Dies ist die einzige mögliche Lösung. Eine wichtige Anwendung der Diophantischen Gleichungen kommt ganz unerwartet beim Fälschen digitaler Signaturen. Dort wird es darum gehen, eine Gleichung“ ax = b mod n zu ” lösen. Das folgende Beispiel erklärt, warum das einerseits nicht so einfach, andererseits aber auch nicht schwierig ist. Beispiel 2.20. Die Gleichung 12x = 27 besitzt keine ganzzahlige Lösung. Die Gleichung“ ” 12x = 27 mod 105 besitzt aber 3 Lösungen, 11, 46 und 81. Wie findet man alle Lösungen der Gleichung“ ” ax = b mod n? Wir schreiben (2.13) um in eine echte Diophantische Gleichung ax + ny = b und lösen die Gleichung. (2.13) 17 2.4. ENDLICHE KÖRPER 2.4 Endliche Körper Das Rechnen mit Restklassen ist nicht viel schwieriger als das Rechnen mit ganzen Zahlen. Die von den ganzen Zahlen bekannten Rechenregeln gelten weiterhin. Divisionen machen typischerweise Probleme in Z, woraus sich der Siegeszug der rationalen Zahlen erklärt. Wie sieht’s mit dem Dividieren modulo n aus? Beispiel 2.21. In Z lässt sich 5 6 nicht (ohne Rest) berechnen. Wie sieht es mit den Rest- klassen modulo n aus? • n = 7: [5]7 = [2]7 , denn [6]7 · [2]7 = [5]7 . [6]7 • n = 11: [5]11 = [10]11 , denn [6]11 · [10]11 = [5]11 . [6]11 • n = 9: [6]9 · [0]9 = [0]9 , [6]9 · [1]9 = [6]9 , [6]9 · [2]9 = [3]9 , [6]9 · [3]9 = [0]9 , [6]9 · [4]9 = [6]9 , [6]9 · [5]9 = [3]9 , [6]9 · [6]9 = [0]9 , [6]9 · [7]9 = [6]9 , [6]9 · [8]9 = [3]9 . Geht nicht! Manchmal lässt sich also mit Restklassen besser“ dividieren, manchmal aber auch nicht. ” Bringen wir etwas Ordnung in dieses Durcheinander. Satz 2.22. Es sei n ∈ N und k ∈ Z. Ist ggT(n, k) = 1, dann gibt es eine Zahl q ∈ Z, so dass [1]n = [k]n · [q]n . Ist ggT(n, k) > 1, so ist dies nicht der Fall. (Mit anderen Worten: Sind n und k relativ prim, dann hat k modulo n einen Kehrwert, sonst nicht.) Falls ggT(n, k) = 1, so schreiben wir für die Restklasse [q]n mit [1]n = [k]n · [q]n auch [k]−1 n oder etwas mutiger [k −1 ]n und nennen [k]−1 n den Kehrwert von [k]n . Besitzt k einen Kehrwert modulo n, dann lässt sich modulo n jede Zahl durch k dividieren gemäß der Rechenregel [a]n [k]n = [a]n · [1]n [k]n (oder kürzer a k =a· 1 k mod n. 18 KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN Natürlich hat [0]n nie einen Kehrwert. Alle anderen Restklassen könnten einen Kehrwert haben. Dies ist genau dann der Fall, wenn jede Zahl 0 < k < n relativ prim zu n ist. Satz 2.23. In Zn lässt sich genau dann durch jede Zahl außer [0] n dividieren, wenn n eine Primzahl ist. Mengen von Zahlen“, die sich beliebig addieren, subtrahieren, multiplizieren und (mit ” Ausnahme der 0) dividieren kann, nennen wir Körper. (In Kürze werden wir genau definieren, was ein Körper ist.) Die Mengen Zp (p ∈ P) sind also Körper. Die Körper Zp sind außergewöhnlich, denn sie enthalten nur p verschiedene Elemente. Daher nennt man sie auch endliche Körper. Neben Zp gibt es noch weitere endliche Körper, wir werden noch alle kennen lernen. Unendliche Körper gibt es viele, z.B. R, Q, C und unzählige andere. Für unendliche Körper werden wir uns nicht interessieren. −1 −1 −1 Beispiel 2.24. Die Kehrwerte modulo 5. [1] −1 5 = [1]5 , [2]5 = [3]5 , [3]5 = [2]5 , [4]5 = [4]5 . Damit lässt sich weiter rechnen: 3 4 =3· 1 4 = 3 · 4 = 2 mod 5. Es wäre schön, wenn sich Kehrwerte modulo n auch schnell ausrechnen ließen, Durchprobieren ist eine schlechte Lösung, wenn n sehr groß ist. Wir denken kurz an Euklid und atmen erleichtert auf: Besitzt k einen Kehrwert modulo n, dann ist ggT(n, k) = 1. Wegen Satz 2.10 gibt es Zahlen x, y ∈ Z, so dass kx + ny = 1. Betrachten wir diese Gleichung modulo n, so erhalten wir kx + 0 = 1 mod n. Das heißt aber, dass x der gesuchte Kehrwert von k modulo n ist. Danke, Euklid! Beispiel 2.25. Wir berechnen den Kehrwert von 12 modulo 17. 2.5. DAS RSA-VERSCHLÜSSELUNGSVERFAHREN 17 12 I 17 1 0 II 12 0 1 III 5 1 -1 IV 2 -2 3 IV=II-2III V 1 5 -7 V=III-2IV VI 0 19 III=I-II VI=IV-2V Tatsächlich ist ggT(17, 12) = 1. Weiters ist 1 = 17 · 5 + 12 · (−7) Modulo 17 ist also 1 = 12 · (−7) und der Kehrwert von 12 modulo 17 ist −7 = 10. Zur Probe berechnen wir 12 · 10 = 120 = 1 mod 17. Es fällt auf, dass eine Spalte im erweiterten Euklidschen Algorithmus gar nicht benötigt wird. Tatsächlich hätten wir die 17er-Spalte nicht mitrechnen müssen und so etwas Arbeit gespart. 2.5 Das RSA-Verschlüsselungsverfahren An dieser Stelle bietet sich — gleichsam als Motivationsschub — ein Ausblick in die moderne Kryptographie an. Dazu müssen wir nur noch ein paar Kleinigkeiten in Erfahrung bringen. 2.5.1 Die Eulersche ϕ-Funktion Wie viele Zahlen in Zn haben einen Kehrwert? Wie viele Zahlen zwischen 0 und n−1 sind relativ prim zu n? Das war zweimal die selbe Frage, und diese Frage wollen wir jetzt beantworten. Wir beginnen mit einer Definition 2.26. Es sei n ∈ N. Dann heißt die Funktion ϕ(n) = #{k ∈ Z | 0 ≤ k < n und ggT(n, k) = 1} Eulersche ϕ–Funktion. 20 KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN Satz 2.27. Der Wert ϕ(n) lässt sich berechnen, wenn man die Primfaktorzerlegung von n kennt, denn es gilt: 1. Ist p ∈ P, dann ist ϕ(p) = p − 1. 2. Ist p ∈ P und d ∈ N, dann ist ϕ(pd ) = pd−1 (p − 1). 3. Sind m, n ∈ N und ggT(m, n) = 1, dann ist ϕ(m · n) = ϕ(m) · ϕ(n). 4. Ist n = pe11 · · · perr die Primfaktorzerlegung von n, dann ist ϕ(n) = n(1 − 1 1 ) · · · (1 − ). p1 pr Bevor es losgeht noch ein Hammer (demnächst werden Sie diesen Satz auf einem Übungsblatt finden und selbst beweisen). Satz 2.28 (Euler). Sind z, n ∈ N und ist ggT(z, n) = 1 dann gilt z ϕ(n) = 1 mod n Remark 2.29. Für den Fall, dass n eine Primzahl ist, wurde dieser Satz schon früher von Fermat bewiesen. In dieser Version ist er auch als kleiner Satz von Fermat bekannt. 2.5.2 Das RSA-Verfahren Bob möchte Alice eine Nachricht schicken, niemand außer Alice soll die Nachricht lesen können, also möchte er sie verschlüsseln. Alice wählt zwei große Primzahlen p und q und berechnet n = pq. Weiters berechnet Alice ϕ(n) = (p − 1)(q − 1) (vgl. Satz 2.27). Nun wählt sie zufällig eine Zahl e relativ prim zu ϕ(n). Das Paar (n, e) ist ihr public key, den sie Bob schickt. 21 2.5. DAS RSA-VERSCHLÜSSELUNGSVERFAHREN Weiters berechnet Alice den Kehrwert d von e modulo ϕ(n) mit dem erweiterten Euklidschen Algorithmus. Die beiden Primzahlen p und q hält sie geheim, das Tripel (p, q, d) stellt ihren private key dar. Bob hat seine Nachricht als Folge von Zahlen kleiner als n kodiert (vgl. Kapitel 1) kodiert. Um eine Zahl m zu verschlüsseln, berechnet er c = me mod n. Um die Nachricht zu entschlüsseln, muss die e-te Wurzel modulo n gezogen werden. Die e-te Wurzel modulo n zu ziehen ist sehr schwierig, wenn man die Primfaktoren p und q nicht kennt. Wir sehen gleich, dass das Wurzelziehen aber einfach ist, wenn man p und q kennt. Alice hat den Kehrwert d von e modulo ϕ(n) berechnet, d.h. ed = 1 mod ϕ(n) bzw. (2.14) ed = 1 + v · ϕ(n) für ein passendes v ∈ Z (2.15) Sie berechnet nun (modulo n) cd = (me )d = med = m1+vϕ(n) wegen (2.14) = m · mϕ(n)v = m · (mϕ(n) )v = m · 1v =m wegen Satz 2.28 mod n und erhält auf diese Weise die ursprüngliche Nachricht m. Beispiel 2.30. Die Zahlen in diesem Beispiel sind natürlich viel zu klein, in den Übungen werden wir uns an größere Zahlen heran wagen. Alice wählt p = 7 und q = 5, also n = 35 und ϕ(35) = 6 · 4 = 24. Nun wählt sie e = 5 und sendet Bob ihren public key (n, e) = (35, 5). Weiters berechnet sie den Kehrwert von 5 modulo 24. 5 24 0 5 1 4 -4 1 5 0 Der private key von Alice ist (p, q, d) = (7, 5, 5). 22 KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN Bob verschlüsselt die Nachricht m = 4, er berechnet c = m e = 45 = 9 mod 35 und schickt Alice c = 9. Alice entschlüsselt m = cd = 95 = 4 mod 35. Ein weiteres Problem ergibt sich. Um mit einer sehr großen Zahl zu potenzieren sind sehr viele Multiplikationen mit sehr großen Zahlen notwendig, dazwischen wird man oft modulo n reduzieren müssen. Hier kann man sich mit zwei Tricks helfen. 1. Der Exponent darf modulo ϕ(n) reduziert werden (das hilft aber nur dem Entschl üssler, denn nur er kann ϕ(n) berechnen). 2. Die Square-And-Multiply–Methode zum Potenzieren, die Sie in den Übungen kennen lernen. 2.6 Der chinesische Restsatz Das Rechnen modulo n hat unter Anderem den Vorteil, dass man immer mit kleinen Zahlen rechnen kann, weil man ja immer den Rest modulo n (bzw. den Rest modulo ϕ(n) im Exponenten) nehmen darf, wenn man will. Das Ergebnis erfährt man dafür aber auch nur modulo n. Das ändern wir jetzt. Beispiel 2.31. Wir wollen 13 · 4 berechnen. Das können wir in Z machen, genauso gut aber in Z60 , kein Unterschied. Wir machen es aber modulo 3, modulo 4 und modulo 5. So erhalten wir: 13 · 4 ≡3 1 · 1 ≡3 1 13 · 4 ≡4 1 · 0 ≡4 0 13 · 4 ≡5 3 · 4 ≡5 2 Daraus können wir schließen, dass x = 13 · 4 eine Zahl ist, die die folgenden Kongruenzen erfüllt: x ≡3 1 x ≡4 0 x ≡5 2 23 2.6. DER CHINESISCHE RESTSATZ Schon wieder ein schwieriges Problem. Müssen wir hier probieren? Nein, hier hilft der chinesische Restsatz. Algorithmus 2.32 (Chinesischer Restsatz). Es seien n 1 , n2 , . . . , ns paarweise relativ prime natürliche Zahlen. Weiters seien x1 , x2 , . . . , xs ganze Zahlen. Dann erhält man eine Lösung des Restklassengleichungssystems x ≡ n1 x 1 x ≡ n2 x 2 .. . x ≡ ns x s auf folgende Weise: 1. Berechne n = n1 ·n2 · · · ns . Modulo n ist die Lösung des Restklassengleichungssystems eindeutig. 2. Berechne für i = 1, . . . , s die Zahlen qi := n ni 3. Jedes qi ist relativ prim zu ni (wieso?), und besitzt daher ein inverses Element modulo ni . Berechne für i = 1, . . . , s das inverse Element ri von qi modulo ni (mit dem erweiterten Euklidschen Algorithmus). 4. Berechne x = x 1 q1 r1 + x 2 q2 r2 + · · · + x s qs rs mod n. Dieses x ist die eindeutige Lösung des Restklassengleichungssystems. Betrachten wir dazu die Gleichung modulo ni . Wir erhalten x = x1 · q1 ·r1 + · · · + xi · qi ri + · · · + xs · qs ·rs |{z} |{z} |{z} =0 = xi mod ni =1 =0 mod ni 24 KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN Beispiel 2.33 (Fortsetzung). Wir lösen das Restklassengleichungssystem x ≡3 1 x ≡4 0 x ≡5 2 1. n1 = 3, n2 = 4 und n3 = 5, also ist n = 3 · 4 · 5 = 60. 2. q1 = 20, q2 = 15, q3 = 12. −1 −1 −1 −1 −1 3. [q1 ]−1 3 = [2]3 = [2]3 , [q2 ]4 = [3]4 = [3]4 und [q3 ]5 = [2]5 = [3]5 , also ist r1 = 2, r2 = 3 und r3 = 3. 4. x = 1 · 20 · 2 + 0 · 15 · 3 + 2 · 12 · 3 = 112 = 52 mod 60. Wir werden den chinesischen Restsatz gleich benutzen, um Primzahlen zu erzeugen und das RSA-Verfahren zu knacken. Bleiben Sie dran. 2.7 Attacken auf RSA 2.7.1 Repeated Encryption Die erste Attacke, die wir betrachten ist nicht speziell auf das RSA-Verfahren zugeschnitten, vielmehr auf alle public-key Systeme, bei denen Ver- und Entschlüsselung mit der selben Funktion und verschiedenen Schlüsseln funktioniert. Ausgehend von der verschlüsselten Nachricht c berechnet man die doppelt verschlüsselte Nachricht c1 = ce mod n, dann verschlüsselt man ein weiteres Mal und erhält c2 = ce1 = 2 (ce )e = ce , usw. Angenommen, beim k-ten Mal erhält man wieder die ursprüngliche verschlüsselte Nachricht c, also ck = c. Dann muss ck−1 der Klartext gewesen sein, denn c = ck = cek−1 mod n. Zufällig gewählte Exponenten e garantieren beim RSA-Verfahren bereits, dass man viel zu oft verschlüsseln müsste, um wieder zu c zu gelangen. 2.7.2 Gleiche Moduln Wird die selbe Nachricht mit zwei Schlüsseln (n, e1 ) und (n, e2 ) (gleiches n) verschlüsselt, so kann die ursprüngliche Nachricht entschlüsselt werden, falls ggT(e1 , e2 ) = 1 ist. 25 2.7. ATTACKEN AUF RSA Nehmen wir an, die verschlüsselten Texte sind c 1 = m e1 mod n c 2 = m e2 und mod n. Dann berechnet man einfach ganze Zahlen a und b mit ae1 + be2 = 1. Genau eine der beiden Zahlen ist negativ (warum?). Nehmen wir an, dies ist a. Ist ggT(c 1 , n) > 1, so hat man einen Teiler von n gefunden, der Schlüssel ist vollständig geknackt. Ist ggT(c1 , n) = 1, so kann man den Kehrwert c−1 von c1 modulo n berechnen. Nun berechnet man −a (c−1 · (c2 )b 1 ) mod n. Das Ergebnis ist (c1 )a (c2 )b = (me1 )a (me2 )b = me1 a+e2 b = m mod n, die Nachricht im Klartext. 2.7.3 Die Low Exponent Attacke Um den Aufwand beim Verschlüsseln im RSA-Verfahren klein zu halten — das ist sehr interessant, wenn man beispielsweise mit einer Smartcard verschlüsseln möchte — könnte man kleine Verschlüsselungsexponenten verwenden, da diese ja ohnehin öffentlich bekannt sind. Die Low Exponent Attacke zeigt, wie ein Angreifer in diesem Fall die verschlüsselte Nachricht entschlüsseln kann. Angenommen, die selbe Nachricht m wird mit den öffentlichen Schlüsseln (n1 , e), (n2 , e), . . . (ne , e) verschlüsselt. (Tatsächlich muss die Nachricht mit e verschiedenen öffentlichen Schlüsseln mit dem selben Exponenten e verschlüsselt werden. Daher funktioniert diese Attacke auf keinen Fall, wenn e groß ist.) Dann lässt sich aus den e verschlüsselten Nachrichten der Klartext m berechnen. Man kennt dann m e ≡ n1 c 1 m e ≡ n2 c 2 .. . m e ≡ ne c e Die Zahlen n1 , . . . , ne sind höchstwahrscheinlich paarweise relativ prim. (Was kann man tun, wenn dies nicht der Fall ist?) Nach dem chinesischen Restsatz gibt es modulo n 1 · n2 · · · ne genau ein c, das diese Rest- klassengleichungen erfüllt. Für dieses c gilt also c = me mod n1 · n2 · · · ne . Da m kleiner ist 26 KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN als jedes ni , ist me kleiner als n1 · n2 · · · ne , also gilt c = me . Nun kann man die e-te Wurzel ganz normal (in Z) ziehen. Beispiel 2.34. Es sei e = 3, die öffentlichen Schlüssel seien (143, 3), (391, 3) und (899, 3). Verschlüsselt man die Nachricht m = 135, so erhält man c1 = 60, c2 = 203 und c3 = 711. Mit dem chinesischen Restsatz erhält man daraus c = mk = 2460375. Daraus zieht man nun die dritte Wurzel und erhält m = 135. 2.8 Faktorisieren Wir haben gesehen, dass das RSA-Verfahren gebrochen werden kann, wenn man in der Lage ist, eine große Zahl n, die das Produkt zweier großer Primzahlen p und q ist, zu faktorisieren. Die erste Methode, die einem einfällt, ist die Methode der Probedivision, also einfach durch alle Zahlen (beginnend mit 2) zu dividieren und dies solange, bis man einen Faktor gefunden hat. Wir betrachten im Folgenden zwei Methoden zur Faktorisierung großer Zahlen, die Pollard-(p − 1)-Methode und das quadratische Sieb. 2.8.1 Die Pollard-(p − 1)-Methode Mit dieser Methode ist es möglich, einen Primfaktor p einer Zahl n zu finden, wenn in der Primfaktorzerlegung von p − 1 nur kleine Primzahlpotenzen vorkommen. Angenommen, die Zahl n habe einen Primfaktor p, so dass alle Primzahlpotenzen, die in der Primfaktorzerlegung von p − 1 vorkommen, kleiner oder gleich B sind, wobei B eine nicht allzu große Zahl ist. (Bemerkung: Natürlich kennen wir p nicht. Wir vertrauen blind darauf, dass p − 1 die gewünschte Eigenschaft besitzt. Ist dies nicht der Fall, werden wir keinen Erfolg haben.) Wir bilden zunächst das kleinste gemeinsame Vielfache E aller Zahlen, die kleiner oder gleich B sind. Somit ist E sicher ein Vielfaches von p − 1 (warum?), also E = v(p − 1) f ür ein passendes v ∈ Z. Nach dem kleinen Satz von Fermat (Satz 2.28) gilt: ap−1 = 1 also mod p, aE = av(p−1) = (ap−1 )v = 1v = 1 mod p, d.h. p | aE − 1 Also ist aE −1 ein Vielfaches von p. Falls aE −1 kein Vielfaches von n ist, dann ist ggT(a E −1, n) ein echter Teiler von n. 27 2.8. FAKTORISIEREN Wir brauchen also nur aE − 1 modulo n zu berechnen und dann ggT(a E − 1, n). (Warum reicht es hier, aE − 1 modulo n zu berechnen?) Die Parameter a und B sind hier frei wählbar, a kann zufällig gewählt werden, B muss groß genug sein. Hat man bei dieser Methode keinen Erfolg (a E − 1 ist ein Vielfaches von n), dann wählt man ein anderes a, haben mehrere a nicht funktioniert, muss man wahrscheinlich ein größeres B wählen. Beispiel 2.35. Wir faktorisieren n = 1241143 und wählen a = 2, B = 13. Dann ist E = 23 · 32 · 5 · 7 · 11 · 13. Wir erhalten 2E − 1 = 861525 mod n und ggT(861525, 1241143) = 547. Schon haben wir einen Teiler von n gefunden. Tatsächlich ist 547 − 1 = 2 · 3 · 7 · 13. 2.8.2 Lineare Gleichungssysteme über endlichen Körpern Für die nächste Faktorisierungsmethode müssen wir ein lineares Gleichungssystem modulo p lösen können. Wir wissen bereits, wie man lineare Gleichungsssysteme über R löst. Für das Weitere beruhigt uns der Satz 2.36. Alles, was wir über Vektorräume über R wissen, überträgt sich auf endliche Körper. (Natürlich stimmt dieser Satz so nicht, aber er stimmt so weit, dass wir so tun können, als würde er stimmen.) 2.8.3 Das quadratische Sieb Die Pollard-(p − 1)-Methode ist für nicht allzu große Zahlen eine einfache Faktorisierungs- methode, die allerdings schnell an ihre Grenzen gelangt. Die dritte Methode ist noch besser, dafür brauchen wir aber noch ein bisschen mehr Mathematik. Dem quadratischen Sieb liegt folgende Beobachtung zu Grunde: Hat man ganze Zahlen x und y mit x2 = y 2 mod n und (2.16) x 6= ±y mod n (2.17) 28 KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN dann kennt man auch schon einen Teiler von n, denn n | x2 − y 2 = (x + y)(x − y) n - x + y, n - x − y Berechnet man nun ggT(n, x − y), so hat man einen Teiler von n. Nun geht es nur noch darum, die Zahlen x und y zu finden. √ Sei m = b nc1 und f (x) = (x + m)2 − n. Bemerkung: Ist x klein, so ist auch f (x) klein. Beispiel 2.37. Wir beginnen bescheiden und faktorisieren n = 3277, also m = 57. Zunächst berechnen wir die Werte f (−2) = 552 − 3277 = −252 = (−1) · 22 · 32 · 7 f (−1) = 562 − 3277 = −141 = (−1) · 3 · 47 f (0) = 572 − 3277 = −28 = (−1) · 22 · 7 f (1) = 582 − 3277 = 87 = 3 · 29 f (2) = 592 − 3277 = 204 = 22 · 3 · 17 Daraus lesen wir (unter anderem) 552 ≡3277 (−1) · 22 · 32 · 7 und 572 ≡3277 (−1) · 22 · 7 Multipliziert man die beiden Gleichungen, so erhält man 552 · 572 = (−1) · 22 · 32 · 7 · (−1) · 22 · 7 bzw. (55 · 57)2 = (−1)2 · 24 · 32 · 72 = (22 · 3 · 7)2 mod 3277 Wir wählen also x = 55 · 57 und y = 22 · 3 · 7 = 84. Tatsächlich sind die Gleichungen (2.16) und (2.17) erfüllt. Wir berechnen x − y = 3051 und ggT(3051, 3277) = 113, ein Teiler von n ist gefunden. So einfach geht’s nicht immer, hier haben wir Glück gehabt. Im Allgemeinen muss man ein bisschen mehr tun. Auf der linken Seite steht immer ein Quadrat, wenn man Gleichungen multipliziert. Es stellt sich die Frage, welche Gleichungen (möglicherweise mehr als zwei) multipliziert werden 1 Für x ∈ bezeichnet man mit bxc die größte ganze Zahl, die kleiner oder gleich x ist. 29 2.8. FAKTORISIEREN müssen, damit sich auch auf der rechten Seite ein Quadrat ergibt. Manchmal kann man raten, meistens jedoch muss man rechnen, wir setzen unser Beispiel fort. Beispiel 2.38 (Fortsetzung). Die rechten Seiten sind (−1) · 22 · 32 · 7, (−1) · 4 · 47, (−1) · 22 · 7, 3 · 29 und 22 · 3 · 17. Wir definieren nun λi = 1, wenn die i-te Gleichung verwendet werden soll und sonst λ i = 0. Multipliziert man nun die Gleichungen, so erhält man auf der rechten Seite · (3 · 29)λ4 λ1 · ((−1) · 3 · 47)λ2 · (−1) · 22 · 7 λ · 22 · 3 · 17 5 (−1) · 22 · 32 · 7 λ3 Wir sortieren das Ergebnis nach den Basen und erhalten (−1)λ1 +λ2 +λ3 · 22λ1 +2λ3 +2λ5 · 32λ1 +λ2 +λ4 +λ5 · 7λ1 +λ3 · 17λ5 · 29λ4 · 47λ2 Damit ein Quadrat herauskommt, müssen alle Exponenten kongruent 0 modulo 2 (also gerade) sein, d.h. λ1 + λ 2 + λ 3 = 0 mod 2 2λ1 + 2λ3 + 2λ5 = 0 mod 2 2λ1 + λ2 + λ4 + λ5 = 0 mod 2 λ1 + λ 3 = 0 mod 2 λ5 = 0 mod 2 λ4 = 0 mod 2 λ2 = 0 mod 2 Es ergibt sich ein lineares Gleichungssystem über dem Körper Z2 , welches sich wie gewohnt lösen lässt. Besitzt das lineare Gleichungssystem neben dem Nullvektor eine weitere Lösung, so wissen wir, welche Gleichungen multipliziert werden müssen. In diesem Fall ergibt sich λ1 = λ3 = 1 und λ2 = λ4 = λ5 = 0. Den Rest kennen wir ja schon. 30 KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN 2.9 Zufallszahlen Ein zentrales Element jedes kryptographischen Systems ist der Zufallszahlengenerator. Ein RSA-Schlüssel muss selbstverständlich zufällig erzeugt sein, sonst könnte ein Angreifer ihn möglicherweise einfach reproduzieren. Wir werden noch andere Verfahren kennen lernen, die vor allem auf einen guten Zufallszahlengenerator vertrauen. Was heißt nun guter Zufallszahlengenerator“? Der beste Zufallszahlengenerator ist der ” Zufall selbst (falls es so etwas gibt), also ein Prozess, der völlig unvorhersehbar ist, solange man ihn auch beobachtet. Eine Möglichkeit einen guten Zufallszahlengenerator zu bauen ist nun, einen natürlichen zufälligen Prozess zu beobachten. So gibt es Zufallszahlengeneratoren, die den Zerfall radioaktiven Materials beobachten (ein Prozess, von dem man glaubt, dass er ganz zufällig passiert). Für das eigene Notebook begnügt man sich in der Regel mit Algorithmen, die zufällige Zahlen produzieren, die sich nur sehr schwer von wirklich zufällig erzeugten Zahlen unterscheiden lassen. 2.9.1 Test auf Zufälligkeit Wir sehen uns kurz ein paar Tests an, mit denen sich feststellen lässt, ob eine Folge von Bits nicht zufällig ist (siehe auch [MvOV97, Abschnitt 5.4]). Wir werden uns nicht eingehender mit Statistik beschäftigen, sondern begnügen uns mit einem Crashkurs. Um die Zufälligkeit einer Bitfolge zu überprüfen, berechnet man bestimmte Kennzahlen der Bitfolge, sogenannte Statistiken. Diese Statistiken haben bei zufälligen Folgen Werte in einem bestimmten Bereich, bei nicht zufälligen Folgen können die Werte der Statistik außerhalb dieser Bereiche liegen. Damit lässt sich entscheiden, ob die Bitfolge zufällig ist. Natürlich kann der Wert einer Statistik auch zufällig“ außerhalb des erwarteten Bereichs ” liegen, allerdings nur mit geringer Wahrscheinlichkeit. Das Ergebnis eines statistischen Tests ist somit stets eine Aussage der Art: Die untersuchte Bitfolge ist nicht zufällig. Die Wahrscheinlichkeit, dass der Wert der Statistik zufällig so extrem war, beträgt nur . . . %. Liegt die berechnete Wahrscheinlichkeit unter einer vorgegebenen Schranke α (dem sogenannten Signifikanzniveau), dann kann man ziemlich sicher sein, dass die Bitfolge nicht zufällig ist. Wie groß α gewählt wird, hängt davon ab, wie sicher man sein will, üblich sind 10% für unkritische Anwendungen bis zu 0.05% für hochsensible Anwendungen. Die Statistiken in den im Folgenden beschriebenen Tests sind allesamt χ 2 -verteilt. Die erwarteten Bereiche für die Statistiken in der Form von Quantiltabellen angegeben. Eine solche Quantiltabelle ist Tabelle 2.1. 31 2.9. ZUFALLSZAHLEN df 0.10 0.05 0.025 0.02 0.01 0.005 0.0025 0.001 0.0005 1 2.71 3.84 5.02 5.41 6.63 7.88 9.14 10.83 12.12 2 4.61 5.99 7.38 7.82 9.21 10.60 11.98 13.82 15.20 3 6.25 7.81 9.35 9.84 11.34 12.84 14.32 16.27 17.73 4 7.78 9.49 11.14 11.67 13.23 14.86 16.42 18.47 20.00 5 9.24 11.07 12.83 13.33 15.09 16.75 18.39 20.51 22.11 6 10.64 12.53 14.45 15.03 16.81 13.55 20.25 22.46 24.10 7 12.02 14.07 16.01 16.62 18.48 20.28 22.04 24.32 26.02 8 13.36 15.51 17.53 18.17 20.09 21.95 23.77 26.12 27.87 9 14.68 16.92 19.02 19.63 21.67 23.59 25.46 27.83 29.67 10 15.99 18.31 20.48 21.16 23.21 25.19 27.11 29.59 31.42 11 17.29 19.68 21.92 22.62 24.72 26.76 28.73 31.26 33.14 12 18.55 21.03 23.34 24.05 26.22 28.30 30.32 32.91 34.82 13 19.81 22.36 24.74 25.47 27.69 29.82 31.88 34.53 36.48 14 21.06 23.68 26.12 26.87 29.14 31.32 33.43 36.12 38.11 15 22.31 25.00 27.49 28.26 30.58 32.80 34.95 37.70 39.72 16 23.54 26.30 28.85 29.63 32.00 34.27 36.46 39.25 41.31 17 24.77 27.59 30.19 31.00 33.41 35.72 37.95 40.79 42.88 18 25.99 28.87 31.53 32.35 34.81 37.16 39.42 42.31 44.43 19 27.20 30.14 32.85 33.69 36.19 38.58 40.88 43.82 45.97 20 28.41 31.41 34.17 35.02 37.57 40.00 42.34 45.31 47.50 21 29.62 39.67 35.48 36.34 38.93 41.40 43.78 46.80 49.01 22 30.81 33.92 36.78 37.66 40.29 42.80 45.20 48.27 50.51 23 32.01 35.17 38.08 38.97 41.64 44.18 46.62 49.73 52.00 24 33.20 36.42 39.36 40.27 42.98 45.56 48.03 51.18 53.48 25 34.38 37.65 40.65 41.57 44.31 46.93 49.44 52.62 54.95 26 35.56 38.89 41.92 42.86 45.64 48.29 50.83 54.05 56.41 27 36.74 40.11 43.19 44.14 46.96 49.64 52.22 55.48 57.86 28 37.92 41.34 44.46 45.42 48.28 50.99 53.59 56.89 59.30 29 39.09 42.56 45.72 46.69 49.59 52.34 54.97 58.30 60.73 30 40.26 43.77 46.98 47.96 50.89 53.67 56.33 59.70 62.16 40 51.81 55.76 59.34 60.44 63.69 66.77 69.70 73.40 76.09 50 63.17 67.50 71.42 72.61 76.15 79.49 82.66 86.66 89.56 60 74.40 79.08 83.30 84.58 88.38 91.95 95.34 99.61 102.7 80 96.58 101.9 106.6 108.1 112.3 116.3 120.1 124.8 128.3 100 118.5 124.3 129.6 131.1 135.8 140.2 144.3 149.4 153.2 Tabelle 2.1: In dieser Quantiltabelle findet sich in der Spalte 0.01 in der Zeile 9 die Zahl 21.67. Das bedeutet, dass die Wahrscheinlichkeit, dass eine mit 9 Freiheitsgraden χ 2 -verteilte Zahl mit einer Wahrscheinlichkeit von 1% größer oder gleich 21.67 ist. 32 KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN Sehen wir uns die wichtigsten Tests kurz an. Häufigkeitstest In einer zufälligen Bitfolge der Länge n kommen 0 und 1 ungefähr gleich oft vor. Sei n0 die Anzahl der 0en und n1 die Anzahl der 1en in der Bitfolge. Die Zahl (n0 − n1 )2 n 2 ist dann näherungsweise χ -verteilt mit 1 Freiheitsgrad, falls n ≥ 10. T1 = Zwei-Bit-Test Die Paare 00, 01, 10 und 11 kommen in einer zufälligen Bitfolge ungefähr gleich oft vor. Es seien n00 , n01 , n10 und n11 die Anzahl der Paare 00, 01, 10 und 11 in der Bitfolge. Dann ist die Zahl 4 2 T2 = (n200 + n201 + n210 + n211 ) − (n20 + n21 ) + 1 n−1 n näherungsweise χ2 -verteilt mit 2 Freiheitsgraden, falls n ≥ 21. Pokertest Dieser Test ist eine Verallgemeinerung des Zwei-Bit-Tests. Es sei m eine Zahl mit n c ≥ 5 · 2m . Man teilt die Bitfolge irgendwie in k nicht überlappende Teile der k := b m Länge m. Jeder dieser Teile ist die Binärdarstellung einer Zahl i mit 0 ≤ i < 2 m . Nun sei ni die Anzahl der Teile, welche die Zahl i darstellen. Dann ist die Zahl 2m −1 2m X 2 T3 = ( ni ) − k k i=0 näherungsweise χ2 -verteilt mit 2m − 1 Freiheitsgraden. Runs-Test Ein Run ist eine Teilfolge einer Bitfolge aus lauter gleichen Symbolen. Der RunTest untersucht, ob die Anzahl der Runs bestimmter Länge der erwarteten Anzahl in einer zufälligen Bitfolge entspricht. Die erwartete Anzahl von Runs von 0en (oder 1en) der Länge i in einer Bitfolge der Länge n ist ei = (n − i + 3)/2i+2 . Nun sei k die größte Zahl i, für die ei ≥ 5. Nun zählen wir für 1 ≤ i ≤ k Oi , die Anzahl der Runs von 0en der Länge i, und Ii , die Anzahl der Runs von 1en der Länge i. Dann ist die Zahl T4 = k X (Oi − ei )2 i=1 ei + k X (Ii − ei )2 i=1 ei näherungsweise χ2 -verteilt mit 2k − 2 Freiheitsgraden. Autokorrelationstest Mit diesem Test wird untersucht, ob es einen Zusammenhang zwischen der Bitfolge und der um d Stellen verschobenen Bitfolge gibt. Es sei s i das i-te Pn−d−1 Bit der Bitfolge und d eine Zahl mit 1 ≤ d ≤ b n2 c. Weiters sei A(d) = i=0 si ⊕ si+d (⊕ steht für XOR). Dann ist die Zahl n−d 2 ) /(n − d) 2 näherungsweise χ2 -verteilt mit 1 Freiheitsgrad, falls n − d ≥ 10. T5 = 4(A(d) − 2.9. ZUFALLSZAHLEN 33 Beispiel 2.39. Wir untersuchen die Bitfolge der Länge n = 160, die entsteht, wenn man die Bitfolge 1110001100010001010011101111001001001001 vier mal hintereinander schreibt. 1. (Häufigkeitstest) n0 = 84, n1 = 76, T1 = 0.4. Die Wahrscheinlichkeit, dass T 1 ≥ 0.4 ist, ist größer als 10%. Test bestanden. 2. (Zwei-Bit-Test) n00 = 44, n01 = 40, n10 = 40, n11 = 35, T2 = 0.625. Die Wahrscheinlichkeit, dass T2 ≥ 0.625 ist, ist größer als 10%. Test bestanden. 3. (Pokertest für m = 3) k = 53, n0 = 5, n1 = 10, n2 = 6, n3 = 4, n4 = 12, n5 = 3, n6 = 6, n7 = 7, T3 = 9.64. Die Wahrscheinlichkeit, dass T 3 ≥ 9.64 ist, ist größer als 10%. Test bestanden. 4. (Runs-Test) e1 = 20.25, e2 = 10.06, e3 = 5, k = 3, O1 = 8, O2 = 20, O3 = 12, I1 = 25, I2 = 4, I3 = 5, T4 = 31.79. Die Wahrscheinlichkeit, dass T 4 ≥ 31.79 ist, ist kleiner als 0.05%. Diese Bitfolge ist nicht zufällig. 5. (Autokorrelationstest für d = 8) A(8) = 100, T5 = 15.13. Die Wahrscheinlichkeit, dass T5 ≥ 15.13 ist, ist kleiner als 0.05%. Die Bitfolge ist nicht zufällig. 2.9.2 Der BBS-Zufallszahlengenerator Definition 2.40. Ein (Pseudo-)Zufallszahlengenerator (pseudo random number generator, PRNG) ist ein deterministischer Algorithmus, der eine Bitfolge erzeugt, die sich durch die statistischen Tests aus Abschnitt 2.9.1 nicht von einer zufälligen Bitfolge unterscheiden lässt. Es gibt viele Möglichkeiten, Pseudozufallszahlen zu erzeugen (siehe [MvOV97] und [Sch96]). Wir sehen uns einen der bekanntesten PRNGs an, den Blum-Blum-Shub-PRNG 2 , benannt nach seinen Erfindern. Er benötigt zwei große (geheime) Primzahlen p und q, beide kongruent 3 modulo 4. 2 Die genaue Beschreibung samt Beweis für seine Unvorhersagbarkeit finden Sie in [BBS86]. 34 KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN Algorithmus 2.41 (Blum-Blum-Shub-PRNG). 1. Es sei n = pq. 2. Wähle eine zufällige Zahl s mit 1 ≤ s ≤ n − 1 relativ prim zu n und berechne x 0 = s2 mod n. 3. Berechne xi = x2i−1 mod n. 4. Wiederhole Schritt (3). Der Algorithmus ist vollkommen deterministisch, sobald die Zahl s, der sogenannte seed gewählt ist. Üblicherweise wird ein seed bestimmt, indem man gewisse Daten des Computers (Systemzeit, Register- und Speicherinhalte, Userinput über das Keyboard, Mausbewegungen, Netzwerkdaten, . . . ) ausliest und daraus eine zufällige Zahl macht. Von den berechneten xi verwendet man jeweils nur das letzte Bit bzw. die letzten j Bits, wobei j in der Größenordnung von ln ln n liegt, also auch für sehr große n nicht mehr als 10. 2.10 Erzeugung von Primzahlen Die klassische Methode zur Primzahlerzeugung ist, eine zufällige Zahl zu erzeugen, und dann zu überprüfen, ob es sich um eine Primzahl handelt. Diese Methode funktioniert aus zwei Gründen sehr gut: 1. Die Wahrscheinlichkeit, dass eine zufällig gewählte Zahl eine Primzahl ist, ist nicht sehr klein, d.h. nach nicht allzu vielen Versuchen ist die Zahl eine Primzahl. 2. Es ist möglich, in vernünftiger Zeit zu überprüfen, ob eine Zahl Primzahl ist. Beides ist nicht unmittelbar klar. Wir gehen dem nach. 2.10.1 Es gibt viele Primzahlen Wir beginnen ganz harmlos: Satz 2.42. Es gibt unendlich viele Primzahlen. 35 2.10. ERZEUGUNG VON PRIMZAHLEN Dieses schöne Resultat sagt uns zumindest, dass uns die Primzahlen nie ausgehen. Für unsere Zwecke brauchen wir aber etwas mehr. Den folgenden Satz haben zwei Mathematiker unabhängig voneinander bewiesen, nachdem das Problem 100 Jahre lang ungelöst war. Wir begnügen uns mit einer sehr ungenauen Formulierung. Satz 2.43 (Hadamard (1896) und de la Vallée Poussin (1896)). Es sei π(x) die Anzahl der Primzahlen, die kleiner sind als x ∈ N. Dann gilt für x ≥ 17 x x < π(x) < 1.25506 · . ln x ln x Dieser Satz sagt insbesondere etwas darüber aus, wie viele Primzahlen es in etwa in der Umgebung von x gibt. Wir berechnen einfach, wie sehr sich die Anzahl der Primzahlen bei x ändert, also einfach die Steigung von π(x) an der Stelle x. 3 Es ergibt sich π 0 (x) ≈ ln x−1 ln2 x ≈ 1 ln x . Das bedeutet, dass in der Gegend von x in etwa jede ( ln1x )-te Zahl eine Primzahl ist. Anders ausgedrückt: Man muss im Durchschnitt ln x Zahlen in der Gegend von x testen, bis man eine Primzahl findet. Da ln x eine sehr langsam wachsende Funktion ist, braucht man selbst bei großen x noch nicht allzu lange probieren. 2.10.2 Primzahltests Wir überlegen uns in diesem Kapitel, ob und wie man schnell überprüfen kann, ob eine ganze Zahl n eine Primzahl ist. Probedivision Eine einfache Möglichkeit, festzustellen, ob n prim ist, ist probeweise durch alle (Prim-)Zahlen, √ die kleiner sind als n, zu dividieren. Findet man dabei einen Teiler von n, so ist n keine √ Primzahl. Findet man keinen Teiler, dann ist n prim. (Warum muss nur bis n probiert werden?) Diese Methode erfordert sehr viele Probedivisionen. Für das RSA-Verfahren brauchen wir aber zwei sehr große Primzahlen. Sehen wir uns zwei weitere Methoden an. Der Fermat–Test Der kleine Satz von Fermat (Satz 2.28) besagt, dass für alle 0 < a < n gilt: an−1 = 1 3 mod n, Es sei angemerkt, dass diese analytischen Überlegungen natürlich nicht gültig sind, sie beschreiben aber sehr anschaulich, was hier passiert. 36 KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN falls n eine Primzahl ist. Und sonst? Sehen wir uns ein paar Beispiele an. Beispiel 2.44. n a an−1 mod n prim? 14 2 2 nein 341 2 1 ??? 341 3 56 nein 561 2 1 ??? 561 3 1 ??? 561 4 1 ??? Tatsächlich lassen sich zusammengesetzte Zahlen mit diesem einfachen Test enttarnen. 14 ist sofort als nicht prim identifiziert, 341 besteht den ersten Test mit Basis 2, scheitert aber beim zweiten Test mit Basis 3, 561 ist noch hartnäckiger, besteht den Test für die Basen 2, 3 und 4. Falls n den Fermat–Test mit Basis a besteht, so nennen wir n eine Pseudoprimzahl zur Basis a. Im obigen Beispiel ist also 341 Pseudoprimzahl zur Basis 2, aber nicht zur Basis 3, 561 ist Pseudoprimzahl zu den Basen 2, 3 und 4. Nach dem kleinen Satz von Fermat ist jede Primzahl p Pseudoprimzahl zu jeder Basis a mit ggT(a, p) = 1. Lassen sich alle zusammengesetzten Zahlen ertappen oder gibt es zusammengesetzte Zahlen n, die Pseudoprimzahlen zu jeder Basis a mit ggT(a, n) = 1 sind? Die bedrückende Antwort ist ja“. Solche Zahlen heißen Carmichaelzahlen. Die zehn kleinsten Carmichaelzahlen ” sind 561, 1105, 1729, 2465, 2821, 6601, 8911, 10585, 15841 und 29341. Remark 2.45. Falls der Fermat–Test ergibt, dass es sich bei n nicht um eine Primzahl handelt, so kennt man noch keinen Teiler von n, der Fermat–Test ist also nicht als Faktorisierungsmethode zu gebrauchen. Faktorisieren ist also schwieriger, als Primalität zu testen. Der Fermat–Test kann also schnell belegen, dass eine Zahl zusammengesetzt ist, Carmichaelzahlen sind allerdings zusammengesetzte Zahlen, die der Fermat–Test immer f ür Primzahlen hält. Wir müssen uns noch ein bisschen mehr anstrengen. Der Miller–Rabin–Test Um den Fermat–Test zu verbessern, verbessern wir einfach den kleinen Satz von Fermat. 37 2.10. ERZEUGUNG VON PRIMZAHLEN Satz 2.46. Es sei n > 2 eine Primzahl. Dann lässt sich n − 1 eindeutig als n − 1 = 2s k schreiben, wobei k ∈ N ungerade und s ∈ N ist. Weiters sei 0 < a < n. Dann gilt entweder ak = 1 mod n (2.18) oder es gibt eine Zahl r ∈ {0, 1, . . . , s − 1} mit a2 rk = −1 mod n (2.19) Diesen leicht modifizierten Test, den Miller–Rabin–Test, besteht auch keine Carmichaelzahl mehr für jede Basis a. Eine Basis a, für die n den Miller–Rabin–Test nicht besteht nennen wir einen Zeugen gegen die Primalität von n. Satz 2.47. Erfüllt n die Bedingungen (2.18) oder (2.19) für jedes 0 < a < n, so ist n eine Primzahl. Beispiel 2.48. Die erste Carmichaelzahl n = 561 besteht den Miller–Rabin–Test f ür a = 2 nicht: wir erhalten 561 − 1 = 24 · 35, also s = 4 und d = 35. Wir berechnen 2 35 = 263 mod 561, also ist (2.18) nicht erfüllt. Weiter erhalten wir 22 mod 561 und 3 22 ·35 1 ·35 = 166 mod 561, 22 2 ·35 = 67 = 1 mod 561, nie ist das Ergebnis −1, also ist auch (2.19) nicht erfüllt. Somit ist 561 keine Primzahl. Die Situation ist jetzt also viel besser, allerdings muss man sehr viele Basen durchprobieren, um sicher sein zu können, dass n tatsächlich eine Primzahl ist. Das geht wieder nicht. Eine letzte Rettung bietet der folgende Satz. Satz 2.49. Ist n eine zusammengesetzte natürliche Zahl, dann gibt es höchstens n−1 4 Zahlen zwischen 1 und n−1, die zu n relativ prim und keine Zeugen gegen die Primalität von n sind. 38 KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN Daraus ergibt sich der folgende Algorithmus 2.50 (Miller–Rabin–Test). Gegeben ist eine natürliche Zahl n ≥ 3. 1. Wähle zufällig eine Zahl a, mit 2 ≤ a ≤ n − 1. 2. Schreibe n − 1 als n − 1 = 2s k schreiben, wobei k ∈ N ungerade und s ∈ N ist. 3. Berechne ak , a2k , . . . , a2 s−1 k und überprüfe (2.18) bzw. (2.19). 4. Ist n zusammengesetzt, so findet man in Schritt 4. mit einer Wahrscheinlichkeit von mindestens 75% einen Zeugen gegen die Primalität. 5. Wiederhole den Test mit einem neuen a. Nach t Tests, bei denen kein Zeuge gefunden wurde, ist die Wahrscheinlichkeit, dass n zusammengesetzt ist, höchstens ( 14 )t . Eine Zahl, die 10 Testrunden besteht ist mit einer Wahrscheinlichkeit von höchstens ( 41 )10 = 9.5 · 10−7 zusammengesetzt. Nach 15 Runden ist die Wahrscheinlichkeit höchstens 9.3 · 10−10 , nach 20 Runden 9.1 · 10−13 . Im Vergleich dazu ist die Wahrscheinlichkeit für einen Lottosechser mit 1.2 · 10−7 schon ziemlich groß. Es sind also nicht sehr viele Runden notwen- dig, um mit großer Sicherheit sagen zu können, ob eine Zahl prim ist. Sobald mehr als n−1 4 Basen durchprobiert sind, kann man sogar sicher sein, dass n prim ist. Praktisch ist das f ür große n aber nicht möglich. Man begnügt sich mit Zahlen, die sehr wahrscheinlich prim sind. Auch solche Primzahlen werden gelegentlich Pseudoprimzahlen genannt. 2.10.3 Erzeugung von starken Pseudoprimzahlen Für das RSA-Verfahren reicht es nicht, zwei große Primzahlen p und q zu finden. Wie schon die Pollard–(p − 1)–Faktorisierungsmethode zeigt, müssen p − 1 und q − 1 große Primfaktoren enthalten. Ähnliche Methoden zeigen, dass selbst das noch nicht reicht. Pseudoprimzahlen, die wirklich sicher“ sind, nennen wir starke Pseudoprimzahlen. Eine starke Pseudoprimzahl ” p erfüllt folgende Bedingungen: • p + 1 besitzt einen großen Primfaktor, • p − 1 besitzt einen großen Primfaktor r und • r − 1 besitzt einen großen Primfaktor. Überraschend ist, dass starke Pseudoprimzahlen nicht schwieriger zu erzeugen sind als irgendwelche Primzahlen. Details erfahren Sie in [Gor85]. Kapitel 3 Diffie und Hellman In diesem Kapitel erarbeiten wir uns die Grundlagen für eine zweites schwieriges mathematisches Problem, das Problem, diskrete Logarithmen zu berechnen. 3.1 Gruppen Egal, in welchem Körper (R, Zp ) wir rechnen, die Rechenregeln, die wir von den reellen Zahlen her kennen, dürfen wir immer verwenden. Wir gehen dem nach. Definition 3.1. Eine Gruppe ist ein Quadrupel (G, ◦, −1 , 1), wobei G irgendeine Menge ist, ◦ eine Funktion von G × G nach G, −1 die folgenden Gesetze erfüllt sind: eine Funktion von G nach G und 1 ∈ G, und 1. Für alle a, b, c ∈ G gilt: (a ◦ b) ◦ c = a ◦ (b ◦ c). 2. Für jedes a ∈ G gilt: a ◦ a−1 = 1 = a−1 ◦ a. 3. Für jedes a ∈ G gilt: 1 ◦ a = a ◦ 1 = a. Gilt außerdem a ◦ b = b ◦ a für alle a, b ∈ G, so nennen wir die Gruppe abelsch. Wir werden uns ausschließlich mit abelschen Gruppen beschäftigen. Wenn klar ist, was mit ◦, gemeint ist, schreiben wir statt (G, ◦, −1 , 1) einfach G. Beispiel 3.2. Wir kennen schon eine ganze Reihe von abelschen Gruppen. • (Z, +, −, 0) ist eine abelsche Gruppe. 39 −1 und 1 40 KAPITEL 3. DIFFIE UND HELLMAN • (R, +, −, 0) ist eine abelsche Gruppe. • (Zn , +, −, [0]n ) ist eine abelsche Gruppe. • (R \ {0}, ·,−1 , 1) ist eine abelsche Gruppe. • (Zp \ {[0]p }, ·,−1 , [1]p ) ist eine abelsche Gruppe. • Es sei Z∗n = {[r]n ∈ Zn | ggT(r, n) = 1}. Dann ist (Z∗n , ·,−1 , [1]n ) eine abelsche Gruppe. Auch nicht abelsche Gruppen kennen wir. • Es sei M die Menge aller invertierbaren 2 × 2-Matrizen. Dann ist ! 1 0 (M, ·,−1 , ) 0 1 eine nicht abelsche Gruppe. Die Beispiele charakterisieren auch fast schon Körper, es fehlt nur noch eine Regel für das Ausmultiplizieren. Definition 3.3. Ein Körper ist ein Septupel (K, +, −, 0, ·, −1 , 1), wobei K irgendeine Menge ist und die folgenden Gesetze erfüllt sind: 1. (K, +, −, 0) ist eine abelsche Gruppe. 2. (K \ {0}, ·,−1 , 1) ist eine abelsche Gruppe. 3. für alle a, b, c ∈ K gilt: (a + b) · c = (a · c) + (b · c) Ein paar Begriffe aus der Gruppentheorie brauchen wir noch. Definition 3.4. Besitzt eine Gruppe unendlich viele Elemente (wie z.B. (Z, +, −, 0)), so nennen wir sie eine unendliche Gruppe. Andernfalls heißt die Gruppe endlich. Ist (G, ◦,−1 , 1) eine endliche Gruppe so bezeichnen wir mit |G| die Anzahl der Elemente der Gruppe und nennen |G| die Ordnung von G. 41 3.1. GRUPPEN Ist g ein Element der Gruppe (G, ◦,−1 , 1), so schreiben wir g k statt g ◦ g ◦ · · · ◦ g . | {z } k mal Die kleinste natürliche Zahl n, so dass g n = 1 nennen wir (sofern es so eine Zahl gibt) die Ordnung von g. Gibt es keine solche Zahl, so sagen wir, die Ordnung von g ist unendlich. Es sei (G, ◦,−1 , 1) eine Gruppe und U eine Teilmenge von G. Dann nennen wir (U, ◦, −1 , 1) eine Untergruppe von (G, ◦,−1 , 1), falls 1. 1 ∈ U und 2. falls a, b ∈ U , dann auch a ◦ b−1 Untergruppen werden uns jetzt auf dem Weg zum Satz von Fermat begleiten. Satz 3.5. Es sei U eine Untergruppe von G. Dann teilt die Ordnung von U die Ordnung von G. Nehmen wir ein Element g aus einer Gruppe (G, ·, −1 , 1), und suchen wir die kleinstmögliche Untergruppe U von G, die g enthält, dann beobachten wir folgendes: • U enthält 1. • U enthält g 2 , g 3 , g 4 , . . .. • U enthält g −1 (warum?), g −2 , g −3 , . . .. • U enthält keine weiteren Elemente. Wir nennen diese Untergruppe U die von g erzeugte Untergruppe von G. Ist n die Ordnung von g, so sind die Elemente der von g erzeugten Untergruppe {g, g 2 , . . . , g n−1 = g −1 , g n = 1}. Die Ordnung der erzeugten Untergruppe ist also gleich der Ordnung ihres Erzeugers, und sie teilt die Ordnung der Gruppe, also 42 KAPITEL 3. DIFFIE UND HELLMAN Satz 3.6. Ist (G, ·,−1 , 1) eine endliche Gruppe, so teilt die Ordnung jedes Elements der Gruppe die Ordnung der Gruppe. Insbesondere gilt für jedes g ∈ G: g |G| = 1 Es kann passieren, dass ein Element einer Gruppe die gesamte Gruppe erzeugt. In diesem Fall heißt die Gruppe zyklische Gruppe. Im folgenden Abschnitt überlegen wir uns noch kurz, dass die multiplikative Gruppe eines endlichen Körpers zyklisch ist. 3.1.1 Primitivwurzeln Definition 3.7. Es sei K ein Körper. Eine Primitivwurzel von K ist ein Element g von K, so dass sich jedes Element von K als Potenz von g schreiben lässt. Es sei (K, +, −, 0, ·,−1 , 1) ein Körper. Die Gruppe K ∗ := (K \{0}, ·,−1 , 1) heißt multiplikative Gruppe des Körpers K. Eine Primitivwurzel ist also ein Element der multiplikativen Gruppe eines Körpers, das den gesamten Körper (ohne die 0) erzeugt. Wir beweisen, dass es viele solcher Primitivwurzeln in endlichen Körpern gibt. Mit anderen Worten: Die multiplikative Gruppe eines endlichen Körpers ist zyklisch. Lemma 3.8. Sei n ∈ N. Dann ist n= X ϕ(d) 0<d|n Satz 3.9. Es sei K ein Körper mit q Elementen, also |K ∗ | = q−1. Es sei d ein positiver Teiler von q − 1. Dann gibt es genau ϕ(d) Elemente der Ordnung d in K ∗ . Insbesondere gibt es also genau ϕ(q − 1) Primitivwurzeln in K. 43 3.2. POLYNOME Gut, es gibt Primitivwurzeln, aber welche Elemente eines Körpers sind Primitivwurzeln? Die schlechte Nachricht ist: Keine Ahnung!“. Die gute Nachricht ist: Macht nix!“, denn ” ” Satz 3.10. Falls n ≥ 5, so ist ϕ(n) ≥ n/(6 ln ln n). Wählt man also zufällig ein Element eines Körpers mit n Elementen, so ist die Wahrscheinlichkeit, dabei eine Primitivwurzel zu erwischen 1 6 ln ln(n−1) . Ist n eine Zahl mit 7.5 Millionen Stellen, so ist diese Wahrscheinlichkeit noch immer ca. 1%, so dass man in diesem Fall im Schnitt etwa 100 mal probieren muss, um eine Primitivwurzel zu finden. Aber wie überprüft man eigentlich, ob ein Element g eine Primitivwurzel ist? Satz 3.11. Sei g ein Element der Gruppe (G, ◦, −1 , 1) und n ∈ N. Ist g n = 1 und ist n g p 6= 1 für jeden Primfaktor p von n, dann ist n die Ordnung von g. Wenn man also die Primfaktoren von q − 1 kennt, lässt sich relativ schnell überprüfen, ob man eine Primitivwurzel gefunden hat. 3.2 Polynome Unter einem Polynom verstehen wir einen Ausdruck der Form a n xn + · · · + a1 x + a0 . Als Koeffizienten kommen ganze, rationale und reelle Zahlen, aber auch Restklassen in Frage. Wir werden gleich genauer. Es sei K ein Körper. Die Menge aller Polynome über dem Körper K ist {an xn + · · · + a1 x + a0 | n ∈ N0 und ai ∈ K für alle 0 ≤ i ≤ n} und wird mit K[x] bezeichnet. Mit Polynomen kann man rechnen wie mit ganzen Zahlen. Es gilt: (an xn + · · · + a1 x + a0 ) + (bm xm + · · · + b1 x + b0 ) = an xn + · · · + am+1 xm+1 + + (am + bm )xm + · · · + (a1 + b1 )x + (a0 + b0 ) 44 KAPITEL 3. DIFFIE UND HELLMAN und (an xn + · · · + a1 x + a0 ) · (bm xm + · · · + b1 x + b0 ) = cn+m xn+m + · · · + c1 x + c0 , wobei ck = a0 bk + a1 bk−1 + · · · + ak b0 . Das war noch längst nicht alles. Wir können uns von den ganzen Zahlen noch viel mehr abschauen. Wie in Z kann man auch in K[x] mit Rest dividieren. Definition 3.12. Der Grad des Polynoms a n xn + · · · + a1 x + a0 ∈ K[x] ist n, falls an 6= 0. Der Grad des Polynoms 0 sei −∞. Der Koeffizient a n heißt führender Koeffizient des Polynoms. Ist der führende Koeffizient = 1, so heißt das Polynom normiert. Satz 3.13. Sind f und g Polynome, dann ist Grad(f + g) ≤ max(Grad(f ), Grad(g)) Grad(f · g) = Grad(f ) + Grad(g) Der nächste Satz erinnert schon stark an Z (vgl. Satz 2.1): Satz 3.14 (Division mit Rest in K[x]). Es sei K ein Körper und f, g ∈ K[x]. Dann gibt es zwei eindeutig bestimmte Polynome q (Quotient) und r (Rest) über K, so dass f =g·q+r und Grad(r) < Grad(g) Die Polynome q und r erhält man durch Polynomdivision. Ein kurzes Beispiel frischt unsere Erinnerung auf: 45 3.2. POLYNOME Beispiel 3.15. Wir wählen K = R, f = 2x3 − 4x2 + 1 und g = x − 1. 2x3 − 4x2 + 1 : x − 1 = 2x2 − 2x − 2 −2x3 ∓ 2x2 − 2x2 ∓ 2x2 ±2x −2x + 1 ∓2x ± 2 − 1 Rest Also ist q = 2x2 − 2x − 2 und r = −1. Weiters ist Grad(r) = 0 und Grad(g) = 1, passt. Ist r = 0, so sagen wir g teilt f (g | f ). Wie in Z gibt es auch wieder einen größten gemeinsamen Teiler, denn Satz 3.16. Für alle f, g ∈ K[x] gibt es genau ein normiertes Polynom d ∈ K[x] größten Grades, das sowohl f als auch g teilt. Wieder lässt sich der ggT als Linearkombination“ darstellen, d.h. ” Satz 3.17. Für alle f, g ∈ K[x] gibt es Polynome s, t ∈ K[x], so dass ggT(f, g) = s · f + t · g Ausrechnen lässt sich all das genau wie in Z. Ein Beispiel zur Illustration. Beispiel 3.18 (Der erweiterte Euklidsche Algorithmus f ür Polynome). Was ist ggT(x3 + 2x2 + x + 2, 2x2 + x − 6)? 46 KAPITEL 3. DIFFIE UND HELLMAN x3 + 2x2 + x + 2 2x2 + x − 6 x3 + 2x2 + x + 2 1 2x2 + x − 6 0 1 1 − 12 x 13 4 x + 13 2 0 0 − 3 4 Nebenrechnungen: 9 1 x3 + 2x2 +x + 2 : 2x2 + x − 6 = x + 2 4 1 2 3 −x ± x ∓3x 2 3 2 x +4x + 2 2 3 3 9 − x2 ± x ∓ 2 4 2 13 13 x+ Rest 4 2 2x2 + x −6 : 13 13 8 12 x+ = x− 4 2 13 13 −2x2 ± 4x − 3x −6 ∓ 3x ∓6 0 Rest Der ggT ist definiert als normiertes Polynom, wir müssen also 13 4 x + 13 2 noch normieren, das heißt dividieren durch den führenden Koeffizienten. Wir erhalten ggT(x3 + 2x2 + x + 2, 2x2 + x − 6) = ( 13 13 4 x+ )· =x+2 4 2 13 Weiters lässt sich der ggT darstellen als 4 1 3 · [1 · (x3 + 2x2 + x + 2) + (− x − ) · (2x2 + x − 6)] 13 2 4 1 4 3 2 ·(x + 2x + x + 2) + = · (−2x − 3) ·(2x2 + x − 6) 13 13 |{z} {z } | x+2 = =s =t 3.3. POLYNOME ÜBER ZP 3.3 47 Polynome über Zp Alles, was wir mit Polynomen über R bisher angestellt haben, hätten wir genauso gut mit Polynomen über irgendeinem anderen Körper machen können. Beispiel 3.19. Wir wählen p = [2]3 x4 + [1]3 x3 + [0]3 x2 + [1]3 x + [2]3 und q = [1]3 x4 + [0]3 x3 + [0]3 x2 + [1]3 x + [2]3 . Das ist umständlich, wir schreiben lieber p = 2x4 + x3 + x + 2 und q = x4 + x + 2 und merken uns, dass wir in Z3 [x] rechnen. Es ergibt sich (Achtung: die Koeffizienten sind aus Z 3 !) p + q = 3x4 + x3 + 2x + 4 = x3 + 2x + 1, p · q = 2x8 + x7 + x5 + 2x4 + 2x5 + x4 + x2 + 2x + 4x4 + 2x3 + 2x + 4 = 2x8 + x7 + x4 + 2x3 + x2 + x + 1 Wir berechnen noch schnell den ggT. 2x4 + x3 + x + 2 x4 + x + 2 1 0 +x+2 0 1 + 2x + 1 1 1 x2 + 2 2x 2x4 + x3 + x + 2 x4 x3 1 1+ x2 1 + 2x 1 + 2x + x2 0 Also ist ggT(2x4 + x3 + x + 2, x4 + x + 2) = 1 und 1 = (1 + x2 ) · (2x4 + x3 + x + 2) + (1 + 2x + x2 ) · (x4 + x + 2) 48 KAPITEL 3. DIFFIE UND HELLMAN 3.4 Shared Keys Inzwischen wissen wir genug, um uns mit dem folgenden Problem zu beschäftigen. An n Personen sind Schlüssel zu verteilen, so dass jede Kombination von mindestens k Schlüsseln gemeinsam sperren, weniger als k Schlüssel jedoch nicht. Im Informationszeitalter heißt das: an n Personen werden Zahlen e 1 , . . . , en verteilt. Jeder Kombination von k Personen ist es möglich, daraus den geheimen Schlüssel e zu berechnen, weniger als k Personen jedoch nicht. Praktisch sind solche Shared Keys notwendig, wenn Entscheidungen nicht von Einzelpersonen getroffen werden dürfen, aber z.B. von beliebigen drei Personen gemeinsam. Wir sehen uns zwei Realisierungen eines Shared-Key-Systems an. 3.4.1 Interpolation Man wählt eine große Primzahl p, die jedenfalls größer als e und n ist und ein Polynom f = e + a1 x + a2 x2 + · · · + ak−1 xk−1 vom Grad k − 1 aus Zp [x]. Die Koeffizienten a1 , . . . , ak−1 können zufällig gewählt werden. Die Teilnehmer erhalten die Teilschlüssel (1,e1 = f (1)) (2,e2 = f (2)) .. . (n,en = f (n)) Behauptung 3.20. Aus je k Teilschlüsseln lässt sich e rekonstruieren, aus weniger jedoch nicht. Beweis: Es sind die Koeffizienten a1 , . . . , ak−1 und e unbekannt, das sind k Unbekannte. Aus jedem Teilschlüssel (i, ei ) erhält man eine Gleichung ei = f (i), also ei = e + a1 i + a2 i2 + · · · + ak−1 ik−1 . Insgesamt erhalten wir so ein lineares Gleichungssystem mit k Gleichungen und k Unbekannten, welches eindeutig lösbar ist. Fehlt auch nur ein Teilschlüssel, so ist das Gleichungssystem nicht mehr eindeutig lösbar und es gibt dann zumindest p verschiedene Lösungen. Ist p eine große Primzahl, so müsste man sehr viele Möglichkeiten durchprobieren, das ist hoffnungslos. Das Polynom f lässt sich glücklicherweise auch etwas einfacher aus den Teilschlüsseln berechnen, es hilft der 49 3.4. SHARED KEYS Satz 3.21 (Lagrangesches Interpolationspolynom). Gegeben seien k Punkte (x1 , y1 ), . . . , (xk , yk ). Sind alle xi verschieden, so gibt es genau ein Polynom f vom Grad k − 1, für welches gilt: f (x1 ) = y1 , . . . , f (xk ) = yk . Dieses Polynom lautet f = y1 · L1 (x) + y2 · L2 (x) + · · · + yk · Lk (x), wobei Li (x) = (x − x1 )(x − x2 ) · · · (x − xi−1 )(x − xi+1 ) · · · (x − xk ) (xi − x1 )(xi − x2 ) · · · (xi − xi−1 )(xi − xi+1 ) · · · (xi − xk ) Ein Beispiel wird nötig. Beispiel 3.22. n = 5, k = 3, e = 9. Wir wählen p = 17, f = 9 + x + 2x2 ∈ Z17 [x]. Es ergibt sich e1 = f (1) = 9 + 1 + 2 = 12 e2 = f (2) = 9 + 2 + 8 = 2 e3 = f (3) = 13 e4 = f (4) = 11 e5 = f (5) = 13 Die Teilschlüssel lauten (1, 12), (2, 2), (3, 13), (4, 11) und (5, 13). Sehen wir uns an, wie aus dem zweiten, dritten und fünften Teilschlüssel e rekonstruiert wird. (x − 3)(x − 5) = 6(x − 3)(x − 5) (2 − 3)(2 − 5) (x − 2)(x − 5) L3 (x) = = 8(x − 2)(x − 5) (3 − 2)(3 − 5) (x − 2)(x − 3) = 3(x − 2)(x − 3) L5 (x) = (5 − 2)(5 − 3) L2 (x) = 50 KAPITEL 3. DIFFIE UND HELLMAN f = 2 · L2 (x) + 13 · L3 (x) + 13 · L5 (x) = 9 + x + 2x2 3.4.2 Chinesischer Restsatz Man sucht paarweise relativ prime Zahlen r 1 , . . . , rn , so dass n. An die n Personen verteilt man dann die Schlüssel √ k e ≤ ri < √ e für alle 1 ≤ i ≤ k−1 (r1 , e1 = e mod p1 ) (r2 , e2 = e mod p2 ) .. . (rn , en = e mod pn ). Nun können k Personen e mit Hilfe des chinesischen Restsatzes berechnen, denn Sie erhalten √ √ √ ein Ergebnis modulo r1 · r2 · · · rk ≥ k e · · · k e = ( k e)k = e, also das richtige Ergebnis. k − 1 √ √ √ Personen allerdings können e nur modulo r1 · r2 · · · rk−1 < k−1 e · · · k−1 e = ( k−1 e)k−1 = e berechnen und können daher keine eindeutige Lösung finden. Beispiel 3.23. Wir nehmen wieder n = 5 und k = 3. Diesmal sei e = 200. Wir suchen 5 √ √ paarweise relativ prime Zahlen zwischen 200 = 14.1 und 3 200 = 5.8. r1 = 7, r2 = 8, r3 = 9, r4 = 11, r5 = 13 Die Teilschlüssel lauten (7, 200 mod 7) = (7, 4) (8, 200 mod 8) = (8, 0) (9, 200 mod 9) = (9, 2) (11, 200 mod 11) = (11, 2) (13, 200 mod 13) = (13, 5). Aus den Teilschlüsseln 2, 3 und 5 lässt sich e rekonstruieren, indem man das Restklassengleichungssystem e ≡8 0 e ≡9 2 e ≡13 5 3.5. FAKTORISIEREN IN ZP [X] 51 löst. Man erhält die Lösung e = 200 modulo 8 · 9 · 13 = 936. Die zwei Personen mit dem vierten und fünften Teilschlüssel können die Lösung nur modulo 11 · 13 = 143 bestimmen und müssen dann raten. 3.5 Faktorisieren in Zp [x] Wie in Z gibt es auch in K[x] Elemente, die sich in Produkte zerlegen lassen und andere, die dies nicht erlauben. Ein Polynom p ∈ K[x] heißt reduzibel, wenn es Polynome f und g gibt, so dass p = f · g und die Grade der Polynome f und g sind kleiner als der Grad von p. Andernfalls nennen wir p irreduzibel. Die irreduziblen Polynome sind sozusagen die Primzahlen in K[x]. Wie in Z ist auch in K[x] eine eindeutige Primfaktorzerlegung (vgl. Satz 2.3) möglich. Satz 3.24. Jedes Polynom p ∈ K[x] lässt sich in der Form p = a · pe11 · pe22 · · · perr darstellen, wobei p1 , . . . , pr verschiedene normierte irreduzible Polynome vom Grad ≥ 1 sind und a der führende Koeffizient von p ist. Diese Darstellung ist bis auf die Reihenfolge eindeutig. Endlich gibt es einen Unterschied zwischen Z und K[x] (allerdings nur für die Körper Zp ): in Zp [x] kann man faktorisieren. Der folgende Algorithmus beschreibt, wie das funktioniert. Algorithmus 3.25 (Berlekamp). Sei f ∈ Z p [x] vom Grad n. 1. Zunächst sucht man mehrfache Faktoren, indem man d = ggT(f, f 0 ) berechnet (wozu?). 2. Man berechnet die Reste von 1, xp , x2p , . . . , x(n−1)p bei Division durch f . Dann 52 KAPITEL 3. DIFFIE UND HELLMAN schreibt man die Reste in der Form Rest von 1 = q0,0 + q0,1 x + · · · + q0,n−2 xn−2 + q0,n−1 xn−1 Rest von xp = q1,0 + q1,1 x + · · · + q1,n−2 xn−2 + q1,n−1 xn−1 .. . Rest von x(n−1)p = qn−1,0 + qn−1,1 x + · · · + qn−1,n−2 xn−2 + qn−1,n−1 xn−1 auf und bildet die n × n-Matrix q0,0 · · · . .. . Q= . . qn−1,0 · · · q0,n−1 .. . qn−1,n−1 3. Die Lösungsmenge des homogenen linearen Gleichungssystems (Q − E) · x = 0 (E ist die n × n-Einheitsmatrix) ist ein Unterraum des (Zp )n der Dimension r. Man berechne eine Basis v 1 , . . . , vr des Lösungsraums. Dann hat f r verschiedene irreduzible Faktoren. 4. Ist r = 1, so ist f irreduzibel. Sonst bildet man die Polynome hi = hvi , (1, x, x2 , . . . , xn−1 )T i Unter den ggT(f, hi + c), mit c ∈ Zp und 1 ≤ i ≤ r findet man alle Primfaktoren von f. Beispiel 3.26. Wir zerlegen f = x7 + x5 + x3 + x2 + x + 1 ∈ Z2 [x] in irreduzible Faktoren. 1. f 0 = x6 + x4 + x2 + 1 und d = ggT(f, f 0 ) = x2 + 1. Damit haben wir schon einen Teiler. Wir dividieren f d = x5 + x + 1 und erhalten f = (x2 + 1)(x5 + x + 1). Lassen sich die beiden Faktoren weiter zerlegen? x2 +1 = (x+1)(x+1) = (x+1)2 , das war leicht, außerdem ist x+1 sicher irreduzibel. Mit f = x5 + x + 1 geht’s weiter. 3.5. FAKTORISIEREN IN ZP [X] 53 2. Wir berechnen die Reste Rest von 1 = 1 · 1+0 · x + 0 · x2 +0 · x3 + 0 · x4 Rest von x2 = 0 · 1+0 · x + 1 · x2 +0 · x3 + 0 · x4 Rest von x4 = 0 · 1+0 · x + 0 · x2 +0 · x3 + 1 · x4 Rest von x6 = 0 · 1+1 · x + 1 · x2 +0 · x3 + 0 · x4 Rest von x8 = 0 · 1+0 · x + 0 · x2 +1 · x3 + 1 · x4 Somit ergibt sich 1 0 Q = 0 0 0 0 0 0 0 0 1 und Q − E = 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 1 1 0 0 0 1 0 3. Wir lösen das lineare Gleichungssystem (Q−E)·x = 0 und erhalten die Basisvektoren 1 0 0 1 v1 = 0 und v2 = 1 . 0 0 0 1 Also gibt es zwei irreduzible Faktoren. 4. Wir berechnen h1 = hv1 , (1, x, x2 , . . . , xn−1 )T i = 1 und h2 = hv2 , (1, x, x2 , . . . , xn−1 )T i = x + x2 + x4 Unter den ggT’s finden wir x3 +x2 +1 und durch Division den zweiten Faktor x 2 +x+1. Beide sind irreduzibel, denn f besitzt nur zwei irreduzible Faktoren. Wir erhalten also x7 + x5 + x3 + x2 + x + 1 = (x + 1)2 (x2 + x + 1)(x3 + x2 + 1). Im Kapitel über Automaten werden wir wieder Polynome brauchen. Wir definieren schon jetzt: 54 KAPITEL 3. DIFFIE UND HELLMAN Definition 3.27. Jedes irreduzible Polynom f vom Grad n in Z p [x] teilt das Polynom xp n −1 − 1. Die kleinste positive ganze Zahl e, so dass f | x e − 1, heißt Exponent von f . Der Exponent von f ist stets ein Teiler von p n − 1. Ist der Exponent gleich pn − 1, so heißt f maximalperiodisch. Beispiel 3.28. In Z2 [x] sind die Polynome 1 + x + x2 , 1 + x3 + x4 und 1 + x + x2 + x4 + x5 maximalperiodisch. Das Polynom 1 + x + x 2 + x3 + x4 ist zwar irreduzibel, aber nicht maximalperiodisch. 3.6 Endliche Körper In diesem Abschnitt überlegen wir, ob nicht auch die Sache mit den Restklassen in K[x] funktioniert. Wir nehmen uns dazu ein letztes Mal R[x] vor. Wir definieren (diesmal für f, g, p ∈ K[x]): f ≡p g genau dann, wenn p | f − g (3.1) Wirklich stellt sich heraus, dass Satz 2.16 mutatis mutandis wieder gilt, d.h. auch hier darf wieder mit Restklassen gerechnet werden. Ähnlich wie bei Z schreiben wir für die Menge der Restklassen modulo p jetzt K[x]/p. Bevor es weitergeht, sehen wir uns das einmal an. Beispiel 3.29. Das Polynom p = x2 + 1 ist irreduzibel in R[x]. Wir rechnen in R[x]/(x 2 + 1). Addition [(4 + 3x)]p + [(3 − x)]p = [4 + 3x + 3 − x]p = [7 + 2x]p . Multiplikation [(4 + 3x)]p · [(3 − x)]p = [(4 + 3x)(3 − x)]p = [12 + 5x − 3x2 ]p . Hier passiert etwas, wir können den Rest bei Division durch p berechnen. Also −3x2 + 5x+12 : x2 + 1 = −3 ∓3x2 ∓3 5x +15 Rest Also ist [(4 + 3x)]p · [(3 − x)]p = [5x + 15]p . 55 3.6. ENDLICHE KÖRPER Division [4+3x]p [3−x]p =?. Auch keine Überraschung, erweiterter Euklidscher Algorithmus wie in Zp . x2 + 1 x2 3−x +1 1 3−x 0 1 1 3+x 10 0 0 1 Gut, der ggT ist 1 und [3 − x]−1 p = [ 10 (3 + x)]p . Also ist 9 x)]p = . . . = [ 10 + 13 10 x]p . [4+3x]p [3−x]p 1 (3 + = [(4 + 3x)]p · [ 10 Das Berechnen der Rest ist etwas mühsam, es geht auch bequemer, wie, das wissen wir schon längst. Schaut man genauer hin, so bemerkt man, dass wir hier C, den Körper der komplexen Zahlen, konstruiert haben. Wir brauchen statt x lediglich i zu schreiben. Rechnet man modulo p, so ist x2 + 1 ≡p 0, oder mit i, i2 + 1 = 0 mod p, bzw. i2 = −1 mod p. Jetzt ist alles klar. Man kann es auch so sehen: wir haben einen neuen Körper konstruiert, indem wir zu R einfach ein neues Element i hinzugefügt haben. Man schreibt daher auch oft R(i) für diesen Körper und nennt R(i) Erweiterungskörper von R. In R(i) ist p nicht mehr irreduzibel, denn nun ist x2 + 1 = (x + i)(x − i), also zerfällt p jetzt in Linearfaktoren, weswegen der Körper R(i) auch Zerfällungskörper von p genannt wird. So wie sich aus Z die Körper Zp konstruieren ließen, so lässt sich der Körper C aus R[x] konstruieren. Man erhält so wirklich immer Körper. Satz 3.30. Ist K ein Körper und p ein irreduzibles Polynom in K[x], dann ist K[x]/p ein Körper. Das Gleiche versuchen wir jetzt mit anderen Körpern K. Beispiel 3.31. Diesmal versuchen wir K = Z 2 . Das Polynom p = x2 +x+1 ist irreduzibel in Z2 [x]. Wie vorher rechnen wir am bequemsten, indem wir eine fiktive Lösung α der 56 KAPITEL 3. DIFFIE UND HELLMAN Gleichung x2 + x + 1 = 0 zu Z2 hinzufügen, wir erhalten den Körper Z2 (α) = Z2 [x]/(x2 + x + 1). Sehen wir uns diesen Körper an. Wir verzichten gleich auf die Schreibweise als Restklassen und verwenden α. Welche Elemente gibt es in Z2 (α)? 0, 1, α, α + 1 Das waren schon alle Elemente, Z2 (α) ist ein Körper mit 4 Elementen. Höhere Potenzen von α treten nicht auf, denn α ist eine Lösung von x2 + x + 1 = 0, und daher ist α2 = α + 1 (man beachte vor allem die Ähnlichkeit zu C). In Z2 (α) rechnet man wie folgt: + 0 1 α α+1 0 0 1 α α+1 1 1 0 α+1 α α α+1 α+1 α+1 α · 0 1 α α+1 0 0 0 0 0 α 1 0 1 α α+1 0 1 α 0 α α+1 1 1 0 α+1 0 α+1 1 α Ein drittes Beispiel Beispiel 3.32. In diesem Beispiel wählen wir K = Z5 und p = x3 + 3x + 2. Wir erhalten den Körper Z5 (α) = Z5 [x]/(x3 + 3x + 2). In diesem Körper gilt α3 = 2α + 3. Wie viele Elemente hat dieser Körper? Jetzt sind alle Elemente von der Form a + bα + cα2 , a, b, c ∈ Z5 , denn höhere Potenzen von α werden wir wieder los. So ist α3 = 2α + 3 α4 = α · α3 = α(2α + 3) = = 2α2 + 3α α5 = α2 · α3 = α2 (2α + 3) = = 2α3 + 3α2 = 2(2α + 3) + 3α2 = = 3α2 + 4α + 6 usw. Diesmal ergeben sich 5 · 5 · 5 = 125 verschiedene Elemente. Auf die beschriebene Art kann man aus einem Körper Zp einen Körper Zp [x]/p basteln. Ist 3.7. DIFFIE-HELLMAN-KEY-EXCHANGE 57 p ein irreduzibles Polynom vom Grad n, so hat der Körper Zp [x]/p genau pn Elemente. Wir haben also Körper mit pn Elementen gefunden. Dazu brauchen wir aber irreduzible Polynome. Es drängt sich die Frage auf, ob es in jedem Z p [x] irreduzible Polynome von jedem beliebigen Grad n gibt. Die überraschende Antwort ist Satz 3.33. Ja. Für jedes p ∈ P und jedes n ∈ N gibt es genau einen endlichen Körper mit pn Elementen. Wir nennen diesen Körper GF(pn ), das Galoisfeld mit pn Elementen. Das sind alle endlichen Körper. 3.7 Diffie-Hellman-Key-Exchange Für public-key Systeme ist es erforderlich, sogenannte Trapdoor-Funktionen zu kennen. Von einer Trapdoor-Funktion t verlangt man dreierlei: • y = t(x) soll einfach berechnet werden können • x = t−1 (y) soll nur sehr schwer berechnet werden können • x = t−1 (y) soll einfach berechnet werden können, wenn man noch einen (geheimen) Hinweis bekommt. Beispiel 3.34. Im Fall des RSA-Verfahrens ist es einfach, c = m e mod n zu berechnen. √ Umgekehrt ist es sehr schwer, m = e c mod n zu bestimmen. Mit dem geheimen Hinweis n = p · q ist es dann wieder einfach, die e-te Wurzel zu ziehen. Das RSA-Verfahren verlässt sich allerdings darauf, dass tatsächlich ein geheimer Hinweis n = p · q erforderlich ist, dass n also nicht einfach in Primfaktoren zerlegt werden kann. Allerdings ist nicht bewiesen, dass das Faktorisierungsproblem wirklich schwierig ist, es hat einfach noch niemand geschafft. Daher ist es eine gute Idee, mehr als nur eine Art von Trapdoor-Funktionen zur Verfügung zu haben. Wir beschäftigen uns nun mit einer TrapdoorFunktion, die – soviel man weiß – nichts mit dem Faktorisierungsproblem zu tun hat. Die in weiterer Folge besprochenen Verfahren beruhen auf dem Diffie-Hellman-Problem bzw. auf dem diskreten Logarithmusproblem. Das diskrete Logarithmusproblem (DLP) lautet: Gegeben: eine Gruppe (G, ◦,−1 , 1) und g, A ∈ G Gesucht: eine Zahl a, so dass A = g a , falls es so eine Zahl gibt. 58 KAPITEL 3. DIFFIE UND HELLMAN Die Zahl a wird aus naheliegenden Gründen diskreter Logarithmus (DL) von A zur Basis g genannt. Ganz ähnlich lautet das Diffie-Hellman-Problem (DHP): Gegeben: eine Gruppe (G, ◦,−1 , 1), g ∈ G und g a und g b , nicht aber a und b Gesucht: g ab . Ganz klar, wer das DLP löst, kann auch das DHP lösen. Ob das umgekehrt auch so ist, weiß niemand. Die beiden Probleme gelten bislang – wie das Faktorisierungsproblem – als nicht lösbar (in sehr großen Gruppen). Ein Großteil der Verfahren in diesem Kapitel beruht auf dem DHP oder dem DLP. Als Gruppe werden wir (zumindest in diesem Kapitel) die multiplikative Gruppe eines endlichen Körpers verwenden also entweder (Zp \ {0}, ·,−1 , [1]p ) oder (GF(pn ) \ {0}, ·,−1 , 1). Im Kapitel 6 werden wir schließlich auch andere Gruppen (elliptische Kurven) verwenden. Wir tasten uns vorsichtig an die Materie heran. Das erste Verfahren, das auf dem DHP-Problem beruht, wurde von Diffie und Hellman vorgeschlagen, es handelt sich dabei um ein Schlüsselaustauschsystem. Mit so einem System können sich zwei Personen auf einen gemeinsamen Schlüssel einigen, der dann beispielsweise für ein symmetrisches Verschlüsselungsverfahren verwendet werden kann. Algorithmus 3.35 (Diffie-Hellman-Schl üsselaustausch nach [DH76]). 1. Alice und Bob einigen sich auf eine Primzahl p und auf eine Primitivwurzel g in Z ∗p . 2. Alice wählt zufällig a ∈ Z∗p . Bob wählt zufällig b ∈ Z∗p . 3. Alice schickt Bob A = g a mod p Bob schickt Alice B = g b mod p. 4. Alice berechnet K = B a mod p Bob berechnet K = Ab mod p. Beide haben die selbe Zahl K berechnet, denn B a = (g b )a = g ab und Ab = (g a )b = g ab . Eine Angreiferin Eve kennt p, g, g a und g b , nicht aber a und b. Um daraus g ab zu berechnen, muss sie das DHP lösen. Remark 3.36. Den Diffie-Hellman-Schlüsselaustausch kann man natürlich mit jeder multiplikativen Gruppe durchführen, wir beschäftigen uns in den Übungen damit. 3.7. DIFFIE-HELLMAN-KEY-EXCHANGE 59 Eine lauschende Angreiferin hat also praktisch keine Chance, den vereinbarten Schl üssel K herauszubekommen. Eine aktive Angreiferin allerdings schon. Wir sehen uns eine (wo)man in the middle Attacke an. Hier ist es erforderlich, dass die Angreiferin Eve nicht nur die Kommunikation zwischen Alice und Bob abhören kann, sie muss in der Lage sein, die Daten, die die beiden übertragen, zu modifizieren. Algorithmus 3.37 (Woman in the middle). 1. Eve wählt zufällig e in Z∗p und berechnet E = g e mod p. 2. Eve empfängt A von Alice und schickt statt dessen E weiter an Bob. Eve empfängt B von Bob und schickt stattdessen E weiter an Alice. 3. Somit einigt sich Eve mit Alice auf den Schlüssel KA = Ae = E a = g ae und mit Bob auf den Schlüssel KB = B e = E b = g be . 4. Alice und Bob können nicht erkennen, dass sie nicht direkt miteinander kommunizieren, und Eve liest mit und kann bei Bedarf die Nachrichten auch weiter modifizieren. Um solche Angriffe zu verhindern muss das Schlüsselaustauschverfahren modifiziert werden. Wir sehen uns eine der nach Matsumoto, Takashima und Imai benannten Varianten an: Algorithmus 3.38 (MTI/A0-Protokoll). Zunächst einigen Alice und Bob sich wieder auf eine Primzahl p und eine Primitivwurzel g in Z∗p . Bevor die beiden das Verfahren das erste Mal benutzen, erzeugen die beiden ihre statischen Schlüsselpaare: • Alice wählt zufällig sA ∈ Z∗p und berechnet σA = g sA . • Bob wählt zufällig sB ∈ Z∗p und berechnet σB = g sB . Die beiden tauschen σA und σB über einen sicheren Kanal aus, z.B. indem sie sich treffen. Das modifizierte Schlüsselaustauschverfahren sieht nun folgendermaßen aus: 1. Alice wählt zufällig a ∈ Z∗p . Bob wählt zufällig b ∈ Z∗p . 60 KAPITEL 3. DIFFIE UND HELLMAN 2. Alice schickt Bob A = g a mod p Bob schickt Alice B = g b mod p. 3. Alice berechnet K = B sA · (σB )a mod p. Bob berechnet K = AsB · (σA )b mod p. Wieder erzeugen beide den selben Schlüssel K (warum?). Diesmal hat Eve aber keine Chance, wenn die statischen Schlüssel erst einmal sicher ausgetauscht sind. 3.8 DL- und DH-public-key Systeme 3.8.1 Das Massey-Omura-Kryptosystem Die Teilnehmer einigen sich auf eine (öffentlich bekannte) Gruppe (G, ◦,−1 , 1) (z.B. die multiplikative Gruppe eines endlichen Körpers GF(q) oder Zp ). Alice wählt ein (geheimes) eA zufällig, so dass 2 ≤ eA ≤ |G| und ggT(eA , |G|) = 1, und berechnet dessen inverses Element d A = (eA )−1 mod |G|. Bob wählt analog eB und dB . Will Alice Bob die Nachricht m an Bob schicken, so schickt sie ihm m eA (in G). Bob kann damit nichts anfangen, denn er kennt weder e A noch dA . Er schickt Alice (meA )eB zurück. Alice schickt Bob (((meA )eB ))dA . Bob entschlüsselt nun die Nachricht, indem er mit d B potenziert. Er erhält ((((meA )eB )dA )dB = meA eB dA dB = meA dA eB dB = m1·1 = m (im Exponenten darf ja modulo |G| gerechnet werden). Dabei wurden die folgenden Nachrichten übermittelt: meA , meA eB und meB . Da sowohl eA als auch eB geheim sind, lassen sich daraus weder m noch eA oder eB berechnen. Um beispielsweise aus m eA und (meA )eB eB zu bestimmen, muss man das DL-Problem lösen. Selbst Bob ist es nicht möglich, eA zu bestimmen auch er müsste das DL-Problem lösen. Interessant ist, dass es in diesem Kryptosystem gar keine öffentlichen Schlüssel gibt. Natürlich ist auch bei diesem System die Gefahr eines Man-in-the-middle-Angriffs gegeben. Es muss hier separat sichergestellt werden, dass sich die Benutzer gegenseitig authentifizieren. 3.8.2 Das ElGamal-Kryptosystem Wieder wird eine Gruppe (G, ◦,−1 , 1) ausgemacht, weiters ein Element g mit großer Ordnung in G (z.B. eine Primitivwurzel im endlichen Körper). Alice wählt eine Zahl a, so dass 2 ≤ a ≤ ord(g) − 1. Dies ist ihr private key. Als public key gibt Alice das Element A = g a (in G) bekannt. 3.9. BERECHNUNG DISKRETER LOGARITHMEN – DER INDEX CALCULUS ALGORITHMUS61 Will Bob Alice die Nachricht m übermitteln, so wählt er zufällig eine Zahl k und schickt Alice das Paar (B, c) = (g k , m ◦ Ak ). Will Alice die verschlüsselte Nachricht lesen, so berechnet sie x = B a und dessen inverses Element x−1 in G. Schließlich berechnet sie c ◦ x −1 . Das ist die Nachricht, denn c ◦ x−1 = m ◦ Ak ◦ (B a )−1 = m ◦ (g a )k ◦ ((g k )a )−1 = m ◦ g ak ◦ (g ak )−1 = m. Wer das DHP lösen kann, kann aus dem öffentlich bekannten A = g a und dem B = g k aus der verschlüsselten Nachricht g ak berechnen und damit wie Alice die Nachricht entschlüsseln. Eine bessere Methode ist nicht bekannt. Hier wird – anders als im Massey-Omura-Verfahren – stets der gleiche Schlüssel verwendet. Hier sorgt das zufällig gewählte k dafür, dass die selbe Nachricht jedes Mal anders verschlüsselt wird. 3.9 Berechnung diskreter Logarithmen – Der Index Calculus Algorithmus Diskrete Logarithmen lassen sich in manchen Gruppen leichter berechnen als in anderen. Beispiel 3.39. Diskrete Logarithmen in der Gruppe (Z n , +, −, 0) lassen sich sehr einfach berechnen. Das DLP lautet hier: Gegeben seien g, A ∈ Zn . Gesucht ist ein a ∈ Z, so dass a · g = A. Eine Lösung findet man, indem man g −1 in Z∗n berechnet (warum existiert der Kehrwert?), dann ist a = g −1 ·A. Wir haben also in Abschnitt 2.4 von Kapitel 2 das DLP in der Gruppe (Zn , +, −, 0) gelöst. In den Gruppen (Z∗p , ·,−1 , 1) und (GF(q)∗ , ·,−1 , 1) ist das DLP wesentlich schwieriger, aber auch hier gibt es Möglichkeiten, DL zu berechnen. Wir sehen uns für (Z∗p , ·,−1 , 1) eine Methode an, die sich zu Nutze macht, dass es in Z eine eindeutige Primfaktorzerlegung gibt, den Index Calculus Algorithmus. Es sei p ∈ P, g Primitivwurzel modulo p. Wir möchten DLen zur Basis g modulo p berechnen. Zunächst wählen wir eine Zahl B und die dazugehörige Faktorbasis F(B) = {p ∈ P | p ≤ B}. Eine Zahl z nennen wir B-glatt, falls alle Primfaktoren von z in F(B) liegen, also ≤ B sind. Wir bestimmen nun die DLen aller Primzahlen in der Faktorbasis, also für jedes q ∈ F(B) ein xq mit q = g xq mod p. 62 KAPITEL 3. DIFFIE UND HELLMAN Um dann den DL von a zu berechnen, suchen wir einen Exponenten y, so dass a · g y B-glatt ist. Dann ist a · gy = Y q eq = q∈F (B) =g a = g( q∈F (B) P g xq ·eq q∈F (B) q∈F (B) xq ·eq Also ist der DL von a zur Basis g gleich ( Y mod p, xq ·eq )−y q∈F (B) mod p. xq · eq ) − y (mod p − 1). Zurück zur Bestimmung der DLen der Faktorbasiselemente. Dazu berechnet man g z für viele Zahlen z und merkt sich diejenigen, die B-glatt sind. Hat man viele solche Zahlen gefunden, kann man die DLen der Faktorbasiselemente berechnen. Beispiel 3.40. Wir demonstrieren die Methode für p = 2027, g = 2 und B = 11. Nach langem Probieren finden wir z.B. z gz 1593 33 983 385 1318 1408 293 63 1918 1600 in F(B) 3 · 11 5 · 7 · 11 27 · 11 32 · 7 2 6 · 52 Wir suchen Zahlen x2 , x3 , x5 , x7 , x11 , so dass 2 = 2x2 , 3 = 2x3 , 5 = 2x5 , 7 = 2x7 , 11 = 2x11 mod 2027 Also (wieder modulo 2027) 21593 = 3 · 11 = (2x3 ) · (2x11 ) = 2x3 +x11 2983 = 5 · 7 · 11 = (2x5 ) · (2x7 ) · (2x11 ) = 2x5 +x7 +x11 21318 = 27 · 11 = (2x2 )7 · (2x11 ) = 27x2 +x11 2293 = 32 · 7 = (2x3 )2 · (2x7 ) = 22x3 +x7 21918 = 26 · 52 = (2x2 )6 · (2x5 )2 = 26x2 +2x5 3.9. BERECHNUNG DISKRETER LOGARITHMEN – DER INDEX CALCULUS ALGORITHMUS63 Es ergibt sich ein lineares Gleichungssystem (modulo p − 1 = 2026) 1593 = x3 + x4 983 = x5 + x7 + x11 1318 = 7x2 + x11 293 = 2x3 + x7 1918 = 6x2 + 2x5 Da 2026 = 2·1013 keine Primzahl ist, lässt sich das Gleichungssystem nicht einfach modulo 2026 lösen (Z2026 ist kein Körper). Man kann das Gleichungssystem aber modulo 2 und modulo 1013 lösen (Z2 und Z1013 sind Körper). Die Lösungen modulo 2 und 1013 lassen sich schließlich mit dem chinesischen Restsatz zu einer Lösung modulo 2026 kombinieren. Sehen wir uns das an. Modulo 2 ergibt sich (x2 = 1 ist klar) x3 + x11 = 1 x5 + x7 + x11 = 1 x2 + x11 = 0 x7 = 1 x2 = 1 Wir lösen das Gleichungssystem und erhalten x2 = x5 = x7 = x11 = 1, x3 = 0 (mod 2). Modulo 1013 ergibt sich x3 + x11 = 580 x5 + x7 + x11 = 983 7x2 + x11 = 305 2x3 + x7 = 293 6x2 + 2x5 = 905 x2 = 1 Wir lösen auch dieses Gleichungssystem und erhalten x2 = 1, x3 = 282, x5 = 956, x7 = 742, x11 = 298 (mod 1013). 64 KAPITEL 3. DIFFIE UND HELLMAN Mit dem chinesischen Restsatz erhalten wir x2 = 1, x3 = 282, x5 = 1969, x7 = 1755, x11 = 1311 (mod 2026). Nun können wir beliebige DL berechnen. Um den DL von 13 zur Basis 2 zu berechnen suchen wir (durch Probieren) nach einer Zahl y, so dass 13 · 2 y B-glatt ist. Wir finden 13 · 21397 = 2 · 5 · 11 mod 2027 13 = 2(1+1969+1311)−1397 = 21884 Der DL von 13 zur Basis 2 modulo 2027 ist also 1884. 3.10 Andere public-key Systeme Neben den public key Systemen, die auf dem DLP oder DHP beruhen, gibt es noch weitere. Im Folgenden beschreiben wir zwei Verfahren, die auf dem Knapsack-Problem beruhen. 3.10.1 Das Knapsack-Problem Sie steigen auf einen Berg und können höchstens Ckg Gepäck in Ihren Rucksack packen. Sie haben Gepäckstücke mit v1 , . . . , vk kg. Können Sie damit – und wenn ja dann wie – mit einer Auswahl aus diesen Gepäckstücken auf genau Ckg kommen? Mathematisch ausgedrückt: Knapsack-Problem Gegeben seien v1 , . . . , vk ∈ N und C ∈ N. Gesucht sind Zahlen d1 , . . . , dk ∈ {0, 1}, so dass C= k X i=1 falls es solche Zahlen gibt. di · v i , Dieses Problem ist im Allgemeinen sehr schwierig, man muss alle Möglichkeiten ausprobieren. Wenn die Gewichte vi allerdings besondere Eigenschaften besitzen, geht’s plötzlich ganz leicht. Beispiel 3.41. Die Gewichte seien 2, 3, 7, 15 und 31. Für C wählen wir 24. • 31 scheidet aus • 15 könnte passen. Weil alle kleineren zusammen weniger als 15 ausmachen, müssen wir es sogar auswählen, es bleiben 9kg 65 3.10. ANDERE PUBLIC-KEY SYSTEME • 7 könnte passen. Weil alle kleineren zusammen weniger als 7 ausmachen, müssen wir es auswählen, es bleiben 2kg • 3 ist zu viel und scheidet aus • 2 passt, und wir sind fertig: 24=2+7+15. Ist jedes Gewicht größer als die Summe aller kleineren Gewichte, so spricht man von einem superincreasing Knapsack-Problem. Wie das Beispiel zeigt, ist ein superincreasing Knapsack-Problem ganz leicht zu lösen. Auf dieser Beobachtung beruht das Merkle-HellmanKryptosystem. 3.10.2 Das Merkle-Hellman-Kryptosystem Alice wählt v1 , . . . , vk ∈ Z superincreasing und eine Zahl m > Pk i=1 vi . Weiters wählt sie eine Zahl a relativ prim zu m. Nun berechnet sie w 1 = a·v1 mod m, w2 = a·v2 mod m, usw. Der öffentliche Schlüssel von Alice ist nun (w1 , w2 , . . . , wk ). Schließlich berechnet Alice b = a −1 mod m. Ihr privater Schlüssel ist (b, m, v1 , . . . , vk ). Will Bob die Bitfolge (d1 , . . . , dk ) verschlüsseln, so berechnet er C= k X i=1 di · w i und schickt C an Alice. Will man die Nachricht entschlüsseln, steht man vor einem Knapsack-Problem, durch das modulare Multiplizieren ist das Problem nicht mehr superincreasing. Beispiel 3.42. Alice wählt (v1 , . . . , v5 ) = (2, 3, 7, 15, 31), m = 61 und a = 17. Sie berechnet b = 17−1 = 18 mod 61. Als public key ergibt sich w1 = 17 · 2 = 34 mod 61 w2 = 17 · 3 = 51 mod 61 w3 = 17 · 7 = 58 mod 61 w4 = 17 · 15 = 11 mod 61 w5 = 17 · 31 = 39 mod 61 Ihr öffentlicher Schlüssel ist (34, 51, 58, 11, 39). 66 KAPITEL 3. DIFFIE UND HELLMAN Alice berechnet C 0 = bC mod m und löst das superincreasing Problem mit v 1 , . . . , vk und C 0 . Sie erhält die richtige Lösung, denn C 0 = bC = b k X di wi = b i=1 k X di avi = ba i=1 k X i=1 di vi = k X di vi mod m i=1 Beispiel 3.43 (Fortsetzung). Bob will 01101 senden. Er berechnet C = 0 · 34 + 1 · 51 + 1 · 58 + 0 · 11 + 1 · 39 = 148 Alice berechnet daraus C 0 = 18 · 148 = 41 mod 61. Sie löst das superincreasing Problem 41 = 5 X di vi i=1 und erhält die Nachricht 01101. Im Jahr 1982 zeigte Shamir (lauter bekannte Namen!), wie man dieses System knacken kann. Das Knapsack-Problem, das ein Angreifer zu lösen hat, ist zwar nicht superincreasing, aber doch einfacher als ein allgemeines Knapsack-Problem, weil es mit einem superincreasing Problem verwandt“ ist. Das allgemeine Knapsack-Problem kann er nicht lösen. ” Die Shamir-Attacke lässt sich abwehren, indem man nicht nur einmal mit a modulo m multipliziert, sondern nacheinander mit a 1 modulo m1 , mit a2 modulo m2 , usw. Sonst bleibt das Verfahren aber gleich. Es ist jedoch wahrscheinlich, dass sich auch die Attacke entsprechend anpassen lässt. Daher ist das Merkle-Hellman-Verfahren zur Zeit nicht in Verwendung. 3.10.3 Das Chor-Rivest-Kryptosystem Ein anderes Verfahren, das ebenfalls auf dem Knapsack-Problem beruht, ist bislang ungebrochen, dafür aber etwas aufwändig. Vorgeschlagen wurde es 1988 von Chor und Rivest. Es wird ein endlicher Körper GF(q) = Zp (α) (also ist q = pn für ein passendes n) so gewählt, dass q − 1 nur kleine Primfaktoren besitzt. Alice sucht eine Primitivwurzel g in GF(q) und wählt zufällig eine ganze Zahl z. Weiters wählt sie ein k ∈ N, so dass k < p und k < n. Dann berechnet sie die Zahlen b 0 , . . . , bk−1 , so dass für alle j ∈ {0, . . . , k − 1} gilt α + j = g bj , also die DLen zur Basis g im Körper GF(q). Wenn q − 1 nur kleine Primfaktoren besitzt, ist das mit etwas Aufwand möglich, jedenfalls muss sie das aber nur ein einziges Mal tun. Schließlich wählt sie eine zufällige Permutation π der Zahlen 0, 1, . . . , k − 1. Alice berechnet für 0 ≤ j ≤ k − 1 die Zahlen vj = bπ(j) + z mod q − 1. Ihr public key ist (v0 , . . . , vk−1 ). 67 3.10. ANDERE PUBLIC-KEY SYSTEME Will Bob die Bitfolge (d0 , d1 , . . . , dk−1 ) verschlüsseln, so berechnet er C= k−1 X dj vj und j=0 C0 = k−1 X dj j=0 und schickt Alice C und C 0 . Bob muss hier also auch verraten, wie viele 1er in seiner Bitfolge vorkommen. Alice entschlüsselt, indem sie M = g C−zC 0 berechnet. Nun ist aber 0 g C−zC = g = k−1 j=0 k−1 Y j=0 dj vj −z k−1 j=0 g dj (vj −z) = dj k−1 Y j=0 =g k−1 j=0 (dj vj −zdj ) g dj bπ(j) = k−1 Y =g k−1 j=0 dj (vj −z) (α + π(j))dj . j=0 Alice braucht also nur M zu faktorisieren und kann d 0 , . . . , dk−1 ablesen. 68 KAPITEL 3. DIFFIE UND HELLMAN Kapitel 4 ElGamal Bisher haben wir uns auf ein Ziel der Kryptographie konzentriert, privacy, Verschl üsselung. In diesem Kapitel sehen wir uns die anderen Einsatzgebiete der Kryptographie an. 4.1 Hashfunktionen In diesem Abschnitt sei A eine Menge von Zeichen, genannt Alphabet. Oft ist A = {0, 1}, es könnte aber auch das Alphabet {A, . . . , Z, a, . . . , z} sein. Mit A ∗ bezeichnen wir die Menge aller beliebig langen Folgen von Zeichen aus dem Alphabet A, die wir auch als Wörter bezeichnen. Mit Am bezeichnen wir die Menge aller Wörter, die aus genau m Zeichen bestehen. Definition 4.1. Es sei A ein Alphabet und m > n ∈ N. Jede Funktion h : A ∗ → An heißt Hashfunktion. Jede Funktion h : A m → An heißt Kompressionsfunktion. Beim Wort Kompression darf man dabei nicht an Datenkompression denken. Bei Anwendung einer Kompressionsfunktion geht Information verloren. Definition 4.2. Es seien X und Y zwei beliebige Mengen. Eine Funktion h : X → Y heißt Einwegfunktion, wenn es praktisch unmöglich“ ist, zu einem beliebigen y ∈ Y ein ” x ∈ X zu finden, so dass y = h(x). Eine Kollision von h ist ein Paar (x1 , x2 ) von Elementen von X, so dass x1 6= x2 , aber h(x1 ) = h(x2 ). Hashfunktionen und Kompressionsfunktionen haben immer Kollisionen (warum?). 69 70 KAPITEL 4. ELGAMAL Die Funktion h heißt stark kollisionsresistent, wenn es praktisch unmöglich ist, eine Kollision von h zu finden. Die Funktion h heißt schwach kollisionsresistent, wenn es praktisch unmöglich ist, eine Kollision (x1 , x2 ) von h mit vorgegebenem x1 zu finden. Natürlich sind stark kollisionsresistente Funktionen auch schwach kollisionsresistent. Um gekehrt ist das nicht so. Stark kollisionsresistente Funktionen sind Einwegfunktionen. 4.1.1 Stark kollisionsresistente Kompressionsfunktionen Im Folgenden sehen wir, dass es stark kollisionsresistente Kompressionsfunktionen und Hashfunktionen tatsächlich gibt. Zunächst basteln wir eine Kompressionsfunktion, die so gebaut ist, dass, wer eine Kollision findet, auch diskrete Logarithmen berechnen kann. Sei p eine n-bit Primzahl, so dass auch q = p−1 2 eine Primzahl ist.1 Weiters sei a eine Primitivwurzel in Z∗p und b eine zufällig gewählte Zahl zwischen 1 und p − 1. Dann ist h : {0, . . . , q − 1} × {0, . . . , q − 1} → {1, . . . , p − 1} (α, β) 7→ aα bβ mod p eine Kompressionsfunktion von {0, 1} 2n−4 nach {0, 1}n (warum?). Beispiel 4.3. p = 83, q = 41, a = 13, b = 53. Hier ist n = 7, wir erhalten eine Kompressionsfunktion, die 10-bit-Zahlen in 6-bit-Zahlen komprimiert. Wir komprimieren 0110011010. Dazu wird die Bitfolge in zwei 5-bit-Zahlen zerlegt, nämlich in α = (01100)2 = 12 und β = (11010)2 = 26. Dann berechnen wir h(α, β) = 1312 ·5326 = 21 mod 83. Schließlich lässt sich 21 als 0010101 schreiben. Wir haben also 0110011010 zu 0010101 komprimiert. Wer eine Kollision von h finden kann, kann auch diskrete Logarithmen in Z ∗p berechnen. Sei (x1 , x2 ) eine Kollision von h und x1 = (α1 , β1 ), x2 = (α2 , β2 ). Dann ist 1 a α 1 b β1 = a α 2 b β2 mod p bzw. aα1 −α2 = bβ2 −β1 mod p Die Primzahl q nennt man in diesem Fall Sophie Germain Primzahl. 71 4.1. HASHFUNKTIONEN Da a eine Primitivwurzel ist, lässt sich b als b = ak schreiben. Wir zeigen nun, dass sich k mit Hilfe der Kollision berechnen lässt. aα1 −α2 = ak(β2 −β1 ) mod p α1 − α2 = k(β2 − β1 ) mod ϕ(p) = p − 1 = 2q Diese Gleichung hat eine Lösung, falls d := ggT(β2 − β1 , p − 1) ein Teiler von (α1 − α2 ) ist. | {z } =2q Es gibt dann genau d verschiedene Lösungen.2 Da β1 und β2 kleiner als q sind, ist auch |β2 − β1 | < q. Daher kann d nur 1 oder 2 sein. Ist d = 1, dann gibt es genau eine Lösung modulo p − 1, diese ist der DL k. Ist d = 2, dann gibt es 2 Lösungen. Durch Ausprobieren der beiden Lösungen findet man das richtige k. Somit ist der DL gefunden. Wählt man eine Primzahl p, so dass das DLP in Z ∗p schwierig ist, dann ist es zumindest ebenso schwierig, irgendeine Kollision von h zu finden. Remark 4.4. Praktisch finden diese Kompressionsfunktionen keine Verwendung, weil das Berechnen der Funktionswerte zu aufwändig wäre. 4.1.2 Von Kompressionsfunktionen zu Hashfunktionen Wir sehen uns jetzt eine Methode an, aus einer kollisionsresistenten Kompressionsfunktion eine kollisionsresistente Hashfunktion zu erzeugen. Sei g : {0, 1}m → {0, 1}n eine Kompressionsfunktion und r := m − n. Sei x ∈ {0, 1}∗ , also eine beliebig lange Bitfolge. 1. Zunächst werden vorne so viele Nullen angehängt, dass die Bitlänge durch r teilbar ist. Dann werden hinten r Nullen angehängt. 2. Jetzt wird die Binärdarstellung der Bitlänge des ursprünglichen x bestimmt und an diese hinten so viele Nullen angehängt, dass ihre Länge durch r − 1 teilbar ist. An den Anfang sowie an jeder r-ten folgenden Stelle wird eine 1 eingefügt. 3. Die zweite Bitfolge wird an die erste angehängt. 4. Die erhaltene Bitfolge wird in t Blöcke x1 , . . . , xt der Länge r zerlegt. Beispiel 4.5. r = 4, x = 100101101. 2 Erinnern Sie sich an Beispiel 2.20? 72 KAPITEL 4. ELGAMAL 1. Die Bitlänge von x ist 9. Wir müssen vorne 3 Nullen anhängen und erhalten 000100101101. Hinten werden 4 Nullen angehängt, das ergibt 0001001011010000. 2. Die Binärdarstellung von 9 ist 1001. Ihre Länge ist 4, wir müssen 2 Nullen anhängen, damit die Länge durch r − 1 = 3 teilbar ist, also erhalten wir 100100. Nun wird an der ersten und an jeder vierten folgenden Stelle eine 1 eingefügt, wir erhalten 11001100. 3. Die beiden Bitfolgen werden aneinander gehängt. Wir erhalten 000100101101000011001100. 4. Wir erhalten 6 Blöcke der Länge 4, nämlich 0001 0010 1101 0000 1100 1100. Der Hashwert wird nun iterativ berechnet: H0 := 00 . . . 0 (Länge n) Hi := g(Hi−1 ◦ xi ), 1 ≤ i ≤ t, wobei mit Hi−1 ◦ xi gemeint ist, dass die beiden Bitfolgen aneinander gehängt werden. Der Hashwert h(x) ist dann Ht . Von der so konstruierten Hashfunktion kann man zeigen (siehe [Buc99]), dass sie stark kollisionsresistent ist, falls g es ist. Damit haben wir eine stark kollisionsresistente Hashfunktion konstruiert. Praktisch begnügt man sich mit Funktionen, deren Kollisionsresistenz nur empirisch gesichert ist, die dafür aber viel schneller sind. Wichtige Beispiele sind MDx, RIPEMD-x und SHA-1. Ausführliche Beschreibungen finden Sie z.B. in [MvOV97] und [Sch96]. 4.2 Digitale Signaturen Alice will bei Bob’s Buchversand per email Bücher bestellen. Sie signiert ihre email digital. So eine Signatur soll drei wichtige Wünsche von Bob bzw. Alice erfüllen. 1. Bob soll sich davon überzeugen können, dass wirklich Alice die Bücher bestellt hat, und nicht irgendjemand anderer Alice einen Streich spielt. 4.2. DIGITALE SIGNATUREN 73 2. Alice will sicher sein, dass ihre email auf dem Weg zu Bob nicht geändert werden kann. 3. Bob will sich auf die email berufen können, wenn Alice plötzlich behauptet, sie hätte gar nichts bestellt. Die digitalen Signaturen, die wir uns ansehen, erfüllen alle diese Wünsche. 4.2.1 RSA-Signaturen Mit einem RSA-Schlüsselpaar lässt sich ein Signaturverfahren ganz einfach konstruieren. Alice besitzt einen privaten RSA-Schlüssel (n = p · q, d). Will Alice die Nachricht m signieren, so sendet sie m und zusätzlich s = md mod n. Nun kann Bob (und jeder andere, der Alice’s öffentlichen Schlüssel (n, e) besitzt) die Unterschrift überprüfen, indem er se mod n berechnet und das Ergebnis mit m vergleicht. Hat wirklich Alice unterschrieben, dann ist se = (md )e = mde = m mod n. Wer den privaten Schlüssel (n, d) nicht kennt, ist jedoch nicht in der Lage, s zu berechnen. Praktisch wird nicht die Nachricht m signiert, sondern nur ein Hashwert der Nachricht, also s = h(m)e mod n und der Empfänger vergleicht sd mod n mit h(m). Die verwendete Hashfunktion kann öffentlich vereinbart werden. Wie digitale Signaturen auszusehen haben, ist genau geregelt. In [MvOV97] finden Sie eine genaue Erläuterung. Um eine Signatur zu fälschen, könnte Eve eine Unterschrift von Alice verwenden, z.B. die Unterschrift zur Nachricht m. Dann wäre s = h(m)d mod n. Eve kennt d nicht, sie kann aber mit dieser Signatur als Alice alle Nachrichten unterschreiben, deren Hashwert der gleiche ist, wie der der Nachricht m. Sie kann also versuchen, eine Nachricht m 0 zu finden, so dass h(m0 ) = h(m). Wenn h aber auch nur schwach kollisionsresistent ist, wird es Eve nicht einmal gelingen, eine sinnlose Nachricht m 0 mit dem selben Hashwert zu finden. Eve könnte auch irgendeine Signatur s nehmen und sehen, ob sie eine Nachricht findet, so dass h(m) = s e mod n (denn dann wäre s = h(m)d mod n). Das ist aber, wie man sieht, auch nicht einfacher. 4.2.2 ElGamal Signaturen Diese Signaturvariante ist – wie der Name schon vermuten lässt – verwandt mit dem ElGamalVerschlüsselungsverfahren. Man nimmt an, dass es nötig ist, ein DLP zu lösen, um ElGamalSignaturen zu fälschen, bewiesen ist allerdings nichts. Zunächst wird eine kollisionsresistente Hashfunktion h öffentlich vereinbart. Nun wählt Alice eine große Primzahl p und eine Primitivwurzel g in Z ∗p , weiters eine zufällige Zahl a, so dass 2 ≤ a ≤ p − 1. Sie berechnet A = g a mod p und veröffentlicht ihren public-key (p, g, A). Die Zahl a hält sie geheim. 74 KAPITEL 4. ELGAMAL Um zu signieren, wählt Alice zufällig eine Zahl k, so dass 2 ≤ k ≤ p−1 und ggT(k, p−1) = 1. Dann berechnet sie die Signatur (r, s) der Nachricht m als r = gk s = k −1 (h(m) − ar) mod p, mod p − 1 Will Bob die Signatur überprüfen, so prüft er: 1. Ist 1 ≤ r ≤ p − 1? 2. Ist Ar · r s = g h(m) mod p? Attacken auf ElGamal Signaturen Eine gültige Unterschrift besteht beide Tests, denn Ar · r s = g ar · g ks = g ar+kk −1 (h(m)−ar) = g h(m) mod p Der scheinbar überflüssige Test, ob 1 ≤ r ≤ p − 1 ist, ist äußerst wichtig, denn macht man diesen Test nicht, dann ist es Eve möglich, eine beliebige Nachricht m 0 für Alice zu signieren, wenn sie nur eine einzige signierte Nachricht m von Alice kennt. Das geht so: Sei (r, s) Alice’s Signatur der Nachricht m. Angenommen h(m) ist relativ prim zu p − 1. Dann sei u := h(m0 ) · h(m)−1 s0 := su mod p − 1 mod p − 1 Weiters berechnet Eve mit Hilfe des chinesischen Restsatzes modulo p · (p − 1) eine Zahl r 0 , welche die Gleichungen r 0 = ru r0 = r mod p − 1 mod p und erfüllt. Nun ist (r 0 , s0 ) eine gültige Alice-Signatur von m0 , denn s = k −1 (h(m) − ar) mod p − 1, also ist h(m) = ar + ks mod p − 1. Somit ist r0 A ·r 0 0s 0 = Aru · r su = g aru · g ksu = g u(ar+ks) = g u·h(m) = g h(m ) . Den einfachen ersten Test besteht die gefälschte Signatur jedoch nicht, denn r 0 ≥ p: r0 = r mod p r 0 = ru 6= r mod p − 1, 75 4.3. ZERO-KNOWLEDGE-PROTOKOLLE denn u 6= 1 mod p − 1 (außer man fände eine Kollision von h). Also ist r 0 6= r, und daher muss r 0 ≥ p sein. Es ist nicht ratsam, sich Arbeit zu sparen, indem man jedes Mal das selbe k verwendet, denn werden zwei Nachrichten m1 und m2 mit dem selben k-Wert signiert, so lässt sich unter Umständen aus den beiden Signaturen (r, s 1 ) und (r, s2 ) das geheime a berechnen: Es ist s1 − s2 = k −1 (h(m1 ) − ar) − k −1 (h(m2 ) − ar) = k −1 (h(m1 ) − ar − h(m2 ) + ar) = k −1 (h(m1 ) − h(m2 )) mod p − 1 Falls s1 − s2 und p − 1 relativ prim sind, lässt sich s1 − s2 modulo p − 1 invertieren und man erhält k = (s1 − s2 )−1 (h(m1 ) − h(m2 )) mod p − 1. Andernfalls hat die Gleichung genau ggT(s 1 − s2 , p − 1) verschiedene Lösungen. Wenn dieser ggT nicht allzu groß ist, kann man alle Lösungen durchprobieren. Kennt man k, so lässt sich a berechnen aus s1 = k −1 (h(m1 ) − ar) ks1 = h(m1 ) − ar ar = h(m1 ) − ks1 mod p − 1 mod p − 1 mod p − 1. Falls r relativ prim zu p − 1 ist, so lässt sich a daraus direkt berechnen, ist ggT(r, p − 1) > 1, so gibt es wieder mehrere Lösungen, und man kann probieren. Die in der Praxis am meisten benutzte Variante des ElGamal-Signaturverfahrens ist der Digital Signature Algorithm (DSA), lesen Sie in [MvOV97] nach. 4.3 Zero-Knowledge-Protokolle Nichts wissen“ klingt erst einmal sehr gut, aber zu früh gefreut, eigentlich sollte es nichts ” ” verraten“ heißen. Jetzt aber von vorn. Alice weiß etwas, was Bob nicht weiß. Sie möchte ihn davon überzeugen, dass sie es weiß, sie möchte es ihm aber nicht verraten. Ein Zero-Knowledge-Protokoll ist ein Weg, das zu erreichen. Wir starten mit einem anschaulichen 76 KAPITEL 4. ELGAMAL Beispiel 4.6 (Landkarten bemalen). Es ist bei jeder Landkarte möglich, mit vier Farben die Länder so zu bemalen, dass benachbarte Länder niemals die gleiche Farbe haben. Mit drei Farben geht das nur manchmal und selbst dann ist es ein sehr schwieriges Problem. Alice hat es geschafft, und möchte es Bob beweisen, sie möchte ihm aber nicht verraten, wie sie es gemacht hat, schließlich hat sie sich lange damit herumgeplagt. Die beiden bauen einen Apparat. Es handelt sich um eine riesige Landkarte. In jedem Land sind 3 Lämpchen montiert, ein rotes, ein grünes und ein blaues. Alice kann in jedem Land entsprechend ihrer Bemalung einstellen, welches Lämpchen leuchten soll. Wenn Bob mit dem Finger auf eine Grenze der Landkarte tippt, so gehen in den angrenzenden Ländern die Lämpchen an, und er kann sich davon überzeugen, dass die Farben verschieden sind. Nachdem er auf eine Grenze getippt hat, drückt Alice schnell auf einen Knopf, der folgende Umstellungen auslöst: die Farben werden zufällig durchmischt, es wird z.B. rot zu blau, blau zu grün und grün zu rot (die Farben können aber auch zufällig unverändert bleiben), die Farben ändern sich aber in jedem Land gleich. Im nächsten Durchgang wird nun anstelle des roten ein blaues Lämpchen leuchten, und anstelle eines blauen ein grünes, wo auch immer Bob hintippt. Nun ist Bob wieder dran, er untersucht die nächste (oder noch einmal die selbe) Grenze, danach verstellt Alice wieder die Farben. Das geht so lange bis Bob davon überzeugt ist, dass Alice die Karte richtig bemalt hat. Bob erfährt dabei aber nicht, wie Alice die Karte bemalt hat. Jetzt wird’s etwas praktischer. Wir sehen uns ein Zero-Knowledge-Protokoll f ür das Wissen um den diskreten Logarithmus eines Elements einer Gruppe. Es sei (G, ·,−1 , 1) eine Gruppe großer Ordnung, b ein fixes Element großer Ordnung der Gruppe und y ein beliebiges Element der Gruppe. Alice will Bob davon überzeugen, dass sie den diskreten Logarithmus von y zur Basis b kennt, also jenes x, so dass y = b x . 1. Alice wählt zufällig eine Zahl e und schickt Bob B = b e . 2. Bob wirft eine Münze. (a) Bei Kopf muss Alice e bekannt geben und Bob überprüft, ob B = be ist. (b) Bei Zahl muss Alice x + e bekannt geben und Bob überprüft, ob y · B = bx+e ist. 3. Die Schritte (1) und (2) werden wiederholt, bis Bob überzeugt ist. 77 4.4. OBLIVIOUS TRANSFER CHANNELS Wenn Alice x nicht kennt, dann kann sie zweierlei tun. • Sie setzt auf Kopf, wählt ein e und schickt B = be . Fällt Kopf, kann sie einfach e schicken, und Bob ist zufrieden. Fällt aber Zahl, so muss sie x + e schicken und das kann sie nicht, wenn sie x nicht kennt. • Sie setzt auf Zahl, wählt ein e, schickt aber B = be · y −1 . Fällt Zahl, dann schickt sie e (statt x + e) und Bob überprüft y · B = bx+e und ist zufrieden. Fällt aber Kopf, steckt sie in der Klemme. In jeder Testrunde hat also Alice eine Chance von 50%, Bob zu betrügen, wenn sie den diskreten Logarithmus nicht kennt. Nach n Runden ist die Wahrscheinlichkeit, als L ügner alle Runden zu überstehen, nur mehr ( 12 )n . Umgekehrt erfährt Bob nichts über den diskreten Logarithmus x, weil er entweder e oder x + e aber nicht e erfährt. 4.4 Oblivious transfer channels Interaktive Beweise sind mühsam, weil immer auf die Antwort des anderen gewartet werden muss. Um aus den interaktiven Protokollen nicht-interaktive zu machen, bedient man sich eines oblivious transfer channels. Definition 4.7. Ein oblivious transfer channel von Alice zu Bob ist ein System, mit dem Alice Bob zwei (verschlüsselte) Pakete schicken kann, so dass die folgenden Forderungen erfüllt sind: 1. Bob kann genau eines der beiden Pakete entschlüsseln und lesen. 2. Alice weiß nicht, welches der beiden Pakete das ist. 3. Beide können sicher sein, dass (1) und (2) erfüllt sind. Wir studieren einen oblivious transfer channel, der auf dem DHP beruht. Zunächst wird ein endlicher Körper GF(q) vereinbart, in dem das DHP schwierig zu lösen ist, weiters eine Primitivwurzel b von GF(q) und ein Element C des Körpers, dessen DL zur Basis b nicht bekannt ist. Schließlich braucht man eine Funktion ψ : GF(q) → {0, 1} n . 1. Bob wählt ein x, so dass 0 < x < q − 1, und ein i ∈ {1, 2}. Er berechnet βi = b x , β3−i = C · b−x 78 KAPITEL 4. ELGAMAL Er gibt Alice seinen public-key (β1 , β2 ), hingegen hält er x und i geheim. Bob kennt x, den DL von βi zur Basis b. Würde er auch den DL x0 von β3−i zur Basis b 0 0 kennen, so wüsste er, dass bx+x = bx · bx = βi · β3 − i = bx · C · b−x = C. Also würde er den DL von C zur Basis b kennen. Da dieser nicht bekannt ist, kann Bob auch x 0 nicht kennen. 2. Alice hat zwei Pakete m1 und m2 . Nehmen wir an, beide Pakete sind Bitfolgen der Länge n. Sie wählt zufällig 0 < y1 , y2 < q − 1 und schickt Bob (a) ε1 = by1 (b) ε2 = by2 (c) α1 = ψ(β1y1 ) ⊕ m1 (d) α2 = ψ(β2y2 ) ⊕ m2 (dabei steht ⊕ für bitweises XOR). 3. Bob berechnet ψ(εxi ) ⊕ αi . Bob erhält im letzten Schritt tatsächlich mi , denn ψ(εxi ) ⊕ αi = ψ((byi )x ) ⊕ ψ(βiyi ) ⊕ mi = ψ((bx )yi ) ⊕ ψ(βiyi ) ⊕ mi = ψ(βiyi ) ⊕ ψ(βiyi ) ⊕ mi = mi Bob kann aber m3−i nicht entschlüsseln. Dazu müsste er y 0 3−i β3−i = (C · b−x )y3−i = (bx )y3−i = (by3−i )x 0 0 berechnen können. Er kennt aber nur bx = β3−i und by3−i = ε3−i , steht also vor einem DHP. Alice kennt i nicht, weiß also nicht, welches Paket Bob lesen kann. Sie kann sich aber davon überzeugen, dass er nicht beide Pakete lesen kann. Sie berechnet β 1 · β2 . Hat Bob seinen öffentlichen Schlüssel nicht verändert, so ergibt sich β1 · β2 = bx · C · b−x = C. Könnte Bob den DL von β1 und von β2 berechnen, so auch den von C, das geht aber nicht. Kapitel 5 Moore, Mealy und Vernam 5.1 Das Vernam One Time Pad Definition 5.1. Eine Strom-Chiffre verschlüsselt eine Bitfolge Bit für Bit (im Gegensatz zu Block-Chiffren). Das Vernam One Time Pad ist eine symmetrische Strom-Chiffre. Der Schlüssel ist eine zufällige Bitfolge (ki ). Die Bitfolge (mi ) wird verschlüsselt, indem man Bit für Bit, das Nachrichtenbit mit dem entsprechenden Schlüsselbit XOR-verknüpft, also ci = m i ⊕ k i . Um die verschlüsselte Folge (ci ) wieder zu entschlüsseln, berechnet man (wie beim Verschlüsseln) Mi = c i ⊕ k i . So einfach dieses Verfahren ist, so sicher ist es. Es handelt sich um eines der wenigen absolut sicheren Verschlüsselungsverfahren. Wer den Schlüssel nicht kennt, hat überhaupt keinen Hinweis auf den Klartext. Jede Bitfolge ist ein potentieller Klartext. Natürlich ist dieses Verfahren für Known-plaintext-Attacken anfällig; wer den Nachrichtentext kennt, kann den Schlüssel berechnen. Es muss also stets ein neuer Schlüssel verwendet werden. Dieser Schlüssel muss sicher ausgetauscht werden, und er ist mindestens so lang wie die Nachricht, die verschlüsselt werden soll. Für die absolute Sicherheit zahlt man hier also mit riesigem Aufwand zum Schlüsselaustausch. Um diesen Aufwand zu reduzieren, lässt man sich die zufällige Schlüsselbitfolge von einem PRNG erzeugen. Man braucht dann bloß die Parameter für den PRNG austauschen. Alice und Bob können dann beide mit ihren PRNGs die selbe zufällige Schlüsselbitfolge erzeugen. 79 80 KAPITEL 5. MOORE, MEALY UND VERNAM Der BBS-PRNG ist, wie wir gesehen haben, rechnerisch sehr aufwendig. Wir entwickeln in diesem Kapitel einen kleinen Teil der Theorie der Automaten, und verwenden diese, um schnelle PRNGs zu bauen“. ” 5.2 Automaten Ein Automat ist ein Quintupel (I, O, Z, δ, λ), bestehend aus einer Inputmenge I, einer Outputmenge O, einer Zustandsmenge Z, einer Zustandsüberführungsfunktion δ : Z × I → Z, und einer Outputfunktion λ : Z × I → O. Die Mengen und Funktionen sind dabei wie folgt zu interpretieren: • I ist die Menge aller möglichen Inputs in den Automaten. • Auf jeden Input reagiert der Automat mit einem Output. O ist die Menge aller möglichen Outputs des Automaten. • Der Output des Automaten hängt nicht nur vom Input ab, sondern auch vom Zustand, in dem sich Automat gerade befindet. Z ist die Menge aller möglichen Zustände des Automaten. • Befindet sich der Automat im Zustand z ∈ Z so reagiert er auf den Input i ∈ I mit dem Output λ(z, i) ∈ O • und wechselt in den Zustand δ(z, i) ∈ Z. Hängt der Output eines Automaten nur vom Zustand, aber nicht vom Input ab, so heißt der Automat auch Moore-Automat. Die Funktionen δ und λ können neben dem Zustand und dem Input auch vom Zufall abhängen. Man spricht in diesem Fall von einem nichtdeterministischen Automaten, andernfalls von einem deterministischen Automaten. Ein Automat (I, O, Z, δ, λ) heißt endlich oder Mealy-Automat, falls I, O und Z endliche Mengen sind. Verzichtet man auf die Outputmenge O und die Outputfunktion λ, so spricht man von einem Halbautomaten. Gern gibt man bei einem (Halb-)Automaten einen Anfangszustand z 0 ∈ Z an. Einfache Automaten mit nicht allzu großen Input- und Zustandsmengen lassen sich sehr schön grafisch veranschaulichen. Dazu zeichnet man für jeden Zustand einen kleinen Kreis. Wechselt der Automat beim Input i vom Zustand z in den Zustand z 0 und gibt dabei den Output o aus, so zeichnet man einen Pfeil vom Kreis z zum Kreis z 0 , den man mit i/o beschriftet. Beim Betrachten des nächsten Beispiels wird alles klar. 81 5.2. AUTOMATEN Beispiel 5.2. Als erstes Beispiel betrachten wir eine einfache Mausefalle. Die Mausefalle kann sich zwei Zuständen befinden, gespannt“ (G) oder nicht gespannt“ (N). Mögliche ” ” Inputs sind Maus tappt in die Falle“ (1) und Maus tappt nicht in die Falle“ (0). ” ” Üblicherweise hat eine Mausefalle keinen Output, es handelt sich also um einen Halbautomaten. Eine bessere Version der Mausefalle hat als Output 1, wenn soeben eine Maus gefangen wurde und sonst 0. Abbildung 5.1 stellt diesen Automaten dar. 1 0 1 1 G N 0 0 0 0 Abbildung 5.1: Die einfache Mausefalle Beispiel 5.3. Sieht man sich eine Mausefalle genauer an, kann man vier Zustände unterscheiden, je nachdem, ob Speck in der Falle ist oder nicht. Nun ergeben sich die Zustände SG: Speck ist in der Falle, die Falle ist gespannt SN: Speck ist in der Falle, die Falle ist nicht gespannt LG: Die Falle ist leer und gespannt LN: Die Falle ist leer und nicht gespannt Abbildung 5.2 zeigt diesen etwas komplizierteren Automaten. Um Automaten studieren zu können, interessiert man sich dafür, was der Automat macht, wenn man ihm eine Serie von Inputs schickt. Unter einer Folge von Inputs verstehen wir eine Folge i = i1 i2 . . . in , wobei ij ∈ I für 1 ≤ j ≤ n. Wir lassen als Inputfolge auch die leere“ ” Folge i = Λ (kein Input) zu. Mit I ∗ bezeichnen wir die Menge aller Inputfolgen. 1 1 Inputfolgen sind also die Wörter über dem Alphabet I, so klein ist die Welt der Mathematik. 82 KAPITEL 5. MOORE, MEALY UND VERNAM 0 0 LG 1 1 0 0 SG 0 0 LN 1 1 1 0 0 0 SN 0 0 Abbildung 5.2: Die Mausefalle mit Speck Wir erweitern die Zustandsüberführungsfunktion δ zu einer Funktion δ ∗ : Z × I ∗ → Z. Für z ∈ Z, i1 , . . . , in ∈ I definieren wir: δ ∗ (z, Λ) = z δ ∗ (z, i1 ) = δ(z, i1 ) δ ∗ (z, i1 . . . in ) = δ(δ ∗ (z, i1 . . . in−1 ), in ) Die Folge hz, δ ∗ (z, i1 ), δ ∗ (z, i1 i2 ), . . . , δ ∗ (z, i1 . . . in )i nennen wir die Zustandstrajektorie von z unter der Inputfolge i1 . . . in . Auf die gleiche Weise lässt sich die Outputfunktion λ zu einer Funktion λ ∗ : Z × I ∗ → O erweitern. λ∗ (z, Λ) = Λ λ∗ (z, i1 ) = λ(z, i1 ) λ∗ (z, i1 . . . in ) = λ(δ ∗ (z, i1 . . . in−1 ), in ) 5.2.1 Angewandte Automaten Eine klassische Anwendung von Automaten ist die Verwendung als Akzeptoren. Ein Akzeptor ist ein Automat mit zwei möglichen Outputs, akzeptiert“ (A) und nicht akzeptiert“ (N). ” ” Ist der Output A, so hat der Automat, die Inputfolge akzeptiert, sonst ist der Output N. 83 5.3. LINEAR FEEDBACK SHIFT REGISTERS Ein Akzeptor kann z.B. prüfen, ob ein Ausdruck syntaktisch korrekt ist. Wir sehen uns als Beispiel einen Automaten an, der prüft, ob der eingegebene Ausdruck richtig geklammert ist. Beispiel 5.4. Wir wählen Z = Z ∪ {π}, I ist der ASCII-Zeichensatz und O = {A, N }. Als Anfangszustand wählen wir z0 = 0. Dann definieren wir δ : Z×I →Z π z+1 (z, i) 7→ z − 1 π z λ: Z×I →Z A (z, i) 7→ N , falls z = π , falls z ∈ Z und i =( , falls z ∈ Z und z > 0und i =) , falls z ≤ 0 und i =) , falls i 6∈ {), (} , falls δ(z, i) = 0 , falls δ(z, i) 6= 0 Akzeptoren sind sozusagen ganz einfache Programme zur Syntaxanalyse. In Netzwerken werden Sie eingesetzt, um die Datenintegrität zu überprüfen. Bei hardwarenahen Protokollen können diese Automaten einfach gebaut oder in kleine Prozessoren gebrannt werden. Wir wenden uns der kryptologischen Anwendung von Automaten zu. 5.3 Linear feedback shift registers Eine spezielle Art von Automaten sind Schieberegister (Linear feedback shift registers, LFSRs). Definition 5.5. Ein LFSR ist ein Automat (I, O, Z, δ, λ), bei dem I = {1}, O = Z 2 und Z ein Vektorraum über dem Körper Z2 ist. Die Funktionen δ und λ hängen dann nicht mehr vom Input ab (LFSRs sind also Moore-Automaten). Sie sind von der Form λ((z1 , . . . , zn )T ) = z1 und δ(z) = A · z, 84 KAPITEL 5. MOORE, MEALY UND VERNAM wobei A eine sogenannte Begleitmatrix ist. Das ist eine Matrix von der Gestalt 0 1 0 0 ... 0 0 0 0 A= 0 .. . 0 0 1 0 ... 0 0 0 1 ... 0 0 .. . 0 .. . 0 .. . ... .. . 0 .. . 0 0 0 ... 0 0 0 0 .. . 1 an 1 a 2 a3 a4 . . . an−1 wobei a2 , . . . , an ∈ Z2 . Der Name LFSR erklärt sich von selbst, wenn man sich ansieht, was die Zustandsüberführungsfunktion aus dem Zustand z = (z 1 , . . . , zn )T macht. 0 1 0 0 ... 0 0 z2 z1 0 0 1 0 . . . 0 0 z2 z3 0 0 0 1 . . . 0 0 z3 z4 0 0 0 0 . . . z5 0 0 · z4 = .. .. .. .. .. . . .. .. .. . . . . . . . . . zn 0 1 zn−1 0 0 0 0 . . . z1 + a 2 z2 + a 3 z3 + . . . + a n zn zn 1 a2 a3 a4 . . . an−1 an Bei jedem Input wird der Zustandsvektor (eine Bitfolge) um eine Position verschoben, das Bit, das dabei hinausfällt, ist der Output. An der letzten Stelle wird ein linearer Feedback nachgeschoben. Ist A ein LFSR mit Begleitmatrix A, dann heißt das Polynom x n +a2 xn−1 +. . .+an x+1 ∈ Z2 [x] Verbindungspolynom (connection polynomial). Ein LFSR ist durch sein Verbindungs- polynom eindeutig bestimmt. Vereinbart man zusätzlich einen Anfangszustand z0 ∈ Z, so sind alle Outputs des LFSR schon bestimmt. Die Dimension des Vektorraums Z nennt man auch die Länge des LFSRs. Beispiel 5.6. Betrachten wir das LFSR mit dem Verbindungspolynom x 5 + x2 + 1. Das LFSR hat die Länge 5. Eine bequeme Art, ein LFSR zu zeichnen, wird in Abbildung 5.3 dargestellt. Wir vereinbaren als Anfangszustand z 0 = (1, 0, 0, 1, 1) ∈ Z52 . Das LFSR erzeugt dann die Outputfolge 1001101001000010101110 . . . 5.3. LINEAR FEEDBACK SHIFT REGISTERS 85 + z1 z2 z3 z4 z5 Abbildung 5.3: Das LFSR x5 + x2 + 1. Die Outputfolgen (oi ) (i ∈ N), die ein LFSR erzeugt sind periodisch, d.h. es gibt eine kleinste Zahl L, die Periode, so dass stets o i+L = oi . Ein LFSR der Länge n kann maximal 2n − 1 verschiedene Zustände annehmen. Daher ist die Periode eines LFSR der Länge n maximal 2n − 1. Ist die Periode gleich der maximal möglichen, so heißt das LFSR maximalperiodisch. Wir erinnern uns an Kapitel 3. Tatsächlich gilt Satz 5.7. Ein LFSR ist genau dann maximalperiodisch, wenn sein Verbindungspolynom maximalperiodisch ist. Wir können also aus Polynomen vom Grad n Bitfolgen mit der Periode 2 n − 1 erzeugen. Leider kann man aber mit Hilfe des Berlekamp-Massey-Algorithmus 2 aus 2n Bits der Bitfolge das Verbindungspolynom berechnen. Sobald man also 2n Bits des Schlüssels kennt, kennt man den gesamten Schlüssel. Um LFSRs als kryptographische Zufallszahlengeneratoren verwenden zu können, verschaltet man nun einfach mehrere LFSRs mit relativ primen Perioden. Beispiel 5.8. Ein Beispiel, wie es praktisch verwendet wird ist das folgende. Wir wählen 5 LFSRs R1 , . . . , R5 . Nun sei Ri (j) der j-te Output des LFSR Ri . Wir definieren die Funktion x , falls s = 0 f (x, y, s) = y , falls s = 1 Nun verwenden wir als j-ten Output O(j) = f (R1 (j), R2 (j), f (R3 (j), R4 (j), R5 (j))) ⊕ f (R4 (j), R3 (j), R5 (j)). Die so erzeugte Bitfolge besitzt eine sehr lange Periode und der Berlekamp-MasseyAlgorithmus ist nicht mehr direkt anwendbar. Dafür muss man sich auf 5 Verbindungspolynome einigen. 2 ein. Dieser Algorithmus ist in [MvOV97] im Kapitel 6 ausführlich beschrieben. Wir gehen nicht näher darauf 86 KAPITEL 5. MOORE, MEALY UND VERNAM Stromchiffren aus LFSRs bieten in der Regel nicht die Sicherheit, die andere Systeme bieten können. Es ist dafür aber sehr einfach, sie hardwaremäßig zu implementieren und sie sind ungeheuer schnell. Daher sind sie besonders für Anwendungen geeignet, in denen Geschwindigkeit besonders wichtig ist und die verschlüsselten Daten schnell ihre Wichtigkeit verlieren, so dass es keinen Sinn mehr macht, die Daten eine Stunde nach der Übertragung zu entschlüsseln. Kapitel 6 Koblitz und Miller In beinahe 30 Jahren RSA und DH haben sich das Faktorisierungsproblem und das DLP/DHP wie in den Jahrhunderten davor nicht vollständig lösen lassen. Allerdings werden immer mehr und bessere Methoden entwickelt, so dass es immer schwieriger wird, sichere Parameter f ür diese Verfahren zu finden. Beispiel 6.1. Für das RSA-Verfahren hat man zur Zeit wenigstens 1024 Bit lange starke Primzahlen zu wählen. Glücklicherweise geht das, weil auch das Finden (und Testen) von Primzahlen immer einfacher wird. Es bleibt jedoch das Problem, dass mit immer größeren Zahlen gerechnet werden muss, und das halbwegs schnell. Beispiel 6.2. Für DLP-verwandte Verfahren, bei denen als Gruppe Z ∗p verwendet wird, muss p ebenfalls wenigstens 1024 Bit lang sein. Auch hier muss man mit sehr großen Zahlen potenzieren, viel Aufwand. Das größte Problem dabei ist, dass die Gruppen Z ∗p und GF(q)∗ sehr gut erforscht sind und viel Struktur aufweisen. Das DLP lässt sich aber, wie wir gesehen haben, für jede Gruppe formulieren. Wir studieren in diesem Kapitel eine ganz andere Art von Gruppen, elliptische Kurven. 87 88 KAPITEL 6. KOBLITZ UND MILLER 6.1 Elliptische Kurven über R Definition 6.3. Es sei x3 + ax + b ∈ R[x] ein Polynom, so dass 4a3 + 27b2 6= 0. Mit O bezeichnen wir einen ausgezeichneten Punkt im Unendlichen“. Dann ist ” E = {(x, y) ∈ R2 | y 2 = x3 + ax + b} ∪ {O} eine elliptische Kurve (EC) über R. Der Einfachheit halber schreiben wir statt der EC nur die Gleichung. Abbildung 6.1 zeigt die Graphen verschiedener elliptischer Kurven über dem Körper R. Aus E lässt sich eine Gruppe machen. Das sehen wir uns jetzt an. Beispiel 6.4. Wir wählen E : y 2 = x3 − 36x. Die Punkte P = (−3, 9) und Q = (−2, 8) sind Punkte auf E, wovon man sich durch Einsetzen in die Gleichung schnell überzeugt. Wir legen durch P und Q eine Gerade g : y = kx + d Die Steigung k lässt sich schnell berechnen als k= 8−9 = −1. −2 − (−3) Setzt man nun P in g ein, so erhält man d = y − kx = 9 − (−1)(−3) = 6 Die Geradengleichung lautet also g : y = −x + 6 Wir schneiden g mit E: (−x + 6)2 = x3 − 36x x2 − 12x + 36 = x3 − 36x x3 − x2 − 24x − 36 = 0 Die entstehende Gleichung dritten Grades können wir leicht lösen, weil wir zwei Lösungen schon kennen (P und Q sind Schnittpunkte): x 1 = −3 und x2 = −2. 6.1. ELLIPTISCHE KURVEN ÜBER R -4 -3 -2 89 4 4 2 2 -1 1 2 3 -4 -3 -3 -2 -1 1 -2 -2 -4 -4 y 2 = x3 + x − 1 -4 -2 4 2 2 1 2 3 -4 -3 -2 -1 1 -2 -2 -4 -4 y 2 = x3 − x + 2 3 2 3 y 2 = x3 + x + 2 4 -1 2 y 2 = x3 − 3x Abbildung 6.1: Elliptische Kurven über R 90 KAPITEL 6. KOBLITZ UND MILLER 4 P*Q 2 Q -2 P -1 1 2 3 -2 P+Q -4 Abbildung 6.2: Addition der Punkte P und Q Wir dividieren x3 − x2 − 24x − 36 durch (x − x1 )(x − x2 ) = x2 + 5x + 6 und erhalten x − 6. Also ist x3 = 6. Auch der dritte Schnittpunkt liegt auf g, also ist y = −x + 6 = 0 Aus den zwei Punkten P und Q erhalten wir so einen dritten Punkt P ∗ Q = (6, 0). Beispiel 6.5. Wir wählen E : y 2 = x3 + 1 und den Punkt P = (2, 3) auf E. Wir legen in P die Tangente an E. Diese ist von der Form t : y = kx + d Die Steigung der Tangente in P ist gerade die Steigung von E in P . Diese lässt sich mit implizitem Differenzieren berechnen: 2y ẏ 0 = 3x2 y0 = 3x2 2y y 0 (x = 2, y = 3) = 2 6.1. ELLIPTISCHE KURVEN ÜBER R 91 Also ist k = 2. Wir setzen P in t ein und erhalten d = y − kx = 3 − 2 · 2 = −1. Wir schneiden t mit E (2x − 1)2 = x3 + 1 4x2 − 4x + 1 = x3 + 1 x3 − 4x2 + 4x = 0 Auch von dieser Gleichung dritten Grades kennen wir zwei Lösungen, denn die xKoordinate von P als Berührpunkt ist zweifache Lösung der Gleichung. Wir können also ohne Rest durch (x − 2)(x − 2) = x2 − 4x + 4 dividieren und erhalten x. Die dritte Lösung ist also x3 = 0. Die y-Koordinate ergibt sich durch Einsetzen in t. Wir erhalten y = 2x − 1 = −1 Aus einem Punkt P auf E erhalten wir einen Punkt P ∗ P = (0, −1) auf der EC. 4 P 2 P+P -2 -1 1 2 3 P*P -2 -4 Abbildung 6.3: Verdopplung von P 92 KAPITEL 6. KOBLITZ UND MILLER Remark 6.6. Man rechnet leicht nach, dass eine EC das Assoziativgesetz (P ∗ Q) ∗ R = P ∗ (Q ∗ R) nicht erfüllt, dass sich so also keine Gruppe aus einer EC machen lässt. Definition 6.7. Es sei E eine EC. Wir definieren: 1. −O = O und für jedes P ∈ E sei P + O = O + P = P . (Damit wird O zum neutralen Element.) 2. Ist P = (x, y), dann sei −P = (x, −y). 3. Ist Q = −P , dann sei P + Q = O. 4. P + P = 2P = −(P ∗ P ), wobei P ∗ P der andere Schnittpunkt der Tangente an E in P ist. (siehe Abb. 6.3) 5. Ist P 6= ±Q, dann sei P + Q = −(P ∗ Q), wobei P ∗ Q der dritte Schnittpunkt der Geraden durch P und Q mit E ist. (siehe Abb. 6.2) Damit wird aus einer EC eine Gruppe. Satz 6.8. Ist E eine EC, dann ist (E, +, −, O) eine abelsche Gruppe. Der Beweis, dass jetzt das Assoziativgesetz gilt, ist alles andere als einfach, und viel zu lang für uns. Wir begnügen uns mit einem Blick auf Abbildung 6.4. Für die Addition von Punkten auf EC lassen sich einfache Formeln angeben, die wir gleich herleiten werden. Lemma 6.9. Sind x1 , x2 , x3 Nullstellen des Polynoms x3 + Ax2 + Bx + C, dann gilt x1 + x2 + x3 = −A x1 · x2 · x3 = −C. und 6.1. ELLIPTISCHE KURVEN ÜBER R 93 Q*R 7.5 5 2.5 P+Q+R P -4 P*Q Q -2 2 4 P+Q R P*HQ+RL=HP+QL*R -2.5 -5 -7.5 Q+R Abbildung 6.4: Die Addition von Punkten auf EC ist assoziativ Definition 6.10. Es sei K ein Körper mit Einselement 1.1 Die kleinste positive ganze Zahl k, für die gilt k · 1 = 1| + 1 +{z. . . + 1} = 0, k mal nennen wir Charakteristik von K (char(K)). Falls es keine solche Zahl gibt, dann definieren wir char(K) = 0. Satz 6.11. Es sei K ein Körper mit char(K) 6= 2, 3. Weiters sei E : y 2 = x3 + ax + b eine EC und P = (x1 , y1 ) und Q = (x2 , y2 ) zwei Punkte auf E. Dann lassen sich die Koordinaten (x3 , y3 ) von R = P + Q nach folgenden Formeln berechnen. • Falls P = −Q, dann ist R = O. 94 KAPITEL 6. KOBLITZ UND MILLER • Falls P 6= Q, dann ist y2 − y 1 2 − x1 − x2 x3 = x2 − x 1 y2 − y 1 y3 = −y1 + (x1 − x3 ) x2 − x 1 (6.1) • Falls P = Q, dann ist 2 3x21 + a − 2x1 2y1 2 3x1 + a (x1 − x3 ) y3 = −y1 + 2y1 x3 = 6.2 (6.2) Elliptische Kurven über GF(q) Wir haben die Additionsformeln gleich für EC über (fast) beliebigen Körpern hergeleitet. Wir sehen uns jetzt EC über endlichen Körpern an. 6.2.1 Quadratwurzeln in endlichen Körpern Um einen Punkt auf einer EC über dem Körper GF(q) mit gegebener x-Koordinate zu berechnen, setzt man für x ein und berechnet dann y, indem man die Quadratwurzel zieht. Wir überlegen uns zumindest für die Körper Zp , wie man Quadratwurzeln zieht. Es sei p ∈ P. Um zu bestimmen, ob [a]p ein Quadrat in Zp ist, ob man also die Quadrat- wurzel daraus ziehen kann (wir werden das noch brauchen), bedient man sich des sogenannten Legendre-Symbols. Wir definieren: 0 a = 1 p −1 falls a ≡ 0 mod p falls a ein Quadrat modulo p ist sonst Das hilft noch nicht weiter, aber es gilt Satz 6.12. Für a, b ∈ Z und p, q ∈ P \ {2} gilt • p1 = 1, 6.2. ELLIPTISCHE KURVEN ÜBER GF(Q) • • • • a p = ab p 2 p q p = a mod p p 95 , a b p · p , = (−1)(p 2 −1)/8 , = (−1)(p−1)(q−1)/4 · p q . Damit lässt sich schnell entscheiden, ob man aus einer Zahl modulo p die Quadratwurzel ziehen kann. Der folgende nette Algorithmus zum Ziehen von Quadratwurzeln modulo p ist von Shanks. Alles was man dazu braucht ist eine Zahl n, die nicht Quadrat modulo p ist. Algorithmus 6.13 (Shanks). Es sei a ein Quadrat modulo p. Es ist die Quadratwurzel aus a zu ziehen. 1. Stelle p − 1 als 2α · s dar, wobei s ungerade ist. 2. Berechne b = ns mod p. 3. Berechne r = a(s+1)/2 mod p. 4. Berechne (r 2 /a)2 α−2 mod p. Das Ergebnis ist ±1. Ist das Ergebnis 1, dann setze j0 = 0, sonst setze j0 = 1. 5. Wiederhole die folgenden Schritte für k von 1 bis α − 2: (a) Es sei e die Zahl mit der Binärdarstellung (jk−1 jk−2 . . . j1 j0 )2 . (b) Berechne ((be r)2 /a)2 α−k−2 mod p. Das Ergebnis ist ±1. Ist das Ergebnis 1, dann setze jk = 0, sonst setze jk = 1. 6. Es sei e die Zahl mit der Binärdarstellung (jk jk−1 . . . j1 j0 )2 . Dann ist be r eine Quadratwurzel von a modulo p. 6.2.2 Der Satz von Hasse Wie viele Punkte liegen auf einer EC über einem endlichen Körper? 96 KAPITEL 6. KOBLITZ UND MILLER In GF(q) gibt es q verschiedene x-Koordinaten. Setzt man eine x-Koordinate in die Glei- chung der EC ein, und zieht die Quadratwurzel, so erhält man zwei y-Koordinaten, oder keine. Es gilt Lemma 6.14. Ist GF(q) ein Körper der Charakteristik 6= 2, dann sind genau Elemente von GF(q) Quadrate und aus den restlichen q−1 2 q+1 2 Elementen kann man keine Quadratwurzel ziehen. Also dürfen wir im Schnitt mit etwa q Punkten auf der EC rechnen. Tatsächlich gilt Satz 6.15 (Hasse). Es sei N die Anzahl der Punkte auf einer EC über GF(q). Dann ist √ √ (q + 1) − 2 q ≤ N ≤ (q + 1) + 2 q. (D.h. die Anzahl der Punkte auf der EC ist von der selben Größenordnung wie die √ Größe des Körpers, denn q hat nur halb so viele Stellen wie q.) Somit ist eine EC über GF(q) eine abelsche Gruppe, deren Ordnung in etwa q ist. Ausnahmsweise ist diese Gruppe einmal nicht zyklisch, so etwas wie Primitivwurzeln gibt es also nicht. Es gibt keine Formel, mit der sich die Ordnung dieser Gruppe berechnen ließe. Es gibt allerdings Algorithmen, so z.B. den Algorithmus von Schoof ([Sch85]) und zahlreiche Varianten davon. Um sichere Kryptographie mit EC zu treiben, sollte sichergestellt sein, dass die Ordnung der Gruppe einen großen Primfaktor besitzt. Wenn man eine EC wählt wird man also nicht um das (etwas mühsame) Berechnen der Ordnung herumkommen. Beispiel 6.16. Es sei p = x2 + 2 ein irreduzibles Polynom über Z5 und α eine Nullstelle von p. Dann ist Z5 (α) = Z5 [x]/p = GF(25) der endliche Körper mit 25 Elementen. Wir rechnen mit der EC E : y 2 = x3 + (α + 1)x + 4α + 3 über diesem Körper. Liegt der Punkt P = (2α, 2) auf E? Wir berechnen x3 + (α + 1)x + 4α + 3 für x = 2α und erhalten als Ergebnis 4. Dann berechnen wir y 2 für y = 2 und erhalten ebenfalls 4. Also liegt P auf E. 6.3. KRYPTOSYSTEME MIT ELLIPTISCHEN KURVEN 97 Wie lauten die Koordinaten von 3 · P ? Wir berechnen zunächst 2·P = P +P gemäß der Formel (6.2) und erhalten 2P = (2, 3α+1). Nun berechnen wir 3P = 2P + P gemäß der Formel (6.1) und erhalten 3P = (4, 3α + 3). 6.3 Kryptosysteme mit elliptischen Kurven Das DLP sieht für EC so aus: Gegeben E . . . EC über GF(q), P, Q ∈ E Gesucht k ∈ N, so dass k · P = Q, falls es so ein k gibt Zur Berechnung von k·P lässt sich wieder das Square-And-Multiply-Verfahren verwenden. Jetzt heißt square“ verdoppeln und multiply“ heißt addieren. ” ” In den Übungen sehen wir uns als Beispiel den DH-Key-Exchange mit EC an. Um das DLP in Z∗p schwierig zu machen, sollte p zumindest eine 1024-Bit Zahl sein. Um die gleiche Schwierigkeit beim DLP über EC zu bekommen, sollte die Ordnung der EC etwa eine 160-Bit Zahl sein, es sollte also eine EC über Zp sein, wobei p eine 160-Bit Zahl ist. Man kann also mit wesentlich kleineren Körpern rechnen und verliert nichts an Sicherheit. Noch ein paar Kleinigkeiten. Wie kommt man zu einer EC und einem Punkt 6= O darauf ? Zunächst wählt man einen endlichen Körper GF(q) der Charakteristik > 3. Dann wählt man zufällig x, y, a ∈ GF(q). Damit der Punkt (x, y) auf y 2 = x3 + ax + b liegt, wählt man b = y 2 − x3 − ax. Ist 4a3 + 27b2 6= 0, so hat man eine EC mit einem Punkt (x, y) darauf. Andernfalls wählt man neue x, y, a. Nun kann man die Ordnung der EC berechnen und gegebenenfalls ganz von vorne beginnen. Wie macht man aus einer Zahl m (der Nachricht) einen Punkt P m auf der EC E? 1. Wähle t ∈ N so groß, dass 2−t als Wahrscheinlichkeit, dass es nicht gelingt einen passenden Punkt zu finden, klein genug ist. (Praktisch wählt man t zwischen 30 und 50.) 2. Sind die möglichen Nachrichten als Zahlen zwischen 0 und M kodiert, so wähle eine EC über GF(q) = Zp (α), wobei q = pr > M · t ist. 3. Jedes Element a ∈ {0, 1, . . . , M · t} besitzt eine eindeutige Darstellung a → a0 + a1 p + a2 p2 + . . . + ar−1 pr−1 , 0 ≤ ai < p. 98 KAPITEL 6. KOBLITZ UND MILLER Wir stellen a als a → a0 + a1 α + a2 α2 + . . . + ar−1 αr−1 ∈ Zp (α) dar. 4. Um die Nachricht m (0 ≤ m < M ) zu einem Punkt auf der EC zu machen, stelle man nacheinander für j = 1, 2, . . . , t die Zahl m · t + j gemäß (3) als Element des endlichen Körpers dar. Dieses Element setze man für x in y 2 = x3 + ax + b ein und versuche die Quadratwurzel zu ziehen. Das gelingt mit Wahrscheinlichkeit 1/2. Hat man Erfolg, so hat man einen Punkt Pm gefunden. Andernfalls probiert man das nächste j. Somit hat man t Versuche und die Wahrscheinlichkeit, t mal zu scheitern ist nur ( 21 )t = 2−t . 5. Hat man umgekehrt einen Punkt auf der EC, dann nimmt man seine x-Koordinate. Diese ist von der Form x = a0 + a1 α + . . . + ar−1 αr−1 . Daraus macht man a = a0 + a1 p + . . . + ar−1 pr−1 Nun ist die ursprüngliche Nachricht m = b a−1 t c. 6.4 Faktorisieren mit elliptischen Kurven EC lassen sich auch verwenden, um große Zahlen zu faktorisieren. Wir sehen uns eine Methode von Lenstra an. Diese Methode beruht darauf, dass man Vielfache von Punkten auf einer EC über Zn berechnet. Da Zn kein Körper ist, geht das mit einer gewissen Wahrscheinlichkeit schief. Diese Wahrscheinlichkeit ist bei passenden Vielfachen sehr groß. Algorithmus 6.17 (Lenstra). Die Zahl n ist zu faktorisieren. 1. Wähle (zufällig) eine EC E : y 2 = x3 + ax + b über Zn und einen Punkt P = (x, y) auf E. 2. Wähle zwei natürliche Zahlen B und C. 3. Setze k= Y l αl , l≤B, l∈ wobei αl die größte ganze Zahl ist, für die lαl ≤ C ist. 6.4. FAKTORISIEREN MIT ELLIPTISCHEN KURVEN 99 4. Berechne k · P . Dabei muss modulo n invertiert werden (Nenner). Das funktioniert nicht, wenn der Nenner nicht relativ prim zu n ist. In diesem Fall berechnet der erweiterte Euklidsche Algorithmus einen Teiler von n. 5. Ist alles gut gegangen, wähle neue E und P . Beispiel 6.18. Will man eine 10-stellige Zahl n faktorisieren, wählt man etwa B = 20 und C = 100700. Dann ergibt sich k = 216 · 3 · 57 · 75 · 114 · 134 · 174 · 193 . Diese Faktorisierungsmethode ist in etwa so schnell wie das quadratische Sieb. Sie ist aber schneller, wenn n einen sehr kleinen Primfaktor besitzt. Außerdem haben wir gesehen, dass das quadratische Sieb einen sehr großen Speicherbedarf hat, es müssen ja riesige Gleichungssysteme gelöst werden. Dieses Problem hat diese Methode nicht. Schließlich kann man hier mehr Parameter wählen (B, C und E), natürlich kann man dann mit verschiedenen Parametern parallel an der Faktorisierung arbeiten. Die Faktorisierungsmethode mit EC hat gezeigt, dass das Faktorisierungsproblem noch lange nicht vollständig untersucht ist. Die relativ einfache Methode führt zu einem sehr schnellen Faktorisierungsalgorithmus (lediglich der Beweis, dass diese Methode wirklich eine schnelle Faktorisierungsmethode ist, ist sehr schwierig). So haben EC auch auf diesem Weg dazu geführt, dass mehr über Alternativen zu RSA nachgedacht wird. 100 KAPITEL 6. KOBLITZ UND MILLER Literaturverzeichnis [Bau95] F. Bauer. Entzifferte Geheimnisse. Springer, 1995. [BBS86] L. Blum, M. Blum, and M. Shub. A simple unpredictable pseudo-random number generator. SIAM J. Comput., 15(2), 1986. [Buc99] Johannes Buchmann. Einführung in die Kryptographie. Springer Verlag, 1999. [Bun92] Peter Bundschuh. Einführung in die Zahlentheorie. Springer-Verlag, Berlin, second edition, 1992. [Coh93] Henri Cohen. A course in computational algebraic number theory. Springer-Verlag, Berlin, 1993. [DH76] Whitfield Diffie and Martin E. Hellman. New directions in cryptography. IEEE Transactions on Information Theory, IT-22(6):644–654, 1976. [Gor85] John Gordon. Strong primes are easy to find. In Advances in cryptology (Paris, 1984), pages 216–223. Springer, Berlin, 1985. [Kah67] David Kahn. The Codebreakers. Macmillan Publishing Company, 1967. [Kob94] Neal Koblitz. A Course in Number Theory and Cryptography. Springer, 2nd edition, 1994. [LN84] Rudolf Lidl and Harald Niederreiter. Finite Fields, volume 20 of Encyclopedia of Mathematics and Its Applications. Addison–Wesley Pub Co, 1984. [MvOV97] A.J. book Menezes, of P.C. Applied van Ooorschot, Cryptography. and 1997. S.A. Vanstone. Online Hand- erhältlich auf http://www.cacr.math.uwaterloo.ca/hac/. [RSA77] R. L. Rivest, A. Shamir, and L. M. Adleman. A method for obtaining digital signatures and public-key cryptosystems. Technical Report MIT/LCS/TM-82, 1977. 101 102 [Sch85] LITERATURVERZEICHNIS R. Schoof. Elliptic curves over finite fields and the computation of square roots mod p. Math. Comp., 44:483–494, 1985. [Sch96] Bruce Schneier. Angewandte Kryptographie. Addison-Wesley, 1996. [Sin00] Simon Singh. Geheime Botschaften. Die Kunst der Verschlüsselung von der Antike bis in die Zeiten des Internet. dtv, 2000. [Wer02] Annette Werner. Elliptische Kurven in der Kryptographie. Springer, 2002.