Chr.Nelius: Zahlentheorie (SoSe 2017) 53 11. Das RSA Verfahren Bei einer asymmetrischen Verschlüsselung lässt sich der Schlüssel zum Entschlüsseln nicht aus dem Schlüssel zum Verschlüsseln bestimmen und umgekehrt. Ein Beispiel für ein asymmetrisches Verfahren ist das sog. Public Key Verfahren, bei dem jeder Teilnehmer einen privaten (geheimen) Schlüssel und einen öffentlichen Schlüssel hat. Will eine Person A eine verschlüsselte Nachricht an eine zweite Person B schicken, so benutzt A den öffentlichen Schlüssel von B zum Verschlüsseln, und B kann dann mit seinem geheimen Schlüssel die Nachricht entschlüsseln. Damit B sicher sein kann, dass die Nachricht auch wirklich von A stammt, kann A seine Nachricht signieren. Er verschlüsselt noch zusätzlich mit seinem geheimen Schlüssel, was B durch den öffentlichen Schlüssel von A wieder entschlüsseln kann. Das RSA Verfahren ist eine konkrete Realisierung eines Public Key Verfahrens, das im Jahre 1978 von den drei Wissenschaftlern Ron L.Rivest, Adi Shamir, Leonard Aldeman veröffentlicht wurde. Der Titel ihrer Arbeit lautete A Method for Obtaining Digital Signatures and Public Key. Das RSA Verfahren basiert auf den Ergebnissen des Paragraphen 10 und insbesondere auf dem Kleinen Satz von Fermat aus dem Jahre 1640. Grundlage für das RSA Verfahren ist der folgende Satz. Dabei bezeichnet wie gewohnt R m = {0,1,2,...,m 1} für m Æ die Menge der Reste bei Division durch m. (11.1) SATZ: Die natürliche Zahl n Æ sei das Produkt zweier verschiedener Primzahlen p und q. Ferner sei e R m eine zu m := (p 1) (q 1) teilerfremde Zahl. Dann gilt: a) Es gibt eine natürliche Zahl d R m mit r m (e d) = 1 b) Für alle x R n gilt r n (x e d ) = x. Bew: a) Wegen ggt(e,m) = 1 gibt es nach (9.6) ein d R m mit der Eigenschaft r m (e d) = 1. b) Für alle x R n gilt ggt(x,n) = ggt(x,p q) T + (p q) = {1,p,q,p q} Daher sind 4 Fälle für ggt(x,n) möglich:
Chr.Nelius: Zahlentheorie (SoSe 2017) 54 1. Fall: ggt(x, n) = 1 Es ist n = p q und m = (p 1) (q 1). Nach (10.11) gilt r n (x m ) = 1. Wegen r m (e d) = 1 gibt es ein k Æ gibt mit m k = e d 1 (= e d = m k+1). Folglich also r n (x e d ) = r n (x m k+1 ) = r n ((r n (x m )) k x) = r }{{} n (x) = x, =1 r n (x e d ) = x. 2. Fall: ggt(x, n) = p Aus p x folgt p x e d, also p (x e d x) und daraus mit (4.7e) (1) r p (x e d ) = r p (x). Es muss dann ggt(x,q) = 1 gelten. Sonst wäre ggt(x,q) = q, woraus q x folgen würde. Da auch q ein Teiler von n ist, ist q ein gemeinsamer Teiler von x und n, der nach (5.10) ggt(x,n) = p teilt. Aus q p folgt q = p, da p und q Primzahlen sind. Dies ist aber ein Widerspruch zur Voraussetzung p q. Nach a) gilt r m (e d) = 1, also m (e d 1) nach (4.7e). Da q 1 ein Teiler von m = (p 1) (q 1) ist, gilt (q 1) (e d 1) auf Grund der Transitivität der Teilbarkeitsrelation. Da ggt(x, q) = 1 gilt, folgt mit (10.9) (2) r q (x e d ) = r q (x), Aus (1) und (2) folgt mit (4.7e) p (x e d x) und q (x e d x). Wegen ggt(p,q) = 1 ergibt sich unter Verwendung von (5.13a) p q (x }{{} e d x), woraus wiederum mit (4.7e) folgt =n r n (x e d ) = r n (x) ( ) = x. ( ) gilt nach (4.7b) wegen x R n. 3. Fall: ggt(x, n) = q Dieser Fall wird analog zum zweiten Fall bewiesen. 4. Fall: ggt(x,n) = p q = n (1.5a) ggt(x,n) = n = n x. Annahme: x 0 = n x, Widerspruch, da x R n und damit x < n. Also ist x = 0, und für x = 0 gilt r n (x e d ) = x In allen vier Fällen gilt also die Behauptung r n (x e d ) = x.
Chr.Nelius: Zahlentheorie (SoSe 2017) 55 (11.2) Das RSA Verfahren Das RSA Verfahren ist ein Public-Key Verfahren, bei dem ein Teilnehmer den öffentlichen Schlüssel (n, e) und den geheimen Schlüssel (n, d) hat, die entsprechend den Ergebnissen des Satzes (11.1) berechnet werden. BEM: Natürlich haben unterschiedliche Teilnehmer auch verschiedene Schlüssel! Die Schlüssel sind von einer Zentrale berechnet und an die Teilnehmer weitergegeben worden. Bew: Die zu verschlüsselnde Nachricht liege in Form einer Zahl x R n vor. Sie wird mit dem öffentlichen Schlüssel (n, e) des Empfängers zu y := r n (x e ) verschlüsselt und an diesen verschickt. Der Empfänger kann nun die verschlüsselte Botschaft y mit seinem geheimen Schlüssel (n, d) entschlüsseln, indem er berechnet. Es gilt nämlich r n (y d ) r n (y d ) = r n (r n (x e ) d ) (1) = r n ((x e ) d ) (2) = r n (x ed ) (3) = r n (x) (4) = x. zu (1) Gilt nach (4.7h). zu (2) Gilt nach (2.7c). zu (3) Gilt nach (11.1b) zu (4) Für x R n gilt r n (x) = x (4.7b). Damit folgt r n (y d ) = x, so dass der Empfänger die ursprüngliche Nachricht x lesen hat. Da (hoffentlich!) nur der Empfänger seinen geheimen Schlüssel kennt, ist er auch nur der einzige, der den Geheimtext entschlüsseln kann. BEM: Beim Verschlüsseln und Entschlüsseln werden nur die beiden Schlüssel des Empfängers eingesetzt, die Schlüssel des Senders spielen hierbei keine Rolle.
Chr.Nelius: Zahlentheorie (SoSe 2017) 56 (11.3) Die praktische Durchführung des RSA Verfahrens Empfänger B habe den öffentlichen Schlüssel (n, e) und den geheimen Schlüssel (n, d). Beide Schlüssel sind von einer Zentrale entsprechend den Vorgaben des Satzes (11.1) berechnet worden. Der geheime Schlüssel ist nur B bekannt, während der öffentliche Schlüssel in ein allgemein zugängliches Verzeichnis aufgenommen wird. Der Text, den der Sender A dem Teilnehmer B übermitteln möchte, muss zunächst in eine oder mehrere Zahlen umgewandelt werden. Dafür gibt es viele Möglichkeiten. Damit es nicht zu schwierig wird, benutzen wir für unsere Beispiele die in der Tabelle (11.4) angegebene Ersetzung von Buchstaben und Zeichen durch zweiziffrige Zahlen. Will jetzt A eine verschlüsselte Nachricht an B schicken, so sucht A den öffentlichen Schlüssel von B aus dem Verzeichnis heraus und wandelt seinen Text in eine Zahl x um. Ist x < n, so sendet A an B die Nachricht y = r n (x e ), die B mit Hilfe von r n (y d ) entschlüsseln kann. Ist die Zahl x n, so wird x in Blöcke x 1,x 2,...,x r mit x i < n aufgespalten. Dann werden die einzelnen Zahlen x i zu y i := r n (x e i ) verschlüsselt und an B gesandt. Die einzelnen Blöcke y i kann B dann durch r n (y d i ) wieder zu x i entschlüsseln und daraus die ursprüngliche Nachricht zusammensetzen. (11.4) Tabelle A 10 M 22 X 33 B 11 N 23 Y 34 C 12 O 24 Z 35 D 13 P 25. 36 E 14 Q 26, 37 F 15 R 27! 38 G 16 S 28? 39 H 17 T 29 blank 40 I 18 U 30-41 J 19 V 31 : 42 K 20 W 32 ; 43 L 21
Chr.Nelius: Zahlentheorie (SoSe 2017) 57 (11.5) BEISPIEL für das RSA Verfahren: I) Schlüsselerzeugung (wird nicht vom Teilnehmer vorgenommen) p := 9587 und q := 9811 sind zwei verschiedene Primzahlen. Setze n := p q = 9587 9811 = 94058057. Dann ist m = (p 1) (q 1) = 9586 9810 = 94038660. Die Zahl e := 1723 ist teilerfremd zu p 1 und q 1 (e ist hier sogar eine Primzahl, was aber nicht notwendig ist). Daher ist e auch teilerfremd zu m. Die Zahl d R m, für die r m (d e) = 1 gilt, lässt sich mit Hilfe des erweiterten euklidischen Algorithmus berechnen. Man erhält 46773727 e + ( 857) m = 1, also d := 46773727. Jetzt ist (n,e) der öffentliche und (n,d) der geheime Schlüssel des Teilnehmers B. II) Durchführung (die erforderlichen Rechnungen sind nicht dokumentiert) A möchte den Klartext RSA in verschlüsselter Form an B senden. Dazu wandelt A den Klartext in eine Zahl um: Klartext: RSA 272810 =: x (nach Tabelle (11.4)) A verschlüsselt die Zahl x mit dem öffentlichen Schlüssel von B, den er in dem Verzeichnis gefunden hat: Verschlüsselung mit (n,e): r n (x e ) = 87277685 =: y y ist also der Geheimtext, den A an B schickt. B entschlüsselt die erhaltene Nachricht y mit seinem geheimen Schlüssel und wandelt die Zahl wieder in Text um: Entschlüsselung mit (n,d): r n (y d ) = 272810 = x RSA. Jetzt kann B die Nachricht von A lesen. BEM: Die Berechnung von r n (x e ) und r n (y d ) erfordert natürlich einen recht großen Aufwand!
Chr.Nelius: Zahlentheorie (SoSe 2017) 58 Zur Frage nach der Sicherheit des RSA Verfahrens (n,e) sei der öffentliche Schlüssel. Dabei ist n = p q das Produkt zweier Primzahlen, die jedoch unbekannt sind. Wenn man nun auf irgendeine Weise m = (p 1) (q 1) berechnen kann, so lässt sich d R m mit der Eigenschaft r m (d e) = 1 mit Hilfe des EEA berechnen, und der geheime Schlüssel (n, d) ist geknackt. Die Sicherheit des Verfahrens beruht also darauf, dass m nicht berechnet werden kann. Wie der nächste Satz zeigt, ist dies aber äquivalent dazu, dass man die Primfaktorzerlegung von n nicht berechnen kann. (11.6) SATZ: Gegeben sei eine natürliche Zahl n, von der man weiß, dass sie Produkt zweier verschiedener Primzahlen p und q ist, die aber nicht bekannt sind. Ferner sei m = (p 1) (q 1). Dann sind folgende Aussagen äquivalent: a) m lässt sich bestimmen b) Die Primfaktorzerlegung von n lässt sich berechnen. (11.7) BEM: Die Sicherheit des RSA Verfahrens ist also gewährleistet, wenn es unmöglich ist, die Primfaktorzerlegung von n zu berechnen. Nach dem heutigen Stand der Computertechnik und der Faktorisierungsverfahren muss man für p und q zwei mindestens 100 stellige Primzahlen wählen. Dann lässt sich die etwa 200 stellige Zahl n = p q nicht faktorisieren oder es würde zumindest eine sehr sehr lange Zeit dauern. Signatur Verfahren Wenn ein Teilnehmer B eine Nachricht von A erhält, kann er nicht sicher sein, dass die Nachricht auch wirklich von A kommt. Es kann sich irgendjemand anderes für A ausgegeben haben! Um alle Zweifel zu beseitigen, kann A seine Nachricht signieren, damit B sicher gehen kann, dass die Nachricht auch wirklich von A stammt. (11.8) BEM: Das RSA Verfahren lässt sich auch als Signatur Verfahren benutzen. Wenn A eine Nachricht an B signieren möchte, verschlüsselt er sie zusätzlich mit seinem geheimen Schlüssel (also dem geheimen Schlüssel von A). Kann B dann diese Nachricht mit dem öffentlichen Schlüssel von A entschlüsseln, so kann B sicher sein, dass die Nachricht auch wirklich von A gesendet wurde.
Chr.Nelius: Zahlentheorie (SoSe 2017) 59 Schematische Darstellung eines Public Key Verfahrens KT: Klartext GT: Geheimtext A schickt eine verschlüsselte Nachricht an B A KT öffentlicher Schlüssel von B GT B B entschlüsselt die Nachricht von A B GT geheimer Schlüssel von B KT A A signiert eine Nachricht an B A KT geheimer Schlüssel von A GT B B überprüft die Signatur von A B GT öffentlicher Schlüssel von A KT A