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.
werden. Dann benutzt man die Formel<br />
x n = x a0 (x 2 ) a1 (x 4 ) a2 (x 8 ) a3 · · · (x 2m ) am .<br />
Die dabei auftretenden Ausdrücke x 2k können durch k-maliges Quadrieren berechnet<br />
werden. Bei dieser Berechnung von x 2k fallen nur k <strong>und</strong> nicht 2 k − 1<br />
Multiplikationen an; das ist der entscheidende Vorteil!<br />
Algorithmus 3.1.1 (Square <strong>und</strong> Multiply Algorithmus)<br />
Eingabe: x ∈ G, n ∈ N.<br />
Initialisierung: y := 1.<br />
While n ≠ 0 do<br />
Berechne a ∈ {0, 1}, q ∈ N mit n ÷ 2 = q Rest a.<br />
y := y ∗ x a , x := x ∗ x, n := q.<br />
Gib aus: y.<br />
Man beachte, dass bei jeder Schleife der Wert von n absinkt, während der Wert<br />
y · x n gleichbleibt. Insgesamt treten bei Square and Multiply ca. 2 log 2 (n) Multiplikationen<br />
in G auf, während es bei dem naiven Algorithmus n − 1 Multiplikationen<br />
wären. Wieviel Laufzeit eine einzelne Multiplikation kostet, hängt<br />
natürlich stark von G ab. Wenn z.B. eine einzelne Multiplikation in G eine Sek<strong>und</strong>e<br />
dauert, dann dauert die Berechnung von x 222 mit Square and Multiply<br />
ca. 22 Sek<strong>und</strong>en, während sie mit dem naiven Algorithmus ca 2 22 = 4194304<br />
Sek<strong>und</strong>en, d.h. mehr als ein Jahr Laufzeit benötigen würde.<br />
3.2 Der Miller-Rabin-Primzahltest<br />
Das RSA-Verfahren beruht letzten Endes auf folgendem Phänomen:<br />
Es ist technisch kein Problem, in Sek<strong>und</strong>enschnelle zwei große Primzahlen p <strong>und</strong><br />
q zufällig zu wählen, die jeweils ein paar h<strong>und</strong>ert Dezimalstellen lang sind, <strong>und</strong><br />
das Produkt N := pq zu bilden.<br />
Es ist aus algorithmischer Sicht ein extrem hartes Problem, ein solches Produkt<br />
N in seine Primfaktoren zu zerlegen. Wer nur N, nicht aber p <strong>und</strong> q kennt, kann<br />
also p <strong>und</strong> q nicht mit vertretbarem Zeitaufwand berechnen.<br />
In diesem Abschnitt geht es um die Erzeugung großer Primzahlen. Dieses Problem<br />
läßt sich leicht auf Primzahltests zurückführen. Ein Primzahltest ist<br />
ein Algorithmus, der bei Eingabe einer Zahl N ∈ N mit “prim” oder “zusammengesetzt”<br />
antwortet, je nach dem, ob N eine Primzahl ist oder nicht.<br />
Ein probabilistischer Primzahltest antwortet auf die Eingabe N ∈ N mit<br />
“wahrscheinlich prim” oder mit “zusammengesetzt”. Wenn die Antwort “zusammengesetzt”<br />
lautet, dann ist die Zahl N sicher zusammengesetzt. Die Fehlerwahrscheinlichkeit<br />
des probabilistischen Tests ist die Wahrscheinlichkeit dafür,<br />
48