Elementare Zahlentheorie und einfache Verschlüsselungsverfahren Dieter Küntzel, 2013 Inhaltsverzeichnis 1. Einleitung ................................................................................................................ 3 2. Die Cäsar Chiffre .................................................................................................... 4 2.1 Beschreibung der Cäsar Chiffre ........................................................................ 4 2.2 Ein Beispiel ...................................................................................................... 5 3. Elemente der Zahlentheorie ................................................................................... 7 3.1 Teilbarkeit ......................................................................................................... 8 3.2 Der größter gemeinsamer Teiler (ggT) ........................................................... 10 3.3 Der Euklidische Algorithmus ........................................................................... 14 3.4 Kongruenzen ................................................................................................... 19 3.5 Restklassen .................................................................................................... 22 4. Die Cäsar Chiffre, mathematischen Modellierung ................................................ 33 4.1 Das Prinzip der Cäsar Chiffre......................................................................... 33 4.2 Schritte der Cäsar Chiffre ............................................................................... 33 4.2.1 Die Schlüsselerzeugung ........................................................................... 33 4.2.2 Die Verschlüsselung / Entschlüsselung .................................................... 34 4.3 Ein Beispiel ..................................................................................................... 34 4.4 Angriff auf die Cäsar Chiffre ........................................................................... 35 5. Das RSA Verfahren .............................................................................................. 38 5.1 Das Prinzip des öffentlichen Schlüssels.......................................................... 38 5.2 Schritte des RSA Verfahrens .......................................................................... 39 5.2.1 Die Schlüsselerzeugung ........................................................................... 39 5.2.2 Die Verschlüsselung ................................................................................. 39 5.2.3 Die Entschlüsselung ................................................................................. 40 5.3 Die Sicherheit von RSA................................................................................... 40 5.3.1 Ansätze für Angriffe .................................................................................. 40 5.3.2 Wahl von p, q, e, d.................................................................................... 41 6. Beispiele ............................................................................................................... 43 7. Zusammenfassung ............................................................................................... 46 8. Literaturverzeichnis............................................................................................... 47 2 1. Einleitung Diese Arbeit beschäftigt sich mit Verfahren zur Sicherung von Nachrichten gegen einen unbefugten Zugriff sowie den dazugehörigen mathematischen Grundlagen aus der Zahlentheorie. Bereits vor 2600 Jahren wurden Nachrichten verschlüsselt um zu verhindern, dass Feinde eine nicht für sie bestimmte Nachricht lesen konnten. So verwandte Cäsar eine Verschlüsselungsmethode zur Übermittlung von Befehlen in Schlachten. An diesem Verfahren werden wir unten einige Prinzipien der Verschlüsselungstechnik kennen lernen. Seit dem Mittelalter wurden die Verschlüsselungsverfahren stetig weiterentwickelt. Diese Entwicklung erfuhr einen kräftigen Aufschwung im 1. und 2. Weltkrieg. Einen riesigen Anschub der Entwicklung neuer Verschlüsselungsverfahren kam durch die breite Nutzung des Internets. Die Notwendigkeit ist klar, da das Internet per Definition öffentlich ist. Also muss man Verfahren entwickeln um Kommunikation zwischen Personen z.B. per e-mail, Personen und Unternehmen, z.B. Online Banking und Unternehmen untereinander z.B. Austausch von Angeboten, abzusichern. Aus dieser Kategorie wird das nach seinen Entwicklern Ronald Rivest, Adi Shamir und Leonard Adleman benannte RSA-Verfahren erläutert, das sich prinzipiell von der Cäsar Chiffre unterscheidet. Zu Beginn wollen wir einige Begriffe klären. Kryptologie ist der Oberbegriff von Kryptografie und Kryptoanalyse. Kryptografie ist die Wissenschaft über die Sicherung von Nachrichten gegen unbefugten/nicht legitimierten Zugriff1. Der Sicherungsmechanismus muss folgende Punkte erfüllen: 1. Vertraulichkeit gewährleisten: Unbefugte sollten die Nachricht nicht lesen können, 2. Integrität: erkennen der von Angreifern vorgenommenen Veränderungen, 3. Authentizität des Absenders: Empfänger merkt, wenn sich ein Unbefugter als berechtigter Teilnehmer ausgibt, 4. Unterschrift, 5. Autorisierung: nur Befugte erhalten Zugang. Kryptoanalyse ist die Wissenschaft die Methoden und Techniken entwickelt um Informationen aus dem verschlüsselten Texten zu ermitteln. Ein bewusster unbefugter Zugriff auf Daten wird Angriff genannt. 1 Anmerkung: Kryptografie ≠ Codierungstheorie: in der Codierungstheorie werden Methoden entwickelt und beschrieben um Daten gegen zufällig auftretende Fehler bei ihrer Übertragung zu schützen. 3 Im Folgenden wird ein klassisches kryptografisches und zugehöriges kryptoanalytisches Verfahren vorgestellt, an dem einfache Prinzipien dargestellt werden. Dies führt auf mathematische Methoden, die auch wesentliche Bausteine für die RSA Verschlüsselung sind. 2. Die Cäsar Chiffre Dieses Verfahren zählt zu den ältesten Verschlüsselungsverfahren und wurde wohl auch von Julius Cäsar (100 v. Chr. bis 44 v. Chr.) bei der Übermittlung von geheim zuhaltenden Nachrichten und Befehlen verwendet. Die Cäsar Chiffre ist eine Verschiebechiffre. Grob gesprochen werden dabei zur Verschlüsselung die Buchstaben gegenüber der alphabetischen Reihenfolge verschoben ohne die Reihenfolge selbst zu verändern. Buchstaben die am Ende „herausfallen“, werden „vorne“ wieder eingefügt. Die Buchstaben werden also zyklisch vertauscht. 2.1 Beschreibung der Cäsar Chiffre Die Beschreibung des Verfahrens erfolgt am einfachsten anhand eines Beispiels: Gegeben sei der Schlüssel: H , d.h. die Verschlüsselung erfolgt wie folgt: Grafisch kann man die vollständige Verschlüsselungstabelle wie folgt darstellen: 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 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ H I J K L M N O P Q R S T U V W X Y Z A B C D E F G Abbildung 1: „Verschlüsselungsrad“ für den Schlüssel H 4 In der klassischen Kryptografie ist es üblich nur große Buchstaben und keine Sonderzeichen (, . - # § * und so weiter), Umlaute (Ö, Ä , Ü), Sonderbuchstaben (ß, €, …) und auch nicht das Leerzeichen zu verwenden. 2.2 Ein Beispiel Führen wir die Verschlüsselung eines klassischen Textes durch. Der 1. Satz des 1. Buches aus „Der Gallische Krieg“ von Gaius Julius Caesar lautet: Das Gesamtgebiet Galliens zerfällt in drei Teile: in dem einen leben die Belger, in einem zweiten die Aquitaner und im dritten die Völker, die in der Landessprache Kelten heißen, bei uns jedoch Gallier. Nach den oben angegebenen Vorgaben ist also folgende Buchstabenfolge zu verschlüsseln: dasgesam tgebietg alliensz erfaellt indreite ileindem einenleb endiebel gerinein emzweite ndieaqui tanerund imdritte ndievoel kerdiein derlande ssprache keltenhe issenbei unsjedoc hgallier Dabei wurde die Folge in 8er Blöcke zerlegt um eine bessere Übersichtlichkeit zu erhalten. Der Schlüssel ist „H“ und damit ergibt sich mit Hilfe des Verschlüsselungsrad in Abbildung 1: d a s g e s a m K H Z N L Z H T t g e b i e t g A N L I P L A N a l l i e n s z H S S P L U Z G e r f a e l l t L Y M H L S S A i n d r e i t e P U K Y L P A L i l e i n d e m P S L P U K L T e i n e n l e b L P U L U S L I e n d i e b e l L U K P L I L S g e r i n e i n N L Y P U L P U e m z w e i t e L T G D L P A L n d i e a q u i U K P L H X B P t a n e r u n d A H U L Y B U K i m d r i t t e P T K Y P A A L n d i e v o e l U K P L C V L S k e r d i e i n R L Y K P L P U d e r l a n d e K L Y S H U K L s s p r a c h e Z Z W Y H J O L k e l t e n h e R L S A L U O L i s s e n b e i P Z Z L U I L P u n s j e d o c B U Z Q L K V J h g a l l i e r O N H S S P L Y und damit folgender verschlüsselte Text KHZNLZHTANLIPLANHSSPLUZGLYMHLSSAPUKYLPALPSLPUKLTLPULUSLILUK PLILSNLYPULPULTGDLPALUKPLHXBPAHULYBUKPTKYPAALUKPLCVLSRLYKP LPUKLYSHUKLZZWYHJOLRLSALUOLPZZLUILPBUZQLKVJONHSSPLY Scheinbar ein ziemliches Durcheinander von Buchstaben, aber wir werden später sehen, dass darin Strukturen enthalten sind, die uns die Entschlüsselung ermöglichen auch ohne den Schlüssel zu kennen. Nun soll aber noch die 5 Entschlüsselung der Nachricht gezeigt werden. Die Cäsar Chiffre ist ein symmetrisches Verfahren, d. h. für Ver- und Entschlüsselung wird der gleiche Schlüssel verwendet. Praktisch heißt das, dass das Verschlüsselungsrad auch dabei so einzustellen ist, dass a über H steht. Im Gegensatz zur Verschlüsselung wird aber nun auf dem Verschlüsselungsrad von „innen nach außen“ gelesen, bzw. auf der Verschlüsselungstabelle von unten nach oben. Es entsteht dann eine Tabelle, in der je Block die Zeilen vertauscht sind, also beispielsweise: K H Z N L Z H T d a s g e s a m A N L I P L A N t g e b i e t g H S S P L U Z G a l l i e n s z 6 L Y M H L S S A e r f a e l l t 3. Elemente der Zahlentheorie Wir betrachten im folgenden einige Eigenschaften ganzer Zahlen. Die ganzen Zahlen . . . , 4, 3, 2, 1, 0, 1, 2, 3, 4, . . . . Die Menge der bilden die Menge natürlichen Zahlen 1, 2 , 3 , 4 , ... ist eine Teilmenge von . Um die Funktionsweise von Chiffren zu verstehen ist das Verständnis einiger Eigenschaften von und Teilmengen davon sehr hilfreich. Insbesondere spielen Primzahlen, also natürliche Zahlen, die nur durch sich selbst und 1 teilbar sind, und deren Eigenschaften eine zentrale Rolle. Bevor wir mit sehr einfachen Eigenschaften beginnen, wollen wir noch eine Eigenschaft der natürlichen Zahlen vorstellen, die immer wieder genutzt wird ohne sie ausdrücklich zu erwähnen, da es ja „offensichtlich richtig ist“. Es gilt folgender Satz: Satz: Jede nicht leere Teilmenge der natürlichen Zahlen besitzt ein Minimum. Beweis: Da jede nichtleere Teilmenge von mindestens eine natürliche Zahl n besitzt können wir zum Beweis des Satzes auch die Aussage „Alle Teilmengen von , die die natürliche Zahl n enthalten, besitzen ein Minimum“ beweisen. Sei Ak eine solche Teilmenge, die die natürliche Zahl k enthält Induktionsanfang: jede nichtleere Menge A1 , die die 1 enthält, enthält auch ein Minimum. Das ist aber klar, da die 1 per Definition die kleinste natürliche Zahl, und mithin das Minimum für alle A1 ist. Induktionsvoraussetzung: Für alle k ≤ n gelte, dass alle Ak das Minimum k besitzen. Induktionsschluss: Sei also nun B mit (n+1) B Gilt nun k B mit k < (n+1), so gibt es nach Induktionsvoraussetzung ein Minimum Andernfalls besitzt die Menge B nur Zahl k für die gelten: k B , k ≥ (n+1) Damit ist aber (n+1) per Definition das Minimum von B, also ein A n+1 . +++ Bemerkung: Analog beweist man, dass jede nicht leere Teilmenge der negativen ganzen Zahlen ein Maximum besitzt. 7 3.1 Teilbarkeit Definition 3: Eine ganze Zahl b heißt durch eine ganze Zahl a ≠ 0 teilbar, wenn eine ganze Zahl x existiert mit b=a*x Abkürzend schreiben wir: und sprechen das als: a│b a teilt b Bemerkung: a teilt nicht b wird dargestellt als a ∤ b Nun stellen wir einige Eigenschaften der Teilbarkeit zusammen: Satz 3.1 1) aus a│b folgt a│(b c) für alle c 2) aus a│b und b│c folgt a│c 3) aus a│b und a│c folgt a│(b x + c y) für alle x, y 4) gelten a│b und b│a folgt a = ± b 5) für a, b folgt aus a│b a ≤ b 6) Ist m ≠ 0 , so folgt aus a│b (m a)│(m b) Beweis: 1) a│b es existiert ein x mit: b = a * x b c = a * x * c = a * (x * c) b c = a * y mit y = x * c a│(b c) 2) a│b b│c es existiert ein x mit: b = a * x es existiert ein y mit: c = b * y c = b * y = (a * x) * y = a * (x * y) = a * z c=a*z a│c mit z = (x * y) 3) a│b es existiert ein s mit: b = a * s a│c es existiert ein t mit: c = a * t b x + c y a * s * x + a * t * y a * (s * x + t * y) a│(b x + c y) 4) a│b b = a * x b│a a = b * y b = (b * y) * x = b * (y * x) a=b 5) a, b 1=y*x a, b > 0 : a│b b = a * x b>a 8 x = y = 1 mit x > 0, x 6) m ≠ 0 gegeben a│b b = a * x m * b = m * a * x (m * b) = (m * a) * x (m a)│(m b) +++ Satz 3.2 Der Divisionsalgorithmus Seien a, b mit a 0 , dann gibt es ganze Zahlen q und r mit a = q b + r und 0 ≤ r < │b│ Bemerkung1: aus 0 ≤ r < │b│ folgt: b ≠ 0 Bemerkung2: für a, b > 0 werden q und r bestimmt, in dem folgendes Vorgehen gewählt wird: - berechne s = a / b, und nehme den ganzzahligen Teil links vom Komma“ → q (b ≠ 0 gilt nach Voraussetzung, s. o.) - berechne r = a – q b Beweis: Der Beweis erfolgt in 2 Schritten, denn es muss sowohl die Existenz als auch die Eindeutigkeit gezeigt werden: 1) Existenz betrachten wir die arithmetische Folge (r j = a - j b) mit - < j < . . . , r-2 = a + 2 b , r-1 = a + b , r0 = a + 0 b , r1 = a - b , r2 = a - 2 b , . . . dann gelten: I) b > 0: . . . > r-2 > r-1 > r0 > r1 > r2 > . . . , d. i. monoton fallend von „ nach -“ wähle kleinstes rj = a - j b = r mit r größer oder gleich 0 0 ≤ a - j b = r < │b│ 0 ≤ r < │b│ und q = j a=qb+r II) b < 0: . . . < r-2 < r-1 < r0 < r1 < r2 < . . . , d. i. monoton steigend von „- nach “ weiter analog I) 2) Eindeutigkeit: Annahme: es gibt zu r = ri eine weitere Lösung rj mit: 0 ≤ rj < │b│ und ri ≠ rj i ≠ j a) Annahme: r < rj 0 < rj – r < b 0 < rj – r = (a - j b) - ( a - i b) = (i – j) b < │b│ 0 < (i – j) b < b 0 < i – j < 1 j < i < j + 1 9 Widerspruch, da zwischen zwei aufeinander folgenden ganzen Zahlen keine ganze Zahl liegen kann. Also ist i = j und somit auch r = ri = rj b) Annahme: r > rj führt analog zu einem Widerspruch +++ Bemerkung: Die Voraussetzung a > 0 kann durch a ≠ 0 ersetzt werden, da der Fall a < 0 in gleicher Weise wie oben bewiesen wird. 3.2 Der größter gemeinsamer Teiler (ggT) Definition 4: Die ganze Zahl f heißt ein gemeinsamer Teiler von den ganzen Zahlen a,b , wenn gilt f│a und f│b. Gilt a, b ≠ 0 und ist g der größte aller gemeinsamen Teilern f i von a und b, so wird g als größter gemeinsamer Teiler, g = ggT(a,b) bezeichnet. Gilt ggT(a,b) = 1 , so nennt man a, b relativ prim zueinander. Satz 3.3 Seien a, b mit a 0 gegeben und g = ggT(a,b). Dann hat die Gleichung a x b y g eine Lösung mit x x0 , y y0 und x0 , y0 . Beweis: Wir definieren die Funktion f durch: f(x,y) = a x + b y, mit x, y mit: f(0,0) = 0 f(1,0) = a d. i. f(-1,0) = - a d. i. >0, <0, <0, >0, falls falls falls falls a>0 a<0 a>0 a<0 also sind sowohl positive, negative Zahlen und 0 im Bildbereich von f wählen wird x0, y0 so, dass f(x0, y0) die kleinste positive Zahl k im Bildbereich ist: k f( x0 ,y0 ) a x0 b y0 0 10 1) Behauptung: k│a und k│b Beweis: I) k│a Annahme: k ∤ a nach dem Divisionsalgorithmus gibt es q, r mit a = q k + r und 0 < r < k, insbesondere gilt r ≠ 0 da k ∤ a r = a – q k = a – q (a x0 + b y0) = a (1 – q y0) + b (- q x0) also liegt r im Bildbereich von f und ist es gilt 0<r<k das ist aber ein Widerspruch dazu, dass k die kleinste Zahl dieser Art ist also ist die Annahme k ∤ a falsch und es gilt k│a II) k│b wird analog bewiesen 2) Sei nun g = ggT(a,b) , dann folgt aus der Definition g│a: a = g u und g│b: b = g v mit u,v Damit gilt: g│k k a x0 b y0 g u x0 g v y0 g (u x0 v y 0 ) nach Voraussetzung ist k > 0 und per Definition ist g = ggT(a,b) > 0 dann folgt aus Satz 1.1 5) g≤k nun kann aber nicht g < k gelten, da g = ggT(a, b) ist, also alle gemeinsamen Teiler kleiner sein müssen, also gilt g = k und somit g a x0 b y0 +++ Wie nun konkret die Faktoren x0 , y0 berechnet werden ist im Satz 3.3 nicht angegeben. Dafür wird die Erweiterung des Divisionsalgorithmus (s. Satz 3.2), nämlich der Euklidische Algorithmus (siehe unten Satz 3.4), genutzt. Zuvor notieren wir noch einige Eigenschaften des größten gemeinsamen Teilers, ggT. Folgerung 1 Für jedes m Beweis: gilt: ggT(m a, m b) = m ggT(a, b) Nach Satz 3.3 hat hat die Gleichung a x b y g genau eine Lösung mit x x0 , y y0 und x0 , y0 . Damit ist aber a m x b m y g m für alle m 11 und somit auch (m a) x (m b) y m g und damit ggT(m a, m b) = m ggT(a, b) +++ Bemerkungen: I) Sei d > 0 gegeben: aus d│a und d│b folgt: ggT(a/d , b/d) = 1/d ggT(a , b) wegen: d│a es existiert x mit: a = d x und analog d│b b = d y ggT(a , b) = ggT(d x , d y) = d ggT(x , y) = d ggT(a/d , b/d) ggT(a/d , b/d) = 1/d ggT(a , b) II) Für g = ggT(a, b) gilt: ggT(a/g , b/g) = 1 wegen ggT(a/g , b/g) = 1/g ggT(a , b) = 1/g g = 1 Folgerung 2 Für jedes u gilt ggT(a, b) = ggT(b, a) = ggT(a, -b) = ggT(a, b + a u ) Beweis: a) ggT(a, b) = ggT(b, a) = ggT(a, -b) folgt sofort aus der Definition des ggT, da diese weder vom Vorzeichen noch von der Reihenfolge von a, b abhängt, sondern nur der absoluten Größte des Teilers (siehe Bemerkung Definition 4). b) bleibt zu zeigen: ggT(a, b) = ggT(a, b + a u) g = ggT(a, b) , e = ggT(a, b + a u) I) e = ggT(a, b + a u) e│a und e│(b + a u) e│a und e│b e = gT(a,b) e│g II) g = ggT(a, b) g│a und g│b g│a und g│(a x + b y) für alle x, y nach 1.1 3) g│a und g│(a u + b) für x = u, y = 1 g│e aus I) und II) folgt nach 1.1 4) g = ± e g = e weil g, e beide ggT sind und somit e, g > 0 12 Folgerung 3 Ist x x0 , y y0 eine Lösung der Gleichung a x b y g , dann bilden alle x = xk, y = yk , k mit: ak bk und yk y0 xk x 0 g g sämtliche Lösungen der Gleichung. Beweis: Nach Satz 3.3 existiert eine Lösung unter den angegebenen Voraussetzungen: Seien a, b mit a 0 gegeben mit g = ggT(a,b). Dann gibt es x0 , y0 , so dass gilt: g a x0 b y0 . Setzen wir nun voraus, dass x0 , y0 eine Lösung darstellen, so bestimmen wir nun die weitere Lösungen x, y, die die gleiche Form haben. Für x, y muss also gelten: gax by g a x0 b y0 Subtraktion liefert 0 a (x x0 ) b (y y0 ) a (x x0 ) b (y y0 ) Division durch g ggT(a,b) 0 liefert a b (x x0 ) (y y0 ) (*) g g a b ggT( , ) 1 weil ggT(a, b) g und Folgerung 1, Bem. 1, oben g g a damit kann nur ein Teiler von (y y0 ) sein g y y0 l und analog ist a ,l g (#) b ein Teiler von (x x0 ) g x x0 k 13 b ,k g (##) (*) liefert x x0 k a b (x x 0 ) (y y 0 ) und mit (#) , (##) gilt g g a b b a k l k l g g g g b g y y0 k a g x x0 k b g y y0 k a g Umgekehrt müssen wir noch zeigen, dass das auch Lösungen sind: b a a x b y a (x 0 k ) b (y 0 k ) g g a x0 b y0 a k b a bk g g a x0 b y0 g +++ 3.3 Der Euklidische Algorithmus Satz 3.4 Der Euklidische Algorithmus I) Seien a, b mit a b . Mit Hilfe des folgenden Algorithmus wird ggT(a,b) in endlich vielen Schritten berechnet. 1) Sei r0 = a und r1 = b 2) Setze i = 1 3) Berechne nach 3.2 Divisionsalgorithmus: ri-1 = ri qi + ri+1 mit 0 ≤ ri+1 < ri 4) Ist der Rest ri+1 = 0 , dann ist ri = ggT(a,b) und der Prozess ist beendet 5) Ist ri+1 > 0 so setze i = i + 1 und gehe zu 3) II) Das Verfahren ist nach höchstens (2 log2(b) + 1) – fachen Durchführung des Schrittes 3) beendet. 14 Beweis: I) Schreiben wir den oben beschriebenen Algorithmus ausführlich: 0. a = q1 b + r2 1. b = q2 r2 + r3 2. r2 = q3 r3 + r4 … i. ri = qi+1 ri+1 + ri+2 … t -2. r t-2 = q t-1 r t-1 + r t t -1. r t-1 = q t r t mit 0 < r2 < b mit 0 < r3 < r2 mit 0 < r4 < r3 mit 0 < ri+2 < ri+1 mit 0 < rt < rt-1 Nach t Schritten ist der Prozess beendet, wenn „die Division aufgeht“, d.h. keinen Rest mehr liefert. Daher wurde anders als in 3.2 in den Schritten 0 bis (t -2) das Gleichheitszeichen weggelassen, da es den letzten Schritt des Algorithmus darstellt, der durch den Schritt (t -1) dargestellt ist. Das der Algorithmus nach endlich vielen Schritten endet ist klar, da die ri eine streng monoton fallende, nach unten durch 0 beschränkte Folge bilden b > r2 > r3 > r4 > . . . > rt-1 > rt > 0 wg. ggT(a, b) = ggT(b, a) = ggT(a, b + a x) für alle x Folgerung 2) folgt aus Schritt 0. , 1. , … , t-1: ggT(a , b) = ggT(a - q1 b, b) = ggT(r2 , b) = ggT(r2 , b - q2 r2) = ggT(r2 , r3) = ggT(r2 - q3 r3 , r3) = ggT(r4 , r3) = ggT(r4 , r3 - q4 r4) = ggT(r4 , r5) = ggT(r4 - q5 r5 , r5) =... = ggT(ri , ri-1) = . . . =... = ggT(rt-1 , rt) = ggT(rt q t, rt) = rt 15 ggT(a , b) = rt (s. Satz 3.3 Es bleibt zu zeigen: II. Das Verfahren ist nach höchstens (2 log2(b) + 1) – fachen Durchführung des Schrittes 3) beendet. Die ri bilden eine streng monoton fallende Folge, d.h. r0 = a > r1 = b > r2 > r3 > r4 > . . . > rt-1 > rt > 0 siehe oben Damit haben wir als erste Abschäzung t ≤ b, die nun deutlich verbessert wird. Behauptung: ri+2 < ½ ri Beweis: Fall 1: ri+1 ≤ ½ ri und ri+2 < ri+1 , weil die Folge der ri streng monoton fallend ist ri+2 < ri+1 ≤ ½ ri ri+2 < ½ ri Fall 2: ri+1 > ½ ri daraus folgt 2 ri+1 > ri bzw. - ri+1 < - ½ ri durch den Algorithmus (s. o.) ist definiert: ri = qi+1 ri+1 + ri+2 mit 0 < ri+2 < ri+1 damit kann aber qi+1 = 1 sein, da 2 ri+1 > ri und somit ri+2 < 0 wäre also gilt: ri = qi+1 ri+1 + ri+2 = ri = ri+1 + ri+2 ri+2 = ri - ri+1 < ri - ½ ri = ½ ri Damit erhalten wir nun folgende Abschätzung (*): 1 1 1 1 1 1 1 r2k 1 2 r2k 3 3 r2k 5 4 r2k 7 . . . k 1 r3 k r1 k b 2 2 2 2 2 2 2 k k-1 wählen wir nun k so groß, dass 2 ≥ b > 2 dann folgt r2k+1 < 1 und da r2k+1 eine ganze Zahl ist, muss r2k+1 = 0 sein und damit endet der Algorithmus. Aus b > 2k-1 folgt log2(b) > log2(2k-1) = (k-1) log2(2) = k-1 r2k 1 Mit der oben angegebenen Bezeichnung und der Ungleichung (**) r0 = a > r1 = b > r2 > r3 > r4 > . . . > rt-1 > rt > 0 gilt rt+1 = 0 . Somit erhalten wir aus (*) und (**) für die Indizes: t + 1 ≤ 2 k + 1 und damit t ≤ 2 k . Im oben angegebenen Algorithmus werden genau t Schritte / Divisionen durchgeführt, also gilt: Anzahl der Schritte = t ≤ 2 k = 2 (k – 1) + 2 < 2 log2(b) + 2 +++ 16 Bemerkung: Natürlich kann man den ggT(a,b) bestimmen, in dem I) a und b in ihre Primzahlfaktoren zerlegt werden II) das Produkts gemeinsamer Primfaktoren gebildet wird. Allerdings ist das Verfahren für große Zahlen a, b bzw. für Zahlen mit mehreren großen Primzahlfaktoren sehr aufwändig. Zum Euklidischen Algorithmus nun zwei Beispiele: 1. a = 60 , b = 27 1.1 Euklidischer Algorithmus i 0 1 2 a 60 27 6 Damit gilt: = = = 2 4 2 * * * b 27 6 3 + + + 6 3 0 ggT(60, 27) = 3 1.2 Primzahlzerlegung: 60 = 2 * 2 * 3 * 5 und 27 = 3 * 3 * 3 also ggT(60, 27) = 3 17 2. a = 2426892 , b = 948047 2.1 Euklidischer Algorithmus i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 a 2426892 948047 530798 417249 113549 76602 36947 2708 1743 965 778 187 30 7 2 Damit gilt: = = = = = = = = = = = = = = = 2 1 1 3 1 2 13 1 1 1 4 6 4 3 2 * * * * * * * * * * * * * * * b 948047 530798 417249 113549 76602 36947 2708 1743 965 778 187 30 7 2 1 + + + + + + + + + + + + + + + 530798 417249 113549 76602 36947 2708 1743 965 778 187 30 7 2 1 0 ggT(2426892, 948047) = 1 2.2 Primzahlzerlegung 2426892 = 2 * 2 * 3 * 13 * 47 * 331 und 948047 = 131 * 7237 also ggT(2426892, 948047) = 1 , wobei insbesondere die Zerlegung von 948047 (manuell) nicht so schnell zu finden ist. In diesem Fall ist sicher der Euklidische Algorithmus leichter und schneller. 18 3.4 Kongruenzen Zur Einführung betrachten wir die „Uhren-Mathematik“. Auf einer gewöhnlichen 24-Stunden-Uhr stehen uns für das Rechnen in Stunden nur die Werte 0, 1, 2, 3, .. , 22, 23 zu Verfügung. Zu beachten ist, dass 24 Uhr = 0 Uhr ist. Addition und Subtraktion von Stunden führt auf Gleichungen wie: 16 + 3 = 19 22 + 9 = 7 15 + 37 = 4 7 – 9 = 22 15 – 37 = 2. Betrachten wir etwas näher wie gerechnet wird am Beispiel 15 + 37 = 4 : 15 + 37 = 52 damit wird der Definitionsbereich {0, 1, 2, 3 , … , 22, 23} , bestehend aus 24 Zahlen, überschritten. Nahe liegend ist, das Ergebnis 52 durch 24 ganzzahlig zu dividieren und dann den additiven, positiven Rest zu betrachten, d. h. die Stunden der ganzen Tage (24 Std.) zu ermitteln und die verbleibenden Stunden (= additiven, positiven Rest) zu ermitteln 15 + 37 = 52 = 2 * 24 + 4 und damit 15 + 37 = 4 für eine 24-Stunden-Uhr Analog ist das Vorgehen bei der Subtraktion, wobei die Stunden der ganzen Tage abgezogen werden, wenn das Ergebnis negativ ist: 15 - 37 = -22 = (-1) * 24 + 2 und damit 15 - 37 = 2 für eine 24-Stunden-Uhr Beim Ergebnis kommt es also vor allem auf den Rest nach Division durch 24 an. Mathematisch wird das in der Theorie der Kongruenzen und dem Rechnen in Restklassen behandelt. Untersuchen wir nun die „allgemeine Mechanik“ auf der die „Uhren-Mathematik“ fusst. Dazu beginnen wir mit der Definition der Kongruenz, die auf den Eigenschaften der Teilbarkeit von natürlichen Zahlen aufbaut und auf die Restklassen führt. Definition 5: Sei m ≠ 0 eine ganze Zahl. Wir sagen die ganzen Zahlen a, b sind kongruent modulo m, geschrieben als a ≡ b mod m , falls die Differenz a – b durch den Modul m (ohne Rest) teilbar ist, geschrieben als: a ≡ b mod m m│(a – b) Bemerkung: Da die Forderung der Teilbarkeit von a – b durch m mit der Teilbarkeit durch -m gleichwertig ist, beschränken wir uns im Weiteren auf m . Unter einer Kongruenz verstehen wir also die Feststellung einer Teilbarkeit. 19 Da die Kongruenzen sowohl bei der mathematischen Beschreibung die Cäsar Chiffre als auch demm RSA Verfahren eine wesentliche Rolle spielen, stellen wir einige Eigenschaften zusammen. Satz 3.5 Seien a, b, c, d, x, y , m . Dann gelten 1) a ≡ b mod m, b ≡ a mod m , (a - b) ≡ 0 mod m sind äquivalent 2) aus (a ≡ b mod m und b ≡ c mod m) folgt a ≡ c mod m 3) aus (a ≡ b mod m und c ≡ d mod m) folgt (a x + c y) ≡ (b x + d y) mod m für alle x, y 4) aus (a ≡ b mod m und c ≡ d mod m) folgt (a c) ≡ (b d) mod m 5) aus a ≡ b mod m und d│m , d > 0 folgt a ≡ b mod d 6) sei a gegeben, dann existiert ein b mit (a b) ≡ 1 mod m genau dann, wenn ggT(a,m) = 1 gilt 7) für p Primzahl gilt: aus a b ≡ 0 mod p folgt a ≡ 0 mod p oder b ≡ 0 mod p 8) aus a x ≡ a y mod m und ggT(a,m) = 1 folgt x ≡ y mod m Beweis: 1) a ≡ b mod m m│(a - b) m│(b - a) b ≡ a mod m a ≡ b mod m m│(a - b) m│((a – b) - 0) a - b ≡ 0 mod m 2) a ≡ b mod m m│(a – b) b ≡ c mod m m│(b – c) m│((a–b) + (b–c)) nach Satz 1.1 3) m│(a – c) a ≡ c mod m 3) a ≡ b mod m und c ≡ d mod m, x, y m│(a – b) m│(x a – x b) m│(c – d) m│(y c – y d) m│((x a – x b)+ (y c – y d)) nach Satz 3.1. 3) m│((x a + y c) – (x b + y d)) (a x + c y) ≡ (b x + d y) mod m 4) a ≡ b mod m und c ≡ d mod m a ≡ b mod m m│(a – b) m│(c (a – b)) m│(c a – c b) c ≡ d mod m m│(d – c) m│(b (d – c)) m│(b d – c b) c a ≡ c b mod m und b d ≡ c b mod m a c ≡ b c mod m und b c ≡ d b mod m a c ≡ d b mod m nach 2) a c ≡ b d mod m 5) a ≡ b mod m und d│m , d > 0 also existiert ein x, so dass d x = m a ≡ b mod m m│(a - b) (d x)│(a – b) d│(a – b) a ≡ b mod d 20 6) I. „“: zu zeigen: (a b) ≡ 1 mod m ggT(a,m) = 1 (a b) ≡ 1 mod m a b – 1 = x m a b – x m = 1 Multiplikation mit 1 = ggT(a,m) / ggT(a,m) liefert a m ggT a,m * * b – x * 1 ggT a,m ggT a,m ggT(a,m) teilt 1 ggT(a,m) = 1 II. „“: zu zeigen: ggT(a,m) = 1 es ex. ein b mit (a b) ≡ 1 mod m ggT(a,m) = 1 nach Satz 3.3 existieren x0 , y0 mit ggT(a,m) = a x0 + m y0 = 1 a x0 - 1 = m (- y0 ) a x0 ≡ 1 mod m b = x0 ist eine Lösung 7) p Primzahl: a b ≡ 0 mod p p│(a b – 0) p│a b p│a oder p│b weil die Primzahlzerlegung von a b eindeutig ist a ≡ 0 mod p oder b ≡ 0 mod p 8) a x ≡ a y mod m es existiert ein z mit a y - a x = m z a (y – x) = m z m│a (y – x) m│(y – x) , da ggT(a,m) = 1 x ≡ y mod m +++ Bemerkung: zu 3): x = y = 1 liefert: aus (a ≡ b mod m und c ≡ d mod m) folgt (a + c) ≡ (b + d) mod m zu 6): einige Anmerkungen: I) a hat dann und nur dann einen „Kehrwert“ (oder multiplikatives inverses Element) bezüglich modulo m, wenn a und m teilerfremd sind. II) Alle Lösungen sind gegeben durch: bi = b + i m, für alle i , d. h. alle Lösungen sind kongruent modulo m 21 3.5 Restklassen Grob gesprochen führt das Rechnen mit ganzen Zahlen modulo m zu den gleichen Regeln wie bei den ganzen Zahlen, wobei wir die Vielfachen von m nicht berücksichtigen, d.h. es wird nicht zwischen den Zahlen a und (a + j m) unterschieden, wobei j ist. Genau gesagt ist a ein Repräsentant aller Zahlen der Form a + m j , d.h. a steht für die Menge aller Zahlen der Form a + m j , j . Darum wird a als Restklasse2 bezeichnet, denn es kommt nur auf den Rest bei Division durch m an. Um Verwechselungen zu vermeiden schreibt man daher auch am statt am und damit gilt: die Restklasse a bezüglich der Division durch m ist definiert durch die Menge: am = {z │ z = a + m j mit j } = {z │ z ≡ a mod m } Beispiel: Restklassen bezüglich der Division durch 7: 07 = {z │ z ≡ 0 mod 7 } = {… , -14 , -7 , 0 , 7 , 14 , …} 17 = {z │ z ≡ 1 mod 7 } = {… , -13 , -6 , 1 , 8 , 15 , …} 27 = {z │ z ≡ 2 mod 7 } = {… , -12 , -5 , 2 , 9 , 16 , …} 37 = {z │ z ≡ 3 mod 7 } = {… , -11 , -4 , 3 , 10 , 17 , …} 47 = {z │ z ≡ 4 mod 7 } = {… , -10 , -3 , 4 , 11 , 18 , …} 57 = {z │ z ≡ 5 mod 7 } = {… , -9 , -2 , 5 , 12 , 19 , …} 67 = {z │ z ≡ 6 mod 7 } = {… , -8 , -1 , 6 , 13 , 20 , …} Hier wird aber weiterhin die Bezeichnung a m statt am verwendet, da es nicht zu Verwechselungen kommen kann. Nach dem Divisionsalgorithmus, Satz 3.2, kann jede gegebene Zahl a bei Division durch m ≠ 0 dargestellt werden als a = q m + r mit 0 ≤ r < │m│. Aus der Ungleichung folgt, dass jede ganze Zahl a hinsichtlich der Division durch m genau einem der Werte 0, 1, 2, 3, ... , m-1 kongruent ist. Deswegen können wir nun die Menge der Restklassen definieren. 2 Die Menge wird als Restklasse und nicht als Restmenge bezeichnet, da Restmenge bereits in der Mengenlehre verwendet wird: Die Restmenge (Differenzmenge) von den Mengen A und B ist die Menge der Elemente, die in A, aber nicht in B enthalten sind. 22 Definition 6 1) Gilt x ≡ y mod m , so nennt man y einen Rest von x modulo m 2) Eine Menge von Zahlen y1 , y2 , … ym heißt ein vollständiges Restsystem modulo m, / m wenn für jedes ganzzahlige x genau ein yj existiert mit x ≡ yj mod m.3 3) Ein primes Restsystem modulo m ( / m )x ist eine Teilmenge eines vollständigen Restsystems modulo m , wobei für alle Elemente ri {r1 , r2 , r3 , . . . , rk } {y1 , y2 , y3 , . . . , ym } mit k ≤ m folgende Bedingungen gelten: I) ggT( ri , m) = 1 II) ( / m )x = {r1 , r2 , r3 , . . . , rk } enthält alle yi der Eigenschaft I). /m mit 4) Die Eulersche Funktion Φ(m) ist definiert als die Anzahl der Elemente eines primen Restsystems modulo m. 4 Bemerkung: 1) die Mengen { 0, 1, 2, … , m – 2, m – 1 } , { 1, 2, … , m – 1, m } , … , { j, j + 1, j +2, … , j + (m – 1) } , j bilden jeweils ein vollständiges Restsystem modulo m 2) aus einem vollständigen Restsystem erhält man ein primes Restsystem, indem die yi gestrichen werden, für die ggT(yi ,m) ≠ 1 gilt. Beispiele von primen Restsystemen: 1) m = 6: ( / 6 )x = { 1, 2, 3, 4, 5 }= { 1, 5 } Φ(m) = 2 2) m = 9: ( / 9 )x = {1, 2, 3, 4, 5, 6, 7, 8} = {1, 2, 4, 5, 7, 8} Φ(m) = 6 3) m = 24: ( / 24 )x = { 1, 5, 7, 11 , 13 , 17, 19, 23 } Φ(m) = 8 und es gilt, dass das Quadrat jedes Elements kongruent zu 1 ist: r r2 r2 ≡ x mod 24 : x 1 1 1 5 25 1 7 49 1 11 121 1 13 169 1 17 289 1 19 361 1 23 529 1 Jedes Element ist hinsichtlich der Multiplikation also zu sich selbst invers. 3 4 daraus folgt insbesondere yk ≢ yl mod m für k ≠ l anders ausgedrückt: Φ(m) ist die Anzahl der natürlichen Zahlen ≤ m, die zu m relativ prim sind. 23 / 11 )x = {1, 2, 3, 4 , 5 , 6, 7 , 8 , 9 , 10} Φ(m) = 10 4) m = 11: ( 1 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 2 2 4 6 8 10 1 3 5 7 9 3 3 6 9 1 4 7 10 2 5 8 4 4 8 1 5 9 2 6 10 3 7 5 5 10 4 9 3 8 2 7 1 6 6 6 1 7 2 8 3 9 4 10 5 Multiplikationstabelle von ( 7 7 3 10 6 2 9 5 1 8 4 8 8 5 2 10 7 4 1 9 6 3 9 9 7 5 3 1 10 8 6 4 2 10 10 9 8 7 6 5 4 3 2 1 / 11 )x Außer 1 und 10 ist kein Element zu sich selbst invers: 1 2 3 4 5 * * * * * 1 6 4 3 9 = = = = = 1 1 1 1 1 6 7 8 9 10 * * * * * 2 8 7 5 10 6-1 7-1 8-1 9-1 -1 10 = 2 = 8 = 7 = 5 = 10 = = = = = 1 1 1 1 1 und somit gilt: 1-1 2-1 3-1 4-1 -1 5 = = = = = 1 6 4 3 9 5) für p Primzahl gilt: ( / p )x = { 1 , 2, 3, …, p-2 , p-1 } ( / p )x hat mithin (p - 1) Elemente Φ(m) = p - 1 6) für p, q Primzahlen mit p ≠ q gilt: ( / (p * q) )x = {1, 2, 3, …, (p-1)*(q-1) } / (p * q) )x hat mithin (p - 1) * (q - 1) Elemente Φ(m) = (p – 1) (q – 1) ( etwas ausführlicher: 1 , .. , p , .. , 2p , .. , 3p , .. , q p enthält q Zahlen, die durch p teilbar sind, also gibt es q Zahlen r i mit ggT( ri , p q) = p ≠ 1 24 1 , .. , q , .. , 2q , .. , 3q , .. , p q enthält p Zahlen, die durch q teilbar sind, also gibt es p Zahlen ri mit ggT( ri , p q) = q ≠ 1 Damit ergibt sich für die Anzahl der Elemente von ( p q – q – p + 1 = (p – 1) (q – 1) / (p * q) )x : 1 muss addiert werden, da das Produkt (p q) zweimal abgezogen wurde (jeweils größtes Element der o. a. Folgen 1 , … , p q). Folgerung Das prime Restsystems modulo m ( / m ) x ist unter der Multiplikation abgeschlossen, d.h. ri , rj ( Beweis: / m )x ri * rj ( / m )x ri , rj ( / m )x ggT( ri , m) = 1 und ggT( rj , m) = 1 wg. Satz 3.5 6) gilt: es existieren b1 , b2 mit (ri b1) ≡ 1 mod m und (rj b2) ≡ 1 mod m ((ri b1) (rj b2)) ≡ 1 mod m wg. Satz 3.5 4) ((ri rj) (b1 b2)) ≡ 1 mod m ggT( ri rj , m) = 1 wg. Satz 3.5 6) Bemerkung: Das gilt natürlich für ein vollständiges Restsystem modulo m, / m aber es ist nicht selbstverständlich das das auch für eine Teilmenge davon gilt. Satz 3.6 1) Seien a , m Primzahl mit m ∤ a )5 , dann folgt Φ(m) = m – 1 und weiter {a , 2 a , 3 a , . . . , (m - 1) a } ist primes Restsystems modulo m 2) Ist das prime Restsystems modulo m gegeben durch ( / m )x = {r1 , r2 , r3 , . . . , rΦ(m) } . Dann folgt aus a und ggT(a, m) = 1 : {a r1 , a r2 , a r3 , . . . , a rΦ(m) } ist primes Restsystems modulo m Beweis: 1) r , m Primzahl , mj = j r damit hat {r , 2 r , 3 r , . . . , (m - 1) r } m – 1 Elemente und es bleibt zu zeigen, dass alle Elemente verschieden sind, also: für alle i ≠ j gilt mi mj mod m 5 Da m Primzahl ist folgt aus m ∤ a auch ggT(m, a) = 1 25 , Annahme: es existieren i ≠ j mit für mi ≡ mj mod m nehmen wir an, dass i < j gilt, sonst vertausche i mit j nach Definition der mi gilt mj - mi = (j – i) r mit 1 ≤ i < j ≤ (m – 1) I) 0 < j – i < m – 1 < m m ∤ (j – i) II) nach Voraussetzung gilt: m ∤ r und r ≠ 0 (sonst m│r) m ∤ r (j – i) m ∤ (mi – mj) Widerspruch zu mi ≡ mj mod m damit gilt 1) 2) Es gelten a und ggT(a, m) = 1 : {a r1 , a r2 , a r3 , . . . , a rm-1 } hat m – 1 Elemente und es bleibt zu zeigen, dass alle Elemente verschieden sind, also: für alle i ≠ j gilt a ri a rj mod m Annahme: es existieren i ≠ j mit für a ri ≡ a rj mod m nehmen wir an, dass i < j gilt, sonst vertausche i mit j dann gilt a rj - a ri = (rj - ri) a mit 1 ≤ i < j ≤ (m – 1) m ∤ (rj - ri ) 1) 0 < rj - ri < m 2) nach Voraussetzung gilt: m ∤ a da ggT(a, m) = 1 und a ≠ 0 m ∤ a (rj - ri) m ∤ (mi – mj) Widerspruch zu mi ≡ mj mod m damit gilt 2) +++ Satz 3.7 Beweis: Kleiner Fermatscher Satz Sei p eine Primzahl und a Dann folgt aus p ∤ a: ap - 1 ≡ 1 mod p oder äquivalent: p ∤ a: ap ≡ a mod p Sei p ∤ a , dann definieren wir Vielfache von a mit (*): m1 = a, m2 = 2 a, m3 = 3 a, … , mp - 1 = (p – 1) a nach 3.6 1) gilt für alle i ≠ j : mi mj mod p damit ist jedes mi genau einem k {1, 2, 3, . . . , (p 1)} kongruent mod p und damit gilt: 26 mi ≡ k mod p i a ≡ k mod p (**) (*) m1 m2 m3 ... mp - 1 = 1 a * 2 a * 3 a * … * (p – 1) a m1 m2 m3 ... mp - 1 = 1 * 2 * 3 * … * (p – 1) ap-1 nach 3.5 4) und (**) gilt: (m1 m2 m3 ... mp – 1) ≡ (1 * 2 * 3 * … * (p – 1)) mod p (**) 1 * 2 * 3 * … * (p – 1) ap-1 ≡ 1 * 2 * 3 * … * (p – 1) mod p 1 * 2 * 3 * … * (p – 1) (ap-1 - 1) ≡ 0 mod p nach 3.5 1) nun teilt p als Primzahl keinen der Faktoren 1, 2, .. , (p – 1) also auch nicht das gesamte Produkt 1 * 2 * 3 * … * (p – 1) (ap-1 - 1) ≡ 0 mod p ap-1 ≡ 1 mod p aus 3.5 4) gilt damit auch nach 3.5 7) nach 3.5 1) ap ≡ a mod p +++ Zum Satz 3.7 gibt es eine Verallgemeinerung: Satz 3.8 Eulersche Verallgemeinerung des kleiner Fermatscher Satz Aus a, m und ggT(a,m) = 1 folgt aΦ(m) ≡ 1 mod m Beweis: ( / m )x hat Φ(m) Elemente des primen Restsystems modulo m: r1 , r2 , r3 , . . . , rΦ(m) Wir definieren die a-fachen von den ri mit und ggT(a, m) = 1: {a r1 , a r2 , a r3 , . . . , a rΦ(m)} a nach 3.6 2) ( /m )x = {a r1 , a r2 , a r3 , . . . , a r Φ(m)} also existiert für jedes ri genau ein a rk mit ri ≡ a rk mod m und weiter gilt, dass den verschiedene r i , rj auch verschiedene a rk , a rm zugeordnet sind. Damit ist klar, dass gilt: {a r1 , a r2 , a r3 , . . . , a rΦ(m) } = {r1 , r2 , r3 , . . . , rΦ(m)} wobei die Reihenfolge der Elemente unterschiedlich ist. 27 Weiter gilt mithin: a r1 a r2 a r3 . . . a r Φ(m) ≡ r1 r2 r3 . . . r Φ(m) mod m wg. 3.5 4) aΦ(m) r1 r2 r3 . . . r Φ(m) ≡ r1 r2 r3 . . . r Φ(m) mod m wegen ggT(ri , m) = 1 und 3.5 8) folgt somit aΦ(m) ≡ 1 mod m +++ Damit sind alle Voraussetzungen geschaffen um die beiden Sätze 3.9, 3.10 zu beweisen, die die Grundlage des RSA Verfahrens bilden. Während die Cäsar Chiffre über die Addition in Restsystemen definiert ist, beruht das RSA Verfahren auf dem Potenzieren in Restsystemen, d.h. der Schlüssel steht im Exponenten der zu verschlüsselnden / entschlüsselnden Nachricht. Satz 3.9 Es seien p, q Primzahlen mit p ≠ q , n p q, d, e ggT(e, Φ(n)) = 1, (e d ) ≡ 1 mod Φ(n) und a mit Dann gilt ae d ≡ a mod n Bemerkung: Der Satz sagt aus, dass unter den gegebenen Bedingungen in der Menge / n {0 , 1, 2 , . . . , (n 1)} gilt: ae d = a . Beweis: Aus (e d ) ≡ 1 mod Φ(n) folgt per Definition: es existiert eine ganze Zahl r mit e d = 1 + r Φ(n) mit Φ(n) = (p – 1) (q – 1) = 1 + r (p – 1) (q – 1) s. Definition 6, Bem. 6 a(p – 1) ( q – 1) ≡ 1 mod (p q) (a(p – 1) ( q – 1) ) r ≡ (1) r mod (p q) a (a(p – 1) ( q – 1) ) r ≡ a (1) r mod (p q) a1 + (p – 1) ( q – 1) r ≡ a 1 mod (p q) a1 + Φ(n) r ≡ a mod (p q) wg. wg. wg. wg. wg. ae d ≡ a mod (p q) ae d ≡ a mod (n) wg. e d = 1 + r Φ(n) wg. n = p q +++ 28 3.8: aΦ(m) ≡ 1 mod m 3.5 4) r-mal angewendet 3.5 4) (1) r = 1 Φ(n) = (p – 1) (q – 1) Satz 3.10 Beweis: Lösung von Kongruenzen 1. Grades6 (Satz 3.5.6) Es seien p, q Primzahlen mit p ≠ q , n p q, e mit ggT(e, Φ(n)) = 1, Dann hat die Kongruenz (e * d) ≡ 1 mod Φ(n) eine Lösung d . Als abkürzende Schreibweise verwenden wir: m := Φ(n), zu zeigen: ggT(e,m) = 1 es ex. ein d mit (e d) ≡ 1 mod m ggT(e,m) = 1 nach Satz 3.3 existieren x0 , y0 mit ggT(e,m) = e x0 + m y0 = 1 e x0 - 1 = m (- y0 ) e x0 ≡ 1 mod m d = x0 ist eine Lösung +++ Satz 3.10 sagt nur aus, dass eine Lösung existiert, aber wie sie errechnet wird ist nicht angegeben. Dazu haben wir aber schon eine Lösung in Satz 3.4 erarbeitet: Die Kongruenz 1. Grades wird mit Hilfe des Euklidischen Algorithmus gelöst indem er „vorwärts“ und dann „rückwärts“ angewendet wird Machen wir das Verfahren der „vorwärts“ und „rückwärts“ Anwendung des Euklidischen Algorithmus an einem Beispiel klar, in dem eine Kongruenz 1. Grades konkret gelöst wird. Dazu geben wir folgende Daten vor: p = 1223 q = 1987 n = p * q = 1223 * 1987 = 2.430.101 Φ(n) = Φ(p * q)) = (p – 1) (q - 1) = 1222 * 1986 = 2.426.892 e = 948047 Die Kongruenzgleichung: (948047 * d ) ≡ 1 mod 2426892 ist zu lösen. 6 Satz 3.5.6 sagt mehr aus: ggT(e, Φ(n)) = 1 es ex. ein d mit (e d) ≡ 1 mod m, hier wird nur die Richtung „“ bewiesen und im weiteren benutzt 29 Schritt 1: Vorwärtsanwendung Zu zeigen ist, dass ggT(e, Φ(n)) = 1 gilt (s. auch Satz 3.4, Beispiel 2) Mit Hilfe des in Satz 3.4 beschriebenen Euklidischen Algorithmus bestimmen wir den ggT(e, Φ(n)) = ggT(948047, 2426892) Auf der übernächsten Seite sind die Schritte in einer Tabelle dargestellt (linker Tabellenteil, rechts vom schwarzen Pfeil). Dabei wird ausgehend von 0. Φ(n) = q1 * e + r2 (siehe Satz 3.4, Bemerkung 1)) 2426892 = 2 * 948047 + 530798 der ggT ermittelt und man erhält aus Zeile i = 14: r 15 = 1 = ggT(e, Φ(n)) Schritt 2: Rückwärtsanwendung Nach Satz 3.3 müssen d, a existieren, so dass gilt: ggT(e, Φ(n)) = (e * d) - a Φ(n) . Weiter gilt nach dem Ergebnis von Schritt 1 ggT(e, Φ(n)) = 1, also ist die Gleichung e * d – a * Φ(n) = 1, d, a 948047 * d – a * 2426892 = 1 zu lösen, hier also konkret: Nach Satz 3.4 liefern die letzten beiden Zeilen des Euklidischen Algorithmus: …. t -2. r t-2 = qt-1 r t-1 + r t mit 0 ≤ rt < rt-1 t -1. r t-1 = qt r t und rt = ggT(a,b) und im Beispiel die letzten 4 Zeilen: .… 11. 187 = 6 * 30 + 7 12. 30 = 4 * 7 + 2 13. 7=3* 2+1 14. 2=2* 1 I) und r15 = 1 = ggT(e, Φ(n)) Zeile 13 wird nach r15 = 1 umgeformt und liefert damit: 1 = 7 * 1 – 3 * 2 (#) 30 II) aus Zeile 12 ergibt sich der Rest r14 = 2 nach umformen 2 = 30 – 4 * 7 und einsetzen in (#) liefert: 1 = 7 * 1 – 3 * (30 – 4 * 7) = 7 * 1 – 3 * 30 - 3 * (- 4 * 7) = 7 * (1 + 3 * 4) – 3 * 30 und somit: 1 = 7 * 13 – 3 * 30 = 13 * 7 – 3 * 30 (*) III) aus Zeile 11 ergibt sich der Rest r13 = 7 nach umformen 7 = 187 – 6 * 30 und einsetzen in vorherige errechnete Zeile (*) liefert: 1 = 13 * (187 – 6 * 30) – 3 * 30 = 13 * 187 – 13 * 6 * 30 – 3 * 30 = 13 * 187 – (13 * 6 + 3) * 30 und somit: 1 = 13 * 187 – 81 * 30 So wird nun weiter verfahren, bis man die oberste Zeile (0) erreicht (Details auf der nächsten Seite), und es ergibt sich dann schließlich aus XIV) als Lösung von: 948047 * d – a * 2426892 = 1 1 = 1051235 * 948047 – 410657 * 2426892 31 d = 1051235 a = 410657 (e d ) ≡ 1 mod Φ(n) mit p 1223 q 1987 i Φ(p*q) 0 2426892 = 2 * 948047 + 530798 XIV = 229921 * 948047 - 1 948047 = 1 * 530798 + 417249 XIII = 229921 * ( 2 530798 = 1 * 417249 + 113549 XII = 49185 * 3 417249 = 3 * 113549 + 76602 XI = 49185 4 113549 = 1 * 76602 + 36947 X = 5 76602 = 2 * 36947 + 2708 IX 6 36947 = 13 * 2708 + 1743 7 2708 = 1 * 1743 + 8 1743 = 1 * 965 9 965 = 1 * 10 778 = 4 11 187 = 12 30 13 14 Φ(n) = Φ(p * q) = (p – 1) (q - 1) (p-1) (q-1) 2426892 e 948047 e d 410657 * 948047 - 1 * 417249 - 180736 * * ( 417249 - 3 * 16004 * 76602 - 33181 * = 16004 * ( 76602 - 2 * VIII = 755 * 2708 - 1173 * 965 VII = 755 * ( 2708 - 1 * + 778 VI = 337 * 965 - 418 * 778 + 187 V = 337 * ( 965 - 1 * * 187 + 30 IV = 13 * 187 - 81 * 6 * 30 + 7 III = 13 * ( 187 - 6 * = 4 * 7 + 2 II = 7 * 1 - 3 * 7 = 3 * 2 + 1 I 1 = 7 * 1 - 3 * 2 = 2 * 1 + 0 ( ( ( ( ( ( ( 2426892 - 530798 ) - 530798 - 113549 ) - 113549 - 36947 ) - 36947 2 180736 1 33181 e Φ(p*q) a * 948047 ) = 1051235 * 948047 - 410657 * 2426892 * 530798 = 229921 * 948047 - 410657 * 530798 * 417249 ) = 229921 * 417249 - 180736 * 530798 * 113549 = 49185 * 417249 - 180736 * 113549 1 * 76602 ) = 49185 * 76602 - 33181 * 113549 1173 * 36947 = 16004 * 76602 - 33181 * 36947 - 13 * 2708 ) = 16004 * 2708 - 1173 * 36947 1743 ) - 418 * 1743 = 755 * 2708 - 1173 * 1743 1743 - 1 * 965 ) = 755 * 965 - 418 * 1743 778 ) - 81 * 778 = 337 * 965 - 418 * 778 778 - 4 * 187 ) = 337 * 187 - 81 * 778 30 ) - 3 * 30 = 13 * 187 - 81 * 30 30 - 4 * 7 ) = 13 * 7 - 3 * 30 2 Vorwärts (rechts vom schwarzen Pfeil): Aus der vorletzten Zeile des linken Blocks ergibt sich der Rest 1 und damit gilt: ggT(e, Φ(n)) = 1 Rückwärts (rechts vom blauen Pfeil): Aus der Rechnung im rechten Block ergibt sich aus der obersten Zeile dann d = 1051235 32 4. Die Cäsar Chiffre, mathematischen Modellierung Die Cäsar Chiffre ist ein symmetrisches Verfahren, d.h. zum Ver- und Entschlüsseln wird der gleiche Schlüssel benutzt. Als Konsequenz daraus muss zwischen Sender und Empfänger der Schlüssel ausgetauscht werden. Dies ist aber eine kritische Aktion und muss daher wieder verschlüsselt erfolgen also ist wieder ein Schlüsselaustausch notwendig etc. 4.1 Das Prinzip der Cäsar Chiffre Das Verschlüsselungsrad mit 26 Buchstaben legt schon die Betrachtung des entsprechenden vollständigen Restsystems modulo 26, / 26 , nahe. Dazu ordnen wir jedem der 26 Buchstaben des Alphabets eineindeutig eine ganze Zahl zu ( 0, 1, 2, 3, 4, 5, … , 24, 25 ) ↔ ( A, B, C, D, E, … , Y, Z ) (#) 1. I. 2. 3. 4. 5. 6. Der Empfänger R wählt einen Schlüssel, wobei der Schlüssel ein Buchstabe zwischen B und Z ist, und das entspricht einer natürliche Zahl zwischen 1 und 25. A ist ausgeschlossen, da damit nicht verschlüsselt wird, sondern der Text gleich bleibt. II. Der Empfänger sendet den Schlüssel an den Sender. Das muss natürlich über ein sicheren Kanal erfolgen, wie immer der auch realisiert wird. Der Sender S empfängt den Schlüssel. S verfasst die Nachricht P = (p1 , p2 , p3 , … , pm) entsprechend der obigen Zuordnung (#) S verschlüsselt mit dem Schlüssel und erhält die verschlüsselte Nachricht C = (c1 , c2 , c3 , … , cm) S sendet C an R. R entschlüsselt C mit Hilfe des geheimen Schlüssels und erhält P Der Nachteil des symmetrischen Verfahren ist klar: Es ist ein Austausch des Geheimschlüssels erforderlich. 4.2 Schritte der Cäsar Chiffre 4.2.1 Die Schlüsselerzeugung Wie oben beschrieben ist der Schlüssel ein Buchstabe zwischen B und Z, und das entspricht einer natürliche Zahl zwischen 1 und 25. A ist ausgeschlossen, da damit nicht verschlüsselt wird, sondern der Text gleich bleibt. 33 4.2.2 Die Verschlüsselung / Entschlüsselung Mit dem „Textbuchstaben“ t, „verschlüsselten Buchstaben“ v, Schlüssel s, wobei t, v, s / 26 sind, wird verschlüsselt: (Textbuchstabe) + (Schlüssel) ≡ (verschlüsselter Buchstabe) mod 26 entschlüsselt: (verschlüsselter Buchstabe) - (Schlüssel) ≡ (Textbuchstabe) mod 26 (t + s) ≡ v mod 26 (v – s) ≡ t mod 26 Verschlüsselung: Entschlüsselung: 4.3 Ein Beispiel Führen wir die Verschlüsselung nach dieser Methodik nun am Beispiel von 2.2 durch. Dazu verwenden wir die folgende Zuordnungstabelle: 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 und damit ergibt sich folgende Verschlüsselung mit H: s = 7 und (t + s) ≡ v mod 26: Text t t+s v verschlüsselt d 3 10 10 K a s g e s 0 18 6 4 18 7 25 13 11 25 7 25 13 11 25 H Z N L Z Text t t+s v verschlüsselt a l l i e 0 11 11 8 4 7 18 18 15 11 7 18 18 15 11 H S S P L n 13 20 20 U a m 0 12 7 19 7 19 H T t 19 26 0 A g 6 13 13 N e 4 11 11 L b i e t 1 8 4 19 8 15 11 26 8 15 11 0 I P L A g 6 13 13 N s 18 25 25 Z e 4 11 11 L r 17 24 24 Y f 5 12 12 M a 0 7 7 H t 19 26 0 A z 25 32 6 G e 4 11 11 L l 11 18 18 S l 11 18 18 S Zum Vergleich das Ergebnis von Kapitel 2.2 : K H Z N L Z H T A N L I P L A N H S S P L U Z G 34 L Y M H L S S A Nun zur Entschlüsselung mit H: s = 7 und (v – s) ≡ t mod 26 : verschlüsselt v v-s t entschlüsselt K 10 3 3 d H Z N 7 25 13 0 18 6 0 18 6 a s g L 11 4 4 e Z 25 18 18 s H T 7 19 0 12 0 12 a m A 0 -7 19 t N 13 6 6 g L 11 4 4 e I P L A N 8 15 11 0 13 1 8 4 -7 6 1 8 4 19 6 b i e t g verschlüsselt v v-s t entschlüsselt H S S P 7 18 18 15 0 11 11 8 0 11 11 8 a l l i L 11 4 4 e U 20 13 13 n Z 25 18 18 s L 11 4 4 e Y 24 17 17 r M 12 5 5 f H 7 0 0 a G 6 -1 25 z L 11 4 4 e S 18 11 11 l S A 18 0 11 -7 11 19 l t Vergleichen wir das Ergebnis in den Zeilen „entschlüsselt“ mit den Zeilen „Text“ in der oberen Tabelle, so erkennen wir, dass sie beide gleich sind. Die Berechnung der Reste ist nur für die blau markierten Elemente notwendig, da sie / 26 = { 0, 1, 2, 3, 4, 5, … , 24, 25 } enthalten sind, z.B.: nicht in der Menge (19 + 7) ≡ 0 mod 26 (0 - 7) ≡ 19 mod 26 da 19 + 7 = 26 = 1 * 26 + 0 da 0 - 7 = -7 = (-1) 26 + 19 also den Rest 0 ergibt, also den Rest 19 ergibt. 4.4 Angriff auf die Cäsar Chiffre Wie gleich gezeigt wird ist dieses Verfahren leicht zu brechen. Dazu muss allerdings der Angreifer erst einmal wissen, dass es sich hier um die Cäsar Chiffre handelt. Ganz allgemein gilt, dass das Verfahren mit dem verschlüsselt wird meist nicht geheim zu halten ist. Daher sollte stets die Gültigkeit des Kerckhoffs'schen Prinzips voraussetzen werden. Es sagt aus, dass die Sicherheit eines Verschlüsselungsverfahrens nicht von der Geheimhaltung des Verfahrens selbst abhängt. Die Sicherheit gründet sich ausschließlich auf die Geheimhaltung des Schlüssels. Gehen wir also davon aus, dass die Cäsar Chiffre verwendet wurde. Es gibt maximal 26 verschiedene Schlüssel, da das Alphabet aus 26 Buchstaben besteht. Also könnten wir einfach alle durchprobieren. Aber es gibt einen effizienteren Ansatz, der sich der statistischen Verteilung der Buchstaben in einem Text bedient. Tatsächlich kommen in langen Texten die verschiedenen Buchstaben nicht gleich häufig, sondern unterschiedlich oft vor. 35 a b c d e f g h i 6,51% 1,89% 3,06% 5,08% 17,40% 1,66% 3,01% 4,76% 7,55% j k l m n o p q r 0,27% 1,21% 3,44% 2,53% 9,78% 2,51% 0,67% 0,02% 7,00% s t u v w x y z ß 7,27% 6,15% 4,35% 0,67% 1,89% 0,03% 0,04% 1,13% 0,31% Tabelle: Häufigkeit der Buchstaben in Texten, alphabetisch sortiert7 e n i s r a t d h 17,40% 9,78% 7,55% 7,27% 7,00% 6,51% 6,15% 5,08% 4,76% u l c g m o b w f 4,35% 3,44% 3,06% 3,01% 2,53% 2,51% 1,89% 1,89% 1,66% k z p v j y x q ß 1,21% 1,13% 0,79% 0,67% 0,27% 0,04% 0,03% 0,02% 0,31% Tabelle: Häufigkeit der Buchstaben in Texten, nach Häufigkeit sortiert Dies ist übrigens von der Sprache abhängig. So haben etwa deutsche, englische, französische, spanische, italienische und schwedische Texte - mit Berücksichtigung der sprachspezifischen Buchstaben (z.B. ö, ü, é, è, ê) - unterschiedliche Verteilungen. Details dazu findet man z.B. in http://de.wikipedia.org/wiki/Buchstabenh%C3%A4ufigkeit Kommen wir nun auf unser Beispiel zurück und untersuchen den Text: KHZNLZHT LPULUSLI PTKYPAAL PZZLUILP ANLIPLAN LUKPLILS UKPLCVLS BUZQLKVJ HSSPLUZG LYMHLSSA PUKYLPAL PSLPUKLT NLYPULPU LTGDLPAL UKPLHXBP AHULYBUK RLYKPLPU KLYSHUKL ZZWYHJOL RLSALUOL ONHSSPLY Gehen wir davon aus, dass wir wissen, dass die Cäsar Chiffre verwendet wurde. Eine Analyse der Häufigkeiten der Buchstaben im Text (168 Buchstaben) liefert: 7 Quelle: http://de.wikipedia.org/wiki/Buchstabenh%C3%A4ufigkeit 36 L P U K S A H Y Z 38 21 17 12 12 9 9 9 8 22,62% 12,50% 10,12% 7,14% 7,14% 5,36% 5,36% 5,36% 4,76% N I T B O G J R V 5 4 4 3 3 2 2 2 2 2,98% 2,38% 2,38% 1,79% 1,79% 1,19% 1,19% 1,19% 1,19% C D M Q W X E F 1 1 1 1 1 1 0 0 0,60% 0,60% 0,60% 0,60% 0,60% 0,60% 0,00% 0,00% Tabelle der Häufigkeiten der Buchstaben im Beispiel, nach Häufigkeit sortiert Vergleichen wir nun die allgemeine Verteilung (s. o.) mit der Verteilung im verschlüsselten Text, so ergibt sich folgende Tabelle: Verschlüsselter Text L 22,62% P 12,50% U 10,12% K 7,14% S 7,14% allgemeine Verteilung 17,40% e 9,78% n 7,55% i 7,27% s 7,00% r Schlüssel basierend auf allgemeiner statistischer Verteilung H C M S B Tabelle zur Schlüsselermittlung Das legt auf jeden Fall den Schlüssel „H“ nahe. Da die Häufigkeiten der 2. - 5. meisten Buchstaben dicht beieinander liegen, vertauschen wir für die 2. und 3. meisten Buchstaben die Zuordnung zur allgemeinen Verteilung, also P → i und U → n, so erhalten wir ebenfalls den Schlüssel „H“. Verschlüsselter Text L 22,62% U 10,12% P 12,50% K 7,14% S 7,14% allgemeine Verteilung 17,40% e 9,78% n 7,55% i 7,27% s 7,00% r Schlüssel basierend auf allgemeiner statistischer Verteilung H H H S B Tabelle zur Schlüsselermittlung, 2. Ansatz Damit lohnt es sich zur Entschlüsselung mit „H“ zu beginnen. Die Entschlüsselung erfolgt analog zur Verschlüsselung, nur von „innen nach außen“, d.h. die Zuordnung erfolgt in umgekehrter Pfeilrichtung auf dem Verschlüsselungsrad in Abb. 1. Tatsächlich ergibt sich wieder der ursprüngliche Text. Man erkennt, dass durchaus ganz unterschiedliche Methoden zur Kryptografie und zur Kryptoanalyse (hier Statistik) verwendet werden. 37 5. Das RSA Verfahren Die in Kapitel 2 betrachtete Cäsar Chiffre ist ein symmetrisches Verfahren, d.h. zum Ver- und Entschlüsseln wird der gleiche Schlüssel benutzt. Als Konsequenz daraus muss zwischen Sender und Empfänger der Schlüssel ausgetauscht werden. Dies ist aber eine kritische Aktion und muss daher wieder verschlüsselt erfolgen also ist wieder ein Schlüsselaustausch notwendig etc. Eine deutliche Verbesserung liefert ein Verfahren, das ähnliche abläuft wie die Versendung einer Nachricht in einem verschlossenen Kästchen: Im Prinzip wird wie folgt verfahren: 1. Der Empfänger R bestimmt (I) die Sprache in der kommuniziert wird und beschafft (II) ein offenes Schnappschloss, zu dem nur er die Schlüssel besitzt. (III) Information über die zu verwendenden Sprache und das Schloss hinterlegt er an einem öffentlich zugänglichen Platz. 2. Der Sender S nimmt das offene Schnappschloss aus einem Regal. 3. S schreibt seine Nachricht an R in der vorgegebenen Sprache. 4. S legt einen Brief mit der nur für R bestimmten Information in eine Schachtel und verschließt sie mit dem Schnappschloss. 5. S sendet die verschlossene Schachtel an R. 6. R öffnet die Schachtel mit dem zum Schloss passenden Schlüssel, R entnimmt die Nachricht und liest sie. 5.1 Das Prinzip des öffentlichen Schlüssels Die Implementierung des oben grob beschriebenen Verfahrens ist das asymmetrische oder Public-Key-Verfahren. Der Schlüssel (oben das Schloss) – eine natürliche Zahl - zum Verschlüsseln eines Textes ist öffentlich zugänglich. Allerdings kann mit dem Schlüssel wiederum nicht entschlüsselt werden. Grob läuft das Verfahren zwischen Sender S(ender) und Empfänger R(eceiver) wie folgt ab: 1. I) R erzeugt eine große natürliche Zahl n. Die Nachrichten und die verschlüsselten Nachrichten sind als Element aus n / n darzustellen II) R erzeugt eine große natürliche Zahl e zum Verschlüsseln und einen geheimen Schlüssel d - ebenfalls eine natürliche Zahl - zum Entschlüsseln III) R legt in einem öffentlichen Verzeichnis den öffentliche Schlüssel (n, e) ab 2. S möchte R eine geheime Nachricht senden und holt dazu aus dem oben angegebenen öffentlichen Verzeichnis den Schlüssel (n, e) ab 3. S verfasst die Nachricht P n / n 4. S verschlüsselt mit dem Schlüssel e und erhält die verschlüsselte Nachricht C n /n 5. S sendet C an R 6. R entschlüsselt C mit Hilfe des geheimen Schlüssels d und erhält P 38 Im Wesentlichen muss das Verfahren natürlich sicherstellen, dass ohne großen Rechenaufwand – gemeint ist in vertretbarer Zeit - weder auf den Ursprungstext noch auf den geheimen Schlüssel geschlossen werden kann. Nicht einmal S kann seine eigene verschlüsselte Nachricht wieder entschlüsseln! Der Vorteil der asymmetrischen Verfahren ist klar: Es ist kein Geheimschlüssel Austausch erforderlich. Wie wir später sehen werden hat das Verfahren auch einen Nachteil, denn der Rechenaufwand für asymmetrische Verfahren ist deutlich höher als für symmetrische Verfahren. 5.2 Schritte des RSA Verfahrens Zur Beschreibung und Rechtfertigung des RSA Verfahrens werden wir nun die mathematischen Vorbereitungen benötigen. 5.2.1 Die Schlüsselerzeugung 1. R wählt zwei Primzahlen p, q mit p ≠ q 2. R berechnet: n=p*q Φ (n) = (p – 1) (q – 1) 3. R wählt ein e mit 1 < e < Φ (n) mit ggT(e, Φ (n)) = 1 4. R berechnet d mit e * d ≡ 1 mod(Φ (n)) siehe oben Beispiel zu Satz 3.10 und Euklidischen Algorithmus Es sind dann (n, e) der öffentliche Schlüssel und d der geheime Schlüssel von R. ACHTUNG: Die Größen p, q, Φ(n) sind geheim zu halten. Ist einem Angreifer eine dieser Größen zusätzlich zum öffentlichen Schlüssel (n, e) bekannt, so kann er den Geheimschlüssel d berechnen! 5.2.2 Die Verschlüsselung Aus dem öffentlichen Schlüssel (n, e) kann nun S die Nachricht einfach verschlüsseln: 1. S schreibt den Klartext und codiert ihn zu N / n 2. S berechnet den Geheimtext C ≡ Ne mod n , C / n 3. S sendet den Geheimtext C an R 39 5.2.3 Die Entschlüsselung R entschlüsselt durch die Berechnung von Cd / n , denn nach Satz 3.9 gilt für N / n gilt Ne d ≡ N mod n , und damit folgt Cd ≡ N mod n, N /n . 5.3 Die Sicherheit von RSA Die Sicherheit des RSA Verfahrens hängt vor allem daran, dass es schwierig ist ein gegebenes Produkt von Primzahlen wieder in die Primzahlen zu zerlegen. Eine andere Möglichkeit ist, dass ein Angreifer die Kongruenz C ≡ xe mod n löst, also die unverschlüsselte Nachricht x aus den bekannten Werten (n, e) und der verschlüsselten Nachricht C bestimmt. Bis heute ist nicht bekannt, ob ein „einfaches“ und „schnelles“ Rechenverfahren existiert, dass die oben angegebene Kongruenz löst. Dabei ist noch nicht einmal klar, ob das Lösen der oben angegebenen Kongruenz einfacher, gleich schwierig oder schwieriger ist als die Zerlegung von n in die Primfaktoren p, q. Gehen wir nun davon aus, dass ein Angreifer, der die verschlüsselten Nachrichten entschlüsseln möchte, mindestens den öffentlichen Schlüssel (e, n) mit n = p q und natürlich die verschlüsselte Nachricht C kennt. Dann untersuchen wir was möglich ist, wenn er weitere Informationen besitzt. 5.3.1 Ansätze für Angriffe p, q bekannt Damit kann ein Angreifer nach dem oben gesagten Φ(n) = (p – 1) (q – 1) bestimmen und d berechnen. Also sind alle Parameter bekannt und der Angreifer kann alle Nachrichten Nk, die mit (n, ek) verschlüsselt wurden, entschlüsseln. (p + q) bekannt Auch damit kann ein Angreifer Φ (n) = (p – 1) (q – 1) bestimmen und d berechnen. Dazu geht man wie folgt vor: Φ (n) = (p – 1) (q – 1) = p q – (p + q) + 1 durch aus multiplizieren = n – (p + q) + 1 weil n = p q öffentlich ist 40 Zusätzlich lassen sich auch p und q direkt aus der Lösung einer quadratischen Gleichung direkt ermitteln: (x – p) (x – q) = x2 – x (p + q) + p q = x2 – x (p + q) + n = (x – x1) (x – x2) mit x1,2 pq 2 2 pq 2 n und p = x1 und q = x2 Also sind auch in diesem Fall alle Parameter bekannt und der Angreifer kann alle Nachrichten Nk, die mit (n, ek) verschlüsselt wurden, entschlüsseln. p, q aus n ermitteln Dieses Problem wird allgemein als “schwierig” eingeschätzt, d.h. dass man im allgemeinen sehr, sehr lange rechnen muss, um für “große” Zahlen n die Primzahlzerlegung zu ermitteln (siehe oben). Man nennt dies das Faktorisierungsproblem. Wie schon oben gesagt hängt die Sicherheit des RSA Verfahrens direkt vom Schwierigkeitsgrad der Primzahlzerlegung ab. Allerdings müssen p und q mit Bedacht gewählt werden, denn sonst wird aus dem “schwierigen” ein relativ schnell lösbares Problem. Dazu siehe unten 5.3.2, Abschnitt 1. p, q. Zusammenfassend bleibt zu sagen, dass nur der öffentliche Schlüssel (n, e) bekannt sein darf. Jeder weitere bekannte Parameter, sei es p, q oder d zerstört sofort die Sicherheit des Verfahrens, d.h. man könnte die Nachricht auch gleich im Klartext senden. RSA wurde 1977 veröffentlicht, ist also mehr als 30 Jahre alt, und sicher eines der am meisten angegriffenen Public-Key-Verfahren. Jedoch konnte kein Angriff bei „vernünftiger“ Wahl der Parameter (siehe unten 4.3.2), RSA brechen. Nichtsdestotrotz gab es 2011 einen erfolgreichen Angriff auf die IT-SicherheitsAbteilung der Firma EMC, RSA Security, siehe „Erfolgreicher Cyber-Angriff auf RSA“, [ 7 ] wobei ein Angriff auf die Firma die das RSA Verfahren vermarktet erfolgreich war - das RSA System selbst aber nicht angegriffen wurde. 5.3.2 Wahl von p, q, e, d p, q p, q sollten mindestens 2512 für sehr hohe Sicherheit 22048 groß sein, p – 1, q – 1, p + 1, q + 1 sollten jeweils mindestens einen großen Primteiler r, s, t, u haben 41 r – 1, s – 1 sollten jeweils große Primteiler besitzen p und q sollten nicht sehr dicht beieinander liegen, da sie sonst einfacher ermittelt werden können (Wiener Angriff8). Konkret sollte bei gewähltem p für q nicht gelten: p < q < 2 p und ½ q < p < q An dieser Stelle noch ein Hinweis darauf, wie viele Primzahlen es von der Größenordnung 2512 gibt: Der Primzahlsatz sagt aus, dass es etwa n/ln(n) Primzahlen kleiner oder gleich n gibt. Damit können wir wie folgt abschätzen: 2512 2511 2512 2511 2511 2 1 512 511 ln(2 ) ln(2 ) 512 ln(2) 511 ln(2) ln(2) 512 511 2511 0,003906 0,001957 0,69315 2511 0,001949 0,002812 2511 0,69315 2,812 10 3 2511 2,812 10 3 10153,83 1,88531 10151 Angesicht von 1077 [ 8 ] Atomen im Weltall also eine riesige Anzahl von derart großen Primzahlen. e Es muss e > 2 sein, da ggT(e, Φ (n)) = 1 gelten muss und da Φ (n) als Produkt zweier gerader Zahlen (Primzahl – 1) gerade ist, muss e ungerade sein. e sollte nicht zu klein gewählt werde, da es ein Verfahren gibt, das für kleine Zahlen e (z.B. e = 3) und mehreren gleichen Nachrichten die mit den öffentlichen Schlüsseln (nk, e) verschlüsselt wurden, direkt den Klartext ermittelt – ohne Kenntnis von p, q, d. e = 216 + 1 scheint ein häufig verwendete Wert zu sein. d d ist durch e bestimmt und auch dieser Parameter sollte nicht zu klein gewählt werden, da sonst der oben erwähnte Wiener - Angriff angewendet werden kann. Konkret heißt das, dass gelten sollte d 4 n 8 Wiener Angriff benannt nach seinem Entdecker dem Mathematiker Michael J. Wiener 42 6. Beispiele Es soll nun ein Text mit der RSA Methode verschlüsselt werden. Dazu ordnen wir den Buchstaben in alphabetischer Reihenfolge ihre Stelle im Alphabet zu: 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 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 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 26 Dazu stellen wir den zu verschlüsselnden Text „Christoph“ ohne Leerzeichen und ohne Unterscheidung von Groß- / Kleinschreibung dar und erhalten die zu übermittelnde Nachricht, die dann buchstabenweise verschlüsselt wird: christoph Die Schlüsselerzeugung erfolgt wie oben beschrieben: 1. wähle zwei Primzahlen p, q mit p ≠ q: p = 5, q = 7 2. berechne n = p * q und Φ (n) = (p – 1) (q – 1): n = p * q = 35, Φ(n) = (p – 1) * (q – 1) = 4 * 6 = 24 3. wähle ein e mit 1 < e < Φ (n) mit ggT(e, Φ (n)) = 1 e = 11 weil 1 < 11 < 24 mit ggT(11, 24) = 1 4. berechne d mit e * d ≡ 1 mod (Φ (n)): d = 11 weil aus e * d = 121 und Φ (n) = 24 und somit gilt: 121 ≡ 1 mod (24) folgt: 121 = 5 * 24 + 1 Der öffentliche Schlüssel ist damit (n, e) = (35, 11) und der geheime Schlüssel d = 11 Hinsichtlich der Vorgaben für eine hohe Sicherheit sind die Parameter völlig falsch gewählt, da p und q viel zu klein sind und aus n sofort errechnet werden können, denn die Primzahlzerlegung von 35 ist sehr leicht und sofort zu sehen. Außerdem sind beide Schlüssel e und d gleich. Als Beispiel sind die Parameter geeignet, da die Zwischenergebnisse noch mit einem Taschenrechner ermittelt werden können. Weiter gilt auch, dass die buchstabenweise Verschlüsselung nicht sinnvoll ist (siehe Kapitel 1, verallgemeinert im Sinne von einer Vertauschung der Buchstaben). Vielmehr soll das Wort blockweise verschlüsselt werden. Aber auch hier gilt, dass ansonsten die Verschlüsselung nicht mit Hilfe eines Taschenrechners erfolgen könnte. 43 Der Prozess liefert folgende Ergebnisse: Nachricht c h r i s t o p h Stelle im Alphabet a 3 8 18 9 19 20 15 16 8 177.147 8.589.934.592 12 22 e a Rest c= e a d c 743.008.370.688 584.318.301.411.328 64.268.410.079.232 31.381.059.609 2 4 2.048 4.194.304 116.490.258.898.219 204.800.000.000.000 8.649.755.859.375 17.592.186.044.416 24 20 15 1.521.681.143.169.020 204.800.000.000.000 8.649.755.859.375 8.589.934.592 11 22 285.311.670.611 584.318.301.411.328 d 3 8 18 9 19 20 15 16 8 Entschlüsselte Nachricht c h r i s t 0 p h Rest c Die unverschlüsselte Nachricht lautet: 030818091920151608 Die gesendete Nachricht lautet: 122202042420151122 Die entschlüsselte Nachricht lautet: 030818091920151608 44 Eine deutlich besseres Beispiel findet man in Wikipedia: RSA-Kryptosystem [14] mit: p = 307, q = 859 und damit n = 263713 und Φ(n) = 262548 öffentlicher Schlüssel (n, e) = (263713,1721), geheimer Schlüssel d = 1373 Der Text wird in 3-Zeichen Blöcken ver- und entschlüsselt (wie auch oben) mit A – 01 B – 02 … Z – 26 und damit ergibt sich: Klartext W I K I P E D I A unverschlüsselte Nachricht 23 09 11 09 16 05 04 09 01 verschlüsselte Nachricht 00 17 15 18 43 04 21 99 83 Hier kommt man mit Mitteln der statistischen Auswertung der Zahlen als Repräsentanten der Buchstaben nicht weiter, denn in diesem Beispiel sind dem verschlüsselten Buchstaben „I“ unterschiedliche Zahlen zugeordnet. 45 7. Zusammenfassung Wie zu Beginn angekündigt wurden in dieser Arbeit zwei kryptologische Verfahren vorgestellt, die sich sehr wesentlich unterscheiden. Generell bleibt zu sagen, dass offensichtlich zwar das asymmetrische Verfahren deutlich sicherer ist, aber der Zuwachs an Sicherheit geht zu Lasten von einem wesentlich höheren Rechenaufwand und damit ist ihre Anwendung auch sehr viel teurer. Aus den verwendeten Quellen ist deutlich zu erkennen, dass moderne symmetrische Verfahren ebenfalls deutlich sicherer sind als die Cäsar Chiffre und dass heute eine Kombination von asymmetrischen und symmetrischen Verfahren verwendet wird. So erfolgt beispielsweise der Nachrichtenaustausch über ein symmetrisches Verfahren, wobei der Schlüssel selbst vorher über ein asymmetrisches Verfahren ausgetauscht wird. Für die Zukunft bleibt es interessant zu verfolgen wie Internet Anwendungen neue Herausforderungen für die Kryptologie und damit auch für die Mathematik bringen werden – sowohl aus Richtung der Kryptografie als auch der Kryptoanalyse und dies unter Berücksichtigung immer leistungsfähigeren Rechnern. 46 8. Literaturverzeichnis 1. Christian Karpfinger, Hubert Kiechle: Kryptologie, Vieweg+Teubner, 2009 2. Kryptografie: Informatikmaterialien von Tino Hempel http://www.tinohempel.de/info/info/kryptografie/ 3. Gymnasium am Thie, Website des Blankenburg Gymnasiums http://www.gat-blankenburg.de/pages/fach/info/krypto.htm 4. Jeffrey Hoffstein, Jill Pipher, Joseph H. Silverman: An introduction to Mathematical Cryptography, Springer Verlag, 2008 5. Gaius Iulius Caesar: Der Gallische Krieg, Reclam Verlag, 2000 6. I. Niven, H. S. Zuckermann: Einführung in die Zahlentheorie, BI Hochschultaschenbücher, Band 46, 1976 7. Computerworld.ch, Jens Stark,: Erfolgreicher Cyber-Angriff auf RSA Security http://www.computerworld.ch/news/security/artikel/erfolgreicher-cyber-angriffauf-rsa-security-56055/ , 18.03.2011 8. Prof. Dr. C. Bessenrodt, Universität Hannover: Verblüffendes http://fma2.math.uni-magdeburg.de/~bessen/krypto/krypto8.htm 9. Kryptologie, Allgemeiner Überblick, Geschichte http://www-user.tu-chemnitz.de/~uste/krypto/sources/gesch.htm 10. Jeffrey Hoffstein, Jill Pipher, Joseph H. Silverman: An introduction to Mathematical Cryptography, Springer Verlag, 2008 11. Einführung in die algebraische Zahlentheorie , A. Schmidt, Springer Verlag 2007, ISBN: 978-3-540-45973-6 Kapitel 1 Rechnen mit Restklassen 12. Jan Stellet: FACHARBEIT „Lineare diophantische Gleichungen“, 22.03.2006 http://jstc.de/blog/uploads/Lineare_diophantische_Gleichungen.pdf 13. A Method for Obtaining Digital Signatures and Public-Key Cryptosystems, R.L. Rivest, A. Shamir, and L. Adleman http://securespeech.cs.cmu.edu/reports/RSA.pdf 14. Wikipedia: RSA-Kryptosystem http://de.wikipedia.org/wiki/RSA-Kryptosystem Dokument erstellt mit MS Word, MS Excel, MS Powerpoint und MathType (http://www.dessci.com/en/products/mathtype/) 47