Primzahltests und Faktorisierungsalgorithmen

Werbung
Primzahltests
und
Faktorisierungsalgorithmen
Nach einer 2-std. Vorlesung von
Prof. Dr. Peter Hauck
Wintersemester 2003/2004
Herstellung der LATEX-Fassung: Johannes Spielmann
Inhaltsverzeichnis
Einführung
3
1 Faktorisierung und Primzahlerzeugung in der Kryptologie
5
2 Elementare Hilfsmittel aus der Algebra und Zahlentheorie
8
3 Komplexität grundlegender Algorithmen
22
4 Klassische Methoden
28
5 Der Primzahltest von Agrawal, Kayal und Saxena
39
6 Pollards Rho-Methode zur Faktorisierung von Zahlen
49
7 Das quadratische Sieb
53
8 Faktorisierung mit elliptischen Kurven
60
2
Einführung
Die Vorlesung behandelt zwei grundlegende
Probleme
a) Gegeben: n ∈ N, n > 1
Wie kann man feststellen, ob n Primzahl ist, und mit welchem Aufwand?
b) Gegeben: eine zusammengesetzte Zahl n ∈ N.
Wie kann man a, b > 1, a, b ∈ N finden, so dass n = a·b, und mit welchem
Aufwand?
Wichtige Mathematiker, die sich mit diesen Fragen beschäftigt haben:
• Erathostenes (≈ 284 - 204 v. Chr.)
• Fibonacci (≈ 1180 - 1250)
• Fermat (1601 - 1665)
• Euler (1707 - 1783)
• Legendre (1752 - 1833)
• Gauss (1777 - 1855)
In neuerer Zeit weniger Interesse an diesen Problemen bis vor ca. 25 - 30 Jahren.
Gründe:
• Wachsende Bedeutung der Komplexitätstheorie in der Informatik; die
obigen Probleme stellen besonders interessante Fälle dar.
• Entwicklung in der Kryptologie: Public Key Systems.
3
Literaturverzeichnis
[1] D.M. Bressoud, Factorization and Primality Testing, Springer 1989
[2] J. Buchmann, Einführung in die Kryptographie, Springer 2001
[3] R. Crandall, C. Pomerance, Prime Numbers - A Computational
Perspective, Springer 2001
[4] D.E. Knuth, The Art Of Computer Programming, Vol. 2, AddisonWesley 1998
[5] D.E. Knuth, The Art Of Computer Programming, Vol. 3, Chapter 4,
Addison-Wesley 1998
[6] N. Koblitz, A Course in Number Theory and Cryptography, Springer
1994
[7] E. Kranakis, Primality and Cryptography, Wiley-Teubner 1986
[8] A.K. Lenstra, H.W. Lenstra jr., Algorithms in Number Theory,
Chapter 12 in Handbook of Theoretical Computer Science, Ed. J. v.
Leeuwen, Elsevier 1990
[9] A. Pethó, Algebraische Algorithmen, Vieweg 1999
[10] H.W. Lenstra, R. Tijdeman (Eds.), Computational Methods in
Number Theory, Part 1, Math. Centrum Amsterdam 1984
[11] Paulo Ribenboim, The Book Of Prime Number Records, Springer
1989
[12] Hans Riesel, Prime Numbers and Computer Methods for Factorization, Birkhäuser 1985
[13] S.Y. Yan, Number Theory for Computing, Springer 2002
[14] J. von zur Gathen, J. Gerhard, Modern Computer Algebra, Cambridge University Press 1999
[15] G.H. Hardy, E.M. Wright, An Introduction to the theory of numbers, Clarendon Press 1979
[16] O. Forster, Algorithmische Zahlentheorie, Vieweg 1996
4
1 Faktorisierung und
Primzahlerzeugung in der
Kryptologie
1.1 Idee der Public-Key-Kryptographie
(Diffie, Hellmann, 1976)
Jeder Teilnehmer B (Bob) hat einen öffentlichen Schlüssel PB und einen geheimen (privaten) Schlüssel GB . PB wird öffentlich gemacht, GB ist nur B
bekannt. Zu jedem öffentlichen Schlüssel PB gehört eine Verschlüsselungsfunktion EPB , die ebenfalls bekannt ist.
Alice (A) will B eine Nachricht m senden. Sie verschlüsselt m mit EPB ,
m → EPB (m) =: c und sendet c an Bob.
Zwei Bedingungen müssen für die Funktion und Sicherheit eines solchen Systems erfüllt sein:
• m darf mit realistischem Aufwand bei bloßer Kenntnis von PB und c nicht
aus c = EPB (m) berechenbar sein, d.h. EPB muss Einwegfunktion“ sein.
”
• B muss m aus c effizient berechnen können. Das gelingt mit der Zusatzin(c); EPB ist also eine Falltürfunktion
formation GB : m = DGB (c) = EP−1
B
(Trap Door Function).
Es ist nicht bekannt, ob Einwegfunktionen existieren (bei präziser Definition
dieses Begriffs), denn deren Existenz impliziert zumindest P 6= N P . Es gibt
aber Kandidaten. Eine der wichtigsten Klassen für die Kryptographie sind die
RSA-Funktionen.
5
Kapitel 1: Faktorisierung und Primzahlerzeugung in der Kryptologie
1.2 Das RSA-Verfahren
(Rivest, Shamir, Adleman, 1978)
Bezeichnungen: n ∈ N, ϕ(n) = #{k ∈ N : 0 < k < n, ggT(k, n) = 1},
Zn = Z/nZ der Ring der ganzen Zahlen modulo n.
RSA-Funktion: n = p · q, p 6= q Primzahlen. e ∈ N mit ggT(e, ϕ(n)) = 1.
(In diesem Fall ist ϕ(n) = (p − 1)(q − 1).)
RSAe : Zn → Zn : x 7→ xe .
RSAe ist bijektive Funktion Zn → Zn . Die inverse Funktion ist RSAd , wobei
d eindeutig bestimmt ist durch 0 < d < ϕ(n) und ed ≡ 1 mod ϕ(n). (Bei
Kenntnis von ϕ(n) ist d leicht mit dem sog. erweiterten eukl. Algorithmus zu
bestimmen.)
RSA-Verfahren:
a) Schlüsselerzeugung (durch B)
(1) Wähle zwei große Primzahlen p, q, p 6= q, n = pq.
(2) Wähle e ∈ N mit ggT(e, ϕ(n)) = 1. Dann ist PB = (n, e).
(3) Berechne d mit 0 < d < ϕ(n) und ed ≡ 1 mod ϕ(n), dann ist
GB = (n, d).
[ p, q und ϕ(n) müssen auch geheim gehalten werden, am besten
sofort gelöscht, sie werden nach der Berechnung von d nicht mehr
benötigt.]
b) Verschlüsselung: A will B eine Nachricht m senden.
0 ≤ m < n durch Codierung und ggf. Blockerzeugung.
PB = (n, e), also c = me mod n.
c) Entschlüsselung durch B:
cd mod n = m
Die Korrektheit folgt im Wesentlichen aus dem Satz von Euler (2.22): Ist
ggT(m, n) = 1, so ist mϕ(n) ≡ 1 (mod n).
• Primzahltests werden benötigt zur Erzeugung der Schlüssel
• Für die Sicherheit des Verfahrens ist entscheidend, dass es keine schnellen
Faktorisierungsalgorithmen gibt.
Gegeben: (n, e)
Hat man für eines der folgenden Probleme einen (probabilistischen) polynomialen Algorithmus, dann für alle:
(1) Bestimmung der Faktorisierung von n
6
Kapitel 1: Faktorisierung und Primzahlerzeugung in der Kryptologie
(2) Bestimmung von ϕ(n)
(3) Bestimmung von d
Beweis: (1) ⇒ (2): n = pq ⇒ ϕ(n) = (p − 1)(q − 1)
(2) ⇒ (3): Aus ϕ(n) und e wird d mit erweitertem euklidischen Algorithmus
bestimmt.
(3) ⇒ (1): Dazu benötigt man Hilfsmittel aus den folgenden Kapiteln (v.a.
Kap.2 und 4). Wir gehen hier nicht näher darauf ein.
Einen Beweis findet man z.B. im Skript zur Vorlesung Kryptologie und Da”
tensicherheit“ (P. Hauck, WS 2002/03), 5.3.c).
(http://www-dm.informatik.uni-tuebingen.de/Skripte/Kryptologie.pdf.zip)
1.3 Weitere Anwendungen von Primzahltests und
Faktorisierungsalgorithmen in der Kryptologie
• Diffie-Hellman, El Gamal benötigen große Primzahlen.
• Rabin-Verfahren: n = pq, 0 ≤ x < n, x 7→ x2 mod n. Bestimmung von
Quadratwurzeln mod n ist beweisbar genauso schwierig (im Sinne der
Äquivalenz in (1.2)) wie die Faktorisierung von n.
• Pseudozufallsfolgen: Blum-Blum-Shub: n = pq, erzeuge Bitfolge b1 , b2 ,
. . . , x1 binär codierte Zahl < n, xj = x2j−1 mod n, bj niedrigstes Bit von
xj .
7
2 Elementare Hilfsmittel aus der
Algebra und Zahlentheorie
Wir benötigen aus der Algebra: Gruppen und Ringe
2.1 Definition
a) Eine nichtleere Menge G mit Verknüpfung · : G × G : (x, y) 7→ x · y heißt
Gruppe, falls gilt:
(1) g · (h · k) = (g · h) · k für alle g, h, k ∈ G
(Assoziativität)
(2) Es existiert ein Element e: e · g = g · e = g für alle g ∈ G
(3) Zu jedem g ∈ G existiert ein inverses Element g −1
g · g −1 = g −1 · g = e
b) G heißt abelsch oder kommutativ, falls (4) g · h = h · g für alle g, h ∈ G
c) Ordnung von G: |G| Anzahl der Elemente in G
d) ∅ 6= H ⊆ G heißt Untergruppe von G, falls H bezüglich der Verknüpfung
auf G selbst eine Gruppe ist; man schreibt H ≤ G.
2.2 Bemerkung
a) Das neutrale Element ist eindeutig.
b) Die inversen Elemente sind eindeutig.
c) g ∈ G: g 0 = e, n ∈ N : g n = g n−1 · g, n ∈ Z\N0 : g n = (g −1 )−n
g n · g m = g n+m , g −n = (g −1 )n = (g n )−1 , (g n )m = g nm für alle n, m ∈ Z
d) (g · h)−1 = h−1 · g −1
e) In abelschen Gruppen wird die Verknüpfung oft mit + benannt, das neutrale Element mit 0, das inverse Element zu g mit −g. (In beliebigen
Gruppen heißt e meist 1“.)
”
8
Kapitel 2: Elementare Hilfsmittel aus der Algebra und Zahlentheorie
f) H ≤ G, so ist 1 ∈ H.
g) Sei ∅ 6= H ⊆ G. Dann ist H ≤ G genau dann, wenn gilt:
(1) Für alle h1 , h2 ∈ H gilt: h1 h2 ∈ H und
(2) Für alle h ∈ H gilt: h−1 ∈ H.
2.3 Beispiele
a) (Z, +) ist abelsche Gruppe.
b) {−1, 1} ⊆ Z ist bezüglich · eine Gruppe.
c) (Z, +), n ∈ Z. Dann ist nZ = {na : a ∈ Z} Untergruppe von (Z, +) (und
nZ = (−n)Z).
Dies sind alle Untergruppen von Z. Das folgt aus Division mit Rest:
a, b ∈ Z, b 6= 0, ∃ k, r ∈ Z : a = kb + r, 0 ≤ r < |b|
d) Q, R, C Gruppen bezüglich +.
(Q\{0}), (R\{0}), (C\{0}) sind Gruppen bezüglich ·.
2.4 Definition
Sei G Gruppe, H ≤ G. Ist g ∈ G, dann heißt Hg = {hg : h ∈ H} eine
(Rechts-)Nebenklasse von H in G.
2.5 Satz
Sei G Gruppe, H ≤ G.
a) Sind g1 , g2 ∈ G, so ist entweder Hg1 = Hg2 oder Hg1 ∩ Hg2 = ∅.
b) Hg1 = Hg2 ⇔ g1 g2−1 ∈ H
c) Gibt es nur endliche viele verschiedene Nebenklassen
Sm von H in G (z.B.
wenn G endlich), Hg1 , . . . , Hgm , dann ist G = i=1 Hgi als disjunkte
Vereinigung. Es heißt m der Index von H in G, m = [G : H].
d) Es ist |Hg| = |H| für alle g ∈ G.
e) (Satz von Lagrange) Ist G endlich, H ≤ G, so ist |G| = [G : H] · |H|,
insbesondere teilt die Ordnung |H| die Ordnung |G|.
Beweis:
9
Kapitel 2: Elementare Hilfsmittel aus der Algebra und Zahlentheorie
a) Angenommen Hg1 ∩ Hg2 6= ∅ ⇒ ∃h1 , h2 ∈ H : h1 g1 = h2 g2 , also
−1
g1 = h−1
1 h2 g2 . Sei h ∈ H, hg1 = hh1 h2 g2 ∈ Hg2 , folglich Hg1 ⊆ Hg2 .
Umkehrung analog.
a)
b) Hg1 = Hg2 ⇔ g1 ∈ Hg2 ⇔ g1 = hg2 für ein h ∈ H ⇔ g1 g2−1 ∈ H.
Sm
c) Nur endlich viele verschiedene Nebenklassen Hg1 , . . . , Hgm . G = i=1 Hgi
– Disjunktheit nach (a). g ∈ G : g ∈ Hg = Hgi für ein i.
d) |Hg| = |H|: Konstruiere H → Hg : h 7→ hg; bijektiv, da h1 g = h2 g ⇔
h1 = h2 .
e) G endlich, |G| = |H| · [G : H] folgt aus (c) und (d).
2.6 Bemerkung
Abelsche Gruppen mit Verknüpfung +, H ≤ G, Nebenklasse von H in G: H +g.
H + g1 = H + g2 ⇔ g1 − g2 ∈ H. (g1 − g2 steht für g1 + (−g2 ).)
2.7 Satz
Sei (G, +) eine abelsche Gruppe, H ≤ G. Die Menge aller Nebenklassen von H
in G wird abelsche Gruppe mit (H + g1 ) ⊕ (H + g2 ) := H + (g1 + g2 ). Sie wird
bezeichnet mit G/H, die Faktorgruppe von G nach H, |G/H| = [G : H]. Falls
|G|
.
G endlich: |G/H| = |H|
Beweis: Zu zeigen: ⊕ ist wohldefiniert.
Zu zeigen: H +g1 = H +g10 , H +g2 = H +g20 , so gilt H +(g1 +g2 ) = H +(g10 +g20 ).
Nach Voraussetzung: g1 − g10 ∈ H, g2 − g20 ∈ H
⇒ H 3 (g1 − g10 ) + (g2 − g20 ) = (g1 + g2 ) − (g10 + g20 )
⇒ (2.5) H + (g1 + g2 ) = H + (g10 + g20 )
Neutrales Element: H + 0 = H.
Inverses Element: −(H + g) = H − g = H + (−g).
Assoziativität und Kommutivität folgen aus den entsprechenden Eigenschaften
in G.
Wir schreiben in Zukunft + statt ⊕.
10
Kapitel 2: Elementare Hilfsmittel aus der Algebra und Zahlentheorie
2.8 Beispiel
(Z, +) hat Untergruppen nZ, n ∈ N0 . Falls n 6= 0, existieren genau n verschiedene Nebenklassen von nZ in Z: nZ = nZ + 0, nZ + 1, nZ + 2, . . . , nZ + (n − 1).
nZ + a = nZ + b ⇔ a − b ∈ nZ ⇔ n|(a − b) ⇔ a ≡ b (mod n).
a = kn + r, 0 ≤ r < n ⇒ nZ + a = nZ + r.
Z/nZ = {nZ + 0, . . . , nZ + (n − 1)}. Identifiziere Z/nZ mit {0, . . . , n − 1} mit
Verknüpfung: Addition in Z (mod n).
|Z/nZ| = n.
2.9 Satz
Sei G eine Gruppe, g ∈ G.
a) Sei hgi = {g m : m ∈ Z}. Dann ist hgi ≤ G. hgi heißt die von g erzeugte
(zyklische) Untergruppe.
b) Genau dann ist hgi unendlich, falls g m 6= g n für alle n, m ∈ Z mit m 6= n.
c) Ist hgi endlich, so existiert ein kleinstes k ∈ N mit g k = 1. k heißt Ordnung
von g ( o(g) = k ), hgi = {1 = g 0 , g, g 2 , . . . , g k−1 }, |hgi| = o(g).
d) Ist o(g) = k endlich, l ∈ Z, l = kt + r, 0 ≤ r < k, dann ist g l = g r ;
insbesondere g l = 1 ⇔ k|l. Daher: Ist G endlich, so gilt: g |G| = 1.
e) Ist o(g) = k < ∞, l ∈ Z, dann o(g l ) =
o(g) ⇔ hg l i = hgi ⇔ ggT(l, k) = 1.
k
ggT(l,k) .
Insbesondere o(g l ) =
Beweis:
a) Folgt aus 2.2 c)
b), c), d) Angenommen g n = g m für gewisse n, m(n > m). Dann g n−m = 1.
Daher existiert ein kleinstes k ∈ N mit g k = 1. Dann: g 0 = 1, g 1 , . . . g k−1
paarweise verschieden. hgi = {g 0 , g 1 , . . . , g k−1 }. g l ∈ hgi, l ∈ Z, l = tk +
t
r, 0 ≤ r < k, g l = g tk+r = (g k ) · g r = g r ∈ {1, g 1, . . . , g k−1 }. k = o(g)
s
= |hgi| |G|, |G| = s · k, g |G| = g sk = (g k ) = 1
k
lk
l
e) Sei ggT(l, k) = s. (g l ) s = g s = (g k ) s = 1, o(g l ) ≤ ks . Sei o(g l ) = u, dann
g lu = 1 ⇒ k|lu ⇒ ks | sl · u. Da ks , sl teilerfremd sind, folgt ks |u = o(g l ).
Also o(g l ) = ks .
11
Kapitel 2: Ringe
2.10 Beispiel
(Z, +) ist zyklisch, Z = h1i (additive Schreibweise !!!!).
Jeder Untergruppe von Z ist von der Form hZ, h ∈ N0 : Z/hZ = h1 + hZi,
o(1 + hZ) = h, hl + hZi = h1 + hZi ⇔ ggT(l, h) = 1.
Wir wenden uns jetzt den wichtigsten algebraischen Strukturen mit zwei Verknüpfungen zu, nämlich den Ringen.
2.11 Definition
a) Eine Menge R 6= ∅ heißt (kommutativer) Ring, falls gilt: In R gibt es
zwei Verknüpfungen + und · mit folgenden Eigenschaften:
(1) (R, +) ist abelsche Gruppe, neutrales Element 0
(2) (R, ·) ist assoziativ und kommutativ
(3) (a + b) · c = ac + bc für alle a, b, c ∈ R
(Distributivgesetz)
b) Ring R heißt Ring mit Eins, falls Element 1 ∈ R existiert, 1 6= 0, so dass
a · 1 = 1 · a = a für alle a ∈ R.
c) Ist R\{0} eine Gruppe bezüglich · mit neutralem Element 1, dann heißt
R ein Körper.
d) U 6= ∅, U ⊆ R heißt Unterring, falls U bezüglich + Untergruppe von
(R, +) ist und falls U abgeschlossen ist bezüglich ·.
Beachte: In Ringen mit Eins brauchen Unterringe nicht die Eins zu enthalten.
2.12 Beispiele
a) (Z, +, ·) Ring mit Eins
n ∈ Z, (nZ, +, ·) Unterringe von Z (ohne Eins, falls n 6= ±1)
b) Q, R, C Körper
endliche Körper
12
Kapitel 2: Ringe
2.13 Bemerkung
R Ring, a, b ∈ R, n ∈ N
a) a · 0 = 0 · a = 0
b) (−a) · b = a · (−b) = −(a · b)
Pn
c) (a + b)n = i=0 ni ai bn−i , wobei a0 bn = bn und b0 an = an
2.14 Definition
Sei R ein Ring (komm.). Ein Unterring I von R heißt Ideal, falls gilt: Für alle
a ∈ I und alle r ∈ R gilt: a · r ∈ I
Einfache Konstruktion für Ideale in R: Wähle b ∈ R. Bilde bR = {br : r ∈ R};
dies ist ein Ideal (sogenanntes Hauptideal).
2.15 Satz
Sei I Ideal in R, R/I = {I + r : r ∈ R}, Gruppe bezüglich +.
Definiere auf R/I durch (I+r1 )(I+r2 ) := I+r1 r2 . Dann ist wohldefiniert,
R/I wird Ring; falls R Ring mit Eins, so auch R/I, Einselement: I + 1.
R/I heißt Faktorring von R nach I. (Schreibe · statt )
Beweis: Zu zeigen: I + r1 = I + r10 , I + r2 = I + r20 , so ist I + r1 r2 = I + r10 r20 :
I + r1 = I + r10 ⇔ r1 − r10 ∈ I ⇒ r1 r2 − r10 r2 = (r1 − r10 )r2 ∈ I. r2 − r20 ∈ I ⇒
r10 r2 − r10 r20 ∈ I. Dann auch r1 r2 − r10 r20 = r1 r2 − r10 r2 + r10 r2 − r10 r20 ∈ I, d.h.
I + r1 r2 = I + r10 r20 .
Rest ist klar.
2.16 Beispiel
a) n ∈ Z: nZ sind Ideale in Z (Hauptideale). Dies sind auch alle Ideale in Z:
Sei I Ideal in Z. Ist I = 0, so I = 0 · Z. I 6= 0. Da mit a ∈ I auch −a ∈ I,
enthält I ein Element aus N. Sei n die kleinste natürliche Zahl in I. Klar
nZ ⊆ I. Sei a ∈ I. Division mit Rest: a = nk + r, 0 ≤ r < n.
13
Kapitel 2: Ringe
r = |{z}
a −
∈I
Wahl von n: r = 0.
nk
|{z}
∈ nZ ⊆ I
a = nk ∈ nZ
∈I
I = nZ
(Zeigt auch, dass nZ sämtliche Untergruppen von (Z, +) sind.)
b) Z/nZ = {0 + nZ, 1 + nZ, . . . , (n − 1) + nZ} kommutativer Ring mit Eins.
Identifiziert man Z/nZ mit Zn = {0, 1, . . . , (n − 1)}, so + und · in Zn :
Addiere bzw. multipliziere in Z, reduziere dann mod n (d.h. nimm den
Rest bei Teilung durch n).
2.17 Satz
Seien a, b ∈ Z. Dann
aZ + bZ = {ar + bs | r, s ∈ Z}
ein Ideal, aZ + bZ = dZ, d = ggT(a, b).
Insbesondere: ggT(a, b) = an + br für geeignete n, r ∈ Z.
Beweis: aZ + bZ =√dZ Ideal. 2.16a: aZ + bZ = dZ für ein geeignetes d ≥ 0. Ist
a = b = 0, so d = 0 . Sei also (a, b) 6= (0, 0). d = d · 1 = an + br für geeignete
n, r ∈ Z. ggT(a, b) | d. Andererseits aZ ⊆ dZ, bZ ⊆ dZ also a = ds, b = dt für
geeignete s, t ∈ Z
d|a
und
d|b
d ≥ 0, daher d ≤ ggT(a, b).
Also d = ggT(a, b).
2.18 Euklidischer und Erweiterter Euklidischer
Algorithmus
a) Euklidischer Algorithmus: ggT-Bestimmung. Beruht auf a = qb + r, 0 ≤
r < |b|, dann ggT(a, b) = ggT(b, r). Sei o.B.d.A. a ≥ b ≥ 0 (nicht beide
14
Kapitel 2: Ringe
= 0)
Setze a0 = a, a1 = b
a0
a1
an−1
= q1 a1 + a2
= q2 a2 + a3
..
.
0 ≤ a 2 < a1
0 ≤ a 3 < a2
= qn an + 0 (Terminiert!)
ggT(a, b) = ggT(a0 , a1 ) = ggT(a1 , a2 ) = . . . = ggT(an−1 , an )
= ggT(an , 0) = an
b) EEA liefert n, r ∈ Z mit ggT(a, b) = an + br. a ≥ b ≥ 0 (nicht beide
gleich 0)
a0 = a, a1 = b, aj wie in a). Zeige, wie man uj , vj ∈ Z bestimmt mit
aj = auj + bvj , j = 0, . . . , n
j=0:
j=1:
(j = n : u = un , v = vn )
u0 = 1, v0 = 0
u1 = 0, v1 = 1
Sei j ≥ 2: Darstellung für aj−2 , aj−1 nach a):
aj
=
=
|{z}
Ind.
=
aj−2 − aj−1 qj−1
auj−2 + bvj−2 − (auj−1 + bvj−1 )qj−1
a(uj−2 − uj−1 qj−1 ) + b(vj−2 − vj−1 qj−1 )
|
{z
}
{z
}
|
uj
vj
→ Rekursionsformel für uj , vj .
2.19 Chinesischer Restsatz
Seien m1 , . . . , mr paarweise teilerfremde Zahlen, d.h. ggT(mi , mj ) = 1 ∀i 6= j.
Seien a1 , . . . , ar ∈ Z. Dann gibt es genau ein x ∈ Z, 0 ≤ x < m1 · · · mr mit
x ≡ aj mod mj für alle j = 1, . . . , r, d.h. x + mj Z = aj + mj Z für j = 1, . . . , r.
15
Kapitel 2: Ringe
Q
m
für j = 1, . . . r.
Beweis: Setze m = ri=1 mi , Mj = m
j
Es ist dann ggT(mj , Mj ) = 1.
Nach (2.17) und (2.18) existieren yj , zj ∈ Z mit yj Mj + zj mj = 1 (erweiterter
Euklidischer Algorithmus).
Es ist also yj Mj ≡ 1 (mod mj ).
Dann aj yj Mj ≡ aj (mod mj ).
Für i 6= j ist
j |Mi ⇒ ai yi Mi ≡ 0 (mod mj )
Pr
Pm
r
Setze x := i=1 ai yi Mi mod m (= Rest bei Division von i=1 ai yi Mi durch
m).
x ≡ aj (mod mj ), j = 1, . . . , r
Für jedes j sind fast alle Summanden ≡ 0 (mod mi )(i 6= j), bis auf einen, der
≡ aj ist. x hat also die gewünschte Eigenschaft.
Angenommen, x ≡ aj ≡ x0 (mod mj ) für alle j.
mj paarweise teilerfremd: x ≡ x0 (mod m).
m|x − x0 (x ≥ x0 oBdA).
0 ≤ x − x0 < m ⇒ x − x0 = 0 ⇒ x = x0
Der Beweis von Satz 2.19 liefert einen Algorithmus zur Bestimmung von x.
Beispiel: Es soll sein: x ≡ 2 (mod 3), x ≡ 4 (mod 11), x ≡ 1 (mod 26), dann
ist M1 = 11 · 26 = 286, M2 =P3 · 26 = 78, M3 = 3 · 11 = 33. Weiter ist
y1 = 1, y2 = 1, y3 = 15. Also ist 3i=1 ai yi Mi = 2 · 286 + 4 · 78 + 15 · 33 = 1379.
m = 858, also ist x = 1379 mod 858 = 1379 − 858 = 521.
2.20 Definition
R Ring mit Eins
R∗ = {a ∈ R : es existiert b ∈ R mit ab = 1} 3 1
R∗ ⊆ R\{0}, Elemente von R∗ heißen Einheiten.
2.21 Bemerkung
a) (R∗ , ·) ist Gruppe, die sogenannte Einheitengruppe von R.
b) R Körper ⇔ R∗ = R\{0}
2.22 Satz
a) Z∗ = {1, −1}
16
Kapitel 2: Ringe
b) (Z/nZ)∗ = {a + nZ : a ∈ Z, ggT(a, n) = 1} = {a + nZ : 0 ≤ a <
n, ggT(a, n) = 1}
|(Z/nZ)∗ | = ϕ(n) (Eulersche ϕ-Funktion)
c) Z/nZ ist Körper ⇔ n Primzahl
d) (Satz von Euler) n ∈ N, a ∈ Z, ggT(a, n) = 1 so ist aϕ(n) ≡ 1 (mod n)
e) (kleiner Satz von Fermat) p Primzahl, a ∈ Z, p 6 |a, so ap−1 ≡ 1 (mod p)
(also auch ap ≡ a (mod p) für alle a ∈ Z).
Beweis:
√
a)
b) a+nZ ∈ (Z/nZ)∗ ⇔ ∃ b+nZ mit 1+nZ = (a+nZ)(b+nZ) = ab+nZ ⇔
(2.17)
1 = ab + nk für ein k ∈ Z ⇔ ggT(a, n) = 1
c) folgt aus (b)
d) Nach (b) und (2.9 d): a + nZ ∈ (Z/nZ)∗ , d.h. ggT(a, n) = 1
1 + nZ = (a + nZ)ϕ(n) = aϕ(n) + nZ ⇔ aϕ(n) ≡ 1 (mod n)
e) folgt aus (d)
2.23 Bemerkung
Ist a + nZ ∈ (Z/nZ)∗ , so bestimmt man b + nZ = (a + nZ)−1 mit Hilfe des
erweiterten Euklidischen Algorithmus: ggT(a, n) = 1, EEA: b, c mit ab+nc = 1:
(a + nZ)(b + nZ) = ab + nZ = (1 − nc) + nZ = 1 + nZ
2.24 Korollar
(Zum kleinen Satz von Fermat)
Sei n ∈ N, n ≥ 2.
n Primzahl ⇔ an−1 ≡ 1 (mod n) für alle 1 ≤ a ≤ n − 1
Beweis: ,,⇒” kleiner Satz von Fermat
,,⇐” Angenommen, n ist keine Primzahl. Dann existiert eine Primzahl p, p | n,
insbesondere p < n. Nach Voraussetzung für a = p: pn−1 ≡ 1 (mod n), d.h.
(p + nZ)(pn−2 + nZ) = 1 + nZ, d.h. p + nZ ∈ (Z/nZ)∗ – Widerspruch, da
p | n ⇒ (p + nZ) ∈
/ (Z/nZ)∗ nach 2.22 b). Also ist n Primzahl.
17
Kapitel 2: Ringe
2.25 Definition
Sei R Ring mit Eins, dann definiere Polynomring über R:
R[X] = {(a0 , a1 , a2 , . . . ) : ai ∈ R, ∃ k ∈ N : an = 0 für alle n > k}
mit folgenden Verknüpfungen: komponentenweise Addition; P
Multiplikation: (a0 , a1 , . . . )(b0 , b1 , . . . ) = (c0 , c1 , . . . ) mit cn := ni=0 ai bn−i , es
ist also c0 = a0 b0 , c1 = a0 b1 + a1 b0 , c2 = a0 b2 + a1 b1 + a2 b0 , . . .
Es gibt k, l ∈ N: ak+1 = ak+2 = · · · = 0, bl+1 = bl+2 = · · · = 0, für n > k + l ist
also
cn =
n
X
ai bn−i =
i=0
k
X
i=0
ai bn−i +
|{z}
=0
n−l−1
X
ai bn−i +
|{z}
|{z}
i=k+1 =0
=0
n
X
ai bn−i = 0
|{z}
i=n−l =0
2.26 Satz
R Ring mit Eins.
a) R[X] ist Ring mit Eins, Nullelement (0, 0, . . . ), Einselement (1, 0, 0, . . . )
b) Setze X = (0, 1, 0, . . . ), so ist X i = (0, . . . , 0, 1, 0, . . . ) mit einer 1 an der
iten Stelle und es ist X i X j = X i+j .
c) Setzt man X 0 = (1, 0, 0, . . . ) und a·(a0 , a1 , a2 , . . . ) := (aa0 , aa1 , aa2 , . . . ),
dann gilt: ist g = (a0 , a1 , . . . ) ∈ R[X], ak+1 = ak+2 = · · · = 0, so ist
Pk
g = i=0 ai X i .
Ist ak 6= 0 und ak+1 = ak+2 = · · · = 0, so heißt k Grad von g.
Nullelement: grad 0 = −∞
d) R ist Unterring von R[X], wenn man R mit {(a, 0, 0, . . . ) : a ∈ R} identifiziert.
2.27 Satz
Sei K ein Körper, f, g ∈ K[X].
a) grad(f · g) = grad(f ) + grad(g)
b) (K[X])∗ = K ∗
(Polynome vom Grad 0)
c) Ist f 6= 0, so existieren q, r ∈ K[X] mit g = qf + r mit grad(r) < grad(f )
18
Kapitel 2: Ringe
Beweis:
a) grad(f ) = n, grad(g) = m ⇒ an 6= 0, ai = 0 für i > n und bm 6= 0, bi = 0
für i > m.
Koeffizient von X n+m in f g: an · bm 6= 0
(angenommen an bm = 0, an 6= 0, bm = 1 · bm = a−1
n · an bm = 0 – Widerspruch)
a)
b) f ∈ (K[X])∗ : ∃g ∈ K[X] mit f g = 1. 0 = grad(1) = grad(f g) =
grad(f ) + grad(g) ⇒ grad(f ) = 0, f ∈ K ∗
c) Zum Beispiel in Meyberg, Algebra Teil 1
Beispiel: (X 4 + 3X 2 − 2X + 1) : (2X 2 − X + 1) = 21 X 2 + 41 X +
− 87 X − 38
11
8 ,
Rest:
2.28 Korollar
Sei K ein Körper.
a) Jedes Ideal in K[X] ist von der Form g · K[X] für ein g ∈ K[X]
b) g1 · K[X] = g2 · K[X] ⇔ ∃a ∈ K ∗ mit g1 = a · g2
Beweis:
a) Folgt wie (2.16a) für Z aus (2.27c)
b) g1 = g2 · f = g1 · g · f für g, f ∈ K[X].
(2.27a): 0 = grad(gf ) = grad(g) + grad(f ) ⇒ f ∈ K ∗
2.29 Bemerkung
a) Wie in Z kann man in K[X] den ggT(f, g) definieren als Polynom höchsten Grades, normiert (das heißt, höchster Koeffizient = 1), welches f und
g teilt (falls f , g nicht beide gleich 0 sind).
Man bestimmt d mit dem euklidischen Algorithmus wie in Z. Entsprechend lassen sich u, v ∈ K[X] bestimmen mit u · f + v · g = d mit Hilfe
des erweiterten euklidischen Algorithmus.
b) Die Rolle der Primzahlen in Z spielen in K[X] die sogenannten irreduziblen Polynome. Ein Polynom f heißt irreduzibel, falls f normiert,
grad f ≥ 1 und: aus f = gh folgt g ∈ K ∗ oder h ∈ K ∗ .
19
Kapitel 2: Ringe
Es gilt: In K[X] lässt sich jedes Element eindeutig als Produkt einer
Einheit und irreduziblen Polynomen schreiben.
c) f Polynom, f 6= 0: K[X]/f · K[X] = {g + f K[X] : g ∈ K[X]} = {g +
f K[X] : g ∈ K[X], grad(g) < grad(f )}
d) |(K[X]/f K[X])|∗ = {g + f K[X] : ggT(g, f ) = 1}
Die Inverse berechnet man mit erweitertem Eukl. Algorithmus.
gu + f v = 1, u, v ∈ K[X] : u + f K[X] = (g + f K[X])−1
e) K[X]/f K[X] Körper ⇔ f ist irreduzibel.
2.30 Satz (Endliche Körper)
a) Ist K endlicher Körper, dann existiert eine Primzahl p und d ∈ N,
so dass |K| = pd (p ist bestimmt als die kleinste natürliche Zahl mit
1 + 1 + · · · + 1 = 0). p heißt Charakteristik von K.
{z
}
|
n
b) Zu jeder Primzahl p und zu jedem d ∈ N existiert ein Körper K mit
|K| = pd .
c) Sind K, K 0 endliche Körper mit |K| = |K 0 |, so sind K, K 0 isomorph,
d.h. es existiert eine bijektive Abbildung ϕ : K → K 0 mit ϕ(a + b) =
ϕ(a) + ϕ(b), ϕ(ab) = ϕ(a)ϕ(b) ∀a, b ∈ K.
d) Ist K ein endlicher Körper, so ist (K ∗ , ·) = (K\{0}, ·) eine zyklische
Gruppe.
Beweis:
a) Es existiert ein kleinstes n ∈ N mit 1 + · · · + 1 = 0, da K endlich ist.
| {z }
n
Angenommen n = a · b, 1 < a, b < n
⇒
⇒
⇒
(1
· · + 1}) · (1
· · + 1}) = 0
· · + 1}) = (1
| + ·{z
| + ·{z
| + ·{z
a
n
b
1| + ·{z
· · + 1} = 0 oder |1 + ·{z
· · + 1} = 0. Wid.
a
b
n ist Primzahl (n = p).
K0 := {m · 1 = 1 + · · · + 1 |m ∈ Z} ⊆ K, K0 Körper.
| {z }
m
|K0 | = p, K0 = {m · 1|0 ≤ m < p}. K ist ein K0 -Vektorraum. Weil
20
Kapitel 2: Ringe
K endlich, ist K endlich dimensionaler K0 -VR (der Dimension d). Basis
v1 , . . . vd ∈ K. Jedes k ∈ K lässt sich eindeutig schreiben als: k = b1 v1 +
· · · + bd vd , bi ∈ K0 . Also |K| = pd .
b)-d) Meyberg Algebra II.
b) K = Z/pZ, f irred. Pol in K[X] vom Grad d. |K[X]/f K[X]| = pd .
21
3 Komplexität grundlegender
Algorithmen
Komplexität zahlentheoretischer Algorithmen messbar durch
a) Anzahl der arithmetischen Operationen
oder
b) Anzahl der Bitoperationen
Eingabe immer gemessen in binärer Länge (oder auch in der dezimalen Länge).
Gegebenes n: log(n) (oder log2 (n))
Komplexität: Worst-Case-Komplexität
Schranke, die die Laufzeit eines Algorithmus für alle zulässigen Eingaben nach
oben begrenzt (als Funktion in der Länge der Eingabe).
O-Schreibweise: f, g : N0 → R, f (n), g(n) > 0 für alle n ≥ n0 , n0 geeignet.
f (n) = O(g(n)) ⇔ ∃C > 0 : f (n) ≤ C · g(n) für alle n ≥ n0 .
Beispiele: n3 + 17n2 + n − 6 = O(n3 )
n
n2 = O(n2 ), n2 = O(n3 ), oder auch n2 = O(ee )
n3 + n2 log n = O(n3 )
k
,,O(n2 ) ⊆ O(2n )” weil n2n → 0
O(1): nach oben durch eine Konstante beschränkt
3.1 Satz
m, n ∈ N in Binärdarstellung.
a) n ± m erfordert O(max(log n, log m)) viele Bitoperationen.
b) n · m erfordert O(log n · log m) viele Bitoperationen (nach der klassischen
Methode).
c) n · m, n ≥ m nach Schönhage-Strassen erfordert O(log n · log log n ·
log log log n) viele Bitoperationen.
d) Division mit Rest von n durch m (n ≥ m) erfordert O(log m · (log n −
log m + 1)) viele Bitoperationen.
22
Kapitel 3: Komplexität grundlegender Algorithmen
Schnelle Multiplikation nach Karatsuba: x = x0 + x1 W, y = y0 + y1 W mit
xi , yi ∈ [0, W − 1]. Klassische Methode: xy = x0 y0 + (x0 y1 + x1 y0 )W + x1 y1 W 2
Karatsuba: xy = u + (t − u − v)w + vw2 mit u = x0 y0 , v = x1 y1 , t =
(x0 + x1 )(y0 + y1 ).
Folglich ergibt sich eine Komplexität von O((log n)log2 3 ) im Gegensatz zu
O((log n)log2 4 ).
Literatur zu Schönhage-Strassen und FFT siehe [14, Kapitel 8], [3, Kapitel
9] und [5]. Zu Division mit Rest siehe [9].
3.2 Satz
Der (erw.) euklidische Algorithmus für zwei Zahlen a, b ∈ N erfordert O(log a ·
log b) viele Bitoperationen.
Beweis:
Benötigt ist eine Abschätzung für die Anzahl der Divisionen mit
Rest: ai−1 = qi ai +ai+1 mit 1 ≤ i ≤ l, a0 = a, a1 = b, folglich ai−1 ≥ ai +ai+1 >
2ai+1
Q
Q
⇒ 2≤i≤l ai > 2l−1 2≤i≤l ai+1 (falls l > 2)
⇒ a1 · a2 > 2l−2 al−1 al
a21
1 a2
⇒ 2l−2 < aal−1
al < 2 (da al−1 ≥ 2)
⇒ a21 > 2l−1 , l − 1 ≤ 2 log b
⇒ l = O(log b)
Details: [14]; [5]
3.3 Bemerkung
In Z/nZ sind alle arithmetischen Operationen (einschließlich Invertierung von
Elementen in (Z/nZ)∗ ) in O((log n)2 ) Bitoperationen durchführbar. (Folgt aus
(3.1) und (3.2).)
3.4 Proposition
Zur Berechnung von ae in Z (oder auch Z/nZ) sind O(log e) viele Multiplikationen durchzuführen.
23
Kapitel 3: Komplexität grundlegender Algorithmen
Beweis: e = 2k + ak−1 2k−1 + · · · + a1 · 2 + a0 , ai ∈ {0, 1}
bk = a
Wiederhole für i = k − 1, . . . , 0: Falls ai = 1, so b = b2 · a, sonst b = b2
Output: b = ae
Beispiel: a13 , 13 = 23 + 22 + 1, a13 = ((a2 · a)2 )2 · a
3.5 Satz
Sind f, g ∈ K[X], grad f = n ≥ m = grad g, so erfordert der erweiterte euklidische Algorithmus für f und g: O(m) Invertierungen in K, O(n · m) Multiplikationen und Additionen.
Beweis:
siehe [14, Kapitel 3]
Eines der Ziele der Vorlesung: Primzahlen ∈ P.
Zunächst: Primzahlen ∈ NP.
Klar: Zusammengesetze Zahlen ∈ NP.
Wir werden uns zum Abschluss des Kapitels den beiden NP-Aussagen
widmen.
3.6 Bemerkung
Ist n ∈ N eine zusammengesetzte Zahl, so kann dies mit einer arithmetischen
Operation bzw. in O((log n)2 ) vielen Bitoperationen bewiesen werden.
(a, b: Prüfe a · b = n)
3.7 Satz
(Pratt, 1975)
Ist n ∈ N eine Primzahl, so kann dies in O((log n)4 ) vielen Bitoperationen bewiesen werden.
Beweis:
Wir benötigen folgendes Primzahlkriterium:
24
Kapitel 3: Komplexität grundlegender Algorithmen
3.8 Satz
n ∈ N, dann sind gleichwertig:
a) |(Z/nZ)∗ | = n − 1
b) ∃a + nZ ∈ (Z/nZ)∗ mit ord(a + nZ) = n − 1
c) n ist Primzahl
Beweis: (a) ⇒ (c): Aus (a) folgt, dass Z/nZ Körper ist. Nach (2.22) ist n
Primzahl.
(c) ⇒ (b): Ist n Primzahl, so ist Z/nZ Körper (2.22). Nach (2.30) ist (Z/nZ)∗
zyklisch ⇒ (b)
(b) ⇒ (a): ha + nZ, ·i ⊆ (Z/nZ)∗ ⇒ |(Z/nZ)∗ | ≥ n − 1 ⇒ |(Z/nZ)∗ | = n − 1
3.9 Satz
(Lucas, 1876, 1891; Brillhart-Selfridge, 1967)
n ∈ N, dann gilt:
n Primzahl ⇐⇒ ∃a ∈ N, 1 ≤ a ≤ n− 1 : an−1 ≡ 1 mod n, a
für alle Primzahlen q | n − 1
n−1
q
6≡ 1
Beweis: Nach (3.8 (a)) folgt: ∃ a+nZ mit ord(a+nZ) = n−1⇐⇒n Primzahl.
n−1
Wir zeigen: ord(a + nZ) = n − 1 ⇐⇒ an−1 ≡ 1 mod n, a q 6≡ 1 für alle
Primzahlen q | n − 1
⇒“: klar nach 2.9 (c).
”
⇐“: (a + nZ)n−1 = 1, so o(a + nZ) | n − 1 nach 2.9 (d).
”
Angenommen, ord(a + nZ) < n − 1 ⇒ ord(a + nZ) · k = n − 1
Wähle Primzahl q mit q | k, so folgt: ord(a + nZ) · kq = n−1
q
(2.9 d) : (a + nZ)
n−1
q
= 1 + nZ ⇒ a
n−1
q
≡ 1 mod n
Widerspruch
Beweis von 3.7: Nach (3.9) hat man zum Beweis der Primzahleigenschaft
von n Zahlen a, q1 , . . . , qk anzugeben mit:
a) n − 1 = q1 · · · · · qk
b) an−1 ≡ 1 (mod n)
25
Kapitel 3: Komplexität grundlegender Algorithmen
c) a
n−1
qi
6≡ 1 (mod n) für alle i = 1, . . . , k
d) q1 , . . . , qk Primzahlen
Berechne Aufwand für (a) − (c) und die rekursive Verifikation von (d):
Sei f (n) die Gesamtzahl der Multiplikationen, Divisionen und Exponentiationen (mod n), die für (a) − (d) erforderlich sind, wobei wir f (2) = 1 setzen.
Dann
k
k
X
X
f (qi )
f (n) ≤ k − 1 + |{z}
f (qi ) = 3k +
1 +k +k+
| {z }
| {z }
i=1
i=1
(b)
(a)
(c)
| {z }
(d)
Behauptung: f (n) ≤ 7 log n − 6
f (2) = 1 = 7 · 1 − 6; f (3) ≤ 3 + 1 = 4 ≤ 7 log 3 − 6(≈ 5, 06)
Sei n ≥ 5.
Ind.
f (n) ≤
k
X
i=1
(3 + 7 log qi − 6) = 7 ·
k
X
i=1
log qi − 3k ≤ 7 log n − 6
Nach (3.3) erfordert jede Multiplikation und jede Division in Z/nZ (bzw.
(Z/nZ)∗ ) O((logn)2 ) viele Bitoperationen, und jede der k +1 Exponentiationen
an−1 , a
n−1
qi
(mod n) erfordert nach (3.4) O((log n)3 ) viele Bitoperationen.
Daraus ergibt sich eine Gesamtzahl von O((log n)4 ) Bitoperationen.
3.10 Bemerkung
a) Pomerance (1987): Nachweis, dass n prim ist, ist mit O((log n)3 ) vielen
Bitoperationen möglich.
b) (3.6): Nachweis, dass n zusammengesetzt ist: 1 arithmetische Operation
Frage: Ist Nachweis, dass n Primzahl ist, in O(1) arithmetischen Operationen möglich? [Anm: (3.7) erfordert O(log n) viele arithmetische Operationen]
Antwort: Ja! Putnam, Davis, Robinson, Matijasevič (im Zusammenhang mit der negativen Lösung des 10. Hilbertschen Problems): Matijasevič (1971): Es gibt Polynom g ∈ Z[X1 , . . . , Xk ], so dass gilt: Sind
n1 . . . , nk ∈ N0 und ist g(n1 , . . . , nk ) = q > 0, so ist q eine Primzahl (und
jede Primzahl tritt so auf). Zum Nachweis, dass q eine Primzahl ist, gebe
also n1 , . . . , nk an und überprüfe g(n1 , . . . , nk ) = q.
26
Kapitel 3: Komplexität grundlegender Algorithmen
Explizites Polynom vom Grad 25 und in 26 Variablen haben Jones, Sato, Wada, Wiens 1976 gefunden. Auswertung erfordert maximal 87
arithmetische Operationen.
Aber: Eines der ni ist größer als q q
also super-exponentiell.
27
qq
q
, die Anzahl der Bitoperationen ist
4 Klassische Methoden zum
Erkennen von Primzahlen und
zusammengesetzten Zahlen
4.1 Testen auf Divisoren
(trial division)
Methode: Verwende nacheinander Testdivisionen, um Zahl n teilweise oder
vollständig zu faktorisieren.
√
sie n teilen. In aller Regel hat
Zum Beispiel: Teste alle Primzahlen q ≤ n, ob √
man keine vollständige Liste aller Primzahlen ≤ n, dann auch Testdivisionen
durch zusammengesetzte Zahlen.
Typisches Vorgehen: Dividiere solange durch 2, bis eine ungerade Zahl entsteht. Danach nur noch Testdivisionen mit ungeraden Zahlen. Analog mit 3.
Es bleibt eine Zahl, die teilerfremd zu 6 ist. Wir brauchen als Testdivisoren nur
noch die Zahlen in 1 + 6Z, 5 + 6Z zu verwenden. Gehe zu
7
+2
≡1 (mod 6)
+4
5
≡5 (mod 6)
11
≡5 (mod 6)
.
Addiere alternierend (beginnend bei 5) 2 und 4 und führe Testdivisionen durch.
(2, 4) ist ein Rad. Hat man 5 getestet, so braucht man als Testdivisionen nur
noch die Zahlen, die teilerfremd zu 30 sind.
+2
+4
1 + 30Z,
+6
17 + 30Z,
+2
7 + 30Z,
+4
19 + 30Z,
11 + 30Z,
+4
+2
23 + 30Z,
13 + 30Z,
+6
29 + 30Z
Rad (4, 2, 4, 2, 4, 6, 2, 6). Beginne bei 7: 7, 11, 13, . . .
√
log n
Komplexität zur vollständigen Faktorisierung von n: O( n) = O(2 2 ).
4.2 Sieb des Eratosthenes
Eratosthenes (∼ 274 v. Chr. - ∼ 194 v. Chr., Alexandria)
28
Kapitel 4: Klassische Methoden
Ziel:
Bestimme alle Primzahlen ≤ n einzig durch Additionen.
1 1
2 3
1
4
...
...
Am Anfang hat jedes Feld den Eintrag 1.
1
1
n−1 n
(1) Lasse 1 bei 2 stehen. Ändere in den Feldern 4, 6, . . . 1 zur 0.
(2) Lasse 1 bei 3 stehen. Ändere in den Feldern 6, 9, . . . 1 zu 0, falls nicht
schon 0.
(k) Suche nächstes Feld mit 1. (Gehört zu Primzahl p, da nicht teilbar durch
kleinere Primzahl.) Ändere in den Feldern 2p, 3p, . . . 1 zu 0 (falls nicht
schon 0 vorkommt).
Angenommen, p mit Eins und alle ip-Felder haben Eintrag 0. Dann p2 > n.
Die Felder, die jetzt Eintrag 1 haben, gehören zu Primzahlen: Feld zur Zahl i
mit Eintrag
1. Angenommen, i ist keine Primzahl. Dann existiert die Primzahl
√
q ≤ n mit q | i (q < p). Feld i wäre bei den Vielfachen von q zu 0 gemacht
worden.
Das Sieb des Eratosthenes erfordert
X n
= O (n log(log n))
√ p
p≤ n
p prim
viele Additionen(siehe z.B.
[15], Theorem 427). Clevere Verfeinerungen der
n
Siebmethode: O log(log n) (Mairson, Pritchard; 1981)
4.3 Der Fermat-Test und Pseudoprimzahlen
Der kleine Satz von Fermat (2.22.e) besagt:
(*) Ist p Primzahl, a ∈ Z, ggT(a, p) = 1, so ist ap−1 ≡ 1 (mod p)
(**) Ist p Primzahl, a ∈ Z, so ist ap ≡ a (mod p)
Das führt zu Test auf Zusammengesetztheit einer Zahl n – dem Fermat-Test:
Wähle 2 ≤ a ≤ n − 2. Ist an−1 6≡ 1 (mod n), so ist n zusammengesetzt (entweder ggT(a, n) 6= 1 dann n zusammengesetzt, oder ggT(a, n) = 1 dann n zusammengesetzt nach (*)). Ist an−1 ≡ 1 (mod n), ist keine Aussage möglich. ( a = 1
und a = n − 1 werden hier gleich ausgeschlossen, denn 1n−1 ≡ 1 (mod n) und,
falls n ungerade, (n − 1)n−1 ≡ (−1)n−1 ≡ 1 (mod n). Der Fall, dss n gerade
ist, braucht in der Praxis nicht behandelt zu werden: entweder n = 2 oder n
ist zusammengesetzt. Aber natürlich kann man a = 1 und a = n − 1 beim Test
mit zulassen. Ist dann n > 2 gerade, so ist (n − 1)n−1 ≡ −1 6≡ 1 (mod n).)
29
Kapitel 4: Klassische Methoden
4.3.1 Definition
Eine zusammengesetzte Zahl n, für die an−1 ≡ 1 (mod n) (wobei 1 ≤ a ≤ n− 1
fest) gilt, heißt Pseudoprimzahl zur Basis a.
(Man könnte auch Pseudoprimzahlen zur Basis a mit Hilfe der Bedingung an ≡
a (mod n) definieren. Diese bilden dann eine Obermenge der Pseudoprimzahlen
nach unserer Definition; vgl. aber Satz 4.3.4)
Frage: Wie groß ist die Chance, dass eine zusammengesetzte Zahl Pseudoprimzahl zur Basis a ist?
Satz (Erdös, 1950): Sei a ≥ 2, a ∈ N. Sei π(x) die Anzahl der Primzahlen
≤ x (Primzahlfunktion) und πa (x) die Anzahl der Pseudoprimzahlen zur Basis
a (x)
= 0.
a ≤ x. Dann ist limx→∞ ππ(x)
Andererseits: Zu jedem a ≥ 2 gibt es unendlich viele Pseudoprimzahlen zur
Basis a (Crandall, Pomerance, Th. 3.3.4). [Ein entsprechender Satz gilt
auch, wenn man Pseudoprimzahlen zur Basis a durch an ≡ a (mod n) definiert;
Li, 1997]
Daher ist naheliegend: Führe Fermat-Test bezüglich mehrerer Basen a durch.
Nach (2.24): Wenn an−1 ≡ 1 (mod n) für alle 2 ≤ a ≤ n − 2, so ist n Primzahl.
Erfordert O(n) viele Tests!
Für gegebenes a testet man zunächst, ob ggT(a, n) = 1 ist. Wenn nicht, so ist
n zusammengesetzt.
Also stellt sich die Frage: Was kann man über Zahlen n sagen, für die an−1 ≡ 1
(mod n) für alle 1 ≤ a ≤ n − 1, ggT(a, n) = 1 gilt?
Leider: Es gibt zusammengesetzte Zahlen n, die diese Eigenschaft haben.
4.3.2 Definition
Ein zusammengesetztes n heißt Carmichael-Zahl , falls an−1 ≡ 1 (mod n) für
alle 1 ≤ a ≤ n − 1, ggT(a, n) = 1.
(R. Carmichael, 1879 - 1967)
Es gilt also:
30
Kapitel 4: Klassische Methoden
4.3.3 Satz
Besteht eine Zahl n den Fermat-Test für alle 1 ≤ a ≤ n − 1, ggT(a, n) = 1 (d.h.
an−1 ≡ 1 (mod n)), so ist n Primzahl oder Carmichael-Zahl.
Carmichael-Zahlen sind also Pseudoprimzahlen zu jeder Basis a, 1 ≤ a ≤ n − 1,
mit ggT(a, n) = 1. Klar: Carmichael-Zahlen sind ungerade (wähle a = n − 1).
Kleinste Carmichael-Zahl: 561 = 3 · 11 · 17
Carmichael-Zahlen lassen sich folgendermaßen charakterisieren:
4.3.4 Satz
Sei n ∈ N zusammengesetzt. Dann sind äquivalent:
(1) n ist Carmichael-Zahl.
(2) an−1 ≡ 1 (mod n) für alle a ∈ Z mit ggT(a, n) = 1.
(3) an ≡ a (mod n) für alle a ∈ Z.
(4) Für alle Primzahlen p mit p | n gilt: p2 - n und (p − 1) | (n − 1).
Beweis:
(1) ⇒ (2): Sei a ∈ Z, ggT(a, n) = 1. Sei a = kn + r, 1 ≤ r ≤ n − 1. Dann
ggT(r, n) = 1. Da a ≡ r (mod n), ist an−1 ≡ rn−1 (mod n). Nach Voraussetzung ist rn−1 ≡ 1 (mod n), also auch an−1 ≡ 1 (mod n).
(2) ⇒ (4): Sei p eine Primzahl, p | n.
Da (Z/pZ)∗ zyklisch ist (2.30d), existiert b, 1 ≤ b ≤ p− 1, mit o(b + pZ) =
p − 1 (Ordnung bezüglich Multiplikation), d.h. bp−1 ≡ 1 (mod p) aber
bi 6≡ 1 (mod p) für alle 1 ≤ i ≤ p − 1. Seien p2 , . . . , ps die übrigen
Primteiler von n. Nach dem Chinesischen Restsatz (2.19) existiert a ∈ Z
mit a ≡ b (mod p) und a ≡ 1 (mod pj ), j = 2, . . . , s. Da ggT(b, p) = 1,
ist folglich ggT(a, n) = 1. Außerdem ai ≡ bi (mod p) für alle i, d.h.
o(a+pZ) = p−1 (in (Z/pZ)∗ ). Nach Voraussetzung ist an−1 ≡ 1 (mod n),
also auch an−1 ≡ 1 (mod p), d.h. (a + pZ)n−1 = 1 + pZ. Nach (2.9d) ist
daher p − 1 = o(a + pZ) | n − 1.
Angenommen, p2 | n.
p
Es ist (p + 1)p = pp + p1 pp−1 + · · · + p−1
p + 1. Alle Terme auf der
rechten Seite (bis auf 1) sind durch p2 teilbar. Also o((p + 1) + p2 Z) = p
31
Kapitel 4: Klassische Methoden
in (Z/p2 Z)∗ . Mit dem Chinesischen Restesatz erhält man ein a ∈ Z mit
a≡p+1
(mod p2 ) und a ≡ 1 (mod pj ), j = 2, . . . , s
Also ist ggT(a, n) = 1 und nach Voraussetzung ist an−1 ≡ 1 (mod n),
also auch an−1 ≡ 1 (mod p2 ). Da o(a + p2 Z) = o((p + 1) + p2Z) = p folgt
p | n − 1. Dies ist ein Widerspruch zu p | n.
(4) ⇒ (3): Nach Voraussetzung ist n = p1 · · · ps , pi Primzahlen, pi 6= pj für i 6=
j. Sei o.B.d.A. ggT(a, n) = p1 . . . pr , 0 ≤ r ≤ s (r = 0, falls ggT(a, n) =
1). Es ist an ≡ a ≡ 0 (mod pj ) für j = 1, . . . , r. Nach dem Satz von
Fermat (2.22e) ist apj −1 ≡ 1 (mod pj ) für j = r + 1, . . . , s, also an−1 ≡ 1
(mod pj ), da nach Voraussetzung pj − 1 | n − 1. Daher ist auch an ≡ a
(mod pj ) für j = r + 1, . . . , s.
Aus n = p1 · · · ps , pi 6= pj , folgt dann an ≡ a (mod n).
(3) ⇒ (1): Ist ggT(a, n) = 1, so existiert (a + nZ)−1 . Da nach Voraussetzung
(a + nZ)n = a + nZ, folgt (a + nZ)n−1 = (a + nZ)n · (a + nZ)−1 =
(a + nZ) · (a + nZ)−1 = 1 + nZ, d.h an−1 ≡ 1 (mod n).
4.3.5 Satz (Alford, Granville, Pomerance, 1994)
Es gibt unendlich viele Carmichael-Zahlen.
Genauer: Ist C(x) die Anzahl der Carmichael-Zahlen ≤ x, so gilt: Es gibt ein
x0 so dass C(x) > x2/7 für alle x ≥ x0 .
Zum Vergleich:
4.3.6 Primzahlsatz (Hadamard, de la Vallée Poussin, 1896)
π(x) ∼
Das heißt, limx→∞
π(x)
x/ ln x
x
ln x
=1
4.4 Der Miller-Rabin-Test und starke
Pseudoprimzahlen
Der Miller-Rabin-Test verwendet eine Verschärfung des kleinen Satzes von
Fermat und beseitigt damit die Ausnahmerolle der Carmichael-Zahlen. Diese Verschärfung ist im folgenden Lemma enthalten.
32
Kapitel 4: Klassische Methoden
4.4.1 Lemma
Ist p eine Primzahl, p 6= 2, a ∈ Z, ggT(a, p) = 1, p − 1 = 2s · d, 2 - d, so gilt:
r
Entweder ad ≡ 1 (mod p) oder es existiert r ∈ {0, . . . , s− 1} so dass a2 ·d ≡ −1
r+1
(mod p) (dann a2 ·d ≡ 1 (mod p)).
Beweis: a + pZ ∈ (Z/pZ)∗ , d.h. o(a + pZ) | p − 1.
s
s
Es ist (ad + pZ)2 = ad·2 + pZ = ap−1 + pZ = 1 + pZ.
Also k := o(ad + pZ) | 2s
d
(nach 2.9)
d
k = 1: a + pZ = 1 + pZ ⇔ a ≡ 1 (mod p)
l−1
l−1
k > 1: d.h. k = 2l , 1 ≤ l ≤ s mit a2 ·d + pZ = (ad + pZ)2
6= 1 + pZ und
2l−1 ·d
2
2l ·d
(a
+ pZ) = a
+ pZ = 1 + pZ
l−1
⇒ o(a2 ·d + pZ) = 2. Jede zyklische Gruppe gerader Ordnung enthält
genau ein Element der Ordnung 2 (folgt aus (2.9e))
(Z/pZ)∗ ist zyklisch
(2.30d)
(Z/pZ)∗ hat genau ein Element der Ordnung 2: −1 + pZ. Setze r = l − 1.
4.4.2 Definition
Sei n ≥ 3 ungerade, 2 ≤ a ≤ n − 2, ggT(a, n) = 1, n − 1 = 2t · e, 2 - e.
r
• Ist n zusammengesetzt und es gilt entweder ae ≡ 1 (mod n) oder a2 ·e ≡
−1 (mod n) für ein r ∈ {0, . . . , t − 1}, so heißt n starke Pseudoprimzahl
zur Basis a.
(Beachte: Starke Pseudoprimzahlen sind auch Pseudoprimzahlen zur Basis a, d.h. an−1 ≡ 1 (mod n))
r
• Ist ae 6≡ 1 (mod n) und a2 ·e 6≡ −1 (mod n) für alle r ∈ {0, . . . , t − 1},
so ist n zusammengesetzt (4.4.1); a heißt dann Zeuge gegen die Primzahleigenschaft von n.
Beispiel:
• n = 91 = 7 · 13, a = 10, n − 1 = 21 · 45, 1045 ≡ −1 (mod 91), folglich ist
91 starke Pseudoprimzahl zur Basis 10.
• n = 561 = 3 · 11 · 17 Carmichael-Zahl, a = 2, n − 1 = 24 · 35, 235 ≡
263 (mod 561); 22·35 ≡ 166 (mod 561); 24·35 ≡ 67 (mod 561); 28·35 ≡ 1
(mod 561). Folglich ist n keine starke Pseudoprimzahl zur Basis 2, n ist
zusammengesetzt.
33
Kapitel 4: Klassische Methoden
Wir zeigen jetzt: Ist n zusammengesetzt und ungerade, so gibt es viele Zeugen
gegen die Primzahleigenschaft von n.
4.4.3 Satz
Sei n ≥ 3 zusammengesetzte ungerade Zahl. Dann gibt es mindestens ϕ(n)/2
Zeugen a gegen die Primzahleigenschaft von n.
Beweis:
a) Sei zunächst n = p1 · · · · · pl , pi Primzahlen, pi 6= pj für i 6= j, n − 1 =
2t · e, 2 - e.
Ist jedes a, 2 ≤ a ≤ n − 2 mit ggT(a, n) = 1 Zeuge gegen die Primzahleigenschaft von n, so fertig (ϕ(n)−2 ≥ ϕ(n)/2, da ϕ(n) = ϕ(p1 ) · · · ϕ(pl ) =
(p1 − 1) · · · (pl − 1) > 4, denn l ≥ 2 ungerade)
OBdA: Also gibt es Nichtzeugen, das heißt, a ∈ Z, 2 ≤ a ≤ n − 2,
r
ggT(a, n) = 1, so dass ae ≡ 1 (mod n) (*) oder a2 ·e ≡ −1 (mod n)
(**) für ein r ∈ {0, 1, . . . , t − 1}. Existiert ein a mit (*), dann erfüllt
n − a(≡ −a (mod n)) Bedingung (**) mit r = 0. Sei k der größte Wert,
k
für den es a mit 2 ≤ a ≤ n − 2 und ggT(a, n) = 1 gibt mit a2 ·e ≡ −1
(mod n); setze m = 2k · e.
Setze L := {b + nZ : ggT(b, n) = 1, bm ≡ ±1 (mod n)}. Jeder Nichtzeuge
liegt in L. L ist Untergruppe von ((Z/nZ)∗ , ·). Zeige: L ist echte UnterLagrange
∗
=
gruppe von (Z/nZ)∗ . (Denn dann: #Nichtzeugen ≤ |L| ≤ (Z/nZ)
2
ϕ(n)
2 )
Wähle a mit 2 ≤ a ≤ n − 2, ggT(a, n) = 1 und am ≡ −1 (mod n).
Chinesischer Restsatz (2.19): Es existiert b mit 1 ≤ b ≤ n − 1 mit b ≡ a
(mod p1 ), b ≡ a2 (mod pi ), i = 2, . . . , l.
Dann bm ≡ am ≡ −1 (mod p1 ), bm ≡ a2m ≡ 1 (mod pi ), i = 2, . . . , l
Klar: b + nZ ∈ (Z/nZ)∗ .
Es sind (b + nZ) · L, (a2 + nZ) · L verschiedene Nebenklassen von L in
(Z/nZ)∗ :
Angenommen sie sind gleich. Dann: (a2 + nZ)−1 (b + nZ) ∈ L, a−2 b +
nZ ∈ L. Dann a−2m bm ≡ 1 oder − 1 (mod n). a2m ≡ 1 (mod n). Also
bm ≡ 1 oder − 1 (mod n). Angenommen
· bm ≡ 1 (mod n) ⇒ bm ≡ 1 (mod p1 ).
Andererseits bm ≡ −1 (mod p1 ), Widerspruch, da p1 6= 2.
· bm ≡ −1 (mod n) ⇒ bm ≡ −1 (mod p2 ).
Andererseits bm ≡ 1 (mod p2 ). Widerspruch, da p2 6= 2.
34
Kapitel 4: Klassische Methoden
Damit ist Fall (a) abgeschlossen.
b) Allgemeiner Fall:
Ist n Carmichael-Zahl, so fertig mit a) und (4.3.4). Ist n keine CarmichaelZahl, so existiert a ∈ Z, 2 ≤ a ≤ n − 2, ggT(a, n) = 1 mit an−1 ≡ 1
(mod n). Setze
K = {b+nZ : 1 ≤ b ≤ n−1, ggT(b, n) = 1, bn−1 ≡ 1 (mod n)} ⊆ (Z/nZ)∗
Alle Nichtzeugen liegen in K. a + nZ 6∈ K. K echte Untergruppe von
(Z/nZ)∗ .
4.4.4 Miller-Rabin-Test
(Miller 1976, Rabin 1976, Vorläufer Selfridge 1974)
Gegeben: n > 3 ungerade.
a) Wähle a ∈ [2, n − 2] zufällig.
b) Bestimme ggT(a, n).
Ist ggT(a, n) 6= 1, so Ausgabe n ist zusammengesetzt“;
”
Ist ggT(a, n) = 1, so
c) Bestimme t mit n − 1 = 2t e, 2 - e
d) b := ae (mod n)
e) b = 1 oder b = n − 1, so Ausgabe n ist starke Pseudoprimzahl
”
zur Basis a oder Primzahl“;
Ist b 6= 1, n − 1 so
f) Wiederhole für j = 1, . . . , t − 1
b := b2 mod n;
b = n − 1 so Ausgabe n ist starke Pseudoprimzahl zur Basis a
”
oder Primzahl“;
g) Ausgabe n ist zusammengesetzt“;
”
Bei Ausgabe n ist Primzahl“ statt n ist starke Pseudoprimzahl zur
”
”
Basis a oder Primzahl“ Monte-Carlo-Algrorithmus. (Dann Ausgabe n ist
”
zusammengesetzt“ wahr, aber n ist Primzahl“ kann falsch sein.)
”
35
Kapitel 4: Klassische Methoden
4.4.5 Bemerkung
4.4.3 kann verbessert werden. Mornier, Rabin 1980: n > 9 zusammengesetzt,
ungerade, so gibt es mindestens 43 ϕ(n) viele Zeugen gegen die Primzahleigenschaft von n. (C. Pomerance, Crandall Th. 3.44 oder [16, Th. 12.4]) Daher
ist die Fehlerwahrscheinlichkeit des Miller-Rabin-Tests ≤ 41 . Verbessern durch
iterieren: Fehlerwahrscheinlichkeit ≤ 41k .
(Applet: http://www.jjam.de/Java/Applets/Primzahlen/Miller Rabin.html)
Gibt man bei dem Miller-Rabin-Test statt n ist starke Pseudoprimzahl
”
oder Primzahl“ nur n ist Primzahl“ aus, so erhält man einen Monte-Carlo”
Algorithmus: Die Aussage n ist zusammengesetzt“ ist stets korrekt. Aber:
”
Mit Wahrscheinlichkeit ≤ 41 gibt der Algorithmus für eine zusammengesetzte
Zahl die Antwort n ist prim“ aus. Bei k zufälligen Wahlen von a erhält man
”
eine Wahrscheinlichkeit ≤ 41k .
Wie groß ist die Wahrscheinlichkeit, dass n Primzahl ist, falls Monte-CarloMiller-Rabin n ist Primzahl“ ausgibt?
”
Bereich angeben, in dem n liegt.
Gegeben: N . Die Zufallsvariable X bezeichne das Ereignis, dass die zu testende
Zahl n ≤ N zusammengesetzt ist. Die Zufallsvariable X̄ bezeichne das Ereignis, dass die zu testende Zahl n ≤ N eine Primzahl ist. Die Zufallsvariable
Y bezeichne das Ereignis, dass Monte-Carlo-Miller-Rabin nach k Durchläufen
n ist Primzahl“ ausgibt.
”
Wir sind interessiert an der bedingten Wahrscheinlichkeit P (X̄|Y ) – dies ist die
Wahrscheinlichkeit, dass n Primzahl ist, falls Monte-Carlo-Miller-Rabin ausgibt, dass n prim ist. P (X̄|Y ) = 1−P (X|Y ). Wir wissen P (Y |X) ≤ 41k , P (X̄) =
N
1
ln N [Anzahl der Primzahlen ≤ N = π(N ) ≈ ln N , siehe Primzahlsatz, (4.3.6)].
1
P (X) ≈ 1 − ln N ≤ 1, P (Y ) ≥ P (X̄). Bayes’sche Formel:
P (X|Y ) =
1
P (Y |X) · P (X)
ln N
k · 1
≤ 4
≈ k
P (Y )
4
P (X̄)
Folglich ist P (X̄|Y ) = Wahrscheinlichkeit, dass zufällig gewähltes n ∈ [1, N ]
Primzahl ist, falls Monte-Carlo-Miller-Rabin ausgibt n ist Primzahl“ min”
destens 1 − ln4kN
Soll P (X̄|Y ) ≥ 1 − ε, 0 < ε < 1, so wähle k so, dass ln4kN ≤ ε, das heißt
N )−ln ε
k ≥ ln(ln ln
4
36
Kapitel 4: Klassische Methoden
4.4.6 Satz
h
i
N )−ln ε
Sei 0 < ε < 1 vorgegeben. Sei N ∈ N und k = ln(ln ln
. Wählt man eine
4
Zahl n zufällig aus [1, N ], so gilt: Gibt der Monte-Carlo-Miller-Rabin-Test nach
k Durchläufen die Ausgabe n ist Primzahl“, so ist n mit Wahrscheinlichkeit
”
≥ 1 − ε Primzahl.
Tatsächlich in der Praxis: Für große n wählt man k = 1 oder k = 2.
Grund: Für große zusammengesetzte n ist die Anzahl der Zeugen gegen die
Primzahleigenschaft von n deutlich größer als 34 ϕ(n).
Zum Beispiel: Wähle n ∈ [2499 , 2500 ] ungerade. Die Wahrscheinlichkeit, dass n
zusammengesetzt ist, aber bei einem Durchlauf des Miller-Rabin-Testes nicht
als zusammengesetzt erkannt wird, ist kleiner als 4128 .
(Damgård,
Landrock, Pomerance, 1999)
4.4.7 Bemerkung
a) Komplexität von Miller-Rabin-Test (4.4.4 — 1 Durchlauf): O((log n)3 ).
Dies folgt aus Kapitel 3.
b) Bach, 1985: n ungerade zusammengesetzte Zahl, so existiert Zeuge a
gegen die Primzahleigenschaft von n mit a < 2 · (ln n)2 , vorausgesetzt die
sogenannte verallgemeinerte Riemann’sche Vermutung gilt.
Unter der Voraussetzung der verallgemeinerten Riemannschen Vermutung wird der Miller-Rabin-Test mit Test aller a ∈ [1, (2 · (ln n)2 )] zu
einem deterministischen Primzahltest der Komplexität O((log n)5 ).
Ein Einschub zur (verallgemeinerten) Riemannschen Vermutung: Für s ∈
R, s > 1 gilt:
X 1
Y
1
=
(Euler-Produkt)
s
n
1 − p−s
n∈N
p prim
P
Für s ∈ C : n∈N n1s konvergiert absolut für alle s mit Re(s) > 1. Die Riemannsche ζ-Funktion ζ(s) P
ist in C\{0} unendlich oft differenzierbar und
stimmt auf Re(s) > 1 mit n∈N n1s überein (analytische Fortsetzung). ζ
hat Nullstellen bei −2, −4, −6, . . . und Nullstellen mit Re(s) = 21 .
Die Riemannsche Vermutung besagt, dass dies die einzigen Nullstellen
sind. Die verallgemeinerte Riemannsche Vermutung besagt, dass dies für
verallgemeinerte ζ-Funktionen (sogenannte Dirichlet’sche L-Funktionen) ebenso gilt.
37
Kapitel 4: Klassische Methoden
4.4.8 Bemerkung
Wie erzeugt man k-Bit-Primzahlen möglichst zufällig (z.B. für RSA)? Zufallswahlen in [2k−1 , 2k − 1]: In [2k−2 , 2k−1 − 1] wähle a zufällig, bilde 2a + 1; dies
liefert ungerade Zufallszahl in dem benötigten Intervall [2k−1 , 2k − 1].
Wie groß ist die Wahrscheinlichkeit, auf diese Weise eine Primzahl zu finden:
2
π(2k ) − π(2k−1 )
≈
k−1
2
k ln 2
2
viele Versuche, um Primzahl zu finden [RSA: k =
Im Schnitt braucht man k ln
2
200; 70 Versuche]. Bei jedem Versuch: (1) Aussieben von kleinen Primzahlen;
Erst wenn keine kleinen Primfaktoren existieren: (2) Miller-Rabin.
38
5 Der Primzahltest von Agrawal,
Kayal und Saxena
August 2002; AKS-Test (Agrawal, Kayal, Saxena): deterministischer, polynomialer Primzahltest (Verbesserungen von Bernstein und H.W. Lenstra,
jr.).
Er beruht auf folgender Primzahlcharakterisierung:
5.1 Satz
Sei a ∈ Z, n ∈ N, n ≥ 2, ggT(a, n) = 1. Dann gilt:
n ist Primzahl ⇐⇒ (X + a)n ≡ X n + a (mod n)
Im Folgenden: Zn = Z/nZ.
(x+a)n ≡ xn +a mod n bedeutet also, dass (x+a)n und xn +a als Polynome in
Zn [x] gleich sind (wobei man bei präziser Schreibweise a durch a + nZ ersetzen
muss).
Beweis:
In Z[X] (2.13) gilt:
(X + a)n = X n +
n−1
X
i=1
n n−i i
a X + an
i
Folglich
ist für n Primzahl: an ≡ a (mod n) (Satz
von Fermat, (2.27e)n) und
n
n
n!
i = i!(n−i)! . n prim ⇒ n 6 |i!, n 6 |(n−i)! ⇒ n| i für 1 ≤ i ≤ n−1 ⇒ i ≡ 0
(mod n).
Sei n zusammengesetzt und q einechter
Primteiler von n, q k | n, q k+1 - n.
Koeffizient von X q in (X + a)n :
n
q
an−q .
teilerfremd zu q
z
}|
{
(n − q + 1) · · · · · (n − 1) ·n
n!
n
k
=
q 6|
=
(n − q)!q!
q!
q
39
Kapitel 5: Der Primzahltest von Agrawal, Kayal und Saxena
darin ist q k−1 die höchste q-Potenz, die teilt.
n−q
ggT(a,
n) = 1, also q 6 |a
n
n−1
⇒ q a
6≡ 0 (mod q k ), und insbesondere nq an−q 6≡ 0 (mod n).
Bemerkung: Ist n Primzahl, so gilt die Aussage in (5.1) für alle a ∈ Z (dies
sieht man am Beweis).
Möglicher Test: Multipliziere (X +1)n aus und teste die Koeffizienten (mod n).
Komplexität: O(n) = O(2log n ) – exponentiell
Idee des AKS-Algorithmus: Teste Kongruenz (X + a)n ≡ X n + a (mod (X r −
a, n)) mit geeignet gewähltem kleinen“ r.
”
Was heißt das? (X + a)n ≡ X n + a (mod (X r − 1, n)) bedeutet, dass X r − 1
die Differenz von (X + a)n und (X n + a) in Zn [X] teilt. Wir rechnen also in
Zn [X]/(X r − 1)Zn [X]. Vertretersystem der Nebenklassen von (X r − 1)Zn [X]
in Zn [X] sind die Polynome vom Grad ≤ r − 1. Man muss also r so wählen,
dass es polynomial in log(n) ist.
Ist n eine Primzahl, so erfüllt n die Kongruenz modulo n in (5.1), und daher
auch die Kongruenz modulo (n, X r − 1), d.h. (X + a)n ≡ X n + a (mod n) ⇒
(X + a)n ≡ X n + a (mod (X r − 1, n)). Allerdings könnte auch für zusammengesetzte Zahlen n die Kongruenz modulo (n, X r − 1) für gewisse a erfüllt sein.
Lösung von Agrawal, Kayal und Saxena: Für geeignetes r braucht man nur
O(poly(log n)) viele a’s zu testen, um sagen zu können, dass n Primzahl ist.
Wir geben den AKS-Algorithmus an und beweisen dann seine Korrektheit.
Dazu führen wir folgende Bezeichnungen ein:
(X + a)n ∈ Z[X]
f (X) → f˜(X) ∈ (Z/nZ)[X](alle Koeffizienten reduzieren)
→ f¯(X) ∈ Zn [X]/(X r − 1)Zn [X]
f (X)
=
f¯ = f (mod (n, X r − 1)) = ar X r−1 + · · · + a0 + (X r − 1)Zn [x]
Für r, n ∈ N, ggT(r, n) = 1 definiere: or (n) = Ordnung von n modulo r“
”
or (n) = o(n + rZ) = kleinstes d ∈ N mit (n + rZ)d = 1 + rZ ⇔ nd ≡ 1 (mod r),
d.h. or (n) ist die Ordnung von n + rZ in (Z/rZ)∗ .
5.2 AKS-Algorithmus
Eingabe: n > 1
40
Kapitel 5: Der Primzahltest von Agrawal, Kayal und Saxena
1.) Wenn n = bc für b, c ∈ N, c > 1, so Ausgabe n ist zusammengesetzt“
”
2.) Finde das kleinste r ∈ N mit ggT(n, r) = 1 und or (n) > 4(log n)2
3.) Wenn 1 < ggT(a, n) < n für ein a < r, so Ausgabe
n ist zusammengesetzt“
”
4.) Wenn r ≥ n, so Ausgabe n ist Primzahl“
”
p
5.) Für a = 1, . . . , b2 ϕ(r) log nc: Wenn (X +a)n 6≡ X n +a (mod X r −1, n),
so Ausgabe n ist zusammengesetzt“
”
6.) Ausgabe n ist Primzahl“
”
Bemerkung: Wenn man in Schritt 2 der Reihe nach alle r = 1, 2, . . . testet, so
kann man Schritt 2 und Schritt 3 gleichzeitig durchführen.
5.3 Satz
Algorithmus 5.2 gibt als Ausgabe n ist Primzahl“ aus, genau dann, wenn n
”
Primzahl ist.
Die eine Richtung des Satzes ist leicht zu beweisen:
5.4 Lemma
Ist n Primzahl, so gibt AKS-Algorithmus n ist Primzahl“ aus.
”
Beweis: Falls n Primzahl ist, so gibt der Algorithmus in den Zeilen 1 und
3 niemals n ist zusammengesetzt“ aus. Ist n Primzahl, so gilt nach Satz
”
5.1 für alle a mit ggT(a, n) = 1, dass (x + a)n ≡ X n + a mod n, also auch
n
(X + a) ≡ xn + a mod (xr − 1, n).
Ist n bereits eine Primzahl, so gibt der Algorithmus in Zeile 5 nie n ist
”
zusammengesetzt“ aus, denn X n + a ≡ (X + a)n (mod n) für alle a ∈ Z (vgl.
Bemerkung nach 5.1).
Also gibt der Algorithmus in Zeile 4 oder 6 n ist Primzahl“ aus.
”
(Dazu ist noch zu zeigen: Algorithmus terminiert in Zeile 2. Dies wird in Lemma
5.5 gezeigt.)
Wir zeigen jetzt den schwierigen Teil von Satz 5.3, nämlich:
Gibt der Algorithmus n ist Primzahl“ aus, so ist n Primzahl.
”
41
Kapitel 5: Der Primzahltest von Agrawal, Kayal und Saxena
Wir zeigen zunächst, dass der Algorithmus in Zeile 2 ein r findet, und zwar
schnell“.
”
Dazu benötigen wir:
Satz (Nair, 1982) Ist m ≥ 9, so ist kgV(1, 2, . . . , m) ≥ 2m .
(Der Beweis ist nicht sehr schwierig; siehe M. Nair, On Chebyshev-type inequalities for primes. The American Mathematical Monthly 89, 126 – 129,
1982.)
5.5 Lemma
Es gibt ein r ≤ d16(log n)5 e mit or (n) > 4(log n)2 .
Beweis: Sei k := 4(log n)2 . Seien r1 , . . . , rt alle diejenigen Zahlen, für die gilt:
ori (n) ≤ k.
(Für diese ri gilt: ri | ndi − 1 für ein di ≤ k; also gibt es nur endlich viele.)
Jedes dieser ri teilt das folgende Produkt
Qbkc i
bkc·(bkc+1)
2
4
5
2
bkc
2
≤ nk = n16(log n) = 216(log n) .
=n
i=1 (n − 1) < n · n · · · · · n
5
Nach Satz von Nair: kgV(1, 2, . . . , d16 · (log n)5 e) ≥ 216·(log n) .
Q
bkc
Also gibt es eine Zahl r < d16 · (log n)5 e, die i=1 (ni − 1) nicht teilt. Dann:
2
or (n) > k = 4(log n) . Wenn der Algorithmus in Zeile 4 n ist Primzahl“ ausgibt, (d. h. r ≥ n), so
”
ist n eine Primzahl, denn sonst hätte der Algorithmus in Zeile 3 einen Teiler
von n gefunden.
Also Annahme ab jetzt:
Der Algorithmus gibt in Zeile 6 n ist Primzahl“ aus.
”
Wir haben zu zeigen:
Es gibt keinen Teiler von n, der größer als r ist.
(Teiler ≤ r wären in Zeile 3 gefunden worden.)
Also Zweite Annahme:
Es existiert eine Primzahl p, r < p < n, mit p | n.
Beachte: ggT(n, r) = 1 nach Zeile 2 des Algorithmus. Also p + rZ, n + rZ ∈ Z∗r .
p
Sei l = b2 ϕ(r) log nc die Grenze für die Tests der a0 s in Zeile 5.
Dann:
(x + a)n ≡ xn + a mod (xr − 1, n) für alle 1 ≤ a ≤ l.
Also auch:
42
Kapitel 5: Der Primzahltest von Agrawal, Kayal und Saxena
(x + a)n ≡ xn + a mod (xr − 1, p) für alle 1 ≤ a ≤ l.
Nach 5.1:
(x + a)p ≡ xp + a mod (xr − 1, p) für alle 1 ≤ a ≤ l.
5.6 Definition
Seien p und r wie oben, f ∈ Z[x] ein ganzzahliges Polynom.
Eine Zahl m ∈ Z heißt p-artig für f (x), falls f (x)m ≡ f (xm ) mod (xr − 1, p).
Also: n und p sind p-artig für alle x + a, 1 ≤ a ≤ l.
Wir zeigen nun, dass p-artige Zahlen für ein festes Polynom abgeschlossen sind
unter Multiplikation und dass umgekehrt die Menge aller Polynome, für die
eine feste Zahl p-artig ist, ebenfalls abgeschlossen ist unter Multiplikation.
5.7 Lemma
Sind m, m0 p-artig für ein Polynom f (x), so auch m · m0 .
0
0
Beweis: (1) (f (x))mm ≡ (f (xm ))m mod (xr − 1, p).
0
0
Aus f (x)m ≡ f (xm ) mod (xr − 1, p) folgt durch Ersetzen von x durch xm
m m0
mm0
f (x ) ≡ f (x
) mod (xmr − 1, p).
r
mr
Da x − 1 | x − 1, gilt auch
0
0
(2) f (xm )m ≡ f (xmm ) mod (xr − 1, p).
Aus (1) und (2) folgt die Behauptung. 5.8 Lemma
Ist m p-artig für f (x) und g(x), so auch für f (x) · g(x).
Beweis:
(f (x) · g(x))m = f (x)m · g(x)m ≡ f (xm )g(xm ) mod (xr − 1, p).
Wir setzen jetzt:
I = {ni · pj | i, j ≥ 0}
Ql
P = { a=1 (x + a)fa | fa ≥ 0}
p
(l = b2 ϕ(r) log nc wie oben)
43
Kapitel 5: Der Primzahltest von Agrawal, Kayal und Saxena
Nach 5.7 und 5.8 gilt:
Jede Zahl aus I ist p-artig für jedes Polynom aus P .
Wir definieren nun zwei Gruppen G und H, die für den weiteren Beweis besonders wichtig sind.
Definition der Gruppe G
G := {k + rZ | k ∈ I} ⊆ Zr∗
Da I abgeschlossen bezüglich Multiplikation ist, ist G Untergruppe von Z∗r .
Es ist G = hp + rZ, n + rZi.
Sei |G| = t. Dann ist t | ϕ(r) nach dem Satz von Lagrange, denn |Z∗r | = ϕ(r).
Da o(n + rZ) = or (n) > 4(log n)2 und o(n + rZ) | |G| = t, folgt t > 4(log n)2 .
Bevor wir die Gruppe H definieren können, eine Vorbemerkung:
Wir fassen xr − 1 als Polynom in Zp [x] auf. Es ist ggT(r, p) = 1, da r < p, p
Primzahl.
Wir verwenden den folgenden Satz aus der Algebra (Stichwort: Kreisteilungspolynome; siehe z. B. R. Lidl, H. Niederreiter: Introduction to finite fields
and their applications, Abschnitt 2.4):
Satz:
Es existiert ein irreduzibles Polynom h = h(x) ∈ Zp [x] mit
(1) h(x) | xr − 1
(2) ggT(h(x), xs − 1) = 1 für alle s | r, s < r.
Es ist hZp [x] ⊇ (xr − 1)Zp [x] und F = Zp [x]/hZp [x] ist ein endlicher Körper
(2.29.e). Außerdem ist F ⊇ Zp , wobei Zp identifiziert ist mit {c + hZp [x] | c ∈
Zp }.
Jedem Polynom f aus Z[x] ist in natürlicher Weise ein Element f aus F zugeordnet als Bild der Hintereinanderausführung der beiden folgenden Homomorphismen:
f ∈ Z[x] → f˜ ∈ Zp [x] → f = f˜+hZp [x] ∈ F , wobei der erste Homomorphismus
durch die Reduktion der Koeffizienten modulo p gegeben ist.
Definition der Gruppe H
H = {g + hZp [x] | g ∈ P, g + hZp [x] 6= 0} ⊆ F ∗
P ist abgeschlossen bezüglich Multiplikation, also ist H Untergruppe von F ∗ .
Es ist H = hx + a | 1 ≤ a ≤ l, x + a 6= 0i.
(x + a = 0 ist nur möglich, falls x + a (genauer x]
+ a) = h(x).)
Wir zeigen nun: |H| ist groß im Vergleich zu t = |G|. Dies ist das entscheidende
Lemma in der Arbeit von Agrawal, Kayal und Saxena.
44
Kapitel 5: Der Primzahltest von Agrawal, Kayal und Saxena
5.9 Lemma
|H| ≥
t+l−2
t−1
Beweis: xr ≡ 1 mod (xr −1, p), also auch xr ≡ 1 mod (h(x), p), d. h. xr = 1
in F ∗ .
Nach 2.9.d ist daher o(x) ein Teiler von r.
Wäre o(x) = s, s < r, so wäre xs ≡ 1 mod (h(x), p), d. h. h(x) | xs − 1 in
Zp [x], im Widerspruch zu (2) oben.
Also gilt:
(Man sagt dann auch: x ist primitive
(a) o(x) = r
r-te Einheitswurzel in F .)
Wir zeigen nun:
(b) Sind f, g ∈ P mit f 6= g und grad f , grad g < t, so ist f 6= g:
Angenommen f = g. Sei m ∈ I.
m
Dann f = g m , d. h. f (x)m ≡ g(x)m mod (h(x), p).
Da f, g ∈ P, m ∈ I, ist f (x)m ≡ f (xm ) mod (xr − 1, p), also auch f (x)m ≡
f (xm ) mod (h(x), p) und analog für g. Also ist f (xm ) ≡ g(xm ) mod (h(x), p).
Das bedeutet aber: xm ist Nullstelle von q(y) = f (y) − g(y) ∈ F [y].
Da o(x) = r, gilt daher für beliebige m1 , m2 ∈ I mit m1 + rZ 6= m2 + rZ, dass
xm1 6= xm2 .
Also hat q mindestens |G| = t viele verschiedene Nullstellen in F . Dies ist ein
Widerspruch, da grad q ≤ grad f < t.
Also: f 6= g.
(c) x + 1, . . . , x + l sind paarweise verschiedene Elemente in F :
Sei 1 ≤p
i 6= j ≤ l. Dann i 6= j in Zp (d. h. genauer i 6≡ j mod p), denn:
√
l = b2 ϕ(r) log nc < 2 r log n ≤ r < p, wobei die vorletzte Ungleichung
wegen r ≥ ϕ(r) ≥ or (n) > 4(log n)2 gilt.
Daraus folgt (c).
(d) Beweisabschluss:
H enthält mindestens l − 1 viele Elemente x + ai (nämlich alle x + j, 1 ≤ j ≤ l,
außer evtl. ein x + a = 0, falls h(x) = x + a).
Bildet man zwei verschiedene Polynome f und g vom Grad < t, die jeweils
Produkte von einigen x + ai sind, so ist f 6= g nach (b).
Wie viele solche Polynome gibt es? Dies ist genau die Anzahl der Auswahlen
von t − 1 vielen Elementen aus {1, x − a1 , . . . , x − al−1 } mit Wiederholung ohne
Berücksichtigung der Anordnung.
Diese Anzahl ist l+(t−1)−1
= l+t−2
t−1
t−1 .
45
Kapitel 5: Der Primzahltest von Agrawal, Kayal und Saxena
Also: |H| ≥
.
l+t−2
t−1
Wir zeigen nun, dass |H| andererseits klein“ sein muss, wenn n nicht Potenz
”
von p ist.
5.10 Lemma
√
Ist n keine Potenz von p, so |H| < 21 n2 t .
√
Beweis: Setze I 0 = {ni · pj | o ≤ i, j ≤ b tc} ⊆ I.
0
0
0
0
Angenommen, ni · pj = ni · pj . Ist i 6= i0 , etwa i > i0 , so ni−i = pj −j , also n
Potenz von p, Widerspruch.
√
√
Damit i = i0 und dann auch j = j 0 . Daher: |I 0 | = (b tc + 1)2 > ( t)2 = t.
Es ist |G| = t. Also existieren m1 , m2 ∈ I 0 mit m1 6= m2 und m1 +rZ = m2 +rZ.
Sei etwa m1 > m2 .
Dann ist xm1 −m2 ≡ 1 mod (xr − 1, p), also xm1 ≡ xm2 mod (xr − 1, p).
Ist f ∈ P , so ist f (x)m1 ≡ f (xm1 ) ≡ f (xm2 ) ≡ f (x)m2 mod (xr − 1, p), und
dann auch f (x)m1 ≡ f (x)m2 mod (h(x), p).
m1
m2
Also gilt in F : f (x) = f (x) . Daher ist f (x) Nullstelle des Polynoms q 0 (y) =
y m1 − y m2 ∈ F [y]. Folglich hat q 0 mindestens |H| viele Nullstellen in F . Die
Anzahl der Nullstellen eines Polynoms über einem Körper ist aber höchstens
so groß wie der Grad des Polynoms.
Damit
√
√ folgt:
|H| ≤ grad q 0 = m1 ≤ (n · p)b tc < 21 n2 t . Dabei gilt die zweite Ungleichung
nach Definition von I 0 und die letzte, da p | n, p 6= n.
Wir können nun den Beweis von Satz 5.3 abschließen.
5.11 Lemma
Gibt der AKS-Algorithmus n ist Primzahl“ aus, so ist n Primzahl.
”
Wir benötigen zwei einfache
Eigenschaften von Binomialkoeffizienten:
(i) Ist c ≥ b ≥ a, so ac ≥ ab
Insbesondere: Ist c ≥ b ≥ 0, so a+c
≥ a+b
c
b
(ii) 2a−1
≥ 2a für a ≥ 3.
a
46
Kapitel 5: Der Primzahltest von Agrawal, Kayal und Saxena
Beweis von 5.11: Angenommen, der Algorithmus gibt n ist Primzahl“ in
”
Zeile 6 aus. Angenommen, np
ist keine Primzahl.
Dann gilt mit |G| = t, l = b2 ϕ(r) log nc:
|H| ≥
≥
≥
t+l−2
t−1 √
l−1+b2 t log nc
√
b2
√ t log nc
2b2 t log nc−1
√
b2 t log nc
√
≥ 2b2√ t log nc
≥ 22 t√log n−1
= 12 n2 t .
(nach 5.9)
√
(mit (i), da t > 4(log n)2 ), also t > b2 t log nc)
(mit (i), da t ≤ ϕ(r) und
p
√
daher l = b2 ϕ(r) log nc ≥ b2 t log nc)
(mit (ii))
Nach 5.10 ist also n eine Potenz von p. Also dann hätte der Algorithmus in
Zeile 1 n ist zusammengesetzt“ ausgegeben, Widerspruch. ”
5.12 Satz
Der AKS-Algorithmus hat eine Bitkomplexität von
O((log n)10,5 · poly(log log n)),
also auch eine Bitkomplexität von
O((log n)10,5+ε ) für jedes ε > 0
Beweis:
Komplexitätsanalyse für jeden Schritt:
√
(1) Teste für c =√2, 3, . . . , log n, ob b ≤ n existiert mit bc = n. Binäre
Suche: O(log( n)) für jedes c. Jeder Schritt: bc berechnen: O((log n)3 )
Bitoperationen (siehe Kapitel 3). Damit ergibt sich eine Komplexität für
diesen Schritt von O((log n)5 ).
(2) Bis d16(log n)5 e hochzählen: ggT(n, r) hat O(log r log n) Bitoperationen
(siehe Kapitel 3) oder O(log n · poly(log log n)).
Teste alle d ≤ 4(log n)2 , ob nd ≡ 1 (mod r). Für jedes d (für festes r)
kostet dieser Test: O(log d) viele Multiplikationen in Zr , O((log r)2 log d)
viele Bitoperationen.
Folglich O((log n)2 · poly(log log n)) Bitoperationen für festes r. Hochzählen: O((log n)7 · poly(log log n))
47
Kapitel 5: Der Primzahltest von Agrawal, Kayal und Saxena
(4) O(log n)
(5) Für festes a: O(log n) viele Polynommultiplikationen von Polynomen vom
Grad < r, deren Koeffizienten Bitlänge O(log n) haben.
Klassisch: Multiplikation zweier Polynome vom Grad < r benötigt O(r2 )
viele Multiplikationen in Zn .
FFT-Methode: O(r log r) viele Multiplikationen in Zn (siehe hierzu [14]).
Folglich O(r(log n)2 (log n)3 (log r)(log log n)) viele Bitoperationen.
Insgesamt:
p
O(r ϕ(r)(log n)3 (log r)(log log n)) = O(r3/2 (log n)3 (log r)(log log n))
Mit r = O((log n)3 ) ergibt sich: O((log n)10,5 · poly(log log n))
Aufsummieren ergibt die angegebene Gesamtkomplexität.
Bemerkung: Verbesserungen des AKS-Algorithmus
• Bernstein (2003): randomisierter Algorithmus; Erwartungswert der
Laufzeit O((log n)4+ε )
• Lenstra und Pomerance (2003): Deterministischer Algorithmus mit Laufzeit O((log n)6 · poly(log log n))
• Weblinks:
http://www.aimath.org/
http://cr.yp.to/papers.html
http://primes.utm.edu/
(D.J. Bernstein)
48
6 Pollards Rho-Methode zur
Faktorisierung von Zahlen
Vorbemerkung: Nach Kap.5 kann man in polynomialer Zeit entscheiden, ob
eine Zahl zusammengesetzt ist oder nicht. Falls sie zusammengesetzt ist, weiß
man jedoch noch nichts über ihre Faktoren. Alle bekannten Faktorisierungsalgorithmen sind wesentlich zeitaufwändiger als Primzahltests. Man weiß bis
heute nicht, ob es polynomiale Faktorisierungsalgorithmen gibt. Daher wird
man bei einer Zahl n, wenn man nicht schon weiß, dass sie zusammengesetzt
ist, zunächst einen Primzahltest durchführen.
Wir nehmen daher im Folgenden an: n ist zusammengesetzt.
Ziel: Finde nicht-trivialen Faktor von n.
√
n erfordert
Die√ Faktorisierung von n durch bloße Probedivisionen bis
O( n · (log n)2 ) viele Bitoperationen. Der einfachste Faktorisierungsalgorithmus, der wirklich schneller ist, ist Pollards Rho-Methode.
Grundüberlegung: Ist d | n, 1 < d < n, so gibt es mehr Restklassen
als Restklassen mod d.
Abbildung 6.1: Idee der Pollard-Methode
49
mod n
Kapitel 6: Pollards Rho-Methode zur Faktorisierung von Zahlen
Wählt man eine Zufallsfolge xj , so sollte es häufig“ passieren, dass d | xi − xj
”
und n - xi − xj . Dann: 1 < ggT(xi − xj , n) < n ist ein echter Teiler von n.
Idee der Rho-Methode (Pollard, 1975)
Wähle f : Zn → Zn (i.A. f (x) = x2 ± 1),
wähle Startwert x0 (z.B. x0 = 1 oder 2)
Erzeuge Folge x0 , x1 = f (x0 ), x2 = f (x1 ), . . . , xj+1 = f (xj )
Sei d|n. Hoffnung: Finde xi 6= xj mit xi ≡ xj (mod d) (dann
ggT(xi −xj , n) nicht-trivialer Teiler von n, falls xi 6≡ xj (mod n)).
Beispiel: n = 143 = 11·13, d = 11, f (x) = x2 +1, x0 = 2 ergibt
Folge: 2, 5, 26, 105, 15, 83, 26 und periodisch weiter. Weiter ist
2 ≡ 2 (mod 11), 5 ≡ 5 (mod 11), 26 ≡ 4 (mod 11), 105 ≡ 6 (mod 11), 15 ≡ 4
(mod 11), 83 ≡ 5 (mod 11), also ist ggT(x4 − x2 , n) = ggT(15 − 26, 143) = 11.
Nun kennt man aber d nicht, so dass man die Rechnung so nicht durchführen
kann.
Wie geht man (naiv) vor? Für jedes i berechne ggT(xi − xj , n) für alle j < i.
Ist 1 6= ggT(xi − xj , n) 6= n, so hat man einen echten Teiler von n gefunden.
Obiges Beispiel:
ggT(5 − 2, 143) = 1, ggT(26 − 2, 143) = 1, ggT(26 − 5, 143) = 1,
ggT(105 − 2, 143) = 1, ggT(105 − 5, 143) = 1, ggT(105 − 26, 143) = 1,
ggT(15 − 2, 143) = 13.
Wie lange muss man warten, bis ein nicht-trivialer Teiler ggT(xi − xj , n) auftaucht? Wir beantworten diese Frage, indem wir für einen festen Teiler d von
n und eine zufällig“ gewählte Abbildung f : Zn → Zn beantworten, wann im
”
Durchschnitt der erste Index k auftaucht mit xj ≡ xk (mod n) für ein j < k.
6.1 Proposition
Sei d | n.
Sei F = {f : Zn → Zn }.
Für f ∈ √
F, x0 ∈ Zn sei xj+1 = f (xj ) für alle j ∈ N. Sei λ ∈ R, λ > 0 und
l = 1 + b 2λdc. Dann gilt:
|{(x0 , f ) : x0 ∈ Zn , f ∈ F, xi 6≡ xj mod d ∀ 0 ≤ i 6= j ≤ l}|
≤ e−λ
|{(x0 , f ) : x0 ∈ Zn , f ∈ F }|
50
Kapitel 6: Pollards Rho-Methode zur Faktorisierung von Zahlen
Beweis:
Nenner: nn+1 , da n Möglichkeiten für x0 , nn Möglichkeiten für f .
Zähler: x0 : n Möglichkeiten
f (x0 ) = x1 : n − nd Möglichkeiten
f (x1 ) = x2 : n − 2n
d Möglichkeiten . . .
f (xl−1 ) = xl : n − nl
d Möglichkeiten. Die Werte der Abbildung f an den Stellen
6= x0 , x1 , . . . , xl−1 sind beliebig wählbar, es existieren also nn−l Möglichkeiten.
n−l
Ql
Insgesamt: n · n − nd · · · · · n − nl
= nn+1 j=1 1 − dj
d ·n
Ql
Verhältnis: j=1 1 − dj . Logarithmieren und anwenden, dass ln(1 − x) < −x
für 0 < x < 1, ergibt:


