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.
Wenn p eine große Primzahl <strong>und</strong> g eine Primitivwurzel in F × p ist, dann hat man<br />
in dem Square and Multiply Algorithmus ein schnelles 2 Verfahren zur Berechnung<br />
von exp F<br />
×<br />
p ,g(u) für u ∈ Z/(p − 1)Z.<br />
Für die Berechnung von log F<br />
×<br />
p ,g<br />
kann man eine Tabelle wie in obigem Beispiel<br />
anlegen, <strong>und</strong> dann auslesen. Das kostet natürlich enorm viel Laufzeit. Das Berechnen<br />
des relevanten Teils der Zeile [x] der Potenzierungstabelle braucht ca.<br />
2 B Schritte, wenn ord([x]) eine B-Bit-Zahl ist. Es gibt etwas schnellere Algorithmen<br />
für die Berechnung diskreter Logarithmen, z.B.<br />
a) den Algorithmus von Silver, Pohig <strong>und</strong> Hellman,<br />
b) die Babystep-Giantstep-Methode von Shanks (siehe [B], Abschnitt 9.3)<br />
oder<br />
c) die Index-Kalkulus-Methode.<br />
All diese Algorithmen sind i.a. nicht polynomial in der Bitlänge von p, zumindest<br />
wenn die Basis g des Logarithmus so beschaffen ist, daß ord(g) einen großen<br />
Primteiler 3 l hat<br />
Nach dem Stand der Technik 4 gilt es als praktisch unmöglich, log F<br />
×<br />
p ,g(x) zu berechnen,<br />
wenn p eine 1000-Bit Primzahl ist <strong>und</strong> ord(g) einen 200-Bit Primteiler<br />
hat.<br />
Wir wissen bereits, dass für jede Primzahl p die Gruppe F × p zyklisch ist. Die<br />
zyklischen Gruppen haben eine sehr einfache Strukturtheorie. Wir beenden den<br />
Abschnitt mit wichtigen Sätzen über zyklische Gruppen.<br />
Satz 4.1.7 Sei G eine endliche, zyklische Gruppe <strong>und</strong> g ein Erzeuger. Für jeden<br />
positiven Teiler d von |G| hat G genau eine Untergruppe U mit |U| = d nämlich<br />
U = 〈g |G|/d 〉.<br />
Beweis: Gelte dm = |G|. Sei N = |G|. Offenbar ist U := 〈g m 〉 eine Untergruppe<br />
mit<br />
|U| = ord(g m ) = |G|/m = d<br />
(beachte 4.1.2, 4.1.3).<br />
Sei V eine Untergruppe der Ordnung d. Wir zeigen V ⊂ U. (Dann muß U = V<br />
gelten wg. |U| = |V | = d). Sei v ∈ V beliebig. Wegen |V | = d folgt v d =<br />
1. Wie jedes Element von G ist v eine Potenz von g: Sagen wir v = g s mit<br />
s ∈ {0, · · · , N − 1}. Dann gilt 1 = g ds <strong>und</strong> mit ord(g) = N folgt N | ds, d.h.<br />
md | sd. Daher ist s ein Vielfaches von m. Also existiert ein k ∈ {0, · · · , d − 1}<br />
mit s = mk. Es folgt v = g mk ∈ U.<br />
□<br />
2 polynomial in der Bitlänge von p<br />
3 vielleicht ist die Bitlänge von l halb so groß wie die Bitlänge von p<br />
4 im Jahr 2007<br />
63