Kryptologie (Version 20041015)
Transcription
Kryptologie (Version 20041015)
Kryptologie (Version 20041015) Josef F. Bürgler 18. Oktober 2004 Inhaltsverzeichnis 1 Einführung 1.1 Was ist Kryptologie . . . . . . 1.2 Warum braucht es Kryptologie 1.3 Einige Begriffe . . . . . . . . 1.4 Was wir lernen wollen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Geschichte 2.1 Altertum . . . . . . . . . . . . . . . . . . 2.1.1 Skytala von Sparta . . . . . . . . 2.1.2 Cäsar Chiffren . . . . . . . . . . 2.1.3 Steganographie . . . . . . . . . . 2.2 Mittelalter . . . . . . . . . . . . . . . . . 2.2.1 Vigenère Chiffre . . . . . . . . . 2.2.2 Vernam Chiffre . . . . . . . . . . 2.2.3 Playfair Chiffre . . . . . . . . . . 2.3 Neuzeit . . . . . . . . . . . . . . . . . . 2.3.1 Chiffrierzylinder . . . . . . . . . 2.3.2 Die Enigma - eine Rotormaschine 2.4 Kryptanalyse . . . . . . . . . . . . . . . 2.4.1 Monoalphabetische Chiffren . . . 2.4.2 Vigenère-Chiffre . . . . . . . . . 2.4.3 Enigma . . . . . . . . . . . . . . Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 1 3 7 . . . . . . . . . . . . . . . 9 9 9 11 15 15 16 17 18 20 20 21 23 25 25 29 32 ii 1 Einführung Diese Vorlesung führt die Studenten der Abteilung Informatik oder andere Interessierte in die Grundlagen der Kryptologie ein. Diese Wissenschaft beschäftigt sich mit der Sicherung digitaler Informationen und ist zentral im gesamten Umfeld der Computersicherheit. Digitale Informationen können beliebig oft und (fast) ohne Aufwand kopiert, d.h. reproduziert werden, sowie beliebig lange, ohne Qualitätsverlust aufbewahrt, d.h. archiviert werden. Dies unterscheidet sie wesentlich von fast allen anderen Resourcen unserer Zeit, wie Kapital oder Arbeit. Es besteht deshalb ein grosses Interesse, digitale Informationen aller Art vor unberechtigtem Zugriff zu schützen. Die Kryptologie ist ein sehr aktives Forschungsgebiet und befasst sich auch mit aufregenden Themen wie Zero Knowledge Proofs, Anonymität oder Steganographie, d.h. das Verstecken von Informationen. 1.1 Was ist Kryptologie Kryptologie umfasst die beiden Hauptgebiete Kryptographie und Kryptoanalyse. Kryptologie und Kryptographie stammen aus dem Griechischen: κρυπτ oσ steht für geheim, λoγoσ für Wort oder Sinn steht) und γραϕιν für schreiben. Die Kryptographie ermöglicht eine Nachricht (Klartext) zu verschlüsseln und daraus den Geheimtext (Chiffrat) herzustellen. Leute, die sich damit beschäftigen nennt man Kryptographen: sie entwickeln Algorithmen und Protokolle, mit deren Hilfe Daten verschlüsselt werden können. Auf der Gegenseite befinden sich die Kryptanalytiker oder Kryptoanalytiker (engl: CodeBreakers) und versuchen Verschlüsselungen zu brechen. Die Kryptanalyse oder Kryptoanalyse befasst sich also mit dem Brechen von Codes. Die Kryptologie verwendet Wissen aus den unterschiedlichsten Gebieten der Informatik, Mathematik, Kommunikationstechnik, Elektronik und Physik. 1.2 Warum braucht es Kryptologie Früher wurde Kryptologie fast ausschliesslich beim Militär in der Diplomatie und in Geheimdiensten eingesetzt. Private hatten meist weder das nötige Wissen, noch die Maschinen (sprich 1 1 Einführung die finanziellen Mittel). In diesem Umfeld beschränkte sie sich auf den Einsatz von unsichtbarer Tinte oder Geheimbotschaften, die in normalen Texten untergebracht wurden und nur Eingeweihten offenstanden. Und sollte sich doch jemand wirklicher Kryptographie bedient haben, war er sicher vom Teufel besessen, eine Hexe, Meuterer, Terrorist, Aufwiegler, etc. Im Internet Zeitalter, wo E-Mails wie Postkartengrüsse über die Leitungen geschickt werden, immer öfters elektronisch eingekauft wird, abgestimmt und bald einmal die Steuern deklariert werden sollen, müssen die Daten vor unberechtigtem Zugriff geschützt werden. Dank der revolutionären Entwicklung in der Halbleiterindustrie ist es jedem/jeder möglich, die komplexesten, kryptographischen Algorithmen mit Hilfe von geeigneten Programmen anzuwenden und innert kürzester Zeit riesige Datenmengen zu verschlüsseln: dies auch mit einem moderaten Budget, den die PC-Preise sind inzwischen unter die 1000-CHF Grenze gefallen! Mittlerweile wird nicht mehr jeder als Verbrecher abgestempelt, wenn er seine Daten auf dem Notebook verschlüsselt. Denn wer auch nichts zu verbergen hat, möchte den Inhalt der gestohlenen Harddisk nicht irgend wann mal im Internet präsentiert sehen. Auch wenn ihm das heute vielleicht egal ist, so könnte es doch in 10, 20 oder 30 Jahren weitaus stärkere Konsequenzen haben. Ein Notebook-Dieb kann die gestohlenen Daten lesen, manipulieren oder ganz einfach auf einem Server in Hinterchina ins Netz stellen! Zumal Passwörter meist unverschlüsselt in der Swap-Partition liegen und nur darauf warten, dass sie gelesen und verwendet werden! Die Kryptographie wird heute (und morgen) eingesetzt um die folgenden grundlegenden Problem der modernen Datenverarbeitung zu lösen: Geheimhaltung oder Vertraulichkeit bedeutet, dass beispielsweise nicht jemand eine Kommunkation zwischen zwei Partnern im Internet abhören kann. Informationen kann man auch schützen, indem man deren Existenz verbirgt: diese Wissenschaft wird Steganographie genannt. Authentizität stellt sicher, dass sich nicht jemand als jemand anderer ausgeben kann: also verifizierbar echt! Integrität oder Unversehrtheit stellt sicher, dass beispielsweise eine Nachricht nicht auf ihren Weg vom Absender zum Adressaten verändert wird. Sie ist eigentlich ein spezieller Aspekt der Authentizität. Verbindlichkeit, (engl: non repudiation) oder nicht-Abstreitbarkeit stellt sicher, dass sich nicht jemand aus der Verantwortung stehlen kann: man kann also zweifelsfrei nachweisen, dass er/sie beispielsweise eine bestimmte Nachricht gesendet hat oder einen Vortrag digital unterschrieben hat. Anonymität ermöglicht zum Beispiel bargeldlosen Verkehr im Internet, ohne dass man zurückverfolgen kann, wer eine bestimmte, digitale Münze ausgegeben hat. Sie ermöglicht aber auch, dass man anonym abstimmen oder anonym im Internet surfen kann. ... 2 1 Einführung 1.3 Einige Begriffe Ein zu verschlüsselnder Text besteht aus Zeichen eines Alphabets: typischerweise a, b, c, . . . oder A, B, C, . . .. Ein Alphabet Σ ist eine nichtleere, endliche Menge von Symbolen (hier meist die Zeichen des jeweiligen Alphabets): Σ := {a, b, c, . . . , z} Beispiel 1.1. Verwendet man nur die binären Werte, so hat man: Σ := {0, 1} Ein Wort über dem Alphabet Σ ist eine endliche Zeichenkette von Elementen aus Σ. Beispiel 1.2. Für das im Computerumfeld verwendete binäre Alphabet Σ := {0, 1} ist jeder endliche Bit-String ein Wort; also beispielsweise: m := 1, 0, 1, 0, 0, 0, 1, 1 Im folgenden wollen wir solche Wörter verschlüsseln. Wenn wir dies können, dann ist es auch klar, wie man Texte mit vielen Wörtern verschlüsselt: man verschlüsselt einfach jedes Wort in diesem Text! Der Text, den wir verschlüsseln möchten, heisst Klartext (engl: plain-text): Für diesen verwenden wir meist Kleinbuchstaben a, b, c, . . .. Den Text, den wir über einen unsicheren Kanal übermitteln heisst Geheimtext (engl: ciphertext) oder auch Kryptogramm: Für diesen verwenden wir meist Grossbuchstaben A, B, C, . . .. Der Prozess, welcher aus dem Klartext den zugehörigen Geheimtext berechnet, heisst Verschlüsseln oder Chiffrieren (engl: encrypt). Die Umkehrung nennt man Entschlüsselung oder Dechiffrieren (engl: decrypt). Der Verschlüsselungsalgorithmus (engl: cipher) liefert eine eindeutige Vorschrift, wie aus einem bestimmten Klartext und einem Schlüssel (engl: key) der zugehörige Geheimtext erzeugt wird. Die obigen Begriffe lassen sich mathematisch präzise ausgedrücken: falls wir mit Σ ∗ die Menge aller endlichen Folgen von Zeichen aus dem Alphabet Σ bezeichnet, so gilt für die Menge der Klartexte (Nachrichtenraum): M ⊂ Σ∗ 3 1 Einführung Falls wir für den verschlüsselten Text das selbe Alphabet verwenden, so gilt für die Menge der Geheimtexte (Chiffratraum): C ⊂ Σ∗ Der Chiffratraum braucht nicht zwingend das selbe Alphabet zu verwenden: man kann auch ein völlig anderes verwenden! Man könnte als Chiffratraum die Menge der Hyroglyphen (altägyptische Schriftzeichen) verwenden und als Klartextmenge die englische Sprache. Meistens bewegt man sich aber ohnehin in der Bit-Welt und dort gilt sicher C = M! Der Schlüssel ist ein Element des Schlüsselraums für den typischerweise ebenfalls gilt: K ⊂ Σ∗ Ein Verschlüsselungsalgorithmus (engl: Cipher) ist eine Transformation E : K × M → C, (k, m) 7→ c = E(k, m) = Ek (m) die einem Paar, bestehend aus Schlüssel und Klartext (k, m) ∈ K × M einen Geheimtext c = E(k, m) = Ek (m) ∈ C zuordnet. Damit auch entschlüsselt werden kann (sonst macht das Ganze schliesslich keinen grossen Sinn), muss ein Entschlüsselungsalgorithmus existieren, d.h. eine Transformation D : K × C → M, (k, c) 7→ m = D(k, c) = Dk (m) für die natürlich gelten muss: Dk (Ek (m)) = D(k, E(k, m)) = m, ∀m ∈ M Die folgende Definition verallgemeinert das oben vorgestellt in dem Sinne, dass auch asymmetrische Verschlüsselungsverfahren eingeschlossen werden. Definition 1.3.1 (Cryptosystem). Ein Kryptosystem ist ein Quintupel (M, C, K, E, D) wobei M, C und K die Mengen der Klartexte, Geheimtexte und Schlüssel sind, E = {E k |k ∈ K} eine Familie von Verschlüsselungsfunktionen Ek : M → C und D = {Dk |k ∈ K} eine Familie von Entschlüsselungsfunktionen Dk : C → M sind, wobei für jeden Schlüssel e ∈ K ein Schlüssel d ∈ K existiert, so dass gilt: Dd (Ee (m)) = m, ∀m ∈ M. Man nennt das Kryptosystem symmetrisch (engl: symmetric oder private-key), falls d = e oder falls d aus e einfach berechnet werden kann. Man nennt das Kryptosystem asymmetrisch (engl: asymmetric oder public-key), falls d 6= e und es praktisch unmöglich ist, den privaten Schlüssel d aus dem öffentlichen Schlüssel e zu berechnen. 4 1 Einführung Beispiel 1.3. Stellen Sie die symmetrische Verschlüsselung mit Hilfe eines Block-Diagramms dar. Lösung: Die beiden Blöcke links und rechts stehen für die Verschlüsselung und die Entschlüsselung. k m E k c = Ek (m) D Dk (c) = m Beispiel 1.4. Stellen Sie die asymmetrische Verschlüsselung mit Hilfe eines Block-Diagramms dar. Lösung: Die beiden Blöcke links und rechts stehen für die Verschlüsselung und die Entschlüsselung. e m E d c = Ee (m) D Dd (c) = m Man beachte, dass jedermann (-frau) verschlüsseln kann (mit dem Schlüssel e) aber nur der oder diejenige entschlüsseln kann, der (oder die) im Besitz des entsprechenden Schlüssels d ist. Man beachte auch, dass man d nicht einfach aus e berechnen kann! Da mit Hilfe des Computers ver- und entschlüsselt wird, verwendet man zu Schulzwecken meist anstelle von Buchstaben die Zahlen 0 bis 25: 0 steht also für a (oder A), 1 steht für b (oder B), usw. Der Einfachheit halber werden wir nicht zwischen Gross- und Kleinbuchstaben unterscheiden. Sie werden lediglich feststellen, dass wir für den Klartext meist kleine und für den Geheimtext meist grosse Buchstaben verwenden. Ein wichtiges Hilfsmittel in der Kryptologie ist die modulare Arithmetik. Sind a und b zwei ganze Zahlen (a, b ∈ ∠Z), und m eine positive Zahl (m ∈ IN), dann schreibt man a ≡ b (mod m) genau dann, wenn m|(b − a), d.h. wenn m ein Teiler von b − a ist. Man sagt dann auch: a ist kongruent zu b modulo m. Die Zahl m wird Modul genannt. Wir verwenden a mod m (ohne Klammern), um den Rest r zu bezeichnen, der bei der Division von a durch m entsteht: dabei soll gelten: 0 ≤ r < m! 5 1 Einführung Beispiel 1.5. Berechne 101 mod 7 sowie −101 mod 7! Lösung: 3, 4 Dadurch kann man die Arithmetik modulo m definieren: man rechnet also in ∠Zm = {0, 1, . . . , m − 1} und verwendet dort die Rechenoperationen Addition “+” und Multiplikation “·”. Die Addition und Multiplikation modulo m funktioniert genau gleich wie die normalen Operationen: lediglich am Schluss (oder auch zwischendurch) nimmt man das Resultat modulo m. Beispiel 1.6. Berechnen sie 11 + 13 sowie 11 · 13 in ∠Z 16 . Lösung: 8, 15 Beispiel 1.7. Stellen Sie eine Multiplikationstafel für ∠Z 5 auf. Welche Zahlen x ∈ ∠Z5 haben ein multi- plikatives Inverses? Beispiel 1.8. Programmieren Sie den euklidischen und den erweiterten euklidischen Algorithmus. Ers- terer kann verwendet werden, um den grössten gemeinsamen Teiler zweier (oder auch mehrerer - wie geht das?) Zahlen zu bestimmen. Zweiterer kann verwendet werden, um das modulare Inverse einer Zahl 6 1 Einführung zu bestimmen. 1.4 Was wir lernen wollen Wir werden in den folgenden Kapiteln die nachstehenden Gebiete teilweise ausführlich behandeln, aber auch ab und zu nur streifen: Geschichte der Kryptologie oder wie man aus Fehlern lernen kann. Mathematische Grundlagen - dadurch bekommt die Kryptologie ein solides Fundament! Symmetrische Verschlüsselung oder private key encryption Kryptographische Hilfsfunktionen wie Einweg- und Hash-Funktionen und Zufallsgeneratoren. Asymmetrische Verschlüsselung oder public key encryption Hybride Verfahren - aus Effizienzgründen Digitale Signaturen, Zertifikate, etc. - und wie man eine Zertifizierungsstelle einrichtet. Kryptographische Protokolle - sie sind das Herzstück jeder Krypto-Applikation. Zero-Knowledge Protokolle - oder wie beweise ich jemandem, dass ich etwas weiss, ohne das Geheimnis zu verraten? Digitales Geld - oder wie kann man sich digitale Münzen vorstellen? 7 1 Einführung Kryptographie in der Praxis - jeder schliesst seine Wohnung ab, wenn er in die Ferien geht: warum verschickt man aber vertrauliche Informationen ungeschützt über’s Netz? Wir werden dabei von Anfang an möglichst viele praktische Beispiele machen. Damit werden wir dann • E-Mails oder andere vertrauliche Daten verschlüsseln. • Files, Directories und Partitionen verschlüsseln. • Files sicher löschen (wipe, secure delete [Gutman], etc.). • Daten sicher übertragen (ssh, stunnel, IPSec, etc.) • Daten verstecken (steganographie) • Zero-Knowledge Proofs • Digital Signieren ... • Integrität checken ... • Authentisierung und Autorisierung analysisieren ... 8 2 Geschichte 2.1 Altertum Die Ägypter verschlüsselten einige ihrer Hyroglyphen (The clay of Phaistos, Cretan-Minoan, 1700 BC). Skytala von Sparta ... Cäsar Chiffren ... Playfair Chiffren ... Nachricht unter dem Kopfhaar welche erst sichtbar wird, wenn man das Kopfhaar abrassiert. 2.1.1 Skytala von Sparta Bereits die Griechen verwendeten rund 500 v. Chr. in Sparta die Skytala, bestehend aus einem Zylinder (meist ein Rundholz), um welchen ein Papyrusband spiralförmig gewickelt wurde. Die Meldung wurde dann parallel zur Längsachse des Zylinders so aufgeschrieben, dass jeweils in Querrichtung zum Papyrusband genau ein Zeichen aufgeschrieben wurde (siehe Abbildung 2.1). Übermittelt wurde lediglich das Papyrusband. Die EmpfängerIn konnte die Nachricht nur mit einem Zylinder gleichen Durchmessers lesen. Die Verschlüsselung besteht darin, dass der Klartext auf n Zeilen aufgeteilt wird und dann zeilenweise aufgeschrieben wird. Die Anzahl Spalten entspricht dann der Anzahl Umwicklungen des Zylinders. Der Schlüssel in diesem Verfahren ist n. Übermittelt wird dann der spaltenweise gelesene Text: dieser entspricht dem Geheimtext. Der Empfänger entschlüsselt die Nachricht, indem er den erhaltenen Geheimtext spaltenweise aufschreibt indem er in jeder Spalte genau n Zeichen aufschreibt. Den Klartext kann er dann zeilenweise ablesen. Dieser Cipher verändert nicht die einzelnen Zeichen des Klartextes, sondern deren Position im Geheimtext. Es handelt sich deshalb um eine Transpositions-Chiffre. 9 2 Geschichte Abbildung 2.1: Skytala von Sparta. Beispiel 2.1. Im folgenden Beispiel schreiben wir die Meldung DiesisteinegeheimeNachrichtdiemitderSkytalauebermitteltwirdende zeilenweise auf (wobei wir natürlich nur die Buchstaben, kodieren wollen), und zwar so, dass wir n = 9 Buchstaben auf dem Umfang des Zylinders annehmen (der Zylinder soll also den Umfang 9 haben). Wir verwenden also 9 Zeilen. D E E H I R A I I I I I R E S U T R E N M I M K E T D S E E C I Y B E E I G N H T T E L N S E A T D A R T D T H C D E L M W E Der Papyrusstreifen enthält folgende Geheimschrift: DEEHIRAIIIIIRESUTRENMIMKETDSEECIYBEEIGNHTTELNSEATDARTDTHCDELMWE Zum Entschlüsseln muss ein Zylinder mit entsprechendem Durchmesser (von n Zeichen) verwendet werden. Für einen Angreifer bedeutet dies herauszufinden, welche Zahl n verwendet wurde. Dazu braucht er maximal soviele Versuche, wie die Zeichenkette Zeichen enthält, und dies sind hier 9 · 7 = 63. Beispiel 2.2. Überlegen Sie sich eine mathematische Beschreibung dieses Verschlüsselungssystems. Tipp: setzen Sie M = C = K = ∠Z?26 , d.h. die Menge der Klar- und Geheimtexte sowie der Schlüsselraum sind endliche Ketten von Zahlen zwischen 0 und 25. 10 2 Geschichte 2.1.2 Cäsar Chiffren Julius Cäsar (100-44 v. Chr.) verwendete eine einfache Ersetzung (Sustitution) um seine Nachrichten zu verschlüsseln. Beim Cäsar-Cipher wird jedem Buchstaben im Alphabet durch denjenigen Buchstaben ersetzt, der im Alphabet drei Stellen weiter hinten steht: Einem a wird also D, einem b wird E, usw. zugeordnet. Damit den Buchstaben x, y und z ebenfalls Buchstaben zugeordnet werden können, denkt man sich das Alphabet auf einer (Endlos-) Schleife geschrieben, d.h. nach z kommt wieder a, b, etc. Es handelt sich hier um einen Verschiebechiffre (shift-cipher) und zwar um 3 Stellen. Statt 3 könnte man auch jede andere Zahl zwischen 1 und 25 nehmen. Der Verschlüsselungs Algorithmus besteht also darin, die Buchstaben des Alphabets um eine bestimmte Anzahl Stellen n, (0 ≤ n < 26) zu verschieben 1 . Der Schlüssel ist in diesem Verfahren nichts anderes als die Anzahl Stellen n, um die verschoben wird. Der Schlüsselraum, d.h. die Menge aller Schlüssel hat also die Mächtigkeit 26, da er exakt 26 Schlüssel enthält (wenn man den schwachen Schlüssel mit n = 0 dazunimmt). Mathematisch gesehen ist die Cäsar Chiffre ein Spezialfall eines Verschiebe-Chiffre (und zwar um 3 Stellen), die wie folgt definiert ist: Sei M = C = K = ∠Z?26 . Für k ∈ K definiert man die Verschlüsselung des Klartextes m ∈ M durch Ek (m) = E(m, k) = (m + k) mod 26 und die Entschlüsslung eine Geheimtextes c ∈ C durch Dk (c) = D(c, k) = (m − k) mod 26 Dabei haben wir angenommen, dass der Klartext m von der Form m = (m 1 , m2 , . . .) mit mk ∈ ∠Z26 vorliegt und die obige Addition bzw. Subtraktion Zeichenweise, d.h. für jedes m k bzw ck erfolgt. Es ist klar, dass man diese Verschlüsselung durch brute force, d.h. mit roher Gewahlt (also ohne Hirn) knacken kann: man muss schliesslich nur 26 (genauer sogar nur 25) mögliche Schlüssel überprüfen. Eine systematische Schlüsselsuche (engl: exhaustive key search) führt also schnell zum Ziel. Wir schliessen daraus, dass der Schlüsselraum genügend gross sein muss, um diese Art von Angriff abzuwehren! Beispiel 2.3. Aus dem Klartext diesisteinegeheimenachricht wird mit k = 3 sofort der Geheimtext 1 Der exakte Leser bemerkt sofort, dass ich hier auch die Zahl 0 zugelassen habe: es handelt sich hierbei um einen schwachen Schlüssel welcher eine Gefahr für jedes Verschlüsselungsverfahrens darstellt. 11 2 Geschichte Abbildung 2.2: Scheibe für Cäsar Chiffre. GLHVLVWHLQHJHKHLPHQDFKULFKW Faktisch verschiebt man also das Alphabet (zyklisch) um drei Stellen nach hinten. Beispiel 2.4. Statt dass man eine Verschiebung um drei Stellen wählt, kann man auch jede andere Zahl von 0 bis 25 nehmen. Wenn man um 13 Stellen verschiebt, wird die Verschlüsselung involutorisch, d.h. zweimaliges Verschlüsseln liefert wieder den ursprünglichen Schlüssel. Diese Art der Verschlüsselung wird oft in Foren und Newsgruppen verwendet, um beispielsweise obszöne Witze zu verschleiern. Das folgende, simple Shellscript genügt dazu: #!/bin/sh # # rot13: # # Einfachste ’Verschluesselung’! Dieses Programm ersetzt # (zyklisch) jeden Buchstaben durch _den_ Buchstaben, der # im Alphabet 13 Stellen weiter hinten vorkommt. # # Benutzung: # rot13 < EingabeFile > AusgabeFile # PATH=/usr/bin; export PATH # tr ’[a-m][A-M][n-z][N-Z]’ ’[n-z][N-Z][a-m][A-M]’ 12 2 Geschichte Eine Verbesserung stellt die affine Chiffre (oder Tauschchiffre) dar. Hier lautet die Verschlüsselungstransformation: y = E(x) = (ax + b) mod 26 und die Entschlüsselungsfuntkion: x = D(y) = a−1 (y − b) mod 26 Dabei ist der Schlüsselraum gegeben durch K = {(a, b) ∈ ∠Z26 × ∠Z26 | ggT(a, 26) = 1 } Hier steht ggT für grösster gemeinsamer Teiler (engl: greatest common divisor, gcd) und a −1 ist das Inverse von a modulo 26. Beispiel 2.5. Überlegen Sie sich, was das modulare Inverse bedeutet! Tipp: verwenden Sie den erweiterten Euklidischen Algorithmus. Beispiel 2.6. Zeigen Sie, dass bei der Affinen- (oder Tausch-) Chiffre die Zahl a nur die Werte 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25 annehmen kann! Warum ist das so? Wie gross ist der Schlüsselraum? Die folgenden Überlegungen sollen zeigen, wann die Entschlüsselung möglich ist. Sie ist nämlich nur dann eindeutig, wenn die Gleichung ax + b ≡ y (mod 26) für jedes y ∈ ∠Z26 genau eine Lösung x ∈ ∠Z26 hat. Statt der obigen Gleichung kann man auch nacheinander schreiben: ax ≡ y − b ≡ y (mod 26) (mod 26) 13 2 Geschichte Letzteres gilt deshalb, weil wir jedes y ∈ ∠Z 26 betrachten. Also nimmt y − b (mod 26) genau so wie y (mod 26) alle Werte aus ∠Z26 an. Die Gleichung ax ≡ y (mod 26) hat aber nur dann eine eindeutige Lösung, wenn ggT(a, 26) = 1. Der Schlüsselraum ist daher von der Mächtigkeit 12 · 26 = 312, wobei wir auch schwache Schlüssel mitgezählt haben. Beispiel 2.7. Bestimmen Sie die Verschlüsselungsfunktion für den Schlüssel k = (a, b) = (7, 3). Wie lautet die Entschlüsselungsfunktion? Lösung: Man hat Ek (x) = 7x + 3 (mod 26) Die Entschlüsselungsfunktion ist allgemein gegeben durch Dk (y) = a−1 (y − b) (mod 26) Mit a−1 = 7−1 = 15 hat man nämlich Dk (y) = 15(y − 3) (mod 26) = 15y − 19) (mod 26) Man stellt auch sehr schnell fest, dass nacheinander gilt Dk (Ek (x)) = Dk (7x + 3) = 15(7x + 3) − 19 = 105x + 45 − 19 = x + 26 = x wobei wir immer modulo 26 gerechnet haben. Die zwei oben genannten (Cäsar- und Affine-) Chiffren sind Beispiele von monoalphabetischen Chiffren. Dabei wird ein bestimmtes Klartext Zeichen immer auf das selbe Geheimtext Zeichen abgebildet. Sind Klar- und Geheimtext Alphabet gleich, so entspricht die monoalphabetische Verschlüsselung einer Permutation der Zeichen des Alphabets. Der Schlüssel ist dann die jeweilige Permutation. Es gibt also 26! Schlüssel. Beispiel 2.8. Betrachte folgende, monoalphabetische Verschlüsselung (genannt Schlüsselwort-Chiffre): Wähle ein Schlüsselwort und einen Schlüsselbuchstaben. Man streiche im Schlüsselwort jeden Buchstaben, der bereits vorher irgendwo im Schlüsselwort auftrat. Dann schreibe man das Schlüsselwort unter die Buchstaben des Alphabets wobei man unter dem Schlüsselbuchstaben beginnt. Schliesslich fülle man die restlichen Stellen der Reihe nach mit den noch verbleibenden Buchstaben des Alphabets auf. Dadurch erhält man eine Vorschrift, die jedem Klartextzeichen genau ein Geheimtextzeichen zuordnet. Verwendet man das Schlüsselwort SCHLUESSELWORT, und den Schlüsselbuchstaben g, so hat erhält man folgende Tabelle: 14 2 Geschichte 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 P Q V X Y Z S C H L U E W O R T A B D F G I J K M N Nach Streichen der bereits verwendeten Buchstaben verbleibt SCHLUEWORT welches, beginnend unter dem Schlüsselbuchstaben g, geschrieben wird. Mit dieser Tabelle lässt sich ein beliebiger Text kodieren! Die Cäser-, Affine- und Schlüsselwort-Chiffre sind Beispiele von Substitutions-Chiffren: sie ersetzen ein bestimmtes Zeichen im Klartext durch ein bestimmtes (meist anderes) Zeichen. Dadurch werden statistische Eigenschaften des Klartext auf den Geheimtext übertragen. Damit dies nicht der Fall ist, verwendet man die homophone Substitution, bei welcher die Zeichen des Klartext auf eines von mehreren Geheimtext Zeichen abgebildet werden können. Dabei beachtet man die Häufigkeiten mit der die einzelnen Buchstaben im Klartext vorkommen: für Buchstaben, die häufiger vorkommen werden mehr Geheimtextzeichen bereit gestellt! Im Gegensatz zu Substitutions-Chiffren gibt es nämlich auch Transpositions-Chiffren: bei diesen wird ein bestimmtes Klartext Zeichen einfach an eine andere Stelle des Geheimtextes gesetzt (wie z.B. bei der Skytala). 2.1.3 Steganographie Die Stegonographie beschäftigt sich mit dem Verstecken von Informationen in einem unverdächtigen Träger (Bild, Movie, oder Movie-Stream). Diese Methode wurde erstmals im Altertum verwendet, als einem Sklaven ein Stadtplan auf die Kopfhaut des kahl rasierten Kopfes tätowiert wurde. Nachdem das Kopfhaar nachgewachsen war, wurde dieser Sklave durch die feindlichen Linien zum Adressaten geschickt. Dieser rasierte die Kopfhaare und konnte den Stadtplan für seinen Angriff verwenden. Wie man sieht, wurde in diesem Fall die Existenz der Information verheimlicht. Dies im Gegensatz zu einer Verschlüsselten Nachricht: deren Existenz ist bekannt, nicht aber deren Inhalt. Nun kommen natürlich findige Köpfe darauf, dass man die eintätowierte Nachricht auch noch verschlüsseln könnte. Natürlich wird das auch gemacht: nur für den Fall, dass irgend etwas schief geht! Ganz nach dem Prinzip: In einem Kryptosystem sollten immmer mehrere Verteidigungslinien (engl: multiple lines of defence) verwendet werden! 2.2 Mittelalter Im Mittelalter beschäftigte sich vor allem der Klerus mit der Kryptologie. Sie wurde aber auch weiterhin im Militär und vermehrt auch in der Diplomatie eingesetzt. Die folgenden Chiffren sollen näher betrachtet werden: Vigenère Chiffre (ca. 16. Jh.) 15 2 Geschichte Vernam Chiffre (ca. 16. Jh.) Der Playfair Chiffre (ca. 19. Jh.) 2.2.1 Vigenère Chiffre Ist eine polyalphabetische Verschlüsselung, welches von Blaise de Vigenère (1523-1596) abgeleitet wurde aus einem Verfahren von Johannes Trithemius (1462-1516). Die Chiffre galt während der folgenden rund 350 Jahren als sicher. Zuerst schreibt man den Klartext auf eine Zeile (oder mehrere, wobei man dann immer zwei Zeilen frei lässt). Danach wählt man ein (möglichst langes und nicht leicht zu erratendes) Schlüsselwort und schreibt dieses unter den Text, wobei man es bei einem langen Text mehrere Male hintereinander schreiben muss: Klartext und der Text aus dem Aneinanderreihen des Schlüsselwort müssen gleich lang sein. Danach werden Klartext- und Schlüsselwortzeichen addiert: dabei bedeutet Addition das selbe wie bei der Cäsar-Chiffre! Es wird also zuerst in Zahlen zwischen 0 und 25 umgewandelt und danach modulo 26 addiert. Anschliessend wird wieder in Buchstaben umgewandelt. Beispiel 2.9. Verschlüsseln Sie Vom Eise befreit sein mit dem Schlüsselwort Caesar. Zur Vereinfachung lassen wir alle Satz- und Leerzeichen weg und wandeln alles in Grossbuchstaben um (etwas, was früher auch gemacht wurde). Mathematisch lässt sich dieses Verfahren wie folgt beschreiben: Sei m ∈ IN eine postive ganze Zahl gleich der Länge des Schlüssels k = (k1 , k2 , . . . , km ) und seien M = C = K = ∠Z?26 : dann wird der Klartext in Blöcke der Länge m unterteilt, wobei allenfalls der letzte Block mit zufälligen Zeichen aufgefüllt werden muss. Ein solcher Block hat die Form m = (m1 , m2 , . . . , mm ) und wird nun gemäss folgender Vorschrift verschlüsselt: c = Ek (m) = (m + k) mod 26 16 2 Geschichte wobei hier wieder zeichenweise modulo 26 addiert wird. Die Entschlüsselung ist dann gegeben durch: m = Dk (c) = (c − k) mod 26 wobei auch hier (c − k) gliedweise gebildet werden, d.h. man hat: (p + k) mod 26 = ((p1 + k1 ) mod 26, (p2 + k2 ) mod 26, . . . , (pm + km ) mod 26) Beispiel 2.10. Führen sie das obige Beispiel 2.9 mit Hilfe von Zahlen durch! Beispiel 2.11. Die Vigenère-Chiffre wird mit leichten Modifikationen in WINCRYPT mit einem 512-Bit Schlüssel verwendet. 2.2.2 Vernam Chiffre Dabei handelt sich um die bitweise Vigenère-Chiffre. Der Schlüssel ist also eine endliche Bitfolge. Die Chiffrierung besteht darin, dass man diese, unter Umständen, wiederholte Bitfolge mit dem Klartext XOR-verknüpft: dies ist ja faktische einfach eine Addition modulo 2! Die Dechiffrierung funktioniert genau gleich: die unter Umständen wiederholte Bitfolge wird mit dem Geheimtext XOR-verknüpft. Dass dies wieder zum Klartext führt, zeigt die Identität: (p ⊕ k) ⊕ k = p Beispiel 2.12. Schreiben Sie ein Programm, welches die Vernam-Chiffre implementiert. Dabei soll beliebige Daten verschlüsselt werden können. Das Schlüsselwort (in ASCII) soll in einen Bit-String umgewandelt werden. 17 2 Geschichte 2.2.3 Playfair Chiffre Obwohl die Chiffre den Namen von Baron Playfair hat, wurde diese eigentlich von seinem Freund Charles Wheatstone (Wheatstone-Bridge!) erfunden (1854): ersterer hat aber im Parlament dermassen für diese Chiffre lobbyiert, dass die Chiffre seinen Namen bekam. Interessanterweise wird dieser Chiffre nachgesagt, dass sie auch von John F. Kennedy (JFK) während des 2. Weltkrieges im Gebiet der Midway-Inseln im Kampf gegen die Japaner eingesetzt wurde. JFK war damals Marineleutnant und befehligte ein kleines Patroullienboot, mit dem die Besatzung eine Fahrrinne beobachtete, die häufig von Japanern benutzt wurde. In einer sehr dunklen Nacht wurde das Patroullienboot von einem japanischen Kreuzer gerammt und ging unter. JFK rettete dabei den einzigen schwer verletzten Matrosen, indem er ihn ans mehrere Meilen entfernte Ufer einer unbewohnten Insel zog. In der nächsten Nacht soll er zu einer von Eingeborenen bewohnten Insel geschwommen sein. Dort habe er einem der Eingeborenen eine mittels Playfair verschlüsselte Meldung an die Amerikaner übergeben, welche dieser am nächsten Tag den auf der Hauptinsel stationierten Amerikanern übergab. Von diesem heldenhaften Verhalten konnte JFK als Kandidat für die Präsidentschaft der USA erheblich profitieren. Die Playfair Ciffre ist eine der ersten Block-Chiffren. Es verschlüsselt nicht einzelne Buchstaben, sondern Paare von Buchstaben. Dazu muss die Meldung zuerst in Paare von Buchstaben unterteilt werden. Doppelbuchstaben werden dabei durch ein X oder ein Z getrennt (statt freedom verschlüsselt man frexedom. Entsprechend geht man vor, wenn sich drei gleiche Buchstaben folgen: so wird nicht congress shall sondern congresxsz shall verschlüsselt. Schliesslich füllt man am Schluss mit irgend einem Buchstab auf, so dass man auch Paare bilden kann. Der Schlüssel ist ein Wort, welches fortlaufend (oben links beginnend) so in ein Rechteck von 5 × 5 Feldern eingetragen wird, dass kein Buchstabe zweimal vorkommt: sobald ein Buchstabe das zweite (oder dritte) Mal vorkommt, wird er weggelassen. Da nur 25 Felder zur Verfügung stehen, setzt man i = j. Sind gewisse Felder noch nicht besetzt, so werden sie wieder der Reihe nach mit den noch fehlenden Buchstaben des Alphabets aufgefüllt (wobei i = j berücksichtigt wird). Verschlüsselt werden nun Paare von Buchstaben. Man sucht diese beiden Buchstaben im oben beschriebenen Quadrat. Dabei gibt es drei Fälle: gleiche Zeile: Man ersetzt die beiden Buchstaben durch die jeweils eine Stelle weiter hinten vorkommenden Buchstaben, wobei dies zyklische gemacht wird. gleiche Spalte: geht analog sonst: Die beiden Buchstaben bilden zwei Ecken eines Quadrates. Sie werden ersetzt durch die auf den anderen zwei Ecken vorkommenden Buchstaben, wobei die Ersetzung durch den Buchstaben auf der gleichen Zeile erfolgt. Die Entschlüsselung erfolgt umgekehrt: man hat einfach das Passwort und erstellt daraus das 5 × 5-Quadrat. 18 2 Geschichte Beispiel 2.13. Verschlüsseln und Entschlüsseln Sie folgenden Text mit Hilfe der Playfair-Chiffre: Wir sind unter Nordwand beim Winkelhorn untergetaucht! Als Schlüssel soll very secret phrase verwendet werden. Lösung: Man hat sofort folgende Tabelle: v c b k q e t d l u r p f m w y h g n x s a i o z Der Klartext wird wie folgt vorbehandelt: wi rs in du nt er no rd wa nd be im wi nk el ho rn un te rg et au ch tx Wir erhalten unter Anwendung der obigen Regeln den folgenden Geheimtext: ZF YV GO LE LH RY OK EF ZP LG DV FO ZF OL TU AN YM XL DT YF TD TZ TA HU Beispiel 2.14. Erstellen Sie ein Programm, welches vom Standard Input liest und auf dem Standard Output schreibt und dabei ein Passwort übernimmt. Verschlüsselt soll nach der Playfair-Chiffre. Genüber der monoalphabetischen Chiffrierung hat man hier eine bessere Sicherheit. Man betrachtet 26 × 26 = 676 Digramme und würde daher eine gleich grosse Tabelle brauchen um die Häufigkeiten festzuhalten. Da immer noch sehr viel Informationen (Digramme) vom Klartext im Geheimtext auftreten, Kann die Playfair-Chiffre mit einigen hundert Geheimtextzeichen gebrochen werden. Wesentlich beschleunigen kann man ein Angriff, wenn man beachtet, dass • Permutationen der Zeilen oder Spalten der Matrix den Schlüssel nicht ändern, sowie • Geheimtextzeichen nur in der selben Zeile wie oder direkt unter dem Klartextzeichen stehen können. 19 2 Geschichte 2.3 Neuzeit In der Neuzeit, also ab etwa dem 19. Jahrhundert traten vor allem Rotormaschinen in den Vordergrund. Der Höhepunkt dieser Ära bildete sicher die Enigma, die von den Deutschen während dem 2. Weltkrieg verwendet wurde. Die ersten zwei Themen der folgenden Aufzählung sollen in diesem Kapitel vertieft betrachtet werden: die nachfolgenden Themen werden dann in den späteren Kapiteln behandelt. Chiffrierzylinder ... Rotormaschinen - die Enigma ... DES in den 70er Jahren. Public-Key Kryptographie ebenfalls in den 70er Jahren. Zero-Knowledge Protokolle in den 80er Jahren. Massenhafte Verbreitung der Kryptographie (Internet, Mobilfunk, Pay-TV, digitale Signature, E-stuff). 2.3.1 Chiffrierzylinder Anfangs des letzten Jahrhunderts spielten Chiffrierzylinder eine grosse Rolle: Dies sind Scheiben, auf deren Rändern permutierte Alphabete eingraviert sind. Abbildung 2.3: Handhabung des Chiffrierzylinders. Die Anordnung der Scheiben entspricht dem Schlüssel: bei 30 Scheiben hat man 30! ≈ 2.6 10 32 Möglichkeiten der Anordnung. Man muss davon ausgehen, dass der Gegner in den Besitz der Scheiben kommt! Die Chiffriermaschine M-94 der US-Army, die von 1922 bis 1943 im Einsatz war, bestand aus 25 Metallzylindern. 20 2 Geschichte Abbildung 2.4: Ursprüngliches Design der Enigma. 2.3.2 Die Enigma - eine Rotormaschine Die Enigma wurde von Arthur Scherbius (1918) erfunden war eine elektromechanische Maschine bestehend aus Rotoren (Walzen), die auf beiden Seiten 26 elektrische Kontakte hatten. Die 26 Kontakten wurden innerhalb der Walze auf verschiedenste Arten verbunden was einer Permutation entsprach. Damit hätte man nicht allzu viel gewonnen. Deshalb kam dazu, dass sich beim Verschlüsseln eines Zeichens der linke Rotor um eine Stelle (von insgesamt 26) drehte. Nach 26 Zeichen drehte sich auch der Rotor rechts davon um eine Stelle (ähnlich einem mechanischen Kilometerzähler). Den Stromfluss sieht man in der Abbildung 2.4: Beim Drücken der Taste Q wandert das Signal durch die drei Rotoren und wird dadurch permutiert. Schlïesslich zeigt es an der Lampenbrett den verschlüsselten Buchstaben N an. 1926 verschlimmbesserte Willi Korn den ersten Entwurf der Enigma. Er dacht sich, dass durch einen Reflektor nach den Rotoren das Signal wieder zurück durch die drei Rotoren geleitet werden kann: damit wird, so dachte er, die Anzahl Rotoren faktisch grösser, und damit das Verfahren insgesamt sicherer! Leider war dies ein Trugschlüss, den die Kryptoanalysten schamlos ausnutzten: Da das Signal am Reflektor umgelenkt wurde, konnte die Enigma nie ein Zeichen auf sich abbilden. Das modifizierte Design zeigt die Abbildung 2.5. Man sieht dort auch ein zusätzliches Element, das Steckbrett (engl: plug board, welches man von Hand stecken konnte! Weiter sieht man auch die die Noppen (notches, die dafür sorgten, dass die Rotoren beim Verschlüsseln wie bei ein Zählwerk nach dem Verschlüsseln eines Zeichens gedreht werden. Auf der Abbildung 2.6 erkennt man vorne das Steckbrett, oben vorne die Tastatur, dahinter das Lampenbrett. Hinten sieht man die drei Rotoren (von rechts nach links) sowie den Reflektor 21 2 Geschichte Abbildung 2.5: Verschlimmbessertes Design der Enigma. (ganz links). An den Rotoren wurde die Grundstellung eingestellt (sichtbar in der Mitte unter dem Schutzblech, welches beim Betrieb zum Schutz der Rotoren herunter geklappt wurde). Hinten rechts befindet sich die Batterie. Dadurch dass sich die Rotoren wie ein Zählwerk nach dem Verschlüsseln eines Buchstabens drehten, handelte es sich nicht mehr um eine monoalphabetischen Chiffre sondern um eine polyalphabetische. Die Deutschen glaubten, dass das Design der Maschine, insbesondere was die verschiedenen Rotoren, sowie die Wahl von 3 aus 5 möglichen Rotoren und deren gegenseitige Lage zu einem ungeheuren Schlüsselraum führten und waren fest davon überzeugt, dass die 22 2 Geschichte Abbildung 2.6: Die Enigma. Maschine unknackbar ist. Die Anzahl Schlüssel ergab war damit 5 26! ≈ 8 1018 26 3! 13!213 3 3 und damit unvorstellbar gross (für die damalige Zeit). 2.4 Kryptanalyse All die oben genannten Verfahren sind nicht sicher. Dies zeigt eine Analyse der verwendeten kryptographischen Verfahren. Versucht man kryptologische Algorithmen oder Protokolle zu 23 2 Geschichte brechen, spricht man von Kryptanalyse. Schon von alters her war dieses Teilgebiet der Kryptologie enorm wichtig und interessant: es bestand schliesslich immer ein enormes Interesse, verschlüsselte Daten zu entschlüsseln, auch wenn man nicht im Besitz der entsprechenden Informationen war. Die Geschichte zeigt, dass sich niemand auf die Geheimhaltung eines Algorithmus verlassen kann. Man darf also nicht darauf vertrauen, dass der Gegner nicht weiss, wie der Algorithmus für die Verschlüsselung funktioniert: früher oder später wird er es erfahren! Aus diesem Grunde verwendet man den Satz 2.1 (Kerkhoffs). Der Angreifer kennt den Algorithmus zum Ver- bzw. Entschlüsseln der Daten immer: es darf lediglich angenommen werden, dass der von den Teilnehmern verwendete Schlüssel geheim ist. Beispiel 2.15. Überlegen sie sich die Auswirkungen einer Kompromitierung falls • der Algorithmus geheim, der Schlüssel aber allen bekannt ist. • der Algorithmus öffentlich, d.h allen bekannt, der Schlüssel aber geheim ist. Lösung: Falls der Algorithmus geheim ist, muss auch die innere Struktur einer Maschine (z.B. ein Microchip), welche diesen Algorithmus implementiert, geheim bleiben. Falls ein Angreifer in den Besitz eines Geräte kommt, kann er auch den Algorithmus analysieren und ihn rekonstruieren. Damit ist das System nicht mehr sicher und muss durch ein neues ersetzt werden! Die Kosten die dadurch entstehen sind enorm! Wenn dagegen der Algorithmus öffentlich ist, und die Sicherheit einzig auf dem Schlüssel beruht, kann lediglich dieser Schlüssel kompromittiert werden! In diesem Fall wählt man einfach einen anderen Schlüssel, was ohne grosse Kosten möglich ist! Im Zusammenhang mit Kryptosystemen muss man also von folgenden Angriffsmöglichkeiten ausgehen: Angriff mit bekanntem Geheimtext oder ciphertext-only attack: hier kennt der Angreifer nur (einen oder mehrere) Geheimtexte und versucht daraus die zugehörigen Klartexte oder Schlüssel zu bestimmen. Dieser Angriff ist der schwächste, aber auch der häufigste in Praxis. Angriff mit bekanntem Klartext oder known-plaintext attack: hier hat der Angreifer (ein oder mehrere) passende Paare von Klar- und Geheimtext und versucht, den verwendeten Schlüssel zu bestimmen. Dieser Angriff ist vor allem in vernetzten Systemen Erfolg versprechend, da hier sehr oft (fast) dieselben Daten verschlüsselt werden: wie z.B. Datenbankabfragen, Protokollheader, Kodierungen, etc. Angriff mit gewähltem Klartext oder chosen-plaintext attack: hier kann der Angreifer beliebigen Klartext verschlüsseln (er ist im Besitz einer Kopie der Verschlüsselungsmachine). Er versucht den Schlüssel zu bestimmen oder die Klartexte zu bekannten Geheimtexten. Sie sind beispielsweise dann durchführbar, wenn ein Protokoll die zuvor gestellten, nicht verschlüsselten Fragen zusammen mit den Antworten verschlüsselt an den Fragesteller zurück schickt. 24 2 Geschichte Angriff mit gewähltem Geheimtext oder chosen-ciphertext attack: hier kann der Angreifer beliebigen Geheimtext entschlüsseln lassen. Er ist Besitz einer Kopie der Entschlüsselungsmachine, möchte aber den Schlüssel herausfinden. Diese Angriffe spielen vor allem in der asymmetrischen Kryptographie eine wichtige Rolle. Wählt der Angreifer alle Texte vorher, spricht man von einem direkten Angriff, wählt der Angreifer aber die Texte abhängig vom erhaltenen Geheimtext, spricht man von einem adaptiven Angriff. Keinen Erfolg hatte der Angreifer, wenn er nach dem Angriff keinerlei Informationen weder über den Klartext, noch über den verwendeten Schlüssel gewonnen hat. Von einer teilweisen Entschlüsselung spricht man dann, wenn der Angreifer einen Teil (oder alles) des Geheimtextes entschlüsseln konnte. Von einer vollständigen Entschlüsselung spricht man dann, wenn der Angreifer den Schlüssel bestimmen konnte und damit in der Lage ist, jede mit diesem Schlüssel verschlüsselte Nachricht zu entschlüsseln. Das beste Kryptosystem ist also eines, welches dem stärksten Angriff (d.h. mit gewähltem Geheimtext) standhält. In den folgenden Abschnitten wollen wir zeigen, wie man einige der bis jetzt behandelten Chiffren erfolgreich angreifen kann. 2.4.1 Monoalphabetische Chiffren Bei monoalphabetischen Chiffren wie dem Cäsar-, der Affinen- und dem Schlüsselwort-Chiffre, führen statistische Tests zum Ziel. Man weiss, dass in einem typischen Text in deutscher Sprache die folgende Häufigkeitsverteilung für die einzelnen Buchstaben vorliegt 2 : Man betrachtet aber nicht nur die Häufigkeit einzelner Buchstaben, sondern auch von Gruppen von Buchstaben. Die folgende Tabelle zeigt was gemeint ist: Schliesslich betrachtet man auch Bigramme, d.h. Paare von Buchstaben: auch diese gehorchen in einer typischen Sprache gewissen Gesetzmässigkeiten: Mit dieser Kenntnis und ein wenig Hirnakrobatik lässt sich dann ein mit einer beliebigen Permutation verschlüsster deutscher (oder auch anderssprachiger) Text entschlüsseln. 2.4.2 Vigenère-Chiffre Dieses Verfahren kann geknackt werden indem man zuerst mit dem Kasiski- und dem Friedmanntest die Länge m des Schlüsselwortes bestimmt und danach durch eine bereits oben angedeutete statistische Analyse das Schlüsselwort selber! Grundlage des nach Friedrich W. Kasiski (1805-1881 - Offizier eines preussischen Infanterieregiments) benannten Tests ist die Beobachtung, dass gleiche Klartext Buchstaben im Abstand m 2 Der Programmierfreund kann sicher in kürzester Zeit ein entsprechendes Programm aus dem Ärmel schütteln, welches er dann auf irgend welche Texte, z.B. aus dem Internet loslässt 25 2 Geschichte Buchstabe a b c d e f g h i j k l m Häufigkeit [%] Buchstabe 6.51 n 1.89 o 3.06 p 5.08 q 17.40 r 1.66 s 3.01 t 4.76 u 7.55 v 0.27 w 1.21 x 3.44 y 2.53 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 Tabelle 2.1: Häufigkeitsverteilung der Buchstaben in der dt. Sprache. (Quelle: A. Beutelspacher: Kryptologie) Buchstabengruppe gemeinsame Häufigkeit [%] e,n 27.18 i,s,r,a,t 34.48 d,h,u,l,c,g,m,o,b,w,f,k,z 36.52 p,v,j,y,x,q 1.82 Tabelle 2.2: Häufigkeitsverteilung von Buchstabengruppen in der dt. Sprache. Bigramm Häufigkeit [%] Bigramm en 3.88 nd er 3.5,75 ei ch 2.75 ie te 2.26 in de 2.00 es Häufigkeit [%] 1.99 1.88 1.79 1.67 1.52 Tabelle 2.3: Häufigkeitsverteilung der Bigramme in der dt. Sprache. (was der Länge des Schlüsselwortes entspricht) auf die selben Geheimtext Zeichen abgebildet werden. Also sucht man nach (möglichst langen) Wiederholungen von ähnliche Zeichenfolgen im Geheimtext. Deren Abstände müssen Vielfache des Schlüsselwortes sein. Eigentlich war der Test bereits 9 Jahre früher von Charles Babbage entdeckt: dieser durfte aber die Resultate nicht veröffentlichen, da ansonsten die Vormachtstellung der Engländer im Knacken des Vigenère-Chiffre gebrochen worden wäre! Beispiel 2.16. Die Verschlüsselung des Textes 26 2 Geschichte diesh gswei selte uchst extbu tnuna ssnie atger sevie ntext abenk chsta uchzu malse adebe lenku enden ombin benko taged insch ikurz rzenm negat ation mbina assla luess ensch itgle ivene enmit tione ngesc elmeh luess ichem ffekt jewei nauft hlues rfach elnun schlu dassg lsder reten selsi verwe dlang essel leich gleic koenn chere ndetw enbez versc eklar henge enhie rsind erden iehun hlues textb heimt rtrit undda soll mit dem Schlüssel fesoi führt auf das Chiffrat IMWGP FXYSZ FHWPM NOMFH JRKQP QYWGA JPFIV IPSBO JRTSH NIZIV LWOSQ XINWM QIFYC WDWBU NXYZM NGZSU XGZZC JWKST AIJGK MPMSA XIDHM SXWLB JRVSV SIYOB NZWBM KJWYB IEKGO QIAQP JODOZ YIPHJ ZGZGB FFWBS TQTWV FXACV JREWB OIOSQ QWVSZ LPWWK MIFUM MIAAB JBLPC HLKHI GIFYW RFABI YMGBM SEMTB WILSV PSWBV JRZWM WXJWB YRMBI ZGZNC YEYSL FWKZI SKWGK MPMSA XIDGQ HLWFM WWABL ZRVRI XWFWM REDGM NRKQP QYWGA JPESP WJSQP AIJKM SHWHE JVVSV XSDZ Mit Hilfe des Kasiskitests soll die Periode bestimmt werden. Verwenden Sie ebenfalls den Friedmanntest um die effektive Periode zu ermitteln. Dann bestimmen Sie mit Hilfe statistischer Methoden das Schlüsselwort. Das Applet unter http://www.bibmath.net/crypto/poly/viganalyse.php3 entschlüsselt das obige Kryptogramm innert kürzester Zeit! 27 2 Geschichte Der Friedmann-Test (1925) betrachtet die Wahrscheinlichkeit, dass zwei willkürlich aus dem Klartext herausgegriffene Buchstabenpaare aus den selben Buchstaben bestehen. Wir betrachten eine Buchstabenfolge der Länge n. Wir definieren nk : Anzahl des Buchstaben k (0 ≤ k < 26) wobei wir anstelle von Buchstaben a bis z die Zahlen 0 bis 25 verwendet. Die Anzahl Paare mit Buchstaben k ist gegeben durch nk (nk − 1) 2 Begründung: der erste Buchstabe kann aus nk ausgewählt werden, der zweite aus nk − 1; da es auf die Reihenfolge der Buchstaben nicht ankommt, muss noch durch 2 dividiert werden. Insgesamt ist also die Anzahl Paare, bei dem beide Buchstaben gleich sind (d.h. Beide gleich a, oder beide gleich b, etc.) gegeben durch 25 X nk (nk − 1) n0 (n0 − 1) n1 (n1 − 1) n25 (n25 − 1) + +...+ = 2 2 2 2 k=0 Die Wahrscheinlichkeit, ein Paar aus gleichen Buchstaben zu treffen (Anzahl günstige Fälle, dividiert durch Anzahl mögliche Fälle) wird der (Friedmannsche) Koinzidenzindex genannt: I = P25 nk (nk − 1) n(n − 1) k=0 Nun weiss man aus der statistischen Analyse, dass der Buchstabe k mit der Wahrscheinlichkeit pk auftritt. Aus diesem Grunde ergibt sich die Wahrscheinlichkeit, dass an zwei beliebig gewählten Stellen der selbe Buchstabe steht, gegeben durch 25 X p2k = 0.0762 k=0 Dabei wurden die Werte für die deutsche Sprache verwendet. Bei einem völlig zufälligen Text ist aber pk = 1/26, ∀k und somit 25 X p2k = 0.0385 k=0 P 2 Wir schliessen daraus, dass 25 k=0 pk zwischen 0.0385 und 0.0762 liegt und umso kleiner wird, je gleichmässiger der Text wird. Da bei einer monoalphabetischen Chiffrierung die Statistik nicht ändert, gilt: Ist der Koinzidenzindex ungefähr 0.0762, dann ist die Verschlüsselung monoalphabetisch. Ist der Wert aber wesentlich kleiner, dann ist der Text nicht monoalphabetisch chiffriert. 28 2 Geschichte Friedmann zeigt, wie man mit Hilfe des Koinzidenzindexes I die Schlüsselwortlänge h berechnen kann: h = 0.0377n I(n − 1) − 0.0385n + 0.0762 Beispiel 2.17. Suchen Sie im Internet ein entsprechendes Knackprogramm! 2.4.3 Enigma Bereits 1927 fingen die Polen eine zivile Version der Enigma ab, die fälschlicher Weise an eine deutsche Firma in Polen gesandt wurde. Die Polen konnten dadurch die Funktionsweise bereits sehr früh studieren und bemerkten den Fehler mit dem Reflektor sehr schnell. Bereits vor dem 2. Weltkrieg betrieben die Polen (allen voran Marian Rejewski) ein ausführliches Studium der Enigma. Vor dem Einmarsch der Deutschen in Polen (1939) setzten sich die führenden Leute samt dem bisher gesammelten Material nach England ab und wurden dort sofort in die englische Mannschaft von Bletchley Park im Zentrum für Kryptographie aufgenommen. Verschiedene menschliche Fehler der Deutschen führten dazu, dass die Allierten in den Besitz von kompletten Maschinen (bereits 1927 fingen die Polen eine am polnischen Zoll ab), von Rotoren und anderen Bauteilen der Enigma aber auch Code-Bücher kamen: all dieses Material half den Code der Enigma zu brechen. Hier ein Auswahl von solchen Fehlern: • Teilweise legal kamen die Allierten in den Besitz von Teilen oder jedenfalls zivilen Versionen der Enigma. Dadurch wussten sie sehr schnell, dass die Enigma nie einen Buchstaben auf sich abbilden konnte (aus rein konstruktiven Gründen). • Übermittlung von trivialen Meldungen mittels verschiedener Kanäle (unverschlüsselt und verschlüsselt: known plain text attack). • Schlüssel war zweiteilig: Grundschlüssel, der täglich gewechselt wurde und im Codebuch monateweise herausgegeben wurde. Er bestimmte die Anordnung der Rotoren und Lage der Ringe (die aussen an den Rotoren angebracht waren) • Codebücher auf Wetterschiffen waren weit weniger gut geschützt also z.B. auf einem U-Boot. • Funker wählte oft stupide Spruchschlüssel (AAA, ABC, etc.) • Die Aufforderung Bitte wiederholen wurde ebenfalls verschlüsselt (known plain text attacke). • Um Übertragungsstörungen zu berücksichtigen wurde der Spruchschlüssel zweimal hintereinander an den Anfang gesetzt. 29 2 Geschichte • Viele Nachrichten hatten stupiden Inhalt, wie Im Osten nichts neues oder Heil Hitler, oder ANXDIEX.... Obwohl die Deutschen die Enigma laufend verbesserten, z.B. indem sie vier statt drei Rotoren einsetzten, konnten die Leute von Bletchley Park im Projekt Ultra den Code meist innert nützlicher Frist knacken. Die Deutschen hatten während dem gesamten Krieg keinen Grund an der Sicherheit der Enigma zu zweifeln. Dabei mussten die Engländer peinlich darauf achten, dass sie sich nicht selber durch Aktionen verraten! Im Rahmen des Ultra-Projektes entwickelte Alan Turing eine elektromechanische Maschine, genannt die Bombe um die die Schlüssel der Enigma zu berechnen. Sie wurde gegen Ende des 2. Weltkrieges von den Engländern in Bletchley Park eingesetzt und trug wesentlich zum Erfolg des Projektes bei. Abbildung 2.7: Bedienung der Bombe. Auch nach dem Krieg wussten die Deutschen bis in die 70-er Jahre nicht, dass die Enigma geknackt wurde: Die Amerikaner machten Sie erst in den 70-er Jahren darauf aufmerksam, als die Deutschen für die NATO eine Kryptomaschine vorschlugen, die auf den Prinzipien der Enigma beruhte. 30 2 Geschichte Auch die Schweizer lieferten (wie auch die Amerikaner) noch lange Zeit Enigmas in die dritte Welt, wo man offensichtlich auch noch nicht mitbekommen hatte, dass die Enigma nicht mehr sicher war. Hintergedanke war offensichtlich, dass man damit die Kontrolle über von DrittweltLändern verschlüsselte Daten hatte! In der Kryptoanalyse werden die verschiedenste Techniken angewendet. Einige haben wir bereits erwähnt, andere führen wir hier auf. Die Liste soll nur andeuten, welche Methoden verwendet werden: Negative Mustersuche: Hier nutzt man die Feststellung aus, dass beim Cäsar-Chiffre (und wie wir später sehen werden auch bei der Enigma) nie ein Zeichen auf sich selber überführt wird. Kennt man beispielsweise beim Cäsar-Chiffre ein Wort des Klartextes, so kann man mögliche Positionen im Geheimtext ermitteln, indem man das Wort so lange verschiebt, bis keine Koinzidenz (Übereinstimmung von Buchstaben) besteht. Siehe auch Verfahren von Viaris. WordPerfect-Verschlüsselung: Der Algorithmus wurde nie veröffentlicht: und trotzdem tauchte er irgend wann mal im Internet auf: Kerkhoff lässt grüssen! Komprimieren vor dem Verschlüsseln hilft höchstens dem Kryptoanalysten: da bei einer komprimierten Datei am Anfang Tabellen stehen, deren Aussehen bekannt ist, kann eine known plain-text Attacke probiert werden. Doppelte Verschlüsselung ist nicht unbedingt doppelte Stärke: zweimal rot13 ist wieder die Identität! Snake-Oil Cryptography bezeichnet man Kryptographie-Software, welche von den Herstellern als unknackbar bezeichnet wird. Sie wird von diesen nicht offen gelegt, weil sich dahinter in fast allen Fällen schwache Algorithmen befinden. 31 2 Geschichte [1] 32 Literaturverzeichnis [1] J. F. Bürgler, R. E. Bank, W. Fichtner, and R. K. Smith. A New Discretization Scheme for the Semiconductor Current Continuity Equations. IEEE Trans. CAD, 8(5):479–89, 1989. 33 Kryptologie (Version 20041015) Josef F. Bürgler 19. November 2004 Inhaltsverzeichnis 3 Ein wenig Zahlentheorie 3.1 Modulares Rechnen . . . . . . . . 3.1.1 Die Euler Phi-Funktion . . 3.1.2 Der Satz von Euler-Fermat 3.1.3 Chinesischer Restsatz . . . 3.1.4 RSA-Codes . . . . . . . . 3.2 Perfekte Sicherheit: was ist das? . 3.3 Entropie . . . . . . . . . . . . . . 3.4 Gruppen, Ringe, Körper . . . . . 3.5 Primzahlen . . . . . . . . . . . . 3.5.1 Primzahltests . . . . . . . 3.5.2 Faktorisieren . . . . . . . 3.6 Kryptographische Funktionen . . 3.6.1 Einwegfunktionen . . . . 3.6.2 Hashfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 32 36 36 38 40 42 50 52 54 55 57 58 58 59 62 ii 3 Ein wenig Zahlentheorie 3.1 Modulares Rechnen Für beliebige Zahlen a, b ∈ ∠Z und m ∈ IN+ sagt man a ist kongruent zu b modulo m, und schreibt a ≡ b (mod m) falls m|(a − b), d.h. falls m ein Teiler von a − b ist. In diesem Fall gibt es ein k ∈ ∠Z so, dass mk = a−b. Man kann sich vorstellen, dass man von a nach b kommt, indem man ein Vielfaches von m addiert. Man kann einfach nachweisen (Übungsaufgabe), dass Kongruenz modulo m eine Äquivalenzrelation auf ∠Z definiert: man muss lediglich zeigen, dass diese Relation reflexiv, symmetrisch und transitiv ist. Dadurch wird ∠Z in paarweise disjunkte Äquivalenzklassen [r] = {x ∈ ∠Z |x ≡ r (mod m) } unterteilt. Die Elemente von [r] heissen die zu r modulo m kongruenten Elemente. Die Zahlen 0, 1, . . . , m − 1 heissen sind alle möglichen Reste modulo m. Deshalb nennt man die Äquivalenzklassen auch Restklassen modulo m. Im Folgenden repräsentieren wir die Restklasse [r] wieder durch r: wir werden also Reste und Restklassen nicht mehr unterschieden. Das kleinste, nichtnegative Restsystem modulo m ist ∠Zm = {0, 1, . . . , m − 1} Addition und Multiplikation in ∠Zm werden wie in ∠Z definiert, wobei man das Resultat immer modulo m nimmt. Es gelten dann beispielsweise für a ≡ a0 (mod m) und b ≡ b0 (mod m) folgende Rechenregeln: a + b ≡ a0 + b0 (mod m) ab ≡ a0 b0 (mod m) Zum Beweis muss man lediglich die Definition verwenden! Kürzen kann man den Ausdruck ac ≡ bc (mod n) falls ggT(c, n) = 1. In diesem Fall gilt a ≡ b (mod n) 32 3 Ein wenig Zahlentheorie Beispiel 3.1. Die in ∠Z gültige Kürzungsregel darf, wie das folgende Beispiel zeigt, nicht verwendet werden: 13 · 2 ≡ 1 · 2 (mod 8) aber 13 ≡ / 1 (mod 8) Allgemein gilt die folgende Kürzungsregel: Aus a·c ≡ b·c (mod m) folgt a ≡ b (mod m ) ggT(c, m) Beispiel 3.2. Man erhält nacheinander: 45 ≡ 15 (mod 10) 5·9 ≡ 5·3 (mod 10) 3·3 ≡ 3·1 (mod 2) 9 ≡ 3 (mod 2) nach Kürzen mit 5 3 ≡ 1 (mod 2) nach Kürzen mit 3 Eine weitere Anwendung der modularen Arithmetik liefern die Teilbarkeitsregeln, die z.B. aussagen, dass eine Zahl genau dann durch 3 teilbar ist, wenn deren Quersumme durch 3 teilbar ist. Man beachte, dass man diese Regel auch rekursiv anwenden kann! Beispiel 3.3. Zeigen Sie, dass für eine durch 3 teilbare ganze Zahl n die Summe der Ziffern dieser Zahl durch 3 teilbar ist. Daraus kann man ableiten, dass eine Zahl durch 3 teilbar ist, genau dann, wenn deren Quersumme durch 3 teilbar ist. Lösung: Es gilt ja n = a0 + 10 a1 + 102 a2 + · · · Da ja b · c (mod m) = b (mod m) · a (mod m) 10 ≡ 1 (mod 3) hat man n = a 0 + a1 + a2 + · · · (mod 3) Analog kann man Regeln finden für Zahlen, die durch 5, 9 oder 11 teilbar sind (→ HA). Gibt es eine solche Regel für 7? 33 3 Ein wenig Zahlentheorie Beispiel 3.4. Der square and multiply algorithm (SMA) dient dem effizienten Berechnen der modularen Exponentiation: z = ab (mod n) Dabei führt man die Exponentation auf Multiplizieren und Quadrieren zurück. Dazu wird zuerst die binäre Darstellung des Exponenten b gesucht. Anschliessend ersetzt man in dieser jede Null durch das Zeichen S und jede Eins durch die Zeichenkette SX. Das führende SX streicht man weg und fasst dann die Folge als eine Serie von Quadrierbefehlen (S) und Multiplizierbefehlen (X) auf. Dabei startet man mit a und kann zwischendurch immer wieder modulo n rechnen! Für z ≡ 313 (mod 11) hat man wegen 13 = (1101)2 zuerst die Folge SX SX S SX und nach Wegstreichen des Führenden SX die verbleibende Folge SX S SX. Sie sagt, dass man 3 zuerst quadrieren muss, und dann die beiden letzten Zahlen multiplizieren muss (was man dann modulo 11 nehmen darf), usw. Auf diese Art erhält man z ≡ 5 (mod 11). S X 3 −→ 9 −→ 27 ≡ 5 S S (mod 11) −→ 25 ≡ 3 X (mod 11) −→ 9 −→ 27 ≡ 5 (mod 11) Wegen 13 = 8 + 4 + 1 = 1 · 23 + 1 · 22 + 0 · 21 + 1 · 20 hat man nacheinander: 313 = 31·2 3 +1·22 +0·21 +1·20 3 2 1 0 = 31·2 31·2 30·2 31·2 3 1 2 1 1 0 0 1 = 3(2 ) 3(2 ) 3(2 ) 3(2 ) k 0 Wegen 3(2 ) = 1 muss man also nicht jedes Mal multiplizieren! Es gibt viele Möglichkeiten für die Implementation. Eine von diesen sei im Folgenden aufgeführt: procedure SMA (b, n, m) # wobei: # n = (a[k-1] a[k-2] ... a[1] a[0]) # x := 1 pow := b mod m for i := 0 to k-1 do if (a[i] = 1) x := x*pow mod m pow := pow*pow mod m end # # x ist b^n mod m Weitere Implementation findet man im Handbook of Applied Cryptography. Wir definieren das prime oder reduzierte Restsystem modulo n durch ∠Z?n = {x ∈ ∠Zn | x > 0 und ggT(x, n) = 1} 34 3 Ein wenig Zahlentheorie Beispiel 3.5. Es gilt beispielsweise ∠Z?10 = {1, 3, 7, 9}: somit besteht ∠Z?10 aus allen Nicht-Null Elementen von ∠Z10 , die teilerfremd sind zu 10. Allgemein besteht ∠Z?n aus allen Nicht-Null Elementen von ∠Z n , die teilerfremd sind zu n! Beispiel 3.6. Es gilt beispielsweise ∠Z?16 = {1, 3, 5, 7, 9, 11, 13, 15}, d.h. ∠Z?16 besteht aus allen, zu 16 = 24 teilerfremden Zahlen. Für ein a ∈ ∠Zn definiert man a · ∠Z?n = {y ∈ ∠Z?n | ∃x ∈ ∠Z?n mit y = a · x (mod n) } Beispiel 3.7. Man hat beispielsweise ? 2 · Z10 = {2, 6, 14, 18} mod 10 = {2, 6, 4, 8} oder ? 3 · Z10 = {3, 9, 21, 27} mod 10 = ∠Z?10 Lemma 3.1. Allgemein gilt für n > 1 und a ∈ ∠Z?n : 1. (i) Für beliebige x und y gilt: a·x ≡ a·y (mod n) ⇐⇒ x≡y (mod n). 2. (ii) a · ∠Z?n = ∠Z?n . 3. (iii) a hat ein multiplikatives Inverses modulo n, d.h. es existiert ein b ∈ ∠Z?n so, dass a · b ≡ 1 (mod n). Beweis. Falls x ≡ y (mod n) dann gilt trivialerweise a · x ≡ a · y (mod n). Nehmen wir umgekehrt an, dass a · x ≡ a · y (mod n), dann ist n|a · (x − y). Da aber ggT(a, n) = 1, hat man n|(x − y), d.h. x ≡ y (mod n) woraus (i) folgt. Da x ∈ ∠Z?n gilt gcd(x, n) = 1 und da gcd(a, n) = 1 folgt gcd(a · x, n) = 1, und somit a · x mod n ∈ ∠Z?n : somit gilt a · ∠Z?n ⊂ ∠Z?n . Wegen (i) folgt aus a · x ≡ a · y (mod n) sofort x ≡ y mod n: also besteht a · ∠Z?n auf n verschiedenen Elementen und kann deshalb keine echte Teilmenge von ∠Z?n sein. Daraus folgt (ii)! Da 1 ∈ ∠Z?n gilt, muss ein b ∈ ∠Z?n existieren, für das a · b mod n = 1 gilt: daraus folgt (iii)! 35 3 Ein wenig Zahlentheorie 3.1.1 Die Euler Phi-Funktion Die Euler φ-Funktion ist eine Abbildung von IN nach IN und wird definiert durch: φ : IN → IN, n 7→ φ(n) = |∠Z?n | Die Euler φ-Funktion hat folgende Eigenschaften: Lemma 3.2. Seien p und q zwei Primzahlen, und m = pr11 · pr22 · · · prnn die Primfaktorzerlegung vom m, dann gilt: (a) (b) (c) φ(p) = p − 1 φ(p q) = (p − 1)(q − 1) φ(m) = (p1 − 1) · pr11 −1 · · · (pn − 1) · prnn −1 Beweis. Der Beweis von (a) ist trivial, da ∠Z?n = {1, . . . , p − 1}. Um (b) zu beweisen, betrachten wir die Menge Yp = {p, . . . , (q − 1)p}, d.h. die Menge der Nicht-Null Elemente von ∠Zn , die durch p teilbar sind. Analog sei Yq = {q, . . . , (p − 1)q} die Menge aller Elemente in ∠Zn , die durch q teilbar sind. Falls a p = b q dann gilt p|b und q|a, also können a p und b q nicht gleichzeitig in Yp und in Yq liegen, d.h. Yp und Yq sind disjunkt. Es gilt also ∠Zn = {0} ∪ Yp ∪ Yq ∪ ∠Z?n und durch Betrachtung der Kardinalitäten der Mengen erhält man p q = 1 + (q − 1) + (p − 1) + |∠Z?n |. woraus sich sofort die Behauptung ergibt! Der Beweis von (c) wird hier nicht geführt (d.h. dem geübten Leser überlassen). Beispiel 3.8. Man hat φ(16) = φ(24 ) = 1 · 23 = 8 φ(693) = φ(32 · 7 · 11) = (2 · 3) · (6 · 1) · (10 · 1) = 360 3.1.2 Der Satz von Euler-Fermat Satz 3.3 (Euler). Sei n ∈ IN+ und a ∈ ∠Z?n . Dann gilt: aφ(n) ≡ 1 (mod n). 36 3 Ein wenig Zahlentheorie Beispiel 3.9. Seien n = 10 und a = 3 ∈ ∠Z?10 gegeben. Dann hat man Oben haben wir gesehen: φ(10) = 4 Nun hat man aφ(n) = 34 = 81 ≡ 1 (mod 10), in Übereinstimmung mit dem Satz von Euler. Beweis. Falls ∠Z?n = {r1 , r2 , . . . , rm }, dann ist eine Neuformulierung von (b) von Lemma 3.1 {a · r1 mod n, a · r2 mod n, . . . , a · rm mod n} = ∠Z?n Deshalb hat man a · r 1 · . . . · a · r m = r 1 · . . . · rm (mod n) Wegen (i) in Lemma 3.1 kann jedes der obigen ri gekürzt werden, was noch am ≡ 1 (mod n) übrig lässt. Der Satz von Euler folgt, sobald man berücksichtigt, dass nach Definition m = φ(n) gilt. Aus dem Satz von Euler folgt Satz 3.4 (Fermat). Sei p eine Primzahl und a ∈ ∠Z?p . Dann gilt: ap−1 ≡ 1 (mod p) Beweis. Verwende (a) von Lemma 3.2 im Satz von Euler 3.3. Beispiel 3.10. Die Umkehrung des Fermat’schen Satzes gilt nicht: d.h. es gibt zusammengesetzte ganze Zahlen m > 1 mit am ≡ a (mod m) für alle ganzen a. Beispiel: m = 3 · 11 · 17 = 561. Derartige Zahlen heissen Carmichael-Zahlen! Korollar 3.5. Sei n ∈ IN+ , a ∈ ∠Z?n , und x ≡ 1 (mod m) wobei m = φ(n). Dann gilt ax ≡ a (mod n). 37 3 Ein wenig Zahlentheorie Beweis. Man hat x = m · y + 1 für irgend ein y. Wegen dem Satz von Fermat 3.4 hat man dann ax ≡ (am )y · a ≡ 1y · a ≡ a mod n Korollar 3.6. Sei n ∈ IN+ , m = φ(n) und e, d ∈ ∠Z?m und e · d ≡ 1 (mod m). Sei E(M ) = M e mod n und D(C) = C d mod n dann ist D(E(M )) = E(D(M )) = M, ∀M ∈ [0, n). Beweis. D(E(M )) ≡ (M e mod n)d mod n ≡ M e·d mod n ≡ M (mod n) Der letzte Schritt benutzt das vorige Korollar. Weil 0 ≤ D(E(M )) < n und 0 ≤ M < n, folgt D(E(M )) = M . Analog findet man E(D(M )) = M . 3.1.3 Chinesischer Restsatz Satz 3.7 (Sun Tsŭ). Seien m1 , m2 , . . . , mk ∈ IN+ paarweise teilerfremd, m = m1 · m2 · · · mk sowie x ≡ ri (mod mi ) i = 1, 2, . . . , k ein System von k simultanen Kongruenzen. Dann besitzt dieses System eine eindeutige Lösung x (mod m). Der Algorithmus sieht etwa wie folgt aus: M := m_1 x := r_1 (mod M) for i := 2 to k do h := (r_i - x) * M^{-1} (mod m_i) x: = x + h * M M := M * m_i done return x (mod M) 38 3 Ein wenig Zahlentheorie Beispiel 3.11. Bestimmen Sie alle Lösungen x des Kongruenzsystems x ≡ −2 x ≡ 2 x ≡ 4 (mod 5) (mod 7) (mod 9) Das Resultat findet man beispielsweise mittels des folgenden Maple-Befehls: > chrem([-2,2,4],[5,7,9]); Beweis Chinesischer Restsatz. Wir wollen hier lediglich zeigen, dass eine Lösung existiert, indem wir diese konstruieren: diese Konstruktion könnte dann als Anleitung für ein Programm dienen. Wir definieren deshalb Mi = m i = 1, 2, . . . , k mi also ist Mi das Produkt der Moduln ausser mi . Daher hat man ggT(mi , Mi ) = 1, denn die mi sind nach unserer Annahme paarweise teilerfremd. Deshalb hat M i ein Inverses yi modulo mi , d.h. Mi yi ≡ 1 (mod mi ) (3.1) Die gemeinsame Lösung aller linearer Kongruenzen ist dann x= k X a i Mi y i i=1 denn wegen Mj ≡ 0 (mod mk ) für j 6= i sind alle Terme in dieser Summe kongruent zu Null modulo mi . Wegen Gleichung (3.1) gilt dann x ≡ a i Mi y i ≡ a i (mod mi ) i = 1, 2, . . . , k Also ist x gleichzeitig Lösung aller Gleichungen. Die Eindeutigkeit der Lösung wird hier nicht bewiesen! Beispiel 3.12. Wenn man eine Zahl durch 3 teilt erhält man 2, wenn man sie durch 5 teilt, erhält man 3 und wenn man sie durch 7 teilt, erhält man 2. Wie heisst die Zahl? Lösung: Man hat das System von Kongruenzen x ≡ 2 (mod 3) x ≡ 2 (mod 7) x ≡ 3 39 (mod 5) 3 Ein wenig Zahlentheorie Nach dem obigen Beweis bestimmen wir zuerst m = m 1 m2 m3 = 3 · 5 · 7 = 105 und M1 = m/3 = 35, M2 = m/5 = 21, M3 = m/7 = 15. Man sieht, dass 2 ein Inverses von M 1 = 35 modulo 3 ist, denn 2 · 35 ≡ 70 ≡ 1 (mod 3). Ebenso findet man, dass 1 ein Inverses von M 2 sowie von M3 ist. Die Lösung des Systems ist also: x ≡ 2 · 35 · 2 + 3 · 21 · 1 + 2 · 15 · 1 ≡ 233 ≡ 23 (mod 105) 3.1.4 RSA-Codes Seien p und q zwei sehr grosse (mindestens 150-200 stellige) Primzahlen. Dann definieren wir n = p q und wählen eine zu φ(n) = (p − 1) (q − 1) teilerfremde Zahl e ∈ IN. Die beiden Zahlen p und q sollen geheim bleiben, dagegen dürfen (e, n) allgemein bekannt sein. Zum Verschlüsseln einer Meldung M wird diese zuerst in Blöcke der Länge < min(p, q) unterteilt: wir gehen also davon aus, dass die Meldung M diese Bedingung erfüllt. Dann wird die Verschlüsselung definiert durch: C = Me (mod n) Hier spielt das Paar (e, n) die Rolle des (öffentlichen) Schlüssels. Die Verschlüsselungstransformation ist eine Einwegfunktion (was zwar angenommen, aber nicht mathematisch bewiesen ist). Sie kann nämlich sehr einfach berechnet werden. Die Umkehrung ist dagegen sehr schwer: es müsste nämlich zu gegebenem Geheimtext C, und öffentlichem Schlüssel (e, n) der Klartext M berechnet werden. Wäre das Problem nicht diskret, d.h. in ∠Z n formuliert, dann wäre die Lösung logaritmieren; was eigentlich kein grosses Problem wäre. Das diskrete Logarithmusproblem ist aber sehr, sehr viel schwieriger: man weiss, dass soll genau so schwierig sein, wie das Faktorisieren von grossen Zahlen, d.h. eine grosse Zahl in ihre Primfaktoren zu zerlegen. Die Falltür, durch welche die Einwegfunktion einfach invertierbar wird, stellt der private Schlüssel d dar, welcher das Inverse von e modulo φ(n) ist, d.h. es gilt e d ≡ 1 (mod φ(n)) oder e d = 1 + k φ(n) für ein k ∈ ∠Z. Der erweiterte Euklidische Algorithmus kann zur Berechnung von d verwendet werden. Wir zeigen im Folgenden, dass die folgende Formel die Entschlüsselung der Meldung liefert: M = Cd (mod n) Um dies zu zeigen, verwenden wir die Feststellung, dass M jeweils paarweise teilerfremd ist zu p und q. Nach dem Fermat’schen Satz gilt dann M p−1 ≡ 1 (mod p) und M q−1 ≡ 1 (mod q). 40 3 Ein wenig Zahlentheorie Daraus folgt: C d ≡ (M e )d ≡ M ed ≡ M (M p−1 )k(q−1) ≡ M · 1 ≡ M C d ≡ (M e )d ≡ M ed ≡ M (M q−1 )k(p−1) ≡ M · 1 ≡ M (mod p) (mod q) Wegen ggT(p, q) = 1 und dem Chinesischen Restsatz folgt die Behauptung M ≡ Cd (mod n). Man kann auch direkt den Fermat’schen Satz verwenden und schreiben C d ≡ M ed ≡ M 1+k φ(n) ≡ M · (M φ(n) )k ≡ M · 1 ≡ M (mod n). Man könnte argumentieren, dass ein Angreifer ja nur die Zahl n faktorisieren müsste, um das System zu knacken. Dies stimmt exakt. Diese Aufgabe ist aber ungeheuer schwierig: Es gibt nämlich bis heute keinen (bekannten) effizienten Algorithums (in polynomialer Zeit) für die Primfaktorzerlegung. Mit Hilfe von Maple kann man wie folgt vorgehen: > > > > > > > > > > > p:=nextprime(23435314573513435338909753413739357); q:=nextprime(23499387416501328740153053413739357); n:=p*q; phi:=(p-1)*(q-1); e:=6293864511297; igcd(e,phi); e:=6293864511293; igcd(e,phi); igcdex(e,phi,’t’,’s’); d; d:=phi+d; Für die modulare Exponentiation verwenden wir die folgende Prozedur in Maple: > > > > > > > > > > > > > > expmod:=proc(a:posint,b:posint,c:posint) local N, Y, Z; N := b; Y := 1; Z := a; while 0 < N do if N mod 2 = 1 then Y := Z*Y mod c fi N := trunc(1/2*N); Z := Z^2 mod c od; Y end: Dann kann man beispielsweise die Meldung HELP ME (mit der übliche Codierung) wie folgt 41 3 Ein wenig Zahlentheorie ver- und dann auch wieder entschlüsseln: > > > M:=08051216271305; C:=expmod(M,e,n); expmod(C,d,n); Alternativ kann man ohne die obige eigenhändig geschriebene Funktion diejenige von Maple verwenden und schreiben: > > C:=Power(M,e) mod n; Power(C,d) mod n; 3.2 Perfekte Sicherheit: was ist das? Grundsätzlich unterscheidet man zwischen Komplexitätstheoretische Sicherheit (engl. computational security) was bedeutet, dass es praktisch unmöglich (d.h. beispielsweise mit allen Computern der Welt, auch wenn sie noch eine Million Mal schneller werden) ist, ein Kryptosystem zu knacken. Dabei geht man vom schnellsten (bekannten) Algorithmus aus, ein Kryptosystem zu knacken. Oft kann man die Sicherheit eines Kryptosystems auch auf ein oder mehrere andere, bereits bekannte Probleme zurückführen (z.B. auf die Faktorisierung grosser Zahlen, oder das diskrete Logarithmus-Problem, etc.) Informationstheoretische Sicherheit: (engl. unconditional security) was bedeutet, dass auch ein Angreifer mit unbeschränkten Rechenmitteln den Algorithmus nicht knacken kann. Damit wir einen mathematischen Zugang zu dieser Fragestellung finden können, verwenden wir die Wahrscheinlichkeitsrechung. Ein Zufallsexperiment habe die n ∈ IN Elementarereignisse X = {x1 , x2 , . . . , xn }. Jedem dieser Ereignisse werde dessen Wahrscheinlichkeit 0 ≤ p(xi ) ≤ 1, i = 1, 2, . . . , n zugeordnet. Natürlich gilt dann n X p(xi ) = 1 i=1 Ist E ⊂ X ein Ereignis, dann ist die Wahrscheinlichkeit für sein Eintreten X p(E) = p(x) x∈E und die Wahrscheinlichkeit für sein Nicht-Eintreten p(E) = 1 − p(E). 42 3 Ein wenig Zahlentheorie Sind die n Elementarereignisse xi alle gleich wahrscheinlich, dann gilt: p(xi ) = 1 n Dann ist die Wahrscheinlichkeit für das Eintreten des Ereignisses E gegeben durch Anzahl günstige Fälle Anzahl mögliche Fälle |E| = |X| p(E) = Zwei Ereignisse E1 und E2 sind unvereinbar, oder schliessen sich gegenseitig aus, falls E 1 ∩ E2 = ∅. In diesem Fall gilt: p(E1 ∪ E2 ) = p(E1 ) + p(E2 ) Beispiel 3.13. Ein Schlüssel bestehe aus 6 Ziffern. Betrachte die Ereignisse: • E1 : die erste Ziffer sei 3 • E2 : die erste Ziffer sei 8 Falls die Schlüssel gleichverteilt sind, was kann man dann über p(E 1 ), p(E2 ) und p(E1 ∪ E2 ) sagen? Lösung: (Wandtafel) Für p(E2 ) > 0 kann die bedingte Wahrscheinlichkeit für E1 unter der Voraussetzung E2 definiert werden durch: p(E1 |E2 ) = p(E1 ∩ E2 ) p(E2 ) (3.2) Man überlege sich an Hand eines Venn-Diagramms, dass dieser Ausdruck Sinn macht! Beispiel 3.14. Ein Schlüssel (eines Zahlenschlosses) bestehe aus 6 Ziffern. Betrachte die Ereignisse: • E1 : die erste Ziffer sei 3 43 3 Ein wenig Zahlentheorie • E2 : die erste Ziffer sei ungerade Berechne p(E1 |E2 ). Lösung: Dann hat man (wegen der angenommenen Gleichverteilung): p(E1 ) = 1/10 p(E2 ) = 1/2 Wegen E1 ⊂ E2 hat man weiter E1 ∩ E2 = E1 und damit p(E1 ∩ E2 ) = p(E1 ) = 0.1 (dies ist die Wahrscheinlichkeit, dass die erste Ziffer eine drei ist und ungerade - war doch zu erwarten!). Aber p(E1 ∩ E2 ) p(E2 ) 1/10 = 1/2 = 0.2 p(E1 |E2 ) = Dies ist die Wahrscheinlichkeit, dass die erste Ziffer eine 3 ist, unter der Voraussetzung, dass die erste Ziffer ungerade ist! Für p(E2 ) > 0 folgt aus Gleichung (3.2) p(E1 ∩ E2 ) = p(E2 ) p(E1 |E2 ). Vertauscht man hier E1 und E2 so erhält man im Fall p(E1 ) > 0 p(E2 ∩ E1 ) = p(E1 ) p(E2 |E1 ). Da die linken Seiten gleich sind, folgt daraus Satz 3.8 (Bayes). Ist p(E2 ) > 0, dann gilt: p(E1 |E2 ) = p(E1 ) p(E2 |E1 ) p(E2 ) (3.3) Damit lässt sich p(E1 |E2 ) aus p(E2 |E1 ) berechnen (oder umgekehrt!). Man nennt zwei Ereignisse E1 und E2 unabhängig, falls p(E1 |E2 ) = p(E1 ). Sind in diesem Fall p(E1 ), p(E2 ) > 0, dann gilt wegen Gleichung (3.3) auch p(E2 |E1 ) = p(E2 ). Somit sind zwei Ereignisse E1 und E2 genau dann unabhängig wenn gilt: p(E1 ∩ E2 ) = p(E1 ) p(E2 ) 44 (3.4) 3 Ein wenig Zahlentheorie Beispiel 3.15. Im Beispiel 3.14 hat man E1 ∩ E2 = E1 und damit p(E1 ∩ E2 ) = p(E1 ) = 1/10 6= p(E1 ) p(E2 ) = 1/10 · 1/2 = 1/20 Dies zeigt, dass die beiden Ereignisse E 1 und E2 nicht unabhängig sind! Nun wollen wir untersuchen, was eine perfekte Chiffre ist. Seien x ein Klartext, y ein Geheimtext und k ein Schlüssel. Dann definieren wir: pM (x): ist die (a priori - im Voraus) Wahrscheinlichkeit des Klartextes x ∈ M. pK (k): ist die Wahrscheinlichkeit des Schlüssels k ∈ K. Man darf annehmen, dass k und x unabhängig sind, der Schlüssel k soll also nicht vom Klartext x abhängen. Die Wahrscheinlichkeitsverteilungen auf M und K induzieren eine Wahrscheinlichkeitsverteilungen auf C. Falls nämlich gewisse Klartexte x ∈ M und bestimmte Schlüssel k ∈ K häufig vorkommen, dann kommen auch entsprechenden Geheimtexte y ∈ C häufig vor. Es interessiert uns deshalb, mehr über die folgende Grösse zu erfahren pC (y): die Wahrscheinlichkeit des Geheimtextes y ∈ C. Sei nun C(k) = {E(k, x) |x ∈ M } die Menge aller Geheimtexte, die mit dem Schlüssel k verschlüsselt wurden: Wir verschlüsseln also jeden Klartext x mit dem Schlüssel k und erhalten C(k)! Es ist ja klar, dass ein Klartext x und ein Schlüssel k den Geheimtext y = E(k, x) eindeutig definieren. Dies ermöglicht uns, die Wahrscheinlichkeit pC (y) für einen bestimmten Geheimtext y ∈ C, abhängig von pM (x) und pK (k) zu beschreiben: pC (y) = X pK (k) pM (D(k, y)) (3.5) {k∈K|y∈C(k)} Dabei ist pM (D(k, y)) die Wahrscheinlichkeit, dass ein Klartext x = D(k, y) existiert, der mit dem Schlüssel k verschlüsselt den vorliegenden Geheimtext y ergibt. Da der Schlüssel k mit der Wahrscheinlichkeit pK (k) vorkommt, stellt pK (k) pM (D(k, y)) die Wahrscheinlichkeit dar, dass y aus einem Klartext x = D(k, y) unter Verwendung des Schlüssels k hervorgeht. Summiert man über alle Schlüssel k, die überhaupt zu diesem Geheimtext führen können, dann erhält man die Wahrscheinlichkeit, dass der Geheimtext y vorkommt. Analog erhält man für die Wahrscheinlichkeit, dass y ∈ C der Geheimtext ist unter der Voraussetzung, dass x ∈ M der Klartext ist: 45 3 Ein wenig Zahlentheorie X pC (y|x) = pK (k) (3.6) {k∈K|x=D(k,y)} Hier muss man sich nur überlegen, auf wieviele Arten der Geheimtext y aus dem Klartext x entstanden sein kann: es muss also über alle Schlüssel summiert werden, die x in y transformieren (verschlüsseln). Nun liefert der Satz von Bayes: pM (x) pC (y|x) pC (y) pM (x|y) = Setzt man die hier die Gleichungen (3.5) und (3.6) ein so findet man: X pM (x) pK (k) {k∈K|x=D(k,y)} pM (x|y) = X pK (k) pM (D(k, y)) (3.7) {k∈K|y∈C(k)} Beispiel 3.16. Sei M = {a, b} und die a priori Wahrscheinlichkeiten (z.B. bekannt aus der Statistik des Klartextes) pM (a) = 1/4 und pM (b) = 3/4. Zudem nehmen wir an, dass die drei Schlüssel k 1 , k2 , k3 mit den Wahrscheinlichkeiten 1/2, 1/4, 1/4 vorkommen. Sie transformieren (a, b) nach (1, 2) (mit dem Schlüssel k1 ), (2, 3) (mit dem Schlüssel k2 ) und (3, 4) (mit dem Schlüssel k3 ). Für den Geheimtext C = {1, 2, 3, 4} ergeben sich nach der Gleichung (3.5) die Wahrscheinlichkeiten: pC (1) = pC (2) = pC (3) = pC (4) = 1 2 1 4 1 4 1 4 1 4 1 · 4 1 · 4 3 · 4 · 2 16 1 3 7 + · = 2 4 16 1 3 4 =+ · = 4 4 16 3 = 16 = Damit erhält man für die a posteriori Wahrscheinlichkeiten mit Hilfe der Gleichung (3.6) für a: pM (a|1) = pM (a|2) = pM (a|3) = pM (a|4) = 46 1 4 · 1 2 · 1 4 · 1 2 2 16 1 4 7 16 1 4 4 16 1 4 ·0 3 16 =1 = 1 7 = 1 4 =0 3 Ein wenig Zahlentheorie und analog für b: pM (b|1) = pM (b|2) = pM (b|3) = pM (b|4) = 3 4 ·0 2 16 3 4 · 1 2 · 1 4 · 1 4 7 16 3 4 4 16 3 4 3 16 =0 = 6 7 = 3 4 =1 Was schliesst man daraus? • Die Wahrscheinlichkeit ist 1, dass der Klartext a ist, falls der Geheimtext 1 ist! • Die Wahrscheinlichkeit ist 1, dass der Klartext b ist, falls der Geheimtext 4 ist! • Die Wahrscheinlichkeit ist 6/7, d.h. über 80%, dass der Klartext b ist, falls der Geheimtext 2 ist! • Die Wahrscheinlichkeit ist 3/4, d.h. 75%, dass der Klartext b ist, falls der Geheimtext 3 ist! Natürlich sind praktische Chiffren viel komplizierter: sie können aber mit Hilfe von Computern genau so analysiert werden, wie dieses einfache Beispiel! Das obige Beispiel 3.16 zeigt, dass man aus der Wahrscheinlichkeitsverteilung des Geheimtextes und des Schlüssels auf die des Klartextes schliessen kann. Sobald man den Geheimtext in den Händen hält, kann man mehr über den Klartext aussagen. Von einen sicheren Chiffrierverfahren erwarten wir allerdings, dass auch die Kenntnis von beliebig viel Geheimtext nichts über den Klartext verrät. Zudem soll es auch mit unbegrenzten, sprich unendlichen Rechenkapazität (sowohl Geschwindigkeit, wie auch Speicher) nicht möglich sein, das Verschlüsselungsverfahren zu brechen. Es macht deshalb Sinn, perfekte Sicherheit wie folgt zu definieren: Definition 3.2.1. Eine Chiffre ist perfekt, wenn ∀y ∈ C gilt: pM (x|y) = pM (x), ∀x ∈ M. Einfacher ausgedrückt: Eine Chiffre ist perfekt, wenn ein Geheimtext dem Gegner absolut nichts über den zugehörigen Klartext verrät. Beispiel 3.17. Die Schlüssel k ∈ ∠Z26 der Cäsar-Chiffre seien gleichverteilt. Zeige, dass dann die Verschlüsselung eines einzelnen Buchstabens perfekt ist. Lösung: Man hat M = K = C = ∠Z26 . Die Chiffrierung ist gegeben durch E(k, x) = x + k 47 (mod 26) 3 Ein wenig Zahlentheorie und die Dechiffrierung durch D(k, y) = y − k (mod 26). Für ein beliebiges y ∈ C gilt dann nacheinander: X pK (k) pM (D(k, y)) pC (y) = k∈∠Z26 X 1 = pM (y − k (mod 26)) 26 k∈∠Z26 1 X = pM (w) 26 w∈∠Z26 1 ·1 = 26 1 = 26 Weiter hat man mit der Gleichung (3.6) 1 . 26 Wir haben dabei berücksichtigt, dass jedes Klartext/Geheimtext Paar (x, y) nur durch Verwendung des Schlüssels k = y − x (mod 26) erhalten werden kann. pC (y|x) = pK (y − x (mod 26)) = Berücksichtigt man die obigen Zwischenresultate, so findet man schliesslich für beliebige (x, y) pM (x|y) = = pM (x) pC (y|x) , pC (y) 1 pM (x) 26 , 1 26 = pM (x). Also hat man perfekte Sicherheit! Allerdings muss man beachten, dass nur ein einzelner Buchstabe verschlüsselt wurde. Sollen mehrere Buchstaben verschlüsselt werden, muss immer wieder, ein rein zufällig Schlüssel k verwendet werden. Siehe dazu auch Beispiel 3.18. Beispiel 3.18. Der Schlüssel k ∈ ∠Z26 der Cäsar-Chiffre sei gleichverteilt. Dann ist die Verschlüsselung von zwei Buchstabens nicht perfekt. Denn wenn man die Klartextbuchstaben ef betrachtet, dann gilt: p(Klartext = ef |Geheimtext = ZZ) = 0 Denn zwei aufeinanderfolgende Buchstaben ef können nicht auf die gleichen Buchstaben ZZ abgebildet werden. Andererseits hat man 1 p(Klartext = ef ) = 262 und somit zusammengefasst: 0 = p(Klartext = ef |Geheimtext = ZZ) 6= p(Klartext = ef ) = 1 262 48 3 Ein wenig Zahlentheorie Wir wollen nun perfekte Sicherheit mit einer zweiten Betrachtungsweise definieren: Falls ein Chiffriersystem perfekt ist, dann kann jeder Klartext x ∈ M mit einem geeigneten Schlüssel k ∈ K auf jeden Geheimtext y ∈ C abgebildet werden kann. Falls nämlich ein System perfekt ist, dann gilt für jeden Geheimtext y ∈ C: pM (x|y) = pM (x), ∀x ∈ M (3.8) Da jeder Klartext, wenn auch mit einer sehr kleinen Wahrscheinlichkeit, vorkommen kann, gilt pM (x) > 0. Wegen Gleichung (3.8) folgt sofort pM (x|y) > 0. Dies bedeutet, dass es einen Schlüssel gibt, mit dem x in y transformiert wird. Die letzten Gedanken erlauben uns festzustellen, wann ein Chiffriersystem nicht perfekt ist! Der folgende Satz sagt etwas darüber aus, in welchem Verhältnis die Anzahl Schlüssel zur Anzahl Geheim- und Klartexte steht. Satz 3.9. Falls ein Chiffriersystem perfekt ist, dann gilt: kKk ≥ kCk ≥ kMk Beweis. Wenn ein Kryptosystem perfekt ist, dann kann jeder Klartext mit einem geeignet gewählten Schlüssel auf jeden beliebigen Geheimtext abgebildet werden: wäre das nicht so, dann gäbe es Klartext/Geheimtext-Paare, die nicht auftreten könnten; in diesem Fall wüsste ein Angreifer, der einen Geheimtext in den Händen hat, dass er nicht zu bestimmten Klartexten passen kann. Dies wäre im Widerspruch zur perfekten Sicherheit. Also muss es mindestens so viele Geheimtexte geben wie Klartexte geben, d.h. es muss gelten: kCk ≥ kMk Nehmen wir nun an, dass es weniger Schlüssel als Geheimtexte gibt. Nach Vorraussetzung sollte es möglich sein, einen bestimmten Klartext durch Wahl des geeigneten Schlüssels auf alle Geheimtexte abzubilden. Also muss der Schlüsselraum mindestens so gross sein wie der Geheimtextraum: kKk ≥ kCk Zusammengefasst ergibt sich die Behauptung. Es zeigt sich, dass es zusammen mit schwachen Zusatzbedingungen genügt, dass die Mächtigkeiten der drei Mengen gleich sind, um ein perfektes Verschlüsselungssystem zu konstruieren. Satz 3.10. Falls für ein Chiffriersystem gilt: kKk = kCk = kMk und zudem jeder Schlüssel mit der selben Wahrscheinlichkeit vorkommt und schliesslich jeder Klartext auf genau eine Art auf jeden Geheimtext transformiert wird, dann ist das Chiffriersystem perfekt. 49 3 Ein wenig Zahlentheorie 3.3 Entropie Bei Angriffen mit bekanntem Klartext werden statistische Kenntnisse über den Klartext verwendet. Wie kann man die für den Angreifer nützlichen Eigenschaften der Klartexte quantitativ geschreiben? Wie schwierig ist es, einen sinnvollen von einem zufälligen Klartext zu unterscheiden. Die Entropie soll den Informationsgehalt einer Nachricht angeben. Sie ist im wesentlichen gleich der Anzahl Bits, die mindestens gebraucht werden, um die Information einer Nachricht darzustellen. Beispiel 3.19. Das folgende Beispiel soll zeigen, welche Entropie eine Nachricht aufweist, die aus den vier Zeichen a, b, c und d aufgebaut ist, wobei die Zeichen mit folgenden Wahrscheinlichkeiten auftreten: p(a) = 1/2, p(b) = 1/4, p(c) = p(d) = 1/8. Verwendet man als Kodierung a ↔ 00, b ↔ 01, c ↔ 10 und d ↔ 11, dann braucht man pro Zeichen zwei Bits. Wesentlich besser ist folgende Kodierung: a ↔ 1, b ↔ 01, c ↔ 000 und d ↔ 001. Denn hier ist die durchschnittliche Anzahl Bits pro Buchstabe nur 1.75. Warum? Nach der obigen intuitiven Definition der Entropie werden wir jetzt genauer. Sei X eine Zufallsvariable, welche die endlich viele Werte x1 , x2 , . . . , xn mit den Wahrscheinlichkeiten P (X = xi ) = pi mit 0 ≤ pi ≤ 1 für 0 ≤ i ≤ n annehmen kann. Natürlich gilt: Pn p = 1. i=1 i Dann ist die Entropie einer Zufallsvariable X ein mathematisches Mass für die Menge der Information, die eine Beobachtung von X liefert. Äquivalent ist sie gleich der Unsicherheit des Resultats vor der Beobachtung von X. Wie wir oben gesehen haben, ist die Entropie auch nützlich, um abzuschätzen, wieviele Bits für die Kodierung von X verwendet werden müssen. Die Entropie oder Unsicherheit von X ist definiert durch H(X) = − n X pi log2 pi i=1 wobei vereinbart wird, dass pi log2 pi = 0 falls pi = 0. Man kann leicht selber nachprüfen, dass die Entropie folgende Eigenschaften hat: (i) 0 ≤ H(X) ≤ log2 n. 50 3 Ein wenig Zahlentheorie (ii) H(X) = 0 gilt genau dann wenn pi = 1 für ein bestimmtes i und pj = 0 für alle j 6= i (d.h. es gibt keine Unsicherheit über das Resultat (des Zufallsexperiments)! (iii) H(X) = log2 n genau dann, wenn pi = 1/n für alle i, 0 ≤ i ≤ n (d.h. alle Resultate sind gleich wahrscheinlich). Beweis im Beispiel 3.20 Beispiel 3.20. Ist X eine gleichverteilte Zufallsvariable von n Elementen, dann gilt: H(X) = log 2 (n). Denn falls X gleichverteilt ist, dann gilt p(x k ) = 1/n und man erhält nacheinander H(X) = − = − n X p(xk ) log 2 p(xk ) k=1 n X k=1 1 1 log2 n n 1 1 = −n log2 n n 1 = − log2 n = log2 n Die gemeinsame Entropie der beiden Zufallsvariablen X und Y ist definiert durch H(X, Y ) = − X P (X = x, Y = y) log2 (P (X = x, Y = y)) x,y wobei x und y in der Summe alle möglichen Werte von X und Y annehmen. Diese Definition kann auf beliebig viele Zufallsvariablen auf natürliche Weise erweitert werden. Für zwei Zufallsvariablen X und Y gilt immer H(X, Y ) ≤ H(X) + H(Y ). Das Gleichheitszeichen gilt genau dann, wenn X und Y unabhängig sind. Beweis: 51 3 Ein wenig Zahlentheorie Die bedingte Entropie von X für gegebenes Y = y ist definiert durch X H(X|Y = y) = − P (X = x|Y = y) log2 (P (X = x|Y = y)) x wobei x in der Summe alle möglichen Werte von X annimmt. Die bedingte Entropie von X gegeben Y ... ist definiert durch X H(X|Y ) = − P (Y = y) H(X|Y = y) y wobei y in der Summe alle möglichen Werte von Y annimmt. Die bedingte Entropie hat folgende Eigenschaften: (i) H(X|Y ) misst das Mass der Unsicherheit, wenn Y beobachtet wurde. (ii) H(X|Y ) ≥ 0 und H(X|X) = 0. (iii) H(X, Y ) = H(X) + H(Y |X) = H(Y ) + H(X|Y ). (iv) H(X|Y ) ≤ H(X). Gleichheit hat man genau dann, wenn X und Y unabhängig sind. 3.4 Gruppen, Ringe, Körper Ist auf einer Menge A eine Verknüpfung ◦ so definiert, dass für beliebige a, b ∈ A auch a ◦ b ∈ A gilt und zudem für beliebige a, b, c ∈ A das Assoziativgesetz a ◦ (b ◦ c) = (a ◦ b) ◦ c gilt, dann nennt man G = (A, ◦) eine Halbgruppe. Beispiel 3.21. IN0 ist zusammen mit der üblichen Addition + eine Halbgruppe. Dieselbe Menge ist auch zusammen mit der üblichen Multiplikation · eine Halbgruppe. IN0 ist aber bezüglich Subtraktion keine Halbgruppe, denn bereits 3 − 4 führt aus IN 0 , da 3 − 4 = −1 ∈ / IN0 . ∠Z ist sowohl bezüglich + und · eine Halbgruppe: zudem ist ∠Z auch bezüglich der Subtraktion − eine Halbgruppe! Eine Halbgruppe G = (A, ◦) ist eine Gruppe, falls (a) in A ein Neutralelement e existiert, so dass a ◦ e = e ◦ a = a, ∀a ∈ A. (b) jedes a ∈ A ein Inverses a−1 ∈ A besitzt, so dass a ◦ a−1 = a−1 ◦ a = e. Gilt in einer Gruppe das Kommutativgesetz, d.h. a ◦ b = b ◦ a ∀a, b ∈ A, dann ist die Gruppe abelsch oder kommutativ. Man nennt eine Gruppe zyklisch, wenn es ein Element in dieser Gruppe gibt, welches mit sich selber (mehrere Male) multipliziert jedes Element der Gruppe ergibt. 52 3 Ein wenig Zahlentheorie Beispiel 3.22. ∠Z?p ist eine zyklische Gruppe, d.h. es gibt eine Erzeugende g ∈ ∠Z ?p so, dass ∠Z?p 1, g, g 2 , . . . , g p−2 . Man prüft leicht nach, dass 3 eine Erzeugende von ∠Z ?7 ist! Dagegen ist 2 keine Erzeugende! Die Ordnung eines Elements a ∈ ∠Z?p ist die kleinste positive ganze Zahl k mit ak = 1 mod p. Sie wird mit ordp (a) bezeichnet. Beispiel 3.23. Man prüft leicht nach, dass ord7 (3) = 6 und ord7 (2) = 3. Satz 3.11 (Lagrange). Für alle g ∈ ∠Z?p gilt: ordp (g) | (p − 1) Ein Ring ist eine Menge A versehen mit zwei Operationen + und · so dass (1) Die Menge A ist bezüglich + eine kommutative Gruppe. (2) Die Menge A ist bezüglich · eine Halbgruppe. (3) Es gelten die Distributivgesetze: a · (b + c) = a · b + a · c (a + b) · c 0 a · c + b · c Beispiel 3.24. ∠Z bildet bezüglich der Addition + eine kommutative Gruppe und bezüglich der Mul- tiplikation · eine Halbgruppe. Zudem gelten die beiden Distributivgesetze: also ist (∠Z, +, ·) ein Ring. Ein Ring heisst nullteilerfrei wenn a · b = 0 ⇐⇒ a = 0 ∨ b = 0. Gilt für die Multiplikation das Kommutativgesetz und ist das Neutralelement bezüglich der Multiplikation 1, dann handelt es sich um einen Integritätsring. Beispiel 3.25. ∠Z ist ein Integritätsring. Ein Ring R = (A, +, ·) ist ein Körper, falls die Menge A zusammen mit Multiplikation · eine Gruppe bildet. | IR, C | und ∠ Beispiel 3.26. Q, Zp (p eine Primzahl) sind Körper. Man rechnet sehr oft mit Restklassen, d.h. Mengen der Form ∠Zn = {0, 1, 2, . . . , n − 1} Alle Operationen werden modulo n (n ∈ IN) durchgeführt. Dabei kann man bereits die Zwischenresultate modulo n nehmen oder auch erst das Schlussresultat. Beispiel 3.27. 3 · 4 · 5 (mod 7). 53 3 Ein wenig Zahlentheorie Beispiel 3.28. Zeigen Sie, dass gilt: (a + b)p mod p = (ap + bp ) mod p Beispiel 3.29. Lösen sie die Aufgaben 13, 14 und 15 auf der Seite 125 im Buch von A. Beutelspacher: Kryptologie, 6. Auflage! Tipp für Aufgabe 13: Wegen 3.5 Primzahlen Bekanntlich ist p ∈ IN eine Primzahl, falls sie nur durch Eins und sich selber teilbar ist. Man weiss, dass es unendlich viele Primzahlen gibt: denn es gibt keine grösste Primzahl. Der Beweis dieser Behauptung verwendet, dass man jede ganze Zahl (bis auf die Reihenfolge) eindeutig als Produkt von Primzahlen (und Potenzen davon) darstellen kann. Beispiel 3.30. Es gilt 15 = 3 · 5 oder ein wenig schwieriger: > > ifactor(353901095312345); (5)(7)^2(23)(127)(43013)(11497) Der nachfolgende Satz gibt Auskunft über die Anzahl der Primzahlen. Dabei soll π(n) die Anzahl Primzahlen sein, die kleiner als n ∈ IN sind. Satz 3.12 (Primzahl Satz). Für grosse n ∈ IN gilt für die Anzahl Primzahlen kleiner als n: π(n) ≈ n ln n (3.9) Im Rennen nach möglichst grossen Primzahlen führen im Moment die Mersenne Primzahlen (siehe auch das Projekt: G REAT I NTERNET M ERSENNE P RIME S EARCH (GIMPS) unter mersenne.org. Diese Primzahlen haben die Form 2p − 1 wobei p eine Primzahl ist. 0 0 Die grösste Mersenne Primzahl ist im Moment p13 466 917 − 1: es handelt sich dabei um eine Zahl mit über 4 Millionen Stellen! Beispiel 3.31. Wie viele aufeinander folgende Zahlen mit n Stellen müssen typischerweise geprüft werden, bis man eine Primzahl findet? Lösung: Um mindestens eine Primzahl zu erhalten muss man im Schnitt ln(x) Zahlen in der Nëhe von x untersuchen! 54 3 Ein wenig Zahlentheorie n 1020 10100 10500 101000 ln(n) 46 230 1150 2300 3.5.1 Primzahltests Es ist nicht einfach festzustellen, ob eine bestimme Zahl eine Primzahl ist oder nicht. Typischerweise verwendet man statistische Tests, wie den Lucas-Lehmer-, den Dubois-Selfridgeoder den Miller-Rabin-Test. Diese liefern eine Antwort von der folgenden Art: • die Zahl ist zusammengesetzt, oder • die Zahl ist eine Primzahl, oder • es gibt keinen Grund anzunehmen, dass die Zahl keine Primzahl ist. Im zweiten Fall ist man absolut sicher, dass die Zahl eine Primzahl ist, während im letzten Fall mit einer sehr kleinen Wahrscheinlichkeit damit gerechnet werden muss, dass die Zahl trotzdem zusammengesetzt, d.h. keine Primzahl ist. Der Fermatsche Test basiert auf dem Satz von Fermat, welcher für eine Primzahl n und 1 ≤ a ≤ n − 1 sofort an−1 ≡ 1 mod n liefert. Falls jetzt n eine zusammengesetzte Zahl ist, dann nennt man a (1 ≤ a ≤ n − 1) Fermat-Zeuge (für die Nichtprimalität) von n genannt, falls an−1 6= 1 mod n. Ein entsprechender Algorithmus basiert auf folgender Idee: wähle t ≥ 1 und ein willkürliches a (2 ≤ a ≤ n − 1) und teste ob an−1 ≡ 1 mod n gilt. Falls dieser Test für alle Zahlen a erfüllt ist, deklariert man n als Primzahl. Als nächstes Beispiel betrachten wir den Satz 3.13 (Lucas-Lehmer Test). Sei L0 = 4 und Ln = L2n−1 − 2, (n = 1, 2, . . . , p − 2) und p eine Primzahl grösser 2. Dann ist die Mersennezahl 2p − 1 eine Primzahl genau dann, wenn Lp−2 ≡ 0 (mod 2p − 1) (3.10) Beispiel 3.32. Wir nehmen eine vierstellige Primzahl, z.B. p = 3539, erstellen ein kleines Programm, welches L3537 berechnet und überprüft, ob diese Zahl teilbar ist durch 2 p − 1. Lösung: Hausaufgabe! 55 3 Ein wenig Zahlentheorie Der Miller-Rabin-Test ist ein strong pseudoprime test welcher auf folgender Grundlage basiert: Falls n eine ungerade Primzahl (n > 2) ist und n − 1 = 2s r mit ungeradem r sowie a irgend j eine Zahl mit ggT(a, n) = 1, dann ist entweder ar ≡ 1 mod n oder a2 r ≡ −1 mod n für ein j ((0 ≤ j ≤ s − 1). Die Idee für einen Test liefert das HB of AC, p139. Die Fehlerwahrscheinlichkeit beim Miller-Rabin-Test ist begrenzt durch (1/4) t . Neben der obigen Tests gibt es auch echte Primzahltests für beweisbare Primzahlen. Für bestimmte Klassen wie die • Mersenne-Zahlen von der Form 2s − 1, s ≥ 2 wobei s ∈ IN. k • Fermat-Zahlen von der Form 22 + 1, k ∈ IN. gibt es effiziente Tests um die Primalität zu beweisen! Für Mersenne-Zahlen gibt es den LucasLehmer-Test, welcher auf der Tatsache beruht, dass n = 2s − 1 (s ≥ 3) prim ist, genau dann, wenn 1. s eine Primzahl ist und 2. die Folge von Zahlen u0 = 4, uk+1 = (uk 2 − 2) mod n für k ≥ 0 us−1 = 0 erfüllt. Für andere Zahlen kann die (vollständige oder partielle) Faktorisierung von n − 1 verwendet werden um die Primalität von n zu beweisen. Beispiel 3.33. Für Fermat-Zahlen ist die Faktorisierung trivialerweise bekannt. Dabei macht man sich folgende Tatsache zu Nutze. Sei n ≥ 3 eine ganze Zahl. Dann ist n genau dann eine Primzahl, falls eine ganze Zahl a existiert, für die gilt: 1. an−1 ≡ 1 mod n und 2. a(n−1)/q ≡ 1 mod n für jeden Primzahlzeiler q von n − 1. Beweis siehe HB of AC, p 143. Weitere Tests umfassen Jacobi Summentest Elliptische Kurven Test 56 3 Ein wenig Zahlentheorie 3.5.2 Faktorisieren Viele moderne Chiffrierverfahren sind deshalb sicher, weil es ungeheuer aufwändig ist, grosse Zahlen zu faktorisieren. Grundsätzlich kann eine beliebige Zahl faktorisiert werden, indem man • Trial Division durchführt, d.h. es wird versucht, die Zahl n sukzessive durch jede Zahl √ zwischen 2 bis n zu dividieren. √ • Pollard’s rho Methode (1976) ermöglicht einen ersten Faktor in 2 4 n Schritten zu finden! • Quadratic Sieve Methode • Elliptic Curve Sieve Methode • Number Field Sieve Methode Die Komplexität (also im Wesentlichen die Anzahl Operationen zum Brechen) verschiedener Methoden ist in der Tabelle 3.1 dargestellt: Name Quadratic Sieve Elliptic Curve O(e O(e Komplexität √ 2 ln(n) ln (n) (1+o(1)) √ (1+o(1)) Number Field Sieve O(e(1.92+o(1)) 2 ln(n) ln2 (n) √ 3 2 ) )) ln(n)(ln (n))2 )) Tabelle 3.1: Komplexität verschiedener Faktorisierungsmethoden. Beispiel 3.34. Zur Faktorisierung einer 512-Bit Zahl benötigt der Quadratic Sieve Algorithmus auf einer 2000 MIPS Workstation (2 109 Befehle pro Sekunde) etwa √ Also rund 1200 Jahre! e 355·6 2 109 s · 3.2 107 s/a ≈ 1170a Beispiel 3.35. Wie lange dauert trial division einer 100-stelligen Zahl, wenn pro Sekunde 10 12 Versuche gemacht werden und dies von 1012 im Internet? Lösung: 1066 Jahre! Das Alter des Universums wird auf ca. 10 10 Jahre geschätzt! Momentan ist eine der grössten Faktorisierten Zahlen mit lauter grossen Faktoren (man kann also nicht zuerst kleine Faktoren abspalten) die Zahl: 39505874583265144526419767800614481996 02077646030493645413937605157935562652 94506836097278424682195350935443058704 90251995655335710209799226484977949442 955603 57 3 Ein wenig Zahlentheorie Ihre Faktoren sind die Zahlen 33884958374667213943683932046721815228 15830368604993048084925840555281177 11658823406671259903148376558383270818 13101225814639260043952099413134433416 2924536139 Beispiel 3.36. Kontrollieren Sie das obige Resultat mit Hilfe von Maple indem sie die beiden Faktoren miteinander multiplizieren und das Resultat mit der ursprünglichen Zahl vergleichen! 3.6 Kryptographische Funktionen 3.6.1 Einwegfunktionen Eine Einwegfunktion (engl. one-way function ist eine Funktion f : A 7→ B, die effizient berechnet werden kann, deren Umkehrfunktion f −1 : B → A aber nicht existiert, oder nur sehr mühsam berechnet werden kann. Beispiel 3.37. Die folgenden Beispiele zeigen Einwegfunktionen: • Man kann sich vorstellen, dass das Schliessen eines geöffneten Vorhängeschlosses sehr einfach ist, dass aber das Öffnen des selben (fast) nicht möglich ist, ausser man hat den passenden Schlüssel. • Das Zerbrechen einer Vase oder einer Glasscheibe ist eine Einwegfunktion. Invertieren bedeutet, dass man die Splitter wieder zusammenklebt. Dass dabei die optischen Eigenschaften leiden, darf angenommen werden! • Verbrennen von Holz oder anderen Brennstoffen ist eine sehr gute Einwegfunktion: nichts kann dies ungeschehen machen! • Das Leben (oder die Zeit) ist eine Einwegfunktion: niemand kann zurück in die Vergangenheit und damit irgend etwas ungeschehen machen! Genügt eine zusätzliche Information, wie beispielsweise der Besitz des passenden Schlüssels im obigen Beispiel, um die Umkehrfunktion zu bestimmen, spricht man von einer TrapdoorEinwegfunktion oder einer Einwegfunktion mit Falltür (engl. trap-door). Trapdoor-Einwegfunktion (engl. trapdoor one-way function) spielen in der Konstruktion von public-key Kryptosystemen eine wichtige Rolle. 58 3 Ein wenig Zahlentheorie Die Potenzfunktion mit m = p q ist eine Trapdoor-Einwegfunktion: f : ∠Zn → ∠Zn , x 7→ f (x) = xb (mod n) Sie wird, allerdings mit einer anderen Trapdoorinformation, beim RSA-Algorithmus verwendet. Die Quadratfunktion mit m = p q ist ebenfalls eine Trapdoor-Einwegfunktion: f : ∠Zn → ∠Zn , x 7→ f (x) = x2 (mod n) Sie wird häufig im Bereich von Zero-Knowledge Systemen verwendet. Bei ElGamal muss der Empfänger den diskreten Logarithmus t eines öffentlichen Schlüssels κ kennen, um den Schlüssel k zum Entschlüsseln berechnen zu können. Einwegfunktion (mit Falltür) sind Gegenstand aktueller mathematischer Forschungen: es ist immer noch nicht bewiesen, dass es solche Funktionen gibt. Die bis jetzt gefundenen basieren die Sicherheit auf dem Faktorisierungsproblem oder dem diskreten Logarthmus Problem, etc! 3.6.2 Hashfunktionen Eine (kryptographische) Hashfunktion ist eine effizient berechenbare Abbildung h : A → B, M 7→ H = h(M ) für die |A| >> |B| gilt. Beispiel 3.38. Beispielsweise könnte A = Menge aller Bit-Strings endlicher Länge sein und B = Menge aller 32-Bit-Strings Dann gilt für die Funktion f : A → B obige Bedingung auf natürliche Weise! In der Praxis dienen one-way bzw. kryptographische Hashfunktionen als fingerprints der ursprünglichen Meldung M , welche natürlich eindeutig sein und auch nicht zweimal vorkommen sollten. Eine gute, kryptographische Hashfunktion sollte folgende Sicherheits-Eigenschaften aufweisen: Preimage resistance: Die Hashfunktion h ist eine Einwegfunktion. Es ist also unmöglich zu einem beliebigen H ∈ B ein M ∈ A zu finden mit h(M ) = H. Second preimage resistance: Es ist unmöglich zu einem beliebig gegebenen M ein M 0 zu finden so, dass h(M ) = h(M 0 ) gilt. Kollisionsfreiheit: Es ist sehr schwierig zwei M , M 0 zu finden für die h(M ) = h(M 0 ) gilt (siehe dazu auch die Geburtstags-Attacke). 59 3 Ein wenig Zahlentheorie Ist die Hashfunktion h kollisionsfrei, dann erfüllt sie zwangsläufig auch die second preimage resistance. Beispiel 3.39. Ist die Hashfunktion nicht kollisionsfrei, dann kann Alice zwei Versionen eines Vertrags vorbereiten die denselben Hashwert ergeben: der erste Vertrag wird Bob zur (digitalen) Unterschrift vorgelegt, der zweite enthält einige für Alice sehr vorteilhafte Passagen und wird später gegen den von Bob signierten Vertrag ausgetauscht. Niemand ausser Alice weiss von diesem Betrug - er ist auch nicht zu beweisen - ausser Bob wuerde vor der (digitalen) Unterschrift noch einige kleine Änderungen am Vertrag machen (was man als Lehre aus diesem konstruierten Beispiel mitnehmen kann!). Beispiel 3.40. Eine Hashfunktion mit einer Länge von 64 Bit ist viel zu kurz, um dem Geburtstags- Angriff zu widerstehen. Es müssen lediglich (im Schnitt) 2 3 2 verschiedene Texte durchprobiert werden um zwei Texte mit demselben Hash zu finden. Bei einer Länge des Hashes von 160 Bit muss man dagegen im Schnitt 2 80 Text durchprobieren, was doch nicht mehr so praktikabel ist! Übung: ... Praktisch wird kann eine Hashfunktion h auf verschiedene Arten realisiert werden: • Mittels Iteration einer Rundenfunktion wie die in jeder Runde n-Bits bearbeitet, daraus m-Bits berechnet, welche zusammen mit den folgenden n-Bits verarbeitet werden. Einige Beispiele zeigt die folgende Tabelle Hashfunktion MD4, MD5, RIPEMD-128 SHA-1, RIPEMD-160 60 n m 512 128 512 160 3 Ein wenig Zahlentheorie • Mittels eines Block Ciphers wie DES, AES, etc. Beispiel 3.41. Der Geburtstags-Angriff (engl. birthday attack) ist ein Angriff auf Hash-Funktionen. Nehmen wir an, H ist eine Funktion mit m möglichen Funktionswerten (die wir uns als Zellen vorstellen) welche völlig zufällig sein sollen (wie bei einer guten Hash-Funktion). H wird nun k mal ausgewertet. Jedes Mal wird in die entsprechende Zelle ein Ball geworfen. Die gesamte Anzahl Möglichkeiten, die k Bälle auf die m Zellen zu verteilen ist m k . Falls nie zwei Bälle in der selben Zelle liegen sollen, kann der erste Ball in eine von m Zellen geworfen, werden, der zweite Ball in eine der noch verbleibenden m − 1 Zellen, usw. Die Wahrscheinlichkeit, dass nie zwei Bälle in der selben Zelle liegen ist gegeben durch P (m, k) = Anzahl günstige Fälle m(m − 1)(m − 2) · · · (m − k + 1) = Anzahl mögliche Fälle mk und daraus ergibt sich die Wahrscheinlichkeit, dass mindestens in einer Zelle zwei Bälle liegen zu: (m − 1)(m − 2) · · · (m − k + 1) 1 2 k−1 P (m, k) = 1 − = 1 − 1 − 1 − · · · 1 − mk−1 m m m Wegen 1 − x < e−x , für 0 < x < 1 hat man dann nach kurzer Rechung: P (m, k) > 1 − e−k(k−1)/(2m) . √ Wird also die Funktion H mehr als k = 1.1774 · m evaluiert, so ist die Währscheinlichkeit für eine Kollision grösser als 1/2. Wenn also m = 2 n , dann muss man die Funktion H lediglich mehr als p ( k = 1.17 · 2 n/2) evaluieren um mit einer Wahrscheinlichkeit von mehr als 50 Prozent eine Kollision zu erzeugen! 61 3 Ein wenig Zahlentheorie [1] 62 Literaturverzeichnis [1] J. F. Bürgler, R. E. Bank, W. Fichtner, and R. K. Smith. A New Discretization Scheme for the Semiconductor Current Continuity Equations. IEEE Trans. CAD, 8(5):479–89, 1989. 63 Kryptologie (Version 20041119) Josef F. Bürgler 19. November 2004 Inhaltsverzeichnis 4 Symmetrische Kryptographie 4.1 Block-Chiffren . . . . . . . . . . . . . . . . . . . . 4.1.1 Feistel-Netzwerk . . . . . . . . . . . . . . . 4.1.2 Der Data Encryption Standard (DES) . . . . 4.1.3 Blowfish . . . . . . . . . . . . . . . . . . . 4.1.4 IDEA . . . . . . . . . . . . . . . . . . . . . 4.1.5 RC2 . . . . . . . . . . . . . . . . . . . . . . 4.1.6 RC5 . . . . . . . . . . . . . . . . . . . . . . 4.1.7 RC6 . . . . . . . . . . . . . . . . . . . . . . 4.1.8 Twofish . . . . . . . . . . . . . . . . . . . . 4.1.9 AES . . . . . . . . . . . . . . . . . . . . . . 4.1.10 Weitere Block-Chiffren . . . . . . . . . . . . 4.1.11 Vergleich verschiedener Block-Chiffren . . . 4.1.12 Design von Block-Chiffren . . . . . . . . . . 4.1.13 Betriebsmoden von Block-Chiffren . . . . . 4.1.14 Vor- und Nachteile der verschiedenen Moden 4.1.15 Anwendung von Block-Chiffren . . . . . . . 4.2 Strom-Chiffren . . . . . . . . . . . . . . . . . . . . 4.2.1 RC4 . . . . . . . . . . . . . . . . . . . . . . Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 62 62 63 72 74 74 74 74 76 78 79 79 79 80 88 89 90 92 95 ii 4 Symmetrische Kryptographie Die Symmetrische Kryptographie (engl: private-key cryptography) befasst sich mit der von Alters her gewohnten Methode des Ver- und Entschlüsselns mit einem einzigen, jedem Kommunikationspartner bekannten Schlüssel. Grundsätzlich unterscheidet man zwischen Block- und Strom-Chiffren (engl: block and stream ciphers). Im ersten Fall wird die Nachricht in gleich grosse Blöcke von Zeichen, oder Bits (typischerweise 64 oder 128 Bit) zerlegt und jeder Block als Gesamtes verschlüsselt. Im zweiten Fall wird jedes Zeichen, oder Bit einzeln verschlüsselt. 4.1 Block-Chiffren 4.1.1 Feistel-Netzwerk Viele heutige Produktalgorithmen sind Feistel-Netzwerke (Horst Feistel, IBM, 70-er Jahre). Dabei wird der Input (Klartext-Block) in zwei gleich grosse Hälften Li−1 (links) und Ri−1 (rechts) zerlegt. Die rechte Hälfte Ri−1 wird durch die Funktion f transformiert und das Resultat zusammen der linken Hälfte Li−1 ge-XORt. Das Resultat ist die neue rechte Hälfte Ri . Die neue linke Hälfte Li wird exakt gleich der alten rechten Hälfte Ri−1 (siehe Abbildung 4.1). Mathematisch ausgedrückt hat man: Li = Ri−1 Ri = Li−1 ⊕ f (Ri−1 , Ki ) (4.1) (4.2) Der Index i deutet es bereits an: normalerweise werden mehrere Runden verwendet (bei DES beispielsweise 16). Die Funktion f ist normalerweise nicht konstant, d.h. sie hängt typischerweise von einem Rundenschlüssel Ki ab: dieser wiederum wird von einem geheimen Schlüssel erzeugt. Neben der Einfachheit gibt es noch einen anderen, sehr grossen Vorteil des Feistelnetzwerks: die Funktion f braucht nicht invertierbar zu sein! Trotzdem ist es möglich, aus dem Geheimtext (Li , Ri ) den Klartext (Li+1 , Ri+1 ) zu berechnen. Wegen (x ⊕ z) ⊕ z = x und Gleichung (4.2) hat man nämlich sofort: Li−1 = Li−1 ⊕ f (Ri−1 , Ki ) ⊕ f (Ri−1 , Ki ) = Ri ⊕ f (Ri−1 , Ki ) Ri−1 = Li 62 (4.3) (4.4) 4 Symmetrische Kryptographie Abbildung 4.1: Eine einzelne Runde eines Feistel Netzwerks. Mit Hilfe der Gleichungen (4.3) und (4.4) kann man also aus dem Geheimtext sofort den Klartext berechnen, vorausgesetzt man kennt die Funktion f und diese kennt man dann, wenn man den Schlüssel kennt! Bei einem n-Runden Verfahren hat man nacheinander: Rn−1 = Ln Ln−1 = Rn ⊕ f (Rn−1 , Kn ) .. . R0 = L 1 L0 = R1 ⊕ f (R0 , K1 ) Dabei wurde den unterschiedlichen Rundenschlüsseln Ki Rechnung getragen! Beispiele von Feistel-Netzwerken sind DES, 3DES, XDES, Blowfish, Twofish, CAST-128, FEAL, etc. 4.1.2 Der Data Encryption Standard (DES) 1973 Öffentliche Ausschreibung durch das NBS (National Bureau of Standards - heute NIST). Es soll ein standardisiertes, sicheres Verschlüsselungssystem entwickelt werden! 63 4 Symmetrische Kryptographie 1974 Ein IBM-Team (Horst Feistel und Don Coppersmith) reichte einen Vorschlag ein, der auf dem IBM-Projekt Lucifer basierte. 1975 Das NSA (National Security Agency) beurteilte den Algorithmus und ändert ihn leicht ab (S-Boxen 1 , evt. Verkürzung der Schlüssellänge von 128 auf 56 Bit). Man war sich nie sicher, ob damit die NSA eine Hintertür einbaute, oder ob allenfalls IBM selber eine solche einbauen wollte. Erst spätere Untersuchungen zeigten, dass beide ehrlich waren! 1976 wurde DES zum öffentliche Verschlüsselungs-Standard erklärt. DES wurde bis in die späten 90-er Jahre in vielen kommerziellen wie auch militärischen Kommunikationssystemen eingesetzt. Mit DES wurde erstmals ein Verschlüsselungsalgorithmus einer breiten Öffentlichkeit vorgestellt. Dadurch konnte er eingehend untersucht werden. Die einzige (bekannte) Schwäche war schliesslich die begrenzte Schlüssellänge, welche brute forceAngriffe durchführbar macht. In der Enigma wurde eine Folge von Permutationen benutzt, die für sich betrachtet sehr einfach waren, in der Kombination aber höchst komplex. Realisiert wurden diese durch mechanische Räder. Anders in DES: hier werden Microchips und Programme (Software) verwendet. Verarbeitet werden Bits und Bytes, welche man beispeilsweise durch geeignete Kodierung erhält. DES ist eine Block-Chiffre, die auf 64-Bit Blöcken arbeitet und einen 56-Bit Schlüssel verwendet. Im Wesentlichen wird zum Ver- und Entschlüsseln der selbe Algorithmus verwendet: lediglich die Rundenschlüssel werden in umgekehrter Reihenfolge benutzt! Die DES-Transformation kann vereinfacht geschrieben werden als C = IP −1 (F (IP (M, K)) . Dabei ist F eine Transformation, die sich aus Permutationen und Substitutionen zusammensetzt. Man weiss nichts über den Sinn der beiden (zueinander inversen) Permutationen IP und IP −1 : für die Sicherheit von DES sind sie auf jeden Fall irrelevant. DES verwendet ein Feistel-Netzwerk mit 16 Runden wie in Abb. 4.2 gezeigt. Wir werden im Folgenden detailliert eingehen auf die Funktion f und die Erzeugung der Rundenschlüssel Ki . Dazu betrachten wir eine beliebige der 16 Runden. Man kann sich dies als Kaskade von Wasserfällen vorstellen wobei diese im Falle von DES die folgenden Funktionen ausführen können: • Permutationen • Linksverschiebungen • Substitutionen (Ersetzungen) 1 Die Entwurfskriterien der S-Boxen wurden 1990 nach der differenziellen Kryptanalyse durch Bahim und Shamir veröffentlicht. Ziel war die maximale Immunität gegen differenzielle Kryptanalyse, ein Angriff, den sowohl IBM wie auch die NSA bereits beim Entwurf kannten. 64 4 Symmetrische Kryptographie Abbildung 4.2: Die 16 Runden von DES. In der Abb. 4.3 erkennt man rechts die Erzeugung des Rundenschlüssels. In der Mitte erkennt man die Funktion f , bestehend aus der Expansions-Permutation, mit nachfolgender XORVerknüpfung mit dem Rundenschlüssel, gefolgt von der S-Box Substitution (dem Kernstück von DES) und einer anschliessenden P-Box Permutation. Vor dem XOR mit dem jeweiligen Rundenschlüssel Ki wird die rechte Seite Ri−1 von 32 Bit auf 48 Bit mittels der folgenden Expansions-Permutation erweitert: Anschliessend wird das Resultat, wie bereits erwähnt, mit dem Rundenschlüssel K i ge-XOR-t und den S-Boxen übergeben. 65 4 Symmetrische Kryptographie Abbildung 4.3: Eine Runde von DES. 32 1 2 3 8 9 10 11 16 17 18 19 24 25 26 27 4 5 4 5 6 7 8 9 12 13 12 13 14 15 16 17 20 21 20 21 22 23 24 25 28 29 28 29 30 31 32 1 Tabelle 4.1: DES Expansions-Permutation. Die S-Boxen führen Substitutionen aus, sind nicht linear und liefern wie kein anderes Element die Sicherheit von DES. Sie sind gemäss der Abb. 4.4 parallel angeordnet, übernehmen als Input 48 Bit aufgeteilt in 8 S-Boxen die jeweils 6 Bit annehmen. Jede S-Box transformiert diese 6 Bit in 4 Bit. Alle 8 S-Boxen produzieren also 32 Bit als Output. Die acht DES S-Boxen sind in den Tabellen 4.2 und 4.3 aufgelistet. Beispiel 4.1. Die S-Boxen werden wie folgt verwendet. Wir betrachten als Beispiel die S-Box S 1 und nehmen an, dass der Input das 6-Tupel 101000 sei. Das erste und letzte Bit sind 10, was die binäre Darstellung von 2 ist und was als Zeilenindex in der S-Box verwendet wird, wobei wir berücksichtigen, dass die Nummerierung mit 0 beginnt! Die mittleren vier Bits sind 0100 was der binären Darstellung von 4 enspricht und den Spaltenindex in der S-Box liefert. Der entsprechende Eintrag in der S-Box ist 13, was in binärer Darstellung 1101 ist. Also liefert der Input 101000 den Output 1101! 66 4 Symmetrische Kryptographie Abbildung 4.4: Die 8 S-Boxen von DES. Jede Zeile der acht S-Boxen ist eine Permutation der Zahlen 0, 1, . . . , 15. Vermutlich wurden hier Permutationen gewählt, für die ein gewisser Abstand (z.B. die Summe der Beträge der jeweiligen Elemente) maximal ist. Die einzelnen Rundenschlüssel Ki werden aus dem eigentlichen 64-Bit Schlüssel wie folgt berechnet: • Zuerst wird jedes 8. Bit ignoriert (welches normalerweise für Paritätschecks eingesetzt wird). Die effektive Schlüssellänge ist also 56 Bit. Gewisse schwache Schlüssel (siehe weiter unten), dürfen natürlich nicht verwendet werden. • Für jede Runde wird nun ein 48-Bit Schlüssel erzeugt. Dazu wird zuerst der 56-Bit Schlüssel in zwei Hälften von 28-Bit zerlegt. Dann werden diese Hälften bei jeder Runde zyklisch um eine gewisse Anzahl Bits nach links geshiftet (siehe Tabelle 4.4). • Nach dem Shiften werden aus den 56 Bit deren 48 ausgewählt. Diese Operation wird Kompressions-Permutation genannt und ist in der Tabelle 4.5 definiert. • Durch die Shift-Operation wird in jeder Runde eine andere Teilmenge von Schlüsselbits verwendet. Zudem wurden nach 16 Runden alle Schlüsselbits verwendet! Abbildung 4.1 zeigt, dass beispielsweise das 33. Bit an die 35. Stelle geschrieben wird. Das 18. Bit dagegen wird ignoriert. Also entsteht dadurch eine Kompressions-Permutation. Schliesslich hat dies zur Folge, dass jedes Bit in 14 von total 16 Rundenschlüsseln vorkommt! Da die initiale (IP ) und die finale Permutation IP −1 keinen Einfluss auf die Sicherheit von DES haben, wollen wir sie hier nur in der Abb. 4.6 aufführen und nicht weiter kommentieren! Verschiedene Software-Implementationen von DES lassen diese beiden Permutation aus Effizienzgründen weg. Es wird vermutet, dass sie verwendet werden um das Beladen der Register auf einem 8-Bit oder 32-Bit Bus/Computer zu beschleunigen. 67 4 Symmetrische Kryptographie S1 14 4 0 15 4 1 15 12 13 7 14 8 1 2 15 4 14 2 8 13 6 2 4 9 15 1 3 13 0 14 13 8 8 14 6 11 4 7 15 2 7 11 10 4 10 1 3 15 10 0 13 7 13 6 1 10 9 14 0 9 4 9 13 0 7 13 13 8 10 6 3 15 14 11 9 0 6 3 3 4 8 15 6 9 3 0 6 5 6 15 0 12 11 6 10 1 11 8 3 10 13 1 10 6 2 11 15 12 1 7 5 11 S2 3 4 9 7 8 14 12 0 13 1 5 8 4 2 11 6 S3 15 5 1 13 6 10 2 8 3 0 11 1 8 7 4 15 S4 9 10 1 2 0 3 4 7 7 13 15 1 13 8 9 4 6 12 5 12 11 9 9 7 3 3 14 10 9 5 10 0 0 7 3 8 5 0 6 13 2 13 12 1 10 6 12 6 9 7 12 0 0 9 3 5 5 10 11 5 2 15 14 9 12 7 11 5 14 12 2 12 5 14 3 11 4 2 8 11 15 1 10 14 7 5 2 12 8 5 11 2 12 1 3 14 5 5 11 12 12 4 15 10 14 9 2 8 4 7 2 14 Tabelle 4.2: DES S-Boxen S1 bis S4 . Beispiel 4.2. Die initiale Permutation IP bewirkt, dass das 1.Bit auf das 58. abgebildet wird. Die finale Permutation IP −1 bewirkt, dass das Bit Nummer 58 wieder auf das 1. Bit abgebildet wird! Nachdem die obige Prozedur doch recht kompliziert ist, erwartet man, dass die Entschlüsselung von DES ebenfalls kompliziert ist. Es ist aber nicht so: man kann dieselbe Hardware und auch Software verwenden wie zum Verschlüsseln. Der einzige Unterschied ist der, dass die Rundenschlüssel in umgekehrter Reihenfolge verwendet werden müssen. Der Algorithmus, welcher die zum Entschlüsseln benötigten Rundenschlüssel liefert, verwendet statt Links- einfach RechtsShift Operationen: die Tabelle 4.4 wird dabei in umgekehrter Richung durchlaufen! (Fast) jeder (symmetrische) Verschlüsselungsalgorithmus hat gewisse schwache Schlüssel: bei DES sind es diejenigen, bei denen eine (oder beide) Schlüsselhälften (der Länge 28 Bit) entweder Null oder Eins sind. Denn dann ist jeder Rundenschlüssel identisch, d.h. man hat faktisch lediglich ein 1-Runden DES! Zudem gibt es gewisse halb-schwache Schlüssel, die wir hier nicht aufführen wollen! Weitere Diskussionspunkte: • Komplement des Schlüssels K sei K (und analog für P und C), dann gilt: E(P, K) = C E(P , K) = C 68 4 Symmetrische Kryptographie S5 2 12 14 11 4 2 11 8 4 1 7 10 2 12 4 7 1 11 10 13 12 7 1 14 12 1 10 15 9 14 4 3 10 15 4 2 15 5 2 12 4 11 13 0 1 4 6 11 2 14 15 11 7 4 11 13 12 13 8 1 13 2 1 15 7 11 2 1 8 13 4 14 9 2 7 12 2 8 9 5 0 9 3 4 4 6 15 8 10 3 1 9 12 7 4 10 11 6 8 5 13 1 5 0 7 8 15 9 2 13 6 15 S6 6 8 0 13 9 5 6 1 12 3 7 0 15 10 11 14 S7 8 13 3 12 1 10 14 3 7 14 10 15 10 7 9 5 S8 11 1 10 9 7 4 12 5 14 2 0 6 8 13 15 12 3 15 13 15 10 3 12 5 6 0 9 10 3 4 14 13 14 0 4 10 1 1 7 6 9 7 5 5 12 2 6 8 0 0 15 14 3 14 5 6 11 0 10 13 15 9 0 3 0 9 3 4 14 9 8 6 0 14 5 3 7 5 11 11 3 8 13 11 6 0 8 13 10 15 5 2 6 1 8 6 9 2 3 12 0 12 7 14 9 2 3 5 8 5 6 11 Tabelle 4.3: DES S-Boxen S5 bis S8 . Runde 1 2 Anzahl Bits 1 1 3 4 2 2 5 6 7 2 2 2 8 9 2 1 10 11 12 2 2 2 13 14 15 16 2 2 2 1 Tabelle 4.4: Anzahl Bits des Key-Shifts bei jeder DES-Runde. 14 23 41 44 17 19 52 49 11 24 12 4 31 37 39 56 1 5 3 28 26 8 16 7 47 55 30 40 34 53 46 42 15 6 21 27 20 13 51 45 33 50 36 29 10 2 48 32 Tabelle 4.5: DES Kompressions-Permutation. • Bilden die DES-Transformationen eine Gruppe? Diese Frage wurde erst 1992 beantwortet: DES bildet keine Gruppe! • Wie schnell ist DES (in Hard-/Software)? • Warum genau dieses Design der S-Boxen? Gründe sind beispielsweise: – Output-Bits nicht nahe bei einer linearen Funktion der Input-Bits. 69 4 Symmetrische Kryptographie 58 62 57 61 50 54 49 53 42 46 41 45 34 38 33 37 26 30 25 29 18 22 17 21 10 14 9 13 40 38 36 34 8 6 4 2 48 46 44 42 16 14 12 10 56 54 52 50 24 22 20 18 64 62 60 58 IP 2 60 6 64 1 59 5 63 IP −1 32 39 30 37 28 35 26 33 52 56 51 55 7 5 3 1 44 48 43 47 36 40 35 39 28 32 27 31 20 24 19 23 12 16 11 15 4 8 3 7 47 15 55 45 13 53 43 11 51 41 9 49 23 21 19 17 63 61 59 57 31 29 27 25 Tabelle 4.6: Initiale und finale Permutation bei DES. – Wenn die Input-Bits sich um ein Bit unterscheiden, dann müssen sich die OutputBits um mind. zwei Bits unterscheiden. • Warum genau 16 Runden? Wegen der kurzen Schlüssellänge, der Einfachheit des DES-Verfahrens, und der grossen Bekanntheit, wurden verschiedene DES-Varianten entwickelt: Triple-DES (3DES) Eine immer noch weit verbreitete Methode ist 3DES bei der zuerst mit einem Schlüssel K1 verschlüsselt, danach mit einem Schlüssel K2 entschlüsselt und schliesslich wieder mit einem Schlüssel K3 verschlüsselt wird: die Verschlüsselung lautet also (DES (P )) , C = DESK3 DES−1 K 1 K2 während die Entschlüsselung definiert ist durch −1 P = DES−1 K1 DESK2 DESK3 (C) Eine Variante von 3DES verwendet K3 = K1 . . 3DES reduziert sich für K1 = K2 = K3 zu DES und ist dadurch zu DES kompatibel verwendbar. Es gibt verschiedene weitere Verbesserungen von DES: xDES, DES mit alternierenden SBoxen, RDES, sn DES (optimal sichere S-Boxen gegen differentielle 2 und lineare 3 Kryptanalyse), DES mit schlüsselabhängigen S-Boxen, NewDES, etc. 2 Hier werden Paare von Geheimtexten (C, C + ∆0 ) betrachtet, deren korrespondierende Klartextpaare (P, P + ∆) eine ganz bestimmte Differenz ∆ aufweisen. Man hofft mit Hilfe ähnlicher Paare von Klartexten und zugehörigen Geheimtexten Schwächen im Verschlüsselungsalgorithmus aufdecken zu können. 3 Es wird versucht mit Hilfe der in erster Ordnung linearen statistischen Relationen zwischen Klar-, Geheimtext und Schlüssel die Schwächen im Verschlüsselungsalgorithmus zu entdecken. 70 4 Symmetrische Kryptographie Da DES keine Gruppe bildet, ist Triple-DES nicht einfach wieder eine gewöhnliche DESVerschlüsselung. Deshalb kann durch mehrmaliges Anwenden von DES mehr Sicherheit gewonnen werden. Bei Triple-DES mit zwei verschiedenen Schlüsseln K 1 und K2 hat man eine effektive Schlüssellänge von 112 Bit, was heute noch weit ausserhalb des Bereiches liegt, den man mit Brute-Force erreichen kann. Abbildung 4.5: Triple-DES. Weitere Verbesserung von DES Es gibt verschiedene weitere Verbesserungen von DES: xDES, DES mit alternierenden S-Boxen, RDES, sn DES (optimal sichere S-Boxen gegen differentielle und lineare Kryptanalyse), DES mit schlüsselabhängigen S-Boxen, NewDES, etc. Weiter führende Links zum Thema rund um DES: Zweiseitiger Angriff Bei DES kann ein zweiseitiger Angriff durchgeführt werden. 1991 Biham und Shamir führen den ersten (öffentlich bekannten) Angriff mit Hilfe differentieller Kryptoanalyse durch. Es handelt sich dabei um einen Angriff mit gewähltem Klartext. Dabei sammelt der Angreifer rund 247 Klar-/Geheimtext Paare verschlüsselt mit dem gesuchten Schlüssel. Die Klartexte werden in Paaren angeordnet wobei Differenz (XOR) eine Konstante sein soll: die korrespondierenden Differenzen in den Geheimtexten werden dann verwendet, um Informationen zum Schlüssel zu erhalten. Offensichtlich war diese Methode bereits den Entwicklern von DES bekannt, welche die S-Boxen darauf ausgerichtet haben. ab 1990 erste Angriffe mit Hilfe linearer Kryptoanalyse, zum ersten Mal verwendet von Mitsuru Matsui, welcher in etwa 50 Stunden einen DES-Schlüssel finden konnte. Dabei wird mit Hilfe bekannter Klar-/Geheimtext Paare, bei denen der Klartext frei gewählt wird, statistische Information über den Schlüssel gewonnen. 1997 DES-Challenge mit tausenden von Rechnern während rund vier Monaten. Dies ist ein Angriff, der die kurze Schlüssellänge ausnutzt! 71 4 Symmetrische Kryptographie Six ways to break DES (http://lasecwww.epfl.ch/memo_des.shtml) beschreibt die Angriffe: vollständige Schlüsselsuche, mit spezieller DES-Hardware, mit einer grossen Anzahl Computer (http://distributed.net), mit Hilfe von Time-Memory tradeoff, mit differentieller Kryptanalyse und mit linearer Kryptanalyse. Das z.B. in Win2k eingesetzte DESX verwendet vor und nach der eigentlichen Verschlüsselung durch DES (mit dem üblichen 56 Bit Schlüssel) eine XOR-Verknüpfung mit je einem 64-BitSchlüssel. 4.1.3 Blowfish Blowfish ist eine DES-ähnliche BlockChiffre mit 16-Runden, die auf 64-bit Blöcken arbeitet und Schlüssellängen von 32 bis 448 Bit erlaubt. Es handelt sich dabei um ein Feistelnetzwerk. Jede Runde besteht • aus einer Schlüsselabhängigen Permutation und • aus einer Schlüssel und Datenabhängigen Substition Als Operationen werden Addition und XOR-Verknüpfung von 32-Bit Wörtern verwendet. Daneben werden Tablelookups (insgesamt 4) auf 32-Bit Operanden gemacht. Die Rundenschlüssel werden vor der Ver- bzw. Entschlüsselung berechnet. Blowfish benötigt etwa 5 KByte RAM und benötigt auf einem 32-Bit Microcontroller lediglich 26 Clockzyklen pro Byte (und ist damit wesentlich schneller als DES). Da die Schlüssel-Expansionsphase sehr aufwändig ist, sollte die Chiffre nicht eingesetzt werden, wenn der Schlüssel sehr oft gewechselt wird: für den Einsatz in Kommunkationslinks und zur Verschlüsselung von grossen Datenmengen (mit dem selben Schlüssel) ist der Algorithmus aber sehr schnell und deshalb sehr gut geeignet. 72 4 Symmetrische Kryptographie siehe Wobst, Abb. 5.24, p252! Gruppenarbeit! 73 4 Symmetrische Kryptographie 4.1.4 IDEA An der ETHZ entwickelt und von ASCOM patentiert: verwendet einen 128-Bit Schlüssel. Verwendet die folgenden Operationen um Konfusion und Diffusion zu erreichen: • XOR. • Addition modulo 216 . • Multiplikation modulo 216 + 1 (entspricht den S-Boxen). 4.1.5 RC2 RC steht für Rivest-Code, d.h. Verschlüsselungsalgorithmus von Ronald Rivest (einer der Entwickler von RSA). 4.1.6 RC5 RC5 ist ein Fistel-Netzwerk von 16 Runden, wobei L = ((L ⊕ R) <<< R) ⊕ Ki und x <<< y eine Linksrotation von x um die Anzahl Bits spezifiziert durch LSB(y) darstellt. Schliesslich ist Ki der Schlüssel in der Runde i. Die Erzeugung dieser Rundenschlüssel wird hier nicht spezifiert: sie kann z.B. in Abenteuer Kryptographie von Reinhard Wobst abgeschrieben werden. Falls die Zeit für die Rotation abhängig ist von der Anzahl Bits um die verschoben wird, dann ist RC5 anfällig auf timing attacken. RC5 ist sehr einfach und parametrisierbar (bezüglich Schlüssellänge und Anzahl Runden), ist aber resistent gegen bekannt linear und differentielle Angriffe. 4.1.7 RC6 RC6 war einer der fünf Finalisten im Wettbewerb um den AES. Er ist ein modifiziertes Feistelnetzwerk mit typischerweise 20 Runden. Der Algorithmus lässt sich sehr einfach wie folgt beschreiben: • Aus dem b-Byte Schlüssel k werden 2(r + 2) Teilschlüssel S0 , S1 , . . . , S2r+3 zu 32 Bit erzeugt (Details weiter unten). • Der 128-Bit Klartextblock wird in vier 32-Bit Blöcke A, B, C und D zerlegt. 74 4 Symmetrische Kryptographie Abbildung 4.6: IDEA (International Data Encryption Algorithm). • Setze B = B + S0 D = D + S1 75 4 Symmetrische Kryptographie • In der i-ten Runde (i = 1, 2, . . . , r) wurd gesetzt: t u A C (A, B, C, D) = = = = = (B(2B + 1)) <<< 5 (D(2D + 1)) <<< 5 ((A ⊕ t) <<< u) + S2i ((C ⊕ u) <<< t) + S2i+1 (B, C, D, A) Das letzte ist eine zyklische Vertauschung der vier Wörter. Dabei bezeichnet A <<< B die Linksrotation von A um B Bits. Multiplikationen und Additionen werden modulo 2 32 ausgeführt. • Nach der letzten Runde setzt man A = A + S2r+2 C = C + S2r+3 • Die Schlüsselgenerierung ist analog zu RC5. 4.1.8 Twofish Twofish war einer der fünf Finalisten im Wettbewerb um den AES. Er verwendet ein Feistelnetzwerk mit 16 Runden und es kommen Withening (von DESX), schlüsselabhängige S-Boxen (wie bei Blowfish), MDS-Matrizen (von Square), pseudo Hadamard Transformationen (wie bei Safer) und feste Relationen zum Einsatz. Es wird bereits in verschiedenen Produkten eingesetzt (gnupg, kryptographische Filesysteme, etc.) Es handelt sich um eine 128-Bit Blockchiffre mit variabler Schlüssellänge bis zu 256 Bit. • 128-Bit Blöcke • 128-, 192-, or 256-Bit Schlüssel • 16 Runden • Arbeitet in allen Standard Betriebsmoden. • Verschlüsselt Daten in 18 Clockzyklen pro Byte auf einem Pentium und in 16.1 Clockzyklen pro Byte auf einen Pentium Pro. • Effizientes Aufsetzten des Schlüssels auf grossen Mikroprozessoeren. • Effizient in Harndware (Smart Cards) • Ausführlich kryptoanalytisch analisiert. 76 4 Symmetrische Kryptographie • Nicht Patentiert • Nicht geschützt durch Copyright • Frei Weitere Information im http://www.counterpane.com/twofish.pdf. Gruppenarbeit! 77 4 Symmetrische Kryptographie 4.1.9 AES Der Advanced Encryption Standard (AES) sollte als Ablösung von DES folgende Anforderungen erfüllen: • Blockgrösse von 128 Bit • Schlüssellängen von 128, 192 und 256 Bit • Mindestens so schnell wie 3DES. Nachdem anfänglich 15 Kandidaten im Spiel waren wurden nach einer ersten Runde noch 5 näher analysiert. Schliesslich wurde Rijndeal im Oktober 2000 als AES ausgewählt. Bei AES handelt es sich um ein SP-Netzwerk (Substitution/Permutation) mit 10, 12 bzw. 16 Runden. siehe http://www.cryptolabs.org/aes/WeisLucksAESattacksDS1202.html und Wobst, p230. Gruppenarbeit! Es gibt erfolgreiche Angriffe auf 6-Runden AES mit der KomplexitÃd’t 2 32 im erforderlichen Speicherplatz und 263 in der benÃűtigten Zeit. VollstÃd’ndiges AES verwendet 10, 12 oder 14 Runden abhÃd’ngig von der SchlÃijssellÃd’nge und der BlockgrÃűsse: es gibt keine bekannte Angriffe auf diesen Typ. Bruce Schneier erwartet einen erfolgreichen Angriff auf 10-Runden AES innerhalb der Lebensdauer (30 Jahre) von AES! 78 4 Symmetrische Kryptographie 4.1.10 Weitere Block-Chiffren Lucifer, FEAL, LOKI, GOST, CAST, SAFER, etc. Dass eine schlechte Wahl von Passphrasen problematisch ist zeigt auch das in Blowfish eingebaute Verfahren, zu kurze Passphrasen einfach zu wiederholen: wählt also jemand das Passwort asdfasdf und verschlüsselt irgend einen Text, so kann er diesen mit dem Passwort asdf entschlüsseln. 4.1.11 Vergleich verschiedener Block-Chiffren Algorithm DES 3DES IDEA FEAL-32 Blowfish AES Twofish Square RC5-32/16 CAST-128 Serpent SAFER (S)K-128 Key Length Width (bits) Rounds Cycles 56 64 16 8 112 64 48 24 128 64 8 8 64, 128 64 32 16 variable 64 16 8 128, 192, 256 128 12-16 ... variable 128 16 8 128 128 8 8 variable 64 32 16 128 64 16 8 128, 192, 256 128 32 32 128 64 8 8 Clocks/Byte 43 116 74 65 19.8 ... 18.1 20.3 24.8 29.5 45 52 Tabelle 4.7: Vergleich versch. Block-Chiffren (siehe http://www.schneier.com/twofish-performance.html) 4.1.12 Design von Block-Chiffren Shannon hat vor über 50 Jahren als erster die Prinzipien Konfusion (Verwirrung) und Diffusion (Ausbreitung) beschrieben: sie bilden auch heute noch die Eckpfeiler guter Block-Chiffren. Konfusion wird verwendet, um irgend welche Beziehungen zwischen Klartext, Geheimtext und Schlüssel zu verschleiern. Denn lineare, wie auch differentielle Kryptoanalyse fördern jede noch so kleine Beziehung dieser Teile zu Tage. Gute Konfusion verunmöglicht auch die Benutzung von statistischen Methoden! Diffusion verteilt den Einfluss eines bestimmten Klartext- oder Schlüssel-Bits auf möglichst viele Bits im Geheimtext! Dadurch werden statistische Beziehungen verschleiert was die Kryptoanalyse erheblich erschwert. 79 4 Symmetrische Kryptographie Block-Chiffren mischen abwechslungsweise Konfusion mit Diffusion. Man spricht deshalb auch von einem Substitutions-Permutations-Netzwerk oder einem SP-Netzwerk. Verschlüsselungsalgorithmen dieser Art werden Produkt-Chiffren genannt. Wie bereits früher erwähnt sind Block-Chiffren meistens Feistel-Netzwerke: dies vor allem wegen der Einfachheit und Effizienz. 4.1.13 Betriebsmoden von Block-Chiffren Die eben beschriebenen Block-Chiffren definieren, wie ein einzelner Block von beispielsweise 64 oder 128 Bit verschlüsselt. Daten beliebiger Länge werden verschlüsselt, indem man diese in Blöcke der eben beschriebenen Grösse zerlegt und allenfalls den letzten, nicht vollständig gefüllten Block speziell behandelt. Die einzelnen Blöcke könnten nun einfach mit der Block-Chiffre verschlüsselt werden: man spricht dann vom ECB-Modus (engl: Electronic CodeBook mode). Dies ist aber nicht die einzige Möglichkeit mehrere Blöcke zu verschlüsseln - wie die folgenden Paragraphen zeigen. ECB: Electronic CodeBook Der ECB-Modus realisiert die naive Benutzung einer BlockChiffre. Dabei wird jeder Block xi einer Folge (x1 x2 · · · ) von Klartext-Blöcken mit dem selben Schlüssel k verschlüsselt: yi = Ek (xi ), (i = 1, 2, . . .). Analog wird auf der Empfängerseite (auf der rechten Seite der Abb. 4.7) mittels der folgende Vorschrift entschlüsselt: xi = Dk (yi ), (i = 1, 2, . . .). Beim ECB-Modus werden gleiche Klartext-Blöcke auf die selben Geheimtext-Blöcke abgebildet. Dadurch spiegeln sich die Eigenschaften des Klartextes im Geheimtext wieder. Es wird deshalb nicht empfohlen den ECB-Modus zu verwenden, wenn mehr als ein Block verschlüsselt werden soll. Die Sicherheit kann allenfalls ein wenig erhöht werden, wenn am Schluss eines jeden Klartext-Blockes einige Zufalls-Bits eingefügt werden. Die Verarbeitung kann beim ECB-Modus parallelisiert werden. Infolge Auffüllen (engl: padding) des letzten nicht vollständigen Blockes ist der Geheimtext maximal um einen Block länger als der Klartext. Ein Fehler im Geheimtext beeinflusst nur den entsprechenden Block des Klartexts. Synchronisationsfehler können nicht korrigiert werden: man schickt einfach den entsprechenden Block nochmals. Der ECB-Modus eignet sich zum Verschlüsseln von Schlüsseln. 80 4 Symmetrische Kryptographie x1 Ek (·) y1 Dk (·) x1 x2 Ek (·) y2 Dk (·) x2 Dk (·) xi .. . xi Ek (·) yi .. . Abbildung 4.7: ECB-Modus. CBC: Cipher Block Chaining Im CBC-Modus wird jeder Klartext-Block xi vor dem Verschlüsseln mit dem vorherigen Geheimtext-Block yi−1 XOR-verknüpft. Für den ersten Klartextblock wird ein Initialisierungsvektor y0 = IV verwendet: y0 = IV yi = Ek (yi−1 ⊕ xi ), (i = 1, 2, . . .). (4.5) Entschlüsselt wird nach folgendem Rezept: y0 = IV xi = Dk (yi ) ⊕ yi−1 , (i = 1, 2, . . .). Dass die letzte rechte Seite tatsächlich xi liefert, folgt erstens wegen Dk (yi ) = yi−1 ⊕ xi , was nur die Umkehrung der Gleichung (4.5) ist, und zweitens wegen Dk (yi ) ⊕ yi−1 = (yi−1 ⊕ xi ) ⊕ yi−1 = xi . Beim CBC-Modus werden die Eigenschaften des Klartexts durch die XOR-Verknüpfung mit dem vorangehenden Geheimtext (bzw. dem Initialisierungsvektor) verwischt. Es lassen sich 81 4 Symmetrische Kryptographie y0 = IV y0 = IV x1 Ek (·) y1 Dk (·) x1 x2 Ek (·) y2 Dk (·) x2 .. . yi−1 xi Ek (·) yi yi−1 Dk (·) xi Abbildung 4.8: CBC-Modus. mehrere Meldungen mit dem selben Schlüssel verschlüsseln. Dabei sollten aber unbedingt unterschiedliche IVs verwendet werden und die Integrität derselben sollte geeignet sichergestellt werden. Paralleles Verarbeiten der Blöcke beim Ver- und Entschlüsseln ist nicht möglich was einen entsprechenden Einfluss auf die Geschwindigkeit des Verfahrens hat. Ein Fehler im Geheimtext beeinflusst einen ganzen Klartext-Block und das entsprechende Zeichen im nächsten Block. Fehler in der Synchronisation können nicht korrigiert werden. Obwohl sich das Verfahren nach Bit-Fehlern selber erholt, ist dies für fehlende Bits nicht möglich: hier müssen übergeordnete Protokolle eingreifen. Wird der Geheimtext-Block y i fehlerhaft, die nachfolgenden Blöcke yi+1 und yi+2 aber korrekt übertragen, dann kann yi+2 korrekt zu xi+2 entschlüsselt werden. Man spricht in diesem Fall von einem Selbst-Synchronisation oder Ciphertext Autokey! CFB: Cipher FeedBack Während im CBC-Modus jeweils ein Block, d.h. n-Bits (typischerweise 64 oder 128 Bit) verarbeitet werden, verlangen verschiedene Applikationen ohne Verzögerung r < n Bits (oft r = 1 oder r = 8). In diesem Fall wird der Cipher FeedBack Mode (CFB) Modus mit r < n verwendet. Bevor wir diesen Fall genauer analysieren, wollen wir uns mit Fall r = n befassen. Hier sollen also bei jedem Schritt ebenfalls n Bit, d.h. ein Block berechnet werden. 82 4 Symmetrische Kryptographie Mathematisch ausgedrückt heisst dies: y0 = IV yi = xi ⊕ Ek (yi−1 ), (i = 1, 2, . . .), Dabei darf der Initialisierungsvektor IV öffentlich bekannt sein. y0 = IV y0 = IV Ek (·) Ek (·) x1 y1 Ek (·) x2 Ek (·) y2 yi−1 .. . Ek (·) xi x1 x2 yi−1 Ek (·) yi xi .. . Abbildung 4.9: CFB-Modus. Wie beim CBC-Modus führt ein anderer IV bei identischem Klartext zu unterschiedlichem Geheimtext! Beispiel 4.3. Wie lautet die Entschlüsselungsfunktion? 83 4 Symmetrische Kryptographie Fehlerlose Entschlüsselung eines korrekten Geheimtext Blockes verlangt, dass die vorangehenden dn/re Geheimtext Blöcke ebenfalls fehlerfrei sind. Der CFB- ist wie der CBC-Modus selbst-synchronisierend, wobei er aber zur Erholung dn/re Geheimtext-Blöcke braucht. Der Durchsatz (gegenüber dem CBC-Modus) wird ebenfalls um den Faktor dn/re vermindert, da jede Ausführung von E lediglich r-Bit Geheimtext produziert. CFB wird wegen der genannten Eigenschaften oft in der Kommunikation mit Satelliten verwendet. Hier kommt der Hinweis auf den r < n-Feedback Modus ... 84 4 Symmetrische Kryptographie OFB: Output FeedBack Mode Wie auch im CFB-Modus wird hier ein Schlüsselstrom generiert, welcher dann mit dem Klartext XOR-verknüpft wird: somit operiert der CFB-Modus wie eine Strom-Chiffre. Der Output FeedBack (OFB) Modus operiert wie eine synchrone Strom-Chiffre: der Schlüsselstrom wird produziert, indem der Initialisierungsvektor z 0 = IV wiederholt mit der Block-Chiffre E(·, k) unter Verwendung des Schlüssels k verschlüsselt wird. Daraus entsteht der Schlüsselstrom (z1 z2 . . .), wobei die folgende Rekursionsvorschrift gilt: z0 = IV zi = Ek (zi−1 ), (i = 1, 2, . . .), yi = xi ⊕ zi , (i = 1, 2, . . .), Aus der Folge der Klartextblöcke (x1 x2 . . .) entsteht durch XOR-Verknüpfung mit den Schlüsselstromblöcken (z1 z2 . . .) die Folge der Geheimtextblöcke (y1 y2 . . .). Zum Entschlüsseln wird die selbe Folge von Schlüsselstromblöcken erzeugt und mit den Geheimtextblöcken XOR-verknüpft, detailliert: z0 = IV zi = Ek (zi−1 ), (i = 1, 2, . . .), xi = yi ⊕ zi , (i = 1, 2, . . .), Beispiel 4.4. Im OFB Modus wird eine Folge von Blöcken (z 0 , z1 , . . .) mit dem Klartext via XOR verknüpft. Dabei werden die Blöcke z i rekursiv aus dem Initialisierungsvektor IV berechnet. Dies ist in gewissen Fällen nicht erwünscht! Man kann die Folge (z0 , z1 , . . .) direkt berechnen, wenn die zk aus einer Folge von direkt berechenbaren Blöcken besteht. Falls die ik beispielsweise Blöcke sind, welche fortlaufenden Zahlen entsprechen, so kann man mittels zk = Ek (ik ) die obige Folge direkt (also ohne Rekursion) berechnen. Man hat also xi = yi ⊕ Ek (ik ), (i = 1, 2, . . .). Man nennt diesen Modus einer Block-Chiffre Counter-Mode. Er hat auch den Vorteil, dass man Meldungen nicht auf ganze Blockgrössen auffüllen muss: im letzten (Teil-) Block werden einfach nur die jenigen Zeichen des Klartextes XOR-verknüpft (und übertragen), die tatsächlich vorhanden sind! Beispiel 4.5. Wie behandelt man im OFB-Modus allenfalls vorhandene Teilblöcke am Ende einer Meldung? Lösung: man braucht keine besondere Behandlung, da man auch einfach einzelne Bits via XOR verknüpfen kann. Zudem bewirkt der Übertragungfehler eines einzelnen Bits innerhalb eines Blocks lediglich ein einzelnes Bit des selben Blocks. 85 4 Symmetrische Kryptographie z0 = IV z0 = IV Ek (·) Ek (·) x1 y1 Ek (·) x2 x1 Ek (·) y2 z2 zi−1 x2 z2 .. . Ek (·) zi−1 Ek (·) yi xi zi xi zi .. . Abbildung 4.10: OFB-Modus. Sowohl vom OFB- wie auch vom CFB-Modus existieren verschiedene Varianten, die k-Bit Feedback Moden genannt werden (1 ≤ k ≤ n wobei n typischerweise 64 oder 128 Bit ist). Bis hierhin wurde nur der volle Feedback-Modus erklärt. 1-Bit und 8-Bit Feedbackmodus werden oft in der Praxis verwendet wenn es darum geht, einen Strom von Blöcken eben dieser Längen (1 oder 8) zu erzeugen! Aus Gründen der Sicherheit sollte aber OFB mit vollem n-Bit Feedback betrieben werden. Im ECB- und OFB-Modus bewirkt die Änderung eines Klartext Blocks x i eine Änderung des korrespondierenden Geheimtext Blocks: andere Geheimtext Blöcke werden nicht verändert! Dies ist ein Vorteil, wenn der Kommunikationskanal nicht sehr zuverlässig ist. Deshalb wird 86 4 Symmetrische Kryptographie OFB-Modus oft verwendet, um die Satelliten-Kommunikation zu verschlüsseln. Padding Ist der letzte Block nur teilweise gefüllt, wird oft an das Ende des Klartextes ein spezielles Zeichen gesetzt und danach mit Zufallsbits aufgefüllt. Siehe auch Cipher-Block stealing! 87 4 Symmetrische Kryptographie 4.1.14 Vor- und Nachteile der verschiedenen Moden 88 4 Symmetrische Kryptographie 4.1.15 Anwendung von Block-Chiffren Hashfunktion 89 4 Symmetrische Kryptographie Abbildung 4.11: Strom-Chiffre. 4.2 Strom-Chiffren Die erste Methode kann die speziellen Eigenschaften der Hardware (z.B. 64-Bit Computer) besser ausnutzen und ist deshalb meistens effizienter. Strom-Chiffren verarbeiten einen Klartext Zeichen für Zeichen, wobei ein Zeichen (oder Wort) typischerweise ein oder 8 Bit aber auch mal 32 Bit sein kann. Während bei einer Block-Chiffre im ECB-Mode eine bestimmter Klartext-Block immer auf denselben Geheimtext-Block abgebildet wird (bei gleichem Schlüssel), wird bei der StromChiffre ein bestimmtes Wort innerhalb eines Klartextes normalerweise immer auf ein unterschiedliches Geheimtext-Wort abgebildet. Je nach Modus in dem ein Blockverfahren betrieben wird ist das Verschlüsselungsverfahren tolerant gegenüber Fehlern bei der Übertragung. Die einfachste Strom-Chiffre verschlüsselt ein Bit nach dem anderen indem die entsprechenden Bits mit den Bits aus einem Schlüsselstromgenerator modulo 2 addiert werden (XOR). Der Klartext-Strom (p1 , p2 , . . .) wird zum Schlüsselstrom (k1 , k2 , . . .) modulo 2 addiert (XOR): ci = p i ⊕ k i Daraus entsteht der Geheimtext-Strom (c1 , c2 , . . .). Entschlüsseln kann man dank der Eigenschaft pi ⊕ ki ⊕ ki = pi von XOR mittels pi = c i ⊕ k i Dieses Verfahren ist absolut sicher, falls der Schlüsselstrom ein echte Folge von Zufallsbits ist. Typischerweise verwendet man aber einen Pseudo-Zufallsgenerator mit einem geeigneten Initialisierungsvektor (sprich Schlüssel). 90 4 Symmetrische Kryptographie Beispiel 4.6. Nehmen wir an Eve gelange in den Besitz von zwei Geheimtexten, die mit demselben Schlüsselstrom chiffriert wurden. Dann kann sie die bieden Geheimtexte XOR verknüpfen und erhält die XOR-Verknüpfung der zugehörigen Klartexte. Daraus lassen sich die beiden Klartexte relativ einfach berechnen (z.B. known-plaintext Angriff). Damit lässt sich dann auch der Schlüsselstrom wieder mit einer XOR-Verknüpfung berechnen. Führen sie dieses Verfahren an zwei Klartexten mit 10 Zeichen durch! Ein Schlüsselstrom-Generator besteht im Wesentlichen aus drei Teilen: Der Innerer Zustand beschreibt in welchem Zustand sich der Generator befindet Die Output-Funktion produziert aus dem inneren Zustand ein Output-Bit. Die Next-State Funktion berechnet aus dem aktuellen inneren Zustand einen neuen. Beispiel 4.7. Bei einer selbstsyncronisierenden Strom-Chiffre ist jedes Schlüsselstrom-Bit eine Funktion von n (n ∈ IN) vorangehenden Geheimtext-Bits. Zu Beginn einer Übetragung sendet man n zufällige Bits zur Syncronisation. Danach sind die beiden Schlüsselstrom Generatoren in demselben inneren Zustand (natürlich nur wenn derselbe Schlüssel K verwendet wird). Ein Nachteil ist die Fehlerausbreitung: jedes auf dem Übertragungsweg veränderte Bit führt dazu, dass der Entschlüsselungsgenerator (rechts) für die nächsten n Bit aus dem Takt fällt und erst danach wieder korrekt entschlüsselte Bits liefert. Eine weitere Gefahr bilden replay-attacken wo Mallory einen Text auffängt, speichert und später wieder in eine Kommunikation einfügt: auf diese Weise könnte er eine Bank-Transaktion mehrere Male durchführen! Abhilfe schaffen Timestamps! Beispiel 4.8. Bei synchronen Strom-Chiffren ist der Schlüsselstrom unabhängig vom Klar- oder Geheimtextstrom. Dieses Verfahren funktioniert so lang, wie die beiden Schlüsselstrom Generatoren synchron (im Takt) laufen. Andererseits muss neu synchronisiert werden wobei darauf geachtet werden muss, dass kein Teil des Schlüsselstroms wiederholt wird! Damit der insertion-attack nicht erfolgreich ist, dürfen Meldungen nie mit demselben Schlüsselstrom chiffriert werden: Details siehe BSchnyer, AC, p203! 91 4 Symmetrische Kryptographie Während Block-Chiffren jeweils eine fixe Transformation auf einen mehr oder weniger grossen Datenblock anwenden, verarbeiten Strom-Chiffren einzelne Bits mit einer zeitabhängigen Transformation. Strom-Chiffren sind mathematisch leichter zu analysieren und wurden/werden vor allem vom Militär und in kommerziellen kryptographischen Produkten eingesetzt. Blockverfahren nutzen die moderne Mikroelektronik wesentlich besser aus als Stromchiffren: man denke z.B. an Parallelverarbeitung! Auch in Software lassen sich Blockchiffren einfache implementieren, da dort üblicherweise mit Bytes oder Worten (statt mit Bits) gearbeitet wird! Beispiel 4.9. Beim Insertion Attack geht man davon aus, dass zwei bis auf ein eingefügtes Bit identische Klartexte mit dem selben Schlüsselstrom verschlüsselt werden. Der Angreifer Mallory ist im Besitz des Geheimtextes (y 1 , y2 , y3 , . . .) der aus dem ihm unbekannten Klartext (x1 , x2 , x3 , . . .) mittels des ihm ebenfalls unbekannten Schlüsselstroms (z 1 , z2 , z3 , . . .) wie folgt berechnet wurde yi = z i ⊕ x i , (i = 1, 2, 3, . . .) (4.6) Wie bereits gesagt, kann Mallory veranlassen, dass der Klartext (x 1 , x0 , x2 , x3 , . . .) ebenfalls mit dem selben Schlüsselstrom verschlüsselt wird. Mallory kennt lediglich das Bit x 0 . Dies genügt ihm um den gesamten Klartext nach diesem Bit zu entschlüsseln. Wie das möglich ist, zeigen die folgenden Zeilen. Mallory fängt den Geheimtext der zweiten Nachricht ab, d.h. (y 1 , y20 , y30 , . . .) und weiss damit y20 = z2 ⊕ x0 yi0 = zi ⊕ xi−1 (i = 3, 4, . . .) Aus der ersten Gleichung folgt z2 = y20 ⊕ x0 und weiter wegen Gleichung (4.6) sofort x 2 = z2 ⊕ y2 . Analog findet man mittels zi = yi0 ⊕ xi−1 xi = z i ⊕ y i wobei i = 3, 4, . . .. Dieser Angriff kann verhindert werden, wenn für jede Nachricht ein anderer Schlüsselstrom verwendet wird. 4.2.1 RC4 RC4 wurde 1987 entwickelt und war sieben Jahre geheim. RC4 ist eine speziell für Software Implementationen optimierte Stromchiffre mit 8-Bit Output, die einen 2048-Bit Schlüssel verwendet. Als interner Schlüssel werden zwei Bytes i und j, sowie eine Permutation (P i )i=0,...,255 der Zahlen 0, . . . , 255 verwendet. Die Grösse des Schlüsselraumes beträgt damit 2 1700 = 2562 256!. 92 4 Symmetrische Kryptographie RC4 wurde 1994 reverse engineered und anonym in der Cypherpunks Mailing Liste veröffentlicht und kurz darauf in sci.crypt in Usenet gepostet: natürlich sehr zum Ärger des Autors. Da RC4 weiterhin ein Handelsname blieb, wurde als Acronym Arcfour verwendet. RC4 ist eine der schnellsten Stromchiffren und wird in verschiedensten Kryptographischen Produkten, wie beispielsweise WEP und SSL eingesetzt. while (length--) { x++; sx = state[x]; y += sx; sy = state[y]; state[y] = sx; state[x] = sy; *data++ ^= state[(sx+sy) & 0xFF ]; } RC4 ist im Wesentlichen ein PRNG, welcher durch einen Schlüssel von typischerweise 40256 Bit initialisiert wird. Der so erzeugt Schlüsselstrom wird dann mit dem Klartext XORverknüpft. Der daraus entstehende Geheimtext wird zum Entschlüsseln ebenfalls wieder mit dem gleichen Schlüsselstrom XOR-verknüpft. Der RC4 Algorithmus besteht aus einer Initialisierungsphase, welche mit Hilfe des Schlüssels K[i], i = 0, 1, . . . , k (bestehend aus k Bytes) die Permutation S[i], i = 0, 1, . . . , N bestimmt: for i = 0 ... 255 S[i] = i j = 0 for i = 0 ... 255 j = (j + S[i] + K[i mod k]) mod 256 swap (S[i],S[j]) Nach dieser Initialisierung kann der Schlüsselstrom byteweise wie folgt berechnet werden: i = 0 j = 0 loop until the entire message is encrypted/decrypted i = (i + 1) mod 256 j = (j + S[i]) mod 256 swap(S[i],S[j]) y = S[(S[i] + S[j]) mod 256] output the XOR of k with the next byte of input Wegen seiner Einfachheit und Schnelligkeit ist RC4 sehr beliebt. Er ist auch ideal für Implementationen in Software. Es werden lediglich Bytes manipuliert und es genügt, neben dem Schlüssel K, der l Bytes lang sein möge, eine Permutation der Zahlen {0, 1, . . . , 255} in S[0], S[1], . . . , S[255] zu speichern, sowie noch einige Ganzzahl Variablen wie i, j und k. 93 4 Symmetrische Kryptographie Kryptoanalyse hat gezeigt, dass man die ersten 256 Bytes des Schlüsselstromes aus Sicherheitsgründen nicht verwenden sollte (siehe Angriff von Fluhrer, Martin and Shamir). Die (öffentliche) Kryptoanalyse von RC4 sagt lediglich, dass mit riesigen bekannten Klar- und Geheimtexten (im Bereich von Gigabytes) Probleme auftreten können. Bekannt ist der Angriff von Fluhrer, Martin and Shamir (2001) welcher die Statistik der ersten Bytes des Schlüsselstromes verwendet: diese sind überhaupt nicht zufällig! Dies führt dazu, dass der RC4-Schlüssel berechnet werden kann, falls man nur genügend viel Geheimtexte hat, welche mit diesem Schlüssel verschlüsselt wurden. Dadurch und dank weiteren Schwächen ist es gelungen WEP (engl: wired equivalent privacy) Verschlüsselung, verwendet in IEEE 802.11 drahtlosen Netzwerken zu knacken! Dies führte schliesslich zu IEEE 802.11i. Wie alle Stromchiffren ist natürlich auch RC4 gebrochen, falls der selbe Schlüssel zweimal verwendet wird. Dieses Problem wird meist umgangen, indem man den Schlüssel bei jedem Gebrauch mit einem eindeutigen Initialisierungsvektor (IV) hasht und den IV zusammen mit der Meldung verschickt. (siehe http://en.wikipedia.org/wiki/RC4_cipher). 94 4 Symmetrische Kryptographie [1] 95 Literaturverzeichnis [1] J. F. Bürgler, R. E. Bank, W. Fichtner, and R. K. Smith. A New Discretization Scheme for the Semiconductor Current Continuity Equations. IEEE Trans. CAD, 8(5):479–89, 1989. 96 Kryptologie (Version 20041224) Josef F. Bürgler 24. Dezember 2004 Inhaltsverzeichnis 5 Public-Key Kryptographie 5.1 Einleitung . . . . . . . . . . . . . . . . . . . . 5.2 RSA-Codes . . . . . . . . . . . . . . . . . . . 5.2.1 Gefahren bei der Verwendung von RSA 5.3 Diffie-Hellman . . . . . . . . . . . . . . . . . 5.4 ElGamal . . . . . . . . . . . . . . . . . . . . . 5.5 Das Knapsack-Verfahren . . . . . . . . . . . . 5.6 Algorithmen für digitale Signaturen . . . . . . 5.6.1 Zusatz ... . . . . . . . . . . . . . . . . Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 95 97 99 101 104 106 107 108 109 ii 5 Public-Key Kryptographie 5.1 Einleitung Kryptographie soll helfen, die folgenden grundlegenden Probleme der Datenverarbeitung zu lösen: Geheimhaltung: schützt Daten vor dem Zugriff durch Unbefugte. Authentizität: ermöglicht zu entscheiden, ob eine Nachricht echt ist, d.h. der Absender kann eindeutig festgestellt werden. Gerade beim der Zugriffskontrolle, beim Kauf oder Börsenhandel über’s Internet ist Authentizität genau so wichtig wie Geheimhaltung. Integrität: verhindert, dass beispielsweise Meldungen auf ihrem Weg verändert werden können. Sie verhindert auch, dass Daten unbemerkt verändert werden können. Nicht Abstreitbarkeit: stellt sicher, dass beispielsweise der Absender einer Nachricht nicht abstreiten kann, dass er die Nachricht geschickt hat. Während in der Vergangenheit vor allem das erste Problem (Geheimhaltung) mit Hilfe der Privat-Key Verschlüsselung gelöst wurde, löst die Public-Key Kryptographie, welche wir in diesem Kapitel behandeln, die oben aufgeführten, restlichen Probleme. Die weltweite Vernetzung bringt es mit sich, dass immer wieder neue Fragestellung auftreten: • Es sollte so etwas wie eine elektronische Unterschrift geben. • Es sollten keine Kuriere nötig sein, um Schüssel sicher auszutauschen: Schlüsselverwaltung sollte vereinfacht werden. • Man sollte im Internet auch anonym miteinander kommunizieren können. Historische gesehen, hat man sich erst in den Siebzigern mit nonsecret-key Kryptographie zu beschäftigen begonnen. Wie zu erwarten war, untersuchten Geheimdienste diese Möglichkeit der Verschlüsselung rund zehn Jahre früher. 1971: Geheimdienste erfinden die nonsecret-key Kryptographie (was allerdings erst in den 90er Jahren bekannt wird). 1974: Merkle Puzzle. 95 5 Public-Key Kryptographie 1976: Schlüsselaustausch nach Diffie und Hellman. 1977: Rivest, Shamir und Adleman erfinden RSA. 1990-er: ab diesem Zeitpunkt werden public-key Verfahren vermehrt in der Kommunikation, vor allem via Internet eingesetzt. Die folgenden Abschnitte setzen Kenntnisse der mathematischen Grundlagen voraus. Euler-Theorem: Falls ggT(a, n) = 1 dann gilt: aφ(n) = 1 mod n Kleiner Fermat: Ist p eine Primzahl und ggT(a, p) = 1, dann gilt: ap−1 = 1 mod p Modulare Exponentiation: wird mit dem square and multiply effizient berechnet. Chinesischer Restesatz: ermöglicht das Lösen linearer Kongruenzen. Faktorisieren: grosser, zusammengesetzter Zahlen ist ein Problem, für dessen Lösung kein polynomial zeitbeschränkter Algorithmus bekannt ist. Die Umkehrung, Multiplikation grosser Zahlen ist dagegen mit quadratischer Zeitkomplexität berechenbar. x und sie lassen sich durch Tests mit einer bestimmPrimzahlen: hat es sehr viele (π(n) ≈ ln(x) ten Wahrscheinlichkeit identifizieren. Asymetrische Verfahren, wie man public-key Verfahren auch nennt, können auch mittels ganz simpler Verstellungsmodelle visulisiert werden: • In einen Briefkasten kann jedermann Meldungen reinwerfen, aber nur der Besitzer des Briefkastens kann die Meldungen lesen, da nur er im Besitz des richtigen Schlüssels ist, um den Briefkasten zu öffnen! • Eine Meldung lässt sich dank Shamir’s no-key protocol sicher von Alice zu Bob transferieren, ohne dass die beiden vorher irgend welche Schlüssel austauschen: 1. Alice verschliesst den Koffer mit ihrem Schloss A und schickt ihn Bob. Niemand kann beim Transport den Koffer öffnen, da nur Alice im Besitz des passenden Schlüssels ist. 2. Bob verschliesst den Koffer nun seinerseits mit dem Schloss A und schickt ihn Alice. Auf dem Weg zu Alice ist der Koffer diesmal mit zwei Schlössern gesichert. 3. Alice entfernt nun ihr Schloss A und schickt den Koffer nochmals an Bob. Auch auf dieser Reise ist der Koffer vor unbefugtem Zugriff sicher, denn er ist noch durch das Schloss B von Bob gesichert. 96 5 Public-Key Kryptographie 4. Bob braucht nun nur noch sein Schloss B zu entfernen um den Inhalt des Koffers zu betrachten. Es ist klar, dass dieses Protokoll nicht gegen Angriffe von Eve gefeiht ist: sie kann sich nämlich in die Mitte setzen und einen man-in-the-middle Angriff fahren. • public-key Kryptographie ist im wahrsten Sinne des Wortes auch die Verteilung von offenen Schlössern an all jene, die mit Alice kommunizieren wollen: falls jemand, z.B. Bob, etwas an Alice senden will, verschliesst er den Koffer mit dem Schloss. Da nur Alice den passenden Schlüssel besitzt, kann nur sie den Koffer öffnen. In den oben beschriebenen Fällen hat man es immer mit einer Einweg-Funktion mit Falltür zu tun! Überlegen sie sich in den jeweiligen Fällen, was die Einweg-Funktion, und was die Falltür ist! In den folgenden Abschnitten werden verschiedene public-key Verfahren behandelt. Dabei wird aber keineswegs Vollständigkeit angestrebt! 5.2 RSA-Codes Seien p und q zwei grosse Primzahlen (mind. 100 Stellen, besser ca. 150 Stellen). Dann wird n = pq sowie φ(n) = (p − 1)(q − 1) berechnet und eine zu φ(n) teilerfremde Zahl e bestimmt, d.h. es muss gelten: ggT(e, φ(n)) = 1. Weiter nehmen wir an, dass der Klartext in Binärform vorliege, welche allenfalls in Blöcke M k zerlegt sei, so dass 0 ≤ Mk < n gilt. Die Verschlüsselungsfunktion E liefert den zum Klartext-Block m gehörige Geheimtext-Block c und ist wie folgt definiert: E(m) = c = me (mod n) (5.1) Beispiel 5.1. Dieses Beispiel zeigt, wie man den Klartext STOP zuerst in zwei Blöcke von Zahlen M1 = 1819 und M2 = 1415 abbildet, wobei wir die üblicherweise verwendete Abbildungsvorschrift A 7→ 1, B 7→ 2, usw. verwendet haben. Danach wählen wir zwei Primzahlen p = 43 und q = 59, berechnen n = p q = 43 · 59 = 2537 φ(n) = (p − 1)(q − 1) = 42 · 58 = 2436 und wählen ein zu φ(n) teilerfremdes e = 13. Die Kontrolle zeigt: ggT(e, φ(n)) = ggT(13, 2436) = 1 97 5 Public-Key Kryptographie Anschliessend berechnen wir die Verschlüsselten Blöcke E(m1 ) = 181913 mod 2537 = 2081 = c1 E(m2 ) = 141513 mod 2537 = 2182 = c2 Die verschlüsselte Meldung lautet also 2081 2182. Gibt man das Tupel (n, e) bekannt, bezeichnet es also als öffentlichen Schlüssel, dann kann jeder die oben beschrieben Verschlüsselung durchführen. Nun zeigen wir, das die Entschlüsselung nur möglich ist, wenn man n faktorisieren kann. Dies ist aber nach dem heutigen Stand der Forschung ein äusserst schwieriges Problem, für welches keine effiziente Lösung angegeben werden kann. Also ist die oben beschriebene Verschlüsselungsfunktion eine Einwegfunktion 1 Falls die Funktion mit einer (geheimen) Zusatzinformation ohne Probleme umgekehrt werden kann, dann spricht man von einer Einwegfunktion mit Falltür (engl: one-way trapdoor function). Kennt man die Faktoren p und q von n, dann kann man mit Hilfe des Euklidischen Algorithmus die Zahl d bestimmen, so dass gilt: d e ≡ 1 (mod φ(n)). Dies ist möglich, weil wir oben e teilerfremd zu φ(n) gewählt haben, d.h. ggT(g, φ(n)) = 1! Es gibt dann eine Zahl k ∈ ∠Z so, dass gilt: d e = 1 + k(p − 1)(q − 1). Damit hat man nacheinander cd ≡ = = = = (me mod n)d mod n mde mod n m1+kφ(n) mod n m (mφ(n) )k mod n m mod n wobei wir im letzten Schritt den Fermat’schen Satz mφ(n) ≡ 1 (modn) verwendet haben, welcher angewendet werden darf, da (sicherlich für m < n mit grosser Wahrscheinlichkeit) ggT(m, φ(n)) = 1 zutrifft. Die Entschlüsselungsfunktion D ist also definiert durch: D(c) = m = cd (mod n) (5.2) Beispiel 5.2. Setzen wir das Zahlenbeispiel von oben fort, dann finden wir mit d = 937 sofort: D(c1 ) = 2081937 mod 2537 = 1819 = m1 D(c2 ) = 2182937 mod 2537 = 1415 = m2 Für die effiziente Berechnung verwendet man schnelle modulare Exponentiation! 1 Eine Funktion, die man ohne grossen Aufwand berechnen kann, deren Umkehrung aber praktisch nicht möglich ist, heisst Einwegfunktion. 98 5 Public-Key Kryptographie 5.2.1 Gefahren bei der Verwendung von RSA Die unbedachte Verwendung von RSA birgt folgende Gefahren: Nicht teilerfremde Moduln n1 und n2 die man sehr schnell mit dem Euklidischen Algorithmus feststellt, ermöglichen eine sehr einfache Faktorisierung. Diese Gefahr steigt zwar mit wachsender Anzahl öffentlicher Schlüssel: die Wahrscheinlichkeit eines solchen Zufalles ist aber sehr klein, denn die Anzahl Primzahlen π(N ) kleiner als N strebt für grosse N gegen N/ ln(N )N . Beispiel 5.3. Wie viele Primzahlen liegen etwa zwischen 2 1024 und 21025 ? Vergleichen Sie das Resultat mit der Anzahl Primzahlen zwischen 1 und 2 1024 ! Lösung: Man hat rund 21024 21025 − 1025 ln(2 ) ln(21024 ) 21025 21024 − 1025 ln(2) 1024 ln(2) 21024 2 1 = − ln(2) 1025 1024 21024 ≈ ln(21024 ) ≈ 2.5 10305 = Die letzte Zahl ist gleich der Anzahl Primzahlen kleiner als 2 1024 ≈ 1.8 10308 . Diese Zahl ist ungeheuer gross: das gesamte (bis jetzt bekannte) Universum hat bei weitem nicht so viele Atome oder sogar Elementarteilchen! Obwohl also nicht teilerfremde Moduln theoretisch kein Problem sind, erzeugen schlechte Zufallsgeneratoren evt. immer die selben Moduln: es ist deshalb sehr wichtig, kryptographisch sichere Zufallsgeneratoren zu verwenden! Angriff mit ausgewähltem Geheimtext Bei einem Angriff mit ausgewähltem Geheimtext (chosen ciphertext attack) schiebt Eve (von Eavesdropper oder Lauscher) Alice einen speziell gewählten Geheimtext unter und bittet um dessen Verschlüsselung, beispielsweise im Rahmen einer digitalen Signatur. Nehmen wir an, Eve hat den chiffrierten Sitzungsschlüssel m abgehört, den Bob in der Form c = me mod n an Alice schickte. Eve verschlüsselt dann eine zu n teilerfremde Zahl r (wäre dies nicht der Fall, wüsste Eve einen Faktor von n und wäre ohnehin am Ziel) und multipliziert das Resultat mit c, d.h. sie berechnet 99 5 Public-Key Kryptographie y = cr e mod n und versucht Alice dazu zu bringen, dieses y zu dechiffrieren, indem sie beispielsweise um eine digitale Signatur von y bittet. Falls Alice darauf einsteigt, berechnet sie y d = cd r ed mod n = m r mod n woraus Eve mit dem erweiterten Euklidischen Algorithmus sofort m berechnen kann. Damit ist sie im Besitz des Sitzungsschlüsseln zwischen Alice und Bob! Kleine Werte von e sparen zwar Rechenzeit bei der Verschlüsselung (Warum?), sie sind aber gefährlich, denn es genügen e Benutzer welche paarweise unterschiedliche Moduln verwenden, welche die selbe Nachricht m verschlüsseln. Ein Angreifer kann aus diesen e verschlüsselten Nachrichten die Nachricht m berechnen. Man entgegnet dieser Gefahr, indem man die Nachricht mit zufälligen Bits stört oder eben nicht kleine e wählt wie e = 3 sondern grössere, wie das häufig verwendete e = 21 6 + 1. Beispiel 5.4. Beweisen Sie die obige Behauptung! Lösung: Man hat dann e Gleichungen der Form ck ≡ me mod nk , k = 1, 2, . . . , e. (5.3) Dieses System von Gleichungen kann man mit Hilfe des chinesischen Restesatzes lösen (insbesondere, falls die nk paarweise teilerfremd sind! Dies ist mit grosser Wahrscheinlichkeit der Fall (wie gross ist die Wahrscheinlichkeit?). Ein gemeinsamer Modul n , welcher nur bei zentraler Erzeugung der Schlüssel möglich ist, kann erfolgreich angegriffen werden. Beispiel 5.5. Sei m der Klartext und e1 und e2 zwei Schlüssel zum Verschlüsseln sowie n der gemeinsame Modul. Dann sind die beiden verschlüsselten Texte: c1 = me1 mod n c2 = me2 mod n Der Angreifer kennt also n, e1 , e2 , c1 und c2 . Da e1 und e2 teilerfremd sind kann man mit Hilfe des erweiterten Euklidischen Algorithmus die Zahlen r und s in re1 + se2 = 1 wobei wir annehmen, dass r < 0 ist. Dann kann wiederum der erweiterte Euklidische Algorithmus verwendet werden um c−1 1 zu berechnen. Dann gilt: −r s · c2 = m mod n c−1 1 100 5 Public-Key Kryptographie Abbildung 5.1: Zeitliche Entwicklung der Faktorisierung grosser Zahlen. Das Protokoll PKCS#1 (Version unter 1.5) ermöglichte einen Angriff mit adaptiv ausgewähltem Klartext: zwischen 300’000 und 2’000’000 Geheimtexte sollten genügen! Vereiteln wird dieser Angriff in der zweiten Version von PKCS#1. Ändern des privaten Schlüssels Durch Hard- oder Softwarefehler kann die Berechnung von p und q ermöglicht werden. Dies kann man mit Hilfe entsprechender Prüfsummen verhindern. Privater Schlüssel entwenden Irgend wann stehen auch ansonsten durch ein symmetrisches Verfahren geschützte private Schlüssel im Klartext im Speicher eines Computers. Diese kann man problemlos finden: denn 1024 oder 2048 Bit echte Zufallsbits fallen im Speicher auf! Faktorisierung grosser Zahlen Heute ist es mit riesigem Rechenaufwand möglich, Zahlen von rund 160 bis 170 Stellen zu faktorisieren. Die Abb. 5.1 zeigt die zeitliche Entwicklung der Faktorisierung grosser Zahlen. 5.3 Diffie-Hellman Man wählt eine (mehrere hundert Stellen) grosse Primzahl p und eine Erzeugende a ∈ ∠Z?p der (zyklischen) multiplikativen Gruppe ∠Z?p , · . Beide Zahlen p und a sind öffentlich, d.h. jede(r) darf sie kennen! 101 5 Public-Key Kryptographie Beispiel 5.6. Sei p = 13. Wir wählen a = 2 und erhalten sofort: Dabei wurde immer modulo p n an 1 2 2 4 3 4 8 3 5 6 7 6 12 11 8 9 9 5 10 11 12 10 7 1 gerechnet! Nun denkt sich Alice eine Zahl xA , die mit Hilfe eines Zufallsgenerators erzeugt wird und geheim sein soll. Daraus berechnet sie die öffentliche Zahl k A ≡ a xA (mod p) . Damit Bob mit Alice kommunizieren kann, wählt auch er eine geheime, rein zufällige Zahl x B und berechnet seinerseits eine weitere öffentliche Zahl k B ≡ a xB (mod p) . Anschliessend berechnet Bob die Zahl xB kAB ≡ kA (mod p) und verwendet diese als Schlüssel in einem symmetrischen Verfahren, um mit Alice Nachrichten auf sichere Art und Weise auszutauschen, d.h. ohne dass diese Nachrichten von Dritten eingesehen werden können. Wir wollen nun zeigen, dass auch Alice exakt diesen Schlüssel berechenen kann, ohne dass irgend welche Informationen öffentlich gemacht werden müssen, die zum Knacken dieses Schlüssels kAB führen könnten. Alice nimmt die von Bob erhaltene öffentliche Zahl kB , berechnet xA kBA ≡ kB (mod p) und verwendet diese Zahl als Schlüssel zum Entschlüsseln der Nachrichten, die sie von Bob erhalten hat. Wir zeigen in den folgenden Schritten, dass kBA = kBA gilt, denn man hat nacheinander: 102 5 Public-Key Kryptographie kBA ≡ ≡ ≡ ≡ ≡ ≡ ≡ ≡ ≡ xA kB (mod p) xB (a mod p)xA (mod p) (axB )xA (mod p) axB xA (mod p) axA xB (mod p) (axA )xB (mod p) (axA mod p)xB (mod p) xB kA (mod p) kAB Damit ist gezeigt, dass sowohl Alice wie auch Bob den selben geheimen Schlüssel k = k AB = kBA berechnen können, ohne dass dabei irgend welche Informationen ausgetauscht werden, die zum Knacken dieses Schlüssels verwendet werden können! Ein Aussenstehender kann die Nachricht nur dann mitlesen, wenn er aus k A ≡ a xA k B ≡ a xB (mod p) (mod p) oder entweder xA oder xB berechenen kann. Wenn man kA und kB diskrete Potenzen von a nennt, dann ist z.B. xA der diskrete Logarithmus von kA zur Basis a. Das Problem der Berechnung des diskreten Logarithmus besteht darin, die Gleichung y ≡ ax (mod p) nach x aufzulösen, wobei p, a und y als bekannt vorausgesetzt werden. Bis heute kennt man keine schnelle d.h. zeitlich polynomial beschränkte Lösung für dieses Problem! Die meisten Mathematiker vermuten, dass auch in Zukunft keine schnelle Lösung gefunden wird, da gar keine solche existiert! Beispiel 5.7. Alice und Bob vereinbaren p = 13 und a = 2. Dann wählt Alice x A = 8 und berechnet k A ≡ a xA (mod p) ≡ 28 (mod 13) ≡ 9 (mod 13) und schickt kA = 9 dem Kommunikationspartner Bob. Dieser wählt x B = 3, berechnet kB ≡ a xB (mod p) ≡ 23 (mod 13) ≡ 8 (mod 13) (mod p) ≡ 88 (mod 13) ≡ 1 (mod 13) (mod p) ≡ 93 (mod 13) ≡ 8 (mod 13) und schickt Alice kB = 8. Daraus berechnet Alice xA kBA ≡ kB Analog berechnet Bob aus kA = 9 kAB xB ≡ kA Wie man sieht gilt: kBA = kAB ! Diesen gemeinsamen Schlüssel nutzen nun Alice und Bob, um mittels eines symmetrischen Verfahrens zu verschlüsseln. 103 5 Public-Key Kryptographie Diffie und Hellmann haben dieses System von öffentlichen Schlüsseln zu einem öffentlichen Verschlüsselungsverfahren weiterentwickelt welches auf einer Falltürfunktion basiert. Jeder Teilnehmer i des Systems verwendet einen allen Teilnehmern bekannten Chiffrier-Algorithmus Ci mit einer Falltürfunktion, welche im Wesentlichen aus dem Dechiffrier-Algorithmus D i besteht! Will ein Teilnehmer j eine vertrauliche Nachricht m an i schicken, verwendet er das öffentlich verfügbare Chiffrier-Verfahren Ci und verschlüsselt seine Meldung damit: y = Ci (m) Zum Entschlüsseln verwendet i nur das ihm bekannte Dechiffrier-Verfahren und erhält wegen Di ◦ Ci = 1: Di (y) = Di (Ci (m)) = (Di ◦ Ci )(m) = m Leider konnten Diffie und Hellmann keine solche Falltürfunktion angeben. Erst 1978 wurde eine solche von Ronald Rivest, Adi Shamir und Leonard Adleman entwickelt. Das von ihnen vorgeschlagene Verfahren wurde RSA-Code genannt. 5.4 ElGamal ElGamal ist ein patentfreier, asymmetrischer Algorithmus bei dem eine Primzahl p als Modul (N = 512, 1024, . . . Bit lang) und eine Erzeugende (Generator) g ∈ ∠Z ?p öffentlich vereinbart werden. Damit gewisse Angriffe keinen Erfolg haben soll (p − 1)/2 eine Primzahl sein. Nun wählt Alice eine Zahl x < p welche der private Schlüssel sein wird und gibt y = g x mod p (5.4) öffentlich bekannt: das Tripel (p, g, y) bildet den öffentlichen Schlüssel. Der geheime Schlüssel ist also der diskrete Logarithmus von y zur Basis g bezüglich des Moduls p. Unter den genannten Voraussetzungen gibt es (zur Zeit) keinen effizienten, d.h. polynomiale Zeit, Algorithmus zur Berechnung des diskreten Logarithmus. Zur Verschlüsselung einer Nachricht m ∈ ∠Z?p (die in Blöcke von N < p Bit zerlegt wird) wählt Bob eine zu p − 1 teilerfremde, geheime Zufallszahl k, welche er nebenbei bemerkt nach der folgenden Rechnung wieder vergessen kann: 104 5 Public-Key Kryptographie a = g k mod p, b = y k m mod p, (5.5) (5.6) Das Tupel (a, b) bildet die verschlüsselte Nachricht. Empfängt Alice die verschlüsselte Meldung (a, b), kann Sie die Gleichung ax m0 = b mod p (5.7) mit Hilfe des erweiterten Euklidischen Algorithmus nach m0 auflösen. Wegen der folgenden zulässigen Umformungen, a x m0 = = = = g kx m0 (wegen (5.5)) xk 0 g m y k m0 (wegen (5.4)) b mod p welche die Lösungsmenge nicht verändern, ist somit die Gleichung (5.7) äquivalent zur Gleichung b = y k m0 mod p, welche wegen der Eindeutigkeit der Lösung modulo p die selbe Lösung hat wie (5.6), womit gezeigt ist, dass m = m0 gilt! Dass der Geheimtext (a, b) doppelt so lang ist wie der Klartext m ist nicht relevant, da ElGamal nur zum Austausch von Sitzungsschlüsseln verwendet wird. Die Verschlüsselung nach ElGamal ist eng mit dem Schlüsselaustausch von Diffie-Hellmann verwandt und wird vor allem bei digitalen Signaturen eingesetzt. Beispiel 5.8. Zeige dass gilt: m = ap−1−a b mod p 105 5 Public-Key Kryptographie 5.5 Das Knapsack-Verfahren Dieses Verfahren, auch Untersummen-System genannt, wurde von Merkle und Hellman erfunden. Es basiert auf dem Untersummen-Problem welches mit Hilfe eines zylindrischen Behälters, welcher mit massiven Zylindern gleichen Durchmessers wie der Behälter, aber unterschiedlicher Höhe, gefüllt wird. Mathematisch bedeutet dies, dass man die Gleichung C = n X a i xi = ~ a·x ~ i=1 zu gegeben ~ a = (a1 , a2 , . . . , an ) ∈ INn und C ∈ IN nach x ~ = (x1 , x2 , . . . , xn ) ∈ ∠Zn2 auflöst. Beispiel 5.9. Ist ~a = (1, 2, 4, 8) und C = 13, dann findet man wegen 13 = 8 + 4 + 1 = 1 · 23 + 1 · 22 + 0 · 21 + 1 · 20 = 11012 sofort ~ x = (1, 1, 0, 1)! Das Untersummen-Problem kann einfach gelöst werden, falls die Komponenten des Vektors ~ a eine superincreasing Folge bilden, d.h. wenn gilt: ai > i−1 X al (i = 1, 2, . . . , n). l=1 In diesem Fall subtrahiert man jeweils das grösst mögliche ai von der (noch verbleibenden) Summe und setzt das entsprechende xi gleich Eins (andernfalls gleich Null, wenn diese Subtraktion nicht möglich ist). Auf diese Weise fährt man fort, bis die noch verbleibende Summe Null ist. Das Knapsack-Verfahren funktioniert wie folgt: Es wird eine Blockgrösse n abgemacht. Jeder Teilnehmer wählt dann eine superincreasing Folge von nP Zahlen bi (i = 1, 2, . . . , N ) und bildet damit den Vektor ~b. Weiter wählt er einen Modul m > ni=1 bi , eine zu m teilerfremde Zahl k (1 ≤ k ≤ m − 1), sowie eine Permutation Π der Zahlen (1, 2, . . . , n). Dies ergibt den privaten Schlüssel (Π, m, k, ~b). Der öffentliche Schlüssel ist der Vektor ~ a = (a1 , a2 , . . . , an ), wobei ai = k bΠ(i) mod m, (i = 1, 2, . . . , n). (5.8) Beim Verschlüsseln wird die Nachricht zuerst in Blöcke der Länge n-Bit zerlegt und dieser als Vektor p ~ = (p1 , p2 , . . . , pn ) ∈ ∠Zn2 dargestellt. Der Geheimtext ist dann c = p ~·~ a. 106 5 Public-Key Kryptographie Um den Klartext p aus dem Geheimtext c zu erhalten, multipliziert man diesen mit k −1 mod m. Man erhält d ≡ w −1 c ≡ k −1 n X pi ai ≡ i=1 n X pi k −1 ai ≡ i=1 n X pi bΠ(i) (modm) i=1 Pn da 0 ≤ d < m gilt d = i=1 pi bΠ(i) mod m und somit kann der Klartext p ~ erhalten werden, indem man das (leichte) Teilsummen-Problem für eine superincreasing Folge löst. Beispiel 5.10. Wir wählen N = 8, ~b = (11, 17, 31, 63, 129, 259, 523, 1103) den Modul m = 2137, die Zahl k = 1001 sowie die Permutation Π = (2, 3, 1, 6, 5, 8, 4, 7). Diese Informationen bilden (mit Ausnahme der allgemein bekannten Zahl N ) den privaten Schlüssel. Der öffentliche Schlüssel ergibt sich aus 5.8 zu ~ a = (2058, 1113, 326, 682, 909, 1411, 1090, 2095) Die entsprechenden Befehle in Maple lauten: b:=[11,17,31,63,129,259,523,1103]; seq(sum(b[l],l=1..k),k=1..8); m:=nextprime(2136); k:=1001; gcd(k,m); pi:=[2,3,1,6,5,8,4,7]; a:=[seq(k*b[pi[i]] mod m,i=1..8)]; p:=[1,1,0,1,1,0,0,0]; c:=sum(a[l]*p[l],l=1..8); igcdex(k,m,’s’,’t’); s; 649*1001 mod m; ks:=s; d:=ks*c mod m; d:=d-259; d:=d-129; d:=d-31; d:=d-17; p1:=[0,1,1,0,1,1,0,0]; seq(p1[pi[i]],i=1..8); 5.6 Algorithmen für digitale Signaturen Ein System für digitale Signaturen besteht aus den folgenden drei effizienten Algorithmen: 107 5 Public-Key Kryptographie Schlüsselerzeugung: jeder Teilnehmer erzeugt ein Paar von (Signatur-) Schlüsseln. Den privaten d verwendet er zum Signieren, den öffentlichen e können alle Benutzer verwenden, um zu überprüfen, ob die Signatur echt ist. Signieren: Eine Nachricht m, oder deren Hash h(m) wird signiert, d.h. sie wird mit dem privaten (Signatur-) Schlüssel verschlüsselt: S = E(h(m), d) Das signierte Dokument besteht aus der Meldung und der Signatur, d.h. (m, S). Verifizieren: Der Empfänger berechnet ebenfalls den Hash der Meldung h(m) und vergleicht diesen mit h0 (m) = D(S, e) dem Hashwert also, den man durch Entschlüsselung der Signatur erhält. Diese Entschlüsselung kann jeder durchführen: er muss nur im Besitz des öffentlichen Schlüssels des Absenders sein! Stimmen die beiden Hash-Werte überein kann nur der Inhaber des privaten (Signatur-) Schlüssels diese Signatur erstellt haben 5.6.1 Zusatz ... Man nennt eine public-key Verschlüsselung reversibel, falls D(E(m, k), k) = E(D(m, k), k) = m, 108 ∀m ∈ M = C . 5 Public-Key Kryptographie [1] 109 Literaturverzeichnis [1] J. F. Bürgler, R. E. Bank, W. Fichtner, and R. K. Smith. A New Discretization Scheme for the Semiconductor Current Continuity Equations. IEEE Trans. CAD, 8(5):479–89, 1989. 110 Kryptologie (Version 20050103) Josef F. Bürgler 3. Januar 2005 Inhaltsverzeichnis 6 Kryptographische Hilfsfunktionen 6.1 Hashfunktionen . . . . . . . . . . . . . . . 6.1.1 N-Hash . . . . . . . . . . . . . . . 6.1.2 MD4 . . . . . . . . . . . . . . . . 6.1.3 MD5 . . . . . . . . . . . . . . . . 6.1.4 MD2 . . . . . . . . . . . . . . . . 6.1.5 SHA-1 . . . . . . . . . . . . . . . 6.1.6 Weitere Hash-Funktionen . . . . . 6.1.7 Angriffe auf Hash-Funktionen . . . 6.2 Message Authentication Codes . . . . . . . 6.3 Zufalls- und Pseudozufallsgeneratoren . . . 6.3.1 Der linear kongruente Generator . . 6.3.2 Lineare Feedback Shift Register . . 6.3.3 Blum-Blum-Shub Zufallsgenerator 6.3.4 Statistische Tests . . . . . . . . . . 6.3.5 Weiter führende Links . . . . . . . 6.4 Einweg-Funktionen (mit Falltür) . . . . . . 6.4.1 Quadrieren . . . . . . . . . . . . . 6.4.2 Exponentiation modulo p . . . . . . 6.4.3 RSA Funktion . . . . . . . . . . . 6.4.4 Rabin Funktion . . . . . . . . . . . Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 109 109 110 111 113 113 114 116 118 120 121 121 122 123 124 124 124 125 125 125 126 ii 6 Kryptographische Hilfsfunktionen 6.1 Hashfunktionen Eine Hashfunktion h : A → B ist eine effizient berechenbare Funktion, für die |B| << |A| gilt. Beispiel 6.1. Falls A die Menge aller binären Strings endlicher aber beliebiger Länge ist und B die Mange aller 32-Bit Strings, und f eine Abbildung von A nach B, dann spricht man von einem 32-Bit Hash. Hashfunktion sollten keine Kollisionen aufweisen, d.h. es sollte keine Inputs x 6= y geben, mit h(x) = h(y). Die Hashfunktion ist kollisionsfrei, falls es keine Kollisionen gibt. Beispiel 6.2. Die Hashfunktion h : ({0, 1})? → {0, 1}(x1 , x2 , . . . , xn ) 7→ h(x1 , x2 , . . . , xn ) = x1 ⊕ x2 ⊕ . . . ⊕ xn ist (überhaupt) nicht kollisionsfrei. Warum? Eine gute Hashfunktion sollte folgende (Sicherheits-) Eigenschaften besitzen: Kollisionsresistenz: Es sollte also praktisch unmöglich sein, eine Kollision zu finden. Einweg-Eigenschaft: Es ist praktisch unmöglich, zu einem gegebenem Input x eine Kollision y zu finden, so dass h(x) = h(y). Man nennt diese Eigenschaft auch second preimage resistance. Preimage Resistance: Es ist praktisch unmöglich zu einem beliebigen y ∈ B ein x ∈ A zu finden mit y = h(x). Eine kollisionsresistente Hashfunktion ist erst recht eine Einweg-Hashfunktion. Den Beweis kann man sich einfach überlegen! 6.1.1 N-Hash Der N-Hash ist eine von NTT entwickelte Hash-Funktion, die an den Block-Cipher FEAL (1990) angelehnt ist. Sie erzeugt aus einer beliebig langen Nachricht einen 128-Bit Hash-Wert. Bert den Boer konnte relative einfach Kollisionen konstruieren. Bahim und Shamir verwendeten differentielle Kryptanalyse um den 6 Runden Fall zu brechen. Gemäss Bruce Schneier sollte diese Hash-Funktion nicht verwendet werden. 109 6 Kryptographische Hilfsfunktionen Abbildung 6.1: Übersicht von N-Hash. 6.1.2 MD4 Der MD4 message digest 4 ist eine von Rivest entwickelte 128-Bit Hashfunktion. Sie ist speziell für Intel-Prozessoren (little endian) optimiert und verwendet 3 Runden. Die beiden letzten wurden von Boer und Bosselaers erfolgreich angegriffen, die erste von Merkle. Ein gemeinsamer Angriff auf alle 3 Runden ist nicht bekannt, muss aber wegen den eben erwähnten Resultaten angenommen werden. 110 6 Kryptographische Hilfsfunktionen Abbildung 6.2: Eine Verarbeitungsstufe von N-Hash. 6.1.3 MD5 MD5 ist ein Verbesserung von MD4: arbeitet also auch auf 512-Bit Blöcken und erzeugt einen 128-Bit Hashwert. Es wurde aber eine vierte Runde dazugefügt um u.A. einen besseren Lawineneffekt zu erzielen. Abbildung 6.4 zeigt diese vier Runden, die jeweils auf die vier Teile A, B, C und D eines Blockes zugreifen. Leider ist MD5 nicht sehr kollisionsresistent womit eines der Designkriterien nicht erricht wurde. Damit auf 512-Bit Blöcken gearbeitet werden kann, muss die Nachricht vorbereitet zuerst vorbereitet werden. Dabei wird nach dem letzten Zeichen eine Eins angefügt und danach so viele Nullen, damit am Ende noch Platz frei bleibt für die 64-Bit Darstellung der Länge der Meldung 111 6 Kryptographische Hilfsfunktionen Abbildung 6.3: Die Funktion f innerhalb einer Verarbeitungsstufe von N-Hash. vor dem Padding. Abbildung 6.5 zeigt, wie eine einzelne Runde arbeitet. Erst kürzlich wurden in MD5 Kollisionen gefunden. Hier eine solche Kollision: echo d131dd02c5e6eec4693d9a0698aff95c2fcab58712467eab4004583eb8fb7f895\ 5ad340609f4b30283e488832571415a085125e8f7cdc99fd91dbdf280373c5bd8823e3\ 156348f5bae6dacd436c919c6dd53e2b487da03fd02396306d248cda0e99f33420f577\ ee8ce54b67080a80d1ec69821bcb6a8839396f9652b6ff72a70 > 1.asc echo d131dd02c5e6eec4693d9a0698aff95c2fcab50712467eab4004583eb8fb7f895\ 5ad340609f4b30283e4888325f1415a085125e8f7cdc99fd91dbd7280373c5bd8823e3\ 156348f5bae6dacd436c919c6dd53e23487da03fd02396306d248cda0e99f33420f577\ ee8ce54b67080280d1ec69821bcb6a8839396f965ab6ff72a70 > 2.asc xxd -r -p 1.asc > 1.bin xxd -r -p 2.asc > 2.bin cmp 1.bin 2.bin md5sum 1.bin 2.bin Obwohl die beiden Files 1.asc und 2.asc im 20. Byte verschieden sind, liefern sie beide 112 6 Kryptographische Hilfsfunktionen Abbildung 6.4: Die vier Runden von MD5. den selben MD5-Hash. 6.1.4 MD2 MD2 wurde wie auch MD5 von Ron Rivest entwickelt: beide werden im PEM (privace enhanced mail) Protokoll eingesetzt. Die Sicherheit von MD2 basiert auf einer Zufallspermutation von Bytes welche fix ist und auf den Stellen von π basiert. Es sind keine Schächen bekannt: der Algorithmus ist aber auch langsamer als die anderen Hash-Funktionen. 6.1.5 SHA-1 SHA-1 (Secure Hash Algorithm verbesserte Version) wird zusammen mit dem Digital Signature Standard (DSS) verwendet. Es handelt sich um einen 160-Bit Hash welcher auf 512-Bit Blöcken arbeitet. SHA-1 basiert auf MD4 und wurde vom NIST (National Institut for Standards and Technology) für die US-Regierung entworfen. Damit ähnelt SHA-1 auch MD5 (welches eine Verbesserung von MD4 darstellt), hat aber eine zusätzliche Runde mit einer ExpansionsTransformation und besserem Lawineneffekt. Wegen seiner Länge von 160 Bit ist SHA resitenter gegen Brute-Force Angriffe (auch Birthday Attacken) als die 128-Bit Varianten MDx! Diese Hash-funktion kann als sehr sicher bezeichnet werden und wird deshalb sehr häufig eingesetzt. 113 6 Kryptographische Hilfsfunktionen Abbildung 6.5: Eine Runde von MD5. 6.1.6 Weitere Hash-Funktionen Neben den oben vorgestellten Hash-Funktionen werden auch folgende verwendet: RIPEMD-160 basiert auf MD4 und berücksichtigt die Kenntnisse, welche man bei der Kryptoanalyse von MD4 und MD5 gewonnen hat. Es wird ein 160-Bit Hashwert erzeugt. Diese Hash-funktion ist sehr sicher und wird häufig verwendet. HAVAL erzeugt Hashwerte von 128 bis 256 Bit. Auf modularer Arithmetik basierende Hashfunktionen Dabei wird modulo M Arithmetik angewendet wobei M genügend gross und schwer zu faktorisieren sein soll. Dann wird z.B. bei MASH-1 die folgende Iteration verwendet: Hi = ((Hi−1 ⊕ yi ) ∨ A)2 modM a n ⊕ Hi−1 wobei A = 0xf 0 . . . 0, H0 = 0 (Initilisierungs Vektor), M = pq, ∨ bitweise inklusives OR, ⊕ bitweises exklusives OR und a n behalten der rechten n Bits vom m-Bit Resultat links. Auf symmetrischen Verfahren basiernde Hashfunktionen Davies-Meyer verwenden beispielsweise folgende Rekursionsformel: Hi = E(xi , Hi−1 ) ⊕ Hi−1 , 1 ≤ i ≤ t. 114 6 Kryptographische Hilfsfunktionen Abbildung 6.6: Arbeitsweise von SHA-1. wobei H0 = IV ein konstanter, vordefinierter Initialisierungsvektor ist, und E ( xi , ·) eine Verschlüsselungsfunktion mit dem Schlüssel xi . Die Abbildung 6.7 zeigt, wie diese Funktion realisiert werden kann. Auf public-key Verfahren basiernde Hashfunktionen Ist m die Nachricht, p eine Primzahl so kann man beispielsweise H(m) = me mod p, verwenden (Problem des diskreten Logarithmus). Alternativ kann man ein auf RSA basierendes Verfahren verwenden: hier ist n das Produkt von zwei grossen Primzahlen p und q und e ist teilerfremd zu φ(n). Dann wird der Hash der Nachricht m definiert durch H(m) = me mod n, 115 6 Kryptographische Hilfsfunktionen Hi−1 xi E(xi , ·) Hi Abbildung 6.7: Hashfunktion mit symmetrischer Verschlüsselung nach Davies-Meyer. Die Stärke liegt im Problem der Faktorisierung grosser Zahlen. Das Problem beider Algorithmen ist die Geschwindigkeit: sie sind (wegen der modularen Exponentiation) wesentlich langsamer als die vorher besprochenen Methoden. 6.1.7 Angriffe auf Hash-Funktionen Im Paper http://eprint.iacr.org/2004/199.pdf behaupten Wang etal. dass Kollisionen sowohl in MD5, HAVAL-128, RIPEMD wie auch in MD4 in wenigen Stunden auf einen PC berechnet werden kÃűnnen. Inbesondere finden die Autoren auf einem IBM P690 eine erste Kollisionen in MD5 nach einer Stunde und weitere Kollisionen nach wenigen Minuten. Hier ein Auszug aus der Mailingliste crypto: Eli Biham -- has collisions on 34 (out of 80) rounds of SHA-1, but can extend that to probably 46. Still nowhere near a break. Antoine Joux -- his team announced the collision on SHA-0 earlier this week. There is concentration on the so-called "IF" function in the first 20 rounds... f(a,b,c) = (a & b) ^ (~a & c). That is, the bits of a choose whether to pass the bits from b, or c, to the result. The technique (and Eli’s) depends on getting a "near collision" in the first block hashed, then using more near collisions to move the different bits around, finally using another near collision to converge after the fourth block hashed. This took 20 days on 160 Itanium processors. It was about 2^50 hash evaluations. Xiaoyun Wang was almost unintelligible. But the attack works with "any 116 6 Kryptographische Hilfsfunktionen initial values", which means that they can take any prefix, and produce collisions between two different suffixes. The can produce the first collision for a given initial value in less than an hour, and then can crank them out at about one every 5 minutes. It seems to be a straightforward differential cryptanalysis attack, so one wonders why no-one else came up with it. The attack on Haval takes about 64 tries. On MD4, about 4 tries. RIPE-MD, about 2 hours (but can improve it). SHA-0 about 2^40 (1000 times better than Joux). Xuejia Lai clarified that the paper on E-print has been updated with correct initial values. They were initially byte-reversed, which they blamed on Bruce Schneier. Beispiel 6.3. Ein praktisches Beispiel, ebenfalls aus der obigen Mailingliste: $ od -tx1 file1.bin 0000000 83 9c 7a 4d 7a 92 cb 56 78 a5 d5 b9 ee a5 0000020 3c 8a 74 de b3 66 c3 dc 20 a0 83 b6 9f 5d 0000040 b3 71 9d c6 98 91 e9 f9 5e 80 9f d7 e8 b2 0000060 31 8e dd 45 e5 1f e3 97 40 c2 13 f7 69 cf 0000100 $ od -tx1 file2.bin 0000000 83 9c 7a 4d 7a 92 cb d6 78 a5 d5 29 ee a5 0000020 3c 8a 74 de b3 66 c3 dc 20 a0 83 b6 9f 5d 0000040 b3 71 9d c6 98 91 e9 f9 5e 80 9f d7 e8 b2 0000060 31 8e dc 45 e5 1f e3 97 40 c2 13 f7 69 cf 0000100 $ cmp file1.bin file2.bin file1.bin file2.bin differ: char 8, line 1 $ openssl md4 file1.bin file2.bin MD4(file1.bin)= c6f3b3fe1f4833e0697340fb214fb9ea MD4(file2.bin)= c6f3b3fe1f4833e0697340fb214fb9ea a7 2a 3b b8 57 3b a6 a7 a7 2a 3b b8 57 3b a6 a7 117 6 Kryptographische Hilfsfunktionen 6.2 Message Authentication Codes Ein Message Authentication Code (MAC) wird beispielsweise verwendet um Nachrichten vor Veränderungen zu schützen. Auf diese Weise werden Nachrichten authentisiert, d.h. MACs sichern die Echtheit (Authentizität) von Nachrichten. Beispiel 6.4. MACs können Bank-Transaktionen vor Veränderung schützen oder Computerprogramme vor Viren, etc. Für eine Nachricht x wird ein nur den beiden Kommunikationspartnern bekannten Schlüssel k gewählt und damit der Authentifikationscode berechnet: a = MAC(x, k). (6.1) Zu jedem MAC gehört ein vom Schlüssel k abhängiger Test, welcher prüft, ob ein Authentifikationscode MAC(x, k) zu einer Nachricht x0 passt: Es gilt also Test(x , MAC(x, k)) = 0 ja, falls MAC(x, k) = MAC(x0 , k) nein, falls MAC(x, k) 6= MAC(x0 , k) Beispiel 6.5. Der einfachste Weg eine schlüsselabhängige Hashfunktion zu realiseren ist folgender: Man verschlüssele die Meldung mit einem Blockverfahren im CBC- oder CFB-Modus und verwende lediglich den letzen verschlüsselten Block nochmals im entsprechenden Modus verschlüsselt. Die Schwäche des Algorithmus liegt darin, dass der Angreifer aus dem MAC durch Entschlüsseln (in die umgekehrte Richtung, was er ja kann, weil er den Schlüssel kennt) und dank Differentieller Kryptoanalyse einen Text erzeugen kann, der den selben MAC erzeugt. Auf diese Art und Weise könnte der Empfänger also beispielsweise einen Vertrag verändern, ohne dass sich die Signatur ändert! Wie zeichnen sich gute MACs aus? Wir betrachten einige Beispiele: Beispiel 6.6. Sei p eine Primzahl, m = (m1 , m2 , . . . , mn ) ∈ (∠Zp )n eine Nachricht bestehend aus n Blöcken, und k = (k1 , k2 , . . . , kn ) ∈ (∠Zp )n ein Schlüssel. Dann definieren wir den MAC der Nachricht m durch: MAC(m) = n X mi ki mod p. i=1 Nimmt man beispielsweise p = 5, k = (2, 3, 4) so erhält man für m 1 = (1, 2, 3) MAC(m1 ) = (1, 2, 3) 118 6 Kryptographische Hilfsfunktionen Eine häufig verwendete Form ist der HMAC (Hash MAC) welcher für die Daten data wie folgt definiert ist: hash(key, hash(key, data)) Dadurch beeinflusst der Schlüssel sowohl den Anfang wie auch das Ende des Hashing-Prozesses. Für die Namensgebung verwendet man folgendes Schema: hash + key = HMAC-hash. Ist die Hashfunktion also MD5, wird der oben definierte HMAC mit HMAC-MD5 bezeichnet, verwendet man statt dessen SHA (oder SHA-1), so heisst der zugehörige HMAC analog HMAC-SHA (oder HMAC-SHA1)! 119 6 Kryptographische Hilfsfunktionen 6.3 Zufalls- und Pseudozufallsgeneratoren Kryptographische Algorithmen und Protokolle benötigen für verschiedene Aufgaben, wie beispielsweise zur Erzeugung einer Primzahl oder eines Sessionsschlüssels, eine gewisse Anzahl von Zufallsbits. Dabei muss gewährleistet sein, dass es sich um echte Zufallsbit handelt: die Folge von Zufallsbit muss also gewisse Eigenschaften erfüllen! Es scheint einleuchtend, dass physikalische Experimente wie die folgenden völlig zufällig sind, und deshalb als Quellen von echten Zufallsbits dienen können. Sie sind aber meist sehr aufwändig und teuer und können oft nicht in einem entsprechenden Gerät (wie einem Computer) untergebracht und zuverlässig betrieben werden. • Radioaktiver Zerfall. • Termisches Rauschen in Transistoren. • Lava-Lampen. • ... Aus diesen Gründen versucht man entsprechende Bit-Strings mit Hilfe von Software zu erzeugen: man spricht dann von Pseudo Zufalls-Bitstrings. Ein Zufallsgenerator mit Schlüsselraum K ist eine effizient berechenbare Abbildung von K auf die Menge der einseitig ∞-en Bitstrings. Wann ist ein Pseudo-Zufallsgenerator gut? Er soll folgende Eigenschaften aufweisen: • Es sollen ungefähr gleich viele Einsen wie Nullen auftreten! • Eine allfällige Periode soll sehr gross sein! • Alle 2k verschiedenen k-Tupel (für k bis zu einer bestimmten, festen Grenze) sollen etwa gleich oft auftreten. • Es soll unmöglich sein, aus einem mitgehörten Stück des Zufalls-Bitstrings die restlichen Bits vorauszusagen. Ein Pseudozufallsgenerator wird als kryptographisch sicher bezeichnet, wenn es keinen effizienten Algorithmus gibt, der bei beliebiger Wahl des Startzustandes die ausgegebene Folge von einer rein zufälligen Bitfolge mit einer Wahrscheinlichkeit (signifikant) grösser als 1/2 unterscheiden kann. ... Wir wollen nun einige Zufallsgeneratoren näher betrachten. 120 6 Kryptographische Hilfsfunktionen 6.3.1 Der linear kongruente Generator Der linear kongruente Generator xn = (axn−1 + b) mod m, n = 1, 2, . . . mit Konstanten a b ∈ ∠Z, m ∈ IN und dem seed (oder Schlüssel) x0 hat eine Periode, die nicht grösser als m sein kann: denn xn kann ja höchstens die m Werte zwischen 0 und m − 1 annehmen und wenn einer dieser Werte bereits angenommen wurde, ist eine Periode vorbei, da ab diesem Zeitpunkt wieder dieselben Werte angenommen werden! Werden a, b, m sorgfältig gewählt, erreicht man eine Periode von m (Beispielsweise muss b teilefremd zu m gewählt werden!). Da linear kongruente Generatoren voraussagbare Resultate liefern, können sie in der Kryptographie nicht eingesetzt werden! Auch quadratisch und kubisch kongruente Generatoren (wo die obige lineare Funktion durch eine quadratische oder kubische ersetzt wird) sind nicht sicher. Ja sogar jeder polynomial kongruente Generator kann gebrochen werden. In Simulationen (wo ebenfalls Pseudozufallszahlen mit bestimmten statistischen Eigenschaften benötigt werden) lassen sie sich aber problemlos einsetzen. 6.3.2 Lineare Feedback Shift Register Lineare Feedback Shift Register (LFSR) werden sowohl in Kryptographie wie auch in der Kodierungstheorie verwendet. Ein Feedback Shift Register besteht aus zwei Teilen: einem Shift Register und einer Feedback Funktion. Ein Shift-Register ist eine Folge von n Bits (man spricht dann von einem Shift-Register der Länge n) Beispiel 6.7. Aufbau eines LFSR. Die Feedback-Funktion! 121 6 Kryptographische Hilfsfunktionen Die Ausgabefolge eines LFSR ist vollständig durch die erstmalige Belegung der Register gegeben. Kennt man also eine Teilfolge der Länge 2n, so kann man mit Hilfe eines Gleichungssystem auf die Konstruktion des LFSR schliessen. Beispiel 6.8. Beispiel aus der Prüfung 5Ibb! Aus diesem Grunde sind LFSR ebensowenig als kryptographische Zufallsgeneratoren verwendbar wie die linear kongruenten Generatoren. Allerdings haben sie genügende statistische Eigenschaften, vorausgesetzt die Periode ist maximal. Die Periode kann ja maximal 2 n − 1 betragen, da ein LFSR der Länge n genau 2n − 1 nicht triviale Anfangszustände haben kann (der Nullzustand sei hier ausgeschlossen, da er nicht zu einer interessanten Ausgabefolge führt). Beispiel 6.9. Ein LFSR der Länge 8 hat eine maximale Periode von 2 8 −1 = 255. Jeder Anfangszustand taucht irgend wann in der Ausgabefolge auf. Der Ausganszustand bestimmt somit einen bestimmten Zeitpunkt in einer Ausgabefolge! Betrachtet man also das selbe LFSR mit verschiedenen Anfangszuständen, so liefern sie, bis auf eine zeitliche Verschiebung die selben Zahlenfolgen. Dadurch hat man ein Werkzeug in der Hand, um bespielsweise zwei Uhren sehr genau zu synchronisieren. Dies wird im GPS verwendet: dabei wird eine Quarzuhr im GPS-Empfänger mit den Atomuhren der GPS-Satelliten synchronisiert und erreicht dadurch eine Ganggenauigkeit, die der der Atomuhr gleicht! Erst durch Einführen von nicht linearen Einflüssen in der Rückkopplung können kryptographisch sichere FSR (Feedback Shift Register) hergestellt werden. Man kann aber auch drei LFSR kombinieren und einen einzigen Bitstrom generieren indem das dritte LFSR spezifiziert, ob das nächste Bit vom ersten oder vom zweiten LFSR übernommen wird. Bei einer 0 wird das nächste Bit vom ersten und bei einer 1 wird das nächste Bit vom zweiten LFSR verwendet. 6.3.3 Blum-Blum-Shub Zufallsgenerator 1982 haben Blum, Blum und Shub einen einfachen Zufallsgenerator vorgeschlagen, welcher auch x2 mod n-Generator genannt wird. Dazu wird n als Produkt zweier verschiedener Primzahlen gewählt, welche beide kongruent zu 3 modulo 4 sind. Der Anfangswert x 0 (engl. seed) kann irgend ein quadratisches Residuum modulo n sein (ausser Null), d.h. es gilt x 0 ≡ y 2 mod n (y 6= 0). Dann wird rekursiv eine Folge von Zufallszahlen berechnet: xi+1 = x2i mod n (i = 0, 1, ·) Daraus wird die Zufallsbitfolge (b0 , b1 , b2 , . . .) erzeugt, indem man das least significant bit von xi verwendet, d.h. bi = LSB(xi ). Dieses Schema erfullt alle (polynomiale Zeit) statistischen Tests, falls die Faktorisierung von n schwierig ist. Dann ist diese Zufallsbitfolge nicht unterscheidbar von einer Folge echter Zufallsbits. Leider ist die Berechnung nicht effizient! 122 6 Kryptographische Hilfsfunktionen 6.3.4 Statistische Tests In diesem Abschnitt sollen statistische Tests eingeführt werden, mit denen untersucht werden kann, ob eine Bitfolge mit einer gewissen Wahrscheinlichkeit zufällig ist. Dazu müssen wir zuerst einige Begriffe einführen. Eine Teilfolge von n Gliedern der Folge (s) = (s0 , s1 , s2 , . . .) ist definiert durch (s)n = (s0 , s1 , s2 , . . . , sn−1 ) . Man nennt die Folge (s) N -periodisch, falls si = si+N , ∀i ≥ 1. In diesem Fall ist die Folge periodisch. Die Periode ist das kleinste positive N , für welches die Folge (s) N -periodisch ist. Dann nennt man (s)N einen Zyklus der Folge (s). Ein ...Lauf... (engl. run) von (s) ist eine aufeinanderfolgende Menge von Einsen (oder Nullen), denen keine Eins (oder Null) vorausgeht oder folgt. Man nennt einen Lauf von Nullen auch Lücke und eine Lauf von Einsen Block. Für eine N -periodische Folge (s) definiert man die Autokorrelationsfolge durch ct N −1 1 X (2si − 1)(2si+t − 1), = N i=0 für 0 ≤ t ≤ N − 1. Sie ist ein Mass für die Ähnlichkeit der Folge (s) und der um t Positionen verschobenen Folge. Für eine Zufallsfolge mit Periode N wird erwartet, dass |N ·ct | ziemlich klein ist für 0 < t < N . Golomb (...) hat postuliert, dass eine N -periodische Zufallsfolge (s) folgende Eigenschaften haben muss: (1): Im Zyklus (s)N ist der Unterschied zwischen der Anzahl Einsen und Null höchstens Eins. (2): Im Zyklus (s)N haben wenigstens die Hälfte der Runs die Länge 1, wenigstens ein Viertel die Länge 2, wenigstens ein Achtel die Länge 3, etc. solange die Anzahl Runs Eins übersteigt. Zudem hat man für jede dieser Längen (etwa) gleich viele Lücken und Blöcke. (3): Die Autokorrelationsfolge nimmt nur die beiden Werte 1 (für t = 0) und K/N (für 1 ≤ t ≤ N − 1) an, wobei K ∈ ∠Z. Eine Binäre Folge, welche diese drei Eigenschaften (von Golomb) hat, heisst Pseudo-Noise Folge oder pn-Folge. In der Praxis treten pn-Folgen als Ausgaben von maximal-length LFSR (linear feedback shift registers) auf. Beispiel 6.10. Betrachte die 15-periodische Folge mit dem Zyklus (s)15 = (0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1) Man sieht sofort, dass die Anzahl Nullen gleich 7 und die Anzahl Einsen gleich 8 ist. Damit ist die erste Eigenschaft vorhanden. Weiter hat (s) 15 insgesamt 8 Runs, wovon 4 mit der Länge 1 (2 Lücken und 2 Blöcke), 2 mit der Länge 2 (1 Lücke und 1 Block), 1 mit der Länge 3 (1 Lücke) und 1 mit der Länge 4 (1 Block). Schliesslich nimmt die Autokorrelationsfolge die Werte 1 (für t = 0) und −1/15 (für 1 ≤ t ≤ 14) an. Somit ist (s) eine pn-Folge. 123 6 Kryptographische Hilfsfunktionen Beispiel 6.11. A5 ist der in GSM (Group Special Mobile) verwendete Stromchiffre. Obwohl die Deutschen wegen der Nähe zur damaligen Sovietunion ein starkes Verschlüsselungssystem für Handys wollten, wurden sie von anderen Ländern überstimmt und es kam das von Frankreich entworfene A5 zum Einsatz. Dieses besteht aus drei LFSR’s mit Registerlängen von 19, 22 und 23. Alle Feedback Polynome sind spärlich. Der Output ist das XOR dieser drei LFSR’s. A5 verwendet einen variablen Clockcontrol. Die grundlegenden Ideen hinter dem Design von A5 sind gut und es trotz allen statistischen Tests: seine einzige Schäche sind die kurzen Register, die eine brute-force Attacke sinnvoll erscheinen lassen. Es gibt Varianten von A5 (A5/2 und A5/3) die mit mehr und/oder längeren Registern und dichten FeedbackPolynomen arbeiten und als sicherer gelten: aber auch für diese gibt es bereits erfolgreiche Angriffe! Für weitere Informationen siehe http://www.infosecwest.com/cryptome/gsm-crack-bbk.pdf 6.3.5 Weiter führende Links Das Kapitel 6, Random Number Generation, von Peter Gutmann http://www.cryptoapps.com/ peter/06_random.pdf. Das Design Dokument von Yarrow http://www.counterpane.com/yarrow.html Die Link-Farm von David Wagner http://www.cs.berkeley.edu/ daw/rnd/index.html Der FIPS 186 Generator (siehe Appendix 3): http://csrc.nist.gov/publications/fips/fips186-2/fips186-2-change1.pdf Das pLab des Mathematik-Departements der Universität Salzburg beschäftigt sich mit der Theorie und Praxis der Erzeugung von Zufallszahlen: http://crypto.mat.sbg.ac.at/ 6.4 Einweg-Funktionen (mit Falltür) Obwohl in der kryptographie einige Funktionen eingesetzt werden, von denen man vermutet, dass es sich um Einweg-Funktionen handelt, ist der mathematische Beweis bisher noch nicht gelungen. Einige mögliche Einweg-Funktionen mit Falltür sind: 6.4.1 Quadrieren x 7→ y = x2 mod n 124 6 Kryptographische Hilfsfunktionen Eine Falltür hat man dann, wenn die Faktorisierung von n bekannt ist. Man wählt also n = p q als Produkt zweier sehr grosser Primzahlen p und q. Damit ist das Berechnen von Quadratwurzeln modulo n mindestens so schwierig, wie das Faktorisieren von n. Letzteres ist bis jetzt eines der Probleme, welches nicht in polynomial beschränkter Zeit gelöst werden kann! Beispiel 6.12. Lesen Sie den Abschnitt 3.5 (Computing square roots in ∠Z n ) im Handbook of App- lied Cryptography. Was ist die Komplezität dieses Problemes falls (a) n eine Primzahl ist, (b) n eine zusammengesetzte Zahl ist? Bemerkung: Man nennt a ∈ ∠Zn quadratisches Residuum modulo n oder Quadrat modulo n, falls ein x ∈ ∠Z∗n existiert, so dass gilt: x2 ≡ a mod n Die Menge aller quadratischen Residuen modulo n bezeichnet man mit Q n . Ist a kein quadratisches Residuum modulo n, so nennt man es quadratisches Nicht-Residuum modulo n. Die Menge aller quadratischen Nicht-Residuen bezeichnet man mit Qn . Beispiel 6.13. Sei n = 5. Wie lauten Q5 und Q5 ? Lösung: Man prüft leicht nach, dass gilt: Q5 = {1, 4} Q5 = {2, 3} Es ist klar, dass 0 ∈ / Q5 und 0 ∈ / Q5 ! 6.4.2 Exponentiation modulo p Sei p eine Primzahl und α eine Erzeugende von ∠Z∗p , dann ist die Funktion f : ∠Z∗p → ∠Z∗p definiert durch f (x) = αx mod p (nach heutigen Erkenntnissen) eine Einweg-Funktion. 6.4.3 RSA Funktion Seien p und q zwei verschiedene ungerade Primzahlen und n = pq. Sei e eine Zahl mit ggT (e, (p − 1)(q − 1)) = 1, dann ist die Funktion f : ∠Z → ∠Z definiert durch f (x) = xe mod n (nach heutigen Erkenntnissen) eine Einweg-Funktion. 6.4.4 Rabin Funktion Wie bei der RSA-Funktion wobei q und q noch kongruent zu 3 modulo 4 sein sollen und f (x) = x2 mod n gilt! 125 6 Kryptographische Hilfsfunktionen [1] 126 Literaturverzeichnis [1] J. F. Bürgler, R. E. Bank, W. Fichtner, and R. K. Smith. A New Discretization Scheme for the Semiconductor Current Continuity Equations. IEEE Trans. CAD, 8(5):479–89, 1989. 127 Kryptologie (Version 20050120) Josef F. Bürgler 21. Januar 2005 Inhaltsverzeichnis 7 Protokolle 7.1 Einführung . . . . . . . . . . . . . . . . . 7.2 Schlüssel-Austausch . . . . . . . . . . . . 7.2.1 Breitmaulfrosch-Protokoll . . . . . 7.3 Schlüssel-Management . . . . . . . . . . . 7.4 Zertifikate . . . . . . . . . . . . . . . . . . 7.5 Zertifizierungsinstanzen . . . . . . . . . . . 7.6 Schlüsselübermittlung . . . . . . . . . . . . 7.6.1 EKE . . . . . . . . . . . . . . . . . 7.7 Digitale Signaturen . . . . . . . . . . . . . 7.7.1 DSS . . . . . . . . . . . . . . . . . 7.7.2 ElGamal . . . . . . . . . . . . . . 7.7.3 RSA PKCS #1 . . . . . . . . . . . 7.8 Zero-Knowledge-Protokolle . . . . . . . . 7.8.1 Das Fiat-Shamir-Protokoll . . . . . 7.9 Commitment . . . . . . . . . . . . . . . . 7.10 Geteilte Geheimnisse . . . . . . . . . . . . 7.11 Durchschnittsgehalt und wer verdient mehr 7.12 Anonymes Senden und Empfangen . . . . . 7.12.1 E-Cash . . . . . . . . . . . . . . . 7.12.2 E-Voting . . . . . . . . . . . . . . 7.13 Authentifikation . . . . . . . . . . . . . . . 7.13.1 Einmalpasswörter . . . . . . . . . . 7.13.2 Authentifikation mit Chipkarten . . 7.13.3 Bezahlen mit Chipkarten . . . . . . 7.14 Blinde Signatur . . . . . . . . . . . . . . . 7.15 Elektronische Wahlen . . . . . . . . . . . . 7.16 Steganographie . . . . . . . . . . . . . . . 7.17 Angriffe auf Protokolle . . . . . . . . . . . Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 126 129 129 131 131 132 133 135 136 137 140 141 141 143 145 146 147 150 153 156 157 159 160 160 161 163 164 164 165 ii 7 Protokolle Die Kryptologie liefert die Grundlagen, um alltägliche Probleme wie die folgenden zu lösen: Vertraulichkeit oder Geheimhaltung hat zum Ziel, dass Unberechtigte Nachrichten oder Daten nicht lesen können! Integrität bedeutet, dass Unberechtigte Nachrichten nicht unbemerkt fälschen (Betrug, Sabotage) können! Authentifikation hat zum Ziel, dass nur Berechtigte Zugang zu bestimmten Computer Resource erhalten. Nichtabstreitbarkeit bedeutet, dass der Absender einer Nachricht nicht abstreiten kann, dass er sie abgeschickt hat (wichtig bei Verbindlichkeit, Wahlen, Bezahlungen, Unterschriften)! Anonymität bedeutet, dass nicht festgestellt werden kann, wer der Absender oder Empfänger einer Nachricht ist (wichtig z.B. bei Wahlen, etc.). 7.1 Einführung Sobald zwei oder mehrere Parteien eine Aufgabe lösen sollen, werden Protokolle verwendet: sie bestehen aus einer Folge von Aktionen (Schritten) auf die sich die Parteien geeinigt haben und welche eine nach der anderen ausgeführt werden müssen, um eine bestimmte Aufgabe zu erledigen. Protokolle sind durch folgende Eigenschaften charakterisiert: • Alle Beteiligten kennen jeden Schritt des Protokolls bereits im Voraus und sie erklären sich bereit diesen Schritten exakt zu folgen. • Das Protokoll muss eindeutig, unmissverständlich und vollständig sein, d.h. es darf beispielsweise keine Zweifelsfälle geben in denen sich die Parteien nicht deterministisch verhalten könn(t)en. • Das Protokoll gibt keine Informationen preis, die nicht durch das Protokoll spezifiziert sind. Ein Protokoll kann also nicht ausgenützt werden um an Informationen zu kommen, die nicht bereits das Protokoll offen legt. 126 7 Protokolle Alice Bob Carol Dave Eve Mallory Trent Walter Peggy Viktor Erste Beteiligte in allen Protokollen Zweiter Beteiligter in allen Protokollen Beteiligter in Protokollen mit drei oder mehr Parteien Beteiligter in Protokollen mit vier Parteien Lauscher (engl: eavesdropper) Bösartiger aktiver Angreifer Trusted arbitrator (Notar) Wird Alice und Bob in bestimmten Protokollen beschützen Prover Verfier Als Beteiligte verwendet man üblicherweise die folgenden Personen: Im Alltag laufen viele Prozesse nach Protokollen ab, obwohl dies nicht auf den ersten Blick offensichtlich ist: so kann man an einem Bankautomaten nur Geld abheben, wenn man im Besitz einer gültigen Kreditkarte ist, die PIN kennt und diese auch eingeben kann. Der gesamte Prozess des Geldabhebens ist protokolarisch geregelt. Auch in der Politik spricht man beispielsweise bei Staatsbesuchen von einem Protokoll: wer sich nicht daran hält, brüskiert beispielsweise den Gastgeber! Während ein Mensch sich automatisch an bestimmte Vorgehensweisen gewöhnt, ist eine Maschine oder Programm (also beispielsweise der Bankautomat) darauf angewiesen, dass ein Protokoll existiert, an welches sich das Programm halten kann. Zudem stehen sich Kommunikationspartner (seien dies nun Menschen oder Maschinen) im Internet meist nicht mehr physisch gegenüber, sie können sich also auch dann nicht gegenseitig vertrauen, wenn sie sich eigentlich sympatisch wären. Typischerweise unterscheidet man zwischen den folgenden drei Protokolltypen: 1. Vermittelte Protokolle arbitrated protocols bei dem ein Vermittler mitbeteiligt ist (bei Kerberos ist es beispeilsweise das key distribution center (KDC) beim Erwerb von Wohneigentum ist es beispielsweise der Notar). Dies führt natürlich zu Kosten, mehr Zeit und allenfalls zu einem Flaschenhals! 2. Adjudicated Protocolls ziehen einen Schiedsrichter als dritte Partei bei, welche beispielsweise bei Unklarheiten den weiteren Verlauf festlegt. Der Richter greift aber nur dann ein, falls sich die beiden Parteien nicht einigen können! 3. Self Enforcing Protocols setzen Fairness durch, ohne dass Dritte dafür sorgen: Mogelt ein Partei, dann bemerkt dies die andere und stoppt das Protokoll. Dies Art von Protokollen ist anzustreben, da sie wenig Overhead und Kosten verursacht und auch keine externe Hilfe benötigt. Beispiel 7.1. Normalerweise verhandeln Bob und Alice über den Inhalt eines Vertrags und unterschreiben ihn dann beide. 127 7 Protokolle Im Streitfall gehen Alice und Bob vor den Richter: dort zeigen beide Ihre Beweise. Auf Grund der Beweise fällt der Richter das Urteil, an welches sich dann beide Partein halten müssen! Grund-Bausteine für Protokolle sind: Kommunikation mittels symmetrischer Kryptographie Kommunikation mittels public-key Kryptographie sowie hybride Systeme (mit Session Keys). Einweg-Funktionen um beispielsweise Hash-Werte zu erzeugen oder um Einwegfunktionen mit Hilfe einer Falltür umkehrbar zu machen (Falltür Einweg-Funktion). Digitale Unterschriften die entweder symmetrische Kryptographie und einen Notar (Arbitrator), public-key Kryptorgraphie, Zeitstempel (engl: timestamps) und Einweg-Hashfunktionen verwenden, und nicht abstreitbar sein sollen. Digitale Unterschriften + Verschlüsselung mit Empfangsbestätigungen (Resend Attacken). Zufallsgeneratoren Typische Applikationen von Kryptographischen Programmen sind: • Schlüsselverteilung (public key infrastructure (PKI)) • Zertifikate (certificate authorities (CAs)) • Digitale Unterschriften • Schlüsselhinterlegung (engl: key escrow) • Electronic data interchange (EDI) Angriffe auf Protokolle umfassen Passive Angriffe können Lauschangriffe sein, die z.B. ciphertext-only-attacks umfassen. Der Angreifer greift dabei nicht ins Protokoll ein, sondern nutzt es lediglich aus, um an Informationen zu gelangen. Aktive Angriffe können umfassen: DoS-Attacken, Fälschen von Informationen, Replay-Attacken, Mogeln und Betrügen. 128 7 Protokolle 7.2 Schlüssel-Austausch Der Schlüssel-Austausch regelt, wie zwei oder mehr Parteien in den Besitz eines gemeinsamen geheimen Schlüssels gelangen, den sie für die spätere, sichere Kommunikation verwenden können. Natürlich muss vermieden werden, dass der Gegner in den Besitz des Schlüssels gelangt. Dazu kann man sowohl symmetrische wie auch asymmetrische Kryptographie verwenden. Das folgende Beispiel zeigt, wie das Problem mit Hilfe von symmetrischer Kryptographie erfolgt. 7.2.1 Breitmaulfrosch-Protokoll Dieses sehr einfache Protokoll verwendet symmetrische Kryptographie zusammen mit einem vertrauenswürdigen Server. Sowohl Alice wie auch Bob teilen jeweils einen geheimen Schlüssel mit Trent (Server). Diese Schlüssel werden lediglich verwendet für die Schlüsselverteilung und nicht zum Verschlüsseln der eigentlichen Nachrichten. Will Alice ihren Sessionschlüssel K (den sie mittels eines Zufallsgenerators erzeugt hat) an Bob senden, sind in diesem Protokoll lediglich zwei Meldungen nötig: 1. Alice fügt einen Zeitstempel (TA ), den Namen von Bob (B), und den eben genannten zufälligen Sessionsschlüssel K aneinander, verschlüsselt dies mit dem geheimen Schlüssel KA , den sie mit Trent (dem Schlüsselserver) teilt und sendet das Resultat zusammen mit ihrem Namen (A) an Trent: A, EKA (TA , B, K) 2. Trent entschlüsselt die Meldung von Alice mit dem Schlüssel KA , ersetzt den Zeitstempel durch einen Neuen (TB ) und den Namen durch den von Bob (B) und verschlüsselt dies mit dem Schlüssel (KB ), den er gemeinsam mit Bob hat und schickt dies Bob: EKB (TB , A, K) Natürlich kann Bob daraus durch Entschlüsseln mit dem ihm bekannten Schlüssel K B den Sessionsschlüssel K berechnen! Hier muss natürlich angenommen werden, dass Alice gute Zufallszahlen erzeugen kann. Weitere Protokolle, die ebenfalls auf einer trusted third party und symmetrischer Verschlüsselung basieren sind das Yaholom- und das Needham-Schroeder-Protokoll. Diese verwenden aber mehr als zwei Meldungen. Damit will man sog. replay-Attacken verhindern. In einem solchen Angriff zeichnet Mallory alle Meldungen auf um sie später wieder abzuspielen um das Protokoll zu unterwandern. Es gibt aber auch Protokolle die keine trusted third party brauchen, wie das Otway-ReesProtokoll. 129 7 Protokolle Kerberos ermöglicht die Authentifizierung von principals wie Benutzer, PC’s oder Server und den Austausch von Sitzungsschlüsseln. Die Authentifikation wird durch einen vertrauenswürdigen Server (engl: trusted third party) ermöglicht. Für den Austausch von Sitzungsschlüsseln wird eine Variante des Needham-Schroeder Protokolls verwendet: Falls Alice einen Sessionkey für eine Kommunikation mit Bob erzeugen will, werden in etwa folgende Schritte ausgeführt: 1. Alice schickt Trent (Server) einem Meldung mit ihrer und Bob’s Identität, d.h. A, B (7.1) 2. Trent erzeugt eine Meldung mit einem Zeitstempel T, einer Lebenszeit L, einem zufälligen Sessionkey K und Alices Identität A und verschlüsselt dies mit dem Schlüssel, den er mit Bob teilt (KB ). Analog macht er dies für Alice, und schickt beides an Alice: EKA (T, L, K, B), EKB (T, L, K, A) 3. Alice erzeugt dann eine Meldung mit dem Zeitstempel T und ihrer Identität A und verschlüsselt dies mit dem Sessionkey K und schickt beides an Bob, d.h. EK (A, T ), EKB (T, L, K, A) 4. Nach erfolgreichem Empfang und Entschlüsselung sendet Bob eine Meldung bestehend aus dem Zeitstempel T plus Eins verschlüsselt mit dem Sessionkey an Alice, d.h. EK (T + 1) Dieses Protokoll funktioniert, vorausgesetzt die Uhren von Alice und Bob sind synchronisiert mit der Uhr von Trent (dem Authentifikations-Server). In der Praxis genügt eine Genauigkeit auf wenige Minuten. 130 7 Protokolle 7.3 Schlüssel-Management Darunter fallen die Erzeugung (key-agreement, symmetrische Verschlüsselung, trusted third party [TTP]), das Aufzeichnen, die Überschreibung, Verteilung (key-transport), Installation, Speicherung (key-escrow), Änderung (key-revocation) und Kontrolle von kryptographischen Schlüsseln. Es muss Schutz bieten gegen Angriffe, welche beispielsweise die Kompromittierung von von Schlüsseln zum Ziel haben. Genauere Infos unter http://www.cse.msstate.edu/ cs6990/Week9/sld028.htm 7.4 Zertifikate Damit einfach überprüft werden kann, ob ein öffentlicher Schlüssel einer Person oder Firma echt ist, werden Zertifikate verwendet. Dabei handelt es sich um Dokumente, die folgendes enthalten: • ... 131 7 Protokolle 7.5 Zertifizierungsinstanzen Zertifizierungsinstanzen (engl: certificate authorities) erfüllen folgende Aufgaben: • Sie überprüfen die Identität des Antragsstellers: deshalb wird z.B. ein Auszug aus dem Handelsregister oder (die Kopie) eines amtlichen Ausweises verlangt. • Sie überprüft den Antrag des Antragssteller z.B. durch die notariell beglaubigte Unteschrift des Antragsstellers. • Sie überprüft, ob der verwendete Namen eindeutig ist. • Sie überprüft, ob der Antragssteller den zum abgelieferten öffentlichen Schlüssel gehörigen privaten Schlüssel besitzt. • Sie signiert A, EA mit ihrem privaten Schlüssel. Das Zertifikat besteht also aus im Wesentlichen aus A, EA , DZ (A, EA ). 132 7 Protokolle 7.6 Schlüsselübermittlung Weit verbreitet sind Protokolle zur sicheren Übermittlung von Schlüsseln: wichtige Methoden sind • Schlüsseltausch ohne asymmetrische Verfahren: der Schlüssel wird auf einem sicheren Kanal (per Telefon, Brief, Brieftaube oder Kurier), oft in einzelne Bruchstücke zerlegt, zum Kommunikationspartner gesandt. Oft verwendet man dann einen Generalschlüssel und einen gesonderten Sitzungsschlüssel (welcher mit dem Generalschlüssel verschlüsselt zum Kommunkikationspartner übertragen wird). Es können auch zentrale Schlüsselserver zum Einsatz kommen. • Schlüsseltausch mit asymmetrischen Verfahren: jeder Kommunkikationspartner erzeugt ein Schlüsselpaar und gibt den öffentlichen Schlüssel bekannt. Dann sieht das Schlüsseltausch-Protokoll z.B. zwischen Alice und Bob wie folgt aus: 1. Bob besorgt den öffentlichen Schlüssel der Empfängerin, in unserem Fall Alice. 2. Bob erzeugt einen (zufälligen) Sitzungsschlüssel. 3. Bob verschlüsselt den Sitzungsschlüssel mit einem asymmetrischem Verfahren (z.B. RSA) wobei er den öffentlichen Schlüssel von Alice verwendet. Eine (allfällige) Nachricht verschlüsselt Bob mit dem Sitzungsschlüssels und einem symmetrischen Verfahren (z.B. 3DES, AES, etc.). Beide Chiffrate geschickt Bob an Alice. Da hier sowohl symmetrische wie auch asymmetrische Verfahren verwendet werden, spricht man von einem hybriden Verfahren. 4. Alice kann als einzige den Sitzungsschüssel ermitteln, da nur sie den passenden privaten Schlüssel kennt. 5. Mit dem Sitzungsschlüssel kann sie auch die (allfällige) Nachricht entschlüsseln. Beispiele davon sind der Schlüsselaustausch nach Diffie-Hellmann (siehe früher) oder KEA (key exchange algorithm), die NSA-Variante von Diffie-Hellmann. Das obige Protokoll hat einen entscheidenden Fehler: es ist verletzlich gegen die man-in-themiddle Attacke. Dabei wird angenommen, dass ein Angreifer (Mallory) den Austausch der Daten zwischen den beiden Kommunikationspartnern abhören oder/und sogar abändern kann. Im ersten Fall spricht man von einem passiven, im zweiten Fall von einem aktiven Angriff. Es gibt mehrere Möglichkeiten, diesen Angriff abzuwehren: einer basiert auf dem InterlockProtokoll welches hier für die Standardbenutzer Alice und Bob sowie einen allfälligen Angreifer Mallory detailliert aufgezeigt wird: 1. Alice schickt Bob ihren öffentlichen Schlüssel. 2. Bob schickt Alice seinen öffentlichen Schlüssel. 133 7 Protokolle 3. Alice verschlüsselt eine Meldung mit dem öffentlichen Schlüssel von Bob und schickt ihm die eine Hälfte. 4. Bob verschlüsselt seinerseits eine Meldung mit dem öffentlichen Schlüssel von Alice und schickt die Hälfte davon an Alice. 5. Alice sendet die zweite Hälfte der Nachricht an Bob. 6. Bob fügt die beiden Meldungen von Alice zusammen und entschlüsselt sie mit seinem privaten Schlüssel. Danach sendet er die zweite Hälfte der Meldung an Alice. 7. Alice fügt die beiden Meldungen von Bob zusammen und entschlüsselt sie mit ihrem privaten Schlüssel. Wichtig dabei ist, dass die eine Hälfte der Nachricht ohne die andere nutzlos ist. Die beiden Hälften können beispielsweise so gewählt werden: • Bei einem Block-Algorithmus könnte die erste Hälfte aus allen geraden, die zweite aus allen ungeraden Bits eines jeden Blocks bestehen. • Entschlüsseln könnte von einem Initialisierungsvektor abhängen, welcher als zweite Hälfte übertragen wird. • Die erste Hälfte könnte der Hash-Wert der Meldung sein, die zweite die verschlüsselte Meldung ausmacht. Obwohl der Angreifer Mallory sich gegenüber Bob als Alice und gegenüber Alice als Bob ausgeben kann, kann er die erste Hälfte der Meldung von Alice (aus Schritt 3 von oben) nicht mit seinem privaten Schlüssel entschlüsseln und mit dem öffentlichen Schlüssel von Bob verschlüsseln und an ihn weiterleiten. Er muss also eine völlig neue Meldung erfinden, verschlüsseln und die Hälfte an Bob schicken. Genau so muss er dann mit der Meldung von Bob an Alice verfahren. Er muss auch hier eine völlig neue Meldung erfinden, verschlüsseln und eine Hälfte an Alice senden. Nur wenn Mallory die Kommunikationspartner sehr gut kennt, kann er die diese immitieren: dies ist aber wesentlich schwieriger als eine man-in-the-middle Attacke. 134 7 Protokolle 7.6.1 EKE EKE (Encrypted Key Exchange) kann mit RSA, DH, ElGamal, etc. implementiert werden. Dabei arbeiten symmetrische und asymmetrische Verfahren so zusammen, dass sie sich gegenseitig stärken. Das folgende Protokoll ermöglicht die gegenseitige Authentifkation und die Berechnung eines gemeinsamen Sitzungsschlüssels. Man geht davon aus, dass Alice und Bob ein gemeinsames Passwort P kennen. 1. Alice erzeugt ein (zufälliges) public-/private-key Paar (Kp , Ks ) und sendet Bob ihre Identität A, sowie den mit dem gemeinsamen Passwort verschlüsselten öffentlichen Schlüssel Kp : A, EP (Kp ) 2. Bob kennt P und kann deshalb Kp berechnen. Er erzeugt einen zufälligen Sitzungsschlüssel K und sendet Alice: EP EKp (K) 3. Alice bestimmt daraus K, erzeugt einen Zufallsstring RA , verschlüsselt dieses mit K und sendet ihn an Bob: EK (RA ) 4. Bob kann diese Nachrichten entschlüsseln und kennt so R A . Er erzeugt nun seinerseits RB zufällig und versendet dieses zusammen mit RA verschlüsselt an Alice: EK (RA , RB ) 5. Alice kann entschlüsseln und sollte RA und RB erhalten. Ist dies der Fall, schickt sie Bob EK (RB ) 6. Falls Bob nach dem Entschlüsseln sein oben erzeugtes RB erhalten, ist das Protokoll vollständig und fehlerfrei: Sowohl Alice wie auch Bob können danach K als Sitzungsschlüssel verwenden. In den letzten drei Schritten 4 bis 6 beweist Alice, dass sie K kennt. In den drei Schritten 3 bis 5 beweist Bob, das er K kennt. Die Schritte 3 bis 6 werden auch challenge response portion des Protokolls genannt. Man beachte, dass P ein sehr schwaches Passwort sein kann: es kann nur kompromittiert werden, wenn der asymmetrische Algorithmus kompromittiert wird. Notieren sie sich die Details und verifizieren sie diese Behauptung. 135 7 Protokolle Eine Anwendung von EKE sind sichere öffentliche Telefone (oder auch Handy’s) wo es darum geht, dass die Verbindung authentifiziert und verschlüsselt erfolgen sollte! Man kann zeigen, dass EKE sicher ist gegen aktive Angriffe und off-line Wörterbuchangriffe! 7.7 Digitale Signaturen Eine digitale Signatur soll dieselben Eigenschaften wie ein handschriftliche Unterschrift haben; diese sind: Echtheit bescheinigt, dass das Dokument vom Unterschreibenden stammt: Dokument und Unterschrift sind untrennbar verbunden! Identität bescheinigt, dass die Unterschrift nur von einer ganz bestimmten Person stammen kann: Unterschriften lassen sich (fast) nicht fälschen! Abschluss bescheinigt, dass der Unterschreibende eine Erklärung vollendet (d.h. zu dieser steht, sich damit einverstanden erklärt, etc.). Dabei ist gewährleistet, dass man dies nicht leichtfertig durchführen kann: ein Fingerabdruck oder Kreuz genügt nicht! Verfikation bedeutet, dass jeder (durch Vergleich der Unterschriften) nachprüfen kann, ob die Unterschrift echt ist. Man sollte sich bewusst sein, dass bei der Unterschrift von Hand eine physikalische Verbindung zwischen Dokument und Unterschrift besteht (beides steht auf dem selben Blatt), dass Fälschungen mehr oder weniger leicht erkannt werden können (und diese zudem einiges an Handarbeit erfordern). Kommt dazu, dass die (Foto-) Kopie einer Unterschrift vor Gericht weniger Beweiskraft hat als eine Original-Unterschrift. Die zunehmende Verlagerung des Informationsflusses auf digitale Medien verlangt aber nach einer digitalen Unterschrift. Dies wirft aber rechtliche Fragen, wie auch Fragen nach dem Risiko auf. Gerade dieses lässt sich auch von Experten nur schwer abschätzen! Digitale Unterschriften verwenden kryptographisch sichere Hashfunktionen, sowie asymmetrische Verschlüsselung. Ein Signaturschema ist wie folgt definiert: Jedem Teilnehmer U sind eine geheime Signaturfunktion sU und eine öffentliche Verifikationsfunktion vU zugeordnet: dabei ist nicht möglich, aus vU auf sU zu schliesen. Der Teilnehmer U signiert den Hashwert h(p) (dies genügt, wenn die Hashfunktion kryptographisch sicher ist) der Nachricht p indem er sig = sU (h(p)) berechnet. Dann sendet er (p, sig) an den Empfänger welcher dann seinerseits die Hashfunktion h(p) der Nachricht p berechnet, und verifiziert, dass sig die zu h(p) gehörige Signatur ist. Sie ist es dann, wenn vU (sig) = h(p) 136 7 Protokolle Beispiel 7.2. Verwendet man den RSA-Algorithmus als Signaturschema, bildet man die Hashfunktion m = h(p) der Meldung p und verwendet def sU (m) = md mod n = sig als Signaturfunktion (wobei d und n ihre übliche Bedeutung haben) und definiert die (binäre) Verifikationsfunktion durch vT (sig) def = ? me mod n = sig. Leider ist dieses Verfahren wegen der Homomorphie-Eigenschaft von RSA nicht sicher, jedenfalls solange man nicht zusätzliche Redundanz einfügt. Warum, zeigt das folgende Beispiel! Beispiel 7.3. Wir stellen uns vor, der Angreifer möchte die Meldung m durch das Opfer signieren lassen. Damit das Opfer die Meldung nicht direkt lesen kann, verwendet der Angreifer die Signatur sig x einer anderen Meldung x. Diese habe er beispielsweise als E-Mail aufgefangen. Falls (e, n) der öffentliche und (d, n) der private Schlüssel des Opfers ist, dann gilt: sigx = xd mod n x = sigx e mod n Falls der Angreifer das Opfer dazu bringen kann, x · m zu signieren, d.h. sigx·m = (x · m)d mod n zu berechnen, kann er wegen sigm = md mod n = sigx·m · (sig x )−1 die Signatur von m berechnen. Durch diesen Angriff wird RSA nicht vollständig gebrochen: der Modul n kann dadurch nicht faktorisiert werden. Bei einem Signatursystem spricht man in diesem Fall von existentiellem Brechen, falls eine Signatur zu einer Meldung eigener Wahl berechnet werden kann. 7.7.1 DSS Der Digital Signature Standard (DSS) wurde 1994 vom NSA als Signaturstandard festgelegt. Er basiert wesentlich auf dem Digital Signature Algorithm (DSA) wobei die Sicherheit auf dem diskreten Logarithmus beruht. Der DSA basiert auf dem ElGamal Signaturverfahren und verwendet folgende Parameter, von denen p, q und g öffentlich bekannt sind und z.B. auch von mehreren Leuten gemeinsam verwendet werden dürfen: 137 7 Protokolle • Eine L − Bit-Primzahl p (512 ≤ L ≤ 1024) wobei 64|L, d.h. 2511+64t < p < 2512+64t mit t ∈ {1, 2, . . . , 8} • Ein 160-Bit Primfaktor q von p − 1 • Eine Zahl g = m(p−1)/q mod p > 1, wobei 0 < m < p − 1. • Ein geheimer Schlüssel 0 < x < q. • Ein öffentlicher Schlüssel y = g x mod p. • Die sichere Hashfunktion SHA-1, bezeichnet durch H. Will Alice das Dokument M mit ihrem privaten Schlüssel xA digital signieren so, dass man die Signatur mit ihrem öffentlichen Schlüssel yA verifizieren kann, dann geht sie wie folgt vor: 1. Alice verwendet eine Zufallszahl 0 < r < q und berechnet: s = (g r mod p) mod q t = (r −1 (H(M ) + xA s)) mod q wobei r −1 das multiplikative Inverse von r modulo q ist. Die Signatur von M ist (s, t). 2. Der Empfänger überprüft die generelle Gültigkeit der Unterschrift: Es muss ja gelten 0 ≤ s ≤ q − 1 und 0 ≤ t ≤ q − 1. Danach berechnet der Empfänger nacheinander: u v1 v2 w = = = = s−1 mod q (H(M )u) mod q (rw) mod q ((g v1 g v2 ) mod p) mod q wobei s−1 das multiplikative Inverse von s modulo q ist. Falls w = s, dann ist die Signatur verfiziert. Beispiel 7.4. Wie kann ein Angreifer die Signatur von Alice fälschen? Was ist die Komplexität dieses Unterfangens? Lösung: Der Angreifer kennt yA , p, q und g und möchte xA berechnen, d.h. yA = g xA mod p nach xA auflösen. Dies ist das Problem des diskreten Logarithmus. Die besten bekannten Verfahren √ benötigen dazu mehr als q, d.h. mehr als 279 Operationen. Falls der Zufallsgenerator, mit welchem r bestimmt wird, schlecht ist, hätte man einen weiteren Angriffspunkt gefunden: also ist es essentiell, einen guten Zufallsgenerator zu verwenden! 138 7 Protokolle Beispiel 7.5. Warum funktioniert das oben beschriebene Verfahren, und was sind die Gründe für die einzelnen Zwischenschritte? Lösung: 139 7 Protokolle 7.7.2 ElGamal Der Modul p, sowie α seien öffentlich bekannt. Eine zufällige, geheime Zahl x 140 7 Protokolle 7.7.3 RSA PKCS #1 Falls k = dlog2 (n)/8e und λ = dL/8e wird der λ-Byte Hash h(p) der Meldung p berechnet, und zu folgendem k-Tupel von Bytes ergänzt: m = (00||01||F F ||F F || · · · ||F F ||00||h(p)) Der Reihe nach besteht m aus: 1. zwei konstanten Bytes 00 und 01 (bei der public-key Verschlüsselung beginnt man mit 00 und 02), 2. k − λ−3 konstanten Bytes F F , 3. einem konstanten Byte 00 und 4. dem λ-Byte Hash der Meldung h(p). Die Public Key Cryptography Standards (PKCS) werden in verschiedensten kryptographischen Applikationen implementiert. Die aktuell aktiven Standards sind in der Tabelle ?? aufgelistet: PKCS #1 PKCS #3 PKCS #5 PKCS #6 PKCS #7 PKCS #8 PKCS #9 PKCS #10 PKCS #11 PKCS #12 PKCS #13 PKCS #14 PKCS #15 Der RSA Verschlüsselungs Standard Standard für die DH Schlüsselvereinbarung Der password-basierte Verschlüsselungs Standard erweiterter Zertifikats Syntax Standard (besser X509 v3) Standard für kryptographische Mitteilungen Standard für die Syntax der Private-Key Informationen Definiert bestimmte Attributtypen in anderen PKCS Standard für die Syntax der Zertifizierungsanfragen Cryptographic token interface standard (Smartcard) Personal information exchange syntax standard Standard für ECC (Eliptic Kurve Cryptography) PRNG Cryptographic token information format standard Beachte: PKCS #2 und #4 wurden ersetzt durch PKCS #1! 7.8 Zero-Knowledge-Protokolle Wie kann man jemandem beweisen, dass man im Besitz eines Geheimnisses ist, ohne dieses zu verraten? Einige Beispiele: 141 7 Protokolle Das Geheimnis von Niccolò Tartaglia (1499-1557) bestand darin, dass er behauptete, eine Lösungsformel für die kubische Gleichung ax3 + bx2 + cx + d = 0 gefunden zu haben (bis dahin konnte man Gleichungen 3. Grades noch nicht allgemein lösen). Wie kann nun Tartaglia beweisen, dass er diese Formel tatsächlich kennt, ohne sie zu verraten? Das Geheimnis der magischen Tür bestand darin, dass jemand wusste, wie sich die Tür öffnen liess. Das Geheimnis mit der Quadratwurzel besteht darin, dass jemand eine Zahl x kennt, die niemand sonst kennt, und deren Quadrat modm (m eine fest gewählte natürliche Zahl) gleich y ist. Wie kann man jemanden überzeugen, dass man x kennt, ohne die Zahl bekannt zu geben? Bemerkung: die Kenntnis einer modularen Quadratwurzel x einer Zahl y ist ein grosses Geheimnis, da es praktisch unmöglich ist, die Gleichung x2 mod m = y für eine gegebene Zahl m mit einigen hundert Stellen, deren Primfaktorzerlegung nicht bekannt ist und eine gegebene Zahl y nach x aufzulösen. 142 7 Protokolle Abbildung 7.1: Fiat-Schamir-Protokoll. 7.8.1 Das Fiat-Shamir-Protokoll Kann für die Rechner-Rechner Authentifikation verwendet werden. Wir nehmen an, dass eine Schlüsselzentrale zwei Primzahlen p und q (per Zufallsgenerator) gewählt hat und daraus das Produkt n = pq bildete. Während p und q geheim bleiben müssen, wird n als Systemparameter veröffentlicht. Nun berechnet eine zentrale Stelle aus den Identifizierungsdaten eines Benutzers v (in binärer Form dargestellt), die modulare Quadratwurzel dieser Zahl, d.h. löst die folgende Gleichung nach s auf: s2 mod n = v. Da die Zentrale die Faktorisierung von n kennt, ist es für sie einfach, dieses Problem zu lösen! Das Resultat wird beispielsweise auf eine Chip-Karte gespeichert und kann danach auch auf der Schlüsselzentrale gelöscht werden. Das Protokoll zeigt, wie Alice dem Rechner (Bob) beweist, dass sie im Besitz der Zahl s ist, 143 7 Protokolle für die s2 mod n = v gilt. Dazu führen sie folgende Prozedur solange durch, bis der Rechner (Bob) mit genügend hoher Wahrscheinlichkeit annehmen kann, dass Alice nicht schummelt. 1. Alice wählt eine Zufallszahl r ∈ ∠Z?n , und sendet x = r 2 mod n an Bob. 2. Bob würfelt, nimmt also ein Zufallsbit b: gilt b = 1, so verlangt Bob von Alice die Zahl y = r ·s mod n; andernfalls die Zahl y = r mod n. Alice berechnet also y = r ·s b mod n und schickt das Resultat an Bob. 3. Im Fall b = 1 überprüft Bob ob y 2 mod n = x · v mod n und im Fall b = 0 überprüft Bob ob y 2 mod n = x mod n zutrifft. Falls Alice das Geheimnis s kennt, so kann sie Bob davon überzeugen, da in ∠Z ?n gilt: 2 y 2 ≡ rsb ≡ r 2 s2b ≡ r2vb ≡ xv b mod n Falls Alice s nicht kennt, könnte sie spekulieren, was Bob von ihr verlangt, nachdem sie ihm x geschickt hat. Im Fall b = 0: Alice hat dann keine Probleme, Bob die Zahl r mitzuteilen, die sie ja selber ausgewählt hat. Fall b = 1: Hier wählt Alice zunächste eine Zahl r 0 und berechnet daraus x0 = (r 0 )2 mod n. x0 ist also das Quadrat der Zahl r 0 modulo n! Dann erst berechnet sie x0 mod n v und schickt dieses an Bob. Nach Annahme (b = 1) verlangt dann Bob die Zahl r·s mod n: diese ist aber genau r 0 , denn es gilt: x = r 2 mod n = (r 0 )2 /(s2 ) mod n = r · s = r 0 mod n Die Wahrscheinlichkeit, dass Alice in einer Runde des Protokolls den Wert des Bits b richtig rät ist gleich 1/2. Die Wahrscheinlichkeit, dass sie t-mal hintereinander richtig rät ist gleich t 1 p = 2 Falls t = 20 gewählt wird, ist diese Wahrscheinlichkeit bereits kleiner als ein Millionstel. Diese Wahrscheinlichkeit kann durch Wahl eines genügend grossen t beliebig klein gemacht werden. Man beachte, dass in diesem Protokoll keine Informationen über s von Alice zu Bob (dem Rechner) getragen werden. Die Sicherheit des Protokolls hängt einzig und allein davon ab, wie schwierig die Berechnung modularer Quadratwurzeln ist: und dieses Problem ist bekanntlich mindestens so schwierig, wie die Faktorisierung von n! 144 7 Protokolle 7.9 Commitment Wie kann man erreichen, dass eine Person eine Nachricht hinterlegen kann so, dass sie von niemandem gelesen und auch nicht abgeändert (insbesondere auch von der betreffenden Person nicht) werden kann? Beispiel 7.6. Die Person könnte die Meldung in einen Tresor sperren und diesen Save einer Treuhandperson zur Aufbewahrung geben. Den Schlüssel zu diesem Save behält die Person und übergibt ihn erst zu einem fest gesetzten Zeitpunkt ebenfalls dem Treuhänder. Auf diese Weise kann niemand (auch die Person selber) die Nachricht verändern oder gar lesen. Auf diese Art kann man vorgehen, wenn man eine öffentliche Ausschreibung durchführt und verhindern will, dass Konkurrenten die Angebote anderer einsehen können, um ihr eigenes Angebot dann entsprechend zu korrigieren! Das Commitment-Protokoll besteht aus zwei Phasen: dem Festlegen und dem Öffnen des Commitments. Mathematisch legt sich die Partei A auf einen Datensatz m fest, indem sie c = f (m) berechnet und c an B sendet. Dabei ist f eine kollisionsresistente Einweg-Hashfunktion; dadurch ist es nicht möglich von c auf m zu schliessen (also bleibt m geheim) und A kann auch nicht einen anderen Datensatz m 0 verwenden, für den gilt: f (m0 ) = f (m). A öffnet das Commitment, indem sie B das Urbild m von c mitteilt. B kann dann sofort nachprüfen, dass tatsächlich f (m) = c gilt, und ist damit sicher, dass A nicht schummelt! Beispiel 7.7. Ein Spezialfall, nämlich das Bit-Commitment tritt dann auf, wenn m nur ein Bit lang ist. Man legt sich dann nicht nur auf das Bit b, sondern auch noch auf eine grosse Zufallszahl r fest. Man publiziert dann f (b, r) wobei f eine Einweg-Funktion ist, die nur betreffend des zweiten Arguments kollisionsresistent sein muss: es muss also (im Sinne des rechnerische Möglichen) für alle r 6= s gelten: f (0, r) 6= f (1, s). Eine mögliche Realisierung ist: f (b, r) = y b r 2 mod n (7.2) wobei n = pq (p, q zwei grosse Primzahlen) und y ein fester, quadratischer Nichtrest modulo n mit Jacobisymbol +1 ist. Also muss y noch gewisse Voraussetzungen erfüllen! 145 7 Protokolle 7.10 Geteilte Geheimnisse Geteilte Geheimnisse (engl: shared secrets) tritt in der Praxis beispielsweise bei Banken auf: dort haben z.B. drei Prokuristen einen (Teil-) Schlüssel zu einem Tresor. Einer alleine oder auch zwei können den Tresor mit ihren Schlüsseln nicht öffnen. Alle drei Schlüssel müssen gemeinsam verwendet werden. Ähnliche Sicherheitsvorrichtungen wurden im Kalten Kreig verwendet, um den unverhofften Ausbruch eines Atomkrieges zu verhindern, indem beispeilsweise einer der Bunkersoldaten durchdreht und eine Atomrakete startet, die dann zu einer Gegenschlag führen könnte, und zum Untergang der Menschheit führen könnte. Mathematische Realisation mit Threshold-Verfahren (Schwellverfahren) in dem das Geheimnis S in n Teilgeheimnisse S1 , S2 , . . . , Sn aufgeteilt wird und zwar so, dass für t ∈ IN Treshold (Schwelle) gilt: • Aus je t und mehr Teilgeheimnissen lässt sich das Geheimnis rekonstruieren. • Aus weniger als t Teilgeheimnissen lässt sich das Geheimnis nicht berechnen (oder erraten). Beispiel 7.8. Sei S eine reelle Zahl, die wir auf der y-Achse auftragen. Nun wählen wir ein Polynom (t − 1)-ten Grades, welches durch durch den Punkt (0, S) verläuft: P (x) = S + t−1 X ak xk 1 wobei die ak beliebig gewählte, zufällige Zahlen sind. Dann wählen wir n Punkte auf dem Graphen aus: sie bilden die Teilgeheimnisse. Es ist klar, dass die Kurve nur dann bestimmt werden kann, wenn mind. t Punkte bekannt sind: daraus kann dann auch S (Schnittpunkt der Kurve mit der y-Achse) bestimmt werden! 146 7 Protokolle 7.11 Durchschnittsgehalt und wer verdient mehr Eine Gruppe von Personen möchte ihr Durchschnittsgehalt so berechnen, dass niemand sein eigenes Gehalt preisgeben muss. Wir betrachten dazu drei Personen: Alice, Bob und Carol. Alice soll in diesem Protokoll eine Vertrauensstellung einnehmen. Wir nehmen auch an, dass die beiden anderen Personen nicht betrügen. • Alice wählt eine Zufallszahl r und addiert dazu ihr Gehalt a: die Summe r + a leitet sie so an Bob weiter, dass Carol nicht mithören kann. • Bob addiert dazu seinerseits sein Gehalt b und leitet die Summe r + a + b so an Coral weiter, dass Alice nicht mithören kann. • Schliesslich addiert Carol ihr Gehalt zu der eben erhaltenen Zahl und leitet die Summe r + a + b + c an Alice so weiter, dass Bob nichts mitbekommt. • Alice subtrahiert von der erhaltenen Zahl die Zufallszahl r und dividiert den Rest durch 3 und gibt die Zahl (a + b + c)/3 allen anderen bekannt. • Darauf kann jede TeilnehmerIn feststellen, ob sie mehr oder weniger als der Durchschnitt verdient. Beispiel 7.9. Zeigen Sie, dass weder Alice, noch Bob oder Carol aus den ihnen bekannten Informationen das Gehalt der jeweils anderen berechnen kann. Lösung: Wesentlich ist, dass im beschriebenen Protokoll für jeden Teilnehmer drei Unbekannte vorliegen: nämlich die Zufallszahl r sowie die Gehälter der beiden anderen Personen. Bekannt sind zwei Grössen: nämlich das Durchschnittsgehalt, sowie die Summe der Gehälter der vorigen Personen inkl. die Zufallszahl r. Also ist das Gleichungssystem unterbestimmt und eine eindeutige Lösung nicht möglich! Beispielsweise sind die Gleichungen für Carol: r + a + b = y1 a + b = 3y2 − c wobei y1 die von Bob gemeldete Summe ist und y 2 das von Alice veröffentlichte Durchschnittsgehalt. Nun möchten Alice und Bob wissen, wer von beiden mehr verdient ohne dabei ihr Gehalt bekannt geben zu müssen. Dazu verwenden Alice und Bob das folgende Protokoll: • Wir stellen das Gehalt a als Zahl beispielsweise zwischen 1 und m dar: das effektive Gehalt sei dann 100 · a! • Alice wählt eine Zufallszahl r, verschlüsselt diese mit dem öffentlichen Schlüssel von Bob, subtrahiert davon ihr Gehalt a und schickt das Resultat, also d = E B (r) − a, an Bob. 147 7 Protokolle • Bob kann daraus a nicht berechnen: statt dessen berechnet er yi = DB (d + i), i = 1, 2, . . . , m wobei m grösser als das Maximum der beiden Gehälter sein soll (also einfach genügend gross!). In der Folge (yi ) tritt irgend wo die von Alice verwendete Zufallszahl r auf. Nun versteckt Bob sein Gehalt b, in dem er mit Hilfe der Hashfunktion h die Folge zi = h(yi ), i = 1, 2, . . . , m berechnet und diese in der folgende Form an Alice schickt: z1 , z2 , . . . , zb , zb+1 + 1, zb+2 + 1, . . . , zm + 1 Dabei kann die Reihenfolge beliebig sein! • Alice berechnet nun ihrerseits h(r) und h(r) + 1. Da eine der Zahlen y i mit r übereinstimmt, findet Alice entweder h(r) oder h(r) + 1 in der von Bob gesandten Folge. Findet Alice h(r), dann verdient sie weniger als Bob, findet sie statt dessen h(r) + 1, dann verdient sie mehr als Bob. Sie teilt Bob mit, ob h(r) oder h(r) + 1 in der Folge vorkommt. • Nun wissen beide Personen, wer mehr verdient. Die folgende Abbildung zeigt das Protokoll: Alice ← Bob EB → d = EB (r) − a yi = DB (d + i), i = 1, 2, . . . , m zi = h(yi ), i = 1, 2, . . . , m ← z1 , z2 , ..., zb , zb+1 + 1, zb+2 + 1, . . . , zm + 1 h(r), h(r) + 1 148 7 Protokolle Mit einem analogen Verfahren kann man feststellen, ob bei einer blinden Auktion ein Angebot über dem aktuelle Gebot liegt oder nicht. Eben so kann man beim Vergleich von Rückstellungen einer Firma mit den aktuellen Schulden verfahren und dadurch erfahren, ob die Firma die Schulden aus den Rückstellungen bezahlen kann oder nicht. Beispiel 7.10. Man führe das obige Verfahren durch, wobei das Gehalt der Einfachheit halber zwischen 1 und 10 (in Kilofranken) liegen soll. Lösung an der Tafel! 149 7 Protokolle 7.12 Anonymes Senden und Empfangen Da der heutzutage immer noch der grösste Teil der Daten ungeschützt über das Internet transportiert wird, ist der Schutz der Privatsphäre eines jeden Einzelnen umso wichtiger. Was im Alltag als ganz selbstverständlich hingenommen wird, ist im Cyberspace nur schwer zu realisieren. Denken wir an Bargeld, dann ist es natürlich anzunehmen, dass nach dem Bezahlen in einem Geschäft niemand weiss, wer mit welcher Note oder Münze bezahlt hat. Bargeld ist also anonym, d.h. man kann frühere Besitzer nicht mehr ermitteln. Jedenfalls nehmen wir für den Moment an, dass es zu aufwändig wäre, DNA-Analysen durchzuführen um auf Grund allfälliger Hautpartikel auf dem Bargeld auf den möglichen Vorbesitzer zu schliessen. Digitales Geld, sagen wir kurz E-Cash muss die selbe Eigenschaft aufweisen: wie kann man dies realisieren? Schliesslich möchte man auch anonym chatten, surfen oder E-Mails schreiben können. Immer gibt es legitime Gründe, wenn auch oft von Regierungen vorgeschoben wird, dass unbescholtene Bürger ja nichts zu verstecken hätten, sich also auch nicht anonym im Cyberspace bewegen müssten. 1981 hat David Chaum eine Methode der anonymen Kommunikation vorgeschlagen (MixNets). Eine darauf basierende Implementation stellten die Cyberpunk remailers dar (type I remailer), die zwar PGP zur Verschlüsselung verwenden und verschachtelt sind, nicht aber traffic analysen standhalten. Diese Schwäche wurde im type II remailer durch Software von Ulf Möller (1998) ausgemerzt. Prudukte sind: • Mix-Nets (nach Chaum) mit mehrschichtigen verschlüsselten Ketten, nicht unterscheidbaren Paketen für die Meldungen, zufälliger Neuordnung in jedem Hop und return address reply blocks. • Mixmaster ... Beispiel 7.11. Das Dining-Cryptographers-Protokoll löst das folgende Problem: Drei Kryptographen A, B und C möchten ein Essen anonym bezahlen: entweder bezahlt einer der drei Kryptologen oder ihr Arbeitgeber (das NSA). Nur im letzten Fall, d.h. falls das NSA zahlt, möchten dies die Kryptologen wissen! 150 7 Protokolle 151 7 Protokolle Nachfolgend werden einige Projekte aufgelistet, die sich mit dieser Problematik beschäftigen (oder beschäftig haben). Das Onion Routing-Projekt (http://www.onion-router.net) Projekt baute ein Internet basiertes System, welches folgenden Angriffen widersteht: • Verkehrs Analyse (engl: traffic analysis). • Mithören (engl: eavesdropping. • Anderen Angriffen sowohl von Insidern (Onion-Routers) wie auch Externen. Das Transportmedium bzw. Netzwerk weiss nicht, wer mit wem kommuniziert; es weiss lediglich, dass Kommunikation stattfindet. Der Inhalt der Kommunkation ist vor allfälligen Mithörern sicher, bis er das Onion-Router-Netzwerk verlässt. Leider wurde das Projekt im Jahre 2000 eingestellt. Ein neueres Projekt ist JAP (Anonymity & Privacy) (http://anon.inf.tu-dresden.de/index_e von der Technischen Universität Dresden. Es ermöglicht den Benutzern anonym und nicht beobachtbar im Internet zu surfen und basiert auf dem mixer-Prinzip (siehe z.B. Anonymes Surfen Ein Zwischenbericht - http://www.inf.tu-dresden.de/h̃f2/anon/reports/ZwiBeDarmst 152 7 Protokolle 7.12.1 E-Cash Beim konventionellen elektronischen Einkauf wird entweder ein Konto beim Verkäufer eröffnet oder mit der Kreditkarte bezahlt. Beide Methoden sind nicht anonym. Zudem hat die zweite Methode folgende Nachteile: • Kreditkartenbetrug • Hohe Transaktionskosten • Dadurch nicht geeignet für kleine Transaktionen • Sicherheit ist gefährdet, sobald Nummer der Kreditkarte publiziert wurde. Die Bezahlung via Kreditkarte wird durch den SET (Secure Elektronic Transaction) Standard spezifiziert: Falls ein Kunde etwas kaufen will, unterschreibt er eine Meldung der Form Bezahle dem Verkäufer x Euros. Der Verkäufer übergibt diese Meldung an die Bank, die ersterem die x Euros überweist. Eines der grössten Probleme ist das der Nicht-Anonymität: wer will schon, dass die Bank weiss, was man eingekauft hat. Das Bezahlen mit Münzen ist eine völlig anonyme Angelegenheit: niemand kann einer Münze ansehen, wer sie ausgegeben hat, und für was! Es ist klar, dass man die gleichen Eigenschaften auch von digitalen Münzen erwartet. Im Wesentlichen sind beim Münzverkehr drei Parteien beteiligt: 1. die Bank, welche die Münzen ausgibt, 2. der Kunde, welcher mit der Münze Waren bezahlt, und 3. der Hn̈dler, welcher die Münze für seine Ware erhält. Es sollte auch nicht möglich sein, den Weg einer Münze zurück zu verfolgen. Mehrere Münzen ein und des selben Benutzers sollten nicht verlinkt werden können Beispiel 7.12. Die prepaid phone cards erlauben nicht Verfolgbarkeit (engl. untraceability) aber nicht Unverlinkbarkeit (engl. unlinkability). Dabei sollten (auch digitale) Münzen • zentral ausgegeben werden (es sollte also keine Münzfälscher Werkstätten geben), • einfach auf Echtheit überprüft werden können, • anonym sein, sowie • nicht (einfach) dupliziert werden können. 153 7 Protokolle Mathematisch lassen sich einige der Forderungen sehr einfach erfüllen: andere wiederum, wie die Sicherheit gegen Dublikate weniger. Grundlegend ist die blinde Signatur sowie für jeden Münzwert (10, 20, 50 Cent, 1, 2, 5, 10 Euro) ein (geheimer) RSA-Signierschlüssel der Bank. Echte Münzen liefern nach der Überprüfung mit dem entsprechenden öffentlichen Schlüssel der Bank eine genau vorgegebene Struktur (Redundanzschema). Das folgende Protokoll geht auf Chaum zurück: • Der Kunde möchte von der Bank eine 5 Euro Münze erhalten. Dazu wählt er eine Zahl w, die in das mit der Bank vereinbarte Redundanzschema passt (kleiner als der Modul des 5-Euro-RSA-Signierschlüssels): so kann w aus drei identischen Teilen bestehen, die der Kunde wählt: also z.B. w = 123412341234. Deckt die Bank diese Münze, erhält der Kunde m = w dB (immer modulo ...). Dabei wurde die Münze durch die Bank blind signiert! • Der Kunde übergibt die Münze beim Kauf von Waren an den Händler: dieser kann die Echtheit einfach nachprüfen, indem er den (öffentlichen) 5-Euro-RSA-Verifikationsschlüssel bemüht. Die Münze wird akzeptiert, wenn sie in das abgemachte Redundanzschema passt. • Der Händler kann nun die Münze bei der Bank einlösen: diese überprüft wieder die Echtheit! Die Anonymität ist gewährleistet, da die Münze blind signiert wurde. Damit die Münze nicht mehrmals eingelöst werden kann, werden sowohl kryptologische Lösungen wie auch solche ohne Kryptographie vorgeschlagen. Man möchte elektronische Münzen (genau so wie normale) auch einfach weitergeben können und nicht gleich jedes Mal bei der Bank einlösen. Es zeigt sich aber, dass dadurch die Gefahr des doppelten Ausgebens steigt. Sehr schwierig ist es dann festzustellen, wer der Schuldige ist (es soll ja die Anonymität gewahrt bleiben - jedenfalls so lange, bis einer betrügt). Eine weitere Gefahr bilden Lösegeldforderungen, die dann eben auch mittels anonymem Geld gedeckt werden und nicht mehr so einfach (z.B. dank fortlaufender Nummerierung) zurückverfolgt werden könnten! Beispiel 7.13. Wir wollen zeigen, wie obiges Schema auch Münzen unterschiedlicher Grösse hand- haben kann. Dazu kann die Bank einerseits für jeden Münzwert einen einen eigenen Signaturschlüssel verwenden oder aber die cut-and-choose-Methode verwenden. Dabei generiert der Benutzer 1000 Münzen der Form 1000kkri wobei ri eine zufällige Zahl ist und schickt diese für die blinde Signatur an die Bank. Die Bank wählt 999 zufällig aus und verlangt vom Benutzer das unblinding dieser Münzen. Sind alle unblinded Münzen korrekt, signiert die Bank die 1000th Münze. Dadurch erhält der Benutzer eine Münze, die 1000 Euro wert ist. Die Bank kann mit grosser Sicherheit davon ausgehen, dass der Benutzer nicht betrügt, d.h. der Bank nicht mit Absicht eine Münze zur blinden Signatur unterschiebt, die einen grösseren Wert hat. 154 7 Protokolle Das oben besprochene Protokoll verhindert aber das doppelte Ausgeben einer Münze nicht (engl. double spending). Eine mögliche Lösung wäre, dass die Bank eine Datenbank der bereits ausgegebenen Münzen unterhält. Bevor der Verkäufer die Münze akzeptiert, fragt er bei der Bank nach, ob sie bereits ausgegeben wurde und akzeptiert sie in diesem Fall nicht. Diese Lösung ist nicht praktikabel, da eine solche Datenbank eine enorme Grösse annehmen würde. Zudem kann nicht garantiert werden, dass immer eine direkte Verbindung vom Verkäufer zur Bank vorhanden ist. Um das doppelte Ausgeben von Münzen zu verhindern, versucht dies zu dektieren: solange ein Benutzer seine Münzen nur ein Mal ausgibt, bleibt er anonym. Sobald er aber versucht eine Münze zwei Mal aus zu geben, soll er identifiziert werden können. Diese Tatsache wird den Benutzer davon abhalten, Münzen mehrere Male auszugeben. Beispiel 7.14. Das Chaum-Fiat-Naor Protokoll beschreibt, wie die obige Forderung erfüllt werden kann. Bei der Erzeugen von Münzen erzeugt der Benutzer 2k Meldungen der Form H(m i )kkH(mi ⊕ Id), wobei Id eine eindeutige ID des Benutzers ist und m i eine zufällige Münze. Alle diese sendet er blinded an die Bank. Die Bank wünscht nun vom Benutzer das blinding von k Münzen: dieser schickt die entsprechenden Werte mi und ri (ri ist der blinding-Faktor). Falls alle k Münzen korrekt sind, kann die Bank davon ausgehen, dass der Benutzer korrekte Münzen verwendet und signiert die verbleibenden k Münzen blind. Der Benutzer erhält nun die k signierten Meldungen der Form H(m i )kkH(mi ⊕ Id). Der Verkäufer sendet k Bits (c1 , c2 , . . . , ck ) zum Kunden. Dann sendet der Kunde für i ∈ (1, 2, . . . , k) im Falle von ci = 0 den Wert mi kkH(mi ⊕ Id) an den Verkäufer und im Falle von c i = 1 den Wert H(mi )kkmi ⊕ Id. In beiden Fällen kann der Verkäufer die Werte H(m i )kkH(mi ⊕ Id) berechnen und deren Richtigkeit mit Hilfe der Signatur der Bank überprüfen. Falls alle Verifikationen korrekt sind, dann akzeptiert der Verkäufer die Zahlung. Im dritten Schritt schickt der Verkäufer das Challenge (c 1 , c2 , . . . , ck ) und die k erhaltenen Meldungen an die Bank des Kunden. Wurde eine der Münzen doppelt ausgegeben, dann wird sich der entsprechende Challenge mindestens an einer Stelle unterscheiden: Es gilt also c i 6= c0i ! Die Bank hat aber sowohl mi kkH(mi ⊕ Id) und H(mi )kkmi ⊕ Id: daraus kann sie dann Id berechnen! Das obige Verfahren ist natürlich für micropayments zu aufwändig. So wird beispielsweise bei Pay-TV jede Minute eine Bezahlung von 0.01 Cents durchgeführt. 155 7 Protokolle 7.12.2 E-Voting 156 7 Protokolle 7.13 Authentifikation Mehr als die Geheimhaltung von Daten wird deren Authentizität (Echtheit) gefordert. Mechanismen zur Erreichung von Integrität (Unversehrtheit) und Authentizität werden unter dem Begriff Authentifikation zusammengefasst. Folgende Teilaufgaben sind denkbar: Integrität von Daten fordert, dass keine Veränderungen oder Verfälschungen stattfinden können/dürfen. Authentifikation von Daten fordert, dass diese auch tatsächlich vom vermeintlichen Absender stammen. Authentifikation von Benutzern fordert, dass beispielsweise ein Person ihre Identität zweifelsfrei beweisen kann; d.h. sie kann sich nicht für jemand anders ausgeben. Beispiel 7.15. Will Alice eine Nachricht m an Bob senden will, kann sie einen MAC der Meldung mitliefern. Dieser wird gemäss MAC = F (k, m) aus der Nachricht m mit Hilfe einer Einweg-Funktion F unter Verwendung eines Schlüssels k berechnet. Der Schlüssel k darf natürlich nur Alice und Bob bekannt sein. Empfängt Bob (m0 , MAC0 ), so kann er einfach nachprüfen, ob die Nachricht unversehrt und echt ist, d.h. auf dem Weg nicht verändert wurde und auch tatsächlich von Alice stammt, indem er überprüft, ob gilt: MAC0 = F (k, m0 ) Der Lauscher Eve kann nicht betrügen, da er k nicht kennt. Die Nachricht kann auch nicht verfälscht sein, da F eine Einweg-Hashfunktion ist. Also ist die Nachricht integer und authentisch. Wer einen bestimmten Dienst eines Computer-Systems beanspruchen will, muss sich diesem gegenüber authentisieren, d.h. muss dem System beweisen, dass er die ist, welche sie behauptet zu sein. Dies kann sie, indem sie beispielsweise beweist, dass sie • das Passwort, eine geheime Information und persönliche Informationen weiss (Authentifizierung durch Wissen), oder • einen Gegenstand wie einen Ausweis, oder eine SecurID besitzt (Authentifizierung durch Besitz), oder • jemand ist durch das Aussehen, die Unterschrift, eine Fingerabdruck oder die Iris (Authentifizierung durch ein persönliches Merkmal). Dazu werden neuerdings biometrische Verfahren eingesetzt! 157 7 Protokolle Man authentisiert sich also durch etwas, was man weiss, was man hat oder was man ist! Oft werden zwei oder alle Möglichkeiten kombiniert. So z.B. beim Anmelden beim E-Banking bei UBS (Passwort, Rechner, Kontonummer). Gewisse Internet-Protokolle, wie ftp, telnet und pop schicken das Passwort unverschlüsselt über’s Netz, oft über tausende von Kilometern, dutzende von Routern und vielleicht über das Computernetzwerk des Konkurrenten. Damit aber auf den Computersystemen nicht das eigentliche Passwort gespeichert werden muss, werden aus diesen berechnete Hashes abgelegt. Wird unter UNIX die Standard-Verschlüsselung crypt verwendet, sieht ein Passwort-Eintrag beispielsweise wie folgt aus: user01:n1EcxZ6XyoDQI:12399:0:99999:7::: Hier sind die beiden ersten Zeichen gleich dem salt. Man beim Verschlüsseln (Hashen) des Passwortes wird dieses Salt berücksichtigt: perl -e ’print crypt("Secretpw","n1"), "\n";’ So erhält man n1EcxZ6XyoDQI. Verwendet man ein anderes Salt NX, so findet man mit obigem Kommando das verschlüsselte Passwort NXHWAehpuU0dg. Auch hier stellen die beiden ersten Zeichen das Salt dar. Im Wesentlichen arbeitet die Authentifizierung wie in der Abbildung 7.2 beschrieben. Abbildung 7.2: Üperprüfung des UNIX-Passwortes. Beispiel 7.16. Zeigen Sie, dass Benutzer Authentifizierung mittels Challange/Response Methode verletzlich gegenüber offline password guessing ist: Der Angreifer kennt das challenge und auch das encrypted challenge (response), beides kann er z.B. durch Abhören des Netzwerk Verkehrs erfahren. Dadurch kann er das Passwort (den User key) mittels Brute-Force erraten. 158 7 Protokolle 7.13.1 Einmalpasswörter 159 7 Protokolle 7.13.2 Authentifikation mit Chipkarten Chipkarten enthalten einen Rechner und sind damit ideal geeignet um Kryptoalgorithmen auszuführen und geheime Schlüssel sicher (mehr oder weniger) zu speichern. Sie können (nicht nur) zur Authentifikation beim Abheben von Geldbeträgen am Bankautomaten, sondern auch zur elektronischen Bezahlung verwendet werden. Der Benutzer authentifiziert sich gegenüber der Karte mittels einer personal identification number (PIN) welche typischerweise (in gehashter Form) auf der Karte gespeichert ist. Die Chipkarte authentifiziert sich gegenüber dem Rechner mittels des folgenden ChallengeResponse-Protokolls: • 7.13.3 Bezahlen mit Chipkarten 160 7 Protokolle 7.14 Blinde Signatur Wer ein Dokument unterzeichnet sieht dieses normalerweise vor sich. Es ist ihm also klar, was er unterzeichnet. Es gibt aber Fälle, wo der Unterzeichner nicht wissen darf, was er unterschreibt. Man spricht in diesem Fall von einer blinden Signatur (engl: blind signature). Das folgende Beispiel zeigt, dass es durchaus legitime Gründe gibt, blinde Signaturen einzuführen. Beispiel 7.17. Stellen wir uns vor meine Tochter muss eine Prüfung von mir unterschreiben lassen. Sie möchte aber nicht, dass ich die exakten Resultate jeder einzelnen Aufgabe sehe da sie sich wegen der Fehler schämt. Da ich sicher bin, dass sie alles daran setzt, sich zu verbessern, akzeptiere ich ihren Wunsch nach einer blinden Unterschrift. Dazu steckt Griselda die Prüfung, zusammen mit einem Durchschlagpapier in ein Couvert, verschliesst dieses und reicht es mir zur Unterschrift (an einer von ihr vorher bezeichneten Stelle). Damit ich nicht etwa einen Check unterschreibe, füge ich meiner Unterschrift einen Bezeichner, wie Prüfung eingesehen hinzu. Dank dem Durchschlagpapier befindet sich danach die Unterschrift (auch und vor allem) auf der Prüfung welche Griselda danach ihrer LehrerIn übergibt. Blinde Signaturen spielen auch eine Rolle bei elektronischen Münzen (wo z.B. eine Bank mit der Unterschrift bezeugt, dass es sich dabei um echtes digitales Geld handelt) oder bei elektronischen Wahlen (wo die Gemeinde auch nicht wissen darf, wer welchen Wahlzettel wie ausgefüllt hat). Wie sieht die mathematische Realisation des obigen Protokolls aus? Sie wurde von Chaum entwickelt und lautet wie folgt: Griselda wählt eine Zufallszahl r (r darf nicht Teiler von n sein), berechnet für das Dokument m die Zahl x = m r e mod n 161 7 Protokolle und schickt diese an mich (dabei ist (n, e) mein öffentlicher RSA-Schlüssel). Ich berechne mit meinem privaten Schlüssel (n, d) die Zahl y = xd mod n und schicke diese zurück an Griselda. Wegen yr −1 = = = = = xd r −1 (mr e )d r −1 md r ed r −1 md rr −1 md mod n hat Griselda mit yr −1 die von mir signierte Prüfung vor sich. Beachte, dass wir im zweit letzten Schritt Wegen Euler r ed = r mod n schreiben durften. Es ist klar, dass ich aus x = m r e (wobei immer modulo n gerechnet wird) nicht auf m schliessen kann (schliesslich kenne ich ja r nicht). Zudem entspricht das Durchschlagpapier dem Reinziehen von d in (mr e )d = md r ed 162 7 Protokolle 7.15 Elektronische Wahlen Ausgabe der Wahlzettel Der öffentliche Schlüssel (ew , n) der Wahlbehörde wird verwendet, um aus einer Zufallszahl r und einer strukturierten Zahl x den Wert y = xr ew mod n zu berechnen. Daraus berechnet die Wahlbehörde t = y dw mod n und schickt diesen Wert zurück an den Wähler. Dadurch hat die Wahlbehörde den Strukturwert x blind signiert, denn es gilt: z = tr −1 = xdw Einschreiben in die Wählerliste Der Wähler wählt n = pq und fasst z als öffentlichen Schlüssel auf .... TODO 163 7 Protokolle 7.16 Steganographie jphide und jpseek verstecken und suchen steganographisch versteckte jpeg-files. Siehe auch A short history of cryptography, by Dr. Frederick B. Cohen, 1995, Management Analysis, http://www.all.net/books/ip/Chap2-1.html Weitere Infos unter: http://123.koehntopp.de/marit/publikationen/steganographie/ die lange Version des Artikels Sag’s durch die Blume von Marit Köhntopp, welcher im iX 04/96 erschien! http://www.burks.de/krypto.html die Linksammlung von Burkhard Schröder zu Kryptographie, Steganographie und Datenschutz http://www.garykessler.net/library/fsc_stego.html, An Overview of Steganography for the Computer Forensics Examiner (FBI Forensic Science Communications, July 2004), http://www.garykessler.net/library/ndaa_stego.html Steganography: Implications for the Prosecutor and Computer Forensics Examiner (National District Attorneys Association Newsletter, June 2004), 7.17 Angriffe auf Protokolle Oft ist es viel zu schwierig, direkt Angriffe auf kryptographische Algorithmen durch zu führen: statt dessen ist es oft einfacher, Protokolle anzugreifen! Folgende Angriffe sind möglich: • Impersonation: hier nimmt eine Person die Identität einer anderen Person an. • Replay-Attacken: hier wird • Chess Grandmasters Problem ... 164 7 Protokolle [1] 165 Literaturverzeichnis [1] J. F. Bürgler, R. E. Bank, W. Fichtner, and R. K. Smith. A New Discretization Scheme for the Semiconductor Current Continuity Equations. IEEE Trans. CAD, 8(5):479–89, 1989. 166