Zahlentheorie - Hochschule Heilbronn

Werbung
Zahlentheorie
Skript zur Vorlesung an der Hochschule Heilbronn
(Stand: 23. Juli 2013)
1
Prof. Dr. V. Stahl
1 Der
Inhalt dieses Skripts ist teilweise wörtlich oder sinngemäß aus den im Literaturverzeichnis genannten Quellen entnommen. Es handelt sich um keine wissenschaftliche Veröffentlichung.
INHALTSVERZEICHNIS
2
Inhaltsverzeichnis
1 Anwendungen der Zahlentheorie
3
2 Eine Kuriosität: Der große Fermatsche Satz
4
3 Teilbarkeit, Primzahlen und Primfaktorzerlegung
3.1 Teilbarkeit . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Primzahlen . . . . . . . . . . . . . . . . . . . . . . .
3.3 Der Fundamentalsatz der elementaren Zahlentheorie
3.4 Noch zwei Kuriositäten . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4 Division mit Rest
6
6
7
7
13
15
5 Größter gemeinsamer Teiler
17
5.1 Euklidischer Algorithmus . . . . . . . . . . . . . . . . . . . . . . 18
5.2 Erweiterter Euklidischer Algorithmus . . . . . . . . . . . . . . . . 21
6 Kongruenz und Arithmetik modulo m
6.1 Rechenregeln modulo m . . . . . . . .
6.2 Kongruenz modulo m . . . . . . . . .
6.3 Die Struktur (Zm , ⊕m , ⊗m ) . . . . . .
6.4 Schnelle Algorithmen zur Potenzierung
. . . . . . .
. . . . . . .
. . . . . . .
modulo m
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
23
23
24
26
30
7 Zahlentheoretische Grundlagen zur RSA Verschlüsselung
35
7.1 Die Eulersche ϕ-Funktion . . . . . . . . . . . . . . . . . . . . . . 35
7.2 Der Satz von Euler-Fermat . . . . . . . . . . . . . . . . . . . . . 35
8 RSA Codierungssystem
37
9 Historischer Exkurs in die Primfaktorisierung
42
10 Ein paar große Zahlen aus der Physik
45
1
1
ANWENDUNGEN DER ZAHLENTHEORIE
3
Anwendungen der Zahlentheorie
In der Zahlentheorie beschäftigen wir uns mit den Eigenschaften der natürlichen oder ganzen Zahlen. Die natürlichen Zahlen mögen vielleicht zunächst
ziemlich “einfach” und unspektakulär erscheinen, bei genauerem Hinsehen stellt
man jedoch fest, daß sie eine äußerst komplexe Struktur und viele interessante
Eigenschaften haben. Dies illustriert z.B. der große Fermatsche Satz, der sehr
einfach zu formulieren ist, an dessen Beweis sich aber zahllose Mathematiker
350 Jahre lang die Zähne ausgebissen haben. In Kapitel 3 werden wir zwei ähnliche geartete Probleme kennen lernen, das Primzahlzwillingsproblem und die
Goldbachsche Vermutung, die bis heute noch ungelöst sind.
Zahlentheorie wurde bereits vor fast 4000 Jahren sowohl von den Babyloniern als auch von den Ägyptern betrieben. In Europa begannen die Griechen
mit der Entwicklung der Zahlentheorie. So wurde der Begriff der Primzahl von
Pythagoras (580–500 v. Chr.) und seinen Schülern eingeführt, Euklid (365–
300 v. Chr.) zeigte, daß es unendlich viele Primzahlen gibt und Eratosthenes
(276–194 v. Chr.) entwickelte ein Verfahren um alle Primzahlen unterhalb einer
gegebenen Schranke zu finden. Über viele Jahrhunderte galt die Zahlentheorie
als reiner Zeitvertreib für Mathematiker und hatte so gut wie keine praktische
Relevanz. Durch die Entwicklung und den weitläufigen Einsatz von Computern
in den letzten Jahren hat die Zahlentheorie jedoch wichtige Anwendungen in
der Informatik gefunden – hier zwei Beispiele:
• Symbolisches Rechnen, d.h. Rechnen ohne Rundungsfehler. Dies ist eine
Alternative zum sog. numerischen Rechnen mit Gleitkommazahlen. Was
zunächst verlockend klingt, hat aber einen Haken, nämlich den im Vergleich zur Numerik sehr hohen Rechenaufwand. Rechnet man nämlich mit
ganzen oder rationalen Zahlen, so neigen die Zwischenergebnisse dazu, immer größer zu werden. Gleitkommazahlen hingegen sind immer konstant
32 oder 64 bit lang.
Viele Ergebnisse der Zahlentheorie lassen sich dazu verwenden um den
Rechenaufwand zu reduzieren oder auch um Algorithmen zu parallelisieren.
Ein wichtiges Resultat aus der Zahlentheorie ist hier das sog. Chinesische Restetheorem, welches von dem Chinesischen Mathematiker Sun Tsŭ
zurückgeht (sie genaue Jahreszahl ist nicht bekannt, vermutlich zwischen
zwischen 280 und 473 n. Chr.) und von Chin Chiu Shao 1247 verallgemeinert wurde.
• Interessanterweise sind es genau die Effizienzprobleme, die der Zahlentheorie zu einer anderen Anwendung verhelfen, die im Internet–Zeitalter
eine ganz zentrale Bedeutung hat — die Kryptographie. Prinzipiell ist es
immer möglich, kryptographische Codes zu knacken, der Rechenaufwand
hierfür ist aber derart gigantisch, daß jedes Unterfangen in der Richtung
hoffnungslos ist. Zumindest mit den derzeit bekannten Algorithmen.
Das Hauptziel dieser Vorlesung ist, die Funktionsweise des 1978 publizierten RSA Algorithmus zu erklären, der direkt auf einem Resultat der
Zahlentheorie basiert, dem Satz von Euler-Fermat aus dem Jahr 1760. Der
RSA Algorithmus wird in vielen Kryptosystemen eingesetzt und gilt als
eines der sichersten Verfahren.
2
2
EINE KURIOSITÄT: DER GROßE FERMATSCHE SATZ
4
Eine Kuriosität: Der große Fermatsche Satz
Das berühmteste Resultat von Fermat (1601-1665) ist der sogenannte große
Fermatsche Satz. Den Ursprung dieses Satzes findet man in der Gleichung für
rechtwinklige Dreiecke von Pythagoras
a2 + b2 = c2 .
Schon in der Antike interessierten sich die Griechen für ganzzahlige Lösungen
dieser Gleichung und sie kannten bereits unendlich viele ganzzahlige Tripel, z.B.
a
= m2 − 1
b =
2m
c = m2 + 1
für beliebiges m. Viele hundert Jahre später bestimmte Diophant von Alexandria (um 250 n. Chr.) in seiner Schrift “Arithmetica” sogar alle Lösungen. Angeregt von diesem Werk, das ein grundlegender Text im Verlaufe von mehr als
vierzehn Jahrhunderten blieb, kam Fermat im Jahre 1637 zu dem Schluß, daß
die Gleichung
a n + bn = c n
(2.1)
für n > 2 keine ganzzahlige Lösung a, b, c besitzt. Fermat selbst hat in einem
der wenigen Beweise, die er wirklich aufgeschrieben hat, den Fall n = 4 erledigt.
Beim Studium der “Arithmetica” von Diophant pflegte Fermat seine Ergebnisse und Überlegungen in Form kurzer Randbemerkungen in sein Exemplar zu
schreiben. Im Zusammenhang mit der Gleichung (2.1) fand man die folgende
Notiz Fermats am Rand der gesammelten Werke Diophants:
“Es ist unmöglich, einen Kubus in zwei Kuben, eine vierte Potenz in
zwei vierte Potenzen, oder allgemein jede Potenz über der zweiten
in zwei Potenzen des gleichen Grades zu zerlegen.”
Weiterhin schrieb er:
“Ich habe eine wahrhaft wunderbare Beweisführung entdeckt, die
jedoch auf diesem Rand nicht genügend Platz findet.”
Diese Randbemerkung von Fermat hat seit nunmehr 350 Jahren die mathematische Welt in Atem gehalten, denn viele, vor allem auch berühmte Mathematiker, haben versucht, diesen Beweis wiederzufinden:
• Euler und Gauß gaben einen Beweis für n = 3.
• L. Dirichlet (1805-1859) und A. Legendre (1752-1833) haben den Fall n =
5 gelöst.
• E. Kummer (1810-1893) behandelte eine ganze Serie von Exponenten.
Da es nicht einmal diesen überragenden Mathematikern gelungen ist, den allgemeinen Fermatschen Satz zu beweisen, hat man im Lauf der Zeit begonnen,
von der Fermatschen Vermutung zu sprechen.
Erst 1995 gelang es Andrew Wiles nach wichtigen Vorarbeiten von G. Frey
(1985), K. Ribet (1987) und vielen anderen, die Fermatsche Vermutung in der
2
EINE KURIOSITÄT: DER GROßE FERMATSCHE SATZ
5
Tat vollständig zu bestätigen. Damit hat Wiles eines der ältesten mathematischen Probleme überhaupt gelöst. Da sein Beweis von ungewöhnlicher Tiefe
und eindrucksvoller Kreativität ist und seine verwendeten Resultate und Methoden außerordentliche Vielfalt und höchste Komplexität aufweisen, steht die
“wunderbare Beweisführung” von Fermat aber noch immer aus — falls sie denn
wirklich existieren sollte.
3
TEILBARKEIT, PRIMZAHLEN UND PRIMFAKTORZERLEGUNG
3
6
Teilbarkeit, Primzahlen und Primfaktorzerlegung
Wenn im Folgenden von Zahlen geredet wird, meinen wir immer die natürlichen
Zahlen mit Null.
3.1
Teilbarkeit
Definition 3.1 (Teilbarkeit)
d ∈ N0 heißt Teiler von a ∈ N0 , wenn es eine Zahl k ∈ N0 gibt, so daß
kd = a.
Man sagt auch “d teilt a”, “a ist durch d teilbar” oder “a ist Vielfaches
von d” und schreibt d|a.
Beispiel 3.2
4 | 12, 3 | 18, 26 | 5, 86 | 4, 4 | 8.
Theorem 3.3
Für alle a, b, c, d ∈ N0 gilt:
(1) Wenn a|b und b|c dann a|c.
(2) Wenn a|b und c|d dann ac|bd.
(3) Wenn ac|bc und c 6= 0 dann a|b.
(4) Wenn a|b und a|c dann a|(mb + nc) für beliebige m, n ∈ N0 .
(5) Wenn a|b und a|(b + c) dann a|c.
(6) Wenn a|b und b 6= 0 dann a ≤ b.
(7) Wenn a|b und b|a dann a = b.
Beweis. Seien a, b, c, d ∈ N0 beliebig.
(1) Angenommen a|b und b|c. Dann gibt es k1 , k2 ∈ N0 so daß ak1 = b
und bk2 = c. Somit ist ak1 k2 = c und a|c.
(2) Angenommen a|b und c|d. Dann gibt es k1 , k2 ∈ N0 so daß ak1 = b
und ck2 = d. Somit ist ack1 k2 = bd und ac|bd.
(3) Angenommen ac|bc und c 6= 0. Dann gibt es k ∈ N0 so daß ack = bc.
Division durch c ergibt ak = b und a|b.
(4) Angenommen a|b und a|c und sei m, n ∈ N0 beliebig. Dann gibt es
k1 , k2 ∈ N0 so daß ak1 = b und ak2 = c. Somit ist auch mak1 = mb
und nak2 = nc und a(mk1 + nk2 ) = mb + nc, d.h. a|(mb + nc).
(5) Angenommen a|b und a|(b + c). Dann gibt es k1 , k2 ∈ N0 so daß
ak1 = b und ak2 = b + c. Somit ist ak2 = ak1 + c und a(k2 − k1 ) = c,
d.h. a|c.
(6) Angenommen a|b und b 6= 0. Dann gibt es k1 ∈ N so daß ak1 = b. Da
k1 ≥ 1 folgt a ≤ b.
3
TEILBARKEIT, PRIMZAHLEN UND PRIMFAKTORZERLEGUNG
7
(7) Angenommen a|b und b|a. Dann gibt es k1 , k2 ∈ N0 so daß ak1 = b
und bk2 = a. Eingesetzt erhält man ak1 k2 = a, d.h. entweder ist
k1 = k2 = 1 oder a = 0. Im ersten Fall folgt a = b, im zweiten Fall
folgt aus a|b daß b = 0 und damit ist a = b = 0. 3.2
Primzahlen
Definition 3.4 (Primzahl)
p ∈ N heißt Primzahl, wenn p ≥ 2 und p nur durch 1 und durch sich
selbst teilbar ist.
Beispiel 3.5
Primzahlen sind
2, 3, 5, 7, 11, 13, 17, . . . .
Keine Primzahlen sind hingegen
0, 1, 4, 6, 8, 9, 10, 12, . . . .
Theorem 3.6 (Euklid, 300 v.Chr.)
Es gibt unendlich viele Primzahlen.
Beweis. Angenommen es gäbe nur endlich viele Primzahlen p1 , p2 , . . . , pr . Betrachte die Zahl
n = p1 p2 · · · pr + 1.
Dann ist n größer als alle Primzahlen p1 , p2 , . . . , pr und kann daher selbst
keine Primzahl sein. Aus der Definition von Primzahlen folgt, daß es mindestens eine Primzahl pi geben muß, für die gilt pi |n. Aus der Definition
der Teilbarkeit folgt, daß es ein k geben muß, so daß kpi = n, bzw.
kpi = p1 p2 · · · pr + 1.
Durch Umschreiben erhalten wir
kpi − p1 p2 · · · pr = 1
und durch Ausklammern von pi
(k − p1 p2 · · · 6 pi · · · pr )pi = 1,
was wiederum nach der Definition der Teilbarkeit bedeutet pi |1. Dies ist
jedoch nicht möglich, da jede Primzahl größer als 1 ist. 3.3
Der Fundamentalsatz der elementaren Zahlentheorie
Definition 3.7 (Primfaktor)
p ∈ N heißt Primfaktor von a ∈ N0 , wenn p|a und p Primzahl ist.
3
TEILBARKEIT, PRIMZAHLEN UND PRIMFAKTORZERLEGUNG
8
Beispiel 3.8
Die Primfaktoren von 18 sind 2 und 3.
6 ist kein Primfaktor von 18 weil 6 keine Primzahl ist.
5 ist kein Primfaktor von 18 weil 56 | 18.
Definition 3.9 (Primfaktorzerlegung)
Eine Folge von Primzahlen p1 , p2 , . . . , pk heißt Primfaktorzerlegung von
a wenn
a = p1 p2 · · · pk .
Beispiel 3.10
Eine Primfaktorzerlegungen von a = 28 ist 2, 2, 7, eine andere ist 2, 7, 2, und noch eine ist 7, 2, 2. Das nächste Theorem sagt, daß es
keine weiteren Primfaktorzerlegungen von a gibt.
Aufgabe. Berechnen Sie eine Primfaktorzerlegung von 21. Wie sieht die Primfaktorzerlegung von 2110 aus?
Lösung. Eine Primfaktorzerlegung von 21 ist 3, 7, denn 3 × 7 = 21. Eine
Primfaktorzerlegung von 2110 erhält man z.B. indem man die Zerlegung
von 21 einfach 10 mal hintereinander schreibt.
Aufgabe. Berechnen Sie eine Primfaktorzerlegung von 1683286822654 mit
Maple. Verwenden Sie dazu die Maple Funktion ifactor.
Lösung. Eine Primfaktorzerlegung von 1683286822654 ist
2, 43, 73, 73, 89, 41269.
Theorem 3.11 (Fundamentalsatz der elementaren Zahlentheorie)
Jede natürliche Zahl n ≥ 2 besitzt eine Primfaktorzerlegung. Abgesehen
von der Reihenfolge der Faktoren ist diese Zerlegung eindeutig.
Beweis. Das Theorem macht aus zwei Aussagen: Die Existenz einer Primfaktorzerlegung und deren Eindeutigkeit.
• Existenz. Der Existenzbeweis wird mit vollständiger Induktion
durchgeführt.
– Induktionsanfang. Der Induktionsanfang für n = 2 ist sofort klar,
da 2 die triviale Primfaktorzerlegung 2 besitzt.
– Induktionshypothese. Wir nehmen an, daß für jedes ` mit 2 ≤
` ≤ n eine Primfaktorzerlegung existiert.
– Induktionsschritt. Zu zeigen ist, daß auch für n + 1 eine Primfaktorzerlegung existiert. Dies trifft sicher zu, falls n + 1 eine
Primzahl ist. Andernfalls muß es zwei Zahlen 1 < p, q < n + 1
geben so daß pq = n + 1. Aufgrund der Induktionshypothese
haben p und q Primfaktorzerlegungen
p
=
p1 , p2 , · · · , pk
q
=
q1 , q2 , · · · , qm ,
3
TEILBARKEIT, PRIMZAHLEN UND PRIMFAKTORZERLEGUNG
9
womit n + 1 die Primfaktorzerlegung
n = p1 , p2 , . . . , pk q1 , q2 , . . . , qm
hat.
• Eindeutigkeit. Der Eindeutigkeitsbeweis ist ein Widerspruchsbeweis. Angenommen, es würde Zahlen geben, die zwei verschiedene
Zerlegungen zulassen und N sei die kleinste Zahl mit dieser Eigenschaft. Hat N die beiden Primfaktorzerlegungen
N = p1 p2 · · · pr = q1 q2 · · · qs
so gilt pi 6= qj für alle i, j, denn ein gemeinsamer Primteiler beider
Darstellungen würde N teilen und eine ganze Zahl N 0 < N liefern
mit der selben Eigenschaft, was im Widerspruch zur Minimalität von
N steht.
Ist o.B.d.A. p1 < q1 , so definieren wir die neue Zahl
Q = p1 q2 q3 · · · qm .
Dann gilt p1 |Q und p1 |N und damit p1 |(N − Q) nach Theorem 3.3.
Daher besitzt N − Q eine eindeutige Primfaktorzerlegung
N − Q = p1 t1 t2 · · · th .
Außerdem können wir N − Q schreiben als
N − Q = (q1 − p1 )q2 q3 · · · qm .
Sei nun r1 r2 . . . rs so, daß
q1 − p1 = r1 r2 . . . rs .
Falls q1 − p1 > 1, seien die ri prim, andernfalls ist s = 1 und r1 = 1.
Damit haben wir zwei Primfaktorzerlegungen von N − Q:
N − Q = p1 t1 t2 · · · th = r1 r2 . . . rs q2 q3 · · · qm .
Wir zeigen nun, daß diese beiden Zerlegungen unterschiedlich sind.
Zunächst zeigen wir, daß p1 6= ri für alle i. Dies folgt daraus, daß
p1 6 |q1 − p1 , denn aus q1 − p1 = ap1 würde folgen q1 = (a + 1)p1 , was
der Annahme widerspricht, daß q1 prim ist. Da also p1 6 |r1 r2 · · · rs ,
gilt p1 6= ri für alle i.
Weiterhin gilt p1 6= qj für alle j, daher enthält die erste Primfaktorzerlegung den Faktor p1 , die zweite aber nicht und somit sind die
beiden Primfaktorzerlegungen von N − Q unterschiedlich. Dies steht
aber im Widerspruch zur angenommenen Minimalität von N . Im Folgenden sei p1 , p2 , p3 , . . . mit pi < pi+1 die Folge aller Primzahlen, d.h.
p1 = 2, p2 = 3, p3 = 5, . . ..
3
TEILBARKEIT, PRIMZAHLEN UND PRIMFAKTORZERLEGUNG
10
Theorem 3.12 (Eindeutige Primexponentenfolge)
Zu jeder Zahl a ∈ N gibt es eine eindeutige Folge a1 , a2 , a3 , . . . so daß
a = pa1 1 pa2 2 pa3 3 . . . .
Diese Folge nennt man Primexponentenfolge von a und bezeichnet sie
mit π(a).
Beweis. Folgt unmittelbar aus dem Fundamentalsatz (Theorem 3.11). Beispiel 3.13
Sei a = 198. Eine Primfaktorzerlegung von a ist 2, 3, 3, 11.
Daraus folgt
a = 21 × 32 × 50 × 70 × 111 .
Die Primexponentenfolge von a ist also
π(a) = 1, 2, 0, 0, 1, 0, 0, . . . .
Beachten Sie, daß die Primexponentenfolge von 0 nicht definiert ist! Offensichtlich sind Primexponentenfolgen immer endlich, d.h. konstant Null ab einem
bestimmten Index.
Aufgabe. Berechnen Sie die Primexponentenfolgen von 7,8,9,10 und 11.
Lösung.
π(7)
=
0, 0, 0, 1, 0, . . .
π(8)
=
4, 0, . . .
π(9)
=
0, 2, 0, . . .
π(10)
=
1, 0, 1, 0, . . .
π(11)
=
0, 0, 0, 0, 1, 0, . . .
Aufgabe. Zeigen Sie, daß die Abbildung π ∈ N → N∗0 bijektiv ist. Als Konsequenz folgt eine Tatsache, die zunächst alles andere als offensichtlich ist:
N∗0 ist abzählbar!
Lösung. Zu zeigen ist, daß π ∈ N → N∗0 injektiv und surjektiv ist.
• Surjektivität. Zu zeigen ist, daß es zu jeder endlichen Folge a1 , a2 , . . . ∈
N∗0 eine Zahl a ∈ N gibt mit π(a) = a1 , a2 , . . .. Diese Zahl a ist offensichtlich a = pa1 1 pa2 2 · · · .
• Injektivität. Zu zeigen ist, daß wenn a 6= b dann auch π(a) 6= π(b).
Nehmen wir also an, daß a 6= b, aber π(a) = π(b). Sei x1 , x2 , . . . =
π(a) = π(b). Dann ist a = px1 1 px2 2 . . . = b, was ein Widerspruch zur
Annahme ist.
Da es zu jeder Zahl in N genau eine Primexponentenfolge in N∗0 gibt, kann
man auch von der Darstellung einer natürlichen Zahl entweder als Folge ihrer
Dezimalstellen oder als Folge ihrer Primexponenten sprechen. Je nachdem, was
man machen möchte ist die eine oder die andere Darstellung geschickter. Im
3
TEILBARKEIT, PRIMZAHLEN UND PRIMFAKTORZERLEGUNG
11
Folgenden zeigen wir, daß z.B. die Multiplikation und der Test auf Teilbarkeit
von natürlichen Zahlen viel einfacher ist wenn die Zahlen durch ihre Primexponentenfolgen dargestellt sind.
Definition 3.14 (Komponentenweise Addition +∗ von Folgen)
Die komponentenweise Addition +∗ von Folgen ist definiert durch
a1 , a2 , . . . +∗ b1 , b2 , . . . = a1 + b1 , a2 + b2 , . . .
Theorem 3.15
Für a, b 6= 0 gilt
π(ab) = π(a) +∗ π(b).
Beweis. Sei π(a) = a1 , a2 , . . . und π(b) = b1 , b2 , . . .. Dann ist
= pa1 1 pa2 2 . . . pb11 pb22 . . .
ab
= pa1 1 +b1 pa2 2 +b2 . . .
und somit
π(ab)
= a1 + b1 , a2 + b2 , . . .
= π(a) +∗ π(b). Daraus folgt, daß π ∈ (N, ×, 1) → (N∗ , +∗ , (0, 0, . . .)) ein Monoid Isomorphismus ist, was sich wie üblich anschaulich durch ein kommutatives Diagramm
darstellen läßt:
×
N −−−−→ N



