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