Schulungsbeispiel: Kryptologie [Zurück] Verschlüsselung im Informationszeitalter Skript zum Workshop am 28. Oktober 1996 1. Public-Key-Kryptosysteme - Workshop 1.1. Übersicht Im ersten Teil werden Ihnen die Public Key Kryptosysteme - in einem Vergleich zu den "klassischen" Kryptosystemen - etwas näher gebracht. Zweitens wird ein bekannter Vertreter, das RSA Verfahren, vorgestellt. Drittens können mit dem Kryptologiespiel erste, spielerische Erfahrungen mit einem Public Key System gemacht werden. 1.2. Lernziele Das Bedürfnis nach Datensicherheit bei der Speicherung und Übertragung von Daten ist heute sowohl im kommerziellen als auch im militärischen Bereich, sehr groß. Der Kryptologie kommt deshalb eine große Bedeutung zu. Erst in neuerer Zeit wurden die sogenannten Public Key Kryptosysteme entwickelt, welche sehr nützliche Eigenschaften haben. Am Ende des Workshops wissen Sie, was Public Key Kryptosysteme sind. Sie haben ein bekanntes Kryptosystem, das RSA Verfahren, kennengelernt und damit gearbeitet. 1.3. Theorie 1.3.1. Klassische Kryptosysteme Kryptosysteme sind Verfahren, mit welchen man Daten zwecks Geheimhaltung, verschlüsseln kann. Die Verschlüsselung wird auch Chiffrierung oder Codierung, die Entschlüsselung auch Dechiffrierung oder Decodierung genannt. Durch eine Verschlüsselungsfunktion wird eine Nachricht (Klartext) in einen unleserlichen Code (Schlüsseltext) übersetzt. Dabei braucht die Verschlüsselungsfunktion einen Schlüssel als einen der Eingangswerte. Die Entschlüsselung geschieht mit einer entsprechenden Entschlüsselungsfunktion. Nur mit dem richtigen Schlüssel wird dabei aus dem Code wieder die ursprüngliche Nachricht. Sender und Empfänger müssen im Geheimen vereinbaren, welchen Schlüssel sie verwenden. Typische Eigenschaften von klassischen Verschlüsselungsverfahren: Sie verwenden denselben Schlüssel für die Verschlüsselung und die Entschlüsselung. Die Funktion für die Entschlüsselung D(x) ist die Umkehrfunktion der Verschlüsselungsfunktion E(x): D(x) = E -1 (x). Die Funktionen sind nicht geheim. Der Schlüssel muß auf einem sicheren Kommunikationsweg mitgeteilt werden. Klassische Kryptosysteme sind nicht weniger sicher als moderne. Es gibt Verfahren, welche in theoretischer als auch praktischer Hinsicht als absolut sicher zu betrachten sind. Je sicherer ein Verfahren ist, umso aufwendiger ist es meistens. Wer ein Kryptosystem knacken will, probiert durch Untersuchungen von Schlüsseltexten Kenntnis vom Schlüssel zu erlangen. Diese sogenannte Kryptoanalysis ist eine komplizierte mathematische Angelegenheit! 1.3.2. Public Key Kryptosysteme Public Key Kryptosysteme arbeiten mit verschiedenen Schlüsseln für die Verschlüsselung und die Entschlüsselung. Wer Nachrichten chiffriert empfangen möchte, veröffentlicht den Schlüssel, mit welchem die Sender die Nachrichten verschlüsseln sollen. Der Schlüssel, welcher für die Entschlüsselung benötigt wird, behält er geheim. Natürlich darf vom öffentlichen Schlüssel nicht auf den geheimen geschlossen werden können. Typische Eigenschaften von Public Key Kryptosystemen: Sie verwenden verschiedene Schlüssel für die Verschlüsselung und die Entschlüsselung. Die Funktion für die Entschlüsselung D(x) ist oft dieselbe wie die Verschlüsselungsfunktion E(x): D(x) = E(x). Die Funktionen sind nicht geheim. Ein Schlüssel wird veröffentlicht, der andere wird geheim gehalten. Public Key Kryptosysteme sind nicht von vornherein sicherer als klassische Systeme. Es ist sogar praktisch immer bekannt, wie sie theoretisch geknackt werden können. Praktisch ist dies jedoch nur mit nicht machbarem oder nicht sinnvollem Aufwand möglich. Der entscheidende Vorteil von Public Key Kryptosystemen besteht darin, daß der sinnvollem Aufwand möglich. Der entscheidende Vorteil von Public Key Kryptosystemen besteht darin, daß der Austausch von Schlüsseln auf einem unbedingt sicheren Kommunikationsweg entfällt. Public Key Systeme können nicht nur eingesetzt werden, wenn Nachrichten nur vom rechtmässigen Empfänger gelesen werden sollen. Man kann damit auch sicherstellen, daß eine Nachricht nur von einem bestimmten Absender kommen kann. Zu diesem Zweck veröffentlicht der Sender von Nachrichten den Schlüssel für die Dechiffrierung. Den Schlüssel für die Chiffrierung behält er für sich. Wenn der dechiffrierte Code eine sinnvolle Nachricht ergibt, so kommt diese sicher von ihm. Die Verschlüsselung ist sozusagen die Unterschrift des Senders. 1.3.3. Das RSA Public Key Kryptosystem Das RSA Kryptosystem ist das erste praktisch einsetzbare Public Key Verfahren, welches realisiert wurde. Es wurde 1977 entwickelt und ist nach den Initialen seiner Erfinder, Rivest, Shamir und Adleman, benannt. Die Sicherheit dieses Verfahrens beruht darauf, daß eine große Zahl, wenn man sie geeignet wählt, nur mit großem Aufwand in Primfaktoren zerlegt werden kann. 1.3.3.1. Grundlagen aus der Zahlentheorie Hier werden die Grundlagen für das RSA Verfahren kurz dargestellt, ohne daß genauer auf die Sätze und deren Beweise aus der Zahlentheorie eingegangen wird. Zuerst eine Erklärung von Notationen und Begriffen: (a,b) steht für grösster gemeinschaftlicher Teiler von a und b. a | b bedeutet a teilt b. a == b (mod n) bedeutet: n | (a - b). Im weiteren sind mit Zahlen immer ganze Zahlen gemeint. Die Eulerfunktion PHI(n) nennt die Anzahl positiver ganzer Zahlen, welche im zwischen 1 und n liegen, und zu n relativ prim sind. Nach einem Theorem von Euler gilt: Sind n und b zwei positive, zueinander relativ prime Zahlen (d.h. (n,b) = 1), dann ist b PHI(n) == 1 (mod n). Daraus folgt b PHI(n)+1 = b bPHI (n) == b (mod n).Findet man zwei Zahlen e und d, beide zwischen 0 und n-1, für welche e d == 1 (mod PHI(n)) gilt, so ist auch b e d == b (mod n). Es gilt: b e d == b (mod n) <=> (b e ) d == b (mod n) <=> (b d ) e == b (mod n). 1.3.3.2. Das RSA Verfahren Im Folgenden wird erklärt, wie man ein Kryptosystem nach dem RSA Verfahren initialisiert. 1) Man wählt zwei verschiedene, große Primzahlen p, q. Dann bildet man ihr Produkt n = p q. Weil p und q prim sind, ist PHI(n) = (p1) (q-1). 2) Es müssen zwei Zahlen e und d gefunden werden, für welche e d == 1 (mod PHI(n)) gilt. Man wählt zuerst d so, daß d relativ prim zu PHI(n) ist. Ideal ist eine Primzahl d > max(p,q) und d < PHI(n)-1. Um e zu finden, muß man eine Lösung mit ganzzahligen x und y für die Gleichung x d + y PHI(n) = 1 finden. Es gilt x d == 1 (mod PHI(n)). Setzt man e = x mod PHI(n), dann ist auch e d == 1 (mod PHI(n)). 3) e und d sind die Schlüssel, n der sogenannte Modul. Die Verschlüsselungsfunktion ist E(x) = x e mod n, die Entschlüsselungsfunktion ist D(x) = x d mod n. Da bei den Funktionen E(x) und D(x) modulo n gerechnet wird, muß x < n sein. Jede Nachricht X muß so in Blöcke x1, x2, ... unterteilt werden, daß x1, x2, ... < n sind. 1.3.3.3. Regeln für die Sicherheit Um das Verfahren möglichst sicher zu machen, müssen folgende Regeln befolgt werden: Zu 1) Damit die Faktorisierung von n = p q schwierig genug ist: p q sollen grösser sein als 10 100 , p und q sollen in der Länge um einige Stellen variieren. (p-1) und (q-1) sollen große Primfaktoren enthalten. Der kleinste gemeinsame Teiler von (p-1) und (q-1) sollte möglichst klein sein. Zu 2) Es ist sinnvoll, eine möglichst große Zahl d, mit d < PHI(n)-1, zu wählen, damit d nicht so schnell ermittelt werden kann. 1.4. Anleitung zum Kryptologiespiel Jeder Teilnehmer baut sich sein Verschlüsselungssystem nach dem RSA Verfahren. Sie oder er geht dabei gemäss folgenden Anweisungen vor. Dann tauschen alle untereinander Nachrichten aus. In einer Schlüsselliste veröffentlicht jeder den Schlüssel e und den Modul n für die Verschlüsselung. n und d notiert sich jeder selber, um später die an ihn gerichteten Nachrichten entschlüsseln zu können. Dabei muß d geheim bleiben! Normalerweise wird beim RSA Verfahren mit Zahlen gerechnet, welche über hundert Stellen haben. Für dieses Spiel beschränken wir uns auf Zahlen mit weniger als zehn Stellen, damit wir mit einfachen Mitteln rechnen können. Bestimmung der Schlüssel für das RSA Kryptosystem: 1) Wähle zwei verschiedene Primzahlen p, q und bilde ihr Produkt n = p q. Für n soll gelten: 16384 < n < 50000. 2) Berechne PHI(n) = (p-1) (q-1). 3) Wähle d so, daß d relativ prim zu PHI(n) ist. Ideal ist eine Primzahl d > max(p,q) und d < PHI(n)-1. 4) Finde eine Lösung mit ganzzahligen x und y für die Gleichung x d + y PHI(n) = 1. Bestimme e = x mod PHI(n). Auf dem Rechner befindet sich das Programm "Euler", mit welchem dieser Schritt ausgeführt werden kann! 5) Trage e und n zusammen mit Deinem Namen in die Schlüsselliste ein. Beispiel: 1) p = 233, q = 83, n = p q = 19339 2) PHI(n) = (p-1) (q-1) = 19024 3) 743 ist prim und max(p,q) < 743 < 19023, d = 743 4) x . 743 + y . 19024 = 1, x = 3559, y = -139, e = 3559 Verschlüsseln von Nachrichten: 1) Denke Dir eine Nachricht aus und schreibe sie auf. 2) Setze jedes Zeichen der Nachricht mit Hilfe der ASCII-Codetabelle in Dezimalcodes um. 3) Fasse je zwei Zeichen zu einem Block zusammen und verschlüssle diesen mit der Funktion E(x) = x e mod n. Auf dem Rechner befindet sich das Programm "Power and Modulo" für die Verschlüsselung. 4) Schreibe die verschlüsselte Nachricht mit dem Namen des Adressaten in die Nachrichtenliste ein. Beispiel: 1) Die Nachricht lautet: "Public Key". 2) P u b l i c 80 117 98 108 105 K e y 99 32 75 101 121 3) E(x) = x 3559 mod 19339 80 117 98 108 105 1 101 142 93 26 4)Ergebnis: 99 32 75 101 121 57 24 28 7 37 1, 101, 142, 93, 26, 57, 24, 28, 7, 37 Entschlüsseln von Nachrichten: 1) Fasse je zwei Zahlen einer Nachricht zu einem Block zusammen und entschlüssle diesen mit der Funktion D(x) = x d mod n. x d mod n. Auf dem Rechner befindet sich das Programm "Power and Modulo" für die Entschlüsselung. 2) Setze jede Zahl mit Hilfe der ASCII-Codetabelle in ein Zeichen der Nachricht um. 1)Beispiel: 21, 61, 130, 21, 34, 4, 115, 22, 64, 52 D(x) = x 743 mod 19339 21 61 130 21 121 101 75 32 2) 121 101 75 y e K 32 c 34 99 4 115 22 64 52 105 108 98 117 80 99 105 108 98 i l b u P 117 80 3) Die Nachricht lautet: "yeK cilbuP". 1.5. Vorbereitete Programme und Hilfsmittel 1.5.1. Programm EULER Mit dem Programm "Euler" wird zur Zahl d ein e, 0 < e < PHI(n), gefunden, so daß e d == 1 (mod PHI(n)) erfüllt ist. Dazu wird die Gleichung x d + y PHI(n) = 1 gelöst. Es wird eine Lösung mit ganzzahligen x und y errechnet, bei welcher 0 < x < PHI(n) ist. x entspricht dem gesuchten e. Programmablauf: 1. Eingabe von PHI(n) und d. 2. x und y werden angezeigt. 3. Zur Kontrolle werden x und y in die Gleichung x d + y PHI(n) = (d, PHI(n)) eingesetzt. Falls das Resultat der Gleichung nicht 1 ist, so waren d und PHI(n) nicht relativ prim! 4. Ausgabe von e. 5. Das Programm ist wieder bereit für die Eingabe von PHI(n) und d (1. Schritt). Es kann mit der Tastenkombination <Ctrl - c> abgebrochen werden. 1.5.2. Programm RSA Mit dem Programm "RSA" kann die Funktion y = x e mod n (bzw. y = x d mod n) berechnet werden. Das ist die Chiffrierfunktion (bzw. Dechiffrierfunktion) des RSA Kryptosystems. Der verwendete Algorithmus berechnet x n mod m mit der Technik "wiederholtes Quadrieren und Multiplizieren" mit Aufwand O(log n). Durch die Reduktion modulo m nach jedem Multiplizieren werden die Zwischenresultate nicht zu hoch. Das Programm ist für einen Zeichencode mit maximal 128 Zeichen ausgelegt. Jedem Zeichen muß eine Codezahl zwischen 0 und 127 zugeordnet werden. Es werden jeweils zwei Zeichen x1 und x2 miteinander verschlüsselt: x = 128 x1 + x2. Der Modul n muß so gewählt werden, daß PHI(n) >= 1282 = 16384 ist. Programmablauf: 1. 2. 3. 4. 5. Eingabe des Schlüssels e oder d. Eingabe des Moduls n. Eingabe der Codezahlen für das erste und das zweite Zeichen. Ausgabe der übersetzten zwei Codezahlen. Das Programm ist wieder bereit für die Eingabe der Codezahlen (3.Schritt). Es kann mit der Tastenkombination <Ctrl - c> abgebrochen werden. 1.5.3.1. Die ersten 10000 Primzahlen (10000.TXT) 1.5.3.2. Die ersten 10000 Primzahlen (10000.ZIP) 1.5.3.3. Ascii Zeichen Tabelle 2. Hot-Links 2.1. Kryptologie RSA Data Security, Inc Crypt NewsLetter's Homepage Security Server der Fachgruppe Nachrichtenübermittlung 2.2. Kryptologie - Technik THE PRIME PAGE - the prime source for information about prime numbers 2.3. PGP Pretty Good Privacy, Inc. (PGP) PGP Rechtsfragen 2.4. Kryptoanalyse HACKERS 3.1. Begriffe 3.1.1. Kryptologie Die Kryptologie ist die Lehre von der Ver- und Entschlüsselung von Daten. Die Kryptographie ist die Lehre von der Verschlüsselung, Kryptoanalyse die der Entschlüsselung durch Unbefugte. Beides wird in der Kryptologie zusammengefaßt. Die Grundsätzliche Aufgabe der Kryptographie als Wissenschaft ist, Verschlüsselungsmethoden zu entwickeln und ihre Sicherheit gegen unberechtigte Entschlüsselung mathematisch abzusichern. Zu Erwähnen sind dabei die drei Grundprobleme der Kryptographie: Die Vertraulichkeit, der Echtheitsnachweis sowie die Anonymität. 3.1.2. Chiffriermethoden Monoalphabetische Chiffrierung Jeder Verschlüsselung liegt ein Alphabet zu Grunde, in dem Klartext und Geheimtext abgefaßt sind. Bei der monoalphabetischen Chiffrierung wird der Klartext stets auf den gleichen Geheimtextbuchstaben abgebildet. In der klassischen Kryptologie verwendet man meist das Alphabet aus den 26 Buchstaben. Will man elektronische Dateien verschlüsseln, ist es zweckmäßig, als Alphabet die Menge der 256 Bytes von (hexadezimal) 00 bis FF zu betrachten. Die bekanntesten monoalphabetischen Algorithmen sind: Der Transpositionsalgorithmus (Skytale) , bei dem die Positionen der Zeichen vertauscht werden und der Der Substitutionsalgorithmus (Caesar) , bei dem die Klartextzeichen durch andere substituiert werden. Monoalphabetische Chiffrierung ist für statistische Methoden äußerst anfällug und daher keine sichere Technik. Polyalphabetische Chiffrierung Bei der polyalphabetischen Chiffrierung wird ein Klartextbuchstabe nicht stets auf den gleichen Geheimtextbuchstaben abgebildet. Vorstellen kann man sich das so, daß man monoalphabetisch mit ständig wechselndem Schlüssel chiffriert. Das Ziel dabei ist, die Häufigkeit der einzelnen Buchstaben zu verschleiern, um somit die gängigen Attacken durch Häufigkeitsanalysen hinfällig zu machen.Ein Beispiel dafür ist der VIGENERE-Code . Buchstabenwurm Als einen perfekten Chiffrieralgorithmus mann man den Buchstabenwurm ansehen. Hier umfaßt der Schlüssel ebensoviele Zeichen wie der Klartext und jeder Buchstabe des Klartext wird mit jeweils einem Buchstaben des Schlüssels codiert. Problematisch ist bei dieser Technik allerdings der Schlüsselaustausch der auf sicherem Wege erfolgen muß. RSA Der RSA-Algorithmus wurde 1977 von RIVES, SHAMIR und ADLEMAN entwickelt. Es gilt als sicher. RSA ist zwar vor einigen Jahren von einem 21jährigen Elektronik-Student am MIT (Derek Atkins) geknackt worden aber inzwischen werden bei diesem Verfahren zu große Zahlen verwendet, daß deren Zerlegung in Primfaktoren - als gängige Methode zum Knacken des Codes - aussichtlos erscheint. 3.1.3. Kryptoanalytische Attacken Die Kryptoanalyse ist ein Teil der mathematischen Systemanalyse, d.h. sie dient dazu, Schwachstellen von Chiffriersystemen aufzudecken. Hier gibt es nun verschiedene Kryptoanalytische Attacken: Nur-Geheimtext-Attacke, 'known ciphertext attack' Schlüssel-Durchprobier-Attacke Klartextstück-Attacke, 'known plaintext attack' Angriff mit bekanntem Klartext Probeverschlüsselungs-Attacke, 'chosen plaintext attack' Angriff mit ausgewähltem Klartext 4. Literatur [1] Beutelspacher, A.: Cryptology. Braunschweig 1987 (Vieweg). Deutsch. "Eine Einführung in die Wissenschaft vom Verschlüsseln, Verbergen und Verheimlichen, ohne alle Geheimniskrämerei, aber nicht ohne hinterlistigen Schalk, dargestellt zu Nutzen und Ergötzen des Publikums" (ETHICS Kurzinformation 1995). [2] Horster, P.: Cryptology. Mannheim - Wien - Zürich 1985 (Bibliographisches Institut). Deutsch. Überblick über die Methoden und Verfahren der klassischen und modernen Cryptology. Schwerpunkt moderne Cryptology, Public Key Cryptosystems. Wissenschaftlich, anspruchsvoll. [3] Bressoud, D. M.: Factorization and Primality Testing. New York 1989 (Springer). Englisch. Erschienen in der Reihe "Undergraduate Texts in Mathematics". Konzentriert sich auf das Thema Faktorisierung großer ganzer Zahlen und Beweis der Primeigenschaft. Kapitel über das RSA Cryptosystem. Wissenschaftlich, leicht verständlich. [4] Salomaa, A.: Public-Key Cryptography. Berlin - Heidelberg 1990 (Springer). Englisch. Umfassendes Werk über Public Key Cryptosystems. Wissenschaftlich, anspruchsvoll. [5] Kranakis, E.: Primality and Cryptography. Stuttgart 1986 (Teubner). Englisch. Werk über neue mathematischen Erkenntnisse (Zahlentheorie, Primzahlen) im Zusammenhang mit moderner Cryptology (Public Key Cryptosystems, Pseudozufallszahlen-Generatoren). Wissenschaftlich, anspruchsvoll. © Copyright 1996 by Chris Ahrweiler [email protected]