π
πy
y
N∗ −−−−
→ N∗
∗
+
Aufgabe. Gegeben seien zwei Zahlen a = 15895 und b = 17150 mit Primexponentenfolgen
π(a)
=
0, 0, 1, 0, 1, 0, 2, 0, . . .
π(b)
=
1, 0, 2, 3, 0, . . .
Berechnen Sie ohne Hilfsmittel das Produkt von a und b in Dezimaldarstellung und in der Primexponentendarstellung. Was ging schneller?
Lösung.
• Produkt in Dezimaldarstellung: a × b = 272599250. Die Berechnung
erfordert 25 Ziffernmultiplikationen und etwa ebenso viele Additionen.
• Produkt in Primexponentendarstellung:
π(a) +∗ π(b) = 1, 0, 3, 3, 1, 0, 2, 0, . . . .
Die Berechnung kostet nur 4 Ziffernadditionen und ist damit viel
schneller.
3
TEILBARKEIT, PRIMZAHLEN UND PRIMFAKTORZERLEGUNG
12
Eine weitere Eigenschaft der Primexponentenfolgen stellt einen Zusammenhang zwischen der Teilbarkeitsrelation in N und der komponentenweise ≤ Relation auf N∗0 her:
Definition 3.16 (≤∗ Relation auf Folgen)
Die ≤∗ Relation auf Folgen ist definiert durch
a1 , a2 , . . . ≤∗ b1 , b2 , . . .
genau dann wenn
a1 ≤ b1 und a2 ≤ b2 und . . .
Theorem 3.17
a|b genau dann wenn π(a) ≤∗ π(b).
Beweis. Sei wiederum π(a) = a1 , a2 , . . . und π(b) = b1 , b2 , . . .. Wie bei jedem
“genau dann wenn” Theorem, sind zwei Richtungen zu beweisen:
• Zu zeigen: Wenn a|b dann gilt ai ≤ bi für alle i. Nehmen wir also an
a|b. Dann gibt es ein k so daß ak = b. Sei k1 , k2 , . . . die Primexponentenfolge von k. Aus Theorem 3.15 folgt ai + ki = bi für alle i, und
somit ai ≤ bi .
• Zu zeigen: Wenn ai ≤ bi für alle i dann gilt a|b. Nehmen wir also an
ai ≤ bi für alle i. Sei ki = bi − ai und k = pk11 pk22 . . .. Dann gilt ak = b
und somit a|b. Unter Anwendung von Theorem 3.17 ist es sehr einfach, Primexponentenfolgen aller Teiler einer Zahl zu bestimmen, deren Primexponentenfolge gegeben
ist.
Beispiel 3.18
Sei a = 3 × 52 = 75. Dann hat a die Primexponentenfolge
0, 1, 2, 0, 0, . . . .
Die Primexponentenfolgen aller Teiler von a lassen sich mit Hilfe von
Theorem 3.17 sofort hinschreiben:
0, 0, 0, 0, 0, . . . → 1
0, 1, 0, 0, 0, . . . → 31 = 3
0, 0, 1, 0, 0, . . . → 51 = 5
0, 1, 1, 0, 0, . . . →
31 × 51 = 15
0, 0, 2, 0, 0, . . . →
52 = 25
0, 1, 2, 0, 0, . . . →
31 × 52 = 75
Aufgabe. Benutzen Sie Theorem 3.17 um eine Formel für die Anzahl der
Teiler einer Zahl a aus deren Primexponentenfolge herzuleiten. Prüfen Sie
die Formel anhand einiger Beispiele.
Lösung. Sei π(a) = a1 , a2 , . . . die Primexponentenfolge von a. Die Primexponentenfolgen der Teiler von a sind genau die Folgen, die komponentenweise
3
TEILBARKEIT, PRIMZAHLEN UND PRIMFAKTORZERLEGUNG
13
kleiner gleich sind als π(a). Für das erste Element einer solchen Folge hat
man a1 + 1 Möglichkeiten (0,1,. . . , a1 ), für das zweite Element hat man
a2 + 1 Möglichkeiten (0,1,. . . , a2 ) usw. Also gibt es insgesamt
n = (1 + a1 )(1 + a2 ) · · ·
Primexponentenfolgen, die komponentenweise kleiner gleich π(a) sind und
daher n Teiler von a.
Sei z.B. a = 75 mit π(a) = 0, 1, 2, 0, . . ., d.h a1 = 0, a2 = 1, a3 = 2,
a4 = 0, . . .. Dann ist
(a1 + 1)(a2 + 1)(a3 + 1) · · ·
=
1 × 2 × 3 × 1 × ...
=
6
und in der Tat hat a genau 6 Teiler 1, 3, 5, 15, 25, 75.
Nicht nur Multiplizieren und Test auf Teilbarkeit ist mit Primexponentenfolgen leichter. Manche Eigenschaften lassen sich auch viel schneller einsehen
und beweisen wenn man in Primexponentenfolgen denkt.
Theorem 3.19 (Fundamentallemma, Euklid)
Ist p eine Primzahl und p|ab, dann gilt p|a oder p|b.
Beweis. Sei i der Index der Primzahl p in der Folge aller Primzahlen p1 , p2 , . . .,
d.h. p = pi . Die Primexponentenfolge von pi ist daher
0, 0, 0, . . . , 0, 1, 0, 0, 0, . . .
mit der 1 an der i-ten Stelle. Angenommen p|ab, dann folgt aus Theorem
3.17 daß 1 ≤ ai + bi . Das bedeutet 1 ≤ ai oder 1 ≤ bi . Nochmalige
Anwendung von Theorem 3.17 (diesmal in der anderen Richtung) ergibt
pi |a oder pi |b. Beispiel 3.20
Das folgende Beispiel zeigt, daß das Fundamentallemma nur
für Primzahlen p gilt: Es gilt zwar 6|8 × 9 aber 6 teilt weder 8 noch 9.
3.4
Noch zwei Kuriositäten
Zum Abschluß dieses Kapitels noch zwei Beispiele von ungelösten Problemen
im Zusammenhang mit Primzahlen:
Beispiel 3.21 Primzahlzwillingsproblem Ein Paar (p, q) wird Primzahlzwilling genannt, falls q und p Primzahlen sind und q = p + 2, also z.B.
(3, 5), (5, 7), (11, 13), (29, 31), usw. So einfach man zeigen konnte, daß
es unendlich viele Primzahlen gibt, so schwer scheint der Nachweis von
unendlich vielen Primzahlzwillingen zu sein. Bisher konnte weder die Existenz noch die Nichtexistenz bewiesen werden.
Aufgabe. Schreiben Sie ein Maple Programm, das alle Primzahlzwillinge aufzählt.
Für den Test, ob eine Zahl prim ist verwenden Sie die Maple Funktion
isprime.
3
TEILBARKEIT, PRIMZAHLEN UND PRIMFAKTORZERLEGUNG
14
Beispiel 3.22 Goldbachsche Vermutung, 1742 Es scheint so, als ließe sich
jede gerade Zahl ≥ 6 als Summe zweier ungerader Primzahlen darstellen.
Also z.B. 6 = 3+3, 8 = 3+5, 10 = 5+5, 12 = 7+5, usw. Diese Vermutung,
die Goldbach 1742 in einem Briefwechsel mit Euler geäußert hat, ist bis
heute weder bewiesen noch widerlegt worden.
Aufgabe. Schreiben Sie ein Maple Programm, das nach einem Gegenbeispiel
zur Goldbach’schen Vermutung sucht.
4
4
DIVISION MIT REST
15
Division mit Rest
Die Division zweier natürlicher Zahlen geht meistens nicht auf, d.h. es bleibt ein
Rest. So lernt man in der Grundschule, daß z.B.
“13 geteilt durch 5 gleich 2 Rest 3.”
In diesem Kapitel werden wir die Eigenschaften der ganzzahligen Division mit
Rest genauer untersuchen und ein paar wichtige Eigenschaften kennen lernen.
Theorem 4.1 (Division mit Rest)
Für beliebiges a ∈ N0 , b ∈ N existieren genau zwei Zahlen q, r ∈ N0
(Quotient, Rest) so daß
a = qb + r und 0 ≤ r < b.
Beweis. Sei a ∈ N0 und b ∈ N beliebig. Zu zeigen ist, daß es ein q, r gibt, das
a = qb + r und 0 ≤ r < b.
erfüllt (Existenz) und daß es genau ein q, r mit dieser Eigenschaft gibt
(Eindeutigkeit).
• Existenz. Sei q die größte Zahl so daß qb ≤ a und sei r = a−qb. Dann
ist a = qb + r und 0 ≤ r. Bleibt zu zeigen, daß r < b. Angenommen
r ≥ b, dann wäre (q + b)b ≤ a, was im Widerspruch zur Definition
von q steht.
• Eindeutigkeit. Angenommen es gäbe eine weitere Darstellung a =
q 0 b + r0 mit 0 ≤ r0 < b. Sei o.B.d.A. r ≥ r0 . Dann folgt
b(q 0 − q) = r − r0
und somit wäre r − r0 durch b teilbar. Da aber r − r0 < b, ist das nur
möglich, wenn r − r0 = 0, woraus sich r = r0 und damit auch q = q 0
ergibt. Definition 4.2 (div,mod)
Da für beliebiges a ∈ N0 und b ∈ N gemäß Theorem 4.1 genau ein
q, r ∈ N0 existiert mit
a = qb + r und 0 ≤ r < b
können wir die Funktionen
div ∈ N0 × N → N0
mod ∈ N0 × N → N0
definieren durch:
q
= a div b
r
= a mod b.
4
DIVISION MIT REST
16
Beispiel 4.3
13 div 5 = 2, 13 mod 5 = 3
9 div 3 = 3, 9 mod 3 = 0
2 div 8 = 0, 2 mod 8 = 2
Zum Abschluß des Kapitels noch eine sehr nützliche Eigenschaft der mod
Funktion.
Theorem 4.4
Für alle a ∈ N0 , b ∈ N und k ∈ Z mit k ≤ a div b gilt
a mod b = (a − kb) mod b.
Beweis. Sei
q
= a div b
r
= a mod b.
Dann ist
a = qb + r und 0 ≤ r < b.
Für beliebiges k ∈ Z ist daher
a − kb = (q − k)b + r und 0 ≤ r < b.
Ist k ≤ q, dann ist q − k ≥ 0 und a − kb ≥ 0, d.h.
(a − kb) mod b = r. Damit läßt sich die Berechnung der mod Funktion wie folgt vereinfachen:
Merkregel 4.5 (Berechnung von a mod b)
• Ist a > b so läßt sich die Berechnung von a mod b vereinfachen,
indem man a um b verkleinert: (a − b) mod b.
• Ist a < b so ist a mod b = a.
• Ist a = b so ist a mod b = 0.
5
5
GRÖßTER GEMEINSAMER TEILER
17
Größter gemeinsamer Teiler
Definition 5.1 (Gemeinsamer Teiler)
d heißt gemeinsamer Teiler von a und b wenn d|a und d|b.
Offensichtlich haben zwei beliebige Zahlen immer den gemeinsamen Teiler 1.
Sei im folgenden wieder p1 , p2 , p3 , . . . mit pi < pi+1 die Folge aller Primzahlen
und a1 , a2 , a3 . . ., b1 , b2 , b3 , . . . und d1 , d2 , d3 , . . . die Primexponentenfolgen von
a, b und d.
Theorem 5.2 (Gemeinsamer Teiler und Primexponenten)
d ∈ N ist ein gemeinsamer Teiler von zwei Zahlen a, b ∈ N genau dann
wenn
di ≤ min(ai , bi )
für alle i.
Beweis. Folgt direkt aus Theorem 3.17. Das heißt insbesondere, daß a und b nur endlich viele gemeinsame Teiler
haben, falls nicht beide gleich Null sind. Daher gibt es in diesem Fall immer
einen größten gemeinsamen Teiler.
Definition 5.3 (Größter gemeinsamer Teiler (ggt))
Sind a und b nicht beide gleich Null, so bezeichnet ggt(a, b) den größten
gemeinsamen Teiler von a und b. Ist ggt(a, b) = 1 so heißen a und b
teilerfremd oder auch relativ prim.
Theorem 5.4 (ggt und Primexponenten)
Sind a und b ungleich Null mit Primexponentenfolgen ai und bi ,
i = 1, 2, . . . so ist die Primexponentenfolge von ggt(a, b) gegeben durch
min{ai , bi }, i = 1, 2, . . .. Der größte gemeinsame Teiler von a und b ist
folglich
min(a1 ,b1 ) min(a2 ,b2 )
ggt(a, b) = p1
p2
....
Beweis. Folgt aus Theorem 5.2. Theorem 5.4 läßt sich in folgender Merkregel formulieren:
Merkregel 5.5
Der ggt von a und b ist das Produkt der gemeinsamen Primfaktoren von
a und b.
Die ggt Berechnung läßt sich vereinfachen, wenn man schon einen gemeinsamen Faktor der Argumente kennt und diesen vor die ggt Berechnung zieht.
Beispiel 5.6
ggt(40, 50) = 10 × ggt(4, 5).
5
GRÖßTER GEMEINSAMER TEILER
18
Theorem 5.7
Für jedes m ∈ N gilt
ggt(ma, mb) = mggt(a, b).
Beweis. Folgt aus Theorem 3.15 und 5.4. Aufgabe. Zeigen Sie, daß für jedes m ∈ N die Multiplikation mit m ein Morphismus (N, ggt) → (N, ggt) ist und zeichnen Sie ein entsprechendes kommutatives Diagramm.
Lösung. Folgt direkt aus Theorem 5.7.
ggt
N −−−−→


