Geheimnisvolle Codes 1 vorgelegt bei: Mathematisches Seminar für LAK Univ.-Prof. Karin Baur WS 2014/15 von: Julia Hager 0910838 [email protected] 1 Quelle: http://www.austromath.at/medienvielfalt/materialien/krypto/krypt.png Inhaltsverzeichnis 1 Einleitung 3 2 Atbasch und Verschiebungschiffre 5 3 Dualsysteme 3.1 Morsecode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Binärsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 7 4 Public-Key-Verfahren 4.1 RSA-Verfahren . . . . . . . 4.1.1 Schlüsselerzeugung . 4.1.2 Verschlüsselung . . . 4.1.3 Entschlüsselung . . . 4.1.4 Auswahl von p und q 4.1.5 Auswahl von e . . . 4.1.6 RSA-Anwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 11 14 16 17 17 18 5 Appendix 20 5.1 Eigene Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 5.2 Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 5.3 Abbildungsverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2 1 Einleitung Kryptographie leitet sich aus den beiden griechischen Wörtern kryptos (verborgen, geheim) und graphein (schreiben) ab.2 Kryptographie ist daher die Wissenschaft, die sich mit Verschlüsselungen beschäftigt. In der vorliegenden Arbeit habe ich mit dem Thema der Kryptographie auseinandergesetzt, ihre Anfänge beleuchtet und vor allem das heutzutage meist verwendetste Verfahren, das RSA-Verschlüsselungsverfahren genauer unter die Lupe genommen. Wozu brauchen wir eigentlich Verschlüsselungssysteme? Und was ist ein Verschlüsselungsverfahren überhaupt? Abbildung 1: Wozu codieren? Bob und Alice möchten miteinander kommunizieren, ohne, dass Drittpersonen ihre Nachrichten mithören/-lesen können. Aus diesem Grund benötigen sie ein System, einen Code, der ihre Nachrichten verschlüsselt und sie vor Lauschangriffen von Drittpersonen geheim hält. Definition 1.1 (Verschlüsselungsverfahren)3 Ein Verschlüsselungsverfahren oder Kryptosystem ist ein Fünftupel (P, C, K, E, D) mit folgenden Eigenschaften: 2 3 Laszlo u.a., Kryptologie im Verlauf der Geschichte Buchmann, Einführung in die Kryptographie, S.59 3 1. P ist eine Menge. Sie heißt Klartextraum. Ihre Elemente heißen Klartexte (Plaintext). 2. C ist eine Menge. Sie heißt Chiffretextraum. Ihre Elemente heißen Chiffretexte oder Schlüsseltexte (Ciphertext). 3. K ist eine Menge. Sie heißt Schlüsselraum. Ihre Elemente heißen Schlüssel (Keys). 4. E = {Ek : k ∈ K} ist eine Familie von Funktionen Ek : P → C. Ihre Elemente heißen Verschlüsselungsfunktionen (Encryption). 5. D = {Dk : k ∈ K} ist eine Familie von Funktionen Dk : C → P. Ihre Elemente heißen Entschlüsselungsfunktionen (Decryption). Für jedes e ∈ K gibt es ein d ∈ K, so dass für alle p ∈ P die Gleichung Dd (Ee (p)) = p gilt. 4 2 Atbasch und Verschiebungschiffre Eine sehr alte, wahrscheinlich um 500 vor Christus bereits verwendete Geheimschrift, nennt sich Atbasch. Das Wort setzt sich aus den beiden ersten und letzten Buchstaben des hebräischen Alphabets zusammen und beschreibt zugleich die Verschlüsselungsmethode: Der erste Buchstabe aleph (A) wird mit dem letzten Buchstaben tow (T), der zweite Buchstabe beth(B) wird mit dem vorletzten Buchstaben schin vertauscht und so weiter. Aus diesen Vertauschungen ensteht nun ein Buchstabensalat, aus dem man bei schnellem Hinschauen den Klartext nicht entziffern kann.4 Beispiel 2.1 Zieht man unser heute weitverbreitetes lateinische Alphabet mit 26 Buchstaben als Klartext-, Chiffretext- und Schlüsselraum heran, so entschlüsselt sich der Chiffretext PLWRVIFMT mit Hilfe der untenstehenden Tabelle als Schlüssel zum Klartext KODIERUNG. A Z B Y C X D W E V F U G T H S I R J Q K P L O M N N M O L P K Q J R I S H T G U F V E W D X C Y B Z A Ebenfalls ein monoalphabetisches (jedem Buchstaben wir ein anderer zugeordnet) Verschlüsselungsverfahren ist die Verschiebungschiffre oder auch Cäsar-Chiffre, die von Julius Cäsar um 50 vor Christus entwickelt und benutzt wurde. Hierbei wird jeder Buchstabe des Alphabets um einen bestimmten Abstand verschoben. Julius Cäsar wählte hierbei den Abstand 3.,5 Mathematisch lässt sich dies folgenderweise ausdrücken (Buchmann, Einführung in die Kryptographie, S.60): Für e ∈ Z26 ist die Verschlüsselungsfunktion Ee definiert als Ee : Σ → Σ, x 7→ (x + e) mod 26. Entsprechend für d ∈ Z26 gilt: Dd : Σ → Σ, x 7→ (x − d) mod 26. 4 5 Taschner, Die Zahl die aus der Kälte kam, S.113 Taschner, Die Zahl die aus der Kälte kam, S.114 5 In diesem Fall sind Entschlüsselungsschlüssel d und Verschlüsselungsschlüssel e ident. Beispiel 2.2 Wendet man die Verschiebungschiffre mit Abstand 5 auf das Wort KRYPTOGRAPHIE an, so erhält man PWDUYTLWFUMNJ. Aufgrund der geringen Anzahl an Schlüsseln, nämlich 26, eignet sich die Verschiebungschiffre nicht mehr für unsere heutigen Bedarf an Verschlüsselungen. Die Schlüssel könnten leicht durchprobiert werden und man könnte in vertretbarer Zeit aus dem Chiffretext sowohl den Klartext als auch den Schlüssel selbst entziffern. 6 3 Dualsysteme Dualsysteme sind Systeme, die auf zwei Zeichen bzw. Ziffern aufgebaut sind. Basierend auf diesen zwei Basiselementen werden Zeichenketten (Strings) generiert, die Buchstaben- oder Zahlenfolgen zugeordnet werden und diese so verschlüsseln. 3.1 Morsecode Eines der ersten Kodierungssysteme, das auf dem Dualsystem basiert, ist der Morsecode. Der Amerikaner Samuel F.B. Morse erfand gegen Mitte des 19. Jahrhunderts den Code, der auf zwei Symbolen aufgebaut ist, nämlich Punkt (•) und Strich (-). Dabei wurde jedem Buchstaben eine andere Länge und Zusammensetzung eines Systems aus Punkten und Strichen zugeordnet. So ist etwa der Buchstabe A äquivalent zu •−, B zu − • •• und so weiter.6 Leider ist der Morsecode leicht fehleranfällig, da ein Vertippen bereits zu einem anderen Buchstaben führen kann. Der eingeschlichene Fehler ist für den Empfänger der Nachricht jedoch oftmals nicht sichtbar und kann daher zu gravierenden Problemen führen. Daher ist auch dieses Verschlüsselungssystem ohne eigene Fehlerkorrektur für den heutigen Gebrauch nicht mehr einsetzbar. 3.2 Binärsystem Betrachtet man ein Dualsystem auf ganz primitiven Level, auf dem 0 für ein Wort und 1 für ein anderes Wort steht, so kann dies wiederum fatale Folgen haben. Nehme man an, dass 0 für „nicht angreifen“ und 1 für „angreifen“ steht. Wenn nun eine der beiden Zahlen inkorrekt übermittelt werden würde, hätte dies nicht vertretbare Konsequenzen. Aus diesem Grund begann man Codes zu benutzen, die zweistellig waren, also zum Beispiel 00 und 11. Ersteres stehe wieder stellvertretend für “nicht angreifen“ und zweiteres für „angreifen“. Passiert nun ein Fehler in der Übermittlung, es wird z.B. 01 oder 10 gesendet, so erkennt der Empfänger zumindest den fehlerhaften Code, auch wenn er noch keine Korrektur vornehmen kann. Geht man eine Stufe 6 Crilly, 50 Mathematical Ideas, Kapitel 40 7 weiter und ergänzt die Codes um eine dritte Stelle, also 000 und 111, so kann eine fehlerhafte Vermittlung noch immer erkannt und zugleich aber auch korrigiert werden. Erhielte der Empfänger den Code 010, so wüsste er das es 000 heißen müsste, da zwei Fehler bei einem dreistelligen Code sehr unwahrscheinlich und minimal sind.7 Das heute gängiste Dualsystem zur Datenverarbeitung ist das sogenannte Binärsystem. Basierend auf der Basis 2 und der Verwendung der Zeichen 0 und 1 werden Strings generiert. Zum Beispiel steht der String 101 für 101 = 1 · 22 + 0 · 21 + 1 · 20 , was der Zahl 5 im Dezimalsystem entspricht. Daher setzt sich die Wertigkeit Z einer binären Zahlen aus der Summe ihrer Ziffern zi ∈ {0, 1} multipliziert mit dem jeweiligen Stellenwert 2i (i ∈ {1, 2, 4, 8, 16, . . .} zusammen: Z= Pm 0 zi · 2i mit n, m ∈ N und zm als höchstwertige und z0 als niedrigwertigste Stelle. 7 Crilly, 50 Mathematical Ideas, Kapitel 40 8 4 Public-Key-Verfahren Unter Public-Key-Verfahren versteht man solche Kodierungssysteme, bei denen der Verschlüsselungsschlüssel d veröffentlicht wird (public key). Dies ist möglich, da der Entschlüsselungsschlüssel e vom Verschlüsselungsschlüssel d abweicht und nicht in vertretbarer Zeit und mit vertretbarem Aufwand aus d berechnet werden kann. Der Entschlüsselungschlüssel e bleibt dabei jedoch privat und wird daher auch private key genannt. Im Gegensatz zu symmetrischen Kryptosystemen, bei denen der Verschlüsselungs- und Entschlüsselungsschlüssel ident sind (siehe Beispiel 2.1), nennt man Systeme mit nicht identen Schlüsseln asymmetrische Kryptosysteme. Abbildung 2: Symmetrische und Asymmetrische Verschlüsselung 4.1 RSA-Verfahren Das RSA-Verfahren wurde 1983 von Ron Rivest, Adi Shamir und Len Adleman als erstes Public-Key-Verfahren als Patent angemeldet und ist bis heute noch das wichtigste und weitverbreiteste asymmetrische Verschlüsselungsverfahren. Rudolf Taschner beschreibt es in „Die Zahl, die aus der Kälte kam - Wenn Mathematik zum Abenteuer wird“ folgendermaßen: „Man nehme zwei Primzahlen [...] und multipliziere sie. Daraus erhält man den Modul. [...] Dann nehme man irgendeine Zahl [...], die der Exponent heißt. (Ganz frei ist man in der Wahl des Exponenten nicht, aber das ist ein nebensächliches Detail.) Dann kann man eine Zahl, die man geheim halten 9 möchte, dadurch kodieren, dass man ihre Potenz mit dem Exponenten als Hochzahl bildet und deren Rest nach der Division durch den Modul als chiffrierte Zahl seinem Partner mitteilt. [...] Dechiffriert kann die kodierte Zahl dadurch werden, dass man von den Primzahlen, von denen man ausgegangen ist, jeweils 1 abzieht und das Produkt dieser Zahlen bildet. [...] Die Potenz der chiffrierten Zahl mit dem Geheimexponenten als Hochzahl ergibt, wenn man den Rest nach der Division durch den Modul betrachtet, die ursprüngliche Zahl, die der Sender geheim halten wollte, zurück.“ Mathematisch zu Grunde liegt dem RSA-Verfahren die Nutzung von Primzahltupeln, Faktorisierungen großer Zahlen, Einwegfunktionen und der Satz von Euler-Fermat. Definition 4.1 (Public-Key-Kryptosystem)8 Ein Kryptosystem K heißt ein Public-Key-Kryptosystem, falls alle Chiffrierfunktionen ek mit k ∈ K Einwegfunktionen sind. Dabei werden „sowohl das Potenzieren von Elementen großer Ordnungen in geeigneten Gruppen als auch die Multiplikation großer ganzer Zahlen als Einwegfunktionen angesehen.“9 Definition 4.2 (Einwegfunktion)10 Seien X und Y Mengen. Eine injektive Funktion f : X → Y heißt eine Einwegfunktion (one way function), falls man für jedes x ∈ X den Funktionswert y = f (x) schnell berechnen kann, aber für jedes beliebig vorgegebene y ∈ Bild f ⊆ Y das Urbild f −1 (y) = x in vertretbarer Zeit nicht finden kann. Dies soll mittels allgemein unbekannter Zusatzinformation möglich sein. 8 Willems, Codierungstheorie und Kryptographie, S.75 Willems, Codierungstheorie und Kryptographie, S.75 10 Willems, Codierungstheorie und Kryptographie, S.74 9 10 Definition 4.3 (Größter Gemeinsamer Teiler)11 Es seien a1 , a2 , . . . , ak ∈ Z. Sind nicht alle ai 6= 0, so heißt d = max(T (a1 ) ∩ T (a2 ) ∩ . . . ∩ T (ak )) ∈ N der größte gemeinsame Teiler von a1 , . . . , ak . Definition 4.4 (Division mit Rest/ Modulo) Es seien a, b ∈ Z mit b 6= 0. Dann existieren eindeutig bestimmte q, r ∈ Z mit 0 ≤ r < |b|, sodass a = bq + r gilt. 12 Modulo berechnet den Rest r der Division a geteilt durch b. Man kann eine Funktion definieren, welche jedem Zahlenpaar a ; b eindeutig den Teilerrest r zuordnet. Diese nennt man mod. mod : Zx(Z \ {0}) → Z, (a, b) 7→ a mod b := a − ba : bc · b. 13 Definition 4.5 (Primzahl)14 Eine Zahl n ∈ N heißt Primzahl, wenn τ (n) = 2 (⇐⇒ n > 1 und T (n) = {1, n}). τ . . . Teileranzahlfunktion: τ : N → N, n 7→ τ (n) := |T (n)|15 T(n) . . . Menge der positiven Teiler von n16 4.1.1 Schlüsselerzeugung Bob wählt zufällig zwei Primzahlen p und q mit p 6= q und berechnet das Produkt n=pq. Zusätzlich wählt Bob eine natürliche Zahl e mit 1 < e < ϕ(n) = ϕ(p) · ϕ(q) mit ϕ(p) = p − 1 ∧ ϕ(q) = q − 1 und ggT (e, ϕ(p)ϕ(q)) = 1 und berechnet eine natürliche Zahl d mit 11 Lettl, Einführung in die Algebra, Lettl, Einführung in die Algebra, 13 Wikipedia, Division mit Rest 14 Lettl, Einführung in die Algebra, 15 Lettl, Einführung in die Algebra, 16 Lettl, Einführung in die Algebra, 12 S.3 S.3 S.4 S.2 S.2 11 1 < d < ϕ(p)ϕ(q) und ed ≡ 1 mod ϕ(p)ϕ(q). Dabei ist ϕ(n) die Euler’schen Phifunktion, welche für jede natürliche Zahl n angibt, wie viele zu n teilerfremde natürliche Zahlen es gibt, die nicht größer als n sind: ϕ(n) := |{a ∈ N : 1 ≤ a ≤ n ∧ ggT (a, n) = 1}|. Ist diese natürliche Zahl eine Primzahl, so gibt es n-1 teilerfremde Zahlen. Paar (n,e). . . öffentlicher Schlüssel d. . . privater Schlüssel/ Entschlüsselungsexponent e. . . Verschlüsselungsexponent (stets ungerade) n. . . RSA-Modul Da ggT (e, ϕ(p)ϕ(q)) = 1 ist, gibt es eine solche Zahl d tatsächlich. Sie kann mit dem erweiterten euklidischen Algorithmus berechnet werden. 17 Satz 4.1 (Erweiteter Euklidischer Algorithmus) Der erweiterte Euklidische Algorithmus setzt sich aus dem Euklidischen Algorithmus und dem Algorithmus von Berlekamp zusammen und berechnet daher sowohl den größten gemeinsamen Teiler zweier natürlicher Zahlen a und b als auch zwei ganze Zahlen x und y, die ggT (a, b) = xa + yb erfüllen. Euklidische Algorithmus 18 Es seien a, b ∈ N. Für i ≥ −1, j ≥ 0 werden ri , qj ∈ N0 rekursiv definiert durch: • r−1 = a, r0 = b • für i ≥ 0: falls ri > 0 bereits definiert ist, so wird (qi , ri+1 ) gemäß des Satzes Division mit Rest eindeutig definiert durch ri−1 = qi ri + ri+1 (Division von ri−1 durch ri mit Rest). Algorithmus von Berlekamp19 Es sei n ∈ N0 mit rn > 0 und rn+1 = 0. Für 0 ≤ i ≤ n werden xi , yi ∈ Z rekursiv definiert durch 17 Buchmann, Einführung in die Kryptographie, S.137 Lettl, Einführung in die Algebra, S.3 19 Lettl, Einführung in die Algebra, S.4 18 12 x0 = 0, y0 = 1, x1 = 1, y1 = −q0 für 0 ≤ i ≤ n − 1 : xi+1 = xi−1 − qi xi , yi+1 = yi−1 − qi yi . Dann gilt für alle 0 ≤ i ≤ n: ri = axi + byi , und insbesondere ggT (a, b) = rn = axn + byn . Beispiel 4.0 Sei e=5 und ϕ(n) = 24. Berechne d mit dem Erweiterten Euklidischen Algorithmus. Wir wollen dabei auf die Form 1 = 5 · d + k · ϕ(n) kommen. Der Euklidische Algorithmus liefert: 24 = 4 · 5 + 4 5=4·1+1 4=1·4+0 Der Algorithmus von Berlekamp liefert: 1 = 5 − 4 · 1 = 5 − 1 · (24 − 4 · 5) = 5 · 5 − 1 · 24 = e · d − yϕ(n). Daher ist d=5. Bob gibt den öffentliche Schlüssel (n,e) bekannt, hält aber den privaten Schlüssel d geheim. Alice kann nun eine Nachricht, die aus einem oder mehreren Elementen aus Zn besteht, mittels der Chiffrierfunktion Ee : P = Zn → C = Zn , x 7→ y = xe mod n an Boden senden. Er kann dann die verschlüsselte Nachricht vermöge der Dechiffrierfunktion Dd : C = Zn → P = Zn , y 7→ y d mod n entschlüsseln.20 Beispiel 4.121 Als Primzahlen wählt Bob die Zahlen p=11 und q=23. Also ist n = 11 · 23 = 253 und (p − 1)(q − 1) = 10 · 22 = 4 · 5 · 11. Das kleinstmögliche e ist daher e = 3. Der erweiterte euklidische Algorithmus liefert d = 147. 20 21 Willems, Codierungstheorie und Kryptographie, S.76 Buchmann, Einführung in die Kryptographie, S.138 13 Berechnung: Zu lösen gilt: ed ≡ 1 mod(p-1)(q-1), daher: 3d ≡ 1 mod 220. Der Euklidische Algorithmus liefert für (3,220): 220 = 3 · 73 + 1 3=1·3+0 Der Algorithmus von Berlekamp liefert: 1 = 220 − 3 · 73 Da dies einen negativen Entschlüsselungsexponenten d und eine Zahl ed liefert, die nicht mod 220 rechenbar ist, wird das RSA-Modul 220 so oft hinzugezählt, bis die Zahl den Modulo erfüllt. In diesem Fall muss die Gleichung auf 1 = 3 · (73 · +1) − 2 · 220 erweitert werden. So erhält man d=147. Anschaulicher berechnet: Man probiert aus, wann eine ganzzahlige Multiplikation des Entschlüsselungsmoduls ϕ(n) plus 1 durch den Verschlüsselungsexponenten e teilbar ist. Der ganzzahlige Rest ist dann der Entschlüsselungsexponent d. 1 · 220 + 1 = 221 2 · 220 + 1 = 441 441 : 3 = 147 ⇒ d = 147. 4.1.2 Verschlüsselung Verschlüsselung von natürlichen Zahlen22 Der Klartextraum P bestehe aus allen natürlichen Zahlen m mit 0 ≤ m < n. Ein Klartext m wird verschlüsselt zu c = me mod n. Jeder, der den öffentlichen Schlüssel (n, e) kennt, kann eine Verschlüsselung durchführen. Beispiel 4.2 Sei der öffentliche Schlüssel das Zahlentupel (3, 253). Möchte Alice nun Bob die Nachricht m = 7 übermitteln, so verschlüsselt sie diese folgendermaßen: c = me = 73 mod 253 = 90. 22 Buchmann, Einführung in die Kryptographie, S.138 14 Verschlüsselung von Buchstaben23 Es habe das verwendete Alphabet Σ genau N verschiedene Buchstaben. Des Weiteren werden diesen Buchstaben die Zahlen 0,1,. . . , N -1 zugeordnet. Sei k die Blocklänge des Klartextes mit k = blogN nc. Ein Block m1 . . . mk , mi ∈ Σ, 1 ≤ i ≤ k, wird in die Zahl m = umgeschrieben. Pk i=1 mi N k−i Beim RSA-Verfahren werden dann die Blöcke der Länge k aus dem Klartextraum injektiv auf Blöcke der Länge k+1 im Chiffretextraum abgebildet. Dabei gilt: P c = ki=1 ci N k−i , ci ∈ Σ, 0 ≤ i ≤ k. Der Schlüsselblock ist dann c = c0 c1 . . . ck . Beispiel 4.324 Sei Σ = {0, A, B, C} mit der Zuordnung 0 0 A 1 B 2 C 3 Des Weiteren sei n=253 und e=3. Die Länge k der Klartextblöcke berechnet sich wie vorher definiert mit dem Logarithmus zur Basis 4 (da N =4): k = blog4 253c = 3. Die Länge k+1 der Schlüsseltextblöcke ist daher 4. Verschlüsseln wir nun den Klartext m= ABB, der der Zeichenkette (String) 122 entspricht. Zur Basis 4 geschrieben, ergibt dies m = 1 · 42 + 2 · 41 + 2 · 40 = 26. Die Verschlüsselung berechnet sich durch c = 263 mod 253 = 119. Die Verschlüsselungszahl zur Basis 4 geschrieben, ergibt c = 1 · 43 + 3 · 42 + 1 · 41 + 3 · 1. Der Schlüsseltextblock lautet nun: ACAC. 23 24 Buchmann, Einführung in die Kryptographie, S.138 Buchmann, Einführung in die Kryptographie, S.139 15 4.1.3 Entschlüsselung Die Grundlage für die Entschlüsselung von RSA ist folgendes Theorem25 : Sei (n, e) ein öffentlicher Schlüssel und d der entsprechende private Schlüssel. Dann gilt: (me )d mod n=m für jede natürliche Zahl m mit 0 ≤ m < n. Beweis: Da ed ≡ 1 mod (p-1)(q-1) ist, gibt es eine ganze Zahl l, so dass ed = 1 + l(p − 1)(q − 1) ist. Daher ist (me )d = med = m1+l(p−1)(q−1) = m(m(p−1)(q−1) )l . Fall 1: p - m ⇒ mϕ(p) = 1 mod p (Siehe Satz 4.1.) (me )d = m1+l(ϕ(p))(ϕ(q)) = m(1(q−1) )l = mx ≡ m mod p mit x = (q − 1)l ∈ Z gilt. Fall 2: p | m ⇒ m = a · p mit a ∈ Z (a · p)x = (a · p)ed = (a · p)1+l(p−1)(q−1) = (a · p)x mod p mit x ∈ Z → 0 ≡ 0 mod p. Fall 3: q - m ⇒ mϕ(p) = 1 mod p (Siehe Satz 4.1.) (me )d = m1+l(ϕ(p))(ϕ(q)) = m(1(p−1) )l = my ≡ m mod q mit y = (p − 1)l ∈ Z gilt. Fall 4: q | m ⇒⇒ m = b · q mit b ∈ Z (a · q)y = (a · q)ed = (a · q)1+l(p−1)(q−1) = (a · q)y mod q mit y ∈ Z → 0 ≡ 0 mod q. Weil p und q verschiedene Primzahlen sind, erhält man also (me )d = m mod n. Da 0 ≤ m < n ist, erhält man die Behauptung des Satzes. Satz 4.2 (Kleiner Satz von Fermat)26 Wenn ggT (p, m) = 1 ist, dann folgt mϕ(p) ≡ 1 mod p mit p ist Primzahl. Dieser Satz kann zum Satz von Euler verallgemeinert werden, indem man p durch eine natürliche Zahl n ersetzt: ggT (n, m) = 1 ⇒ mϕ(n) ≡ 1 mod n. Wurde also c wie in Beispiel 4.2 berechnet, kann man m mittels m = cd mod n rekonstruieren. Damit ist gezeigt, dass das RSA-Verfahren tatsächlich ein 25 26 Buchmann, Einführung in die Kryptographie, S.140 Buchmann, Einführung in die Kryptographie, S.37 16 Kryptosystem ist, dass es nämlich zu jeder Verschlüsselungsfunktion eine Entschlüsselungsfunktion gibt. Beispiel 4.4 Sei der öffentlicher Schlüssel (3, 253). Bob hat von Alice den Schlüsseltext c = 90 erhalten. Sein zuvor berechneter Entschlüsselungsschlüssel (siehe Beispiel 4.2) ist d = 147. Bob entschlüsselt folgendermaßen m = 90147 mod 253 = 903·7·7 ((903 mod 253)7 mod 253)7 mod 253 = 7 und erhält wieder Alice’ Klartext m=7. 4.1.4 Auswahl von p und q Da das RSA-Verfahren auf dem Faktorisierungsproblem beruht, ist es wichtig, möglichst große und gleichverteilte Zahlen zu verwenden, da die Faktorisierung dieser dann erschwert bis nahezu unmöglich wird (im Sinne von einem vetretbaren Zeitaufwand). Nach heutigen Standard soll das RSA-Modul n zumindest 512 Bits, wenn nicht 1024 oder sogar 2048 Bits lang sein, um eine längerfristige Sicherheit zu gewährleisten. Daraus resultierend sollten die Primzahlen p und q möglichst gleich groß bzw. lang, zufällig und gleichverteilt gewählt werden. Zum Beispiel sollten für ein 1024 Bit RSA-Modul die Primzahlen jeweils eine 512 Bit Länge aufweisen.27 Dabei ist sich die Wissenschaft noch nicht einig, ob es Möglichkeiten gibt, den RSA-Schlüsseltext zu entschlüsseln, ohne den RSA-Modul zu faktorisieren. Dies ist ein genauso wichtiges und offenes Problem der Public-Key-Kryptographie wie das Faktorisierungsproblem an sich.28 4.1.5 Auswahl von e Sieht man unter dem Unterkapitel Schlüsselerzeugung (4.1.1) nach, so erkennt man, dass der kleinste mögliche Verschlüsselungsexponent e=3 ist. Eine Wahl eines solchen 27 28 Buchmann, Einführung in die Kryptographie, S.143 Buchmann, Einführung in die Kryptographie, S.143 17 kleinen Exponeten ist jedoch nicht ungefährlich, da ein Angreifer die sogenannte Low-Exponent-Attacke anwenden kann um die Verschlüsselung zu hecken. Unter einer Low-Exponent-Attacke versteht man einen Angriff auf eine Verschlüsselung, die auf einem kleinen Exponenten und kurzen Chiffretextblöcken beruht. Liegt dieser Fall vor, kann die Entschlüsselungsfunktion oft leicht herausgefunden werden. Dies passiert vor allem dann, wenn zwar verschiedene Module jedoch die gleichen Exponenten bei öffentlichen Schlüsseln verwendet werden. Mathematisch beruht die Low-Exponent-Attacke auf folgendem Theorem29 : Seien e ∈ N, n1 , n2, . . . , ne ∈ N paarweise teilerfremd und m ∈ N mit Q 0 ≤ m < ni , 1 ≤ i ≤ e. Sei c ∈ N mit c ≡ me mod ni , 1 ≤ i ≤ e, und 0 ≤ c < ei=1 ni . Dann folgt c = me . Nichtsdestotrotz macht die Wahl kleiner Exponenten die Verschlüsselung effizienter (zeitlich und fehlerunanfälliger) und daher bedient man sich verschiedener Methoden um solche kleinen Exponenten verwenden, jedoch einer Attacke vorbeugen zu können: • Die Klartextblöcke werden kürzer gewählt als notwendig, damit die verbleibenden Bits zufällig belegt werden können. • Kleine Verschlüsselungsexponenten werden durch Quadrierungen und Multiplikation bis zu einer noch zulässigen Sicherheitsgrenze vergrößert. Gängig n ist z.B. e = 216 + 1, eine der Fermat-Zahlen (F (n) = 22 + 1).30 4.1.6 RSA-Anwendungen Die alltägliche Anwendung des RSA-Verfahrens findet man z.B. beim Signieren von elektronischen Nachrichten oder bei Übertragunsprotokollen im World Wide Web, wie z.B. bei SSL (Secure Sockets Layer). Hierbei verschlüsselt der Sender mit seinem privaten Schlüssel seine Nachricht, welche dann der Empfänger mit Hilfe des öffentlichen Schlüssels entschlüsselt. Zusätzlich werden sogenannte Hashwerte 29 30 Buchmann, Einführung in die Kryptographie, S.144 Buchmann, Einführung in die Kryptographie, S.144 18 mitüberliefert mit denen der Nachrichteninhalt verglichen wird. Stimmt dieser mit den Hashwerten überein, so kann davon ausgegangen werden, dass die Nachricht tatsächlich vom jeweiligen Empfänger stammt und keine Drittperson in den Übermittlungsprozess eingegriffen hat. Abbildung 3: Nachrichtensignatur 19 5 Appendix 5.1 Eigene Beispiele Beispiel 1: Wortverschlüsselung Sei Σ = {A, D, E, N, K} mit der Zuordnung A 0 D 1 E 2 N 3 K 4 Des Weiteren seien p=53 und q=59. Daraus erhalten wir n=3127 und ϕ(n) = 3016. Die Länge k der Klartextblöcke berechnet sich folgendermaßen: k = blog5 3127c = 5. Daraus folgt, die Länge k+1 der Schlüsseltextblöcke = 6. Wähle e=3 und berechne daraus d=2011. Der Klartext m=DANKE soll nun verschlüsselt werden, welcher dem Zahlenstring 10342 entspricht: Zur Basis 5 geschrieben, erhalten wir m = 1 · 54 + 0 · 53 + 3 · 52 + 4 · 51 + 2 · 50 = 722. Verschlüsseln wir diese Zahl mit unserem Verschlüsselungsexponenten e=3, so erhalten wir den Verschlüsselungstext c = 7223 mod 3127 = 1328.Wiederum zur Basis 5 geschrieben, erhalten wir c = 0 · 55 + 2 · 54 + 0 · 53 + 3 · 52 + 0 · 51 + 3 · 50 . Unser Verschlüsselungsstring entspricht daher den Buchstaben AEANAN. Beispiel 2: Buchstabenverschlüsselung Sei Σ = Z26 mit der Zuordnung A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Sei p=7 und q=5. Der RSA-Modul ist daher n = 7 · 5 = 35 und ϕ(n) = 24. Wähle e=5, dann erhält man d=5. Verschlüssle man nun den Klartext m=DANKE, indem man die jeweiligen Buchstaben verschlüssle:mD = D = 3 ⇒ cD = 35 mod 35 = 33 mA = A = 0 ⇒ cA = 05 mod 35 = 0 mN = N = 13 ⇒ cN = 135 mod 35 = 13 mK = K = 10 ⇒ cK = 105 mod 35 = 5 mE = E = 4 ⇒ cE = 45 mod 35 = 9 Daraus erhält man folgenden Verschlüsselungsstring: 33 0 13 5 9. 20 5.2 Literaturverzeichnis Buchmann, Johannes. Einführung in die Kryptographie. Berlin-Heidelberg: Springer-Verlag 2008. Crilly, Tony. 50 Mathematical Ideas You Really Need to Know. China: Quercus Publishing Plc 2007. Frank Laszlo / Reinhard Schmidt / Sebastian Schulze. Kryptographie im Verlauf der Geschichte, in ABDRUCK FHTE Spektrum Nr. 21. URL: http://www.hsesslingen.de/fileadmin/medien/mitarbeiter/schmidt/Kryptologie_ im_ Verlauf_ der_ Geschichte.pdf (Zugegriffen 25.10.2014) Lettl, Günter. Skriptum Einführung in die Algebra. SS 2010. Taschner, Rudolf. Die Zahl die aus der Kälte kam. Wenn Mathematik zum Abenteuer wird. München, Carl Hanser Verlag 2013. Wikipedia. Division mit Rest. URL: http://de.wikipedia.org/wiki/Division_ mit_ Rest (Zugegriffen 03.11.2014) Willems, Wolfgang. Codierungstheorie und Kryptographie. Basel-Boston-Berlin: Birkhäuser Verlag AG 2008. 5.3 Abbildungsverzeichnis Abbildungen 1-3: Eigene Darstellungen. 21