Primzahltests Gregor Kemper Iffeldorf, 8. Januar 2005 Das RSA-Kryptosystem A Botschaft −−−−−−−−−−−−−−→ (verschlüsselt) B (1) B wählt Primzahlen p, q (> 100-stellig) and e, f ∈ N (groß) mit e·f ≡1 mod (p − 1)(q − 1). (2) B veröffentlicht n := p · q und e. Geheimer Schlüssel: f . (3) Botschaft von A an B: x ∈ {2, . . . , n − 2}. (4) A berechnet y ∈ {2, . . . , n − 2} mit y ≡ xe mod n und sendet y. (5) B berechnet z ∈ {2, . . . , n − 2} mit z ≡ y f mod n ⇒ z = x. Das RSA-Kryptosystem Funktion des RSA-Systems beruht auf: Kleiner Satz von Fermat: Seien p ∈ P (d.h. p Primzahl), a ∈ Z mit p a ⇒ ap−1 ≡ 1 mod p. Sicherheit des RSA-Systems beruht auf: Annahme: Faktorisierung ganzer Zahlen ist wesentlich schwieriger als Primzahltest. ⇓ P = N P Faktorisierung vs. Primzahltest Sei ab jetzt n ∈ N, l = Länge(n) (in Binärdarstellung), d.h. l ≈ log2(n). Probedivision Faktorisierung exp(l) √ quadratisches Sieb ≈ O exp l √ elliptische Kurven ≈ O exp l √ Zahlkörpersieb ≈ O exp 3 l Probedivision Primzahltest O Miller/Rabin O exp(l) ≤ O l3 Agrawal et. al. polynomial in l deterministisch probabilistisch deterministisch Fermatscher Primzahltest Eingabe: n ∈ N>1 ungerade, s ∈ N. Ausgabe: “n ∈ / P” oder “wahrscheinlich n ∈ P”. (1) For i = 1, . . . , s do (2) Wähle a ∈ {2, . . . , n − 2} zufällig. (3) If an−1 ≡ 1 mod n, return “n ∈ / P”. (4) return “wahrscheinlich n ∈ P”. 3 Aufwand: ≤ O s · l . n “Durchfallquote” 101 0% 35 94% 1133 99,7% 561 43% 2207 · 6619 · 15443 0,07% Carmichael-Zahlen Test von Miller/Rabin (1976/80) Proposition: Seien n ∈ P \ {2}, n − 1 = 2k · m mit 2 m, a ∈ {1, . . . , n − 1}, b := am ⇒ b≡1 mod n oder 2i b ≡ −1 mod n mit i ∈ {0, . . . , k − 1}. −→ Verfeinerung des Fermat-Tests. Beispiel: n = 561 (Carmichael-Zahl) → Durchfallquote ≈ 98,5%. Es gibt keine “Carmichael-Zahlen” bezüglich des Miller/RabinTests! Aufwand: ≤ O s · l3 für Fehlerwahrscheinlichkeit < 41s . Mit erweiterter Riemannscher Vermutung: deterministische Vari ante mit s = l2 −→ Aufwand ≤ O l5 . Test von Agrawal, Kayal, Saxena (2002) Idee: Seien n ∈ P, a ∈ Z ⇒ (X + a)n ≡ X n + a mod n. Also: ∀ r∈N: (X + a)n ≡ X n + a mod (n, X r − 1) . Wähle “kleines” r, “kleinen” Bereich für a und teste (∗). (∗) Algorithmus (Agrawal, Kayal, Saxena, 2002): Eingabe: n ∈ N>1 der Länge l. Ausgabe: “n ∈ P” oder “n ∈ / P”. (1) Teste, ob n eine Potenz ist. [Aufwand O l4 .] (2) Finde r ∈ N minimal mit ni ≡ 1 mod r für alle 1 ≤ i ≤ 4 · l2 . [Es gilt r ≤ 16 · l5 + 2.] (3) Teste n auf Faktoren ≤ r. [Aufwand O l7 .] √ (4) For a = 1, . . . , 2 r · l do If (X +a)n ≡ X n +a mod (n, X r − 1) then return “n ∈ / P” (5) return “n ∈ P”. √ r Aufwand Schritt (4):2 r·l·O(l) Multiplikationen in Z[X]/ (n, X − 1) Insgesamt ≤ O l16,5 . Test von Agrawal, Kayal, Saxena l7,5 . Bewiesene Komplexität: O 6 Vermutete Komplexität: O l , mit Modifikation O l3 . Ingredienzien des Korrektheitsbeweises: Zu zeigen: Falls Schritt (5) erreicht wird, so gilt n ∈ P. - Rechnen in (Z/(r))∗, (r) - Rechnen in Fp = r-ter Kreisteilungskörper über Fp, - elementare Abschätzungen. Literatur: - M. Agrawal, N. Kayal, N. Saxena: “PRIMES is in P”, http://www.cse.iitk.ac.in/news/primality.html; - Folkmar Bornemann: “Ein Durchbruch für Jedermann”, DMVMitteilungen 4-2002.