Automatentheorie und Kryptologie. Computer und Mediensicherheit, FHS Hagenberg



Ähnliche Dokumente
Primzahlen und RSA-Verschlüsselung

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

7 Rechnen mit Polynomen

11. Das RSA Verfahren und andere Verfahren

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

Lösungsvorschlag für die Probeklausuren und Klausuren zu Algebra für Informations- und Kommunikationstechniker bei Prof. Dr.

8. Quadratische Reste. Reziprozitätsgesetz

RSA-Verschlüsselung. Verfahren zur Erzeugung der beiden Schlüssel:

Kryptographie eine erste Ubersicht

Computeralgebra in der Lehre am Beispiel Kryptografie

Lenstras Algorithmus für Faktorisierung

Lineare Gleichungssysteme

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer

RSA Verfahren. Kapitel 7 p. 103

Grundlagen der Theoretischen Informatik, SoSe 2008

13. Lineare DGL höherer Ordnung. Eine DGL heißt von n-ter Ordnung, wenn Ableitungen y, y, y,... bis zur n-ten Ableitung y (n) darin vorkommen.

Gleichungen Lösen. Ein graphischer Blick auf Gleichungen

Informationsblatt Induktionsbeweis

10. Public-Key Kryptographie

1 Mathematische Grundlagen

Kryptographische Verfahren auf Basis des Diskreten Logarithmus

Der Zwei-Quadrate-Satz von Fermat

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

10. Kryptographie. Was ist Kryptographie?

Einführung in die Algebra

Das RSA-Verfahren. Armin Litzel. Proseminar Kryptographische Protokolle SS 2009

Mathematischer Vorbereitungskurs für Ökonomen

RSA-Verschlüsselung. von Johannes Becker Gießen 2006/2008

Fachschaft Mathematik und Informatik (FIM) LA I VORKURS. Herbstsemester gehalten von Harald Baum

IT-Sicherheitsmanagement. Teil 12: Asymmetrische Verschlüsselung

Repetitionsaufgaben Wurzelgleichungen

Zeichen bei Zahlen entschlüsseln

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Musterlösungen zur Linearen Algebra II Blatt 5

Public-Key-Algorithmen WS2015/2016

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Persönliche Zukunftsplanung mit Menschen, denen nicht zugetraut wird, dass sie für sich selbst sprechen können Von Susanne Göbel und Josef Ströbl

Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009)

Einführung in die verschlüsselte Kommunikation

Verschlüsselung. Kirchstraße 18 Steinfelderstraße Birkweiler Bad Bergzabern Fabian Simon Bfit09

Elliptische Kurven in der Kryptographie

Grundlagen der Verschlüsselung und Authentifizierung (2)

Die reellen Lösungen der kubischen Gleichung

KRYPTOLOGIE KRYPTOLOGIE

Skript und Aufgabensammlung Terme und Gleichungen Mathefritz Verlag Jörg Christmann Nur zum Privaten Gebrauch! Alle Rechte vorbehalten!

TECHNISCHE UNIVERSITÄT MÜNCHEN

6.2 Scan-Konvertierung (Scan Conversion)

Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema

Digitale Signaturen. Sven Tabbert

LU-Zerlegung. Zusätze zum Gelben Rechenbuch. Peter Furlan. Verlag Martina Furlan. Inhaltsverzeichnis. 1 Definitionen.

Elemente der Analysis I Kapitel 2: Einführung II, Gleichungen

Beweisbar sichere Verschlüsselung

Lineare Differentialgleichungen erster Ordnung erkennen

Alle Schlüssel-Karten (blaue Rückseite) werden den Schlüssel-Farben nach sortiert und in vier getrennte Stapel mit der Bildseite nach oben gelegt.

DLP. Adolphe Kankeu Tamghe ALZAGK SEMINAR. Bremen, den 18. Januar Fachbereich Mathematik und Informatik 1 / 27

Kap. 8: Speziell gewählte Kurven

