IT-Sicherheitsmanagement Teil 11: Symmetrische
Transcription
IT-Sicherheitsmanagement Teil 11: Symmetrische
IT-Sicherheitsmanagement Teil 11: Symmetrische Verschlüsselung ISM – SS 2016 – 11/Symmetrische Verschlüsselung 16.06.16 1 Literatur [11-1] Schäfer, Günter: Netzsicherheit. dpunkt, 2003 [11-2] Stallings, William: Sicherheit im Internet. Addison-Wesley, 2001 [11-3] Beutelspacher, A.; Schwenk, J.; Wolfenstetter, K.-D.: Moderne Verfahren der Kryptographie. 4. Auflage, Vieweg 2001 [11-4] Schmeh, Klaus: Kryptografie. dpunkt, 4. Auflage, 2009 [11-5] Schneier, Bruce: Angewandte Kryptographie. Addison-Wesley http://www.schneier.com/ [11-6] Freiermuth, Karin; Hromkovic, Juraj; Keller, Lucia; Steffen, Björn: Einführung in die Kryptologie. Vieweg+Teubner, 2010 [11-7] Buchmann, Johannes: Einführung in die Kryptographie. 5. Auflage, Springer, 2010 [11-8] Burnett, Steve; Paine, Stephen: Kryptographie. RSA Security‘s Official Guide. RSA Press, mitp, 2001 ISM – SS 2016 – 11/Symmetrische Verschlüsselung 2 Übersicht • • • • • • Gedanken zur Brute Force-Methode Perfekte Sicherheit One-Time-Pad Meet in the Middle Betriebsarten von Blockchiffren Stromchiffren – RC4 ISM – SS 2016 – 11/Symmetrische Verschlüsselung 3 Brute Force Angriff – ein Gedankenspiel I Schlüssellänge [bit] Anzahl möglicher Schlüssel Zeitbedarf 106 Entschl./s 32 4,3 * 1009 35,8 Min. 56 7,2 * 1016 1.142 Jahre 128 3,4 * 1038 5,4*1024 Jahre Hinweise • Eine Annahme, dass 106 Entschlüsselungen pro Sekunde für das DES-Verfahren möglich sind, entspricht der Technologie Mitte der 90er Jahre. • Durch Spezialhardware (Kosten ca. 8.000 EUR) soll der Schlüsselraum von 256 in ca. 6 Tagen durchlaufen werden können. Bei 1 Woche und 255 Versuchen entspricht dies ca. 60 Milliarden/s bzw. 60.000/10-6s, also 60/ns – glaubhaft? ISM – SS 2016 – 11/Symmetrische Verschlüsselung 4 Brute Force Angriff – ein Gedankenspiel II Nun realisieren wir einen Ciphertext-Only-Angriff, also einem Angriff, bei dem nur der verschlüsselte Text bekannt ist. func crack(ChipherText) { for key:= 0..2n-1 do PlainText:= encrypt(ChipherText,key) if test(PlainText) then return key fi od throw Exception("I give up") } Und wie sieht die test()-Funktion aus? Woher "weiß" diese Funktion, dass der richtige Wert gefunden wurde? ISM – SS 2016 – 11/Symmetrische Verschlüsselung 5 Brute Force Angriff – ein Gedankenspiel III • Nehmen wir an, dass der richtige Plaintext eine Word-Datei ist, dann würde test() prüfen, ob vermutete Plaintext überhaupt eine Word-Datei sein kann (Kopf, Struktur etc.). Kann dieser Test 106 mal pro Sekunde erfolgen? • Aber das reicht noch nicht, denn auch wenn formal eine WordDatei vorliegt, muss diese nicht die richtige sein, denn es kann dort so etwas drin stehen: 3g&7r_90hdIk4$ etc. • Noch schlimmer ist es, wenn es reiner ASCII-Text ist; dann ist der Test schnell zu implementieren, aber das Problem mit 3g&7r_90hdIk4$ besteht trotzdem. • Noch schlimmer: der Ciphertext ist ein verschlüsseltes Passwort. Dann ist jeder ASCII-Text ein Kandidat für den richtigen Plaintext. Oder: was nutzt eine geknackte Passwort-Datei mit ca. 250.000 möglichen korrekten Zeichenketten? ISM – SS 2016 – 11/Symmetrische Verschlüsselung 6 Brute Force Angriff – ein Gedankenspiel IV Nun realisieren wir einen Known-Plaintext-Angriff, also einem Angriff, bei dem der Plaintext und der ChiperText bekannt sind: func crack(ChipherText,Plaintext) { for key:= 0..2n-1 do Plain:= encrypt(ChipherText,key) if test(PlainText,Plain) then return key fi od throw Exception("I give up") } Und wie sieht die test()-Funktion aus? Trivial und sehr schnell. ISM – SS 2016 – 11/Symmetrische Verschlüsselung Bei diesem Angriff sollten wir uns wegen schneller Hardware Sorgen machen... 7 Was lernen wir daraus? • Ein Angreifer versucht möglichst aus einem Ciphertext-Only-Angriff einen Known-Plaintext-Angriff zu machen – und das muss verhindert werden. • Liefern Sie daher dem Angreifer möglichst nie ein Paar (Chiphertext, Plaintext) oder gar eine Menge dieser Paare. • Leider liefern der Kontext und weitere öffentliche Informationen genügend Hinweise: – Struktur/Aufbau von Dateien oder Dateisysteme – (Menschliche) Sprache, Floskeln – Protokollaufbau (Bitfelder) – Bilder (Web) • Dann kann der Chiphertext selbst eine Quelle von Hinweisen sein: – Größere gleiche Blöcke ISM – SS 2016 – 11/Symmetrische Verschlüsselung 8 Perfekte Sicherheit (Shannon) • ℙ Menge der möglichen Klartexte (plain text) • ℂ Menge der verschlüsselten Texte (cipher text) • Menge der möglichen Schlüssel Ein Verschlüsselungsverfahren heißt perfekt sicher, wenn es nur einen Schlüssel zur Entschlüsselung gibt und wenn die verschlüsselten Texte unabhängig von den Klartexten sind, also dass P(p|c) = P(p) mit p ε ℙ und c ε ℂ für alle k ε ist wobei P(p|c) die bedingte Wahrscheinlichkeit ist. Das bedeutet aber auch, dass |ℙ|<=|ℂ|<=| | ist wobei | | die Anzahl der Elemente von ISM – SS 2016 – 11/Symmetrische Verschlüsselung bedeutet. 9 One-Time-Pad (Vernam-Chiffre) I • Dieses Verfahren ist eines der wenigen, die perfekt sicher sind. • Es wird eine Tabelle (Pad) mit wirklich zufälligen Zeichen der Länge L erstellt. • Der Klartext hat dieselbe Länge L. • Verschlüsselung: Jedes Zeichen des Klartextes wird mit dem korrespondierenden Zeichen der Tabelle verknüpft, z. B. per XOR. • Entschlüsselung: Jedes Zeichen des Chiffretextes wird mit dem korrespondierenden Zeichen der Tabelle mit einer inversen Funktion verknüpft, z. B. auch per XOR. ISM – SS 2016 – 11/Symmetrische Verschlüsselung 10 One-Time-Pad (Vernam-Chiffre) II • Vorteile – Sehr sicher, wenn wirklich zufällige Kodierungen benutzt werden Im 2.Weltkrieg hatte die Sowjetische Armee Wiederholungen benutzt, so dass einige Texte entschlüsselt werden konnten. • Nachteile – Unhandlich – Beide Seiten müssen dieselbe unhandliche Tabelle benutzen. ISM – SS 2016 – 11/Symmetrische Verschlüsselung 11 Begriffe • Blockchiffre = Unabhängige Verschlüsselung von Blöcken gleicher Länge, meist 64 bit – Jeder Block wird für sich getrennt von anderen behandelt. – Die kryptographischen Nachteile werden durch Blockmodi beseitigt. • Stromchiffre = Kontinuierliche Verschlüsselung unterschiedlich langer Blöcke, von 1 bit bis viele Bytes auch variierend ISM – SS 2016 – 11/Symmetrische Verschlüsselung 12 Blockchiffren – Digital Encryption Standard (DES) • Blockchiffre mit 56 bit effektiver Schlüssellänge, Schlüssel besitzt noch 8 Bits Prüfsumme • Block ist 64 bit lang • Entwickelt von IBM Anfang der 70er Jahre • Das DES-Verfahren ist (bis auf die Schlüssellänge) sehr sicher: in 35 Jahren ist es nicht gelungen das Verfahren zu brechen, aber: – Bis 1997 keine erfolgreiche Known-Plaintext-Attacke, dann aber: DES-Challenge (Preis von RSA Data Security) 14.000 Rechner rechneten ca. 4 Monate – 1998: Reduktion auf 39 Tage, teilweise 56 h – 1999: Unterschreitung der 24 h-Grenze 100.000 Rechner rechneten 22 h – Ab ca. 2000: Bau von speziellen Maschinen • DES gehört zu den am besten untersuchten Verfahren. • Ursprünglich wollte IBM einen 128 bit-Schlüssel benutzen und wurde von der US-Regierung daran gehindert. ISM – SS 2016 – 11/Symmetrische Verschlüsselung 13 Schlüssellängen - Ein weiteres Gedankenexperiment Schlüssellänge Aufwand 56 bit 1s 64 bit 4 Minuten 80 bit 194 Tage 112 bit 109 Jahre 128 bit 1014 Jahre 192 bit 1033 Jahre 256 bit 1052 Jahre Erläuterung: Wenn das Durchprobieren aller 56 bit-Schlüssel 1 s dauern würde, dann würde bei einem 64 bit-Schlüssel das Probieren schon 4 Minuten dauern.... ISM – SS 2016 – 11/Symmetrische Verschlüsselung 14 Doppelte Verschlüsselung • • • Es entsteht eine doppelte Verschlüsselung und damit eine theoretische Verlängerung des Schlüssels auf 2*56 also 112 bit. Dies wäre vollkommen ausreichend. Dabei wird voraus gesetzt, dass eine doppelte Verschlüsselung nicht durch eine einzige mit einem anderen Schlüssel ersetzt werden kann. Diese Bedingung erfüllt DES, aber z.B. nicht XOR. Es gibt aber einen Angriff: Meet in the Middle. ISM – SS 2016 – 11/Symmetrische Verschlüsselung 15 Meet in the Middle I (A) (B) (M) Plaintext ist bekannt • • • • Chiffretext ist bekannt Es ist ein Paar(Plaintext, Chiffretext) bekannt. (A): vom Plaintext ausgehend werden alle Schlüssel (256) angewendet und in in einer Tabelle abgespeichert. Das ist die Menge aller Werte (M). Dann wird vom Chiffretext ausgehend alle Schlüssel (256) schrittweise entschlüsselt. Bei jedem Schritt wird geprüft, ob ein Wert aus der Tabelle der (M) gefunden wurde. Falls ja, dann ist das Paar (K1, K2) ein Kandidat der gesuchten Schlüssel. Leider/zum Glück ist das nicht eindeutig, denn es mehrere Kandidaten gefunden werden. Dann wäre ein weiteres Paar(Plaintext, Chiffretext) notwendig, um die falschen Kandidaten auszusortieren. ISM – SS 2016 – 11/Symmetrische Verschlüsselung 16 Meet in the Middle II - Aufwand • • • • • Ein volles Durchprobieren für K1: 256 DES Abspeichern und Sortieren in der Datenbank Ein volles Durchprobieren für K2: 256 DES Bei jedem Schritt: Suchen in der Datenbank Ergebnis: Menge von Kandidaten • Anhand eines weiteren Paares (Plaintext, Chiffretext) wird jeder Kandidat jeweils 1x geprüft und gegebenenfalls aussortiert. • Sind noch Kandidaten übrig, müssen diese mit einem weiteren Paar (Plaintext, Chiffretext) ausgeschlossen werden. d.h. bestenfalls eine effektive Schlüssellänge von 258, eher 257. ISM – SS 2016 – 11/Symmetrische Verschlüsselung 17 Dreifache Verschlüsselung I (A) (B) (M) • • • • Nun hätten wir 3x56 bit, also einen 168 bit-Schlüssel. Aber auch hier funktioniert der Meet in the Middle-Angriff, so dass für K1 je 256 und für K2 auch 256 Schlüssel zu probieren und in der Tabelle abzuspeichern sind: 2112. Dazu kommt noch der rechte Zweig mit 256, was aber in Anbetracht von 2112 zu vernachlässigen ist. Die effektive Schlüssellänge ist 112 bit, was (heute) ausreichend ist (siehe Gedankenexperiment von oben) ISM – SS 2016 – 11/Symmetrische Verschlüsselung 18 Dreifache Verschlüsselung II - Triple-DES (3DES) • Die 2. Verschlüsselung ist eine "Entschlüsselung" – Optional steht dann noch eine 1DES zur Verfügung, wenn K1 = K2 = k3 ist. – Sonst keine Vor- oder Nachteile, außer Performanz • e: Verschlüsselung, d: Entschlüsselung, m: Klartext, c: Chiffretext: c= e(K1,d(k2,e(k3,m))) • Falls K1 = K3, dann ist die Schlüssellänge 112 bit. In der Praxis wird so gearbeitet. ISM – SS 2016 – 11/Symmetrische Verschlüsselung 19 Weitere Verfahren neben AES und DES • Blowfish – https://de.wikipedia.org/wiki/Blowfish • Twofish – Teilnehmer am AES-Wettbewerb – https://de.wikipedia.org/wiki/Twofish • CAST-256 – Wird von PGP benutzt – RFC 2144, 128 bit-Schlüssel – Teilnehmer am AES-Wettbewerb • MISTY – Mitsubishi – 64 bit-Blöcke, variable Runden mit 128 bit-Schlüssel – Parallelisierbarkeit • Und noch: Safer, GOST, LOKI, Khufu, Khafre.... ISM – SS 2016 – 11/Symmetrische Verschlüsselung 20 Betriebsarten von Blockchiffren Der Zweck der Betriebsarten/Modi liegt darin, verschiedene Blöcke so zu verknüpfen, dass bei Unkenntnis des Schlüssels das Entschlüsseln erschwert wird. Voraussetzung dazu ist das Auffüllen des letzten Blocks auf das Mehrfache der Blocklänge (Padding). Diese Zusatzbits müssen beim Entschlüsseln wieder entfernt werden. Es werden folgende Betriebsarten vorgestellt: • • • • Electronic Codebook Mode (ECB-Mode) Cipher Block Chaining Mode (CBC-Mode) Output Feedback Mode (OFB-Mode) Cipher Feedback Mode (CFB-Mode) Siehe auch: http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation ISM – SS 2016 – 11/Symmetrische Verschlüsselung 21 Electronic Codebook Mode (ECB-Mode) I • Plain1 Plain2 Plain3 Plainn encryptk encryptk encryptk encryptk Cypher1 Cypher2 Cypher3 Cyphern Verschlüsselung Vorteile und Probleme – Parallelität ist sehr einfach zu realisieren. – Für kurze Nachrichten ist ECB vollkommen geeignet Ansonsten: nicht benutzen! ISM – SS 2016 – 11/Symmetrische Verschlüsselung 22 Electronic Codebook Mode (ECB-Mode) II • Cypher1 Cypher2 Cypher3 Cyphern decryptk decryptk decryptk decryptk Plain1 Plain2 Plain3 Plainn Entschlüsselung Probleme – Angriff durch Häufigkeitsanalyse möglich – Gleiche Blöcke werden gleich verschlüsselt. Siehe auch: https://de.wikipedia.org/wiki/Electronic_Code_Book_Mode ISM – SS 2016 – 11/Symmetrische Verschlüsselung 23 Cipher Block Chaining Mode (CBC-Mode) I Initialisierungsvektor • • • Plain1 Plain2 Plain3 Plainn + + + + encryptk encryptk encryptk encryptk Cypher1 Cypher2 Cypher3 Cyphern Verschlüsselung Der Initialisierungsvektor ist ein nicht geheimer Block, mit dem als erstes per XOR verschlüsselt wird. Nun gibt es keine gleichen Chiffreblocks bei denselben Klartextblöcken mehr. Mit einer XOR-Funktion wird "addiert". ISM – SS 2016 – 11/Symmetrische Verschlüsselung 24 Cipher Block Chaining Mode (CBC-Mode) II Initialisierungsvektor Cypher1 Cypher2 Cypher3 Cyphern decryptk decryptk decryptk decryptk + + + + Plain3 Plainn Plain1 • Plain2 Entschlüsselung Dies ist die zu empfehlende Betriebsart Siehe auch: https://de.wikipedia.org/wiki/Cipher_Block_Chaining_Mode ISM – SS 2016 – 11/Symmetrische Verschlüsselung 25 Output Feedback Mode (OFB-Mode) I Initialisierungsvektor Plain1 encryptk encryptk • • Plain2 Plainn Plain3 Verschlüsselung encryptk encryptk + + + + Cypher1 Cypher2 Cypher3 Cyphern Der Initialvektor wird in einer Fortschaltfunktion wiederholt mit dem Schlüssel verschlüsselt. Mit jeweils dem neuen verschlüsselten Wert werden per XOR die Klartextblöcke verschlüsselt. ISM – SS 2016 – 11/Symmetrische Verschlüsselung 26 Output Feedback Mode (OFB-Mode) II Initialisierungsvektor Cypher1 encryptk encryptk • • • Cypher2 Cypher3 Cyphern Entschlüsselung encryptk encryptk + + + + Plain1 Plain2 Plain3 Plainn Die Verschlüsselungsketten können im Voraus/parallel berechnet werden, so dass hohe Parallelität erreicht werden kann. Mit einer XOR-Funktion wird "addiert". Diese Art der mehrfach verschlüsselten Werte wird uns bei dem Pseudozufallsgeneratoren wieder begegnen. Siehe auch: https://de.wikipedia.org/wiki/Output_Feedback_Mode ISM – SS 2016 – 11/Symmetrische Verschlüsselung 27 Cipher Feedback Mode (CFB-Mode) I Initialisierungsvektor encryptk Plain1 • Plainn Verschlüsselung + encryptk Cypher1 • Plain3 Plain2 + encryptk Cypher2 + Cypher3 encryptk + Cyphern Wie beim OFB-Mode wird der Initialvektor mehrfach hintereinander verschlüsselt, wobei bei jedem Schritt nicht der Schlüssel sondern das Ergebnis der XOR-Verschlüsselung des Klartextblocks benutzt wird. Wie bei OFB wird mit dem neuen verschlüsselten Vektor der nächste Klartextblock per XOR verschlüsselt. ISM – SS 2016 – 11/Symmetrische Verschlüsselung 28 Cipher Feedback Mode (CFB-Mode) II Initialisierungsvektor encryptk Cypher1 Cypher3 Cyphern Entschlüsselung + encryptk Plain1 • Cypher2 + Plain2 encryptk + Plain3 encryptk + Plainn Siehe auch: http://de.wikipedia.org/wiki/Cipher_Feedback_Mode ISM – SS 2016 – 11/Symmetrische Verschlüsselung 29 Bemerkungen • Die beiden letzten Modi (OFB und CFB) erlauben auch das Verarbeiten von Blöcken, die kleiner als die intendierte Blocklänge von (meist) 64 bit sind. • ECB wird selten benutzt, öfter CFB, insbesondere im Internet. • Stromchiffren (siehe unten) arbeiten in der Regel im OFB-Modus. ISM – SS 2016 – 11/Symmetrische Verschlüsselung 30 Stromchiffren • Blockchiffren haben den Nachteil, dass der Klartext in Einheiten der Blockgröße vorliegen sollte. • Für interaktive Anwendungen heißt dies, dass gewartet werden muss bis ein Block vorhanden ist oder dass der Block mit Füllinformation aufgefüllt werden muss. • Stromchiffren = Verschlüsselungsalgorithmen, die keine Einheiten mit festgelegter Größe (Blöcke) benötigen und bei denen die Einheiten ähnlich den Blockmodi verknüpft sind. ISM – SS 2016 – 11/Symmetrische Verschlüsselung 31 Verfahren von Ron Rivest • RC2 (Rivest Cipher), RFC 2268 – Einsatz in S/MIME – Relativ wenig untersucht • RC4 – Entwickelt 1987 – Geheim gehalten bis 1994 • RC5 • RC6 – Schnell und einfach – Teilnehmer am AES-Wettbewerb Siehe: http://de.wikipedia.org/wiki/Ronald_L._Rivest http://en.wikipedia.org/wiki/RC2 http://en.wikipedia.org/wiki/RC4_(cipher) http://en.wikipedia.org/wiki/RC5 ISM – SS 2016 – 11/Symmetrische Verschlüsselung 32 RC 4 • Rivest Cipher No. 4, 1987, http://en.wikipedia.org/wiki/RC4_(cipher) • Erst geheim, ab 1994 veröffentlicht. • Dieses Verfahren wird in SSL/SSH, WEP und WPA (WLAN) verwendet. Inzwischen wird von der Benutzung abgeraten. • RC4 ist in Software ca. 10x schneller als DES. ISM – SS 2016 – 11/Symmetrische Verschlüsselung 33 RC 4 - Vorbereitung • Schlüssellänge: 1..2048 bit, praktisch: 128 oder 256 bit • In ein Feld S mit 256 Zellen wird der jeweiligen Index zugewiesen. • Das Feld k wird mit Schlüssel der Länge L des Schlüssels gefüllt, nötigenfalls mehrfach hintereinander. • Dann werden 256 mal die Elemente in S anhand von k vertauscht: S0 S1 S2 S3 S4 S5 .... S 255 k0 k1 k2 k3 k4 k5 .... k 255 :=Index Byteweise mit Schlüssel füllen Falls Schlüssel kürzer als 2048 bit: Mehrfach wiederholen for j:=0, i:=0 to 255 do j:=(j + S[i] + k[i mod L]) mod 256 swap(S[i],S[j]) od ISM – SS 2016 – 11/Symmetrische Verschlüsselung 34 RC 4 - Durchführung • Das Feld S von 256 Elementen, in denen die Werte von 0 bis 255 entsprechend dem Schlüssel gesetzt wurden, wird nach dem Verfahren unten bearbeitet. • Das Ergebnis eines Durchlaufs Key wird mit XOR mit den Klartext verschlüsselt. Für das nächste Byte wird ein erneuter Durchlauf durchgeführt. i:= (i+1) mod 256; j:= (j+s[i]) mod 256; swab(S[i],S[j]) key:= (S[i]+S[j]) mod 256; Cipher[..]:= Plain[..] xor key ISM – SS 2016 – 11/Symmetrische Verschlüsselung 35 Weitere Stromchiffren (Beispiele) • A5 – – – – Einsatz in Mobil Telefonen: D1, D2 E-Plus und E2 Gehört zum GSM-Standard War zunächst geheim Ist in den beiden einfachen Versionen recht unsicher, die dritte ist besser (A5/3) – Siehe: http://de.wikipedia.org/wiki/A5_(Algorithmus) • SEAL – Sicherheit und Schnelligkeit ähnlich RC4 • Eigenes Verfahren in winzip – Sehr unsicher ISM – SS 2016 – 11/Symmetrische Verschlüsselung 36 Nach dieser Anstrengung etwas Entspannung.... ISM – SS 2016 – 11/Symmetrische Verschlüsselung 37