1 Grundlagen aus der Zahlentheorie

Ähnliche Dokumente
1 Grundlagen aus der Zahlentheorie

5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie

Seminar zum Thema Kryptographie

ggt mit Euklid Satz: Um ggt(k, l) mit dem Euklidischen Algorithmus zu berechnen, braucht man höchstens log Φ k < 3 2 log 2 k rekursive Aufrufe.

Oft kommt es darauf an, Potenzen a n mod m zu berechnen. Dabei kann n eine sehr groÿe Zahl sein.

Vorlesung Mathematik 2 für Informatik

Diskrete Mathematik 1

Der chinesische Restsatz mit Anwendung

Primzahlen. Herbert Koch Mathematisches Institut Universität Bonn Die Primfaktorzerlegung. a = st

Lösungen der Aufgaben

5 Grundlagen der Zahlentheorie

Probabilistische Primzahltests

3: Zahlentheorie / Primzahlen

Die Ringe Z n. Invertierbare Elemente ( Einheiten ) für n > 0 wird auf Z n = {0, 1, 2,..., n 1} definiert: n : Z n Z n Z n : (a, b) (a b) mod n

Kapitel 3 Elementare Zahletheorie

Schleifeninvarianten. Dezimal zu Binär

Lineare Algebra I 5. Tutorium Die Restklassenringe /n

Interim. Kapitel Einige formale Definitionen

Ganzzahlige Division mit Rest

1 Zahlentheorie. 1.1 Kongruenzen

Euklidische Algorithmus, Restklassenringe (Z m,, )

Kanonische Primfaktorzerlegung

3.5 Kryptographie - eine Anwendung der Kongruenzrechnung

Kapitel 3: Die Sätze von Euler, Fermat und Wilson. 8 Der Satz von Euler

1.Vortrag: Rechnen mit Restklassen/modulo einer Zahl

Kapitel 6: Das quadratische Reziprozitätsgesetz

Diskrete Mathematik. Christina Kohl Georg Moser Oleksandra Panasiuk Christian Sternagel Vincent van Oostrom

Prof. Dr. H. Brenner Osnabrück SS Zahlentheorie. Vorlesung 4. Die Restklassenringe Z/(n)

4 Kryptologie. Übersicht

Die reellen Zahlen als Äquivalenzklassen rationaler Cauchy-Folgen. Steven Klein

Zahlentheorie I. smo osm. Thomas Huber. Inhaltsverzeichnis. Aktualisiert: 1. August 2016 vers Teilbarkeit 2.