X
l
l
l Y
j
j
j  X
l(l + 1)
−l2
− =−
ln 1 −
<
=
ln 
1−
<
< −λ
d
d
d
2d
2d
j=1
j=1
j=1
(wegen Wahl von l) ⇒ Behauptung
−λ
12
6
Beispiel: λ = 1, e ≈ 0, 37. Angenommen, d ≈ 10 , l ≈ 1, 4 ·10 . Bei zufälliger
Wahl von x0 , f : In mindestens 63 % der Fälle wird innerhalb der ersten 1, 4·106
Folgenglieder eine Kollision stattfinden, also xi ≡ xj (mod d).
Wählt man also eine Funktion f , die sich wie eine zufällige“ Funktion f :
”
Zn → Zn verhält, so wird man eine Kollision relativ schnell finden. Man weiß
allerdings nicht theoretisch sicher, dass solche f gefunden werden können. Praktische Erfahrung zeigt, dass Polynome (nicht-linear) wie f (x) = x2 ± 1 sich gut
verhalten.
Problem der obigen Rho-Methode: sehr viele ggT-Berechnungen.
Daher wird folgende Modifikation vorgenommen:
6.2 Algorithmus zur Rho-Methode
Input: n zusammengesetzt und ungerade
(1) Wähle ganzzahliges nichtlineares Polynom f (f 6= X 2 , X 2 ± 2) und x0 ∈
Zn
(2) Wiederhole für k = 1, 2, . . . : xk = f (xk−1 ) mod n. Ist 2h ≤ k ≤ 2h+1 − 1
(also k eine (h+1)-Bit-Zahl), so sei j = 2h −1. Bestimme ggT(xk −xj , n).
Ist 1 ≤ ggT(xk − xj , n) < n, so stoppe mit Ausgabe ggT(xk − xj , n)
Vorteil:
Im Schritt k statt k vielen ggT-Berechnungen nur eine.
51
Kapitel 6: Pollards Rho-Methode zur Faktorisierung von Zahlen
Es gilt: Existiert j0 < k0 mit 1 < ggT(xk0 − xj0 , n) < n, so existiert k ≤ 4k0 ,
so dass (6.2) im Schritt k einen nicht-trivialen Teiler von n findet.
Beweis: Angenommen k0 hat h Bits. Setze j = 2h − 1, k = j + (k0 − j0 ). k
ist (h + 1)-Bit-Zahl. Im k-ten Schritt von (6.2) wird ggT(xk − xj , n) gebildet.
Es ist xk0 ≡ xj0 (mod d) für einen echten Teiler d von n.
f Polynom ⇒ f (xk0 ) ≡ f (xj0 ) mod d.
xk = f k−k0 (xk0 ) ≡ f k−k0 (xj0 ) ≡ xj0 +k−k0 ≡ xj mod d.
k < 2h+1 = 4 · 2h−1 ≤ 4k0 .
(6.2) findet also vielleicht nicht das kleinste k, für das ein j < k existiert mit
1 < ggT(xk − xj , n) < n, aber eines, was höchstens viermal so groß wie das
kleinste ist.
Beispiel:
x1
x2
x3
x4
x5
x6
x7
n = 4087, f (x) = x2 + x + 1, x0 = 2. Wir rechnen in Zn .
= f (2) = 7
= f (7) = 57
= f (57) = 3307
= f (3307) = 2745
= f (2745) = 1343
= f (1343) = 2626
= f (2626) = 3734
ggT(x1 − x0 , n) = ggT(7 − 2, 4087) = 1
ggT(x2 − x1 , n) = ggT(57 − 7, 4087) = 1
ggT(x3 − x1 , n) = ggT(3307 − 7, 4087) = 1
ggT(x4 − x3 , n) = ggT(2745 − 3307, 4087) = 1
ggT(x5 − x3 , n) = ggT(1343 − 3307, 4087) = 1
ggT(x6 − x3 , n) = ggT(2626 − 3307, 4087) = 1
ggT(x7 − x3 , n) = ggT(3734 − 3307, 4087) = 61
4087 = 61 · 67
6.3 Komplexität der Rho-Methode (Heuristik)
Sei d = p kleinster Primteiler der zusammengesetzten Zahl n. Verhält sich
(x0√
, f ) zufällig“, so kann nach (6.1) mit Wahrscheinlichkeit 1 − e−λ nach
”
O( 2λp) vielen Schritten Kollision gefunden werden (xj0 ≡ xk0 mod p). Bei
(6.2) vergrößert sich die Anzahl der Schritte maximal um Faktor 4. Bei fest
√
1
gewähltem λ (z.B. λ = 1000): O( p) = O(n 4 ) viele Schritte. Jeweils eine ggT1
Berechnung: O((log n)2 ) Bitoperationen. Erwartete Laufzeit: O(n 4 (log n)2 ).
52
7 Das quadratische Sieb
Pomerance (1982,1985).
Vielzahl von Varianten und Vorläufern (z.B. Dixon, 1981).
Grundidee: Fermat.
7.1 Bemerkung
n ungerade natürliche Zahl. Dann gibt es eine 1-1-Beziehung zwischen den
Faktorisierungen n = a · b, a ≥ b > 0, von n und den Darstellungen n =
t2 − s2 , s, t ∈ N0 :
n=a·b
n = t2 − s 2
a−b
a+b
,s =
⇒ n = t2 − s 2
2
2
⇒ n = (t + s)(t − s)
⇒ t=
7.2 Fermat-Faktorisierung
(Grundversion)
a+b
Sei n√= a · b, a, b etwa gleich groß, dann ist s = a−b
2 klein, t = 2 in der Nähe
von n (etwas√größer).
√
Teste für t = d n e, d n e + 1, . . . bis t2 − n = s2 ein Quadrat ist.
n = (t + s)(t − s) ist dann eine Faktorisierung.
Beispiel:
n = 200819
√
d n e : 4492 − 200819 = 782 ist keine Quadratzahl
√
d n e + 1 : 4502 − 200819 = 1681 = 412
⇒ n = (450 + 41)(450 − 41) = 491 · 409.
Liegen a und b nicht nahe beieinander, so braucht (7.2) lange. Dann besser
folgendes Vorgehen:
53
Kapitel 7: Das quadratische Sieb
7.3 Fermat-Faktorisierung
(erweiterte Version)
Sei n eine ungerade zusammengesetzte
Zahl.
√
Wähle kleines k ∈ N (k ≤ 2 3 n ). Ist k gerade, so sei 4 | k.
√
√
Setze t = d kne, d kne + 1, . . . bis t2 − kn = s2 ein Quadrat ist.
Dann sind ggT(t + s, n) und ggT(t − s, n) nicht-triviale Teiler von n.
Beweis: Es ist (t + s)(t − s) = kn.
Angenommen, ggT(t + s, n) = 1. Dann t + s | k und n | t − s.
Also: kn = t2 − s2 = (t + s)(t − s) > (t − s)2 ≥ n2 , k > n, Widerspruch.
Derselbe Beweis funktioniert, wenn ggT(t − s, n) = n.
Angenommen, ggT(t + s, n) = n.
n+1
Dann n | t + s. Da
√ t > s,√folgt 2t > t + s ≥ n, d. h. t ≥ 2 .
Sei n = ab, a ≤ n, b ≥ n (möglich, da n zusammengesetzt).
Wir betrachten zunächst den Fall, dass k ungerade ist.
ka−b 2
2
Dann ist kn = ( ka+b
2 ) −√( 2 ) . Beachte ka + b, ka − b sind gerade, da k, a, b
≥ kn.
ungerade. Klar: ka+b
2
√
Da t die erste Zahl ≥ kn ist, für die t2 − kn ein Quadrat ist, ist t ≤ ka+b
2 .
Aus t ≥ n+1
folgt
daher
2
√
ab = n < n + 1 ≤ 2t ≤ ka + b ≤ 2 3 n a + b (nach Wahl von k)
2a
≤ 2ab
3 + b = b( 3 + 1) ≤ ab (da a ≥ 3), Widerspruch.
Sei nun k gerade. Dann nach Voraussetzung k = 4 ·√
k0 .
0
2
0
2
0
Es ist kn = (k a + b) − (k a − b) . Klar: k a + b ≥ kn.
Wie im obigen Fall ist dann t ≤ k 0 a + b.
Aus t ≥ n+1
2 folgt
√
ab = n < n + 1 ≤ 2t ≤ 2k 0 a + 2b = 21 ka + 2b ≤ 31 na + 2b ≤
( 31 a + 2)b ≤ ab (da a ≥ 3), Widerspruch.
1
3 ab
+ 2b =
Da aus ggT(t − s, n) = 1 folgt, dass ggT(t + s, n) = n, ist auch ggT(t − s, n) = 1
nicht möglich.
Bemerkung
In (7.3) wurde vorausgesetzt, dass für gerades k schon 4 ein Teiler von k
sein muss, da ansonsten keine s und t mit kn = t2 − s2 existieren. Denn
t2 − s2 = (t − s)(t + s) ist stets ungerade oder durch 4 teilbar.
54
Kapitel 7: Das quadratische Sieb
Beispiel: n = 141467
Mit (7.2): 38 Versuche.
√
Wähle in (7.3) k = 3, t = d 3ne = 652, 653, . . .
Bei 655: 6552 − 3 · 141467 = 682
ggT(655 + 68, 141467) = 241
n = 241 · 587
Verallgemeinerung: Gesucht sind s, t mit t2 ≡ s2 (mod n) und t 6≡ ±s
(mod n). Dann ist ggT(t + s, n) oder ggT(t − s, n) nichttrivialer Teiler
von n.
Hat man eine Chance, solche s, t zu finden?
7.4 Satz
Sei n ungerade Zahl, p1 , . . . , pr die verschiedenen Primteiler von n. Ist a ein
Quadrat mod n, a 6≡ 0 (mod n), so gibt es genau 2r viele bi mit bi 6≡ bj
(mod n) für i 6= j und b2i ≡ a (mod n) (a + nZ hat 2r viele Quadratwurzeln in
Z/nZ).
Beweisskizze: Sei a + nZ = b2 + nZ. Sei p | n, pα |n (pα | n, pα+1 - n).
In Zp hat a + pZ genau 2 Wurzeln: b + pZ, −b + pZ(p 6= 2) (Zp ist Körper,
ā = a + pZ, X 2 − ā ∈ Zp [X] hat höchstens zwei Nullstellen). Dann kann man
zeigen: In Zpα sind b + pα Z, −b + pα Z die einzigen Wurzeln von a + pα Z.
Der Chinesische Restesatz liefert 2r viele Wurzeln (mod n).
Beispiel:
mod n)
n = 15 – Wurzeln aus 4 (mod 15)? 2, −2 ≡ 13; 8, −8 ≡ 7 (alles
Im Folgenden: a (mod n) (entgegen der üblichen Bezeichnungsweise) sei der
betragsmäßig kleinste Rest (mod n), das heißt die ganze Zahl im der Menge
n−1
{− n−1
2 , . . . , 0, . . . , 2 }, die kongruent a (mod n) ist.
7.5 Definition
Sei n ungerade zusammengesetzte Zahl.
55
Kapitel 7: Das quadratische Sieb
a) Eine Faktorbasis ist eine Menge B = {p1 , p2 , . . . , ph } von Primzahlen (mit
evtl. p1 = −1)
b) b ∈ Z heißt B-Zahl (auch B-glatt, B-smooth), falls b2 (mod n) als Produkt von Zahlen aus B geschrieben werden kann.
Beispiel:
n = 4633, B = {−1, 2, 3}, dann sind 67, 68, 69 B-Zahlen:
672
682
692
≡ −144
≡
−9
≡
128
(mod 4633)
(mod 4633)
(mod 4633)
Grundidee des quadratischen Siebs
Q
α
1) Ist b B-Zahl, b2 (mod n) = hj=1 pJ j , αj ≥ 0.
Ordne b den Vektor e = (ε1 , . . . , ε2 ) ∈ Zh2 zu mit εi = αi mod 2.
2) Angenommen wir haben B-Zahlen b1 , . . . , br mit zugeordneten Vektoren
P
ei = (εi1 , . . . , εih ) und hi=1 ei = 0 in Zh2 .
Qh
a
Sei ai ≡ b2i (mod n), ai = j=1 pj ij . Dann:
r
Y
ai
h
Y
=
Pr
pj
αij
(der Exponent jedes pj ist gerade)
j=1
i=1

