Institut für Mathematik Universität Hannover Proseminar: Zahlentheorie und Kryptographie Prof. Dr. C. Bessenrodt Carmichael-Zahlen und Miller-Rabin-Test Felix Pape 15. Mai 2003 1 Carmichael-Zahlen 1.1 Überleitung Der Fermatsche Primzahltest ist eine Möglichkeit, Primzahlen auszusieben“, denn eine ” natürliche Zahl n ≥ 2 ist keine Primzahl, wenn für ein a mit ggT(a, n) = 1 gilt: an−1 6≡ 1 mod n. Andernfalls erfüllt n den Fermatschen Primzahltest bzgl. der Basis a. 1.2 Definition der Carmichael-Zahlen Es gibt Zahlen n, die den Fermatschen Primzahltest für jedes a mit ggT(a, n) = 1 bestehen, diese haben einen eigenen Namen: Definition 1.1 Eine zusammengesetzte natürliche Zahl n heißt Carmichael-Zahl, wenn für alle natürlichen Zahlen a mit ggT(a, n) = 1 gilt an−1 ≡ 1 mod n. Satz 1.2 (Korselts Kriterium) Genau dann ist n eine Carmichael-Zahl, wenn n = q1 q2 . . . qk mit k ≥ 3, wobei q1 , q2 , . . . , qk verschiedene ungerade Primzahlen mit qi − 1|n − 1 (i = 1, 2, . . . , k) sind. Beweis: ’⇐’ Es sei n von der angegebenen Form und a zu n teilerfremd. Dann ist a auch zu qi teilerfremd und da qi eine ungerade Primzahl ist, können wir schreiben: aqi −1 ≡ 1 mod qi . Es sei t ∈ N mit (qi − 1) · t = n − 1. Dann folgt: (aqi −1 )t ≡ 1t mod qi , also (a(n−1) ≡ 1 mod qi (i = 1, . . . , k). Die qi sind teilerfremd und damit an−1 ≡ 1 mod n (chinesischer Restsatz). ’⇒’ Es sei an−1 ≡ 1 mod n für jedes zu n teilerfremde a. Zeige nun: 1. n ist ungerade; 2. n ist quadratfrei; 3. n besitzt mindestens drei Primfaktoren; 4. für jeden Primfaktor p von n gilt p − 1|n − 1. zu 1.: Es sei n gerade und wähle a = −1. Aus (−1)n−1 = −1 ≡ 1 mod n folgt n|2. Diese Bedingung erfüllt keine gerade Zahl. zu 2.: Es sei p ein Primteiler von n und pα |n. Dann ist an−1 ≡ 1 mod pα . Da n ungerade und daher p 6= 2 existieren primitive Restklassen mod pα , also gibt es ein 2 c ∈ (Z/(pα ))× mit ord(c) = ord((Z/(pα ))× ) = ϕ(pα ). Nach dem Chinesischen Restsatz gilt: (Z/(n))× ∼ = (Z/(pα ))× × (Z/(n/pα ))× =: B Dann ist (c, 1) ∈ B, und es gilt ord(c, 1) = ord(c). Aufgrund der Isomorphie gibt es ein b ∈ (Z/(n))× mit ord(b) = ord(c) = ϕ(pα ). Also α) bϕ(p ≡1 mod n. (1) Da b6 | n gilt nach Voraussetzung (n ist Carmichael-Zahl): bn−1 ≡ 1 mod n. (2) Also nach (1) und (2) ϕ(pα )|(n − 1). Aus p|n und ϕ(pα ) = pα−1 (p − 1)|n − 1 folgt α = 1, denn sonst würde p sowohl n teilen als auch n − 1 (Widerspruch). zu 3.: Ist n = pq mit Primzahlen p, q, so gilt p − 1|n − 1 und q − 1|n − 1 (Begründung siehe Teil 2., α = 1). Wegen n − 1 = pq − 1 = p(q − 1) + (p − 1) folgt p − 1|q − 1 (denn p − 1|n − 1 und p − 1|p − 1 und p − 16 | p) und analog q − 1|p − 1, also p = q. Dies ist im Widerspruch zu 2. Daher kann eine Carmichael-Zahl nicht das Produkt von zwei ungeraden Primzahlen sein, besitzt also mindestens drei ungerade Primfaktoren. zu 4.: Folgt direkt aus Teil 2 (α = 1). Satz 1.3 Es existieren unendlich viele Carmichael-Zahlen. Dies wurde 1994 bewiesen von William Alford, Andrew Granville und Carl Pomerance (s. [4]). Satz 1.4 (Konstruktionssatz von Carmichael-Zahlen) Sind für eine natürliche Zahl u ≥ 1 die drei Zahlen p1 = 6u + 1, p2 = 12u + 1, p3 = 18u + 1 prim, so ist n = p1 p2 p3 = (6u + 1)(12u + 1)(18u + 1) eine Carmichael Zahl. Beweis: Ausmultiplizieren liefert: n−1 = 36u(36u2 +11u+1), was sofort pi −1|n−1 liefert. Nach Konstruktion ist n ungerade, quadratfrei und das Produkt von drei verschiedenen Primzahlen, daher nach Satz 1.2 eine Carmichael-Zahl. Bemerkung: Dieser Satz allein beweist nicht, dass es unendlich viele Carmichael-Zahlen gibt. Denn bisher konnte noch nicht bewiesen werden, dass es unendlich viele Primzahlentripel der Form 6u + 1, 12u + 1, 18u + 1 gibt. 2 Der Miller-Rabin-Test 2.1 Überblick Der Miller-Rabin-Test stellt eine Verfeinerung des Fermatschen Primzahltests dar. Als erstes werden zwei Sätze bewiesen, deren Aussagen das Fundament des Miller-Rabin 3 Tests darstellen, danach wird der Test formal dargestellt und an einigen Beispielen erläutert. Im Anschluß werden durch einige Überlegungen motiviert die Wahrscheinlichen Primzahlen definiert. Den Abschluß bilden Bemerkungen bezüglich der Bedeutung des Miller-Rabin Tests als Verfahren zum Ermitteln, ob eine Zahl keine Primzahl ist. Lemma 2.1 Ist p eine Primzahl, a eine Zahl mit a2 ≡ 1 mod p und a 6≡ 1 mod p, so gilt a ≡ −1 mod p. Beweis: Es ist 0 ≡ a2 − 1 = (a − 1)(a + 1) mod p. Nach Voraussetzung ist a 6≡ 1 mod p, d.h. p teilt nicht a − 1 und da p Primzahl gilt damit p|a + 1, d.h. a ≡ −1 mod p. Lemma 2.2 Sei p eine ungerade Primzahl und p − 1 = 2l q mit q ≡ 1 mod 2. Sei a eine Zahl mit ggT(a, p) = 1 und b ≡ aq mod p. Dann gilt für b: Entweder ist b ≡ 1 mod p i oder es gibt ein i mit 0 ≤ i ≤ l − 1 und b2 ≡ −1 mod p. Beweis: Der kleine Satz von Fermat zeigt l 1 ≡ ap−1 ≡ aq·2 ≡ b2 l mod p. 0 Ist b ≡ 1 mod p, so sind wir fertig. Sei also b 6≡ 1 mod p. Zusammengefasst: b2 6≡ 1 mod p l und b2 ≡ 1 mod p, also finden wir einen Index i mit 0 ≤ i ≤ l − 1, so dass b2 i+1 ≡1 mod p, aber i i b2 6≡ 1 mod p. i Damit ist (b2 )2 ≡ 1 mod p, nach Lemma 2.1 also b2 ≡ −1 mod p, was zu zeigen war. Das Lemma zeigt uns eine Eigenschaft von ungeraden Primzahlen. Besitzt eine ungerade Zahl diese Eigenschaft nicht, so kann es keine Primzahl sein. Dies führt uns direkt zum Miller-Rabin-Test. Satz 2.3 (Miller-Rabin-Primzahltest) Sei n eine ungerade natürliche Zahl und n − 1 = 2l q mit q ≡ 1 mod 2. Sei weiter a eine Zahl mit ggT(a, n) = 1. Wir bilden b ≡ aq mod n. Gilt dann b≡1 mod n oder i b2 ≡ −1 mod n für ein i mit 0 ≤ i ≤ l − 1, so sagen wir, n erfüllt den Test bzgl. der Basis a. Erfüllt n den Test nicht, so ist n zusammengesetzt. Im Folgenden wird das Ergebnis des Miller-Rabin-Tests bei verschiedenen Zahlen analysiert. 1. Sei n = 15. Dann ist n − 1 = 2 · 7, l = 1, q = 7 und {a7 : a ∈ (Z/(15))× } = {1, 2, 4, 7, 8, 11, 13, 14} = {Z/(15))× , nur 1 und 14 ≡ −1 erfüllen dann die Aussage von Lemma 2.2, denn b ≡ 1 oder b ≡ −1. 4 2. 341 = 11 · 31 ist eine Pseudoprimzahl zur Basis 2. Nun ist 341 − 1 = 22 · 85. Wählt man a = 2 und b ≡ a85 ≡ 32 mod 341, so ist b2 ≡ 1 mod 341, also kann 341 nach dem Lemma 2.2 keine Primzahl sein. 3. 561 ist die erste Carmichael-Zahl, sie erfüllt 2560 ≡ 1 mod 561, ist aber zusammengesetzt: 561 = 3 · 11 · 17. Nun ist 561 − 1 = 24 · 35. Wir wählen a = 2 und erhalten b ≡ 263, b2 ≡ 166, b4 ≡ 67, b8 ≡ 1 mod 561, also kann 561 keine Primzahl sein. 4. Wir betrachten n = 10500 + 961, erhalten n − 1 = 26 · q mit einer ungeraden Zahl q. Wir wählen a = 2 und berechnen dann b ≡ aq mod n und erhalten: b 6≡ ±1 mod n, b2 6≡ ±1 mod n, b4 ≡ −1 mod n, wir erhalten keinen Widerspruch zum Lemma 2.2: möglicherweise ist n eine Primzahl. Definition 2.4 (Starke Pseudoprimzahlen) Eine zusammengesetzte ungerade natürliche Zahl n heißt starke Pseudoprimzahl zur Basis a, wenn n den Miller-Rabin-Test bzgl. der Basis a besteht. Gibt man sich ein n vor und wählt ein a, so dass ggT(a, n) = 1, wie wahrscheinlich ist es, dass der Miller-Rabin-Test falsch liegt“ , also n zusammengesetzt ist und dennoch ” n den Test besteht. Dies ist Inhalt des nächsten Satzes. Satz 2.5 Sei pn die Wahrscheinlichkeit, dass der Miller-Rabin-Test falsch liegt“, also ” dass man zufällig ein a mit ggT(a, n) = 1 auswählt, zu dem n starke Pseudoprimzahl ist. Für alle n ∈ N gilt: pn < 1 4 Die Wahrscheinlichkeit, dass man zufällig 25 Zahlen a mit ggT(a, n) = 1 auswählt, zu denen n starke Pseudoprimzahl ist, beträgt weniger als (1/4)25 . Die Wahrscheinlichkeit, 1 unter einer Milliarde Zahlen ein solches n zu finden, ist geringer als 1000000 . Bezieht man dies auf die Praxis, dann ist es wesentlich wahrscheinlicher, dass man durch das Missfunktionieren von Hardware oder durch Kosmische Strahlung zu einem falschen Ergebnis kommt (s. auch [2]). Definition 2.6 Eine Zahl p, die keine kleinen Teiler hat und die einige Miller-RabinTests erfolgreich bestanden hat, nennt man eine wahrscheinliche Primzahl. (Die Anzahl der Tests kann man dabei je nach Bedarf festlegen.) Bemerkungen: 5 1. Für viele Anwendungen werden einfach wahrscheinliche Primzahlen benutzt, da ein Miller-Rabin-Test einfach zu programmieren und schnell in der Ausführung ist. 2. Auch Computeralgebrasysteme wie Maple (bei den Funktionen isprime oder ifactor) oder Pari arbeiten (nur) mit wahrscheinlichen Primzahlen. Bei Pari werden normalerweise 10 Miller-Rabin-Tests gemacht, Maple benutzt einen etwas modifizierten Test. 3. Es gibt auch Methoden um zu zeigen, dass eine große Zahl eine Primzahl ist, z. B. der Jacobi-Summen-Test. Für die Praxis haben sie aber zwei Nachteile: sie sind einmal langsamer und zum zweiten sind sie wesentlich komplexer und aufwendiger, so daß Programierfehler wahrscheinlicher werden. Literatur [1] H. Scheid: Zahlentheorie, BI 1991 [2] Knuth, The Art of Computer Programming, Vol. 2 [3] W. Ruppert, Vorlesungsskripten zur Zahlentheorie und Kryptographie [4] Alford, Granville and Pomerance, in Annals of Mathematics, 140 (1994) 6