18.01.2014 Aufrufe

Endliche Körper

Endliche Körper

Endliche Körper

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!