=

h
Y
j=1
wobei γj =
i=1
Pr
i=1
2
αij
2
γ
pj j 
. Sei b =
b2 ≡
r
Y
i=1
Qr
i=1 bi
b2i ≡
r
Y
i=1
mod n und c =
a i ≡ c2
Qh
j=1
γ
pj j . Dann ist
(mod n)
Hoffnung: b 6≡ ±cq(mod n).
Q
n−1
Sind alle |bi | ≤
bi = ±c; dieser Fall
2 , so ist bi = ±ai und b =
hilft also nichts.
Wählt man unter den B-Zahlen auch größere, so besteht die Chance nach
(7.4), dass b 6≡ ±c (mod n).
3) Fragen: Wie wählt man B und wie erhält man genügend viele B-Zahlen,
deren zugeordnete e-Vektoren sich zu 0 addieren (in Zh2 )?
56
Kapitel 7: Das quadratische Sieb
1. Möglichkeit: Wähle B = {−1, 2, 3, . . . , ph } die ersten h − 1 Primzahlen und -1 (h nicht zu groß), beispielsweise n = 1050 ; ph ≤ 106 .
Wähle zufällig b ∈ N und überprüfe, ob b2 mod n nur Primteiler in
B hat (Prinzip des Dixon-Algorithmus).
2
2. Möglichkeit: Wähle Zahlen
√ b so, dass b (mod n) betragsmäßig klein,
z.B. b in der Nähe von kn für kleine k. Wähle B so, dass es die
Primteiler der kleinen Absolutbeträge der b2 (mod n) enthält. (Dies
ist die Idee des Pomerance-Algorithmus.)
In jedem Fall: Wann kann man sicher sein, dass man genug B-Zahlen
hat, so dass die Summe einiger ihrer e-Vektoren Null wird? Falls |B| = h,
so h + 1 viele, da dim Zh2 = h (nichttriviale Linearkombinationen finden:
Gauß-Algorithmus aus der linearen Algebra).
Beispiel: n = √
1829, B = {−1, 2, 3, 5, 7, 11, 13}. Wir suchen all die Zahlen bi in
der NäheQ
von d 1829ke, für die b2i (mod n) Produkt von Primzahlen < 15 ist.
α
Sei b2i = j pj ij . Die Tabelle enthält die αij .
bi −1 2 3
42 1 − −
43 − 2 −
61 − − 2
74 1 − −
85 1 − −
86 − 4 −
5
1
1
−
−
−
1
7 11 13
− − 1
− − −
1 − −
− 1 −
1 − 1
− − −
⇒
1001001
0001000
0000100
1000010
1000101
0001000
2. + 6. Zeile: b2 = (b2 · b6 )2 ≡ (23 · 51 )2 = c2 (mod n)
43 · 86 ≡ 40 (mod n)
b ≡ c (mod n) Pech!
23 · 51 ≡ 40 (mod n)
1. + 2. + 3. + 5. Zeile: b2 = (b1 ·b2 ·b3 ·b5 )2 ≡ ((−1)·21 ·31 ·71 ·131 )2 = c2 (mod n)
b ≡ −370 (mod n)
b 6≡ c (mod n)
c ≡ 901 (mod n)
ggT(b + c, n) = ggT(531, 1829) = 59
⇒ n = 59 · 31
Algorithmus (Quadratisches Sieb)
keine Primzahlpotenz.
Input: n zusammengesetzt (ungerade), n
57
Kapitel 7: Das quadratische Sieb
Wähle B = {−1,
2 , . . . , pk } (erste k Primzahlen) bis zur Schranke y (übliq p1 , p√
cherweise y ≈ exp( ln n ln ln n); n ≈ 1050 , y ≈ 105 − 106 ).
√
Teste Zahlen b in der Nähe von n, ob sie B-Zahlen sind. Hat man k + 1
B-Zahlen gefunden, so bestimme lineare Abhängigkeit der ε-Vektoren (siehe
(7.5)).
Q
Q γ
Bilde dann b = bi mod n und c = pj j mod n. Ist b 6≡ ±c (mod n), so
ggT(b + c, n) nicht-trivialer Teiler von von n. Ist b ≡ ±c (mod n), so versuche neue lineare Abhängigkeit zu ermitteln oder erweitere B und erzeuge neue
B-Zahlen.
7.6 Bemerkung
Das Quadratische Sieb hat Komplexität von
√
O exp((1 + ε) ln n ln ln n)
Dabei ist
Da
√
(1+ε) ln n ln ln n
ln n
√
√
(1+ε) ln n ln ln n
ln n
exp((1 + ε) ln n ln ln n) = n
→ 0 ist der Algorithmus subexponentiell.
Entscheidend für die Abschätzung ist, wie schnell man B-Zahlen findet.
ψ(x, y) = |{m ∈ N : m ≤ x, alle Primteiler von m sind ≤ y}|
ψ(x, y)
ln x
≈ u−u , wobei u =
x
ln y
Zum Beispiel: n = 1048 , y = 106 , u−u ≈ 6 · 10−8
Siehe hierzu: [6]. Mit dem Quadratischen Sieb wurden über 100-stellige Zahlen
faktorisiert.
7.7 Bemerkung
Das Quadratische Sieb lässt sich verallgemeinern zum Zahlkörpersieb (Grundidee: Pollard, 1987). Statt in Z wird in Ringen Z[X]/f Z[X] (f irreduzibles
Polynom) gearbeitet: Untersuchung von bestimmten quadratischen Kongruenzen.
58
Kapitel 7: Das quadratische Sieb
Unter gewissen unbewiesenen heuristischen Annahmen gilt für dessen Komplexität:
p
√
3
O exp(c ln n 3 (ln ln n)2 )
Einzelheiten: [3, 6.2]
7.8 Bemerkung
√
Eine Methode, um Zahlen b zu bestimmen, so dass |b2 mod n| < 2 n (also
klein, n kein Quadrat) ist, ist die Kettenbruchmethode.
√
n = a0 +
1
1
a1 +
a2 +
1
a3 + . . .
√
ist die Kettenbruchentwicklung von n. Nach dem iten Schritt erhält man
√
Es ist |b2i mod n| < 2 n und Kandidat für B-Zahl.
(Morrison - Brillhart, 1975)
Einzelheiten: [6, Chapter V, § 4]
59
ai
bi .
8 Faktorisierung mit elliptischen
Kurven
Sei K ein Körper. Allgemein ist eine elliptische Kurve über K gegeben durch
eine Gleichung
y 2 + a1 xy + a3 y = x3 + a2 x2 + a4 x + a6 , ai ∈ K
wobei die Kurve glatt sein soll. (Dies bedeutet, dass an keinem Punkt (x, y) über
dem algebraischen Abschluss von K beide partiellen Ableitungen der Kurve
verschwinden.) Die Bezeichnung der Koeffizienten, insbesondere das fehlende
a5 , hat historische Gründe und hat sich eingebürgert.
Elliptische Kurven sind ein wichtiges Thema der Analysis und algebraischen
Geometrie. Ihren Namen haben sie erhalten, weil sie in Verbindung stehen mit
sog. elliptischen Integralen, die z. B. bei der Umfangsbestimmung von Ellipsen
auftreten. Seit ca. 1985 haben elliptische Kurven aber auch eine wichtige Bedeutung im Zusammenhang mit kryptografischen Systemen, Primzahltests und
Faktorisierungsalgorithmen gewonnen. Auf Letzteres wollen wir hier eingehen.
Wir werden im Folgenden nur elliptische Kurven über Körpern der Charakteristik 6= 2 und 3 (d. h. 1 + 1 6= 0, 1 + 1 + 1 6= 0) betrachten. In diesen Fällen
lässt sich jede elliptische Kurve nach geeigneten Koordinatentransformationen
auf eine einfache Form bringen, die wir für uns zur Definition von elliptischen
Kurven verwenden.
8.1 Definition
Sei K ein Körper, Char K 6= 2, 3.
Eine elliptische Kurve über K ist gegeben durch eine Gleichung
y 2 = x3 + ax + b, a, b ∈ K
wobei 4a3 + 27b2 6= 0.
(4 und 27 stehen für 4 · 1 und 27 · 1 in K).
60
Kapitel 8: Faktorisierung mit elliptischen Kurven
Die Bedingung 4a3 + 27b2 6= 0 entspricht der Glattheitsbedingung; sie ist äquivalent damit, dass die kubische Gleichung auf der rechten Seite keine Mehrfachnullstellen besitzt.
Zur Veranschaulichung geben wir eine elliptische Kurve über R an:
Abbildung 8.1: Addition auf elliptischen Kurven
61
Kapitel 8: Faktorisierung mit elliptischen Kurven
Für unsere Zwecke ist die wichtigste Eigenschaft elliptischer Kurven, dass man
auf ihnen (d. h. auf der Menge der Punkte (x, y), die die Gleichung aus 8.1
erfüllen) eine Addition definieren kann, so dass daraus eine abelsche Gruppe
entsteht. Dabei muss dieser Menge noch ein weiterer ( unendlich ferner “)
”
Punkt O hinzugefügt werden. Wir bezeichnen die Menge dieser Punkte, die zu
einer elliptischen Kurve über K gehören, mit E(K).
Für elliptische Kurven über R lässt sich die Addition auf E(R) geometrisch einfach veranschaulichen (und ebenso die Inversen). Das beruht im Wesentlichen
darauf, dass die Gerade durch zwei Punkte P, Q(6= O) auf E(R) mit verschiedenen x-Koordinaten die Kurve in genau einem weiteren Punkt trifft; dessen
Spiegelbild an der x-Achse liegt auch auf E(R) und ist P + Q.
Das neutrale Element ist der unendlich ferne Punkt O, das Inverse −P eines
Punktes P 6= O ist das Spiegelbild von P an der x-Achse. Für den Fall P = Q
lässt sich die Addition P + P auch geometrisch beschreiben: an die Stelle der
Gerade durch P und Q tritt die Tangente an P . Wichtig ist, dass man diese
geometrische Definition der Addition auf elliptischen Kurven ßüber R auch
algebraisch beschreiben kann, d. h. die Koordinaten der Punkte P + Q bzw.
−P lassen sich durch die Koordinaten von P und Q beschreiben.
Diese Beschreibung der Addition lässt sich nun auf elliptische Kurven über beliebigen Körpern (der Charakteristik 6= 2, 3) übertragen, und man kann zeigen,
dass dadurch immer eine abelsche Gruppe definiert wird. Dies ist der Inhalt
des folgenden Satzes.
8.2 Satz
Sei K ein Körper, Char K 6= 2, 3, y 2 = x3 + ax + b eine elliptische Kurve über
K.
Dann wird E(K) = {(x, y) ∈ K 2 : y 2 = x3 + ax + b} ∪ {O} eine abelsche
Gruppe durch folgende Definition:
(1) P + O = O + P = P
für alle P ∈ E(K)
(2) −O = O; ist P = (x, y), so ist −P = (x, −y).
(3) Sind P = (x1 , y1 ), Q = (x2 , y2 ), x1 6= x2 , so hat P + Q die Koordinaten
−y1 2
) − x1 − x2
x3 = ( xy22 −x
1
y2 −y1
y3 = ( x2 −x1 )(x1 − x3 ) − y1
(4) Ist P = (x1 , y1 ), Q = (x1 , y2 ), so ist y2 = ±y1 .
Ist y2 = −y1 (d. h. Q = −P ), so ist P + Q = O.
Ist y2 = y1 6= 0 (d. h. Q = P ), so hat P + P die Koordinaten
62
Kapitel 8: Faktorisierung mit elliptischen Kurven
3x21 +a
2y1 ) − 2x1
3x21 +a
( 2y1 )(x1 − x3 )
x3 = (
y3 =
− y1
Der Beweis dieses Satzes kann elementar durchgeführt werden, ist aber ziemlich
mühsam. Insbesondere der Nachweis des Assoziativgesetzes ist aufwändig und
erfordert mehrere Fallunterscheidungen.
(Beweis siehe z. B.: Annette Werner, Elliptische Kurven in der Kryptographie, Springer, 2002)
Für endliche Körper K, | K |= q (q ist also eine Primzahlpotenz nach 2.30 a)
kann man eine gute Abschätzung der Größe | E(K) | für eine elliptische Kurve
geben. Dies ist ein tiefliegender Satz von Hasse (zum Beweis siehe z. B. J.
Silverman, The Arithmetic of Elliptic Curves, Springer, 1986):
8.3 Satz (Hasse)
Sei K ein endlicher Körper, | K |= q, N =| E(K) | für eine elliptische Kurve
über K. Dann ist
√
√
(q + 1) − 2 q ≤ N ≤ (q + 1) + 2 q.
Zur Beschreibung der Faktorisierungsmethode mit elliptischen Kurven benötigen wir noch folgende Definition:
8.4 Definition
Sei n ∈ N, ab11 , ab22 ∈ Q, ggT(b1 , n) = ggT(b2 , n) = 1.
a2
a1
a2
a1
b1 ≡ b2 mod n, falls b1 − b2 in gekürzter Form einen durch n teilbaren Zähler
besitzt.
Beachte: Ist ggT(n, b) = 1, so ist b + nZ in Z/nZ invertierbar. Daher ist für
jedes a ∈ Z dann ab ≡ c mod n, wobei c eine durch ab eindeutig bestimmte
ganze Zahl ist mit 0 ≤ c ≤ n. Wir bezeichnen diese Zahl auch mit ab mod n.
Die Grundidee der Faktorisierungsmethode mit elliptischen Kurven, die von H.
W. Lenstra jr. 1986 entwickelt wurde, ist folgende:
Angenommen wir haben eine Gleichung y 2 = x3 + ax + b, a, b ∈ Z, und einen
Punkt P = (x, y), der diese Gleichung erfüllt.
Wir nehmen an, dass 4a3 + 27b2 6= 0.
63
Kapitel 8: Faktorisierung mit elliptischen Kurven
Sei n eine zusammengesetzte Zahl, ggT(6, n) = 1. Wir setzen voraus, dass
ggT(4a3 + 27b2 , n) = 1 ist.
Reduziert man die Koeffizienten a und b modulo p für einen Primteiler p von
n, so erhält man also eine elliptische Kurve über Z/pZ.
Nun betrachten wir die obige Gleichung und reduzieren die Koeffizienten modulo n. Über Z/nZ lässt sich mit den Gleichungen aus 8.2 keine Gruppenstruktur
definieren, und zwar deshalb, weil die Divisionen in 8.2. (3) bzw. (4) nur möglich
sind, falls die Nenner teilerfremd zu n sind. (Beachte: (Z/nZ)∗ = {a + nZ |
ggT(a, n) = 1} nach 2.22.b.)
Dies ist aber gerade der entscheidende Punkt an Lenstras Methode. Man versucht Vielfache kP des Punktes P zu bilden, und zwar über Z/nZ entsprechend
den Additionsregeln aus 8.2. Dabei muss man ein Verfahren zur Berechnung von
kP wählen (z. B. iterierte Verdopplung entsprechend der iterierten Quadrierung bei Potenzbildung, vgl. 3.4). Das geht so lange gut (vgl. Bemerkung nach
8.4), solange nicht irgendwann ein Nenner r auftaucht, der nicht teilerfremd zu
n ist. Dann ist ggT(r, n) 6= 1 ein Teiler von n, und falls ggT(r, n) 6= n, hat man
einen nicht-trivialen Faktor von n gefunden (mit Euklidischem Algorithmus).
Wann tritt ein solcher Fall ein?
8.5 Satz
Sei n eine zusammengesetzte Zahl, ggT(6, n) = 1.
Sei E eine elliptische Kurve, gegeben durch y 2 = x3 + ax + b mit a, b ∈ Z,
ggT(4a3 + 27b2 , n) = 1.
Seien P1 , P2 Punkte auf E(Q) \ {O}, wobei die Nenner der Koordinaten teilerfremd zu n seien; es sei P1 6= −P2 .
Dann gilt:
Die Koordinaten von P1 + P2 haben (in gekürztem Zustand) Nenner, die teilerfremd zu n sind, genau dann, wenn es keine Primzahl p | n gibt mit P1
mod p = −(P2 mod P ). Dabei bezeichnen wir mit P mod p die Punkte auf
der elliptischen Kurve über Z/pZ, die aus y 2 = x3 + ax + b durch Reduktion
der Koeffizienten a, b modulo p entsteht.
Der Beweis dieses Satzes ist nicht schwierig, aber etwas langwierig, da man die
möglichen Fälle der Addition in 8.2 betrachten muss. Einen Beweis findet man
z. B. in N. Koblitz, A Course in Number Theory and Cryptography, Springer
(Prop. VI.3.1.).
64
Kapitel 8: Faktorisierung mit elliptischen Kurven
8.6 Lenstras Algorithmus
Input: n zusammengesetzte Zahl, ggT(n, 6) = 1, n keine echte Potenz.
(1) Wähle Schranken B und C
(z. B. B = 20, C = 100.000)
(2) Wähle a, x, y ∈ Z, berechne b = y 2 − x3 − ax mod n.
Ist ggT(4a3 + 27b2, n) = g 6= 1, n, so gebe g als nicht-trivialen Faktor von
n aus.
Ist g = n, so wähle neue a, x, y.
Ist g = 1, so ist P = (x, y) Punkt auf der elliptischen Kurve mit Koeffizienten a, b.
(3) Sei k = Π(p≤B) pαp mit αp maximal, so dass pαp ≤ C. Berechne mit den
Gleichungen aus 8.2 kP mod n, falls möglich.
Tritt in einem Zwischenschritt bei der Berechnung von k1 P = k2 P + k3 P
(mod n) (k1 ≤ k) ein Nenner r auf mit ggT(n, r) 6= 1, so beende die
Berechnung von kP .
Ist d =ggT(n, r) 6= n, so gebe d als nicht-trivialen Faktor von n aus.
Ist d = n, so wähle neue elliptische Kurve und neuen Punkt in (2) und
wiederhole das Verfahren.
8.7 Bemerkung
a) Tritt in (3) der Fall auf, dass k1 P = k2 P + k3 P modulo n nicht berechenbar ist, so folgt aus 8.5, dass k1 P mod p = O für einen Primteiler p | n.
Dies tritt z. B. dann auf, wenn k1 ein Vielfaches der Ordnung N von
E(Z/pZ) ist (zu der elliptischen Kurve y 2 = x3 + ax + b, Koeffizienten
reduziert modulo p). Nach dem Satz von Hasse, 8.3, ist N ∈ [(p + 1) −
√
√
√
2 p, (p + 1) + 2 p]. Ist also C > (p + 1) + 2 p für einen Primteiler p von
n und ist N nur durch kleine Primzahlen teilbar (alle kleiner als B), so ist
k ein Vielfaches von N und wir werden in Schritt (3) bei dem Versuch,
k1 P mod n zu berechnen, einen Nenner r finden mit ggT(n, r) 6= 1.
ggT(n, r) = n wird nur auftreten, wenn für k1 P mod O für alle p | n
(dies folgt aus den Rechnungen, die man zum Beweis von 8.5 durchführen
muss). Das ist sehr unwahrscheinlich, vor allem, wenn n mehrere große
Primfaktoren besitzt.
b) Der Vorteil des Lenstra-Algorithmus besteht vor allem darin, dass man
eine große Anzahl von Wahlmöglichkeiten der elliptischen Kurve hat. Insbesondere wenn n relativ kleine Primteiler besitzt, werden diese schnell
gefunden (vgl. a)).
65
Kapitel 8: Faktorisierung mit elliptischen Kurven
Beispiel: n = 5429, B = 3, C = 92
√
√
(C wurde so gewählt, da für einen Primteiler p < n = 73 dann (p+1)+2 p <
√
74 + 2 73 < 92 gilt; vgl. Bemerkung 8.7)
Wähle y 2 = x3 + 2x − 2, P = (1, 1). Es ist k = 34 · 26 .
Wir versuchen 2P, 22 P, 23 P, 26 P, 3P, 32 P, 34 P, 3 · 26 P, 32 · 26 P, 34 · 26 P zu berechnen.
Beim Versuch der Berechnung von 32 · 26 P erhält man einen Nenner, der nicht
teilerfremd zu n ist und als größter gemeinsamer Teiler des Nenners und n
ergibt sich 61. Es folgt n = 61 · 89.
8.8 Komplexität des Lenstra-Algorithmus
Abschätzungen der Komplexität des Lenstra-Algorithmus beruhen vor allem
darauf, Aussagen über die Verteilung der Ordnungen N elliptischer Kurven
√
√
modulo p im Hasse-Intervall“ p + 1 − 2 p < N < p + 1 + 2 p zu gewinnen
”
und zu ermitteln, wie viele von diesen Ordnungen nur durch kleine Primzahlen
teilbar sind.
Mit einer plausiblen, aber bisher noch nicht bewiesenen Vermutung hinsichtlich
des letzten Punktes erhält man eine Komplexität von
p
O exp
(2 + ε) · ln(p) · ln(ln(p))
wobei p der kleinste Primteiler von n ist. Im schlimmsten Fall (n ist Produkt
zweier etwa gleich großer Primzahlen) erhält man eine Komplexität von
p
(1 + ε) · ln(n) · ln(ln(n))
O exp
Dies entspricht der Komplexität des quadratischen Siebs.
66
Erweitertes Inhaltsverzeichnis
Einführung
3
1 Faktorisierung und Primzahlerzeugung in der Kryptologie
1.1 Idee der Public-Key-Kryptographie . . . . . . . . . . . . . . . .
1.2 Das RSA-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Weitere Anwendungen . . . . . . . . . . . . . . . . . . . . . . .
5
5
6
7
2 Elementare Hilfsmittel aus der Algebra und Zahlentheorie
2.1 Definition: Gruppe . . . . . . . . . . . . . . . . . . . .
2.2 Bemerkung: Eigenschaften von Gruppenelementen . .
2.3 Beispiele: Gruppen . . . . . . . . . . . . . . . . . . . .
2.4 Definition: Nebenklassen . . . . . . . . . . . . . . . . .
2.5 Satz: Nebenklassen . . . . . . . . . . . . . . . . . . . .
2.6 Bemerkung: Abelsche Gruppen . . . . . . . . . . . . .
2.7 Satz: Faktorgruppe . . . . . . . . . . . . . . . . . . . .
2.8 Beispiel: Faktorgruppen in den ganzen Zahlen . . . . .
2.9 Satz: Zyklische Gruppen . . . . . . . . . . . . . . . . .
2.10 Beispiel: Zyklische Gruppen . . . . . . . . . . . . . . .
2.11 Definition: Ringe . . . . . . . . . . . . . . . . . . . . .
2.12 Beispiele: Ringe . . . . . . . . . . . . . . . . . . . . . .
2.13 Bemerkung: Eigenschaften der Ringmultiplikation . . .
2.14 Definition: Ideal . . . . . . . . . . . . . . . . . . . . . .
2.15 Satz: Faktorringe . . . . . . . . . . . . . . . . . . . . .
2.16 Beispiel: Ideale und Faktorringe in den ganzen Zahlen
2.17 Satz: Ideale in den ganzen Zahlen . . . . . . . . . . . .
2.18 Satz: Euklidischer Algorithmus . . . . . . . . . . . . .
2.19 Satz: Chinesischer Restsatz . . . . . . . . . . . . . . .
2.20 Definition: Einheiten . . . . . . . . . . . . . . . . . . .
2.21 Bemerkung: Einheitengruppe . . . . . . . . . . . . . .
2.22 Satz: Eigenschaften von Einheitengruppen . . . . . . .
2.23 Bemerkung: Bestimmung des Inversen . . . . . . . . .
67
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
8
8
8
9
9
9
10
10
11
11
12
12
12
13
13
13
13
14
14
15
16
16
16
17
Erweitertes Inhaltsverzeichnis
2.24
2.25
2.26
2.27
2.28
2.29
2.30
Korollar zum kleinen Satz von Fermat
Definition: Polynomring . . . . . . . .
Satz: Eigenschaften des Polynomrings
Satz: Eigenschaften des Polynomringes
Korollar: Ideale im Polynomring . . .
Bemerkung: ggT in Polynomringen . .
Satz: Endliche Körper . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
17
18
18
18
19
19
20
3 Komplexität grundlegender Algorithmen
3.1 Satz: Komplexität von arithmetischen Operationen
3.2 Satz: Komplexität des euklidischen Algorithmus . .
3.3 Bemerkung: Komplexität in Z/nZ . . . . . . . . .
3.4 Proposition: Komplexität der Exponentiation . . .
3.5 Satz: Erw. Eukl. Algorithmus in Polynomringen . .
3.6 Bemerkung: Zusammengesetzte Zahlen ∈ NP . . .
3.7 Satz: PRIMES ∈ NP . . . . . . . . . . . . . . . . .
3.8 Satz: Primzahlkriterium . . . . . . . . . . . . . . .
3.9 Korollar: Weiteres Primzahlkriterium . . . . . . . .
3.10 Bemerkung: Bessere Abschätzungen . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
22
22
23
23
23
24
24
24
25
25
26
4 Klassische Methoden
4.1 Testen auf Divisoren . . . . . . . . . . . . . . . . . . . . . .
4.2 Sieb des Eratosthenes . . . . . . . . . . . . . . . . . . . . .
4.3 Der Fermat-Test und Pseudoprimzahlen . . . . . . . . . . .
4.3.1 Definition: Pseudoprimzahl . . . . . . . . . . . . . .
4.3.2 Definition: Carmichael-Zahl . . . . . . . . . . . . . .
4.3.3 Satz: Fermat-Test . . . . . . . . . . . . . . . . . . .
4.3.4 Satz . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.5 Satz: Carmichael-Zahlen . . . . . . . . . . . . . . . .
4.3.6 Primzahlsatz . . . . . . . . . . . . . . . . . . . . . .
4.4 Der Miller-Rabin-Test und starke Pseudoprimzahlen . . . .
4.4.1 Lemma: Primzahleigenschaft . . . . . . . . . . . . .
4.4.2 Definition: Starke Pseudoprimzahlen . . . . . . . . .
4.4.3 Satz: Anzahl von Zeugen gegen Primzahleigenschaft
4.4.4 Miller-Rabin-Test . . . . . . . . . . . . . . . . . . . .
4.4.5 Bemerkung: Verbesserung des Miller-Rabin-Tests . .
4.4.6 Satz: Wahrscheinlichkeit nach k Durchläufen . . . .
4.4.7 Bemerkung: Komplexitäten . . . . . . . . . . . . . .
4.4.8 Bemerkung: Erzeugung von Primzahlen . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
28
28
28
29
30
30
31
31
32
32
32
33
33
34
35
36
37
37
38
5 Der Primzahltest von Agrawal, Kayal und Saxena
68
39
Erweitertes Inhaltsverzeichnis
5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
5.10
5.11
5.12
Satz: Charakterisierung von Primzahlen . .
AKS-Algorithmus . . . . . . . . . . . . . . .
Satz: Korrektheit des AKS-Algorithmus . .
Lemma: Ausgabe des AKS-Algorithmus . .
Lemma: Existenz von r . . . . . . . . . . .
Definition: p-Artigkeit . . . . . . . . . . . .
Lemma: Multiplikativität der p-Artigkeit . .
Lemma: Multiplikativität der p-Artigkeit . .
Lemma: Ordnung von H . . . . . . . . . . .
Lemma: Ordnung von H . . . . . . . . . . .
Lemma: Korrektheit des AKS-Algorithmus
Satz: Komplexität des AKS-Algorithmus . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
39
40
41
41
42
43
43
43
45
46
46
47
6 Pollards Rho-Methode zur Faktorisierung von Zahlen
Idee der Rho-Methode (Pollard, 1975) . . . . . . . . . .
6.1 Proposition: Erwartete Lauflänge der Rho-Methode .
6.2 Algorithmus zur Rho-Methode . . . . . . . . . . . .
6.3 Komplexität der Rho-Methode (Heuristik) . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
49
50
50
51
52
7 Das
7.1
7.2
7.3
7.4
7.5
7.6
7.7
7.8
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
53
53
53
54
55
55
58
58
59
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
60
60
62
63
63
64
65
65
66
quadratische Sieb
Bemerkung: Darstellung von Zahlen . . . . . . . .
Fermat-Faktorisierung (Grundversion) . . . . . . .
Fermat-Faktorisierung (erweiterte Version) . . . . .
Satz: Quadratwurzeln in Zn . . . . . . . . . . . . .
Definition: B-Zahlen . . . . . . . . . . . . . . . . .
Bemerkung: Komplexität des quadratischen Siebes
Bemerkung: verallgemeinertes Quadratisches Sieb .
Bemerkung: Kettenbruchmethode . . . . . . . . . .
8 Faktorisierung mit elliptischen Kurven
8.1 Definition: Elliptische Kurve . . . . . . . . .
8.2 Satz: Kurvengruppe . . . . . . . . . . . . .
8.3 Satz (Hasse) . . . . . . . . . . . . . . . . . .
8.4 Definition: Äquivalenz von Brüchen . . . . .
8.5 Satz: Koordinaten von Punkten . . . . . . .
8.6 Lenstras Algorithmus . . . . . . . . . . . .
8.7 Bemerkung: Eigenschaften der Koeffizienten
8.8 Komplexität des Lenstra-Algorithmus . . .
69
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Index
AKS-Algorithmus, 40
Komplexität, 47
Miller-Rabin-Test, 35
Komplexität, 37
Monte-Carlo-Test, 35
Carmichael-Zahl, 30
Primzahlen erzeugen, 38
Pseudoprimzahl, 30
starke, 33
Zeuge, 33
Public-Key-Kryptographie, 5
elliptische Kurve, 60
Euklidischer Algorithmus, 14
Faktorbasis, 55
Faktorisierung mit elliptischen Kurven, 63
Komplexität, 66
Faktorring, 13
Fermat-Faktorisierung, 54
Fermat-Test, 29
Quadratisches Sieb, 57
Komplexität, 58
Rho-Methode, 51
Komplexität, 52
Ring, 12
Polynomring, 18
RSA-Verfahren, 6
Gruppe, 8
Ideal, 13
Index (einer Untergruppe), 9
Satz
Chinesischer Restsatz, 15
Primzahlsatz, 32
von Euler, 17
von Fermat (kleiner), 17
Sieb des Erathostenes, 28
Komplexität, 22
AKS-Algorithmus, 47
arithmetische Operationen, 22
elliptische Kurve, 66
erw. euklidischer Algorithmus
in Polynomringen, 24
Euklidischer Algorithmus, 23
Exponentiation, 23
in Restklassenringen, 23
Miller-Rabin-Test, 37
quadratisches Sieb, 58
Rho-Methode, 52
Testen auf Divisoren, 28
Zahlkörpersieb, 58
Zeuge gegen die Primzahleigenschaft,
33
70
Namensverzeichnis
Adleman, Leonard, 6
Agrawal, Manindra, 39
Alford, W.R., 32
Bach, 37
Bernstein, D.J., 48
Brillhart, J., 25
Carmichael, R.D., 30
Damgård, 37
Davis, Martin, 26
Diffie, Whitfield, 5
Dixon, 53
Erathostenes, 28
Erdös, Paul, 30
Fermat, Pierre de, 29, 53
Granville, C., 32
Hadamard, 32
Hasse, Helmut, 63
Hellman, Martin, 5
Jones, James P., 27
Karatsuba, A., 23
Kayal, Neeraj, 39
Landrock, 37
Lenstra, H. W. jr., 63
Li, Shuguang, 30
Lucas, Édouard, 25
Mairson, Harry G., 29
Matijasevič, Yuri, 26
Miller, Gary L., 32, 35
Pollard, J.M., 49, 58
Pomerance, C., 32, 37, 53
Pratt, Stephen, 24
Pritchard, Paul, 29
Putnam, Hilary, 26
Rabin, Michael O., 32, 35
Rivest, Ronald L., 6
Robinson, Julia, 26
Sato, Daihachiro, 27
Saxena, Nitin, 39
Schönhage, Arnold, 22
Selfridge, J.L., 25
Shamir, Adi, 6
Strassen, Volker, 22
Wada, Hideo, 27
Wiens, Douglas, 27
de la Vallée Poussin, 32
71
Herunterladen