Kryptographie F. Fontein, A.-L. Trautmann, U. Wagner 24. November 2012 Inhaltsverzeichnis 1 Einführung in die Kryptographie 1 2 Caesar-Chiffre 2 3 Substitutions-Chiffre 4 4 Vigenere-Verschlüsselung 6 5 Verschlüsseln ohne Schlüsselaustausch? 7 6 Modulorechnung 8 7 Modulorechnung etwas allgemeiner 9 8 Die Sätze von Fermat und Euler 10 9 Das RSA-Verfahren 12 10 Der Euklidische Algorithmus 16 11 Schnelles Potenzieren 20 1 Einführung in die Kryptographie Seitdem Menschen schreiben können, gibt es auch das Problem, dass Menschen Nachrichten verschicken wollen, ohne dass jemand anderes als der Empfänger die Nachricht lesen kann. Aber wie kann man sicher sein, dass z. B. der Postbote den verschickten Brief nicht lesen kann? Eine Möglichkeit ist, sich eine Geheimsprache auszudenken, die nur der Sender und der Empfänger kennen. 1 Die Wissenschaft, die sich damit befasst, nennt man Kryptographie. Dieses Wort ist aus den griechischen Wörtern krypto = geheim und graphie = Schreiben zusammengesetzt; es geht also um die Kunst des geheimen Schreibens. Das Prinzip eines Kryptosystems ist folgendermassen: Der Schreiber nimmt seine Nachricht (wir nennen das den Klartext“) und schreibt sie in einer Geheimsprache auf. ” Das nennt man auch eine Nachricht verschlüsseln oder chiffrieren. Der Empfänger erhält nun diesen Geheimtext und wendet einen Schlüssel an, um aus dem Geheimtext wieder den Klartext zu erhalten. Nehmen wir z. B. folgenden Schlüssel zum Chiffrieren: Klar A B C D E F G H I J Geheim 1 2 3 4 5 6 7 8 9 10 11 12 13 Klar O P Q R S T U V W X N K L Y M Z Geheim 14 15 16 17 18 19 20 21 22 23 24 25 26 Wenn also der Schreiber den Klartext Treffen um eins“ schicken will, schreibt er ” 20 18 5 6 6 5 14 — 21 13 — 5 9 14 19“. Ein —“ steht hierbei für ein Leerzeichen, ” ” um die einzelnen Wörter abzutrennen. Der Empfänger hat den gleichen Schlüssel und kann damit die Nachricht entschlüsseln. Aufgabe 1. Entschlüssle den Geheimtext 2 9 14 — 7 12 5 9 3 8 — 4 1“. ” Nun ist dieses Kryptosystem ziemlich leicht für andere Leute zu durchschauen, deshalb wollen wir uns nun mit etwas komplexeren Systemen beschäftigen. 2 Caesar-Chiffre Schon Kaiser Caesar benutzte ein Kryptosystem um seine Nachrichten für den Feind unleserlich zu machen. Es basierte auf einer Verschiebung des Alphabets um eine gewisse Anzahl Stellen. Wird das Alphabet zum Beispiel um 5 Stellen verschoben, werden die Buchstaben wie folgt ersetzt: a b c de f g h i j k l mn o p q r s t u v w x y z FGH I JKLMNOPQRSTUVWXYZABCDE Die Kleinbuchstaben stehen dabei für den Klartext, die Grossbuchstaben für den verschlüsselten Text. So verschlüsselt man zum Beispiel: d i e s o nn e s c h e i n t I NJ XTSSJ XHMJNSY Dabei ist natürlich wichtig, dass der Empfänger weiss, um wieviel Stellen das Alphabet verschoben wurde, damit er richtig entschlüsseln kann. Genauso wichtig ist aber auch, dass alle anderen den Schlüssel nicht kennen, damit niemand sonst den Klartext lesen kann. 2 Aufgabe 2. Schreibe den Schlüssel für eine Caesar-Chiffre, die das Alphabet um 8 Stellen verschiebt, auf. Entschlüssle dann den Geheimtext ACXMZ ” AIKPM“. Eine spezielle Art der Caesar-Chiffre ist die Verschiebung um 13 Stellen (dies wird auch Rot13“ genannt). Das Schöne an dieser speziellen Verschlüsselung ist, ” dass wenn man den Text zweimal verschlüsselt, wieder der originale Text hervorkommt. Es ist klar, dass diese Verschlüsselung nicht sicher ist, trotzdem wird sie manchmal benutzt, um zum Beispiel in Quizheften die Lösung zu verschlüsseln. Der Leser kann die Lösung dann ohne grossen Aufwand anschauen, sobald er glaubt das Quiz gelöst zu haben. Im Folgenden werden wir die Lösung zu einigen Aufgaben auch jeweils mit Rot13 verschlüsselt angeben. Damit du das nicht von Hand machen musst, kannst du Rot13 auf http://www.math.uzh.ch/aa/schule/ benutzen. Geh auf die Seite und spiele ein bisschen mit Rot13. Wie du siehst werden Zeichen, die nicht im 26 Buchstaben langen Standardalphabet vorkommen, ein zu eins verschlüsselt. Es ist klar, dass dieses System einfach um weitere Zeichen erweitert werden könnte. In unserem Fall ist das aber nicht wichtig. Da in den Lösungen auch Zahlen vorkommen können, verschlüsseln wir diese separat. Dazu verschieben wir jede Ziffer um fünf: Klar 0 1 2 3 4 5 6 7 8 9 Geheim 5 6 7 8 9 0 1 2 3 4 Wir nehmen hier die Verschiebung um fünf, damit auch bei den Zahlen zweimal in die gleiche Richtung verschieben das Original ergibt. Wir geben nun die Lösung zu obiger Aufgabe in Rot13: Lösung 2. Qn rf ahe 70 Zbrtyvpuxrvgra tvog qnf Nycunorg mh irefpuvrora, xnaa rva Natervsre nyyr 70 Zbrtyvpuxrvgra cebovrera ovf rva fvaaibyyre Grkg ragfgrug. Aufgabe 3. Überlege dir, wie man, selbst wenn man die Anzahl der Stellen, um die verschoben wird, nicht kennt, trotzdem die Geheimnachricht entschlüsseln kann. Finde den Klartext zum Geheimtext RCCV DVZEV ” VEKTYVE JTYNZDDVE RLW UVD JVV“. Lösung 3. Dre bree vzewrty rccv 71 Döxcztybvzkve ulitygifszvive. 3 Ein Kryptosystem zu knacken indem man alle Schlüssel durchprobiert, nennt man eine brute-force“-Attacke. Wir wissen jetzt also, dass die Caesar-Chiffre nicht ” sicher ist und wir noch bessere Verschlüsselungstechniken finden müssen, die gegen eine brute-force-Attacke sicher sind. 3 Substitutions-Chiffre Eine Verallgemeinerung der Caesar-Chiffre ist die Substitutions-Chiffre. Anstelle das Alphabet einfach um eine feste Anzahl Stellen zu verschieben, wird jedem Buchstaben ein anderer zugeordnet. Also zum Beispiel: a b c d e f g h i j k l m n o p q r s t u v w x y z XLM I AZWSJGBOVYCHTDQFNEURKP Damit wird unser Beispielsatz wie folgt verschlüsselt: di e s o n n e s c he i n t I JA QCYYA QMSAJYF Wiederum kannst du auf der Seite http://www.math.uzh.ch/aa/schule/ damit rumspielen. Aufgabe 4. Wieviele verschiedene Schlüssel sind möglich wenn wir nur die 26 Buchstaben des Standardalphabets durch Substitution verschlüsseln? Lösung 4. Jve unora 71 Ohpufgnora. Jve trura qre Ervur anpu. Shre ’n’ unora jve 71 Zbrtyvpuxrvgra, shre ’o’ qnaa ahe abpu 70 hfj. Nyfb fvaq rf nz Fpuyhff 71!-6, qn wrqre Ohpufgnor zvg fvpu fryore mh refrgmra nhftrfpuybffra jveq. Wie du siehst, gibt es viele verschiedene Schlüssel. Wir wollen nun berechnen ob die Anzahl Schlüssel ausreicht um gegen eine brute-force-Attacke resistent zu sein. Dazu machen wir zuerst ein paar Überlegungen, zu was heutige Computer fähig sind. Nehmen wir an, dass ein Computer einen 1-GHz-Pozessor hat. Das bedeutet dass der Prozessor 1’000’000’000 = 109 Zyklen pro Sekunde durchläuft. Nehmen wir weiter an, dass der Computer nur einen einzigen Zyklus braucht um einen Schlüssel zu überprüfen. Aufgabe 5. Berechne, wieviele Schlüssel dieser Computer ungefähr in einem Jahr probieren kann. Aufgabe 6. Berechne, wie lange der Computer ungefähr braucht um alle Schlüssel für N den Substitution Cipher durchzuprobieren. Benutze dabei dass N ! ≈ Ne wobei e ≈ 2.7. 4 Damit haben wir also gezeigt, dass ein brute-force-Angriff auf die SubstitutionsChiffre unmöglich ist. Trotzdem kann man auch diese Chiffre leicht knacken, wie wir jetzt sehen werden. Aufgabe 7. Nimm dir ein bisschen Zeit und überlege dir, wieso das sein könnte. Als kleiner Tipp: Was wir schreiben ist nicht zufällig! Wie du vielleicht herausgefunden hast, kommen in einem deutschen Text nicht alle Buchstaben gleich häufig vor. Hier eine Tabelle mit der Häufigkeit der Buchstaben in einem durchschnittlichen deutschsprachigen Text: Buchstabe Häufigkeit Buchstabe Häufigkeit a 6,51% n 9,78% b 1,89% o 2,51% c 3,06% p 0,29% d 5,08% q 0,02% e 17,40% r 7,00% f 1,66% s 7,27% g 3,01% t 6,15% h 4,76% u 4,35% i 7,55% v 0,67% j 0,27% w 1,89% k 1,21% x 0,03% l 3,44% y 0,04% m 2,53% z 1,13% Aufgabe 8. Geh auf http://www.math.uzh.ch/aa/schule/ und kopiere einen Text (z. B. einen Text aus einer Online-Zeitung) in das entsprechende Feld. Sind die Buchstabenhäufigkeiten so verteilt, wie in der obigen Tabelle angegeben? Probiere verschiedene Texte aus. Daraus kann man schliessen, dass der Buchstabe, der in einem Geheimtext am häufigsten vorkommt, mit grosser Wahrscheinlichkeit den Klartextbuchstaben e“ ” darstellt usw. Ausserdem kann man noch folgende Tricks gebrauchen: • Nach einem c“ kommt wahrscheinlich ein h“ oder ein k“. ” ” ” • Nach sc“ kommt wahrscheinlich ein h“. ” ” • Es gibt nur wenige Wörter, die zwei Buchstaben haben, z. B. in, im, an, am, ” um“. 5 • Jedes Wort hat mindestens einen Vokal. Schwieriger wird es dabei, wenn alle Leer- und Sonderzeichen aus dem Text entfernt wurden. Dann kann man z. B. die beiden letzten Punkte nicht mehr benutzen. In folgender Aufgabe werden die Sonderzeichen ignoriert, die Leerzeichen zur Vereinfachung der Aufgabe aber beibehalten. Aufgabe 9. Probiere nun folgenden Text zu entschlüsseln: CID JGKJGX CID LZGNIDRIZN ZBN ZG CID BHOLIZR QWG BHOGIIKJFF MIXFIZNIN LWDCIG CZIBID OZIFN JSK CID JFYIGGWDCBIZNI LJIODIGC CID XJGRIG GJHON JSK OISNI MZB ZG CZI GZICIDSGXIG JG LZI PINIWGILB OISNI PWDXIG PZNNIZFNI Kopiere den Text dazu in das Feld http://www.math.uzh.ch/aa/schule/ und versuche, mit der Häufigkeitsanalyse und anderen Tricks den Klarext zu finden. Tipp: Das Wort Schnee“ kommt im Text vor. ” Lösung 9. QRE NASNAT QRE JVAGREMRVG VFG VA QRE FPUJRVM IBA FPUARRSNYY ORTYRVGRG JBEQRA QVRFRE UVRYG NHS QRE NYCRAABEQFRVGR JNRUERAQ QRE TNAMRA ANPUG NHS URHGR OVF VA QVR AVRQREHATRA NA JVR ZRGRBARJF URHGR ZBETRA ZVGGRVYGR. 4 Vigenere-Verschlüsselung Der Hauptgrund für die Schwäche der Substitution-Chiffre ist, dass derselbe Buchstabe im Klartext auch immer derselbe Buchstabe im verschlüsselten Text ist. Es handelt sich um eine sogenannt ’mono-alphabetische Substitution’. Eine polyalphabetische Substitution umgeht dieses Problem. Aufgabe 10. Lies den entsprechenden Artikel auf Wikipedia durch: http://de.wikipedia.org/wiki/Polyalphabetische_Substitution. Aufgabe 11. Dechiffriere die Geheimnachricht Fuabeey iol wss Hhhsnnss“ mit dem ” Schlüssel Autobahn“ in der normalen Vigenere-Verschlüsselung. ” Lösung 11. Snuaqre ibe qre Unhfghre. 6 5 Verschlüsseln ohne Schlüsselaustausch? Stell dir vor, du hast einen Brieffreund in Australien. Du möchtest ihm nun etwas Geheimes schreiben, was niemand anders wissen soll – weder deine Eltern, die den Brief zur Post bringen, noch der Postbote, noch die Eltern von deinem Brieffreund, die den Brief entgegennehmen und deinem Brieffreund geben. Wir haben bereits gesehen, wie man das machen kann wenn man vorher einen geheimen Schlüssel“ ” austauscht. Aber was, wenn ihr das nicht einfach machen könnt? Da Australien nicht gerade um die Ecke liegt, hattet ihr vielleicht nie eine Gelegenheit, eurem Brieffreund etwas zukommen zu lassen mit der Gewissheit, dass wirklich niemand zwischendurch – seien es Eltern oder Postboten – diese Information abfangen konnte. Es gibt jedoch eine Möglichkeit, wie man trotzdem etwas geheimes austauschen kann: 1. Du nimmst ein Schloss, zu welchem nur du einen Schlüssel hast. Du legst die geheime Nachricht in eine Kiste und verschliesst diese mit deinem Schloss so, dass niemand sie öffnen kann ohne sie zu zerstören. 2. Dann schickst du die Kiste per Post an deinen Brieffreund. 3. Dein Brieffreund kann die Kiste nicht öffnen – dein Schloss ist ja dran –, aber er kann die Kiste nochmal abschliessen mit seinem eigenen Schloss, zu dem nur er einen Schlüssel hat. 4. Die nun doppelt abgeschlossene Kiste schickt er per Post an dich zurück. 5. Du schliesst nun dein Schloss mit deinem Schlüssel auf. Sein Schloss ist immer noch an der Kiste, womit diese weiterhin verschlossen ist. 6. Nun schickst du die Kiste per Post zurück an den Brieffreund. 7. Dieser öffnet nun sein Schloss mit seinem Schlüssel und kann die Kiste schliesslich öffnen. Aufgabe 12. Überlege dir, warum dies funktioniert. Aufgabe 13. Überlege dir, wie der neugierige Postbote trotzdem den Inhalt der Kiste sehen kann, ohne dass ihr etwas bemerkt. Wir wollen später das RSA-Verfahren vorstellen. Es war das erste Verfahren, welches eine Verschlüsselung ohne vorherigen Austausch eines geheimen Schlüssels ermöglicht. Um das Verfahren zu beschreiben, benötigen wir jedoch etwas mehr Mathematik. Wir werden im Folgenden Modulo-Rechnung beschreiben (Abschnitte 6 und 7) und anschliessend zwei Sätze aus der Zahlentheorie (Abschnitt 8). Damit können wir dann das RSA-Verfahren beschreiben und erklären (Abschnitt 9). Um das RSA-Verfahren besser anwenden zu können, werden wir danach in zwei weiteren Abschnitten (10 und 11) zwei weitere mathematische Tricks“ untersu” chen. 7 6 Modulorechnung Wenn es 15 Uhr ist und man drei Stunden wartet, so ist es 15 + 3 = 18 Uhr. Wenn es jedoch 23 Uhr ist und man drei Stunden wartet, sagt man zur Uhrzeit nicht 23 + 3 = 26 Uhr, sondern 2 Uhr: man zieht 24 ab, um eine Stundenzahl zwischen 0 und 23 zu bekommen. Wenn es wieder 15 Uhr ist und man wartet zehn mal 13 Stunden, wie spät ist es dann? Dazu rechnet man 15 + 10 · 13 = 145; wieder ist 145 viel zu gross. Um die Uhrzeit zu bestimmen, zieht man solange 24 von 145 ab, bis man eine Zahl zwischen 0 und 23 erhält: 145−24 = 121, 121−24 = 97, 97−24 = 73, 73−24 = 49, 49 − 24 = 25, 25 − 24 = 1. Die gesuchte Uhrzeit ist also 1 Uhr morgens. Da wir sechsmal 24 subtrahiert haben, sind also 6 Tage vergangen. Man kann dies auch so ausdrücken: 145 = 6 · 24 + 1. Aufgabe 14. Wenn ich acht mal 15 Stunden warte und es vorher 13 Uhr ist, wie spät ist es dann? Wenn man mit Stunden rechnet, so kann man zu zwei Stundenzahlen x und y testen ob sie die gleiche Uhrzeit beschreiben (eventuell an verschiedenen Tagen), indem man schaut, ob ihre Differenz ein Vielfaches von 24 ist. Falls sie die gleiche Uhrzeit beschreiben, so schreiben wir x ≡ y (mod 24). Dieses Symbol ≡“ verhält sich nun ähnlich wie das Gleichheitszeichen. Wie ” oben haben wir 26 ≡ 2 (mod 24). Wenn man nun elf mal 26 Stunden wartet, sind das 286 Stunden. Wartet man dagegen elf mal zwei Stunden, so sind dies 22 Stunden. Nun gilt 286−22 = 264 = 24·11. Ob man also elf mal 2 Stunden wartet oder elf mal 26 Stunden, die Uhrzeit zum Zielpunkt ist beide Male identisch, nur das man bei elf mal 26 Stunden noch elf weitere Tage wartet. Formal ausgedrückt: es ist 11 · 26 ≡ 11 · 2 (mod 24). Anstelle 11 hätten wir jede andere ganze Zahl verwenden können. Dies kann man allerdings auch noch weiter treiben. Etwa gilt 11 ≡ 35 (mod 24), und wenn man 11 · 26 = 286 und 35 · 2 = 70 berechnet, so sieht man, dass deren Differenz 286 − 70 = 216 = 9 · 24 ebenfalls durch 24 teilbar ist. Es gilt also auch 11 · 26 ≡ 35 · 2 (mod 24). Aufgabe 15. Versuche formal zu zeigen: gilt x ≡ y (mod 24) und a ≡ b (mod 24), so gilt auch xa ≡ yb (mod 24). Hinweis: schreibe yb − xa als Vielfaches von 24. Hierbei kannst du verwenden, dass y −x und b−a Vielfache von 24 sind, etwa y −x = 24·C und b − a = 24 · D mit ganzen Zahlen C und D. Dies gilt allgemeiner und kann sehr praktisch sein: möchte man z. B. wissen, wie spät es ist, wenn man 123 mal 49 Stunden wartet, und es jetzt gerade 15 Uhr ist, so kann man wie folgt vorgehen. Es ist 123 − 5 · 24 = 123 − 120 = 3 und 49 = 2 · 24 + 1, womit 123 ≡ 3 (mod 24) und 49 ≡ 1 (mod 24) ist. Nun wissen wir 123 · 49 ≡ 3 · 1 8 (mod 24), womit die Stundenzahl bei 123 × 49 Stunden sich um genau 3 Stunden vorschiebt. Nach 123 mal 49 Stunden warten ist es also 15 + 3 = 18 Uhr. Hätten wir direkter gerechnet, also zuerst 123 · 49 ausgerechnet und dann eine Division mit Rest durch 24 gemacht, um die Anzahl der Tage und Stunden zu bestimmen, hätten wir mit grösseren Zahlen rechnen müssen. Was ohne Taschenrechner etwas mühsam ist. Aufgabe 16. Wenn es jetzt 13 Uhr ist und wir 24005 mal 35 Stunden warten, wie spät ist es dann? 7 Modulorechnung etwas allgemeiner Wenn n eine positive natürliche Zahl ist, haben wir folgende Rechenregeln für unser Symbol ≡ (mod n): Seien a, b, c, d ganze Zahlen mit a ≡ b (mod n) und c ≡ d (mod n), so ist auch 1. a + c ≡ b + d (mod n) und 2. a · c ≡ b · d (mod n). Weiterhin gilt ac ≡ bc (mod n). Allerdings gilt nicht unbedingt ac ≡ bd (mod n)! Aufgabe 17. Finde ein Gegenbeispiel: Sei n = 3. Dann gilt 1 ≡ 4 (mod 3). Suche nun eine ganze Zahl a mit a1 6≡ a4 (mod 3). Wir werden später noch eine wichtige Eigenschaft der Modulorechnung benötigen: wenn wir zwei ganze Zahlen a, b haben mit 0 ≤ a, b < n und a ≡ b (mod n), dann muss bereits a = b sein. Aufgabe 18. Begründe, warum dies so ist. Abschliessend noch ein kleiner Hinweis: die Verfahren aus den ersten Abschnitten, nämlich der Caesar-Cipher und die Vigenere-Verschlüsselung, lassen sich am einfachsten mit der Modulo-Rechnung darstellen: • Bei der Caesar-Verschlüsselung interpretiert man die Buchstaben von A bis Z als Zahlen 0 bis 25, und addiert beim Verschlüsseln zu jedem Buchstaben einen Wert und rechnet modulo 26. Beim Entschlüsseln wird dieser Wert abgezogen und wieder modulo 26 gerechnet. • Bei der Vigenere-Verschlüsselung fasst man den Klartext sowie das Passwort Zeichen für Zeichen als Zahl modulo 26 auf und addiert diese modulo 26 zusammen. 9 8 Die Sätze von Fermat und Euler Der französische Mathematiker Pierre de Fermat1 hat folgendes herausgefunden: Satz (von Fermat). Ist p eine Primzahl und a eine ganze Zahl, so ist p immer ein Teiler von ap − a. Mit unserer Modulo-Schreibweise kann man dies als ap ≡ a (mod p) schreiben. Aufgabe 19. Begründe im Fall p = 2, warum dies so ist. Dies hat eine interessante Konsequenz. Erinnert ihr euch noch, dass für ganze Zahlen a, b, c, d mit a ≡ b (mod n) und c ≡ d (mod n) nicht umbedingt ac ≡ bd (mod n) gilt? Ist nun n = p eine Primzahl und gilt a ≡ b (mod p) und c ≡ d (mod p − 1), so gilt ac ≡ bd (mod p)! Aber was, wenn n keine Primzahl ist? Eine allgemeine Lösung dieses Problems geht auf den schweizerischen Mathematiker Leonhard Euler2 zurück. Wir wollen die Lösung hier nur in einem Spezialfall anschauen, und zwar wenn n das Produkt zweier verschiedener Primzahlen ist, etwa n = 3 · 5 = 15. Dann gilt nämlich a(3−1)·(5−1)+1 ≡ a (mod 3 · 5). Weiterhin gilt: aus a ≡ b (mod 15) und c ≡ d (mod (3 − 1) · (5 − 1)), also c ≡ d (mod 8), folgt ac ≡ bd (mod 15). Es ist kein Zufall, dass wir a(3−1)·(5−1)+1 geschrieben haben bzw. c ≡ d (mod (3− 1) · (5 − 1)), und nicht direkt a8+1 , c ≡ d (mod 8) oder a9 . Die Zahl (3 − 1) · (5 − 1) hat eine spezielle Bedeutung in Bezug auf 15 = 3 · 5: Aufgabe 20. Prüfe nach, dass es genau 8 = (3 − 1) · (5 − 1) ganze Zahlen x mit 0 ≤ x < 15 gibt, die zu 15 teilerfremd sind. Um diesen Zusammenhang zu verstehen, muss man etwas in die Gruppentheorie gehen. Wir wollen dies heute nicht weiter vertiefen. 1 Fermat lebte Anfang des 17. Jahrhunderts und war Mathematiker und Jurist. Er hat durch Korrespondenz mit anderen Mathematikern diesen öfter Probleme vorgestellt, die er bereits angeblich gelöst hätte und diese dazu angetrieben, die Probleme selber zu lösen. In einigen Fällen kannte Fermat die Lösung selber nicht. Das beste Beispiel ist der sogenannte letzte/grosse Satz ” von Fermat“: für n ≥ 3 hat die Gleichung xn + y n = z n keine ganzzahligen Lösungen mit x · y · z 6= 0. Der erste korrekte Beweis wurde 1994 vom englischen Mathematiker Andrew Wiles vorgestellt und ist extrem kompliziert. Fermat selber hatte die Behauptung an den Rand in einem Buch gekritzelt mit der Bemerkung Ich habe hierfür einen wahrhaft wunderbaren ” Beweis gefunden, doch ist der Rand hier zu schmal, um ihn zu fassen.“ Vermutlich hatte Fermat entweder einen fehlerhaften Beweis oder höchstens einen Beweis für spezielle Werte von n. Der hier vorgestellte Satz von Fermat ist auch als kleiner Satz von Fermat“ bekannt. ” 2 Euler lebte Anfang des 18. Jahrhunderts und gehörte neben Carl Friedrich Gauß zu den bedeutesten Mathematikern überhaupt. Der erste überlieferte Beweis des obigen Satzes von Fermat stammt von Euler. 10 Für das Produkt zweier verschiedener Zahlen gilt der Satz von Euler: Satz (von Euler). Sind p und q zwei verschiedene Primzahlen, und ist a eine beliebige ganze Zahl, so gilt a1+(p−1)·(q−1) ≡ a (mod p · q). Auch die Aussage aus der letzten Aufgabe kann man verallgemeinern: Aufgabe 21. Versuche dies allgemein zu zeigen: sind p und q zwei verschiedene Primzahlen, so gibt es genau (p − 1) · (q − 1) Zahlen x mit 0 ≤ x < p · q, die teilerfremd zu p · q sind. Hinweis: Du kannst folgendes verwenden: ist eine Zahl n durch zwei andere Zahlen a und b teilbar, die beide teilerfremd zueinander sind, so ist n auch durch das Produkt a · b teilbar. (Vergewissere dich, dass es ohne die Teilerfremdheit nicht funktioniert.) Hinweis: Zähle die Zahlen x mit 0 ≤ x < p·q, welche (a) durch p teilbar sind, (b) durch q teilbar sind, und (c) durch p und q teilbar sind. Damit kannst du die Anzahl der solchigen Zahlen bestimmen, die weder durch p noch durch q teilbar sind. Damit es zu einer Zahl N so ein n > 1 gibt mit an ≡ a (mod N ) für alle ganzen Zahlen a benötigt man, dass N quadratfrei ist. Dies bedeutet, dass in der Primfaktorzerlegung von N keine Primzahl mehr als einmal vorkommt. Die Zahlen 3, 6, 10, 15 sind etwa quadratfrei, während 4, 12 und 16 nicht quadratfrei sind: es ist 4 = 22 , 12 = 22 · 3 und 16 = 24 . In jeder dieser Primfaktorzerlegungen kommt der Faktor 2 mehr als einmal vor. Man kann nun zeigen, dass es zu jedem quadratfreien N immer so ein n > 1 gibt, und zu jedem nicht quadratfreien N es nie so ein n > 1 gibt. Im einfachsen Fall N = 4 könnt ihr selber versuchen zu zeigen, dass es kein solches n > 1 gibt: Aufgabe 22. Sei p = q = 2. Finde eine Zahl a, so dass an ≡ a (mod 4) für kein n > 1 gilt. Wir wollen nun den Satz von Euler von oben für Produkte zweier verschiedener Primzahlen etwas verallgemeinern. Seien p und q zwei verschiedene Primzahlen. Der Satz von Euler besagt, dass dann für jede ganze Zahl a gilt a1+(p−1)·(q−1) ≡ a (mod p · q). Da a1+(p−1)·(q−1) = a · a(p−1)·(q−1) 11 ist, bedeutet dies also, dass man a mit a(p−1)·(q−1) multiplizieren kann, ohne etwas an dem Rest von a bei Division durch p · q zu ändern. Wir können es also auch mehrmals multiplizieren: so gilt a1+2·(p−1)·(q−1) = (a · a(p−1)·(q−1) ) · a(p−1)·(q−1) ≡ a · a(p−1)·(q−1) ≡ a (mod p · q) und genauso a ≡ a1+3·(p−1)·(q−1) ≡ a1+4·(p−1)·(q−1) ≡ · · · ≡ a1+k·(p−1)·(q−1) (mod p · q) für jede ganze Zahl k > 0. Wir werden später (in Abschnitt 11) sehen, wie man hohe Potenzen von einer Zahl modulo einer anderen schnell ausrechnen kann. Nun haben wir das Rüstzeug um eines der bekanntesten modernen Kryptosystemen zu besprechen. Es handelt sich dabei um das RSA-Verfahren. 9 Das RSA-Verfahren Ein sehr bedeutenes Verfahren aus der Kryptographie ist das RSA-Verfahren. Es wurde 1977 von den drei Mathematikern Ronald L. Rivest, Adi Shamir und Leonard Adleman entdeckt und beschrieben.3 Es ist eins der Systeme, die wir unbewusst im täglichen Leben verwenden, wenn wir im Internet unterwegs sind. Wir können nun erklären, wie das RSA-Verfahren funktioniert. Eine schematische Darstellung findet sich weiter unten in einem Kasten. Dazu nimmt man sich zwei verschiedene Primzahlen, nennen wir sie p und q. Mit N sei das Produkt p · q bezeichnet. Die Daten, die verschlüsselt werden, sowie die verschlüsselten Daten sind jeweils ganze Zahlen x mit 0 ≤ x < N . Neben N = p · q benötigen wir noch zwei weitere positive ganze Zahlen e und d. Diese sollen e · d ≡ 1 (mod (p − 1) · (q − 1)) erfüllen. Dies bedeutet, dass e · d − 1 ein Vielfaches von (p − 1) · (q − 1) ist; sei etwa e · d − 1 = k · (p − 1) · (q − 1). Wenn ihr weiter oben beim Ende von Abschnitt 8 nachschaut seht ihr, dass dann a1+k·(p−1)·(q−1) ≡ a (mod N ) für alle ganzen Zahlen a und alle ganzen positiven Zahlen k gilt. Daraus folgt (ae )d = aed = a1+k·(p−1)·(q−1) ≡ a (mod N ). Wir skizzieren das Verfahren anhand zweier Personen, genannt Alice und Bob. Alice findet solche Primzahlen p und q sowie die dazugehörigen Zahlen e und d. Sie berechnet N = p · q und veröffentlicht das Produkt N sowie die Zahl e. Die Zahlen p, q und d behält sie für sich. Als Beispiel nehmen wir p = 3 und q = 5; dann ist N = 15. Wenn p und q grosse Zahlen sind ist N ebenfalls gross, und es ist sehr schwer, die Primfaktorzerlegung (und damit p, q, oder auch (p − 1) · (q − 1)) zu bestimmen. 3 Erst später wurde bekannt, dass das Verfahren bereits 1973 dem britischen Geheimdienst GCHQ bekannt war. Es wurde dort von Clifford Cocks entdeckt. Jedoch durfte er es nicht veröffentlichen, und bis 1998 galt diese Entdeckung als top secret“. Erst dann wurde dies ” Veröffentlicht. 12 Damit weiss niemand ausser Alice, wie p und q und (p − 1) · (q − 1) aussehen, und welche Bedingung die geheime Zahl d, die Alice kennt, überhaupt erfüllen soll. Um das Beispiel fortzuführen, können wir e = d = 3 nehmen. Dann ist e · d = 9 ≡ 1 (mod (3 − 2) · (5 − 1)), da (3 − 2) · (5 − 1) = 8 ist. Aufgabe 23. Überlege dir, warum man p und q einfach direkt bestimmen kann, wenn man das Produkt N = p · q sowie das Produkt P := (p − 1) · (q − 1) kennt. Hier bedeutet einfach“, dass man dies mit einem Taschenrechner ma” chen kann, ohne eine Zahl in Primfaktoren zu zerlegen. Wenn Bob Alice nun eine Nachricht schicken möchte, stellt er die Nachricht zuerst als ganze Zahl x mit 0 ≤ x < N dar. Da er N kennt (die Zahlen N und e können in einem öffentlichen Verzeichnis stehen, ähnlich den weissen Seiten), kann er dies problemlos machen. Dann berechnet er xe (mod N ). Dies ist wieder eine Zahl, nennen wir sie y, mit 0 ≤ y < N . Diese Zahl schreibt er nun z. B. auf eine Postkarte und schickt diese an Alice. Hat Bob etwa x = 7 gewählt, so ist xe = 73 = 7 · 7 · 7 = 49 · 7 ≡ 4 · 7 = 28 ≡ 13 (mod 15). Damit verschickt Bob die Nachricht y = 13 per Postkarte. Aufgabe 24. Wenn x = 3 ist, was ist dann y? Alice nimmt diese Zahl y und berechnet y d (mod N ). Diese Zahl, nennen wir sie m, erfüllt wieder 0 ≤ m < N . Weiterhin ist m ≡ y d ≡ (xe )d ≡ x (mod N ), wobei (xe )d ≡ x (mod N ) wie oben gilt – dort stand a anstelle x. Damit gilt m ≡ x (mod N ). Da m und x beide Zahlen zwischen 0 und N sind, und bei Division durch N den gleichen Rest lassen, müssen sie aber gleich sein (vergleiche Aufgabe 18): es ist also m = x und somit kennt Alice den Wert x von Bob! In unserem Beispiel ist m ≡ y d = 133 = 13 · 13 · 13 = 169 · 13 ≡ 4 · 13 = 52 ≡ 7 (mod 15), womit m = 7 = x ist. Aufgabe 25. Sei y der Wert aus der letzten Aufgabe (mit x = 3). Zeige, dass m = 3 ist. Das RSA-Verfahren Schlüsselerzeugung: 13 1. Alice wählt zwei verschiedene grosse Primzahlen p und q. 2. Alice wählt eine zufällige ganze Zahl e mit 0 < e < (p − 1) · (q − 1), die teilerfremd zu (p − 1) · (q − 1) ist. 3. Alice findet eine ganze Zahl d mit 0 < d < (p − 1) · (q − 1), welche d · e ≡ 1 (mod (p − 1) · (q − 1)) erfüllt. 4. Alice veröffentlicht das Paar (N, e) mit N = p · q, und behält die Zahlen p, q und d für sich. Verschlüsseln: 1. Bob will eine ganze Zahl x mit 0 ≤ x < N verschlüsseln. 2. Er berechnet xe modulo N . 3. Das Ergebnis, eine Zahl y mit 0 ≤ y < N , schickt er an Alice. Entschlüsseln: 1. Alice nimmt die Zahl y von Bob. 2. Alice berechnet y d modulo N . 3. Das Ergebnis, eine Zahl m mit 0 ≤ x < N , ist dann gleich der Zahl x von Bob. Wenn irgendwer – etwa der Postbote – die Zahl y von der Postkarte abliest, so kennt er zwar N , e und y, aber nicht d und kann somit nicht m (und damit x) berechnen. Er kann die Nachricht von Bob also nicht lesen. Alice ist die einzige, die dies kann. In unseren Beispiel kann jeder schnell 15 in Primfaktoren zerlegen: da 15 = 3 · 5 ist, ist (3 − 1) · (5 − 1) = 8 und somit kann man zu e = 3 schnell d = 3 finden mit e · d ≡ 1 (mod 8). Wenn man jedoch grössere Zahlen verwendet, ist dies nicht mehr so einfach möglich. In der Praxis verwendet man für p und q Primzahlen mit 2512 < p, q < 2513 , womit 21024 < N < 21025 gilt. Die Zahl 21024 ist ausgeschrieben 309 Dezimalstellen lang: 179’769’313’486’231’590’772’930’519’078’902’473’361’797’697’894’230’657’ 273’430’081’157’732’675’805’500’963’132’708’477’322’407’536’021’120’113’ 879’871’393’357’658’789’768’814’416’622’492’847’430’639’474’124’377’767’ 893’424’865’485’276’302’219’601’246’094’119’453’082’952’085’005’768’838’ 150’682’342’462’881’473’913’110’540’827’237’163’350’510’684’586’298’239’ 947’245’938’479’716’304’835’356’329’624’224’137’216. (Dies ist eine Zahl, die wir auf sechs Zeilen aufteilen mussten, um sie nicht unlesbar klein zu schreiben.) Mit solch grossen Zahlen hat man als Mensch ziemliche Mühe, und auch mit den meisten Taschenrechnern kommt man nicht sehr weit, da Taschenrechner meist nur mit einer festen und vergleichsweise kleinen Anzahl Dezimalziffern arbeiten können. Computer jedoch können mit solchen Zahlen recht mühelos umgehen, sprich sie multiplizieren, addieren, subtrahieren und mit Rest dividieren. Wir werden in Abschnitt 11 ein Verfahren kennenlernen, mit dem ein 14 Computer damit auch schnell hohe Potenzen einer Zahl modulo einer anderen ausrechnen kann. Um das Verfahren nun in der Praxis umzusetzen, fehlen nur noch zwei Schritte: • Wie findet man grosse Primzahlen p und q? • Wenn man p und q hat, wie findet man dann entsprechende e und d? Das finden von so grossen Primzahlen ist recht einfach: man nimmt einfach eine passend grosse ungerade Zahl und schaut, ob sie eine Primzahl ist. Wenn nicht, addiert man zwei hinzu und schaut nochmal nach. Man wiederholt dies so lange, bis man eine Primzahl gefunden hat. Dies hört sich recht umständlich an. Jedoch ist es so, dass man meist nicht lange probieren muss. Ein wichtiges Resultat aus der Zahlentheorie ist, dass es zwischen 1 und n ungefähr logn n viele Primzahlen gibt (dies besagt der sogenannte Primzahlsatz). Dies bedeutet, dass man von einer Zahl n im Durchschnitt nur log n Zahlen der Reihe nach durchprobieren muss, um eine Primzahl zu finden. Da der Logarithmus einer grossen Zahl recht klein ist, muss man meist nicht oft probieren: es ist zum Beispiel log 2512 = 512 · log 2 ≈ 355, womit man nur ein paar hundert Zahlen probieren muss. Das ist von Hand sehr mühsam (wie überhaupt das Behandeln von so grossen Zahlen), jedoch für einen Computer kein grosses Problem. Dann muss man natürlich auch noch wissen, wie man bei einer solchen grossen Zahl schnell überprüfen kann, ob es sich wirklich um eine Primzahl handelt. Wir wollen das hier nicht vertiefen sondern nur erwähnen, dass dies tatsächlich sehr schnell geht. Testen, ob eine Zahl eine Primzahl ist, ist viel einfacher als eine Zahl in seine Primfaktoren zu zerlegen! Auch wenn es bei kleinen Zahlen ähnlich schwer (oder leicht, bei sehr kleinen Zahlen) erscheint, so ist es bei grossen Zahlen tatsächlich viel leichter. Aufgabe 26. Wieviele Primzahlen gibt es in etwa zwischen 1000 und 2000? Hinweis: log 1000 ≈ 6.9 und log 2000 ≈ 7.6 Nun angenommen wir haben p und q und somit N = p·q bestimmt. Wie finden wir nun e und d? Hierfür wählen wir eine der Zahlen zufällig – etwa e – und bestimmen ein passendes d. Man kann zeigen, dass es ein solches d genau dann gibt, wenn e und (p − 1) · (q − 1) teilerfremd sind. Dies testen und d berechnen, falls sie teilerfremd sind, kann man mit dem Euklidischen Algorithmus sehr effizient. Wir werden dies in Abschnitt 10 genauer untersuchen. Bei kleinen Zahlenbeispielen wie N = 3 · 5 = 15 und somit (p − 1) · (q − 1) = 8 kann man einfach alle Zahlen d = 0, 1, 2, . . . , 7 durchprobieren. Aufgabe 27. Versuche zu p = 7 und q = 13 ein passendes Paar (e, d) zu finden. 15 10 Der Euklidische Algorithmus Hat man zwei ganze Zahlen, zum Beispiel 18 und 60, so kann man den grössten gemeinsamen Teiler (ggT) von 18 und 60 etwa durch die Primfaktorzerlegung bestimmen: 18 = 21 · 32 · 50 , 60 = 22 · 31 · 51 und damit ist der grösste gemeinsame Teiler gleich 21 ·31 ·50 : der Exponent von 2 ist das Minimum aus 1 und 2, der Exponent von 3 ist das Minimum aus 2 und 1, und der Exponent von 5 ist das Minimum aus 0 und 1. Damit ist ggT(12, 18) = 2·3 = 6. Aber was jetzt, wenn wir den grössten gemeinsamen Teiler ggT(123456789, 543212345) bestimmen wollen? Wir können natürlich versuchen, zuerst eine Primfaktorzerlegung zu bestimmen. Man kann noch recht einfach 123456789 = 3 · 41152263 = 32 · 13717421 bestimmen, aber wie kann man 13717421 weiter zerlegen? Und es ist 543212345 = 5 · 108642469 = 5 · 13 · 8357113, aber weiter kommt man auch nicht so einfach. Nun hat der Mathematiker Euklid vor langer Zeit herausgefunden, wie man ganz einfach den grössten gemeinsamen Teiler von zwei solch grossen Zahlen bestimmen kann, ohne ihre Primfaktorzerlegung zu kennen. Ihm ist nämlich aufgefallen, dass ggT(a, b) = ggT(a − b, b) = ggT(a, b − a) ist. Wenn man immer die grössere Zahl von der kleineren abzieht, werden die Zahlen irgendwann so klein, dass man den grössten gemeinsamen Teiler ablesen kann. Damit ist ggT(a, b) = ggT(a, b − a) = ggT(a, b − 2 · a) = · · · = ggT(a, b − c · a) für jede natürliche Zahl c. Jetzt kann man wieder mit Divison mit Rest arbeiten: damit b − c · a möglichst klein werden soll, sollte b − c · a der Rest von b bei Division durch 16 a sein. = = = = = = = = = = = = = = = = ggT(123456789, 543212345) ggT(123456789, 543212345 − 4 · 123456789) = ggT(123456789, 49385189) ggT(123456789 − 2 · 49385189, 49385189) = ggT(24686411, 49385189) ggT(24686411, 49385189 − 2 · 24686411) = ggT(24686411, 12367) ggT(24686411 − 1996 · 12367, 12367) = ggT(1879, 12367) ggT(1879, 12367 − 6 · 1879) = ggT(1879, 1093) ggT(1879 − 1 · 1093, 1093) = ggT(786, 1093) ggT(786, 1093 − 1 · 786) = ggT(786, 307) ggT(786 − 2 · 307, 307) = ggT(172, 307) ggT(172, 307 − 1 · 172) = ggT(172, 135) ggT(172 − 1 · 135, 135) = ggT(37, 135) ggT(37, 135 − 3 · 37) = ggT(37, 24) ggT(37 − 1 · 24, 24) = ggT(13, 24) ggT(13, 24 − 1 · 13) = ggT(13, 11) ggT(13 − 1 · 11, 11) = ggT(2, 11) ggT(2, 11 − 5 · 2) = ggT(2, 1) ggT(2 − 2 · 1, 1) = ggT(0, 1). Nun ist der grösste gemeinsame Teiler von 0 und 1 gleich 1, womit ggT(123456789, 543212345) = 1 ist. Wir kennen zwar immer noch nicht die Primfaktorzerlegung der beiden Zahlen, aber wir wissen, dass sie teilerfremd sind, also dass von keiner Zahl > 1 beide Zahlen geteilt werden. Um den Schreibaufwand etwas zu reduzieren, schreibt man meist nur die Divi- 17 sionen mit Rest auf: Dividend Quotient ↓ ↓ 543212345 = 4 123456789 = 2 49385189 = 2 24686411 = 1996 12367 = 6 1879 = 1 1093 = 1 786 = 2 307 = 1 172 = 1 135 = 3 37 = 1 24 = 1 13 = 1 11 = 5 2=2 Divisor ↓ · 123456789 · 49385189 · 24686411 · 12367 · 1879 · 1093 · 786 · 307 · 172 · 135 · 37 · 24 · 13 · 11 ·2 ·1 Rest ↓ + 49385189 + 24686411 + 12367 + 1879 + 1093 + 786 + 307 + 172 + 135 + 37 + 24 + 13 + 11 +2 + 1 ← ggT + 0 ← Null In diesem Schema kann man gut erkennen, wie sich die Zahlen verschieben: aus Divisor wird Dividend und aus Rest Divisor. Der letzte Rest, der nicht 0 ist, ist der grösste gemeinsame Teiler des ersten Dividenden und Divisors. Die Quotienten die zwischendurch auftreten werden hier nicht gebraucht. Aufgabe 28. Bestimme ggT(123, 321) mit dieser Methode. Man kann allerdings die Quotienten aus dem euklidischen Algorithmus verwenden, um eine interessante Gleichung aufzustellen. Die vorletzten Gleichung, die letzte Division mit echtem Rest, hier 11 = 5 · 2 + 1, können wir nach dem grössten gemeinsamen Teiler, hier 1, umstellen: 1 = 11 − 5 · 2. In diese Gleichung können wir nun die vorvorletzte Gleichung, umgestellt nach 2, einsetzen: 1 = 11 − 5 · (13 − 1 · 11). Dies kann man zu 1 = 11 − 5 · 13 + 5 · 1 · 11 = 6 · 11 + (−1) · 13 vereinfachen. Hier kann man nun 24 = 1 · 13 + 11 aufgelöst nach 11 einsetzen, und schon hat man 1 in der Form x · 24 + y · 13 mit ganzen Zahlen x und y geschrieben. 18 Hiermit kann man immer weiter fortfahren, bis man schliesslich ggT(543212345, 123456789) = 1 = x̂ · 543212345 + ŷ · 123456789 herausbekommt. Eine solche Gleichung nennt man Bézout-Gleichung von 543212345 und 123456789. Mit dem euklidischen Algorithmus kann man also nicht nur den grössten gemeinsamen Teiler zweier ganzer Zahlen bestimmen, sondern ebenfalls eine BézoutGleichung. Aufgabe 29. Finde eine Bézout-Gleichung für ggT(123, 321). Nun zurück zum RSA-Verfahren. Dort haben wir für gegebenes (p − 1) · (q − 1) zwei ganze Zahlen d und e gesucht mit d · e ≡ 1 (mod (p − 1) · (q − 1)). Dies bedeutet gerade, dass es eine ganze Zahl c gibt mit d · e + c · (p − 1) · (q − 1) = 1. Dies sieht nach einer Bézout-Gleichung für e und (p − 1) · (q − 1) aus. Aufgabe 30. Angenommen, es gibt ein solches c. Zeige dann, dass e und (p−1)·(q −1) teilerfremd sind, und genauso dass d und (p − 1) · (q − 1) teilerfremd sind. Wenn man nun irgendeine ganze Zahl e wählt, die teilerfremd zu (p − 1) · (q − 1) ist, so kann man d wie folgt bestimmen. Mit dem euklidischen Algorithmus können wir Zahlen b und c finden mit 1 = ggT(e, (p − 1) · (q − 1)) = b · e + c · (p − 1) · (q − 1). Dies bedeutet aber wiederum 1≡b·e (mod (p − 1) · (q − 1)). Wir können nun d als die kleinste positive Zahl mit d ≡ b (mod (p − 1) · (q − 1)) wählen; in dem Fall gilt dann d·e≡b·e≡1 (mod (p − 1) · (q − 1)). In dem Beispiel aus dem letzten Abschnitt haben wir (p − 1) · (q − 1) = 8 und e = 3, also berechnen wir ggT(3, 8). Es ist 8 = 2 · 3 + 2, 3 = 1 · 2 + 1, 2 = 2 · 1 + 0. Damit ist ggT(3, 8) = 1 = 3 − 1 · 2 = 3 − 1 · (8 − 2 · 3) = 3 · 3 − 1 · 8 und somit 3·3≡1 (mod 8). 19 Aufgabe 31. Versuche zu p = 13, q = 17 und e = 31 ein passendes d zu finden. 11 Schnelles Potenzieren Möchte man 213 ausrechnen, so muss man 2·2·2·2·2·2·2·2·2·2·2·2·2 ausrechnen. Hat man nun einen Taschenrechner zur Verfügung, der zwar Multiplizieren kann, aber nicht exponentieren, so muss man zehn mal multiplizieren. Jedoch kann man 213 auch schneller ausrechnen. Es ist nämlich 213 = 212+1 = 212 · 2 = 26·2 · 2 = (26 )2 · 2 = (23·2 )2 · 2 = ((23 )2 )2 · 2 = ((2 · 2 · 2)2 )2 · 2. Man kann dies mit fünf Multiplikationen ausrechnen: 2 · 2 = 4 = 22 ; 4 · 2 = 8 = 23 ; 82 = 8 · 8 = 64 = (23 )2 = 26 ; 642 = 64 · 64 = 4096 = (26 )2 = 212 ; 4096 · 2 = 8192 = 212 · 2 = 213 . Der Grund ist hier, dass 13 = 1 + 12 = 1 + 2 · 2 · 3 = 1 + 2 · 2 · (1 + 1 + 1) ist. Aus dieser Darstellung kann man sofort ablesen, dass man fünf Multiplikationen benötigt: jede Addition und Verdoppelung (Multiplikation mit 2) im Exponenten entspricht einer Multiplikation. Ähnlich kann man vorgehen, wenn man 12344321 ausrechnen möchte. Da 4321 = 1 + 4320 = 1 + 2 · 2 · 2 · 2 · 2 · 135 = 1 + 2 · 2 · 2 · 2 · 2 · (1 + 2 · 67) = 1 + 2 · 2 · 2 · 2 · 2 · (1 + 2 · (1 + 2 · 33)) = 1 + 2 · 2 · 2 · 2 · 2 · (1 + 2 · (1 + 2 · (1 + 2 · 2 · 2 · 2 · 2))) = 1 + 2 · 2 · 2 · 2 · 2 · (1 + 2 · (1 + 2 · (1 + 2 · 2 · 2 · 2 · (1 + 1)))) ist, benötigt man 16 Multiplikationen, um dies auszurechnen. Das ist sehr wenig im Vergleich zu den 4320 Multiplikationen, die man mit der naiven“ Methode ” benötigt. Aus der Darstellung kann man auch direkt ablesen, wie man multiplizieren und quadrieren muss: 12344321 = (((((((((((1234 · 1234)2 )2 )2 )2 · 1234)2 · 1234)2 · 1234)2 )2 )2 )2 )2 · 1234 Nun ist die Zahl 12344321 jedoch sehr gross: genauer gesagt hat sie 13358 Dezimalstellen! Wenn ihr 100 Ziffern in einer Zeile schreibt, braucht ihr 134 Zeilen, um das Ergebnis vollständig aufschreiben zu können. Und die meisten Taschenrechner helfen hier auch nicht weiter, da sie nur mit ein paar Dezimalstellen arbeiten können. 20 Was ist, wenn wir nur an den letzten vier Dezimalstellen interessiert sind? Das bedeutet gerade, das wir 12344321 modulo 10000 wissen wollen. Dies können wir recht schnell mit einem normalen Taschenrechner bestimmen. Hierfür beachten wir die Rechenregeln für die Modulorechnung: sie besagen, dass man jede in der Rechnung auftretende Zahl um beliebige Vielfache von 10000 ändern kann, ohne die letzten vier Dezimalstellen des Ergebnisses zu ändern. Wenn wir nun 1234 · 1234 schriftlich von Hand ausrechnen, so haben wir 1234 · 1000 + 1234 · 200 + 1234 · 30 + 1234 · 4 = 1234000 + 246800 + 37020 + 4936. Da wir nur an den letzten vier Dezimalstellen interessiert sind, können wir 1234000 + 246800 + 37020 + 4936 ≡ 4000 + 6800 + 7020 + 4936 (mod 10000) verwenden: das Ergebnis ist 10800 + 11956 = 22756. Da wir wieder nur die letzten vier Dezimalstellen brauchen, bekommen wir 1234 · 1234 ≡ 2756 (mod 10000). (Das vollständige Ergebnis wäre 1522756.) Nun ist 2756 · 2756 ≡ 5536 (mod 10000), wie man mit dem Taschenrechner schnell herausfinden kann. Damit gilt (1234 · 1234)2 ≡ 5536 (mod 10000). Wir müssen noch drei mal quadrieren: 55362 ≡ 7296 (mod 10000), 72962 ≡ 1616 (mod 10000), 16162 ≡ 1456 (mod 10000). Damit haben wir ((((1234 · 1234)2 )2 )2 )2 ≡ 1456 (mod 10000). Hätten wir dieses Zwischenergebnis exakt ausgerechnet, also nicht modulo 10000, hätten wir 835’766’790’521’608’489’470’804’150’221’650’637’655’651’650’245’824’ 748’876’026’021’952’966’731’428’198’479’058’415’057’639’571’456 herausbekommen. (Da die Zahl zu lang für eine Zeile war, haben wir sie in der Mitte getrennt.) Wie man sehen kann, haben wir die letzten vier Dezimalstellen korrekt bestimmt, ohne mit solch riesigen Zahlen zu arbeiten! Bei den folgenden Aufgaben solltet ihr einen Taschenrechner verwenden: Aufgabe 32. Führe die Rechnung fort und bestimme die letzten vier Dezimalstellen von 12344321 . Aufgabe 33. Es sei der öffentliche RSA-Schlüssel N = 713 und e = 35 gegeben. Verschlüssle die Nachricht x = 42. 21