Workshop Experimente zur Kryptographie

Größe: px
Ab Seite anzeigen:

Download "Workshop Experimente zur Kryptographie"

Transkript

1 Fakultät Informatik, Institut Systemarchitektur, Professur Datenschutz und Datensicherheit Workshop Experimente zur Kryptographie Sebastian Clauß Dresden,

2 Alltägliche Anwendungen von Kryptographie Login-Prozeduren am PC -> kollisionsresistente Hashfunktionen Sichere Webseiten, -> Verschlüsselung, Authentikation, digitale Signatur Signierte und verschlüsselte s -> Verschlüsselung, digitale Signatur Festplattenverschlüsselung -> besonders zeitkritische Verschlüsselung Kryptoexperimente 2

3 Kryptographie Sicherheit Beispiel Sicher??? Kryptoexperimente 3

4 Schutzziele Mittels Kryptographie erreichbare Schutzziele Vertraulichkeit Informationen werden nur Berechtigten bekannt Integrität Informationen können nicht unerkannt modifiziert werden Zurechenbarkeit Dem Sender einer Nachricht kann das Senden (auch gegenüber Dritten) nachgewiesen werden. (Nachweis des Empfangs sowie des Zeitpunktes des Sendens/Empfangens erfordert weitere Maßnahmen.) Kryptoexperimente 4

5 Begriffe Kryptologie Kryptographie Kryptoanalyse Kryptographie (griech. kryptos + graphein ) Wissenschaft von den Methoden der Ver- und Entschlüsselung von Informationen. Kryptoanalyse (griech. kryptos + analyein ) Wissenschaft vom Entschlüsseln von Nachrichten ohne Kenntnis dazu notwendiger geheimer Informationen Kryptoexperimente 5

6 Kryptosystem Vertrauensbereich des Senders (Alice) Schlüssel k e K Unsicherer Kanal: Angriffsbereich Vertrauensbereich des Empfängers (Bob) Schlüssel k d K Nachricht m M Hallo,... Verschlüsselungsfkt. enc ENC Schlüsseltext c C c = enc(k e, m) Entschlüsselungsfkt. dec DEC Nachricht m = dec(k d, c) Hallo,... g9b Kryptoexperimente 6

7 Kerckhoffs Prinzip Die Sicherheit eines Verfahrens darf nicht von der Geheimhaltung des Verfahrens abhängen, sondern nur von der Geheimhaltung des Schlüssels. [Auguste Kerckhoffs: La Cryptographie militaire. Journal des Sciences Militaires, Januar 1883.] Keine Security by Obscurity Annahme: Angreifer kennt das Verfahren und die öffentlichen Parameter Sicherheit des Verfahrens begrenzt durch Sicherheit der Schlüsselgenerierung und Sicherheit des Schlüsselaustauschs Kryptoexperimente 7

8 Symmetrisches Konzelationssystem Zufallszahl r Schlüsselgenerierung k A,B := keygen(r) Alice geheimer Schlüssel k A,B Angriffsbereich geheimer Schlüssel k A,B Bob Nachricht m Verschlüsselung enc ENC Schlüsseltext c c = enc(k A,B,m) Entschlüsselung dec DEC Nachricht m = dec(k A,B,c) Vertrauensbereich öffentlich bekannter Algorithmus Sicherer Kanal für Schlüsselaustausch Kryptoexperimente 8

9 Symmetrisches Authentikationssystem Zufallszahl r Schlüsselgenerierung k A,B := keygen(r) Alice geheimer Schlüssel k A,B Nachricht m MAC berechnen auth AUTH Angriffsbereich Nachricht, MAC (message authentication code) m, a a = auth(k A,B,m) MAC testen test TEST geheimer Schlüssel k A,B Bob test(k A,B,a):= a = auth(k A,B,m) Vertrauensbereich öffentlich bekannter Algorithmus Sicherer Kanal für Schlüsselaustausch Kryptoexperimente 9