Kryptographie Reine Mathematik in den Geheimdiensten

27. Algorithmus der Woche Public-Key-Kryptographie Verschlüsseln mit öffentlichen Schlüsseln

Modul Diskrete Mathematik WiSe 2011/12

Wir arbeiten mit Zufallszahlen

x 2 2x + = 3 + Es gibt genau ein x R mit ax + b = 0, denn es gilt

3.1. Die komplexen Zahlen

Verschlüsselung. Chiffrat. Eve

Von Cäsar bis RSA. Chiffrierung von der 1. bis zur 8. Klasse. Dr. Anita Dorfmayr Universität Wien. Lehrerfortbildungstag der ÖMG Wien, 13.

Teilbarkeit von natürlichen Zahlen

Das Leitbild vom Verein WIR

12 Kryptologie. ... immer wichtiger. Militär (Geheimhaltung) Telebanking, Elektronisches Geld E-Commerce

Kapitel 3: Etwas Informationstheorie

ONLINE-AKADEMIE. "Diplomierter NLP Anwender für Schule und Unterricht" Ziele

Quadratische Gleichungen

Lehreinheit E V2 Verschlüsselung mit symmetrischen Schlüsseln

Lineare Gleichungssysteme

V 2 B, C, D Drinks. Möglicher Lösungsweg a) Gleichungssystem: 300x y = x + 500y = 597,5 2x3 Matrix: Energydrink 0,7 Mineralwasser 0,775,

Anleitung über den Umgang mit Schildern

5. Übung zum G8-Vorkurs Mathematik (WiSe 2011/12)

1. Standortbestimmung

1 topologisches Sortieren

Zusatztutorium,

Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR)

Mathematik und Logik

Wichtige Forderungen für ein Bundes-Teilhabe-Gesetz

Vorkurs: Mathematik für Informatiker Steven Köhler, Anja Moldenhauer, Marcel Morisse

Kryptographie mit elliptischen Kurven

Was ist Mathematik? Eine Strukturwissenschaft, eine Geisteswissenschaft, aber keine Naturwissenschaft.

Beispiellösungen zu Blatt 111

Betragsgleichungen und die Methode der Fallunterscheidungen

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Einführung in die moderne Kryptographie

Lineare Gleichungssysteme

Das Mathematik-Abitur im Saarland

Kryptologie. Verschlüsselungstechniken von Cäsar bis heute. Arnulf May

Kreativ visualisieren

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Welche Lagen können zwei Geraden (im Raum) zueinander haben? Welche Lagen kann eine Gerade bezüglich einer Ebene im Raum einnehmen?

Bevor lineare Gleichungen gelöst werden, ein paar wichtige Begriffe, die im Zusammenhang von linearen Gleichungen oft auftauchen.

Güte von Tests. die Wahrscheinlichkeit für den Fehler 2. Art bei der Testentscheidung, nämlich. falsch ist. Darauf haben wir bereits im Kapitel über

Zahlenwinkel: Forscherkarte 1. alleine. Zahlenwinkel: Forschertipp 1

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

Geld Verdienen im Internet leicht gemacht

Konzepte der Informatik

