Verschlüsselungsverfahren IT-Systeme Kryptologie - Verschlüsselungsverfahren Inhalt 1 Problemstellung ..........................................................................................3 2 Einführung in Verschlüsselungsverfahren..................................................6 3 4 5 6 2.1. Symmetrische Verschlüsselung ..........................................................6 2.2. Asymmetrische Verschlüsselung ........................................................7 Kryptographische Grundlagen....................................................................8 3.1. Verschlüsselung ..................................................................................8 3.2. Digitale Signatur ..................................................................................8 3.3. Hashfunktion........................................................................................9 Mathematische Grundlagen .................................................................... 11 4.1. Primzahlen........................................................................................ 11 4.2. Modulo Operator .............................................................................. 11 4.3. Diskrete Exponentialfunktion............................................................ 12 4.4. Diskreter Logarithmus ...................................................................... 12 4.5. Schnelles Exponentieren ................................................................. 13 Das RSA-Verfahren................................................................................. 14 5.1. Einführung ........................................................................................ 14 5.2. Schlüsselgenerierung....................................................................... 15 5.3. Verschlüsseln einer Nachricht.......................................................... 15 5.4. Entschlüsseln einer Nachricht.......................................................... 16 5.5. Beispiel ............................................................................................. 18 Quellen .................................................................................................... 19 Seite 2 IT-Systeme Kryptologie - Verschlüsselungsverfahren 1 Problemstellung Die Authentifizierung wird im Umfeld stetig weiter um sich greifender ITInfrastrukturen immer wichtiger. Um dies zu verdeutlichen sollte den Schülern zunächst ein Authentifizierungsproblem gestellt werden für das dann direkt eine Lösung gefunden werden soll. Gleich im Anschluss wird jedoch die Schwäche des eben gefundenen Lösungsansatzes verdeutlicht und versucht, darauf basierend ein verbessertes Verfahren zu finden. 1. Problem Es besteht der Bedarf der Authentifikation, um Daten zu schützen oder Ressourcen zu verwalten. Deshalb soll ein einfaches Verfahren gefunden werden, mit dem sich ein Benutzer beim System authentifizieren kann. 1. Lösung Jeder Benutzer erhält ein Passwort, das nur er kennt. Wenn er sich beim System anmeldet, gibt er sein Passwort an, das vom System als richtig akzeptiert oder als falsch abgelehnt wird. Da das Passwort nur seinem Besitzer bekannt ist, garantiert es die individuelle Authentifikation eines jeden Benutzers. Die meisten Computersysteme sind durch die jeweiligen Betriebssysteme auf diese Weise geschützt. Abstrakt betrachtet teilen das System und der Benutzer ein Geheimnis, das sonst niemand kennt. Dieses Geheimnis muss direkt übertragen werden. 2. Problem Da das Passwort bei jeder Anmeldung benötigt wird, ist die Frequenz, mit der es benutzt wird, relativ hoch. Wenn es zusätzlich über unsichere Kanäle übertragen wird, ist es sehr leicht, es auszuspähen und unerlaubt zu verwenden. Dadurch wird die Authentifikation durch Passwörter unsicher. 2. Lösung Wenn man das Passwort regelmäßig ändert, ist das Verfahren immer maximal bis zum nächsten Wechsel unsicher. Wenn man diese Idee weiterführt, gelangt man zur Idee der Einmalpasswörter. Dabei kann jedes Passwort nur einmal verwendet werden, danach ist es nutzlos. Es kann beliebig abgehört werden, denn niemand kann einen Nutzen daraus ziehen. Dieses Verfahren kommt in Form von Transaktionsnummern (TAN) beim Online-Banking zum Einsatz. Auch bei diesem Verfahren teilen System und Benutzer Geheimnisse. Die Identifikation erfolgt durch wieder durch die Übertragung dieser Geheimnisse. 3. Problem Da man für jede Anmeldung bzw. Transaktion ein neues Passwort benötigt, sind umfangreiche Listen mit Einmalpasswörtern erforderlich, die regelmäßig auf beiden Seiten ergänzt werden müssen. Dadurch können diese Passwörter wieder ausgespäht werden, diesmal allerdings vor Ihrer Verwendung. Außerdem können Einmalpasswörter abgefangen und gleichzeitig die Verbindung Seite 3 IT-Systeme Kryptologie - Verschlüsselungsverfahren zum Server gestört werden. Danach kann ein Angreifer das ausgespähte Einmalpasswort selbst verwenden. 3. Lösung Es wird ein Verfahren benötigt, das alle vorangegangenen Probleme löst und die vorangegangen Lösungen verbindet. Beide Seiten sollen ein Geheimnis teilen, einmal verwendeten Passwörter sollen ungültig sein und es sollen keine umfangreichen Listen ausgetauscht werden müssen. Das Challenge-Response-Verfahren erfüllt alle diese Bedingungen, indem es das Geheimnis von den Passwörtern trennt. Dazu verwendet es im einfachsten Fall ein symmetrisches Verschlüsselungsverfahren. Beide Parteien (System und Benutzer) tauschen einmal einen für dieses Verfahren passenden Schlüssel aus. Wenn der Benutzer sich beim System anmelden will, schickt ihm dieses eine Zufallszahl und stellt ihm die Herausforderung (Challenge), diese Zahl mit dem richtigen Schlüssel zu verschlüsseln und als Antwort (Response) zurückzuschicken. Das System entschlüsselt die Antwort und vergleicht sie mit der Zufallszahl. Nur wer im Besitz des richtigen Schlüssels ist, kann die Zufallszahl so verschlüsseln, das sie vom System wieder richtig entschlüsselt werden kann. Wie bei den vorangegangenen Verfahren teilen beide Seiten ein Geheimnis. Durch den Einsatz des Verschlüsselungsverfahrens wird das „Passwort“ (die Antwort) erst im Augenblick der Authentifikation klar. 4. Problem Auf Dauer ergibt sich ein organisatorisches Problem. Wenn man sich auf diese Weise bei vielen verschiedenen Servern authentifizieren will, muss man sich für eine der beiden folgenden Wege entscheiden. Entweder wird für alle Server der gleiche Schlüssel verwendet. Dann wird ein unsicherer Server zur Sicherheitslücke für alle. Oder es werden für jeden Benutzer für alle Server jeweils verschiedene Schlüssel verwendet. Dann müssen die anfallenden Mengen von Schlüsseln sicher verwahrt werden. Wenn der Benutzer seine Schlüsselsammlung verliert (Festplattendefekt, Verlust der Smartcard), muss er mit jedem Server einen neuen Schlüssel vereinbaren und sich gegebenenfalls auch noch persönlich authentifizieren (Vorlage des Personalausweises o.ä.) 4. Lösung Diese Probleme können ähnlich wie bei der Schlüsselverwaltung für den Emailverkehr mit asymmetrischen Verschlüsselungsverfahren gelöst werden. Die Server kennen nur den öffentlichen Schlüssel des Clients zum Entschlüsseln der Antwort bzw. können den Schlüssel von einer Zertifizierungsstelle sicher beziehen. Nur der Client kennt den geheimen Schlüssel zum Verschlüsseln der Antwort. Auf diese Weise kann die Schlüsselverwaltung erleichtert werden. Seite 4 IT-Systeme Kryptologie - Verschlüsselungsverfahren 5. Problem (Man-In-The-Middle-Angriff) Trotzdem ist ein Angreifer möglicherweise immer noch in der Lage, sich gegenüber dem Server als der Client auszugeben und akzeptiert zu werden. Dies geschieht, indem er sich bei einer Verbindung zwischen Server und Client als Router betätigt. Wenn der Client die Challenge anfordert, gibt er sich gegenüber dem Client als Server und gegenüber dem Server als Client aus. Er schickt statt der Anforderung des Clients eine eigene Anforderung an den Server, der ihm darauf hin eine Challenge schickt. Diese schickt er wiederum an den Client und lässt sie von ihm richtig beantworten, um dann die Antwort gegenüber dem Server als seine eigene auszugeben. Der Server akzeptiert ihn und der Angreifer kann jetzt den echten Client mit einer Fehlermeldung abhängen oder dessen Pakete einfach durchleiten und seine eigenen dazwischen verstecken. 5. Lösung Das oben gezeigte Problem lässt sich darauf reduzieren, dass der Client nicht weiß, ob er mit dem richtigen Server redet. Deshalb wäre es wünschenswert, dass sich der Server ebenfalls beim Client authentifiziert. Wenn man diese Authentifikation vorher durchführt, kann sich der Angreifer allerdings wieder dazwischen hängen. Deshalb müssen beide Authentifikationsvorgänge gleichzeitig ausgeführt werden: Der Client schickt seine Anforderung los und erhält eine Challenge. Er beantwortet sie und schickt mit der Antwort eine eigene Challenge los. Der Server prüft die Antwort des Clients und beantwortet seinerseits die Challenge des Clients. Nachdem dieser die Antwort geprüft hat, können beide Seiten sicher sein, dass sie mit dem richtigen Partner reden. Hinweise Durch den oben geschilderten Ablauf ergibt sich eine Schwierigkeit: Es wird erkannt dass das Challenge-Response-Verfahren wechselseitig sicher ist. Das könnte den Benutzer aber in einer falsche Sicherheit wiegen. Wenn beispielsweise der Client nach der Authentifikation abgehängt wird und der Angreifer seine IP-Adresse übernimmt, versagen alle oben genannten Protokolle. Die Lösung dafür ist jedoch wesentlich schwieriger als das, was im Rahmen dieser Unterlagen behandelt werden soll. An dieser Stelle soll also zumindest der Hinweis gegeben werden, dass die Protokolle nicht gänzlich von den darunter liegenden Software- und Hardwareschichten zu trennen sind. Ein weiterer zu vermittelnder Aspekt ist, dass die Challenge-ResponseProtokolle auf Verschlüsselungsverfahren basieren. Wenn diese zu schwach sind, können die Protokolle natürlich auch auf dieser Ebene angegriffen werden. Seite 5 IT-Systeme Kryptologie - Verschlüsselungsverfahren 2 Einführung in Verschlüsselungsverfahren 2.1. Symmetrische Verschlüsselung Bei der symmetrischen Verschlüsselung werden die Daten mittels eines geheimen Schlüssels ver- bzw. entschlüsselt. Der Schlüssel muss dabei sowohl Sender und Empfänger bekannt sein und zu diesem Zweck vorher persönlich ausgetauscht werden. Vorteil: Benötigt eine relativ geringe Rechenleistung und ist schnell. Nachteil: Der direkte Austausch der geheimen Schlüssel was seine Anwendung in einer Kunde-Händler Beziehung erschwert. Gängige Verfahren: - DES (Data Encryption Standard): Anfang der 70er von IBM entwickelt - IDEA (International Data Encryption Algorithm) 1990 von den Schweizern Lai und Massey veröffentlicht Prinzip der Verschlüsselung: Seite 6 IT-Systeme Kryptologie - Verschlüsselungsverfahren 2.2. Asymmetrische Verschlüsselung Sie basiert auf der Verwendung eines zusammengehörenden Schlüsselpaares, wobei ein Schlüssel zur Ver- und einer zur Entschlüsselung genutzt wird. Beim Public Key Verfahren wird nun einer der Schlüssel veröffentlicht und kann von jedem Sender dazu genutzt werden, eine Nachricht an den Empfänger zu verschlüsseln. Nur der Empfänger, welcher in Besitz des zweiten privaten Schlüssels ist, kann die Nachricht dann entschlüsseln. Vorteil: Einfacher Schlüsselaustausch möglich. Nachteil: Langsamer als symmetrische Verfahren. Gängiges Verfahren: - RSA (nach den Entwicklern Rivest, Shamir, Adleman): Entwickelt 1977 in den USA. Prinzip der Verschlüsselung: Prinzip der Signatur und der Authentifizierung: Seite 7 IT-Systeme Kryptologie - Verschlüsselungsverfahren 3 Kryptographische Grundlagen 3.1. Verschlüsselung Ziel der Verschlüsselung ist die Kommunikation zwischen zwei Partnern ohne dass ein Angreifer die übertragenen Daten mitbekommt. Dazu kommen so genannte Einwegfunktionen mit Falltürfunktion zum Einsatz. Eine Einwegfunktion (engl. one way function) ist eine Funktion x a y bei der zu einem gegebenen x-Wert sehr effizient der zugehörige y-Wert berechnet werden kann. Die zugehörige Umkehrfunktion y a x kann jedoch nur mit extrem hohem Rechenaufwand - also praktisch gar nicht - durchgeführt werden. Ein eingängiges Beispiel stammt aus dem Alltag: gibt man jemandem ein Telefonbuch in gedruckter Form so kann er recht einfach und schnell zu einem gegebenem Namen die zugehörige Nummer heraussuchen. Die Umkehrung zu einer gegebenen Nummer den Teilnehmer zu finden ist jedoch nur mit extrem hohem Aufwand - also praktisch gar nicht - möglich. Gibt es nun jedoch eine Zusatzinformation, mit deren Hilfe auch die Umkehrfunktion in adäquater Zeit zu berechnen ist, so nennt man diese Information eine Falltür bzw. die zugehörige Umkehrfunktion eine Falltürfunktion (engl. trap door function). In obigem Beispiel könnte man beispielsweise zur Telefonnummer die Seitennummer im Telefonbuch angeben auf welcher der zugehörige Teilnehmer gefunden werden kann. Wann ist eine Funktion jedoch „einfach“ zu berechnen? Man geht davon aus dass Probleme die in polynomialer Zeit als Funktion der Länge der Eingabe lösbar sind als einfach zu bezeichnen sind. Beträgt die Länge der Eingabe einer Funktion n Bits so ist die Zeit zur Berechnung einer einfachen Funktion proportional zu na, wobei a eine Konstante ist. Ist die Zeit, welche zur Lösung eines Problems benötigt wird nicht mehr polynomial sondern exponentiell zur Länge der Eingabe proportional - z. B. zu 2n so ist die Funktion ab einer bestimmten Bitlänge n praktisch nicht mehr lösbar. Gegenwärtig geht man davon aus dass Funktionen mit einer Eingabe von n>80 Bit nicht zu berechnen sind. Moderne kryptographische Verfahren beruhen vor allem auf der einfachen Berechnung von Exponentialfunktionen und der nur mit hohem Aufwand zu lösenden Umkehrfunktion, dem Logarithmus. 3.2. Digitale Signatur Ziel der digitalen Signatur ist die Gewährleistung folgender zwei Punkte: • Benutzerauthentizität: Es kann überprüft werden ob eine Nachricht tatsächlich von einer bestimmten Person stammt. • Nachrichtenintegrität: Es kann überprüft werden ob eine Nachricht verändert wurde. Seite 8 IT-Systeme Kryptologie - Verschlüsselungsverfahren Für die digitale Funktion greift man auf asymmetrische Verfahren zurück. Ein Teilnehmer, der eine digitale Signatur für ein Dokument erzeugen will muss also ein entsprechendes Schlüsselpaar (siehe auch Kapitel 5.2 „Schlüsselgenerierung“) besitzen. Der Absender berechnet aus seiner Nachricht und seinem geheimen Schlüssel die digitale Signatur (eine Art digitaler Fingerabdruck) der Nachricht. Im Vergleich zur handschriftlichen Unterschrift hat die digitale Signatur also den Vorteil, dass die Unterschrift auch vom unterschriebenen Dokument abhängt. Die Unterschriften ein und desselben Teilnehmers sind verschieden, sofern die unterzeichneten Dokumente nicht absolut übereinstimmen. Das Dokument wird zusammen mit der Signatur an den Empfänger geschickt. Dieser kann mit Hilfe des öffentlichen Schlüssels des Absenders, des Dokumentes und der Signatur feststellen ob die Signatur korrekt ist. 3.3. Hashfunktion In der Praxis hat das im Kapitel 3.2 beschriebene Verfahren den großen Nachteil dass die Signatur etwa genauso lang ist wie das eigentliche Dokument. Damit dauert die Erstellung der Signatur relativ lange und das zu übertragene Datenvolumen ist ca. doppelt so groß wie die Nutzdaten. Abhilfe schafft hier die sogenannte Hashfunktion. Eine Hashfunktion (eng.: "to hash": zerhacken, dt. Bezeichnung: Streuwertfunktion) ist eine nicht umkehrbare Funktion die eine umfangreiche Quellmenge (i.d.R. Texte) auf eine wesentlich kleinere Zielmenge (Hash-Werte, i.d.R. natürliche Zahlen und Buchstaben) abbildet. Die Anforderungen an eine Hashfunktion lauten: • Datenreduktion: Der Speicherbedarf des Hash-Wertes soll deutlich kleiner sein als der der Nachricht. • Zufälligkeit: Ähnliche Quellen müssen völlig verschiedene Hash-Werte liefern. • Eindeutigkeit: Die Funktion muss eindeutig von der Quellmenge auf die Zielmenge abbilden. Wiederholtes Berechnen des Hash-Wertes desselben Quellelements muss dasselbe Ergebnis liefern. • Effizienz: Die Funktion muss schnell berechenbar sein. • Kollisionsfreiheit: Es darf nicht effizient möglich sein, zwei Quellelemente mit demselben Hash-Wert zu finden. Andererseits sind Kollisionen bei der Adressberechnung in Datenbanken nicht zu vermeiden, so dass eine entsprechende Behandlungs-Strategie verfügbar sein muss. • Unumkehrbarkeit: Zu der Funktion gibt es keine effizient berechenbare inverse Funktion, mit der es möglich wäre, für ein gegebenes Zielelement ein passendes Quellelement zu finden. Seite 9 IT-Systeme Kryptologie - Verschlüsselungsverfahren Ein weit verbreiteter Hash-Algorithmus ist MD5 (Message Digest Algorithm 5) von Ronald L. Rivest. MD5 erzeugt auf Grundlage eines beliebig langen Dokumentes stets einen Hashwert von 128 Bit Länge. Dieser Hashwert wird üblicherweise als 32stellige Hexadezimalzahl notiert, die dann beispielsweise so aussehen kann: 34048ce4cd069b624f6e021ba63ecde5 Bereits 1994 wurden Pseudo-Kollisionen in MD5 entdeckt. Seit der Veröffentlichung eines theoretischen Angriffsszenarios wird dieser Algorithmus als nicht mehr sicher erachtet. Zwischenzeitlich war es gelungen, eine in den Parametern modifizierte Version von MD5 zu brechen, ein erfolgreicher Angriff auf die "echte" MD5-Funktion wurde bis heute jedoch nicht entwickelt. Stattdessen wird empfohlen, den SHA-1-Algorithmus zu benutzen. Der "Secure Hash Algorithm" (SHA) erzeugt Hashwerte der Länge 160 Bit für Nachrichten mit einer Größe von bis zu 264 Bit (dies entspricht etwa 1,4 Billiarden, also 1,4 · 1015, Seiten ASCII-Text mit 1620 Zeichen pro Seite). Seite 10 IT-Systeme Kryptologie - Verschlüsselungsverfahren 4 Mathematische Grundlagen 4.1. Primzahlen Eine Primzahl p ist eine natürliche Zahl größer als 1, die nur die Zahlen 1 und p als positive Teiler hat. D. h. eine Primzahl p ist eine natürliche Zahl, die genau zwei natürliche Teiler hat. Eine natürliche Zahl, die größer als 1 und nicht Primzahl ist, nennt man zusammengesetzte Zahl. Die Zahlen 0 und 1 sind weder prim noch zusammengesetzt. Die ersten Primzahlen sind 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, ... Mit Ausnahme der 2 sind alle Primzahlen ungerade, denn alle geraden Zahlen lassen sich ja durch 2 teilen. Zwei aufeinander folgende ungerade Zahlen, die beide Primzahlen sind, heißen Primzahlzwillinge, z. B. 11 und 13. Es gilt der Fundamentalsatz der Arithmetik: Jede positive natürliche Zahl lässt sich eindeutig als Produkt von Primzahlen darstellen, die in dieser Darstellung auftretenden Primzahlen nennt man die Primfaktoren der Zahl. Primzahlen spielen eine wichtige Rolle in der Kryptologie: Einige Verschlüsselungssysteme basieren darauf, dass man zwar relativ schnell große Primzahlen erzeugen und mit ihnen rechnen kann, dass es aber (noch) kein schnelles Faktorisierungsverfahren gibt, um große Zahlen in ihre Primfaktoren zu zerlegen (große Zahlen sind hier Zahlen mit mehr als hundert Stellen). 4.2. Modulo Operator In der Mathematik und Informatik steht mod für den Modulo-Operator bzw. die Modulo-Funktion. Sie liefert den Rest bei der Ganzzahl-Division. So ist 5 : 3 = 1 Rest 2, als Äquivalenz geschrieben: 5 ≡ 2 mod 3 (gesprochen: "5 ist kongruent zur 2 in Bezug auf mod 3"). Beispiele: 9 ≡ 1 mod 2 18 ≡ 4 mod 7 8 ≡ 8 mod 11 da da da 9:2 18 : 7 8 : 11 = 4 = 2 = 0 Rest 1 Rest 4 Rest 8 Seite 11 IT-Systeme Kryptologie - Verschlüsselungsverfahren 4.3. Diskrete Exponentialfunktion Die diskrete Exponentialfunktion ba mod p liefert den Rest bei Divison von ba durch p. Synonyme Bezeichnungen sind modulare Exponentiation oder modulares Potenzieren. Die diskrete Exponentialfunktion ist auch für große Exponenten effizient berechenbar. Für die Umkehrung (diskreter Logarithmus genannt), also die Berechnung des Exponenten x, bei gegebener Basis b, Modul m und gewünschtem Ergebnis, ist allerdings bis heute kein schneller Algorithmus bekannt. Beispiele: 24 mod 3 = 16 mod 3 = 5 42 mod 5 = 16 mod 9 = 1 33 mod 13 = 9 mod 13 = 0 Rest 1 Rest 7 Rest 9 4.4. Diskreter Logarithmus Die Lösung x der Gleichung ax = m mod p bei gegebenen natürlichen Zahlen m, a und p nennt man diskreter Logarithmus modulo p von m zur Basis a. Der diskrete Logarithmus ist für hinreichend große Zahlen praktisch nicht berechenbar, für die Potenzierung ax modulo p gibt es dagegen effiziente Algorithmen (im Sinne der Komplexitätstheorie). Die modulare Potenzierung kann daher als Einwegfunktion benutzt werden und findet deshalb Anwendung in der Kryptographie. Beispiele: 3x = 2 mod 7 5x = 9 mod 11 7x = 8 mod 11 --> --> --> x=2 x=4 x=9 oder oder oder x = 8 oder x = 9 oder x = 19 oder Seite 12 x = 14 x = 14 x = 29 oder .... oder ... oder ... IT-Systeme Kryptologie - Verschlüsselungsverfahren 4.5. Schnelles Exponentieren Bei der Einführung der diskreten Exponentialfunktion hieß es dass diese auch für große Exponenten effizient berechenbar sei. Eine Möglichkeit dafür sei hier vorgestellt. Es soll der Ausdruck 12037 mod 3713 berechnet werden. Wollte man dies ganz blauäugig berechnen, so geht man folgendermaßen vor: - Man berechnet 12037 und speichert das Ergebnis im Taschenrechner - Nun teilt man das Ergebnis durch 3713 und merkt sich den ganzzahligen Teil des Ergebnisses - Man multipliziert den ganzzahligen Teil der vorherigen Divison mit 3713 und zieht das Ergebnis von dem im ersten Schritt gespeicherten Ergebnis ab. Damit musste der Taschenrechner 120 Multiplikationen, eine Division und eine Subtraktion, also in der Summe 122 Operationen durchführen. Bei der effektiveren Vorgehensweise wird der Exponent zunächst als Dualzahl angeschrieben. Damit lautet der gewünschte Ausdruck 120100101 mod 3713. Nun wird die Berechnung folgendermaßen durchgeführt, wobei der Exponent von links nach rechts abgearbeitet wird: 1. Für den ganz linken 1er im Exponent die Basis einmal anschreibt und den Modul berechnet. 2. a) Ist die nächste Stelle im Exponent eine Null, so wird das Ergebnis aus (1) quadriert und der Modul berechnet. b) Ist die nächste Stelle im Exponent eine Eins, so wird das Ergebnis aus (1) quadriert, der Modul berechnet, dieses Ergebnis noch einmal mit der ursprünglichen Basis multipliziert und erneut der Modul bestimmt. 3. Punkt (2) wird so lange wiederholt bis der Exponent vollständig von links nach rechts abgearbeitet wurde. Am Beispiel 120100101 mod 3713 sieht die Berechnung folgendermaßen aus: Ziffer im Exponent 1: 0: 0: 1: 0: 1: Berechnung 120 ≡ 120 mod 3713 120 2 ≡ 3261 mod 3713 32612 ≡ 89 mod 3713 89 2 ≡ 495 mod 3713 3705 2 ≡ 64 mod 3713 64 2 ≡ 383 mod 3713 Damit gilt: 12037 ≡ 1404 mod 3713. Seite 13 495 ⋅ 120 ≡ 3705 mod 3713 383 ⋅ 120 ≡ 1404 mod 3713 IT-Systeme Kryptologie - Verschlüsselungsverfahren 5 Das RSA-Verfahren 5.1. Einführung Das RSA-Kryptosystem ist ein asymmetrisches Kryptosystem, d.h. es verwendet verschiedene Schlüssel zum Ver- und Entschlüsseln. Es ist nach seinen Erfindern Ronald L. Rivest, Adi Shamir und Leonard Adleman benannt. Nachdem Whitfield Diffie und Martin Hellman eine Theorie zur Public-KeyKryptografie veröffentlicht hatten, setzten sich die drei Mathematiker hin und versuchten, die Annahmen von Diffie und Hellmann zu widerlegen. Nachdem sie den Beweis bei verschiedenen Verfahren durchführen konnten, stießen sie schließlich auf eines, wo sie keinerlei Angriffspunkte fanden. Hieraus entstand dann RSA. Das Verfahren wurde 1977 entwickelt und basiert auf der Idee, dass die Faktorisierung einer grossen Zahl1, also ihre Zerlegung in (mindestens zwei) Faktoren, eine sehr aufwändige Angelegenheit ist, während das Erzeugen einer Zahl durch Multiplikation zweier Primzahlen trivial ist. Wenn nun eine Nachricht einem Empfänger verschlüsselt zugeleitet werden soll, generiert dieser einen öffentlichen Schlüssel. Der Nachrichtenabsender verwendet diesen öffentlich bekanntgemachten Schlüssel, indem er damit seine Botschaft verschlüsselt. Nur der Empfänger kann diese "dekodieren", da nur er die "Zusammensetzung" des von ihm erzeugten (öffentlichen) Schlüssels kennt. Da die Verschlüsselung mit Hilfe des öffentlichen Schlüssels sehr einfach, die Entschlüsselung ohne Kenntnis des geheimen Schlüssels (der „Falltür“) jedoch extrem schwierig ist handelt es sich um eine Einwegfunktion mit Falltür. RSA wird u.a. zur Authentisierung französischer Telefonkarten angewendet. 1 Der beim RSA-Verfahren entscheidende Modul n wird als Dualzahl angegeben und hat üblicherweise eine Länge von etwa 600 Bit. Seite 14 IT-Systeme Kryptologie - Verschlüsselungsverfahren 5.2. Schlüsselgenerierung 1. Wähle zufällig und stochastisch unabhängig zwei Primzahlen p ≠ q, die etwa gleich lang sein sollten und berechne deren Produkt (Modul genannt) n = p·q.2 In der Praxis werden diese Primzahlen durch Raten einer Zahl und darauffolgendes Anwenden eines Primzahltests bestimmt. 2. Berechne die Euler-Funktion3 J(n) = (p-1) · (q-1). 3. Wähle eine zufällige Zahl e mit 2<e<n-1, die teilerfremd zu J(n) ist. 4. Berechne die Zahl d so, dass das Produkt e·d kongruent 1 bezüglich des Moduls J(n) ist, dass also e·d ≡ 1 mod J(n) gilt4. Damit ist die Schlüsselgenerierung abgeschlossen: • (n, e) ist der öffentliche Schlüssel P (public key) • (n, d) ist der geheime Schlüssel S (secret key) 5 • Die Zahlen p, q und damit auch J(n) können „weggeworfen“ werden. Die Bezeichnungen e und d sind kennzeichnen bereits den späteren Einsatzzweck der beiden Zahlen. Für das verschlüsseln (engl.: encryption) wird e, für das entschlüsseln (engl: decryption) dagegen d benötigt. Jeder kann nun eine beliebige Nachricht mit dem öffentlichen Schlüssel e chiffrieren, aber nur der gewünschte Adressat kann als alleiniger Besitzer des geheimen Schlüssels d die Nachricht wieder dechiffrieren. 5.3. Verschlüsseln einer Nachricht Zum Verschlüsseln wird die als Zahl dargestellte Nachricht in Teile aufgebrochen, so dass jede Teilzahl kleiner als n ist. Das chiffrieren einer Nachricht erfolgt stets nach folgender Vorschrift: C = E((n, e); M) := Me mod n Zu den bereits bekannten Größen n und e gelten folgende Bezeichnungen: - C: Geheimtext (Cipher Text) - E: Verschlüsselungsfunktion (Encryption) - M: Klartext (Message) 2 Das BSI (Bundesamt für Sicherheit in der Informationstechnik empfiehlt, die Primfaktoren p und q ungefähr gleich groß, aber nicht zu dicht beieinander zu wählen, d. h. konkret etwa 0,5 < | log2(p) – log2(q) | < 30 3 Bei vorgegebenem n ist die Anzahl der Zahlen aus der Menge {1, ..., n-1}, die zu n teilerfremd sind, gleich dem Wert der Euler-Funktion J(n), manchmal auch Φ(n) geschrieben. Für eine Primzahl p gilt: J(p) = p-1 Ist n dagegen das Produkt zweier Primzahlen p und q so gilt: J(n) = (p-1) · (q-1). 4 Man berechnet mit d also die multiplikativ Inverse zu e modulo J(n) 5 Vom geheimen Schlüssel S bestehend aus (n, d) ist jedoch nur d geheim zu halten. Seite 15 IT-Systeme Kryptologie - Verschlüsselungsverfahren Beispiel: a. Für die beiden Primzahlen p und q werden die Zahlen p = 11 und q = 13 gewählt. Damit wird n = p·q = 143. b. Berechnung der Euler-Funktion: J(n) = J(143) = (p-1) · (q-1) = 120. c. Für die zu J(143) = 120 teilerfremde neue Zahl e sei e = 23 gewählt. d. Mit diesen Werten erhält man die Bedingung: 23·d ≡ 1 mod 120. Das heisst: Das Produkt soll bei Division durch 120 den Rest 1 lassen. Man kann damit die Kongruenz als Gleichung schreiben: 23·d = k·120 + 1. Dabei ist k eine ganze Zahl. Als eine Lösung dieser diophantischen Gleichung 120·k - 23·d = -1 ergibt sich d = 47 und k = 9. Damit erhält man das Schlüsselpaar: • Öffentlicher Schlüssel P bestehend aus n = 143 und e = 23 • Geheimer Schlüssel S bestehend aus n = 143 und d = 47, wobei nur d geheim zu halten ist. e. Es soll der Klartext M := 7 verschlüsselt werden. Damit gilt: C = E((143, 23);7) := 723 mod 143 Exponent wird in Dualzahl umgeschrieben: 723 mod 143 = 710111 mod 143 Ziffer im Exponent 1: 0: 1: 1: 1: Berechnung 7 ≡ 7 mod 143 7 2 ≡ 49 mod 143 492 ≡ 113 mod 143 762 ≡ 56 mod 143 1062 ≡ 82 mod 143 113 ⋅ 7 ≡ 76 mod 143 56 ⋅ 7 ≡ 106 mod 143 82 ⋅ 7 ≡ 2 mod 143 Damit wurde der Klartext M = 7 in den Geheimtext C = 2 codiert. 5.4. Entschlüsseln einer Nachricht Auch zum entschlüsseln wird das als Zahl dargestellte Chiffrat zunächst in Teile aufgebrochen, so dass jede Teilzahl kleiner als n ist. Das dechiffrieren erfolgt nun nach folgender Vorschrift: M = D((n, d); C) := Cd mod n Für die verwendeten Abkürzungen gelte hier: - M: Klartext (Message) - D: Entschlüsselungsfunktion (Decryption) - C: Geheimtext (Cipher Text) Seite 16 IT-Systeme Kryptologie - Verschlüsselungsverfahren Die Entschlüsselung gelingt nur, weil gilt: M = Cd mod n = (Me mod n)d mod n = (Me)d mod n = Me·d mod n = M1 mod n da e·d ≡ 1 mod n gilt: =M Beispiel: Damit kann der auf Seite 16 aus der Nachricht M = 7 generierte Geheimtext C = 2 wieder entschlüsselt werden. Dazu wird neben dem Geheimtext noch der geheime Schlüssel S bestehend aus n = 143 und d = 47 des dort generierten Schlüsselpaares benötigt. Damit erfolgt die Dekodierung folgendermaßen M = D((143, 47); 2) := 247 mod 143 Exponent wird in Dualzahl umgeschrieben: 747 mod 143 = 7101111 mod 143 Ziffer im Exponent 1: 0: 1: 1: 1: 1: Berechnung 2 ≡ 2 mod 143 22 ≡ 4 mod 143 42 ≡ 16 mod 143 322 ≡ 23 mod 143 462 ≡ 114 mod 143 852 ≡ 75 mod 143 16 ⋅ 2 ≡ 32 mod 143 23 ⋅ 2 ≡ 46 mod 143 114 ⋅ 2 ≡ 85 mod 143 75 ⋅ 2 ≡ 7 mod 143 Damit wurde aus dem Geheimtext C = 2 wieder der Klartext M = 7 gewonnen. Seite 17 IT-Systeme Kryptologie - Verschlüsselungsverfahren 5.5. Beispiel Der Nachricht soll das ASCII-Alphabet zugrunde liegen, womit jedes Einzelzeichen der Nachricht in 8-Bit lange Zahlen codiert wird. Es soll der Text „RSA works!“ verschlüsselt werden. Zunächst erfolgt die Umcodierung in ASCII-Code (Darstellung in Dezimalschreibweise): Text Zahl R 82 S 83 A 65 32 w 119 o 111 r 114 k 107 s 115 ! 32 Schlüsselerzeugung: 1. p = 509, q = 503 2. e = 65.537 → n = p·q = 256.027 → J(n) = (p-1)·(q-1) = 255.016 (soll zwischen 509 und 255.016 liegen und muss teilerfremd zu 255.016 sein) 3. d = 231.953 (denn e·d ≡ 1 mod J(n)) Variante 1: Ver- / Entschlüsselung ohne Blockbildung Jeder Buchstabe wird einzeln mit nachfolgender Vorschrift verschlüsselt: C ≡ M65.537 mod 256.027 Daraus ergibt sich das Chiffrat: 212984 100412 025546 054196 104529 100184 031692 058179 248407 227433 Die Entschlüsselung erfolgt mit M ≡ C231.953 mod 256.027 Variante 2: Ver- / Entschlüsselung mit Blockbildung Jeweils zwei ASCII-Zeichen werden zu einem Block zusammengefasst indem die ASCII-Zahlen als 3-stellige Dezimalzahlen (evtl. mit führender Null) hintereinandergeschrieben und dann verschlüsselt werden. Damit ergibt sich der folgende zusammengefasste Klartext: 082083 065032 119111 114107 115033 115318 014251 Die Verschlüsselung pro Block ergibt mit C ≡ M65.537 mod 256.027 folgenden Geheimtext: 198967 051405 254571 Seite 18 IT-Systeme Kryptologie - Verschlüsselungsverfahren 6 Quellen • Didaktik der Informatik der Universität Potsdam: http://ddi.cs.uni-potsdam.de/Lehre/e-commerce/elBez2-5/page04.html • Studienarbeit im Fachbereich Informatik der TU Darmstadt von Christian Binder: http://www.sec.informatik.tu-darmstadt.de/lang_neutral/diplomarbeiten/docs/binder_studien.pdf • Skript zum CrypTool der TU Darmstadt, Universität Siegen und der Deutschen Bank: http://www.cryptool.de • Freie Online-Enzyklopädie: http://www.wikipedia.de Seite 19