χ a : N + {0, 1, 1} {( a χ a (n) = χ a (n ). ψ(mn) < ψ(m)ψ(n).

Mersennesche Primzahlen

Der kleine Satz von Fermat

Grundlagen der Arithmetik und Zahlentheorie

Behauptung: Es gibt unendlich viele Primzahlen.

WS 2009/10. Diskrete Strukturen

Algebraische Strukturen. Idee. Gruppen, Ringe, Körper... (Teschl/Teschl Abschnitt 3.2, siehe auch Kap. 4)

$Id: ring.tex,v /05/03 15:13:26 hk Exp $

Kryptographie und Komplexität

Einführung in Algebra und Zahlentheorie Lösungsvorschläge zur Klausur vom Aufgabe 1 (6 Punkte)

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik

Mathematische Grundlagen der Kryptografie (1321) SoSe 06

3.5 Ringe und Körper. Diese Eigenschaften kann man nun auch. 1. (R, +) ist eine kommutative Gruppe. 2. Es gilt das Assoziativgesetz bezüglich.

Die rationalen Zahlen. Caterina Montalto Monella

Prof. Dr. H. Brenner Osnabrück SS Zahlentheorie. Vorlesung 3. Der euklidische Algorithmus

Wiederholungsblatt zur Gruppentheorie

1.2 Eigenschaften der ganzen Zahlen

Kapitel 2: Multiplikative Funktionen. 3 Multiplikative Funktionen. Definition 2.1 (arithmetische Funktion, (vollständig) multiplikative Funktion)

$Id: korper.tex,v /05/10 12:25:27 hk Exp $

Mathematisches Institut II Universität Karlsruhe Priv.-Doz. Dr. N. Grinberg

Zahlentheorie, Arithmetik und Algebra I

3-1 Elementare Zahlentheorie

Hallo Welt für Fortgeschrittene

1 Modulare Arithmetik

Form der Äquivalenzklassen

Kongruenzen und Restklassenringe. 2. Kongruenzen und Restklassenringe

Zahlentheorie, Arithmetik und Algebra

2011W. Vorlesung im 2011W Institut für Algebra Johannes Kepler Universität Linz

Diskrete Strukturen 5.9 Permutationsgruppen 168/558 c Ernst W. Mayr

1 Modulare Arithmetik

kgv-berechnung Invertieren modulo m Simultane Kongruenzen Restklassenringe Modulare Arithmetik Euler sche Funktion Sätze von Fermat und Euler

Diskrete Mathematik Kongruenzen

Vorkurs Mathematik. Vorlesung 2. Primzahlen

Mathematik I für Studierende der Informatik und Wirtschaftsinformatik (Diskrete Mathematik) im Wintersemester 2017/18

Beispiel 85. Satz 86 Eine Unteralgebra (bzgl. ) einer Gruppe ist eine Untergruppe, falls sie unter der Inversenbildung 1 abgeschlossen ist.

Zahlentheorie, Arithmetik und Algebra I. Felix Teufel Hallo Welt! -Seminar - LS 2

Zahlentheorie I - Tipps & Lösungen. Aktualisiert: 15. Oktober 2016 vers Teilbarkeit

Der Primzahltest von Agrawal, Kayal und Saxena. Dr. Gerold Jäger

Übung zur Vorlesung Berechenbarkeit und Komplexität

Lösungsvorschlag zur Nachklausur. Zeigen Sie die folgenden voneinander unabhängigen Aussagen:

Zahlentheorie für den Landeswettbewerb für Anfängerinnen und Anfänger der Österreichischen Mathematik-Olympiade

Diskrete Mathematik. Sebastian Iwanowski FH Wedel. Kap. 4: Zahlentheorie

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

Kapitel 2. Kapitel 2 Natürliche und ganze Zahlen

Vorlesung Diskrete Strukturen Die natürlichen Zahlen

1 Körper. Wir definieren nun, was wir unter einem Körper verstehen, und sehen dann, dass es noch andere, ganz kleine Körper gibt:

Kongruenz ist Äquivalenzrelation

Tutorium: Diskrete Mathematik

3. Diskrete Mathematik

1 Der Ring der ganzen Zahlen

Proseminar Datensicherheit & Versicherungsmathematik RSA-Verfahren

= k 0+k 0 ( ). Wir addieren (0 k) zu den Seiten der Gleichung ( ): 0 = k 0.

Chinesischer Restsatz für Ringe

Lineare Algebra I (WS 13/14)

9. Primitivwurzeln. O. Forster: Einführung in die Zahlentheorie

1 Vorbereitung: Potenzen 2. 2 Einstieg und typische Probleme 3

. Zahlentheorie, Arithmetik und Algebra I. Tobias Polzer. Tobias Polzer Zahlentheorie, Arithmetik und Algebra I.. /

Äquivalenzrelation Restklassen Teilbarkeit in Z Kleiner Satz von Fermat Satz von Euler Eulersche ϕ-funktion

Vorlesung Diskrete Strukturen Gruppe und Ring

Kapitel III Ringe und Körper

Mathematik I für Studierende der Informatik und Wirtschaftsinformatik (Diskrete Mathematik) im Wintersemester 2017/2018

Mathematik I für Studierende der Informatik und Wirtschaftsinformatik (Diskrete Mathematik) im Wintersemester 2015/16

1. Gruppen. 1. Gruppen 7

für alle a, b, x, y R.

Kapitel 2. Ganze Zahlen. 2.1 Teilbarkeit

Vorlesung 4. Tilman Bauer. 13. September 2007

Vorlesung 4. Tilman Bauer. 13. September Wir befassen uns in dieser Vorlesung noch einmal mit Mengen.

Transkript:

Stand: 05.11.2013 Vorlesung Grundlagen und Methoden der Kryptographie Dietzfelbinger 1 Grundlagen aus der Zahlentheorie 1.1 Fakten aus der Zahlentheorie und grundlegende Algorithmen Unsere Zahlenbereiche: N = {0, 1, 2, 3,...}, Z = {..., 2, 1, 0, 1, 2, 3,...} Wir stellen uns die Zahlen immer als zu einer passenden Basis b dargestellt vor: Binärdarstellung, (Oktaldarstellung,) Dezimaldarstellung, Hexadezimaldarstellung, Darstellung zur Basis 256 (eine Zier ist ein Byte) oder 2 32 (eine Zier ist ein 32-Bit- Wort, passend für die Darstellung in einem Rechner). Die Anzahl der Ziern in der Darstellung von a N zur Basis b ist log b (a + 1). Verwendete Operationen: Addition (mit Umkehrung Subtraktion), Multiplikation. Wir nehmen an, dass zwei einzirige Zahlen in Zeit O(1) addiert und subtrahiert werden können (von der Hardware). Addition zweier n-ziriger Zahlen kostet dann Zeit O(n), Multiplikation einer n-zirigen und einer l-zirigen Zahl mit der Schulmethode kostet Zeit O(nl). Es gibt schnellere Verfahren: Karatsuba mit O(n 1,58 ) für zwei n-zirige Zahlen, Schönhage-Strassen sogar mit O(n log n log log n). Fakt 1.1 Division mit Rest Zu x Z und m 1 gibt es ein r mit 0 r < m und ein q mit x = qm + r. Die Zahlen q und r sind eindeutig bestimmt. Die Zahl r (Rest) bezeichnen wir mit x mod m. Sie hat die Darstellung x qm, unterscheidet sich also von x um ein Vielfaches von m. Beispiele: 30 = 3 9 + 3, 30 = ( 4) 9 + 6. Aufwand für Division mit Rest: Die Division einer n-zirigen Zahl durch eine l-zirige Zahl mit der Schulmethode kostet Zeit O(nl). 1

Wir sagen, dass eine ganze Zahl y die ganze Zahl x teilt (oder dass y ein Teiler von x ist), wenn x = qy für eine ganze Zahl q gilt. Oft schreibt man dafür kurz y x. Beispiele: 3 12, 3 12, 3 12, 3 12, 3 0, 0 0. Beobachtungen: Die Teilbarkeitsrelation ist reexiv und transitiv. Es handelt sich damit um eine Präordnung (oft auch Quasiordnung genannt). Zahlen x und x können von ihr nicht unterschieden werden: Es gilt x y x y und y x y x, und weiter x x und x x. Die Präordnung ist also nicht antisymmetrisch. Sie ist auch nicht total, weil manche Elemente nicht verglichen werden können: 4 9 und 9 4. Aus 0 x folgt x = 0; für jede ganze Zahl y gilt: y 0; also ist in dieser Präordnung 0 das eindeutig bestimmte gröÿte Element. Für jede ganze Zahl x gilt: 1 x und 1 x, also sind 1 und 1 kleinste Elemente. Wenn m > 0 ist, ist m x gleichbedeutend mit x mod m = 0.) Fakt 1.2 (a) Aus x y und y z folgt x z. (b) Aus x y folgt ux uy für alle u Z. (c) Aus x y und y 0 folgt x y. (d) Aus x y und y x folgt x = y. Wenn zudem x, y 0 gilt, folgt x = y. Der Beweis ist eine einfache Übung. Denition 1.3 Gröÿter gemeinsamer Teiler (a) Für x, y Z heiÿt t Z ein gemeinsamer Teiler von x und y, wenn t x und t y gilt. (Bemerkung: 1 ist stets gemeinsamer Teiler von x und y.) (b) Für x, y Z sei ggt(x, y) die nichtnegative Zahl d mit: (i) d x und d y; (ii) wenn c x und c y gilt, dann folgt c d. (D. h.: d ist gemeinsamer Teiler von x und y und jeder gemeinsame Teiler von x und y ist Teiler von d.) (c) x, y Z heiÿen teilerfremd, wenn ggt(x, y) = 1 gilt, d. h. wenn sie nicht beide 0 sind und keine Zahl > 1 beide teilt. Die Zahl ggt(x, y) ist eindeutig bestimmt: Wenn in (b) d und d beide (i) und (ii) erfüllen und nichtnegativ sind, dann folgt d d und d d, also d = d nach Fakt 1.2(d). Wir betrachten kurz einen nicht ganz oensichtlichen Sonderfall: Wenn x = y = 0, dann sind alle d Z Teiler von x und y. Was soll der gröÿte gemeinsame Teiler d 2

sein? Nach (ii) muss aber 0 d gelten. Dies gilt nur für d = 0, also ist ggt(0, 0) = 0. Hier ist also der gröÿte gemeinsame Teiler nicht gröÿtmöglich im Sinn der Standardanordnung der natürlichen Zahlen gemeint, sondern im Sinn der Präordnung Teilbarkeit. Wnn x 0 oder y 0 gilt, kann es keinen Teiler geben, der gröÿer als max{ x, y } ist, und der gröÿte gemeinsame Teiler ist auch gröÿtmöglich im Sinn der gewöhnlichen Ordnung. Es gibt einen ezienten Algorithmus zur Ermittlung des gröÿten gemeinsamen Teilers. (Dieser beweist auch die Existenz.) Er beruht auf der Feststellung ggt(x, y) = ggt( x, y ) und den Gleichungen ggt(a, 0) = a für beliebige a 0, ggt(a, b) = ggt(b, a) und ggt(a, b) = ggt(b, a mod b) für a b > 0, die in ein iteratives Verfahren umgesetzt werden. (Die letzte Gleichung folgt aus der Beobachtung, dass a und b genau die gleichen gemeinsamen Teiler haben wie b und r = a mod b. Weshalb? Wir können schreiben: a = q b + r. Wenn nun t gemeinsamer Teiler von a und b ist, dann ist t auch Teiler von r = a q b. Wenn t gemeinsamer Teiler von b und r ist, dann ist t auch Teiler von a = q b + r.) Algorithmus 1.1 Euklidischer Algorithmus Input: Zwei ganze Zahlen x und y. Methode: 1 a, b: integer; 2 if x y 3 then a x ; b y ; 4 else a y ; b x ; 5 while b > 0 repeat 6 (a, b) (b, a mod b); 7 return a. Zeilen 24 dienen nur dazu, die Normalsituation a b 0 herzustellen. Die eigentliche Rechnung ndet in der while-schleife statt. In dieser Schleife wird immer ein Zahlenpaar durch ein anderes ersetzt, das dieselben gemeinsamen Teiler hat. Wenn der Algorithmus terminiert, weil der Inhalt b von b Null geworden ist, kann man den Inhalt von a ausgeben. 3

i a i b i 0 12742 10534 1 10534 2208 2 2208 1702 3 1702 506 4 506 184 5 184 138 6 138 46 7 46 0 Tabelle 1: Ablauf des Euklidischen Algorithmus auf einem Beispiel Fakt 1.4 Algorithmus 1.1 gibt ggt(x, y) aus. Auf Eingabe x = 10534, y = 12742 ergibt sich der in Tab. 1.1 angegebene Ablauf. Die Zahlen a i und b i bezeichnen den Inhalt der Variablen a und b, nachdem die Schleife in Zeilen 56 i-mal ausgeführt worden ist. Die Ausgabe ist 46 = ggt(10534, 12742). Um einzusehen, dass der Algorithmus terminiert, ja sogar sehr schnell terminiert, bemerken wir Folgendes. Betrachte den Beginn eines Schleifendurchlaufs. Der Inhalt von a sei a, der Inhalt von b sei b, mit a b > 0. Nach einem Schleifendurchlauf enthält a den Wert a = b und b den Wert b = a mod b. Falls b = 0, endet der Algorithmus. Sonst wird noch ein Durchlauf ausgeführt, an dessen Ende a den Wert b = a mod b enthält. Wir behaupten: b < 1 a. Um dies zu beweisen, betrachten wir 2 zwei Fälle: Wenn b > 1a ist, gilt 2 b = a mod b = a b < 1a. Wenn b 1 a ist, gilt 2 2 b = a mod b < b 1 a. Also halbiert sich der Wert in a in jeweils zwei Durchläufen. 2 Nach dem ersten Schleifendurchlauf enthält a den Wert min{ x, y }. Daraus ergibt sich Teil (a) der folgenden Aussage. Fakt 1.5 (a) Die Schleife in Zeilen 56 wird höchstens O(log(min{ x, y }))-mal ausgeführt. (b) Die gesamte Anzahl von Ziernoperationen für den Euklidischen Algorithmus ist O(log( x ) log( y )). 4

Man beachte, dass log(x + 1) log x die Anzahl der Bits ist, die man braucht, um x aufzuschreiben. Damit hat der Euklidische Algorithmus bis auf einen konstanten Faktor denselben Aufwand wie die Multiplikation von x und y, wenn man die Schulmethode benutzt. (Es sei bemerkt, dass der Beweis der Schranke in (b) einer kleinen Rechnung bedarf, die die Längen der beteiligten Zahlen genauer verfolgt.) Beispiel: (a) 21 und 25 sind teilerfremd. Es gilt 31 21 + ( 26) 25 = 651 650 = 1. (b) Es gilt ggt(21, 35) = 7, und 2 35 3 21 = 7. Die folgende sehr nützliche Aussage verallgemeinert diese Beobachtung: Lemma 1.6 ( )... von Bezout (a) Wenn x, y teilerfremd sind, gibt es s, t Z mit sx + ty = 1. (b) Für x, y Z, nicht beide gleich 0, gibt es s, t Z mit sx + ty = ggt(x, y). Beweis: (a) Betrachte die Menge D = {sx + ty s, t Z}. Weil x 2 + y 2 > 0 eine Zahl in D ist, hat D ein kleinstes positives Element c. Wir wollen zeigen, dass c = 1 ist. Dazu wählen wir s, t so, dass c = sx + ty gilt und schreiben x = qc + r mit 0 r < c. Dann ist r = x qc = x qsx qty = ( qs)x + (1 qt)y, also ist r D. Nach Wahl von c kann aber r nicht positiv sein, also folgt r = 0. Daraus folgt x = qc, also ist x durch c teilbar. Ganz genauso sieht man, dass auch y durch c teilbar ist. Weil x und y teilerfremd sind, muss c = 1 sein. (b) Es sei d = ggt(x, y). Wir denieren ganze Zahlen x = x/d und y = y/d. Natürlich sind x und y teilerfremd (sonst wäre d nicht der gröÿte gemeinsame Teiler von x und y). Nach Teil (a) gibt es s, t mit sx + ty = 1. Daraus folgt sx + ty = sx d + ty d = d. Die Koezienten s, t aus dem Lemma von Bezout kann man mit einer Erweiterung des Euklidischen Algorithmus sehr ezient berechnen. 5

Algorithmus 1.2 Erweiterter Euklidischer Algorithmus Eingabe: Ganze Zahlen x und y. Methode: 0 a, b, sa, ta, sb, tb, q: integer; 1 if x y 2 then a x ; b y ; 3 sa sign(x); ta 0; sb 0; tb sign(y); 4 else a y ; b x ; 5 sa 0; ta sign(y); sb sign(x); tb 0; 6 while b > 0 repeat 7 q a div b; 8 (a, b) (b, a q b); 9 (sa, ta, sb, tb) (sb, tb, sa q sb, ta q tb); 10 return (a, sa, ta); Im Algorithmus benutzen wir die Signumfunktion, die wie folgt deniert ist: 1, falls x > 0, sign(x) = 0, falls x = 0, 1, falls x < 0, die also erfüllt. (1) x = sign(x) x für alle x (2) Genau wie im ursprünglichen Euklidischen Algorithmus ndet die eigentliche Arbeit in der while-schleife statt (4 Zeilen). Zeilen 15 dienen nur der Vorbereitung und dem Umarrangieren, wenn die Eingabe negative Zahlen enthält oder x < y ist. Die Idee hinter dem Algorithmus ist folgende. Für die Diskussion beschränken wir uns auf den Fall x y 0. Der Euklidische Algorithmus führt in den Variablen a und b Zahlen a und b mit, die stets ggt(a, b) = d = ggt(x, y) erfüllen. Die Variablen sa, ta, sb und tb enthalten immer Zahlenpaare (s a, t a ) und (s b, t b ), die folgende Gleichungen erfüllen: a = s a x + t a y, b = s b x + t b y. Dies wird durch die Initialisierung hergestellt (a = x, b = y, s a = 1, t a = 0, s b = 0, t b = 1). In einem Schleifendurchlauf wird a durch b ersetzt und (s a, t a ) durch (s b, t b ), 6

und es wird b durch a q b ersetzt sowie (s b, t b ) durch (s a q s a, t a q t b ). Dadurch bleiben die Gleichungen gültig. Wenn schlieÿlich b = 0 geworden ist, gilt d = ggt(x, y) = a = s a x + t a y, was die Ausgabe erklärt. Als Beispiel betrachten wir den Ablauf des Algorithmus auf der Eingabe (x, y) = (10534, 12742). Die Zahlen a i,b i, s a,i, t a,i, s b,i, t b,i bezeichnen den Inhalt von a, b, sa, ta, sb, tb nach dem i-ten Schleifendurchlauf. i a i b i s a,i t a,i s b,i t b,i q i 0 12742 10534 0 1 1 0 1 10534 2208 1 0 1 1 1 2 2208 1702 1 1 5 4 4 3 1702 506 5 4 6 5 1 4 506 184 6 5 23 19 3 5 184 138 23 19 52 43 2 6 138 46 52 43 75 62 1 7 46 0 75 62 277 229 3 Die Ausgabe ist (46, 75, 62). Man überprüft leicht, dass gilt. Allgemein gilt: 46 = ggt(10534, 12742) = 75 10534 62 12742 Fakt 1.7 (a) Wenn Algorithmus 1.2 auf Eingabe x, y, die nicht beide 0 sind, die Ausgabe (d, s, t) liefert, dann gilt d = ggt(x, y) = sx + ty. (b) Die Anzahl der Schleifendurchläufe ist dieselbe wie beim gewöhnlichen Euklidischen Algorithmus. (c) Die Anzahl von Ziernoperationen für Algorithmus 1.2 ist O(log( x ) log( y )). Wir notieren noch wesentliche Folgerungen aus dem Lemma von Bezout. Fakt 1.8 Wenn x und y teilerfremd sind, und sowohl x als auch y ist Teiler von a, dann ist xy Teiler von a. 7

Beweis: Weil x und y Teiler von a sind, kann man a = ux und a = vy schreiben, für ganze Zahlen u, v. Weil x und y teilerfremd sind, kann man nach dem Lemma von Bezout (Lemma 1.6) 1 = ggt(x, y) = sx + ty schreiben, für ganze Zahlen s, t. Dann ist a = asx + aty = vysx + uxty = (vs + ut)xy, was zu zeigen war. Oft kommt es darauf an, Potenzen x n mod m zu berechnen. Dabei kann n eine sehr groÿe Zahl sein. Beispiel: 3 1384788374932954500363985493554603584759389 mod 28374618732464817362847326847331872341234 Wieso kann ein Computer das Ergebnis (18019019948605604024937414441328931495971) in Bruchteilen von Sekunden berechnen? Auf keinen Fall kann er n Multiplikationen durchführen. Es gibt eine recht einfache rekursive Formel, die den Weg zu einer ezienten Berechnung weist: 1, wenn n = 0, x n x, wenn n = 1, mod m = ((x n/2 mod m) 2 ) mod m, wenn n 2 gerade ist, (x (x (n 1)/2 mod m) 2 ) mod m, wenn n 2 ungerade ist. Man erkennt sofort, dass in jeder Rekursionsebene die Bitanzahl des Exponenten um 1 sinkt, dass also die Anzahl der Rekursionsebenen etwa log n beträgt. In jeder Rekursionsstufe ist eine oder sind zwei Multiplikationen modulo m auszuführen, was O((log m) 2 ) Ziernoperationen erfordert (Schulmethode). Damit kommt man bei der schnellen Exponentiation selbst bei der einfachsten Implementierung der Multiplikation mit O((log n)(log m) 2 ) Ziernoperationen zum Ergebnis. Wenn man diesen Algorithmus aus Ezienzgründen iterativ formulieren möchte, benötigt man die Binärdarstellung b k... b 1 b 0 von n in der Reihenfolge von links nach rechts. Diese Darstellung ist oft durch die rechnerinterne Darstellung gegeben. Alternativ kann man die Binärziffern von n durch iterierte Division in der Reihenfolge b 0, b 1,..., b k ermitteln. In Runde i benötigt man dann die Potenz x 2i mod m als Faktor. Diesen kann man einfach durch iteriertes Quadrieren ermitteln, mit der Formel x 2i mod m = (x 2i 1 mod m) 2 mod m. Dies führt zu folgendem Verfahren, das ebenfalls O((log n)(log m) 2 ) Ziernoperationen erfordert. Algorithmus 1.3 Schnelle modulare Exponentiation 8

Eingabe: Ganze Zahlen x, n 0, and m 1. Methode: 0 u, s, c: integer; 1 u n; 2 s x mod m; 3 c 1; 4 while u 1 repeat 5 if u ungerade then c (c s) mod m; 6 s s s mod m; 7 u u div 2; 8 return c; Hier ein Beispiel für den Ablauf: Dabei ist x = 2, n = 4321 Binärdarstellung b k... b 0 = 1000011100001), m = 101. i s i b i c i 0 2 1 = 2 1 2 1 2 2 = 4 0 2 2 4 2 = 16 0 2 3 16 2 mod 101 = 54 0 2 4 54 2 mod 101 = 88 0 2 5 88 2 mod 101 = 68 1 2 68 mod 101 = 35 6 68 2 mod 101 = 79 1 35 79 mod 101 = 38 7 79 2 mod 101 = 80 1 38 80 mod 101 = 10 8 80 2 mod 101 = 37 0 10 9 37 2 mod 101 = 56 0 10 10 56 2 mod 101 = 5 0 10 11 5 2 mod 101 = 25 0 10 12 25 2 mod 101 = 19 1 10 19 mod 101 = 89 In Zeile 2 wird s mit x mod m = x 20 mod m initialisiert, und u mit n. Die Binärdarstellung von n soll b k... b 1 b 0 sein, mit b k = 1. In jedem Schleifendurchlauf wird u in Zeile 7 halbiert; wenn also Zeile 5 zum (i + 1)-sten Mal ausgeführt wird, enthält u die Zahl mit Binärdarstellung b k b k 1... b i. In Zeile 6 jedes Durchlaufs wird der Inhalt von s quadriert (modulo m); wenn also Zeile 5 zum (i + 1)-sten Mal ausgeführt wird, 9

