Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Oksana Schestakov Proseminar SS 2003<br />
Prof.Dr. C.Bessenrodt<br />
<strong>Endliche</strong> <strong>Körper</strong><br />
Bezeichnen wir F q als <strong>Körper</strong>, der eine endliche Anzahl q von Elementen hat. Die<br />
Charakteristik eines endlichen <strong>Körper</strong>s ist stets eine Primzahl p .<br />
Dann enthält F q den Primkörper F p = /<br />
p, und somit ist er ein Vektorraum über F p –<br />
endlich dimensional. Bezeichne f die Dimension von F q als ein F p -Vektorraum. F q hat<br />
f<br />
p Elemente. Dies bedeutet, q ist eine Potenz der Charakteristik p . Umgekehrt gibt es<br />
f<br />
für jede Primzahlpotenz q = p einen <strong>Körper</strong> mit q Elementen (ohne Beweis).<br />
Es gibt q − 1 von Null verschiedene Elemente und nach Definition des <strong>Körper</strong>s bilden sie<br />
eine abelsche Gruppe. Für einen endlichen <strong>Körper</strong> F q mit q Elementen gilt:<br />
*<br />
q<br />
F = F \{0} ist zyklisch (siehe Satz 2).<br />
q<br />
Definition. Sei G eine eine endliche Gruppe. Die Ordnung vom Element g<br />
d<br />
kleinste natürliche Zahl d , für welche g = 1 gilt.<br />
1<br />
∈ G ist die<br />
So ist zum Beispiel die Ordnung von a ∈ Z modulo m (mit ggT ( am)=1) , die kleinste<br />
d<br />
natürliche Zahl d mit der Eigenschaft a ≡ 1(mod m)<br />
.<br />
Die Ordnung eines beliebigen Elementes einer endlichen Gruppe G teilt immer die<br />
Anzahl G der Elementen dieser Gruppe. Dies ist eine unmittelbare Konsequenz des<br />
Satzes von Lagrange. Damit ist auch der folgende Satz 1 bewiesen.<br />
Satz 1: Die Ordnung jedes<br />
*<br />
a ∈ F q teilt q − 1.<br />
Definition: Ein Erzeuger g eines endlichen <strong>Körper</strong>s F q ist ein Element der Ordnung<br />
q − 1. Die Potenzen von g durchlaufen alle Elemente von F q<br />
* .<br />
Satz 2: Jeder endliche <strong>Körper</strong> hat einen Erzeuger. Wenn g Erzeuger von F q<br />
* ist, so ist<br />
j<br />
g genau dann Erzeuger, wenn ggT ( jq− , 1)<br />
= 1. Es gibt insgesamt ϕ( q − 1)<br />
verschiedene<br />
Erzeuger von F q<br />
* .<br />
* d<br />
Beweis: Angenommen a ∈ F q hat die Ordnung d , also a = 1 und keine kleinere Potenz<br />
von a ergibt 1. Da a d die kleinste Potenz mit dem Ergebnis 1 ist, folgt, dass die<br />
2 d<br />
Elemente a, a ,..., a =1 verschieden sind. Nach Satz 1 gilt: d teilt q − 1. Wir behaupten,<br />
dass alle Elemente der Ordnung d in F q<br />
* genau die ϕ ( d ) -Werte a j sind, für die<br />
ggT ( jd , ) = 1 .<br />
d<br />
Zuerst, da die d verschiedene Potenzen von a alle die Gleichung x = 1 erfüllen, sind<br />
2 d<br />
a, a ,..., a =1 alle Wurzeln dieser Gleichung. Jedes Element der Ordnung d muss deshalb<br />
unter den Potenzen von a sein. Aber nicht alle Potenzen von a haben die Ordnung d :<br />
wenn ggT ( jd , ) = d′ > 1 gilt, dann hat a j niedrigere Ordnung, denn d/<br />
d′ und j/<br />
d′ sind<br />
j<br />
ganze Zahlen und wir können schreiben: ( ) ( d / d′<br />
) d<br />
( ) ( j / d′<br />
a = a<br />
) = 1.<br />
Im Gegensatz dazu können wir zeigen, dass a j die Ordnung d hat, wenn ggT ( jd , ) = 1<br />
ist. Sei j prim zu d , und seien xy∈ , Z mit xj + yd = 1 (Existenz von x und y nach dem
erweiterten euklidischen Algorithmus garantiert). Wenn a j eine niedrigere Ordnung d ′′<br />
hätte, dann würde a d′′<br />
, sowohl zur j -ten als auch zur d -ten Potenz erhoben, 1 ergeben<br />
und folglich hätte man: a d′′<br />
d '' 1<br />
d''<br />
xj yd<br />
= ( a ) = (( a )<br />
+ j d'' x d yd''<br />
) = ( a ) ( a ) = 1. Dies widerspricht,<br />
dass a von der Ordnung d ist. Deshalb hat a j die Ordnung d nur dann, wenn<br />
ggT ( jd , ) = 1.<br />
Dies bedeutet: wenn es ein Element a der Ordnung d gibt, dann gibt es genau ϕ ( d )<br />
Elemente der Ordnung d . Also gibt es für jedes d | ( q − 1)<br />
nur zwei Möglichkeiten:<br />
*<br />
entweder kein Element von F q hat die Ordnung d oder genau ϕ ( d ) Elemente haben die<br />
Ordnung d .<br />
*<br />
Nun hat jedes Element a ∈ F q eine Ordnung, deshalb können wir schreiben:<br />
*<br />
q<br />
⎛ ⎞<br />
∑ ∑ ⎜ ∑ 1<br />
∑<br />
∈F<br />
⎜⎝ ⎟⎠<br />
q − 1 = F = 1 = ≤ ϕ( d) = q − 1.<br />
a<br />
dq | −1 dq | −1<br />
* *<br />
q a∈F q<br />
ord( a)<br />
= d<br />
<br />
0<br />
=⎨<br />
⎧⎪<br />
⎪⎩<br />
ϕ( d)<br />
Deshalb, die einzige Möglichkeit, dass diese Ungleichung erfüllt ist, besteht darin, wenn<br />
es immer ϕ ( d ) (und niemals 0) Elemente der Ordnung d gibt. Insbesondere gibt es<br />
ϕ( q − 1)<br />
>0 Elemente der Ordnung q − 1 und wie wir im letzten Paragraphen gesehen<br />
haben, wenn g irgendein Element der Ordnung q − 1 ist, dann sind die anderen<br />
Elemente der Ordnung q − 1 genau die Potenzen g j , für die ggT ( jq− , 1)<br />
= 1 gilt. ■<br />
Korollar: Für jede Primzahl p existiert eine ganze Zahl g , so dass die Potenzen von g<br />
alle von Null verschiedenen Restklassen modulo p erschöpfen.<br />
Beispiel: Wir erhalten alle Reste von 1 bis 18 modulo 19, indem wir die Potenzen von 2<br />
verwenden. Im Folgenden die ersten Potenzen von 2 modulo 19: 2, 4, 8, 16, 13, 7, 14, 9,<br />
18, 17, 15, 11, 3, 6, 12, 5, 10, 1.<br />
Diskrete Logarithmen<br />
*<br />
Gilt für ga∈ , F p und x ∈ 0 die Beziehung g<br />
x<br />
= a , so heißt x der diskrete Logarithmus von<br />
a zur Basis g (Schreibweise x = log g a ). x ist nur modulo ord()<br />
g bestimmt. Wollen wir eine<br />
Normierung einführen, so können wir 0 ≤ x ≤ord( g) − 1 wählen.<br />
2
6<br />
Beispiel: Wir betrachten p = 10 + 3 . Durch probieren findet man:<br />
x<br />
° 2 ≡ 3modp<br />
wird gelöst von x =254277,<br />
x<br />
° 3 ≡ 2modp<br />
hat keine Lösung.<br />
Wir wissen, dass man g x mit der square-and-multiply-Methode schnell berechnen kann, die<br />
Schrittzahl wächst wie log 2 x ≤ log 2 p. Im Gegensatz hierzu ist das inverse Problem, die<br />
Berechnung des diskreten Logarithmus, bisher nicht effizient lösbar. Dies ist die Grundlage<br />
einiger kryptographischer Verfahren (siehe Massey-Omura).<br />
Eine naive Methode zur Berechnung diskreter Logarithmen wäre:<br />
Ist p Primzahl und sind g und a gegeben mit 2 ≤ ga , ≤ p− 1, so probiert man für<br />
x<br />
x = 0,1,2..., p − 1 aus, ob g ≡ amod<br />
p gilt. Genauer :<br />
° Man setzt g 0 = 1 und berechnet rekursiv g = g 1 ⋅ g mod p für n = 1,2... (Dann ist<br />
n<br />
g ≡ gn<br />
mod p). Für jedes n testet man:<br />
° Gilt g n = a , so ist n der gesuchte diskrete Logarithmus log g a .<br />
° Gilt g n = 1 , so gibt es keine Lösung und man hört auf.<br />
n<br />
n−<br />
Das folgende Maple-Programm implementiert den gerade eben skizzierten Algorithmus<br />
(ausprobieren!):<br />
Naive := proc(g,a,p)<br />
local f, i, t, r;<br />
i := 1; t:= g mod p; r := a mod p; f :=evalb(t=1);<br />
while evalb(tr) and not(f) do<br />
t := t ∗ g mod p; i := i+1; f :=evalb(t = 1);<br />
od;<br />
if f then print("Keine Lösung")<br />
else print(i);<br />
fi;<br />
end;<br />
Um zu überprüfen, ob 2 x 7<br />
≡ 3mod p für p = 10 + 19 eine Lösung besitzt, geben wir die folgende<br />
Befehlszeile ein (die gleichzeitig die für die Rechnung benötigte Zeit ausgibt):<br />
7<br />
ct : = time(): Naive(2,3,10 +19); time()-ct;<br />
Damit kann jeder Zeitmessungen auf dem eigenen Rechner durchführen. So haben wir folgende<br />
Zeiten bekommen:<br />
3
x<br />
2 ≡ 3modp<br />
hat keine Lösung (12 sec.),<br />
x<br />
6 ≡ 2modp<br />
für x = 3619301 (31 sec.),<br />
x<br />
6 ≡ 3modp<br />
für x = 6380718 (54 sec.),<br />
x<br />
6 ≡ 5modp<br />
für x = 6033274 (51 sec.),<br />
x<br />
6 ≡ 7modp<br />
für x = 2226069 (19 sec.).<br />
7<br />
Es gilt p − 1 = 10<br />
2<br />
+ 18 = 2 ⋅7 ⋅67 ⋅ 1523 und finden damit<br />
p − 1<br />
ord(2)<br />
= ,<br />
7<br />
p − 1<br />
ord(3)<br />
= ,<br />
2<br />
was ord(6) = p − 1 impliziert. 6 ist also Primitivwurzel modulo p .<br />
Das Massey-Omura-Kryptosystem<br />
zur Nachrichtenübertragung<br />
1. Man einigt sich auf eine Primzahl p und darauf, wie man Nachrichten mit<br />
Elementen aus Z /( p)<br />
verschlüsselt.<br />
2. Jeder Teilnehmer A wählt eine (zufällige) Zahl e A zwischen 0 und p − 1 mit<br />
ggT( eA, p − 1 )=1 und berechnet mit dem erweiterten euklidischen Algorithmus d A mit<br />
de A A<br />
dA<br />
A<br />
≡ 1modp− 1 . (Dann ist x → x invers zu x → x e in Z /( p)<br />
.) A hält die Zahlene<br />
A<br />
und d A geheim. (A hat also keinen öffentlichen Schlüssel .)<br />
3. Wie kann A eine Nachricht (entspricht einem a ∈ Z /( p)<br />
) an B verschlüsselt senden?<br />
e<br />
A berechnet b ≡ a A<br />
mod p und sendet b an B, womit B natürlich nichts anfangen<br />
kann.<br />
e<br />
4. B berechnet nun c ≡ b B<br />
mod p und schickt c zurück an A.<br />
d<br />
5. Nun berechnet A die Zahl d ≡ c A<br />
mod p und schickt d zurück an B.<br />
d<br />
6. B berechnet nun d B<br />
mod p, was wegen<br />
d dd edd eedd ed ed<br />
d B ≡ c A B ≡ b B A B ≡ a A B A B ≡ ( a A A ) B B ≡ amodp<br />
genau die Nachricht a ist.<br />
Beispiel: A und B haben die Primzahl p = 10007 vereinbart. Nun schickt A an B die Zahl 2179,<br />
B schickt 7203 zurück, A wiederum 8474. Welche Zahl teilt A mit dem Massey-Omura-Verfahren<br />
B damit mit? Wir suchen x , das folgende Gleichungen erfüllt (diskreter Logarithmus!):<br />
eA<br />
x ≡ 2179 mod p<br />
eB<br />
2179 ≡ 7203 mod p<br />
d<br />
A<br />
7203 ≡ 8474 mod p<br />
Wir lösen zuerst die 3. Gleichung durch Probieren und erhalten d = 5889 . Nach Konstruktion<br />
A<br />
muss nun gelten<br />
4
5889<br />
≡ de A A ≡ ( eA ) dA<br />
≡ 2179 ≡ 1971mod ,<br />
x x x p<br />
also gilt x = 1971 .<br />
A hat B sein Geburtsjahr mitgeteilt.<br />
Hier war e = 3021, d = 5889, e = 4605, d = 8309 .<br />
A A B B<br />
Bemerkungen:<br />
1. Ein großer Vorteil bei diesem Kryptosystem ist, dass man außer p und dem<br />
Verschlüsselungsverfahren nichts vereinbaren muss. Man muss auch keine öffentlichen<br />
Schlüssel verwalten.<br />
2. Ein großer Nachteil ist, das man 3 Übertragungen braucht, um eine Nachricht von A<br />
nach B zu übermitteln.<br />
3. Stellt A nicht sicher , dass die Nachricht wirklich an B geht, könnte dies ein<br />
eA<br />
e<br />
Außenstehender C ausnutzen: Er fängt a auf, schickt A e<br />
a C zurück, fängt dann wieder<br />
eC eAeCdA<br />
eCdC<br />
a = a auf und berechnet sich daraus a = a . Man muss also sicherstellen, dass<br />
die Nachricht den richtigen Empfänger erreicht.<br />
4. Mit den entsprechenden Veränderungen kann man einen beliebigen endlichen <strong>Körper</strong> F q<br />
(anstatt /( p)<br />
) benutzen. Die Sicherheit des Verfahrens beruht auf die Schwierigkeit,<br />
*<br />
diskrete Logarithmen in Fq<br />
zu berechnen.<br />
Literaturverzeichnis:<br />
Neal Koblitz, A Course in Number Theory and Cryptography, Graduate Texts in Mathematics,<br />
114; Springer 1994<br />
Wolfgang M. Ruppert, Vorlesungsskript über Zahlentheorie und Kryptographie, Kapitel 10,<br />
http://www.mi.uni-erlangen.de/%7Eruppert/vorlws9899.html<br />
5