Kapitel 4 Euklidischer Algorithmus und RSA-Schema Der nun zu besprechende euklidische Algorithmus“ hat seine historische Wurzel in dem Be” streben in der Antike, die Verhältnisrechnung mit geometrischen Größen zu begründen (Kommensurabilitätsbetrachtungen). Bei Euklid sollen zwei Strecken mit einem Maßstab ausgemessen werden; dies gelingt gerade mit einem Maßstab, der die Länge des größten gemeinsamen Teilers besitzt. Der euklidische Algorithmus gestattet es, den größten gemeinsamen Teiler (siehe unten) zweier Zahlen effizient zu berechnen. Kryptographie ist als Lehre von der Verschlüsselung von Nachrichten in Zeiten der elektronischen Kommuniukation von überragender Bedeutung. Die modulare Arithmetik gestattet es, solche Techniquen sehr durchschaubar anzubieten. Durch die Quantenkryptographie ist ein ernstzunehmender (physikalischer) Konkurrent für die algebraische Kryptographie entstanden. 4.1 Euklidischer Algorithmus Wir beschreiben nun den euklidischen Algorithmus. Er basiert auf folgender Beobachtung: Lemma 4.1.1 Sei a ∈ Z und b ∈ N. Dann folgt aus der Darstellung a = qb + r , q ∈ Z, die Aussage ggT(a, b) = ggT(b, r) . Beweis: Ist d ein Teiler von a, b, dann ist d ein Teiler von b und r und umgekehrt (siehe Folgerung 3.2.2). Die Interpretation von Lemma 4.1.1 ist, dass durch fortschreitende Division mit Rest aus dem Ausgangspaar (a, b) Paare (a′ , b′ ) gebildet werden können, die denselben größten gemeinsamen Teiler besitzen. Algorithm 1 Der euklidische Algorithmus EIN a, b ∈ Z ; o.E. a ≥ b > 0 . Schritt 0 a′ := a, b′ := b . Schritt 1 (a′ , b′ ) := (b′ , r), wobei a′ = qb′ + r mit 0 ≤ r < b′ ist. Schritt 2 Ist r = 0, gehe zu AUS. Ist r 6= 0, setze a′ := b′ , b′ := r, gehe zu Schritt 1. AUS d := b′ = ggT(a, b) . Die Aussage, dass d der größte gemeinsame Teiler von a, b ist, falls die Situation r = 0 erreicht wird, folgt aus dem Lemma 4.1.1 unter der Beobachtung, dass ggT(b′ , 0) = b′ ist. Bleibt 35 noch zu klären, dass die Situation r = 0 in endlich vielen Schritten wirklich erreicht wird. Dies folgt aber aus der Tatsache, dass für zwei aufeinanderfolgende Durchläufe von Schritt 1 mit (a′ , b′ ) , (a′′ , b′′ ) sicherlich 0 ≤ b′′ < b′ , b′ , b′′ ∈ N0 gilt. Also muss schließlich das Verfahren bei r = 0 abbrechen. Wir geben dem euklidischen Algorithmus, wohlwissend, dass der Schritt 1 nur endlich oft durchlaufen wird, eine explizite Fassung: Euklidischer Algorithmus Kettenbruchentwicklung a b r0 r1 r1 r2 r0 := a , r1 := b, r0 = q1 r1 + r2 , 0 < r2 < r1 , r1 = q2 r2 + r3 , 0 < r3 < r2 , .. . .. . rk−1 = qk rk + rk+1 , 0 < rk+1 < rk , rk = qk+1 rk+1 , = r0 r1 = q1 + rr12 = q2 + rr23 .. . .. . rk−2 rk−1 rk rk+1 = qk + r rk k−1 = qk+1 In dieser Darstellung ist rk+1 = rk−1 ⊓ rk = · · · = r0 ⊓ r1 = a⊓b = ggT(a, b) , nach Lemma 4.1.1. Beispiel 4.1.2 Sei a = 48 , b = 18 . Wir erhalten 48 48 = 2 · 18 + 12 18 = 1 · 12 + 6 18 18 12 12 = 2 · 6 Also gilt: ggT(48, 18) = 6 . Die geometrische Interpretation als wechselseitige Wegnahme“, ” wie sie schon bei Euklid bei Kommensurabilitätsbetrachtungen zu finden ist, findet sich in Abbildung 4.1: kleinere Strecken werden mehrfach auf einer größeren Strecke abgetragen. Da das Vorgehen im obigen Beispiel abbricht, sagt man, dass a = 48 und b = 18 ein gemeinsames Maß haben, nämlich 6. (Bricht ein solches Verfahren nicht ab, dann heißen a, b inkommensurabel, wie dies etwa bei der Diagonalen√und Seite im Einheitsquadrat der Fall ist, da ja 2 irrational ist.) 12 6 6 6 6 Abbildung 4.1: Wechselwegnahme Aus der obigen Darstellung des euklidischen Algorithmus lesen wir a r0 r2 1 1 1 = = q1 + = q1 + r1 = q1 + = q1 + = ... (4.1) r 3 1 b r1 r1 q 2 + r2 q2 + r2 r4 q3 + r3 rk+1 ab; wir wissen dabei, dass stets 0 < r < 1 gilt und dass das Schema nach k Schritten abk bricht, denn in formaler Interpretation haben wir rk+2 = 0 . Die berechneten Größen q1 , . . . , qk+1 schreiben wir als a [q1 , . . . , qk+1 ] oder = [q1 , . . . , qk+1 ] b 36 auf und bezeichnen dies als Kettenbruch. Der Kettenbruch kann mitunter auch sehr lang“ ” sein. In vielen Fällen ist man schon mit einer Näherung [q1 , . . . , ql ] , 1 ≤ l < k + 1 , zufrieden, d.h. mit der Näherung, die entsteht, wenn man rl rl+1 =0 setzt. Bemerkung 4.1.3 C. Huygens (1629–1695) entwickelte Kettenbruchentwicklungen, als er ein Zahnradmodell (siehe Abbildung 4.4) des Sonnensystems bauen wollte. Gesucht wurden möglichst “einfache Brüche“ für die gelten sollte: Umlaufzeit von Planet 1 Zahnzahl von Zahnrad 1 = . Zahnzahl von Zahnrad 2 Umlaufzeit von Planet 2 Werden die Umlaufzeiten der Planeten sehr genau gemessen, dann kann rechts ein Bruch mit sehr großem Zähler und Nenner entstehen. Die Beispiele 4.1.7, 4.1.9 illustrieren dies. Beispiel 4.1.4 Die Zahlen a = 77708431 b = 2640858 beschreiben das Verhältnis der Umlaufzeiten des Saturn in Bezug auf die Erde. Huygens wählte dafür den Näherungsbruch 206 7 . Er ergibt sich, wenn man den Kettenbruch geeignet abbricht. Der exakte Kettenbruch ist a = [29; 2, 2, 1, 5, 1, 4, 1, 1, 2, 1, 6, 1, 10, 2, 2, 3] b und wir erhalten a ∼ 29 + b 1 = 29 + 1 2+ 2+ 1 1 1 7 3 = 206 . 7 Beispiel 4.1.5 Die Zahlen a = 71755875 b = 61735500 kommen in Berechnungen des Astronomen Aristarchus von Samos vor. Für ab verwendet er die 43 . Sie ergibt sich, wenn man den Kettenbruch geeignet abbricht: Näherung 37 a 1 . ∼1+ b 6 + 61 Beispiel 4.1.6 Die Umlaufzeit der Erde um die Sonne beträgt ziemlich genau 365 + 104629 Tage . 432000 Aus der Kettenbruchentwicklung 104629 = [0; 4, 7, 1, 3, 6, 2, 1, 170] 432000 ergeben sich Ansätze für Kalender: 37 [0] = 0 [0; 4] = Keine Schaltjahre (Anpassung von Zeit zur Zeit durch Hinzufügen eines Tages) 1 4 [0; 4, 7, 3, 6] = Alle vier Jahre ein Schalttag 194 801 In 800 Jahren lässt man sechs Schaltjahre ausfallen (und zwar in den Jahren, deren Jahreszahlen durch 400 teilbar ist.) Beispiel 4.1.7 Kettenbrüche kann man auch für irrationale Zahlen konstruieren; sie sind dann √ natürlich unendliche Kettenbrüche. Wir zeigen dies am Beispiel x = 2 durch einen Trick“ ” (es ließe sich auch anders vorgehen): wir haben die Identitäten x= √ 2, x = 1 + 1 1 , x−1= . 1+x 2 + (x − 1) Aus der letzteren lesen wir den Kettenbruch für x − 1 ab und durch Addition mit 1 erhalten wir √ 2 = [1; 2, 2, 2, . . . ] . Beachte: Da a1 ⊓ a2 ⊓ · · · ⊓ an = a1 ⊓ (a2 ⊓ · · · ⊓ an ) gilt, ist klar, dass wir nun auch ein Verfahren haben, das den größten gemeinsamen Teiler von a1 , . . . , an bereitstellt: Man hat es nur mehrmals anzuwenden. Eine wichtige Konsequenz aus dem euklidischen Algorithmus ist Satz 4.1.8 (Lemma von Bezout) Seien a, b ∈ Z . Dann gibt es Zahlen s, t ∈ Z mit ggT(a, b) = sa + tb . Abbildung 4.2: Zahnräder Beweis: O.E. a ≥ b > 0 . Die Aussage folgt dadurch, dass wir den euklidischen Algorithmus in der expliziten Fassung rückwärts lesen. Wir strukturieren dies, indem wir nachrechnen, dass für 0 ≤ i ≤ k + 1 gilt ri = si a + ti b , mit si , ti ∈ Z. (4.2) Dies ergibt sich so: Für i = 0 setze s0 := 1, t0 := 0 und für i = 1 setzte s1 := 0, t1 := 1 . Nun setzen wir si+1 := si−1 − qi si , ti+1 := ti−1 − qi ti , 1 ≤ i ≤ k. (4.3) Dann gilt offenbar die obige Aussage. Beispiel 4.1.9 Wir betrachten wieder Beispiel 4.1.2. Für das Tupel (ri , qi , si , ti ) haben wir dann nach (4.2) und (4.3) die folgende Sequenz (× bedeutet uninteressant oder nicht definiert): (36667, ×, 1, 0), (12247, 2, 0, 1), (12173, 1, 1, −2), (74, 164, −1, 3), (37, ×, 165, −494). Also haben wir 37 = 36667 ⊓ 12247 = 165 · 36667 − 494 · 12247 38 Korollar 4.1.10 Seien a, m ∈ Z, die nicht beide Null sind, mit ggT(a, m) = 1 . Dann gibt es b ∈ Z mit m|(ab − 1) . Beweis: Wir wissen aus dem Lemma von Bezout 1 = ax + my mit x, y ∈ Z . Setze b := x . Dann ist ab − 1 = −my = m(−y) . Die obige Folgerung können wir so lesen, dass bei Teilerfremdheit von a und m zu a eine Zahl b existiert, die die Gleichung a · b ≡ 1 mod m löst, d.h. die Restklasse [a] hat modulo m das Inverse [b] . 4.2 Komplexität Der euklidische Algorithmus gilt als Musterbeispiel“ eines effizienten Algorithmus mit vielfältigen ” Anwendungen. Eigentlich müssten wir nun eine Analyse der Komplexität des euklidischen Algorithmus durchführen, wenn wir die Behauptung, dass dieser Algorithmus sehr effizient ist, belegen wollten. Wir verzichten darauf, ohne zu vergessen, auf ein Beispiel hinzuweisen, dass den worst case des Algorithmus beschreibt: die Berechnung des größten gemeinsamen Teiler zweier aufeinanderfolgender Fibbonacci-Zahlen. Nach Fibonacci1 wird die Vermehrung eines Kaninchenpaares in folgender Weise in Abhängigkeit von der Zeit beschrieben: Ein zur Zeit t = 0 geborenes Kaninchenpaar wirft vom 2. Monat an in jedem Monat ein weiteres Paar. Die Nachkommen folgen dem Vorbild der Eltern. Alle Kaninchen überleben. Damit ergibt sich rekursiv folgende Vorschrift f0 := f1 := 1 , fn+1 := fn + fn−1 , n ∈ N . Die Zahlen fn , n ∈ N, nennt man Fibonacci–Zahlen. Sie haben viele schöne, interessante Eigenschaften, hier sind sie von Interesse bei der Untersuchung der Schnelligkeit des euklidischen Algorithmus. Im euklidischen Algorithmus werden die Reste rk+1 umso schneller klein, je größer die Quotienten qk sind. Betrachten wir den euklidischen Algorithmus für das Paar zweier aufeinanderfolgenden Fibonacci–Zahlen, also a = fn+1 , b = fn . Aus der Rekursionsgleichung der Fibonacci– Zahlen folgt unmittelbar fn+1 = 1 · fn + fn−1 fn = 1 · fn−1 + fn−2 .. . f3 = 1 · f2 + f1 f2 = 1 · f1 Da f1 = 1 gilt, folgt: je zwei aufeinanderfolgende Fibonacci-Zahlen sind teilerfremd und jeder Quotient qk ist gleich 1. Dies ist der ungünstigste Fall, was die Anzahl der Schritte in Abhängigkeit von der Größe der Ausgangszahlen betrifft. Beim euklidischen Algorithmus für fn+1 , fn sind wie gesehen n Schritte nötig. Da fn in Abhängigkeit von n exponentiell wächst (siehe folgendes Beispiel 4.2.1), folgt, dass die Anzahl der Schritte beim euklidischen Algorithmus zur Berechnung eines größten gemeinsamen Teilers ggT(a, b) höchstens logarithmisch in der Stellenanzahl der Eingabedaten a, b, d.h. linear mit der Stellenzahl von a, b wächst: der Aufwand ist also vergleichbar mit dem Aufwand, der bei der Multiplikation von a und b anfällt. Der euklidische Algorithmus ist damit eine sehr effiziente Methode zur Berechnung des größten gemeinsamen Teilers großer Zahlen. Er benötigt nicht die Primfaktorzerlegung der Zahlen a, b . 1 Im Buch liber abacci“ von Leonardo von Pisa (Fibonacci, Leonardo (1180? — 1250?)) ” 39 Beispiel 4.2.1 Sieht man ein Stück der Fibonacci-Folge an, so stellt man fest, dass sie schnell wächst: 1,1,2,3,5,8,13,21,34,. . . . Es ist offensichtlich, dass die Folge monoton wachsend ist, und man überzeugt sich leicht, dass sie exponentiell wächst, denn durch die Monotonie ergibt sich: fn = fn−1 + fn−2 ≤ 2fn−1 und folglich fn ≤ 2n . √ fn = fn−1 + fn−2 ≥ 2fn−2 und folglich f2n ≥ 2n−1 , fn ≥ ( 2)n−1 . √ Also liegt das Wachstum zwischen 2 und 2 . Man kann dies noch viel genauer analysieren, für den Zweck der Analyse des euklidischen Algorithmus reicht dies aus. Die Fibonacci-Zahlen sind eng mit dem goldenen Schnitt verknüpft. Aus der Darstellung fn + fn−1 fn−1 1 fn+1 = =1+ =1+ fn fn fn fn fn−1 folgt, die Existenz von Φ := limn fn+1 vorausgesetzt, die Identität fn Φ=1+ 1 . Φ Daraus lesen wir den unendlichen Kettenbruch für die goldene Schnittzahl Φ ab: Φ = [1; 1, 1, 1, 1, . . . ] . Betrachtet man davon nur endliche Abschnitte als Näherung für Φ, dann erhält man schlechte“ ” Approximationen von Φ ; man nennt Φ deshalb die irrationalste Zahl“ 2 . Der Grund dafür ” ist, dass jeder Eintrag im Kettenbruch die kleinste Einheit ist, die gerade ein Abbrechen noch verhindert, nämlich 1. Es deckt sich mit der Tatsache, dass der euklidische Algorithmus für die Brüche der Fibonacci-Zahlen besonders langsam ist. Dies steht im Gegensatz zu einer anderen irrationalen Zahl, der Kreiszahl π . Ihre Kettenbruchentwicklung ist π = [3; 7, 15, 1, . . . ] . Schon der endliche Kettenbruch [3; 7] = 22 7 ist eine sehr gute Approximation von π . Der Grund ist, dass der nächste Eintrag im Kettenbruch von π die Zahl 15 ist. 4.3 Kryptographie Zum Verbergen von Nachrichten wird der vorliegende Klartext (Quellencode) üblicherweise in sogenannten Nachrichteneinheiten (Buchstaben, Buchstabengruppen, Blocks, Zifferngruppen) codiert. Solche Codiersysteme bezeichnen wir nun entsprechend ihrer Zielsetzung Kryptosysteme.3 Wir unterscheiden im folgenden nun nicht mehr Nachricht und Nachrichteneinheit. Durch eine Übermittlung von Nachrichteneinheiten durch einen Sender A an einen Empfänger B, codiert durch ein Kryptosystem, entsteht ein Geheimtext. Es ist das Ziel, das Kryptosystem so zu entwerfen und zwischen A und B abzusprechen, dass zwar B den Text decodieren kann, ein Unbefugter jedoch nicht. Gelingt dies einem Unbefugten, so spricht man vom Brechen des Kryptosystems. Die prinzipielle Lösung, Nachrichten geheim zu übermitteln, sieht so aus: 2 3 Diese Tatsache spielt sogar eine Rolle in der so genannten Chaostheorie. κρvπτ óς (griech.)= geheim 40 • A codiert (verschlüsselt) dazu die Nachricht mittels einer Schlüsselabbildung K, die auf der Menge M der Nachrichten injektiv operiert, also: K : M −→ M injektiv. • Dann sendet A an B die verschlüsselte Nachricht K(a) (anstelle von a). Der Empfänger B decodiert (entschlüsselt) mittels einer Schlüsselabbildung D, die ebenso auf der Menge der Nachrichten operiert, also: D : M −→ M injektiv. • Die Schlüssel sollten so zusammenpassen, daß D(K(a)) = a gilt, und zwar für alle möglichen Nachrichten a. Dies bedeutet D = K −1 . In der Behandlung der Schlüssel K, D – privat oder öffentlich – unterscheiden sich die Kryptosysteme. Sie sollten sich aber nicht im Grundsatz der Kryptographie unterscheiden, der da lautet: Die Sicherheit eines Kryptosystems darf nicht von der Geheimhaltung des Algo” rithmus“, d.h. vom Verfahren zur Ermittlung von K(m) oder D(m) abhängen. Die Sicherheit gründet sich nur auf die Geheimhaltung des Schlüssels. Private key – Kryptosysteme, sie werden auch klassische Kryptosysteme genannt, zeichnen sich dadurch aus, dass A, B geheim die Schlüssel K, D austauschen. Hierin liegt ihre Schwäche: Wenn die Schlüssel öffentlich werden, können die Nachrichten, die A und B austauschen, mitgelesen werden. Beide Beteiligte können codieren und decodieren; es liegt also eine symmetrische Situation vor. Man spricht daher auch von symmetrischen Kryptosystemen. Public key – Kryptosysteme zeichnen sich dadurch aus, dass A die Nachricht, die er an B senden will, mit dem öffentlichen Schlüssel von B codiert und so an B sendet. B entschlüsselt diese Nachricht mit seinem geheimen Schlüssel D . Es liegt also eine asymmetrische Situation vor: A kann nur codieren, aber nicht decodieren. Man spricht daher auch von asymmetrischen Kryptosystemen. Da der Schlüssel K öffentlich ist, kann man sich doch wohl auch die Inverse D von K verschaffen und Geheimhaltung wäre nicht möglich. Hier setzen die (algebraischen) Methoden zur Erzeugung von Schlüsseln K an, die in der Praxis die Ermittlung von D (nahezu) unmöglich machen. Viele Verfahren der Verschlüsselung machen sich eine Abbildung f : D −→ W zu Nutze, die folgende Eigenschaften hat: 1. Die Auswertung der Abbildung ist einfach, oder anders ausgedrückt die Vorwärtsabbildung ist einfach. 2. Die Bestimmung von Lösungen von f (u) = w ist schwierig, oder anders ausgedrückt, die Rückwärtsabbildung ist schwierig zu bestimmen. 3. Die Bestimmung der Lösungen von f (u) = w wird leicht unter einer Zusatzinformation (trapdoor-Information). Dafür gibt es viele Beispiele. Hier sind einige prominente Realisierungen. • Primfaktorzerlegung: man kann schnell zwei große Zahlen multiplizieren, es ist schwer eine sehr große Zahl in zwei Teiler zu zerlegen. Trapdoor–Information: beide Teiler sind etwa gleich groß. 41 • Diskreter Logarithmus • Diskrete Quadratwurzeln; siehe Übungen. • Integration/Differentiation; lernen wir noch kennen. • Wärmeleitungsgleichung vorwärts und rückwärts in der Zeit: die Vorwärtsdiffusion glättet die Information in einem Wärmesignal“ sehr stark. Trapdoor–Information: Stärke und ” Qualität des Wärmesignals. Im Folgenden wird gerade die Potenzierung modulo eines Moduls gebraucht: w := ax mod m . w = ax mod m Ein schnelles Verfahren, das nach x auflöst ( Diskreter Logarithmus“), kennt man nicht. ” 4.4 RSA–Schema Öffentliche Schlüsselsysteme/Kryptosysteme wurden 1976 von Diffie und Hellman vorgeschlagen. Das RSA-Schema ist ein Kryptosystem, das mit öffentlichen Schlüsseln arbeitet. Es wurde 1977 von Ronald Rivest, Adi Shamir, Leonard Adleman vorgelegt. Es stellt sich so dar: • Jede Nachricht wird dargestellt in Form einer oder mehrerer natürlicher Zahlen a ∈ {0, . . . , m−1} =: N . (In der Praxis hat man die konkreten Nachrichten in die zulässigen Nachrichten aus N durch Codes (etwa den ASCII–Code, wobei die Wörter als natürliche Zahlen zu interpretieren sind) umzuwandeln. • Wähle s ∈ N und codiere mit Ks : N ∋ a 7−→ as mod m ∈ N • Wähle t ∈ N und decodiere gemäß Dt : N ∋ b 7−→ bt mod m ∈ N Man beachte, dass die Auswertung von Ks bzw. Dt (Potenzierung) im allgemeinen sehr effizient realisiert werden kann, während das Auffinden der t–ten Wurzel mod n, die benötigt wird, um Dt aus Ks zu finden, schwierig ist; siehe oben. Voraussetzungen, die sicherstellen, dass die Schlüssel zusammenpassen, sind: m = p · q , p, q Primzahlen , 1 < s < ϕ(m), ggT(s, ϕ(m)) = 1, ts ≡ 1 mod ϕ(m). (4.4) Hier ist ϕ(m) der Wert, den die Eulersche Phi–funktion ϕ für m annimmt. Sie Zählt damit die Anzahl der Elemente in Zm , die ein Inverses in Zm bezüglich der Multiplikation besitzen; siehe Lemma 4.1.10. Da p, q Primzahlen sind, folgt sehr einfach, dass ϕ(m) = ϕ(pq) = (p − 1)(q − 1) gilt. Aus dem folgenden Lemma geht hervor, dass die Schlüssel zusammenpassen. Lemma 4.4.1 Seien die Voraussetzungen (4.4) erfüllt. Dann gilt Dt ◦ Ks = id. Beweis: Wir wissen st = 1 + kϕ(m mit k ∈ Z. Wir zeigen zunächst ast − a ≡ 0 mod p 42 für alle a ∈ N . (4.5) Sei a ∈ N . 1. Fall: ggT(a, p) 6= 1. Hier ist, da p Primzahl ist, p ein Teiler von a; also a ≡ 0 mod p. Wenn p ein Teiler von a ist, dann ist p sicherlich ein Teiler von ast , d.h. ast ≡ 0 mod p und ast ≡ a mod p. 2. Fall: ggT(a, p) = 1. Wir zeigen die Behauptung (4.5) mit dem Satz von Fermat; siehe Satz 4.5.1: ast ≡ a1+kϕ(n) ≡ aakϕ(n) ≡ a(a(p−1) )k·(q−1) ≡ a 1k·(q−1) ≡ a mod p . Analog folgt p|(ast −a) ast − a ≡ 0 mod q , q|(ast −a), Daraus ergibt sich mit da p, q verschiedene Primzahlen sind, dass pq|(ast − a) gilt. Dies bedeutet aber mit m = pq, dass ast ≡ a mod m gilt. Beispiel 4.4.2 Wir geben ein illustrierendes Beispiel, für kryptographische Zwecke sind die Zahlen viel zu klein. Wir wählen p = 7, q = 11 . Dann ist m = 77, ϕ(m) = 6 · 10 = 60, und s = 23 kann als öffentlicher Schlüssel Verwendung finden. Wegen 1 = 5 · 60 + (−13) · 23 ist der geheime Schlüssel t = 47 . Die verschlüsselte Nachricht von a = 7 ist b := a23 mod 60 und wegen 74 = 1 mod 60 erhält man sehr schnell als verschlüsselte Nachricht b = 47 . Die entschlüsselte Nachricht ist a′ := b47 . Wegen 47 = −73 mod 60 errechnet mann schnell a′ = 7, also a′ = a . Nachdem wir nun gezeigt haben, dass das RSA-Schema korrekt arbeitet, bleibt zu fragen, ob es auch brauchbar im Sinne der Geheimhaltung ist. Halten wir fest: • Öffentliche Schlüsselzahlen: (m, s) . • Private Schlüsselzahlen: (m, t) . Jedermann kennt die öffentlichen Schlüsselzahlen, die Zahlen p, q und ϕ(m) spielen keine Rolle mehr und werden vernichtet“. ” Um den Geheimtext entschlüsseln zu können, müsste jemand die Zahl t berechnen. Dazu reicht es auch, die Zahl Public domain ϕ(m) zu kennen, denn mit Hilfe des euklidischen Algorithmus kann man dann eine Zahl t berechnen; siehe Folgerung m, s m,s 4.1.10. Die Zahl ϕ(m) kennt man, wenn man die Primfaktorzerlegung von m kennt. Denn dann ist m = pq und ϕ(m) = (p − 1)(q − 1). Umgekehrt, Sender/m,s Empfänger/m,s,t Nachricht wenn man m und ϕ(m) kennt, dann kennt man sogar die Primfaktorzerlegung von m, denn aus Abbildung 4.3: RSA-Schema pq = m , (p − 1)(q − 1) = ϕ(m) , errechnet man p + q = m − ϕ(m) + 1 , p − q = ± 43 p (m − ϕ(m) + 1)2 − 4m. Es ist also ganz einfach mit dem Auffinden des geheimen Schlüssels Dt , wenn man m faktorisieren kann. Und hier liegt die Stärke des RSA-Schemas: Es ist ein schwieriges Problem, eine große Zahl zu faktorisieren; Probiermethoden helfen hier nicht weiter, wenn m groß ist. Die schnellsten Faktorisierungsalgorithmen sind exponentiell in der Größe von m . Beispiel 4.4.3 Im Jahre 1990 wurde eine der meistgesuchten Faktorisierungen gefunden: Die 9 neunte Fermatzahl F9 = 22 + 1 = 2512 + 1 wurde in Primfaktoren zerlegt: F9 = 2424833 · k mit einem k ∈ Z . Die Lösung gelang, indem man das Problem in kleine Portionen aufteilte und häppchenweise löste. Es ist festzuhalten: Bisher hat niemand einen guten/schnellen Faktorisierungsalgorithmus gefunden und man hofft (im Interesse der Geheimhaltung), dass auch in Zukunft kein schneller Algorithmus gefunden wird. Wie soll man den Schlüssel wählen? In der heutigen Rechnertechnologie ist es möglich, m ∼ 10200 , p2 ∼ m , q 2 ∼ m zu realisieren. Die Wahl von s darf nicht zu klein ausfallen, da sonst ein verschlüsselter Text identisch mit dem Text selbst sein kann, d.h. dass ms = m für eine Nachricht m sein kann. Solche Fixpunkte“ von Ks haben zu tun ” mit kleinen Primteilern von p − 1 bzw. q − 1. Eine Anwendung des RSA–Schemas ist die elektronische Unterschrift. Ein Nachrichtengeber A beglaubigt seine öffentliche Mitteilung a an einen Empfänger B durch Hinzufügen der kodierten Nachricht Ks (a) ; Ks ist ein nur A bekannter Schlüssel. Ein Empfänger kann mit dem öffentlichen Dekodierer Dt von A die Gleichung a = Dt (Ks (a)) Abbildung 4.4: Patent in der Kryptographie überprüfen. Ist sie erfüllt, hat der Empfänger die Sicherheit, dass die Nachricht von A stammt. 4.5 Kleiner Satz von Fermat Satz 4.5.1 Sei a ∈ Z und sei p eine Primzahl. dann gilt ap ≡ a mod p 44 (4.6) Beweis: Wir beweisen das Resultat mit vollständiger Induktion, wobei wir o.E. annehmen dürfen: a ≥ 0 . a = 0: 0p − 0 = 0 ist durch p teilbar. Induktionsschluss: p p−1 p p p (a + 1) − (a + 1) = a + a + ··· + a + 1 − (a + 1) 1 p−1 Die Binomialkoeffizienten sind alle durch p teilbar, denn in der Darstellung p p(p − 1) · · · (p − k + 1) = 1 · 2···k k taucht p für 1 ≤ k ≤ p − 1 nur im Zähler auf. Damit folgt (a + 1)p − (a + 1) ≡ ap + 1 − (a + 1) ≡ ap − a mod p, was mit der Induktionsvoraussetzung (a + 1)p ≡ a + 1 mod p ergibt. Korollar 4.5.2 Ist a ∈ Z und p eine Primzahl mit ggT(a, p) = 1, dann gilt ap−1 ≡ 1 mod p (4.7) Beweis: Den Beweis überlassen wir dem Leser. Man muss das Kürzen in Kongruenzen rechtfertigen. 4.6 Anhang: Klassische Kryptosysteme Eines der ältesten symmetrischen Kryptosysteme ist das Verfahren von Cäsar4 . Er operiert mit dem lateinischen Alphabet M := {A, B, . . . , Y, Z} mit 26 Buchstaben, und nimmt als Schlüsselabbildung K die Verschiebung um drei Buchstaben: Klartext Geheimtext A D B E C F ... ... I M J N ... ... W Z X A Y B Z C Der Klartext AFFE wird also als DIIH übermittelt. Wenn wir die Menge M mit den Zahlen 0, . . . , 25 identifizieren, können wir die Schlüsselabbildung K so aufschreiben: K : {0, . . . , 25} ∋ x 7−→ x + 3 mod 26 ∈ {0, . . . , 25} Damit gelingt die Algebraisierung dieser Codierung; wir kommen darauf zurück. Kann der Cäsar–Code gebrochen werden? Ja, er kann mit der Statistikmethode gebrochen werden, wenn der zur Verfügung stehende Geheimtext nicht allzu kurz ist. Denn ein Geheimtext spiegelt die Häufigkeiten der Buchstaben in einem Text einer natürlichen Sprache wieder. Dazu reicht es für Texte, die mit dem deutschen Alphabet verfasst sind, meist aus, folgende Tabelle zu kennen: E : Häufigkeit ca. 17, 3% R : Häufigkeit ca. 8, 1% N : Häufigkeit ca. 10, 4% X : Häufigkeit ca. 0, 02% Diese unterschiedlichen Häufigkeiten bieten nun Angriffspunkte:5 Suche im Geheimtext nach dem häufigsten Buchstaben: Er wird wohl dem Buchstaben E entsprechen; suche im Geheimtext nach 4 G. Julius Cäsar, ∼ 60 v. Chr. Dieser Sachverhalt wird in der Erzählung “Der Goldkäfer“ von E.A. Poe sehr illustrativ beschrieben: Ein Geheimtext wird entschlüsselt durch Analyse der Buchstabenhäufigkeit (im Englischen). 5 45 dem zweithäufigsten Buchstaben: er wird wohl dem Buchstaben N entsprechen; suche nach . . . . Schließe eventuell verbliebene Lücken aus dem Sinnzusammenhang. Selbst, wenn der zur Verfügung stehende Geheimtext kurz ist, lässt sich der Cäsar–Code im allgemeinen dadurch brechen, dass man alle 26 Fälle durchprobiert: Hat die Nachricht einen Sinn, dann findet man sehr schnell einen Ansatzpunkt. Eine Verallgemeinerung ist, die Schlüsselabbildung K, erklärt auf der Menge {0, . . . , 25}, folgendermaßen zu definieren: K : {0, . . . , 25} ∋ x 7−→ ax + b mod 25 ∈ {0, . . . , 25} (a, b ∈ Z) Diese Schar von Schlüsselabbildungen – die Parameter a, b sind die Scharparameter – nennt man affine Schlüssel. Wählt man a = 3, b = 2, erhält man folgende Tabelle: Klartext Geheimtext A F B I C K ... ... I A J D ... ... W M X W Y Z Z C Allerdings führt dieser Vorschlag nicht immer zu einer brauchbaren Verschlüsselung. Etwa ergibt a = 2, b = 2 folgende Tabelle: Klartext Geheimtext A C B E C G ... ... I S J U ... ... W U X W Y Y Z Z Man stellt schnell fest, dass man für a nur Zahlen in {0, . . . , 25} nehmen darf, die sogenannte Einheiten in Z26 sind, d.h. solche Zahlen, für die es a′ ∈ Z gibt mit aa′ ≡ 1 mod 26 . Dies sind gerade die zu 26 teilerfremden Zahlen 1, 3, 5, 7, 11, 15, 17, 19, 21, 23, 25 . Dies zeigt uns, dass es insgesamt 312 = 12 · 26 solche Schlüsselabbildungen gibt. Wer hindert uns, die Schlüsselabbildung mit einem fairen Würfel“ mit 26 Seiten auszuwür” feln? Dies bedeutete, eine der 26! Permutation der 26 Buchstaben willkürlich herauszugreifen. Als Schlüssel müssten wir uns also die Permutation merken, eine Aufgabe, die ohne Merkzettel – wer verstekt ihn gut genug! – nicht zu leisten ist. Einen Kompromiß stellt folgender Vorschlag dar, mit Merkwort und einem Merkbuchstaben zu arbeiten: Wähle ein Merkwort und einen Merkbuchstaben, schreibe das Merkwort ohne Buchstabenwiederholung beginnend beim Merkbuchstaben unter das Alphabet und ergänze anschließend alphabetisch die noch fehlenden Buchstaben: Etwa mit dem Merkwort AFFENHAUS und dem Merkbuchstaben D: Klartext Geheimtext A X B Y C Z D A E F F E G N H H I U J S K B L C M D ... ... Y V Z W Der Klartext AFFE wird zum Geheimtext XEEF. Verzichtet man darauf, dass das Merkwort einen Sinn ergibt, kann man so wieder alle Permutationen erzielen. Die Schwäche der obigen Vorgehensweisen hat immer damit zu tun, dass wir mit einem Alphabet einer natürlichen Sprache arbeiten. Die Häufigkeitsindizien können zwar verschleiert werden, indem man den häufigen Buchstaben mehrere Kryptobuchstaben zuordnet, aber prinzipiell beseitigen kann man sie nicht. Von B. Vigenère stammt die Idee, die Cäsar–Verschiebung im Wechsel zu benutzen. Der Wechsel der Cäsar–Verschiebung wird durch ein Merkwort gesteuert, das nicht länger als der Klartext sein soll. Wir schreiben das Merkwort Buchstabe für Buchstabe über den Klartext, und zwar wiederholt solange, bis über jedem Buchstaben des Klartextes ein Buchstabe des Merkwortes zu stehen kommt. Bei der Verschlüsselung eines Klartextbuchstabens bestimmt nun der darüberstehende Buchstabe des Merkwortes die Cäsar–Verschiebung: Das verschobene Alphabet beginnt mit dem betreffenden Buchstaben des Merkwortes. Wir demonstrieren das Vorgehen mit dem Merkwort RODGAU und dem Klartext NIEDERRODEN. 46 Merkwort Klartext Geheimtext R N E O I W D E H G D J A E E U R L R R I O O C D D G G E K A N N (Der 1. Geheimtextbuchstabe E etwa kommt so zustande: Betrachte die Verschiebung des Alphabets, die mit R beginnt, ermittle dort, wie N verschlüsselt wird; man sieht mit E.) Der Angriffspunkt, den Schlüssel zu brechen, ist folgender: Gibt es im Klartext Textstücke mit gleicher Buchstabenfolge mit einem Abstand, der ein Vielfaches der Länge des Merkwortes ist, so entsprechen diesen Textstücken im Geheimtext Textstücke mit gleicher Buchstabenfolge. Die Idee, diese Beobachtung auszuschlachten, geht auf C. Babbage und F. W. Kasiski zurück. Wenn sich im Geheimtext zwei Textstücke mit gleicher Buchstabenfolge finden, so ist ihr Abstand vermutlich ein Vielfaches der Merkwortlänge. Bei Textstücken, die in einer Buchstabenfolge mit mehr als zwei Buchstaben übereinstimmen, kann man hier schon ziemlich sicher sein. Was ist das Ergebnis? Wir können zumindest die Merkwortlänge herausfinden. Hat man die Merkwortlänge l gefunden, weiß man dass die Klartextstaben 1, l+1, 2l+1, . . . mit derselben Cäsar–Verschiebung zustandegekommen sind. Nun schlägt die statistische Methode, einen Code zu brechen, wieder zu. Nun gehen wir mehr algebraisch an die Vorgehensweisen heran. Dazu greifen wir auf das zahlenmäßige Äquivalent {0, . . . , 26} des Alphabets {A,. . . ,Z} zurück. Zur Cäsar–Verschiebung gehört eine Schlüsselabbildung K : Z26 ∋ [x] 7−→ [ax + b] ∈ Z26 oder kurz K : Z26 ∋ x 7−→ ax + b mod 26 ∈ Z26 , Eine solche Abbildung enthält zwei Parameter a, b . b kann beliebig in {0, . . . , 25} gewählt werden, a muss, um die Injektivität der Schlüsselabbildung zu sichern, eine Einheit sein, d.h. es muss die Gleichung aa′ ≡ 1 mod 26 in Z26 lösbar sein mit einem a′ . Dann kann man auch die Umkehrabbildung D von K definieren: D : Z26 ∋ x 7−→ a′ x + b′ mod 26 ∈ Z26 ; dabei ist a′ := a−1 , b′ := −a−1 b . Wir sehen, dass für Verschlüsselung und Entschlüsselung derselbe Algorithmus nötig ist. Die statistische Codeanalyse drückt sich nun so aus: Es sind etwa von u, v ∈ Z26 die Urbilder x, y von K (x könnte E, y könnte N entsprechen). Den Code zu brechen reicht es nun aus, aus den Kongruenzen a′ u + b′ ≡ x mod 26 , a′ v + b′ ≡ y mod 26 die Parameter a′ , b′ zu berechnen. Im Rahmen der Betrachtungen der Kongruenzrechnung haben wir dazu Hilfsmittel kennengelernt. Hier bietet sich sofort an, die Kongruenzen zu subtrahieren: a′ (u − v) ≡ x − y mod 26 . Daraus erhalten wir a′ sofort, falls u − v eine Einheit ist, d.h. falls (u − v)z = 1 für ein z gilt: a′ ≡ z(x − y) mod 26 . Einsetzen von a′ ergibt b′ und schließlich insgesamt a, b . Damit ist D, K bekannt und der Code gebrochen. Wir skizzieren nun kurz die algebraische Seite, wenn wir als Nachrichteneinheiten im Klartext 2–Buchstaben–Blocks ansehen. (Wir sehen von der Tatsache ab, dass es nun eventuell geraten ist, den Zwischenraum ⊔ zum Alphabet hinzuzunehmen; wir hätten dann Z26 durch Z27 zu 47 ersetzen.) Es ist klar, dass es 26 · 26 Paare gibt. Um Anschluß an das oben schon Diskutierte zu finden, wollen wir diese Paare als Elemente von Z26·26 auffassen. Dies gelingt durch die Abbildung R : Z26 × Z26 ∋ ([x], [y]) 7−→ [26x + y] ∈ Z26·26 . Damit können wir die Frage der Verschlüsselung auf Z26·26 betrachten. Es gibt daher in Sachen affine Verschlüsselungsabbildungen nichts Neues zu erarbeiten. Allerdings benötigen wir zusätzliche Informationen, wenn wir einen affinen Code mit der Statistikmethode brechen wollen, nämlich eine Statistik über die Häufigkeit des Auftretens von Paaren. Hier ist eine Tabelle dazu: EN : Häufigkeit ca. 3, 8% CH : Häufigkeit ca. 2, 7% ER : Häufigkeit ca. 3, 7% DE : Häufigkeit ca. 2, 0% Beispiel 4.6.1 Der Klartext laute MATHE. Um Paare bilden zu können, bräuchten wir ein gerade Anzahl von Buchstaben. Dies erzwingen wir durch Anhängen eines Buchstabens, der den Sinngehalt der Nachricht nicht wesentlich stören sollte; wir ändern hier ab zu MATHEQ. Für eine affine Verschlüsselung wählen wir a = 3, b = 3 . MA TH MA : : : ∧ 3 · (26 · 12 + 0) + 3 3 · (26 · 19 + 7) + 3 3 · (26 · 9 + 0) + 3 = ∧ = ∧ = KD FY NZ Der Geheimtext lautet also KDFYNZ. Wir können mit Paaren auch anders umgehen: Wir lassen affine Abbildungen direkt auf den Paaren wirken. Dies erreichen wir, indem wir Paare als Vektoren in Z26 ×Z26 auffassen und affine Abbildungen auf solchen Vektoren wirken lassen. Ohne genauer auf Hintergründe einzugehen, schreiben wir die Schlüsselabbildung so auf: K : Z26 × Z26 ∋ z = (x, y) 7−→ Az + B ∈ Z26 × Z26 Dabei ist A eine Matrix mit Einträgen in Z26 und B ein Vektor mit Einträgen in Z26 ; die Größe Az entsteht als Produkt von A mit z in der üblichen Weise. Beispiel 4.6.2 Wir wählen: A := 2 3 7 8 , B := 1 2 . Wie sieht die Verschlüsselung von MATHEQ aus? 2 3 12 1 25 MA : + = 7 8 0 2 8 2 3 19 1 9 TH : + = 7 8 16 2 3 2 3 4 1 5 EQ : + = 7 8 16 2 2 = ∧ ZI = ∧ JD ∧ FC = Der Geheimtext lautet also ZIJDFC. Wie sieht nun in diesem Fall die Entschlüsselungsabbildung D aus? Halten wir uns an die Analogie zum Fall der affinen Abbildungen auf Z26 . D : Z26 × Z26 ∋ z = (x, y) 7−→ A′ z + B ′ ∈ Z26 × Z26 48 Dabei wählen wir die Matrix A′ mit Einträgen in Z26 so, daß AA′ = I wobei I die Einheitsmatrix ist, gilt. Ist dies möglich? Ja, es ist möglich, wenn die Determinante der Matrix A eine Einheit in Z26 ist. Damit berechnet sich dann A′ wie die Inverse von A im Fall R2,2 und B ′ ist gleich −A′ B . Etwa ist die Inverse von A aus dem obigen Beispiel gegeben durch 14 11 A′ = , 17 10 wobei die Determinante von A als 2 · 8 − 3 · 7 = −5 = 21 gegeben ist. (Beachte, 21 und 26 sind teilerfremd.) 4.7 1.) Übungen Sei p ein Modul und a ∈ N0 . Die Lösungen der Gleichung x2 ≡ a mod p heißen Quadratwurzeln. Bestimme die Quadratwurzeln zu p = 11 . 2.) Sei p ∈ N ein Modul. Zeige: (p − x)2 ≡ x2 mod p . 3.) Gesucht ist eine ganze Zahl x mit x ≡ 2 mod 3 , x ≡ 3 4.) Gesucht ist eine ganze Zahl x mit x≡1 5.) mod 4 , x ≡ 2 mod 5 . mod 2 , x ≡ 1 mod 3 , x ≡ 1 mod 4 , x ≡ 1 mod 5 , x ≡ 1 mod 6 , x ≡ 0 mod 7 . Sei s = s1 · · · sn ∈ {0, 1}n gewählt. Dieses binäre Wort beschreibt nun die folgende Verschlüsselungsmethode auf den binären Wörtern a = a1 · · · an der Länge n in folgender Weise: K(a) := a ⊕ s , wobei (a ⊕ s)i = ai + si mod 2, i = 1, . . . , n, Zeige: (a) K : {0, 1}n −→ {0, 1}n bijektiv. (b) s ⊕ s = 0 . (c) a ⊕ K(a) = s für alle a ∈ {0, 1}n . (Man nennt die Verschlüsselungsmethode mittels K eine one-time-pad–Verschlüsselung, da man sie wegen (c) in der Praxis nur einmal mit einem zufälligen Vektor“ s verwen” det.) 6.) Wie sieht der Graph der Abbildung f : Z5 ∋ [x] 7−→ [x3 + x2 + 1] ∈ Z5 aus? Veranschauliche ihn im Gitter “ Z × Z . ” 49