Transkript:

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 Vigenère s chiffre indechiffrable......................... 2 1.3 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 2.8 Faktorisieren.................................... 26 2.8.1 Die Pollard-(p 1)-Methode....................... 26 2.8.2 Lineare Gleichungssysteme über endlichen Körpern........... 27 2.8.3 Das quadratische Sieb........................... 27 2.9 Zufallszahlen.................................... 30 2.9.1 Test auf Zufälligkeit............................ 30 2.9.2 Der BBS-Zufallszahlengenerator..................... 33 2.10 Erzeugung von Primzahlen............................ 34 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 39 3.1 Gruppen....................................... 39 3.1.1 Primitivwurzeln.............................. 42 3.2 Polynome...................................... 43 3.3 Polynome über Z p................................. 47 3.4 Shared Keys..................................... 48 3.4.1 Interpolation................................ 48 3.4.2 Chinesischer Restsatz........................... 50 3.5 Faktorisieren in Z p [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 3.9 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 4 ElGamal 69 4.1 Hashfunktionen................................... 69 4.1.1 Stark kollisionsresistente Kompressionsfunktionen............ 70 4.1.2 Von Kompressionsfunktionen zu Hashfunktionen............ 71 4.2 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 v 5 Moore, Mealy und Vernam 79 5.1 Das Vernam One Time Pad............................ 79 5.2 Automaten..................................... 80 5.2.1 Angewandte Automaten.......................... 82 5.3 Linear feedback shift registers........................... 83 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 5.3 Das LFSR x 5 + x 2 + 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 Fachhochschule 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 Ver- 1 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 folgenden 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 = {E k k K} ist die Menge der Verschlüsselungsfunktionen E k : P C. 5. D = {D k k K} ist die Menge der Entschlüsselungsfunktionen D k : C P. 6. Zu jedem e K gibt es ein d K, so dass für jeden Klartext p P gilt: D d (E e (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 = ±p e 1 1 pe 2 2 per r darstellen, wobei p 1, p 2,..., p r P, e 1, e 2,..., e r N und alle p i (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 1 also ist 240 = 2 4 3 5. Kennt man die Primfaktorzerlegung einer Zahl, so kennt man bereits alle Teiler. Satz 2.4. Es sei n = p e 1 1 per r die Primfaktorzerlegung von n Z. Dann sind die Teiler von n genau die Zahlen t = p t 1 1 p tr r, wobei t 1,..., t r N 0 und t 1 e 1,..., t r e r.

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 = 2 4 3 3 7 2 und b = 12600 = 2 3 3 2 5 2 7 ist ggt(a, b) = 2 3 3 2 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 III=I-II IV 21-1 2 IV=II-III V 7 5-9 V=III-4IV VI 0 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

2.2. FALSCH RECHNEN 11 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] k n := [a k ] 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

2.2. FALSCH RECHNEN 13 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 ] n und [b ] n schreiben, indem wir einfach irgendein anderes a n a und b n b wählen. Das Ergebnis wird dann [a + b ] n sein. Wenn nun [a + b] n [a + b ] 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, a, b Z, so dass a n a und b n b. Dann gilt 1. a + b n a + b, 2. a b n a b, 3. a b n a b und 4. a k n (a ) k. Rechnen modulo n heißt also rechnen mit Restklassen. Für die Menge der Restklassen modulo n schreiben wir ab sofort Z n, also ist Z n = {[0] n, [1] n,..., [n 1] n }. Die Elemente der Menge Z n sind Mengen, weil wir damit aber rechnen können, nennen wir sie auch Zahlen in Z n. 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] n [b] n = [c] n a b n c a b = c mod n [a] n [b] n = [c] n a b n c a b = c mod n [a] k n = [c] n a k n c a k = 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 x + 20 mod 26 beschreiben. Allgemein sind x 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 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 x + b y = c, bei der nun ggt(a, b ) = 1 gilt. Ab nun gehen wir davon aus, dass die Koeffizienten der Gleichung relativ prim zueinander sind.

2.3. DIOPHANTASTISCH 15 Mit dem erweiterten Euklidschen Algorithmus erhält man ganze Zahlen x 0, y 0, so dass gilt Wir multiplizieren (2.2) mit c und erhalten ax 0 + by 0 = 1 (2.2) a( x 0 c ) + b( y }{{} 0 c ) = c (2.3) }{{} =x 1 =y 1 Damit haben wir bereits eine Lösung (x 1, y 1 ) von (2.1) gefunden. Sei nun k Z und Setzt man (2.4) in (2.1) ein, so erhält man x = x 1 + bk, (2.4) y = y 1 ak. (2.5) a(x 1 + bk) + b(y 1 ak) = ax 1 + abk + by 1 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: x 1 = ( 95) 4681 = 444695 (2.9) y 1 = 69 4681 = 322989 (2.10) Nun sind alle ganzzahligen Lösungen gegeben durch x = 444695 + 274k (2.11) y = 322989 199k, 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? (2.13) Wir schreiben (2.13) um in eine echte Diophantische Gleichung ax + ny = b und lösen die Gleichung.

2.4. ENDLICHE KÖRPER 17 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? nicht (ohne Rest) berechnen. Wie sieht es mit den Rest- Beispiel 2.21. In Z lässt sich 5 6 klassen modulo n aus? n = 7: n = 11: [5] 7 [6] 7 = [2] 7, denn [6] 7 [2] 7 = [5] 7. [5] 11 [6] 11 = [10] 11, denn [6] 11 [10] 11 = [5] 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 Z n 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 Z p (p P) sind also Körper. Die Körper Z p sind außergewöhnlich, denn sie enthalten nur p verschiedene Elemente. Daher nennt man sie auch endliche Körper. Neben Z p 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. Beispiel 2.24. Die Kehrwerte modulo 5. [1] 1 5 = [1] 5, [2] 1 5 = [3] 5, [3] 1 5 = [2] 5, [4] 1 [4] 5. Damit lässt sich weiter rechnen: 3 4 = 3 1 4 = 3 4 = 2 mod 5. 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 19 17 12 I 17 1 0 II 12 0 1 III 5 1-1 III=I-II IV 2-2 3 IV=II-2III V 1 5-7 V=III-2IV VI 0 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 Z n 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 Eulersche ϕ Funktion. ϕ(n) = #{k Z 0 k < n und ggt(n, k) = 1}

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 ϕ(p d ) = p d 1 (p 1). 3. Sind m, n N und ggt(m, n) = 1, dann ist ϕ(m n) = ϕ(m) ϕ(n). 4. Ist n = p e 1 1 per r die Primfaktorzerlegung von n, dann ist ϕ(n) = n(1 1 p 1 ) (1 1 p r ). 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.

2.5. DAS RSA-VERSCHLÜSSELUNGSVERFAHREN 21 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 = m e 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) c d = (m e ) d = m ed = m 1+vϕ(n) wegen (2.14) = m m ϕ(n)v = m (m ϕ(n) ) v = m 1 v wegen Satz 2.28 = m 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 = 4 5 = 9 mod 35 und schickt Alice c = 9. Alice entschlüsselt m = c d = 9 5 = 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 Z 60, 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