enthält s die Zahl s i = x 2i mod m. Das letzte Bit b i von u wird in Zeile 5 benutzt, um zu entscheiden, ob p mit s i multipliziert werden soll oder nicht. Mit vollständiger Induktion zeigt man, dass nach der i-ten Ausführung von Zeile 5 die Variable p die Zahl 0 j i, b j =1 x2j mod m enthält. Die Abarbeitung der Schleife hält, wenn u 0 geworden ist, was oenbar nach genau k + 1 Durchläufen der Fall ist. An dieser Stelle enthält p das gewünschte Ergebnis 0 j k, b j =1 x2j mod m = x n mod m. Lemma 1.9 Die Berechnung von x n mod m benötigt O(log n) Multiplikationen und Divisionen modulo m von Zahlen aus {0,..., m 2 1} sowie O((log n)(log m) 2 ) Ziernoperationen. Bemerkung: Man kann denselben Algorithmus in einem beliebigen Monoid (Bereiche mit einer assoziativen Operation und einem neutralen Element) benutzen. Ein Monoid bilden zum Beispiel die natürlichen Zahlen mit der Multiplikation oder die Menge Σ über einem Alphabet Σ mit der Konkatenation. 1.2 Primzahlen Jede positive Zahl x ist durch 1 und durch x teilbar. Denition 1.10 (a) Eine Zahl p 1 heiÿt Primzahl, wenn p genau zwei positive Teiler hat. a Diese Teiler sind dann 1 und p. (b) Eine Zahl x 1 heiÿt zusammengesetzt, wenn sie einen Teiler y mit 1 < y < x besitzt. b a Die Zahl 1 hat nur einen positiven Teiler, nämlich 1. Also ist 1 keine Primzahl. b Die Zahl 1 besitzt keinen Teiler y mit 1 < y < 1. Also ist 1 auch nicht zusammengesetzt. Fakt 1.11 Wenn p eine Primzahl ist und p xy gilt, dann gilt p x oder p y. Beweis: Wenn p x, sind wir fertig. Also können wir p x annehmen. Das heiÿt, dass ggt(p, x) = 1 ist. Nach dem Lemma von Bezout können wir also 1 = sp+tx schreiben, für ganze Zahlen s, t. Daraus folgt: y = spy + txy. Nun ist xy durch p teilbar, also auch y = spy + txy. 10

