Kryptographie Vorlesung 9: Public-Key Verschlüsselung Babeş-Bolyai Universität, Department für Informatik, Cluj-Napoca [email protected] 1/71 S YMMETRISCHE K RYPTOSYSTEME Der gleiche Schlüssel Bei symmetrischen Kryptosystemen sind die Schlüssel zum Ver- und Entschlüsseln einer Nachricht identisch. 2/71 A SYMMETRISCHE K RYPTOSYSTEME Verschiedene Schlüssel Bei asymmetrischen Kryptosystemen unterscheiden sich die Schlüssel zum Ver- und Entschlüsseln einer Nachricht. Diese Verfahren werden auch als Public-Key-Verfahren bezeichnet. 3/71 S CHL ÜSSELVERWALTUNG SYMMETRISCHE S YSTEME 1 Ein Schlüssel kann von A gewählt und B physisch übergeben werden. 2 Eine dritte Partei kann den Schlüssel auswählen und ihn physisch an A und B ausliefern. 3 Wenn A und B kurz zuvor einen Schlüssel verwendet haben, kann eine Partei den neuen Schlüssel an die andere übertragen, der mit Hilfe des alten Schlüssel verschlüsselt wurde. 4 Wenn A und B beide über eine verschlüsselte Verbindung zu einer dritten Partei C verfügen, kann C über die verschlüsselten Verbindungen einen Schlüssel an A und B übertragen. 4/71 S CHL ÜSSELVERWALTUNG P UBLIC -K EY Öffentlicher Schlüssel: 1 Öffentliche Bekanntgabe 2 Öffentlich zugängliches Verzeichnis 3 Public-Key-Verwaltung 4 Public-Key-Zertifikate 5/71 G ESCHICHTLICHES Bis in die 1970er Jahre gab es nur symmetrische Kryptosysteme, bei denen Sender und Empfänger denselben Schlüssel besitzen müssen. Das erste Public-Key-Verschlüsselungsverfahren war das von Ralph Merkle und Martin Hellman entwickelte Merkle-Hellman-Kryptosystem. Das MH-Verfahren wurde 1983 von Adi Shamir gebrochen. Das heute noch verwendete RSA-Verfahren wurde 1977 von Ronald L. Rivest, Adi Shamir und Leonard Adleman am MIT entwickelt. 6/71 M ERKLE -H ELLMAN K RYPTOSYSTEM Basiert auf das Rucksackproblem → NP-hartes Problem → Einwegfunktion! Rucksackproblem: Aus einer Menge von Objekten, die jeweils ein Gewicht und einen Nutzwert haben, soll eine Teilmenge ausgewählt werden, deren Gesamtgewicht eine vorgegebene Gewichtsschranke nicht überschreitet. Unter dieser Bedingung soll der Nutzwert der ausgewählten Objekte maximiert werden. In der Kryptographie wird häufig eine andere Entscheidungsvariante betrachtet. Dabei werden nur die Gewichte betrachtet und es wird gefragt, ob es eine Teilmenge der Objekte gibt, die einen vorgegebenen Gewichtswert genau erreicht. 7/71 R UCKSACK -P ROBLEM Ein Rucksack-Vektor ist eine Menge von positiven, paarweise verschiedenen ganzen Zahlen: A = (a1 , a2 , . . . , an ). Unter dem allgemeinen Subset-Sum Problem wird folgendes verstanden: Gegeben ein Rucksack-Vektor A, sowie eine positive ganze Zahl s, die Summe genannt wird P Gesucht ist eine Teilmenge A0 von A mit a0 ∈A0 = s 8/71 S UPERANSTEIGENDE R UCKSACK -V EKTOREN Das allgemeine Subset-Sum Problem ist NP-vollständig. Es gibt spezielle Probleme (A, s) die schnell und einfach lösbar sind. Definition Sei A ein Rucksack-Vektor. A ist superansteigend, falls ai größer ist als die Summe der vorhergehenden aj : ai > a1 + . . . , ai−1 9/71 S UPERANSTEIGENDE V EKTOREN Der folgende Algorithmus löst ein Problem (A, s), wenn A superansteigend ist: for i := n downto 1 if s ≥ ai then xi := 1 and s := s − ai else xi := 0 if s != 0 then return (no solution) else return (x1 , x2 , . . . , xn ). Dieser Algorithmus durchläuft linear die einzelnen Elemente von A und hat daher eine Laufzeit von O(n). 10/71 M ERKLE -H ELLMAN K RYPTOVERFAHREN Superansteigende Rucksack-Probleme sind leicht zu lösen. Wenn A nicht superansteigend ist, kann das Lösen des Problems (A, s) äußerst schwierig sein. Ausgangspunkt ist ein superansteigender Rucksack A. Dieser ist Teil des privaten Schlüssels. Ein zweiter Rucksack, B, wird dann aus A konstruiert und als öffentlicher Schlüssel bereitgestellt. B besitzt die superansteigende Eigenschaft nicht. Eine Nachricht p wird chiffriert, indem die Summe c = pB = p1 b1 + p2 b2 + · · · + pn bn berechnet wird. Dabei ist pi ist das i-te Bit der Klartextnachricht p. 11/71 S CHL ÜSSELERZEUGUNG Festlegen des Parameters n. Dieser Parameter gibt an, wieviele Komponenten die Rucksack-Vektoren A und B haben. Gleichzeitig wird damit festgelegt, dass n-bit Nachrichten chiffriert werden. Erzeuge eine superansteigende Menge A = (a1 , . . . , an ) P Wähle eine Zahl M, so dass M > i=1...n ai . M ist der Modulus. Wähle einen Multiplikanden W mit 1 ≤ W < M und ggT(M, W) = 1. Diese Wahl von W garantiert ein inverses Element U mit UW = 1 mod M. optional: wähle eine Permutation π : {1, . . . , n} → {1, . . . , n} 12/71 S CHL ÜSSELERZEUGUNG Die einzelnen Komponenten bi des öffentlichen Schlüssels B werden durch folgende Vorschrift erzeugt: bi = aπ(i) W mod M, i = 1, . . . , n. Die superansteigende Eigenschaft von A wird durch modulare Multiplikation verschleiert. öffentlicher Schlüssel ist der Rucksack-Vektor B. Das Tupel (A, M, W) bildet den privaten Schlüssel. 13/71 V ERSCHL ÜSSELUNG Der Parameter n legt fest, dass pro Verschlüsselungsvorgang eine n-Bit Nachricht chiffriert wird. Daher muss vor Verschlüsselung eine evtl. größere Nachricht p in n-Bit Blöcke unterteilt werden. Sei nun p = (p1 , p2 , . . . , pn ) die zu verschlüsselnde binäre Nachricht. Der Chiffretext c wird durch die Vorschrift c = pB = p1 b1 + p2 b2 + · · · + pn bn erzeugt. Das i-te Element von B wird zu c hinzuaddiert, wenn das i-te Bit von p Eins ist. 14/71 E NTSCHL ÜSSELUNG Die Entschlüsselung eines Chiffretextes c erfolgt in zwei Schritten: 1 2 Berechne c0 = Uc mod M = W −1 c mod M Lösen des Problems (A, c0 ). Da A eine superansteigende Menge ist, lässt sich das Problem (A, c0 ) einfach lösen. Sei X = (x1 , . . . , xn ) der erhaltene Lösungsvektor für (A, c0 ). Bei Verwendung einer Permutation ergeben sich die Nachrichtenbits pi aus pi = xπ(i) . Ansonsten gilt pi = xi . 15/71 P UBLIC -K EY S YSTEME Formal besteht ein Public-Key-Verschlüsselungsverfahren aus drei Algorithmen: Der Schlüsselerzeugungsalgorithmus erzeugt zu einem gegebenen Sicherheitsparameter ein Schlüsselpaar, das aus einem öffentlichen und dem dazugehörigen geheimen Schlüssel besteht. Der Verschlüsselungsalgorithmus erzeugt aus einem Klartext unter Verwendung des öffentlichen Schlüssels einen Geheimtext. Es kann zu einem Klartext mehrere Geheimtexte geben. In diesem Fall ist der Algorithmus probabilistisch. Der Entschlüsselungsalgorithmus berechnet zu einem Geheimtext unter Verwendung des geheimen Schlüssels den passenden Klartext. 16/71 V OR - UND N ACHTEILE Symmetrische Kryptosysteme + hohe Geschwindigkeit (z.B. DES 1000 mal schneller als RSA) - Problem der Schlüsselvergabe 17/71 V OR - UND N ACHTEILE Asymmetrische Kryptosysteme + öffentlicher Schlüssel darf bekanntgegeben werden + privater Schlüssel bleibt geheim + digitale Unterschrift - hoher Rechenaufwand ⇒ niedriger Datendurchsatz 18/71 V OR - UND N ACHTEILE Lösung: über ein Public-Key-Verfahren wird sich auf ein symmetrisches Kryptosystem mit gemeinsamen Schlüssel geeinigt. Die Übertragung der Daten erfolgt mit symmetrischer Verschlüsselung. 19/71 V ORRAUSSETZUNGEN F ÜR ASYMMETRISCHE K RYPTOSYSTEME Sei KU der öffentliche Schlüssel und KR der private Schlüssel, so gilt für jede Nachricht m: KU(KR(M)) = KR(KU(M)) = m Der private Schlüssel KR sollte aus dem öffentlichen Schlüssel nicht zu erschließen sein 20/71 V ERTRAULICHKEIT 21/71 D IGITALE U NTERSCHRIFT 22/71 V ERTRAULICHKEIT UND A UTHENTIZIT ÄT 23/71 RSA: S CHL ÜSSELGENERIERUNG 24/71 RSA: V ER - UND E NTSCHL ÜSSELUNG 25/71 D IE E ULERSCHE φ F UNKTION Definition Die Eulersche φ-Funktion gibt für jede natürliche Zahl n an, wieviele natürliche Zahlen zwischen 1 und n zu ihr teilerfremd sind. Zwei Zahlen a und b sind zu einander teilerfremd, gdw. ggT(a, b) = 1. Sei n eine Primzahl, so sind alle Zahlen von 1 bis n − 1 zu n teilerfremd. Somit ergibt sich für p und q: φ(p) = p − 1 und φ(q) = q − 1. 26/71 D IE E ULERSCHE φ-F UNKTION Die Eulersche φ-Funktion ist multiplikativ. Für teilerfremde Zahlen, das heißt Zahlen m und n mit ggT(m, n) = 1, gilt damit: φ(m · n) = φ(m) · φ(n). 27/71 B EISPIEL p=7 q = 11 n = 77 φ(n) = (7 − 1)(11 − 1) = 60. 28/71 RSA: S CHL ÜSSELGENERIERUNG 29/71 D ER EUKLIDISCHE A LGORITHMUS 30/71 B EISPIEL Für den öffentlichen Schlüssel wird eine zu φ(n) teilerfremde Zahl gewählt. Wahl: e = 13, denn 1 < 13 < 60 und ggT(e, φ(n)) = ggT(13, 60) = 1 31/71 RSA: S CHL ÜSSELGENERIERUNG 32/71 D ER ERWEITERTE E UKLIDISCHE A LGORITHMUS d = e−1 mod φ(n) de = 1 mod φ(n) de + φ(n) = 1 ggT(e, φ(n)) = d · e + k · φ(n) = 1 Beispiel: e = 13, φ(n) = 60, ggT(13, 60) = d · 13 + k · 60 = 1 Mögliche Lösung: d = 37, k= -8 Denn 37 · 13 mod 60 = 1 33/71 V ER - UND E NTSCHL ÜSSELUNG Definition Eine Einwegfunktion ist eine leicht zu berechnende Funktion, die Berechnung ihrer Umkehrung soll unmöglich sein. RSA verwendet eine Einwegfunktion mit Hintertür (engl. trap door one-way function), um die Umkehrung der Funktion durch eine Zusatzinformation und damit die Entschlüsselung zu ermöglichen. Binäres Potenzieren Klassisches Potenzieren xn = x . . . x benötigt n − 1 Multiplikationen. Der Aufwand wächst exponentiell zu der Anzahl der Stellen von n. 34/71 P SEUDOCODE 35/71 B EMERKUNGEN 1 Der Algorithmus ist im wesentlichen, aber doch nicht ganz optimal. Mit der Theorie der Additionsketten aus der Zahlentheorie kann man zeigen, dass die durchschnittlich benötigte Zahl der Multiplikationen sich asymptotisch wie log n verhält, also nur halb so groß ist. 36/71 B EMERKUNGEN 2 Die unterschiedliche Zahl von benotigten Multiplikationen je nach Exponent ist Ansatzpunkt der Zeitbedarfs- und der Stromverbrauchsanalyse (timing attacks, power attacks nach Paul Kocher), wo ein Gerät, etwa eine Chipkarte, das mit einem geheimen Exponenten potenziert, analysiert wird, um ihm das Geheimnis zu entlocken. 37/71 S ATZ VON E ULER -F ERMAT ∀a ∈ Zn .aφ(n) = 1 mod n Es muss gewährleistet sein, dass das Verfahren auch umgekehrt funktioniert 38/71 V OR - UND E NTSCHL ÜSSELUNG 39/71 V OR - UND E NTSCHL ÜSSELUNG 40/71 D IE S ICHERHEIT DES RSA-V ERFAHRENS Die Sicherheit von RSA basiert auf dem Problem, eine große ganze Zahl in ihre Primfaktoren zu zerlegen (Faktorisierungsproblem) Man muss einige Richtlinien beachten, um mit RSA sicher arbeiten zu können. 41/71 FAKTORISIERUNGSPROBLEM 42/71 FAKTORISIERUNGSPROBLEM 43/71 FAKTORISIERUNGPROBLEM 512-Bit-RSA-Schlüssel sind nicht mehr sicher! Mindestwert heute: 2048 Empfehlung: 4096! 44/71 R ICHTLINIEN p und q müssen groß genug sein p und q unterscheiden sich um wenige Bits in der Länge. Beispiel: Für ein n mit 1024 Bits sollten p und q etwa 512 Bits groß sein. p − q darf nicht klein sein (Faktorisierungsangriff) √ Wenn p − q klein ist , dann p q ⇒ p n. 45/71 R ICHTLINIEN Starke Primzahlen auswählen p − 1 hat großen Primfaktor ← Pollard p − 1 Faktorisierung p + 1 hat großen Primfaktor ← p + 1 Faktorisierungalgorithmus r − 1 hat großen Primfaktor ← cycling attacks Random p, q hat gute Eigenschaft im allgemeinen 46/71 A NGRIFFE AUF RSA Faktorisierung Attack Brute Force Attack auf dem Privaten Schlüssel Small encryption exponent e Forward Search Attack Small decryption exponent d Homomorphieeigenschaft Common modulus Attack Cycling Attack Quantum Computer Attack 47/71 FAKTORISIERUNGSATTACK Primfaktorzerlegung √ einer natürlichen Zahl. Besonders schnell wenn p q → p n. n = a2 − b2 = (a + b) · (a − b) = p · q 48/71 B RUTE F ORCE ATTACK AUF d Alle möglichen d nacheinander ausprobieren 49/71 S MALL ENCRYPTION EXPONENT e A sendet einen Klartext M zu B, C, D mit dem Schlüssel (e, ni ) und e = 3: ci = m3 mod ni , i = 1, 2, 3 Eve bekommt c1 , c2 , c3 . Gauss’scher Algorithmus und Chinesischer Restsatz: ∃!x.0 ≤ x ≤ n1 n2 n3 x ≡ c1 mod n1 x ≡ c2 mod n2 ≡ c3 mod n3 √ n1 n2 n3 → x = m3 → 3 x Lösung: Für jedes M verschiedenes Salz verwenden. 50/71 C HINESISCHER R ESTSATZ Ein großes Problem von Public Key-Verfahren ist die rechenaufwendige Langzahlarithmetik. Während der öffentliche Schlüssel bei RSA (in der Praxis oft e = 3, 216 + 1, . . . ) verhältnismäßig kurz und Exponentiationen effizient berechenbar sind, hat der geheime Exponent d die volle Länge des Modulus n, also in der Praxis etwa 1024-4096 Bit. Um die notwendigen Exponentiationen auch in Umgebungen mit begrenzten Ressourcen möglichst effzient durchführen zu können, bedient man sich in einigen Implementierungen des Chinesischen Restsatzes 51/71 C HINESISCHER R ESTSATZ Seien p, q ∈ Z mit ggT(p, q) = 1. Dann gilt: Zpq ∼ Zp × Zq , d.h. die Ringe Zpq und Zp × Zq sind isomorph. Wir können also, statt in Zn zu rechnen, die Operanden vorher in die Ringe Zp und Zq abbilden und die Berechnungen zunächst in diesen Ringen durchführen, was wesentlich schneller geht, als in Zn . Anschließend müssen die Teilergebnisse wieder zusammengesetzt werden. 52/71 L ÖSUNG VON SIMULTANEN K ONGRUNZEN MIT DEM CRT Der chinesiche Restsatz beschreibt in der Form, wie er oben angegeben ist, die Existenz einer bijektiven Abbildung zwischen algebraischen Strukturen. Uns interessiert aber die konkrete Berechnung einer solchen Abbildung für ein System aus r simultanen Kongruenzen mit paarweise teilerfremden Modulen ni (mit dem Ziel, modulare Exponentiationen zu beschleunigen, wie sie beim RSA vorkommen): 53/71 L ÖSUNG VON SIMULTANEN K ONGRUNZEN MIT DEM CRT 54/71 L ÖSUNG VON SIMULTANEN K ONGRUNZEN MIT DEM CRT 55/71 B ERECHNUNG VON RSA-S IGNATUREN MIT DEM CRT 56/71 B ERECHNUNG VON RSA-S IGNATUREN MIT DEM CRT 57/71 F ORWARD S EARCH ATTACK Wenn Cyphertext C zu klein ist, kann Eve ein Wörterbuch für alle M erstellen. Lösung: Für kleines M Salz verwenden. 58/71 S MALL DECRYPTION EXPONENT d Wenn d ≤ n 4 kann man d leicht finden. Lösung: d sollte fast genauso groß wie n sein. 59/71 H OMOMORPHIEEIGENSCHAFT DER S IGNATUR Signatur: m Nachricht, d geheimer Exponent, Signatur sig = md mod n sig1 sig2 = md1 md2 mod n = (m1 m2 )d mod n sig3 = sig1 sig2 eine neue Signatur. Lösung: Benutze Hashwerte! 60/71 B EMERKUNGEN Praktisch vorkommende Nachrichten liegen nun in der Regel allerdings nicht in Zn . Daher wird zur Berechnung einer digitalen Signatur an Stelle von m oft das Bild einer Hashfunktion x = h(m) gewäahlt, welches wieder in Zn liegt. Zur Verifi kation muss dann überprüft werden, ob h(m) = se mod n gilt. Beim Einsatz von Hashfunktionen werden weitere kryptographische Eingeschaften gefordert, wie die Einweg-Eigenschaft (zu einem gegebenen Bild kann das Urbild nicht berechnet werden) und die Kollisionsresistenz (es ist schwierig, zwei Urbilder zu nden, die auf das gleiche Bild abbilden). Ein Angreifer mit begrenzter Rechenleistung und begrenztem Speicherplatz kann diese Eigenschaften also nicht brechen. 61/71 C OMMON MODULUS ATTACK Jede Person sollte ein unterschiedliches n benutzen, da die Verwendung des gleichen n’s Risken in sich birgt. Mit Faktorisierung von n auf p und q, kann A alle verschlüsselte Nachrichten von B, C, . . . knacken. 62/71 C YCLING ATTACK 63/71 Q UANTUM C OMPUTER ATTACK Ein Quantencomputer könnte das Faktorisierungsproblem lösen und sehr schnell die Werte für p und q knacken. Peter Shor hat einen Algorithmus erfunden, der auf einem Quantencomputer benutzt werden kann, um RSA zu knacken. Dieser Algorithmus wurde auf einem Quanten- computer ausgeführt und hat RSA für n = 15 mit p = 3 und q = 5 geknackt. 64/71 D IGITALE S IGNATUR RSA Eigenschaften: Eindeutigkeit (nur vom Urheber erstellbar) Von jedem überprüfbar Stellt die Authentizität des Unterschreibers sicher Untrennbar mit dem Dokument verbunden bzw. eine Trennung von Unterschrift und das Dokument ist sofort erkennbar 65/71 D IGITALE S IGNATUR RSA Absender generiert einen Hash-Wert (z.B. SHA-1) von der Datei. Absender verschlüsselt mit dem Geheimschlüssel (d, n) nur den Hashwert, und damit hat man die Digitale Signatur: S = Md mod n Empfänger entschlüsselt die Signatur mit dem Public key (n, e): M = Se mod n Der Empfänger generiert mit der gleichen Hash-Funktion einen Hashwert von dem Dokument. Der Empfänger vergleicht die zwei Hashwerte und prüft sie auf Gleichheit. 66/71 RSA A NWENDUNGEN Internet- und Telefonie-Infrastruktur: X.509-Zertifikate Übertragungs-Protokolle: IPSec, SSL, TLS, SSH, WASTE E-Mail-Verschlüsselung: PGP, S/MIME Authentifizierung französischer Telefonkarten 67/71 Z USAMMENFASSUNG 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 erfolgen nach einfachen Formeln Am meisten benutztes Kryptographie-System Digitale Signaturen 68/71 K RYPTOGRAPHISCHE R ESSOURCEN Kryptographische Software-Bibliotheken: libgcrypt (GNU Cryptographic Library) OpenSSL Ganzzahl-Arithmetik: gmp (GNU Multiprecision Library) Pari-GP LiDIA 69/71 Achtung: Gewöhnliche Arithmetik-Bibliotheken sollten für kryptographische Software-Entwicklung nur mit äußerster Achtsamkeit verwendet werden. Z. B. sollte kryptographische Software stets dafür sorgen, dass geheime Schlssel niemals, auch nicht in temporären Dateien oder Auslagerungsdateien, auf einer Festplatte oder anderen permanenten Speicherbereichen zwischengespeichert werden. Es gilt als schwerer Kunstfehler, kryptographische Software für den ernsthaften Gebrauch selbst zu entwickeln! Jeder macht dabei fatale Fehler. 70/71 K RYPTOGRAPHISCHE R ESSOURCEN Freie Computeralgebra-Systeme: Pari-GP SIMATH, NZMATH CoCoA ARIBAS SAGE (enthlt PARI, GAP [ein Gruppentheorie-Programmsystem] und Singular [ein Programmsystem für Algebraische Geometrie und Polynomalgebra] sowie Schnittstellen zu Maple, Mathematica und anderen kommerziellen Systemen). Für Pari (und MAGMA) gibt es auch einen Online-Zugang. Kommerzielle Computeralgebra-Systeme: Maple, Mathematica 71/71