10 Symmetrische Algorithmen Klassische Algorithmen Caesar-Chiffre (Bsp. k = 3) A B C D E F D E F G H I Vigenere-Chiffre HALLO ( ) + BGXWT ( ) = JHJII (= ) mod 26 Aktuell (DES) AES Klartext + durcheinanderbringen + Schlüssel Teilschlüsselgenerierung durcheinanderbringen Kryptoexperimente 10 Schlüsseltext

11 Asymmetrisches Konzelationssystem Zufallszahl r Schlüsselgenerierung k A,B := keygen(r) Alice öffentlicher Schlüssel k e,b Angriffsbereich privater Schlüssel k d,b Bob Nachr. m Zuf.-z. r Verschlüsselung enc ENC Schlüsselttext c c = enc(k e,b,m, r ) Entschlüsselung dec DEC Nachricht m = dec(k d,b,c) Vertrauensbereich öffentlich bekannter Algorithmus Kryptoexperimente 11

12 Digitales Signatursystem Zufallszahl r Schlüsselgenerierung (k s,b, k t,b ) := keygen(r) Alice öffentlicher Schlüssel k t,b test(k t,b,s) {true, false} Testen test TEST Angriffsbereich Nachricht, Signatur m, s s = sign(k s,b,m, r ) Signieren sign SIGN privater Schlüssel k s,b Nachr. m Zuf.-z. r Bob Vertrauensbereich öffentlich bekannter Algorithmus Kryptoexperimente 12

13 Asymmetrische Algorithmen RSA basierend auf Faktorisierungsannahme -> Faktorisieren großer Zahlen ist schwer Schlüsselgenerierung n = p q (p,q sind große zufällig gewählte Primzahlen) c mit ggt(c, (p-1) (q-1)) = 1 d = c -1 mod (p-1) (q-1)) Öffentlich: n,c geheim: d Verschlüsseln: Entschlüsseln: x = m c mod n m = x d mod n = (m c ) d mod n Weitere Algorithmen: DSA, basierend auf diskretem Logarithmus basierend auf elliptischen Kurven Kryptoexperimente 13

14 Vergleich der Systeme Symmetrische Verfahren Asymmetrische Verfahren Sicherer Kanal für Schlüsselaustausch erforderlich? Ja Nein (allerdings: Zuordnung der öffentlichen Schlüssel) Performance In der Regel sehr gut Weniger gut Mögliche Einsatzgebiete Konzelation Vertraulichkeit Symmetrische Authentikation (MAC) Integrität Konzelation Vertraulichkeit Digitale Signatursysteme Integrität Zurechenbarkeit Kryptoexperimente 14

15 Hybrides Konzelationssystem geheimer Schlüssel (session key) k A,B öffentlicher Schlüssel k e,b privater Schlüssel k d,b enc1 c 1 dec1 k A,B = dec1(k d,b,c 1 ) Nachricht m enc2 c 2 c 1 = enc1(k e,b,k A,B, r ), c 2 = enc2(k A,B,m) dec2 Nachricht m = dec2(k A,B, c 2 ) Kryptoexperimente 15

16 Experimente Wie funktioniert ein Kryptosystem? klassische Verfahren durchrechnen (geht ohne Computer) Visuelle Kryptographie Asymmetrische Verfahren (Beispiel RSA) durchrechnen Verfahren programmieren (zeitaufwendig) Aussagen zur Sicherheit bzw. Angriffe auf Kryptosysteme klassische Verfahren brechen Schwachstellen bestimmter Verfahren ausnutzen (z.b. RSA naiv) Brute-Force Angriffe auf schlecht gewählte Schlüssel Was sagt die Schlüssellänge aus? Einsatz von Kryptoverfahren Installieren, ausprobieren Angreifermodell: wer darf was (nicht) wissen/können? -> was muss das eingesetzte Verfahren leisten? Schlüsselverteilung: Verifikation der Zuordnung von Schlüsseln zu Personen Kryptoexperimente 16

17 Visuelle Kryptographie Kryptoexperimente 17

18 Visuelle Kryptographie Pixel Teil 1 Teil 2 Überlagerung [Noar, Shamir, 1994] Kryptoexperimente 18

19 Visuelle Kryptographie Kryptoexperimente 19