×my
N

×m
y
N −−−−→ N
ggt
Theorem 5.8
Ist m ein gemeinsamer Teiler von a und b, so ist m auch ein Teiler von
ggt(a, b).
Beweis. Angenommen m ist ein gemeinsamer Teiler von a und b. Dann existieren a0 , b0 so daß ma0 = a, mb0 = b. Aus Theorem 5.7 folgt daß
ggt(a, b)
=
ggt(ma0 , mb0 )
=
mggt(a0 , b0 )
d.h. m ist ein Teiler von ggt(a, b). Um den ggt von a und b zu berechnen, kann man natürlich Theorem 5.4
benutzen. Der Haken dabei ist allerdings, daß man dafür erst die Primfaktorzerlegung von a und b berechnen muß und das ist für große Werte von a und
b sehr aufwendig. Im Folgenden werden wir einen viel schnelleren Weg kennen
lernen, den berühmten Euklidischen Algorithmus.
5.1
Euklidischer Algorithmus
Das folgende Theorem ist der eigentliche Schlüssel zur schnellen Berechnung des
größten gemeinsamen Teilers mit dem Euklidischen Algorithmus.
Theorem 5.9 (Euklidischer Algorithmus)
Für beliebiges a ∈ N0 und b ∈ N gilt
ggt(a, b) = ggt(a mod b, b).
Ist also der ggt von a und b zu berechnen, und o.B.d.A. a > b, so läßt
sich dies nach Theorem 5.9 durch eine ggt Berechnung mit den kleineren Argumenten a mod b und b durchführen. Dies legt einen iterativen Algorithmus
5
GRÖßTER GEMEINSAMER TEILER
19
zur ggt Berechnung nahe, bei dem die Argumente immer kleiner werden bis
schließlich eines der beiden Null ist und der ggt dann durch das andere gegeben
ist. Dieses Vorgehen ist viel schneller als die Primfaktorzerlegung von a und b.
Doch zunächst der Beweis von Theorem 5.9.
Beweis. Sei
g
=
ggt(a, b)
0
=
ggt(a mod b, b)
g
Wir müssen zeigen, daß g = g 0 . Dies bewerkstelligen wir, indem wir zeigen,
daß g|g 0 und g 0 |g, woraus natürlich unmittelbar g = g 0 folgt. Vorab legen
wir noch fest, daß q = a div b, d.h. a mod b = a − qb.
• Zeigen wir also zunächst g|g 0 . Unter Zuhilfenahme von Theorem 5.8
genügt es zu zeigen, daß g|a mod b und g|b. Aus g = ggt(a, b) folgt
sofort g|b, d.h. es bleibt g|a mod b zu zeigen. Da g = ggt(a, b) gibt es
Zahlen α und β so daß
αg
= a
βg
= b
Damit haben wir alles zusammen was wir brauchen:
= a − qb
a mod b
= αg − qβg
(α − qβ)g
=
und somit folgt g|a mod b.
• Zeigen wir nun g 0 |g. Unter Zuhilfenahme von Theorem 5.8 genügt es
wiederum zu zeigen, daß g 0 |a und g 0 |b. Aus g 0 = ggt(a mod b, b) folgt
sofort g 0 |b, d.h. es bleibt g 0 |a zu zeigen. Da g 0 = ggt(a mod b, b) gibt
es Zahlen γ und β so daß
γg 0
=
a mod b
βg 0
=
b
Damit können wir schreiben
γg 0
0
0
γg + qβg
(γ + qβ)g 0
=
a mod b
=
a − qb
=
a − qβg 0
=
=
a
a,
und somit folgt g 0 |a. Nachdem die Formalitäten erledigt sind, können wir nun den Euklidischen Algorithmus zur Berechnung des ggt formulieren. Hierzu zunächst ein Beispiel.
5
GRÖßTER GEMEINSAMER TEILER
Beispiel 5.10
20
Angenommen wir möchten
ggt(189, 48)
berechnen. Nach Theorem 5.9 gilt
ggt(189, 48) = ggt(189 mod 48, 48) = ggt(45, 48).
Bevor wir Theorem 5.9 erneut anwenden, vertauschen wir die beiden Argumente, um sicherzustellen, daß das erste Argument das größere ist.
ggt(45, 48) = ggt(48, 45).
Nun geht’s weiter mit Theorem 5.9:
ggt(48, 45) = ggt(48 mod 45, 45) = ggt(3, 45).
Wieder vertauschen wir die beiden Argumente:
ggt(3, 45) = ggt(45, 3)
und wenden Theorem 5.9 an:
ggt(45, 3) = ggt(45 mod 3, 3) = ggt(0, 3).
Da nun eins der ggt Argumente Null ist, bricht der Algorithmus ab und
der ggt ist das andere Argument, nämlich 3.
Dieses Verfahren läßt sich kompakt wie folgt formulieren:
Euklidischer Algorithmus zur Berechnung
des größten gemeinsamen Teilers
Input:
Output:
a ∈ N0 , b ∈ N.
ggt(a, b).
x0 = a
x1 = b
i=1
while xi 6= 0
xi+1 = xi−1 mod xi
i=i+1
return xi−1 .
Um uns zu vergewissern, daß der Euklidische Algorithmus auch wirklich
funktioniert, rechnen wir ein Beispiel durch.
Beispiel 5.11
Wir rufen den Euklidischen Algorithmus mit den Inputs a =
149 und b = 45 auf.
i
0
1
2
3
4
5
6
xi
149 mod 45
45 mod 14
14 mod 3
3 mod 2
2 mod 1
=
=
=
=
=
149
45
14
3
2
1
0
5
GRÖßTER GEMEINSAMER TEILER
21
Damit erhalten wir den Output x5 = 1, was in der Tat ggt(149, 45) ist.
Aufgabe. Zeigen Sie, daß der Euklidische Algorithmus terminiert. Hinweis:
Zeigen Sie, daß die Folge x1 , x2 , . . . streng monoton fällt.
Aufgabe. Implementieren Sie den Euklidischen Algorithmus in Maple.
5.2
Erweiterter Euklidischer Algorithmus
Zum Abschluß dieses Kapitels noch eine ganz wichtige Eigenschaft des ggt’s:
Theorem 5.12
Für beliebige a, b (nicht beide gleich Null) gibt es ganze Zahlen α, β ∈ Z
so daß
ggt(a, b) = αa + βb.
Die ganzen Zahlen α und β werden auch Kofaktoren des ggt’s genannt.
Hierzu zunächst ein Beispiel.
Beispiel 5.13
ggt(10, 4)
=
2
=
1 × 10 − 2 × 4
Beweis. Seien a, b beliebig und o.B.d.A. b 6= 0. Sei x0 , x1 , . . . , xn mit xn−1 =
ggt(a, b) und xn = 0 die vom Euklidischen Algorithmus generierte Zahlenfolge. Wir zeigen nun, daß es für alle i = 0, 1, . . . , n ein αi , βi ∈ Z gibt, so
daß
xi = αi a + βi b.
(5.1)
Insbesondere für den Spezialfall i = n − 1 sind dann die Kofaktoren
xn−1 = ggt(a, b) = αn−1 a + βn−1 b
gefunden.
Für i = 0 wählt man α0 = 1 und β1 = 0. Für i = 1 wählt man α0 = 0
und β1 = 1. Angenommen wir haben αi und βi für i = 1, 2, . . . , k < n
gefunden, die (5.1) erfüllen. Bleibt zu zeigen, daß es auch αk+1 und βk+1
gibt, welche (5.1) für i = k + 1 erfüllt. Da
xk+1 = xk−1 mod xk ,
gibt es ein qk+1 so daß
xk+1 = xk−1 − qk+1 xk .
Folglich gilt
xk+1
= xk−1 mod xk
= xk−1 − qk+1 xk
=
αk−1 a + βk−1 b − qk+1 (αk a + βk b)
=
(αk−1 − qk+1 αk )a + (βk−1 − qk+1 βk )b,
5
GRÖßTER GEMEINSAMER TEILER
22
d.h. mit
αk+1
= αk−1 − qk αk
βk+1
= βk−1 − qk βk
ist (5.1) für i = k + 1 erfüllt. Der Beweis von Theorem 5.12 ist konstruktiv, d.h. er zeigt uns, wie man α
und β tatsächlich für gegebene a, b berechnen kann. Dies wird kompakt in dem
folgenden Algorithmus, der auch erweiterter Euklidischer Algorithmus genannt
wird, formuliert.
Erweiterter Euklidischer Algorithmus zur
Berechnung des ggt’s und der Kofaktoren
a ∈ N0 , b ∈ N.
ggt(a, b) und α, β ∈ Z so daß ggt(a, b) = αa + βb
Input:
Output:
x0 = a, α0 = 1, β0 = 0
x1 = b, α1 = 0, β1 = 1
i=1
while xi 6= 0
xi+1 = xi−1 mod xi
qi+1 = xi−1 div xi
αi+1 = αi−1 − qi+1 αi
βi+1 = βi−1 − qi+1 βi
i=i+1
return xi−1 , αi−1 , βi−1 .
Beispiel 5.14
Wir rufen den erweiterten Euklidischen Algorithmus mit den
Inputs a = 149 und b = 45 auf.
i
xi
0
1
2
3
4
5
6
149
45
149 mod 45 = 14
45 mod 14 = 3
14 mod 3 = 2
3 mod 2 = 1
2 mod 1 = 0
qi
αi
βi
149 div 45 = 3
45 div 14 = 3
14 div 3 = 4
3 div 2 = 1
2 div 1 = 2
1
0
1−3×0=1
0 − 3 × 1 = −3
1 − 4 × −3 = 13
−3 − 1 × 13 = −16
13 − 2 × −16 = 45
0
1
0 − 3 × 1 = −3
1 − 3 × −3 = 10
−3 − 4 × 10 = −43
10 − 1 × −43 = 53
−43 − 2 × 53 = −149
Damit erhalten wir den Output x5 = 1, was in der Tat ggt(149, 45) ist.
Man überzeugt sich auch leicht, daß die Schleifeninvariante
xi = αi × 149 + βi × 45
für alle i gültig ist.
Aufgabe. Berechnen Sie ggt und Kofaktoren der Zahlenpaare (76,28), (105,21),
(82,74) mit dem erweiterten Euklidischen Algorithmus von Hand und
prüfen Sie die Schleifeninvariante. Implementieren Sie den Algorithmus
in Maple und prüfen Sie ihre Ergebnisse.
6
KONGRUENZ UND ARITHMETIK MODULO M
6
6.1
23
Kongruenz und Arithmetik modulo m
Rechenregeln modulo m
Angenommen wir müssen einen arithmetischen Ausdruck auswerten, bei dem
große Zwischenergebnisse auftreten, interessieren uns aber nur für das Ergebnis
modulo m, wobei m eine kleine Zahl ist. Man kann sich nun fragen, ob man nicht
die modulo m Operation nicht “vorziehen” kann, um den hohen Rechenaufwand,
der mit den großen Zwischenergebnissen verbunden ist, zu vermeiden.
Beispiel 6.1
Angenommen, wir möchten
(18 × 29 × 32) mod 5
berechnen. Dies kann man tun, indem man zuerst 18, 29 und 32 multipliziert, und das Ergebnis modulo 5 berechnet. Man erhält
(18 × 29 × 32) mod 5 = 16704 mod 5 = 4.
Die Berechnung des großen Zwischenergebnisses 16704 war hierbei ziemlich anstrengend und in Anbetracht des kleinen Endergebnisses 4 scheint
der Aufwand nicht wirklich gerechtfertigt. Wie wir in diesem Kapitel sehen werden, läßt sich dieser vermeiden, indem wir die modulo 5 Operation bereits auf die Operanden anwenden. Wir berechnen also zuerst
18 mod 5 = 3, 29 mod 5 = 4 und 32 mod 5 = 2 und erhalten
(3 × 4 × 2) mod 5 = 24 mod 5 = 4.
Das größte Zwischenergebnis in diesem Fall ist 24. Man kann sogar noch
einen Schritt weitergehen und zuerst
(3 × 4) mod 5 = 12 mod 5 = 2
berechnen und dann
(2 × 2) mod 5 = 4.
In diesem Fall war das größte Zwischenergebnis sogar nur 12. Zusammenfassend haben wir also gesehen, daß
(18 × 29 × 32) mod 5 =
(18 mod 5) × (29 mod 5) mod 5 × (32 mod 5) mod 5,
wobei die rechte Seite viel einfacher zu berechnen ist als die linke.
Theorem 6.2 (Rechenregeln modulo m)
(1) (a + b) mod m
(2) (a + b) mod m
(3) (a × b) mod m
(4) (a × b) mod m
Beweis. Sei q = a div m.
= ((a mod m) + b) mod m
= (a + (b mod m)) mod m
= ((a mod m) × b) mod m
= (a × (b mod m)) mod m
6
KONGRUENZ UND ARITHMETIK MODULO M
24
(1) Nach Theorem 4.4 gilt
(a + b) mod m
=
(a + b − qm) mod m
=
((a mod m) + b) mod m.
(2) Folgt aus (1) und der Kommutativität von +.
(3) Nach Theorem 4.4 gilt
(a × b) mod m
=
(a × b − bqm) mod m
=
((a − qm) × b) mod m
(4) Folgt aus (3) und der Kommutativität von ×. Merkregel 6.3 (Rechnen modulo m)
Bei der Auswertung eines arithmetischen Ausdrucks modulo m kann man
die modulo m Funktion beliebig auf Zwischenergebnisse anwenden oder
weglassen.
Aufgabe. Berechnen Sie (1320 ) mod 3 ohne Verwendung von Hilfsmitteln.
Lösung. Unter Verwendung der Rechenregeln mod m (Theorem 6.2) kann man
schreiben
1320 mod 3
6.2
=
(13 × 13 × · · · × 13) mod 3
=
((13 mod 3) × (13 mod 3) × · · · × (13 mod 3)) mod 3
=
(1 × 1 × · · · × 1) mod 3
=
1
Kongruenz modulo m
Definition 6.4 (Kongruenz modulo m)
Für jedes m > 0 ist die Relation
≡m ⊆ N 0 × N 0
definiert durch
a ≡m b
genau dann wenn
a mod m = b mod m.
Wenn a ≡m b sagt man “a ist kongruent zu b modulo m”. Anders ausgedrückt ist a ≡m b genau dann, wenn sich a und b nur um ein Vielfaches von m
unterscheiden bzw. den selben Rest bei der Division durch m haben.
Beispiel 6.5
≡3
8
16 ≡7
2
4
≡4
0
5
≡2
9
7
6≡2
4
4
6≡8
3
5
6
KONGRUENZ UND ARITHMETIK MODULO M
25
• Die zu 4 kongruenten Zahlen modulo 5 sind 4, 9, 14, 19, 24, . . ..
• Die zu 0 kongruenten Zahlen modulo 6 sind 0, 6, 12, 18, . . ..
• Die zu 1 kongruenten Zahlen modulo 2 sind die ungeraden Zahlen,
während die zu 0 kongruenten Zahlen modulo 2 die geraden Zahlen
sind.
Theorem 6.6
Für jedes m > 0 ist ≡m eine Äquivalenzrelation.
Beweis. Sei m > 0 und a, b, c ∈ N0 beliebig.
• Reflexivität. Zu zeigen ist a ≡m a. Aufgrund der Reflexivität von =
ist a mod m = a mod m und somit a ≡m a.
• Symmetrie. Zu zeigen ist wenn a ≡m b, dann auch b ≡m a. Nehmen
wir also an a ≡m b. Dann ist
a mod m = b mod m
und aus der Symmetrie von = folgt
b mod m = a mod m,
d.h. b ≡m a.
• Transitivität. Zu zeigen ist wenn a ≡m b und b ≡m c dann auch
a ≡m c. Nehmen wir also an a ≡m b und b ≡m c. Dann ist
a mod m = b mod m
und b mod m = c mod m.
Aus der Transitivität von = folgt
a mod m = c mod m,
d.h. a ≡m c.
Die Tatsache, daß ≡m eine Äquivalenzrelation ist, folgt also unmittelbar
daraus, daß = eine Äquivalenzrelation ist. Die Äquivalenzklassen von ≡3 sind
Beispiel 6.7
{0, 3, 6, 9, . . .}, {1, 4, 7, 10, . . .}, {2, 5, 8, 11, . . .}
Wie man anhand von Beispiel 6.7 sieht, hat die Äquivalenzrelation ≡m genau
m Äquivalenzklassen
{
{
{
{
0,
m,
2m,
3m,
1, 1 + m, 1 + 2m, 1 + 3m,
2, 2 + m, 2 + 2m, 2 + 3m,
...
...
...
...
m − 1, 2m − 1, 3m − 1, 4m − 1,
...
...
...
...
...
},
},
},
}
und mit den Zahlen 0, 1, 2, . . . , m − 1 hat man zu jeder Äquivalenzklasse genau
einen Repräsentanten.
6
KONGRUENZ UND ARITHMETIK MODULO M
26
Theorem 6.8
Wenn
a1 ≡m b1 und a2 ≡m b2
dann auch
a1 + a2 ≡m b1 + b2
a1 × a2 ≡m b1 × b2
Beweis. Angenommen a1 ≡m b1 und a2 ≡m b2 . Dann ist
a1 mod m
=
b1 mod m
a2 mod m
=
b2 mod m.
Somit ist
(a1 + a2 ) mod m
= ((a1 mod m) + (a2 mod m)) mod m
= ((b1 mod m) + (b2 mod m)) mod m
= (b1 + b2 ) mod m,
(Theorem 6.2)
(Theorem 6.2)
d.h. a1 + a2 ≡m b1 + b2 . Weiterhin ist
(a1 × a2 ) mod m
= ((a1 mod m) × (a2 mod m)) mod m
= ((b1 mod m) × (b2 mod m)) mod m
= (b1 × b2 ) mod m,
(Theorem 6.2)
(Theorem 6.2)
d.h. a1 × a2 ≡m b1 × b2 . 6.3
Die Struktur (Zm , ⊕m , ⊗m )
Definition 6.9 (Zm , ⊕m , ⊗m )
Für jedes m > 0 sei
Zm = {0, 1, 2, . . . , m − 1}.
Die Funktionen ⊕m , ⊗m ∈ Zm × Zm → Zm sind definiert durch
Beispiel 6.10
a ⊕m b =
(a + b) mod m
a ⊗m b =
(ab) mod m
Schauen wir uns (Z4 , ⊕4 , ⊗4 ) genauer an:
⊕4
0
1
2
3
⊗4
0
1
2
3
0
1
2
3
0
1
2
3
1
2
3
0
2
3
0
1
3
0
1
2
0
1
2
3
0
0
0
0
0
1
2
3
0
2
0
2
0
3
2
1
Aufgabe. Fertigen Sie analoge Wertetabellen wie in Beispiel 6.10 für (Z3 , ⊕3 , ⊗3 )
und (Z6 , ⊕6 , ⊗6 ) an.
6
KONGRUENZ UND ARITHMETIK MODULO M
27
Theorem 6.11 (mod m ist ein Morphismus)
Für jedes m > 0 ist die modulo m Funktion ein Morphismus
mod m ∈ (N, +, ×) → (Zm , ⊕m , ⊗m ).
Dieser Sachverhalt läßt sich wieder anschaulich durch kommutative Diagramme darstellen:
+
N −−−−→


