Kapitel 2. Elementare Zahlentheorie 2.1. Primfaktorzerlegung Menge der ganzen Zahlen Z : = {. . . , −3, −2, −1, 0, 1, 2, 3, . . .} Addition Z × Z −→ Z, (a, b) 7−→ a + b Inverse Z −→ Z, a 7−→ −a Multiplikation Z × Z −→ Z, (a, b) 7−→ a · b Ausgezeichnete Elemente 0, 1 ∈ Z 1 Rechenregeln: für a, b, c ∈ Z gelten (a + b) + c = a + (b + c) a+b = b+a a+0 = 0+a=a a + (−a) = (−a) + a = 0 (Inverse bzgl. +) (a · b) · c = a · (b · c) (· ist assoziativ) a·b = b·a a·1 = 1·a=a a · (b + c) = a·b+a·c (+ ist assoziativ) (+ ist kommutativ) (0 ist Neutralelement von +) (· ist kommutativ) (1 ist Neutralement von ·) (Distributivgesetz) 2 Definition. Eine Menge R mit Abbildungen +: ·: R×R −→ R, (a, b) 7−→ a+b R −→ R, a 7−→ (−a) R×R −→ R, (a, b) 7−→ a·b und ausgezeichneten Elementen 0, 1 ∈ R, welche die obigen Rechenregeln erfüllen, heißt ein kommutativer Ring. 3 Beispiel. • Z = {ganze Zahlen} ist ein kommutativer Ring • Q : = {rationale Zahlen} ist ein kommutativer Ring • R : = {reelle Zahlen} ist ein kommutativer Ring. 4 Definition. Sei R ein kommutativer Ring. R heißt Körper, falls 0 6= 1 und für alle a ∈ R − {0} existiert ein b ∈ R mit a · b = 1. Bemerkung. Das Element b heißt Inverse von a. Beispiel. • Z ist kein Körper • Q und R sind Körper 5 Definition. Seien a, b ∈ Z. a teilt b, geschrieben a | b, falls ein a0 ∈ Z existiert mit aa0 = b. Schreibweise: a - b, falls nicht a|b. Beispiel. 2 | 6, 6 | 12, a | 0, 1 | a, 3-8 a|a für alle a ∈ Z 6 Behauptung. Aus a | b und b | c folgt a | c. Behauptung. Für a, b ∈ Z gilt: a | b und b | a =⇒ a = b oder a = −b. Folgerung. | ist eine partielle Ordnung in N. Behauptung. Seien a, b, c, d ∈ Z. Dann (1) c | a und c | b =⇒ c | (a + b) und c | (a − b) (2) c | a =⇒ (cd) | (ad) 7 Definition. Eine Primzahl ist eine ganze Zahl p mit p ≥ 2 und der Eigenschaft a | p und a > 1 =⇒ a = p für alle a ∈ Z. Wir haben schon bewiesen (indirekter Beweis) Satz. (Euklid) Es gibt unendlich viele Primzahlen. Bemerkung. Die größte bis heute bekannte Primahl (Febr. 2005) ist 225964951 − 1 8 Variante des Prinzips der vollständigen Induktion. Für jedes n ∈ N, n ≥ n0 , sei A(n) eine Aussage. Es gelte: Induktionsverankerung: Induktionsschritt: A(n0 ) ist wahr. Für alle n ∈ N gilt: Ist A(k) wahr für alle n0 ≤ k ≤ n, so ist A(n + 1) wahr. Dann ist A(n) wahr für alle n ≥ n0 . 9 Satz. Jede Zahl n ∈ N, n ≥ 2, ist ein Produkt von endlich vielen Primzahlen. Bemerkung. Die algorithmische Faktorisierung von ganzen Zahlen ist ein sehr schwieriges Problem. Darauf beruhen heute einige Kryptosysteme. 10 Satz. Die Zerlegung einer Zahl n ∈ N, n ≥ 2, in Primzahlen ist eindeutig bis auf die Reihenfolge der Primfaktoren. D.h. ist n = p1 · p2 . . . p r = q 1 · q 2 . . . q s mit r, s ≥ 1 und Primzahlen p1 , . . . pr , q1 , . . . , qs , so folgt r = s und es gibt eine bijektive Abbildung α : {1, 2, . . . , r} −→ {1, 2, . . . , r}, sodass pi = qα(i) für 1 ≤ i ≤ r. Beweis später. 11 2.2 Darstellung ganzer Zahlen Satz. Zu (a, b) ∈ N2 mit b > 0 gibt es genau ein Paar (q, r) ∈ N2 mit a = qb + r und 0 ≤ r < b 12 Bezeichnung: q heißt der Quotient und r der Rest bei der Division von a durch b: q = a quot b, r = a rem b. 13 Algorithmische Beschreibung Eingabe: a, b ∈ N, wobei b ≥ 2. Ausgabe: Liste R (b-adische Darstellung von a) R ←− ( ) {leere Liste} while a 6= 0 do r ←− a rem b a ←− a quot b leftappend r to R end-while end. 14 Definition. Sei b ∈ N, b ≥ 2. Seien a, l ∈ N. Ein Tupel (rl−1 , rl−2 , . . . , r0 ) ∈ Nl mit rl−1 6= 0 und rk < b für 0 ≤ k < l, heißt b-adische Darstellung von a ∈ N, falls a = rl−1 bl−1 + rl−2 bl−2 + . . . + r1 b + r0 . Man schreibt auch a = (rl−1 rl−2 . . . r0 )b und nennt b die Basis. b = 2 Dual b = 8 Oktal b = 10 Dezimal b = 16 Hexadezimal 15 Satz. Sei b ∈ N, b ≥ 2, a ∈ N. Dann hat a eine b-adische Darstellung und diese ist eindeutig bestimmt. 16 Beispiel. 3081 = 3 · 103 + 0 · 102 + 8 · 101 + 1 · 100 = (3081)10 3081 = 211 + 210 + 23 + 20 = (110000001001)2 3081 = 12 · 162 + 9 · 160 = (C09)16 (Man schreibt hier A, B, C, D, E, F statt 10, 11, 12, 13, 14, 15.) 17 2.3 GGT und Euklidischer Algorithmus Definition. Seien a, b ∈ Z. Eine Zahl c ∈ N heißt größter gemeinsamer Teiler (ggT) von a und b, falls gilt: (1) c | a und c | b (2) ∀d ∈ Z (d | a und d | b =⇒ d | c) Bemerkung. Der ggT ist eindeutig bestimmt (falls er existiert). Bezeichnung c = ggT(a, b) Definition. a, b ∈ Z heißen teilerfremd, falls ggT(a, b) = 1. 18 Gibt es immer einen ggT? Wenn ja, wie berechnet man ihn (effizient)? Lemma. Sei a = qb + r, wobei a, b, q, r ∈ Z. Dann gilt ggT(a, b) = ggT(b, r). 19 Euklidischer Algorithmus Eingabe: (a, b) ∈ N2 mit b 6= 0. Ausgabe: ggT(a, b) while b 6= 0 do q ←− a quot b r ←− a rem b a ←− b b ←− r end-while return(a) end. 20 Der Algorithmus terminiert, weil b bei jedem Schleifendurchgang kleiner wird. Der Algorithmus arbeitet korrekt (d.h. gemäß Spezifikation) aufgrund des Lemmas. 21 Definition. Der Absolutbetrag von a ∈ Z ist definiert als a falls a ≥ 0, |a| : = −a sonst. Bemerkung. ggT(a, b) = ggT(|a|, |b|) für a, b ∈ Z. Folgerung. Für alle a, b ∈ Z existiert der ggT(a, b). 22 Zurück zum Beispiel a = 126, b = 35 126 = 3 · 35 + 21 35 = 1 · 21 + 14 21 = 1 · 14 + 7 14 = 2 · 7 + 0 23 1 · 126 + 0 · 35 = 126 0 · 126 + 1 · 35 = 35 1 · 126 + (−3) · 35 = 21 (= 126 − 3 · 35) (−1) · 126 + 4 · 35 = 14 (= 35 − 21) 2 · 126 + (−7) · 35 = 7 (= 21 − 14) Also für a = 126, b = 35 2 · a + (−7) · b = ggT(a, b) Das geht allgemein! 24 Erweiterter Euklidischer Algorithmus Eingabe: (a, b) ∈ N2 mit b 6= 0 Ausgabe: (d, s, t) ∈ Z3 mit d = ggT(a, b) und s · a + t · b = d r0 ←− a; r1 ←− b s0 ←− 1; t0 ←− 0 s1 ←− 0; t1 ←− 1 25 i ←− 1 while ri 6= 0 do qi ←− ri−1 quot ri si+1 ←− si−1 − qi si ri+1 ←− ri−1 rem ri ti+1 ←− ti−1 − qi ti i ←− i + 1 end-while return (ri−1 , si−1 , ti−1 ) 26 Satz. Der Algorithmus durchlaufe bei Eingabe (a, b) ∈ N2 , b 6= 0, genau ` Schleifen (` ∈ N). Dann ist rl+1 = 0. Für 1 ≤ i ≤ ` + 1 gilt: (1) ri < ri−1 falls i ≥ 2 (2) ggT(ri−1 , ri ) = ggT(a, b) (3) si a + ti b = ri 27 Folgerung. (i) Der Algorithmus terminiert. (ii) Er gilt r` = ggT(a, b) und s` · a + t` · b = ggT(a, b). 28 Nachtrag: Eindeutigkeit der Primfaktorzerlegung. Lemma. Seien a, b, p ∈ Z, p Primzahl. Dann p | (ab) =⇒ (p | a oder p | b). 29 Satz. Die Zerlegung einer Zahl n ∈ N, n ≥ 2, in Primzahlen ist eindeutig bis auf die Reihenfolge der Primfaktoren. D.h. gilt n = p1 · p2 . . . p r = q 1 · q 2 . . . q s mit r, s ≥ 1 und Primzahlen p1 , . . . pr , q1 , . . . , qs , so folgt r = s und es gibt eine bijektive Abbildung α : {1, 2, . . . , r} −→ {1, 2, . . . , r} so dass pi = qα(i) für 1 ≤ i ≤ r. 30 2.4 Rechnen modulo n Definition. Sei m ∈ N, m ≥ 1. Zwei Zahlen a, b ∈ Z heißen kongruent modulo m, falls m | (b − a). Man schreibt dafür a ≡m b oder a ≡ b ( mod m). Lemma. (1) ≡m ist eine Äquivalenzrelation in Z. (2) ≡m ist eine “Kongruenzrelation” in Z, d.h. für a, b, a0 , b0 ∈ Z gilt: a ≡m a0 ∧ b ≡m b0 =⇒ a + b ≡m a0 + b0 ∧ ab ≡m a0 b0 . 31 Definition. Für m, a ∈ Z, m ≥ 1, heißt die Äquivalenzklasse von a [a]m : = {x ∈ Z : x ≡m a} die Restklasse von a modulo m. Offensichtlich gilt a ≡m a0 ⇐⇒ 32 [a]m = [a0 ]m . Definition. Sei m ∈ N, m ≥ 1. Die Menge der Restklassen modulo m ist eine Partition von Z. Sie wird mit Zm (oder Z/(m)) bezeichnet. Also Zm = {[a]m : a ∈ Z}. 33 Lemma. Sei m ∈ N, m ≥ 1. Jede Restklasse modulo m enthält eine eindeutig bestimmte Zahl r ∈ {0, 1, . . . , m − 1}, welche mit Division mit Rest gewonnen wird: a = qm + r, 0≤r<m =⇒ a ≡m r r ≡m r0 0 ≤ r, r0 < m =⇒ r = r0 Folgerung. Zm = {[0]m , [1]m , . . . , [m − 1]m }, |Zm | = m. 34 Wir definieren “Operationen” (m ∈ N, m ≥ 1) + : Zm × Zm −→ Zm , ([a]m , [b]m ) 7−→ [a + b]m − : Zm −→ Zm , [a]m 7−→ [−a]m · : Zm × Zm −→ Zm , ([a]m , [b]m ) 7−→ [a · b]m Behauptung. Diese Abbildungen sind wohldefiniert. 35 Satz. Sei m ∈ N, m ≥ 1. Die Menge Zm mit den Abbildungen +, −, · ausgezeichneten Elementen [0]m , [1]m ist ein kommutativer Ring. Man schreibt: [a]m + [b]m : = [a + b]m −[a]m : = [−a]m [a]m · [b]m : = [a · b]m 36 und den Beweis. Es müssen die folgenden Rechenregeln gezeigt werden: Für α, β, γ ∈ Zm gelten (α + β) + γ = α + (β + γ) α+β = β+α α+0 = 0+α=α α + (−α) = (−α) + α = 0 (Inverse bzgl. +) (α · β) · γ = α · (β · γ) (· ist assoziativ) α·β = β·α α·1 = 1·α=α α · (β + γ) = α·β+α·γ (+ ist assoziativ) (+ ist kommutativ) (0 ist Neutralelement von +) (· ist kommutativ) (1 ist Neutralement von ·) (Distributivgesetz) 37 Zeigen exemplarisch das Distributivgesetz α · (β + γ) = α · β + α · γ 38 Bemerkung. Sei m ∈ N, m ≥ 1. Die Abbildung f : Z −→ Zm : a 7−→ [a]m erfüllt folgende Eigenschaften: für a, b ∈ Z gilt f (a + b) = f (a) + f (b) f (−a) = −f (a) f (a · b) = f (a) · f (b) f (0) = [0]m , f (1) = [1]m . Allgemein nennt man eine Abbildung f : R → S zwischen kommutativen Ringen mit diesen Eigenschaften einen Ringhomomorphismus. Das obige f ist also ein surjektiver Ringhomomorphismus. 39 Definition. Sei R ein kommutativer Ring, a ∈ R. (1) a heißt Einheit, falls es b ∈ R gibt mit a · b = 1 (b heißt Inverse von a). (2) a heißt Nullteiler, falls es ein b ∈ R\{0} gibt mit a · b = 0. Bemerkung. (1) Ist a ∈ R eine Einheit, so ist seine Inverse eindeutig bestimmt. Diese wird mit a−1 bezeichnet. (2) Sind a, b Einheiten, so auch a−1 und a · b. Ferner ist 1 eine Einheit. (3) 0 ist ein Nullteiler. Es gilt {a : a Einheit } ∧ {a : a Nullteiler } = ∅. 40 Bemerkung. Sei R ein kommutativer Ring. Dann R ist ein Körper ⇐⇒ {a ∈ R : a Einheit } = R\{0}. Bezeichnung: R× : = {a ∈ R : a Einheit } heißt die Einheitengruppe des Ringes R. Was sind die Einheiten in Zm ? Für welche m ist Zm ein Körper? 41 Satz. Sei m ∈ N, m ≥ 1. Dann Z× m = {[a]m : a ∈ Z, ggT(a, m) = 1}. Ergänzung. Der Beweis zeigt, dass Inversen mittels des erweiterten Euklidischen Algorithmus berechnet werden können. 42 Satz. Sei m ∈ N, m ≥ 1. Der Restklassenring Zm ist genau dann ein Körper, wenn m eine Primzahl ist. 43 Die endlichen Körper Zp sind außerordentlich wichtig in der Informatik. Andere Bezeichnung dafür: Fp = Zp für eine Primzahl p. Sie haben Anwendungen in: - Codierungstheorie - Kryptographie - Komplexitätstheorie - usw. 44 2.5 Satz von Euler und effizientes Potenzieren Definition. Die Eulersche Phi-Funktion (L. Euler, 1707-1783) ist definiert durch ϕ(m) : = |Z× m| für m ∈ N, m ≥ 1. Gemäß unserer Charakterisierung von ϕ(m) gilt ϕ(m) = |{a ∈ N : 0 ≤ a < m, ggT(a, m) = 1}|. Bemerkung. Für eine Primzahl p gilt ϕ(p) = p − 1, da ggT(a, p) = 1 für 1 ≤ a < p. 45 Satz. Für eine Primzahl p und e ∈ N, e ≥ 1, gilt ϕ(pe ) = pe−1 (p − 1). Proposition. Seien p, q verschiedene Primzahlen. Dann gilt ϕ(pq) = (p − 1)(q − 1). Beweis als Übungsaufgabe. 46 Satz von Euler. Seien a, m ∈ Z teilerfremd und m ≥ 1. Dann gilt aϕ(m) ≡m 1. Für den Beweis holen wir etwas aus. 47 Definition. Eine Menge G mit Abbildungen G × G −→ G, (a, b) −→ a ◦ b G −→ G, a −→ a und einem ausgezeichneten Element e ∈ G heißt Gruppe, falls folgende Rechenregeln für alle a, b, c ∈ G gelten: (a ◦ b) ◦ c = a ◦ (b ◦ c) (Assoziativität) a◦e = e◦a=a (Neutralelement) a◦a = a◦a=e (Inverse). Gilt zusätzlich das Kommutativitätsgesetz a ◦ b = b ◦ a für a, b ∈ G so heißt G abelsch (oder kommutativ). 48 Beispiel. Sei R ein kommutativer Ring. 1. R ist mit den Festsetzungen a : = −a, a ◦ b : = a + b, e: = 0 eine abelsche Gruppe. Diese heißt die additive Gruppe des Rings und wird mit (R, +) bezeichnet. Beispiel: (Z, +), (Q, +), (R, +), (Zm , +) 49 2. R× = {a ∈ R : a Einheit in R} ist mit den Festsetzungen a ◦ b : = a · b, a : = Inverse von a, e: = 1 eine abelsche Gruppe. Diese heißt die Einheitengruppe des Rings und wird mit (R× , ·) bezeichnet. Z.B. (Z× = {−1, 1}, ·), (Q× = Q\{0}, ·) Besonders interessant ist die Einheitengruppe Z× m von Zm . 50 Man schreibt die Operation ◦ in G manchmal additiv: a ◦ b = a + b, e = 0 oder multiplikativ: a ◦ b = a · b, e = 1. 51 Definition. Sei G eine Gruppe mit multiplikativ geschriebener Operation. Die Potenzen von g ∈ G werden rekursiv definiert durch g0 : = 1 g n+1 : = (g n ) · g für n ∈ N. Außerdem definiert man für n ∈ N und g ∈ G g −n : = (g)n . Bemerkung. g = g −1 . Mit Induktion zeigt man leicht das Potenzgesetz g n · g m = g n+m 52 für n, m ∈ Z. Bezeichnung. Eine Gruppe G heißt endlich, falls die Menge G endlich ist. Satz. Sei G eine endliche abelsche Gruppe (multiplikativ geschrieben). Dann gilt g |G| = 1 für alle g ∈ G. 53 Wenden diesen Satz auf die Gruppe G = Z× m an. Satz von Euler. Seien a, m ∈ Z teilerfremd und m ≥ 1. Dann gilt aϕ(m) ≡m 1. 54 Der Satz von Euler liefert für eine Primzahl m = p folgendes Ergebnis: Kleiner Satz von Fermat (1601-1655) Für eine Primzahl p und a ∈ Z mit p - a gilt ap−1 ≡p 1. 55 Wie berechnet man die Potenz g n in einer Gruppe effizient? 56 Algorithmus “Square and Multiply” Eingabe: Gruppe G, g ∈ G, n ∈ N Ausgabe: g n x ← 1; y ← g; k ← n {Kommentar: g n = y k · x} while k > 0 do if 2 | k then y ← y 2 ; k ← k/2 else x ← xy; y ← y 2 ; k ← end-if end-while return(x) end. 57 (k−1) 2 Behauptung. Sei n = α`−1 2`−1 + . . . + α1 2 + α0 mit a`−1 = 1, αi ∈ {0, 1}. Für 1 ≤ i ≤ l gilt nach dem i-ten Schleifendurchgang x=g y=g αi−1 2i−1 +...+α0 2i k = α`−1 2`−1−i + . . . + αi+1 2 + αi Dies folgt leicht mit Induktion nach i. Insbesondere gilt nach dem `-ten Schleifendurchgang x=g α`−1 2`−1 +...+α0 = gn . Die Ausgabe des Algorithmus ist also tatsächlich g n . 58 2.6 Das RSA Kryptosystem • Bob möchte Alice eine geheime Nachricht übers Internet schicken. • Dazu wird der Klartext x von Bob verschlüsselt zum chiffrierten Text y. Dieser wird übers Internet verschickt. Anschließend entschlüsselt Alice den Text y. • Traditionellerweise verwenden Alice und Bob zum Ver- und Entschlüsseln den gleichen geheimen Schlüssel. • Der sichere Schlüsselaustausch kann problematisch sein. 59 Revolutionäre Idee von Diffi und Hellmann (1976) der asymmetrischen Kryptosysteme: • Jeder Teilnehmer hat einen öffentlichen und einen privaten Schlüssel • Ferner hat man in Abhängigkeit dieser Schlüssel eine Verschlüsselungsfunktion E (encrypt) Entschlüsselungsfunktion D (decrypt) Gewünschte Eigenschaften 1. Korrekte Entschlüsselung: Für jeden Klartext x gilt D(E(x)) = x. 2. Public Key Eigenschaft: Aus dem privaten Schlüssel kann der öffentliche Schlüssel effizient berechnet werden, aber nicht umgekehrt. 3. Die Funktion E und D sind effizient berechenbar. 60 Jeder Teilnehmer erzeugt für sich einen privaten Schlüssel und berechnet daraus den öffentlichen Schlüssel. Der öffentliche Schlüssel wird publiziert. Ist es überhaupt möglich, so ein System zu konstruieren? Ja! Mittels Zahlentheorie. 61 RSA System Seien p, q verschiedene Primzahlen, n = pq Sei d ∈ N mit ggT(d, ϕ(n)) = 1, d < ϕ(n). Privater Schlüssel: (p, q, d). Berechne e ∈ N mit ed ≡ϕ(n) 1, e < ϕ(n), mittels dem erweiterten Euklidschen Algorithmus. Öffentlicher Schlüssel: (n, e). Verschlüsselungsfunktion E : Zn −→ Zn , x 7→ xe Entschlüsselungsfunktion D : Zn −→ Zn , y 7→ y d 62 Die Funktionen E und D können mittels des Algorithmus “Square and Multiply” effizient berechnet werden. Korrekte Entschlüsselung? Proposition. Seien e, d, n wie im RSA System. Dann gilt für alle x ∈ Z xed ≡n x. 63 Zur “Sicherheit” Satz. Die folgenden drei Probleme sind “polynomialzeitäquivalent“ (gegeben n) (1) Faktorisierung von n (2) Berechnen von ϕ(n) (3) Berechnen von d Wir verzichten auf den Beweis. Die Faktorisierung von n = pq für Primzahlen p, q etwa gleicher Größe (z.B. 100 Dezimalstellen) gilt als sehr schwieriges Problem. Anderseits kann man leicht Primzahlen dieser Größe erzeugen. 64