agrawal

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