Skript Kryptologie I WS 2007/08
Transcription
Skript Kryptologie I WS 2007/08
1 Einführung: Was ist Kryptologie Antwort: Die Wissenschaft von den Geheimschriften Seit es Sprache gibt, gibt es vertrauliche Mitteilungen. Romeo Ich liebe dich −→ Julia Worum geht es dabei? 1. Abhörsicherheit: Chiffrieren 2. Integrität: Unversehrtheit und Unveränderbarkeit 3. Authenzität: Gewissheit über den Ursprung 4. Anonymität 1.1 Sichere Übermittlung einer Nachricht 1. Persönlich oder durch einen vertrauenswürdigen Boten („Der Kurier der Kaiserin“) 2. Existenz verheimlichen, zum Beispiel durch • Unsichtbare Tinte (Karl May) • Verstecken in größerem Text oder im Bild (Steganographie) 3. Verschlüsseln! Übermittlung über einen an sich unsicheren Kanal, aber so „chiffriert“, dass niemand Unbefugter sie „dechiffrieren“ kann. • Kryptologie war die Domäne des Militärs. • Nur dort gab es ausreichend Motivation und vor allem auch (finanzielle) Mittel, um die damaligen Chiffriermaschinen zu entwickeln („Enigma“). • Dies trieb auch die Entwicklung der digitalen Computer an. 1.2 Vorteil der Kryptologie Kryptologie ist Mathematik, und damit kann man Dinge beweisen, zum Beispiel, dass eine Methode eine gewisse Sicherheit bietet (im Idealfall). 2 Historisches, Einfaches und Grundlagen 2.1 Terminologie • Klartext: a b c d e f . . . • Geheimtext (Kryptogramm): A B C D E F . . . • Chiffrieren: Klartext −→ Geheimtext • Dechiffrieren: Geheimtext −→ Klartext • Alphabet: Zeichenvorrat – Buchstaben: {a, . . . , z} – als Zahlen: {1, . . . , 26} – oder auch: {0, . . . , 25} – Bits: {0, 1} – 64-Bit-Worte: {(a1 , . . . , a64 )|ai ∈ {0, 1}} 2.2 Die Skytala von Sparta • Vor 2500 Jahren benutzten die Spartaner die sogenannte Skytala: Holz- stäbe mit bestimmtem Durchmesser. • Der Absender einer Botschaft wickelte ein schmales Band aus Pergament spiralförmig darum und schrieb dann der Länge nach die Nachricht darauf. • Nur wenn der Empfänger einen Zylinder mit gleichem Umfang hatte, konnte er die Nachricht lesen. Praktisch bedeutet das, dass der Text spaltenweise in einer bestimmten Anzahl von Zeilen aufgeschrieben wird (Transpositionschiffre): 2 F A C H H S O C C H H U L E D A R A M D S T T Z Geheimtext: FHSLRAAOCEMDCCHDSTHHUATZ 2.3 Verschiebechiffren: Caesar • Julius Caesar benutzte für seine militärische Korrespondenz eine Verschiebechiffre. • Man schreibt das Geheimtextalphabet unter das Klartextalphabet, aber um 23 Stellen nach rechts verschoben:[2mm] 2.4 Algorithmus und Schlüssel • An diesen einfachen Beispielen kann man die beiden wichtigen Begriffe Algorithmus und Schlüssel erklären. • Chiffrieralgorithmus (Maschine, Programm): Methode, „wie“. • Schlüssel: beschreibt wie der Algorithmus verwendet wird. • Algorithmus: kann nicht geheim gehalten werden („Chiffriermaschine“), das heisst, die Sicherheit beruht auf der Geheimhaltung des Schlüssels. • Statt der sicheren Übermittlung einer oder mehrerer geheimer Nachrichten ist die sichere Übermittlung und Aufbewahrung des Schlüssels notwendig. • Vorteil: der Schlüssel ist kürzer und muss nur einmal übermittelt werden, zum Beispiel irgendwann vorher („Reitender Bote“). • Wichtige Alternative: Public Key Systeme 3 2.5 Kryptoanalyse der Caesar-Chiffre • Wie kann ich eine verschlüsselte Nachricht „knacken“? • Angenommen, ich kenne den Algorithmus: ich weiss oder vermute, es handelt sich um eine Verschiebechiffre. • Methode 1 Systematische Schlüsselsuche (Exhaustive Key Search, Brute Force) Führt immer zum Erfolg, kann aber sehr lange dauern. Ich probiere alle Möglichekeiten durch (bei Verschiebechiffre maximal 26): bei k verschiedenen möglichen Schlüsseln maximal k Versuche, im Durchschnitt k/2. Methode 2 Statistische Analyse: Häufigkeit der Buchstaben Buchstabe a b c d e f g h i j k l m Häufigkeit 6,51% 1,89% 3.06% 5,08% 17,40% 1,66% 3,01% 4,76% 7,55% 0,27% 1,21% 3,44% 2,53% Buchstabe n o p q r s t u v w x y z Häufigkeit 9,78% 2,51% 0,79% 0,02% 7,00% 7,27% 6,15% 4,35% 0,67% 1,89% 0,03% 0,04% 1,13% Häufigkeiten der Buchstaben der deutschen Sprache Gruppe e,n i,s,r,a,t d,h,u,l,c,g,m,o,b,w,f,k,z p,v,j,y,x,q Gesamthäufigkeit 27,18% 34,48% 36,52% 1,82 % Buchstabengruppen 2.6 Monoalphabetische Chiffrierungen Eine Chiffrierung heisst monoalphabetisch, wenn jeder Buchstabe des Alphabets stets zu demselben Geheimtextbuchstaben chiffriert wird. (Beispiel) Jeder monoalphabetischen Chiffre entspricht eine Permutation der Buchstaben des Alphabets und umgekehrt. es gibt also insgesamt 26! ≈ 4 · 1026 davon. 4 2.7 Mathematischer Exkurs: Modulare Arithmetik Rechnen modulo 26: wir teilen jede Zahl durch 26 wie in der Grundschule: 1 : 26 = 0 Rest 1 . . . 25 : 26 = 0 Rest 25 26 : 26 = 1 Rest 0 . . . 32 : 26 = 1 Rest 6 Wir betrachten nur den Rest und sagen: 32 und 6 sind äquivalent modulo 26. Wir schreiben: 32 ≡ 6 26 ≡ 0 (mod 26) (mod 26) Allgemein: p≡q (mod 26) ⇐⇒ p − q ist durch 26 teilbar Dies teilt alle ganzen Zahlen in 26 verschiedene Klassen ein. Addieren, Subtrahieren und Multiplizieren kann ich wie gehabt: (32 · 5) = 160 ≡ 4 (mod 26) 32 ≡ 6 (mod 26), und (6 · 5) = 30 ≡ 4 (mod 26). oder anders ausgedrückt: aus p ≡ q (mod 26) folgt: p + n ≡ q + n (mod 26) p · n ≡ q · n (mod 26) pn ≡ q n (mod 26) Diese Grundrechenarten gelten also. Division ist nicht immer möglich! Warum ist das so? Wenn wir die Zahl p durch die Zahl s dividieren wollen, dann suchen wir eine Zahl s−1 (das Inverse von s), für die gilt: s · s−1 = 1. Haben wir die gefunden, dann können wir berechnen: p/s = p · s−1 In unserer modularen Welt heisst das, wir suchen das Inverse modulo 26, es muss also gelten: s · s−1 ≡ 1 (mod 26). 5 Dann suchen wir mal. . . 1·1 2·? 3·9 4·? 12 · ? 13 · ? 14 · ? 15 · 7 ≡ ≡ ≡ ≡ ... ≡ ≡ ≡ ≡ ... 1 (mod 26) 1 (mod 26) 1 (mod 26) 1 (mod 26) 1 1 1 1 (mod (mod (mod (mod 26) 26) 26) 26) Überall, wo das ? steht, ist es nicht möglich, eine passende Zahl zu finden. Genauer gesagt, für Zahlen, die durch 2 oder 13 teilbar sind, gibt es kein Inverses. AHA! 2 oder 13 sind auch die Teiler von 26. Dies gilt allgemein: zu einer Zahl s gibt es nur dann ein Inverses modulo n, wenn s und n teilerfremd sind, das heisst, wenn sie keine gemeinsamen Teiler haben (außer 1). Unter anderem deswegen rechnet man bei der modularen Arithmetik meist modulo einer Primzahl, denn Primzahlen haben überhaupt keine Teiler (außer 1 natürlich). Damit lässt sich immer das Inverse (modulo der jeweiligen Primzahl) finden, und Division ist immer eindeutig möglich. (Mathematisch spricht man von einem Körper.) 2.8 Tauschchiffren Wir ordnen jedem Buchstaben eine Zahl zu: a → 1 b → 2 ... y → 25 z → 0 Eine Verschiebechiffre entsteht durch Addition einer Zahl t modulo 26 6 (nämlich wenn ich um t Stellen verschiebe). Beispiel: Caesar-Chiffre mit Verschiebung um drei Buchstaben: t = 3. a → 1, b → 2, v → 22, w → 23, x → 24, y → 25, z → 0, 1 + 3 mod 26 = 4 → D 2 + 3 mod 26 = 5 → E ... 22 + 3 mod 26 = 25→ Y 23 + 3 mod 26 = 0 → Z 24 + 3 mod 26 = 1 → A 25 + 3 mod 26 = 2 → B 0 + 3 mod 26 = 3 → C Beim Dechiffrieren ziehe ich t ab (modulo 26) oder addiere 26 − t = 23 (modulo 26): A → 1, B → 2, C → 3, D → 4, 1 + 23 mod 26 = 24 2 + 23 mod 26 = 25 3 + 23 mod 26 = 0 4 + 23 mod 26 = 1 ... Y → 25, 25 + 23 mod 26 = 22 Z → 0, 0 + 23 mod 26 = 23 →x →y →z →a →v →w Die Methode ist also immer: • Übersetze jeden Buchstaben a,. . . ,z in eine Zahl zwischen 0 und 25; • Wende eine Rechenvorschrift an (modulo 26); • Übersetze die Zahlen zurück in Buchstaben. • Mit dieser Methode ergibt jede Rechenvorschrift eine monoalphabetische Chiffre. Wenn ich addieren kann, kann ich auch multiplizieren, zum Beispiel 7 mit 2 (modulo 26): a → 1, 1 · 2 mod 26 = 2→ B b → 2, 2 · 2 mod 26 = 4→ D c → 3, 3 · 2 mod 26 = 6→ F ... m → 13,13 · 2 mod 26 = 0→ Z n → 14,14 · 2 mod 26 = 2→ B o → 15,15 · 2 mod 26 = 4→ D ... z → 0, 0 · 2 mod 26 = 0→ Z Dies ist nicht eindeutig (weil 26 durch 2 teilbar ist). Noch schlimmer ist es bei Multiplikation mit 13: a → 1,1 · 13 mod 26 = 13→ M b → 2,2 · 13 mod 26 = 0 → Z c → 3,3 · 13 mod 26 = 13→ M d → 3,4 · 13 mod 26 = 0 → Z ... Dann probieren wir doch mal die Multiplikation mit 3: a → 1, 1 · 3 mod 26 = 3→ C b → 2, 2 · 3 mod 26 = 6→ F c → 3, 3 · 3 mod 26 = 9 → I ... i → 9, 9 · 3 mod 26 = 1 → A j → 10,10 · 3 mod 26 = 4→ D ... z → 0, 0 · 3 mod 26 = 0→ Z Es geht also bei Multiplikation mit Zahlen, die teilerfremd zu 26 sind: 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25 Es gibt also 12 dieser Multiplikativen Chiffren. Durch Kombination mit der Verschiebechiffre ergibt sich die Tauschchiffre: multipliziere mit s, addiere t. Tauschchiffre: 8 Schlüssel Ein paar (s, t) von natürlichen Zahlen < 26, s teilerfremd zu 26. Chiffre Sei s0 eine Zahl, für die gilt: s · s0 ≡ 1 (mod 26), das heisst s0 ≡ 1/s (mod 26). x → x · s + t mod 26 y → (y − t) · s0 mod 26 Es gibt 26 · 12 = 312 Tauschchiffren (auch affine Chiffren genannt). 2.9 Schlüsselwortchiffre Zum Abschluss dieses Abschnitts eine andere Methode, eine monoalphabetische Chiffre zu erzeugen. • Schlüssel: Ein Wort. Doppelt vorkommende Buchstaben werden beim zweiten oder späteren Auftreten entfernt. • Das Wort wird als Anfang des Geheimtextalphabets benutzt, dieses wird mit dem restlichen Buchstaben des Alphabets aufgefüllt. • Chiffrieren/Dechiffrieren: wie gehabt. 2.10 Kryptoanalyse Prinzip von Kerkhoffs: Die Sicherheit eines Kryptosystem darf nicht von der Geheimhaltung des Algorithmus abhängen; sie beruht nur auf der Geheimhaltung des Schlüssels. Known ciphertext attack Der Angreifer kennt (oder hört ab) ein Stück Geheimtext. Davon kann man immer ausgehen. Known plaintext attack Der Angreifer kennt ein Stück Klartext und das dazugehörige Stück Geheimtext. Kommt durchaus vor. Chosen plaintext attack Der Angreifer hat Zugang zum Verschlüsselungsalgorithmus und kann selbst gewählte Stücke Klartext verschlüsseln, zum Beispiel, wenn er Zugang zu der Verschlüsselungsmaschine hat. 9 Das Knacken einer monoalphabetischen Chiffrierung einer natürlichen Sprache (26 Buchstaben) einfach durch die Attacke mit bekanntem Geheimtext, und zwar mittels statistischer Analyse der Buchstabenhäufigkeit und der Bigrammhäufigkeit. Bigramm Häufigkeit Bigramm Häufigkeit en 3,88% nd 1,99% er 3,75% ei 1,88% ch 2,75% ie 1,79% te 2,66% in 1,67% de 2,00% es 1,52% Die häufigsten Bigramme im Deutschen 2.11 Verschleierung der Häufigkeiten • Kann ich die Häufigkeitsverteilung der Buchstaben vielleicht verstecken? • Ja: Man sorgt dafür, dass die Geheimtextzeichen alle mit der gleichen Häufigkeit auftreten. • Bei der homophonen Chiffre werden einem Klartextzeichen mehrere Geheimtextzeichen zugeordnet, und zwar • kommt jedes Geheimtextzeichen dabei nur einmal vor (sonst wäre die Dechiffrierung nicht eindeutig), und • wird die Verteilung so gewählt, dass alle Geheimtextzeichen gleich häufig vorkommen. Beispiel: den Buchstaben a,. . . ,z werden die Zahlen 00,. . . ,99 zugeordnet, und zwar nach folgender Vorschrift: 10 Buchstabe a b c d e f g h i j k l m Zugeordnete Zeichen 10 21 52 59 71 Buchstabe Zugeordnete Zeichen n 30 35 43 62 63 67 68 72 77 79 20 34 o 02 05 82 28 06 80 p 31 04 19 70 81 87 q 25 09 18 33 38 40 42 53 54 55 r 17 36 51 69 74 78 83 60 66 75 85 86 92 93 99 00 41 s 15 26 45 56 6173 96 08 12 97 t 13 32 90 91 95 98 07 24 47 89 u 29 01 58 14 39 46 50 65 76 88 94 v 37 57 w 22 23 x 44 16 03 84 y 48 27 11 49 z 64 Beim Chiffrieren wählt man zufällig eines der zugehörigen Zeichen aus. 2.12 Moderne Monoalphabetische Chiffrierungen DES Alphabet: 64-bit Strings, Schlüssel: 56-bit Strings. (1999: Vollständige Schlüsselsuche in 22 Stunden!). 3DES DES mit k1 , dann mit k2−1 , dann wieder mit k1 . Der Schlüssel ist also 112 bit lang. AES Schlüssel 128/192/256 bit. 2.13 Die Vigenère-Chiffre • Blaise der Vigenère (1523-1596) machte die Vigenère-Verschlüsselung im Jahre 1586 bekannt. • Man benutzt verschiedene monoalphabetische Chiffrierungen im Wechsel. • Die Idee ist älter, ähnliche Chiffrierungen wurden schon von Anderen im 16. Jhd. veröffentlicht. • Es handelt sich um eine periodische polyalphabetische Chiffrierung. 11 • Bei einer polyalphabetischen Chiffrierung wird ein Klartextbuchstabe nicht jedesmal zu demselben Geheimtextbuchstaben verschlüsselt, aber natürlich nicht willkürlich. • Die Dechiffrierung muss eindeutig sein. Warum die doch schon angestaubte Vigenère-Chiffre? • Prototyp für viele noch heute benutzte Algorithmen (WordPerfect) • Wichtig als Beispiel • Kryptoanalyse: Kasiski-Test und Friedman-Test a 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 b 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 A c C D E F G H I J K L M N O P Q R S T U V W X Y Z A B d D E F G H I J K L M N O P Q R S T U V W X Y Z A B C e E F G H I J K L M N O P Q R S T U V W X Y Z A B C D f F G H I J K L M N O P Q R S T U V W X Y Z A B C D E g G H I J K L M N O P Q R S T U V W X Y Z A B C D E F h H I J K L M N O P Q R S T U V W X Y Z A B C D E F G i I J K L M N O P Q R S T U V W X Y Z A B C D E F G H j J K L M N O P Q R S T U V W X Y Z A B C D E F G H I k K L M N O P Q R S T U V W X Y Z A B C D E F G H I J l L M N O P Q R S T U V W X Y Z A B C D E F G H I J K m M N O P Q R S T U V W X Y Z A B C D E F G H I J K L Klartext: hochschuledarmstadt Schlüsselwort: BLAU BLAUBLAUBLAUBLAUBLA hochschuledarmstadt 12 n N O P Q R S T U V W X Y Z A B C D E F G H I J K L M o O P Q R S T U V W X Y Z A B C D E F G H I J K L M N p P Q R S T U V W X Y Z A B C D E F G H I J K L M N O q Q R S T U V W X Y Z A B C D E F G H I J K L M N O P r R S T U V W X Y Z A B C D E F G H I J K L M N O P Q s S T U V W X Y Z A B C D E F G H I J K L M N O P Q R t T U V W X Y Z A B C D E F G H I J K L M N O P Q R S u U V W X Y Z A B C D E F G H I J K L M N O P Q R S T v V W X Y Z A B C D E F G H I J K L M N O P Q R S T U w W X Y Z A B C D E F G H I J K L M N O P Q R S T U V x X Y Z A B C D E F G H I J K L M N O P Q R S T U V W y Y Z A B C D E F G H I J K L M N O P Q R S T U V W X z Z 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 Für jeden Klartextbuchstaben nehmen wir den darüberstehenden Buchstaben des Schlüsselworts. Dieser bestimmt die Zeile, mit der der Klartextbuchstabe verschlüsselt wird. h : B : Zeile die mit B beginnt, Spalte h, ergibt I o : L : ergibt Z c : A : ergibt C h : U : ergibt B usw. Schlüsselwort: BLAUBLAUBLAUBLAUBLA Klartext: hochschuledarmstadt Geheimtext: IZCBTNHOMPDASXSNBOT • Nimm den Schlüsselwortbuchstaben, der über dem Geheimtextbuchstaben steht, • dann nimm die Zeile die mit diesem Schlüsselwortbuchstaben beginnt. • Gehe in dieser Zeile, vom Geheimtextbuchstaben ausgehend nach oben: • I : Zeile B, über I steht h, usw. • Wenn wir die Buchstaben durch Zahlen ersetzen, ist die Vorschrift noch viel einfacher: • Der Geheimtextbuchstabe entsteht durch Addition (modulo 26) des Klartextbuchstabens und des zugehörigen Schlüsselwortbuchstabens. • Beispiel: o und L, dies entspricht 14 + 11 = 25 → Z . • Beim Dechiffrieren wird subtrahiert statt addiert. 2.14 Kryptoanalyse der Vigenère-Chiffre Wilhelm Kasiski (1805-1881) erkannte: • Es gibt Perioden mit der Länge des Schlüsselwortes. Schlüsselwort: BLAUBLAUBLAUBLAUBLAU ein..ein..ein..ein.. • Beispiel: Verschlüsselung des Wortes „ein“: Klartext: Geheimtext: FTN..PIH..ECO..YJY.. 13 • Es gibt also nur 4 Möglichkeiten, ein Wort zu verschlüsseln, weil das Schlüsselwort 4 Buchstaben lang ist. • Außerdem gilt: Wenn zwei Klartextfolgen einen Abstand haben, der ein Vielfaches der Länge des Schlüsselworts ist, dann sind die zugehörigen Geheimtextfolgen gleich! • Man suche Folgen aus gleichen Buchstaben im Geheimtext und bestimme deren Abstand. • Dieser ist (vermutlich) ein Vielfaches der Schlüsselwortlänge. William Friedman (1891-1969) entwickelte diesen statistischen Test 1925. • Frage: Mit welcher Wahrscheinlichkeit besteht ein willkürlich aus dem Klartext herausgegriffenes Buchstabenpaar aus gleichen Buchstaben? • Antwort: Koinzidenzindex. • Wir nehmen eine beliebige Folge von Buchstaben, Länge n. • Dann zählen wir, wie oft die verschiedenen Buchstaben vorkommen: • Die Anzahl der a’s sei n1 ,. . . , die der z’s sei n26 . • Daraus folgt, dass die Summe all dieser Zahlen gleich n ist. • Frage: Wie groß ist die Wahrscheinlichkeit, dass ein zufällig ausgewähltes Buchstabenpaar aus zwei gleichen Buchstaben besteht? • Antwort: der Friedmansche Koinzidenzindex eines bekannten Textes: 26 X ni (ni − 1) I= i=1 n(n − 1) • Was nützt uns das? • Wenn wir wissen, wie oft die verschiedenen Buchstaben vorkommen, können wir diesen Index statistisch vorausberechnen. 14 • Sei pi die Wahrscheinlichkeit für Buchstabe i. Dann ist die der Koinzidenzindex: 26 X I= p2i i=1 Zwei Beispiele: 1. Deutsche Sprache, wir kennen die Wahrscheinlichkeiten. Dann ist laut Tabelle der Buchstabenhäufigkeiten: I = 0,0762. 2. Ein zufälliger Buchstabensalat. Dann sind alle Buchstaben gleich wahrscheinlich, also pi = 1/26, und die Summe ist 2 26 X 1 1 I= ≈ 0,0385 = 26 26 i=1 • Allgemein kann man mit den entsprechenden mathematischen Methoden beweisen, dass der Koinzidenzindex um so größer wird, je unregelmäßiger der Text ist. • Der Wert 1/26 ist das absolute Minimum. • Test für monoalphabetische Chiffre: Wenn der Koinzidenzindex ungefähr 0,0762 ist, dann ist der Text monoalphabetisch verschlüsselt. • Test für Vigenère-Chiffre: Wenn der Geheimtext die Länge n hat, und die Länge des Schlüsselwortes h ist, dann ist der Konizidenzindex I= 0,0377n 0,0385n − 0,0762 + h(n − 1) n−1 oder, nach h aufgelöst: h= 0,0377n I(n − 1) − 0,0385n + 0,0762 • Mit diesen Methoden ist jede Vigenère-Chiffre leicht zu knacken: • Durch diese Tests kennen wir die Länge des Schlüsselwortes. • Die Buchstaben, die unter dem gleichen Schlüsselwortbuchstaben stehen, werden durch dieselbe monoalphabetische Chiffrierung verschlüsselt. 15 • Also schaue ich mir alle Geheimtextbuchstaben aus dieser Gruppe an und bestimme den häufigsten, der dann dem Klartextbuchstaben e entspricht. • Das mache ich für alle Buchstaben des Schlüsselwortes, fertig! Erster Ausweg ich nehme ein sehr langes Schlüsselwort, zum Beispiel den Text eines Buches. Problem: Da das Schlüsselwort aus Sätzen der deutschen Sprache besteht, lassen sich wieder statistische Methoden auf den Geheimtext anwenden (Friedman). Zweiter Ausweg ich nehme ein Schlüsselwort, das wieder sehr, sehr lang ist, und aus zufällig gewürfelten Buchstaben besteht (Buchstabenwurm). Ein solches System ist beweisbar sicher (perfekte Sicherheit). 3 Ein bischen Formalismus: Chiffriersysteme 3.1 Chiffriersysteme Bisher Sender und Empfänger vereinbaren einen Schlüssel, verschlüsseln damit einen Klartext. Das ist unrealistisch. Chiffriersysteme Menge von Klartexten, Geheimtexten, Schlüsseln Wir haben also immer: M Menge aller Klartexte K Menge aller Schlüssel C Menge aller Geheimtexte Wir bezeichnen mit f den Verschlüsselungsalgorithmus; die Spezialisierung auf Schlüssel k mit fk . Die Abbildungen von M in C nennen wir Transformationen; die Menge aller Transformationen F. Wichtige Eigenschaften der fk : Umkehrbarkeit, das heisst, es gibt die inverse Transformation fk−1 mit fk−1 (fk (m)) = m, m ∈ M In Worten: zu jeder Verschlüsselung muss es eine passende Entschlüsselung geben. Beispiele: 16 • Klartexte: Alle Bücher in der Bibliothek der H. Darmstadt Chiffrierungen: Alle 312 affinen Chiffrierungen Geheimtexte: alle, die sich aus Anwendung aller 312 Chiffrierungen auf alle Bücher ergeben • Klartexte: alle lateinischen Ausdrücke in allen Asterix-Bänden, Chiffrierungen alle 26 Caesar-Chiffrierungen und die dazugehörigen Geheimtexte. Ein (symmetrisches) Chiffriersystem S besteht aus einer Menge M von Klartexten, einer endlichen Menge C von Geheimtexten und einer Menge F von umkehrbaren Transformationen von M in C. Bemerkungen: • Verschiedene f können für denselben Klartext den gleichen Geheimtext ergeben. • Aus der Umkehrbarkeit folgt, dass die Menge M höchstens genauso viele Elemente enthalten kann wie C: |M| ≤ |C|. 3.2 Sicherheit eines Chiffriersystems Was ist Sicherheit? Was ist perfekte Sicherheit? Perfekte Sicherheit: Angreifer hat keine Chance, aus der Definition eines Chiffriersystems etwas über das Chiffriersystem zu lernen, das heisst Wahrscheinlichkeit Null. Sei µ ein Klartext, p(µ) die Wahrscheinlichkeit, dass dieser Klartext vorkommt. Beispiele: • Klartexte sind Buchstaben des Textes eines deutschen Buches: die Häufigkeiten p(µ) sind die Buchstabenhäufigkeiten der deutschen Sprache. • Klartexte sind Buchstabenpaare der Texte eines deutschen Buches: die p(µ) sind die Bigrammhäufigkeitender deutschen Sprache. Die p(µ) heissen a-priori-Wahrscheinlichkeiten oder theoretische Wahrscheinlichkeiten. • Ein Angreifer fängt einen Geheimtext γ ab. 17 • Er kann (prinzipiell) alle Klartexte und alle möglichen Verschlüsselungen durchgehen und analysieren, wie hoch die Wahrscheinlichkeit pγ (µ) ist, dass ein bestimmter Geheimtext γ von einem bestimmten Klartext µ kommt. • Die pγ (µ) heissen beobachtete oder a-posteriori-Wahrscheinlichkeiten. Beispiele: • Die Klartexte M seien die Buchstaben des Textes eines deutschen Buches, die Chiffierungen alle 26 Verschiebechiffren. Jeder Geheimtextbuchstabe hat die gleiche Wahrscheinlichkeit, von einem bestimmten Klartextbuchstaben herzurühren, also ist für jedes γ: pγ (µ) = p(µ) für alle µ. • Die Klartexte seien die ersten 100 Buchstaben einer jeden Seite des ersten Bandes des großen Brockhaus, |M| = Anzahl der Seiten des ersten Bandes. Chiffierungen alle 26 Verschiebechiffren. Für jeden Klartext ist seine Wahrscheinlichkeit gleich 1/|M|. Jeder Geheimtext kann entweder aus einem dieser |M| Klartexte kommen, nämlich, wenn die Buchstabenveteilung der einer der Seiten entspricht, oder nicht. pγ (µ) ist entweder 0 oder 1. Wenn für ein gewisses µ gilt: pγ (µ) > p(µ), dann kommt γ mit hoher Wahrscheinlichkeit vom Klartext µ her. Ist umgekehrt pγ (µ) < p(µ), so kommt γ mit hoher Wahrscheinlichkeit nicht von µ. In beiden Fällen hat der Angreifer etwas gelernt. Definition: Ein Chiffriersystem S bietet perfekte Sicherheit, wenn für jeden Geheimtext γ gilt: pγ (µ) = p(µ) für alle Klartexte µ. (A-priori- gleich A-posteriori-Wahrscheinlichkeiten) Daraus folgt: Verschiebechiffren sind perfekt, wenn sie nur einen Buchstaben verschlüsseln! Kriterien für perfekte Systeme: 18 1. Kriterium: In einem perfekten System S kann jeder Klartext auf jeden Geheimtext abgebildet werden. Begründung: sonst wären manche der pγ (µ) = 0. 2. Kriterium: In einem perfekten System S gilt: |F| ≥ |C| ≥ |M|. Begründung: Damit ein beliebiger Klartext µ in alle möglichen Geheimtexte überführt werden kann, braucht man mindestens soviele Transformationen wie mögliche Geheimtexte. 3. Kriterium: Sei S ein System mit |F| = |C| = |M|. Ferner gelte: Es gibt zu jedem Klartext µ und zu jedem Geheimtext γ genau eine Transformation, die µ in γ überführt. Dann ist S perfekt! 3.3 Das One-Time Pad, ein perfektes System Wir betrachten folgendes Chiffriersystem: • Klartexte: alle Buchstabenfolgen der Länge n, a1 . . . an . • Schlüssel: alle Buchstabenfolgen der Länge n, k1 . . . kn . • Geheimtext: a1 ⊕k1 . . . an ⊕kn . ⊕: bedeutet Addition gemäß Verschiebechiffre (Caesar). a1 . . . an a1 ⊕ k1 . . . an ⊕ kn L k1 . . . kn Vigenère-Chiffre mit Schlüsselwort k1 . . . kn . • Es gilt die erste Voraussetzung des 3. Kriteriums, denn: |F| = |C| = |M|. • Die zweite Voraussetzung kann buchstabenweise überprüft werden. • Also ist dieses System perfekt. Erfunden wurde dieses One-Time-Pad 1917 von Gilbert S. Vernam (18901960). (One-time pad = Abreissblock!) • Heutzutage nimmt man keine Buchstaben, sondern einzelne Bits. 19 • Die Buchstaben ai und ki sind also aus dem Alphabet (0, 1). • Als Verküpfung nimmt man die binäre Addition ohne Übertrag (XOR, exclusive-or): 0 ⊕ 0 = 0, 1 ⊕ 0 = 1, 0 ⊕ 1 = 1, 1 ⊕ 1 = 0. Wichtig Alle möglichen Schlüssel müssen gleich wahrscheinlich sein, deswegen werden die Bits zufällig erzeugt. Problem Übermittlung der Schlüssel. Lösung Erzeugung der Schlüsselbits als pseudozufällige Folge von Bits durch einen Algorithmus. 4 Block- und Stromchiffren 4.1 Was sind Blockchiffren? Einfache Definition: Eine Blockchiffre verschlüsselt immer ganze Wörter, die alle gleich lang sind, also Folgen der Länge n von Buchstaben eines Alphabets. Präzise Definition: Eine Blockchiffre hat als Menge der Klartexte und als Menge der Geheimtexte die Menge aller Wörter der Länge n über einem Alphabet. Beispiel: DES. Alphabet ist die Menge der Bits (0, 1), Länge ist 64. 4.2 ECB-Modus (Electronic Code Book) • ECB: Der Klartext wird in Blöcke der Länge n (64) aufgeteilt. Ist der letzte Block zu kurz wird er mit zufälligen Zeichen aufgefüllt. • Jeder Block wird mit einer gegebenen Verschlüsselungsfunktion fk (mit einem Schlüssel k) verschlüsselt. • Sei Ki der i-te Klartextblock, Gi der i-te Geheimtextblock, dann gilt: Gi = fk (Ki ) Ki = fk−1 (Gi ) 20 ......... Ki−1 Ki Ki+1 ......... ......... fk fk fk ......... ......... Gi−1 Gi Gi+1 ......... Probleme: • Für einen gegebenen Schlüssel wird derselbe Klartext immer zu demselben Geheimtext kodiert. • Der Angreifer kann Teile der Nachricht nochmal senden (Block Replay). 4.3 CBC-Modus (Cipher Block Chaining) • CBC: Vor dem Chiffrieren eines Blockes wird dieser mit dem vorhergehenden Geheimtextblock verküpft, üblicherweise mit bitweisem XOR. • Zusätzlich wird am Anfang ein zufälliger Block eingefügt (IV, Initialization Vector). • Sei Ki der i-te Klartextblock, Gi der i-te Geheimtextblock, dann gilt: Gi = fk (Ki ⊕ Gi−1 ) Ki = Gi−1 ⊕ fk−1 (Gi ) • Dadurch hängt jeder Geheimtextblock von allen vorhergehenden Blöcken ......... Ki−1 Ki+1 Ki ab. ......... L L L ......... fk fk fk ......... ......... Gi−1 Gi Gi+1 ......... 21 Probleme: • Anfügen von Blocks durch Angreifer • Modifikation von Blöcken durch Angreifer • Sehr lange Nachrichten haben immer noch Muster 4.4 CFB-Modus (Cipher Feedback Mode) CFB: Das Ergebnis der Chiffrierung wird mit dem Klartext verknüpft und ergibt so den Geheimtextblock. Auch hier wird ein IV (G0 ) benötigt: Gi = fk (Gi−1 ) ⊕ Ki Ki = Gi ⊕ fk−1 (Gi−1 ) ......... Ki−1 Ki Ki+1 L L L fk ......... 4.5 fk ......... fk Gi−1 Gi Gi+1 ......... OFB-Modus (Output Feedback Mode) CFB: Derselbe Block wird mehrfach verschlüsselt, das Ergbnis mit dem Klartext verknüpft (internal Feedback). Auch hier wird ein IV (s0 ) benötigt: si = fk (si−1 ) Gi = si ⊕ Ki Ki = Gi ⊕ si 22 ......... Ki−1 L ? L ? s- fk s ......... 4.6 - si−1 ? Gi−1 Ki+1 Ki L ? - fk s - - si ......... fk s - si+1 ? ? Gi Gi+1 ......... Stromchiffren • Eine Stromchiffre codiert den Klartext zum Geheimtext Bit für Bit. • Dazu wird ein sogenannter Schlüsselstrom erzeugt: eine Folge von Bits. • Zur Sicherheit hängt der Schlüsselstrom vom einem Schlüssel ab. • Blockchiffren können als Stromchiffren verwendet werden. Da die zu verschlüsselnden Texte kürzer sind als ein Block, müssen zusätzliche Verfahren angewandt werden. Schieberegister Schieberegister Beispiel: CFB wird benutzt, um ein die Daten byteweise zu kodieren ? 64-bit-Blöcken. (Man (8-bit CFB). ? Die verwendete Blockchiffre arbeitet auf fk fk könnte auch 1-bit CFB benutzen, um bitweise zu kodieren, allerdings muss dann für jedes ? Bit ein 64-bit-Block chiffriert werden.) ? Byte ganz links ki si ? -L Byte ganz links - gi gi Verschlüsselung si ? -L - ki Entschlüsselung 8-bit CFB Analog kann auch 8-Bit OFB zur Verschlüsselung benutzt werden. Allerdings zeigt die Kryptoanalyse, dass man OFB nur benutzen sollte, wenn die Blocklänge gleich der Blocklänge des verwendeten Verschlüsselungsalgorithmus ist. 23 Schieberegister Schieberegister ? ? fk fk ? si ? - gi -L Byte ganz links ki gi Verschlüsselung 5 ? si ? - k -L i Byte ganz links Entschlüsselung * 8-bit OFB DES und AES 5.1 Geschichte des Data Encryption Standard DES und AES • Es gab kaum kryptografische Forschung außerhalb des militärischen Bereichs. • NSA hatte Wissen und Erfahrung, aber selbst die Existenz der NSA wurde nicht öffentlich zugegeben. • Kleine Firmen stellten kryptografisches Equipment her und verkauften es; verschiedene Produkte waren nicht interoperabel. • Niemand wusste, ob das sicher war, weil es keine unabhängige Prüfstelle für die Sicherheit gab. • NBS 1972 beginnt ein Programm zum Schutz von Rechnern und Datenkommunikation. • Teil dieses Programms: Entwicklung eines einheitlichen kryptografischen Standardalgorithmus. • Mai 1973: Öffentlicher Aufruf des NBS für Vorschläge für einen kryptografischen Standardalgorithmus. • Hohe Sicherheit, • vollständig spezifiziert und einfach zu verstehen, 24 • Sicherheit des Algorithmus steckt im Schlüssel, nicht in der Geheimhaltung des Algorithmus, • für alle Benutzer verfügbar, • für viele verschiedene Anwendungen brauchbar, • zu vernünftigem Preis in Hardware implementierbar, • effizient in der Benutzung, • validierbar, • exportierbar. • Resonanz groß, aber wenig Expertise. • Keiner der eingereichten Vorschläge kam in die Nähe der Anforderungen. • August 1974: Neuer Aufruf des NBS. • Ein vielversprechender Kandidat von IBM, basierend auf einem den frühen 1970ern entwickelten ein Algorithmus namens Lucifer. • NBS bat NSA um Hilfe bei der Beurteilung der Sicherheit und der Eignung als amerikanischer Standard. • IBM hatte den Algorithmus zum Patent eingereicht, war aber bereit, die Benutzung Allen kostenlos zu erlauben. • 17.3.1975: Veröffentlichung der Details und Aufruf zum Kommentar. Große Resonanz auf die Veröffentlichung: • Viele Bedenken wegen der Beteiligung der NSA. • Hatte die NSA vielleicht eine Hintertür eingebaut? • Warum hatte die NSA die Schlüssellänge von 128 Bit (Lucifer) auf 56 Bit verkürzt? • 1976: Zwei Workshops über die Mathematik des Algorithmus und über die Möglichkeit, den Schlüssel länger zu machen. „lively“. 25 • 23.11.1976: Amerikanischer Standard, der für alle kritische, aber nicht als geheim klassifizierte Regierungskommunikation genutzt werden durfte. • 15.1.1977: Veröffentlichung der offiziellen Beschreibung für DES (FIPS PUB 46). • Niemals vorher war ein von der NSA beurteilter Algorithmus veröffentlicht worden. • Wahrscheinlich ein Missverständnis zwischen NBS und NSA. • Die NSA glaubte, DES sei nur für den Einsatz in Hardware gedacht. • Der Standard schrieb eine Implementierung in Hardware vor, enthielt aber genügend Details für das Schreiben der Software. • Hätte die NSA das gewusst, hätten sie der Veröffentlichung nie zugestimmt. • Der nächste Regierungsstandardalgorithmus Skipjack wurde (bis 1998) geheimgehalten. • Weil die Details von DES öffentlich waren, hatte DES einen enormen Antrieb für die Kryptoanalyse (im öffentlichen Bereich). • In den folgenden zehn Jahren wurde DES von vielen Organisationen zum kryptografischen Standard gemacht, zum Beispiel von ANSI, der American Bankers Association, ISO, Autralischer Bank-Standard. • Als Teil des DES-Standards validiert NIST (Nachfolger von NBS) die Implementierungen des DES. • Bis 1994 nur Hardware, weil der Standard Softwareimplementierungen verbot. • DES als Standard muss alle fünf Jahre neu evaluiert und bestätigt werden. • 1983 ging das einfach so durch. • 1987 wollte die NSA (durch eine von Ronald Reagan unterzeichnete Direktive mit Vetorecht ausgestattet) nicht wieder zertifizieren. 26 • Das kam nicht gut, besonders in der Finanzwelt, und so wurde nach längerer Diskussion DES bis 1992 zertifiziert, angeblich zum letzten Mal. • 1992 gab es immer noch keine Alternative. Zwar waren sich alle einig, dass DES nicht mehr den heutigen Anforderungen entsprach, aber der Algorithmus wurde für weitere fünf Jahre zertifiziert. Nach heutigen Standards ist DES nicht gut genug. • Im Sommer 1998 konnte eine DES-verschlüsselte Nachricht in 56 Stunden geknackt werden (auf einem speziellen Rechner). • Im Januar 1999 dauerte es nur 22 Stunden, mit Hilfe von 100000 PCs. • Deswegen wurde ein Nachfolger gesucht und in AES gefunden. • Ein guter Überblicksartikel ist: http://www.ams.org/notices/200003/fealandau.pdf. 5.2 Der DES-Algorithmus DES benutzt die zwei grundlegenden Verschlüsselungstechniken, die auf Shannon zurückgehen: Vermischung (confusion) und Verteilung (diffusion). • Vermischung verschleiert den Zusammenhang zwischen Klartext und Geheimtext. • Dies behindert die Suche nach Redundanzen und statistischen Mustern im Geheimtext. • Die einfachste Methode ist Substitution. • Verteilung der Redundanz des Klartextes über den Geheimtext. • Die einfachste Methode ist Transposition (auch Permutation genannt). • Stromchiffren beruhen nur auf Vermischung, Blockchiffren benutzen Vermischung und Verteilung. • DES ist eine Blockchiffre, die Blöcke von 64 Bits verschlüsselt, mit einem 56 Bit langen Schlüssel. 27 • Der Schlüssel wird oft mit Paritätsbit versehen und dann als 64 Bit dargestellt. • Einige wenige mögliche Schlüssel sind schwache Schlüssel, die leicht vermieden werden können. • Alle Sicherheit beruht auf dem Schlüssel. • DES arbeitet in mehreren Iterationen, die alle gleich aufgebaut sind. Dies nennt man eine Runde des Algorithmus. • DES hat 16 Runden, jede davon arbeitet in gleicher Weise. • Für jede Runde wird ein etwas anderer Rundenschlüssel verwendet. • Zu Beginn des Algorithmus steht eine Anfangspermutation (Initial Permutation (IP)) der 64 Bits. • Am Ende wird diese Permutation rückgängig gemacht. • Diese Permutationen haben so gut wie keine Bedeutung für die Verschlüsselung. • Vermutlich sollte damit das Laden des 64 Bit langen Blocks in einen DES-Chip leichter gemacht werden, indem man ein Byte grosse Stücke lädt. • Aber: ohne diese Permutationen ist es kein DES. • DES teilt die 64 Bit Eingabe in zwei Hälften zu je 32 Bit auf, arbeitet getrennt auf den beiden Teilen und vertauscht sie am Ende jeder Runde. • Dies ist ein Beispiel einer Feistel-Chiffre: 1. Eine Rundenfunktion wird auf eine der beiden Hälften angewandt. 2. Das Ergebnis wird mit der anderen Hälfte per XOR verknüpft. 3. Die beiden Hälften werden vertauscht (außer in der letzten Runde). 4. Verschlüsselung und Entschlüsselung sind von der Struktur her identisch. Li = Ri−1 Ri = Li−1 ⊕ f (Ri−1 , Ki ) 28 K1 K2 K16 O I R0 N P R1 f AP U L0 ⊕ R2 R15 f U R16 AP−1 f L1 ⊕ L15 ⊕ L16 L2 T P U T T 58 62 57 61 50 54 49 53 42 46 41 45 34 38 33 37 26 30 25 29 18 10 2 60 52 22 14 6 64 56 17 9 1 59 51 21 13 5 63 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 Anfangspermutation (AP) Zunächst wird der 64-Bit DES-Schlüssel auf 56 Bit reduziert, indem in einer Permutation jedes achte Bit weggelassen wird (Paritätsbit). 57 49 41 33 25 10 2 59 51 43 63 55 47 39 31 14 6 61 53 45 17 9 1 35 27 19 23 15 7 37 29 21 58 50 42 34 26 18 11 3 60 52 44 36 62 54 46 38 30 22 13 5 28 20 12 4 DES: Schlüsselpermutation Dann wird der entstehende Schlüssel in zwei Hälften zu 28 Bit aufgeteilt. dann wird, je nach Runde, für jede der beiden Hälften ein zirkulärer Linksshift um ein oder zwei Bit durchgeführt (ein Bit in Runde 1, 2, 9 und 16). Runde 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Shift 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1 DES: Linkshift der Schlüsselbits Nach dem Shift werden aus den entstandenen 56 Schlüsselbits 48 ausgewählt (Kompressionspermutation). 14 23 41 44 17 19 52 49 11 12 31 39 24 4 37 56 1 26 47 34 5 8 55 53 3 16 30 46 28 7 40 42 15 27 51 50 6 20 45 36 DES: Kompressionspermutation 29 21 13 33 29 10 2 48 32 Durch den Linksshift wird in jeder Runde eine andere Auswahl der Schlüsselbits verwendet. Jedes Bit wird ungefähr in 14 der 16 Runden benutzt, allerdings nicht alle Bits genau gleich oft. 56 Bit 56 Bit shift Kompressionspermutation shift Ki Der fundamentale Block von DES ist eine Substitution, gefolgt von einer Permutation, abhängig von einem Schlüssel. Die Rundenfunktion f besteht aus vier Teilen: • Expansionspermutation E, • XOR-Verknüpfung mit dem Rundenschlüssel, • Ersetzung mit S-Boxen, • Permutation (P-Box). Die arithmetischen und logischen Operationen sind so gewählt, dass sie mit der Hardware der 70er leicht zu implementieren waren, gerade auf speziellen Chips. Ki Ri−1 E L S P Li−1 L Ri Li • Die Expansionsfunktion E operiert auf der rechten Hälfte der Daten Ri und erweitert die 32 Bits zu 48 Bits. 30 • Der Hauptzweck ist allerdings, mit einem Bit mehr als eine Substitution zu beeinflussen. • Dadurch verteilt sich der Einfluss der Eingabebits schneller über alle Ausgabebits (Lawineneffekt, diffusion). 32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1 DES: Expansionspermutation • Nach dem Verknüpfung mit dem Rundenschlüssel ist ein neues 48 BitMuster entstanden. • Dies wird durch 32 Bit substituiert, und zwar in 8 Gruppen von 6 Bit zu 4 Bit. • Dazu dienen 8 Substitutionsboxen oder S-Boxen, alle verschieden. • Die S-Boxen sind der Grund für die Komplexität und Qualität des DES-Algorithmus. • Jede S-Box hat sechs Eingabebits b1 , . . . , b6 und vier Ausgabebits. • Man kann die Bits b2 , b3 , b4 , b5 als Eingabe und die Bits b1 und b6 als Steuerung ansehen. b2 b3 b4 b5 b1 b6 S-Box 31 b2 b3 b4 b5 b1 b6 S-Box b1 b6 0 0 1 1 0 1 0 1 b2 , b3 , b4 , b5 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 b8 b9 b10 b11 b2 b12 S-Box b7 b12 0 0 1 1 0 1 0 1 b8 , b9 , b10 , b11 0 1 2 3 4 5 6 7 8 9 15 1 8 14 6 11 3 4 9 7 3 13 4 7 15 2 8 14 12 0 0 14 7 11 10 4 13 1 5 8 13 8 10 1 3 15 4 2 11 6 10 2 1 12 7 11 12 13 14 15 13 12 0 5 10 10 6 9 11 5 6 9 3 2 15 12 0 5 14 9 b14 b15 b16 b17 b13 b18 S-Box b13 b18 0 0 1 1 0 1 0 1 b14 , b15 , b16 , b17 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12 32 b20 b21 b22 b23 b19 b24 S-Box b19 b24 0 0 1 1 0 1 0 1 b20 , b21 , b22 , b23 0 1 2 3 4 5 6 7 8 9 10 7 13 14 3 0 6 9 10 1 2 8 13 8 11 5 6 15 0 3 4 7 2 10 6 9 0 12 11 7 13 15 1 3 3 15 0 6 10 1 13 8 9 4 5 11 12 13 14 15 5 11 12 4 15 12 1 10 14 9 14 5 2 8 4 11 12 7 2 14 b26 b27 b28 b29 b25 b30 S-Box b25 b30 0 0 1 1 0 1 0 1 b26 , b27 , b28 , b29 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3 b32 b33 b34 b35 b31 b36 S-Box b31 b36 0 0 1 1 0 1 0 1 0 1 2 3 12 1 10 15 10 15 4 2 9 14 15 5 4 3 2 12 b32 , b33 , b34 , b35 4 5 6 7 8 9 10 11 12 13 14 15 9 2 6 8 0 13 3 4 14 7 5 11 7 12 9 5 6 1 13 14 0 11 3 8 2 8 12 3 7 0 4 10 1 13 11 6 9 5 15 10 11 14 1 7 6 0 8 13 33 b38 b39 b40 b41 b37 b42 S-Box b37 b42 0 0 1 1 0 1 0 1 b38 , b39 , b40 , b41 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12 b44 b45 b46 b47 b43 b48 S-Box b43 b48 0 0 1 1 0 1 0 1 0 1 2 13 2 8 1 15 13 7 11 4 2 1 14 b44 , b45 , b46 , b47 3 4 5 6 7 8 9 10 4 6 15 11 1 10 9 3 8 10 3 7 4 12 5 6 1 9 12 14 2 0 6 10 7 4 10 8 13 15 12 9 11 12 13 14 15 14 5 0 12 7 11 0 14 9 2 13 15 3 5 8 0 3 5 6 11 • Die 32 Bit aus der S-Box-Operation werden in der sogenannten P-Box permutiert. • Dies ist wiederum eine reine Permutation, kein Bit geht verloren und keines wird hinzugefügt. 16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25 DES: P-Box Permutation 34 Li−1 Ri−1 Schlüsseli−1 Shift Expansionperm. Shift Kompressionsperm. ⊕ S-Box-Subst. P-Box-Perm. ⊕ Li Ri Schlüsseli Rundenfunktion f • Man sollte meinen, die Entschlüsselung funktioniere ganz anders. • Im Gegenteil! • Der Algorithmus ist genau derselbe, nur die Rundenschlüssel müssen in umgekehrter Reihnefolge angewandt werden. • Das heisst, statt zirkulärem Linkshift erfolge zirkulärer Rechtsshift, und die Anzahl der Shifts ist in der jeweiligen Runde 0, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1. 5.3 Einige Eigenschaften von DES • Komplementarität: bedeutet X̄ das bitweise Komplement von X, so ist DES(m, k) = DES(m̄, k̄). • Dies halbiert den Aufwand der vollständigen Schlüsselsuche. • Es gibt vier schwache Schlüssel, bei denen alle Rundenschlüssel gleich sind. • Bei den 6 halbschwachen Schlüsselpaaren gibt es nur zwei verschiedene Rundenschlüssel (je achtmal). 35 • Ebenso gibt es 48 Schlüssel, aus denen nur vier verschiedene Rundenschlüssel hervorgehen. • Dies ist kein Problem, weil es so viele andere mögliche Schlüssel gibt. • Die DES-Verschlüsselungen bilden keine Gruppe. • Das heisst, doppelte Verschlüsselung ergibt etwas Anderes als einfache. • Doppelte DES-Verschlüsselung ist nur unwesentlich sicherer als einfache (“meet-in-the-middle”-Angriff). • Dreifache DES-Verschlüsselung braucht 2112 Angriffsversuche statt 256 . 5.4 DES: Kryptoanalyse • 1990 erfanden Eli Biham und Adi Shamir die differentielle Kryptoanalyse. • Sie entdeckten eine chosen-plaintext-Attacke, die weniger Aufwand benötigt als die vollständige Schüsselsuche. • Jede Veränderung, die sie am DES-Algorithmus vornahmen, machte ihn unsicherer. • Später gab Don Copperfield (damals IBM) zu, dass den Entwicklern und der NSA diese Technik bekannt war und sie das und die Designkriterien bewusst geheim gehalten hätten. 5.5 Die wirklichen Designkriterien Nachdem die differentielle Kryptoanalyse bekannt geworden war, veröffentlichte Copperfield die Designkriterien für die S-Box- und P-Box-Transformationen: • Jede S-Box hat 6 Bits Eingabe und 4 Bits Ausgabe (Designlimit für Chips im Jahre 1974) • Kein Outputbit einer S-Box sollte zu ähnlich einer linearen Transformation der Eingabebits sein. • Hält man das erste und letzte Eingabebit einer S-Box fest und variiert die anderen 4 Bits, so ergibt sich jeder mögliche 4-Bit-Ausgabekombination genau einmal. 36 • Wenn sich zwei Eingabemuster einer S-Box um 1 Bit unterscheiden, so müssen mindestens 2 Outputbits unterschiedlich sein. • Wenn sich zwei Eingabemuster einer S-Box nur in den mittleren 2 Bits unterscheiden, müssen sich die zugehörigen Outputs um mindesten 2 Bits unterscheiden. • Wenn sich zwei Eingabemuster einer S-Box in den ersten beiden Bits unterscheiden und die letzten beiden Bits übereinstimmen, dürfen die zugehörigen Outputs nicht gleich sein. • Für eine gegebene 6-Bit-Differenz zweier Eingabemuster dürfen nicht mehr als 8 der 32 Paare zur selben Differenz der Outputs führen. • Ein ähnliches Kriterium, aber für drei S-Boxen. • Die 4 Ausgabebits jeder S-Box in Runde i werden in der P-Box so verteilt, dass 2 von ihnen die mittleren Bits von S-Boxen in Runde i + 1 beeinflussen und die anderen 2 die Bits am Ende. • Die 4 Ausgabebits jeder S-Box beeinflussen 6 verschiedene S-Boxen, es gibt keine 2 Bits, die dieselbe S-Box beeinflussen. • Wenn ein Outputbit einer S-Box ein mittleres Bit einer anderen S-Box beeinflusst, dann darf ein Ausgabebit dieser S-Box kein mittleres Bit der ersten S-box beeinflussen. Dies ist heutzutage einfach, damals war es hart. Die Leute bei IBM liessen den Computer monatelang nach passenden Transformationen suchen. • Nicht vorhergesehen hatten die DES-Entwickler die Erfindung der Linearen Kryptoanalyse durch Misuru Matsui. • Damit kann der Schlüssel aus 243 bekannten Klartext/Geheimtextpaaren bestimmt werden. • All diese Angriffe sind eher theoretischer Natur. • DES wurde gebrochen durch die Geschwindigkeit heutiger Rechner. 5.6 Varianten • 3DES (Triple DES) darf (im Gegensatz zu DES) von amerikanischen Regierungsstellen weiter benutzt werden. • crypt(3) zur Passwortverschlüsselung auf Unix-Systemen hat eine vom Schlüssel anbhängige Expansionspermutation. 37 5.7 AES/Rijndael • 2. Januar 1997: NIST kündigt die Suche nach dem Advanced Encryption Standard (AES) an. • 12. September 1997: Aufruf an die Öffentlichkeit, Algorithmen einzureichen. Es mussten nicht geheime, öffentlich bekannte Verschlüsselungsalgorithmen sein, die weltweit ohne Lizenzgebühren verfügbar waren. Außerdem musste der Algorithmus eine symmetrische Blockchiffre implementieren, mit Blockgröße 128 Bits, und Schlüssellängen von 128, 192 und 256 Bits. • 20. August 1998: (AES1-Konferenz) Fünfzehn Kandidaten wurden bekannt gemacht, und NIST bittet um Kommentare. • März 1999: (AES2-Konferenz) Die Ergebnisse werden diskutiert. • 15. April 1999: Ende der Phase des öffentlichen Kommentars. NIST wählt fünf Algorithmen für die zweite Phase des Auswahlverfahrens aus: 1. MARS (IBM), 2. RC6 (RSA Laboratories), 3. Rijndael (Joan Daemen, Vincent Rijmen), 4. Serpent (Ross Anderson, Eli Biham, Lars Knudsen), 5. Twofish (Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall, Niels Ferguson). • 13.–14. April 2000 (New York): AES3-Konferenz, ein öffentliches Diskussionsforum. • 15. Mai 2000: Ende der zweiten Phase. Wichtig: Alle fünf Endrundenkandidaten sind sehr gute Blockchiffren. Im endgültigen Bericht wird dies klar dargestellt: jeder der fünf Kandidaten könnte als AES dienen. Als Auswahlkriterien dienten: Sicherheit Kosten/Aufwand Eigenschaften • Resistenz des Algorithmus gegen moderne Kryptoanalyse, 38 • gute mathematische Grundlagen, • Zufälligkeit der Ausgabe, • Sicherheit im Vergleich zu den anderen Kandidaten. • Lizenzbedingungen, • Geschwindigkeit auf verschiedenen Plattformen, • Speicherbedarf. Eigenschaften des Algorithmus und der Implementation: • Flexibilität: Anwendbarkeit als Stromchiffre oder Hash-Algorithmus, • Einfachheit, • Eignung zur Implementation in Hard- und Software, • 2. Oktober 2000: NIST verkündet die Wahl von Rijndael. • 26. November 2001: FIPS (Federal Information Processing Standard): http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf, gültig ab 26. Mai 2002: • Der Algorithmus darf in Software, Firmware, Hardware, oder jeder Kombination davon implementiert werden. • Der Algorithmus muss in Verbindung mit einem geeigneten Modus (CBC,. . . ) benutzt werden. • AES/Rijndael ist eine Blockchiffre mit Blocklänge 128 Bits, die Schlüssellänge ist 128, 192 oder 256 Bits. • Der Algorithmus kann auch mit anderen Block- oder Schlüssellängen arbeiten, • der AES-Standard erlaubt keine anderen Größen. • Bei 128 Bit Schlüssellänge hat der Algorithmus 10 Runden, bei 192 Bit 12 Runden, bei 256 Bit 14 Runden. • Im Gegensatz zu DES ist bei AES das Byte die Basis aller Operationen. 39 • Die Operationen sind in der Sprache der Algebra formuliert. • Zum Beispiel die Darstellung eines Bytes: {b7 , b6 , b5 , b4 , b3 , b2 , b1 , b0 }. • Alle Bytes werden als Elemente eines endlichen Körpers GF(28 ) interpretiert, unter Verwendung einer Polynomdarstellung: 7 6 5 4 3 2 b7 x + b6 x + b5 x + b4 x + b3 x + b 2 x + b1 x + b0 = 7 X bi x i . i=0 • Zum Beispiel bedeutet {01100011} das Polynom x6 + x5 + x + 1. Oder hexadezimal: {63}. Der Standard spezifiziert zunächst, wie die Grundrechenarten in diesem Körper aussehen: • Addition erfolgt durch bitweises XOR: • {01010111} ⊕ {10000011} = {11010100}, • {57} ⊕ {83} = {d4}, • (x6 + x4 + x2 + x + 1) + (x7 + x + 1) = x7 + x6 + x4 + x2 . • Multiplikation ist definiert als Polynommultiplikation modulo dem irreduziblen Polynom m(x) = x8 + x4 + x3 + x + 1. • Alle Operationen werden durch diese Basisoperationen ausgedrückt. Intern arbeitet AES mit dem sogenannten State Array, das aus 128 Bit (16 Bytes) besteht, angeordnet als 4 Blöcke von je 4 Bytes: si,j , 0 ≤ i, j ≤ 3 Zustandsfeld (State Array) 40 Wenn ini , i = 0, . . . , 15 die 16 Eingabebytes bezeichnet, so werden diese am Anfang in s kopiert via sz,s = in4z+s Entsprechend wird bei der Ausgabe zurückkopiert: out4z+s = sz,s Die 4 Bytes in jeder Spalte des Zustandsfeldes bilden Worte à 32 Bit: w0 = s0,0 s1,0 s2,0 s3,0 w1 = s0,1 s1,1 s2,1 s3,1 Schlüssellänge (Nk Worte) AES-128 AES-192 AES-256 4 6 8 w2 = s0,2 s1,2 s2,2 s3,2 w3 = s0,3 s1,3 s2,3 s3,3 Blockgröße (Nb Wor- Rundenzahl(Nr) te) 4 10 4 12 4 14 • Zu Beginn wird der Block wie oben angegeben in das Zustandsfeld kopiert. • Danach wird ein Rundenschlüssel addiert. • Nun wird die Rundenfunktion, je nach Schlüssellänge 10, 12, oder 14 Mal auf das Zustandsfeld angewandt, • die letzte Rundenfunktion ist etwas anders als die Nr-1 vorhergehenden. • Der Endzustand wird wie schon beschrieben in den Ausgabeblock kopiert. • Vor der ersten und in jeder Runde wird ein Rundenschlüssel aus Nb=4 Worten verwandt. • Insgesamt sind dies Nb*(Nr+1) Worte, die in einem eindimensionalen Feld w vorgehalten werden. Jede Rundenfunktion besteht aus vier Byte-orientierten Transformationen: 41 1. Byte-Substitution an Hand einer Tabelle (S-Box), 2. Shift der einzelnen Zeilen des Zustandsfeldes um verschiedene Werte, 3. Mischen der Daten innerhalb der Spalten des Zustandsfeldes, 4. Addition eines Rundenschlüssels zum Zustandsfeld. Cipher(byte in[4*Nb],byte out[4*Nb],word w[Nb*(Nr+1)]) begin byte state[4,Nb] state = in AddRoundKey(state, w[0, Nb-1]) for round = 1 step 1 to Nr-1 SubBytes(state) ShiftRows(state) MixColumns(state) AddRoundKey(state, w[round*Nb, (round+1)*Nb-1]) end for SubBytes(state) ShiftRows(state) AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1]) out = state end Die einzelnen Schritte: • SubBytes() ist eine S-Box-Transformation. 42 S-Box aus SubBytes() in Hexadezimaldarstellung. • ShiftRows() verschiebt die letzten drei Zeilen des Zustandsfeldes zyklisch um jeweils verschieden viele Bits: s0z,s = sz,(s+shift(r,N b) mod N b) für 0 < z < 4 und 0 ≤ c < N b shift(1, 4) = 1; shift(2, 4) = 2; shift(3, 4) = 3. • MixColumns() verändert das Zustandsfeld spaltenweise. 43 • AddRoundKey() verknüpft das Zustandsfeld mit dem Rundenschlüssel per XOR. In Worten: • Die ersten Nk Worte des expandierten Schlüssels, stimmen mit dem Schlüssel überein, • das heisst, der erste Rundenschlüssel ist der Schlüssel selber. • Jedes weitere Wort w[i] ist das Ergebnis einer XOR-Operation des vorhergehenden Wortes w[i-1] mit dem Wort w[i-Nk], das Nk Worte vorher steht. • Ausnahmen gibt es bei dem jeweils letzten der Nk Worte eines Rundenschlüssels, bei denen eine zusätzliche Transformation angewandt wird. • Bei Schlüssellänge 256 Bits und wenn i + 4 ein Vielfaches von Nk ist, wird ausserdem vor dem XOR noch ein SubWord() auf w[i] angewandt. Hier ist der Pseudocode zur Schlüsselexpansion: KeyExpansion(byte key[4*Nk], word w[Nb*(Nr+1)], Nk) begin word temp i = 0 while (i < Nk) w[i] = word(key[4*i], key[4*i+1], key[4*i+2], key[4*i+3]) i = i+1 end while i = Nk while (i < Nb * (Nr+1)] temp = w[i-1] if (i mod Nk = 0) temp = SubWord(RotWord(temp)) xor Rcon[i/Nk] else if (Nk > 6 and i mod Nk = 4) 44 temp = SubWord(temp) end if w[i] = w[i-Nk] xor temp i = i + 1 end while end Bemerkungen: • N k = 4, 6 und 8 sind alle in dem if zusammengefasst. • SubWord() bezeichnet wieder die S-Box-Transformation. • RotWord() rotiert ein 32-Bit Wort um 8 Bit nach links. • Die Felder Rcon[i] sind 32-Bit-Konstanten. Analog zur Verschlüsselung gibt es bei der Entschlüsselung in jeder Runde wieder die vier Transformationen: • InvShiftRows(), • InvSubBytes(), • InvMixColumns(), • AddRoundKey(). • Die Rundenschlüssel sind dieselben wie bei der Verschlüsselung, werden aber in umgekehrter Reihenfolge angewandt. InvCipher(byte in[4*Nb],byte out[4*Nb],word w[Nb*(Nr+1)]) begin byte state[4,Nb] state = in AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1]) for round = Nr-1 step -1 downto 1 InvShiftRows(state) InvSubBytes(state) AddRoundKey(state, w[round*Nb, (round+1)*Nb-1]) InvMixColumns(state) end for InvShiftRows(state) InvSubBytes(state) AddRoundKey(state, w[0, Nb-1]) out = state end 45 • Die Reihenfolge der Transformationen bei der Entschlüsselung ist eine andere als bei der Verschlüsselung. • Gewisse Eigenschaften des AES-Algorithmus erlauben die gleiche Reihenfolge der Transformation bei der Entschlüsselung wie bei der Verschüsselung: 1. SubBytes() und ShiftRows() sind vertauschbar (ebenso ihre Umkehrungen InvShiftRows() und InvSubBytes()). 2. MixColumns() und InvMixColumns() sind linear bezüglich der Spalten, das heisst: MixColumns(state XOR RoundKey) = MixColumns(state) XOR MixColumns(RoundKey • Damit lässt sich die Entschlüsselung analog schreiben: Cipher(byte in[4*Nb],byte out[4*Nb],word dw[Nb*(Nr+1)]) begin byte state[4,Nb] state = in AddRoundKey(state, dw[Nr*Nb, (Nr+1)*Nb-1]) for round = Nr-1 step -11 downto 1 InvSubBytes(state) InvShiftRows(state) InvMixColumns(state) AddRoundKey(state, dw[round*Nb, (round+1)*Nb-1]) end for InvSubBytes(state) InvShiftRows(state) AddRoundKey(state, w[0, Nb-1]) out = state end 5.8 Sicherheit von AES Wie sicher ist AES? 2002 wurde eine Arbeit veröffentlicht, deren Autoren behaupten, sie könnten (zumindest theoretisch), den Schlüssel berechnen, wenn sie ein oder zwei Klartexte und zugehörige Geheimtexte kennen (known plaintext attack). Die Komplexität ist allerdings immer noch 2100 , im Gegensatz zu 2128 Operationen, um alle möglichen Schlüssel durch vollständige Schlüsselsuche zu finden. Das ist noch nicht kritisch. Kritisch wird es erst, wenn diese Methode auch praktisch funktioniert und noch weiter vereinfacht wird. 46 5.9 Andere Blockchiffren Die anderen Finalisten des AES-Wettbewerbs wurden schon genannt. MARS Entwickelt von IBM • Blocklänge 128 Bit, Schlüssellänge variabel. • Muss lizensiert werden, ist aber kostenlos. RC6 Entwickelt von Ron Rivest (RSA Data Security) als Verbesserung von RC5. • Blocklänge variabel (32, 64, 128 Bits), Schlüssellänge variabel (0– 2040 Bits), Anzahl der Runden variabel (0–255). Serpent Entwickelt von Ross Anderson, Eli Biham und Lars Knudsen. • Blocklänge 128 Bits, Schlüssellänge variabel (0–2040 Bits), • 32 Runden. • Vollständig public domain • Im Linux Kernel implementiert Twofish Entwickelt von Bruce Schneier et al. • Blocklänge 128 Bits, Schlüssellänge 128, 192 oder 256 Bits, • 16 Runden. • Unpatentiert, kein Copyright, kostenlos. • Im Linux Kernel implementiert Es gibt noch eine Reihe anderer wichtiger und häufig verwendeter Blockchiffren: RC2 Entwickelt 1987 von Ron Rivest (RSA Data Security) • Blocklänge 64 Bit, Schlüssellänge variabel und beliebig. • Algorithmus erst 1997 veröffentlicht. • Angeblich zwei bis dreimal so schnell wie DES (in Software). • Muss lizensiert werden. IDEA (International Data Encryption Algorithm), entwickelt von MediaCrypt. 47 • Blocklänge 64 Bit, Schlüssellänge 128 Bits. • Patentiert, Benutzung kostet Geld (15 Euro je Benutzer). CAST Entwickelt von Carlisle Adams und Stafford Tavares • Blocklänge 64 Bit, Schlüssellänge 64 Bits. • Patentiert. • Neue Algorithmen CAST5 (CAST-128) und CAST6 (CAST-256) sind weltweit ohne Lizenzgebühren zu benutzen, im Linux-Kernel implementiert. Blowfish Entwickelt 1993 von Bruce Schneier. • Blocklänge 64 Bit, Schlüssellänge variabel: 32–448 Bits. • Viel schneller als DES und IDEA. • Nicht patentiert und lizenzfrei. • Im Linux-Kernel implementiert. RC5 Entwickelt 1994 von Ron Rivest (RSA Data Security) • Blocklänge variabel (32, 64, 128 Bits), Schlüssellänge variabel (0– 2040 Bits), Anzahl der Runden variabel (0–255). • Patentiert. 6 Authentifikation Bisher haben wir uns mit der Geheimhaltung von Nachrichten beschäftigt, dem Schutz vor einem passiven Angreifer, der Nachrichten abhören möchte. Jetzt geht es um den Schutz vor einem aktiven Angreifer, der Nachrichten aktiv verändern möchte. Es geht insbesondere um drei Punkte: • Nachrichtenintegrität: Wie kann der Empfänger einer Nachricht sicher sein, dass die Nachricht nicht verändert wurde? • Nachrichtenauthentifikation: Wie kann der Empfänger sicherstellen, dass die Nachricht wirklich vom angeblichen Absender stammt? • Benutzerauthentifikation: Wie kann eine Person ihre Identität beweisen? 48 6.1 Kryptografische Prüfsummen • Damit der Empfänger die Unversehrtheit der Nachricht prüfen kann, braucht er zusätzliche Information. • Dieser Informationsblock heißt kryptografische Prüfsumme, kryptografischer Fingerabdruck (Fingerprint), Message Authentication Code (MAC), oder auch parametrisierte Hashfunktion. Beispiel: mit symmetrischer Verschlüsselung Erzeugen eines MAC Aus der Nachricht m berechnet der Sender mit Hilfe eines Algorithmus F unter einem geheimen Schlüssel k den Message Authentication Code: MAC = Fk (m). Überprüfen eines MAC Der Empfänger erhält mit der Nachricht m0 einen Message Authentication Code MAC0 . Er überprüft, ob MAC0 = Fk (m0 ). (Sender und Empfänger müssen also vorher einen geheimen Schlüssel vereinbaren.) Bemerkungen: • Ein Angreifer kann die Nachricht nicht fälschen, ohne dass der Empfänger es merkt, weil der Angreifer den geheimen Schlüssel k nicht kennt. • Der Empfänger kann nur erkennen, ob die Nachricht unversehrt ist; stellt er fest, dass sie verändert wurde, kann er das Original nicht erzeugen. Wie sieht das in der Praxis aus? Als Beispiel verwenden wir DES im CBC-Modus: Beispiel: DES im CBC-Modus • Die Nachricht wird in Blöcke der Länge 64 Bit zerlegt (eventuell mit passenden Bits aufgefüllt). • Dann werden die Blöcke der Reihe nach mit DES-CBC verschlüsselt und der letzte Block des Geheimtextes wird als MAC verwendet. c1 = fk (m1 ) , 49 ci = fk (ci−1 ⊕ mi ) k . . . m3 m2 m1 L DES . . . c3 c2 c1 Vorteile: • MAC hängt von allen Blöcken der Nachricht ab. • MAC hat eine feste Länge (immer 64 Bit). Das bringt uns zu der Frage: Wann ist ein MAC-Algorithmus „gut“? 1. Es sollte praktisch unmöglich sein, zu einem gegebenen MAC eine passende Nachricht zu finden („Einweg-Hashfunktion’). Praktisch unmöglich bedeutet: mit heutigen Methoden dauert es sehr, sehr lange (Hunderte von Jahren), zum Beispiel, weil alle Nachrichten durchprobiert werden müssen. 2. Es sollte praktisch unmöglich sein, zwei verschiedene Nachrichten m und m0 zu finden, die zum gleichen MAC führen („Kollisionsresistenz“). 3. Man unterscheidet: (a) Schwache Kollisionsresistenz: Für ein gegebenes m ist es praktisch unmöglich, ein passendes m0 zu finden, so dass die MACs übereinstimmen. (b) Starke Kollisionsresistenz: Es ist praktisch unmöglich, irgendein Paar m, m0 mit demselben MAC zu finden. 6.2 Einweg-Hashfunktionen Kompressionsfunktion bildet Strings fester Länge auf Strings fester, aber geringerer Länge ab. Hashfunktion bildet Strings beliebiger Länge auf Strings fester Länge ab. Einwegfunktion h: Es ist praktisch unmöglich, sie umzukehren, das heißt, für ein gegebenes s ein x zu finden, so dass h(x) = s. 50 6.3 Die Geburtstagsattacke Frage: Wie lang muss das Ergebnis einer Einweg-Hashfunktion sein, damit der MAC sinnvoll einsetzbar ist? • Alle solchen Einweg-Hashfunktionen sind prinzipiell mit der Geburtstagsattacke angreifbar. • Dabei berechnet und speichert der Angreifer möglichst viele Nachrichten und deren Hashwerte. • Die Attacke erfolgt durch Vergleich eines gegebenen MAC mit den gespeicherten Werten. • Damit lässt sich die Frage so formulieren: Wie lang muss das Ergebnis sein, damit es praktisch unmöglich ist, genügend viele Werte auszurechnen und zu speichern? • Antwort: Es muss so viele verschiedene mögliche Hashwerte geben, dass es praktisch unmöglich ist, dass zufällig zweimal der gleiche Wert herauskommt. • Genau lässt sich diese Frage durch eine einfache statistische Analyse beantworten. • Anschaulich handelt es sich um das gleiche Problem wie beim so genannten Geburtstagsparadox: • In einem Raum halten sich k Personen auf. Wie groß ist die Wahrscheinlichkeit, dass zwei von ihnen am gleichen Tag Geburtstag haben? • Etwas allgemeiner formuliert: Es gibt n verschiedene mögliche Geburtstage (n = 366) und k Personen im Raum. • Die Wahrscheinlichkeit, dass die i-te Person (i = 1, . . . , k) am Tag gi (gi = 1, . . . , n) Geburtstag hat, ist 1/n. • Für alle Personen zusammen schreiben wir: (g1 , . . . , gk ), gi ∈ {1, . . . , n} • Die Wahrscheinlichkeit dafür ist 1/nk . 51 • Wir berechnen die Wahrscheinlichkeit q, dass alle Geburtstage verschieden sind. • Die Wahrscheinlichkeit, dass zwei (oder mehr) Personen am gleichen Tag Geburtstag haben, ist dann p = 1 − q. • Was uns interessiert, ist die Menge E aller (g1 , . . . , gk ), in denen alle gi verschieden sind. • Wie groß ist diese Menge? • Zunächst einmal: Ist k > n (mehr als 366 Personen), so sind mindestens zwei der gi gleich, die Menge E ist leer. • Ist k ≤ n, so hat, wie eben festgestellt, jedes der Elemente von E die Wahrscheinlichkeit 1/nk ; • also ist q= 1 · |E|. nk • Wir müssen also die Elemente von E zählen. • In der ersten Position g1 kann jeder Tag vorkommen, g1 kann also alle n verschiedenen Werte annehmen. • Hat g1 einen bestimmten Wert, so kann dieser für g2 nicht mehr vorkommen, deswegen gibt es für g2 nur n − 1 mögliche Werte, und so weiter. • Insgesamt gilt: |E| = n(n − 1)(n − 2) . . . (n − k + 1). • Die gesuchte Wahrscheinlichkeit q ist 1 |E| nk 1 = · n · (n − 1) · · · (n − k + 1) nk 1 k−1 = 1 · (1 − ) · · · (1 − ). n n q = • Dies lässt sich leicht ausrechnen. 52 • Zur Vereinfachung schätzen wir das Ergebnis ab. • Für alle reellen Zahlen x gilt die Ungleichung 1 − x ≤ e−x . • Eingesetzt ergibt sich: q ≤ e−1/n . . . e−(k−1)/n = e−k(k−1)/(2n) . • Daraus folgt p 1 k ≤ (1 + 1 − 8n ln q) 2 • Wenn wir jetzt fragen: Wie groß muss k sein, damit q ≤ 1 ), dann bekommen wir daraus die Antwort: 2 1 2 (oder p ≥ √ 1 k ≥ (1 + 1 + 8n ln 2) 2 • Für unsere Geburtstage (n = 366), bekommen wir k ≥ 23. • Das heißt: Wenn n = 366 und k = 23, dann ist die Wahrscheinlichkeit, dass zwei Personen am gleichen Tag Geburtstag haben, größer als 1/2. • Die Formel gilt aber auch für andere Fälle: • Wenn n sehr groß ist, gilt: k≈ √ √ √ 1√ 8n ln 2 = 2 ln 2 n ≈ 1,2 n 2 • Zurück zu unseren Einweghashfunktionen, bei denen die gleiche statistische Analyse gilt: • Kann die Hashfunktion n verschiedene Werte annehmen, so reichen √ 1 k ≥ (1 + 1 + 8n ln 2) 2 Werte aus, damit die Wahrscheinlichkeit für zwei gleiche Hashwerte größer als 1/2 ist. • Nehmen wir an, dass die Hashfunktion Werte mit N Bits berechnet, so ist n = 2N , also √ p 1 k ≥ f (N ) = (1 + (1 + (8 ln 2)2N ≈ 1,2 2N . 2 53 • Das heißt für eine Hashfunktion mit N Bits sind ungefähr k ≥ f (N ) ≈ 2N/2 verschiedene Eingaben nötig, um mit 50% Wahrscheinlichkeit zwei gleiche Hashwerte zu bekommen. • Heutzutage wählt man daher mindestens N ≥ 128 (dies entspricht 64 Bits Sicherheit und damit DES). • Für den digitalen Signaturstandard wird sogar N ≥ 160 verlangt. • Zu AES (128 Bit Sicherheit) gehört eine Hash-Funktion mit N ≥ 256. 6.4 Beispiele aus der wirklichen Welt Fast alle Hash-Funktionen aus der wirklichen Welt (und alle im Folgenden vorgestellten) sind iterative Hashfunktionen. Das heißt: 1. Zuerst wird die Eingabe in Blöcke gleicher Länge aufgespalten: m1 , . . . , mk ; fehlende Bits im letzten Block werden nach einer bestimmten Regel ergänzt. Eine typische Blocklänge ist 512 Bits. 2. Dann werden diese Blöcke der Reihe nach abgearbeitet, mit Hilfe einer Kompressionsfunktion h0 und eines internen Zustands Hi im i-ten Schritt: Der Prozess beginnt mit einem festen Wert H0 des internen Zustands, und in jedem Schritt wird der Zustand verändert nach der Regel Hi = h0 (Hi−1 , mi ) . Der letzte Wert Hk ist der Wert der Hash-Funktion. Dies hat mehrere wichtige Vorteile: 1. Es ist einfach zu spezifizieren und zu implementieren. 2. Man kann anfangen zu rechnen, wenn der erste Block bekannt ist. Damit kann auch ein Datenstrom von der Hash-Funktion verarbeitet werden. 54 6.4.1 MD4 • MD4 (Message Digest 4) wurde 1990 von Ron Rivest vorgestellt. Der Output ist ein 128-Bit-Hashwert. • MD4 ist sehr schnell, aber inzwischen sind Attacken bekannt. • Schon früher, als nur Attacken auf Teile des Algorithmus veröffentlicht waren, verbesserte Ron Rivest MD4 zu MD5. Sicherheit: Es ist praktisch unmöglich, zwei Nachrichten zu finden, die denselben Hashwert haben. Keine Attacke ist besser als Brute Force. Direkte Sicherheit: Die Sicherheit von MD4 beruht nicht auf unbewiesenen Annahmen, wie: es ist schwierig, große Zahlen zu faktorisieren. Geschwindigkeit: MD4 ist geeignet für schnelle Implementationen in Software. Es beruht auf einfachen Operationen auf 32-Bit-Operanden. Einfachheit und Kompaktheit: MD4 ist so einfach wie möglich, ohne große Datenstrukturen oder ein kompliziertes Programm. Favorisiert Little-Endian-Architekturen: MD4 ist optimiert für Mikroprozessorarchitekturen (insbesondere Intel). 6.4.2 MD5 • MD5 ist im Design ähnlich zu MD4, aber komplizierter („MD4 mit Sicherheitsgurt“). • MD5 verarbeitet die Eingabe in Blöcken von 512 Bits, und zwar in (16) Teilblöcken zu je 32 Bit. • Daher ist dieser Algorithmus sehr effizient auf 32-Bit-CPUs. • Zunächst wird die Nachricht auf ein Vielfaches von 512 Bit verlängert. • Die letzten 64 Bit sind dabei die Länge der Nachricht (als 64-BitZahl); • zwischen der eigentlichen Nachricht und diesem Längenfeld wird mit genau einem 1-Bit und so vielen 0-Bits wie nötig aufgefüllt. • Dann werden die einzelnen 512-Bit-Blöcke verarbeitet, und zwar in jeweils 4 Runden, in jeder Runde 128 Bit. 55 • Die Zwischenergebnisse werden in 4 Variablen à 32 Bit gespeichert, die wie folgt initialisiert werden: A B C D = = = = 0x01234567 0x89abcdef 0xfedcba98 0x76543210 • Diese Operation wird solange wiederholt, bis alle Eingabeblöcke abgearbeitet sind. Das Ergebnis ist dann der 128-Bit-Hashwert ABCD. Jede Runde besteht aus 16 Operationen, die etwas unterschiedlich sind. Message Block (512) A B C D - - 1 - - A @ A @ A @ R @ - AAU -@ - 3 - 4 2 - -⊕ -A -⊕ -B -C 6 ⊕ -D 6⊕ 6 6 MD5: Hauptschleife - Mj t j a b @ c @ R @ -Nichtlin. Funkt.-⊕? -⊕? -⊕? - <<< s -⊕? d MD5: Eine Rundenoperation Dabei bedeutet <<< s einen zirkulären Linksshift um s Bit. Die Werte A, B, C, D werden zyklisch auf a, b, c, d abgebildet. 56 6.4.3 SHA (Secure Hash Algorithm) • SHA ist Teil des Secure Hash Standard (SHS), der von NIST (mit Hilfe der NSA) zur Benutzung für den Digital Signature Standard entworfen wurde. • Es heißt, die Designprinzipien seien „ähnlich wie bei MD4“; sie wurden aber nicht im Detail veröffentlicht. • SHA-1 erzeugt einen 160-Bit-Hashwert. • Wie bei MD5 wird die Nachricht zunächst auf ein Vielfaches von 512 Bit verlängert. • Die Hauptschleife besteht wiederum aus 4 Runden, die allerdings komplizierter sind als bei MD5: ei−1 L L Wt Kt L L di−1 ci−1 ei di Nichtl. Fkt. bi−1 ci <<< 30 bi <<< 5 ai−1 6.4.4 ai Probleme iterativer Hash-Funktionen Verlängerung • Angenommen, wir haben eine Nachricht m, bestehend aus k Blöcken m1 , . . . , mk , mit Hashwert h(m). • Dann kann ein Angreifer einen Block mk+1 anfügen, und den Hashwert dieser neuen Nachricht m0 berechnen als h(m0 ) = h0 (h(m), mk+1 ) . • Da der Hashwert stimmt, kann der Empfänger diese Manipulation nicht entdecken! 57 Kollision bei Nachrichtenteilen • Angenommen, es gebe zwei verschiedene Nachrichten m und m0 mit gleichem Hashwert h(m) = h(m0 ). • Wenn ich nun an beide Nachrichten den gleichen Text X anfüge, so ist der Hashwert der neuen, verlängerten Nachrichten m k X und m0 k X immer noch gleich. • Der Angreifer muss also nur noch zu einer gegebenen Nachricht m k X einen Teil m und m0 finden, sodass h(m) = h(m0 ). • Dann ist automatisch auch h(m k X) = h(m0 k X). 1. Zu jeder Nachricht m berechne zuerst h(m), dann hänge h(m) und m zusammen, und berechne davon den Hashwert: h(h(m) k m). 2. Zu jeder Nachricht m berechne zuerst h(h(m)). 3. HMAC. 6.4.5 HMAC HMAC ist die Bezeichnung für einen MAC mit Hilfe einer Einweg-Hashfunktion h. • Gegeben unsere Nachricht m und unser geheimer Schlüssel, so berechnet der HMAC-Algorithmus: h((k ⊕ a) k h((k ⊕ b) k m)) . a und b sind Konstanten. • Vorteil: Kollisionen spielen keine große Rolle, weil a und b die Rolle eines Schlüssels spielen. • HMAC wird an vielen Stellen benutzt. Probleme: • Es ist möglich, in MD5 Kollisionen zu erzeugen. • Weiterhin sind 128 Bit in unseren Zeiten zu wenig. Die Geburtstagsattacke zeigt, dass 264 Versuche ausreichen, um eine Kollision zu finden. 58 • 2004 wurde nachgewiesen, dass es mit vertretbarem Aufwand möglich ist, zu einer Nachricht mit einem bestimmten Hashwert eine zweite, unterschiedliche, Nachricht mit demselben Hashwert zu erzeugen, und zwar für: MD4, MD5 und Andere (RIPEMD, HAVAL128, SHA-0). • SHA-1 war nicht betroffen. • Zunächst war keine kryptografische Attacke gegen SHA-1 bekannt. • Wie bei MD5 wird argumentiert, dass 160 Bit zu wenig sind, weil man in 280 Versuchen eine Kollision finden kann. • In diesem Jahr wiesen drei chinesische Forscher nach, dass SHA-1 gebrochen werden kann, und zwar durch eine Kollision in 269 Versuchen. • Damit ist SHA-1 für digitale Signaturen nicht mehr zu empfehlen. • Es gibt bereits neue amerikanische Standards SHA-224, SHA-256, SHA-384, SHA-512. • Allerdings ist SHA-384 ziemlich sinnlos, weil man 512 Bit berechnet und dann 128 Bit weg lässt. Diese Algorithmen sind deutlich langsamer als SHA-1. 6.5 Benutzerauthentifikation • Wie kann sich eine Person (eine Benutzerin) gegenüber einem Rechner (Zielsystem) ausweisen? • Die naive Methode benutzt einen Benutzernamen und ein Passwort, das nur der Benutzerin bekannt ist. Probleme: 1. Benutzername und Passwort werden im Klartext übertragen und können abgehört werden. Lösung: Verschlüsselung 2. Selbst verschlüsselter Verkehr ist protokollier- und wiederholbar („Replay Attack“). Mögliche Lösungen: Wechsel der Schlüssel, Zeitstempel (Timestamps), Einmalpasswörter (Beispiel: TANs) 59 3. Ein Angreifer könnte sich den Schlüssel beschaffen. Damit wäre die gesamte Methode unsicher. 4. Die Passwörter sind auf dem Zielsystem abgelegt. Lösung: lege Hashwerte der Passwörter ab, damit sind die Passwörter auf dem Zielsystem nicht entschlüsselbar. 5. Das Zielsystem ist nicht identifizierbar, ein aktiver Angreifer könnte den Benutzerinnen die Identität des Zielsystem vorspiegeln und so in den Besitz der Passwörter kommen. • Wie kann man sich vor der Replay-Attacke schützen? • Eine mögliche Lösung heißt Challenge-Response-Methode und funktioniert so: 1. Das Zielsystem schickt ein zufällig gewähltes Bitmuster RAND an die Benutzerin, die sich authentifizieren will. 2. Die Benutzerin wendet einen Algorithmus auf RAND an, der von ihrem Passwort abhängt, fk (RAND), und schickt das Ergebnis an das Zielsystem. 3. Das Zielsystem berechnet ebenfalls fk (RAND) und vergleicht. • Auf den ersten Blick sieht das so aus, als müsste doch das Passwort auf dem Zielsystem hinterlegt sein. • Nein! Denn man kann ja auch zum Beispiel den Hashwert des Passwortes hinterlegen. • Gegen ein Ausspähen des und Einbruch in das Zielsystem nützt das allerdings auch nur begrenzt. • Nach wie vor ist dies nur einseitige Authentifikation, das Zielsystem könnte vorgespiegelt sein. • Dies kann man durch gegenseitige Challenge-Response lösen. • Praktische Anwendungen: GSM-Handy, dort erfolgt eine ChallengeResponse-Authentifizierung des Handy mit Hilfe der SIM-Karte. Erst bei UMTS authentifiziert sich auch das Netz gegenüber dem Handy. 60 6.6 Zero-Knowledge-Protokolle • Alle bisher vorgestellten Systeme beruhen mehr oder weniger auf dem so genannten Prinzip des Gemeinsamen Geheimnisses (Shared Secret): es gibt eine (geheime) Information, die beiden Seiten, Benutzerin wie Zielsystem, bekannt ist. • Kann ich das auch ohne gemeinsames Geheimnis machen? Kann ich einen Kommunikationspartner davon überzeugen, dass ich etwas weiß, ohne ihm das Wissen selbst mitzuteilen? • Ja! Die Antwort liefern die Zero-Knowledge-Protokolle. Nach n Versuchen, ist die Wahrscheinlichkeit, dass Circe das Geheimnis nicht kennt, 2−n . 6.6.1 Das Fiat-Shamir-Protokoll • Das Fiat-Shamir-Protokoll wurde 1986 von Adi Shamir und Amos Fiat vorgestellt. • Es wurde für den Einsatz auf Chipkarten entwickelt und beruht darauf, dass es äußerst schwierig ist, die modulare Quadratwurzel einer großen Zahl v zu berechnen. • Seien n, v positive ganze Zahlen. • Gesucht ist eine Zahl s mit der Eigenschaft s2 = v (mod n). • Wenn n genügend groß ist (200–300 Dezimalstellen bzw. 1024 Binärstellen), dann ist die Kenntnis von s ein Geheimnis, dass man gut hüten sollte. • Zu Beginn wählt man in einer Authentisierungszentrale n als Produkt zweier ungefähr gleich langer Primzahlen p, q: n = p · q. • n wird öffentlich gemacht; p und q werden geheim gehalten! • Denn: wenn man die Quadratwurzeln (mod p) und (mod q) kennt, kann man die Quadratwurzel (mod (pq)) daraus sozusagen zusammensetzen. • Diese Zahlen müssen so groß sein, dass es praktisch unmöglich ist, p und q als Primfaktoren von n zu berechnen. 61 • Für jeden Benutzer wird jetzt eine Zahl s bestimmt, die das Geheimnis des Benutzers ist, und daraus v = s2 (mod n) berechnet. Benutzerin Alice beweist folgendermaßen, dass sie s kennt, ohne die geringste Information über s selbst preiszugeben: 1. Alice wählt zufällig eine Zahl r, die teilerfremd zu n ist, berechnet x = r2 (mod n), und sendet diese Zahlt x an das Zielsystem. 2. Das Zielsystem wählt zufällig ein Bit b aus und sendet es an Alice (Challenge). (Die Wahl dieses Bits entspricht der Wahl Odysseus, ob er „Rechts!“ oder „Links!“ ruft.) 3. Alice berechnet: (a) Im Fall b = 1: y = r · s (mod n), (b) Im Fall b = 0: y = r (mod n), und sendet y an das Zielsystem. 4. Das Zielsystem berechnet y 2 (mod n) und prüft (a) Im Fall b = 1: y 2 (mod n) = r2 s2 (mod n) = x · v (mod n), (b) Im Fall b = 0: y 2 (mod n) = r2 (mod n) = x (mod n). 1. Die Challenge ist die Frage nach entweder r oder r · s. Da Alice s kennt, kann sie beide Fragen richtig beantworten. 2. Ein Angreifer, der s nicht kennt, kann nur eine der beiden Fragen richtig beantworten. Denn er hat zwei Möglichkeiten: (a) Er hofft, dass das Zielsystem b = 0 sendet. Dann wählt er (wie Alice) eine Zahl r, die teilerfremd zu n ist und sendet x = r2 im ersten Schritt. Hat er richtig geraten, so sendet er im dritten Schritt y = r. (b) Er hofft, dass das Zielsystem b = 1 sendet. Dann wählt er eine Zahl r0 , die teilerfremd zu n ist, und sendet x = r02 ·v −1 im ersten Schritt. Hat er richtig geraten, so sendet er im dritten Schritt y = r0 , denn y 2 = r02 = x · v. Kennt er s nicht, ist die Wahrscheinlichkeit, die richtige Antwort zu geben, pro Schritt 1/2, nach n Schritten 2−n . 1. Beide Seiten müssen nur einfache Operationen durchführen. 62 2. Das Zielsystem verwendet nur öffentliche Informationen, nur Alice kennt s. (s selbst bleibt geheim.) 3. Das Verfahren beruht darauf, dass es praktisch unmögliche ist, die modulare Quadratwurzel zu berechnen. 6.7 Chipkarten Eine Chipkarte ist eine Plastikkarte mit einem eingebetteten Minirechner. Damit kann zum ersten Mal Sicherheit auf der kryptografischer Basis realisiert werden, und zwar für jedermann, nicht nur für Experten! Das liegt am Zusammentreffen zweier Eigenschaften: • Chipkarten sind ideal für Kryptografie: Speicherung geheimer Schlüssel, Ausführung kryptografischer Algorithmen • Chipkarten sind ideal für Menschen: einfach zu benutzen (PIN) 6.7.1 Zugangskontrolle mit Chipkarte Der übliche Passwortmechanismus wird in zwei Schritte zerlegt: 1 Die Kartenbesitzerin identifiziert sich der Chipkarte gegenüber mit ihrer PIN, die innerhalb der Karte verifiziert wird. Das heißt insbesondere, dass die PIN nirgendwo sonst gespeichert wird! Man kann eine Reihe von nützlichen Mechanismen einbauen: zum Beispiel die automatische Sperre der Karte, wenn die PIN dreimal falsch eingegeben wird, oder sogar der Benutzerin erlauben, die PIN zu ändern. Auch die Länge kann variabel sein. 2 Wenn die PIN stimmt, identifiziert sich die Chipkarte dem Rechner gegenüber mit einem Challenge-Response-Verfahren. Dafür brauchen Chipkarte und Rechner einen gemeinsamen Algorithmus f und einen geheimen Schlüssel k (shared secret). Der Rechner sendet eine Zufallszahl RAND an die Karte, diese berechnet fk (RAND) und schickt das Ergebnis zurück. Da sich die Nachricht jedes mal ändert, kann ein Angreifer mit einer abgehörten Nachricht nichts anfangen. 63 6.8 6.8.1 Anwendungen in der realen Welt: MS-CHAP und Kerberos PPTP und MS-CHAP • Das Point-to-Point Tunneling Protocol (PPTP) ist ein Protokoll von Microsoft für sichere Kommunikation über (unsichere) TCP/IP-Verbindungen. (Im Verbindungsassistenten nennt sich das einfach VPN.) • Die ursprüngliche (NT-)Implementation dieses Protokolls war unsicher, sowohl bei der Authentifikation als auch bei der Verschlüsselung. • Ich beschränke mich hier auf die Authentifikation mit MS-CHAP. • Näheres siehe im Artikel von Bruce Schneier. Der PPTP-Server läuft auf NT 4 oder 5 (W2K(3)) Server. Es gab zunächst drei Authentifizierungsmethoden: 1. Passwort wird im Klartext übertragen (Verbindung unverschlüsselt). 2. Passwort-Hash wird übertragen (Verbindung unverschlüsselt). 3. Challenge-Response mittels MS-CHAP (Verbindung verschlüsselt). Passwort-Hashes Es wurden gleichzeitig zwei verschiedene Hash-Funktionen verwendet, vermutlich der Rückwärtskompatibilität wegen: Lan-Manager-Hash: 1. Das Passwort wird durch Abschneiden oder Auffüllen mit 0-Bytes auf 14 Byte Länge gebracht (b1 . . . b14 ). 2. Alle Kleinbuchstaben werden in die entsprechenden Großbuchstaben umgewandelt. 3. Die zwei Hälften à 7 Byte, also 56 Bits werden als DES-Schlüssel benutzt, um festgelegte Konstanten c1 und c2 (!) zu verschlüsseln. 4. Die beiden jeweils 8 Byte langen Ergebnisse ergeben zusammen den 16 Byte langen LAN-Manager-Hashwert. Lan-Manager-Hash: Dies ist ein sehr schwacher Hash! Zum Beispiel: ist das Passwort nicht länger als 7 Buchstaben, dann ist der besteht der zweite DES-Schlüssel aus lauter 0-Bits, und damit sind die letzten 8 Byte des LAN-Manager-Hashes konstant und bekannt! 64 NT-Passwort-Hash: Wandle das Passwort (das wiederum aus maximal 14 Zeichen bestehen darf) nach Unicode um und berechne daraus den 16 Byte langen MD4-Hash. Problem: es werden immer beide Hashwerte benutzt. Damit ist das Verfahren nur so gut wie der schwächere LAN-Manager-Hash. Das MS-CHAP-Verfahren (Version 1) 1. Der Klient fordert ein Login an. 2. Der Server sendet eine zufällige 8-Byte-Challenge. 3. Der Klient berechnet den Lan-Manager-Hash des Passwortes, fügt fünf 0-Bytes hinzu, um drei 56 Bit lange DES-Schlüssel zu bekommen. Die Server-Challenge wird mit jedem dieser drei DES-Schlüssel verschlüsselt, die Ergebnisse werden zu einer 24 Byte langen Antwort zusammengefasst. Das gleiche Verfahren wird mit dem NTPasswort-Hash durchgeführt. Die Ergebnisse gehen zurück an den Server. 4. Der Server führt dieselben Operationen durch und vergleicht, aber nur mit einem der beiden 24 Byte langen Ergebnisse, abhängig von einem Flag im Antwortpaket des Klienten. Der andere 24-Byte-Block wird ignoriert. Probleme: 1. Es reicht aus, den schwachen LAN-Manager-Hash zu attackieren. 2. Weil drei Teile unabhängig voneinander verschlüsselt werden, kann man das Protokoll selbst attackieren: Ist das Passwort maximal 7 Zeichen lang, so sind die letzten 8 Byte des LAN-Manager-Hashes konstant. Daher bestehen die letzten 8 Byte des 24-Byte langen Antwortblocks aus dem Challenge, das mit dieser Konstanten verschlüsselt ist! 3. Der Server ist nicht authentisiert. Kurz gesagt, das Protokoll selbst ist so unsicher, dass es mit einfachen Mitteln möglich ist, dem Server eine falsche Identität vorzutäuschen. Dazu kommt dann noch, dass die Verschlüsselung des Datenverkehrs auch nicht sicher war. Microsoft hat dann nachgelegt und eine neue Version entwickelt, die die Probleme vermeidet: MS-CHAPv2. 65 Das MS-CHAP-Verfahren (Version 2) • Der Klient fordert ein Login an. • Der Server sendet eine zufällige 16 Byte lange Challenge. • Der Klient erzeugt ebenfalls eine 16 Byte lange Zufallszahl (“Peer Authentication Challenge”). Aus der Server-Challenge, der Peer Authentication Challenge und dem Benutzernamen des Klienten wird mittels SHA-1 ein 8 Byte langer Hashwert erzeugt. Wie bei MS-CHAPv1 werden aus dem NT-Passwort-Hash drei DESSchlüssel erzeugt, die diesen Hashwert verschlüsseln. Der Klient sendet dem Server die Peer Authentication Challenge und das 24 Byte lange Ergebnis der Verschlüsselung. • Der Server führt dieselben Berechnungen durch und prüft die Gültigkeit. Ist das Ergebnis richtig, erzeugt er aus der Peer Authentication Challenge und dem NT-Passwort-Hash eine 20 Byte lange “Peer Authenticator Response” und sendet sie an den Klienten. • Der Klient führt die gleichen Operationen durch und prüft das Ergebnis. Damit wird sichergestellt, dass auch der Server das NT-PasswortHash kennt. Probleme: • Warum so kompliziert? • NT-Passwort-Hash ist durch Brute-Force-Attacke knackbar. • Schwache Passworte sind nach wie vor leicht knackbar. 6.8.2 Kerberos • Kerberos wurde am MIT für das Athena-Projekt entwickelt. • Kerberos 4 war die erste öffentliche Version (1987). • Kerberos 5 (1991) ist die Authentisierungsmethode in Windows-Domänen seit NT 5 (W2K). • Kerberos benutzt Shared Secrets. 66 • Dreh- und Angelpunkt ist der Kerberos Authentication Server, genannt Key Distribution Center (KDC), bei dem Benutzer und Netzwerkdienste (“Principals”) ihre geheimen Schlüssel hinterlegen. • Daher muss dieser Rechner sicher sein (in W2K: DC). Für Benutzer ist dieser geheime Schlüssel eine verschlüsselte Version des Passwortes. • Die Grundidee ist sehr einfach. Alice hat mit dem KDC einen Schlüssel KA vereinbart, Bob ebenso KB . Daher können Alice und Bob, jede(r) für sich, sicher mit dem KDC kommunizieren. Wenn aber Alice und Bob sicher miteinander reden wollen, erzeugt der KDC einen gemeinsamen Schlüssel KAB , den Alice und Bob benutzen können. • Damit ist es möglich, Nachrichten zu verschicken, die einen Principal von der Identität eines anderen überzeugen. Im Detail geht das so: 1. Alice will mit Bob reden und teilt das dem KDC mit. Der KDC sendet einen neuen geheimen Schlüssel KAB , und dazu nochmal KAB , diesmal aber mit Bobs geheimem Schlüssel KB (den Alice nicht kennt) verschlüsselt. Diese beiden Teilnachrichten sind mit Alices geheimen Schlüssel KA verschlüsselt, sodass nur Alice sie lesen kann. 2. Damit hat Alice schon einmal den gemeinsamen Schlüssel KAB . Den zweiten Teil sendet Alice nun an Bob, der ihn entschlüsselt und damit auch KAB erhält. Also haben Alice und Bob jetzt einen gemeinsamen geheimen Sitzungsschlüssel, mit dem der Netzwerkverkehr zwischen den beiden Parteien verschlüsselt wird. 3. Ist die Sitzung beendet, wird der zugehörige Schlüssel zerstört, das heißt, beide Parteien löschen ihn. • Der KDC vergisst (löscht) den Schlüssel sofort, nachdem er ausgegeben wurde. Der KDC muss also keine zusätzlichen Daten speichern, und kann deshalb mehrfach vorhanden sein. • Die Verschlüsselung selbst erfolgt mit DES (oder 3DES) im CBCModus, oder (W2K) mit RC4-HMAC. • Die Schlüssel haben eine begrenzte Gültigkeit (typisch: zehn Stunden). 67 • Ein Netzwerkdienst, zum Beispiel ein Dateiserver, ist genauso ein Principal wie ein Benutzer, hat also auch einen Schlüssel beim KDC hinterlegt. • Ein Ticket ist eine sichere Methode, einen Server von der Identität eines Klienten zu überzeugen. Es gilt immer nur für einen Server und einen Klienten und enthält: – Name und Netzwerkadresse des Klienten – Name des Servers – Gültigkeitsdauer (Timestamp), typisch Stunden bis maximal Tage. – Einen Sitzungsschlüssel Das Ticket ist mit dem geheimen Schlüssel des Servers verschlüsselt; damit ist der Klient sicher, dass nur der zuständige Server etwas damit anfangen kann. • Zum Anfordern eines Dienstes wird neben dem Ticket ein Authenticator benutzt. Dieser ist (im Gegensatz zum Ticket) nur einmal gültig und ist mit dem Sitzungsschlüssel der beiden Partner verschlüsselt. Er enthält: – Name des Klienten – Zeitstempel – Sitzungsschlüssel (optional) • Es gibt einen speziellen Dienst, den Ticket Granting Service (TGS). Dieser kann Tickets für alle anderen Dienste ausgeben, wenn der Klient sich mit dem initialen Ticket Granting Ticket bei ihm identifiziert. • Authentisierungsschritte: 1. Klient fordert Ticket-Granting-Ticket (TGT) an. 2. Kerberos (KDC) sendet TGT. 3. Klient benutzt TGT, um ein Server-Ticket anzufordern. 4. TGS sendet Server-Ticket. 5. Klient benutzt Server-Ticket, um Dienst anzufordern. 68 Kerberos (KDC) TGS 6 1. TGT? 3./4. Server-Ticket 2. TGT! ? Klient 5. Dienst anfordern Server Sicherheit von Kerberos • Alle Rechner müssen die gleiche Uhrzeit haben. • Da Tickets eine gewisse Lebensdauer haben, gibt es die Möglichkeit von Replay Attacks. • Passworte können geraten werden! • Die Kerberos-Software auf allen beteiligten Rechnern muss sicher und vertrauenswürdig sein. 7 Public-Key-Kryptografie Bisher: Symmetrische Kryptosysteme, das heißt: 1. Wer verschlüsseln kann, kann auch entschlüsseln. 2. Vor der Verschlüsselung muss der geheime Schlüssel ausgetauscht werden. Geht’s auch anders? Ja! Mai 1976: Whitfield Diffie und Martin Hellman veröffentlichen ihre Arbeit: New Directions in Cryptography. Sie enthält drei wichtige neue Konzepte: 1. Versenden verschlüsselter Nachrichten ohne Schlüsselaustausch (nur theoretisch, ohne konkretes Verfahren), 2. Konzept der Digitalen Signatur 69 3. Schlüsselaustausch über einen unsicheren Kanal. 1977: RSA-Algorithmus bietet konkretes Verfahren. 7.1 Idee der Public-Key-Kryptografie • Jeder Teilnehmer hat ein Paar von Schlüsseln, einen geheimen Schlüssel d (private key) und einen öffentlichen Schlüssel e (public key). • Es ist praktisch unmöglich, von e (öffentlich) auf d (geheim) zu schließen. • Dies definiert ein asymmetrisches Kryptosystem. • e dient zum Verschlüsseln: e : Klartext → Geheimtext. Wir schreiben: g = EB (k), um die Verschlüsselung des Klartextes k mit dem öffentlichen Schlüssel der Person B zu bezeichnen. • Nur mit d kann ich die Nachricht wieder entschlüsseln: d : Geheimtext → Klartext. Wir schreiben: k = DB (g). • Mathematisch gesprochen: e definiert eine Einwegfunktion, d eine „Hintertür“, um die Umkehrung doch berechnen zu können. Wenn ich jemandem eine geheime Nachricht senden will, besorge ich mir den öffentlichen Schlüssel des Empfängers, verschlüssele damit und sende das Ergebnis. Nur der Empfänger besitzt den zugehörigen geheimen Schlüssel, um die Nachricht entschlüsseln zu können. Ein asymmetrisches Kryptosystem heißt Public-Key-Verschlüsselungssystem (oder auch: asymmetrisches Verschlüsselungssystem), wenn für jede Nachricht m gilt: c = E(m), m = D(c), das heißt, D macht E rückgängig. Vorteile • Kein Schlüsselaustausch • Nur ein Schlüssel je Teilnehmer • Neue Teilnehmer können jederzeit hinzugefügt werden. 70 Nachteile • Wie garantiere ich, dass ich den öffentlichen Schlüssel des Empfängers bekomme (und keine Fälschung)? Lösung: PKI (Public Key Infrastructure), kommt später. • Asymmetrische Verfahren sind langsam. 7.2 Erste Realisierung: RSA-Algorithmus Autoren: Ronald Rivest, Adi Shamir, Leonard Adleman Idee: Für jeden Teilnehmer nehme zwei etwa gleich große Primzahlen p, q, berechne n = p · q und bestimme zwei natürliche Zahlen e und d so, dass gilt: e · d = s(p − 1)(q − 1) + 1 Dann ist d der geheime Schlüssel, e (zusammen mit dem so genannten Modul n) der öffentliche Schlüssel. Verschlüsselung einer Zahl m < n: c = me mod n Entschlüsselung mit d: m0 = cd mod n Zauberei? Nein, Zahlentheorie! 7.3 Kleiner Zahlentheoretischer Exkurs Von Leonard Euler (1707-1783) stammt ein nach ihm benannter Satz, aus dem folgende Aussage abgeleitet werden kann: Seien p, q Primzahlen, n = p · q. Für jede natürliche Zahl m ≤ n und jede natürliche Zahl s gilt: ms(p−1)(q−1)+1 ≡ m (mod n). Beispiel: p = 2, q = 5. Dann gilt für s = 1: m5 ≡ m (mod 10) für m ≤ 10. Mit dieser Aussage können wir beweisen: m0 = m für m < n, 71 denn es gilt: m0 = = = ≡ cd mod n (me mod n)d mod n = (me )d mod n = me·d mod n ms(p−1)(q−1)+1 mod n m (mod n) = m. Damit ist bewiesen, dass die Methode tatsächlich funktioniert. Wie schwer ist es, e und d zu finden? Die Antwort liefert der Euklidische Algorithmus (um 300 v. Chr.): Für jede natürliche Zahl e, die teilerfremd zu (p-1)(q-1) ist, kann man leicht eine natürliche Zahl d finden, so dass gilt: e · d = s(p − 1)(q − 1) + 1. e wird vorgegeben, d und s ergeben sich im Laufe der Rechnung. In unserem Fall ist die Voraussetzung leicht erfüllt, weil n = p · q ist, und damit teilerfremd zu p − 1 und q − 1. Anders formuliert: wenn p und q bekannt sind, sind e und d leicht zu berechnen. Umgekehrt, ist es schwer, d zu berechnen, wenn es schwer ist, p und q zu bestimmen. Achtung: Die Bedingung, dass e teilerfremd zu (p − 1) und (q − 1) sein muss, bedeutet, dass n mod e 6= 1 sein muss! In der Praxis wählt man kleine Zahlen für e. Ist e zum Beispiel 3 oder 5, denn dann muss man nur (m3 mod n) oder (m5 mod n) berechnen. Wir werden später sehen, dass man häufig auch die vierte Fermat-Zahl e = 65537 = 216 + 1 wählt. Dieses Problem hat zwei Aspekte: • Angreifer: Ich habe e und n, ich will d berechnen! In diesem Fall reduziert sich das Problem auf die Frage: wie schwer ist es, eine gegebene natürliche Zahl n in ihre Primfaktoren zu zerlegen? Damals (1977): 512 Bit sind „schwer“. Heute werden 2048 Bit als Länge für die Zahl n empfohlen. • Benutzer: Ich brauche zwei etwa gleich große Primzahlen p und q, aus denen ich meine Schlüssel berechnen kann! Es gibt zwar sehr viele Primzahlen (zum Beispiel ist im Bereich der 512 Bit langen Zahlen jede 354te Zahl eine Primzahl), aber trotzdem muss ich prüfen, ob eine Zahl eine Primzahl ist. Zwar sind p und q nur etwa halb so lang wie n, was meinen Aufwand kleiner macht, aber im Prinzip stehe ich vor demselben Problem wie der Angreifer. Die Lösung bieten probabilistische Primzahltests. Solche Tests können nicht beweisen, dass eine Zahl eine Primzahl ist, aber sie können diese 72 Aussage mit einer gewissen Wahrscheinlichkeit treffen. Allerdings haben sie eine ganz entscheidende Eigenschaft: die Feststellung, dass eine Zahl keine Primzahl ist, ist immer richtig. Es kann also nur vorkommen (mit einer kleinen Wahrscheinlichkeit), dass der Test eine Zahl zur Primzahl erklärt, obwohl sie keine ist. Beispiel: Miller-Rabin-Test Miller-Rabin-Test Input: • p, ein Kandidat für eine Primzahl, • a, eine Zufallszahl, die kleiner als p ist. Liefert dieser Test die Aussage, dass eine Zahl eine Primzahl ist, so ist die Wahrscheinlichkeit allerhöchstens 1/4, dass sie doch zusammengesetzt ist. Wiederholt man den Test k-mal mit verschiedenen Zahlen a, so ist diese Wahrscheinlichkeit höchstens 4−k , für k = 10 also schon etwa 10−6 . Dies ist allerdings eine sehr pessimistische Annahme, realistischer sind Fehlerhäufigkeiten von 1/10000 (an Stelle von 1/4 für einen Durchgang des Tests. Bewaffnet mit diesem Wissen können wir mit vertretbarem Aufwand Primzahlen von k Bits Länge zufällig bestimmen, und zwar so: 1. Wir wählen zufällig ein Bitmuster der Länge k, in dem das erste und letzte Bit 1 sind. (Das erste Bit, weil die Länge sonst kleiner als k wäre, und das letzte Bit, weil Primzahlen immer ungerade sind.) Damit haben wir einen Kandidaten n. 2. Wir prüfen, ob n durch kleine Primzahlen teilbar ist: 3, 5, 7, 11,. . . Dies ist nicht wirklich nötig, geht aber sehr schnell und schließt einen große Zahl von möglichen Kandidaten aus. Testet man zum Beispiel nur auf Division durch 3, 5 und 7, so hat man schon über die Hälfte der Kandidaten eliminiert. Häufig testet man für alle Primzahlen unter 256 (80%); sehr effizient ist es, auf alle Primzahlen unter 2000 zu testen. 1. (RSA-spezifischer Test:) Wir prüfen, ob n mod e 6= 1, und zwar für alle Werte von e, die wir verwenden. (Das sind nur ein paar mögliche Zahlen.) 2. Wir führen den Miller-Rabin-Test für ein zufälliges a < n durch. Wiederhole dies noch viermal. 3. Fällt n durch einen der Tests, fange von vorne an. 73 7.4 Besonderheiten des RSA-Verfahrens • Normalerweise: Verschlüsselung mit öffentlichem Schlüssel e, Entschlüsselung mit geheimem Schlüssel d. Weil aber bei RSA die Methode (modulare Exponentiation) dieselbe ist, gilt auch die Umkehrung: Was mit dem geheimen Schlüssel d verschlüsselt wird, kann mit dem öffentlichen Schlüssel e entschlüsselt werden, denn für k < n gilt: (k d mod n)e mod n = k d·e mod n = k. Diese Eigenschaft gilt nicht für jedes asymmetrische Verschlüsselungssystem. • Multiplikativität: Wenn ich die Verschlüsselung zweier Nachrichten kenne, kann ich die Verschlüsselung des Produktes berechnen: (m1 m2 )e mod n = me1 me2 mod n = (me1 mod n)(me2 mod n). Dies bietet eine Angriffsmöglichkeit, da ich für gewisse Nachrichten (der Form m1 m2 ) die Verschlüsselung vorhersagen kann. Mögliche Lösung: Klartexte einschränken, zum Beispiel so, dass das letzte Byte immer gleich dem ersten ist. Dann ist m1 m2 so gut wie nie eine gültiger Klartext. • Sehr kurze Nachrichten: Nehmen wir an, dass der √ Exponent e = 5 ist, und dass die Nachricht so kurz ist, dass m < 5 n gilt. Dann wird me = m5 < n und damit m5 mod n = m5 übertragen, und ein Angreifer kann einfach die fünfte Wurzel berechnen, um an die ursprüngliche Nachricht zu kommen. Abhilfe: Struktur der ursprünglichen Nachricht verschleiern („encoding function“). 7.5 Hybride Kryptosysteme Asymmetrische Verschlüsselung ist langsam. Deswegen benutzt man meistens die asymmetrische Verschlüsselung nur zum Austausch des Schlüssels für ein symmetrisches Kryptosystem: 1. Der Sender A wählt einen geheimen Schlüssel k und verschlüsselt seine Nachricht m damit: g1 = fk (m). 2. Der Sender verschlüsselt k mit dem öffentlichen Schlüssel e des Empfängers B: g2 = EB (k) und sendet g1 und g2 an B. 74 3. B entschlüsselt zunächst g2 mit seinem geheimen Schlüssel: k = DB (g2 ), erhält damit k. Damit kann er g1 schnell entschlüsseln. Beispiele für hybride Systeme: SSL/TLS, PGP Die Sicherheit eines hybriden Systems ist nur so gut wie die Sicherheit der Bestandteile: kann ich den symmetrischen Teil brechen, habe ich die Nachricht; kann ich den asymmetrischen Teil brechen, bekomme ich den geheimen Schlüssel k und kann damit die Nachricht entschlüsseln. 7.6 Schlüsselaustausch nach Diffie und Hellman Der Schlüsselaustausch in einem hybriden Kryptosystem ist nicht symmetrisch: Der Sender A wählt den geheimen Schlüssel k und überträgt ihn an B. Schöner wäre es, wenn A und B die gleiche Rolle spielen würden. In ihrer Arbeit aus dem Jahre 1976 schlugen Diffie und Hellman eine symmetrische Methode zum Schlüsselaustausch vor: 1. Die beiden Partner A und B vereinbaren • eine Primzahl p • eine natürliche Zahl g < p. Diese brauchen nicht geheim zu sein. 2. A und B wählen je eine natürliche Zahl a bzw. b, die beide kleiner als p − 1 sind und halten sie geheim. A berechnet: α = g a mod p und schickt α an B, B berechnet: β = g b mod p und schickt β an A. 3. A berechnet: ka = β a mod p, B berechnet: kb = αb mod p. Diese beiden Zahlen ka und kb sind gleich, denn: ka = β a mod p = (g b mod p)a mod p = g ba mod p, kb = αb mod p = (g a mod p)b mod p = g ab mod p. ka = kb = k ist dann ein gemeinsames Geheimnis. A und B nehmen dieses gemeinsame Geheimnis entweder direkt als Schlüssel, oder sie berechnen daraus den Schlüssel auf eine vorher vereinbarte Weise. (Dies kann eine öffentlich bekannte Methode sein, zum Beispiel die Vorschrift: „Nimm die ersten 56 Bit als DES-Schlüssel!“) Diese Verfahren ist wieder praktisch unmöglich zu knacken, weil die Berechnung des diskreten Logarithmus schwierig ist. 75 7.7 Andere Verschlüsselungsverfahren Eng mit dem DH-Verfahren zusammen hängt das ElGamal-Verschlüsselungsverfahren (Taher El Gamal 1985) (und andere, zum Beispiel Massey-Omura): • Alle Teilnehmer haben dieselbe Primzahl p und natürliche Zahl g < p. • B hat als geheimen Schlüssel b < p − 1, als öffentlichen Schlüssel β = g b mod p. • A wählt zufällig eine Zahl a < p − 1 und berechnet k = β a mod p. Dann wird die Nachricht m mit einem Verfahren f mit Schlüssel k verschlüsselt: c = fk (m). • A sendet an B: c und α = g a mod p. • B wendet seinen geheimen Schlüssel b auf α an: k = αb mod p. Damit entschlüsselt B den Geheimtext c: m = fk−1 (c). Bemerkungen: • Im ursprünglichen ElGamal-Schema war fk (m) = k · m mod p, aber das ist eine unnötige Einschränkung. • ElGamal ist ein sogenanntes randomisiertes Verschlüsselungsverfahren: A kann jedes mal eine andere Zahl a wählen. Dadurch entsteht aus demselben Klartext jedes mal ein anderer Geheimtext; die Geheimtexte sind zufällig und gleichverteilt, wenn a dies ist. Dies erschwert die Kryptoanalyse, zum Beispiel die Anwendung statistischer Tests. Ein weiteres Schema, das auf dem DH-Schlüsselaustausch beruht, wurde von Jim Massey (ETH Zürich) und Jim Omura (UC) unabhängig voneinander entwickelt. Es beruht auf Shamirs No-Key-Algorithmus. Dabei wird ohne Austausch von Schlüsseln trotzdem verschlüsselt kommuniziert! Man kann sich das Prinzip dieses Algorithmus mit Hilfe von Koffern mit Vorhängeschlössern veranschaulichen. 1. A steckt die zu übermittelnde Nachricht in einen Koffer, versieht diesen mit einem Vorhängeschloss und behält den Schlüssel. Der verschlossene Koffer wird an B geschickt. 2. B verschließt den Koffer mit einem weiteren Vorhängeschloss, behält den Schlüssel und schickt den Koffer an A zurück. 76 3. A entfernt das erste Schloss, dessen Schlüssel sie behalten hat, lässt das zweite Schloss unangetastet und schickt den Koffer an B zurück. 4. B öffnet das verbleibende Schloss und kann die Nachricht aus dem Koffer entnehmen. Was bedeutet das für die Kryptografie, die ja mit Zahlen und Operationen auf Zahlen arbeitet, und nicht mit Schlössern und Schlüsseln? Wir brauchen eine doppelte Verschlüsselung (für A und B), bei der es egal ist, in welcher Reihenfolge die Entschlüsselungen durchgeführt werden, denn den obigen Schritten entsprechen folgende Operationen auf der Nachricht m: 1. A berechnet fkA (m) und schickt dies an B. 2. B berechnet fkB (fkA (m)) und schickt dies an A. 3. A kehrt seine Operation um: fk−1 (fkB (fkA (m))) und schickt dies an B. A 4. B berechnet fk−1 (fk−1 (fkB (fkA (m)))). B A Damit dies wieder m ergibt, muss gelten: fkB (fkA (m)) = fkA (fkB (m)). Dies ist eine kommutative symmetrische Verschlüsselung. Massey-Omura-Schema • Alle Teilnehmer vereinbaren: eine Primzahl p so, dass p − 1 einen großen Primfaktor hat. • Jeder Teilnehmer T wählt einen Schlüssel eT , der teilerfremd zu p − 1 ist und berechnet mit dem euklidischen Algorithmus eine Zahl dT so, dass eT · dT ≡ 1 (mod p − 1) ist. Beide Zahlen eT und dT werden geheimgehalten. Aus dem Satz von Euler folgt dann, dass meT ·dT mod p = m ist. • A berechnet: α = meA mod p und schickt dies an B. • B berechnet: β = αeB mod p = meA ·eB mod p und schickt dies an A. 77 • A berechnet: γ = β dA mod p = αdA ·eb mod p = mdA eA eB mod p = (mdA eA mod p)eB mod p = meB mod p und schickt dies an B. • B berechnet γ dB mod p = mdB eB mod p = m. Zum Knacken dieses Verfahrens ist wieder die Berechnung des diskreten Logarithmus notwendig. Ein Problem dieses Schemas ist seine Anfälligkeit für eine so genannte Man-in-the-middle-Attacke: Ein Angreifer C fängt die Nachrichten ab und gibt sich A gegenüber als B und B gegenüber als A aus. Das Schema hat keine Vorkehrung, einen solchen Eingriff zu entdecken. C wickelt mit beiden Seiten das Protokoll ab und ist am Ende im Besitz der Klartextnachricht m. 7.8 7.8.1 Weiterführende Methoden Elliptische Kurven • Public-Key-Kryptosysteme beruhen auf mathematischen Strukturen, nämlich Gruppen und endlichen Körpern. Rechnen mit ganzen Zahlen oder modulo einer Primzahl sind ein einfaches Beispiel dieser Strukturen. • Man RSA oder DH auch auf anderen Gruppen und endlichen Körpern aufbauen, zum Beispiel auf so genannten elliptischen Kurven über einem Galoiskörper GF (2n ). • Vorteil: Viele bekannte kryptoanalytische Methoden funktionieren nicht gut mit solchen elliptischen Kurven. • Nachteil: Die Mathematik ist viel schwieriger. • Link zum Tutorial 8 Die digitale Signatur Die Idee der digitalen Signatur ist abgeleitet von der handschriftlichen Unterschrift: 78 • Nur die richtige Person kann ihre eigene Unterschrift produzieren. • Jeder kann die Unterschrift prüfen (zumindest im Prinzip). Idee der Anwendung eines asymmetrischen Kryptosystems: Ein asymmetrisches Kryptosystem heißt Signaturschema, wenn für jede Nachricht m mit Hilfe des öffentlichen Schlüssels E überprüft werden kann, ob m und D(m) zusammenpassen. Man schreibt: D(m) = sig. Beispiel: 1. A unterschreibt eine Nachricht mit ihrem geheimen Schlüssel DA und sendet m und sig = D(m) an B. 2. B überprüft, ob m und D(m) zusammenpassen. 8.1 Digitale Signatur mit dem RSA-Algorithmus Bei RSA gilt: E(D(m)) = m. Das heißt, man kann sig = D(m) überprüfen, indem man E(sig) berechnet: E(sig) = E(D(m)) = m. Da dabei m wiedergewonnen wird, spricht man von einem Signaturverfahren mit Nachrichtenrückgewinnung. Konkret: 1. Um eine Nachricht m zu signieren, berechnet A als Signatur: s = mdA mod n. 2. Um s zu verifizieren berechnet B: seA = meA ·dA mod n = m. Dies ist nur korrekt, wenn A wirklich ihren geheimen Schlüssel dA benutzt hat. Ein entscheidender Unterschied zur handschriftlichen Signatur ist, dass die digitale Signatur untrennbar mit der Nachricht verbunden ist. Weder Nachricht noch Signatur kann nachträglich verändert werden, ohne dass die digitale Signatur ungültig wird. 79 • Schlüssel unterschieben: Der Angreifer C überzeugt B davon, dass eC der öffentliche Schlüssel von A ist. Da B der Sache traut, glaubt er, alle mit dC signierten Nachrichten, seien von A unterschrieben. • Existenzielle Fälschung: C wählt irgendeine Zahl s < n. Dann behauptet C, s sei eine Signatur von A. Zur Verifikation berechnet B m = seA mod n und glaubt, A habe m signiert. Wenn m jetzt auch noch ein halbwegs sinnvoller Text ist, wird B dem glauben. • Multiplikativität: Sind s1 und s2 die Signaturen von m1 und m2 , so ist s = s1 s2 mod n = md1 md2 mod n = (m1 m2 )d mod n die Signatur von m = m1 m2 . Aus zwei gültigen Signaturen lässt sich so leicht eine dritte gültige Signatur berechnen, ohne den zugehörigen privaten Schlüssel zu kennen. Redundanz: Signiere nur Texte, deren Binärdarstellung zum Beispiel aus zwei gleichen Hälften besteht. Signatur mit Hashwert: Wende eine öffentliche, kollisionsresistente EinwegHashfunktion h(x) auf den Text an, und berechne die Signatur wie folgt: s = h(m)d mod n. Hier müssen m und s versendet werden, da man aus s die Nachricht m nicht zurückgewinnen kann. Der Empfänger berechnet se mod n und vergleicht mit h(m). In der Praxis wählt man eine gängige 160Bit-Hashfunktion (zum Beispiel SHA-1) und wendet eine Expansionsfunktion an, um einen langen Bitstring zu bekommen. 8.2 Andere Public-Key-Verfahren Für die digitale Signatur lässt sich sofort jedes Public-Key-Verfahren verwenden, bei dem Verschlüsselung und Entschlüsselungsmethode vertauschbar sind, das heißt E(D(m)) = m. Aber es geht auch anders. 8.2.1 ElGamal-Signatur Bei dem ElGamal-Verfahren sind Entschlüsselung und Verschlüsselung nicht vertauschbar; daher sieht das Signaturverfahren etwas anders aus als die weiter oben vorgestellte ElGamal-Verschlüsselung. 80 • A wählt einmal eine Primzahl p und eine Zahl g < p. • A wählt a < p−1 und berechnet α = g a mod p. Der geheime Schlüssel ist a, der öffentliche Schlüssel besteht aus (p, g, α). • Signiert wird eine Nachricht m mit Hilfe einer Hashfunktion h(x). A wählt zufällig eine Zahl k < p − 1, die zu p − 1 teilerfremd ist und berechnet r = g k mod p s = k −1 (h(m) − a · r) mod (p − 1) Die Signatur besteht aus (r, s). • Verifikation der Signatur: überprüfe zunächst, dass 1 ≤ r ≤ p − 1. Dann berechne αr rs = (g a )r (g k )k −1 (h(m)−a·r) mod p = g h(m) mod p. Probleme des ElGamal-Signatur-Verfahrens 1. Kann durch Berechnung des diskreten Logarithmus geknackt werden (sehr schwierig). 2. Unter gewissen Bedingungen ist das Knacken einfacher, nämlich wenn (a) p ≡ 3 (mod 4), (b) g ein Teiler von p − 1 ist, (c) die Berechnung diskreter Logarithmen in einer Untergruppe möglich ist (das heißt, wenn g nicht zu groß ist). 3. Für jede Signatur muss die Zahl k neu gewählt werden, sonst lässt sich der geheime Schlüssel a berechnen! 4. Es muss eine Hashfunktion verwendet werden, sonst ist die existenzielle Fälschung möglich. 5. Dieses Verfahren ist deutlich aufwändiger als RSA: die Überprüfung erfordert drei modulare Exponentiationen. 81 8.2.2 Der Digital Signature Algorithm (DSA) • 1991 vorgeschlagen von NIST; Teil des Digital Signature Standard (DSS, 1994); NSA wieder beteiligt. • Effizientere Variante von ElGamal, nur zwei modulare Exponentiationen, die Exponenten sind nur 160 Bit lang. 1. Eine Primzahl p der Länge L, wobei L zwischen 512 und 1024 liegt und ein Vielfaches von 64 ist, als Formel ausgedrückt: 2511+64t < p < 2512+64t , t = 0, 1, 2, 3, 4, 5, 6, 7, 8, (Ursprünglich sollte p genau 512 Bit lang sein, dieses wurde aber als zu kurz kritisiert.) 2. Eine Primzahl q der Länge 160 Bit, das heißt, 2159 < q < 2160 , 3. p − 1 ist durch q teilbar, das heißt, q ist ein Primfaktor von p − 1, 4. eine Zahl x < p − 1, sodass g = x(p−1)/q mod p > 1, 5. eine Zahl a < q. 1. Berechne α = g a mod p. 2. Der geheime Schlüssel ist die Zahl a, der öffentliche Schlüssel besteht aus des Zahlen (p, q, g, α). 3. Eine Einweg-Hashfunktion h(m), DSS schreibt SHA-1 vor (160 Bit). Erzeugung der Signatur Die Signatur der Nachricht m berechnet sich wie folgt: Absender A wählt eine Zufallszahl k < q und berechnet: r = (g k mod p) mod q, s = k −1 (h(m) + a · r) mod q. Die Signatur besteht aus (r, s). 82 Überprüfung der Signatur Der Empfänger überprüft zunächst, dass 1 ≤ r, s ≤ q − 1 sind. Dann berechnet er ((g (s −1 h(m)) mod q α(rs −1 ) (s−1 (h(m)+ar)) mod q = ((g = (g k mod p) mod q = r. mod q ) mod p) mod q ) mod p) mod q Effizienz • DSA ist bei Prüfen der digitalen Unterschrift um einen Faktor von 10–40 langsamer als RSA. • Beschleunigung durch Vorberechnung: r hängt nicht von der Nachricht ab, sondern nur von der Zufallszahl k: r = (g k mod p) mod q. Daher kann man im Voraus einige Zufallszahlen erzeugen und die zugehörigen Werte von r für die nächsten Nachrichten berechnen, ohne die Nachrichten selber zu kennen. • Alle Exponenten sind maximal 160 Bit lang. Sicherheit • Neues k für jede Signatur wählen: kann eine Angreiferin zwei Nachrichten abhören, die mit dem gleichen Wert von k verschlüsselt wurden, so kann sie den geheimen Schlüssel a daraus gewinnen! • Gute Hashfunktion wählen, • Überprüfung von 1 ≤ r, s ≤ q − 1, • die Länge von p bestimmt die Sicherheit (512 Bit waren zu wenig!) RSA-Verschlüsselung mit DSA Angenommen, man hat eine Prozedur für DSA implementiert, die bei Eingabe von (p, q, g, k, x, h = H(m)) die Werte r und s zurück liefert: DSAsign(p,q,g,k,x,h,r,s) 83 Dann kann man dieselbe Prozedur auch zur RSA-Verschlüsselung mit Modul n, Nachricht m und öffentlichem Schlüssel e benutzen: DSAsign(n,n,m,e,0,0,r,s) Der verschlüsselte Text ist der Wert von r. Ist d der geheime Schlüssel und m die verschlüsselte Nachricht, so liefert DSAsign(n,n,m,d,0,0,r,s) die Klartextnachricht als r zurück. ElGamal-Verschlüsselung mit DSA Auch ElGamal-Verschlüsselung einer Nachricht m mit öffentlichem Schüssel β ist damit möglich (mit fk (m) = k · m mod p): Man wähle eine Zufallszahl a und rufe die Prozedur wie folgt auf: DSAsign(p,p,g,a,0,0,alpha,s) α ist der erste gewünschte Wert, s wird weggeworfen. Dann rufe DSAsign(p,p,beta,a,0,0,k,s) auf, s wird wieder weggeworfen und DSAsign(p,p,m,1,k,0,r,c) aufgerufen. Diesmal wird r weggeworfen; c ist zusammen mit der Zahl α der gewünschte Geheimtext. Die zugehörige Entschlüsselung funktioniert dann so: man nehme α und den geheimen Schlüssel b und berechne: DSAsign(p,p,alpha,b,0,0,k,s) s wird ignoriert, und man berechnet aus k und c: DSAsign(p,p,1,k,c,0,r,m) m ist der Klartext der Nachricht. Ein Wort der Warnung Dies funktioniert nur, wenn der DSA-Algorithmus für beliebige Eingabewerte implementiert ist. Bei der Signatur muss ja q 160 Binärstellen haben, und p mindestens 512, höchstens 1024. 84 9 Das Schlüsselverteilungsproblem Alle öffentlichen Schlüssel sind allgemein bekannt. Es muss aber sichergestellt sein, zu welcher Person ein öffentlicher Schlüssel gehört, sonst könnte ein Angreifer einen falschen öffentlichen Schlüssel unterschieben. Wie kann B garantieren, dass ein öffentlicher Schlüssel d zur Person A gehört? 9.1 Lösungsansatz–Theorie 1. A übergibt den eigenen öffentlichen Schlüssel eA persönlich an B– sichere Methode aber nur in sehr kleinem Rahmen praktikabel. 2. C übergibt seinen öffentlichen Schlüssel eC persönlich an B. A übergibt eA persönlich an C. C erstellt eine digitale Signatur sigC (NameA , dA ) des Paares aus Name und Schlüssel von A und schickt sie zusammen mit eA per Email an B weiter. Name, öffentliche Schlüssel und Signatur zusammen bezeichnet man als Zertifikat. Wenn B dem Überbringer C vertraut, vertraut er auch Cs digitaler Signatur und glaubt daher, dass eA der öffentliche Schlüssel von A ist. 9.1.1 Ad-Hoc-Vertrauen Letzteres kann man auch über mehrere Personen fortsetzen: B traut C, C traut A und E, A traut D und F, D traut G und H, E traut F, G traut C, H traut G. Nehmen genügend Personen teil, so ergibt sich ein Netzwerk des Vertrauens (“web of trust”). Auf dieser ad-hoc Methode baut die Schlüsselverteilung bei PGP auf. Es gibt keine Regel, wie genau Schlüssel weitergegeben werden; jeder Teilnehmer entscheidet selber, ob er einer digitalen Signatur soweit traut, dass er den damit unterschriebenen Schlüssel für richtig hält oder sogar selber digital signiert. Dies erfordert keine weitere Organisation und hat sich in begrenztem Rahmen bisher auch bewährt. Die entstandene Schlüsselsammlung heißt keyring (Schlüsselbund). Das System leidet an zwei grundsätzlichen Problemen: • Zum einen muss es immer einen Vertrauenspfad zu einem anderen Teilnehmer geben, damit man an den öffentlichen Schlüssel dieser Person gelangen kann. Das funktioniert gut in begrenztem Rahmen, aber zum Beispiel für ein System, das alle Menschen auch nur in einer Stadt umfasst, ist es zu kompliziert. 85 • Das führt zum zweiten Problem: Das Konzept von PGP ist dem durchschnittlichen Computerbenutzer nicht nahe zubringen. (Es ist schon schwierig genug, das Konzept eines Public-Key-Kryptosystems zu erklären!) 9.1.2 Hierarchisches Vertrauen Einen anderen Weg geht die hierarchische Methode: Hier gibt es eine zentrale Instanz, der alle Teilnehmer vertrauen. Diese Instanz kann entweder alle Schlüssel der Teilnehmer direkt überprüfen und signieren oder aber diese Aufgabe an Unterinstanzen delegieren. Dadurch wird garantiert, dass der öffentliche Schlüssel eines jeden Teilnehmers von einer vertrauenswürdigen Instanz digital signiert ist. Eine solche Instanz nennt man eine Certificate Authority (CA), die oberste Instanz in einer Hierarchie RootCA. Eine Root-CA signiert ihren öffentlichen Schlüssel mit dem dazugehörigen geheimen Schlüssel. Das bedeutet: man kann zwar die Gültigkeit eines Root-CA-Zertifikats überprüfen, indem man die digitale Unterschrift prüft, aber dem Zertifikat selbst und damit der Root-CA muss man vertrauen. Beispiel Die Firma MBI will die öffentlichen Schlüssel aller Angestellten signieren. Dazu richtig sie eine zentrale Root-CA Z am Firmensitz in den USA ein. Damit nicht alle Angestellten persönlich dorthin reisen müssen, um ihre Identität nachzuweisen, werden in allen Ländern, in denen die Firma Niederlassungen hat, länderspezifische Signaturstellen (CAs) eingerichtet. Die zentrale Signaturinstanz Z signiert die öffentlichen Schlüssel aller dieser Signaturstellen. Damit nicht alle Angestellten in Deutschland zum Sitz der Niederlassung reisen müssen, werden an allen Standorten standortspezifische Signaturinstanzen eingerichtet, deren öffentliche Schlüssel von der für Deutschland zuständigen Signaturinstanz D digital signiert werden. Jede Angestellte muss jetzt nur noch bei der Signaturinstanz S ihres Standortes persönlich vorsprechen, um ihren öffentlichen Schlüssel digital signieren zu lassen. Die so bestätigten öffentlichen Schlüssel werden im Firmennetzwerk veröffentlicht. Wenn ein Angestellter B in den USA den öffentlichen Schlüssel einer Angestellten A in Deutschland braucht, besorgt er sich diesen im Firmennetzwerk und überprüft die Kette der Signaturen: As Schlüssel ist von S signiert. Die Gültigkeit der Signatur von S kann er mit dem öffentlichen Schlüssel von S prüfen. Der wiederum ist von D signiert, der öffentliche 86 Schlüssel von D von Z. Den einzigen Schlüssel, den B also wirklich auf sichere und nachweisbare Weise braucht, ist der der Root-CA Z. Solch eine Struktur nennt man eine Public-Key-Infrastruktur (PKI). Allerdings gehört noch mehr dazu: es muss zum Beispiel möglich sein, einen öffentlichen Schlüssel für ungültig zu erklären. Ein Teilnehmer könnte nämlich seinen privaten Schlüssel verlieren (womit der öffentliche Schlüssel nutzlos wird, weil das Gegenstück fehlt), oder noch schlimmer, der private Schlüssel könnte gestohlen oder gar bekannt werden. In diesen Fällen muss dies der zuständigen Signaturinstanz gemeldet werden. Diese veröffentlicht eine oder mehrere Listen ungültiger Schlüssel, oder sie bietet sogar die Möglichkeit, über das Internet nachzufragen, ob ein öffentlicher Schlüssel gültig ist oder nicht. (CRL=Certificate Revocation List). Zertifikate haben eine begrenzte Gültigkeitsdauer. Dies hat mehrere Gründe: • Je länger ein Zertifikat gültig ist, desto größer ist die Chance, dass es kompromittiert wird. • Ein Zertifikat, das selber zertifiziert wurde, kann nicht länger gültig sein, als das ausstellende Zertifikat. • Beim Erneuern eines Zertifikats kann man die darin enthaltene Information aktualisieren (Name, Adresse, usw.). • Typische Gültigkeitsdauer ist einige Monate bis einige Jahre. Das Root-CA-Zertifikat müssen alle Teilnehmer einmal auf sichere Weise bekommen. Dies ist aber viel einfacher, als viele Zertifikate auf sichere Weise zu erhalten. Zum Beispiel enthalten die Web-Browser vom Hersteller schon eine die Zertifikate einer ganzen Reihe von vertrauenswürdigen Root-CAs. Basis der Zertifikatsdienste ist der Standard X.509 (CCITT). Er regelt das Format der Zertifikate und was man alles an Attributen unterbringen kann. Unglücklicherweise ist es ein sehr komplizierter Standard. 9.2 Probleme des theoretischen Ansatzes • Das Zertifikat ist an einen Namen gebunden. Was ist ein Name? (PGP: Name/Email) • Was ist eine gute CA? Wem vertraue ich? 87 • Ideal wäre eine universelle CA, sozusagen für Alles und Alle. Aber welche Bank traut einer staatlichen Stelle? Es gibt keine Organisation, der jeder und jede vertraut. • Indirekte Authorisierung: Einem (Benutzer-)Zertifikat sind gewisse Rechte zugeordnet, zum Beispiel der Zugriff auf das (eigene) Bankkonto (Access Control List, ACL). Problem: Diese Zuordnung ist extern zum Zertifikat und damit getrennt angreifbar. • Direkte Authorisierung: Die Zugriffsrechte (zum Beispiel auf das Bankkonto) sind Teil des Zertifikats. Problem: Die Zugriffsrechte müssen bei der Ausstellung des Zertifikats eingetragen werden, also auch organisiert und festgelegt sein. 9.3 PKI: Realistischer Lösungsansatz • Jede Anwendung hat ihre eigene PKI mit eigener CA. Jeder Benutzer ist zu einer gegebenen Zeit Mitglied vieler verschiedener PKIen. • Er/Sie muss für jede PKI jeweils verschiedene Schlüssel benutzen. Derselbe Schlüssel ließe sich nur dann in zwei (oder mehr) PKI-Systemen benutzen, wenn beide mindestens technisch gleich funktionieren (zum Beispiel denselben Signaturalgorithmus benutzen mit der derselben Schlüssellänge usw.). • Der Zweck der einzelnen PKI ist, einem Schlüssel eine Art Beglaubigung (englisch: credential) zuzuordnen. Die PKI der Bank dient zur Beglaubigung des Zugriffs auf das Bankkonto, die PKI des Arbeitsgebers kann den Zugriff auf das Firmennetzwerk beglaubigen. 9.4 PKI: Widerruf eines Zertifikats Der Widerruf eines Zertifikats ist ein schwieriges Problem. Die Möglichkeit muss es geben, denn zum Beispiel muss ein Arbeitgeber den Zugang zum Firmennetzwerk sperren können, wenn ein Mitarbeiter ausscheidet. Einen gewöhnlichen Ausweis aus Papier oder Plastik kann man vernichten. Ein elektronisches Zertifikat kann nicht vernichtet werden, da niemand weiß, wie viele Kopien davon angelegt wurden und wo sie gespeichert sind. Manche PKI-Implementationen ignorieren das Problem. Tatsächlich sind PKIen ohne Widerruf praktisch nutzlos: Schlüssel werden kompromittiert, und die PKI muss damit umgehen können. 88 Es gibt in Wesentlichen zwei funktionierende Lösungen für dieses Problem: kurze Gültigkeit und Widerrufslisten. 9.4.1 Widerruf durch begrenzte Gültigkeit Wenn die Gültigkeit eines Zertifikats nach kurzer Zeit wieder abläuft (10 Minuten bis 24 Stunden), muss die Benutzerin für jede Benutzung jedes mal ein neues Zertifikat anfordern. Ein Widerruf ist nicht erforderlich, man braucht nur eine hinreichend schnelle CA, die das Zertifikat bei Bedarf sofort ausstellt. Nachteil: es ist nicht möglich, ein Zertifikat vor Ablauf zu widerrufen. Daher ist diese Methode nicht geeignet für Anwendungen, die einen sofortigen Widerruf erfordern. 9.4.2 Widerruf mittels Widerrufsliste Eine Widerrufsliste (Englisch: Certificate Revocation List, CRL) ist eine Datenbank, die alle widerrufenen Zertifikate enthält. Jeder, der ein Zertifikat überprüfen will, muss nicht nur die digitale Signatur prüfen, sondern auch, dass das Zertifikat nicht in der CRL auftaucht. Jede CRL enthält auch die Information, ab und bis wann sie gültig ist, damit man eine veraltete CRL sofort erkennen kann. Vorteile einer zentralen CRL-Datenbank: • Der Widerruf eines Zertifikats geschieht praktisch instantan: einmal eingetragen, kann ein Zertifikat nicht mehr benutzt werden. • Es gibt keine Begrenzung der Anzahl der widerrufenen Zertifikate. Nachteile einer zentralen CRL-Datenbank: • Alle Zertifikate müssen online geprüft werden, um die Datenbank abzufragen. • Die CRL-Datenbank ist ein single point of failure. Auswege: • Redundante, verteilte CRL-Datenbank: teuer und schwierig. • Jeder Teilnehmer hat eine Kopie der CRL: nur für relativ kurze Listen machbar • Jeder Teilnehmer (Klient) hält die Kopie der CRL nur für kurze Zeit (Caching): das regelmäßige Update produziert eine hohe Netzlast. 89 9.4.3 OCSP–Online Certificate Status Protocol OCSP dient zur Abfrage des aktuellen Zustands eines Zertifikats: • Ein Klient erfragt die Gültigkeit eines Zertifikats bei einem so genannten Responder, dessen Antwort (Gut/Zurückgezogen/Unbekannt) digital signiert ist. • Die Antwort ist aktuell. • Die Netzwerklast ist deutlich geringer als bei der vollständigen Übertragung der gesamten CRL. • Transportprotokoll ist HTTP. • Die URL für den Responder sollte im X.509-Zertifikat enthalten sein. 9.5 Beispiele: Zertifikate nach X.509 Zur Demonstration hier der Inhalt eines Zertifikats, dessen Gültigkeitsdauer bereits abgelaufen ist (erzeugt mit openssl). Certificate: Data: Version: 3 (0x2) Serial Number: 2 (0x2) Signature Algorithm: md5WithRSAEncryption Issuer: C=DE, ST=Rhineland-Palatinate, L=Mainz, O=Proteosys, OU=Certificate Issuing Authority, CN=Proteosys of Mainz Issuing CA/Email=ca@proteosys.de Validity Not Before: Oct 10 15:43:10 2000 GMT Not After : Aug 6 15:43:10 2001 GMT Subject: C=DE, ST=Rhineland-Palatinate, L=Mainz, O=Proteosys, CN=imap.proteosys/Email=postmaster@proteosys.de Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:af:1f:64:56:5f:58:ce:8c:df:8b:fa:98:42:73: 82:31:8a:71:73:6d:54:5a:da:33:9f:28:24:28:49: 5f:f3:33:a9:0d:f2:b7:a9:a5:51:31:bf:91:60:7f: df:4c:db:7d:30:5f:13:8a:55:3d:b4:45:7a:d9:72: bb:f5:f0:24:51:f7:31:0b:64:5a:c1:c1:1c:1d:e4: 32:25:2d:87:f9:9b:d8:c9:0b:23:45:b1:04:75:98: 2e:f8:a7:40:83:d5:52:7f:7d:a3:c9:96:77:27:15: 0d:96:15:e3:cf:3b:a9:6f:14:e9:39:e1:0e:2d:1b: 4e:03:0e:3b:05:fb:71:9a:23 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Alternative Name: email:postmaster@proteosys.de Netscape Comment: OpenSSL generated custom server certificate Netscape Cert Type: 90 SSL Server Signature Algorithm: md5WithRSAEncryption 31:93:99:e4:10:01:1f:28:9d:b8:7e:63:0e:15:44:f4:fb:9c: 60:de:8c:07:03:bc:e0:2b:b5:13:72:9e:9a:98:e5:c5:3f:47: c8:8f:12:40:34:26:38:87:d4:c7:a5:b3:77:f7:85:a7:18:92: eb:6f:98:49:d2:b6:d1:ad:42:27:b0:45:e0:1c:9a:68:7c:07: eb:be:46:b4:da:ab:38:3d:b6:cc:a1:80:74:2d:aa:ca:3f:b5: aa:de:84:6f:ca:ad:17:94:74:77:54:0d:7b:dd:fe:d4:d7:b2: a8:f1:28:c7:c9:a6:1c:a0:7b:78:82:0d:05:0a:41:24:de:82: 28:f6:8f:0a:20:d0:07:f5:c7:ae:ff:b2:1e:c5:43:1d:c0:aa: bb:27:3f:63:2e:71:79:bc:a8:07:64:a8:22:2e:79:d9:c9:6b: 57:4b:15:6b:03:3c:04:2b:21:5b:4f:af:37:1c:47:3f:73:a5: 9a:cf:30:00:b5:e5:c3:3c:76:b8:81:34:0a:30:01:c9:bb:d1: f4:6a:b2:18:35:7b:90:31:06:9f:9a:e8:8f:de:5b:ac:ad:c8: a6:b5:f7:19:99:8f:21:17:14:5e:6b:c3:bd:37:16:04:0b:3c: 76:9b:9f:61:e8:4f:76:b5:56:90:f0:87:df:2e:21:eb:96:74: 84:54:f4:a6 Dasselbe Zertifikat, dargestellt im Internet Explorer: Ein Root-CA-Zertifikat von Verisign, Inc., dargestellt im Internet Explorer: 91 • PGP verwendet ein etwas anderes Konzept zum Widerruf eines öffentlichen PGP-Schlüssels: • Es wird ein so genanntes Revocation Certificate erzeugt, das mit dem zugehörigen privaten Schlüssel signiert ist. • Dadurch kann nur der Besitzer des privaten Schlüssels den öffentlichen Schlüssel als ungültig markieren. • Das Revocation Certificate wird als Update des öffentlichen Schlüssel verteilt. • Neuere Versionen von PGP erlauben es, dieses Recht an andere private Schlüssel zu delegieren. • PGP-Schlüssel werden über ein weltweites Netzwerk von so genannten PGP-Keyservern verteilt. • Öffentliche Schlüssel können von jedem auf diese Server geladen werden. • Updates vorhandener Schlüssel (neue Signaturen oder Widerruf) werden erkannt und korrekt in der Keyserver-Datenbank vermerkt. 92 10 Anonymität Wird eine verschlüsselte Nachricht gesendet, so ist der Inhalt der Nachricht verborgen. Nicht verborgen sind: • die Identität des Absenders, • die Identität des Empfängers, • die Tatsache, dass eine Nachricht gesendet wird. Man kann also drei Arten von Anonymität unterscheiden: • Anonymität des Absenders, • Anonymität des Empfängers, • Anonymität der Nachrichtenbeziehung. Wozu Anonymität? – Beispiele • Erhebung vertraulicher Daten • Elektronische Wahlen • Anonymer Chat • Elektronisches Geld 10.1 Einfache Modelle für Anonymität • Anonymität des Empfängers: Broadcasting • Anonymität des Senders: Pseudonyme • Anonymität der Kommunikationsbeziehung: Rauschen 10.2 Elektronisches Geld Gewünschte Eigenschaften einer elektronischen 2-Euro-Münze sind: • Sie wird von jedem Händler oder Automaten als Äquivalent von 2 € akzeptiert. 93 • Wenn die elektronische Münze einmal akzeptiert wurde, kann niemand mehr feststellen, wer sie eingelöst hat (so genannte blinde Signatur). Gehen wir von einem asymmetrischen Signaturschema aus, der Einfachheit halber nehmen wir RSA. Die ausgebende Bank hat ein spezielles Paar von öffentlichem/geheimen Schlüsseln: Modul n, öffentlicher Exponent e, geheimer Exponent d. Ein Kunde möchte ein elektronische 2€-Stück erwerben. Er erzeugt dazu zwei etwa gleich große Zahlen V und C. V ist das Rohmaterial für die Münze, C dient zur Verschleierung (Camouflage). Er bildet die Zahl W durch zweimaliges hintereinander schreiben der Zahl V und berechnet mit Hilfe des öffentlichen Schlüssels (e, n) der Bank die Zahl S = C e · W mod n = E(C) · W mod n , die er an die Bank schickt. Die Bank bucht 2€ von seinem Konto ab und berechnet T = S d mod n = D(S) Die elektronische Münze ist dann Z = T · C −1 mod n = S d · C −1 mod n = C ed · W d · C −1 mod n = C · W d · C −1 mod n = W d mod n = D(W ) . Jeder Händler oder Kaugummiautomat kann die Gültigkeit mit Hilfe des öffentlichen Schlüssels der Bank überprüfen: E(Z) = Z e mod n = W ed mod n = W , und anschließend muss überprüft werden, dass W aus zwei gleichen Hälften besteht. Eigenschaften dieser elektronischen Münze Anonymität Z ist nur dem Kunden der Bank bekannt, nicht der Bank selbst, denn die kennt nur S und T . Damit kann niemand von Z auf den Kunden schließen. Reproduzierbarkeit Die Münze kann jederzeit kopiert werden. Um die Gültigkeit zu prüfen, muss bei der Bank nachgefragt werden, ob die Münze schon eingelöst wurde. Es handelt sich um ein OnlineMünzsystem. 94 Es gibt auch Vorschläge für Offline-Münzsysteme. Dabei bleibt beim ersten Einlösen die Person anonym. Wird versucht, dieselbe Münze ein zweites Mal einzulösen, kann die Bank die Person finden, an die die Münze ausgegeben wurde. 11 11.1 Beispiele aus der realen Welt Was ist das? (aus einer Software-Ankündigung) Legion of the Bouncy Castle Java Cryptography API 1.24 by David Hook - Monday, June 14th 2004 23:58 PDT About: The Legion of the Bouncy Castle Java Cryptography API provides a lightweight cryptography API in Java, a provider for the JCE and JCA, a clean-room implementation of the JCE 1.2.1, generators for Version 1 and Version 3 X.509 certificates, PKCS12 support, and APIs for dealing with S/MIME, CMS, OCSP, and OpenPGP. Versions are provided for the J2ME, and JDK 1.0-1.5. Changes: This release patched a problem that could affect the encoding of ASN.1 bit strings. Modifications were made to OpenPGP secret key ring processing to handle user attribute packets and GPG comment packets. The OpenPGP API now supports the creation of key ring sub-keys. A bug in the lightweight CBCBlockCipherMac class was fixed, and JARs compiled and tested against JDK 1.5 were provided. 11.2 Was ist PKCS? • PKCS (Public-Key Cryptography Standards) ist ein Satz von Standards für die Implementation von Public-Key-Kryptografie. • Er wurde ausgegeben von der Firma RSA, in Zusammenarbeit mit einem Industriekonsortium. PKCS#1 RSA Cryptography Standard: Empfehlungen für die Implementation des RSA-Algorithmus für Public-Key-Kryptografie. PKCS#7 Cryptographic Message Syntax (CMS) Standard: beschreibt eine allgemeine Syntax für Daten, die kryptografisch verarbeitet werden, wie digitale Signaturen oder digitale Umschläge. PKCS#10 Certification Request Syntax Standard: beschreibt die Syntax für einen „request for certification“ eines öffentlichen Schlüssels, eines Namens, und eventuell eines Satzes von Attributen. 95 PKCS#12 Personal Information Exchange Syntax Standard: beschreibt ein portables Format zur Speicherung der privaten Schlüssel, Zertifikate und sonstigen Geheimnisse eines Benutzers. 11.3 Die CCITT-Standards Das CCITT–Comité Consultatif International Téléphonique et Télégraphique ist die Vorläuferorganisation der ITU–International Telecommunication Union. Es handelt sich um eine 1932 gegründete internationale Organisation zur Abstimmung weltweiter Standards im Bereich der Daten- und Telekommunikation. Für uns wichtig sind folgende Standards: X.208 Recommendation X.208: Specification of Abstract Syntax Notation One (ASN.1). 1988. X.209 Recommendation X.209: Specification of Basic Encoding Rules for Abstract Syntax Notation One (ASN.1). 1988. X.500 Recommendation X.500: The Directory–Overview of Concepts, Models and Services. 1988. X.509 Recommendation X.509: The Directory–Authentication Framework. 1988. 11.3.1 ASN.1 • Abstract Syntax Notation One (ASN.1) ist ein Standard zur Übertragung strukturierter Daten über ein Netzwerk. • ASN.1 definiert die abstrakte Syntax der Information, aber nicht, wie die Information kodiert wird. • Es gibt eine Reihe von Kodierungsregeln für die konkrete Representation der Daten, der abstrakte Syntax in ASN.1 beschrieben ist. • Die Standardkodierungsregeln sind: BER Basic Encoding Rules - X.209, CER Canonical Encoding Rules DER Distinguished Encoding Rules PER Packed Encoding Rules 96 • ASN.1 plus eine dieser Kodierungsregeln erlaubt den Austausch strukturierter Daten zwischen verschiedenen Anwendungsprogrammen über Netzwerke. • Dabei werden die Datenstrukturen unabhängig von Maschinenarchitektur und Implementierungssprache beschrieben. Beispiel: Zwei Anwendungsprogramme sollen den öffentlichen Schlüssel für einen Benutzer austauschen. Die zu übertragenden Informationen sind: • Name der Benutzers (String) • Emailadresse des Benutzers (String) • Verschlüsselungsverfahren (Nummer in einer Aufzählung) • Öffentlicher Schlüssel (eine Folge von Bits) ASN.1 beschreibt, wie ich diese Informationen (String,String,Nummer,Bitfolge) abstrakt darstelle („jetzt kommt ein String der Länge 10“), die zugehörige Kodierungsregel, wie die Informationen übertragen werden. Die Bedeutung der Daten ist Sache der Anwendungsprogramme! 11.3.2 X.509 • X.509 ist ein Standard für PKI. • X.509 spezifiziert Standardformate für digitale Zertifikate. • Ursprünglich (X.509v1) wurde ein streng hierarchisches System der CAs angenommen, die möglichen Felder waren genau festegelegt. • X.509v3 (Version 3) erlaubt das Hinzufügen neuer Felder und damit auch andere Topologien. • Ein X.509-Zertifikat, das eine CA erstellt, bindet einen öffentlichen Schlüssel an einen Distinguished Name (X.500) oder an einen sogenannten Alternative Name, zum Beispiel eine Email-Adresse oder einen DNS-Eintrag. • Enthält das X.509-Zertifikat nur einen öffentlichen Schlüssel, so wird es meist als .cer-Datei in Base-64- oder DER-Kodierung gespeichert. Möglich ist auch die Benutzung des PKCS #7-Standards (.p7b). 97 • Enthält das X.509-Zertifikat auch den privaten Schlüssel, so wird es normalerweise als .pfx-Datei gemäß dem PKCS #12-Standard gespeichert. Struktur eines X.509-Zertifikats • Zertifikat – Version – Seriennummer – ID des Algorithmus – Aussteller – Gültigkeit * Nicht vor * Nicht nach – Subjekt – Informationen über den Öffentlicher Schlüssel * Public-Key-Algorithmus * Der öffentliche Schlüssel selbst – Unique Identifier des Ausstellers – Unique Identifier des Subjekts – Erweiterungen nach X.509v3 • Algorithmus der digitalen Signatur • Digitale Signatur Beispiel: Zertifikat im X.509-Format: Certificate: Data: Version: 3 (0x2) Serial Number: 38 (0x26) Signature Algorithm: md5WithRSAEncryption Issuer: C=DE, ST=Rhineland-Palatinate, L=Mainz, O=Proteosys, OU=Root Certificate Authority, CN=Proteosys Root CA/emailAddress=ca@p Validity Not Before: Sep 16 12:31:12 2003 GMT Not After : Oct 5 12:31:12 2005 GMT Subject: C=DE, ST=Rhineland-Palatinate, L=Mainz, O=Proteosys, OU=Certificate Issuing Authority, CN=Proteosys of Mainz Issuing CA/e Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (2048 bit) Modulus (2048 bit): 00:c2:21:4f:3a:92:bf:64:3c:c7:bb:05:b2:5e:d3: 8d:d4:cb:7d:28:1d:14:ed:db:68:67:f2:2d:3d:48: f3:5f:8b:e1:92:62:4a:0b:be:a0:56:0c:72:a1:09: 59:77:a7:25:83:df:1c:4b:19:78:79:95:08:7a:8c: b2:8c:af:ee:f8:ea:d6:c9:74:cd:2e:64:92:40:9a: 30:0e:79:b5:b7:98:ea:5e:fb:e2:10:11:4b:53:3d: 98 80:74:d7:bc:3b:1a:af:be:a5:77:d0:8f:9c:2f:92: 48:38:67:66:10:ad:96:1f:73:88:72:3c:1d:39:0c: dd:32:a4:44:f0:3e:0c:81:8c:c0:a7:fd:20:5c:5f: 41:92:0e:ed:b8:b2:8b:2d:75:a9:71:e0:cc:c9:68: cf:f1:8e:27:2c:70:60:88:d3:8c:55:7c:74:f1:fc: 7f:58:30:6b:fe:63:8c:65:34:89:e0:77:98:bb:b2: 63:ca:a4:7d:5e:43:12:3e:0d:3d:32:ca:f7:be:fb: 38:10:26:4a:5b:bf:d9:32:2b:6d:9c:be:6f:13:8b: f7:df:67:92:4d:2a:06:76:5d:2b:f0:6b:13:ed:b7: fd:bc:a3:d4:8d:3f:49:19:3a:2a:61:62:e6:34:b1: 14:da:d1:47:0b:6f:8d:5e:07:e9:be:91:5c:fa:ef: 17:17 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Alternative Name: email:ca@proteosys.de X509v3 Basic Constraints: CA:TRUE Signature Algorithm: md5WithRSAEncryption a5:99:2d:2f:ce:ae:b0:32:d9:28:1d:be:5c:0e:84:34:35:d8: 60:12:d5:ce:2b:51:7e:ed:83:10:93:cb:03:fa:ba:91:5b:9a: 39:39:65:77:46:df:1a:47:c4:f5:d6:23:1c:cc:64:90:e4:5e: 34:62:69:25:e4:ac:7c:ea:ee:49:b5:f4:0d:ad:96:b9:de:28: 1b:fe:85:d9:11:90:30:f2:7a:a6:a9:c0:a8:df:f1:b2:37:6a: 3a:d7:02:fe:6f:0c:1f:10:5f:4a:1e:74:fe:35:dc:f7:99:f5: 5c:ca:92:8b:9b:13:0a:99:39:d4:9e:d4:d7:8d:bf:ee:28:bc: 3d:a8:01:a4:ab:a9:b4:32:a1:65:f3:1f:cb:95:0f:bc:f2:c4: 12:42:0d:0a:42:1c:9c:03:c2:b4:d1:c1:fd:9b:3c:9d:74:a7: e7:b0:be:7e:b5:dd:07:c3:0e:98:75:61:60:27:7f:78:ca:e1: fa:84:92:75:f2:f9:b8:d6:7b:eb:37:59:fd:7d:dc:68:89:f7: 94:15:7f:31:9a:a2:f5:8d:1b:ef:4a:7f:b5:ca:0d:e6:3d:33: e0:7b:31:77:ff:c1:0a:42:21:03:54:70:bf:a8:fc:29:10:a6: ba:f3:87:f4:2c:c4:41:0e:dd:9a:1e:62:ff:a6:aa:a4:8a:42: 3d:19:f3:90 Die abstrakte ASN.1-Darstellung: 0:d=0 4:d=1 8:d=2 10:d=3 13:d=2 16:d=2 18:d=3 29:d=3 31:d=2 34:d=3 36:d=4 38:d=5 43:d=5 47:d=3 49:d=4 51:d=5 56:d=5 78:d=3 80:d=4 82:d=5 87:d=5 94:d=3 96:d=4 98:d=5 103:d=5 114:d=3 116:d=4 118:d=5 123:d=5 151:d=3 153:d=4 155:d=5 160:d=5 179:d=3 181:d=4 183:d=5 194:d=5 211:d=2 213:d=3 228:d=3 ... hl=4 hl=4 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=3 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 hl=2 l=1050 l= 770 l= 3 l= 1 l= 1 l= 13 l= 9 l= 0 l= 177 l= 11 l= 9 l= 3 l= 2 l= 29 l= 27 l= 3 l= 20 l= 14 l= 12 l= 3 l= 5 l= 18 l= 16 l= 3 l= 9 l= 35 l= 33 l= 3 l= 26 l= 26 l= 24 l= 3 l= 17 l= 30 l= 28 l= 9 l= 15 l= 30 l= 13 l= 13 cons: cons: cons: prim: prim: cons: prim: prim: cons: cons: cons: prim: prim: cons: cons: prim: prim: cons: cons: prim: prim: cons: cons: prim: prim: cons: cons: prim: prim: cons: cons: prim: prim: cons: cons: prim: prim: cons: prim: prim: SEQUENCE SEQUENCE cont [ 0 ] INTEGER INTEGER SEQUENCE OBJECT NULL SEQUENCE SET SEQUENCE OBJECT PRINTABLESTRING SET SEQUENCE OBJECT PRINTABLESTRING SET SEQUENCE OBJECT PRINTABLESTRING SET SEQUENCE OBJECT PRINTABLESTRING SET SEQUENCE OBJECT PRINTABLESTRING SET SEQUENCE OBJECT PRINTABLESTRING SET SEQUENCE OBJECT IA5STRING SEQUENCE UTCTIME UTCTIME :02 :26 :md5WithRSAEncryption :countryName :DE :stateOrProvinceName :Rhineland-Palatinate :localityName :Mainz :organizationName :Proteosys :organizationalUnitName :Root Certificate Authority :commonName :Proteosys Root CA :emailAddress :ca@proteosys.de :030916123112Z :051005123112Z 99 11.4 Verschüsselung und das OSI-Schichtenmodell Zusätzliche Sicherheit (Verschlüsselung/Authentisierung) bei der Datenübertragung kann im Prinzip auf eine von zwei Weisen hinzugefügt werden: • Zusätzliche Sicherheit der Kommunikationsverbindung selbst, in den Schichten 1-4 (Beispiel: IPsec in Schicht 3). • Zusätzliche Sicherheit kann um die Daten herum gebaut werden und ist damit von der Kommunikationsverbindung unabhängig (oft als „end-to-end“-Sicherheit bezeichnet). 11.5 SSL/TLS (Schicht 4) • Das TLS-Protokoll (Transport Layer Security) ist eine Art Kompromiss zwischen sicherer Kommunikationsverbindung und end-to-endSicherheit. • Es implementiert end-to-end-Sicherheit, die für die beteiligten Applikationen wie eine sichere Kommunikationsverbindung aussieht. Dadurch können die Applikationen ihre eigenen Protokolle als zusätzliche Ebene über TLS implementieren. Beispiel: http/https • TLS 1.0 ist der Nachfolger von SSL, Version 3 (1995). SSL steht für Secure Socket Layer und wurde von Netscape entwickelt. 100 11.5.1 Ziele von TLS Die Ziele von TLS sind, der Wichtigkeit nach geordnet: 1. Kryptografische Sicherheit: oberstes Ziel ist die sichere Verbindung, 2. Interoperatibilität, 3. Erweiterbarkeit, 4. (Relative) Effizienz. • Das TLS-Protokoll besteht aus zwei Schichten: • In der unteren Schicht läuft das TLS-Recordprotokoll ab, das den eigentlichen Datentransfer (verschlüsselt und authentisiert) abwickelt. • In der oberen Schicht laufen 4 Teilprotokolle: 1. Handshake: Aushandeln der Verbindungsparameter und Authentisierung der Verbindung, 2. ChangeCipherSpec: Änderung der aktuell benutzten Kryptoverfahren, 3. Alert: Fehlermeldungen und Warnungen, 4. ApplicationData: Nutzdaten. 11.5.2 TLS-Handshake Typische Teile in blau Klient ClientHello Server −→ ←− Certificate* ClientKeyExchange CertificateVerify* [ChangeCipherSpec] Finished −→ Daten ←− ←→ ServerHello Certificate* ServerKeyExchange* CertificateRequest* ServerHelloDone [ChangeCipherSpec] Finished Daten 101 11.6 Sichere Kommunikationsverbindung: IPsec • IPsec bietet Sicherheit auf der Ebene des Internet-Protokolls, und ist daher im Wesentlichen ein VPN-Protokoll. • IPsec authentisiert einzelne IP-Pakete gegen einen privaten Schlüssel, das heisst, die Pakete sind nur dann gültig, wenn der sendende Teilnehmer diesen geheimen Schlüssel kennt. • IPsec ist sehr komplex. • Trotzdem ist IPsec im Moment das beste Protokoll, das wir haben. • Für eine Kritik von IPsec siehe den Artikel von Niels Ferguson and Bruce Schneier. • ESP (Encapsulated Security Payload) ermöglicht die Verschlüsselung der Nutzdaten eines IP-Pakets und zusätzlich die Verwendung einer schlüsselabhängigen Hashfunktion. Die meisten Felder des IPHeaders werden nicht verschlüsselt. • AH (Authentication Header) fügt ein Headerfeld hinzu, indem das Resultat eines schlüsselabhängigen Hashfunktion übertragen wird, die auf Nutzdaten und gewisse Headerfelder angewandt wird. Verschlüssselung findet nicht statt. • IKE (Internet Key Exchange) dient zum Aushandeln und Übertragen der Schlüssel. Es nutzt dazu: 1. ISAKMP (Internet Security Association and Key Management Protocol): stellt Protokollrahmen mit bestimmten Nachrichtenformaten bereit, 2. Oakley (Schlüsselaustauschprotokoll auf der Basis von ISAKMP und Diffie-Hellman). • ESP und AH können jeweils im Transport- oder im Tunnelmodus betrieben werden. • Im Transport-Modus wird ein IP-paket erweitert. • Im Tunnel-Modus wird das gesamte Paket in den Nutzdatenteil eines neuen IP-Paketes gepackt. 102 • Insbesondere kann im Transport-Modus nur eine Rechner-zu-RechnerKommunikation durchgeführt werden, da die IP-Adressen von Sender und Empfänger nicht verändert werden. • Jedes einzelne Paket wird auch bestimmte Weise authentisiert oder versclüsselt. Dies nennt maan Security Association (SA). • Um die SA zu bezeichnen, steht im IP-Header der Security Parameter Index (SPI), der vom Empfängerhost gewählt wird. • Jeder Host oder Gateway hat eine Security Association Database, die mit IP-Adresse der Gegenstelle und SPI indiziert ist. Sie enthält folgende kryptografische Parameter: 1. Schlüssel, 2. Hash- und Verschlüsselungsalgorithmen, 3. Modus (ESP/AH), 4. Lebensdauer der SA. • Die Einträge in der Security Policy Database (SPD) legen fest, wie mit einzelnen IP-Paketen zu verfahren ist: 1. Unverschlüsselt senden (IKE), 103 2. Wegwerfen, 3. Entsprechend eines bestimmten SPI versenden. • Es sind unterschiedliche Policies für die gleiche Zieladresse möglich. • Mittels IKE wird ein bidirektionaler ISAKMP-Tunnel aufgebaut (eine SA in der SAD für beide Richtungen. • Innerhalb dieses Tunnels wird mit IKE je eine SA für jede Richtung aufgebaut (zwei unidirektionale SAs). • Die Spezifikation (4 RFCs) umfasst 214 Seiten! Server Client ISAKMP Proposal ISAKMP Proposal Diffie-Hellman verschl. Diffie-Hellman VPN ID, Zertifikat, Authentisierung VPN ID, Zertifikat, Authentisierung IPSec Proposal, SPI in IPSec Proposal, SPI out ACK UDP ESP (SPI out) ESP (SPI in) verschl.(außer SPI) ESP • Network Address Translation nicht mehr möglich. • Lösung: Ergänzung von IKE, Verkapselung der IP-Pakete in UDPPaketen. • IKE ist anfällig gegen DoS-Attacken, zu langsam, zu komplex. • Lösung: IKEv2 1. Nur noch ein RFC, 2. schneller, 3. besser geschützt gegen DoS-Attacken, 4. Integration von NAT-Traversal, 5. Dead Peer Detection (DPD) • ipseckey: Nutzung von DNSSEC zum Schlüsselaustausch 104 11.7 Sichere Kommunikationsverbindung: WEP/WiFi/WPA • WEP (Wired Equivalent Privacy) ist der Verschlüsselungsstandard für Funknetze nach dem Standard IEEE 802.11. Es benutzt RC4 als symmetrischen Verschlüsselungsalgorithmus. • Bereits 2001 wurde theoretisch und praktisch nachgewiesen, dass dieser Standard höchst unsicher ist! • RC4 hat einen 24 Bit langen Initialisierungsvektor (IV), der bei WEP erst berechnet und dann im Klartext übertragen wird. Dieser bildet zusammen mit einem von WLAN-Benutzern nur selten gewechselten, frei wählbaren Teil (40 Bit bei WEP40, 104 Bit bei WEP128) den WEP-Schlüssel. • Der recht kurze IV kann sich schon nach Stunden wiederholen. Findet ein Angreifer zwei Blöcke, die mit demselben IV verschlüsselt wurden, dann kann er mittels statistischer Analyse recht einfach den gesamten Schlüssel finden. • Damit nicht genug: es wurde entdeckt, dass ein Angreifer aus dem IV den Schlüssel mit einer Methode berechnen kann, deren Aufwand linear in der Schlüssellänge ist, sodass das Knacken des 104 Bit langen Schlüssels nur knapp dreimal so lange braucht wie das des 40 BitSchlüssels. • Als Notlösung und im Vorgriff auf den neuen Standard hatte die WiFi-Alliance, eine Interessengemeinschaft von WLAN-Herstellern, den WPA-Standard (WiFi Protected Access) eingeführt. WiFi steht für Wireless Fidelity. • Erst am 25. Juni 2004 wurde die Erweiterung IEEE 802.11i ratifiziert. Diese enthält WPA und AES als Verschlüsselungsalgorithmus. • Näheres siehe im Heise Newsticker. 11.8 Email-Verschlüsselung (Schicht 7) Es gibt zwei Standards für sichere Email: • S/MIME, ursprünglich entwickelt von RSA. Es benutzt das PKCS #7Format für die Nachrichten, und das X.509-Format für Zertifikate. 105 • PGP/MIME bzw. OpenPGP basiert auf PGP. Es benutzt eigene, binär kodierte Nachrichten- und Zertifikatsformate. (OpenPGP ist der Name des neuen Standards.) • Beide benutzen MIME für die Email-Nachrichten, insbsondere die MIME-Typen multipart/signed und multipart/encrypted, die in RFC 1847 definiert werden. S/MIME v3 Nachrichtenformat Binär, basiert auf CMS Zertifikatsformat Binär, basiert auf X.509 Symmetrischer TripleDES Verschlüsselungs- (DES EDE3 CBC) algorithmus SignaturalgorithmusDiffie-Hellman (X9.42) mit DSS Hashalgorithmus SHA-1 MIMEmultipart/signed Verpackung oder CMS-Format signierter Daten MIMEapplication/pkcs7Verpackung mime verschlüsselter Daten OpenPGP Binär, basiert auf PGP Binär, basiert auf PGP TripleDES (DES EDE3 Eccentric CFB) ElGamal with DSS SHA-1 multipart/signed, als ASCII kodiert multipart/encrypted • S/MIME ist interoperabel und in vielen kommerziellen Mailprogrammen implementiert. • OpenPGP ist eine (sehr populäre) Nischenlösung. X.509 und PKCS vertragen sich schlecht mit OpenPGP. • S/MIME setzt auf die hierarchische PKI, OpenPGP auf das Web of Trust. • Oft muss man als Nutzer mit beiden Typen verschlüsselter Emails umgehen können. • Emails werden per SMTP transportiert. • Es gibt eine SMTP-Erweiterung zum verschlüsselten Transport und zur Authentifizierung der Email-Server, die auf TLS basiert. 106 • Viele Email-Gateways (aber nicht alle) implementieren diesen Standard, aber es komtm immer wieder vor, dass er falsch angewandt wird. • Die Protokolle POP und IMAP für Lesen von Emails sind zunächst unverschlüsselt. • IMAP spezifiert Zusätze für sichere Authentifizierung (Kerberos, GSSAPI, S/Key). • Außerdem gibt es eine Absicherung der Kommunikation über TLS. 12 Rechtliche Fragen Für die Kryptografie ist heutzutage besonders wichtig: • Ist die Benutzung von (starker) Kryptografie erlaubt? • Wird die digitale Signatur im Rechtsverkehr anerkannt? 12.1 Einschränkung der Benutzung starker Kryptografie • Innerhalb Deutschlands ist die Benutzung kryptografischer Algorithmen uneingeschränkt erlaubt. • Das gilt auch für die meisten Länder der Europäischen Union. • In Frankreich musste bis zum Juni 2004 jede Benutzung kryptografischer Algorithmen mit mehr als 128 Bit Schlüssellänge angemeldet und genehmigt werden. 12.2 Import/Export kryptografischer Algorithmen • Die Regeln für den Import oder Export kryptografischer Algorithmen und Programme variieren sehr stark in den verschiedenen Ländern der Welt. • Für die Länder der EU gelten die Wassenaar-Vereinbarungen (Nachfolger der COCOM) und die entsprechenden EU-Richtlinien: – Export in andere Länder der EU ist vollständig liberalisiert, mit Ausnahme einiger sehr spezieller Produkte. 107 – Export nach Australien, Kanada, Japan, Neuseeland, Norwegen, in die Schweiz und in die Vereinigten Staaten erfordert eine allgemeine Exporterlaubnis (CGEA). – Export in alle anderen Staaten erfordert eine sogenannte General National License. Näheres siehe im Überblicksartikel von Bert-Jaap Koops. 12.3 Die Stellung der Digitalen Signatur in Deutschland In Deutschland gibt es seit 2001 Gesetze über die Benutzung der Digitalen Signatur im Rechtsverkehr, und zwar: • Das Signaturgesetz (22. Mai 2001, zuletzt geändert 2004) • Die Signaturverordnung (22. November 2001) • Das Formanpassungsgesetz (13. Juli 2001) 12.3.1 Das Signaturgesetz Zweck des Signaturgesetzes „ist es, Rahmenbedingungen für digitale Signaturen zu schaffen, unter denen diese als sicher gelten und Fälschungen digitaler Signaturen oder Verfälschungen von signierten Daten zuverlässig festgestellt werden können.“ (§ 1 (1) SigG) 12.3.2 Qualitätsstufen digitaler Signaturen • Einfache elektronische Signaturen • Fortgeschrittene elektronische Signaturen • Qualifizierte elektronische Signaturen • Qualifizierte elektronische Signaturen mit Anbieter-Akkreditierung Qualifizierte Zertifikate müssen folgende Angaben enthalten: • den Namen des Signaturschlüsselinhabers bzw. ein Pseudonym, • den öffentlichen Schlüssel, • die Bezeichnung der Algorithmen, die verwendet werden können, 108 • die laufende Nummer des Zertifikates, • Beginn und Ende der Gültigkeit des Zertifikates, • Angaben über den Zertifizierungsdiensteanbieter, • Angaben über Nutzungsbeschränkungen des Signaturschlüssels, • Angaben, dass es sich um ein qualifiziertes Zertifikat handelt, • ggf. Attribute des Signaturschlüssel-Inhabers. 12.3.3 Die Signaturverordnung Die Signaturverordnung ergänzt das Signaturgesetz um konkrete Vorschriften. Dazu gehören zum Beispiel • die Pflichten der Zertifizierungsdiensteanbieter, • die Gestaltung von Zertifikaten, • Anforderungen an Produkte für qualifizierte digitale Signaturen. 12.3.4 Das Formanpassungsgesetz • Das „Gesetz zur Anpassung der Formvorschriften des Privatrechts und anderer Vorschriften an den modernen Rechtsverkehr“ stellt die digitale Signatur in vielen Fällen mit der eigenhändigen Unterschrift gleich. • Im Beweisrecht wird sie sogar höher bewertet: eine geprüfte qualifizierte Signatur wird in der Zivilprozessordnung zunächst einmal als echt angesehen, das heisst, „der Anschein der Echtheit [...] kann nur durch Tatsachen erschüttert werden, die ernstliche Zweifel daran begründen, dass die Erklärung mit dem Willen des SignaturschlüsselInhabers abgegeben worden ist“. • Dieser Schritt vervollständigte die Umsetzung der EU-Richtlinie für digitale Signaturen. 109 12.4 Die digitale Signatur in anderen Ländern Europäische Union Am 13 Dezember 1999 erging die Richtlinie 1999/93/EG des Europäischen Parlaments und des Rates der Europäischen Union über gemeinschaftliche Rahmenbedingungen für elektronische Signaturen. Sie ist in den meisten Staaten der EU in nationales Recht umgesetzt. Andere Länder Sehr viele Staaten erlauben inzwischen die Benutzung einer digitalen Signatur im Rechtsverkehr. Einen Überblick bietet die Website von Simone van der Hof. 110