20 Cryptool Lernprogramm zum Ausprobieren und Veranschaulichen kryptographischer Protokolle und Analysen/Angriffe Sehr umfangreich Ausführen verschiedener Kryptoverfahren Visualisierung des Ablaufs von Kryptoverfahren Klassische Verfahren (Caesar, Vigenere) AES, DES RSA Hybride Verfahren Verfahren zur Analyse von Schlüsseltexten etc. Umfangreiche Hilfe Herunterladen (Cryptool 1.4.x) und Installieren unter C:\temp\cryptool Kryptoexperimente 20

21 Cryptool - Ausprobieren A B C D E F Caesarchiffre die README-Datei verschlüsseln/entschlüsseln: Ver-/Entschlüsseln -> Symmetrisch (klassisch) -> Caesar/Rot13 Schlüsseltext analysieren (Buchstabenhäufigkeit): Analyse -> Werkzeuge zur Analyse -> Histogramm Schlüssel ermitteln: Analyse -> Symmetrisch (klassisch) -> Ciphertext only -> Caesar D E F G H I Häufigkeiten * a b c d e f g h i j k l m n o p q r s t u v w x y z Kryptoexperimente 21

22 Cryptool - Ausprobieren RSA Beispiel zum selbst rechnen (lassen) Einzelverfahren -> RSA Kryptosystem -> RSA Demo Schlüsselgenerierung n = p q = 3 11 = 33 c = 3 mit ggt(3, (2 10)) = 1 d = 7 = 3-1 mod 20 (3 7 = 21 = 1 mod 20) Öffentlich: n = 33, c = 3 geheim: d = 7 Verschlüsseln: Entschlüsseln: Nachricht m = 4 x = 4 3 mod 33 m = 31 7 mod 33 = 64 mod 33 = (-2) 7 mod 33 = 31 mod 33 = -128 mod 33 = 4 mod Kryptoexperimente 22

23 Cryptool - Ausprobieren RSA jetzt mit langen Zahlen Z.B. p, q = 2048 bit RSA-Demonstrator: Einzelverfahren -> RSA Kryptosystem -> RSA Demo Schlüsselerzeugung (Primzahlen generieren) ->langsam ( > 1 Minute) Öffentlicher Schlüssel: e = (2^16)+1 Kurze Nachricht ver- und entschlüsseln: m = 4 -> schnell Lange Nachricht verschlüsseln (z.b. Cryptool.exe) Ver-/Entschlüsseln -> Asymmetrisch -> RSA Verschlüsselung Schlüssel: RSA-512, (oder neu erzeugen) -> langsam zum Vergleich: AES (symmetrisch verschlüsseln) Ver-/Entschlüsseln -> Symmetrisch (modern) -> Rijndael (AES) -> sehr schnell Kryptoexperimente 23

24 Cryptool - Ausprobieren (Grundlegende) Sicherheit von RSA RSA-Schlüssel unterschiedlicher Länge erzeugen Einzelverfahren -> RSA Kryptosystem -> RSA Demo p = q = 50 bit, p = q = 100 bit, (in Datei kopieren zum Merken) Zahl faktorisieren Analyse -> Asymmetrische Verfahren -> Faktorisieren einer Zahl p = q = 50 bit -> schnell p = q = 100 bit -> 1 Minute oder mehr Empfehlung BSI: p, q = Kryptoexperimente 24

25 Hashfunktionen Was ist ein Hash? Abbildung von beliebig großer Menge auf Menge fester Größe Schwer umkehrbar Kollisionsresistent (zwei Werte mit gleichem Hashwert finden ist schwer) B C A I D F H E A C B G Kryptoexperimente 25

