18.11.2013 Aufrufe

Elementare Zahlentheorie und Kryptographie

Elementare Zahlentheorie und Kryptographie

Elementare Zahlentheorie und Kryptographie

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

dass der Test mit “wahrscheinlich prim” antwortet, obwohl N nicht prim ist.<br />

Die Fehlerwahrscheinlichkeit eines guten Tests ist so klein, daß die theoretisch<br />

bestehende Möglichkeit einer fehlerhaften Ausgabe in der Praxis nicht relevant<br />

ist. Vielleicht wäre 10 −7 = 0, 00001% ein guter Wert für die Fehlerwahrscheinlichkeit.<br />

Wenn man einen solchen Primzahltest einmal hat, dann kann man große Zufalls-<br />

Primzahlen erzeugen, indem man mit einer Zufallszahl M der gewünschten<br />

Größenordnung (vielleicht 500 Dezimalstellen) beginnt 2 , <strong>und</strong> dann den Primzahltest<br />

der Reihe nach auf M, M + 1, M + 2, · · · anwendet, bis man eine<br />

Primzahl findet. Man muß dabei nicht allzu lange suchen: Der Anteil der Primzahlen<br />

an den Zahlen in [M, M + δ] ∩ N (δ ∈ N viel kleiner als M) ist nach dem<br />

Primzahlsatz ungefähr 1/ log(M) (dabei ist log der Logarithmus zur Basis e).<br />

Man darf also erwarten, nach ca. log(M) Versuchen auf eine Primzahl zu stoßen.<br />

Wenn M = 10 500 ist, dann wird man nach ca. log(M) = 500 log(10), d.h.<br />

spätestens nach ein paar Tausend Versuchen eine Primzahl finden, wenn man<br />

sukzessive M, M + 1, M + 2 u.s.w. auf Primalität testet.<br />

Wir beschreiben nun den Miller-Rabin-Primzahltest, der in der Praxis gerne<br />

verwendet wird 3 . Wir bemerken vorab: Jede Zahl M ≥ 1 kann man als M = 2 s m<br />

mit einer ungeraden Zahl m <strong>und</strong> s ∈ N schreiben. m <strong>und</strong> s lassen sich aus<br />

M leicht durch sukzessive Probedivision durch 2 berechnen. (Z.B. 96/2 = 48,<br />

48/2 = 24, 24/2 = 12, 12/2 = 6, 6/2 = 3, 3 ist ungerade. Daher gilt 96 = 2 5 · 3.)<br />

Der Miller-Rabin-Test beruht auf dem folgenden Satz.<br />

Satz 3.2.1 Sei N > 2. Sei a ∈ {1, · · · , N − 1} teilerfremd zu N. Schreibe<br />

N − 1 = 2 s m mit m ungerade <strong>und</strong> s ∈ N. Wenn<br />

<strong>und</strong><br />

gilt, dann kann N nicht prim sein.<br />

a m ≠ 1 mod N<br />

a m2r ≠ −1 mod N ∀r ∈ {0, 1, · · · , s − 1}<br />

Beweis: Es genügt die folgende Behauptung zu zeigen: Wenn N prim ist <strong>und</strong><br />

[a] m ≠ [1] (Restklassen in Z/NZ) gilt, dann gibt es ein r ∈ {0, · · · , s − 1} mit<br />

[a] m2r = [−1].<br />

Sei also N eine Primzahl, a zu N teilerfremd, <strong>und</strong> es gelte [a m ] ≠ [1]. Da N<br />

prim ist, muß Z/NZ ein Körper <strong>und</strong> (Z/NZ) × eine Gruppe mit ϕ(N) = N − 1<br />

Elementen sein (siehe 2.5.4 <strong>und</strong> 2.5.5). Mit dem kleinen Satz von Fermat 2.7.2<br />

(siehe auch 2.7.1) folgt also 4 [a] m2s = [a] N−1 = [1].<br />

Die Menge {k ∈ {0, 1, · · · , s}|[a] m2k = [1]} ist demnach nicht-leer; sie enthält ja<br />

s. Sei t das kleinste Element dieser Menge. Dann gilt [a] m2t = [1] <strong>und</strong> wegen<br />

2 Die Konstruktion von Zufallszahlgeneratoren ist ein interessantes Thema; wir gehen aus<br />

Zeitgründen nicht darauf ein.<br />

3 Henri Cohen nennt ihn “The workhorse of primality testing”<br />

4 Für zusammengesetztes N liegen die Dinge völlig anders: Wenn N nicht prim ist, dann<br />

ist sicher Z/NZ kein Körper <strong>und</strong> es gilt sicher ϕ(N) < N − 1. Zwar gilt noch [a] ϕ(N) = [1],<br />

aber in aller Regel wird [a N−1 ] ≠ [1] gelten, außer wenn N prim ist.<br />

49

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!