mod my
×
N −−−−→


mod my
N


ymod m
Zm −−−−→ Zm
N


ymod m
Zm −−−−→ Zm
⊕m
⊗m
Beweis. Der Beweis folgt fast sofort aus der Definition von ⊕m und ⊗m und
den modulo m Rechenregeln (Theorem 6.2).
(a + b) mod m
(ab) mod m
=
((a mod m) + (b mod m)) mod m
=
(a mod m) ⊕m (b mod m)
=
((a mod m)(b mod m)) mod m
=
(a mod m) ⊗m (b mod m). Theorem 6.12
Für jedes m > 1 ist (Zm , ⊕m , ⊗m ) ein kommutativer Ring mit Einselement.
Beweis.
Sei m > 1 und a, b, c ∈ Zm beliebig.
• Assoziativität von ⊕m .
(a ⊕m b) ⊕m c =
(((a + b) mod m) + c) mod m
=
(a + b + c) mod m
=
(a + ((b + c) mod m)) mod m
=
a ⊕m (b ⊕m c)
• Neutrales Element von ⊕m . Das neutrale Element bzgl. ⊕m ist 0.
a ⊕m 0
=
(a + 0) mod m
=
a mod m
=
a
• Inverses Element von ⊕m . Das inverse Element von a bzgl. ⊕m ist
m − a.
a ⊕m (m − a)
=
=
(a + (m − a)) mod m
m mod m
=
0
6
KONGRUENZ UND ARITHMETIK MODULO M
28
• Kommutativität von ⊕m .
a ⊕m b =
(a + b) mod m
=
(b + a) mod m
=
b ⊕m a.
• Assoziativität von ⊗m .
(a ⊗m b) ⊗m c =
(((ab) mod m)c) mod m
=
(abc) mod m
=
(a((bc) mod m)) mod m
= a ⊗m (b ⊗m c)
• Neutrales Element von ⊗m . Das neutrale Element von ⊗m ist 1. Da
m > 1 ist 1 ∈ Zm .
a ⊗m 1
=
(a1) mod m
= a mod m
= a.
• Kommutativität von ⊗m .
a ⊗m b
=
(ab) mod m
=
(ba) mod m
= b ⊗m a.
• Distributivitätsgesetz. Da ⊗ kommutativ ist, genügt es ein Distributivitätsgesetz nachzuweisen.
a ⊗m (b ⊕m c)
=
(a((b + c) mod m)) mod m
=
(a(b + c)) mod m
=
(ab + ac) mod m
=
(((ab) mod m) + ((ac) mod m)) mod m
=
(a ⊗m b) ⊕m (a ⊗m c) Bemerkung. In der Literatur wird Zm meist als Menge der Äquivalenzklassen
von ≡m und ⊕m und ⊗m über Repräsentanten dieser Klassen definiert.
Man nennt Zm daher auch Restklassenring.
Der Ring (Zm , ⊕m , ⊗m ) ist i.a. kein Körper. Ist m > 1 und m = ab eine
zusammengesetzte Zahl, so existiert zu a kein inverses Element bzgl. ⊗m . Dies
kann man wie folgt sehen. Nehmen wir an, x ∈ Zm wäre ein zu a inverses
Element bzgl. ⊗m , d.h. a ⊗m x = 1. Dann folgt
b
= b ⊗m 1
= b ⊗m (a ⊗m x)
=
(b ⊗m a) ⊗m x
=
((ba) mod m) ⊗m x
=
(m mod m) ⊗m x
=
0 ⊗m x
=
0,
6
KONGRUENZ UND ARITHMETIK MODULO M
29
was im Widerspruch zu m = ab und m 6= 0 steht.
Theorem 6.13
Ist a ∈ Zm , a 6= 0 und ggt(a, m) = 1 dann existiert genau ein x ∈ Zm
so daß
a ⊗m x = 1.
Beweis. Sei a ∈ Zm , a 6= 0 und ggt(a, m) = 1.
• Existenz. Aus Theorem 5.12 folgt, daß es ganze Zahlen α, β gibt, so
daß
ggt(a, m) = αa + βm = 1.
Sei nun
x = α + qm
wobei q ∈ Z so gewählt ist, daß x ∈ Zm . Bleibt zu zeigen, daß a ⊗m
x = 1:
a ⊗m x
=
(ax) mod m
=
(a(α + qm)) mod m
=
(αa + aqm) mod m
=
(αa + βm + aqm) mod m
=
(αa + βm) mod m
=
1 mod m
=
1.
• Eindeutigkeit. Angenommen es gibt x, y ∈ Zm so daß
a ⊗m x = 1 und a ⊗m y = 1.
Sei o.B.d.A x ≥ y. Dann ist x − y ∈ Zm und
a ⊗m (x − y) = 0,
d.h. m|a(x − y). Da m und a teilerfremd sind, folgt m|(x − y). Da
x − y ∈ Zm folgt x = y. Merkregel 6.14
Sind a und m teilerfremd, so kann man a invertieren modulo m.
Der Beweis von Theorem 6.13 ist konstruktiv, d.h. er sagt uns wie wir inverse
Elemente in Zm bzgl. ⊗m mit Hilfe des erweiterten Euklidischen Algorithmus
berechnen können falls diese existieren.
Beispiel 6.15
Berechnung des inversen Elementes von 2 bzgl. ⊗5 in Z5 .
Durch den erweiterten Euklidischen Algorithmus mit Input a = 2 und
m = 5 erhält man ggt(2, 5) = 1 und weiß dadurch, daß ein zu 2 inverse
Element bzgl. ⊗5 existiert. Weiterhin erhält man α = −2 und β = 1, d.h.
1 = αa + βm = (−2) × 2 + 1 × 5.
6
KONGRUENZ UND ARITHMETIK MODULO M
30
Somit ergibt sich
x = α + qm = −2 + 5q,
was mit der Bedingung x ∈ Z5 zur Lösung q = 1 und x = 3 führt. In der
Tat gilt
2 ⊗5 3 = 1,
d.h. 3 ist das multiplikative inverse Element zu 2 in Z5 .
Aufgabe. Prüfen Sie, ob a ein multiplikatives Inverses in Zm hat und falls ja,
berechnen Sie dieses im Kopf für folgende Zahlenpaare.
• a=4, m=7
• a=3, m=8
Aufgabe. Schreiben Sie ein Maple Programm, das für Inputs a ∈ Zm und
m > 1 das Inverse von a bzgl. ⊗m berechnet. Das Programm soll mit
einer Fehlermeldung abbrechen, falls das Inverse nicht existiert.
Theorem 6.16
Ist m eine Primzahl, so ist (Zm , ⊕m , ⊗m ) ein Körper.
Beweis. Aufgrund von Theorem 6.12 wissen wir bereits, daß (Zm , ⊕m , ⊗m )
ein kommutativer Ring mit Einselement ist. Bleibt also zu zeigen, daß zu
jedem a ∈ Zm , a 6= 0 ein Element x ∈ Zm existiert so daß a ⊗m x = 1. Sei
also a ∈ Zm , a 6= 0 beliebig. Da m prim ist, gilt ggt(a, m) = 1. Der Rest
folgt aus Theorem 6.13. Bemerkung. Ist m eine Primzahl, so läßt sich zeigen, daß alle Körper mit m
Elementen isomorph zu Zm sind. Außerdem zeigt man in der Algebra, daß
endliche Körper mit n Elementen nur für solche n existieren, die Potenz
einer Primzahl sind. So existiert z.B. ein Körper mit 9 = 32 oder 16 = 24
Elementen aber keiner mit 6 = 2 × 3 oder 45 = 32 × 5 Elementen. Alle
endlichen Körper mit gleicher Anzahl von Elementen sind isomorph, d.h.
bis auf Umbenennung der Elemente gleich, so daß man von dem endlichen
Körper mit n = pk Elementen (wobei p prim und k ∈ N) sprechen kann.
Nach seinem Entdecker Evariste Galois (1811-1832) heißt dieser Körper
Galois Feld und wird in der Literatur mit GF(n) bezeichnet. Somit sollte
auch klar sein, warum der 1987 von IBM gebaute Superrechner GF-11 und
nicht etwa GF-10 oder GF-12 genannt wurde. (Tatsächlich steht GF-11
für 11 Giga Flops und hat nichts mit Galois Feldern zu tun...)
6.4
Schnelle Algorithmen zur Potenzierung modulo m
In der Kryptographie, die ja eine der wichtigsten Anwendungen der Zahlentheorie ist, müssen oft Potenzen modulo m berechnet werden, d.h. ab mod m.
Hierbei ist a ∈ Zm und b i.a. eine sehr große Zahl, z.B. im Bereich von 10100 .
Die Berechnung von ab ist für so große b nicht machbar.
6
KONGRUENZ UND ARITHMETIK MODULO M
31
100
Beispiel 6.17
Sei a = 10, b = 10100 . Dann ist ab = 10(10 ) , was eine Zahl
mit 10100 Dezimalstellen ist. Wollte man diese Zahl auf Papier schreiben,
wobei man auf eine Seite 100 Zeilen und 100 Ziffern pro Zeile unterbringen
kann, so bräuchte man 1096 Seiten. Legt man die Seiten aufeinander und
nimmt man an, daß 100 Seiten 1cm dick sind, so wäre der Papierstapel
1089 km hoch. Selbst wenn man mit Lichtgeschwindigkeit reisen könnte,
bräuchte man etwa 1076 Jahre um diese Strecke zurückzulegen.
Es ist also klar, daß man zur Berechnung von ab mod m nicht zuerst ab
berechnet und dann das Ergebnis modulo m nimmt. Ein besserer Weg, der große
Zwischenergebnisse vermeidet, wird klar wenn wir uns das bereits bekannte
kommutative Diagramm
×
N −−−−→ N




