Elementare Zahlentheorie und Kryptographie
Elementare Zahlentheorie und Kryptographie
Elementare Zahlentheorie und Kryptographie
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Wir wenden uns in diesem Abschnitt der Erzeugung von Einweggruppen zu.<br />
Problem: Sei B > b > 0. Wir wollen ein Zufallstripel (p, l, g) konstruieren derart,<br />
daß p eine B-Bit-Primzahl, l eine b-Bit-Primzahl <strong>und</strong> g ∈ F × p ein Element<br />
mit ord(g) = l ist. (Etwa für B = 1000, b = 500 wird das auf eine zufällige Einweggruppen<br />
(F × p , g) führen, die dann im Rahmen der <strong>Kryptographie</strong>verfahren,<br />
die im folgenden besprochen werden, benutzt werden können.)<br />
Sei im folgenen ispseudoprime ein schneller, probabilistischer Primzahltest, z.B.<br />
der Miller-Rabin-Test. Wenn der Aufruf ispseudoprime(N, ε) die Antwort “false”<br />
liefert, dann ist N sicher zusammengesetzt. Wenn der Aufruf ispseudoprime(N, ε)<br />
die Antwort “true” ergibt, dann ist N wahrscheinlich (mit Wahrscheinlichkeit<br />
≥ 1 − ε) prim. Je kleiner man die Fehlerwahrscheinlichkeit ε wählt, desto größer<br />
wird die Laufzeit.<br />
Wir schildern nun den Algorithmus stepnextprime, der für die Lösung des obigen<br />
Problems gebraucht wird. Sei N, s ∈ N mit s > 0. Die Folge<br />
N, N + s, N + 2s, N + 3s, · · ·<br />
wird im folgenden arithmetische Progression mit Beginn N <strong>und</strong> Sprungweite<br />
s genannt. Der Algorithmus stepnextprime sucht nach einer Primzahl in<br />
dieser arithmetischen Progression. Gegebenenfalls wird die kleinste Primzahl,<br />
die gef<strong>und</strong>en wird, ausgegeben.<br />
Klar ist folgendes: Wenn 1 < g < N ein gemeinsamer Teiler von s <strong>und</strong> N ist,<br />
dann teilt g auch jede Zahl der Form N + ks. Wenn also s nicht zu N teilerfremd<br />
<strong>und</strong> N zusammengesetzt ist, dann sind die Elemente der arithmetischen<br />
Progression N, N + s, N + 2s, · · · sicher allesamt nicht prim. Der folgende Algorithmus<br />
hält in diesem Fall mit einer Fehlermeldung an.<br />
Algorithmus 5.1.1 (stepnextprime) Eingabe: N, s. Steuerparameter ε 1 <strong>und</strong><br />
ε 2 , z.B. ε 1 = 10 −2 <strong>und</strong> ε 2 = 10 −10 .<br />
1. if ggT (N, s) > 1 then HALT mit Fehlermeldung;<br />
2. p := N;<br />
3. while ispseudoprime(p, ε 1 ) = false do p = p + s;<br />
4. if ispseudoprime(p, ε 2 ) = false GOTO 3.<br />
Ausgabe: p ist (mit Fehlerwahrscheinlichkeit ≤ ε 2 ) eine Primzahl in der arithmetischen<br />
Progression N, N +s, N +2s, · · ·; wahrscheinlich ist es sogar die kleinste<br />
Primzahl mit dieser Eigenschaft.<br />
Anders gesagt: p ist (mit Fehlerwahrscheinlichkein ≤ ε 1 ) eine Primzahl ≥ N,<br />
welche die Kongruenz p = N mod s erfüllt.<br />
71