Probabilistische Primzahltests

Werbung
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
Herunterladen