Carmichael-Zahlen und Miller-Rabin-Test

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