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.
Satz 5.1.2 (Primzahlen in arithmetischen Progressionen) Sei s zu N<br />
teilerfremd. Dann gibt es in der arithmetischen Progression<br />
unendliche viele Primzahlen.<br />
N, N + s, N + 2s, N + 3s, · · ·<br />
Der Erwartungswert für die Anzahl der Durchläufe der while-Schleife in obigem<br />
Algorithmus ist dann 2<br />
b<br />
log(N)<br />
ϕ(b) .<br />
Wenn überdies N eine 1000-Bit-Zahl ist, dann wird stepnextprime spätestens<br />
nach ein paar tausend Schritten eine Primzahl finden.<br />
Sei im folgenden random(b) eine ≈ b-Bit-Zufallszahl. Der Aufruf<br />
l := stepnextprime(random(b), 1)<br />
wird dann eine ≈ b-Bit-Zufallsprimzahl erzeugen. N := 1+random(B−b)·l wird<br />
dann eine B-Bit-Zufallszahl sein, die N = 1 mod l erfüllt. p := stepnextprime(N, l)<br />
ergibt eine zufällige Primzahl p, die p = 1 mod l erfüllt. Dann gilt l | p−1 = |F × p |.<br />
Da F × p zyklisch ist, muß es in F × p genau ϕ(l) = l − 1 Elemente der Ordnung l<br />
geben. Um das eingangs gestellte Problem vollständig zu lösen, muss nur noch<br />
ein solches Element g der Ordnung l gef<strong>und</strong>en werden. Dafür kann man den<br />
folgenden Satz verwenden.<br />
Satz 5.1.3 Sei p prim <strong>und</strong> l ein Primteiler von p − 1. Sei z ∈ F × p<br />
g := z (p−1)/l . Wenn g ≠ [1] gilt, dann gilt ord(g) = l.<br />
beliebig. Sei<br />
Beweis: Nach dem Satz von Fermat gilt g l = z p−1 = [1] <strong>und</strong> das impliziert<br />
ord(g) | l. Da l prim ist, muß ord(g) ∈ {1, l} gelten. Wenn g ≠ 1, dann folgt also<br />
ord(g) = l.<br />
□<br />
Für ein willkürlich gewähltes Element z ∈ F × p wird in aller Regel z p−1<br />
l<br />
ord(z) = l gelten. Wenn z p−1<br />
l<br />
sein. Dieses Polynom hat p−1<br />
l<br />
willkürlich gewähltes Element z die Gleichung z p−1<br />
l<br />
(Also z.B. ≈ 2 −300 , wenn l eine 300-Bit-Zahl ist.)<br />
≠ [1], also<br />
= [1] gilt, dann wird z Nullstelle von Z p−1<br />
l − [1]<br />
Nullstellen. Die Wahrscheinlichkeit dafür, daß ein<br />
= [1] erfüllt ist also nur 1/l.<br />
Der folgende Algorithmus stellt eine Lösung des eingangs gestellten Problems<br />
dar.<br />
Algorithmus 5.1.4 (Schlüsselerzeugung)<br />
Eingabe: b < B.<br />
l := stepnextprime(random(b), 1) (Dann ist l eine ≈ b-Bit-Zufallsprimzahl.)<br />
2 ϕ steht für die Eulersche ϕ-Funktion.<br />
72