Stand: 15.12.2014 Vorlesung Grundlagen und Methoden der Kryptographie Dietzfelbinger 3 Das RSA-Kryptosystem RSA: Erfunden von Ronald L. Rivest, Adi Shamir und Leonard Adleman, 1977. (Ein ähnliches Verfahren wurde bereits um Anfang der 1970er Jahre in den Government Communications Headquarters, der Kryptologie-Abteilung des Britischen Geheimdienstes, entwickelt, aber nicht veröentlicht.) Vorsicht: In der hier zunächst vorgestellten Version ist RSA unsicher. Es müssen Modkationen und Einschränkungen vorgenommen werden, um ein sicheres Verfahren zu erhalten. Gute Referenz hierfür: Baumann, Franz, Ptzmann, Kryptographische Systeme, Springer Vieweg 2014. 3.1 Asymmetrische Kryptosysteme Wir betrachten ein einfaches Kommunikationsszenario. Die Teilnehmer sind Alice und Bob. Alice möchte an Bob eine Nachricht schicken. Dies soll über einen oen zugänglichen Kanal (E-Mail, ein Webportal) geschehen. Dieser Kanal wird von Eve mitgelesen. Alice und Bob wollen vermeiden, dass Eve den Inhalt der Nachricht erfährt. 1 Die Menge X der möglichen Nachrichten kann als Teilmenge von {0, 1}∗ aufgefasst werden. x ∈ [n], für eine m der Länge L zu ver- und entschlüsseln, w gehen wir folgendermaÿen vor. Wir (bzw. Alice und Bob) wählen w mit 2 ≤ n, zum Beispiel w = blog nc. Durch Auffüllen z. B. mit Nullen können wir annehmen, dass L durch w teilbar ist. Alice teilt m in r = L/w Blöcke x1 , . . . , xr mit jeweils w Bits. Diese Blöcke werden als Zahlen < n aufgefasst. Alice verschlüsselt jeden Block einzeln, und sendet die Folge y1 , . . . , yr der Chiretexte an Bob. Bob entschlüsselt Das RSA-System in seiner puren Form verarbeitet Nachrichten Zahl n. Um einen langen binären Klartext Block für Block und setzt die Nachricht zusammen. Ab hier nehmen wir stets an, dass der Klartext x selbst eine Zahl in [n] ist. 1 Wenn auch Bob an Alice Nachrichten schicken möchte, müssen die Aktionen nochmals mit vertauschten Rollen ausgeführt werden. 1 RSA ist ein asymmetrisches Verschlüsselungsverfahren. Das bedeutet Folgendes: Man benötigt ein (randomisiertes) Verfahren aus Kpub × Kpriv . Wertebereich von K Üblicherweise hat G, G zur Erzeugung von Schlüsselpaaren einen Parameter `, die (k, k̂) Schlüssellänge. also die Menge aller möglichen Schlüsselpaare k nennen. Dabei ist G (k, k̂), Den wollen wir Bobs öentlicher Schlüssel, der öentlich zugänglich ist (zum Beispiel in einem allgemein zugänglichen Schlüsselbuch oder auf Bobs Webseite) und k̂ ist sein privater Schlüssel, den nur er kennt. Alice verwendet k zur Verschlüsselung, Bob verwendet k̂ zur Entschlüsselung. Wir werden gleich sehen, dass im RSA-System durch ein solches Schlüsselpaar (k, k̂) eine Zahl n bestimmt ist, so dass Klartexte x ∈ [n] und Chiretexte y ∈ [n] direkt verarbeitet werden können. In unserem vereinfachten Szenario ist texte, Y = Yn = [n] X = Xn = [n] ist die Menge der möglichen Chiretexte. Es gibt einen (eventuell randomisierten) Xn und dem öentlichen Schlüssel (deterministischen) Schlüssel die Menge der möglichen Klar- k Verschlüsselungsalgorithmus E , der aus x ∈ y ∈ Yn berechnet, sowie einen D, der aus y ∈ Y und dem privaten den Kryptotext Entschlüsselungsalgorithmus k̂ den entschlüsselten Text z berechnet. Abstrakt haben wir zwei Funktionen E : (x, k) 7→ y ∈ Yn , wobei neter x ∈ Xn und k erste Zahl n ist, und Komponente eines Schlüsselpaars (k, k̂) ∈ K mit zugeord- (k, k̂) ∈ K mit zugeord- D : (y, k̂) 7→ z ∈ Xn , wobei y ∈ Y und k̂ n ist. zweite Komponente eines Schlüsselpaars neter Zahl Typischerweise sind die Funktionen E und D nis im Verfahren steckt im privaten Schlüssel Korrektheit: Wenn (k, k̂) ∈ K allgemein bekannt; das einzige Geheim- k. ist, muss gelten: D(E(x, k), k̂) = x, für x ∈ Xn . x liefert, ganz gleichgültig, welche Zufallsentscheidungen der Verschlüsselungsalgorithmus E getrof- (Diese Gleichung verlangt, dass der Entschlüsselungsalgorithmus immer fen hat.) Sicherheit: Es soll verhindert werden, dass Eve aus dem Kryptotext öentlichen Schlüssel k relevante Informationen über den Klartext x y und dem gewinnen kann. Hierbei wird üblicherweise angenommen, dass sie nur begrenzten Rechenaufwand betreiben kann. 2 3.2 Das RSA-Kryptosystem 3.2.1 Schlüsselerzeugung Wir beschreiben den Erzeugungsprozess auch von einem Trust Center G. Dieser Vorgang wird von Bob selbst oder durchgeführt. Die Schlüssellänge ist festzulegen (etwa ` = 512, 1024 oder 2048 Bits). Danach werden zwei (zufällige, verschiedene) Primzahlen p und q bestimmt, deren Bitlänge die Hälfte der Schlüssellänge ist. Hierzu kann man im Prinzip wie in Abschnitt 2.2 beschrieben vorgehen. Nun wird das Produkt n = pq ` − 1 Bits.2 Weiter wird ϕ(n) = (p − 1)(q − 1) berechnet. Es wird eine Zahl e aus {2, . . . , ϕ(n) − 1} gewählt. Mittels des erweiterten Euklidischen Algorithmus (Algorithmus 1.2) wird überprüft, ob ggt(e, ϕ(n)) = 1 ist und gegebenenfalls das multiplikative Inverse d < ϕ(n) modulo ϕ(n) von e bestimmt, berechnet. Die Zahl n ` hat oder so dass also ed mod ϕ(n) = 1 gilt. (Sollte ggt(e, ϕ(n)) > 1 sein, wird ein neues e gewählt und erneut gerechnet, usw. bis zum Erfolg.) Bob erhält (vom Trust Center oder aus seiner Rechnung): das Schlüsselpaar (k, k̂) n, e und d. Aus diesen wird gebildet: • Der öentliche Schlüssel • Der geheime Schlüssel k̂ k ist das Paar ist (n, d). (n, e). Dieser wird bekanntgegeben. Natürlich ist nur der Teil Der Berechnungsaufwand für die Schlüsselerzeugung ist d wirklich geheim. O((log n)4 ) = O(`4 ), weil dies die Kosten der Primzahlerzeugung sind (siehe Abschnitt 2.2). 3.2.2 Verschlüsselung Alice besorgt sich Bobs öentlichen Schlüssel Verschlüsselung von k = (n, e). x ∈ Xn = [n]: y = E(x, (n, e)) := xe mod n. 2 Falls gewünscht, lässt sich mit einfachen Maÿnahmen, z. B. der Wahl von 2`−2 , 2` ), der Fall vermeiden, dass n nur ` − 1 Bits hat. 3 p und q aus [2` − (Zu berechnen mit schneller Exponentiation, Rechenzeit O((log n)3 ) = O(`3 ).) Der Chiretext wird über den öentlichen Kanal an Bob geschickt. 3.2.3 Entschlüsselung Bob erhält den Chiretext y ∈ Yn = [n] und möchte den Klartext x wieder herstellen. Er berechnet (ebenfalls mit schneller Exponentiation) den Wert z = D(y, (n, d)) := y d mod n. Diese Rechnung kann er ausführen, da er den geheimen Schlüssel k̂ = (n, d) kennt. Nach den Potenzrechenregeln, die auch für die modulare Arithmetik gelten, ist (me mod n)d mod n = xed mod n. z= Korrektheit Satz 3.1 Korrektheit von RSA Die der Entschlüsselung beruht auf folgendem Satz. Wenn ed mod ϕ(n) = 1 gilt, dann haben wir xed mod n = x, Beweis : Weil n ist, x − x ist. kleiner als ed von x und xed mod n für alle x ∈ [n]. [n] liegen, also der Betrag ihrer Dierenz ed dass x ≡ x (mod n) gilt, d. h. dass n Teiler beide in genügt es zu zeigen, p und q von n. Da ed ≡ 1 (mod ϕ(n)) und ϕ(n) = (p − 1)(q − 1) gilt, haben wir ed = k(p − 1)(q − 1) + 1 für eine Zahl k ∈ Z, also Dies weisen wir im Folgenden nach. Betrachte die Primfaktoren xed − x = (xk(p−1)(q−1) − 1) · x. Behauptung : p teilt xed − x. Wenn x durch p teilbar ist, ist dies klar. Wir können ist, dass also x und p−1 dem kleinen Satz von Fermat (Fakt 1.26) gilt x mod p = also annehmen, dass p kein Teiler von x p teilerfremd 1, also auch sind. Nach xk(p−1)(q−1) mod p = (x(p−1) )k(q−1) mod p = 1. Dies bedeutet, dass p ein Teiler von xk(p−1)(q−1) −1 ist, also auch ein Teiler von xed −x. Die Behauptung gilt natürlich genauso für p und q q: teilerfremd sind, folgt aus Fakt 1.8, dass gewünscht. 4 q ist ein Teiler von xed − x. Da n = pq Teiler von xed − x ist, wie Auch Beispiel : Schlüsselerzeugung: n = 55 = 5 · 11. ϕ(n) = 4 · 10 = 40. e = 3, Also: ggt(3, 40) = 1, d = e−1 mod 40 = 27, weil 3 · 27 = 81 ≡ 1 (mod 40) gilt. k = (55, 3), k̂ = (55, 27). Sei die Botschaft Verschlüsselung: x=9 gegeben. y = 93 mod 55 = 729 mod 55 = 14. Entschlüsselung: Wir rechnen modulo 55: y 27 ≡ (143 )9 ≡ 499 ≡ ((−6)3 )3 ≡ 43 ≡ 64 mod 55 ≡ 9. Passt! RSA, unsichere Version, insgesamt Bob erzeugt (oder erwirbt von einem Trust Center) einen Schlüsselsatz (k, k̂) = ((n, e), (n, d)). Er veröentlicht (n, e) und hält (x1 , . . . , xr ) ∈ [n]r Wenn Alice d geheim. an Bob schicken will, verschlüsselt sie yi := xei mod n, und sendet (y1 , . . . , yr ) i = 1, . . . , r, an Bob. Dieser entschlüsselt zi := yid mod n, und erhält für für i = 1, . . . , r, (z1 , . . . , zr ) = (x1 , . . . , xr ). Bemerkungen zur Sicherheit und ezienten Verwendung: 1. Wahl von p und q: Wenn Eve die Zahl türlich ϕ(n) und d n ezient in ihre Faktoren p berechnen und damit sämtliche q mit k und zerlegen kann, kann sie naverschlüsselten Nachrichten lesen. Es genügt aber auch, wenn Eve den Wert ϕ(n) berechnen kann (weil sie dann auch d nden kann). n, e und d lassen p und q berechnen. Man kann umgekehrt aber auch Folgendes zeigen: Aus einem randomisierten Verfahren ezient die Faktoren 5 sich mit Im Wesentlichen ist also das vollständige Brechen des Systems äquivalent dazu, n in seine Faktoren zu zerlegen. Das Faktorisierungsproblem gilt bislang als im Allgemei- n nen schwierig und für das Produkt von zwei zufälligen Primzahlen mit 512 Bits 3 (oder 1024 Bits) als praktisch nicht lösbar. Man beachte aber: Den geheimen Schlüssel lichkeit sein, aus x n, e und y den Klartext d zu nden muss nicht die einzige Mög- x oder zumindest partielle Information über zu gewinnen. Wenn sich p und q nur geringfügig unterscheiden, lässt sich Man muss also darauf achten, dass p und q n ezient faktorisieren. in nicht mehr als etwa den ersten 10 Binärstellen übereinstimmen. Es gibt ein RSA-spezisches Angrisverfahren (Iteration), das nur ezient funktioniert, wenn p−1 und q−1 kleine Primfaktoren haben. Bei der Wahl von p und q ist also auch darauf zu achten, dass dies nicht der Fall ist. 2. Zufallskomponente : x ∈ {0, 1}w mit w < blog nc durch Anhängen oder Voranstellen eines zufälligen Bitstrings r auf Länge blog nc gebracht und das Wort x◦r (Konkatenation von x und r ) wie beschrieben verschlüsselt. Die Zufallskomponente r macht den Verschlüsselungsalgorithmus E zu einem randomisierten Verfahren. Der Empfänger muss natürlich ebenfalls die Länge w kennen, um nach der Entschlüsselung aus x◦r die eigentliche Botschaft x zu ermitteln. Dieses Vorgehen hat auch den Vorteil, In der Praxis wird der Klartext dass selbst bei mehrmaligem Versenden derselben Botschaft (oder Wiederholung von Blöcken) unterschiedliche Chiretexte entstehen und zum Beispiel die Parität der Anzahl der 1-Bits in Information über 3. x x◦r sowie das letzte Bit von x◦r rein zufällig sind und keine liefern. Wahl des Verschlüsselungsschlüssels e: Mitunter wird vorgeschlagen, e=3 zu wählen, weil dann die Verschlüsselung beson- n.) Es x ezient ermitteln kann, wenn drei Chireöentlichen Schlüsseln (n1 , 3), (n2 , 3), (n3 , 3) vorliegen. ders ezient vor sich geht. (Man benötigt nur zwei Multiplikationen modulo gibt aber einen Angri, der den Klartext texte für x mit verschiedenen (Dies kann passieren, wenn Alice dieselbe Nachricht ohne Zufallskomponente an drei verschiedene Empfänger mit verschiedenen RSA-Schlüsseln schickt.) 3 Als RSA Factoring Challenge wurde 1991 eine Liste von Zahlen der Form p und q p·q für Primzahlen herausgegeben, mit der Aufforderung, diese zu faktorisieren. Die Bitlängen der Zahlen reichen von 330 bis 2048. Die gröÿte der bislang faktorisierten Zahlen hat 768 Bits (RSA-768). Die Rechenzeit wird als almost 2000 years of computing on a single-core 2.2 GHz AMD Opteron-based computer angegeben. (Quelle: http://en.wikipedia.org/wiki/RSA_numbers.) 6 Diesem Problem entgeht man, indem man etwa e = 216 +1 wählt. Auch in diesem Fall ist die Verschlüsselung billiger als im allgemeinen Fall, da man mit 17 Multiplikationen modulo 4. n auskommt. Empfänger rechnet modulo p und q: kennt, können wir auch annehmen, dass er sogar die Faktoren p und q d kennt. Dies kann zu einer Beschleunigung der Berechnung von z = y mod n benutzt d d werden, wie folgt: Bob berechnet zp = y mod p und zq = y mod q . Aus diesen beiDa Bob d den Zahlen bestimmt er mit dem Chinesischen Restsatz und z ∈ [n] mit z ≡ zp (mod p) z ≡ zq (mod q). Dieses Vorgehen spart Rechenaufwand, da die Exponentiationen nur mit Zahlen der halben Länge durchgeführt werden müssen und die Anwendung des Chinesischen Restsatzes auf den erweiterten Euklidischen Algorithmus hinauslaufen, der eine deutlich kleinere Rechenzeit als eine Exponentiation hat. Eine Überschlagsrechnung ergibt, dass sich durch dieses Vorgehen der Rechenaufwand für die Entschlüsselung etwa um den Faktor 4 verringert. Bemerkungen zum Faktorisierungsproblem: Nach wie vor gibt es keinen Polynomialzeitalgorithmus, der beliebige zusammengesetzte Zahlen n in ihre Primfaktoren zerlegen kann (äquivalent: in polynomieller Zeit n bestimmen kann). Allerdings gab es in den letzten einen nichttrivialen Faktor von Jahrzehnten auch gewaltige Fortschritte bei der Entwicklung immer besserer Verfahren. • (p − 1)-Methode (klassisch): Führt zu schneller Ermittlung eines Fakvon n, wenn für einen Primfaktor p von n gilt, dass p − 1 nur kleine Pollards tors Primfaktoren hat. • ρ-Methode (klassisch): Führt zur Ermittlung eines Faktors von n in √ p), wo p ein Primfaktor von n ist. Da n immer einen Primfaktor in O( √ √ 4 O( n) hat, ist die Rechenzeit im schlechtesten Fall in O( n) = O(2(log n)/4 ). Gute Ergebnisse erhält man also, wenn n einen kleinen Primfaktor p hat. (Die oben angegebenen Vorschriften zur Wahl von p und q vermeiden diese SituatiPollards Zeit on.) √ (ln n)(ln ln n) • Quadratisches Sieb (Pomerance, 1981): Rechenzeit • Zahlkörpersieb (um 1990, zwei Varianten): Die schnellsten heute bekannten O(e ). Faktorisierungsverfahren. Die anfallenden Rechnungen können auf vielen Rechnern parallel durchgeführt werden. Die Gesamtrechenzeit ist beschränkt durch 7 1/3 (ln ln n)2/3 O(eC(ln n) ), für eine Konstante C. Mit Zahlkörpersieb-Verfahren wur- de von 2003 bis 2005 die Zahl RSA-200 (mit 200 Dezimalstellen) faktorisiert, sowie in den Jahren 2007 bis 2009 die Zahl RSA-768 (mit 768 Binärstellen bzw. 232 Dezimalstellen). Der Rechenaufwand für die Faktorisierung 200-stelliger Zahlen ist heute noch so immens, dass diese Art von Angri auf das RSA-System noch nicht als ernsthafte Bedrohung angesehen wird. 3.3 Das Rabin-Kryptosystem Es ist nicht bekannt, ob das Problem, RSA-verschlüsselte Botschaften unberechtigterweise zu entschlüsseln, äquivalent zum Faktorisierungsproblem ist. Wir betrachten hier noch das Rabin-Verschlüsselungsverfahren, bei dem dies der Fall ist. Auch beim Rabin-Verfahren handelt es sich um ein Public-Key-Kryptosystem. 3.3.1 Schlüsselerzeugung Bob (oder das Trustcenter) wählt zwei verschiedene zufällige groÿe Primzahlen q 4 mit p ≡ q ≡ 3 (mod 4), p und also Primzahlen, die um 1 kleiner als ein Vielfaches von sind. (Das Verfahren aus Abschnitt 2.2. funktioniert genauso schnell, wenn man nur Zahlen testet, deren Binärdarstellung mit 11 endet.) Er berechnet öentliche Schlüssel ist k = n; der geheime Schlüssel ist n = pq . Der k = (p, q). 3.3.2 Verschlüsselung n von Bob. Wir beschreiben nur die Verschlüs< n ist. Alice berechnet Alice ndet den öentlichen Schlüssel selung eines Blocks x, der eine Zahl y := x2 mod n und sendet y an Bob. 3.3.3 Entschlüsselung y . Er hat nun das Problem, Quadratwurzeln von y modulo n zu berechnen, 2 Zahlen b mit b mod n = y . Er hat aber den Vorteil, die Faktoren p und q Bob erhält das sind 8 zu kennen. Er berechnet: r := y (p+1)/4 mod p und s := y (q+1)/4 mod q. r2 mod p = ((x2 mod n)(p+1)/4 )2 mod p = xp+1 mod p = (xp ·x) mod p = x2 mod p (wir haben den kleinen Satz von Fermat in der Version xp ≡ x (mod p) für alle x 2 2 benutzt), gilt r − x ≡ (r − x)(r + x) ≡ 0 (mod p). Das heiÿt, dass entweder r ≡ x (mod p) oder p − r ≡ x (mod p) gilt. Weil Genauso sieht man, dass s ≡ x (mod q) oder q − s ≡ x (mod q) gilt. Mit der konstruktiven Variante des chinesischen Restsatzes (Bemerkung nach Fakt 1.26) kann Bob nun vier Zahlen z1 , . . . , z4 ∈ {0, . . . , n−1} berechnen, die die folgenden Kongruenzen erfüllen: z1 ≡ r z2 ≡ r z3 ≡ p − r z4 ≡ p − r (mod (mod (mod (mod p) p) p) p) und und und und z1 z2 z3 z4 ≡ s (mod q); ≡ q − s (mod q); ≡ s (mod q); ≡ q − s (mod q). x ∈ {z1 , . . . , z4 }. Bob kann nun eine dieser vier Möglichkeiten wählen. (Man kann Vorkehrungen treen, dass sinnvolle Blöcke x leicht zu erkennen sind. Beispielsweise könnte man den Block x mit einer bestimmten Bitfolge wie 10000 abschlieÿen. Es ist dann nicht anzunehmen, dass die Binärdarstellung Wegen der obigen Überlegung ist einer der anderen Möglichkeiten ebenso endet.) Welcher Rechenaufwand ist nötig? Für die Verschlüsselung muss nur eine Quadrierung 2 modulo n durchgeführt werden; sie kostet nur Zeit O((log n) ). Die Entschlüsselung erfordert eine Exponentiation modulo p und eine modulo q und mehrere AnwendunO((log n)3 ). gen des erweiterten Euklidischen Algorithmus insgesamt Zeit 3.3.4 Sicherheit Wir nehmen an, Eve hätte ein ezientes Verfahren zum öentlichen Schlüssel n B, mit dem sie alle Kryptotexte entschlüsseln kann. Wir zeigen, dass sie dann auch n faktorisieren kann. (Solange man annimmt, dass dies ein schwieriges Problem ist, kann auch die Annahme, dass Eve Verfahren B hat, als unwahrscheinlich gelten.) x aus {1, . . . , n − 1} zufällig. Wenn ggt(x, n) > 1, ist sie fertig, denn dieser gröÿte gemeinsame Teiler ist entweder p oder q . Andernfalls Eve geht so vor: Sie wählt eine Zahl 9 y = x2 mod n. Dann wendet sie ihr Entschlüsselungsverfahren an und 2 berechnet ein z = B(y) mit z ≡ y mod n. Dieses z hängt wohlgemerkt nicht von x, sondern nur von y ab. Es gilt x2 ≡ z 2 (mod n). Wie oben gesehen gibt es vier berechnet sie Möglichkeiten: x≡z x≡z x ≡ −z x ≡ −z (mod (mod (mod (mod p) p) p) p) und und und und x ≡ z (mod q); x ≡ −z (mod q); x ≡ z (mod q); x ≡ −z (mod q). Welche dieser Möglichkeiten die richtige ist, hängt vom Zufall ab, der die Auswahl x steuert. Jede der 4 Quadratwurzeln von y x gewählt worden zu sein. von als Im ersten Fall ist x = z, Im zweiten Fall ist hat dieselbe Wahrscheinlichkeit 1/4, Misserfolg. 0 < |x − z| < n und durch p teilbar, woraus ggt(x − z, n) = p folgt: Erfolg! Im dritten Fall ist 0 < |x − z| < n und durch q teilbar, woraus ggt(x − z, n) =q folgt: Erfolg! x + z = n, also x − z ≡ 2x (mod n). ggt(x − z, n) = 1, Misserfolg. Weil Also gelingt es Eve mit Wahrscheinlichkeit mindestens 1/2, Im vierten Fall ist ergibt sich 2x teilerfremd zu die Faktoren von n n ist, zu ermitteln. `-fache Wiederholung 1 lichkeit auf 1 − ` erhöhen. 2 Durch desselben Experiments lässt sich die Erfolgswahrschein- 10