2.6. DER CHINESISCHE RESTSATZ 23 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, n 2,..., n s paarweise relativ prime natürliche Zahlen. Weiters seien x 1, x 2,..., x s 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 = n 1 n 2 n s. Modulo n ist die Lösung des Restklassengleichungssystems eindeutig. 2. Berechne für i = 1,..., s die Zahlen q i := n n i 3. Jedes q i ist relativ prim zu n i (wieso?), und besitzt daher ein inverses Element modulo n i. Berechne für i = 1,..., s das inverse Element r i von q i modulo n i (mit dem erweiterten Euklidschen Algorithmus). 4. Berechne x = x 1 q 1 r 1 + x 2 q 2 r 2 + + x s q s r s mod n. Dieses x ist die eindeutige Lösung des Restklassengleichungssystems. Betrachten wir dazu die Gleichung modulo n i. Wir erhalten x = x 1 q }{{} 1 r 1 + + x i q i r i + + x }{{} s q s r }{{} s mod n i =0 =1 =0 = x i mod n i

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. n 1 = 3, n 2 = 4 und n 3 = 5, also ist n = 3 4 5 = 60. 2. q 1 = 20, q 2 = 15, q 3 = 12. 3. [q 1 ] 1 3 = [2] 1 3 = [2] 3, [q 2 ] 1 4 = [3] 1 4 = [3] 4 und [q 3 ] 1 5 = [2] 1 5 = [3] 5, also ist r 1 = 2, r 2 = 3 und r 3 = 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 c 1 = c e mod n, dann verschlüsselt man ein weiteres Mal und erhält c 2 = c e 1 = (c e ) e = c e2, usw. Angenommen, beim k-ten Mal erhält man wieder die ursprüngliche verschlüsselte Nachricht c, also c k = c. Dann muss c k 1 der Klartext gewesen sein, denn c = c k = c e k 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, e 1 ) und (n, e 2 ) (gleiches n) verschlüsselt, so kann die ursprüngliche Nachricht entschlüsselt werden, falls ggt(e 1, e 2 ) = 1 ist.

