Kryptographie für CTFs Eine Einführung KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kitctf.de
Einführung Cryptography is the practice and study of techniques for secure communication in the presence of third parties. Wikipedia Nicht Wissenschaftlich Dafür Vorlesungen und Praktika aus Kryptographie und Sicherheit Die Grundlagen für CTF-Anfänger 2
Klassiker Caesar-Chiffre Jeder Buchstabe wird um festen Werk k verschoben k = 3 Brechen durch ausprobieren oder durch Häufigkeitsanalysen einfach möglich Wird heutzutage immer noch verwendet (spiegel.de Paywall) 3
4
Klassiker Vigenère-Chiffre Wähle Schlüsselwort und verschiebe jeden Buchstaben entsprechend dem Schlüsselbuchstaben Schlüssellänge bestimmen und dann Caesar-Chiffre für jede Schlüsselposition einzeln brechen 5
Symmetrische Verschlüsselungen Blockchiffren Verschlüsselt Blöcke fester Länge Betriebsmodus wird zur Verschlüsselung längerer Daten verwendet Stromchiffren Pseudozufälliger Schlüsselstrom wird aus Schlüssel abgeleitet Schlüsselstrom wird mit Klartext kombiniert 6
Stromchiffren RC4, SEAL, Salsa20, CryptMT, Mögliche Angriffe: Bekannter Klartext: Aus einem bekannten Klartext m mit passendem Chiffrat c kann der Schlüsselstrom K rekonstruiert werden K = m c Key-Reuse: Sind c 1 und c 2 mit dem gleichen Schlüssel verschlüsselt worden, dann kann man m 1 m 2 wie folgt berechnen. c 1 c 2 = m 1 m 2 7
Blockchiffren DES, IDEA, RC5, AES, Blowfish, Block- und Schlüssellänge Padding: Erweitern der Nachricht auf Blocklänge Betriebsmodi Electronic Code Book (ECB) Cipher Block Chaining (CBC) Counter Mode (CTR) 8
Electronic Code Book Verschlüssle jeden Block einzeln Probleme: Dateneinfügen möglich Deterministisch 9
Cipher Block Chaining Verschlüsseln: Enc(Block XOR dem vorigen Chiffrat-Block) Entschlüsseln: Dec(Chiffrat-Block) XOR vorigem Chiffrat-Block Initialisierungsvektor zufällig Probleme: Verlust eines Chiffrat-Blocks führt zu Verlust 2er Klartextblöcke 10
CBC Padding Oracle Padding: Klartext wird auf Blocklänge aufgefüllt. Bsp.: PKCS#7 x Byte fehlen zum vollen Block. Fülle jedes der Bytes mit dem Wert x. 11
CBC Padding Oracle Über Änderung am vorletzten Block lässt sich über das Paddingorakel der letzte Block komplett bestimmen 12
Asymmetrische Kryptosysteme Verschlüsselung: RSA Elgamal McEliece Signatur: RSA Elgamal DSA 13
RSA Wähle zwei Primzahlen p und q Bestimme N = p q Bestimme φ N = p 1 (q 1) Wähle e so, dass ggt e, φ N = 1 1 < e < φ N gilt Bestimme d so, dass e d 1 mod φ N gilt. (erweiterter euklidischer Algorithmus) Öffentlicher Schlüssel: N, e Privater Schlüssel: d ggt(a, b): Größter gemeinsamer Teiler von a und b φ n = a Nห1 a n ٿ ggt a, n = 1 Anzahl aller Zahlen, die zu n Teilerfremd sind. (eulersche Funktion) 14
RSA Encryption: c = m e mod N Decryption: c d mod N m ed mod N, mit dem kleinen fermatschen Satz med mod φ N mod N m 1 mod N (Mit m < N) Holomorphie: c 1 = m 1 e mod N und c 2 = m 2 e mod N, so gilt c 1 c 2 = m 1 e m 2 e mod N = m 1 m 2 e mod N. Es gilt also Enc(m 1, pk) Enc(m 2, pk) = Enc(m 1 m 2, pk) 15
Angriffe auf RSA Bedingung Angriff Komplexität Keine Faktorisierung exp log N 1 3 log log N 2 3 Kleines d d < 1 3 N1 4 Wiener s Attack Polynomiell m < N 1 e Wurzel ziehen Polynomiell Senden der gleichen Nachricht an viele Empfänger mit selben e Håstad's broadcast attack Polynomiell Und viele mehr! 16
Erinnerung: Security Fest CTF Do 31.5 12:00 CEST Fr 01.6 18:00 CEST Freitag ab 11 Uhr treffen im ATIS oder von Remote Am besten #securityfest in Slack beitreten Wir freuen uns über jeden der Lust hat 17
Aufgaben ctf.bplaced.net (Crypto 20 + Crypto 30) Picoctf.com cryptopals.com overthewire.org/wargames/krypton 18