Satz 1.12 Jede Zahl x 1 kann als Produkt von Primzahlen geschrieben werden. Die Faktoren sind eindeutig bestimmt (bis auf die Reihenfolge). Beweis: Die Existenz der Zerlegung in Primfaktoren beweist man durch Induktion über x. Die Zahl x = 1 kann als leeres Produkt p,p prim p geschrieben werden. Eine andere Darstellung gibt es nicht. Für x > 1 sucht man einen echten Faktor x 1 von x (1 < x 1 < x), dann einen echten Faktor x 2 von x 1 usw., bis man einen echten Faktor x k von x erhält, der selber keinen echten Faktor hat. Dieses x k ist ein Primfaktor von x, man kann also x = x x k schreiben. Auf x wendet man die Induktionsvoraussetzung an. Die Eindeutigkeit sieht man wie folgt: Nehmen wir an, p 1 p k und q 1 q l wären unterschiedliche Primfaktorzerlegungen von x. Wir können annehmen, dass x die kleinste Zahl mit unterschiedlichen Zerlegungen ist. Daraus folgt, dass in p 1,..., p k keine der Primzahlen q 1,..., q l vorkommt (sonst würde man durch Streichen eines Faktors eine kleiner Zahl mit unterschiedlichen Zerlegungen erhalten). Nun teilt q 1 die Zahl x = p 1 p k. Nach dem Lemma, iederholt angewendet, teilt q 1 einen der Faktoren p 1,..., p k, etwa p i. Weil q 1 und p i Primzahlen sind, muss p 1 = q i gelten, ein Widerspruch. Fakt 1.13 Jede zusammengesetzte Zahl x besitzt einen Primfaktor p mit p x. Beweis: Man schreibt x = yz für Zahlen y und z, die weder 1 noch x sind. Es ist nicht möglich, dass beide gröÿer als x sind. Der kleinere Faktor enthält also einen Primfaktor, der nicht gröÿer als x ist. Bemerkung: Die Laufzeit des naiven Faktorisierungsverfahrens, das alls Zahlen in {2,..., x } darauf testet, ob sie x teilen, hat Rechenzeit mindestens x = 2 (log x)/2, also exponentiell in der Bitlänge von x. Wie wir später genauer diskutieren werden, sind für das Aufnden der Primzahlzerlegung einer gegebenen Zahl x überhautpt keine ezienten Algorithmen bekannt (also Algorithmen mit Laufzeiten O((log x) c ) für konstantes c). Aber es gibt eziente Algorithmen, mit denen man feststellen kann, ob eine Zahl x eine Primzahl ist oder nicht. Dieser Unterschied in der Schwierigkeit des Faktorisierungsproblems und des Primzahlproblems liegt einer ganzen Reihe von kryptographischen Verfahren zugrunde. Satz 1.14 Euklid Es gibt unendlich viele Primzahlen. 11

Beweis: Wenn p 1,..., p k eine endliche Folge von Primzahlen ist, betrachten wir die Zahl x = 1 + p 1 p k. Die Zahl x kann durch keine der Primzahlen p 1,..., p k teilbar sein, sonst wäre 1 durch diese Primzahl teilbar, was nicht möglich ist. Also sind alle Primfaktoren in der Primzahlzerlegung von x von p 1,..., p k verschieden, es muss also auÿer p 1,..., p k noch weitere Primzahlen geben. Über die Verteilung der Primzahlen (ihre Dichte in N) gibt der berühmte Primzahlsatz Auskunft. 1 Mit π(x) bezeichnen wir die Anzahl der Primzahlen, die nicht gröÿer als x ist. Satz 1.15 Primzahlsatz lim x π(x) x/ ln x = 1. 2x Das heiÿt, dass für groÿe x in (x, 2x] etwa x x Primzahlen zu erwarten ln(2x) ln x ln x sind. Die µ-zirigen Zahlen bilden das Intervall [2 µ 1, 2 µ ). Der Anteil der Primzahlen in diesem Intervall ist näherungsweise 2 µ 1 / ln(2 µ 1 ) 2 µ 1 1 (ln 2)(µ 1) 1,44/µ. Für µ 2000 ist der relative Anteil von Primzahlen im interessanten Zahlenbereich also etwa 1,44/2000 1/1400. Er sinkt umgekehrt proportional zur Ziernzahl. Für unsere Zwecke etwas angenehmer zu benutzen als der Primzahlsatz ist folgende etwas schwächere Aussage, die konkrete Konstante angibt: Satz 1.16 Ungleichung von Finsler Für jede ganze Zahl m 2 liegen im Intervall (m, 2m] mindestens m/(3 ln(2m)) Primzahlen: m π(2m) π(m) 3 ln(2m). Beispiele: 1 1793 von Gauÿ und unabhängig 1798 von Legendre vermutet; 1896 unabhängig von Hadamard und de La Vallé Poussin bewiesen. 12

Ziernzahl Finsler-Schranke für numerische µ m (π(2m) π(m))/m untere Schranke 256 2 255 1 3 256 ln 2 512 2 511 1 3 512 ln 2 1024 2 1023 1 3 1024 ln 2 2048 2 2047 1 3 2048 ln 2 1 533 1 1065 1 2130 1 4260 Eine Verdopplung der Ziernzahl halbiert die untere Schranke für die Primzahldichte. 1.3 Modulare Arithmetik, Restklassenringe, Chinesischer Restsatz Denition 1.17 Für m 2 denieren wir eine zweistellige Relation auf Z: x y (mod m) heiÿt m (x y). Fakt 1.18 (i) x y (mod m) gilt genau dann wenn x mod m = y mod m gilt. (ii) Die zweistellige Relation (mod m) ist eine Äquivalenzrelation, sie ist also reexiv, transitiv und symmetrisch. Beispiel für (i): 29 mod 12 = 53 mod 12 = 5 und 53 29 = 24 ist durch 12 teilbar. Der Beweis von (i) ist eine leichte Übung; (ii) folgt sofort aus (i). Die Äquivalenzrelation (mod m) führt (wie jede Äquivalenzrelation) zu einer Zerlegung der Grundmenge Z in Äquivalenzklassen: [x] = {y Z x y (mod m)} = {y Z x mod m = y mod m}. Wir denieren mz = {..., 3m, 2m, m, 0, m, 2m, 3m,...} und x + A = {x + y y A}, für A Z. Beispiel: Für m = 3 gibt es die Äquivalenzklassen [0] = {..., 6, 3, 0, 3, 6,...} = 0 + 3Z, [1] = {..., 5, 2, 1, 4, 7,...} = 1 + 3Z, [2] = {..., 4, 1, 2, 5, 8,...} = 2 + 3Z. 13

Mit den Äquivalenzklassen kann man wieder rechnen: Addition, Subtraktion, Multiplikation lassen sich wie folgt denieren. [x] + [y] := [x + y], [x] [y] := [x y]. Beispielsweise gelten für m = 3 die Gleichheiten [4] + [5] = [9] = [0] und [4] [5] = [20] = [2]. Genaugenommen muss man nachweisen, dass diese Operationen wohldeniert sind, das heiÿt, dass aus x x mod m und y y mod m die Gleichheit [x + y] = [x + y ] folgt, analog für die Multiplikation. (Wir nehmen als Beispiel an, dass x x mod m und y y mod m gilt, d. h., dass x x = sm und y y = tm für passende Faktoren s und t. Dann ist xy x y = x(y y ) + (x x )y = xtm + smy = (xt + sy )m, also durch m teilbar. Also gilt [x y] = [x y ]. Der Fall der Addition ist noch einfacher.) Aus der Denition (und der Wohldeniertheit) ergibt sich, dass man anstatt mit Äquivalenzklassen auch einfach mit Repräsentanten rechnen kann. Statt ([4] + [4]) [2] = [1] [2] = [1] schreibt man also einfach (4 4) 2 16 ( 1) 1 ( 1) 1 2 (mod 3). An jeder Stelle dieser Rechnung kann man für jede Zahl eine äquivalente einsetzen, je nachdem, wie es bequem ist. Man betrachtet die Menge aller Äquivalenzklassen: Z m := Z/mZ := {[x] x Z} = {[x] 0 x < m}. Solange es nicht zu Missverständnissen führt, schreibt man auch Z m = {x 0 x < m}, zusammen mit Addition modulo m und Multiplikation modulo m. Damit meint man, dass man mit den Repräsentanten der Äquivalenzklassen rechnet, die in {0, 1,..., m 1} liegen. Fakt 1.19 Für jedes m 2 bildet die Menge Z m mit den Operationen Addition modulo m und Multiplikation modulo m einen kommutativen Ring mit 1. Das heiÿt im Detail: Die Operationen + (mod m) und (mod m) führen nicht aus dem Bereich Z m heraus. Die Addition erfüllt alle Rechenregeln für kommutative Gruppen, d. h. sie ist kommutativ und assoziativ, es gibt ein neutrales Element, nämlich [0], 14