2.7. ATTACKEN AUF RSA 25 Nehmen wir an, die verschlüsselten Texte sind c 1 = m e 1 mod n und c 2 = m e 2 mod n. Dann berechnet man einfach ganze Zahlen a und b mit ae 1 + be 2 = 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(c 1, n) = 1, so kann man den Kehrwert c 1 von c 1 modulo n berechnen. Nun berechnet man (c 1 1 ) a (c 2 ) b mod n. Das Ergebnis ist (c 1 ) a (c 2 ) b = (m e 1 ) a (m e 2 ) b = m e 1a+e 2 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 (n 1, e), (n 2, e),... (n e, 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 n 1,..., n e 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 n 2 n e genau ein c, das diese Restklassengleichungen erfüllt. Für dieses c gilt also c = m e mod n 1 n 2 n e. Da m kleiner ist

26 KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN als jedes n i, ist m e kleiner als n 1 n 2 n e, also gilt c = m e. 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 c 1 = 60, c 2 = 203 und c 3 = 711. Mit dem chinesischen Restsatz erhält man daraus c = m k = 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: a p 1 = 1 mod p, also a E = a v(p 1) = (a p 1 ) v = 1 v = 1 mod p, d.h. p a E 1 Also ist a E 1 ein Vielfaches von p. Falls a E 1 kein Vielfaches von n ist, dann ist ggt(a E 1, n) ein echter Teiler von n.

2.8. FAKTORISIEREN 27 Wir brauchen also nur a E 1 modulo n zu berechnen und dann ggt(a E 1, n). (Warum reicht es hier, a E 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 = 2 3 3 2 5 7 11 13. Wir erhalten 2 E 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 Faktorisierungsmethode, 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 x 2 = y 2 mod n und (2.16) x ±y mod n (2.17)

28 KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN dann kennt man auch schon einen Teiler von n, denn n x 2 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 = n 1 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) = 55 2 3277 = 252 = ( 1) 2 2 3 2 7 f( 1) = 56 2 3277 = 141 = ( 1) 3 47 f(0) = 57 2 3277 = 28 = ( 1) 2 2 7 f(1) = 58 2 3277 = 87 = 3 29 f(2) = 59 2 3277 = 204 = 2 2 3 17 Daraus lesen wir (unter anderem) 55 2 3277 ( 1) 2 2 3 2 7 und 57 2 3277 ( 1) 2 2 7 Multipliziert man die beiden Gleichungen, so erhält man 55 2 57 2 = ( 1) 2 2 3 2 7 ( 1) 2 2 7 bzw. (55 57) 2 = ( 1) 2 2 4 3 2 7 2 = (2 2 3 7) 2 mod 3277 Wir wählen also x = 55 57 und y = 2 2 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 x die größte ganze Zahl, die kleiner oder gleich x ist.

2.8. FAKTORISIEREN 29 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) 2 2 3 2 7, ( 1) 4 47, ( 1) 2 2 7, 3 29 und 2 2 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 ( ( 1) 22 3 2 7 ) λ1 (( 1) 3 47) λ2 (( 1) 2 2 7 ) λ 3 (3 29) λ4 (2 2 3 17 ) λ 5 Wir sortieren das Ergebnis nach den Basen und erhalten ( 1) λ 1+λ 2 +λ3 2 2λ 1+2λ 3 +2λ5 3 2λ 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 Z 2, 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.