18.11.2013 Aufrufe

Elementare Zahlentheorie und Kryptographie

Elementare Zahlentheorie und Kryptographie

Elementare Zahlentheorie und Kryptographie

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!