Public Key Kryptographie mit dem RSA Schema Karsten Fischer, Sven Kauer Gliederung I. Historischer Hintergrund II. Public Key Kryptographie III. Beispielszenario IV. Einweg-Funktion V. RSA Verfahren VI. Algorithmus VII. Beispiel VIII.Signieren von Nachrichten IX. Schwächen des RSA X. Angriffe auf den RSA XI. Einsatzgebiete XII. Zusammenfassung XIII.Quellen 2 Historischer Hintergrund • Bis in die 70er symmetrische Verfahren → Problem der Schlüsselverteilung • 1976 Theorie über asymmetrische Verschlüsselung • 1977 RSA am MIT (Rivest, Shamir, Adleman) • 1980 durch RSA Data Security Inc. patentiert • 1991 implemetiert in PGP durch Phil Zimmermann • 2000 US-Patent läuft aus → RSA weltweit einsetzbar 3 Public Key Kryptographie Theorie von W. Diffie und M. Hellman, 1976 Asymmetrisches Verfahren: • zwei verschiedene Schlüssel: 1. Kodierung einer Nachricht 2. Dekodierung einer Nachricht • Kodierungsschlüssel soll keine Schlüsse auf den Dekodierungsschlüssel zulassen 4 Public Key Kryptographie Public Key-Prinzip: • (wichtige) asymmetrischen Variante • Kodierungsschlüssel öffentlich (public key) • Dekodierungsschlüssel geheim (private key) 5 Public Key Kryptographie Public Key-Prinzip: jeder Teilnehmer T hat folgende Schlüssel: • Public Key E = ET (Encryption) • Private Key D = DT (Decryption) Eigenschaften der Schlüssel: 1. für jede Nachricht m gilt: D(E(m)) = m und E(D(m)) = m 2. privater Schlüssel D (praktisch) nicht aus Schlüssel E zu erschließen. 6 Beispielszenario Vorbereitungen: • Kommunikationsgruppe • Jeder Teilnehmer T bekommt Schlüsselpaar (ET, DT) • Schlüsselpaare der Teilnehmer sind verschieden • Schlüssel E wird verteilt (Publikationsorgan/Zertifizierungsstelle) • Schlüssel D bleibt geheim 7 Beispielszenario Senden und Empfang: • A will B die Nachricht m Schicken • A sucht Schlüssel EB von B heraus • A verschlüsselt m mittels EB • A verschickt EB(m) an B • B entschlüsselt mit DB(m): DB(EB(m)) = m 8 Beispielszenario Sicherheit: • Kein anderer Teilnehmer kann EB(m) entschlüsseln, weil ihm DB von B fehlt Analogie: Briefkasten: • • jeder kann Post in den Briefkasten einwerfen nur Briefkastenbesitzer kann sie herausholen • Public Key E → Namensschild • Private Key D → Briefkastenschlüssel 9 Einweg-Funktionen Kodierungsschlüssel soll keine Schlüsse auf den Dekodierungsschlüssel zulassen ↓ Suche eine bijektive Funktion f(x) = y, die folgende Anforderungen erfüllt: 1. einfache Berechnung von y bei bekanntem x 2. schwere Berechnung von x bei bekanntem y ↓ „Einweg-Funktionen“ (Trapdoor-functions) 10 Einweg-Funktionen Def: Eine umkehrbar eindeutige ("bijektive") Funktion f : A → B mit x → y = f (x) heißt Einweg-Funktion, wenn der Funktionswert y relativ leicht aus dem Argument x berechnet werden kann, wenn es aber andererseits bei Kenntnis von y nur mit sehr großem Aufwand möglich ist, das Argument x zu ermitteln, das zum Funktionswert y gehört. 11 Einweg-Funktionen Analogie: Telefonbuch (einer großen Stadt) • Funktion f ermittelt Telefonnummer x aus Namen y → Nachschlagen (TB ist alphabetisch sortiert) • Umkehrfunktion f -1 nur sehr aufwendig („ermittele Name y zur Telefonnummer x“) → nach Nummern sortiertes TB? 12 Einweg-Funktionen Einige Einwegfunktionen: • Faktorisierung: y = x1 · x2 • Diskreter Logarithmus: y = bx mod n • Diskrete Wurzel: y = xa mod n (n nicht prim) 13 RSA-Verfahren • 1977 entdeckt von Rivest, Shamir und Adleman • Verfahren zum Erzeugen von Einweg-Funktionen • basiert insbesondere auf: • Euklidischer Algorithmus • (kleinen) Satz von Fermat • kein Algorithmus zur schnellen Primfaktorzerlegung bekannt 14 RSA-Verfahren Euklidischer Algorithmus: While (a>0) And (b>0) If a > b Then a = a Mod b Else b = b Mod a End If Wend ggT = a + b 15 RSA-Verfahren Erweiterter Euklidischer Algorithmus: Satz: Zu je zwei natürlichen Zahlen a und b (b ≠ 0) gibt es ganze Zahlen x und y mit der Eigenschaft GGT(a, b)= a · x + b · y. D.h. für teilerfremde a,b (GGT(a,b)=1): a · x = 1 - b · y bzw. a · x ≡ 1 (mod b) ↓ x ist das Inverse zu a mod b 16 RSA-Verfahren Beispiel: Erweiterter Euklidischer Algorithmus • Zwei teilerfremde Zahlen: a = 14, b = 51 (GGT(14, 51)=1) • mögliche Werte: x = 11, y = -3 14a· ·11 x -- b51· y· -3 = 1= 1 (14 (a··11) x) mod modb51 ≡1 ≡1 ↓ 11 ist das Inverse zu 14 mod 51 17 RSA-Verfahren Satz von Fermat: Satz: Ist p eine Primzahl und a eine zu p teilerfremde natürliche Zahl, so ist ap-1 ≡ 1 (mod p). • Findet man auch als: ap ≡ a (mod p) 18 RSA-Verfahren Satz von Fermat: 2 2mod7 3 3mod7 5 5mod7 0 1 1 1 1 1 1 1 2 2 3 3 5 5 2 4 4 9 2 25 4 3 8 1 27 6 125 6 4 2 2 81 4 625 2 5 4 4 243 5 3125 3 6 8 1 729 1 15625 1 7 2 2 2187 3 78125 5 19 RSA-Verfahren Beweis: Satz von Fermat • Sind a, b inkongruent modulo einer festen Zahl n , dann sind auch x · a und x · b inkongruent (mod n) f.a. x > 0 mit GGT(x,n )=1 ↓ 1 · 2 · … · (p-1) = (1 · a) · (2 · a) · … · ((p-1) · a) (mod p) ↓ W = W · ap-1 (mod p) ↓ 1 = ap-1 (mod p) qed. 20 RSA-Verfahren Anwendungen des Satzes • Primzahlerzeugung? • Wenn p Primzahl, dann gilt ap ≡ a (mod p) • Gilt auch: „Wenn ap ≡ a (mod p), dann ist p Primzahl“? • Nein → Fermatsche Pseudoprimzahlen 21 RSA-Verfahren Anwendungen des Satzes • Primzahltest? • Fermatscher Primzahltest: • • • Berechne b = an-1 (mod n) Prüfe b = 1, bei erfolg: b Primzahlkandidat Langsam und Aufwendig 22 Algorithmus Kodierung • • • • • Wähle Zufällig zwei Primzahlen p und q, welche „nahe“ beieinander liegen. Bestimmt deren Produkt N. Ermittle φ ( N ) = ( p − 1)(q − 1) . Bestimme ein e , s. d. e > 1 und teilerfremd zu φ (N ) . Berechne aus e • d ≡ 1 mod(φ ( N )) den geheimen Schlüssel d. • Somit ist der öffentliche Schlüssel: N, e und der geheime Schlüssel: d • Die Kodierung erfolgt mit: C ≡ K e mod(N ) 23 Beispiel Schlüsselerstellung • Primzahlen: p = 463 und q = 467 • N ermitteln: N = pq = 216221 • φ (N ) ermitteln: φ ( N ) = ( p − 1)(q − 1) = 215292 • e bestimmen: 1 < e < N , teilerfremd zu φ (N ) , e = 277 • d ermitteln: e • d ≡ 1 mod(φ ( N )) e • d = φ(N ) • k +1 0 = φ(N ) • k − e • d +1 0 = 215292k − 277d + 1 mögliche Lösung: k = 22 , d = 17099 • • öffentliche Schlüssel: N = 216221 und e = 277 geheimer Schlüssel: d = 17099 24 Beispiel Verschlüsselung • • • öffentliche Schlüssel: N = 216221 und e = 277 Klartext K = 174 e C ermitteln: C ≡ K mod( N ) C ≡ 174 277 mod(216221) • gerechnet mit modularer Exponentiation Quad := b, Halb := e, Erg := 1 while Halb > 0 if Halb mod 2 > 0 then Erg := (Erg * Quad) mod m Quad = (Quad * Quad) mod m Halb = Halb div 2 end while return Erg • Geheimtext C = 206690 25 Beispiel Dekodierung • Dekodierung mit K ≡ C d mod(N ) . • • • • öffentliche Schlüssel: N = 216221 geheimer Schlüssel: d = 17099 Geheimtext C = 206690 d K ermitteln: K ≡ C mod(N ) K ≡ 20669017099 mod(216221) • • gerechnet mit modularer Exponentiation Klartext K = 174 26 Signieren von Nachrichten • Idee: Dokumente mit einer digitalen „Unterschrift“ versehen. • 1. Vorteil: Integrität, d. h. es wird die Unversehrtheit der übermittelten Nachricht sichergestellt • 2. Vorteil: Authentizität, d. h. die Nachricht wurde vom richtigen Absender versandt 27 Signieren von Nachrichten • Absender besitzt eigenen Schlüsselsatz. • Absender kodiert seine Nachricht mit d, sprich: C ≡ K d mod(N ) • Absender versendet signierte und unsignierte Nachricht an Empfänger. • Empfänger dekodiert die Nachricht mit e, e sprich: K ≡ C mod(N ) • Empfänger vergleicht unsignierte und dekodierte Nachricht miteinander und prüft auf Gleichheit. 28 Schwächen des RSA • asymmetrisches Verfahren, welches für das Verund Entschlüsseln große K viel Zeit benötigt • Wahl der Primzahlen kann nicht einfach zufällig erfolgen • „Sicherheit“ beruht auf der Annahme das die Zerlegung von N in seine Primfaktoren in polynomieller Zeit nicht gelingen kann. • Beweis steht aus • Shor-Algorithmus löst das Problem auf Quantencomputern in P 29 Angriffe auf den RSA • Verfahren substituiert Klartext zu Geheimtext, weshalb Angriffe mit der Known-Plaintext-Angriffe und Wahrscheinlichkeitsanalyse möglich sind. • Bei schlecht gewählten Primzahlen, kann aus N auf wenige mögliche Paare geschlossen werden. • Zerlegung in Primfaktoren ist bedingt schon gelungen: RSA-567 mit 174 Ziffern 757 Mersenne-Zahl 2 − 1 mit 228 Ziffern • Timing Attacks 30 Timing Attacks auf den RSA • Idee: Geheimtexte mit dem öffentlichen Schlüssel so erstellen, das die Dechiffrierung lange benötigt, um fehl zu schlagen. • Vorgehen • Festlegen eines großen Startwertes • Schleife • Messen der Laufzeit der einzelnen Anfragen wird gemessen. • Aus auffälligen Messwerten wird auf Werte geschlossen, welche ausprobiert werden. • Ausgabe des geheimen Schlüssels 31 Einsatzgebiet • Internet- u. Telefonie-Infrastruktur: X.509-Zertifikate • Übertragungs-Protokolle: IPSec SSL TLS SSH WASTE • E-Mail-Verschlüsselung: PGP S/MIME • Authentifizierung französischer Telefonkarten 32 Zusammenfassung RSA • asymmetrisches Verschlüsselungsverfahren • benutzt öffentliche und geheime Schlüssel • Nachrichten können nur von einem Empfänger gelesen, aber vielen Absendern versandt werden • Algorithmus beruht auf der scheinbaren Unmöglichkeit der Zerlegung von großen Produkten in Primfaktoren • Verschlüsselung und Entschlüsselung erfolgt nach einfachen Formeln 33 Quellen • „Handbook of Applied Cryptography“ A. Menezes, P. C. van Oorschot, S. A. Vanstone • „Remote Timing Attacks are Practical“ D. Brumley, D. Boneh • „Pulic Key Cryptographie“ J. Ziegenbalg • http://de.wikipedia.org/wiki/RSA-Kryptosystem • http://www.heise.de/newsticker/meldung/42719 34