und zu jedem [x] gibt es ein Inverses [ x]. (Es gilt ja [x] + [ x] = [0]. Beachte: Für 0 < x < m gilt 0 < m x < m und [x] + [m x] = [m] = [0].) Die Multiplikation ist assoziativ und kommutativ, und sie hat die [1] als neutrales Element ([1] [x] = [x] [1] = [x]); für Addition und Multiplikation gelten die Distributivgesetze. Lemma 1.20 Für jedes m 2 ist die Abbildung Z Z m, x x mod m, ein Homomorphismus; d. h. für x, y Z gilt: (i) (x + y) mod m = ((x mod m) + (y mod m)) mod m, (ii) (xy) mod m = ((x mod m)(y mod m)) mod m. Dieses Lemma wird hauptsächlich benutzt, um Rechnungen zu vereinfachen. Um einen arithmetischen Ausdruck modulo m auszuwerten (inklusive Potenzen), kann man auf beliebige Zwischenergebnisse die mod m-operation anwenden. Beispiel: Um 13 7 mod 11 zu berechnen, rechnet man 13 7 2 7 2 5 4 32 4 ( 1) 4 4 7 (mod 11). In jeder Struktur Z m spielen die Elemente, die ein multiplikatives Inverses haben, eine spezielle Rolle. Lemma 1.21 Für jedes m 2 und jedes x Z gilt: Es gibt ein y mit xy mod m = 1 genau dann wenn ggt(x, m) = 1. Beweis: : Es sei xy mod m = 1. Das heiÿt: Es gibt ein q Z mit xy qm = 1. Wenn nun eine Zahl d > 0 sowohl x als auch m teilt, dann teilt d auch xy qm = 1, also ist d = 1. Also sind x und m teilerfremd. : x und m seien teilerfremd. Nach Lemma 1.6(a) gibt es s, t Z mit sx + tm = 1. Setze y := s mod m. Dann gilt: (x y) mod m = (x (s mod m)) mod m = sx mod m = 1. Beispiel: Aus 31 21 + ( 26) 25 = 1 folgt, dass 31 mod 25 = 6 ein multiplikatives Inverses zu 21 modulo 25 ist. 15

Wir bemerken: Mit dem Euklidischen Algorithmus 1.1 lässt sich herausnden, ob ggt(x, m) = 1 ist. Falls dies so ist, liefert der erweiterte Euklidische Algorithmus 1.2 Koezienten s, t Z mit sx + tm = 1 und damit das Inverse y = s mod m. Die Rechenzeit für das Berechnen des modularen Inversen beträgt also O((log x)(log m)). Die Menge der invertierbaren Elemente von Z m erhält eine eigene Bezeichnung. Denition 1.22 Für m 2 sei Z m := {x Z m ggt(x, m) = 1}. (Wieder sind hier eigentlich die Restklassen [x], ggt(x, m) = 1, 0 x < m, gemeint.) Fakt 1.23 Für jedes m 2 gilt: Z m mit der Multiplikation modulo m als Operation ist eine Gruppe. Beispiel: Z 21 = {1, 2, 4, 5, 8, 10, 11, 13, 16, 17, 19, 20} und Z 7 = {1, 2, 3, 4, 5, 6}. Beweis von Fakt 1.23: Natürlich ist die 1 das neutrale Element der Multiplikation in Z m und in Z m. Wir bemerken zuerst, dass Z m unter Multiplikation modulo m abgeschlossen ist: Seien x und z zu m teilerfremd. Nach Lemma 1.6(a) kann man 1 = sx + tm = uy + vm schreiben, und erhält daraus 1 = (sx + tm)(uy + vm) = (su)(xy) + (sxv + tuy + tvm)m. Wieder nach Lemma 1.6(a) folgt daraus, dass xy und m teilerfremd sind. Nach Lemma 1.21 hat jedes Element x von Z m ein multiplikatives Inverses y Z m. Weil natürlich x auch das Inverse von y ist, folgt nach Lemma 1.21 auch, dass y Z m ist. Aus den elementaren Eigenschaften von Gruppen weiÿ man, dass Inverse eindeutig bestimmt sind. Für das Inverse von x (wenn es existiert) schreiben wir x 1 mod m (gemeint ist die Restklasse oder der eindeutig bestimmte Repräsentant in {0, 1,..., m 1}.) Am schönsten ist die Situation, wenn alle Zahlen aus {1,..., m 1} in Z m liegen. Proposition 1.24 Für jedes m 2 gilt: m ist Primzahl Z m = {1,..., m 1} Z m ist ein Körper. 16

Die zweite Äquivalenz ist dabei klar: Der Ring Z m ist nach Denition ein Körper genau dann wenn jedes Element von Z m {0} ein multiplikatives Inverses besitzt. Beweis von Proposition 1.24: : Sei m eine Primzahl. Dann ist jedes a {1,..., m 1} = Z m {0} zu m teilerfremd; nach der Denition folgt Z m = Z m {0}. : Sei m eine zusammengesetzte Zahl, etwa durch k mit 2 < k < m teilbar. Dann ist k = ggt(k, m) > 1, also kann k nach Lemma 1.21 kein multiplikatives Inverses modulo m haben. (Man sieht auch direkt, dass kb mod m = kb qm durch k teilbar ist, also für kein b gleich 1 sein kann.) Beispiel: Wir rechnen modulo 13 und geben für jedes x Z 13 das Inverse y sowie das Produkt x y an (das natürlich bei der Division durch 13 Rest 1 lassen muss). x 1 2 3 4 5 6 7 8 9 10 11 12 y 1 7 9 10 8 11 2 5 3 4 6 12 x y 1 14 27 40 40 66 14 40 27 40 66 144 14 ist keine Primzahl, und es gibt keine Zahl y mit 2 y mod 14 = 1; das heiÿt, dass 2 / Z 14 und daher, dass Z 14 kein Körper ist. Fakt 1.25 Kleiner Satz von Fermat Wenn m eine Primzahl ist, dann gilt: Beweis: Betrachte die Abbildung x m 1 mod m = 1, für jedes x Z m. g x : Z m s xs mod m Z m. Diese Abbildung ist injektiv, da für das zu x inverse Element y gilt: y g x (s) mod m = y(xs) mod m = (yx)s mod m = s. Also gilt: {1,..., m 1} = {g x (1),..., g x (m 1)}. Wir multiplizieren die Zahlen 1..., m 1 in zwei Anordnungen: 1... (m 1) mod m = g x (1)... g x (m 1) mod m = x m 1 (1... (m 1)) mod m. Wenn wir beide Seiten mit dem multiplikativen Inversen von 1... (m 1) mod m multiplizieren, erhalten wir 1 = a m 1 mod m. 17

Wir bemerken, dass auch die Umkehrung gilt: Wenn x m 1 mod m = 1 ist, d. h. x m 1 qm = 1 für ein q, dann folgt ggt(x, m) = 1. Wenn also x (Z m {0}) Z m, dann gilt auf jeden Fall x m 1 mod m 1. Sehr grundlegend ist folgende Aussage über teilerfremde Zahlenpaare (m, n), die im wesentlichen sagt, dass die Strukturen Z m Z n (mit komponentenweisen Operationen) und Z mn isomorph sind. Wir beginnen mit einem Beispiel, nämlich m = 3, n = 8, also mn = 24. Die folgende Tabelle gibt die Reste der Zahlen x {0, 1,..., 23} modulo 3 und modulo 8 an. Die Reste wiederholen sich zyklisch für andere x Z. x 0 1 2 3 4 5 6 7 8 9 10 11 x mod 3 0 1 2 0 1 2 0 1 2 0 1 2 x mod 8 0 1 2 3 4 5 6 7 0 1 2 3 x 12 13 14 15 16 17 18 19 20 21 22 23 x mod 3 0 1 2 0 1 2 0 1 2 0 1 2 x mod 8 4 5 6 7 0 1 2 3 4 5 6 7 Wenn wir die Einträge in Zeilen 2 und 3 als 24 Paare in Z 3 Z 8 ansehen, erkennen wir, dass sie alle verschieden sind, also auch alle Möglichkeiten in {0, 1, 2} {0, 1,..., 7} abdecken. D. h.: Die Abbildung x (x mod 3, x mod 8) ist eine Bijektion zwischen Z 24 und Z 3 Z 8. Zudem spiegeln sich arithmetische Operationen auf den Elementen von Z 24 wider in den Resten modulo 3 und 8. Beispielsweise liefert die Addition von (2, 7) und (2, 1) das Resultat (1, 0), das der Addition von 23 und 17 mit dem Resultat 40 = 16 mod 24 entspricht. Genauso ist (2 5 mod 3, 3 5 mod 8) = (2, 3), was der Beobachtung 11 5 mod 24 = 11 entspricht. Der Chinesische Restsatz 2 sagt im wesentlichen, dass eine solche strukturelle Entsprechung zwischen den Resten modulo mn und Paaren von Resten modulo m, n immer gilt, wenn m und n teilerfremd sind. 2 Die Bezeichnung hat sich eingebürgert. Eigentlich geht es in dem Satz um Rest klassen. 18

