Probabilistische Primzahltests Daniel Tanke 11. Dezember 2007 In dieser Arbeit wird ein Verfahren vorgestellt, mit welchem man relativ schnell testen kann, ob eine ganze Zahl eine Primzahl ist. Für einen Primzahltest gibt es verschiedene Möglichkeiten der Implementierung. Vom uneffizienten Verfahren der Probedivison, welches hier noch kurz erläutert wird, bis zum Miller-Rabin Test. Diese Tests und deren Laufzeit sind heute vor allem in der Kryptographie (RSA Verschlüsselung) von Bedeutung. 1 1 Verfahren der Probedivision Bemerkung: Für Elemente a, b ∈ N schreibt man a|b (a teilt b), wenn es ein c ∈ N gibt, sodass ac = b gilt. Eine Zahl p ∈ N heißt prim, wenn sich p nicht als Produkt von Elementen aus N\{1,p} darstellen lässt. Zwei Zahlen a und b aus N heißen zueinander relativ prim, wenn ggt(a, b) = 1. Lemma 1.1 Falls n eine positive, zusammengesetzte, natürliche Zahl ist, dann hat n einen √ Primteiler p, der nicht größer als n ist. Beweis: Da n zusammengesetzt ist, kann man n = ab setzen, wobei a, b aus N sind mit √ √ a > 1 und b > 1. Weiters kann man folgern, dass a ≤ n oder b ≤ n, da anderenfalls √ √ n = ab > n n = n gilt. Da a und b Primteiler haben, folgt wegen der Transitivität, dass diese Primteiler auch n teilen [10]. √ Bemerkung: Es reicht nun n durch alle Primzahlen von 2 bis n zu teilen, um n auf Primalität zu testen. Da für sehr große n auch entsprechend große Primzahltabellen zur Verfügung stehen müssen, ist dieses Verfahren in der Praxis zu aufwändig. Testet man eine Zahl n ohne √ Verwendung von Primzahltabellen, ergibt sich eine Laufzeit von O( n), was eine exponentielle √ Laufzeit in Abhängigkeit des Logarithmus darstellt, da O( n) = O(2ld(n)/2 ) gilt [9]. √ Beispiel 1.2 Sei n = 177, dann ist b nc = 13 und man kann schnell sehen, dass 3 | 177. Somit ist 177 keine Primzahl. 2 Fermat Test Satz 2.1 (Kleiner Fermat) Ist p eine Primzahl, so gilt ∀ a ∈ Z, dass ap−1 ≡ 1 (mod p) ist (wobei a relativ prim zu p sein muss). Beweis: Da p eine Primzahl ist, sind alle Elemente in Zp \{0} invertierbar, also auch kürzbar. Man kann für die endliche Gruppe Zp auch schreiben Zp = {0, 1, .., p−1} = {0, a, 2a, .., (p−1)a}. Nun folgt, dass 1 ∗ · · · ∗ (p − 1) ≡ a ∗ 2a ∗ · · · ∗ (p − 1)a ≡ 1 ∗ · · · ∗ (p − 1)ap−1 (mod p) ist, weil nun alle Elemente 1, .., (p − 1) kürzbar sind gilt die Behauptung. Bemerkung: Die Relation ≡ in Zp ist eine Kongruenzrelation d.h. sie ist transitiv, symetrisch, reflexiv und mit der Addition und Multiplikation aus Z verträglich, d.h: [a] + [b] ≡ [a + b] und [a][b] ≡ [ab] (mod p) Bemerkung: Ist p eine Primzahl, so ist Zp \{0} eine zyklische Gruppe bezüglich Multiplikation, d.h es gibt eine Restklasse a, sodass Zp \{0} = {a, a2 , .., ap−1 ≡ 1 (mod p)}. Dieses Element a heißt primitive Restklasse oder Primitivwurzel modulo p [6]. 2 Satz 2.2 (Wilson) Eine Zahl p ist genau dann eine Primzahl, wenn (p − 1)! ≡ −1 (mod p) gilt. Beweis: Gelte nun p |((p − 1)! + 1). Ist 1 < d < p mit d|p, folgt auch d|(p − 1)! und d|1, somit ist d = 1 und p ist prim. Sei p > 2 nun eine Primzahl, so existiert eine primitive Restklase [a]. Dann gilt: (p − 1)! ≡ a · a2 · · · ap−1 ≡ (ap ) p−1 2 ≡a p−1 2 (mod p) p−1 Für x = a 2 folgt aus dem Satz von Fermat, dass x2 ≡ 1 (mod p), nun gilt, dass p|(x2 − 1). Also kann x nur kongruent 1 und -1 (mod p) sein. Da in Zp jede primitive Äquivalenzklasse die Ordnung φ(p) = p − 1 hat, folgt, dass (p − 1)! ≡ −1 (mod p) gilt [5]. Bemerkung: Die beiden oberen Sätze haben für Primzahltests großer Zahlen nur bedingt Bedeutung. Der Satz von Fermat ist ein notwendiges Kriterium für die Primzahleigenschaft, aber er ist nicht hinreichend und somit kann man nicht durch einen bestandenen Fermat Test auf eine Primzahl schließen. Wir werden noch sehen, dass dieser Primzahltest uns bei ganz bestimmten Zahlen große Schwierigkeiten bereiten wird. Der Satz von Wilson ist für große Zahlen viel zu aufwändig. Beispiel 2.3 Sei p = 6 und a = 5. Aus 55 6≡ 1 (mod 6) folgt, dass p keine Primzahl ist. Wählt man aber a = 1 folgt, dass 15 ≡ 1 (mod 6). Dies führt zur Definition einer Pseudoprimzahl. Beispiel 2.4 Sei p = 7, dann sieht man, dass 7|(6! +1), da 7 · 103 = (6! +1) = 721. Wählt man aber p = 4, kommt man zum Resultat, dass 4 nicht 7 teilt, also kann man laut Satz 2.2 darauf schließen, dass p keine Primzahl ist. 3 Pseudoprimzahlen und Carmichaelzahlen Definition 3.1 Wenn n eine ungerade, zusammengesetzte, natürliche Zahl ist und die Gleichung an−1 ≡ 1 (mod n) mit ggt(a, n) = 1 erfüllt ist, dann nennen wir n eine Pseudoprimzahl zur Basis a. Bemerkung: Wir sehen, dass man bei einem Primzahltest mit dem Satz von Fermat für die Zahl n, viele verschiedene Basen a wählen kann. Es erscheint uns als wahrscheinlich, dass eine Zahl n, die den Satz von Fermat für viele Basen erfüllt, nun wirklich prim ist. Aber es gibt zusammengesetzte Zahlen n, die diesen Test für alle möglichen Basen a bestehen. Definition 3.2 Eine zusammengesetzte, natürliche Zahl n heißt Carmichaelzahl, wenn für alle Basen a mit ggt(a, n) = 1 die Bedingung an−1 ≡ 1 (mod n) gilt. Satz 3.3 Eine ungerade, zusammengesetzte Zahl n ≥ 3 ist genau dann eine Carmichaelzahl, wenn für n = p1 · · · pk mit k ≥ 3, wobei n bezüglich der Primfaktorzerlegung quadratfrei ist, die Bedingung pi − 1|n − 1 für 1 ≤ i ≤ k gilt. 3 Beweis: ⇐= Sei nun n entsprechend der obigen Form, zu zeigen ist, dass n eine Carmichaelzahl ist. Es gilt laut Fermat für eine zu n teilerfremde Zahl a, wobei p ein Primteiler von n ist: ap−1 ≡ 1 (mod p) weil nun pi − 1|n − 1, wobei 1 ≤ i ≤ k gilt folgt: an−1 ≡ 1 (mod p) und nun folgt aus der Quadratfreiheit der Primfaktorzerlegung von n: an−1 ≡ 1 (mod n) Also handelt es sich um eine Carmichaelzahl. =⇒ Sei nun n ≥ 3 eine Carmichaelzahl, dann gilt laut Definition, dass an−1 ≡ 1 (mod n) für alle a mit ggt(a, n) = 1. Sei p ein Primfaktor aus der Zerlegung von n. Mit dem Chinesischen Restsatz lässt sich folgern, dass auch an−1 ≡ 1 (mod p) und aus dem Satz von Fermat gilt weiters, dass ap−1 ≡ 1 (mod p) α gilt. Sei α maximal, sodass pα |n, so kann man folgern, dass aφ(p ) ≡ 1 (mod p) und somit teilt φ(pα ) die Zahl n − 1. Da φ(pα ) = pα−1 (p − 1) kann aus p|n und pα−1 (p − 1)|(n − 1) darauf schließen, dass α = 1 ist. Somit wurde bereits gezeigt, dass die Primfaktorzerlegung quadratfrei ist und die Bedingung p − 1|n − 1 gilt [10], [5]. Angenommen n = qp, wobei n nun aus genau zwei Primfaktoren mit p > q bestehen soll. Wie oben schon erläutert gilt, dass p − 1|n − 1 =⇒ p − 1|pq − 1 =⇒ p − 1|(p − 1)q + q − 1 Somit teilt p − 1 die Zahl q − 1. Dies steht aber im Widerspruch zu p > q und deshalb besteht eine Carmichaelzahl aus mindestens drei Primfaktoren [2]. Beispiel 3.4 Die kleinste Carmichaelzahl ist 561 = 3 · 11 · 17. Man sieht, dass sie aus 3 verschiedenen Primteilern besteht und weiters, dass 2|560, 10|560 und 16|560. Die weiteren Carmichaelzahlen bis 104 sind [7]: 1105 = 5 · 13 · 17 1729 = 7 · 13 · 19 2465 = 5 · 17 · 29 2821 = 7 · 13 · 31 6601 = 7 · 23 · 41 8911 = 7 · 19 · 67 Satz 3.5 (Konstruktionssatz für Carmichaelzahlen) Sei u eine natürliche Zahl und die folgenden Zahlen: p1 = 6u + 1 p2 = 12u + 1 p3 = 12u + 1 seien prim, so ist n = p1 · p2 · p3 eine Carmichaelzahl. Beweis: Durch ausmultiplizieren erlangt man für n − 1 die Darstellung 36u(36u2 + 11u + 1) und somit teilt p − 1 die Zahl n − 1 für alle Primfaktoren p. Weiters besteht n aus 3 Primfaktoren und ist quadratfrei und somit ist n nach Satz 3.3 eine Carmichaelzahl [1]. 4 Beispiel 3.6 Die kleinste Carmichaelzahl, die man mit dem obigen Satz konstruieren kann ist 1729 = 7 · 13 · 19 für u = 1. Man kann aber wie man hier sieht nicht alle Carmichaelzahlen mit diesem Verfahren erzeugen. Bemerkung: Es kann gezeigt werden, dass es unendlich viele Carmichaelzahlen gibt. Dies gelang 1994 den Mathematikern William Alford, Andrew Granville und Carl Pomerance [8]. Bemerkung: Man kann zwar den Satz von Fermat benutzen um eine Zahl n probabilistisch auf Primalität zu testen (für kleines n durchaus geeignet), man muss aber voher ausschließen, dass es sich bei n um eine Carmichaelzahl handelt. So bringt uns die unbeschränkte Existenz von Carmichaelzahlen zu einem weiteren Verfahren, welches durch eine Verschärfung des Satzes von Fermat auch mit dieser Problemstellung fertig wird. 4 Miller Rabin Test Bemerkung: Der Miller Rabin Test ist ein sogenannter Monte-Carlo Algorithmus, d.h. er gibt mit einer gewissen Wahrscheinlichkeit ein falsches Ergebnis aus. Der Test wurde entwickelt, um mit dem Problem der Carmichaelzahlen umzugehen. Definition 4.1 Sei s die maximale Potenz mit 2s |n − 1, wobei n eine ungerade Zahl ist, dann setze d = (n − 1)/2s , wobei d eine ungerade Zahl ist. Satz 4.2 Ist p eine Primzahl und a eine zu p relativ prime, natürliche Zahl, so gilt entweder: ad ≡ 1 (mod p) (1) oder es gibt ein Element r aus {0, · · · , s − 1} mit: rd a2 ≡ −1 (mod p) (2) Beweis: Sei p eine Primzahl und a zu p teilerfremd. Laut Fermat gilt, dass ap−1 ≡ 1 (mod p), wobei man p − 1 als 2s d schreiben kann. Daher ist nun die Ordnung k der Restklasse ad eine Potenz von 2, da diese p − 1 teilen muss. Ist die Ordnung k = 1 folgt, dass ad ≡ 1 (mod p) gilt. l−1 Ist aber die Ordnung k > 1, dann ist k = 2l mit 1 ≤ l ≤ s. Daher hat die Restklasse a2 d die Ordnung 2. Die einzige Restklasse mit Ordnung 2 ist p − 1, weil die Gleichung x2 ≡ 1 (mod p) r nur für ±1 erfüllt ist und x = 1 Ordnung 1 hat. Also folgt a2 d ≡ −1 (mod p) [10]. Bemerkung: Wir haben nun gezeigt, dass wenn p prim ist, wenigstens eine der zwei Bedingungen erfüllt sein muss. Lässt sich aber ein a finden, für welches beide Bedingungen nicht gelten, folgt, dass es sich um keine Primzahl handelt. Eine solche Zahl bezeichnen wir als Zeugen gegen die Primeigenschaft von p. Also gilt: Zeuge = ¬(1) ∧ ¬(2) ¬Zeuge = (1) ∨ (2) 5 Beispiel 4.3 Im vorigen Kapitel haben wir gesehen, dass die Carmichaelzahlen bei der Anwendung des Satzes von Fermat große Schwierigkeiten bereiten. Nehmen wir einmal die erste Carmichaelzahl 561. Es gilt, dass 24 |(561-1). Nun bestimmen wir d = 35 und wir sehen, dass für eine gewählte Basis a = 2 desweiteren folgt: 235 ≡ 263 22∗35 ≡ 166 24∗35 ≡ 67 28∗35 ≡ 1 (mod 561) Somit sind beide Bedingungen nicht erfüllt und wir haben gezeigt, dass unsere vermeintliche Primzahl wirklich zusammengesetzt ist, indem wir mit der Zahl 2 einen Zeugen gegen die Primalität der Carmichaelzahl 561 gefunden haben. Bemerkung: Im folgenden wollen wir noch etwas über die Häufigkeit des Auftretens von Zeugen gegen die Pimalität einer ganzen Zahl aussagen. Satz 4.4 Sei n > 3 eine zusammengesetzte, ungerade Zahl. So gibt es zwischen 1 und n − 1 höchstens (n − 1)/4 Zahlen, die zu n teilerfremd, aber keine Zeugen sind. Beweis: Sei n > 3 eine ganze Zahl. Wir wollen die Anzahl der a ∈ {1, · · · , n − 1}, welche zu n relativ prim und keine Zeugen sind abschätzen. Das heißt a erfüllt (1) oder (2). Falls es keine solchen Zahlen gibt, sind wir fertig. Angenommen es gibt zumindest einen Nicht-Zeugen. Sei k der größte Wert aus {0, · · · , s − 1}, für den es ein zu n teilerfremdes a gibt und (2) gilt. Wir schreiben: Y m = 2k d und n= pe(p) p=prim für die Primfaktorzerlegung von n. Weiters definieren wir uns folgende Untergruppen von Z∗n : J = {a + nZ : ggt(a, n) = 1, an−1 ≡ 1 K = {a + nZ : ggt(a, n) = 1, am ≡ ±1 (mod n)} mod pe(p) , ∀p|n} L = {a + nZ : ggt(a, n) = 1, am ≡ ±1 (mod n)} M = {a + nZ : ggt(a, n) = 1, am ≡ 1 (mod n)} Es gilt weiters: M ⊂ L ⊂ K ⊂ J ⊂ Zn∗ . Diese Mengen sind natürlich Untergruppen bezüglich der Multiplikation. Die Untergruppe M ist klarerweise in L enthalten. Weiters gilt L ist in K, da aus am ≡ ±1 (mod n) und pe(p) |n auch am ≡ ±1 (mod pe(p) ) folgt. Die Untergruppe K ist in J, da per Definition (n − 1)/m = 2u u mit u ≥ 1 gilt und nun für Elemente a aus K folgt, dass am2 ≡ 1 (mod pe(p) ). Weiters gilt, u dass am2 ≡ 1 modulo dem kleinsten gemeinsamen Vielfachen der Primzahlpotenzen. Da dieses kgV genau n ist, wurde gezeigt, dass a auch in J enthalten ist. Für jedes Element a welches kein Zeuge ist, ist entweder (1) oder (2) erfüllt. Angenommen für a ist (1) erfüllt, so ist am ≡ 1 (mod n), also ist a aus L. 6 Ist für a die Bedingung (2) erfüllt, so ist am ≡ ±1 (mod n) und a ist wiederum aus L. Weiters gilt für alle Elemente aus L, dass sie (1) oder (2) erfüllen, somit besteht L genau aus allen Nicht-Zeugen. Einschub: (Satz von Lagrange) Sei H eine Untergruppe von G so gilt, dass [G : H] = |G|/|H|. Dies führt zur allgemeineren Form des Satzes von Lagrange: Sei H Untergruppe von G und K Untergruppe von H, so ist [G : K] = [G : H][H : K]. Wir wollen zeigen, dass [Z∗n :L] = |Z∗n |/|L| wenigstens 4 ist. Der Index von M in K ist eine Potenz von 2, weil das Quadrat jedes Elementes aus K in M liegt. Es folgt mit dem Satz von Lagrange, dass [K : M ] = [L : M ][K : L] = 2l mit l ≥ 0 und somit muss auch der Index von L in K eine Potenz von 2 sein, d.h. [K : L] = 2j mit j ≥ 0. Weiters gilt nun, dass [Z∗n : L] = [Z∗n : K][K : L] = [Z∗n : K] · 2j . Ist j > 1 sind wir fertig. Angenommen j = 1, d.h. [K : L] = 2, dann folgt aus der Definition der Untergruppen K und L, dass es nicht mehr als 2 Primteiler von n geben kann. So ist n keine Charmichaelzahl und somit muss es zumindest ein a geben, sodass an−1 ≡ 1 (mod n) nicht erfüllt ist. Daher ist J eine echte Untergruppe und es gilt [Z∗n : L] = [Z∗n : K][K : L] = [Z∗n : K] · 2 ≥ 4. Somit folgt die Behauptung. Ist j = 0, d.h. [K : L] = 1. Daraus folgt, dass n = pd , wobei p prim ist und d > 1, da n zusammengesetzt ist. Die Untergruppe J hat genau φ(p) = p − 1 Elemente. Ist nun p ≥ 5 folgt, dass [Z∗n : J] = |Z∗n |/|J| ≥ 4. Für p < 5 kann die Behauptung direkt verifiziert werden [10]. Bemerkung: Testet man eine Zahl n mit dem Miller Rabin Test auf ihre Primeigenschaft, wählt man zufällig eine Basis a ∈ {1, · · · , n − 1}. Gilt bereits, dass der ggt(a, n) 6= 1, folgt, dass n zusammengesetzt ist. Findet man aber mit a einen Zeugen, der die beiden Eigenschaften aus Satz 4.2 nicht erfüllt, so ist n ebenfalls zusammengesetzt. Ist aber a kein Zeuge, folgt aus Satz 4.4, dass die Wahrscheinlichkeit, dass es sich bei n doch um eine zusammengesetzte Zahl handelt, höchstens ein Viertel beträgt. Zusammenfassung: Man teste eine ungerade Zahl n > 3: 1. wähle a gleichverteilt aus {1 · · · n − 1} 2. überprüfe ggt(a, n) = 1 sonst return zusammengesetzt s−1 3. Überprüfung auf Zeuge nach Satz 4.2 mit Berechnung von ad , · · · , a2 d 4. Falls ein Zeuge gefunden wurde, return zusammengesetzt, sonst return prim mit Fehlerwahrscheinlichkeit 1/4 Bemerkung: Man kann natürlich den Miller Rabin Test k-mal wiederholen, und man kommt dann zu einer Fehlerwahrscheinlichkeit von 1/4k , dass die getestete Zahl doch zusammengesetzt ist. Wählt man k = 10, gelangt man zu einer maximalen Fehlerwahrscheinlichkeit die echt kleiner als 10−6 ist. Beispiel 4.5 Sei n = 21 und wir testen diese Zahl mit obigen Algorithmus auf Primalität. Laut Definition folgt d = (21 − 1)/22 = 5. Man wähle beispielsweise a = 2 und sieht, dass der 7 ggt(21, 2) = 1 und somit berechnen wir: 25 ≡ 2 22∗5 ≡ 16 (mod 21) (mod 21) Somit haben wir einen Zeugen gefunden, dass 21 keine Primzahl ist. Betrachtet man nun die relative Häufigkeit von Nicht-Zeugen, folgt aus Satz 4.4, dass es höchstens 5 geben kann, aber nur 1 und 20 sind keine Zeugen. Beispiel 4.6 Testen wir die Zahl 53. Es folgt analog zu oben, dass s = 2 und d = 13 ist. Wähle als Basis 12. 1213 ≡ 30 122∗13 ≡ −1 (mod 53) (mod 53) So folgt jetzt, dass kein Zeuge gefunden wurde und man mit einer Gewissheit von 3/4 behaupten kann, dass die getestete Zahl prim ist. Für 53 gibt es keine Zeugen (53 ist prim), da für a ∈ {1, 10, 13, 15, 16, 24, 28, 36, 42, 44, 46, 47, 49} jeweils (1) gilt und für die restlichen Zahlen (2) gilt. Bemerkung: Der Miller Rabin Test hat eine Laufzeit von O((ln n)3 ) pro Durchlauf und ist so polynomiell bezüglich des Logarithmus. Gilt die verallgemeinerte Riemannsche Hypothese, so gibt es für eine zusammengesetzte Zahl n einen Zeugen in der Menge M = {2, .., [2 · (ln n)2 ]}. Somit ist der Miller Rabin deterministisch und testet man die Zahl n für alle möglichen Zeugen aus M , so beträgt die Laufzeit O((ln n)5 ). Seit 2002 gibt es einen deterministischen Primzahltest mit polynomieller Laufzeit, den sogenannten AKS-Test, wobei AKS für Agrawal, Kayal, Saxena steht. Dieser hat aber eine schlechtere Performance als der probabilistische Miller-Rabin Test [9]. 8 5 Literatur [1] Felix Pape, Carmichael-Zahlen und Miller-Rabin-Test, 15. Mai 2003 www-ifm.math.uni-hannover.de/˜bessen/MillerRabintest.pdf [2] Martin Felis, Miller-Rabin-Test, 3. Dezember 2003 http://www.rzuser.uni-heidelberg.de/˜mfelis/proseminar-krypt.pdf [3] Diskrete Mathematik, Christopher Frei und Sophie Frisch, 2007 http://gauss.math.tu-graz.ac.at/˜frei/diskrete/diskrete.pdf [4] Bressoud, David M., Factorization and primality testing, New York, NY [u.a.] Springer, 1989 [5] Scheid, Harald, Zahlentheorie, München, Elsevier Spektrum Akad. Verl., 2007 [6] Neßelmann, Dieter, Elemente der Algebra und Zahlentheorie, 2005 http://web.math.uni-rostock.de/˜nesselmann/AlgZahl/Vorl-AlgebraZahl.pdf [7] http://www.physik-schule.de/download/pdf/Primzahl/Carmichaelzahlen.pdf [8] Datterl, Karl, Pseudoprimzahlen und Carmichaelzahlen, 2002 http://www1-c703.uibk.ac.at/users/csab4000/Texte/Arbeit.pdf [9] Hauck, Peter, Primzahltests und Faktorisierungsalgorithmen, WS 2003/2004 http://www-dm.informatik.uni-tuebingen.de/skripte/Primzahltests/Primzahltests.pdf [10] Buchmann, Johannes, Einführung in die Kryptographie, Springer, 1999 9