Elementare Zahlentheorie und Kryptographie
Elementare Zahlentheorie und Kryptographie
Elementare Zahlentheorie und Kryptographie
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