Fakt 1.26 Chinesischer Restsatz m und n seien teilerfremd. Dann ist die Abbildung a Φ: Z mn x (x mod m, x mod n) Z m Z n bijektiv. Weiterhin: Wenn Φ(x) = (x 1, x 2 ) und Φ(y) = (y 1, y 2 ), dann gilt: (a) Φ(x + mn y) = (x 1 + m y 1, x 2 + n y 2 ); (b) Φ(x mn y) = (x 1 m y 1, x 2 n y 2 ); (c) Φ(1) = (1, 1). (Dabei bezeichnen + j und j die Addition und die Multiplikation modulo j.) a Φ ist der griechische Buchstabe Phi. Für mathematisch-strukturell orientierte Leser/innen: Die Gleichungen (a) und (b) kann man etwas abstrakter auch so fassen, dass die Abbildung Φ ein Ring-mit-1- Isomorphismus zwischen Z mn und Z m Z n ist. Beweis von Fakt 1.26: Wir beschränken uns darauf, die Bijektivität zu beweisen. Als erstes bemerkt man, dass Z mn und Z m Z n beide genau m n Elemente haben. Daher reicht es zu zeigen, dass die Abbildung Φ injektiv ist. Seien dazu 0 x y < mn beliebig mit Φ(x) = Φ(y). Das heiÿt: x mod m = y mod m und x mod n = y mod n. Das wiederum heiÿt, dass m (y x) und n (y x) gilt. Nach Fakt 1.8 folgt, dass mn Teiler von y x ist. Nun ist 0 y x < mn, woraus y x = 0, also x = y, folgt. Damit ist die Injektivität von Φ bewiesen. Man man kann sich noch fragen, wie man nötigenfalls zu gegebenen Zahlen s Z m und t Z n die Zahl x Z mn berechnen kann, die Φ(x) = (s, t) erfüllt. Dazu betrachtet man zunächst den Fall s = 1 und t = 0. Weil m und n teilerfremd sind, kann man mit dem erweiterten Euklidischen Algorithmus ein u Z m mit un mod m = 1 nden. Wir setzen y = un Z mn. Dann gilt y mod m = 1 und y mod n = 0. Analog ndet man ein z Z mn mit z mod m = 0 und z mod n = 1. Nun setzen wir x := (sy+tz) mod mn Z mn. Wir haben, modulo m gerechnet: x sy+tz s 1+t 0 s (mod m). Analog ergibt sich x sy + tz s 0 + t 1 t (mod n), wie gewünscht. Der Berechnungsaufwand ist O((log m)(log n)) Ziernoperationen, also sehr schnell. Beispiel: m = 5, n = 8, s = 3, t = 7. Wir nden u = 2 mit u 8 mod 5 = 1 und y = 2 8 = 16 sowie v = 5 mit v 5 mod 8 = 1 und z = 5 5 = 25. Nun setzen wir x = (3 16 + 7 25) mod 40 = (48 + 175) mod 40 = (8 + 15) mod 40 = 23. Und 19

tatsächlich: 23 mod 5 = 3 und 23 mod 8 = 7. Wir wollen jetzt noch untersuchen, wie sich Zahlen, die zu m und n teilerfremd sind, in der Sichtweise des Chinesischen Restsatzes verhalten. Proposition 1.27 Wenn man die Abbildung Φ aus dem Chinesischen Restsatz auf Z mn einschränkt, ergibt sich eine Bijektion zwischen Z mn und Z m Z n. Beweis: Wir müssen zunächst zeigen, dass für x Z mn gilt, dass x mod m zu m teilerfremd ist. (Die entsprechende Aussage für n ergibt sich analog.) Wenn x Z mn ist, gibt es nach dem Lemma von Bezout Faktoren s und t mit sx + tmn = 1. Daher ist 1 durch ggt(x, m) teilbar, also muss ggt(x, m) = 1 sein. Umgekehrt müssen wir zeigen, dass für s mit ggt(s, m) = 1 und t mit ggt(t, m) = 1 die eindeutig bestimmte Zahl x mit Φ(x) = (s, t) teilerfremd zu mn ist. Der Beweis erfolgt indirekt. Annahme: ggt(x, mn) > 1. Wir wählen einen möglichst kleinen gemeinsamen Teiler p > 1 von x und mn. Dieses p muss eine Primzahl sein. Nach Fakt 1.11 ist p Teiler von m oder von n. O. B. d. A. nehmen wir an, dass p Teiler von m und von x ist. Weil ggt(s, m) = 1 gilt und x s (mod m), folgt ggt(x, m) = 1. Nach dem Lemma von Bezout können wir 1 = ux + vm schreiben. Es folgt, dass p ein Teiler von 1 ist, ein Widerspruch. Mit diesem Lemma können wir die Kardinalitäten der Mengen Z m, m 2, bestimmen. 3 Denition 1.28 Eulersche ϕ-funktion Für m 2 sei ϕ(m) := Z m = {x 0 x < m, ggt(x, m) = 1}. Einige Beispielwerte sind in Tab. 2 angegeben. m 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ϕ(m) 1 2 2 4 2 6 4 6 4 10 4 12 7 8 8 Tabelle 2: Eulersche ϕ-funktion für kleine m Folgendes ist eine unmittelbare Konsequenz aus Proposition 1.27: 3 ϕ ist der griechische Buchstabe phi. 20

Lemma 1.29 Für teilerfremde Zahlen n und m gilt ϕ(mn) = ϕ(m) ϕ(n). Mit diesem Lemma lässt sich eine Formel für ϕ(m) angeben. Lemma 1.30 Für m 2 gilt ϕ(m) = m p prim p m ( 1 1 ). p Beweis: Wenn m eine Primzahlpotenz p t ist, dann besteht Z m aus den Zahlen in Z m = {0, 1,..., p 1}, die nicht durch p teilbar sind. Da es in Z m insgesamt p t Zahlen gibt und p t 1 Vielfache von p, gilt ϕ(m) = p t p t 1 = m m/p = m(1 1/p). Nun nehmen wir an, dass m = p t 1 1 p ts s gilt, für verschiedene Primzahlen p 1,..., p s und t 1,..., t s 1. Die Faktoren p t 1 1,..., p ts s sind teilerfremd. Mit Lemma 1.29, (s 1)-mal angewendet, erhalten wir ϕ(m) = s i=1 ϕ(p t i i ) = s i=1 p t i i (1 1/p i) = m s i=1 (1 1pi ). Mit dieser Formel lassen sich die Werte in Tab. 2 schnell verizieren. ( Beispiel: ϕ(12) = 12(1 1/2)(1 1/3) = 12 (1/2) (2/3) = 4.) Man beachte als Spezialfall: Wenn m = pq für verschiedene Primzahlen p und q, dann ist ϕ(m) = pq(1 1/p)(1 1/q) = (p 1)(q 1). (Beispiel: ϕ(15) = 2 4 = 8.) Bemerkung: Die simple Formel in Lemma 1.30 könnte zu dem Schluss verleiten, dass sich ϕ(m) immer leicht berechnen lässt. Aber Achtung: Man muss dazu die Menge der Primzahlen kennen, die in m vorkommen. Dies läuft darauf hinaus, das Faktorisierungsproblem für m zu lösen, und hierfür kennt man keine ezienten Algorithmen. Tatsächlich ist auch kein ezienter Algorithmus bekannt, der es erlaubt, ϕ(m) aus m zu berechnen. Wir können den kleinen Satz von Fermat (Fakt 1.25) auf den Fall beliebiger m verallgemeinern. 21

Satz 1.31 Satz von Euler Für m 2 und x mit ggt(m, x) = 1 gilt: x ϕ(m) mod m = 1. Beweis: Der Beweis läuft exakt wie der Beweis des kleines Satzes von Fermat. Sei x mit ggt(m, x) = 1 gegeben. Da wir modulo m rechnen, können wir x durch x mod m ersetzen, d. h., wir können annehmen, dass 1 x < m gilt. Betrachte die Abbildung g x : Z m s xs mod m Z m. (Um zu sehen, dass diese Abbildung wohldeniert ist, erinnere man sich, dass mit x und s auch xs teilerfremd zu m ist.) Diese Abbildung ist injektiv, weil für das multiplikative Inverse y von x in Z m die Gleichung y g x (s) mod m = yxs mod m = s gilt. Weil Z m endlich ist, muss die Abbildung g x sogar bijektiv sein. Das heiÿt: {g x (s) s Z m} = Z m. Daher: s g x (s) xs x ϕ(m) s (mod m). s Z m s Z m s Z m s Z m Die Zahl ( s Z s) mod m ist teilerfremd zu m, hat also ein multiplikatives Inverses m z in Z m. Wenn wir beide Seiten der Gleichung mit z multiplizieren, erhalten wir 1 x ϕ(m) (mod m). 2 Primzahltest und Primzahlerzeugung 2.1 Der Miller-Rabin-Primzahltest In diesem Abschnitt lernen wir einen randomisierten Algorithmus kennen, der es erlaubt, zu einer gegebenen Zahl n zu entscheiden, ob n eine Primzahl ist oder nicht. Ein idealer Primzahltest sieht so aus: Eingabe: Eine natürliche Zahl n 3. Ausgabe: 0, falls n eine Primzahl ist; 1, falls n zusammengesetzt ist. Wozu braucht man Primzahltests? Zunächst ist die Frage Ist n eine Primzahl? eine grundlegende mathematisch interessante Fragestellung. Spätestens mit dem Siegeszug des RSA-Kryptosystems (siehe spätere Kapitel) hat sich die Situation jedoch dahin entwickelt, dass man Algorithmen benötigt, die immer wieder neue vielzirige Primzahlen (etwa mit 512 oder 1024 Bits 4 bzw. 155 oder 310 Dezimalziern) bereitstellen 4 http://www.rsa.com/rsalabs/node.asp?id=2218 am 29.12.2012: RSA Laboratories current- 22