26 Hashfunktionen Wofür braucht man das? -----BEGIN PGP PUBLIC KEY BLOCK----- mqgibecfjrkrbacdnfvuigwhagbbcq5vn9cu5r2ngy+ymfbcqygdrjit0lf0w6u3 IzKOd1seHih5zURjsm0KsOz38szvbms8IcJoL6LPs04QI8BJmkDS1qZAzXkdtSuV zf5qdezmczmjhpu4tsvpcrn2pg0od8k57t4llg78ubehfwappnkqwp9ndwcgwgpz 7X7iSOJOWf2j7/exefwPrzED/0ltcZHgotqOBtIdVYWGmScAD2VAi7rFsGq60tIR 171c2fvnG2s/GF9V0HHYH+BSoW88E+0vGaApBzDkoSihEm//yoOi/79+5T+Vm7OF -----BEGIN PGP PUBLIC KEY BLOCK----- MANNBhdNhbBWbkLQGUkrghSBoi+DnMWPBg+EFtdW41o4zrRwCmoiQbuA5GR+2n24 mqgibecfjrkrbacdnfvuigwhagbbcq5vn9cu5r2ngy+ymfbcqygdrjit0lf0w6u3 dahca/9gcsohnek+g4lor65aibuelzdzrka53fkcklps48o+zdwph98jujxe1oc3 IzKOd1seHih5zURjsm0KsOz38szvbms8IcJoL6LPs04QI8BJmkDS1qZAzXkdtSuV 9I7SydZ8cmUvXO6jjocQmRdypZYIvzqLMwIMSFcQ1412T4fz7x99++e52l6J1Ucc zf5qdezmczmjhpu4tsvpcrn2pg0od8k57t4llg78ubehfwappnkqwp9ndwcgwgpz hj4f6m9ik9bybrd1brmvgnflfbt2tmat81edxqrb7j0nuwcwzbqisgvpbnjpy2gg 7X7iSOJOWf2j7/exefwPrzED/0ltcZHgotqOBtIdVYWGmScAD2VAi7rFsGq60tIR SGVpbmUgPEhlaW5yaWNoQGhlaW5lLmRlPohgBBMRAgAgBQJHBSa5AhsDBgsJCAcD 171c2fvnG2s/GF9V0HHYH+BSoW88E+0vGaApBzDkoSihEm//yoOi/79+5T+Vm7OF AgQVAggDBBYCAwECHgECF4AACgkQkWvbn7lOZLFTCQCghZpkXjFL9qzqYS4RMWrX MANNBhdNhbBWbkLQGUkrghSBoi+DnMWPBg+EFtdW41o4zrRwCmoiQbuA5GR+2n24 co+blvsanakvhonvk5c+cmy5jtl2/cei/tr+ dahca/9gcsohnek+g4lor65aibuelzdzrka53fkcklps48o+zdwph98jujxe1oc3 =AgZE 9I7SydZ8cmUvXO6jjocQmRdypZYIvzqLMwIMSFcQ1412T4fz7x99++e52l6J1Ucc -----END PGP PUBLIC KEY BLOCK----- hj4f6m9ik9bybrd1brmvgnflfbt2tmat81edxqrb7j0nuwcwzbqisgvpbnjpy2gg SGVpbmUgPEhlaW5yaWNoQGhlaW5lLmRlPohgBBMRAgAgBQJHBSa5AhsDBgsJCAcD AgQVAggDBBYCAwECHgECF4AACgkQkWvbn7lOZLFTCQCghZpkXjFL9qzqYS4RMWrX co+blvsanakvhonvk5c+cmy5jtl2/cei/tr+ =AgZE -----END PGP PUBLIC KEY BLOCK----- Sind beide Schlüssel gleich? Kryptoexperimente 26

27 Hashfunktionen Sind beide Schlüssel gleich? Hash 1: B557 3B27 F1D1 1EA6 8BC1 F9C4 899E 6133 A2D5 AD5E Hash 2: F719 38FB C85E 2B5F 7D86 A B DB9F B94E 64B1 Zur Verifikation, ob Daten gleich sind Überprüfen von Downloads Effizientes Signieren Signiert wird nur der Hashwert Berechnung des Hashwert geht schnell Festlegen auf Geheimnis, ohne es zu verraten Ausprobieren mit Cryptool: Einzelverfahren -> Hashverfahren -> Hash Demo Hashs berechnen Schauen, wie sich der Hash ändert, wenn die Datei geändert wird Versuchen, Kollisionen zu finden Analyse -> Hashverfahren -> Angriff Kryptoexperimente 27

28 Kryptoexperimente 28