Vorlesung Informationssicherheit Thema 4: Algorithmen der Kryptographie Robert Baumgartl 16. Juni 2016 1 / 125 Überblick I Data Encryption Standard (DES) I Triple DES I Advanced Encryption Standard (AES) I RSA I DSA I Zero-Knowledge 2 / 125 Symmetrische Verschlüsselung mittels Data Encryption Standard (DES) I Ergebnis eines durch das National Bureau of Standards ausgeschriebenen Wettbewerbs I von IBM im Jahre 1974 erstmalig beschrieben I Prüfung/Mitentwicklung durch NSA I Standard ANSI X3.92, 1981 I Prüfung alle 5 Jahre, ob Standard noch den Erfordernissen eines Kryptosystems entspricht (→ 1987, 1993 re-zertifiziert) I Schlüssellänge: 56 Bit I blockbasiertes Verfahren: 64 Bit Klartext ⇒ 64 Bit Chiffrat I erstes erfolgreiches Verschlüsselungsverfahren für Rechnereinsatz; Grundlage für alle modernen Verfahren (Literatur: Reinhard Wobst: Abenteuer Kryptologie. Addison-Wesley, S. 126ff.) 3 / 125 DES Überblick 63 0 Klartext Eingangspermutation 31 0 31 0 L0 R0 K1 f R1 = L0 ⊕ f (R0 , K1 ) L1 = R0 Komponenten: I Eingangspermutation (IP) I Zerlegung in rechte (R) und linke (L) Hälfte I 16 identische Runden, die Daten mit Schlüssel kombinieren (Funktion f ) I Zusammenfügen von R und L I Schlusspermutation (IP −1 ) K2 f R2 = L1 ⊕ f (R1 , K2 ) L2 = R1 usw. R15 = L14 ⊕ f (R14 , K15 ) L15 = R14 K16 f R16 = L15 ⊕ f (R15 , K16 ) L16 = R15 Ausgangspermutation 63 0 Chiffrat 4 / 125 DES Eingangspermutation 58 62 57 61 50 54 49 53 42 46 41 45 34 38 33 37 26 30 25 29 18 22 17 21 10 14 9 13 2 6 1 5 60 64 59 63 52 56 51 55 44 48 43 47 36 40 35 39 28 32 27 31 20 24 19 23 12 16 11 15 4 8 3 7 Tabelle: Eingangspermutation Lies: „Bit 58 des Klartextes wird auf Bit 1 der Permutation abgebildet, Bit 50 des Klartextes auf Bit 2 der Permutation usw.“ 5 / 125 DES Anmerkungen zum Algorithmus I Schlüssel ist eigentlich auch 64bittig, 8 Bit dienen jedoch der Paritätsprüfung (jedes Byte muss ungerade Parität haben) I für jede der 16 Runden wird aus dem 56-Bit-Schlüssel K ein Subschlüssel Ki mit 48 Bit Länge generiert I Struktur des DES-Algorithmus ist ziemlich regulär; eine so genannte Feistel-Chiffre (→ nächste Folie) I Entschlüsselung in umgekehrter Reihenfolge der 16 Runden I sehr leicht in Hardware zu synthetisieren (keine Additionen/Multiplikationen, nur Verschiebungen, Permutationen und XOR) 6 / 125 DES Feistel-Chiffre I Funktionsblock vieler symmetrischer Verfahren Eingangsdatenblock Runde i Verschlüsselung: Li+1 = Ri Li fi (Ri , Ki+1 ) XOR Ri+1 = Li ⊕ f (Ri , Ki+1 ) Ri Rundenschlüssel Ki+1 f Entschlüsselung daraus ableitbar: Ri = Li+1 Li = Li ⊕ f (Ri , Ki+1 ) ⊕f (Ri , Ki+1 ) | {z } Li+1 Ri+1 Ausgangsdatenblock Runde i = I I Ri+1 ⊕ f (Ri , Ki+1 ) keine Umkehrfunktion f −1 (R, K ) nötig Ver- und Entschlüsselung mit gleicher Funktion f (R, K ) 7 / 125 Struktur einer Runde (f (Ri−1 , Ki )) Ri−1 Ki 32 Bit 48 Bit E Expansion 48 Bit 48 Bit 8·6 Bit 6 Bit S-Boxen S1 S2 S3 S4 S5 S6 S7 S8 Substitution 4 Bit 8·4 Bit 32 Bit P Permutation 32 Bit 8 / 125 S-Boxen (Substitution Boxen) I zentraler Bestandteil jedes symmetrischen Krypografie-Verfahrens I nichtlineare Substitution; m Eingangs- werden auf n Ausgangsbits abgebildet I S-Boxen in DES sind „mythenumrankt“, da Prinzipien ihres Entwurfs nicht offengelegt wurden b0 0 0 1 1 b6 0 1 0 1 0000 0010 1110 0100 1011 0001 1100 1011 0010 1000 0010 0100 0010 0001 1100 0011 0001 1100 1011 0111 Mittlere 4 Bits (b1 . . . b5 ) des Eingabewertes 0100 0101 0110 0111 1000 1001 1010 1011 0111 1010 1011 0110 1000 0101 0011 1111 0100 0111 1101 0001 0101 0000 1111 1100 1100 1101 0111 1000 1111 1001 1100 0101 0001 1110 0010 1101 0110 1111 0000 1001 1100 1101 0011 0110 1100 1101 0000 1001 0011 0100 1110 1110 1000 0000 0101 1111 1001 0110 1110 0011 Tabelle: Beispiel: S-Box 5 für DES (es gibt 8 verschiedene) 9 / 125 Zur Sicherheit von DES I bislang kein kryptanalytischer Angriff publiziert I (unbewiesener) Verdacht, NSA könnte eine Hintertür eingebaut haben Hauptmanko: Schlüssellänge von 56 Bit ist zu kurz I → Wettbewerb DES Challenge („Wer schafft es als erster, zu einem vorgegebenen DES-Schlüssel die zugehörige Passphrase per Brute-Force-Angriff zu ermitteln?“) I DES Challenge, 1997: t = 96d benötigt I DES Challenge II-1, 1998: t = 48d (distributed.net) I DES Challenge II-2, 1998: t = 56h mittels Deep Crack, einem parallelen Spezialsystem, 250.000$ I DES Challenge III, 1999: t = 22h15min 10 / 125 Betriebsmodi blockbasierter symmetrischer Verfahren Was tun, wenn Länge des Klartextes 6= Blocklänge des Verfahrens? → Betriebsmodi („Modes of Operation“) blockbasierter symmetrischer Verschlüsselungsverfahren I Electronic Codebook Mode (ECB) I Cipher Block Chaining (CBC) I Cipher Feedback Mode (CFB) I Output Feedback Mode (OFB) I Counter Mode (CTR) I ... 11 / 125 Electronic Codebook Modus (ECB) Prinzip I I Klartext wird in Blöcke der Länge b (Blocklänge des Verschlüsselungsverfahrens; z. B. 128 Bit bei AES) unterteilt, letzter Block wird auf Länge b aufgefüllt (Padding) Verschlüsselungsfunktion E mit Schlüssel K wird blockweise auf die Klartextblöcke Pi angewandt; es entstehen (gleich große) Chiffratblöcke Ci : Ci = EK (Pi ) I Entschlüsselungsfunktion D mit Schlüssel K wird blockweise auf die Chiffratblöcke Ci angewandt; es entstehen (gleich große) Klartextblöcke Pi : Pi = DK (Ci ) I Blöcke sind voneinander unabhängig 12 / 125 Electronic Codebook Modus (ECB) Prinzip, grafisch Pi−1 K Pi K Pi+1 K Ci−1 K EK EK EK Ci−1 Ci Ci+1 Verschlüsselung per ECB Ci K DK Pi−1 Ci+1 K DK Pi DK Pi+1 Entschlüsselung per ECB 13 / 125 Angriff auf ECB mittels Block Replay ECB-verschlüsselter Datenaustausch mit Bank Blocknummern 1 2 Zeitstempel 3 Absenderbank 4 Empfängerbank 5 6 7 8 Kontoinhaber 9 10 11 12 Konto-Nr. 13 Betrag Abbildung: Beispiel für Format eines Datensatzes I I I Mallory zeichnet Datenverkehr zwischen Bank A und Bank B auf Mallory überweist zweimal einen festen Betrag von A nach B (bis auf Zeitstempel identische Nachrichten) bei allen abgehörten Nachrichten tauscht er die Felder 5-12 mit den Daten aus seinen Überweisungen aus Grundproblem: ECB erlaubt das Austauschen einzelner Blöcke → Blöcke dürfen nicht unabhängig voneinander sein → CBC 14 / 125 Electronic Codebook Modus (ECB) Eigenschaften I 1:1-Abbildung Klartextblock → Chiffratblock I fehlertolerant: Bitfehler im Chiffrat verfälscht nur einen Klartextblock, keine Fehlerfortpflanzung I Blockoperationen parallelisierbar Nachteile: I gleicher Klartext erzeugt stets identisches Chiffrat I unsicher: angreifbar durch Substitutionsattacken (Austauschen ganzer Blöcke, ohne diese zu entschlüsseln) I des weiteren angreifbar mit statistischen Methoden bei Wissen über Klartext 15 / 125 Electronic Codebook Modus (ECB) Verschlüsselung einer S/W-Bitmap (AES-128) Original ECB-verschlüsselt CBC-verschlüsselt 16 / 125 Cipher Block Chaining (CBC) Prinzip I I Ergebnis früherer Verschlüsselungen fließt mit in Verschlüsselung des aktuellen Blockes ein (Rückkopplung) Klartextblock wird vor Verschlüsselung mit vorherigem Chiffratblock XOR-verknüpft: Ci = EK (Pi ⊕ Ci−1 ) I Entschlüsselung umgekehrt; der Block wird nach Entschlüsselung mit dem vorangehenden Chiffratblock XOR-verknüpft: Pi = Ci−1 ⊕ DK (Ci ) I 1 erster Block benötigt einen zufälligen Initialisierungsvektor (IV), der nicht geheimgehalten werden muss, aber eine Nonce1 sein sollte „Number, used only once“ 17 / 125 Cipher Block Chaining (CBC) Prinzip Pi−1 Pi Ci−1 Pi+1 K K K K DK K EK EK EK Ci−1 Ci Ci+1 Verschlüsselung per CBC Ci Pi−1 Ci+1 K DK Pi DK Pi+1 Entschlüsselung per CBC 18 / 125 Cipher Block Chaining (CBC) Fehlertoleranz I Bitfehler im Chiffrat: I I I I I enthaltender Block unbrauchbar nachfolgender Block hat einen 1-Bit-Fehler an der entsprechenden Position übernächster Block nicht betroffen Selbstsynchronisation auf Blockebene Entfernen oder Einfügen eines Bits in das Chiffrat: I I I alle nachfolgenden Blöcke unbrauchbar Synchronisationsfehler nicht toleriert externe Rahmenstruktur mit Prüfsummen/CRC nötig 19 / 125 Cipher Feedback Modus (CFM) Nachteil des CBC: ganzer Klartextblock benötigt, bevor Verschlüsselung startet → für byteweise Verarbeitung ungeeignet (z. B. ein sicheres Terminal) → Nutzung von blockbasierten Verfahren zur Implementierung einer Stromchiffre Idee: Der im vorangegangenen Schritt verschlüsselte Block wird nochmals verschlüsselt und in beliebiger Granularität per XOR mit dem Klartextblock verknüpft. Ci = Pi ⊕ EK (Ci−1 ) Pi = Ci ⊕ EK (Ci−1 ) 20 / 125 Cipher Feedback Modus (CFM) Ablauf Ablauf: 1. Initialisierung eines Schieberegisters mit Initialisierungsvektor 2. blockweise Verschlüsselung des Schieberegisters 3. XOR-Operation von n Bit des Chiffrats (ki ) mit n Bit des Plaintexts (pi ) 4. Ausgabe/Übertragung der resultierenden n Bit (ci ) 5. gleichzeitige Rückkopplung von ci in das Schieberegister und Verschiebung desselben um n Bit 6. GOTO 2 21 / 125 Cipher Feedback Modus (CFM) Verschlüsselung (Prinzip, graf.) Schieberegister K Verschlüsselung Byte ganz links pi ki ci Übertragung Verschlüsselung im Cipher Feedback Mode (byteweise, d. h., n = 8) 22 / 125 Cipher Feedback Modus (CFM) I bei Entschlüsselung sind pi und ci vertauscht I Initialisierungsvektor benötigt I Granularität der Ausgabe (fast) beliebig: Byte, 16 Bit, 1 Bit usw. I Fehler im Klartext bleibt unentdeckt (wird wieder in fehlerhaften Klartext entschlüsselt) I Bitfehler im Chiffrat macht n Ausgabeblöcke unbrauchbar (n = Größe des Schieberegisters) I fehlende Bits und eingeschobene Fehlerbits ebenso → CFM stabilisiert sich auf Blockebene 23 / 125 Output Feedback Modus (OFM) Verschlüsselung (Prinzip) Schieberegister K Verschlüsselung Byte ganz links pi ki ci Übertragung Verschlüsselung im Output Feedback Mode (byteweise, d. h., n = 8) 24 / 125 Output Feedback Modus (OFM) Anmerkungen I Rückkopplung des Resultatbytes ki vor XOR-Verknüpfung mit Plaintextbyte pi : Ci = Pi ⊕ Si Si = EK (Si−1 ) PI = Ci ⊕ Si Si = EK (Si−1 ) I sonst identisch zu CFM (d. h., IV benötigt; Geheimhaltung nicht erforderlich) I „Hauptarbeit“ (Erzeugung des Schlüsselstroms Si ) kann offline erfolgen I 1-Bit-Fehler im Chiffrat führt zu 1-Bit-Fehler im Klartext I Synchronisationsfehler katastrophal (vollständiger Informationsverlust) 25 / 125 Counter Mode (CTR) Prinzip I (konstanter) Initialisierungsvektor IV wird zusammen mit einem Counter CTRi mittels des Schlüssels K verschlüsselt, Resultat wird mit Klartextblock Pi per XOR verknüpft, ergibt Chiffratblock Ci : Ci = EK (IV ||CTRi ) ⊕ Pi I Klartextblock Pi ergibt sich aus XOR-Verknüpfung des Chiffratblockes Ci und dem mit K verschlüsselten Initialisierungsvektor verkettet mit dem zugehörigen Counter CTRi Pi = CI ⊕ EK (IV ||CTRi ) I Länge von IV und CTR zusammen entspricht der Blocklänge des Verfahrens 26 / 125 Counter Mode (CTR) Eigenschaften I benötigt IV und Counter, beide sind nicht geheim, sollten aber zusammen Nonce ergeben I nutzt Blockchiffre, betrieben als Stromchiffre I Bitfehler auf 1 Block beschränkt I Blöcke sind unabhängig; gleiche Klartextblöcke ergeben aber unterschiedliche Chiffratblöcke, da sie von CTR abhängen I parallelisierbar; wahlfreier Zugriff auf jeden Block I Ver- und Entschlüsselung mit identischer Funktion ( Nutzung einer Einwegfunktion möglich) 27 / 125 Counter Mode (CTR) Prinzip IV CTRi−1 K IV CTRi K EK Pi−1 CTRi−1 K EK Pi Ci−1 IV Verschlüsselung per CTR CTRi K DK Ci−1 Ci IV DK Ci Pi−1 Pi Entschlüsselung per CTR 28 / 125 Weitere Betriebsmodi I Galois Counter Mode (GCM) – ermittelt zusätzlich einen MAC zur Authentisierung I Counter with CBC-MAC (CCM) I Offset Codebook Mode (OCB) I Integrity Aware Parallelizable Mode (IAPM) I ... 29 / 125 Kombination von Blockchiffren Idee: I Weiternutzung eines (bewährten) Verfahrens I Verlängerung des Schlüssels → Erhöhung der Sicherheit des Verfahrens Mehrfachverschlüsselung = Hintereinanderausführung einund desselben Algorithmus mit unterschiedlichen Schlüsseln. I bei Nutzung gleicher Schlüssel bleibt Komplexität eines Brute-Force-Angriffes konstant ( Ziel verfehlt) 30 / 125 Wie oft soll ich nun DES o. ä. ausführen? Doppelte Verschlüsselung: C = EK2 (EK1 (P)) Hat K eine Breite von n Bits, so müssen 2n Schlüssel probiert werden. Also müssen bei doppelter Verschlüsselung 22n Schlüssel probiert werden, oder? Antwort: Nein! Es gibt den sog. Meet-in-the-Middle-Angriff2 , eine spezielle Form eines Known-Plaintext-Angriffs 2 Bitte nicht mit Man-in-the-Middle-Angriff verwechseln! 31 / 125 Meet-in-the-Middle-Angriff I 2 Chiffrate C1 , C2 und 2 (zugehörige) Plaintexte P1 , P2 müssen bekannt sein: C1 = EK2 (EK1 (P1 )) C2 = EK2 (EK1 (P2 )) Angriffsidee („von beiden Seiten“): 1. P1 mit allen möglichen Schlüsseln verschlüsseln und Chiffrate abspeichern 2. C1 mit allen möglichen Schlüsseln entschlüsseln und Ergebnis mit allen Chiffraten aus 1. vergleichen 3. bei Gleichheit: zugehörige Schlüssel nutzen, um P2 (doppelt) zu verschlüsseln; Ergebnis = C2 Schlüssel aus 1. ist K1 , Schlüssel aus 2. ist K2 4. ansonsten weiterprobieren 32 / 125 Meet-in-the-Middle-Angriff Schlußfolgerung I benötigt viel Speicherplatz (für 2n Blöcke) I Es müssen bei n Bit Schlüssellänge 2 · 2n Schlüssel durchprobiert werden Schlußfolgerung: Ist ein Meet-in-the-Middle-Angriff möglich, dann führt die doppelte Verschlüsselung nicht zur Erschwerung des Brute-Force-Angriffes von 2n auf 22n Versuche, sondern nur zu 2n+1 . Fazit: doppelte Verschlüsselung ist (so gut wie) nutzlos! Abhilfe: dreifach verschlüsseln! 33 / 125 Triple DES (3DES) Struktur Verschlüsselung DES DES DES E(K1 ) D(K2 ) E(K3 ) Klartext Chiffrat Entschlüsselung DES DES DES D(K1 ) E(K2 ) D(K3 ) 34 / 125 Triple DES Anmerkungen I drei verschiedene Schlüssel nötig I Verschlüsselung: C = EK3 (DK2 (EK1 (P))) I sog. Encryption-Decryption-Encryption (EDE-Modus) I sicherer als aufeinanderfolgende Verschlüsselung I Entschlüsselung (analog): P = DK1 (EK2 (DK3 (C))) I als ähnlich sicher angesehen wie modernere Verfahren (IDEA, AES) I dreifacher Verarbeitungsaufwand (!) 35 / 125 Advanced Encryption Standard (AES) AES I I I I I I I I I I Rijmen&Daemen, 1998 ursprüngliche Bezeichung: „Rijndael“ in einem mehrere Runden umfassenden Wettbewerb aus mehreren „Bewerbungen“ (u. a. Twofish, RC6, Rijndael) als Nachfolger für DES ausgewählt blockbasiert (128 Bit), Schlüsselgrößen 128, 192 und 256 Bit. Struktur ist keine Feistel-Chiffre, sondern ein Substitution-Permutation Network nicht patentiert, offener Algorithmus zur Zeit einer der meistverwendetsten symmetrischen Algorithmen sehr hohes Maß an Sicherheit Referenzimplementierung nur 500 Zeilen C-Code effizient sowohl in Soft- und Hardwareimplementierungen 36 / 125 AES Anwendungen: I WPA2 I SSH I IPsec I Dateiverschlüsselungen: 7-Zip, RAR I ... 37 / 125 Weitere Blockchiffrierungsverfahren I Lucifer (1971) I FEAL (1990) I LOKI (1990) I IDEA (1991) I Blowfish (1994) I Tiny Encryption Algorithm (TEA; 1994) → Praktikum I RC6 (1997) I Serpent (1998) I Twofish (1998) I Camellia (2000) I Threefish (2008) I ... 38 / 125 Exkurs: Rechnen mit Restklassen aka „Modulo-Arithmetik“ Aufgabe: Rudi ist um 7.00 Uhr aufgestanden und (nach eigenen Angaben) seit 34 Stunden auf den Beinen. Wie spät ist es? Lösung: (7 + 34) mod 24 = 41 mod 24 = 17 mod 24 Es ist offensichtlich 17.00 Uhr. Man sagt: „41 und 17 sind äquivalent modulo 24“ und notiert (7 + 34) ≡ 17 mod 24 39 / 125 Rechnen mit Restklassen Allgemein gilt a ≡ b mod n iff ∃k : a = b + kn k ∈Z („a ist kongruent zu b modulo n genau dann, wenn es ein ganzzahliges k gibt mit . . . “) I I wenn a > 0 und 0 ≤ b < n, dann ist b der Rest der Division a/n a mod n wird häufig modulare Reduktion (von a) genannt Rechenregeln: (a + b) mod n = ((a mod n) + (b mod n)) mod n (a − b) mod n = ((a mod n) − (b mod n)) mod n (a · b) mod n = ((a mod n) · (b mod n)) mod n (a(b + c)) mod n = ((ab mod n) + (ac mod n)) mod n 40 / 125 Rechnen mit Restklassen I gern in Kryptografie eingesetzt, da bestimmte Berechnungen modulo n schwierig3 sind I Zwischenergebnisse haben beschränkten Wertebereich 3 im Sinne von ‘sehr lange dauern’ 41 / 125 Modulare Exponentiation Eine wichtige Operation, z. B. für RSA, ist ax mod n Berechnung am Beispiel y = a8 mod n 1. naiver Ansatz y = (a · a · a · a · a · a · a · a) mod n → Zwischenergebnis sehr groß, schlecht zu speichern 2. Kombination von Potenzierung und modularer Reduktion y = ((a2 mod n)2 mod n)2 mod n Schön und gut, was aber tun, wenn x keine Zweierpotenz? 42 / 125 Modulare Exponentiation Binäre Exponentiation („Square-and-multiply“) von x e Idee: Binärdarstellung des Exponenten e drückt diesen als Summe von Zweierpotenzen aus! Algorithmus zur Berechnung von y = x e : I I e als Binärzahl darstellen Binärdarstellung von e bitweise von links beginnend lesen I I I I wenn Bit = 1, dann ‘QM’ notieren wenn Bit = 0, dann ‘Q’ notieren Initialwert: y = 1 wiederum von links beginnend generierte Zeichenkette analysieren I I wenn Zeichen = ‘Q’, dann y quadrieren wenn Zeichen = ‘M’, dann y mit x multiplizieren 43 / 125 Modulare Exponentiation Binäre Exponentiation - Beispiel Berechnung von x 42 Es gilt: 4210 = 0010.10102 d. h. , 42 = 25 + 23 + 21 42 = 1 0 1 0 1 0 QM Q QM Q QM Q Initialwert 12 x ( x )2 ( x 2 )2 x ( x5 )2 10 ( x )2 x 21 ( x )2 d. h., x 42 = ((((x 2 )2 · x)2 )2 · x)2 44 / 125 Modulare Exponentiation Kombination mit Modulo-Operation: Berechnung von y = x e mod p I da gilt: (a · b) mod n = ((a mod n) · (b mod n)) mod n, I muss Modulo-Operation nach jeder Multiplikation und nach jeder Quadrierung ausgeführt werden Beispiel: Berechnung von x 25 mod p Es gilt: 2510 = 110012 d. h. , QM QM Q Q QM x 25 mod p = (((((((x 2 mod p)·x) mod p)2 mod p)2 mod p)2 mod p)·x) mod p I benötigt 6 Multiplikationen und 6 Modulo-Operationen 45 / 125 Diskreter Logarithmus Def. Eine primitive Wurzel modulo p ist eine Zahl a, deren Potenzen modulo p alle Werte zwischen 1 und p − 1 generieren kann. Beispiel: 51 52 53 54 55 56 = ≡5·5 ≡4·5 ≡6·5 ≡2·5 ≡3·5 = 5 ( mod 7) ≡ 4 ( mod 7) ≡ 6 ( mod 7) ≡ 2 ( mod 7) ≡ 3 ( mod 7) ≡ 1 ( mod 7) Das bedeutet, in diesem Fall können wir für jedes y < p ermitteln, welches x die Gleichung f (x) = y = ax mod p erfüllt. Wir nennen x den diskreten Logarithmus modulo p von y. 46 / 125 Diskreter Logarithmus x 100 80 60 40 20 0 0 20 40 60 80 100 y Abbildung: Graph des diskreten Logarithmus für y = 17x mod 107 47 / 125 Diskreter Logarithmus Schlussfolgerung / Zusammenfassung: I modulare Exponentiation f (x) = ax mod p ist leicht zu berechnen (geringer Aufwand) I Umkehrung der modularen Exponentiation („diskreter Logarithmus“) f −1 (x) = ax mod p ist sehr schwierig Einwegfunktion 48 / 125 Diffie-Hellman-Protokoll Anwendung des diskreten Logarithmus: Schlüsselgenerierung und -austausch mittels Diffie-Hellman-Protokoll: 1. Bob und Alice einigen sich auf eine große Primzahl p und eine primitive Wurzel g modulo p. 2. Alice wählt eine (große) zufällige Zahl i (Alice’ geheimer Schlüssel) und berechnet A = g i mod p (Alice’ öffentlicher Schlüssel). 3. Bob wählt eine (große) zufällige Zahl j (Bobs geheimer Schlüssel) und berechnet B = g j mod p (Bobs öffentlicher Schlüssel). 4. Alice sendet A an Bob, Bob sendet B an Alice. 5. Alice berechnet K = B i mod p = (g j mod p)i mod p = g ij mod p, den geheimen Sitzungsschlüssel. 6. Bob berechnet K = Aj mod p = (g i mod p)j mod p = g ij mod p. 49 / 125 Anmerkungen zum Diffie-Hellman-Protokoll I g muss primitiv modulo p sein, d.h. es muss stets ein l geben, so dass g l ≡ b mod p ∀ 1 ≤ b < p. I Eve kann A und B abfangen, es nützt ihr aber nichts, sie kann g ij mod p nicht aus g i mod p und g j mod p berechnen, denn dazu müßte sie i und j ermitteln (den diskreten Logarithmus modulo p von A und B zur Basis g) I Mallory ist (leider) mächtiger; er kann einen Man-in-the-Middle-Attack durchführen! 50 / 125 Diffie-Hellman-Protokoll Beispiel Alice g = 4, Bob p = 11 i =3 j =4 A = 43 mod 11 = 9 B = 44 mod 11 = 3 A = 9 → Bob Alice ← B = 3 Bi K = mod p 3 = 3 mod 11 = 5 K = Aj mod p = 94 mod 11 = 5 51 / 125 El-Gamal-Verschlüsselung . . . . . . klitzekleine Erweiterung des DH-Schlüsselaustausches Schlüsselgenerierung I Alice wählt eine Primzahl p und eine primitive Wurzel g mod p I Alice wählt einen zufälligen Exponenten i ∈ {0, . . . , p − 2}; ihren privaten Schlüssel I Alice errechnet A = g i mod p, ihren öffentlichen Schlüssel4 Verschlüsselung I Bob beschafft sich (g, p, A) I Bob wählt einen zufälligen Wert j ∈ {0, . . . p − 2} und berechnet B = g j mod p I Bob teilt die Klartextnachricht in Blöcke mk der Länge {0, 1, . . . , p − 1} ein und berechnet dann die Chiffratblöcke ck ck = Aj mk mod p (er multipliziert die Klartextblöcke mit dem DH-Session-Key) 4 Der gesamte öffentliche Schlüssel umfasst (g, p, A) 52 / 125 El-Gamal-Verschlüsselung Entschlüsselung I Alice besorgt sich B und die Chiffratblöcke ck I „dividiert“ die Chiffratblöcke durch den DH-Session-Key ck mk = i B mod p I dies tut sie jedoch nicht direkt (sie müßte das zu B i multiplikativ inverse Element finden), sondern sie berechnet den Exponenten x: x =p−1−i und ermittelt dann für jeden Chiffratblock ck B x ck mod p = mk I Dies funktioniert, weil B x ck ≡ g j(p−1−i) Aj mk ≡ (g p−1 )j (g i )−j Aj mk ≡ A−j Aj mk ≡ mk (mod p) = mk gilt. 53 / 125 El-Gamal-Verschlüsselung Beispiel Alice Bob p = 23, g = 7, i = 6 A = g i mod p = 76 mod 23 = 4 (p, g, A) = (23, 7, 4) → Bob j = 13 j 13 B = g mod p = 7 mod 23 = 20 Klartext‘block’ m = 17 c = Aj m mod p = 413 17 mod 23 = 19 Alice ← (20, 19) = (B, c) x = p − 1 − i = 23 − 1 − 6 = 16 m = B x c mod p = 2016 19 mod 23 = 17 54 / 125 Exkurs 2: Primzahlen Def. Eine natürliche Zahl p ist eine Primzahl, wenn sie genau zwei Teiler hat. I 0 und 1 sind keine Primzahlen I Beispiele: 2, 3, 5, 7, 11, . . . , 73, . . . , 257885161 − 1 (gegenwärtig größte bekannte)5 I Primzahlen mit Abstand 2 sind so genannte Primzahlzwillinge6 ; z. B. (3,5), (101, 103), (3756801695685 · 2666669 ± 1) I Hat p mehr als 2 Teiler, so ist sie eine zusammengesetzte Zahl (ein Produkt von Primzahlen). I kein Verfahren, Funktion, Formel usw. bekannt, effizient (große) Zahlen in Primfaktoren zu zerlegen 5 http://www.mersenne.org/ 6 Deren (Un)endlichkeit ist bislang nicht bewiesen. 55 / 125 Primzahlen Unendlichkeit von Primzahlen Satz: Es gibt unendliche viele Primzahlen. Beweis (Euklid, 300 v. u. Z.): I Angenommen, es gäbe endlich viele Primzahlen p1 , p2 , . . . , pn . I dann kann m = p1 · p2 · . . . · pn + 1 keine Primzahl sein I wenn m keine Primzahl ist, muss sie zusammengesetzt sein, also Primfaktor q enthalten mit q | m = p1 · p2 · . . . · pn + 1 I da q in {p1 , p2 , . . . , pn } enthalten sein muss (denn das sind alle Primzahlen, die es gibt), muss auch gelten q | p1 · p2 · . . . · pn = m − 1 I aus q | m und q | (m − 1) folgt q | m − (m − 1), also q | 1. I Da aber keine Primzahl 1 teilt, haben wir einen Widerspruch. Die Annahme endlich vieler Primzahlen ist somit falsch. 56 / 125 Generierung von Primzahlen Sieb des Eratosthenes (Eratosthenes von Kyrene, ca. 276–196 v. u. Z.) Algorithmus: 1. Man schreibe alle Zahlen von 2 bis zum gewünschten Maximum M auf. 2. Es sei n die kleinste nicht gestrichene und nicht markierte Zahl. Man markiere n und streiche dann alle Vielfache von n aus. √ 3. Man führe Schritt 2 für alle n ≤ M aus. 4. Alle markierten und alle nicht gestrichenen Zahlen sind Primzahlen. Beispiel (M = 100): 2 16 30 44 58 72 86 3 17 31 45 59 73 87 4 18 32 46 60 74 88 5 19 33 47 61 75 89 6 20 34 48 62 76 90 7 21 35 49 63 77 91 8 22 36 50 64 78 92 9 23 37 51 65 79 93 10 24 38 52 66 80 94 11 25 39 53 67 81 95 12 26 40 54 68 82 96 13 27 41 55 69 83 97 14 28 42 56 70 84 98 15 29 43 57 71 85 99 100 57 / 125 Primzahltest nach Fermat Kleiner Satz des Fermat Voraussetzung: p sei prim, g ∈ Z, ggT(g, p) = 1. Dann gilt nach Pierre de Fermat: g p−1 ≡ 1. Umkehrung des Satzes: Wenn gilt: g p−1 mod p 6= 1, dann kann g keine Primzahl sein, sondern muss zusammengesetzt sein. → Grundidee für einen (probabilistischen) Primzahltest. 58 / 125 Primzahltest nach Fermat „Ist p eine Primzahl?“ Start Wähle g zufällig mit 1 < g < n − 1 Berechne y = g p−1 mod p "p ist wahrscheinlich prim.“ yes y = 1? no „p ist zusammengesetzt.“ Stop Abbruch mit dem Ergebnis „p ist wahrscheinlich prim“, nach hinreichend vielen Iterationen. 59 / 125 Primzahltest nach Fermat Fermatsche Pseudoprimzahlen, Carmichael-Zahlen Problem: Es gibt einige (wenige) Zahlen p, für die g p−1 mod p = 1 gilt und die dennoch zusammengesetzt sind, die so genannten fermatschen Pseudoprimzahlen zur Basis g. Abhilfe: Nutzung einer anderen Basis g Problem 2: Es gibt (sehr, sehr wenige) Zahlen p, für die g p−1 mod p = 1 ∀1 < g < p − 1 gilt und die dennoch zusammengesetzt sind, die so genannten CARMICHAEL-Zahlen. Abhilfe: keine bzw. Nutzung eines anderen Primzahltests. Beispiel: 561 = 3 · 11 · 17 ist die kleinste CARMICHAEL-Zahl. 60 / 125 Generierung von Primzahlen Übersicht über Verfahren I Probedivision I Sieb des Eratosthenes I Fermatscher Primzahltest I Miller-Rabin-Test (1974) I Solovay-Strassen-Test (1977) I Sieb von Atkin (1999) I AKS-Primzahltest (2002; polynomielle Laufzeit)7 7 TODO: Literaturverweis 61 / 125 Eulersche ϕ-Funktion Definition (Eulersche ϕ-Funktion) ϕ(n) ist die Anzahl der zu n teilerfremden positiven ganzen Zahlen, die nicht größer sind als n. formal: ϕ(n) = {1 ≤ a ≤ n | ggT(n, a) = 1} („ϕ(n) ist die Mächtigkeit der Menge, die alle Zahlen a enthält, die teilerfremd zu n sind.“) I I zahlentheoretische Funktion Beispiele: ϕ(1) = 1 ϕ(2) = 1 ϕ(6) = 2 (a ∈ {1, 5}) ϕ(7) = 6 (Primzahl!) ϕ(15) = 8 (a ∈ {1, 2, 4, 7, 8, 11, 13, 14}) 62 / 125 Eulersche ϕ-Funktion und Primzahlen I Wenn p prim, dann ϕ(p) = p − 1. I Wenn p und q prim, dann ϕ(pq) = (p − 1)(q − 1). Beweis: I Es gibt genau pq − 1 Zahlen, die kleiner als pq sind. I Unter diesen gibt es (p − 1) Vielfache von q und (q − 1) Vielfache von p. I Alle anderen Zahlen < pq sind keine Teiler von pq, da p und q prim sind. I Folglich gilt: ϕ(pq) = (pq − 1) − (p − 1) − (q − 1) = pq − p − q + 1 = (p − 1)(q − 1). 63 / 125 Der Satz von Euler Definition (Satz von Euler) Es seien m, n zwei teilerfremde natürliche Zahlen. Dann gilt: mϕ(n) mod n = 1. Für Primzahlen p, q mit p 6= q und n = pq gilt damit (vgl. vorherige Folie) m(p−1)(q−1) mod pq = 1. 64 / 125 Größter gemeinsamer Teiler (ggT) Berechnung über Primfaktorzerlegung Idee: I Zerlegung beider Operanden in Primfaktoren I Produkt der gemeinsamen Faktoren ist der ggT. Beispiel: ggT(468, 1260) Zerlegung in Primfaktoren liefert: 468 = 2 · 2 · 3 · 3 · 13 1260 = 2 · 2 · 3 · 3 · 5 · 7 ggT = 2 · 2 · 3 · 3 = 36 I nur für kleine Zahlen praktikabel, da Primfaktorzerlegung algorithmisch aufwändig für große Zahlen 65 / 125 Größter gemeinsamer Teiler (ggT) Euklidischer Algorithmus (ca. 500 v. u. Z.) Algorithmus 1 Berechne den ggT(n, a) = 1: if n = 0 then 2: return a 3: else 4: while a 6= 0 do 5: if n > a then 6: n ←n−a 7: else 8: a←a−n 9: end if 10: end while 11: return n 12: end if 66 / 125 Größter gemeinsamer Teiler (ggT) Euklidischer Algorithmus (ca. 500 v. u. Z.) I sukzessive Subtraktion kann effizient auf modulo-Operation abgebildet werden: ( ggT(a, (n mod a)) für a > 0 ggT(n, a) = n für a = 0 I mit n > a ≥ 0 Algorithmus 2 Berechne den ggT(n, a) = 1: while a 6= 0 do 2: h ← n mod a 3: n←a 4: a←h 5: end while 6: return n 67 / 125 Euklidischer Algorithmus Beispiel ggT(792, 75) = ggT(75, 42) (792 = 10 · 75 + 42) = ggT(42, 33) (75 = 1 · 42 + 33) = ggT(33, 9) (42 = 1 · 33 + 9) = ggT(9, 6) (33 = 3 · 9 + 6) = ggT(6, 3) (9 = 1 · 6 + 3) = ggT(3, 0) (6 = 2 · 3 + 0) =3 Fazit: I effizienter Algorithmus (viel effizienter als Primfaktorzerlegung!) 68 / 125 Erweiterter Euklidischer Algorithmus generiert zusätzlich zu ggT eine so genannte Linearkombination (aka Vielfachsumme) des ggT: ggT(n, a) = k = v · n + u · a Algorithmus 3 Berechne k = ggT (n, a) = vn + ua 1: (c, d) ← (a, n) 2: (uc , vc , ud , vd ) ← (1, 0, 0, 1) 3: while c 6= 0 do 4: q ← bd/cc 5: (c, d) ← (d − qc, c) 6: (uc , vc , ud , vd ) ← (ud − quc , vd − qvc , uc , vc ) 7: end while 8: (k , v , u) ← (d, vd , ud ) 9: return k , v , u 69 / 125 Erweiterter Euklidischer Algorithmus Beispiel Gesucht: ggT(17, 3) = k = v · 17 + u · 3 Zeile 1 2 4 5 6 4 5 6 4 5 6 c 3 d 17 uc vc ud vd 1 0 0 1 q 5 2 3 -5 1 1 0 1 1 2 6 -1 -5 1 2 0 1 -17 3 6 -1 k = 1, v = −1, u = 6, also ggT(17, 3) = 1 = −1 · 17 + 6 · 3 70 / 125 Modulare Inverse Satz (Satz von der modularen Inversen) Seien a und n teilerfremde ganze Zahlen (d. h., ggT (n, a) = 1). Dann gibt es eine Ganzzahl b, so dass gilt: a · b mod n = 1. („a ist modulo n invertierbar.“, „b ist das zu a inverse multiplikative Element modulo n.“) Beweis: I wenn k = 1, dann gibt es lt. erweitertem euklidischen Algorithmus ganze Zahlen v , u mit 1 = k = ggT(n, a) = v · n + u · a. I Bei (Modulo-)Division durch n liefert linke Seite den Wert 1, rechte Seite den Wert u · a mod n (da v · n durch n teilbar). I Also gilt: 1 = u · a mod n I Mit u = b folgt die Behauptung. 71 / 125 Public-Key-Kryptografie mit RSA Überblick I Ron Rivest, Adi Shamir, Leonard Adleman (1977) I beruht auf Schwierigkeit, große Zahlen (100-200 Stellen oder mehr) zu faktorisieren8 I (unbewiesene) Vermutung: Die Entschlüsselung eines Chiffrates ohne Kenntnis des Schlüssels ist genauso schwierig wie die Faktorisierung der beiden beteiligten Zahlen I → Langzahlarithmetik erforderlich I eines der am leichtesten zu verstehenden Public-Key-Verfahren 8 in Primfaktoren zu zerlegen 72 / 125 RSA Schlüsselgenerierung 1. Wähle zwei verschiedene große Primzahlen p, q. 2. Berechne den sog. RSA-Modul n = pq. 3. Ermittle den Wert der Eulerschen ϕ-Funktion für n: ϕ(n) = (p − 1)(q − 1). 4. Wähle e für den öffentlichen Schlüssel zufällig, so dass I I 1 < e < ϕ(n) gilt und e und ϕ(n) teilerfremd sind (ggT(ϕ(n), e) = 1). 73 / 125 RSA Schlüsselgenerierung - Teil 2 5. Es muss für den privaten Schlüssel d gelten: e · d mod ϕ(n) = 1. Daher wird d mittels des erweiterten euklidischen Algorithmus errechnet: d = e−1 mod (p − 1)(q − 1). 6. Vernichte p und q. 7. Schlüssel wurden generiert: I I der öffentliche Schlüssel ist (e, n), der private Schlüssel ist d. 74 / 125 RSA (Stark vereinfachtes) Beispiel zur Schlüsselgenerierung 1. p = 47, q = 71 2. n = 47 · 71 = 3337 3. ϕ(3337) = (p − 1)(q − 1) = 46 · 70 = 3220 4. e muss teilerfremd sein zu 3220, e = 79 79−1 5. d = mod 3220 = 1019 6. Schlüssel: I I (e, n) = (79, 3337) d = 1019 75 / 125 RSA Vorgang des Ver- und Entschlüsselns Verschlüsselung I gegeben: Public Key (e, n), Klartextnachricht m I m in Blöcke mi zerlegen, für deren Größe L < n gelten muss I blockweise modular exponieren: ci = mie mod n Entschlüsselung I gegeben: Private Key d, Chiffrat ci I blockweise modular exponieren mi = cid mod n 76 / 125 RSA Beispiel zum Verschlüsseln Fortsetzung des Beispiels: I (e, n) = (79, 3337) I d = 1019 I m = 6882326879666683 („DR DOBBS“) I willkürliche Zerlegung in Blöcke von 3 Zeichen I → m1 = 688, m2 = 232, m3 = 687, m4 = 966, m5 = 668, m6 = 003 (links mit Nullen aufgefüllt!) Verschlüsselung: c1 = m1e mod n = 68879 mod 3337 = 1570 c2 = m2e mod n = 23279 mod 3337 = 2756 usw. Ergebnis: c = 1570 2756 2091 2276 2423 158 77 / 125 RSA Beispiel zum Entschlüsseln Entschlüsselung: m1 = c1d mod n = 15701019 mod 3337 = 688 m2 = c2d mod n = 27561019 mod 3337 = 232 usw. Ergebnis: m = 688 232 687 966 668 3 78 / 125 RSA Warum funktioniert das ganze (in a Nutshell)? I Nach den Regeln des Rechnens mit Restklassen gilt: d cid mod n = (mie mod n) mod n = mied mod n = . . . I da definitionsgemäß ed ≡ 1 mod ϕ(n), gilt ed = 1 + k ϕ(n), k ∈ Z, also: 1+k ϕ(n) · · · = mi I k ϕ(n) mod n = mi mi mod n = . . . per definitionem gilt weiterhin n = pq und ϕ(n) = (p − 1)(q − 1), also k (p−1)(q−1) · · · = mi mi (p−1)(q−1) k mod pq = mi mi mod pq 79 / 125 RSA Warum funktioniert das ganze (Teil 2)? I Der Satz von Euler besagt: x (p−1)(q−1) mod pq = 1 I bezugnehmend auf das letzte Ergebnis ergibt sich so: I , wenn ggT(x, pq) = 1. (p−1)(q−1) k mi mi mod pq = 1k mi mod pq = . . . und da schließlich mi < n = pq, ergibt sich endlich · · · = mi mod pq = mi . Fazit: RSA funktioniert. 80 / 125 RSA Bemerkungen I viel geringere Geschwindigkeit als symmetrische Verfahren (ca. Faktor 1000) I bis zum Jahr 2000 patentiert (RSA Security, Inc.) I kryptologisch bislang nicht gebrochen I Als öffentlicher Schlüssel e werden häufig die Werte 3, 17 und 216 + 1 = 65537 gewählt, da sie wenig Aufwand beim Verschlüsseln (bzw. Verifizieren der Signatur) verursachen I Ähnliche kleine Werte für d sind unmöglich, da der Angreifer sonst (Brute-Force) alle möglichen Schlüsselwerte durchprobieren könnte. 81 / 125 RSA Probleme beim „schulbuchmäßigen“ Einsatz I I I gleiche Klartextblöcke erzeugen gleiche Chiffratblöcke (analog ECB) Klartext-Werte 1, 0 und -1 erzeugen Chiffrate 1, 0 und -1 RSA ist verformbar (malleable): Angreifer kann das Chiffrat verändern, was zu einer Transformation des Klartextes führt, ohne zu entschlüsseln: I I I Alice schickt Bob y = x e mod n Mallory ersetzt y durch y 0 = se y (s ∈ Z) Bob entschlüsselt y 0 : y 0d mod n = (se y )d mod n = (se x e mod n)d mod n = (sx)ed mod n = sx mod n Abhilfe: Padding 82 / 125 length of the message in bytes. A hash function computes a message digest of fixed length (e.g., 160 or 256 bit) for every input. More about hash functions is found in Chap. 11. Furthermore, let L be an optional label associated with the message (otherwise, L is an empty string as default). According to the most recent version Optimal Asymmetric Encryption Padding (OAEP) PKCS#1 (v2.1), padding a message within the RSA encryption scheme is done in the following way: RSA 1. Generate a string PS of length k − |M| − 2|H| − 2 of zeroed bytes. The length of PS may be zero. 2. Concatenate Hash(L), PS, a single byte with hexadecimal value 0x01, and the message M to form a data block DB of length k − |H| − 1 bytes as DB = Hash(L)||PS||0x01||M. 3. Generate a random byte string seed of length |H|. 4. Let dbMask = MGF(seed, k −|H|−1), where MGF is the mask generation function. In practice, a hash function such as SHA-1 is often used as MFG. 5. Let maskedDB = DB ⊕ dbMask. 6. Let seedMask = MGF(maskedDB, |H|). 7. Let maskedSeed = seed ⊕ seedMask. 8. Concatenate a single byte with hexadecimal value 0x00, maskedSeed and maskedDB to form an encoded message EM of length k bytes as EM = 0x00||maskedSeed||maskedDB. Figure 7.3 shows the structure of a padded message M. seed Hash(L) | PS | 0x01 | M 0x00 seedMask 1 dbMask |H| k−|H|−1 k Fig. 7.3 RSA encryption of a message M with Optimal Asymmetric Encryption Padding (OAEP) Abbildung: Ablauf beim OAEP9 On the decryption side, the structure of the decrypted message has to be verified. For instance, if there is no byte with hexadecimal value 0x01 to separate PS from M, a decryption error occurred. In any case, returning a decryption error to the user 9 Christof Paar und Jan Understanding Cryptography. Springer, about 2010,the S.plaintext. 193. (or aPelzl. potential attacker!) should not reveal any information 83 / 125 Public-Key Cryptography Standard (PKCS) 84 / 125 Sicherheit von RSA I Gegner besitzt e und n I um d zu ermitteln, kann er n faktorisieren (in pq). d ≡ e−1 mod ((p − 1)(q − 1)) I bislang unbewiesen, ob die Faktorisierung zwingend notwendig ist, um d zu errechnen I ebenso möglich: Brute-Force-Angriff auf d (Durchprobieren) nur erfolgversprechend, wenn d sehr klein I p und q müssen vernichtet werden, aus ihnen kann der geheime Schlüssel trivial ermittelt werden. I Seitenkanalangriffe (z. B.) über Leistungsaufnahme bei Verschlüsselung (Simple Power Analysis) 85 / 125 Exkurs: Seitenkanalangriff (Side Channel Attack) I I Angriffe richten sich nicht gegen den Algorithmus, sondern eine bestimmte Implementierung es werden bestimmte Parameter des den Algorithmus ausführenden Systems gemessen, z. B. I I I I I I Ausführungszeiten Cache-Hit- (bzw. -Miss-) Rate aufgenommene Leistung elektromagnetische Abstrahlung Geräuschemissionen Aus den ermittelten Parametern werden Informationen über den Programmfluss extrahiert, die das Brechen des Verfahrens (oder eines bestimmten Schlüssels) vereinfachen. Beispiel: durch das „Belauschen“ des Busprotokolls (CPU-RAM) und genauer Kenntnis der Implementation kann man die Schlüssellänge ermitteln. 86 / 125 Seitenkanalangriff Beispiel: I verschiedene Tasten einer Computertastatur oder eines Geldautomaten produzieren verschiedene Geräusche (für den Menschen nicht unterscheidbar) I Aufzeichnen und nachträgliches Auswerten kann Texte, PINs, Passworte ermitteln (z. B. mittels neuronaler Netze) I Asonov/Agraval: Keyboard Acoustic Emanations. IEEE Symposium on Security and Privacy, 2004 Gegenmaßnahmen: I Reduktion oder Elimination der Emission I Vereinheitlichung (z. B. von Cachezugriffen oder Ausführungszeiten) I asynchrone CPUs 87 / 125 Faktorisierungsverfahren unbekannt, zu welcher Komplexitätsklasse das Problem „Faktorisierung“ gehört √ Einfachstes Verfahren: Versuchsweise Division bis n Stand der Technik sind die folgenden schwierigen Algorithmen: I I Kettenbruchmethode I Quadratisches Sieb (QS); nur für Zahlen < 110 Dezimalstellen I Zahlkörpersieb (Number Field Sieve; NFS); effizientester bislang bekannter Algorithmus I Shor-Algorithmus - kann in P faktorisieren, erfordert aber Quantencomputer 88 / 125 RSA Factoring Challenge I Wettbewerb „Wer faktorisiert als erster definierte Zahlen großer Länge?“ I 1991–2007 I Ziel: Nachweis/Falsifizierung der Sicherheit des RSA-Kryptosystems P Preisgeld: 635.100$ I Beispiel: RSA-100 = 15226050279225333605356183781326374297180681149613 80688657908494580122963258952897654000350692006139 = 37975227936943673922808872755445627854565536638199 ∗ 40094690950920881030683735292761468389214899724061 89 / 125 RSA Factoring Challenge Ausgewählte Ergebnisse Zahl Bits Dez.-Stellen Lösungsjahr CPU-Jahre RSA-100 330 100 1991 RSA-140 463 140 1999 8.9 RSA-155 512 155 1999 35.7 RSA-160 530 160 2003 RSA-576 576 174 2003 RSA-640 640 193 2005 55 RSA-200 663 200 2005 30 RSA-768 768 232 2010 ≈ 1500 90 / 125 Signieren (und Verifizieren) mittels RSA Voraussetzung: Bob hat ein Schlüsselpaar (KB,priv = d, KB,pub = (e, n)) erzeugt. Ablauf: 1. Bob übermittelt Alice seinen öffentlichen Schlüssel KB,pub . 2. Bob signiert die Nachricht M, d. h. , er verschlüsselt diese mit KB,priv . Es entsteht Bobs Signatur über M sigB (M) = M d mod n. 3. Bob übermittelt M und sigB (M) an Alice. 4. Alice entschlüsselt die Signatur mit Bobs öffentlichem Schlüssel e M 0 : = (sigB (M))e mod n = M d mod n mod n = M de mod n 5. Alice vergleicht das Dechiffrat M 0 mit der empfangenen Nachricht M. Gilt M 0 = M, dann ist die Signatur gültig, ansonsten ungültig. 91 / 125 Signieren (und Verifizieren) mittels RSA Fazit 2 Merkmale werden durch eine gültige Signatur bewiesen: 1. Nachricht M kommt von Bob (, da nur er den für die Erzeugung der Signatur nötigen privaten Schlüssel besitzt). – Authentizität 2. Die Nachricht M wurde nicht verändert. – Integrität Bei ungültiger Signatur kann i.a. nicht unterschieden werden, welche der beiden Fakten nicht stimmen. Des weiteren kann Bob die geleistete Unterschrift nicht abstreiten („non-repudiation“). 92 / 125 Management öffentlicher Schlüssel Zertifikate Problem: Übereinstimmung öffentlicher Schlüssel — Identität Lösung: Zertifikat = Nachricht, die I Repräsentation der Identität, I zugehörigen öffentlichen Schlüssel, I Zeitstempel oder Geltungsdauer enthält und durch eine vertrauenswürdige Instanz (Trent, “Issuer”, Certification Authority) signiert wurde. Def.: Ein Zertifikat ist eine Einheit, die einen kryptografischen Schlüssel an eine Identität bindet. 93 / 125 Zertifikate für öffentliche Schlüssel Prinzip Erstellung des Zertifikats unsigniertes Zertifikat Prüfung des Zertifikats Alice’ ID Alice’ Public Key H H 1111111 0000000 0000000 1111111 111111 000000 000000 111111 Informationen der CA E Hash des unsignierten Zertifikats D Signatur des Zertifikats Private Key der CA 1111111 0000000 0000000 1111111 0000000 1111111 =? 0000000 1111111 0000000 1111111 Public Key der CA 94 / 125 Management öffentlicher Schlüssel Aufbau eines Zertifikats; formal Ein durch Zertifizierungsinstanz CA ausgestelltes Zertifikat für Nutzer A enthält: Cert(CA,A) = {IDCA , IDA , eA , T, Ext, sigCA } mit sigCA = dCA {H(IDCA , IDA , eA , T, Ext)} Legende: IDA eA dCA T sigCA H(j) Ext eindeutiger Name des Teilnehmers A öffentlicher Schlüssel des Teilnehmers A privater Schlüssel der CA Gültigkeitszeitraum des Zertifikats digitale Signatur der CA kryptografischer Hash über j optionale Erweiterungen nach X.509 95 / 125 Verifikation einer digitalen Signatur Schritt 1: Verifikation der Signatur Bob möchte Alice’ Signatur prüfen. Dazu muss er 1. Alice’ Zertifikat besorgen (enthält den zur Unterschrift passenden öffentlichen Schlüssel eA ), 2. mit eA den ursprünglichen Hashwert des Dokuments H1 entschlüsseln, 3. den aktuellen Hashwert des Dokuments H2 ermitteln, 4. Signatur passt zu Zertifikat, wenn H1 = H2 . 96 / 125 Verifikation einer digitalen Signatur Schritt 2: Verifikation des Zertifikates Nun muss Bob prüfen, ob das Zertifikat stimmt: 1. den öffentlichen Schlüssel eCA der CA besorgen, die Alice’ Zertifikat ausgestellt hat, 2. mit eCA den ursprünglichen Hashwert des Zertifikats H3 entschlüsseln, 3. den aktuellen Hashwert des Zertifikats H4 ermitteln, 4. das Zertifikat ist gültig, wenn H3 = H4 . 97 / 125 Bob verifiziert Alice’ Signatur Prinzipielle Struktur einer Public Key Infrastructure (PKI) Root-CA CA CA1 Bob Cert(CA, CA) Cert(CA, CA1) Alice Cert(CA1, Alice) Text sigAlice [Text] 98 / 125 Aufbau eines Zertifikates X.509 (ISO Authentication Framework) I Version: des Protokolls (1, 2 oder 3) I Seriennummer: eindeutig innerhalb der CA I Algorithmus: der Signatur (zum Nachvollzug) I Aussteller: eindeutiger Name der CA Public Key I Betreff: dem Public Key zugeordnete Identität Signatur I Signatur: ausgestellt durch CA Version Seriennummer Algorithmenidentifikation Aussteller (Issuer) Geltungsdauer Betreff (Subject) 99 / 125 Zertifikatseigenschaften Abbildung: Issuer und Subject im Zertifikat (Beispiel) 100 / 125 Namen im X.509-Zertifikat Benennung von Issuer und Subject in X.509 erfolgt mittels hierarchischem Distinguished Naming des X.500-Protokolls mit den folgenden Feldern: Bedeutung cn e ou o Common Name E-Mail-Address Organization Unit Organization Name l st c Locality Name State Name Country Beispiel [email protected] TC TrustCenter Class 2 CA TC TrustCenter for Security in Data Networks GmbH Hamburg Hamburg de 101 / 125 Certification Authorities (Zertifizierungsstellen) Def.: Eine Einheit, die Zertifikate ausstellt, wird Certification Authority (CA) genannt. CAE I jede CA besitzt ein Zertifikat, das von der direkt über und der direkt unter ihr liegenden CA signiert ist I zuoberst: Master CA (hier: CAE ) I Es entsteht eine Zertifizierungshierarchie. I CAs können sich gegenseitig zertifizieren (Cross Certification) CAD CAC CAA Alice CAB Bob 102 / 125 Certification Authorities Einige Unternehmen bieten Zertifizierung als Dienstleister an, so z. B.: I VeriSign, Inc.10 , I Thawte, I Deutsche Post AG, I T-Systems. Darüber hinaus gibt es gemeinnützige Organisationen, die das gleiche kostenfrei oder preiswert anbieten. I CAcert I DFN e. V. Zertifikate bekannter CAs sind in typischer Software (Browser, E-Mail-Client) eingebaut. 10 VeriSign ist interessanterweise Betreiber der TLDs .com und .net sowie Eigentümer von Jamba! 103 / 125 Problem des zentralisierten Modells Problem: Kann man der CA unbedingt vertrauen? Antwort: Leider nein: I Einbruch in (niederländische Firma) DigiNotar 2011, Angreifer stellten sich unberechtigte Zertifikate aus, diese wurden mißbräuchlich zur Überwachung iranischer Bürger genutzt11 I (türkische CA) Türktrust stellte im August 2011 irrtümlich 2 Zertifikate aus, mit denen sich beliebige Domains zertifizieren lassen 11 http://www.rijksoverheid.nl/bestanden/documenten-en-publicaties/rapporten/2012/08/ 13/black-tulip-update/black-tulip-update.pdf 104 / 125 Rücknahme von Zertifikaten (Certificate Revocation) Problem: Schlüssel können vor ihrem „Verfallsdatum“ ungültig werden, z. B. bei Kompromittierung eines privaten Schlüssels → zugehöriges Zertifikat muss zurückgezogen werden a) Certificate Revocation List (CRL) I I I I zentrale Datenbank der CA mit allen ungültigen Zertifikaten beim Prüfen eines Zertifikates muss CRL durchsucht werden Voraussetzung: Teilnehmer sind permanent online z. B. X.509 b) Fast Expiration I I I kurze Gültigkeitsdauer des Zertifikats (10’. . . 24h) nutzt Mechanismus der begrenzten Lebensdauer Voraussetzung: Teilnehmer sind permanent online c) Online Certificate Verification I I I Zertifikatsprüfung durch zentrale Instanz schnell, zuverlässig OCSP (Online Certificate Status Protocol) 105 / 125 Schlüsselzertifizierung bei PGP „Web of Trust“ I keine Zertifizierungsinstanzen I Benutzer unterzeichnen öffentliche Schlüssel gegenseitig I behalten Kopien der unterzeichneten Schlüssel I Keysigning Party erlaubt individuelle Beurteilung: I I I I Vertrauen in die Gültigkeit eines Schlüssels Zuverlässigkeit der Unterschrift eines Teilnehmers Zuverlässigkeit eines Teilnehmers, andere Schlüssel zu zertifizieren I auch nicht vertrauenswürdige Schlüssel können benutzt werden I Hauptproblem: Schlüsselrücknahme (→ Key Revocation Certificate) 106 / 125 Beispiel für Vertrauensmodell im PGP Quelle: Bruce Schneier, Angewandte Kryptographie. Pearson, 2006, S. 665 107 / 125 Schlüsselaufbewahrung I öffentliche Schlüssel sind einfach aufzubewahren I I I ihre Integrität muss gesichert sein Nutzung der Zertifikate geheime Schlüssel und Schlüssel für symmetrische Kryptografie? I I I I I persistent in Datei; Nutzung von BS-Mechanismen zum Zugriffsschutz verschlüsselte Abspeicherung (hilft nicht gegen Keylogging) ROM oder Smartcard Problem: Diebstahl der Smartcard Verbesserung: Verteilung auf mehrere Karten oder Karte und Lesegerät 108 / 125 Pretty Good Privacy (PGP) I ist eine Software zum Verschlüsseln und Signieren von E-Mails I 1991 durch Phil Zimmermann entwickelt I erste Implementierung von Public-Key-Kryptografie für die Allgemeinheit I unterlag restriktiven Exportbestimmungen (als Buch exportiert) I nutzt hybride Kryptografie http://upload.wikimedia.org/wikipedia/commons/7/77/PRZ_closeup.jpg 109 / 125 PGP I nutzte (ursprünglich) IDEA zur symmetrischen Verschlüsselung, MD-5 als Hash und RSA zur Public-Key-Kryptografie I Web of Trust anstatt CAs I wechselvolle Entwicklungsgeschichte I zeitweise Eigentum von Network Associates (aka McAfee) I in dieser Zeit Weiterentwicklung als Closed Source (Vertrauen verschwunden) I wieder zurück an die PGP Corporation I als kommerzielle Software entwickelt und vertrieben I → OpenPGP-Standard als offene Alternative 110 / 125 Gnu PrivacyGuard (GPG) I freie und patentfreie Implementierung des OpenPGP-Standards (RFC 4880) I nutzt DSA, ElGamal, SHA-1, CAST5 (symmetrische Blockchiffre) I alle gängigen Desktop-Betriebssysteme (Unixe, Windows, MacOS) unterstützt I in Standardsoftware (MUA, Browser, Chatsoftware) bereits integriert, aber auch als Kommandozeilenprogramm nutzbar I unterstützt Schlüsselserver, die öffentliche Schlüssel sammeln und anbieten (Beispiel: http://pgp.mit.edu) 111 / 125 Nutzung von GPG . . . an der Kommandozeile I gpg --gen-key erzeugt den Schlüsselring (Key Ring) sowie das Schlüsselpaar I gpg --export --armor extrahiert den Public Key und schreibt diesen als 7-Bit-Zeichen nach stdout oder in eine Datei I gpg --import [datei] importiert einen Schlüssel in den Keyring I gpg --sign <datei> signiert die Datei I gpg --verify <datei> überprüft die Signatur, vorausgesetzt, der öffentliche Schlüssel steht zur Verfügung I gpg -s <datei> verschlüsselt symmetrisch I gpg -e / -d ver- bzw. entschlüsselt asymmetrisch 112 / 125 Schlüsselsicherheit Der Word-Makro-Virus „Caligula“ (W97M/Caligula.a) “Searches for PGP Secure Keyring using registry entry to get PGP installed path. [. . . ] If user name is not ’Caligula’, runs PGP Secure Keyring find and send routine - user name retrieved from registry [...] If file found, file is uploaded to the virus author’s ftp site using a script file written as ’c:\cdbrk.vxd’ and using ftp.exe in a hidden process” (McAfee Virusdatenbank) I Keyring läßt sich viel leichter knacken als eine verschlüsselte Nachricht, insbesondere bei kurzer/schlechter Passphrase (Wörterbuch-Angriff) I Die beste Verschlüsselung nützt nichts, wenn andere Aspekte der Systemsicherheit vernachlässigt werden! 113 / 125 Exkurs: Schlangenöl Woran erkennt man schlechte kryptografische Software? Warning Sign No.1: Pseudo-mathematical gobbledygook. I “Encryptor 4.0 uses a unique in-house developed incremental base shift algorithm” I “From a mathematical point of view, the TTM algorithm is intuitively natural and less cumbersome to use than methods that are number-theory based.” (http://www.usdsi.com/ ) I “SuperKrypt products utilize the DNGT bulk encryption method,” I “Since key length and key structure vary and since the encryption engine does not use any mathematical algorithms, reverse engineering is impossible and guessing is not an option.” (http://www.schneier.com/crypto-gram-9902.html) – TBC. . . 114 / 125 Zero Knowledge I Alle diskutierten Authentifizierungsprotokolle basieren darauf, dass der Anmeldende Informationen an das betreffende System übermittelt. I prinzipielle Frage: ist Authentifizierung auch möglich, ohne dass der Anmeldende irgendeine Information preisgibt? I Anders formuliert: Alice kennt ein Geheimnis. Kann Alice Bob davon überzeugen, dass sie das Geheimnis kennt, ohne Bob das Geheimnis zu verraten? 115 / 125 Interaktive Beweise I Niccolo Tartaglià findet ca. 1535 eine allgemeine Lösungsformel für kubische Gleichungen12 x 3 + ax 2 + bx + c = 0. I publiziert diese nicht (Angst vor wiss. Konkurrenz oder illegaler Aneignung?) I Konkurrent Antonio Maria Fior stellt ihm 30 Aufgaben (Parameter a, b, c) I Tartaglià ermittelt die zugehörigen x und übermittelt diese zurück an Fior I Fior prüft die erhaltenen x und stellt fest, dass diese in der Tat die jeweilige kubische Gleichung erfüllen, dass also Tartaglià wirklich eine Lösungsformel kennen muss ⇒ Interaktives Beweisverfahren (Frage – Antwort) I Fior überzeugt, dass Tartaglià wirklich in Besitz der Lösungsformel I Lösungsformel selbst bleibt geheim 12 Diese werden später unter dem Namen Cardanische Formeln bekannt. 116 / 125 Das Geheimnis der Höhle A I Geheime Tür zwischen C und D, mit Zauberformel zu öffnen I Peggy kennt Formel I Peggy will Viktor überzeugen, ohne etwas über die Formel zu verraten B C D Literatur: Jean-Jaques Quisquater et al: How to Explain ZeroKnowledge Protocols to Your Children. Proc. CRYPTO’89, Springer 1990 117 / 125 Das Geheimnis der Höhle Interaktives Beweisprotokoll Vorgehensweise: 1. Viktor bleibt an Punkt A 2. Peggy betritt Höhle, geht wahlweise nach C oder D. 3. Viktor geht zu Punkt B. 4. Viktor ruft Peggy zu: I I entweder aus dem linken oder aus dem rechten Gang zu erscheinen. 5. Peggy kommt Viktors Aufforderung nach, sie muss u. U. die Zauberformel einsetzen, um die Tür zu öffnen. 6. Peggy und Viktor wiederholen die vorangegangenen Schritte n-mal, bis Viktor überzeugt ist. 118 / 125 Das Geheimnis der Höhle Anmerkungen I Dritte Partei kann durch Viktor nicht überzeugt werden I Videoaufnahme könnte vorher durch Peggy und Viktor abgesprochen werden I Nach n Runden beträgt die Wahrscheinlichkeit, dass Peggy Viktor betrügt, 1 : 2n . 119 / 125 Quadratische Reste Es sei Zn = {0, 1, . . . , n − 1} und Zn∗ = {a ∈ Zn | ggT(a, n) = 1} Ferner gilt kZn∗ k = ϕ(n), die eulersche Phi-Funktion. Ein Element a ∈ Zn∗ heißt quadratischer Rest modulo n wenn es ein b ∈ Zn∗ gibt, so dass gilt: b2 = b · b = a (mod n). Man sagt, „b ist eine Quadratwurzel von a modulo n.“. 120 / 125 Quadratische Reste Beispiel n = 55 Zn∗ = {1, 2, 3, 4, 7, 8, 9, 12, 13, 14, 16, 17, . . . } a = 34 hat genau 4 Quadratwurzeln modulo 55: I b1 = 12, denn 12 · 12 mod 55 = 144 mod 55 = 34 I b2 = 23, denn 23 · 23 mod 55 = 529 mod 55 = 34 I b3 = 32, denn 32 · 32 mod 55 = 1024 mod 55 = 34 I b4 = 43, denn 43 · 43 mod 55 = 1849 mod 55 = 34 Wenn n prim, dann gibt es entweder 0 oder 2 Quadratwurzeln; ist n das Produkt zweier Primzahlen, dann gibt es entweder keine oder vier Quadratwurzeln. Satz: Wenn n = pq und p, q prim, dann ist das Berechnen der Quadratwurzel modulo n genauso schwierig wie das Faktorisieren von n. 121 / 125 Anwendung: Das Fiat-Shamir-Protokoll I Public-Key-Verfahren I genutzt zur Authentifizierung I geringer Rechenaufwand (Gegensatz zu RSA) 2 Phasen: 1. Schlüsselerzeugung 2. Anwendung 122 / 125 Fiat-Shamir-Protokoll Phase 1: Schlüsselerzeugung 1. Alice erzeugt 2 große Primzahlen p und q, berechnet n = pq (n ist öffentlich; die Faktorisierung natürlich nicht) 2. Alice wählt eine Zahl s (ihr individuelles Geheimnis, „secret“) 3. Alice berechnet v := s2 mod n (v ist ihr Identitätsmerkmal) Ebenso möglich: n ist eine Systemkonstante, v und s werden durch eine zentrale Instanz vorgegeben 123 / 125 Fiat-Shamir-Protokoll Phase 2: Protokollanwendung Ziel: Alice will Bob überzeugen, dass sie das „Geheimnis“ von s kennt, ohne s zu übermitteln (s ist eine Quadratwurzel von v ). Bob kennt v 1. Alice wählt zufällig ein r ∈ Zn∗ , berechnet das (modulare) Quadrat x := r 2 mod n und schickt dieses an Bob (den Host). 2. Bob wählt ein zufälliges Bit („wirft eine Münze“) und schickt den Wert an Alice. 3. Alice: I I wenn b = 0, so schickt Alice y := r an Bob. wenn b = 1, so schickt Alice y := rs mod n an Bob. 4. Bob prüft: I I wenn b = 0, ob y 2 mod n = x wenn b = 1, ob y 2 mod n = xv mod n. Schritte 1.-4. werden so lange wiederholt, bis Bob überzeugt ist, dass Alice s besitzt oder bis Alice eine falsche Antwort gibt. 124 / 125 Fiat-Shamir-Protokoll Anmerkungen: I s bleibt geheim, wird nicht übertragen. I Bob berechnet (wenn b = 1) (rs mod n)2 = r 2 s2 mod n = r 2 v mod n I Alice kann mit Wkt. 0.5 betrügen I betrügerische Alice, die die Wurzel von v nicht kennt, kann höchstens auf eine der beiden Fragen antworten, niemals auf beide I Nutzung des Protokolls: Authentifizierung bei sehr geringer Rechenleistung (z. B. per Smartcard) 125 / 125