mod my
ymod m
Zm −−−−→ Zm
⊗m
nochmal anschauen bzw. erweitern:
×
×
×
N −−−−→ N −−−−→ · · · −−−−→


mod my
N


ymod m
Zm −−−−→ Zm −−−−→ · · · −−−−→ Zm
⊗m
⊗m
⊗m
Anstatt in N zu potenzieren und dann das Ergebnis per mod m nach Zm abzubilden, ist es viel besser, zuerst die Argumente nach Zm abzubilden und die
Potenzierung in Zm durchzuführen, wo die Zwischenergebnisse nie größer als
m − 1 werden. (Dies ist nichts anderes als die konsequente Anwendung der modulo m Rechenregeln, siehe Theorem 6.2). Im Diagramm heißt das, daß man
zuerst nach unten und dann nach rechts geht und nicht zuerst nach rechts und
dann nach unten. Die Tatsache, daß
mod m ∈ (N, ×) → (Zm , ⊗m )
ein Morphismus ist, garantiert uns, daß beide Wege zum gleichen Ergebnis
führen.
Die Beschleunigung durch die modulo m Arithmetik reicht jedoch allein noch
nicht aus. Wird die Potenzierung durch iteriertes Multiplizieren
ab mod m = a ⊗m a ⊗m . . . ⊗m a
gemacht, so müßten b − 1 Multiplikationen durchgeführt werden, was für ein
100-stelliges b immer noch viel zu lang dauern würde.
Beispiel 6.18
Angenommen eine Multiplikation dauert 1 µs, dann würden
b = 10100 Multiplikationen etwa 3 × 1086 Jahre dauern.
Durch einen einfachen Trick kann man diese astronomische Rechenzeit aber
auf Sekundenbruchteile reduzieren. Offensichtlich ist
(ab/2 )2
falls b gerade
b
a =
a × ab−1 falls b ungerade.
Um zu sehen warum diese Formel so viel Rechenzeit spart, ein kleines Beispiel:
6
KONGRUENZ UND ARITHMETIK MODULO M
32
Beispiel 6.19
Zur Berechnung von a10 wären durch iteriertes Multiplizieren
9 Multiplikationen nötig. Durch Anwendung obiger Formel erhält man
a10 = (a5 )2
was nur 4 Multiplikationen für die Berechnung von a5 und eine Multiplikation für die Quadrierung erfordert, d.h. insgesamt nur 5 statt 9 Multiplikationen. Durch iterierte Anwendung unserer Formel erhalten wir
a10
=
(a5 )2
=
(a × a4 )2
=
(a × (a2 )2 )2
was insgesamt nur 4 statt der ursprünglichen 9 Multiplikationen erfordert.
Zusammenfassend haben wir also folgenden rekursiven Algorithmus für die schnelle
Berechnung von ab mod m:
Algorithmus EXP zur Berechnung von ab mod m
Input:
Output:
a ∈ Zm , b ∈ N, m ∈ N.
ab mod m.
if b = 1 return a
if b is even
x = EXP(a, b/2, m)
return x ⊗m x
else
x = EXP(a, b − 1, m)
return a ⊗m x
Beispiel 6.20
In nachfolgender Tabelle ist die Anzahl der ⊗m – Operationen zur Berechnung von ab mod m mit Algorithmus EXP für einige Werte
von b aufgeführt. Wie man sieht, braucht der Algorithmus für b = 10100
gerade mal 436 Operationen anstatt der 10100 − 1 Operationen, die man
mit einfachem, iterierten Multiplizieren a ⊗m a ⊗m a . . . brauchen würde.
b
101
102
103
1010
10100
101000
⊗m – Ops.
4
8
14
43
436
4483
Aufgabe. Implementieren Sie folgende Algorithmen zur Berechnung von ab mod m
in Maple:
• Schnelle Berechnung von ab mod m (Algorithmus EXP).
• Schnelle Berechnung von ab in N mit nachfolgender modulo m Operation am Ende.
6
KONGRUENZ UND ARITHMETIK MODULO M
33
• b − 1 malige Multiplikation modulo m: a ⊗m a ⊗m a . . . ⊗m a.
• b − 1 malige Multiplikation in N mit nachfolgender modulo m Operation am Ende: (a × a × a . . . × a) mod m.
Prüfen Sie anhand von ein paar Beispielen, daß immer das gleiche Ergebnis
rauskommt und vergleichen Sie die Rechenzeiten.
Lösung.
• EXP := proc(a,b,m)
local x;
if b = 1 then a;
else
if type(b,even) then x := EXP(a,b/2,m); (x*x) mod m;
else x := EXP(a,b-1,m); (a*x) mod m;
fi
fi
end:
• EXP := proc(a,b,m)
local EXPN;
EXPN := proc(a,b)
local x;
if b = 1 then a;
else
if type(b,even) then x := EXPN(a,b/2); x*x;
else x := EXPN(a,b-1); a*x;
fi
fi
end:
EXPN(a,b) mod m;
end:
• EXP := proc(a,b,m)
local i,x;
x := a;
for i from 1 to b-1 do
x := (x * a) mod m;
od
end:
• EXP := proc(a,b,m)
local i,x;
x := a;
for i from 1 to b-1 do
x := x * a;
od;
x mod m;
end:
6
KONGRUENZ UND ARITHMETIK MODULO M
34
Aufgabe. Zeigen Sie anhand von ein paar Beispielen und machen Sie sich
klar, daß die Anzahl der ⊗m – Operationen von Algorithmus EXP gleich
der Anzahl der Nullen plus 2 mal die Anzahl der Einsen in der Binärdarstellung von b ist, wobei die führende 1 abgeschnitten ist. Die Anzahl
der Binärstellen einer Zahl x ist blog2 (x)c + 1. Erklären Sie damit, daß
die Anzahl von ⊗m – Operationen für Algorithmus EXP immer zwischen
blog2 (b)c und 2blog2 (b)c liegt.
7 ZAHLENTHEORETISCHE GRUNDLAGEN ZUR RSA
VERSCHLÜSSELUNG
7
7.1
35
Zahlentheoretische Grundlagen zur RSA Verschlüsselung
Die Eulersche ϕ-Funktion
Definition 7.1 (Eulersche ϕ-Funktion)
Für jedes m > 1 ist ϕ(m) die Anzahl der natürlichen Zahlen kleiner m,
die zu m teilerfremd sind.
Beispiel 7.2
Sei m = 12. Die natürlichen Zahlen kleiner 12, die zu 12 teilerfremd sind, sind 1, 5, 7, 11. Also ist ϕ(12) = 4.
Beispiel 7.3
Ist m eine Primzahl, so sind alle natürlichen Zahlen kleiner m
teilerfremd zu m und daher ϕ(m) = m − 1.
Beispiel 7.4
Sind p und q Primzahlen, so gilt ϕ(pq) = (p − 1)(q − 1).
Das kann man wie folgt sehen: Die einzigen Zahlen kleiner pq, die einen
gemeinsamen Teiler mit pq haben, sind
p, 2p, 3p, . . . , (q − 1)p
q, 2q, 3q, . . . , (p − 1)q,
d.h. (q − 1) + (p − 1) = p + q − 2 Zahlen. Insgesamt gibt es pq − 1 Zahlen
kleiner pq, also ist die Anzahl Zahlen kleiner pq, die teilerfremd zu pq sind
ϕ(pq)
7.2
=
pq − 1 − (p + q − 2)
=
pq − q − p + 1
=
q(p − 1) − (p − 1)
=
(p − 1)(q − 1)
Der Satz von Euler-Fermat
Theorem 7.5 (Euler-Fermat, 1769)
Wenn a, m ∈ N teilerfremd sind, dann ist
aϕ(m) mod m = 1.
Beweis. Angenommen a, m ∈ N seien teilerfremd. Aus den Rechenregeln modulo m (Theorem 6.2) folgt, daß
aϕ(m) mod m = (a mod m)ϕ(m) mod m,
d.h. wir können uns auf den Fall a ∈ Zm \ {0} beschränken. Seien
s1 , s2 , . . . , sϕ(m)
die natürlichen Zahlen kleiner m, die zu m teilerfremd sind. Zunächst
zeigen wir, daß es zu jedem i ∈ {1, . . . , ϕ(m)} es genau ein j ∈ {1, . . . , ϕ(m)}
gibt, so daß
a ⊗m si = sj .
Dazu sind zwei Dinge zu zeigen:
7 ZAHLENTHEORETISCHE GRUNDLAGEN ZUR RSA
VERSCHLÜSSELUNG
36
• Existenz: Für jedes i existiert ein j so daß a ⊗m si = sj . Da weder
a noch si einen gemeinsamen Primfaktor mit m hat, hat auch asi
keinen gemeinsamen Primfaktor mit m, d.h. ggt(asi , m) = 1. Aus
Theorem 5.9 folgt ggt(asi mod m, m) = 1, d.h. a ⊗m si ist teilerfremd
zu m. Folglich existiert ein j so daß a ⊗m si = sj .
• Eindeutigkeit: Für i 6= j ist a ⊗m si 6= a ⊗m sj . Angenommen
a ⊗m si = a ⊗m sj .
Sei b ∈ Zm das Inverse zu a bzgl. ⊗m , welches aufgrund von Theorem
6.13 existiert. Dann ist
b ⊗m a ⊗m si = b ⊗m a ⊗m sj
und folglich
si = sj .
Daraus folgt, daß die beiden Mengen
{s1 , s2 , . . . , sϕ(m) }
und
{a ⊗m s1 , a ⊗m s2 , . . . , a ⊗m sϕ(m) }
gleich sind – lediglich die Reihenfolge der Elemente ist anders. Also ist
(s1 s2 · · · sϕ(m) ) mod m
=
((a ⊗m s1 )(a ⊗m s2 ) · · · (a ⊗m sϕ(m) )) mod m
=
(as1 as2 · · · asϕ(m) ) mod m
=
(aϕ(m) s1 s2 · · · sϕ(m) ) mod m.
Daraus folgt
(aϕ(m) s1 s2 · · · sϕ(m) ) mod m − (s1 s2 · · · sϕ(m) ) mod m = 0
bzw.
((aϕ(m) − 1)s1 s2 · · · sϕ(m) ) mod m = 0
oder
m|(aϕ(m) − 1)s1 s2 · · · sϕ(m) .
Da keines der si einen gemeinsamen Teiler mit m hat, folgt
m|aϕ(m) − 1
und somit
aϕ(m) mod m = 1. Beispiel 7.6
Sei wieder m = 12 und a = 5. Dann sind m und a teilerfremd
und das Theorem von Euler-Fermat besagt, daß
5ϕ(12) mod 12 = 1.
Das läßt sich leicht nachprüfen: Im vorhergehenden Beispiel haben wir
gesehen daß ϕ(12) = 4. Also ist 5ϕ(12) = 54 = 625, und in der Tat ist
625 mod 12 = 1.
8
8
RSA CODIERUNGSSYSTEM
37
RSA Codierungssystem
Basierend auf dem Satz von Euler-Fermat haben R.L. Rivest, A. Shamir und
L.Adleman im Jahre 1978 ein Public–Key Kryptosystem publiziert, das nach
den Autoren RSA Codierungssystem genannt wird. Dieses Verfahren zählt zur
Zeit zu den sichersten Methoden der Kryptographie.
Public–Key Kryptosysteme lösen folgendes Problem: Angenommen ein Sender
möchte einem Empfänger eine geheime Nachricht schicken, die einzige Verbindung
zwischen Sender und Empfänger kann jedoch abgehört werden. Zunächst ist
gar nicht klar, daß diese Problem überhaupt lösbar ist - wenn der Sender seine
Nachricht verschlüsselt, muß er ja dem Empfänger irgendwie mitteilen, wie diese
zu entschlüsseln ist und diese Information kann ja ebenfalls abgehört werden.
Die Lösung ist, daß der Empfänger festlegt, wie der Sender seine Nachricht
codieren soll, aber geheim hält, wie die Nachricht wieder zu decodieren ist.
Genauer gesagt, erzeugt der Empfänger ein sog. Schlüsselpaar, wobei ein Schlüssel zum codieren und einer zum decodieren benutzt wird. Den Schlüssel zum
decodieren hält der Empfänger geheim, den Schlüssel zum codieren schickt er
an den Sender. Dieser codiert damit seine Nachricht und schickt sie an den
Empfänger. Der Empfänger wiederum verwendet seinen geheimen Schlüssel zum
decodieren der Nachricht. Selbst wenn alle ausgetauschten Informationen abgehört wurden, kann trotzdem die Nachricht nicht entschlüsselt werden.
Im Einzelnen funktionieren die Schritte zur Schlüsselerzeugung, Codierung
und Decodierung nach dem RSA Verfahren wie folgt.
• Erzeugung eines privaten/öffentlichen Schlüsselpaars.
– Wähle Primzahlen p, q, die größer sind als die zu verschlüsselnden
Zahlen. Wenn z.B. die zu verschlüsselnde Nachricht aus 16 bit Worten
besteht, so müssen p und q größer 65536 sein.
– Berechne m = pq. Die zu verschlüsselnden Nachrichtenworte sind
somit teilerfremd zu m.
– Berechne ϕ(m) = (p − 1)(q − 1), siehe Beispiel 7.4.
– Wähle r so, daß r und ϕ(m) teilerfremd sind. Nach Theorem 6.13
gibt es folglich ein (eindeutiges) s so daß
rs mod ϕ(m) = 1.
Der öffentliche Schlüssel besteht nun aus m und r, der private Schlüssel
ist die Zahl s.
• Verschlüsselung mit dem öffentlichen Schlüssels m, r.
Sei N ein zu verschlüsselndes Nachrichtenwort. Das verschlüsselte Nachrichtenwort ergibt sich aus
R = N r mod m.
• Entschlüsselung mit dem privaten Schlüssel s.
Die original Nachricht N läßt sich aus R unter Verwendung des privaten
Schlüssels mit
N = Rs mod m
8
RSA CODIERUNGSSYSTEM
38
rekonstruieren. Dies kann man wie folgt sehen:
Rs mod m
=
=
=
=
=
=
=
=
(N r )s mod m
N rs mod m
N kϕ(m)+1 mod m
N N kϕ(m) mod m
N (N ϕ(m) )k mod m
N (1)k mod m
N mod m
N
für ein k, da rs mod ϕ(m) = 1
nach Euler-Fermat
da N < m.
Warum gilt diese Art der Verschlüsselung als sicher? Wie müßte jemand vorgehen, der die verschlüsselte Nachricht R knacken wollte? Nun, er kann den öffentlichen Schlüssel m, r und die geheime Nachricht R abhören und weiß natürlich auch wie das RSA Verschlüsselungsverfahren funktioniert. Er müßte also
das nach Theorem 6.13 eindeutig existierende s finden, so daß
rs mod ϕ(m) = 1.
Falls er ϕ(m) kennen würde, wäre das mit dem Euklidischen Algorithmus kein
Problem. Um ϕ(m) zu berechnen, müßte er aber p und q berechnen, d.h. m in
seine Primfaktoren zerlegen. Dies ist jedoch schwierig, da derzeit kein Algorithmus bekannt ist, der große Zahlen in akzeptabler Zeit faktorisieren kann. Andererseits ist es aber sehr einfach, große Primzahlen zu erzeugen bzw. miteinander zu multiplizieren. Sollte irgend wann ein effizienter Algorithmus zur Faktorisierung entdeckt werden, könnte man RSA codierte Nachrichten einfach
knacken, d.h. der RSA Algorithmus wäre dann nutzlos.
Aufgabe. Gegeben sei ein Schlüsselpaar bestehend aus einem öffentlichen
Schlüssel m = 1154443, r = 927 und einem zugehörigen privaten Schlüssel
s = 43503. Die zu verschlüsselnde Nachricht bestehe aus der Buchstabenfolge “t”, “e”, “s”, “t” mit den zugehörigen ASCII codes 116, 101, 115,
116. Verschlüsseln Sie diese Nachricht mit dem öffentlichen Schlüssel und
entschlüsseln Sie sie wieder mit dem privaten Schlüssel.
Lösung. Im Beispiel ist
N1 = 116, N2 = 101, N3 = 115, N4 = 116.
Die Verschlüsselung ist gegeben durch Ri = Nir mod m. Wichtig ist hierbei
die effizienten Berechnung mit Algorithmus EXP.
R1 = 1094953, R2 = 704872, R3 = 651564, N4 = 1094953
Die Entschlüsselung ist gegeben durch Ni = Ris mod m.
N1 = 116, N2 = 101, N3 = 115, N4 = 116.
Aufgabe. Gegeben sei folgende verschlüsselte Nachricht:
R1 = 165 195, R2 = 190 798, R3 = 22 202,
R4 = 57 197, R5 = 190 798, R6 = 63 566
39
RSA CODIERUNGSSYSTEM
8
Ž#‡3‰3‰‹Œ#‡Š‰ˆ‡
!ƒ€)'#†*}€) -…„
|2ƒl3P|~2~1E‚y*€)#~)}|X!{z1y
ÖÕ.ÔÓÒÑÐÊÏ
Î ÍÌËÊÉ
È*¿ Æ Ä#Ç#ÁÁ EÅÆ*Ä)Ã2Â2Á!À¿¾
æ ïîíåìëüê.ûúrùø÷
ð
æ ïîíåìëê
ð
æ å
SáSà1à%ßÚ #Þ2Ý1ÝEÛÜ1Ú)Ù.Ø×
2KJI9 H *98
C ? 2G1GEDF*C)B.A@ #?=>=<%;:
ó
Šîö
ó vòèõëtîô
ó òñçë
éèç
äXÞ*ãÜÞ #âá Þ
#a`_^
3]TW1R\Q L %[U ZY
XWTV%UTRSRPOQ.NML
x2ps3wwwSsvu2ptsrqp
!k)g'f#o1d)gf
c2lk3hPc2ee Eij*h)g2f-n2e3dm Scb
½¼.»º¹¸·¶±µ
´ ³²v±°
¯*1®­ 3«¥P2¨¨ E¬­*«)ª2©2¨3§¦¥¤
#7564
3" 2010 / *")(.&-,+*)(&'%$#"! £#ž3 ¢¢3¢ Œ¡#žŠ Ÿž
!š)—'–#*”)—– -œ›
“2lš3˜“P2•1•E™*˜)—#–)•”X“!’1‘
8
RSA CODIERUNGSSYSTEM
40
Dabei ist jedes Ri ein verschlüsselter Buchstabe nach dem ASCII Alphabet. Sie kennen den öffentlichen Schlüssel des Empfängers:
m
=
271259
r
=
91765
Versuchen Sie, die Nachricht zu knacken.
Lösung. Der Lösungsweg ist wie folgt: Der private Schlüssel s ergibt sich aus
der Gleichung
rs ≡ϕ(m) 1.
Aus der Definition des RSA Algorithmus wissen wir, daß sich m aus genau
zwei Primfaktoren p, q zusammensetzt, d.h. m = pq und daher
ϕ(m) = (p − 1)(q − 1).
Als nächstes können wir dann s mit Hilfe des erweiterten Euklidischen Algorithmus berechnen. Die Entschlüsselung erfolgt danach mit der Formel
Ni = Ris mod m
für i = 1, 2, . . . , 6.
Und jetzt konkret: Wir berechnen also zunächst p und q durch faktorisieren
von m. In unserem Beispiel ist dies mit Maple kein Problem, in wirklichen
Anwendungen ist m jedoch so groß (z.B. mehr als 100 Stellen), daß die
Faktorisierung in akzeptabler Zeit nicht durchführbar ist! Wir erhalten
also
m = 271259 = 487 × 557,
d.h.
p = 487, q = 557
und somit
ϕ(m) = (p − 1)(q − 1) = 486 × 556 = 270216.
Aus rs ≡ϕ(m) 1 erhalten wir mit dem erweiterten Euklidischen Algorithmus
s = 249733,
denn
rs mod ϕ(m)
=
91765 × 249733 mod 270216
=
22916748745 mod 270216
=
1
Damit können wir die Nachricht entschlüsseln:
N1
N2
N3
N4
N5
N6
=
=
=
=
=
=
R1s mod m
R2s mod m
R3s mod m
R4s mod m
R5s mod m
R6s mod m
= 165195249733 mod 271259
= 190798249733 mod 271259
= 22202249733 mod 271259
= 57197249733 mod 271259
= 190798249733 mod 271259
= 63566249733 mod 271259
=
=
=
=
=
=
115
101
99
114
101
116
8
RSA CODIERUNGSSYSTEM
Der Klartext besteht also aus den Zahlen
115, 101, 99, 114, 101, 116.
Dies sind die ASCII codes für das Wort “secret”.
41
9
9
HISTORISCHER EXKURS IN DIE PRIMFAKTORISIERUNG
42
Historischer Exkurs in die Primfaktorisierung
Natürlich arbeiten viele Forscher intensiv an effizienten Algorithmen zur Primfaktorisierung. Trotz bedeutender Fortschritte sieht es aber nicht so aus, als
könnte das Problem in naher Zukunft als gelöst bezeichnet werden. Nachfolgend ein paar historische Meilensteine [2]:
• 1970 wurde die Faktorisierung einer “schweren” Zahl mit 41 Stellen als
großer Fortschritt gefeiert. Eine “schwere” Zahl ist eine Zahl, die keine
kleinen Faktoren besitzt und auch keine spezielle Form besitzt, die leicht
faktorisiert werden kann. Zehn Jahre später dauerte die Faktorisierung
doppelt so großer Zahlen auf einem Cray Supercomputer nur wenige Stunden.
• 1993 wurde eine schwere Zahl mit 120 Stellen mit Hilfe des quadratischen
Sieb Algorithmus faktorisiert. Die Berechnung dauerte 825 MIPS Jahre
und wurde in 3 Monaten Echtzeit durchgeführt.
• Unter Ausnutzung der freien Rechenzeit auf weltweit verteilten Computern über mehrere Monate hinweg wurde 1991 eine 116 stellige Zahl faktorisiert. Der Aufwand betrug 400 MIPS Jahre.
• Im März 1994 faktorisierte ein Team von Mathematikern eine 129 stellige Zahl. 600 Leute und 1600 Rechner brauchten 8 Monate dazu. Der
Aufwand entsprach etwa 4000 bis 6000 MIPS Jahren. Zitat: “Wir schließen
daraus, daß 512 bit lange Schlüssel für RSA keine Sicherheit vor Angriffen
durch Organisationen bieten, die bereit sind, einige Millionen Dollar zu
investieren und einige Monate zu warten.”
• Um in Sachen Faktorisierung auf dem neuesten Stand zu bleiben, rief die
Firma RSA Data Security Inc. im März 1991 den RSA Faktorisierungswettbewerb ins Leben. Der Wettbewerb besteht aus einer Liste von 42 schweren Zahlen, deren Länge von 100 Stellen bis 500 Stellen reicht. Im Jahr
1999 waren RSA-100, RSA-110, RSA-120, RSA-129, RSA-130, RSA-140
und RSA-155 bereits faktorisiert. Für RSA-155 waren etwa 8000 MIPS
Jahre Rechenzeit erforderlich. Durch Einsatz von 292 Maschinen konnte die Berechnung in 7.4 Monaten durchgeführt werden. Für die Faktorisierung von RSA-174 ist ein Preis von $10,000 ausgesetzt, die Zahl
lautet
18819881292060796383869723946165043980716356337941
73827007633564229888597152346654853190606065047430
45317388011303396716199692321205734031879550656996
221305168759307650257059.
Informationen zum aktuellen Stand des RSA Faktorisierungswettbewerbs
finden Sie unter
http://www.rsasecurity.com/rsalabs/challenges/factoring.
Viele Hintergrundinformationen zur Kryptographie, den theoretischen Grundlagen und praktischen Anwendungen stehen unter
9
HISTORISCHER EXKURS IN DIE PRIMFAKTORISIERUNG
43
http://www.rsasecurity.com/rsalabs/faq/index.html.
Unter dieser Adresse findet sich auch Tabelle 9.1, in der historische Faktorisierungsrekorde wiedergegeben sind. Eine interessante Abschätzung
Jahr
1970
1978
1981
1982
1983
1984
1986
1987
1988
1990
1991
1992
1996
1998
1999
Stellen
39
45
47
51
63
71
87
90
100
111
116
129
130
140
155
Zahl
2128 + 1
2223 − 1
3225 − 1
591 − 1
1193 + 1
1071 − 1
5128 + 1
5160 + 1
11104 + 1
2484 + 1
10142 + 1
RSA-129
RSA-130
RSA-140
RSA-155
Wer
Brillhart/Morrison
Wunderlich
Gerver
Wagstaff
Davis/Holdridge
Davis/Holdridge
Silverman
Silverman
Internet
Lenstra/Manasse
Lenstra/Manasse
Atkins
Montgomery
Montgomery
Montgomery
Algorithmus
CFRAC
CFRAC
QS
CFRAC
QS
QS
MPQS
MPQS
MPQS
MPQS
MPQS
MPQS
GNFS
GNFS
GNFS
Hardware
IBM Mainframe
IBM Mainframe
HP-3000
IBM Mainframe
Cray
Cray
LAN Sun-3’s
LAN Sun-3’s
Distributed
Distributed
Distributed
Distributed
Distributed
Distributed
Distributed
Tabelle 9.1: Historische Faktorisierungsrekorde
des Rechen- und Speicheraufwandes der erforderlich wäre um sehr lange
Zahlen mit heutigen Algorithmen und 500 MHz Pentium Rechnern innerhalb eines Jahres faktorisieren zu können, gibt Tabelle 9.2:
Stellen
129
229
307
488
Maschinen
1
215,000
342,000,000
1.6 × 1015
Speicher
trivial
4 GB
170 GB
120 TB
Tabelle 9.2: Geschätzter Aufwand zur Faktorisierung mit 500MHz Pentium
Rechnern in einem Jahr Rechenzeit
Aufgabe. Schreiben Sie ein Programm zur Primfaktorzerlegung durch “Ausprobieren”. (Es genügt, wenn das Programm 32 bit Zahlen verarbeiten
kann.) Überlegen Sie sich, wie man das Programm beschleunigen könnte
und vergleichen Sie die Rechenzeit mit Maple anhand einiger Beispiele.
Hinweis: Zum Faktorisieren mit Maple verwenden Sie die Funktion ifactor,
z.B. ifactor(820293);.
Aufgabe. Faktorisieren Sie mit Maple ein paar n stellige Zahlen für n zwischen 5 und 35. Finden Sie durch Ausprobieren 30 stellige Zahlen, für
die Maple besonders schnell bzw. besonders langsam ist. Was läßt sich
über die zugehörigen Primfaktoren sagen? Zeichnen Sie eine Kurve der
9
HISTORISCHER EXKURS IN DIE PRIMFAKTORISIERUNG
44
experimentell ermittelten maximalen Rechenzeit zur Faktorisierung einer
n stelligen Zahl in Abhängigkeit von n für n zwischen 5 und 35. Hinweis: Zur Messung der Rechenzeit verwenden Sie die Funktion time, z.B.
time(ifactor(23098522309812305971)); Was schätzen Sie, wie lange
Maple maximal zur Faktorisierung einer 100 stelligen Zahl brauchen würde?
10
10
EIN PAAR GROßE ZAHLEN AUS DER PHYSIK
Ein paar große Zahlen aus der Physik
Wahrscheinlichkeit vom Blitz erschlagen zu
werden pro Tag
Wahrscheinlichkeit für den Hauptgewinn in
einer US Staatslotterie
Wahrscheinlichkeit, den Hauptgewinn in einer
US Staatslotterie zu bekommen und am gleichen Tag vom Blitz erschlagen zu werden
Wahrscheinlichkeit zu ertrinken (in den USA
pro Jahr)
Wahrscheinlichkeit bei einem Autounfall ums
Leben zu kommen (1993 in den USA)
Wahrscheinlichkeit, bei einem Autounfall ums
Leben zu kommen im Lauf seines Lebens in
den USA (1993 gab es 163 Todesfälle pro einer
Million Einwohner, was unter Annahme einer
durchschnittlichen Lebenserwartung von 69.7
Jahren zu dieser recht hohen Wahrscheinlichkeit führt)
Beginn der nächsten Eiszeit
Zeit bis die Sonne zur Nova wird
Alter der Erde
Alter des Universums
Anzahl der Atome in der Erde
Anzahl der Atome in der Sonne
Anzahl der Atome in unserer Galaxie
Anzahl der Atome im Universum (ohne dunkle
Materie)
Größe des Universums
Lebensdauer des Universums (falls es geschlossen ist)
1 zu 9 Milliarden (233 )
1 zu 4 Millionen (222 )
1 zu (255 )
1 zu 59000 (216 )
1 zu 6100 (213 )
1 zu 88 (27 )
in 14 000 (214 ) Jahren
109 (230 ) Jahre
109 (230 ) Jahre
1010 (234 ) Jahre
1051 (2170 )
1057 (2190 )
1067 (2223 )
1077 (2265 )
1084 (2280 )cm3
1011 (237 ) Jahre
45
Literatur
[1] Hofstadter, Douglas R.: Gödel, Escher, Bach. Klett, 1985
[2] Schneier, Bruce: Angewandte Kryptographie. Addison-Wesley, 1996
[3] Stallings, William: Cryptography and Network Security
[4] Volkmann, Lutz:
Aachen, 2000
Diskrete Strukturen.
Wissenschaftsverlag Mainz in
[5] Waerden, B.L. van d.: Algebra. Springer, 1991
46
Herunterladen