können. Den Kern dieser Primzahlerzeugungs-Verfahren (siehe Abschnitt 2.2) bildet ein Verfahren, das eine gegebene Zahl n darauf testet, ob sie prim ist. Ein naiver Primzahltest (versuchsweise Division), der dem brute-force-paradigma folgt, ndet durch direkte Division der Zahl n durch 2, 3, 4,..., n heraus, ob n einen nichttrivialen Teiler hat. Man kann dieses Verfahren durch einige Tricks beschleunigen, aber die Rechenzeit wächst dennoch mit Θ( n). Dies macht es für Zahlen mit mehr als 40 Dezimalstellen praktisch undurchführbar, von Zahlen mit mehr als 100 Dezimalstellen ganz zu schweigen. (Achtung: Damit wird nichts über die Qualität anderer Faktorisierungsalgorithmen gesagt. Es gibt andere, sehr fortgeschrittene Faktorisierungsalgorithmen, die bei entsprechendem Zeitaufwand und mit sehr leistungsstarken Rechnern auch noch mit 200-stelligen Zahlen zurechtkommen. Für Information zu früheren und aktuelleren Faktorisierungserfolgen siehe z. B. http://en.wikipedia.org/wiki/rsa_numbers.) In diesem Abschnitt beschreiben wir den randomisierten Primzahltest von Miller- Rabin. Dabei handelt es sich um einen Monte-Carlo-Algorithmus mit einseitigem Fehler. Das heiÿt: Auf Eingaben n, die Primzahlen sind, wird immer 0 ausgegeben; auf Eingaben n, die zusammengesetzt sind, gibt es eine gewisse (von n abhängige) Wahrscheinlichkeit, dass die Ausgabe 0, also falsch ist. Für kein zusammengesetztes n ist diese Wahrscheinlichkeit gröÿer als die Fehlerschranke 1. Wir beweisen nur die 4 Fehlerschranke 1. Im Beweis benutzen wir einfache zahlentheoretische und gruppentheoretische Überlegungen. Eine herausragende Eigenschaft des Miller-Rabin-Tests 2 ist seine Ezienz. Wir werden sehen, dass selbst bei Verwendung der Schulmethoden für Multiplikation und Division die Bitkomplexität des Primzahltests nur O((log n) 3 ) ist. Bemerkung: Der Miller-Rabin-Algorithmus stammt aus dem Jahr 1977; er folgte einem kurz vorher vorgestellten anderen randomisierten Primzahltest (Solovay- Strassen-Test). Für diesen und andere randomisierte Primzahltests (z. B. Lucas-Lehmer-Test) sei auf die Literatur verwiesen. Im Jahr 2002 stellten Agarwal, Kayal und Saxena einen deterministischen Primzahltest mit polynomieller Rechenzeit vor. (Die Rechenzeit ist z. B. durch O((log n) 7,5 ) beschränkt.) Dieser Algorithmus stellte insofern einen gewaltigen Durchbruch dar, als er ein Jahrhunderte altes oenes Problem löste. Andererseits ist seine Laufzeit im Vergleich etwa zu dem hier diskutierten randomisierten Verfahren so hoch, dass nach wie vor die randomisierten Algorithmen ly recommends key sizes of 1024 bits for corporate use and 2048 bits for extremely valuable keys like the root key pair used by a certifying authority (see Question 4.1.3.12). Several recent standards specify a 1024-bit minimum for corporate use. Dabei bedeutet key size die Bitanzahl eines Produkts n = p q für Primzahlen p und q mit jeweils der halben Länge. 23

benutzt werden, um für kryptographische Anwendungen Primzahlen zu erzeugen. Da gerade Zahlen leicht zu erkennen sind, beschränken wir im folgenden unsere Überlegungen auf ungerade Zahlen n 3. 2.1.1 Der Fermat-Test Wir erinnern uns an den kleinen Satz von Fermat (Fakt 1.25): n ist Primzahl und 1 a < n a n 1 mod n = 1. Wir können diese Aussage dazu benutzen, um Belege oder Zertikate dafür anzugeben, dass eine Zahl n zusammengesetzt ist: Wenn wir eine Zahl a mit 1 a < n nden, für die a n 1 mod n 1 gilt, dann ist n denitiv keine Primzahl. Denition 2.1 Sei n eine ungerade Zahl. Eine Zahl a mit 1 a < n 1 heiÿt ein F-Zeuge für n, wenn a n 1 mod n 1 gilt. Wenn n zusammengesetzt ist und für a mit 1 a < n 1 die Gleichheit a n 1 mod n = 1 gilt, heiÿt a ein F-Lügner für n. Wenn a ein F-Zeuge für n ist, kann n keine Primzahl sein. Eigentlich ist a also ein Zeuge (oder Beweis oder Zertikat oder Beleg) für die Tatsache, dass n keine Primzahl ist. Wir bemerken, dass ein F-Zeuge belegt, dass es Faktoren k, l > 1 gibt mit n = k l, dass aber solche Faktoren nicht angegeben oder gefunden werden müssen. Dies wird von Primzahltests auch nicht verlangt und normalerweise auch nicht geleistet. Man sieht sofort, dass 1 und n 1 immer F-Lügner sind: Es gilt 1 n 1 mod n = 1 und (n 1) n 1 ( 1) n 1 1 (mod n), weil n 1 gerade ist. Für jede zusammengesetzte Zahl n gibt es mindestens einen F-Zeugen. Wir erinnern uns, dass n genau dann zusammengesetzt ist, wenn {1,..., n 1} Z n gilt. Lemma 2.2 Wenn n keine Primzahl ist, ist jedes a {1,..., n 1} Z n ein F-Zeuge. Beweis: Wenn a n 1 mod n = 1 gilt, haben wir nach Fakt 1.18(i) a n 1 1 = yn für eine ganze Zahl y. Dann ist ggt(n, a) ein Teiler von 1, also muss a Z n gelten. Leider ist für manche zusammengesetzten Zahlen n die Menge {1,..., n 1} Z n äuÿerst dünn. Wenn zum Beispiel n = pq für zwei Primzahlen p und q ist, dann gilt gcd(a, n) > 1 genau dann wenn p oder q ein Teiler von a ist. Es gibt genau 24

Vielfache von 7 7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84 Vielfache von 13 13, 26, 39, 52, 65, 78 F-Zeugen in Z 91 2, 5, 6, 8, 11, 15, 18, 19, 20, 24, 31, 32, 33, 34, 37, 41, 44, 45, 46, 47, 50, 54, 57, 58, 59, 60, 67, 71, 72, 73, 76, 80, 83, 85, 86, 89 F-Lügner 1, 3, 4, 9, 10, 12, 16, 17, 22, 23, 25, 27, 29, 30, 36, 38, 40, 43, 48, 51, 53, 55, 61, 62, 64, 66, 68, 69, 74, 75, 79, 81, 82, 87, 88, 90 Tabelle 3: F-Zeugen und F-Lügner für n = 91 = 7 13 p + q 2 solche Zahlen a in {1,..., n 1}, was gegenüber n sehr klein ist, wenn p und q annähernd gleich groÿ sind. Ein Beispiel: n = 91 = 7 13. Tabelle 3 zeigt, dass es 18 Vielfache von 7 und 13 gibt (für gröÿere p und q wird der Anteil dieser oensichtlichen F-Zeugen noch kleiner sein), und daneben weitere 36 F-Zeugen und 36 F-Lügner in {1, 2,..., 90}. In diesem Beispiel gibt es um einiges mehr F-Zeugen als F-Lügner. Wenn dies für alle zusammengesetzten Zahlen n der Fall wäre, wäre es eine elegante randomisierte Strategie, einfach zufällig nach F-Zeugen zu suchen. Dies führt zu unserem ersten Versuch für einen randomisierten Primzahltest. 25

Algorithmus 2.1 Fermat-Test Eingabe: Ungerade Zahl n 5. Methode: 1 Wähle a zufällig aus {2,..., n 2}; 2 if a n 1 mod n 1 then return 1 else return 0. Die Laufzeitanalyse liegt auf der Hand: Der teuerste Teil ist die Berechnung der Potenz a n 1 mod n durch schnelle Exponentiation, die nach den Ergebnissen von Lemma 1.9 O(log n) arithmetische Operationen und O((log n) 3 ) Bitoperationen benötigt. Weiter ist es klar, dass der Algorithmus einen F-Zeugen gefunden hat, wenn er 1 ausgibt, dass in diesem Fall also n zusammengesetzt sein muss. Umgekehrt ausgedrückt: Wenn n eine Primzahl ist, gibt der Fermat-Test garantiert 0 aus. Für n = 91 wird das falsche Ergebnis 0 ausgegeben, wenn als a einer der 34 F-Lügner auÿer 1 und 90 gewählt wird. Die Wahrscheinlichkeit hierfür ist 34 = 17 0,3864. 88 44 Für viele zusammengesetzte Zahlen n gibt es reichlich F-Zeugen, so dass der Fermat- Test für diese n mit konstanter Wahrscheinlichkeit das korrekte Ergebnis liefert. Der Beweis benutzt ein einfaches Ergebnis aus der Gruppentheorie. 5 Fakt 2.3 Wenn G eine endliche Gruppe und H eine Untergruppe von G ist, dann ist H ein Teiler von G. Insbesondere gilt: Wenn H echte Untergruppe von G ist, dann gilt H 1 2 G. (Der Beweis hierfür läuft etwa so: Die Äquivalenzrelation H auf G, die durch a H b b 1 a H deniert ist, zerlegt die Menge G in Äquivalenzklassen ah = {ah h H}, die sogenannten linken Nebenklassen. Die Anzahl G : H dieser Nebenklassen heiÿt der Index von H in G. Alle diese Nebenklassen haben die gleiche Kardinalität, weil für jedes a die Funktion H h ah ah eine Bijektion zwischen H und ah ist. Daraus folgt: G = H (G : H).) Hilfreich ist noch das folgende Untergruppenkriterium für endliche Gruppen. 5 Wir betrachten im Folgenden die Gruppe Z n mit Multiplikation modulo n als Operation und der 1 als neutralem Elment. 26

Fakt 2.4 Wenn G eine endliche Gruppe mit neutralem Element 1 ist und A eine Teilmenge von G, derart dass (i) 1 A und (ii) A unter der Gruppenoperation von G abgeschlossen ist, d. h., wenn für a, b A auch immer ab A gilt, dann ist A eine Untergruppe von G. (Zum Beweis muss man sich nur überlegen, dass für jedes a A auch das Inverse a 1 in A liegt. Das sieht man so: Weil G endlich ist, können die Elemente 1 = a 0, a, a 2, a 3,... nicht alle verschieden sein. Also gibt es i < j mit a i = a j. Dann ist a j i = 1, also a a j i 1 = 1, also a j i 1 invers zu a, und a j i 1 A wegen der Abgeschlossenheit.) Nun können wir das Verhalten des Fermat-Tests für gutmütige Eingabezahlen n analysieren. Satz 2.5 Sei n 9 eine ungerade zusammengesetzte Zahl. Wenn es mindestens einen F-Zeugen a Z n gibt, dann liefert der Fermat-Test auf Eingabe n mit Wahrscheinlichkeit gröÿer als 1 die korrekte Antwort 1. 2 Beweis: In Lemma 2.2 haben wir gesehen, dass die Menge L F n = {a 1 a < n, a n 1 mod n = 1} der F-Lügner für n eine Teilmenge von Z n ist. Wir zeigen, dass L F n sogar eine Untergruppe von Z n ist. Hierzu wenden wir Fakt 2.4 an: (i) 1 L F n, weil 1 n 1 = 1; (ii) L F n ist unter der Gruppenoperation in Z n abgeschlossen, nämlich der Multiplikation modulo n, denn wenn a n 1 mod n = 1 und b n 1 mod n = 1, folgt (ab) n 1 a n 1 b n 1 1 1 1 (mod n). Aus der Annahme, dass es in Z n mindestens einen F-Zeugen gibt, erhalten wir, dass L F n eine echte Untergruppe von Z n ist. Mit Fakt 2.3 folgt: L F n ϕ(n)/2 (n 2)/2. 27

Daher ist die Wahrscheinlichkeit, dass ein aus {2,..., n 2} zufällig gewähltes a in L F n {1, n 1} liegt, höchstens (n 2)/2 2 n 3 = n 6 2(n 3) < 1 2, (3) wie gewünscht. Wie üblich verringern wir die Fehlerwahrscheinlichkeit durch Wiederholung. Algorithmus 2.2 Iterierter Fermat-Test Eingabe: Ungerade Zahl n 5, eine Zahl l 1. Methode: 1 repeat l times 2 a ein zufälliges Element von {2,..., n 2}; 3 if a n 1 mod n 1 then return 1; 4 return 0. Wenn die Ausgabe 1 ist, hat der Algorithmus einen F-Zeugen für n gefunden, also ist n zusammengesetzt. D. h.: Wenn n eine Primzahl ist, ist die Ausgabe 0. Andererseits: Wenn n zusammengesetzt ist, und es mindestens einen F-Zeugen a Z n gibt, dann ist nach Satz 2.5 die Wahrscheinlichkeit für die falsche Ausgabe 0 höchstens ( 1 l 2) = 2 l. Indem wir l genügend groÿ wählen, können wir die Fehlerwahrscheinlichkeit so klein wie gewünscht einstellen. Wenn es darum geht, aus einem genügend groÿen Bereich zufällig gewählte Zahlen darauf zu testen, ob es sich um eine Primzahl handelt, dann ist der Fermat-Test eine sehr eziente und zuverlässige Methode. Wir kommen darauf im folgenden Abschnitt nochmals zurück. Wenn man allerdings über die Herkunft der zu testenden Zahl n keine Information hat und eventuell damit rechnen muss, dass jemand (ein Gegenspieler) absichtlich eine besonders schwierige Eingabe vorlegt, dann stöÿt der Fermat-Test an eine Grenze. Es gibt nämlich widerspenstige zusammengesetzte Zahlen, denen man mit diesem Test nicht beikommen kann, weil alle Elemente von Z n F-Lügner sind. Mit diesen befasst sich der folgende Abschnitt. 28

2.1.2 Carmichael-Zahlen Denition 2.6 Eine ungerade zusammengesetzte Zahl n heiÿt eine Carmichael-Zahl, wenn für alle a Z n die Gleichung a n 1 mod n = 1 gilt. Die kleinste Carmichael-Zahl ist 561 = 3 11 17. Weitere kleine Carmichael-Zahlen sind 1105 = 5 13 17 und 1729 = 7 13 19. Erst im Jahr 1994 wurde bewiesen, dass es unendlich viele Carmichael-Zahlen gibt, genauer: wenn x genügend groÿ ist, dann gibt es in {n n x} mehr als x 2/7 Carmichael-Zahlen. Die aktuell beste bekannte untere Schranke ist x 1/3. Genaueres ist über den Anteil von Carmichael-Zahlen an den zusammengesetzten Zahlen nicht bekannt. (Alles deutet aber darauf hin, dass sie eher selten sind.) Wenn wir dem Fermat-Test eine Carmichael-Zahl n als Eingabe geben, ist die Wahrscheinlichkeit für die falsche Antwort 0 genau ϕ(n) 2 ϕ(n) n 3 n = ( 1 1 ). p p prim p teilt n Diese Wahrscheinlichkeit liegt nahe an 1, wenn n nur wenige und relativ groÿe Primfaktoren hat. An solchen Carmichael-Zahlen besteht etwa im Bereich der Zahlen im Bereich [10 15, 10 16 ] kein Mangel, wie ein Blick in entsprechende Tabellen zeigt. Zum Beispiel ist n = 651693055693681 = 72931 87517 102103 eine Carmichael-Zahl mit ϕ(n)/n > 0.99996. Der Wiederholungstrick zur Wahrscheinlichkeitsverbesserung hilft hier leider auch nicht, denn wenn etwa p 0 der kleinste Primfaktor von n ist, und n nur 3 oder 4 Faktoren hat, dann sind Ω(p 0 ) Wiederholungen nötig, um die Fehlerwahrscheinlichkeit auf 1 2 zu drücken. Sobald p 0 mehr als 30 Dezimalstellen hat, ist dies undurchführbar. Für einen zuverlässigen, ezienten Primzahltest, der für alle Eingabezahlen funktioniert, müssen wir über den Fermat-Test hinausgehen. Interessanterweise ist dies praktisch ohne Ezienzverlust möglich. Für spätere Benutzung stellen wir noch eine Hilfsaussage über Carmichael-Zahlen bereit. Lemma 2.7 Wenn n eine Carmichael-Zahl ist, dann ist n keine Primzahlpotenz. 29

Beweis: Wir beweisen die Kontraposition: Wenn n = p l für eine ungerade Primzahl p und einen Exponenten l 2 ist, dann ist n keine Carmichael-Zahl. Dazu genügt es, eine Zahl a Z n anzugeben, so dass a n 1 mod n 1 ist. Wir denieren: a := p l 1 + 1. (Wenn z. B. p = 7 und l = 3 ist, ist n = 343 und a = 49 + 1 = 50.) Man sieht sofort, dass a < p l = n ist, und dass a nicht von p geteilt wird, also a und n teilerfremd sind; also ist a Z n. Nun rechnen wir modulo n, mit der binomischen Formel: a n 1 (p l 1 + 1) n 1 ( ) n 1 (p l 1 ) j (4) j 0 j n 1 1 + (p l 1) p l 1 (mod n). (Die letzte Äquivalenz ergibt sich daraus, dass für j 2 gilt, dass (l 1)j l ist, also der Faktor (p l 1 ) j = p (l 1)j durch n = p l teilbar ist, also modulo n wegfällt.) Nun ist p l 1 nicht durch p teilbar, also ist (p l 1) p l 1 nicht durch n = p l teilbar. Damit folgt aus (4), dass a n 1 1 (mod n) ist, also a n 1 mod n 1. Folgerung: Jede Carmichael-Zahl n lässt sich als n = n 1 n 2 schreiben, wo n 1 und n 2 teilerfremde ungerade Zahlen 3 sind. (Eine etwas genauere Untersuchung, die wir hier aber nicht benötigen, ergibt, dass die Primfaktoren einer Carmichael-Zahl n alle verschieden sein müssen, und dass n mindestens drei Primfaktoren haben muss. Aus dieser Tatsache kann man entnehmen, dass Carmichael-Zahlen eher selten sind.) 2.1.3 Nichttriviale Quadratwurzeln der 1 Lemma 2.8 Wenn p eine ungerade Primzahl ist, dann gilt b 2 mod p = 1, b Z p b {1, 1} = {1, p 1}. genau für Beweis: Oensichtlich gilt für jedes beliebige m 2, dass 1 2 mod m = 1 und (m 1) 2 mod m = (m(m + 2) + 1) mod m = 1 ist. Nun sei b {0,..., p 1} beliebig mit b 2 1 (mod p). Dann gilt (b 2 1) 0 (mod p), also ist p ein Teiler von b 2 1 = (b + 1)(b 1). Nach Fakt 1.11 ist p Teiler von b + 1 oder Teiler von b 1. Im ersten Fall ist b 1 (mod p), im zweiten Fall ist b 1 (mod p). 30