Universität Tübingen Wilhelm-Schickard-Institut Arbeitsbereich Diskrete Mathematik Leitung: Prof. Dr. Peter Hauck Vorlesung WS 2008/2009 Stand: 16. Oktober 2009 Kryptologie und Datensicherheit Die Vorlesung wurde für Diplom- und Masterstudierende mit 4 SWS, für Bachelorstudierende mit 3 SWS gehalten. Die Teile, die für die Bachelorstudierenden entfallen, sind im Inhaltsverzeichnis mit (∗) gekenntzeichnet. Herstellung der TeX-Fassung des Vorlesungsskripts: Jürgen Sommer Überarbeitung: Jonas Bochtler Inhaltsverzeichnis 1 Grundbegriffe 12 2 Klassische symmetrische Verschlüsselungsverfahren 17 2.A Monoalphabetische Substitutionschiffren . . . . . . . . . . . . 18 2.1 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.2 Kryptoanalyse monoalphabetischer Substitutionschiffren . . . 20 2.3 Homophone Chiffren . . . . . . . . . . . . . . . . . . . . . . . 25 2.B Polyalphabetische Verschlüsselungen . . . . . . . . . . . . . . 27 2.4 Beispiel: Vigenère-Chiffre . . . . . . . . . . . . . . . . . . . . . 27 2.5 Beispiel: ENIGMA . . . . . . . . . . . . . . . . . . . . . . . . 30 2.6 Kryptoanalyse periodischer polyalphabetischer Verschlüsselungen . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.7 Kasiski-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.8 Friedman-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.9 Nichtperiodische polyalphabetische Verschlüsselungen . . . . 41 3 Perfekte Sicherheit von Chiffrierverfahren 43 3.1 Definition (Perfekte Sicherheit) . . . . . . . . . . . . . . . . . 43 3.2 Satz (Shannon, 1949) . . . . . . . . . . . . . . . . . . . . . . . 44 3.3 Satz (Perfekte Sicherheit des One-time-pads) . . . . . . . . . . 45 4 Symmetrische Blockchiffren 46 4.1 Lineare Algebra über kommutativen Ringen . . . . . . . . . . 47 4.2 Affine Blockchiffren . . . . . . . . . . . . . . . . . . . . . . . . 49 4.3 Kryptoanalyse affiner Blockchiffren . . . . . . . . . . . . . . . 51 2 4.4 Hintereinanderausführung von Blockchiffren, Diffusion und Konfusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.5 Feistel-Chiffren . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.6 Der ’Data Encryption Standard’ DES . . . . . . . . . . . . . 57 4.6.1 Rundenschlüsselerzeugung . . . . . . . . . . . . . . . . 59 4.6.2 Beschreibung der Verschlüsselungsfunktion fKi . . . . . 60 4.6.3 Sicherheit des DES . . . . . . . . . . . . . . . . . . . . 63 4.6.4 Effizienz der DES-Verschlüsselung . . . . . . . . . . . . 69 (∗) 4.7 Differentielle Kryptoanalyse am Beispiel des DES . . . . . . . 69 4.8 Endliche Körper . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4.9 Der Advanced Encryption Standard (AES) Das Rijndael-Verfahren . . . . . . . . . . . . . . . . . . . . . . 82 4.10 Andere Blockchiffren . . . . . . . . . . . . . . . . . . . . . . . 90 5 Betriebsarten von Blockchiffren 92 5.1 Electronic Codebook Mode (ECB Mode) . . . . . . . . . . . . 92 5.2 Cipherblock Chaining Mode (CBC Mode) . . . . . . . . . . . 92 5.3 Cipher Feedback Mode (CFB Mode) . . . . . . . . . . . . . . 94 5.4 Output Feedback Mode (OFB Mode) . . . . . . . . . . . . . 96 6 Stromchiffren 97 6.1 Synchrone Stromchiffren . . . . . . . . . . . . . . . . . . . . . 97 6.2 Selbstsynchronisierende Stromchiffren . . . . . . . . . . . . . . 98 6.3 Schieberegister . . . . . . . . . . . . . . . . . . . . . . . . . . 100 6.4 Lineare Schieberegister . . . . . . . . . . . . . . . . . . . . . . 101 6.5 Eigenschaften von linearen Schieberegistern . . . . . . . . . . 102 6.6 Lineare Komplexität . . . . . . . . . . . . . . . . . . . . . . . 104 3 6.6.1 Satz (Charakterisierung der linearen Komplexität) . . . 105 6.6.2 Satz (Rekonstruktion des LSR aus Folgestück) . . . . . 106 6.7 Schieberegister zur Schlüsselstromerzeugung . . . . . . . . . . 107 6.8 Spezielle Stromchiffren . . . . . . . . . . . . . . . . . . . . . . 110 (∗) 7 Kryptographisch sichere Pseudozufallsfolgen - Generatoren und Einwegfunktionen 111 7.1 Wahrscheinlichkeitstheoretische Bezeichnungen . . . . . . . . . 112 7.2 Definition (Kryptographisch sicherer PseudozufallsfolgenGenerator) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 7.3 Bedeutung von Definition 7.2 . . . . . . . . . . . . . . . . . . 114 7.4 Definition (Next-Bit-Tests) . . . . . . . . . . . . . . . . . . . . 116 7.5 Bedeutung von Definition 7.4 . . . . . . . . . . . . . . . . . . 116 7.6 Satz (Yao; 1982) . . . . . . . . . . . . . . . . . . . . . . . . . 117 7.7 Definition (Einwegfunktion) . . . . . . . . . . . . . . . . . . . 118 7.8 Bedeutung von Definition 7.7 . . . . . . . . . . . . . . . . . . 119 7.9 Satz (Håstad, Impagliazzo, Levin, Luby; 1999) . . . . . . . . . 119 7.10 Die Frage nach der Existenz von Einwegfunktionen . . . . . . 123 8 Public-Key-Kryptographie 125 8.1 Die Grundidee . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 8.2 Modulare Potenzen und das RSA-Verfahren . . . . . . . . . . 126 8.3 Lemma (Satz von Euler) . . . . . . . . . . . . . . . . . . . . . 127 8.4 Satz (Eigenschaften der RSA-Funktionen) . . . . . . . . . . . 127 8.5 Bemerkung (schnelles Potenzieren) . . . . . . . . . . . . . . . 128 8.6 RSA-Verfahren (Basisversion) . . . . . . . . . . . . . . . . . . 129 8.7 Bemerkung (Bestimmung von e und d) . . . . . . . . . . . . . 129 4 8.8 Beispiel zur RSA-Verschüsselung . . . . . . . . . . . . . . . . 130 8.9 Verwendung von RSA als Blockchiffre . . . . . . . . . . . . . . 131 8.10 Sicherheit des RSA-Verfahrens . . . . . . . . . . . . . . . . . . 132 8.11 Effizienz des RSA-Verfahrens . . . . . . . . . . . . . . . . . . 139 8.12 Bestimmung großer Primzahlen . . . . . . . . . . . . . . . . . 139 8.13 Diskreter Logarithmus . . . . . . . . . . . . . . . . . . . . . . 143 8.14 Bestimmung von p und g . . . . . . . . . . . . . . . . . . . . . 145 8.15 Sicherheit des Diffie-Hellman-Verfahrens . . . . . . . . . . . . 146 8.16 Das ElGamal-Verschlüsselungsverfahren . . . . . . . . . . . . . 147 8.17 Effizienz des ElGamal-Verfahrens . . . . . . . . . . . . . . . . 148 8.18 Sicherheit des ElGamal-Verfahrens . . . . . . . . . . . . . . . 148 8.19 Erweiterungen der Diffie-Hellman und ElGamal-Verfahren . . 149 8.20 Modulare Quadratwurzeln . . . . . . . . . . . . . . . . . . . . 150 8.21 Das Public-Key-Verfahren von Rabin . . . . . . . . . . . . . . 152 8.22 Der Blum-Blum-Shub Pseudozufallsfolgengenerator . . . . . . 153 9 Digitale Signaturen und kryptographische Hashfunktionen 154 9.1 Grundidee digitaler Signaturen . . . . . . . . . . . . . . . . . 154 9.2 Signaturschema (vereinfachte Form) . . . . . . . . . . . . . . . 154 9.3 Definition (Hashfunktion) . . . . . . . . . . . . . . . . . . . . 155 9.4 Signaturschema mit Hashfunktion . . . . . . . . . . . . . . . . 156 9.5 Definition (kryptographische Hashfunktion) . . . . . . . . . . 156 9.6 Satz (Kollisionsresistenz und Einwegeigenschaft) . . . . . . . . 157 9.7 Satz (Geburtstagsparadox) . . . . . . . . . . . . . . . . . . . . 158 9.8 Geburtstagsattacke . . . . . . . . . . . . . . . . . . . . . . . . 159 5 9.9 Serielles Hashing mit Kompressionsfunktionen . . . . . . . . . 159 9.10 Konstruktion von Kompressionsfunktionen unter Verwendung von Blockchiffren . . . . . . . . . . . . . . . . . . . . . . . . . 160 9.11 Spezielle Hashfunktionen . . . . . . . . . . . . . . . . . . . . . 161 9.12 RSA-Signatur . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 9.13 ElGamal-Signatur . . . . . . . . . . . . . . . . . . . . . . . . . 163 9.14 Sicherheit der ElGamal-Signatur . . . . . . . . . . . . . . . . . 165 9.15 Der Digital Signature Algorithm (DSA) . . . . . . . . . . . . . 167 9.16 Message Authentication Codes (MAC) . . . . . . . . . . . . . 167 9.17 Konstruktionsmöglichkeiten von MACs . . . . . . . . . . . . . 168 10 Authentifizierung und Zero-Knowledge-Beweise 169 10.1 Passwörter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 10.2 Challenge-Response-Authentifizierung . . . . . . . . . . . . . . 170 10.3 Zero-Knowledge-Beweise . . . . . . . . . . . . . . . . . . . . . 171 10.4 Das Fiat-Shamir-Verfahren (Fiat, Shamir, 1986) . . . . . . . . 172 10.5 Formalisierung der Zero-Knowledge-Eigenschaft . . . . . . . . 173 (∗) 11 Anonymität 175 11.1 MIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 11.2 Blinde Signaturen . . . . . . . . . . . . . . . . . . . . . . . . . 177 11.3 Anwendung: Elektronische Münzen . . . . . . . . . . . . . . . 178 (∗) 12 Secret Sharing Schemes 180 12.1 Definition (Zugriffsstruktur) . . . . . . . . . . . . . . . . . . . 180 12.2 Definition (Secret Sharing Schemes) . . . . . . . . . . . . . . . 180 12.3 Definition (Schwellenwertsystem) . . . . . . . . . . . . . . . . 181 6 12.4 Shamirs Konstruktion eines perfekten Schwellenwertsystems . 181 12.5 Definition (monotone Zugriffsstruktur) . . . . . . . . . . . . . 183 12.6 Monotone Secret Sharing Schemes nach Simmons . . . . . . . 183 7 Abbildungsverzeichnis 1 Grundschema einer Verschlüsselung zwischen Alice und Bob . 12 2 Die Teildisziplinen Kryptographie und Kryptoanalyse . . . . . 14 3 Strom- vs Block-, Substitutions- vs Transpositionschiffre . . . 17 4 Zuordnung bei homophoner Substitutionschiffre . . . . . . . . 25 5 Glättung der Buchstabenhäufigkeiten bei VigenèreVerschlüsselung . . . . . . . . . . . . . . . . . . . . . . . . . . 29 6 Schematischer Signallaufplan ENIGMA . . . . . . . . . . . . . 31 7 Schematischer Ablauf einer Feistel-Chiffrierung . . . . . . . . . 54 8 Rundenschlüsselerzeugung . . . . . . . . . . . . . . . . . . . . 59 9 Schematische Darstellung der Berechnung von fK (R) . . . . . 63 10 Transformationen . . . . . . . . . . . . . . . . . . . . . . . . . 83 11 Schematischer Ablauf des Rijndael-Verfahrens . . . . . . . . . 84 12 Verschlüsselung selbstsynchronisierender Stromchiffren . . . . 98 13 Entschlüsselung selbstsynchronisierender Stromchiffren . . . . 98 14 Rückgekoppeltes Schieberegister . . . . . . . . . . . . . . . . . 100 15 Binäres lineares Schieberegister der Länge n . . . . . . . . . . 101 16 Nichtlineare Kombination von linearen Schieberegistern . . . . 108 17 Nichtlineare Filtergeneratoren . . . . . . . . . . . . . . . . . . 109 18 Stop-and-Go-Generator . . . . . . . . . . . . . . . . . . . . . . 109 8 Tabellenverzeichnis 1 Häufigkeitsverteilung der Buchstaben in deutschsprachigen Texten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2 Häufigste Digramme in deutschsprachigen Texten . . . . . . . 21 3 Exemplarische Zeichenfolgeabstände, Ermittlung v. d nach Kasiski . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4 Teiltexte 1-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5 Die 8 S-Boxen des DES, repräsentiert durch acht 4×16 Matrizen 62 6 Output-Differenzen der S-Box S1 für Input-Differenz B ′ = (010100) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 7 Anzahl der verschiedenen Output-Differenzen der S-Box S1 bei Input-Differenz (010100) . . . . . . . . . . . . . . . . . . . . . 71 8 Input-/Output-Differenzen bei S-Box S1 . . . . . . . . . . . . 73 9 Einleitung Kryptologie: Wissenschaft von der sicheren Übermittlung (oder Speicherung) von Daten. Übermittlung erfolgt über Kanäle: Kupferleitung, Glasfaser, drahtlose Kommunikation, etc. Folgende Beeinträchtigungen sind möglich: • zufällige Störungen • systematische (physikalisch bedingte Störungen) • passive Beeinträchtigungen (Abhören von Telefongesprächen, Lesen von Mails, Speichermedien) • aktive Beeinflussung (Verändern von Daten, Nachrichten) Die ersten beiden Punkte sind Thema der Codierungstheorie und der Signalverarbeitung. Die letzten beiden betreffen die Kryptologie. Praktisch alle kryptologischen Verfahren haben die Aufgabe, eine (oder mehrere) der folgenden fünf Anforderungen an die Übermittlung bzw. Speicherung von Nachrichten zu gewährleisten: • Geheimhaltung (Lesen der Nachricht für Unbefugte unmöglich bzw. schwierig zu machen) • Authentifizierung (Identitätsbeweis einer Person oder eines Rechners gegenüber einer anderen (Teilnehmerauthentizität) oder Nachweis des Ursprungs einer Nachricht (Nachrichtenauthentizität)) • Integrität (Nachricht darf während ihrer Übermittlung nicht (von Unbefugten) verändert werden, ohne dass dies bemerkt wird.) • Verbindlichkeit (Der Sender kann später nicht leugnen, die Nachricht abgeschickt zu haben) • Anonymität (In manchen Situationen soll der Sender oder Empfänger anonym bleiben) 10 Früher: Vor allem Geheimhaltung wichtig; hauptsächlich im militärischen Bereich; Bsp.: Strategische Bedeutung der legendären Chiffriermaschine ENIGMA während des 2. Weltkrieges; führende Beteiligung Alan Turings am Brechen der Verschlüsselung. Heute: Zivile Anwendungen noch wichtiger, insbesondere wegen des enormen Wachstums netzgestützter Kommunikation (Internet). Inhalt der Vorlesung • Symmetrische Verschlüsselungsverfahren • Asymmetrische Verschlüsselungsverfahren (Public Key Systeme) • Theoretische Grundlagen: Kryptographisch sichere Pseudozufallsfolgengeneratoren, Einwegfunktionen, kryptologische Hash-Funktionen • Digitale Signaturen und Authentifizierung • Zero-Knowledge-Verfahren • Multiparty-Protokolle • Anonymität 11 1 Grundbegriffe Klartext (plaintext) Zeichenfolge über Alphabet R Sender (Alice) Verschlüsselung Chiffrierung (encryption) Schlüssel Geheimtext, Chiffretext(ciphertext), Kryptogramm: Zeichenfolge über Alphabet S (ggf. R=S) Empfänger (Bob) Entschlüsselung Dechiffrierung (decryption) Schlüssel Klartext Abbildung 1: Grundschema einer Verschlüsselung zwischen Alice und Bob Die Verschlüsselung geschieht mit einem Verschlüsselungsverfahren, Chiffrieralgorithmus. Die Verschlüsselung eines Klartextes durch diesen Algorithmus erfolgt mit Hilfe eines Schlüssels ke (key, encryption key). Das Verschlüsselungsverfahren ist dann eine Funktion E, die jedem beliebigen Klartext m (message) einen Chiffretext c in Abhängigkeit vom Chiffrierschlüssel ke zuordnet: c = E(m, ke ) Dabei muss gelten: Für jeden Schlüssel ke ist E(m1 , ke ) 6= E(m2 , ke ) falls m1 6= m2 , d.h. E(., ke ) ist injektiv; sonst könnte man nicht eindeutig entschlüsseln. Schlüssel sind ebenfalls Zeichenfolgen (Passwort, Geheimzahl, Bitfolge . . . ). Die Entschlüsselung des Chiffretextes c erfolgt dann mit einem zum Verschlüsselungsverfahren gehörenden Entschlüsselungsverfahren mit Hilfe eines Dechiffrierschlüssels kd (decryption key), der von ke abhängt. 12 Entschlüsselungsfunktion D: D(c, kd) = m [Häufig schreiben wir auch Eke (m) statt E(m, ke ) und Dkd (c) statt D(c, kd).] Ist kd = ke (oder lässt sich kd leicht aus ke bestimmen), so spricht man von symmetrischen Verschlüsselungsverfahren. Ist kd aus ke nicht oder nur mit sehr großem Aufwand berechenbar, so kann man ke auch öffentlich machen: asymmetrische Verschlüsselungsverfahren oder Public-Key-Verfahren. Die Gesamtheit aus Verschlüsselungsverfahren und aller Schlüssel wird Kryptosystem genannt. Beispiel: R = S = {0, 1, . . . , 25} Verfahren: Verschiebeschiffre (Shift Cipher) Verschlüsselung: x ∈ R, x → x + i mod 26 für ein i ∈ {0, 1, . . . , 25} Schlüssel: i Entschlüsselung: x → x − i mod 26 (Symmetrisches Verfahren) Ist m = k1 . . . kr , ki ∈ R, so E(m, i) = ((k1 + i) mod 26) . . . ((kr + i) mod 26) = l1 . . . lr = c D(C, i) = ((l1 − i) mod 26) . . . ((lr − i) mod 26) = m. (Caesarchiffre: i = 3) Ein Verschlüsselungsverfahren beinhaltet i. Allg. sehr viele verschiedene Verschlüsselungsmöglichkeiten, die jeweils durch einen Schlüssel festgelegt sind. Kommunikationspartner müssen sich grundsätzlich über das Verschlüsselungsverfahren einigen und vor der Übertragung die Schlüssel vereinbaren (entfällt bei Public-Key-Verfahren). Geheimgehalten werden muss der Schlüssel kd (d.h. bei symmetrischen Verfahren der gemeinsame Schlüssel). Das Verfahren lässt sich i. Allg. nicht geheimhalten (und sollte auch nicht geheimgehalten werden). Kerkhoff ’sches Prinzip: Die Sicherheit eines Verschlüsselungsverfahrens darf nur von der Geheimhaltung des Schlüssels abhängen, nicht jedoch von der Geheimhaltung des Algorithmus. 13 Bei symmetrischen Verschlüsselungsverfahren muss daher der Schlüssel k(= ke = kd ) auf sicherem Weg übermittelt werden. Weshalb dann nicht gleich die ganze Nachricht auf sicherem Wege übermitteln? • Nachricht lang, Schlüssel kurz • Zeitpunkt der Schlüsselübergabe ist frei wählbar. • Mehrere Nachrichten können mit gleichem Schlüssel verschlüsselt werden. Mit Hilfe der Public-Key-Verfahren (asymmetrische Verfahren) hat man die Möglichkeit, die Schlüssel ohne Gefahr auszutauschen. Beispiel: Biryukov, Shamir und Wagner haben 1999 den Verschlüsselungsalgorithmus (A5) geknackt, der GSM-Handy-Telefonate auf der Funkstrecke zur Mobiltelefon-Basisstation schützt. GSM-Association hat den Algorithmus geheimgehalten (GSM-Group Special Mobile Standard für Funktelefone). Kryptologie Kryptographie Kryptoanalyse untersucht, wie Verschlüsselungsverfahren zu brechen sind beschäftigt sich mit dem Entwurf von Verschlüsselungsverfahren Abbildung 2: Die Teildisziplinen Kryptographie und Kryptoanalyse Heute wird häufig der Begriff Kryptographie” synonym mit Kryptologie” ” ” verwendet. Die Kryptoanalyse prüft, wie schwer ein Kryptosystem zu knacken ist. Hinsichtlich der Schwere eines Angriffs können folgende qualitative Unterscheidungen in absteigender Reihenfolge getroffen werden: • Vollständiges Aufbrechen: Schlüssel kd wird gefunden. Dann kann jede Nachricht, die mit dem zugehörigen Schlüssel ke verschlüsselt wurde, entschlüsselt werden. 14 • Globale Deduktion: Finden einer zu D(., kd ) äquivalenten Funktion ohne Kenntnis des Schlüssels (ggf. nur für gewisse ke ). • Lokale Deduktion: Finden des Klartextes für nur einen abgefangenen Chiffretext. Wichtige Arten von Angriffen: (Angreifer heisst oft Mallory (malicious) - aktiv, oder Eve (eavesdropper, Lauscher) - passiv.) • Ciphertext-Only-Attack: Der Kryptoanalytiker verfügt über eine bestimmte Menge Chiffretext. • Known-Plaintext-Attack: Der Kryptoanalytiker kennt zusätzlich den zum Chiffretext gehörenden Klartext. • Chosen-Plaintext-Attack: Der Kryptoanalytiker kann einen beliebigen Klartext vorgeben und hat die Möglichkeit, den zugehörigen Chiffretext zu erhalten (relevant v.a. bei Public-Key-Systemen). • Chosen-Ciphertext-Attack: Kryptoanalytiker kann bel. Chiffretext vorgeben und erhält zug. Klartext. Aus dieser Kenntnis versucht er dann, kd zu bestimmen, oder zu einem anderen Chiffretext den Klartext zu erhalten. Daneben: Angriffe, die auf physikalisch-technischen Gegebenheiten der Kommunikation beruhen. Oder Angriffe durch Gewalt, Bestechung, Erpressung. Diese Angriffe sind oft sehr wirkungsvoll. Der Besitzer des Schlüssels stellt (neben fehlerhaften Implementierungen von Verschlüsselungsverfahren) die größte Sicherheitsgefahr dar. Ein Angriff, bei dem alle möglichen Schlüssel durchprobiert werden, heisst Brute-Force-Angriff. Daher: Menge der Schlüssel sollte möglichst groß sein (d.h. Schlüssellänge muss genügend groß sein!) Unterschied zwischen sicheren und uneingeschränkt sicheren Kryptosystemen: 15 • Uneingeschränkt sicher: Auch bei Kenntnis von beliebig viel Chiffretext kann (beweisbar!) nicht genug Information gewonnen werden, um daraus den Klartext oder den Schlüssel zu rekonstruieren (theoretisch sicher ). • Sicher: Aufwand zur Entschlüsselung ist mit vertretbaren Kosten, Speicherkapazität, Zeitdauer zu groß (komplexitätstheoretisch sicher oder auch nur praktisch sicher beim Stand der jetzigen Kenntnis). Beispiel: Schlüssellänge 128 Bit. 2128 ≈ 2, 5 · 1038 Schlüssel. Seien 1012 Schlüssel pro Sekunde testbar. Ang. 50 % der Schlüssel müssen getestet werden. Aufwand: 1, 25 · 1026 Sek. ≈ 4 · 1018 Jahre. Rechenzeit dauert etwa 400 Millionen mal länger als das Alter des Universums (≈ 1010 Jahre). Demgegenüber: Schlüssellänge 56 Bit (z.B. DES, s. Kap. 4.6). 256 ≈ 7, 2 · 1016 Schlüssel. Aufwand: 3, 6 · 104 Sek. = 10 Stunden. 16 2 Klassische symmetrische Verschlüsselungsverfahren Klassisch: Verfahren vor 1970 Es gibt zwei Typen von Unterscheidungen symmetrischer Verschlüsselungsverfahren: 1. Unterscheidung: Stromchiffren (stream ciphers) Blockchiffren (block ciphers) in Verbindung mit 2. Unterscheidung: Substitutionschiffren Transpositionschiffren Permutationschiffren Abbildung 3: Strom- vs Block-, Substitutions- vs Transpositionschiffre Stromchiffre: Jedes Zeichen (oder jeder kurze Block) des Klartextes wird einzeln verschlüsselt. Blockchiffre: Klartext wird in Blöcke einer festen (i.a. nicht zu kleinen) Länge n zerlegt, und jeder Block wird einzeln verschlüsselt. (Es gibt auch Verfahren mit variabler Blocklänge.) Stromchiffren lassen sich nach dieser Definition als Blockchiffren mit der Länge 1 auffassen. In der Regel spricht man aber nur von Blockchiffren, wenn die Blöcke größere Länge haben. Darüber hinaus sind Stromchiffren in der Regel dadurch gekennzeichnet, dass aus einem Ausgangsschlüssel k ein Schlüsselstrom ki , k2 , . . . erzeugt wird, wobei in einem Klartext m = m1 m2 . . . dann m1 mit k1 , m2 mit k2 , . . . verschlüsselt wird. Zweite Unterscheidungsmöglichkeit symmetrischer Verfahren: Substitutionschiffre: Jedes Zeichen des Klartextes wird durch ein Zeichen des Geheimtextalphabets ersetzt, die Position bleibt unverändert. Substitutionschiffren kommen sowohl als Stromchiffren als auch als Blockchiffren vor. Transpositionschiffre: Der Klartext wird in Blöcke zerlegt, und die Zeichen innerhalb des Blocks 17 werden permutiert. Zeichen bleiben also unverändert, Positionen werden verändert. Transpositionschiffren sind in der Regel Blockchiffren. (Es gibt allerdings auch Transpositionschiffren, die ohne Blockzerlegung den gesamten Klartext permutieren.) Substitutionschiffren und Transpositionschiffren sind die Urtypen symmetrischer Verfahren. Es gibt Verallgemeinerungen, die sich keiner dieser beiden Typen mehr zuordnen lassen, und Kombinationen dieser beiden Typen. Wir behandeln in diesem Kapitel zwei Typen von Substitutionschiffren, nämlich monoalphabetische und polyalphabetische Substitutionen. Auf Transpositionschiffren werden wir kurz in Kapitel 4 über symmetrische Blockchiffren eingehen. Stromchiffren sind Gegenstand von Kapitel 6. 2.A Monoalphabetische Substitutionschiffren Eine Substitutionschiffre heißt monoalphabetisch, wenn jedes Klartextzeichen aus R immer auf dasselbe Chiffretextzeichen aus S abgebildet wird und diese Zuordnung injektiv ist. Wir nehmen der Einfachheit halber R = S an (keine wesentliche Einschränkung). |R| = n (z.B. n = 26, natürlichsprachiges Alphabet) Chiffrierverfahren: Anwendung einer Permutation σ von R auf die Buchstaben des Klartextes: m1 . . . mk → σ(m1 ) . . . σ(mk ) Schlüssel: Permutation σ Also gibt es z.B. 26! ≈ 4 · 1026 monoalphabetische Chiffrierungen über dem natürlichen Alphabet R = {a, b, . . . , z} (bzw. R = {0, 1, . . . , 25}). Sei R = {0, 1, . . . , n − 1}. Häufig wird nicht die gesamte Schlüsselmenge benutzt. 18 2.1 Beispiele (a) Verschiebechiffre1: m → m + i mod n n verschiedene Schlüssel (nämlich alle i ∈ {0, 1, . . . , n − 1}.) (b) Affine Chiffren: Affine Chiffren sind eine Verallgemeinerung von Verschiebechiffren: m → am + b mod n, a, b ∈ {0, 1, . . . , n − 1} Diese Zuordnung ist bijektiv, falls ggT(a, n) = 1. Dann existiert nämlich a′ ∈ {0, . . . , n−1} mit aa′ ≡ 1 (mod n), und die Zuordnung m → a′ m − a′ b mod n ist die Inverse zu m → am + b mod n (m → am + b mod n → a′ (am + b) − a′ b mod n = m). Wie bestimmt man a′ , das multiplikative Inverse mod n zu a? Erweiterter Euklidischer Algorithmus (s.u.) liefert s, t ∈ Z mit as + nt = 1, da ggT(a, n) = 1. Dann 1 = as mod n = a(s mod n), d.h. a′ = s mod n. Die Umkehrung gilt ebenfalls, d.h. m → am + b mod n bijektiv ⇔ ggT(a, n) = 1. Damit hat man ϕ(n) Möglichkeiten für a und insgesamt n·ϕ(n) Schlüssel (a, b). (ϕ ist die Eulersche ϕ-Funktion, d.h. für n ∈ N ist ϕ(n) = |{i ∈ N : 1 ≤ i ≤ n, ggT(i, n) = 1}|.) n = 26 : 12 · 26 = 312 Schlüssel Beispiel: R= {0,1,. . .25} x xx x x codiere R= {a, b ,. . . z } m → 7m + 12 mod 26 codiere chif f riere decodiere TEXT −−−−→ 19, 4, 23, 19 −−−−−−→ 15, 14, 17, 15 −−−−−→ PORP Wir geben hier zur Wiederholung den erweiterten Euklidischen Algorithmus an: 1 s. Kap. 1 19 Eingabe: a, b ∈ N, a > b. (1) x := a, y := b s1 := 1, s2 := 0, s := 0 t1 := 0, t2 := 1, t := 1 (2) Solange x mod y 6= 0 wiederhole: g := x div y, r := x mod y, s := s1 − gs2 , t := t1 − gt2 , s1 := s2 , s2 := s, t1 := t2 , t2 := t x := y, y := r. Ausgabe: y (= ggT(a, b)) s, t (y = sa + tb) 2.2 Kryptoanalyse monoalphabetischer Substitutionschiffren Monoalphabetische Verschlüsselungen natürlichsprachiger Texte sind kryptologisch nicht sicher, selbst unter der schwächsten Annahme einer Ciphertextonly-attack. Dies liegt an der charakteristischen Häufigkeitsverteilung der Buchstaben in natürlichsprachigen Texten. Diese Häufigkeitsverteilung insgesamt ändert sich bei monoalphabetischen Verfahren nicht (es ändert sich nur die Häufigkeit der einzelnen Buchstaben), und das erlaubt in der Regel die Rekonstruktion der Klartexte schon aus Chiffretexten mit ca. 500 Buchstaben. Noch einfacher ist die Analyse bei Verschiebe- oder allgemeiner affinen Chiffren: Hier genügt die Identifikation eines bzw. zweier Buchstaben, um den Schlüssel zu knacken. Die Kryptoanalyse monoalphabetischer Substitutionschiffren beruht auf der Häufigkeitsanalyse von Chiffretextzeichen bzw. -digrammen (Digramm: Paar aufeinander folgender Zeichen). Natürliche Sprachen haben eine charakteristische Häufigkeitsverteilung von Buchstaben und Digrammen (siehe Tabellen 1 u. 2). 20 Buchstabe E N I R S A T D H U L G C O M Häufigkeit 17,5 % 9,8 % 7,7 % 7,2 % 7,1 % 6,5 % 6,1 % 4,9 % 4,5 % 4,3 % 3,5 % 3,0 % 2,9 % 2,7 % 2,5 % 27 % 35 % 28 % Buchstabe B F W K Z P V J Y X Q Häufigkeit 1,9 % 1,7 % 1,7 % 1,3 % 1,1 % 0,9 % 0,8 % 0,3 % zus. 0,1 % Tabelle 1: Häufigkeitsverteilung der Buchstaben in deutschsprachigen Texten Paar Häufigkeit (unter den 262 = 676 Paaren) en er jeweils 3,5 - 4,5 % ch 2,5 - 3 % de te nd ei ie in es jeweils 1,5 - 2,5 % Tabelle 2: Häufigste Digramme in deutschsprachigen Texten Bei monoalphabetischen Substitutionen bleiben diese Häufigkeitsverteilungen als Ganzes erhalten und erlauben die Rekonstruktion von Klartexten aus schon relativ kurzen Chiffretexten (ca. 500 Buchstaben). Beispiel: Gesucht wird ein Klartext in deutscher Sprache, der mittels monoalphabetischer Substitution verschlüsselt wurde: upu ovkt hpe puvkjskvikwiku zkseswdzku nvwi, qkt gpsiik. akcsww cstq qkt jkwkt bktwiokuqusw qoypkt zovku, qoww sdz ktwi ksueoj ksusak vkektfpuaku pkvkt puwkt hcksipuvkjskvikwikw nvwi, qku fpktvsw, eodzk. qskwku jskvi lo wdzskt uskeouq. su untqoektsfo swi kw pkvjsdz, se nfinvkt fpktvswwk bnt wksuk zopwipktk hp jkaku, pe qku opinyoztktu hp wsauojswsktku, qoww kw nfinvkt swi. hp zojjnckku znji eou wsk qouu suw zopw puq jokwwi wsk puikt ouiksjuozek qkt aouhku yoesjsk yksktjsdz bktyopjku. upt undz ksusak itoqsisnuojswiku eodzku wsdz qsk epkzk, fpktvswintik hp vodfku, ckjdzk 21 qouu su ojpesuspeynjsk akcsdfkji su qku fpkzjwdztouf akakvku cstq, pe qouu ksusak cndzku wxokikt esi atnwwke zojjn puq sasii ajksdzyojjw su qku ovyojj hp couqktu. Zur Kryptoanalyse werden die Häufigkeitsverteilung der Buchstaben und Digramme in deutschsprachigen Texten mit der Verteilung im vorliegenden Chiffretext verglichen. Buchstabe K U S W O T P I J Q Z V E Anzahl 102 62 59 44 40 36 33 32 29 24 24 20 19 Häufigkeit 16,60% 10,10% 9,60% 7,20% 6,50% 5,90% 5,40% 5,20% 4,70% 3,90% 3,90% 3,30% 3,10% Buchstabe N D A F C H Y B G L X M R Anzahl 18 15 14 11 9 8 8 3 1 1 1 - Häufigkeit 2,90% 2,40% 2,30% 1,80% 1,50% 1,30% 1,30% 0,50% 0,20% 0,20% 0,20% - Buchstabenhäufigkeiten im Chiffretext Im Chiffretext sind 503 Digramme enthalten. Digramm KU KS KW KO KT KP KI Anzahl 20 10 8 26 1 Häufigkeit 4,00% 2,00% 1,60% 5,20% 0,20% Digramm UK SK WK OK TK PK IK Anzahl 1 13 6 3 3 9 10 Häufigkeit 0,20% 2,60% 1,20% 0,60% 0,60% 1,80% 2,00% Häufigkeit der relevanten Digramme, die den Buchstaben K enthalten Aus der Buchstabenhäufigkeit entnimmt man: K wird dechiffriert zu E. 22 Ferner zeigt sich, dass sehr wahrscheinlich U oder S zu N dechiffriert wird. Da bei den Digrammen KU doppelt so häufig vorkommt wie KS, nehmen wir an: U wird dechiffriert zu N. Unter allen relevanten Digrammen, die K enthalten, treten einzig im Paar (KS,SK) beide Digramme mit einer Häufigkeit von jeweils mindestens 2 % auf. Es ist daher plausibel anzunehmen: S wird dechiffriert zu I. Aus der Digrammhäufigkeit von KT ergibt sich: T wird dechiffriert zu R. Ersetzt man im Chiffretext die Chiffretextbuchstaben k,u,s,t durch die ihnen vermutlich zugeordneten Klartextbuchstaben E,N,I,R, so ergibt sich: NpN ovER hpe pNvEjIEviEwiEN zEIeIwdzEN nvwi, qER gpIiiE. aEcIww cIRq qER jEwER bERwioENqNIw qoypER zovEN, qoww Idz ERwi EINeoj EINIaE vEeERfpNaEN pEvER pNwER hcEIipNvEjIEviEwiEw nvwi, qEN fpERvIw, eodzE. qIEwEN jIEvi lo wdzIER NIEeoNq. IN NnRqoeERIfo Iwi Ew pEvjIdz, Ie nfinvER fpERvIwwE bnR wEINE zopwipERE hp jEaEN, pe qEN opinyozRERN hp wIaNojIwIEREN, qoww Ew nfinvER Iwi. hp zojjncEEN znji eoN wIE qoNN INw zopw pNq joEwwi wIE pNiER oNiEIjNozeE qER aoNhEN yoeIjIE yEIERjIdz bERyopjEN. NpR Nndz EINIaE iRoqIiInNojIwiEN eodzEN wIdz qIE epEzE, fpERvIwinRiE hp vodfEN, cEjdzE qoNN IN ojpeINIpeynjIE aEcIdfEji IN qEN fpEzjwdzRoNf aEaEvEN cIRq, pe qoNN EINIaE cndzEN wxoEiER eIi aRnwwEe zojjn pNq IaIii ajEIdzyojjw IN qEN ovyojj hp coNqERN. Nun ergeben sich unmittelbar weitere Ersetzungen: P wird dechiffriert zu U, W wird dechiffriert zu S, O wird dechiffriert zu A, etc. Es ist dann einfach, die vollständige Dechiffrierung vorzunehmen: Chiffretext A B C D E Klartext G V W C M Chiffretext F G H I J 23 Klartext K Q Z T L Chiffretext K L (M) N O P Q (R) Klartext E J Chiffretext S T U V W X Y Z O A U D Klartext I R N B S P F H Der dechiffrierte Text lautet also: Nun aber zum unbeliebtesten heimischen Obst, der Quitte. Gewiss wird der Leser Verstaendnis dafuer haben, dass ich erst einmal einige Bemerkungen ueber unser zweitunbeliebtestes Obst, den Kuerbis, mache. Diesen liebt ja schier niemand. In Nordamerika ist es ueblich, im Oktober Kuerbisse vor seine Haustuere zu legen, um den Autofahrern zu signalisieren, dass es Oktober ist. Zu Halloween holt man sie dann ins Haus und laesst sie unter Anteilnahme der ganzen Familie feierlich verfaulen. Nur noch einige Traditionalisten machen sich die Muehe, Kuerbistorte zu backen, welche dann in Aluminiumfolie gewickelt in den Kuehlschrank gegeben wird, um dann einige Wochen spaeter mit grossem Hallo und Igitt gleichfalls in den Abfall zu wandern.2 Aufgabe: Der folgende Text wurde vor längerer Zeit abgefangen. Es ist bekannt, dass es sich um einen monoalphabetisch verschlüsselten deutschsprachigen Text handelt. Leider wurden Wortzwischenräume und Satzzeichen weggelassen. (Die Aufteilung in 5er- Blöcke dient nur der besseren Übersicht.) wzzsv uwgof uwsgs vpbfu lgyso wfuho pvsws vohvb ifuss heloj qrwsi ysplf uhjqu lxsgp sggli owugg qgpsv svohs lgonv lgyai bysvj elvjq vqsfd plwuz qivwf uzwhs wgszo fuily lqaod wggjq rbvys dbzzs gelvl xsvps vjesw hspsv xiwhj ofugs iiplg lfuul shhss vispw yhesv psgzq soosg eqvps rbgps valqo hgqvg bfuys ohvsw ahpsg gwgje wofus gulhh sswgu wsxrb guwgh sgzwh swgsz ofues vsgys ysgoh lgpqi vwfuo dbnax swglu sjsvo nvsgy h a) Wie lautet der Klartext ? b) Wer ist Alice ? 2 aus: M. Goldt, Quitten für die Menschen zwischen Emden und Zittan [26] 24 2.3 Homophone Chiffren Homophone Substitutionschiffren lassen sich als spezielle polyalphabetische Chiffren auffassen, also solche, in denen nicht jeder Klartextbuchstabe jeweils auf denselben Chiffretextbuchstaben abgebildet wird. Homophone Chiffren wurden entwickelt, um den Nachteil der charakteristischen Häufigkeitsverteilung bei monoalphabetischen Chiffren zu beheben. Homophone Substitutionschiffre: Abb. f , die jedem Klartextbuchstaben r ∈ R eine Teilmenge f (r) ⊆ S des Chiffretextalphabets zuordnet. Forderung: r1 , r2 ∈ R, r1 6= r2 , so f (r1 ) ∩ f (r2 ) = ∅ r1 r2 . . . . .f(r ) . . . . . f(r ) . . 1 . . . . . . . 2 . rn . . . . . . . . .f(r ) . . . n . Abbildung 4: Zuordnung bei homophoner Substitutionschiffre Verfahren: Ein Klartext m = r1 r2 . . . wird chiffriert in c = c1 c2 . . ., wobei ci zufällig aus f (ri ) gewählt wird. Schlüssel: Abb. f , d.h. {f (r)|r ∈ R} (Dieses Verfahren wurde schon um 1400 in Italien verwendet.) Vorteil der homophonen Substitution: Die Häufigkeitsverteilung der Klartextbuchstaben wird zerstört. Ist r ∈ R und p(r) die Häufigkeit, in der r im Klartext auftaucht, wählt man f (r) so groß, dass p(r) ≈ c Konstante, unabhängig von r |f (r)| Man benötigt dazu ein großes Alphabet S. 25 In einem Chiffretext treten dann alle Buchstaben aus ∪ f (r) etwa gleich r∈R oft auf. Damit ist keine direkte Häufigkeitsanalyse mehr möglich. Dennoch werden auch hier z.B. Digramme zur Kryptoanalyse verwendet. Wir machen dies an einem Beispiel klar: Angenommen die homophone Substitution f eines deutschsprachigen Textes wurde so gewählt, dass im Chiffretext alle Buchstaben mit etwa gleicher Häufigkeit vorkommen. D.h. |f (Buchstabe)| ∼ Häufigkeit des Buchstabens in Texten der deutschen Sprache. Ist z.B. |f (c)| = α ∈ N, so folgt aus der Häufigkeit von e, n, r, h in deutschsprachigen Texten, dass annähernd Folgendes gilt: |f (e)| = 6α, |f (n)| = 3, 5α, |f (r)| = 2, 5α, |f (h)| = 1, 5α Das Digramm ’en’ wird also auf 21α2 viele Arten als Digramm eines Buchstaben aus f (e) und eines aus f (n) chiffriert, und bei zufälliger Auswahl treten diese Digramme im Chiffretext etwa gleich häufig auf. Dagegen wird das Digramm ’ch’ nur auf 1, 5α2 viele Arten chiffriert. Da ’en’ im Klartext etwa 4% aller Digramme ausmacht und ’ch’ etwa 2, 75%, tritt jetzt jedes Digramm im Chiffretext, welchen ’en’ verschlüsselt, mit einer 4 Häufigkeit von 21 % ≈ 0, 2% auf. Jedes Digramm im Chiffretext, welches ’ch’ % ≈ 1, 8% auf. Keine verschlüsselt, tritt dagegen mit einer Häufigkeit von 2,75 1,5 anderen Digramme im Chiffretext treten mit einer derartig hohen Häufigkeit auf (Digramme, die ’nd’ verschlüsseln, sind die zweit häufigsten). Auf diese Weise lassen sich die Mengen f (c) und f (h) bestimmen. Der Grund hierfür ist also, dass die Einzelhäufigkeiten von ’c’ und ’h’ relativ gering, die Digrammhäufigkeit von ’ch’ aber relativ hoch ist, während bei allen anderen häufigen Digrammen auch die Häufigkeit wenigstens eines beteiligten Buchstabens relativ hoch ist. Mit ähnlichen Methoden der Digrammanalyse (und geschicktem Raten) lassen sich auch die Teilmengen des Chiffretextalphabets B, die anderen Klartextbuchstaben zugeordnet sind, ermitteln. Allerdings: Man benötigt deutlich längere Chiffretexte für diese Analysen als es bei Texten der Fall ist, die mittels monoalphabetischer Substitution verschlüsselt wurden. 26 2.B Polyalphabetische Verschlüsselungen Bei polyalphabetischen Verschlüsselungen wird ein Klartextzeichen durch verschiedene Chiffretextzeichen verschlüsselt, und ein und dasselbe Chiffretextzeichen kann für verschiedene Klartextzeichen stehen (in Abhängigkeit von ihrer Position im Text). Sei R das Klartextalphabet, S0 , . . . , Sd−1 Chiffretextalphabete. fj : R → Sj bijektive Abbildungen (j = 0, . . . , d − 1) und h: N→ {0, . . . , d − 1} (i.d.R. h(x) = x mod d) Klartext m = r1 . . . rt (ri ∈ R) wird verschlüsselt in Chiffretext c = fh(1) (r1 ) fh(2) (r2 ) . . . fh(t) (rt ). Schlüssel = h, f0 , . . . , fd−1 Man sagt: h erzeugt den Schlüsselstrom fh(1) , fh(2) , . . . Eine solche Chiffrierung heißt polyalphabetische Substitution (im engeren Sinne). Es handelt sich um eine Stromchiffre. Sie ist also eine Folge von monoalphabetischen Substitutionen mit wechselnden Schlüsseln, die durch die Auswahlfunktion h bestimmt werden. Ist h(x) = x mod d, so wiederholen sich die Schlüssel nach jeweils d verschlüsselten Klartextzeichen. Man nennt die Chiffre dann periodisch. Dann sind f0 , . . . , fd−1 die Schlüssel, die periodisch angewendet werden. Annahme für diesen Abschnitt: R = S0 = S1 = . . . = Sd−1 2.4 Beispiel: Vigenère-Chiffre 3 R = {0, 1, . . . , n − 1} (z.B. n = 26) h(x) = x mod d fj (r) = (r + kj ) mod n, kj ∈ R fest (jedes einzelne fj Verschiebechiffre) Schlüssel: k0 , . . . kd−1 Man nennt ko k1 . . . kd−1 auch Schlüsselwort. Insgesamt gibt es also nd verschiedene Schlüsselworte. 3 nach Blaise de Vigenère, 1523-1596; französischer Diplomat, veröffentlichte die nach ihm benannte Chiffre 1586. Die Chiffre war aber vorher schon bekannt (um 1500): Johannes Trithemius, Giovanni Battista Della Porta 27 konkretes Beispiel: R = {0, 1, . . . , 25} (Codierung von {A, B, C, . . . , Z}) Schlüsselwort: codiert KRYPTO −−−−→ 10, 17, 24, 15, 19, 14 (d = 6) Klartext: codiert KOMMEMORGENNICHT −−−−→ 10, 14, 12, 12, 4, 12, 14, 17, 6, 4, 13, 13, 8, 2, 7, 19 Die periodische Addition (modulo 26) des Schlüsselworts wird meist in folgender Weise geschrieben: Schlüsselwort : fortlaufender Klartext in Zeilen der XXX X X z Länge d = 6 10 10 20 14 24 8 18 17 24 15 19 14 14 12 12 4 12 y XX 5 10 1 23 0 X XX 17 6 4 13 13 8 4 19 6 1 2 7 19 9 19 5 8 fortlaufender Chiffretext in Zeilen der Länge d = 6 Decodiert: UFKBXAYIETGBSTFI Beachte: Es ist die Regel, dass der gleiche Chiffretextbuchstabe für verschiedene Klartextbuchstaben steht (z.B. 1 für 12 und 13). Ebenso wird ein und derselbe Klartextbuchstabe i.Allg. in verschiedene Chiffretextbuchstaben verschlüsselt (z.B. 12 in 0, 1, 10). Polyalphabetische Substitutionen führen i.Allg. zur Glättung der Buchstabenhäufigkeiten. Wir machen dies am Beispiel der Vigenère-Chiffre von Seite 27 plausibel, indem wir den Chiffretextbuchstaben I analysieren: Hat das Schlüsselwort d′ ≤ d verschiedene Buchstaben, so kann jeder Chiffretextbuchstabe aus d′ verschiedenen Klartextbuchstaben entstehen. ∧ Chiffretextbuchstabe 8 = I 28 enstanden aus Klartextbuchstaben 8 8 8 8 8 8 in in in in in in der der der der der der 1. 2. 3. 4. 5. 6. Spalte Spalte Spalte Spalte Spalte Spalte ∧ Y= ∧ R= ∧ K= ∧ T= ∧ P= ∧ U= 24 = 8 − 10 17 = 8 − 17 10 = 8 − 24 19 = 8 − 15 15 = 8 − 19 20 = 8 − 14 (mod 26) (mod 26) (mod 26) (mod 26) (mod 26) (mod 26) Bei längeren Klartexten kann man davon ausgehen, dass sich die Häufigkeit der Buchstaben im Klartext der Häufigkeit der Klartextbuchstaben in den einzelnen Spalten annähert. (Das sind in der ersten Spalte die Buchstaben an Position 1, d + 1, 2d + 1, . . . des Klartextes, in der zweiten Spalte die an Position 2, d + 2, 2d + 2, . . .) Also entspricht die Häufigkeit eines Chiffretextbuchstabens der durchschnittlichen Häufigkeit von d′ verschiedenen Klartextbuchstaben. Diese mittelt sich aus. In obigem Beispiel entspricht die Häufigkeit von I im Chiffretext der durchschnittlichen Häufigkeit von Y, R, K, T, P, U im Klartext, also von relativ selten vorkommenden Buchstaben wie Y, P, K und relativ häufigen wie R, T und U. Abbildung 5: Glättung der Buchstabenhäufigkeiten bei Vigenère-Verschlüsselung mit Schlüsselwort aus d verschiedenen Buchstaben 29 Zur Kryptoanalyse periodischer polyalphabetischer Verschlüsselungen ist es zunächst notwendig, die Periodenlänge d (also bei Vigenère-Chiffren die Schlüsselwortlänge) zu bestimmen. Wie das möglich ist, werden wir im nächsten Abschnitt beleuchten. Ist d bekannt, so sind d monoalphabetische Substitutionschiffren zu entschlüsseln. Dies geht, falls Chiffretexte genügend groß (im Vergleich zur Periodenlänge d) sind, wie in 2.2 beschrieben. Bei der Vigenère-Chiffre sind die zu entschlüsselnden, monoalphabetisch verschlüsselten Texte die in jeder Spalte. Sie beruhen auf Verschiebechiffren und sind deshalb besonders einfach zu knacken. Man beachte jedoch: Die Klartexte in den Spalten sind keine sinnvollen Texte (diese ergeben sich zeilenweise). Bevor wir auf die Kryptoanalyse periodischer polyalphabetische Verschlüsselungen eingehen, sei ein historisches Beispiel vorgestellt: 2.5 Beispiel: ENIGMA Chiffriermaschine, von der deutschen Wehrmacht im 2. Weltkrieg eingesetzt, die 1920 von Arthur Scherbius zunächst für den zivilen Bereich entwickelt wurde. Sie beruht auf polyalphabetischer Verschlüsselung. Funktionsprinzip: • Der Klartext wird über eine Tastatur eingegeben, die mittels elektrischer Kontakte Signale an das Steckbrett weiter gibt. • Auf dem Steckbrett kann jede Permutation, die aus 5 (disjunkten) 2er Zyklen besteht, geschaltet werden (andere Versionen wurden ebenfalls konstruiert). Damit existieren 26 24 22 20 18 ≈ 6 · 1011 Steckbrettmöglichkeiten. 2 2 2 2 2 • Auf jeder Walze ist eine Permutation verdrahtet. Nach Eingabe eines Zeichens dreht sich die 1. Walze um eine Position, so dass eine neue Permutation entsteht. Nach 26 Drehschritten geht sie wieder in ihre ursprüngliche Position und die 2. Walze dreht sich um eine Position. Nach 26 Drehschritten der 2. Walze beginnt die 3. Walze sich um eine Position zu drehen. (Auch andere Versionen mit 4 und 5 Walzen) 30 • Der Reflektor ist eine fest verdrahtete Permutation von 13 disjunkten 2er Zyklen. • Auf dem Rückweg werden die Permutationen der 3., 2., 1. Walze nochmals durchlaufen. Dadurch wird kein Klartextzeichen auf sich abgebildet.(Das stellte sich als Schwachpunkt heraus.) Periodenlänge: 26 · 26 · 26 = 17576 • Die Ausgabe erfolgt über ein leuchtendes Buchstabenlämpchen. Steckbrett 1. Walze 2. Walze 3. Walze Reflektor Abbildung 6: Schematischer Signallaufplan ENIGMA Je nach Steckbrettverschaltung und Ausgangsstellung der Walzen gibt es damit 17576 · 602350749000 ≈ 1, 06 · 1017 viele Schlüssel. Diese wurden zunächst alle drei Monate, dann jeden Tag, dann alle acht Stunden gewechselt. Bei der großen Periodenlänge (in der Regel größer als die Klartextlänge) waren die anschließend dargestellten kryptoanalytischen Verfahren nicht anwendbar. Dennoch wurde die ENIGMA-Verschlüsselung durch die Gruppe von Rejewski in Polen geknackt und danach von den Briten durch die Gruppe um Alan Turing in Bletchley Park. (Entwicklung der BOMB - erster elektromagnetischer Computer, später COLOSSUS - erster programmierbarer Computer)4 2.6 Kryptoanalyse periodischer polyalphabetischer Verschlüsselungen Bei der Kryptoanalyse sind zwei Schritte erforderlich: a) Bestimmung der Periode d b) Kryptoanalyse der monoalphabetisch verschlüsselten Teiltexte, die durch die Buchstaben des Chiffretextes gegeben sind, die an der Stelle 4 Einzelheiten hierzu in den Werken von Bauer und Kahn [5], [6], [7], [31], [32] oder in der Turing-Biographie von A. Hodges [29] 31 1, d + 1, 2d + 1, . . . 2, d + 2, 2d + 2, . . . .. . d, 2d, 3d, . . . stehen. Ist der Chiffretext genügend lang, so lässt sich der zweite Schritt wie in 2.2 behandeln. Insbesondere bei Vigenère-Verschlüsselungen, wo die monoalphabetischen Verschlüsselungen Verschiebechiffren sind, ist dies besonders einfach. Wir kümmern uns also jetzt um den ersten Schritt, wie man die Periode d bestimmen kann. Vermutet man, dass ein kleines d gewählt wurde, kann man folgendermaßen vorgehen: Man teste nacheinander d = 1, 2, . . . solange, bis sich in den Teiltexten aus Schritt 2 eine Häufigkeitsverteilung ergibt, die der Häufigkeitsverteilung eines natürlichsprachigen (etwa deutschen) Textes entspricht. Ist der Chiffretext im Vergleich zur Periodenlänge genügend groß und ist d relativ klein, so funktioniert diese Methode (insbesondere mit Computerunterstützung) gut. Bei einer falschen Wahl von d entstehen Teiltexte mit Häufigkeitsverteilungen, die in der Regel deutlich glatter sind als die Häufigkeitsverteilung in einem natürlichsprachigen Text.5 Die nächsten beiden Methoden geben Hinweise auf die Größe von d und können sinnvoll in Kombination mit Methode 1 eingesetzt werden. 2.7 Kasiski-Test Der Kasiski6 -Test beruht auf folgender Überlegung: Wiederholt sich eine Zeichenfolge im Klartext mit einem Abstand, der ein Vielfaches der Periodenlänge ist, so werden diese Zeichenfolgen gleich verschlüsselt, so dass sich Wiederholungen von Zeichenfolgen im Chiffretext ergeben, deren Abstand ein Vielfaches der Periodenlänge ist. 5 Visualisierungen dieses Verfahrens sind daher oft hilfreich. Siehe z.B. http://math. ucsd.edu/~crypto/ (Java Applet) 6 Diese Methode stammt in Ansätzen von dem englischen Mathematiker und Ökonom Charles Babbage (1792-1871) aus dem Jahr 1854. Sie wurde 1863 von dem preußischen Major Friedrich Kasiski (1805- 1881) veröffentlicht. 32 Solche Wiederholungen von Zeichenfolgen können im Chiffretext natürlich auch zufällig auftreten, wobei der Abstand dann kein Vielfaches der Periodenlänge ist. Dies tritt aber deutlich seltener auf als die erstgenannten Wiederholungen. Der Kasiski-Test beruht nun darin, den Chiffretext auf Wiederholungen von Zeichenfolgen mit mindestens drei Zeichen zu untersuchen und die jeweiligen Abstände zu bestimmen. Bei längeren Texten gibt dies deutliche Hinweise auf die Periodenlänge. In aller Regel bleiben nur wenige Möglichkeiten, die dann näher zu untersuchen sind. Beispiel: Mit Vigenère-Chiffrierung verschlüsselter deutschsprachiger Text (die Aufteilung in Blöcke dient nur der besseren Übersicht): FSGEXV PGIAVI EHKCJS EEIYWX UGYFSP JGEIZU MEFSSR EVIISA KJSWLT WLFEEL JLNRRU IIGABV ZOIZOE KBXORU MGYFNX IIZJIJ JIBNTS UYVCJC VOGYRL LFVLAH TEGEEU EJTMUR ELXVOT VTIMGY BELDHZ FGYRUL RKFNMT IEDLCE MPNYME YBKMEC JSNECT YVSKFE AHKVOK IBCBIQ NVRDHN FMPSIH GYUELW IBRQVE IUERXV FEIUER VUHXVS IE EFIXUE RHEHOR HXJDHF TGCFKF XRVFTY SOGOFN HQFOOU ONIFVS YVTSYP IHIZOF XFHIII ILEFSY l = 320 Buchstaben Kasiski-Test: Zeichenfolge MGY GYF YMEF JSWL TIB KFEIUERX IZO GYR LAH EFS Position 1 13 14 28 56 126 172 189 207 216 280 Position 2 118 194 288 101 264 222 249 212 256 285 105 180 260 45 138 50 60 40 Abstand = 3·5·7 = 22 · 3 2 · 5 = 22 · 5 · 13 = 32 · 5 = 2 · 3 · 23 = 2 · 52 = 22 · 3 · 5 5 = 23 · 5 5 Tabelle 3: Exemplarische Zeichenfolgeabstände, Ermittlung v. d nach Kasiski 33 Da die lange Zeichenfolge KFEIUERX mit großer Wahrscheinlichkeit sich nicht zufällig wiederholt, kann man davon ausgehen, dass die Schlüsselwortlänge ein Teiler von 50 ist. Da 5 in neun Fällen die auftretenden Abstände teilt, 2 aber nur in sechs Fällen (und 25 überhaupt nur in einem Fall), ist es plausibel anzunehmen, dass das Schlüsselwort Länge d = 5 hat. Die Zeichenfolge TIB hätte sich dann als einzige zufällig wiederholt. 2.8 Friedman-Test Zentral für den Friedman7 -Test (1922) ist der sog. Koinzidenzindex. Koinzidenzindex κ(m) einer Zeichenfolge m über einem Alphabet R (|R| = n) ist die Wahrscheinlichkeit, dass an zwei zufälligen Positionen des Textes die Zeichen gleich sind. Sei R = {r1 , . . . , rn }. Sei l die Länge der Zeichenfolge m und li die Häufigkeit des Auftretens von ri in m. Also: l = n P li i=1 Gesamtzahl aller (ungeordneten) Paare von Positionen in m ist l 2 = l(l−1) . 2 Gesamtzahl aller (ungeordneten) Paare von Positionen mit gleichen Zeichen n n P P li (li −1) li ist . = 2 2 i=1 i=1 Die Wahrscheinlichkeit, dass an zwei zufällig gewählten Positionen in m der gleiche Buchstabe steht, ist also: κ(m) = Ist l groß und setzen wir pi = des Zeichens ri , so gilt: κ(m) ≈ (Tatsächlich ist n P i=1 n P i=1 li (li − 1) l(l − 1) li für die l n P p2i . i=1 Wahrscheinlichkeit des Auftretens p2i die Wahrscheinlichkeit, an zwei (nicht notwendig ver- schiedenen!) zufällig gewählten Positionen ein gleiches Zeichen zu finden. 7 William Frederic Friedman (1891-1969) hat statistische Methoden in die Kryptologie eingeführt. 34 Durch leichte Umformungen in der Definition von κ(m) zeigt man κ(m) = n P i=1 p2i 1− 1 l − 1 l−1 ≈ n P l groß i=1 p2i .) Wir nehmen jetzt n = 26 an, R = {0, 1, . . . , 25} als Codierung für {A, . . . , Z}. In langen deutschsprachigen Texten m ist κ(m) ≈ κd := 0, 0762 (ergibt sich aus den Buchstabenhäufigkeiten in deutschen Texten). Für lange Texte m mit l1 = l2 = . . . l26 (Zufallstexte) gilt: κ(m) ≈ κz := 26 P 1 2 1 ( 26 ) = 26 ≈ 0, 0385. i=1 Also: In deutschsprachigen Texten treten gleiche Buchstaben an zwei zufällig (unabhängig) gewählten Positionen etwa doppelt so häufig auf wie in zufällig erzeugten Texten. (zum Vergleich: κengl ≈ 0, 0669, κruss ≈ 0, 0561, κholl ≈ 0, 0798) Was hilft der Koinzidenzindex zur Bestimmung der Periode d einer polyalphabetischen Verschlüsselung? Zerlege den Chiffretext c in die d monoalphabetisch verschlüsselten Teiltexte: (Pos. 1, d + 1, 2d + 1, . . . Pos. 2, d + 2, 2d + 2, . . . Pos. d, 2d, 3d, . . .) Wir nehmen an, dass diese verschieden monoalphabetisch verschlüsselt wurden. (Bei Vigenère bedeutet dies, dass das Schlüsselwort aus lauter verschiedenen Buchstaben besteht.) Wählt man zwei Positionen innerhalb eines solchen Teiltextes, so ist die Wahrscheinlichkeit für zwei gleiche Buchstaben ≈ κd = 0, 0762. Wählt man zwei Positionen, die in verschiedenen Teiltexten liegen, so ist die Wahrscheinlichkeit für zwei gleiche Buchstaben annähernd die eines Zufallstextes, also ≈ κz = 0, 0385. [Anmerkung: Letztere Aussage trifft nur zu, wenn die Permutationen, die die monoalphabetischen Substitutionen bewirken, die Häufigkeit jedes Buchstaben insgesamt gleichmäßig verteilen, d.h. für jedes r ∈ R soll gelten: 1 X 1 p(σ −1 (r)) ≈ , |M| σ∈M 26 35 wobei M die Menge der auftretenden Permutationen und p(x) für x ∈ R die relative Häufigkeit des Buchstabens x in (langen) deutschsprachigen Texten bezeichnet. Begründung: Sei M = {σ1 , . . . , σd }, also |M| = d. Die Wahrscheinlichkeit für zwei gleiche Buchstaben in zwei zufällig gewählten Positionen in verschiedenen Teiltexten ist: = ≈ V or. = = 1 d(d − 1) 1 d(d − 1) 1 d(d − 1) 1 d(d − 1) 1 d(d − 1) d d X X X −1 −1 ( p(σi (r))p(σj (r)) − p(σi−1 (r))2 ) r∈R i,j=1 i=1 X X X X (( p(σi−1 (r)) · p(σj−1 (r)) − p(σi−1 (r))2 ) r∈R X i j X 1 1 (d · ·d· − p(σi−1 (r))2 ) 26 26 i r∈R d2 X X [ − p(σi−1 (r))2 ] 26 i r∈R d2 X X [ − p(r)2 ] 26 i r∈R | {z } 2 ≈κd ≈ 26 2 ≈ 1 d 2d d−2 1 [ − ]= · d(d − 1) 26 26 d − 1 26 ≈ 1 26 i für große d. ] Sei nun l die Länge des Chiffretextes c, sein Koinzidenzindex κ(c). Da es d Teiltexte mit je etwa dl Zeichen gibt, gibt es insgesamt ungefähr l(l − d) 1 l l · ( − 1) · d = 2 d d 2d (ungeordnete) Paare von Positionen in c innerhalb der Teiltexte und 1 · 2 l l2 (d − 1) ·( l− )= 2d | {z d} Mögl. l |{z} Anz. an 1. Pos. Anz. Mögl. an 2. Pos. (ungeordnete) Paare von Positionen in c aus verschiedenen Teiltexten. Die Zahl der (ungeordneten) Paare von Positionen innerhalb c mit gleichen Buchstaben ist danach ungefähr: 36 l2 (d − 1) l(l − d) · 0, 0762 + · 0, 0385 2d 2d aller (ungeordneten) Paare, so Dividiert man durch die Gesamtzahl l(l−1) 2 erhält man eine Approximation von κ(c): κ(c) ≈ l−d l(d − 1) · 0, 0762 + · 0, 0385 (l − 1)d (l − 1)d Diese Gleichung “ läßt sich nach d auflösen. Es ergibt sich ” d≈ 0, 0377l (l − 1)κ(c) − 0, 0385l + 0, 0762 Da sich κ(c) = 26 P i=1 li (li − 1) l(l − 1) , li = Anzahl des Buchstabens ri in c, berechnen lässt, erhält man damit eine Abschätzung für d. Diese Abschätzung gibt jedenfalls die Größenordnung von d an und kann mit den beiden anderen Methoden zur Bestimmung von d kombiniert werden. Beispiel: Wir verwenden wieder den Text von Seite 33 und bestimmen die Häufigkeitsverteilung der Buchstaben. Häufigkeitsverteilung der Buchstaben: Buchstabe A B C D E F G H I Anzahl l1 − l9 5 8 8 4 32 22 13 14 30 37 rel. Häufigkeit 1,60% 2,50% 2,50% 1,30% 10,00% 6,90% 4,10% 4,40% 9,40% Buchstabe J K L M N O P Q R S T U V W X Y Z Anzahl l10 − l26 11 9 13 9 10 13 5 3 15 16 11 14 19 4 11 15 6 rel. Häufigkeit 3,40% 2,80% 3,10% 2,80% 3,10% 4,10% 1,60% 0,90% 4,70% 5,00% 3,40% 4,40% 5,90% 1,30% 3,40% 4,70% 1,90% Koinzidenzindex des verschlüsselten Textes c: X κ(c) = ( li (li − 1))/l(l − 1) = 0, 048 Es handelt sich also nicht um einen monoalphabetisch verschlüsselten Text (d.h. die Länge des Schlüsselworts ist größer als 1). Die Anwendung der Friedman-Formel d ≈ 0, 0377 · l/((l − 1) · κ(c) − 0, 0385 · l + 0, 0762) auf den Chiffretext von Seite 33 mit den Werten l = 320 und κ(c) = 0, 048 liefert die Abschätzung d ≈ 3, 93. Wir nehmen jetzt (unter Berücksichtigung des Kasiski-Tests aus 2.7) d = 5 an und ermitteln die Buchstabenhäufigkeiten der fünf Teiltexte, die sich aus den Buchstaben an den Positionen i, d + i, 2d + i, . . . für i = 1, 2, 3, 4, 5 ergeben. 38 Tabelle 4: Teiltexte 1-5 Da der Gesamttext mit Vigenère-Chiffrierung verschlüsselt wurde, entstanden die Teiltexte durch Verschiebe-Chiffren aus den entsprechenden Teiltexten des Klartextes. Teiltext 1: Offenbar steht F für den Klartextbuchstaben E. Verschiebung ∧ um 1 = B. Teiltext 2: Aus der Häufigkeit von E entnimmt man, dass hier keine Ver∧ schiebung, d.h. Verschiebung um 0 = A vorliegt. (Ist das der Fall, so kommt allerdings der in deutschen Texten relativ häufige Buchstabe R in dem zweiten Klartextstück überhaupt nicht vor.) Teiltext 3: Dieser Teiltext hat keine typische Häufigkeitsverteilung. Kandidaten für den Klartextbuchstaben E sind die Chiffretextbuchstaben H oder Y. Im ersten Fall würde Q für N stehen, d.h. der zweithäufigste Buchstabe in deutschen Texten würde in diesem Klartextstück nicht auftauchen. Die Wahl von Y für E ist plausibler. Dann Verschiebung ∧ um 20 = U. Teiltext 4: Offenbar steht I für den Klartextbuchstaben E. Verschiebung ∧ um 4 = E. 39 Teiltext 5: Am wahrscheinlichsten ist, dass V für den Klartextbuchstaben ∧ E steht. Verschiebung um 17 = R. Demnach ist das Schlüsselwort BAUER und der Klartext lautet (mit Satzzeichen): Es mag ueberraschen, dass man von einem vorgelegten monoalphabetisch chiffrierten Text leichter sagen kann, ob er englisch oder franzoesisch ist, als ihn zu entschluesseln. Dies gilt natuerlich auch fuer Klartext: es gibt ein einfaches Verfahren, genuegend langen Klartext auf Zugehoerigkeit zu einer bekannten Sprache zu untersuchen, ohne seine Syntax oder Semantik zu betrachten. (Aus: F.L.Bauer, Entzifferte Geheimnisse [5]) Aufgabe: Der folgende Chiffretext entstand durch polyalphabetische periodische Verschlüsselung eines deutschsprachigen Texts. Versuchen Sie ihn zu entschlüsseln. GQGOEQ XYGDHJ RYGPTW CVCLET WMROCV MJXIFZ CTRIFF DQWCBS XYGBWT TICRTT BYGPTV GQGOCJ EGTGBE UAHDPE CQGBDJ RYZOEJ OYZEHY GTCRHT CTEHVI NCVRWA WYEFUF GOVOOT OTUPKY NEYRDF XZTRQG UBVRQZ OPCRUG OBCHTH SLREWT D DJGBGT GOVVIT FYZCWF YOUUWT MBRKTZ ZYXVZT UCRVBL GQXNWT FECRQT SLTCEF DYEYDB DJKVWV XMCGBT UBCJVI OPCBDJ XOKVHT DLVRJZ HLCHVI SEZVTT BYGDPT YOYMDG HMCJFT UEVLQT GORREL GPJAEN XEVLBJ HYPKTG HJCJUT WAHYHT ULRIFI PYYUDJ DORIFF UMCRIT XOCRGH DVCADQ OPXOTW XYGBDJ HYZJDT ZBAOAW OBIDPT GTCRXT HZCGBT 40 WPCYHT MBWPTW HEYOAF WYHGZH OBLSTA GKZOTW RZTRET UEHVDZ WAHYHT HYGGHI GOAOTQ XOCRQG RYGLEL OLVRJZ FYZCWF MMVGVI RYZFPF XVCMWC DMCJUC RYZEDG YPXOAT TEGRKH WPCYJT GEVLQT REGRGG GSCHQT HPAOAW NYJAEQ DLVRJG REXGWZ GLCFBO CBRTOJ CLVOUZ DWVRCF XGKDBV XMKJJK WWCHVI XJCFZG UXEHVI XPVNDJ GOXHDQ OPWOTW WBCJDG OXTPHN OYWYWC OPIBEZ GLKSUF RYZREC UYGFDZ DYZDDQ GTIHUF QKCRGT GQGCEL QKCLUZ OAHVQK MTKRJT 2.9 Nichtperiodische polyalphabetische Verschlüsselungen Nichtperiodische polyalphabetische Verschlüsselungsverfahren, auch Lauftextverschlüsselungen genannt, erfüllen die Eigenschaft Länge Schlüsselfolge ≥ Länge Klartext. Man bezeichnet sie auch als Vernam-Chiffren 8, insbesondere wenn das Alphabet {0, 1} zugrunde liegt. Wird eine Vigenère-Chiffre mit genügend langem ’Schlüsselwort’gewählt (d.h. Länge Schlüsseltext ≥ Länge Klartext), so bestehen kryptoanalytische Möglichkeiten, falls das Schlüsselwort ein sinnvoller Text ist (z.B. fortlaufender Text eines Buches; als auszutauschenden Schlüssel benötigt man dann nur Seite, Zeile und Position des ersten Schlüsselwortbuchstabens in der Zeile). Dies beruht auf einer Beobachtung des Kryptologen William Friedman (1891 – 1969), dass in diesem Fall ein hoher Anteil der Geheimtextbuchstaben durch Addition häufig auftretender Klartextbuchstaben mit häufig auftretenden Schlüsseltextbuchstaben entsteht.9 In jedem Fall sollten daher bei Lauftextverschlüsselungen durch Addition von Schlüsseltexten Zufallsfolgen von Buchstaben als Schlüsseltexte genommen werden.10 Bei der Wahl von Zufallsfolgen als Schlüsseltexte lassen sich tatsächlich theoretisch sichere Kryptosysteme konstruieren. Zur Verdeutlichung dieser Tatsache nehmen wir an, dass alle Nachrichten binär kodiert sind, d.h. R = {0, 1}, und der ’Schlüsseltext’ ebenfalls eine Folge von Bits ist. Die Verschlüsselung erfolgt dann durch stellenweise Addition modulo 2 (XOR, ⊕) von Klartextbits und Schlüsseltextbits. Ist der Schlüsseltext eine echte Zufallsfolge, so nennt man dieses Verfahren One-time-pad. Was heißt Zufallsfolge von Bits? 8 nach G. Vernam (AT&T) siehe z.B. Bauer [5] 10 Auf die Problematik der Erzeugung von Zufallsfolgen werden wir an späterer Stelle eingehen. 9 41 Von einer Folge (von Nullen oder Einsen) zu sagen, sie sei eine Zufallsfolge, ist eigentlich sinnlos. Entscheidend ist vielmehr, wie sie erzeugt wurde. Eine Zufallsfolge (an )n∈N oder (an )n=1,...,m , an ∈ {0, 1}, ist eine Folge von Werten unabhängiger, gleichverteilter binärer Zufallsvariablen, also der Output einer binären symmetrischen Quelle. D.h. jedes an ist mit Wahrscheinlichkeit 21 gleich 0 oder 1; der Wert jedes an ist unabhängig von den Werten von a1 , . . . , an−1 (Münzwurf). Das One-time-pad ist (unter gewissen Voraussetzungen) perfekt sicher. Was heißt das? Diese Frage behandeln wir im nächsten Kapitel. 42 3 Perfekte Sicherheit von Chiffrierverfahren Gegeben sei ein Chiffrierverfahren und eine Verschlüsselungsfunktion E. M sei die Menge aller möglichen Klartexte; M sei endlich. K sei die Menge aller möglichen Schlüssel des Verfahrens; K sei endlich. C sei die Menge aller möglichen Chiffretexte, d.h. C = {c : ∃ x ∈ M, k ∈ K mit E(x, k) = c}. Für Klartexte gebe es eine Wahrscheinlichkeitsverteilung prM . Schlüssel werden unabhängig von den Klartexten entsprechend einer Wahrscheinlichkeitsverteilung prK gewählt. Dann haben wir eine Wahrscheinlichkeitsverteilung auf M × K: pr(x, k) = prM (x)prK (k) für x ∈ M, k ∈ K. Wir setzen pr(x) := pr({(x, k) : k ∈ K}) = prM (x) und pr(k) := pr({(x, k) : x ∈ M}) = prK (k). Für einen Chiffretext c ∈ C setzen wir pr(c) := pr({(x, k) : x ∈ M, k ∈ K, E(x, k) = c}), die Wahrscheinlichkeit, dass c als Chiffretext bei einer Verschlüsselung erscheint. 3.1 Definition (Perfekte Sicherheit) Ein Chiffrierverfahren heißt perfekt sicher, wenn für jeden Klartext m und jeden Chiffretext c gilt: pr(m|c) = pr(m). Bedeutung: pr(m) ist wie oben die a-priori-Wahrscheinlichkeit für Klartext m. pr(m|c) ist die a-posterio-Wahrscheinlichkeit für Klartext m, wenn man weiß, dass der Chiffretext c ist. 43 Dies ist eine bedingte Wahrscheinlichkeit: pr(“m und c“) pr(c) pr({(m, k) : k ∈ K} ∩ {(x, k) : x ∈ M, k ∈ K, E(x, k) = c}) = pr(c) pr({(m, k) : k ∈ K, E(m, k) = c}) = pr(c) pr(m|c) = Beispiel: Verschiebechiffre: m = HALLO, c = XRYTY. Dann pr(m|c) = 0. Bedingung für perfekte Sicherheit besagt: Wenn ich c kenne, ist die Wahrscheinlichkeit dafür, dass m der zugehörige Klartext ist genauso groß wie sie es war, bevor ich c kannte. Kenntnis von c macht keinen Klartext wahrscheinlicher oder unwahrscheinlicher. Satz von Bayes: Perfekte Sicherheit ⇔ pr(c) = pr(c|m) ∀ m ∀ c, Wahrscheinlichkeit von c ist unabhängig vom Klartext. 3.2 Satz (Shannon11, 1949) Die Bezeichnungen seien wie oben gewählt. Ist prK die Gleichverteilung auf K und existiert zu jedem Klartext m und jedem Chiffretext c genau ein Schlüssel k ∈ K mit E(m, k) = c, so ist das Verschlüsselungsverfahren perfekt sicher. (Ist prM (m) > 0 ∀ m ∈ M und |K| = |C|, C die Menge aller Chiffretexte, so gilt auch die Umkehrung.) Beweis: Für jeden Klartext m und jeden Schlüsseltext c gibt es genau einen Schlüssel k = k(m, c) mit E(m, k) = c. 1 pr(m) |K| pr(m)pr(c|m) P = pr(m|c) = Bayes pr(c) pr(x) pr(k(x, c)) | {z } x∈M 1 |K| pr(m) = P = pr(m). pr(x) x∈M 11 Claude Shannon, 1916 - 2001, u.a. MIT 44 Ist das One-time-pad perfekt sicher? Nicht, wenn wir beliebige (ggf. nach oben beschränkte) Längen von Klartexten zulassen; denn ist l(m) 6= l(c), so ist pr(m|c) = 0, egal welche Wahrscheinlichkeit m hatte. Halten wir die Klartextlänge aber fest, so gilt perfekte Sicherheit. 3.3 Satz (Perfekte Sicherheit des One-time-pads) Sei n ∈ N. Sei En : {0, 1}n → {0, 1}n das Verschlüsselungsverfahren mit dem One-time-pad, d.h. M ⊆ {0, 1}n , K = {0, 1}n = C. Wird bei der Verschlüsselung von Klartexten immer ein Schlüssel (aufs Neue) gleichverteilt zufällig gewählt, so ist das One-time-pad perfekt sicher. Beweis: Das folgt sofort aus 3.2. Wichtig: Schlüssel darf nur einmal verwendet werden! Wird ein Schlüssel zweimal verwendet, m1 ⊕ k = c1 m2 ⊕ k = c2 , so ist c1 ⊕c2 = m1 ⊕m2 ; dies ist eine Vernam-Verschlüsselung eines sinnvollen Textes (m1 ) mit einem sinnvollen Text (m2 ), Ergebnis c1 ⊕ c2 bekannt. Dies liefert Angriffsmöglichkeiten (siehe 2.9). Außerdem: Bei Mehrfachverwendung des Schlüssels k wird das System bei einem Knownplaintext-Angriff sofort gebrochen: Ist m ⊕ k = c, m, c bekannt, so auch k = m ⊕ c bekannt. 45 4 Symmetrische Blockchiffren Wir betrachten im Folgenden Blockchiffren über einem Alphabet R (Klartextalphabet = Chiffretextalphabet = R). Klartexte sind Folgen von Zeichen aus R, im wichtigen Fall R = Z2 = {0, 1} also Bitfolgen (z.B. durch Codierung mit ASCII-Code entstanden). Eine solche Zeichenfolge wird in Blöcke einer festen Länge n zerlegt. Diese Blöcke werden verschlüsselt. Wir betrachten zunächst die Situation, dass zwei gleiche Blöcke des Klartextes auch gleich verschlüsselt werden (d.h. dies entspricht einer monoalphabetischen Substitution über dem Alphabet Rn ). Es gibt andere Betriebsarten von Blockchiffren, bei denen die Verschlüsselung eines Blocks von der Verschlüsselung der vorangehenden Blöcke abhängt (also von seiner Position im Text; vgl. polyalphabetische Verschlüsselungen). Auf diese Betriebsarten von Blockchiffren werden wir später eingehen. Wir beschränken uns für den Moment auf R = Z2 und nehmen ferner an, dass Blöcke der Länge n über Z2 wieder in Blöcke der Länge n über Z2 verschlüsselt werden (was häufig der Fall ist). Dann gibt es also (2n )! Blockchiffren (mit Blöcken der Länge n über Z2 ), nämlich alle Permutationen der 2n Blöcke der Länge n. Wenn man alle diese Permutationen der 2n möglichen Klartextblöcke über Z2 zur Verschlüsselung zulässt, so besteht die Schlüsselmenge aus allen (2n )! dieser Permutationen. Die Codierung einer Permutation (also eines Schlüssels) erfordert dann mindestens s Bits, wobei 2s−1 ≤ (2n )! < 2s . √ n n Nach der Stirling-Approximation ist (2n )! ≈ π · 2n+1 ( 2e )2 , also √ n n s ≈ log2 ( π · 2n+1 · ( 2e )2 ) = 12 (n + 1) + 12 log2 π + 2n · (n − log2 e) ≈ 21 (n + 2) + 2n · (n − 1, 44) [ Die übliche Codierung eines Schlüssels (= Permutation der 2n Blöcke) wäre, die Permutation so anzugeben, dass zunächst das Bild des Blockes (0, . . . , 0) ←n→ angegeben wird (n Bits), dann das Bild des Blockes (0, . . . , 0, 1), . . ., schließlich das Bild des Blockes (1, . . . , 1). Dies erfordert n · 2n Bits. ] Bei der in der Praxis üblichen Blocklänge von n = 64 oder n = 128 (oder sogar mehr) sind solche Schlüssellängen natürlich illusorisch. Beispiel: n = 64 Schlüssellänge: s = 264 ·26 = 270 ≈ 1021 Bits; die etwas schärfere Abschätzung 46 mit der Stirling-Approximation liefert eine Schlüssellänge von ≈ 1, 95 · 269 Bits, also keine entscheidende Verbesserung. Zur Speicherung eines Schlüssels werden ca. 700 Millionen Festplatten mit einer Kapazität von je 200 GByte benötigt. Daher beschränkt man sich in der Praxis auf kleine Teilmengen von Blockchiffren, für die die Schlüssel (also die Permutationen) mit geringer Bitlänge codiert werden können. Wir geben im Folgenden ein erstes Beispiel an, nämlich affin-lineare Chiffren. Sie beruhen, wie viele andere Chiffren auch, auf Alphabeten, die kommutative Ringe sind. Dies hat den Vorteil, dass man die Elemente des Alphabets addieren und multiplizieren kann. Bei den affinen Substitutionschiffren in 2.1(b) haben wir hiervon schon Gebrauch gemacht. Die affinen Blockchiffren, die wir jetzt behandeln, sind eine Verallgemeinerung (von “Blöcken“ der Länge 1 auf Blöcke der Länge n ∈ N). Sie beruhen auf Operationen, die aus der linearen Algebra bekannt sind, nur dass die dort auftretenden Körper auch kommutative Ringe sein können. Wir stellen daher zunächst einmal die wesentlichen Hilfsmittel aus der linearen Algebra über kommutativen Ringen zusammen, wobei wir auf Beweise verzichten. 4.1 Lineare Algebra über kommutativen Ringen Im folgenden sei R immer ein kommutativer Ring mit 1. D.h. R erfüllt alle Axiome eines Körpers, nur müssen die von 0 verschiedenen Elemente von R nicht notwendig ein Inverses bezüglich der Multiplikation besitzen. Diejenigen Elemente, die ein multiplikatives Inverses besitzen, nennt man Einheiten von R. Die Menge aller Einheiten des Rings R bezeichnet man mit R∗ . Beispiele: a) Z ist kommutativer Z∗ = {1, −1}. Ring mit 1. Die Einheiten sind 1 und −1, also b) Sei n eine natürliche Zahl. Zn = {0, . . . , n − 1} ist der Ring der ganzen Zahlen modulo n. Man addiert und multipliziert modulo n: Addition (Multiplikation) wie in Z, dann Division durch n mit Rest r, 0 ≤ r ≤ n − 1; der Rest ist das Ergebnis der Addition (Multiplikation) in Zn . Das additive Inverse von i ist also n − i. Welches sind die Einheiten in Zn ? 47 Das haben wir schon in 2.1(b) überlegt: a Einheit in Zn ⇔ ggT(a, n) = 1 Z.B.: Einheiten in Z10 : Z∗10 = {1, 3, 7, 9} Ist n = p eine Primzahl, so sind alle von 0 verschiedenen Elemente Einheiten: Zp ist Körper. Die Berechnung der multiplikativen Inversen der Einheiten in Z∗n geschieht z.B. mit dem erweiterten Euklidischen Algorithmus, wie in 2.1(b) beschrieben. Wie über Körpern kann man über Ringen Vektoren und Matrizen bilden: Rn = {(r1 , . . . , rn )|ri ∈ R} R(n,k) = r11 . . . r1k .. .. | r ∈ R . ij . . rn1 . . . rnk Also: Rn = R(1,n) Matrizenaddition und -multiplikation wie über Körpern. Ebenso kann man die Determinante einer quadratischen Matrix berechnen: n=1: A = (a11 ) = (a) : n>1: A ∈ R(n,n) : det(a) = a n P det A = (−1)i+j aij det Ai,j ∈ R j=1 (Entwicklung nach der i-ten Zeile) Ai,j entsteht aus A durch Streichen der i-ten Zeile und j-ten Spalte. Ebenso: det A = n P (−1)i+j aij det Ai,j (Entwicklung nach der j-ten Spalte) i=1 Beispiel: R = Z6 0 2 5 A= 1 3 1 4 3 1 Rechne über Z, reduziere dann modulo 6. 48 det A det A 1 3 1 1 3 1 + 5 · det − 2 · det = 0 · det 4 3 4 1 3 1 = −2 · (1 − 4) + 5 · (3 − 12) = 6 − 45 = −39 ≡ 3 (mod 6) = 3 (in Z6 ) Wann besitzt eine Matrix A ∈ R(n,n) eine Inverse A−1 ? Forderung: A · A−1 = A−1 · A = En = 1 0 .. . 0 1 Kriterium: A ∈ R(n,n) besitzt Inverse ⇔ det A ist Einheit in R. Setzt man bij = (−1)i+j det Aj,i, Aj,i wie oben, B = (bij ), so gilt A−1 = (det A)−1 · B. Beispiel: R = Z6 a) Die obige 3 × 3-Matrix ist nicht invertierbar, da det A = 3, und 3 ist keine Einheit in Z6 . 1 3 b) A = 2 − 9 = −7 ≡ 5 (mod 6) , 3 2 d.h. det A = 5 und A ist invertierbar in R(2,2) . (det A)−1 = 5 (denn 5 · 5 mod 6 = 1) 2 −3 2 3 4 3 A−1 = 5 · =5· = −3 1 3 1 3 5 4.2 Affine Blockchiffren Klartexte seien codiert über einem Alphabet Zk für ein k ∈ N. Klartexte werden zerlegt in Blöcke der Länge n, d.h. in Elemente aus Znk . Die Blöcke werden einzeln in derselben Weise verschlüsselt: Eine affine Blockchiffre ordnet jedem v = (r1 , . . . , rn ) ∈ Znk das Element (n,n) vA + b ∈ Znk zu, wobei A ∈ Zk , b ∈ Znk . Schlüssel ist das Paar (A, b). inDamit die Chiffrierung v 7→ vA+b injektiv ist, muss die Matrix A in Zk vertierbar sein, d.h. det A muss eine Einheit in Zk sein (also ggT(det A, k) = 1). (n,n) 49 Die Dechiffrierung von w = vA + b erfolgt dann durch v = (w − b)A−1 . Wird der Schlüsselraum eingeschränkt auf alle (A, b) mit b = 0 (v 7→ vA, A Schlüssel), so spricht man von linearen Blockchiffren. Sie werden auch Hill-Chiffren genannt.12 Beachte: Ist v = (r1 , . . . , rn ), vA + b = (s1 , . . . , sn ), so hängt jedes si in der Regel von allen r1 , . . . , rn ab. Es handelt sich bei affinen Blockchiffren also nicht um Substitutionschiffren, die jedes Element des Alphabets Zk einzeln substituieren. Beispiel: R = Z6 , n = 2 1 3 Wir wählen A = aus dem zweiten Beispiel am Ende von 4.1. A ist 3 2 4 3 (2,2) −1 in Z6 invertierbar, A = . Sei b = (3, 5). 3 5 Verschlüsselungdes Klartextblockes v = (1, 2): 1 3 vA + b = (1, 2) + (3, 5) = (1, 1) + (3, 5) = (4, 0) = w. 3 2 Entschlüsselung: −1 (w − b)A = ((4, 0) − (3, 5)) 4 3 3 5 = (1, 1) 4 3 3 5 = (1, 2) = v. Wie groß ist die Anzahl der Schlüssel bei linearen Blockchiffren? Beispiel: R = Z2 , n = 64 Schlüssel A 64 × 64 -Matrix über Z2 mit Determinante 1 Schlüssellänge: 642 = 212 = 4096 Bits (falls man die Matrix als 64 × 64 -array speichert.) Anzahl der Schlüssel: |GL(64, 2)| = (264 − 1)(264 − 2) . . . (264 − 263 ) ≈ 0, 29 · 24096 64 21 [Winzig im Vergleich zu 264 ! ≈ 22 ·62,56 ≈ 210 , der Anzahl aller Blockchiffren der Länge 64.] Einige spezielle Chiffrierverfahren lassen sich als affine Blockchiffren auffassen: 12 Lester S. Hill (1891-1961), 1929 50 Beispiele: a) Die Vigenère-Chiffre ist eine affine Blockchiffre über werden sämtliche (En , b), b ∈ Zn26 verwendet: v 7→ v + b Z26. Als Schlüssel (b ist das Schlüsselwort“, ” n ist die Periode der Vigenère-Chiffre.) b) Zu Beginn von Kapitel 2 hatten wir sog. (Block-) Transpositionschiffren erwähnt. Der Schlüssel ist eine Permutation σ auf {1, . . . , n}. Ein Block (r1 , . . . , rn ) wird verschlüsselt zu (rσ(1) , . . . , rσ(n) ). Diese Chiffren lassen sich als lineare Blockchiffren auffassen: Sei Pσ = (pij ) die folgende Permutationsmatrix. 0 für i 6= σ(j) pij = 1 für i = σ(j) Dann ist (r1 , . . . , rn )Pσ = (rσ(1) , . . . , rσ(n) ) Pσ−1 = Pσ−1 (gilt über jedem Ring R, z.B. R = Z26 ) 4.3 Kryptoanalyse affiner Blockchiffren Die Kryptoanalyse affiner Blockchiffren kann bei einem Ciphertext-only-Angriff schwierig sein. Bei einem Known-Plaintext-Angriff sind sie jedoch leicht zu knacken: Ausgangssituation: Schlüssel (A, b) ist festgelegt worden, A ∈ Zk (n,n) Verschlüsselungsfunktion: v 7→ vA + b, v ∈ Znk , b ∈ Znk . Angreifer will (A, b) bestimmen. Wir gehen davon aus, dass er n + 1 Klartextblöcke v0 , . . . , vn und die zugehörigen chiffrierten Blöcke w0 , . . . , wn kennt. v1 − v0 .. Wir nehmen an, dass det eine Einheit in Zk ist. . vn − v0 Q p−1 k (Das passiert häufig, da ϕ(k) = k · ≥ 6 ln(ln(k)) für k ≥ 5 nach p p Primzahl p|k ϕ(k) 1−δ k→∞ k einem Satz von Rosser und Schoenfeld; überdies ist lim 51 = ∞ für jedes δ > 0. Bei einem Chosen-Plaintext-Angriff kann man natürlich sicherstellen, dass die angegebene Determinante eine Einheit ist.) v1 − v0 w1 − w0 (n,n) .. .. Setze V = W = , ∈ Zk . . vn − v0 wn − w0 Dann gilt: V A = W . Da det V eine Einheit in Zk ist, existiert V −1 . Es folgt: A = V −1 W und b = w0 − v0 A (Ist die Chiffre sogar linear, so benötigt man nur v1 , . . . , vn und bestimmt a wie oben (mit v0 = w0 = 0).) Beispiel: Ang.: Blocklänge n = 2, k = 26 Angenommen wir wissen, dass der Klartext HERBST in den Chiffretext NEBLIG verschlüsselt wurde. D.h.: V = 7 4 17 1 18 19 −→ 13 4 1 11 8 6 v0 v1 v2 w0 w1 w2 v1 − v0 v2 − v0 = 10 23 11 15 W = w1 − w0 w2 − w0 10 · 15 − 23 · 11 = 150 − 253 = −103 ≡ 1 (mod 26), 15 3 15 −23 −1 = V = 15 10 −11 10 = 14 7 21 2 det V = 1 in Z26 −1 = V W 15 3 14 7 210 + 63 105 + 6 13 7 = = = 15 10 21 2 210 + 210 105 + 20 4 21 13 7 b = w0 − v0 A = (13, 4) − (7, 4) = (13, 4) − (107, 133) = (10, 1) 4 21 A Test: 13 7 + (10, 1) = (225, 140) + (10, 1) = (1, 11) = w1 v1 A + b = (17, 1) 4 21 13 7 + (10, 1) = (310, 525) + (10, 1) = (8, 6) = w2 v2 A + b = (18, 19) 4 21 52 4.4 Hintereinanderausführung von Blockchiffren, Diffusion und Konfusion Die Sicherheit von Blockchiffren kann erhöht werden, indem mehrere Blockchiffren hintereinander ausgeführt werden (Produkt von Blockchiffren, Überchiffrierung). Wichtig dabei ist, dass die Hintereinanderausführung zweier Blockchiffren nicht wieder eine Blockchiffre derselben Art ist (Gruppeneigenschaft darf nicht erfüllt sein). Z.B. ist die Hintereinanderausführung zweier affiner oder linearer Blockchiffren wieder eine affine oder lineare Blockchiffre; hier bringt die Hintereinanderausführung nichts. Ziel solcher Hintereinanderschachtelungen ist es u.a., zwei Eigenschaften von Blockchiffren sicherzustellen, die Claude Shannon in einer seiner grundlegenden Arbeiten zur Kryptographie 1949 als wesentlich für die Sicherheit von (Block-)Chiffren formuliert hat: Diffusion: Statistische Auffälligkeiten (Häufigkeiten von Einzelzeichen etc.) eines Klartextes sollen im Chiffretext “verwischt“ werden. Dies bedeutet, dass jedes Zeichen eines Chiffretextblockes von mehreren Zeichen des Klartextblockes abhängen soll und umgekehrt soll jede Änderung eines Zeichens des Klartextblockes Änderungen von mehreren Zeichen im Chiffretextblock zur Folge haben (bei gleichem Schlüssel). Konfusion: Aus statistischen Eigenschaften des Chiffretextes soll nicht in einfacher Weise auf den verwendeten Schlüssel zu schließen sein. Insbesondere soll jedes Zeichen eines Chiffretextblockes von mehreren Zeichen des Schlüssels abhängen. Beispiel: Lineare Chiffren: v → vA, n × n-Matrix A als Schlüssel. Lineare Chiffren haben die Eigenschaft der Diffusion. Konfusion: Chiffretextbit an Stelle i hängt von allen Einträgen der i-ten Spalte von A ab (schwache Form der Konfusion). Wir vermerken an dieser Stelle, dass in der Literatur die Begriffe “Diffusion“ und “Konfusion“ nicht immer einheitlich verwendet werden. Eine der wichtigsten Typen von Blockchiffren, die durch Hintereinanderschachtelungen mehrerer einfacherer Blockchiffren entstehen, behandeln wir im folgenden Abschnitt. 53 4.5 Feistel-Chiffren Feistel-Chiffren sind benannt nach dem IBM-Ingenieur Horst Feistel (19151990), der 1971 einen Chiffrieralgorithmus namens LUCIFER entwickelte, welcher als Vorläufer des DES (Data Encryption Standard) anzusehen ist. Das typische Konstruktionsprinzip von LUCIFER ist in der Definition von Feistel-Chiffren beinhaltet. Auf den DES werden wir im nächsten bzw. übernächsten Abschnitt eingehen. Feistel-Chiffren realisieren den Vorschlag Shannons, alternierende Folgen von Block-Substitutionen und Transpositionen zur Diffusions- und Konfusionserzeugung zu verwenden, und beruhen außerdem auf der Idee, aus einem (kurzen) Ausgangsschlüssel eine Folge von Schlüsseln für die Substitutionen zu erzeugen. Klartextblock v R0 L0 K1 + Zutaten für eine Feistel-Chiffre: Eine Menge K der möglichen sogenannten Rundenschlüssel und zu jedem K ∈ K eine Funktion fK : Zt2 → Zt2 . Konstruktion der Feistel-Chiffre (zur gegebenen Blockchiffre): Feistel-Chiffre ist Blockchiffre über Z2 , Blocklänge 2t. Festlegung einer Rundenzahl r ≥ 1 und eines Schlüsselraums KF (i. Allg. KF 6= K). Wahl einer Methode, die aus einem Schlüssel k ∈ KF eine Folge K1 , . . . Kr ∈ K von Rundenschlüsseln erzeugt.13 Verschlüsselungsfunktion Ek (zum Schlüssel k ∈ KF ) der Feistel-Chiffre: Sei v ein Klartextblock der Länge 2t (d.h. v ∈ Z Teile v in zwei Hälften der Länge t auf: v = (L0 , R0 ) ↑ ↑ linke Hälfte rechte Hälfte f L1 R1 K2 + f L2 R2 L r-1 R r-1 Kr + f 2t 2 ). Lr Rr Chiffretextblock E k (v) 7: Konstruiere eine Folge (Li , Ri ), i = 1, . . . , r − 1 nach fol- Abbildung Schematischer Abgender Vorschrift: lauf einer Feistel(Li , Ri ) = (Ri−1 , Li−1 ⊕ fKi (Ri−1 )) 13 Chiffrierung Wie eine solche Methode realisiert werden kann, sehen wir im nächsten Abschnitt. 54 [Also: (Li−1 , Ri−1 ) Substitution des linken Teilblocks durch Addition des Schlüsselworts“ fK (Ri−1 ) −”−−−−−−−−−−−−−i−−−−→ (Li−1 ⊕ fKi (Ri−1 ), Ri−1 ) −−−−−−−−−−−−→ (Ri−1 , Li−1 ⊕ fKi (Ri−1 )) = (Li , Ri ) ] Transposition (Vertauschen der beiden Teilblöcke) Schließlich in der r-ten Runde: (Lr , Rr ) = (Lr−1 ⊕ fKr (Rr−1 ), Rr−1 ) [Hier keine Transposition mehr.] Ek (v) = (Lr , Rr ), Chiffretextblock Entschlüsselung: Wie Verschlüsselung, nur mit der Schlüsselfolge (Kr , Kr−1, . . . , K1 ). Begründung: Wir setzen L′0 = Lr , R0′ = Rr , Ki′ = Kr+1−i , i = 1, . . . , r. Wir verschlüsseln (L′0 , R0′ ) mit der Folge (K1′ , . . . , Kr′ ) und betrachten die Zwischenresultate (L′i , Ri′ ), i = 1, . . . , r. 1. Runde: (L′1 , R1′ ) = = (R0′ , L′0 ⊕ fK1′ (R0′ )) = (Rr , Lr ⊕ fKr (Rr )) (Rr−1 , Lr−1 ⊕ fKr (Rr−1 ) ⊕ fKr (Rr−1 ) | {z } | | {z } {z } Rr Rr Lr | 2. Runde: = (Rr−1 , Lr−1 ) {z (0,...0) ←−t−→ } (L′2 , R2′ ) = (R1′ , L′1 ⊕ fK2′ (R1′ )) = (Lr−1 , Rr−1 ⊕ fKr−1 (Lr−1 )) = (Rr−2 , Lr−2 ⊕ fKr−1 (Rr−2 ) ⊕ fKr−1 (Rr−2 )) = (Rr−2 , Lr−2 ) | {z } | {z } | {z } Lr−1 Lr−1 Rr−1 Am Ende der (r − 1)-ten Runde hat man dann: 55 ′ (L′r−1 , Rr−1 ) = (R1 , L1 ) r-te Runde: ′ ′ (L′r−1 ⊕ fKr′ (Rr−1 ), Rr−1 ) = (R1 ⊕ fK1 (L1 ), L1 ) (L′r , Rr′ ) = = (L0 ⊕ fK1 (R0 ) ⊕fK1 ( R0 ), R0 ) = (L0 , R0 ) = v |{z} |{z} | {z } =R1 L1 L1 Bemerkung: Die Rechnung zur Entschlüsselung zeigt, dass jede Verschlüsselungsfunkti2t on Ek : Z2t 2 → Z2 einer Feistel-Chiffre (und auch jede Rundenfunktion (Li−1 , Ri−1 ) → (Li , Ri )) bijektiv ist, gleichgültig, ob die fKi bijektiv sind oder nicht. Damit hat man natürlich eine große Anzahl an Wahlmöglichkeiten für die Substitutionsfunktionen fKi . Beachte: Man muss bei Feistel-Chiffren dafür sorgen, dass nicht alle Substitutionen (Li−1 , Ri−1 ) → (Li−1 ⊕ fKi (Ri−1 ), Ri−1 ) affin (oder sogar linear) sind, denn sonst ist die gesamte Feistel-Chiffre affin (bzw. linear) (Transpositionen sind linear nach Beispiel b) auf Seite 51). Dies bedeutet, dass nicht alle Ri−1 → fKi (Ri−1 ) affin sind. Denn: Ist fKi (Ri−1 ) = Ri−1 Ai + bi , Ai ∈ Z2 , bi ∈ Zt2 , (t,t) so ist (Li−1 ⊕ fKi (Ri−1 ), Ri−1 ) = (Li−1 , Ri−1 ) · 56 1 .. . Ai 0 1 1 .. . 1 + (bi , 0, . . . 0). ←−t−→ 4.6 Der ’Data Encryption Standard’ DES Bemerkungen zur Historie: 15.5.1973 Ausschreibung des NBS (National Bureau of Standards, heute NIST, National Institute of Standards and Technology) für einen standardisierten kryptologischen Algorithmus; keine geeigneten Kandidaten. 27.8.1974 Zweite Ausschreibung; einziger akzeptabler Vorschlag kommt von IBM, ist eine Weiterentwicklung von LUCIFER. 1974/75 Begutachtung des Verfahrens durch die NSA (National Security Agency), es werden Modifikationen und insbesondere eine Überarbeitung der Substitutionen vorgenommen. Gerüchte: Wurden dadurch Hintertüren von IBMMitarbeitern verhindert? Oder etwa eigene Hintertüren eingebaut? Entwurfskriterien wurden als “geheim“ eingestuft. Ferner: Reduktion der Schlüssellänge gegenüber LUCIFER von 128 Bit auf 56 Bit! 17.3.1975 Veröffentlichung von Einzelheiten des Algorithmus 1976 Zwei Workshops des NBS zur Evaluation 15.1.1977 Als DES in der FIPS (Federal Information Processing Standards) Publ. 46 veröffentlicht. 15.7.1977 Standard tritt in Kraft. 1978 Überprüfung durch ein Komitee des US-Senats; nur Zusammenfassung veröffentlicht: DES frei von mathematischen und statistischen Schwächen. 1982, 1987, 5-jährige Überprüfungen, jeweils Verlängerung des Stan1992, 1997 dards um 5 Jahre 1990 Biham, Shamir: Differentielle Kryptoanalyse 1994 Coppersmith (aus dem IBM-Entwicklerteam) publiziert Einzelheiten über die Entwurfskriterien des DES. 1993 Für 1 Mio US-Dollar lässt sich ein Computer bauen, der den gesamten Schlüsselraum in 7 Stunden durchsucht; daher in der Folgezeit verstärkte Verwendung des Triple-DES. 26.5.2002 DES wird durch AES ersetzt. DES ist (leicht modifizierte) Feistel-Chiffre. Klartextblöcke und Chiffretextblöcke bestehen aus 64 Bits. Ein Schlüssel k hat 56 Bits, wird aber als 64-Bit-String beschrieben; die Bits 57 an den Positionen 8, 16, 24, . . . , 64 werden so gewählt, dass die 8 Teilblöcke zu 8 Bits jeweils - gemäß FIPS-Standard - ungerade Anzahl von Einsen enthalten (fehlerentdeckende Codierung). Damit gibt es 256 ≈ 7, 2 · 1016 verschiedene Schlüssel. Rundenschlüssel Ki haben jeweils 48 Bits. Die Modifikation des DES im Vergleich zu reiner Feistel-Chiffre besteht darin, dass der Klartextblock zunächst einer festen Eingangspermutation IP (initial permutation) unterworfen wird, dann eine Feistel-Chiffre mit 16 Runden durchgeführt wird und schließlich eine Schlusspermutation IP−1 (Inverse der Eingangspermutation) angewandt wird. 58 60 62 64 57 59 61 63 Eingangspermutation IP 14 50 42 34 26 18 10 52 44 36 28 20 12 54 46 38 30 22 14 56 48 40 32 24 16 49 41 33 25 17 9 51 43 35 27 19 11 53 45 37 29 21 13 55 47 39 31 23 15 2 4 6 8 1 3 5 7 40 39 38 37 36 35 34 33 Schlusspermutation IP−1 8 48 16 56 24 64 7 47 15 55 23 63 6 46 14 54 22 62 5 45 13 53 21 61 4 44 12 52 20 60 3 43 11 51 19 59 2 42 10 50 18 58 1 41 9 49 17 57 32 31 30 29 28 27 26 25 IP und IP−1 haben keine kryptologische Bedeutung. Zur Beschreibung des DES fehlen jetzt nur noch 1. Erzeugung der Rundenschlüssel 2. Angabe der fK 14 Diese und folgende Tabellen sind zeilenweise von links oben nach rechts unten zu lesen. Steht eine Zahl z an der Position i, so heißt das, dass das Bit an der Position z im Eingabestring auf die Position i im Ausgabestring abgebildet wird. 58 4.6.1 Rundenschlüsselerzeugung Sei k ∈ Z64 2 der DES-Schlüssel (mit den Parity-Bits wie oben beschrieben). Zu Beginn wird k durch eine Schlüsselpermutation auf einen 56-Bit-String verkürzt. (Man spricht von Permutation, da die 8 Parity-Bits von k an der Stelle 8, 16, . . . 64 unberücksichtigt bleiben und die übrigen 56 Positionen permutiert werden.) Dieser 56-Bit-String wird in 2 28-Bit Hälften geteilt: (C0 , D0 ). In Runde i (i = 1, . . . , 16) werden aus Ci−1 , Di−1 ∈ Z28 2 neue Ci , Di ∈ erzeugt, aus diesen wird dann der Rundenschlüssel Ki ∈ Z48 2 erzeugt. Def. zunächst vi für 1 ≤ i ≤ 16 durch 1 für i = 1, 2, 9, 16 vi = 2 sonst Ci entsteht aus Ci−1 durch zyklischen Linksshift um vi Stellen. Di entsteht aus Di−1 in der gleichen Weise. 64 2 k Schlüsselpermutation Eingabe Runde 1: C0 D0 56 2 Eingabe Runde i: C i-1 Di-1 56 2 zykl. Linksshift um vi Stellen zykl. Linksshift um vi Stellen (Also: In Runde 1, 2, 9 und 16 Linksshift um eine Stelle, in den übrigen Runden Linksshift um zwei.) Auf (Ci , Di ) ∈ Z56 2 wird eine Kompressionsabbildung angewandt, die aus (Ci , Di) den Rundenschlüssel Ki ∈ Z48 2 herstellt. [Die Kompressionsabbildung wählt 48 der 56 Bits von (Ci , Di ) aus und permutiert diese.] Z28 2 Di Ci Kompressionsabb. Ki fKi Eingabe Runde i+1: Ci 48 2 Di 56 2 Abbildung 8: Rundenschlüsselerzeugung 59 57 58 59 60 31 30 29 4.6.2 Schlüsselpermutation 49 41 33 25 17 9 1 50 42 34 26 18 10 2 51 43 35 27 19 11 3 52 44 36 63 55 47 39 23 15 7 62 54 46 38 22 14 6 61 53 45 37 21 13 5 28 20 12 4 14 15 26 41 51 34 Kompressionsabbildung 17 11 24 1 5 3 6 21 10 23 19 12 8 16 7 27 20 13 52 31 37 47 55 30 45 33 48 44 49 39 53 46 42 50 36 29 28 4 2 40 56 32 Beschreibung der Verschlüsselungsfunktion fKi Wie bei jeder Feistelchiffre wird aus der Ausgabe (Li−1 , Ri−1 ) ∈ Z64 2 der (i − 1)-ten Runde die Ausgabe (Li , Ri ) ∈ Z64 der i-ten Runde erhalten durch: 2 Li = Ri−1 Ri = Li−1 ⊕ fKi (Ri−1 ) [Ausnahme Runde 16; dort R16 = R15 , L16 = L15 ⊕ fK16 (R15 ).] 48 Sei also R ∈ Z32 2 , K ∈ Z2 ein Rundenschlüssel. (Wir lassen den Rundenindex der besseren Übersichtlichkeit wegen jetzt weg.) 1. Schritt: Anwendung der Expansionsabbildung 48 e : Z32 2 → Z2 : R → e(R) Expansionsabbildung 32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1 2. Schritt: Schlüsseladdition: e(R) ⊕ K = (B1 , B2 , . . . , B8 ) ∈ Z48 2 Bj ∈ Z62 , j = 1, . . . , 8 3. Schritt: 8 S-Boxen S1 , . . . , S8 . Jede S-Box besteht aus vier Zeilen, jede der Zeilen enthält die Zahlen {0, 1, . . . , 15} in einer gewissen Reihenfolge. Bj ist Input für die S-Box Sj . Ist Bj = (b1 b2 b3 b4 b5 b6 ), so wird durch b1 b6 die Zeile von Sj festgelegt: b1 b6 ist die Binärdarstellung einer Zahl a ∈ {0, 1, 2, 3}. Wähle die (a + 1)-te Zeile von Si . b2 b3 b4 b5 legt den Eintrag in der gewählten 60 Zeile fest. b2 b3 b4 b5 ist die Binärdarstellung einer Zahl b ∈ {0, . . . 15}. Wähle (b + 1)-te Position in der betreffenden Zeile. Schreibe den Eintrag an der ausgewählten Position binär. Dies ist Cj = Sj (Bj ) ∈ Z42 , die S-Box-Substitution von Bj . 4. Schritt: (C1 , C2, . . . C8 ) ∈ Z32 2 wird abschließend einer sogenannten P-Box-Permutation unterworfen; das Ergebnis ist fK (R) ∈ Z32 2 . (Die P-Box-Permutation dient der gleichmäßigen Verteilung der Output-Bits der S-Boxen nach Runde i auf die S-Boxen in Runde i + 1; sie sorgt für Konfusion und Diffusion.) P-Box-Permutation 16 7 20 21 29 12 1 15 23 26 5 18 2 8 24 14 32 27 19 13 30 6 22 11 28 17 31 10 3 9 4 25 S-Box 1 11 8 3 10 6 12 13 1 10 6 12 11 2 11 15 12 9 7 1 7 5 11 3 14 5 9 9 5 3 10 10 0 0 3 5 6 15 1 8 14 6 11 3 13 4 7 15 2 0 14 7 11 10 4 13 8 10 1 3 15 S-Box 2 3 4 9 8 14 12 13 1 5 4 2 11 12 6 9 0 5 10 11 5 2 15 14 9 10 0 9 14 13 7 0 9 13 6 4 9 1 10 13 0 S-Box 3 15 5 1 13 12 7 6 10 2 8 5 14 3 0 11 1 2 12 8 7 4 15 14 3 14 4 13 0 15 7 4 1 14 15 12 8 1 4 8 2 2 15 14 2 13 6 4 9 6 3 8 6 3 4 15 9 61 7 0 8 6 2 13 1 10 12 6 7 12 0 9 3 5 7 8 0 13 11 4 2 8 12 11 15 1 5 10 14 7 11 5 2 12 7 13 14 13 8 11 10 6 9 3 15 0 3 5 0 6 0 6 6 15 12 11 10 1 S-Box 4 9 10 1 0 3 4 7 13 15 13 8 9 2 7 1 4 8 2 3 5 5 12 14 11 11 12 4 15 1 10 14 9 5 2 8 4 12 7 2 14 2 12 4 1 7 10 14 11 2 12 4 7 4 2 1 11 10 13 11 8 12 7 1 14 S-Box 5 11 6 8 5 3 15 13 1 5 0 15 10 7 8 15 9 12 5 2 13 6 15 0 9 13 3 6 10 12 1 10 15 10 15 4 2 9 14 15 5 4 3 2 12 2 12 8 5 S-Box 6 6 8 0 13 3 4 9 5 6 1 13 14 12 3 7 0 4 10 15 10 11 14 1 7 14 7 5 11 0 11 3 8 1 13 11 6 6 0 8 13 0 9 3 4 S-Box 7 8 13 3 12 1 10 14 3 7 14 10 15 10 7 9 5 5 10 2 15 0 5 14 2 9 7 2 9 4 11 2 14 15 13 0 11 7 4 1 4 11 13 12 6 11 13 8 1 13 2 8 1 15 13 7 11 4 2 1 14 4 8 1 7 6 15 10 3 9 12 4 10 9 5 6 0 7 12 8 15 S-Box 8 11 1 10 9 3 14 7 4 12 5 6 11 14 2 0 6 10 13 8 13 15 12 9 0 0 9 3 4 14 9 8 6 0 14 5 3 6 8 9 3 1 6 2 12 5 0 12 7 0 14 9 2 15 3 5 8 3 5 6 11 Tabelle 5: Die 8 S-Boxen des DES, repräsentiert durch acht 4 × 16 Matrizen Die Substitutionsfunktionen fK im DES sind nicht bijektiv, was, wie in 4.5 erwähnt, keinen Einfluss auf die Bijektivität der Gesamtverschlüsselungsfunktion Ek hat. Es ist relativ einfach, Beispiele R 6= R′ mit fK (R) = fK (R′ ) zu konstruieren (Übungsaufgabe). 62 32 R ZZ e Expansionsabb. 2 48 e(R) ZZ 2 + K 48 B1 S-Boxen S 1 S2 B2 B3 S S3 c1 c2 B4 B5 B7 S5 4 c4 c3 B6 c5 P-Box c6 ZZ B 8 S6 c7 c8 2 B j S7 cj ZZ 6 2 S8 4 ZZ 2 P-Box-Permutation 32 f K (R) ZZ 2 Abbildung 9: Schematische Darstellung der Berechnung von fK (R) 4.6.3 Sicherheit des DES a) Beim DES sind die Prinzipien der Diffusion und Konfusion verwirklicht. • Die Änderung eines Input-Bits einer S-Box ändert den Output der S-Box um mindestens zwei Bits. • Jedes Output-Bit hängt nach 5 Runden von jedem Klartextbit und jedem Schlüsselbit ab (Lawineneffekt). (Dazu trägt auch die P-Box-Permutation bei, die für eine gleichmäßige Verteilung der Output-Bits der S-Boxen in Runde i auf 63 die S-Boxen in Runde i + 1 sorgt.) Wir verdeutlichen dies an einem Beispiel: Diffusion bei DES Klartext 1 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Klartext 2 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000001 Schlüssel 00000001 00100011 01000101 01100111 10001001 10101011 11001101 11101111 Chiffretext 1 11010101 11010100 01001111 11110111 00100000 01101000 00111101 00001101 Chiffretext 2 11110000 10001100 01010111 00100000 10010101 10010011 11111110 10110011 Unterschiede an 36 Stellen. Anzahl der unterschiedlichen Bits bei der Verschlüsselung der Klartextblöcke 1 und 2 nach den einzelnen DES-Runden: zu Beginn Nach Runde Nach Runde Nach Runde Nach Runde Nach Runde Nach Runde Nach Runde Nach Runde 1 2 3 4 5 6 7 8 1 1 7 18 25 26 29 32 37 64 Nach Nach Nach Nach Nach Nach Nach Nach Runde Runde Runde Runde Runde Runde Runde Runde 9 10 11 12 13 14 15 16 40 34 31 34 34 31 32 36 Konfusion bei DES Klartext (wie oben Klartext 1) 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Schlüssel 1 (wie oben) 00000001 00100011 01000101 01100111 10001001 10101011 11001101 11101111 Schlüssel 2 00000001 00100011 01000101 01100111 10001001 10101011 11001101 11101100 Verschlüsselung des Klartextes mit Schlüssel 1 111010101 11010100 01001111 11110111 00100000 01101000 00111101 00001101 Verschlüsselung des Klartextes mit Schlüssel 2 11101010 00111011 00101011 01001010 11101001 00110110 00010111 10000111 Unterschiede an 37 Stellen. Anzahl der unterschiedlichen Bits bei der Verschlüsselung des Klartextblockes mit den Schlüsseln 1 und 2 nach den einzelnen DES-Runden: Nach Nach Nach Nach Nach Nach Nach Nach Runde Runde Runde Runde Runde Runde Runde Runde 1 2 3 4 5 6 7 8 2 12 24 28 29 33 34 37 Nach Nach Nach Nach Nach Nach Nach Nach Runde Runde Runde Runde Runde Runde Runde Runde 9 10 11 12 13 14 15 16 35 30 34 39 37 31 36 37 b) Das Design des DES erfordert Rundenschlüssel mit 48 Bits. Diese hätte man auch mit einem 48-Bit-Master-Key erzeugen können. Das wäre 1 aber schon damals unsicher gewesen ( 256 Aufwand zum Durchsuchen des gesamten Schlüsselraums!). Man hätte solche Rundenschlüssel aber auch aus längeren Master-Keys erzeugen können. Damit hätte man die 65 Sicherheit erhöhen können. Dies wurde aber 1975 nicht für notwendig (oder wünschenswert) gehalten. Als der DES später hard- und softwaremäßig weit verbreitet war, war eine solche Änderung schwierig. Man entschied sich daher dann für ein völlig neues Verfahren (AES). c) Bei vollständiger Durchsuchung des Schlüsselraums müssen im schlimmsten Fall (bei einem Ciphertext-Only-Angriff) 256 Schlüssel ausprobiert werden. Der DES hat jedoch folgende Symmetrieeigenschaft: Sei m ein Klartextblock, k ein Schlüssel, c = Ek (m) der durch DES verschlüsselte Block. Bezeichnet man mit m̄, k̄, c̄ die zu m, k und c komplementären Blöcke (Nullen und Einsen vertauschen), so gilt c̄ = Ek̄ (m̄). Dies führt zu folgendem Angriff, bei dem nur 255 Schlüssel zu testen sind, wenn für einen Klartext m sowohl c = Ek (m) als auch c∗ = Ek (m̄) bekannt sind (z.B. bei einem Chosen-Plaintext-Angriff). Man testet dann 255 Schlüssel, wobei nie ein Schlüssel und sein Komplement getestet werden (z.B. alle Schlüssel mit 0 als erstem Bit). Erhält man ein k̃ mit Ek̃ (m) = c, so ist (sehr wahrscheinlich) k = k̃; erhält man ein ¯ k̃ mit Ek̃ (m) = c¯∗ , so ist (sehr wahrscheinlich) k = k̃. d) Zur Zeit der Einführung des DES (1975) war eine vollständige Schlüsselsuche kaum denkbar. Dennoch zeigten W. Diffie und M. Hellman in einer Arbeit 1977, dass es möglich ist, für 20 Millionen US-$ eine Maschine zu bauen, die einen DES-Schlüssel innerhalb eines Tages ermitteln würde. (Kritik von Diffie und Hellman: Kurze Schlüssellänge von 56 Bits) 1997: RSA Data Security bot 10.000 US-$ demjenigen, der zuerst einen DES-chiffrierten Text knacken würde. Nach fünf Monaten wurde der Schlüssel von R. Vesper ermittelt. Methode: Tausende über das Internet verbundene Rechner arbeiteten zusammen. (25 % des Schlüsselraums mussten durchsucht werden.) 1998: Zweites DES-Challenge durch RSA Data Security. Nach 39 Tagen wurde der Schlüssel von Distributed Computing Technologies ermittelt (81 % des Schlüsselraums wurden durchsucht). 1998/1999: DES-Cracker von Electronic Frontier Foundation (EEF): 1536 parallel arbeitende spezielle Chips (40 MHz). Benötigt im Schnitt viereinhalb Tage, um DES-Schlüssel zu ermitteln.15 15 Einzelheiten siehe Trappe und Washington [46], S. 118-122 66 e) Es gibt vier sog. schwache Schlüssel beim DES. Sie haben die Eigenschaft, dass alle erzeugten Rundenschlüssel gleich sind. Die schwachen Schlüssel sind: (00000001)8, (11111110)8, (00011111)4(00001110)4, (11100000)4(11110001)4 Für diese schwachen Schlüssel gilt: Ek (Ek (m)) = m Schwache Schlüssel müssen vermieden werden. Außerdem gibt es insgesamt 12 Schlüssel, die nur zwei verschiedene Rundenschlüssel erzeugen. Diese heißen semischwache Schlüssel und sollten ebenfalls vermieden werden. Diese 12 Schlüssel lassen sich in 6 Paare (k1 , k2 ) aufteilen, so dass Ek1 (Ek2 (m)) = m. f) Keine der S-Boxen beschreibt eine (affin-) lineare Funktion, ebensowenig wie das gesamte DES als (affin-) lineare Funktion (bei gegebenem Schlüssel) beschrieben werden kann. Der DES ist also gegen die einfachen Angriffe, die bei (affin-) linearen Blockchiffren möglich sind, sicher. Auch gegen kryptoanalytische Angriffe, die darauf beruhen, das Verschlüsselungsverfahren (bei festem Schlüssel) durch eine lineare Funktion zu approximieren – sogenannte lineare Kryptoanalyse (KnownPlaintext-Angriff)16 – erwies sich DES als ausreichend sicher: Für das 16-Runden DES werden 243 Klartext-Chiffretextblockpaare benötigt, um mit dieser Methode den Schlüssel zu bestimmen17 . Allerdings ist sie besser als differentielle Kryptoanalyse (die wir in 4.10 behandeln) und vollständige Durchsuchung des Schlüsselraums. Man beachte: 243 Blockpaare entsprechen ca. 140 TByte, das ist in etwa der Inhalt von 200 Millionen Büchern. Beachte: Die Methode der linearen Kryptoanalyse war den Designern von DES (im Gegensatz zur differentiellen Kryptoanalyse) nicht bekannt. Die S-Boxen sind bezüglich linearer Kryptoanalyse nicht optimiert. g) Jedes Chiffretextverfahren, das die Gruppeneigenschaft besitzt, wo also die Hintereinanderausführung zweier Verschlüsselungen mit den Schlüsseln k1 , k2 einer Verschlüsselung mit einem Schlüssel k3 entspricht, hat eine gewisse innere Symmetrie, die für kryptoanalytische Angriffe nutzbar gemacht werden kann. Das DES hat jedoch nicht diese Eigenschaft, d.h. für die Schlüssel k1 , k2 ist i.a. Ek1 ◦ Ek2 6= Ek3 für alle Schlüssel k3 . 16 M. Mitsui; Linear cryptoanalysis method for DES cipher, Adv. in CryptologyEUROCRYPT ’93, Springer LNCS 765, 1994, S. 386-397. 17 vgl. [40] 67 Die 256 DES -Verschlüsselungsfunktionen erzeugen also eine größere Gruppe (innerhalb der Gruppe S264 aller Permutationen der 264 Blöcke der Länge 64 über Z2 ). Tatsächlich folgt aus Arbeiten von Coppersmith (1992) und Campbell/Wiener (1993), dass die von den DESVerschlüsselungsfunktionen erzeugte Gruppe mindestens Ordnung 1, 94· 20 102499 hat. (Beachte: |S264 | = (264 )! > 10(10 ) .) h) Aufgrund von g) kann man die Sicherheit des DES erhöhen, indem man (mit verschiedenen Schlüsseln) einen Klartext mehrmals chiffriert. Allerdings bringt doppelte DES-Verschlüsselung kaum mehr Sicherheit. Tatsächlich hat der Schlüsselraum jetzt zwar die Größe 2112 , aber man kann ein Schlüsselpaar (k1 , k2) mit 257 einfachen DES-Verschlüsselungen ermitteln (mit einem enormen Aufwand an Speicherplatz). Dies geschieht mit Hilfe des sog. Meet-in-the-Middle Angriffs, der für alle Mehrfachhintereinanderausführungen symmetrischer Verschlüsselungsverfahren funktioniert. Wir beschreiben ihn kurz: Angenommen: Eve kennt Klartext m und doppelt chiffrierten Text c = Ek1 (Ek2 (m)). Sie will (k1 , k2 ) bestimmen. Sie berechnet und speichert alle Ek (m) für alle Schlüssel k. Dann berechnet und speichert sie alle Dk (c). (Dk (c) = Entschlüsselung von c; bei DES: verwende die durch k erzeugten Rundenschlüssel k1 , . . . k16 in umgekehreter Reihenfolge.) Dann vergleicht sie die beiden Listen. Ist Ek2 (m) = Dk1 (c), so ist Ek1 (Ek2 (m)) = c. Erhält man mehrere mögliche Paare (k1 , k2 ), so wähle weiteres Klartext-Chiffretextpaar und teste, welches der Schlüsselpaare (k1 , k2 ) den Klartext auf den Chiffretext abbildet. Bei N Schlüsseln (N = 256 bei DES) sind also 2N Berechnungen erforderlich (+N 2 Vergleiche durchzuführen). Dies ist deutlich weniger aufwändig als N 2 Berechnungen für vollständige Schlüsselsuche. Der benötigte Speicherplatz ist allerdings extrem groß.18 i) Aufgrund von h) wird zur Erhöhung der Sicherheit in der Praxis oft das Triple-DES benutzt. Zwei typische Varianten: Ek1 ◦ Ek2 ◦ Ek3 für drei Schlüssel k1 , k2 , k3 Ek1 ◦ Dk2 ◦ Ek1 für zwei Schlüssel k1 , k2 (Bei k1 = k2 hat man wieder das einfache DES.) 18 Für Überlegungen zum Time-Space-Tradeoff vgl. Stinson [45] 68 Meet-in-the-Middle Angriff erfordert jetzt etwa 2113 Berechnungen, und der benötigte Speicherplatz ist exorbitant. 4.6.4 Effizienz der DES-Verschlüsselung Bei Software-Implementation ist (abhängig vom jeweils verwendeten Compiler) eine Verschlüsselungsrate von ca. 100 Mbit/sec möglich. HardwareImplementationen sind ca. um einen Faktor 10 schneller. (∗) 4.7 Differentielle Kryptoanalyse am Beispiel des DES a) Die Differentielle Kryptoanalyse ist ein Chosen-Plaintext-Angriff, der von E. Biham und A. Shamir 1990 vorgestellt wurde ([11], [12]), aber offenbar den Entwicklern des DES schon bekannt war (siehe [18]19 ). Wir stellen das Verfahren zunächst für den DES mit wenigen Runden vor (ohne IP, IP−1 ) und zeigen dann, wie es auf größere Rundenzahlen ausgedehnt werden kann. Wir beschreiben zunächst die Grundüberlegung. Da affin-lineare Chiffren leicht zu brechen sind (vgl. 4.3), enthält der DES nicht-lineare Anteile. In jeder Runde ist die einzige Nichtlinearität (bis auf die Rundenschlüsseladdition - diese ist aber affin) in den S-Boxen enthalten, d.h. im Allgemeinen gilt Si (B ⊕ B ∗ ) 6= Si (B) ⊕ Si (B ∗ ). Dennoch ist die Betrachtung der binären Summen (=binären Differenzen) B ⊕ B ∗ sinnvoll. Der Grund ist folgender: In einer Runde des DES ist der Rundenschlüssel K für den Angreifer die einzige Unbekannte. Kennt er den Input R ∈ Z32 2 (vgl. Abbildung 9, S. 63), so auch E = e(R), aber nicht E⊕K, und daher auch nicht den Input für die S-Boxen, die P-Box, die nächste Runde. Betrachtet man jedoch Inputs R, R∗ und deren “Differenz“ R⊕R∗ , so kennt man e(R)⊕e(R∗ ) = e(R⊕R∗ ) und e(R)⊕K⊕e(R∗ )⊕K = e(R)⊕e(R∗ ), d.h. für die Differenz spielt die Schlüsseladdition keine Rolle. Also: 19 R ⊕ R∗ bekannt ⇔ Bi ⊕ Bi∗ , i = 1, . . . , 8 bekannt (Bi , Bi∗ Input von S-Box Si ) online unter http://www.research.ibm.com/journal/rd/383/coppersmith.pdf 69 (α) Da S-Boxen nichtlinear sind, kann gleiche Eingabedifferenz zu verschiedenen Ausgabedifferenzen führen, d.h. durch Bi ⊕ Bi∗ ist Si (Bi ) ⊕ Si (Bi∗ ) = ci ⊕ c∗i nicht festgelegt. Im Anschluss an die S-Boxen gilt wieder: ci ⊕ c∗i , i = 1, . . . , 8 bekannt ⇔ fK (R) ⊕ fK (R∗ ) (= P (C) ⊕ P (C ∗) (β) = P (C ⊕ C ∗ )) bekannt (C = (c1 , . . . , c8 ), C ∗ = (c∗1 , . . . , c∗8 )) Damit: Bei Betrachtung der Differenzen R ⊕ R∗ beim Durchgang durch eine Runde ist einzig der Übergang Bi ⊕ Bi∗ → ci ⊕ c∗i , i = 1, . . . , 8 nicht eindeutig festgelegt. Bi ⊕ Bi∗ heißt Input-Differenz für die S-Box Si , ci ⊕ c∗i = Si (Bi ) ⊕ Si (Bi∗ ) heißt Output-Differenz der S-Box Si . Beachte: Es gibt 64 mögliche Input-Differenzen, aber nur 16 mögliche OutputDifferenzen. Man untersucht nun für jede S-Box Si den Zusammenhang zwischen InputDifferenzen und Output-Differenzen. Sei B ′ ∈ Z62 eine vorgegebene InputDifferenz. Es gibt 64 Paare (B, B ∗ ) ∈ Z62 × Z62 mit Differenz B ′ : B ⊕ B ∗ = B ′ , nämlich alle (B, B ⊕ B ′ ), B ∈ Z62 . (Für B ′ 6= 0 sind das 32 verschiedene ungeordnete Paare, denn (B ⊕ B ′ ) ⊕ B ′ = B.) Wir geben exemplarisch eine solche Tabelle für die S-Box S1 an mit B ′ = (010100). B (000000) (000001) (000010) (000011) (000100) (000101) (000110) (000111) (001000) (001001) (001010) (001011) B∗ (010100) (010101) (010110) (010111) (010000) (010001) (010010) (010011) (011100) (011101) (011110) (011111) S1 (B) ⊕ S1 (B ∗ ) (1110) ⊕ (0110) = (1000) (0000) ⊕ (1100) = (1100) (0100) ⊕ (1100) = (1000) (1111) ⊕ (1011) = (0100) (1101) ⊕ (0011) = (1110) (0111) ⊕ (1010) = (1101) (0001) ⊕ (1010) = (1011) (0100) ⊕ (0110) = (0010) (0010) ⊕ (0000) = (0010) (1110) ⊕ (0011) = (1101) (1111) ⊕ (0111) = (1000) (0010) ⊕ (1000) = (1010) 70 (001100) (001101) (001110) (001111) (100000) (100001) (100010) (100011) (100100) (100101) (100110) (100111) (101000) (101001) (101010) (101011) (101100) (101101) (101110) (101111) (+ 32 weitere (011000) (1011) ⊕ (0101) = (1110) (011001) (1101) ⊕ (1001) = (0100) (011010) (1000) ⊕ (1001) = (0001) (011011) (0001) ⊕ (0101) = (0100) (110100) (0100) ⊕ (1001) = (1101) (110101) (1111) ⊕ (0011) = (1100) (110110) (0001) ⊕ (0111) = (0110) (110111) (1100) ⊕ (1110) = (0010) (110000) (1110) ⊕ (1111) = (0001) (110001) (1000) ⊕ (0101) = (1101) (110010) (1000) ⊕ (1100) = (0100) (110011) (0010) ⊕ (1011) = (1001) (111100) (1101) ⊕ (0101) = (1000) (111101) (0100) ⊕ (0110) = (0010) (111110) (0110) ⊕ (0000) = (0110) (111111) (1001) ⊕ (1101) = (0100) (111000) (0010) ⊕ (0011) = (0001) (111001) (0001) ⊕ (1010) = (1011) (111010) (1011) ⊕ (1010) = (0001) (111011) (0111) ⊕ (0000) = (0111) Paare, wobei Rolle von B, B ∗ vertauscht; Output-Differenzen analog) Tabelle 6: Output-Differenzen der S-Box S1 für Input-Differenz B ′ = (010100) (0000) (0001) (0010) (0011) (0100) (0101) (0110) (0111) 0 8 8 0 10 0 4 2 (1000) (1001) (1010) (1011) (1100) (1101) (1110) (1111) 8 2 2 4 4 8 4 0 Tabelle 7: Anzahl der verschiedenen Output-Differenzen der S-Box S1 bei Input-Differenz (010100) Wären die S-Boxen linear, so würde in den 64 Paaren mit gleicher InputDifferenz (im obigen Beispiel (010100)) jeweils die gleiche Output-Differenz 71 auftreten. Die Nichtlinearität wäre am größten, wenn zu gegebener InputDifferenz jedes c′ ∈ Z42 gleich oft (also 4 mal) als Output-Differenz auftreten würde. Dies ist aber im obigen Beispiel nicht der Fall. Die Diskrepanz von der Gleichverteilung aller möglichen Output-Differenzen ist für manche InputDifferenzen größer, für manche geringer. In der folgenden Tabelle ist für die S-Box S1 angegeben, wie sich für jede Input-Differenz die Anzahl der OutputDifferenzen verteilt. InputDifferenz 000000 000001 000010 000011 000100 000101 000110 000111 001000 001001 001010 001011 001100 001101 001110 001111 010000 010001 010010 010011 010100 010101 010110 010111 011000 011001 011010 011011 0 64 0 0 14 0 4 0 2 0 10 0 2 0 6 0 2 0 6 0 2 0 0 0 4 0 2 0 4 1 0 0 0 4 0 8 4 4 0 2 8 4 0 6 4 0 0 8 8 4 8 4 8 4 6 6 6 4 2 0 0 0 2 0 6 2 10 0 4 6 0 0 4 8 2 0 2 4 4 8 6 10 6 6 2 4 2 3 0 6 8 2 6 2 4 4 12 0 2 10 8 8 8 4 0 4 2 6 0 4 8 0 0 4 0 4 Output-Differenz (Hexadezimal) 4 5 6 7 8 9 A B C 0 0 0 0 0 0 0 0 0 0 2 4 4 0 10 12 4 10 0 4 4 4 0 6 8 6 12 10 6 4 2 6 4 4 0 2 0 10 10 6 0 4 6 4 2 2 4 4 2 0 4 4 0 12 8 2 6 2 8 4 4 2 4 0 4 8 4 2 4 8 2 2 0 8 8 4 0 6 2 8 8 2 4 6 0 2 2 8 0 10 2 8 6 0 6 4 6 0 4 2 2 4 0 2 6 2 6 6 0 6 6 0 0 6 6 4 6 4 8 2 6 0 6 4 6 0 6 6 4 0 6 6 4 0 0 4 6 4 2 4 8 2 2 2 0 0 2 14 0 6 6 12 4 6 4 8 6 4 0 6 6 0 6 6 4 6 6 4 2 6 6 2 0 4 6 2 0 6 8 4 10 0 4 2 8 2 2 4 4 2 2 4 10 6 2 0 10 0 0 2 2 6 10 2 0 2 0 10 6 0 2 4 4 4 6 6 8 4 2 2 2 4 6 8 6 0 8 4 6 10 4 0 4 2 4 6 6 6 6 2 2 0 4 10 6 6 4 6 2 2 4 2 72 D 0 6 6 2 8 2 2 2 2 0 0 4 6 2 4 6 6 4 0 6 8 4 6 6 6 8 4 2 E 0 2 4 2 6 4 0 4 2 2 2 2 14 0 0 8 8 0 4 4 4 6 2 2 2 4 6 4 F 0 4 2 0 2 6 12 4 4 12 10 12 2 2 8 8 6 0 0 6 0 4 6 0 2 0 8 2 011100 011101 011110 011111 100000 100001 100010 100011 100100 100101 100110 100111 101000 101001 101010 101011 101100 101101 101110 101111 110000 110001 110010 110011 110100 110101 110110 110111 111000 111001 111010 111011 111100 111101 111110 111111 0 4 0 2 0 0 10 0 12 6 0 10 12 4 4 12 4 6 6 2 0 4 4 4 0 2 2 2 0 6 6 2 0 0 4 4 10 2 2 4 0 4 4 4 0 4 0 4 2 2 2 2 2 2 6 2 4 8 2 4 8 2 6 2 6 2 4 6 10 8 8 8 10 4 6 10 0 2 6 4 0 4 4 2 2 2 4 2 2 6 2 2 6 2 6 6 16 4 2 12 2 2 6 4 4 6 2 4 6 0 0 6 10 4 2 8 2 12 10 0 8 10 6 2 4 2 2 2 0 10 4 2 6 0 2 4 2 4 4 0 0 2 2 2 6 8 14 2 0 4 2 0 2 4 10 2 2 0 0 4 0 8 0 2 12 2 4 10 2 8 8 2 2 12 6 0 12 2 2 4 0 0 2 2 12 8 8 2 2 4 10 4 6 2 2 6 2 4 2 6 6 2 2 8 0 0 0 4 0 6 8 2 0 6 4 0 0 0 0 2 8 10 2 6 2 4 2 2 12 4 8 6 10 4 4 8 2 2 2 4 0 0 2 4 2 4 0 4 4 0 4 2 12 2 0 8 2 0 2 0 0 10 4 0 0 0 2 2 4 4 6 8 2 2 4 2 12 0 2 10 2 8 6 6 2 8 14 4 6 10 6 6 0 4 2 6 14 2 0 4 0 0 2 0 2 2 4 2 8 6 6 4 6 14 4 4 4 4 2 4 6 4 4 4 4 0 4 8 6 4 2 6 14 2 4 8 2 14 14 2 2 4 0 4 2 0 6 0 0 4 2 4 6 0 2 6 0 4 2 2 0 2 10 0 4 10 6 2 2 2 6 0 6 10 2 6 4 6 6 4 4 0 4 2 0 6 6 2 4 2 6 8 4 0 0 4 0 6 8 0 4 0 0 10 0 0 4 4 0 2 6 2 8 0 2 6 4 2 8 2 0 8 8 6 4 4 2 6 12 4 2 8 2 6 2 0 4 4 4 2 2 4 4 8 4 4 2 6 8 8 12 8 6 2 2 4 0 0 6 0 4 2 2 4 4 0 0 8 4 6 2 4 2 0 0 4 6 2 4 8 0 6 6 0 4 2 2 2 2 4 2 6 8 2 4 2 6 4 6 4 4 12 8 6 4 14 6 6 0 2 4 0 2 2 2 4 6 0 2 8 2 0 6 4 2 10 8 2 0 14 10 2 10 4 4 6 2 4 4 2 0 0 2 4 12 8 10 10 4 2 0 4 2 4 2 4 6 6 4 2 4 8 0 4 6 0 0 4 10 0 0 2 0 4 4 2 Tabelle 8: Input-/Output-Differenzen bei S-Box S1 Die differentielle Kryptoanalyse beruht darauf, dass für jede S-Box bei manchen Input-Differenzen gewisse Output-Differenzen besonders häufig auftre73 ten; die S-Box verhält sich für solche Input-Differenzen “etwas linearer“. Dazu muss für jede S-Box und jede Input-Differenz eine Tabelle entsprechend Tabelle 6 erstellt werden (insgesamt 8 · 26 = 512 Tabellen). Wir zeigen jetzt, wie die differentielle Kryptoanalyse funktioniert und betrachten dazu zunächst einmal den DES mit wenigen Runden, weil hier die Situation noch überschaubar ist. b) Analyse einer DES-Runde Hier spielt die Abweichung der Output-Differenzen von der Gleichverteilung (bei gegebener Input-Differenz) noch keine Rolle. Der Chosen-Plaintext-Angriff versucht aus der Kenntnis von (R, fK (R)), (R∗ , fK (R∗ )), . . . auf den Rundenschlüssel K zu schließen. Was man dazu benötigt ist die Kenntnis von R, R∗ und von fK (R) ⊕ fK (R∗ ) (evtl. für mehere Paare (R, R∗ )). Bekannt sind R, R∗ , also auch (1) e(R) = (e1 , . . . , e8 ) und e(R∗ ) = (e∗1 , . . . , e∗8 ) Außerdem (2) B1 ⊕ B1∗ , . . . , B8 ⊕ B8∗ (nach (α)) ∗ ∗ (= e1 ⊕ e1 ) (= e8 ⊕ e8 ) (aber nicht B1 , . . . , B8 , B1∗ , . . . , B8∗ ) und (3) c1 ⊕ c∗1 , . . . , c8 ⊕ c∗8 (nach (β)) Der Rundenschlüssel sei K = (k1 , . . . , k8 ), ki ∈ Z62 . Es ist (4) ki = ei ⊕ Bi = e∗i ⊕ Bi∗ , i = 1, . . . , 8 (da Bi = ei ⊕ ki , Bi∗ = e∗i ⊕ ki ) 74 Betrachte i = 1: B1′ := B1 ⊕ B1∗ bekannt. Das Paar (B1 , B1∗ ) taucht in der Tabelle für S1 zur Input-Differenz B1′ auf. Daher kennt man alle Möglichkeiten für (B1 , B1∗ ) mit Output-Differenz c1 ⊕ c∗1 =: c′1 . Damit erhält man für jedes mögliche B1 einen Kandidaten e1 ⊕ B1 für den ↑ Teilschlüssel k1 (bei e∗1 ⊕ B1∗ ergibt sich dasselbe). bekannt Damit sind die Möglichkeiten für die ersten 6 Bit von K (das ist k1 ) eingeschränkt. Beispiel: Angenommen R = (00101∗. . .∗1), R∗ = (10001∗. . .∗1) und c1 ⊕c∗1 = (0110). Dann e1 = (100101), e∗1 = (110001) B1 ⊕ B1∗ = e1 ⊕ e∗1 = (010100) Input-Differenz c1 ⊕ c∗1 = (0110) Output-Differenz Der Tabelle 6 entnimmt man: (110110) (100010), (110110), (100010) (101010), (111110) (101010) (111110), Kandidaten für k1 : e1 ⊕ B1 = (000111) (010011) einer davon ist (001111) der richtige k1 (011011) Möglichkeiten für (B1 , B1∗ ) : Von 26 = 64 Kandidaten für k1 sind nur 4 Möglichkeiten geblieben. Wiederholt man das für ein anderes Paar R, R∗ , so erhält man eine weitere Kandidatenmenge für k1 , die ebenfalls den richtigen k1 enthält. Nach wenigen Versuchen hat man im Allgemeinen nur noch eine Möglichkeit für k1 . Fortsetzung Beispiel: Angenommen R̄ = (01001∗. . .∗1), R̄∗ = (00000∗. . .∗1) und c¯1 ⊕ c¯∗1 = (0001). Dann e¯1 = (101001), e¯∗1 = (100000) B̄1 ⊕ B¯1∗ = e¯1 ⊕ e¯∗1 = (001001) 75 Nur 2 Möglichkeiten für (B̄1 , B̄1∗ ) : Kandidaten für k1 : e¯1 ⊕ B̄1 (111010), (110011) (110011), (111010) = (010011) ← nur dieser taucht (011010) auch oben auf Also: k1 = (010011). Dasselbe führt man für k2 , . . . , k8 durch. Dann ist der Rundenschlüssel K bestimmt. c) Analyse des DES mit 3 Runden L0 R0 K1 Ziel ist die Bestimmung des 56-Bit-Schlüssels k, aus dem K1 , K2 und K3 entstehen. + L1 Man wählt Klartexte (L0 , R0 ) und (L∗0 , R0∗ ) mit R0 = R0∗ , die zu (L3 , R3 ) bzw. (L∗3 , R3∗ ) verschlüsselt werden. R1 K2 Tatsächlich benötigt man zur Bestimmung von K3 (das ist das erste Ziel) nur die Kenntnis von L0 ⊕L∗0 , L3 ⊕L∗3 , R3 , R3∗ und dass R0 = R0∗ (der Wert von R0 wird nicht benötigt). Nun gilt: + L2 R2 K3 L3 = L2 ⊕ fK3 (R2 ) = R1 ⊕ fK3 (R2 ) = L0 ⊕ fK1 (R0 ) ⊕ fK3 (R2 ) und analog L∗3 = L∗0 ⊕ fK1 (R0∗ ) ⊕ fK3 (R2∗ ). + Dann folgt (da R0 = R0∗ ): L3 R3 L ⊕ L∗ = L ⊕ L∗ ⊕f (R ) ⊕ fK3 (R2∗ ) | 3 {z }3 | 0 {z }0 K3 2 =: L′3 =: L′0 bekannt bekannt Damit ist fK3 (R2 ) ⊕ fK3 (R2∗ ) bekannt und R2 = R3 , R2∗ = R3∗ sind bekannt. Die Analyse einer DES-Runde wie in b) (angewandt auf die 3. Runde) liefert jetzt den Schlüssel K3 . (Dazu benötigt man geeignete R2 , R2∗ ; daher verwendet man viele (L0 , R0 ), (L∗0 , R0∗ ), um geeignete R2 = R3 , R2∗ = R3∗ zu erhalten.) 76 Vom 56-Bit-Schlüssel k sind damit (durch K3 ) 48 Bit bestimmt. Die restlichen 8 Bit erhält man durch 256 Versuche, indem man testet, wann (L0 , R0 ) auf (L3 , R3 ) abgebildet wird. d) Analyse des DES mit 4 Runden Hier kommen nun die Nicht-Gleichverteilungen der Output-Differenzen der S-Boxen bei gegebener Input-Differenz zum Tragen. Daher ist jetzt die Wahl von Klartextblöcken mit geeigneten Differenzen wichtig. Wir demonstrieren das Verfahren mit solch einer geeigneten Wahl. Wähle (L0 , R0 ) und (L∗0 , R0∗ ) so, dass - R0 ⊕ R0∗ = (0100 . . . . . . . . . . . . 0000) - L0 ⊕ L∗0 = (0 . . . 0 1 0 . . . 0 1 0 . . . 0) ↑ 23 ↑ 31 e(R0 ) ⊕ e(R0∗ ) = (0010000 . . . 0 . . . 0 . . . 0) Input-Differenzen für S-Boxen in der 1. Runde: S1 : (001000) Si : (000000), i = 2, . . . 8. Tabelle der Output-Differenzen von S1 bei Input-Differenz (001000) : 12 3 Mit Wahrscheinlichkeit 64 = 16 (relativ groß) ist Output-Differenz (0011). Bei allen Si , i = 2, . . . 8: Output-Differenz (0000). Anwendung P-Box Permutation: 3 an den Stellen 23 und 31 fK1 (R0 ) ⊕ fK1 (R0∗ ) hat mit Wahrscheinlichkeit 16 eine Eins, sonst Nullen. (An den Stellen 9, 17, 23, 31 stehen die Einträge der Output-Differenz von S1 .) Nach Addition von L0 ⊕ L∗0 ergibt sich daher, dass R1 ⊕ R1∗ = (0, . . . , 0) (d.h. 3 gilt. R1 = R1∗ ) mit Wahrscheinlichkeit 16 Jede andere Kombination als 0011 an den Stellen 9, 17, 23, 31 tritt mit geringerer Wahrscheinlichkeit auf. (An den Stellen 6= 9, 17, 23, 31 stehen in jedem Fall Nullen.) Auch mit anderer Input-Differenz R0 ⊕ R0∗ und dazu passend gewählten L0 ⊕ L∗0 kann man mit ähnlichen Wahrscheinlichkeiten R1 ⊕ R1∗ = (0, . . . , 0) erhalten. 77 Wendet man mit solchen Klartextblöcken die 3-Runden-Kryptoanalyse auf die Runden 2, 3, 4 an (beachte: L1 = R0 , L∗1 = R0∗ , L4 , L∗4 , R4 , R4∗ be3 kannt) [dort wird vorausgesetzt, dass R1 = R1∗ , was in ca. 16 der Fälle 3 zutrifft], so erhalten wir Kandidatenmengen, die in etwa 16 der Fälle den richtigen Rundenschlüssel K4 enthalten. In den übrigen 13 der Fälle liefert 16 die 3-Runden-Kryptoanalyse irgendwelche Kandidatenmengen von zufälligen 48-Bit-Strings. Daher: Bei genügend vielen Versuchen tritt K4 deutlich häufiger auf als alle übrigen 48-Bit-Strings und wird erkannt. e) Differentielle Kryptoanalyse bei größeren Rundenzahlen Man gibt gewisse L′0 , R0′ , . . . , L′t , Rt′ vor und berechnet Wahrscheinlichkeiten pi folgendermaßen: ∗ Falls nach Runde i−1 zwei Blöcke (Li−1 , Ri−1 ), (L∗i−1 , Ri−1 ) mit Li−1 ⊕L∗i−1 = ∗ ′ L′i−1 und Ri−1 ⊕ Ri−1 = Ri−1 in Runde i verschlüsselt werden, so ist die Wahrscheinlichkeit, dass Li ⊕ L∗i = L′i und Ri ⊕ Ri∗ = Ri′ gilt, gerade pi . Die Liste L′0 , R0′ , L′1 , R1′ , p1 , . . . , L′t , Rt′ , pt heißt t-Runden-Charakteristik. Sind die pi unabhängig voneinander (nicht Q streng erfüllt, da Rundenschlüssel nicht voneinander unabhängig), so ist ti=1 pi die Wahrscheinlichkeit, dass aus L′0 , R0′ am Ende L′t , Rt′ entsteht. Wähle bei Rundenzahl r eine (r − 3)-Runden-Charakteristik mit möglichst Qr−3 hohem p = i=1 pi und wende 3-Runden-Kryptoanalyse auf die letzten 3 Runden an. Macht man das mit sehr vielen Klartext-Chiffretext-Paaren, sollte der letzte Rundenschlüssel in den Kandidatenmengen häufiger auftauchen als die übrigen 48-Bit-Strings. Beachte: Je größer r, desto kleiner p, also umso mehr Paare erforderlich. Bei r = 16 ist differentielle Kryptoanalyse nicht (wesentlich) effektiver als vollständige Schlüsselsuche. Dies zeigt auch, dass das Design der S-Boxen und die Rundenanzahl von den Entwicklern der DES aufgrund der Kenntnis der differentiellen Kryptoanalyse gewählt wurde (vgl. [18]). 78 (Mit geeigneten Verbesserungen benötigt man 247 gewählte Klartexte; dies ist besser als 255 Versuche bei vollständiger Schlüsselsuche.) Weitere Einzelheiten: [13], [27, Kapitel 3.4]20 , [40, Kapitel 5]. Zur Beschreibung des AES benötigen wir einige Hilfsmittel über endliche Körper. 4.8 Endliche Körper a) Ein Körper K ist ein kommutativer Ring mit Eins, in dem jedes Element b 6= 0 ein Inverses b−1 bezüglich der Multiplikation besitzt. b) Ist |K| endlich, so ist |K| = pa , p eine Primzahl. Dann ist 1 + . . . + 1 = ←− p −→ 0. c) Zu jeder Primzahlpotenz gibt es genau einen Körper dieser Ordnung (bis auf Isomorphie). d) Für einen endlichen Körper K ist die multiplikative Gruppe K∗ = K \ {0} zyklisch. D.h. es existiert ein Element g ∈ K∗ mit K∗ = < g >= {g 0 = 1, g 1, g 2 , . . . , g n−1}, wobei n = |K∗ | = |K| − 1. Es ist g n = 1. e) Für |K| = p ist K ∼ = Zp . f) Konstruktion von Körpern der Ordnung pa , a > 1 (Bezeichnung: Sei m(x) ∈ Zp [x] ein (über a Fp a ): Zp ) irreduzibles Polynom vom Grad a. Elementen ist dann Fp = {Polynome in Zp [x] vom a Ein Körper mit p Grad < a}, versehen mit der üblichen Addition. Die Multiplikation ⊙ geschieht wie üblich, mit anschließender Reduktion mod m(x); dabei liefert die Reduktion eines Polynoms a(x) (mod m(x)) den Rest r(x) bei der Division von a(x) durch m(x): Ist also a(x) = q(x) · m(x) + r(x), Grad r(x) < Grad m(x) (wobei Grad 0 = −1), dann ist r(x) = a(x) mod m(x). 20 dort werden auch Design-Prinzipien für S-Boxen angegeben: Kapitel 3.6 79 Beispiel: Konstruktion von 8 4 F2 8 : 3 m(x) = x + x + x + x + 1 ist irreduzibel über Z2 . (x6 + x4 + x2 + x + 1) ⊙ (x7 + x + 1) = x13 + x11 + x9 + x8 + x7 + x7 + x5 + x3 + x2 + x + + x6 + x4 + x2 + x + 1 mod m(x) = x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1 mod m(x) Wie oben geschildert ist x13 +x11 +x9 +x8 +x6 +x5 +x4 +x3 +1 mod m(x) der Rest bei der Division durch m(x). Also rechne: (x13 +x11 +x9 + x8 + x6 +x5 +x4 + x3 +1) : (x8 + x4 + x3 + x + 1) x13 +x9 + x8 + x6 +x5 = x5 + x3 x11 x11 7 6 +x + x +x4 + x3 +1 +x4 + x3 +1 x7 + x6 Rest x7 + x6 + 1 +1 Damit ist insgesamt: (x6 + x4 + x2 + x + 1) ⊙ (x7 + x + 1) = x7 + x6 + 1 Oft schreibt man die Elemente aus Fpa auch als a-Tupel über Zp : ba−1 xa−1 + . . . b1 x + b0 ↔ (ba−1 , . . . b1 , b0 ). Addition dann komponentenweise, Multiplikation nach obiger Regel. Also in F82 (mit obigem m(x)): (0, 1, 0, 1, 0, 1, 1, 1) ⊙ (1, 0, 0, 0, 0, 0, 1, 1) = (1, 1, 0, 0, 0, 0, 0, 1) Beachte: Wählt man ein anderes irreduzibles Polynom m̃(x) vom Grad a, so ist das Ergebnis der Multiplikation (mod m̃(x)) zweier Polynome vom Grad ≤ a−1 ein anderes. Die entstehenden Körper sind aber isomorph. g) Die multiplikativen Inversen eines Elements 6= 0 in Fpa bestimmt man mit dem erweiterten Euklidischen Algorithmus in Zp [x]. Dieser wird im Folgenden vorgestellt. Für zwei Polynome a(x), 0 6= b(x) ∈ Zp [x] berechnet der erweiterte Euklidische Algorithmus ggT (a(x), b(x)) und bestimmt Polynome u(x) und v(x) mit ggT (a(x), b(x)) = u(x)a(x) + v(x)b(x). Dabei ist ggT (a(x), b(x)) normiert (d.h. der höchste Koeffizient ist 1). 80 Zur verwendeten Schreibweise: Ist bei der Division mit Rest a(x) = q(x) · b(x) + r(x), Grad r(x) < Grad b(x), so schreibe q(x) = a(x) div b(x), und wie oben r(x) = a(x) mod b(x). Der erweiterte Euklidische Algorithmus in folgt: Zp [x] gliedert sich nun wie Gegeben seien a(x), b(x) 6= 0, wobei Grad a(x) ≥ Grad b(x) gelte. (1) Setze s(x) := a(x), t(x) := b(x), u1 (x) := 1, u2 (x) := 0, u(x) := 0, v1 (x) := 0, v2 (x) := 1, v(x) := 1 (2) Solange s(x) mod t(x) 6= 0, wiederhole: q(x) := s(x) div t(x), r(x) := s(x) mod t(x) u(x) := u1 (x) − q(x)u2 (x), v(x) := v1 (x) − q(x)v2 (x) u1 (x) := u2 (x), u2 (x) := u(x) v1 (x) := v2 (x), v2 (x) := v(x) s(x) := t(x), t(x) := r(x) (3) Sei a der höchste Koeffizient 6= 0 von t(x). t(x) := t(x) , u(x) := u(x) , v(x) := v(x) a a a Ausgabe: t(x) (ggT (a(x), b(x))) u(x), v(x) (t(x) = u(x)a(x) + v(x)b(x)) Beispiel: (m(x) =)a(x) = x8 + x4 + x3 + x + 1 , b(x) = x7 + x6 + x3 + x + 1 in Z2 [x] s(x) 8 4 3 u1 (x) u2 (x) u(x) v1 (x) v2 (x) v(x) t(x) 7 6 3 x +x +x +x+1 x +x +x +x+1 1 0 0 0 x7 + x6 + x3 + x + 1 x6 + x2 + x 0 1 1 1 x6 + x2 + x 1 1 x+1 x+1 x+1 1 x+1 x+1 x2 x8 + x4 + x3 + x + 1 : x7 + x6 + x3 + x + 1 = x + 1 Rest x6 + x2 + x x7 + x6 + x3 + x + 1 : x6 + x2 + x = x + 1 Rest 1 Also ist ggT (a(x), b(x)) = 1 81 1 x2 und gilt 1 = (x + 1) · (x8 + x4 + x3 + x + 1) + x2 · (x7 + x6 + x3 + x + 1) (∗) Sei nun F28 wie in f) wieder mit m(x) = a(x) = x8 + x4 + x3 + x + 1 gebildet. Für die Polynome x2 und x7 + x6 + x3 + x + 1 bedeutet die Gleichung (∗) dann x2 ⊙ (x7 + x6 + x3 + x + 1) = 1. Als Element von F28 ist also x2 das multiplikative Inverse von x7 + x6 + x3 + x + 1 (und umgekehrt). In der Tupelschreibweise: (11001011)−1 = (00000100). Bei der Konstruktion von Fpa ist das Polynom m(x) irreduzibel, jedes Polynom 0 6= b(x) ∈ Fpa ist daher teilerfremd zu m(x) (d.h. ggT (m(x), b(x)) = 1). In der eben beschriebenen Weise lässt sich daher mit dem erweiterten Euklidischen Algorithmus das multiplikative Inverse von b(x) in Fpa bestimmen. 4.9 Der Advanced Encryption Standard (AES) - Das Rijndael-Verfahren a) 1997: US-Standardisierungsbehörde NIST (National Institute of Standards and Technology) startet öffentliche Ausschreibung für Nachfolgeverfahren des DES. Anforderungen: öffentlich, lizenzfrei, weltweit verfügbar, schneller als TRIPLEDES. Blocklänge mind. 128 Bit, variable Schlüssellängen von 128, 192, 256 Bit. 1998: 15 AES-Kandidaten werden eingereicht (darunter ’Magenta’, Deutsche Telekom) und begutachtet. 1999: Auswahl von 5 Algorithmen für die letzte Runde: • Twofish (s. 4.10) • RC6 (s. 4.10) • MARS (IBM, D. Coppersmith)21 21 http://domino.research.ibm.com/comm/research_projects.nsf/pages/ security.mars.html 82 • Serpent (R. Anderson, E. Biham, L. Knudsen; 32-Runden Feistel-Chiffre, DES-ähnlich)22 • Rijndael (J. Daemen, V. Rijmen) 2000: Wahl von Rijndael als neuen AES (vor Twofish und Serpent) Mai 2002: AES (Rijndael) wird zum Federal Information Processing Standard (FIPS 197) in den USA. b) Rijndael ist eine iterierte Blockchiffre, aber keine Feistel-Chiffre. Es handelt sich um ein sogenanntes Substitutions-Permutations-Netzwerk (SP-Netzwerk). Blocklänge b und Schlüssellänge k können unabhängig voneinander auf einen der Werte 128, 192, 256 Bit gesetzt werden. Die Zahl der Runden r ist abhängig von diesen Werten 10, 12 oder 14. Im FIPS-Standard ist b = 128, k = 128, r = 10. (Wir verwenden im Folgenden auch diese Parameter.) Der Ablauf des Rijndael-Verfahrens ist auf Seite 84 skizziert. Die Zwischenergebnisse S0 , S1 , . . . , S9 werden in Rijndael Zustände (states) genannt. Jede Runde, bis auf die zehnte, besteht aus drei Transformationen (s. Abb. 10): S SubBytes-Transformation: Nichtlineare Transformation; dient dem Schutz gegen differentielle und lineare Kryptoanalyse. i-1 SubBytes Runde i ShiftRows-Transformation: Dient der Diffusion. ShiftRows entfällt für i = 10 MixColumns K + i MixColumns-Transformation: Dient ebenfalls der Diffusion. In Runde 10 werden nur die SubBytes-Transformation und die ShiftRows-Transformation vorgenommen. Die Schlüsseladdition (bin.Add.,XOR) AddRoundKey wird vor der ersten Runde und in jeder Runde jeweils nach den oben genannten Abbildung 10: Transformatio- Transformationen durchgeführt. nen S 22 i http://www.cl.cam.ac.uk/~rja14/serpent.html 83 Klartextblock Schlüssel 128 Bit Schlüsselexpansion 128 Bit auf 128 * 11 = 1408 Bit K0 + 128 Bit S0 128 Bit Runde 1 + K1 128 Bit S1 128 Bit Runde 2 K3 + 128 Bit S9 128 Bit Runde 10 K10 + 128 Bit Chiffretextblock 128 Bit Abbildung 11: Schematischer Ablauf des Rijndael-Verfahrens 84 Dass vor der ersten und nach der letzten Runde eine Schlüsseladdition durchgeführt wird, bezeichnet man als Whitening. Dies erschwert einen KnownPlaintext-Angriff, da dem Angreifer der Input der ersten Runde und der Output der letzten Runde unbekannt sind. Die Schlüsseladdition vor der ersten Runde sorgt außerdem dafür, dass Auffälligkeiten im Klartext verwischt werden. c) Wir beschreiben nun die drei Transformationen SubBytes, ShiftRows und MixColumns und danach die Rundenschlüsselerzeugung. Zunächst aber zwei Vorbemerkungen: Die Klar- und Chiffretextblöcke und sämtliche Zustände in Rijndael werden als 4x4 Matrizen geschrieben, wobei jeder Eintrag aij ein Byte, d.h. einen 8-Bit-String ist: a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23 a33 a31 a32 a33 Die Bytes sind spaltenweise ein- und auszulesen, d.h. der Block hat die Form: a00 a10 a21 a20 a01 . . . a33 An einigen Stellen muss man Bytes (d.h. 8-Bit-Strings) als Elemente in F28 auffassen: (b7 b6 . . . b0 ) ↔ b7 x7 + b6 x6 + . . . + b0 . Addition entspricht XOR, Multiplikation Körpermultiplikation. In Rijndael ist F28 bezüglich des irreduziblen Polynoms x8 + x4 + x3 + x + 1 gegeben. d) SubBytes-Transformation Eingabe: b00 . . . b03 .. , b Bytes Zustand Si = ... . ij b30 . . . b33 Jedes Byte bij wird einzeln verändert; dies liefert eine neue 4 × 4-Matrix, die Ausgabe der SubBytes-Transformation. Sei g = b7 b6 . . . b0 ein Byte. Die SubBytes-Transformation umfasst zwei Schritte: 1. Schritt: Fasse g als Element in F28 auf und berechne g −1 in g 6= 00 . . . 0. Falls g = 00 . . . 0, so bleibt g ungeändert. 85 F2 8 , falls 2. Schritt: Fasse das nach dem ersten Schritt erzeugte Byte c7 c6 . . . c0 als Bit-Folge (also Element in Z82 ) auf und unterwerfe es der folgenden affinen Transformation des Z82 : 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 c0 c1 c2 c3 c4 c5 c6 c7 + 1 1 0 0 0 1 1 0 = d0 d1 d2 d3 d4 d5 d6 d7 d7 d6 d5 d4 d3 d2 d1 d0 ist dann das Ergebnis der SubBytes-Transformation von g = b7 b6 . . . b0 . Bsp.: g = (11001011) 1 1 1 1 1 0 0 0 g −1 = (00000100) 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 (siehe S. 82) 0 0 1 0 0 0 0 0 + 1 1 0 0 0 1 1 0 = 1 1 1 1 1 0 0 0 Also: (11001011) → (00011111) In Rijndael ist die SubBytes-Transformation durch eine S-Box beschrieben. Die S-Box ist eine 16×16 Matrix, deren Einträge die Zahlen von 0 bis 255 (in einer gewissen Reihenfolge) sind. Ein Byte b7 . . . b0 bestimmt durch b7 b6 b5 b4 die Zeile und durch b3 b2 b1 b0 die Spalte (Zeilen u. Spalten mit 0, . . . 15 nummeriert). Der Eintrag an der entsprechenden Stelle ist die Zahl, die binär codiert die SubBytes-Transformation von b7 . . . b0 angibt. (Schneller als jedesmal Inverse und affine Transformation zu berechnen.) In SubBytes wird durch g → g −1 die Nichtlinearität (über F2 ) sichergestellt. Die Einfachheit dieser Abbildung könnte ggf. kryptoanalytische Angriffe ermöglichen; daher ist eine affine Abbildung nachgeschaltet. Sie dient 86 auch der Konfusion und Diffusion und sorgt dafür, dass der Output von SubBytes nie mit dem Input oder dem Komplement des Inputs übereinstimmt (Byte-weise). e) ShiftRows-Transformation Jede der vier Zeilen der 4 × 4-Matrix, die man nach SubBytes erhält, werden zyklisch verschoben: Die 1. Zeile bleibt unverändert, die 2. Zeile wird um eine Stelle nach links, die 3. Zeile um zwei Stellen nach links und die 4. Zeile um drei Stellen nach links verschoben. f) MixColumns-Transformation Jedes der Bytes in der Input 4 × 4-Matrix wird als Element in F28 aufgefasst. Diese 4 × 4-Matrix wird von links mit x x+1 1 1 1 x x+1 1 1 1 x x+1 x+1 1 1 x multipliziert, wobei x ↔ 00000010 und 1 ↔ 00000001 gilt. Ist ci die i-te Spalte der Inputmatrix, di die i-te Spalte der Outputmatrix, so ist x x+1 1 1 1 x x+1 1 ·c. di = 1 1 x x+1 i x+1 1 1 x Die Matrizenmultiplikation erfolgt über F2 8 . g) Schlüsselerzeugung Ausgangsschlüssel hat 128 Bit. Er wird als 4 × 4-Matrix von Bytes geschrieben, spaltenweise zu lesen. Seien w(0), w(1), w(2), w(3) diese Spalten. Es werden 40 weitere Spalten à vier Bytes definiert. Sei w(i − 1) schon definiert. Ist i 6≡ 0 (mod 4), so w(i) = w(i − 4) ⊕ w(i − 1) (d.h. die 4 Einträge jeweils XOR-verknüpfen). Ist i ≡ 0 (mod 4) , so w(i) = w(i − 4) ⊕ T (w(i − 1)), wobei T folgende Transformation ist: a b a, b, c, d Bytes. Sei w(i − 1) = c , d 87 Wende auf b, c, d, a die SubBytes-Transformation an. Dies liefert vier Bytes, e, f, g, h. i−4 Berechne r(i) = (00000010) 4 in F28 (beachte i ≡ 0 (mod 4)) e ⊕ r(i) f Dann T (w(i − 1)) = g h Der Rundenschlüssel Ki besteht dann aus der 4 × 4-Matrix (w(4i), w(4i + 1), w(4i + 2), w(4i + 3)), i = 0, 1, . . . , 10. h) Entschlüsselung Alle einzelnen Transformationen in Rijndael sind invertierbar. Kehre Algorithmus um und ersetze alle Transformationen durch ihre Inverse. (Einzelheiten: FIPS-Standard 197 oder [40]). (Die Tatsache, dass alle Einzeltransformationen bijektiv sind, ist typisch für Substitutions-Permutations-Netzwerke; dies unterscheidet sie von FeistelChiffren; vgl. Bemerkung am Ende von 4.5.) Für Details zu Design und Implementierung von Rijndael siehe [20]. Über generelle Eigenschaften von SP-Netzwerken verweisen wir auf [33]. i) Schnelligkeit Rijndael ist deutlich schneller als DES (bei Software-Implementierung). Auf 1 GHz-Rechner sind Verschlüsselungen (abhängig vom C-Compiler) von ca. 200 MBit/sec. bis 2 GBit/sec. möglich. Bei Hardware-Implementierung 2 GBit/sec. bis 70 GBit/sec. j) Sicherheit Nach zwei Runden hat man vollständige Diffusion: Jedes der 128 OutputBits nach Runde 2 hängt von jedem der 128 Klartextblockbits ab. Rijndael ist gegen differentielle und lineare Kryptoanalyse sicher. ShiftRows wurde eingefügt, um gegen zwei relativ neue kryptoanalytische Angriffe ( truncated ” differentials“und Square-attack“ – ’Square’ war ein Vorläufer von Rijndael) ” sicher zu sein. Die Schlüsselerzeugung mittels SubBytes soll verhindern, dass bei Kenntnis von Teilen des Schlüssels die übrigen Bits einfach zu ermitteln sind. Außerdem sorgt dies dafür, dass verschiedene Ausgangsschlüssel nie viele Rundenschlüssel gemeinsam haben. 88 Nach einigen Jahren der Existenz von Rijndael gibt es mittlerweile einige neue kryptoanalytische Ansätze gegen das Verfahren. Eine Idee stammt von Courtois und Pieprzyk (2002). Sie besteht darin, Rijndael durch ein überdefiniertes System quadratischer Gleichungen in mehreren Variablen zu beschreiben (ca. 8000 Gleichungen in ca. 1600 Variablen). Dieses soll dann (mittels des XL-Algorithmus, extended linearization) in ein lineares Gleichungssystem umgewandelt und schließlich gelöst werden. Diese Idee führte auf folgende Kontroverse: Kann man Gleichungssysteme zur Beschreibung des AES finden, welche eine eindeutige Lösung haben? Näheres zum XL-Verfahren und der genannten Kontroverse (speziell Courtois versus Moh): Courtois: Is AES a secure cipher? http://www.cryptosystem.net/aes/ und dortige Links Moh: On the Courtois-Pieprzyk‘s attack on Rijndael (2002) http://www.usdsi.com/aes.html siehe auch Crypto-Gram von Bruce Schneier: http://www.schneier.com/crypto-gram-0209.html http://www.schneier.com/crypto-gram-0210.html Ein anderer kryptoanalytischer Ansatz gegen Rijndael ist der 2005 von Bernstein vorgestellte Timing-Angriff. Er beruht darauf, dass die AES-Berechnungen wesentlich vom Auslesen der Einträge in größeren Arrays abhängen. Die Table-Lookup-Zeit hängt dabei vom Index des Arrays ab. So sind Rückschlüsse darüber möglich, was in den L2 -Cache (braucht mehr Zeit) und was in den L1 -Cache kommt (braucht weniger Zeit). Für erfolgreiche Timing-Angriffe wurden 227 Blöcke benötigt. Allerdings hat der Angreifer selten die Möglichkeit, so genaue Aussagen über die CPUZeilen zu gewinnen. Darüber hinaus sind AES-Implementierungen mit konstanten Zeiten für die Array-Zugriffe möglich; diese verlangsamen aber die Verschlüsselung. Nähere Informationen: Bernstein: Cache-timing attacks on AES http://cr.yp.to/antiforgery/cachetiming-20050414.pdf Weitere Angriffe beruhen auf Modifikationen der differentiellen Kryptoanalyse (Boomerang-Attack, Related-Key-Attack) und sind bisher für AES-Versionen mit kleineren als den empfohlenen Rundenzahlen erfolgreich. 89 Als Beispiel sei genannt: M. Gorski, S. Lucks: New Related-Key Boomerang Attacks on AES http://eprint.iacr.org/2008/438 4.10 Andere Blockchiffren Neben dem DES und dem AES gibt es eine Reihe weiterer gebräuchlicher Blockchiffren. Wir beschreiben knapp die wichtigsten. 1) IDEA Anfang der 90er Jahre von Xuejia Lai und James Massey entwickelt (IDEA wird auch von PGP verwendet) Länge Klartext-/Chiffretextblöcke 64 Bit Schlüssellänge 128 Bit Funktionsweise: Aufteilen der 64 Bits eines Klartextblocks auf vier Blöcke 16 Bit. Diese vier Blöcke werden in acht Runden bearbeitet. In jeder dieser Runden werden aus den vier Eingabeblöcken und jeweils sechs Teilschlüsseln der Länge 16 mittels 4 Additionen (modulo 216 ) und 4 Multiplikationen23 (modulo 216 + 1) die vier Eingabeblöcke für die nächste Runde erzeugt. Am Ende nochmals je zwei weitere Additionen und Multiplikationen mit 16 Bit-Schlüsseln und Zusammensetzen der resultierenden 4 Blöcke zum Chiffretextblock. IDEA ist keine Feistel-Chiffre. IDEA hat bisher keine Sicherheitsrisiken aufgewiesen und ist etwa doppelt so schnell wie DES.24 2) RC2, RC5, RC6 Wichtige Blockverschlüsselungsverfahren aus der RC-Familie, entwickelt von Ron Rivest (vertrieben von RSA Data Security). RC2 (Anfang der 90’er Jahre entwickelt, 1997 veröffentlicht) Variable Schlüssellänge (40 Bits bis 1024 Bits), Blocklänge 64 Bit, wird unter anderem im S/MIME-Standard verwendet.25 23 genauer: modifizierte Multipliktion modulo 216 +1; 0 muss gesondert behandelt werden Details siehe Schmeh [42], S. 84-85, oder http://www.informationsuebertragung.ch, Link ‘Algorithmen‘ (mit Applets) 25 Details: http://www.tools.ietf.org/html/rfc2268 24 90 RC5 (1995 veröffentlicht) Variable Schlüssellänge, Klartextblocklänge, Rundenzahl (z.B. Klartextblocklänge 32 Bit, Schlüssellänge 128 Bit, 12 Runden) Kombiniert Add. mod 2w (w = Klartextblocklänge), binäre Add. XOR, zyklische Shifts (abhängig von Klartextblöcken). RC5 scheint gegen differentielle Kryptoanalyse und lineare Kryptoanalyse sicher zu sein.26 RC6 (1998 veröffentlicht) Erreichte die Auswahlrunde der letzten AES-Kandidaten. Schnell und einfach zu implementieren. Variable Schlüssellängen und Blocklängen.27 3) Blowfish, Twofish Blowfish (1994) und Twofish (1998) sind von B. Schneier entwickelte Feistel-Chiffren. Blowfish hat variable Schlüssellänge (bis 448 Bit), S-Boxen sind schlüsselabhängig, 16 Runden, Blocklänge 64. Blowfish ist ein schneller und einfach zu implementiernder Algorithmus (da nur XOR und + von 32 Bit-Worten). Gegen Blowfish sind bisher keine erfolgversprechenden Angriffe bekannt.28 Twofish erreichte die Auswahlrunde der letzten fünf AES-Kandidaten. Twofish ist Feistel-Chiffre. 8 × 8 S-Boxen, arithmetische Operationen z.T. in F28 .29 4) Weitere gebräuchliche Blockchiffren sind • CAST (C. Adams, S. Tavares 1990; 1997. Wird auch von PGP verwendet.)30 • MISTY (Fa. Mitsubishi, 1996); Weiterentwicklung: KASUMI (mit A5/3 identisch); wird verwendet für die symmetrische Verschlüsselung bei UMTS (Universal Mobile Telecommunication System).31 26 Details siehe Menezes, van Oorschott, Vanstone [39], S. 269-270, oder http://www.tools.ietf.org/html/rfc2040 27 Details: http://citeseer.ist.psu.edu/317403.html 28 Details: http://www.schneier.com/blowfish.html 29 Details: http://www.schneier.com/twofish.html 30 Details: http://tools.ietf.org/html/rfc2144 31 Infos: http://www.3gpp.org/TB/other/algorithms/35202-311.pdf oder Buch von Schneier [43] 91 5 Betriebsarten von Blockchiffren Blockchiffren können bei der Verschlüsselung längerer Klartexte in verschiedenen Weisen eingesetzt werden. Wir beschreiben im Folgenden die wichtigsten dieser Betriebsarten (’modes of operation’). Sei also eine Blockchiffre gegeben, die Klartextblöcke der Länge n über Alphabet R verschlüsselt. Schlüsselmenge K, k ∈ K, so Ek Verschlüsselungsfunktion, Dk Entschlüsselungsfunktion. 5.1 Electronic Codebook Mode (ECB Mode) Beliebig langer Klartext wird in Blöcke der Länge n zerlegt. Ggf. Klartext ergänzen, dass durch n teilbare Länge entsteht (z.B. zufällige Zeichen am Ende, padding). Chiffrierter Text ist dann Folge der chiffrierten Blöcke. (Für feste Schlüssel könnte man eine Tabelle der Klartext-Chiffretext-Paare anlegen: electronic codebook; daher diese Bezeichnung.) Probleme: • Regelmäßigkeiten des Klartextes führen zu Regelmäßigkeiten des chiffrierten Textes, denn gleiche Klartextblöcke werden immer in gleiche Chiffretextblöcke verschlüsselt. Kann die Kryptoanalyse erleichtern; etwa wenn Klartextnachrichten immer in der gleichen Weise beginnen (z.B. e-mail). • Angreifer kann die Nachricht ändern, indem er Chiffretext einfügt, der mit dem gleichen Schlüssel verschlüsselt worden ist; oder er kann die Reihenfolge der Chiffretextblöcke ändern. Daher sollten z.B. in einer Datenbank die Felder nicht als Block verschlüsselt werden. Man kann die Sicherheit des ECB Mode steigern, wenn Blöcke nur teilweise aus dem Klartext und teilweise aus zufälligen Zeichen gebildet werden. 5.2 Cipherblock Chaining Mode (CBC Mode) Diese Betriebsart wurde erfunden, um einige der Probleme des ECB Mode zu beseitigen. 92 Im CBC Mode hängt die Verschlüsselung eines Blocks auch von den vorhergegangenen Blöcken ab (kontextabhängige Verschlüsselung). Es sei R = {0, 1}. CBC Mode benötigt festen Initialisierungsvektor IV ∈ {0, 1}n Verschlüsselung: Klartextblöcke m1 , . . . , mt Setze c0 = IV , cj = Ek (cj−1 ⊕ mj ). Chiffretextblöcke c1 , . . . , ct Entschlüsselung: Gegeben c1 , . . . ct Setze c0 = IV . Dann mj = cj−1 ⊕ Dk (cj ) Beispiel: n=5 Permutationschiffre b1 b2 b3 b4 b5 → bπ(1) bπ(2) bπ(3) bπ(4) bπ(5) (Transpositionschiffre) Schlüsselraum: S5 Sei m = 10100 01110 1100. Padding: Letzten Block zu 11000 erweitern. 1 2 3 4 5 1 2 3 4 5 −1 Verwende Schlüssel k = ,k = . 3 4 2 5 1 5 3 1 2 4 IV = 11001 = c0 c1 = Ek (c0 ⊕ m1 ) = Ek (01101) = 10110 c2 = Ek (c1 ⊕ m2 ) = Ek (11000) = 00101 c3 = Ek (c2 ⊕ m3 ) = Ek (11101) = 10111 c = (11001) 10110 00101 10111 Entschlüsselung: c0 ⊕ Dk (c1 ) = 11001 ⊕ Dk (10110) = 11001 ⊕ 01101 = 10100 = m1 Vorteile: Gleiche Klartextblöcke in unterschiedlichem Kontext werden i. Allg. verschieden verschlüsselt. Änderung eines Chiffretextblockes ci führt bei Entschlüsselung zu falschem mi und mi+1 . Diese sind dann in der Regel unverständlich, Änderung wird bemerkt. Andererseits: Tritt eine zufällige Störung in ci bei der Übertragung auf, so 93 sind nur mi und mi+1 beeinflusst, mi+2 , . . . sind wieder korrekt (CBC ist selbstsynchronisierend ). Entfernen eines ci führt bei Entschlüsselung zu unverständlichem m̃i = ci−1 ⊕ Dk (ci+1 ) anstelle von mi , mi+1 = ci ⊕ Dk (ci+1 ) fehlt, ab mi+2 korrekt. Einfügen eines c̃ (zwischen ci−1 und ci ) führt bei Entschlüsselung zu unverständlichem m̃i = ci−1 ⊕ Dk (c̃), neuem unverständlichem m̃ = c̃ ⊕ Dk (ci ) und danach zu mi+1 , . . .. Wie bei ECB besteht auch bei CBC der Nachteil, dass (ohne Verwendung von padding) stets abgewartet werden muss, bis ein vollständiger Block der Länge n vorhanden ist, bevor verschlüsselt werden kann. CBC ist also v.a. bei Verschlüsselungen langer Klartexte gut geeignet. 5.3 Cipher Feedback Mode (CFB Mode) Hier wieder R = {0, 1}. CFB Mode ist eine stromchiffreähnliche Betriebsart von Blockchiffren, die eine Verschlüsselung von Klartexten ermöglicht, ohne abwarten zu müssen, bis ein Block der Länge n vorliegt. Dies ist insbesondere bei interaktiver Computerkommunikation nützlich. Der Klartext wird in Blöcke p1 , p2 , . . . der Länge r für ein festes r mit 1 ≤ r ≤ n aufgeteilt (typisch: r = 8). Benötigt wird außerdem ein Initialisierungsvektor IV ∈ {0, 1}n . Setze I1 = IV . Dann für j = 1, 2, 3, . . . cj = pj ⊕ Lr (Ek (Ij )) ∈ {0, 1}r Ij+1 = Rn−r (Ij )|cj ∈ {0, 1}n Dabei bezeichnet Lr (X) die r linksstehenden Bits eines Blocks X der Länge n, Rn−r (X) die n − r rechtsstehenden Bits von X. X|Y ist das Hintereinanderschreiben der Strings X und Y . c1 , c2 , c3 , . . . sind die verschlüsselten p1 , p2 , p3 , . . . . Entschlüsselung: I1 = IV Dann für j = 1, 2, . . . pj = cj ⊕ Lr (Ek (Ij )) (keine Entschlüsselung mit Dk !) 94 Ij+1 = Rn−r (Ij )|cj (Beachte: cj ⊕ Lr (Ek (Ij )) = pj ⊕ Lr (Ek (Ij )) ⊕ Lr (Ek (Ij )) = pj ) Beispiel: Sei m wie in 5.2, ebenso Ek . Weiter sei IV = 11001 = I1 und r = 2. 10 10 00 11 10 11 00 ↓ ↓ ↓ ↓ ↓ ↓ ↓ p1 p2 p3 p4 p5 p6 p7 Ek (I1 ) = 00111 c1 = p1 ⊕ 00 = 10 I2 = 001|10 Ek (I2 ) = 11000 c2 = p2 ⊕ 11 = 01 I3 = 110|01 Ek (I3 ) = 00111 c3 = p3 ⊕ 00 = 00 I4 = 001|00 Ek (I4 ) = 10000 c4 = p4 ⊕ 10 = 01 I5 = 100|01 Ek (I5 ) = 00011 c5 = p5 ⊕ 00 = 10 I6 = 001|10 Ek (I6 ) = 11000 c6 = p6 ⊕ 11 = 00 I7 = 110|00 Ek (I7 ) = 00101 c7 = p7 ⊕ 00 = 00 c1 , . . . , c7 : 10 01 00 01 10 00 00 Man sieht an der Beschreibung, dass der CFB Mode wie eine Stromchiffre (auf r-Bit Strings) funktioniert, wobei der Schlüsselstrom Lr (Ek (Ij )), j = 1, 2, 3, . . . , mittels Blockchiffrierung aus I1 und den vorher verschlüsselten r-Bits erzeugt wird. CFB Mode ist sehr schnell und kann von Sender und Empfänger fast simultan ausgeführt werden. Sobald cj vorliegt, kann der Empfänger Ij+1 und dann Lr (Ek (Ij+1)) berechnen und dann bei Empfang von cj+1 sofort durch XOR pj+1 entschlüsseln. Beachte: CFB Mode hängt nur von der Geschwindigkeit der Blockverschlüsselung (nicht Entschlüsselung) ab. Übertragungsfehler oder Änderungen in einem Chiffretextblock wirken sich 95 solange aus, bis der fehlerhafte Block aus Ij herausgeschoben wurde, d.h. auf die nächsten ⌈ nr ⌉ Blöcke. CFB ist also auch selbstsynchronisierend. Das Verhalten bei Einfügen bzw. Entfernen von Chiffretextblöcken ist wie bei CBC (mit längerer Auswirkung entsprechend der vorigen Bemerkung). Da Sender und Empfänger nur über die Verschlüsselungsfunktion Ek verfügen müssen, ist der CFB Mode bei Public-Key-Systemen (siehe später) nicht anwendbar, denn dort ist Ek als öffentlicher Schlüssel jedem bekannt. CFB Mode wird häufig im Internet eingesetzt. Spezialfall: r = n, c0 = IV , cj = mj ⊕ Ek (cj−1 ) (vgl. CBC). 5.4 Output Feedback Mode (OFB Mode) Wieder R = {0, 1}. Ähnlich wie CFB, nur Ij+1 = Rn−r (Ij )|Lr (Ek (Ij )). Dann cj = pj ⊕ Lr (Ek (Ij )). Die Ij hängen nur von k und IV ab und können von Sender und Empfänger parallel berechnet werden. Verschlüsselung von pj hängt nur von seiner Position, nicht von den vorangegangenen Blöcken ab. Änderung eines cj bewirkt nur Änderung bei der Entschlüsselung dieses Blockes. Aber: Wird ein Chiffretextblock entfernt, so werden alle folgenden Chiffretextblöcke falsch entschlüsselt. OFB ist nicht selbstsynchronisierend. OFB ist schnell; wird z.B. zur Verschlüsselung gesprochener Sprache in Echtzeit verwendet. Spezialfall: r = n. Dann Ij+1 = Ek (Ij ), cj = mj ⊕ Ek (Ij ) = mj ⊕ Ekj (I1 ). 96 6 Stromchiffren In Abschnitt 2.B hatten wir polyalphabetische Substitutionen, insbesondere Lauftextverschlüsselungen (z.B. One-Time-Pad) als Beispiele von Stromchiffren kennengelernt. Wir wollen jetzt Stromchiffren etwas genauer betrachten. Sie spielten (und spielen) in militärischen Anwendungen eine große Rolle, werden aber auch für zivile Zwecke häufig verwendet. Man unterscheidet zwei Typen: synchrone und selbstsynchronisierende Stromchiffren. 6.1 Synchrone Stromchiffren Sie sind dadurch gekennzeichnet, dass der Schlüsselstrom unabhängig von Klar- und Chiffretext erzeugt wird. Beschreibung: Ausgangsschlüssel k Funktion zur Erzeugung des Schlüsselstroms g(i, k) = ki (i = 0, 1, 2, . . .) Verschlüsselungsfunktion E: E(mi , ki) = ci (verschlüsselt Klartextbit resp. Klartextblock mi mit ki zu Chiffretextbit resp. Chiffretextblock ci ) Notwendig: Sender und Empfänger müssen synchronisiert sein. Geht die Sychronisation verloren (z.B. weil Chiffretextbits während der Übermittlung verloren gehen), so schlägt die Entschlüsselung fehl (allerdings tritt sehr viel häufiger die Änderung eines Bits als ein Verlust auf!). Fehlerfortpflanzung: Die Änderung eines Chiffretextbits bei der Übertragung hat keine Auswirkungen auf die korrekte Entschlüsselung der folgenden Bits. Falls Bits durch binäre Addition (XOR) mit Schlüsselbits ki verschlüsselt werden (d.h. E(mi , ki) = mi ⊕ ki ), so spricht man von binären additiven Stromchiffren (Bsp. One-Time-Pad). (Synchrone Stromchiffren entsprechen z.B. OFB Mode bei Blockchiffren.) 97 6.2 Selbstsynchronisierende Stromchiffren Sie sind dadurch gekennzeichnet, dass der Schlüsselstrom als Funktion des Ausgangsschlüssels und einer festen Zahl vorheriger Chiffretextbits (oder -blöcke) erzeugt wird. Beschreibung: Ausgangsschlüssel k z0 = (c−t , c−t+1 , . . . , c−1 ) Anfangszustand (nicht geheim) zi = (ci−t , ci−t+1 , . . . , ci−1 ), i ≥ 1 ki = g(zi , k), i ≥ 0, Funktion zur Erzeugung des Schlüsselstroms ci = E(mi , ki ), i ≥ 0, Verschlüsselungsfunktion mi = D(ci , ki ), i ≥ 0, Entschlüsselungsfunktion zi c i-t c ki g k c i-1 ... i-t+1 . E ci mi Abbildung 12: Verschlüsselung zi c i-t c c i-1 ... i-t+1 . ci k ki g Abbildung 13: Entschlüsselung 98 D mi Typische Vertreter selbstsynchronisierender Stromchiffren sind Blockchiffren im 1-Bit CFB Mode (d.h. r = 1 im CFB Mode; s. Abschnitt 5.3; die Funktion g wird durch die Blockchiffre realisiert. E ist dann einfach XOR.) Selbstsynchronisation: Geht ein Chiffretextbit bei der Übertragung verloren, so synchronisiert sich das System selber; nur ein Klartextbit geht verloren und t Bits werden falsch entschlüsselt. Bsp: t = 2 Verschl.: ... m m 8 9 k =g(c ,c ,k) 6 7 y8 y· . . . c8 c9 m10 m11 m12 m13 y· y· y· yk13 =g(c11 ,c12 ,k) c11 c12 c13 c/// 10 |{z} geht verloren ... Entschl.: c8 c9 c11 k =g(c ,c ,k) 6 7 y8 y· yg(c8 ,c9 ,k) . . . m8 m9 m e 11 c12 g(c ,c ,k) y 9 11 m e 12 c13 k =g(c ,c ,k) 11 12 y 13 m13 Diese Selbstsynchronisation hat aber auch zur Folge, dass Einfügen und Entfernen von Chiffretextbits durch Angreifer schwerer erkannt werden (anders als bei synchronen Stromchiffren). Fehlerfortpflanzung: Wird ein ci bei der Übertragung verändert, so wird nur die Entschlüsselung der nächsten t Bits ggf. verfälscht, danach wird wieder korrekt entschlüsselt. (Bei synchronen Stromchiffren wird sofort das nächste Bit wieder korrekt entschlüsselt; daher lassen sich – speziell bei größeren t – absichtliche Änderungen von Chiffretextbits durch einen Angreifer bei selbstsynchronisierenden Stromchiffren leichter erkennen.) Sowohl bei synchronen als auch bei selbstsynchronisierenden Stromchiffren ist die Schlüsselstromerzeugung (beschrieben durch die Funktion g) die entscheidende Komponente. In vielen Systemen spielen bei der Schlüsselstromerzeugung Schieberegister eine wichtige Rolle. Wir geben im Folgenden eine kurze Beschreibung allgemeiner Schieberegister und wenden uns dann den am einfachsten zu implementierenden Typen zu, den linearen Schieberegistern. 99 6.3 Schieberegister Def.: Ein (rückgekoppeltes) Schieberegister (feedback shift register) über dem endlichen Körper K ist eine Maschine, die aus n Registern R0 , . . . , Rn−1 (stages) besteht, die einen Input und eine Output besitzen und ein Element aus K speichern können; einer Uhr, die den Transport der Daten (= Elemente aus K) kontrolliert; und einer Recheneinheit, die eine fest vorgegebene Funktion f : Kn → K berechnet. n heißt Länge des Schieberegisters. Recheneinheit f ( a j-1 , a j-2 , ... , a j-n ) a a j-1 j . R n-1 R n-2 a j-n a j-n+1 a j-2 . R1 . R0 . Output Verzögerungsglieder Abbildung 14: Rückgekoppeltes Schieberegister Während jeder Zeiteinheit werden folgende Operationen durchgeführt: • Der Inhalt von R0 wird ausgegeben und ist Teil der Output-Folge. • Der Inhalt von Ri wird an Ri−1 weitergegeben, i = n − 1, . . . , 1. • Der neue Inhalt von Rn−1 ist aj = f (aj−1, . . . , aj−n ), wobei aj−i der frühere Inhalt von Rn−i ist, i = 1, . . . , n (Rückkopplung). Zu Beginn enthält jedes Si einen Anfangswert ai , i = 0, . . . , n − 1; (a0 , . . . , an−1 ) heißt der Anfangszustand des Schieberegisters. Die Inhalte (aj−n+1 , aj−n+2, . . . , aj ) der Ri (im (j − n + 1)-ten Zeittakt) j = n + 1, n + 2, . . . heißen die Zustände des Schieberegisters. Also: Inhalt von Rn−1 Rn−2 0. Zeittakt an−1 an−2 1. Zeittakt an = f (an−1 , . . . , a0 ) an−1 2. Zeittakt an+1 = f (an , . . . , a1 ) an 100 ... ... ... ... R1 R0 a1 a0 a2 a1 → Output a0 a3 a2 → Output a1 a0 Die Outputfolge ist also eindeutig bestimmt durch den Anfangszustand (a0 , . . . , an−1 ) und die Rekursionsvorschrift aj = f (aj−1 , . . . , aj−n ). Schieberegister der Länge n sind also nichts anderes als eine maschinelle Veranschaulichung von Rekursionen (der Ordnung n). Zu jedem Zeitpunkt befindet sich ein Schieberegister der Länge n in einem von |K|n möglichen Zuständen. Daher gibt es Zeitpunkte t1 < t2 , in denen sich das Schieberegister im gleichen Zustand befindet. Dann stimmt die Outputfolge betrachtet ab Zeitpunkt t1 mit der ab Zeitpunkt t2 überein. Also: Die Outputfolge eines Schieberegisters ist ab einem aj0 periodisch mit Periode d, d.h. ai = ai+d für alle i ≥ j0 (d kleinstmöglich). 6.4 Lineare Schieberegister Def.: Ist in einem Schieberegister der Länge n die Funktion f von der Form f (xn−1 , . . . , x0 ) = cn−1 xn−1 + . . . + c0 x0 für feste cn−1 , . . . , c0 ∈ K, so heißt das Schieberegister ein lineares Schieberegister (LSR). (Die ci heißen dann auch Rückkopplungskoeffizienten.) Es gilt also: aj = n−1 P i=0 ci aj−n+i für alle j ≥ n. Im wichtigsten Fall K = Z2 lässt sich ein lineares Schieberegister also folgendermaßen darstellen (binäres LSR): XOR-Gatter a j c R n-1 c n-1 . a j-1 R n-2 c n-2 . a j-2 R 1 c 1 . a 0 j-n+1 R 0 . a j-n Output AND-Gatter (sind nur dort erforderlich, wo c i =1) i Abbildung 15: Binäres lineares Schieberegister der Länge n 101 Beispiele: Sei K = Z2 . a) f (x3 , x2 , x1 , x0 ) = x2 + x0 Anfangszustand (a0 , a1 , a2 , a3 ) = (1011) t R3 R2 R1 R0 Output 0 1 1 0 1 1 0 1 1 0 1 2 1 0 1 1 0 3 1 1 0 1 1 ← wie Anfangszustand Output-Folge ist periodisch mit Periode 3: 101101101 . . . b) f (x1 , x0 ) = x1 + x0 Anfangszustand (a0 , a1 ) = (10) t R1 R0 Output 0 0 1 1 1 0 1 2 1 1 0 3 0 1 1 ← wie Anfangszustand Selbe Output-Folge wie in a). 6.5 Eigenschaften von linearen Schieberegistern a) Bei einem LSR der Länge n gilt: Ist c0 = 0, so stimmt die Output-Folge (bis auf a0 ) mit der des LSR der Länge n−1 überein, das gegeben ist durch f (xn−2 , . . . , x0 ) = cn−1 xn−2 + . . . + c1 x0 ) und Anfangszustand (a1 , . . . , an−1 ). Wir nehmen im Folgenden daher stets c0 6= 0 an. Solche LSR heißen dann nicht-singulär. b) Ein (nicht-singuläres) LSR ist periodisch (ab a0 ), d.h. es ex. d mit ai = ai+d für alle i ≥ 0. [Wähle j minimal mit aj+i = aj+i+d für alle i ≥ 0. Ang. j > 0. Dann aj−1 6= aj−1+d . Es ist aj−1+n = c0 aj−1 + c1 aj + . . . + cn−1 aj−2+n 102 und aj −1+n = aj−1+n+d = c0 aj−1+d + c1 aj+d + . . . + cn−1 aj−2+n+d . |{z} |{z} | {z } ≥0 aj aj−2+n Also c0 aj−1 = c0 aj−1+d und wegen c0 6= 0 dann aj−1 = aj−1+d , Widerspruch.] c) Kommt unter den Zuständen eines LSR einmal (0, . . . , 0) vor, so verbleibt das LSR immer im Zustand (0, . . . , 0). Also nach b): Ein nicht singuläres LSR der Länge n mit dem Anfangszustand 6= (0, . . . , 0) hat eine Periode ≤ |K|n − 1, im binären Fall also ≤ 2n − 1. d) Man ist interessiert daran, LSR mit möglichst großer Periode zu konstruieren. Wir beschränken uns jetzt auf den binären Fall (der Fall allgemeiner endlicher Körper ist analog). Es stellt sich heraus, dass es für jedes n binäre LSR gibt, die die Periode 2n − 1 haben. Welche sind das? Dazu betrachtet man das sog. charakteristische Polynom des binären LSR: p(t) = c0 + c1 t + . . . + cn−1 tn−1 + tn (Dies ist gerade das charakteristische Polynom der linearen Abbildung Zn2 → Zn2 gegeben durch x1 x1 x0 0 1 0 ... 0 0 0 1 0 . . . 0 .. . .. .. . . .. .. .. .. .. . . . . .. = . , ... = . 0 . . . 0 1 0 . . .. 0 xn−1 ... 0 1 .. c0 x0 + . . . + cn−1 xn−1 c0 c1 . . . cn−1 xn xn−1 die den Zustandsübergang des binären LSR beschreibt.) Man kann zeigen: Genau dann hat das (nicht singuläre) binäre LSR der Länge n Periode 2n − 1 (und das gilt dann für jeden Anfangszustand 6= (0, . . . , 0)), falls (1) p(t) irreduzibel (2) p(t) ∤ tr − 1 für alle 1 ≤ r < 2n − 1. [Bemerkung: (1) und (2) bedeuten, dass im Körper F2n , der durch das irreduzible Polynom p(t) definiert wird (siehe Seite 79), das Element t ein erzeugendes Element der zyklischen Gruppe (F2n \{0}, ·) ist.] 103 Es gilt: Es gibt genau n.32 ϕ(2n −1) n primitive Polynome über Z2 von Grad e) Ein binäres LSR der Länge n mit primitivem charakteristischen Polynom erzeugt für jeden Anfangszustand 6= (0, . . . , 0) eine periodische Folge mit Periode 2n −1. Solche Folgen heißen m-Folgen (m = maximale Periode). f) m-Folgen haben gewisse statistische Eigenschaften, die sie als Pseudozufallsfolgen geeignet erscheinen lassen. Z. B. sind Einsen und Nullen (annähernd) gleich verteilt, ebenso die Paare 00, 01, 10, 11 etc. Für kryptographische Zwecke sind sie dennoch nicht tauglich. Aus einer Teilfolge der Länge 2n (deutlich kleiner als die Periode 2n −1) lässt sich nämlich die gesamte Folge ermitteln, wie wir in Kürze sehen werden (Unterkapitel 6.6). 6.6 Lineare Komplexität Ist (a0 , a1 , . . .) eine binäre Folge mit Periode d, so gibt es immer mindestens ein binäres LSR, das diese Folge erzeugt: Wähle LSR von Länge d, c0 = 1, c1 = . . . = cd−1 = 0 Anfangszustand (a0 , a1 , . . . , ad−1 ) [I. Allg. gibt es mehrere: siehe Bsp. von Seite 102] Man kann zeigen: Ist (a0 , a1 , . . .) eine binäre periodische Folge, so gibt es ein eindeutig bestimmtes binäres LSR von minimaler Länge n, so dass (a0 , a1 , . . .) als Outputfolge dieses LSR (mit Anfangszustand (a0 , a1 , . . . , an−1 )) auftritt. Man sagt auch: n ist die lineare Komplexität von (a0 , a1 , . . .). [Beachte: Erzeugt ein LSR der Länge n eine Folge der Periode 2n − 1, so hat die Folge lineare Komplexität n.] Dieses binäre LSR minimaler Länge lässt sich folgendermaßen beschreiben: Hat (a0 , a1 , . . .) Periode d, so setze a(t) = a0 + a1 t + . . . + ad−1 td−1 32 Beweis: z.B. Lidl, Niederreiter [37] 104 und q(t) = td + 1 ggT(a(t), td + 1) Ist Grad q(t) = n, so ist p(t) = tn q( 1t ) (das reziproke Polynom von q) das charakteristische Polynom des LSR von minimaler Länge (= Grad p(t) = n), das (a0 , a1 , . . .) erzeugt.33 Es gilt nun: 6.6.1 Satz (Charakterisierung der linearen Komplexität) Sei (a0 , a1 , . . .) eine periodische binäre Folge, die von einem LSR der Länge n erzeugt wird. Sei außerdem m ∈ N0 . Dann sind gleichwertig: (1) (a0 , a1 , . . .) hat lineare Komplexität n (2) Die n aufeinanderfolgenden ’Zustandsvektoren’ (am , am+1 , . . . , am+n−1 ), . . . , (am+n−1 , am+n , . . . , am+2n−2 ) der Länge n sind linear unabhängig. Beweis: (1) ⇒ (2) : Sei f (x0 , . . . , xn−1 ) = n−1 P ci xi die zum LSR der Länge n, das i=0 (a0 , a1 , . . .) erzeugt, gehörende Funktion. Setze ai 0 1 0 ... 0 .. 0 0 1 0 ... 0 . .. .. .. .. .. . . . . C= und vi = . für i ≥ 0. 0 ... 0 1 0 . .. 0 ... 0 1 c0 c1 . . . cn−1 an+i−1 Det C = + c und c0 6= 0, da n minimal für die Erzeugung von (a0 , a1 , . . .). − 0 Also ist C invertierbar. 33 Literatur z.B. Beker, Piper [8] 105 C m v0 = vm . Daher: vm , . . . ,vm+n−1 linear unabhängig ⇔ C −m vm , . . . , C −m vm+n−1 linear unabhängig | {z } {z } | = v0 = vn−1 Angenommen v0 , . . . , vn−1 sind linear abhängig. Wähle t ≤ n − 1 minimal mit v0 , . . . , vt linear abhängig. Dann existieren d0 , . . . , dt ∈ Z2 mit d0 v0 + . . . + dt vt = 0, dt = 1. Also: vt = t−1 P dj vj . j=0 Dann gilt für alle i ≥ 0 : vt+i = C i vt = Daher: at+i = t−1 P j=0 t−1 P j=0 dj C i vj = t−1 P dj vj+i . j=0 dj aj+i für alle i ≥ 0 (1. Komponente betrachten). Also wird (a0 , a1 , . . .) von einem LSR der Länge t ≤ n − 1 erzeugt, Widerspruch. (2) ⇒ (1): Angenommen nicht. Sei g(x0 , . . . , xr−1 ) = r−1 P dj xj die Funktion j=0 des kürzesten LSR, das (a0 , a1 , . . .) erzeugt. Also d0 6= 0. Es ist ar+i = r−1 P j=0 dj aj+i für alle i ≥ 0. Das bedeutet, dass vm , . . . , vm+r linear abhängig sind, Widerspruch. 6.6.2 Satz (Rekonstruktion des LSR aus Folgestück) Sei (a0 , a1 , . . .) eine binäre periodische Folge der linearen Komplexität n (also Periode maximal 2n − 1). Dann lässt sich das zugehörige minimale Schieberegister der Länge n aus beliebigen 2n aufeinanderfolgenden Folgengliedern bestimmen. Beweis: Bekannt seien ar , ar+1 , . . . , ar+2n−1 . Seien c0 , . . . , cn−1 die Koeffizienten des minimalen LSR, das die Folge erzeugt. 106 Dann ist at+n = n−1 P i=0 ci at+i , t = r, r + 1, . . . , r + n − 1, d.h. ar+n ar ar+1 .. . ... ... ar+n−1 ar+n .. . . .. = ar+2n−1 ar+n−1 . . . ar+2n−2 | {z } =: A Die Matrix A ist bekannt und nach 6.6.1 c0 ar+n .. −1 Damit lässt sich . = A ... cn−1 c0 .. . cn−1 invertierbar. ar+2n−1 bestimmen. Es bleibt allerdings folgendes Problem: Wenn der Angreifer ein Teilstück der Schieberegisterfolge kennt, so kann er i. Allg. nicht wissen, ob dieses Teilstück mindestens Länge 2n, n lineare Komplexität der Schieberegisterfolge, hat oder nicht. Und selbst wenn das Teilstück mindestens Länge 2n besitzt, so kennt er zunächst einmal n nicht. Für das letztgenannte Problem gibt es jedoch eine Lösung: Man kann auch für endliche Bitfolgen (a0 , . . . , ar ) den Begriff der linearen Komplexität definieren: Dies ist die kleinste Länge eines LSR, dessen OutputFolge mit (a0 , . . . , ar ) beginnt. Es gibt einen Algorithmus von Berlekamp und Massey, der zu gegebener Bitfolge (a0 , . . . , ar ) deren lineare Komplexität mit O(r 2 ) Bit-Operationen bestimmt. Ist also r ≥ 2n, so bestimmt der Berlekamp-Massey-Algorithmus nach 6.6.2 auch die lineare Komplexität der gesamten Schieberegisterfolge und das minimale LSR kann bestimmt werden.34 6.7 Schieberegister zur Schlüsselstromerzeugung Wir hatten in Unterkapitel 6.6 gesehen, dass LSR zur Erzeugung von Schlüsselströmen kaum geeignet sind. Dies ist insbesondere bei additiven binären Stromchiffren der Fall, wo Mallory bei einer Known-Plaintext-Attack bei genügend langem Klartext (Länge ≥ 2·lineare Komplexität der Schieberegisterfolge) durch mi ⊕ ci (m1 , m2 , . . . Klartextfolge, c1 , c2 , . . . zugehörige Chiffretextfolge) einen Teil des Schlüsselstroms ermitteln kann, der ausreicht, um 34 Literatur: Lidl, Niederreiter [37] oder Menezes et al. [39] 107 mit den am Ende von 6.6 beschriebenen Methoden das (minimale) LSR für den gesamten Schlüsselstrom zu ermitteln. Statt LSR könnte man Schieberegister mit einer nicht-linearen Rückkopplungsfunktion f verwenden oder geeignete Konstruktionen mit LSR. Wir geben einige Beispiele: a) Nichtlineare Kombination von linearen Schieberegistern LSR 1 LSR 2 f Schlüsselstrom LSR Abbildung 16: Nichtlineare Kombination von linearen Schieberegistern f ist nicht-lineare Funktion Zk2 → Z2 f muss allerdings sorgfältig gewählt werden, um das System gegen sogenannte Korrelationsangriffe sicher zu machen. Diese bestehen darin, Zusammenhänge (Korrelationen) zwischen dem Schlüsselstrom und den Outputfolgen einzelner LSR zu ermitteln (statistische Methoden). Die lineare Komplexität einer solchen nicht-linearen Kombination kann sehr groß gemacht werden. b) Nichtlineare Filtergeneratoren f erzeugt aus den Zuständen des LSR den Schlüsselstrom, ist also eine nicht-lineare Funktion f : Zn2 → Z2 (siehe Abbildung 17). 108 a j = c 0 a j-n + ... + c n-1 aj-1 LSR: aj a j-1 S n-1 a j-2 a j-n a j-n+1 S1 S n-2 S0 f Schlüsselstrom Abbildung 17: Nichtlineare Filtergeneratoren c) Takt-gesteuerte Generatoren In den beiden bisher genannten Ansätzen sind alle Systemkomponenten gleich getaktet. Takt-gesteuerte Generatoren erzeugen Nichtlinearität auf folgende Weise: Der Output eines LSR bestimmt den Takt eines anderen LSR. Wir beschreiben ein Beispiel, den alternierenden Stop-and-Go-Generator: 3 LSR unterschiedlicher Länge LSR 2 wird getaktet, wenn LSR 1 Output 1 liefert. LSR 3 wird getaktet, wenn LSR 1 Output 0 liefert. Ausgabe des Generators ist XOR-Verknüpfung von LSR 2 und LSR 3: LSR 2 Uhr (Taktgeber) . LSR 1 Output NOT Gatter LSR 3 AND Gatter Abbildung 18: Stop-and-Go-Generator Dieser Typ von Generatoren ist gegen Korrelationsangriffe relativ sicher und hat i.d.R. große Periode und große lineare Komplexität. 109 6.8 Spezielle Stromchiffren a) A5-Familie (A5/1, A5/2, A5/3): Beruht auf Takt-gesteuerten Kombinationen von LSR. Eingesetzt etwa bei der Verschlüsselung von Verbindungen zwischen Handy und Basisstation nach GSM-Standard (wurde zunächst geheimgehalten). A5/1 und A5/2 sind unsicher. b) SEAL (Software-optimized Encryption Algorithm): Beruht nicht auf LSR. Wurde 1993 von IBM entwickelt. Gilt als sicher. c) RC 4: Beruht nicht auf LSR. Wurde 1987 von Ron Rivest entwickelt und bis 1994 geheimgehalten. Weit verbreitet. Gilt inzwischen nicht mehr als sicher.35 d) Im Rahmen des EU ECRYPT-Netzwerks gab es von 2004 bis 2008 das eSTREAM-Projekt, in dem eine Ausschreibung für Stromchiffren erfolgte. Das Begutachtungs- und Auswahlverfahren ist inzwischen abgeschlossen, wobei vier Chiffren für Software- und drei für Hardwareimplementationen am Ende in der engeren Wahl verblieben. Eine Empfehlung für eine dieser Stromchiffren als (EU-)Standard gibt es noch nicht. Dazu sollen noch weitere Analysen abgewartet werden. Näheres unter http://www.ecrypt.eu.org/stream/. 35 genauere Beschreibung: Menezes et al. [39], Schmeh [42], Schneier [43] 110 (∗) 7 Kryptographisch sichere Pseudozufallsfolgen - Generatoren und Einwegfunktionen Für Stromchiffren (aber auch in anderen kryptologischen Zusammenhängen) werden häufig ‘Zufallsfolgen’ von Bits benötigt. Frage: Was versteht man unter einer Zufallsfolge? Eine Zufallsfolge stellt man sich vor als Folge von Werten unabhängiger, gleich verteilter Boolescher Zufallsvariablen, d.h. als Output einer Quelle, die mit gleicher Wahrscheinlichkeit Bits 0 und 1 unabhängig von den schon erzeugten Bits ausgibt (binäre symmetrische Quelle). Dann sind aber zwei Bitfolgen gleicher (endl.) Länge gleich wahrscheinlich. Da wir es stets nur mit endlichen Folgen zu tun haben, legt dieser Befund nahe, dass man den Begriff endlicher Zufallsfolgen nicht sinnvoll definieren kann. Andererseits folgt aus dem Gesetz der großen Zahlen, dass bei genügend langen Folgen, die von einer binären symmetrischen Quelle erzeugt werden, z.B. annähernd gleich viele Einsen und Nullen vorkommen oder dass die Paare 00, 01, 10, 11 annähernd gleich oft auftreten, etc. Darauf beruhen Tests auf Zufälligkeit. Mögliche Vorgehensweisen sind z.B.: • Möglichst genaue Übereinstimmung von Merkmalen einer endlichen binären Folge mit dem Erwartungswert. Beispiele sind m-Folgen eines LSR (siehe 6.5); sie erfüllen die sog. Golomb-Postulate. Diese fordern für eine Zufallsfolge z.B., dass die Anzahl der Einsen und die Anzahl der Nullen sich um höchstens 1 unterscheiden. Außerdem wird eine genaue Übereinstimmung der Anzahl der sog. runs (maximale Teilfolgen aufeinanderfolgender Einsen/Nullen) gegebener Länge mit dem Erwartungswert gefordert, und die Unabhängigkeit der Folgenglieder wird durch die Konstanz der sog. Autokorrelationsfunktion beschrieben. (Näheres siehe Beker, Piper [8]...) • Keine extrem hohe Abweichung einzelner Merkmale vom Erwartungswert. Dazu führt man statistische Tests durch (z.B. den χ2 -Test beim Test auf Häufigkeit von Einsen oder von Paaren). (Näheres siehe z.B. Knuth [34, Chapter 3] oder Menezes et al. [39]...) In jedem Fall besteht eine gewisse Willkür, welche Eigenschaften man testet. Eine Folge kann viele Tests bestehen, einen weiteren vielleicht nicht. 111 Ein anderer Punkt ist außerdem von Bedeutung: In aller Regel werden ‘Zufallsfolgen’ algorithmisch erzeugt (vgl. Schieberegisterfolgen). Was immer man auch unter ‘Zufall’ versteht, eine deterministische Erzeugung wird man nicht als zufällig ansehen. Aus diesem Grund spricht man in diesem Fall von Pseudozufallsfolgen. Es bleibt aber die Frage, was man unter Pseudozufallsfolgen verstehen soll. Ein sinnvoller Ansatz, diese Frage anzugehen, ist der folgende: Man testet nicht eine Folge, sondern vergleicht die Verteilung der vom Algorithmus produzierten Folgen (einer gewissen Länge) mit der Gleichverteilung auf der Menge dieser Folgen (die von einer binären symmetrischen Quelle erzeugt wird). Dieser Ansatz liegt auch der Definition von Pseudozufälligkeit in einer für die Kryptographie geeigneten Weise zu Grunde. Er hat seine Wurzeln in der Komplexitätstheorie und wurde in Arbeiten von Goldwasser/Micali, Blum/Micali und Yao im Jahr 1982 begründet. Grundidee: Die von einem 0-1-Folgen-Generator erzeugte Verteilung von 01-Folgen wird als pseudozufällig angesehen, wenn sie sich von der Gleichverteilung nicht durch einen effizienten Algorithmus unterscheiden lässt. Effiziente Algorithmen sind Algorithmen, die polynomiale Zeitkomplexität haben. Neben deterministischen polynomialen Algorithmen betrachten wir auch probabilistische Algorithmen mit polynomialer Zeitkomplexität. Probabilistische Algorithmen können bei gegebenem Input während der Berechnung des Outputs endlich oft Zufallswahlen (Münzwurf) ausführen, so dass der nächste Schritt des Algorithmus vom Ausgang dieses Zufallsexperiments abhängt. Daher: Bei gleichem Input kann ein probabilistischer Algorithmus verschiedene Outputs liefern. Probabilistische Algorithmen mit polynomialer Zeitkomplexität sind solche, für die die Anzahl der Schritte (jeder Münzwurf zählt als ein Schritt) durch ein Polynom in der Länge des Inputs beschränkt ist. 7.1 Wahrscheinlichkeitstheoretische Bezeichnungen a) Ist p eine Wahrscheinlichkeitsverteilung auf {0, 1}n , dem Raum der 0-1p Folgen der Länge n, so bedeutet x ← {0, 1}n , dass Elemente x ∈ {0, 1}n zufällig bezüglich der Wahrscheinlichkeitsverteilung p ausgewählt werden. {0, 1}n mit der Gleichverteilung (p(x) = ( 21 )n ) bezeichnen wir mit Ωn und schreiben x ← Ωn , wenn Elemente x zufällig und mit gleicher Wahrscheinlichkeit aus {0, 1}n ausgewählt werden. 112 b) Ist B: {0, 1}n → {0, 1}, p eine Wahrscheinlichkeitsverteilung auf {0, 1}n , so schreiben wir p pr(B(x) = 1| x ← {0, 1}n ) P für p({x ∈ {0, 1}n| B(x) = 1}) = p(x). x∈{0,1}n B(x)=1 Also: pr(B(x) = 1| x ← Ωn ) = |{x∈{0,1}n | B(x)=1}| 2n c) Wir haben auch den Fall zu betrachten, dass B keine Funktion (bei uns immer beschrieben durch einen deterministischen Algorithmus) sondern ein probabilistischer Algorithmus ist. P p p(x) · In diesem Fall steht pr(B(x) = 1| x ← {0, 1}n ) für x∈{0,1}n pr(B(x) = 1), wobei pr(B(x) = 1) die Wahrscheinlichkeit angibt, dass B bei Input x den Wert 1 ausgibt. Diese Wahrscheinlichkeit ist über die Gleichverteilung der Zufallswahlen in B gegeben. Hierzu ein Bemerkung: Bei gegebenem x kann die Anzahl der Zufallswahlen vom Ausgang vorheriger Zufallswahlen abhängen. Sie ist aber in jedem Fall durch eine Konstante tx beschränkt. Indem ggf. Zufallswahlen zusätzlich durchgeführt werden, die keinen Einfluss auf den Ablauf des Algorithmus haben, wird die Gleichverteilung auf {0, 1}tx betrachtet. 7.2 Definition (Kryptographisch sicherer Pseudozufallsfolgen-Generator) Ein kryptographisch sicherer Pseudozufallsfolgen-Generator (ks PZG) ist eine Funktion G : {0, 1}∗ → {0, 1}∗ mit folgenden Eigenschaften: (1) Es existiert eine Erweiterungsfunktion l : N → N (d.h. l(n) > n für alle n ∈ N), so dass G(un ) ∈ {0, 1}l(n) für alle un ∈ {0, 1}n. [G entspricht einer Familie von Funktionen {0, 1}n → {0, 1}l(n) , n ∈ N.] (2) G ist durch einen deterministischen polynomialen Algorithmus berechenbar. 113 (3) Für jeden probabilistischen polynomialen Algorithmus D, der für jede endliche 0-1-Folge als Input den Wert 0 oder 1 ausgibt, und jedes positive Polynom P ∈ Z[x] (d.h. P (a) > 0 für a > 0) gilt für genügend große n: |pr(D(G(x)) = 1| x ← Ωn ) − pr(D(z) = 1| z ← Ωl(n) )| < 7.3 1 P (n) Bedeutung von Definition 7.2 • Wir identifizieren im Folgenden G mit dem polynomialen Algorithmus, der G berechnet. Der Pseudozufallsfolgen-Generator soll also effizient sein. • Die Erweiterungsfunktion l beschreibt, dass der Algorithmus G aus 01-Folgen der Länge n (den ‘seeds’) 0-1-Folgen der (größeren) Länge l(n) produziert. Beachte: l(n) ist polynomial beschränkt, da G deterministischer polynomialer Algorithmus. • Bedeutung von Bedingung (3): Ein Angreifer kann bei Einsatz eines beliebigen probabilistischen polynomialen Algorithmus D die von G erzeugte Verteilung G(Ωn ) auf {0, 1}l(n) (bis auf einen vernachlässigbaren Rest) nicht von der Gleichverteilung auf {0, 1}l(n), also Ωl(n) , unterscheiden. Beachte: Natürlich sind G(Ωn ) und Ωl(n) Wahrscheinlichkeitsräume mit unterschiedlicher Verteilung, denn G, als deterministischer Algorithmus, produziert aus den 2n 0-1-Folgen in Ωn nur maximal 2n verschiedene 0-1-Folgen der Länge l(n). Also haben mindestens (2l(n) − 2n ) 0-1-Folgen der Länge l(n) unter der durch G erzeugten Wahrscheinlichkeitsverteilung Wahrscheinlichkeit 0. Dieser Unterschied lässt sich entsprechend der Def. mit beschränkten Ressourcen (d.h. probabilistischem polynomialem Algorithmus) nicht (d.h. in nicht vernachlässigbarer Weise) aufklären. • Ein möglicher Unterscheidungsalgorithmus D1 könnte z.B. folgendermaßen aussehen: D1 gibt 1 aus, falls Anzahl der Einsen größer als Anzahl der Nullen, sonst 0. Bei Anwendung auf Ωl(n) wird er mit Wahrscheinlichkeit 21 1 oder 0 ausgeben. Wenn es in G(Ωn ) eine deutliche Abweichung der Gleichverteilung von 1 und 0 in den Folgen gibt, so wird D1 das erkennen. 114 Allgemeiner ist jeder statistische Test, der als polynomialer Algorithmus implementierbar ist (z.B. χ2 -Tests), ein möglicher Algorithmus D, gegen den der ks PZG ‘resistent‘ sein muss. • Mit größerem Aufwand lassen sich G(Ωn ) und Ωl(n) unterscheiden, denn |G(Ωn )| ≤ 2n , |Ωl(n) | = 2l(n) : Der Algorithmus DG erzeugt zunächst (mit exponentiellem Aufwand) alle Folgen in G(Ωn ) (G ist bekannt) und testet dann, ob z ∈ Ωl(n) in der Liste vorkommt (Ausgabe 1) oder nicht (Ausgabe 0). Dann pr(DG (G(x)) = 1| x ← Ωn ) = 1 2n |G(Ωn )| ≤ pr(DG (z) = 1| z ← Ωl(n) ) = 2l(n) 2l(n) |pr(DG (G(x)) = 1| x ← Ωn ) − pr(DG (z) =1| z ← Ωl(n) )| 2n 1 ≥ 1 − l(n) ≥ 2 2 • Wieso wird in 7.2 nicht etwa die Forderung < 1 2n gestellt, oder sogar 0? Weil es dann keinen ks PZG geben würde! Denn: Erzeuge eine 2-elementige Teilmenge W ⊆ G(Ωn ). ( 1 für u ∈ W, DW ist ein polynomialer Algorithmus. Sei DW (u) = 0 sonst. Dann 1 2 = n−1 n 2 2 2 1 pr(DW (z) = 1| z ← Ωl(n) ) = l(n) = l(n)−1 2 2 pr(DW (G(x)) = 1| x ← Ωn ) ≥ |pr(DW (G(x)) = 1| x ←Ωn ) − pr(DW (z) = 1| z ← Ωl(n) )| 1 1 1 1 1 ≥ n−1 − l(n)−1 ≥ n−1 − n = n 2 2 2 2 2 [Selbst wenn G nicht bekannt ist, gibt es einen solchen Algorithmus. Man bildet alle Algorithmen DW mit |W | = 2 und W ⊆ {0, 1}l(n) wie oben; von diesen haben solche mit W ⊆ G(Ωn ) die oben angegebene Eigenschaft.] 115 • Die Bedingung in 7.2 für den vernachlässigbaren Rest ‘|pr(. . .)−pr(. . .)| 1 < P (n) ’ impliziert, dass diese Bedingung erhalten bleibt, wenn Unterscheidungsversuche mit D mit ‘vertretbarem’ Aufwand (d.h. polynomial oft) wiederholt werden. Kryptographisch sichere Pseudozufallsfolgen-Generatoren im obigen Sinne können auch auf andere Weise charakterisiert werden. Sei dazu G ein deterministischer polynomialer Algorithmus mit Erweiterungsfunktion l : N → N, der aus 0-1-Folgen der Länge n 0-1-Folgen der Länge l(n) erzeugt. Für eine 0-1-Folge x, sei G(x)i das i-te Bit der 0-1-Folge G(x). 7.4 Definition (Next-Bit-Tests) G besteht alle Next-Bit-Tests, falls für jeden probabilistischen polynomialen Algorithmus A, der für jede endliche 0-1-Folge als Input den Wert 0 oder 1 ausgibt, und jedes positive Polynom P ∈ Z[x] für alle genügend großen n gilt: 1 1 pr(A(G(x)1 G(x)2 . . . G(x)i ) = G(x)i+1 |x ← Ωn ) ≤ + 2 P (n) für alle 0 ≤ i < l(n). 7.5 Bedeutung von Definition 7.4 • Der Algorithmus A versucht aus der Kenntnis der ersten i Bits der Folge G(x) das (i + 1)-te Bit von G(x) vorauszusagen. ∧ • G besteht alle Next-Bit-Tests, wenn mit vertretbarem Aufwand (= polynomialem probabilistischem Algorithmus) das nächste Bit i.W. nicht besser bestimmt werden kann als durch Münzwurf (Wahrscheinlichkeit 1 ). 2 • Wie zu Definition 7.2 kann man sich auch hier überlegen, dass es nichtpolynomiale Algorithmen A gibt, die für gewisse Stellen i das nächste 1 Bit mit größerer Wahrscheinlichkeit als 21 + P (n) voraussagen können. Ebenso kann man zeigen, dass es immer polynomiale Algorithmen A gibt, die für gewisse Stellen i das nächste Bit mit Wahrscheinlichkeit ≥ 12 + 21n voraussagen können. 116 7.6 Satz (Yao; 1982) Genau dann ist G ein krytographisch sicherer Pseudozufallsfolgen-Generator, wenn G alle Next-Bit-Tests besteht. Beweisidee: =⇒ : Wenn G nicht alle Next-Bit-Tests besteht, so gibt es einen probabilistischen Algorithmus A, ein positives Polynom Q und eine unendliche Teilmenge K von N, so dass A für jedes n ∈ K für jeweils eine Position in < l(n) aus der Kenntnis von G(x)1 , . . . , G(x)in das nächste Bit G(x)in +1 mit Wahrschein1 lichkeit > 21 + Q(n) voraussagen kann. Bei zufälliger Wahl einer Folge aus Ωl(n) lässt sich deren (in + 1)-tes Bit aber nicht mit Wahrscheinlichkeit > 12 voraussagen. Definiere einen probabilistischen polynomialen Algorithmus D durch 1, falls A(z1 , . . . , zin ) = zin +1 D(z1 , . . . , zl(n) ) = 0, sonst für (z1 , . . . , zl(n) ) ∈ {0, 1}l(n) , n ∈ K. (Für alle übrigen Längen von {0, 1}Folgen kann man z.B. D(z1 , . . . , zm ) = 0 definieren.) Dann ist anschaulich klar (und kann mit etwas Rechnung auch präzise nachgewiesen werden), dass mit diesem D die Bedingung eines kryptographisch sicheren Pseudozufallsfolgen-Generators verletzt ist. ⇐= : Ang., G ist kein kryptographisch sicherer Pseudozufallsfolgen-Generator. Dann existiert ein probabilistischer polynomialer Algorithmus D, ein positives Polynom Q(x) und eine unendliche Teilmenge K von N, so dass 1 für | pr(D(G(x)) = 1 | x ←− Ωn ) − pr(D(z)) = 1 | z ←− Ωl(n) | ≥ Q(n) alle n ∈ K. Sei pi die Gleichverteilung auf {0, 1}i , d.h. ({0, 1}i , pi ) = Ωi . Für jedes n ∈ K definieren wir jetzt Wahrscheinlichkeitsverteilungen p̃0 , . . . , p̃l(n) auf {0, 1}l(n) in folgender Weise: p̃0 ((b1 , . . . , bl(n) )) = pl(n) ((b1 , . . . , bl(n) )) = 1 2l(n) p̃1 ((b1 , . . . , bl(n) )) = pr(G(x)1 = b1 |x ← Ωn ) · pl(n)−1 (b2 , . . . , bl(n) )) p̃2 ((b1 , . . . , bl(n) )) = pr(G(x)1 = b1 , G(x)2 = b2 |x ← Ωn ) · pl(n)−2 ((b3 , . . . , bl(n) )) .. . p̃l(n) ((b1 , . . . , bl(n) )) = pr(G(x)1 = b1 , . . . , G(x)l(n) = bl(n) |x ← Ωn ) Also: p̃0 Gleichverteilung auf {0, 1}l(n) , p̃l(n) die durch G(Ωn ) erzeugte Ver117 teilung auf {0, 1}l(n) . D kann p̃0 und p̃l(n) unterscheiden (im obigen Sinne). Sei pr(D(G(x)) = 1 | x ←− Ωn ) ≥ pr(D(z) = 1 | z ←− Ωl(n) ) (ansonsten betrachte man im Folgenden die umgekehrten Differenzen). Man sieht dann leicht, dass pr(D(G(x)) = 1 | x ←− Ωn ) − pr(D(z) = 1 | z ←− Ωl(n) ) = Pl(n)−1 p̃j+1 p̃j (pr(D(z) = 1 | z ←− {0, 1}l(n) ) − pr(D(z) = 1 | z ←− {0, 1}l(n) )). j=0 Also existiert zu jedem n ∈ K ein in , 0 ≤ in < l(n), mit p̃i p̃i n n | pr(D(z) = 1 | z ←− {0, 1}l(n) ) − pr(D(z) = 1 | z ←− {0, 1}l(n) )| ≥ 1 . Q(n)l(n) Beachte, dass l(n) durch ein positives Polynom nach oben beschränkt ist, da G ein polynomialer Algorithmus ist. Es folgt, dass D für z = (G(x)1 , . . . , G(x)in , b, bin +2 , . . . , bl(n) ) mit b = G(x)in +1 den Wert 1 mit nicht-vernachlässigbarer höherer Wahrscheinlichkeit liefert, als wenn b zufällig (mit Wahrscheinlichkeit 12 ) gewählt wird. Damit kann man dann aus D leicht einen probabilistischen polynomialen Algorithmus A konstruieren, so dass G den Next-Bit-Test bzgl. dieses Algorithmus nicht besteht.36 +1 Offen bleibt die Frage: Gibt es kryptographisch sichere PseudozufallsfolgenGeneratoren? Es stellt sich heraus, dass dies äquivalent zur Existenz sogenannter Einwegfunktionen ist. Einwegfunktionen sind Funktionen, die leicht zu berechnen, aber schwierig zu invertieren sind. 7.7 Definition (Einwegfunktion) Eine Funktion f : {0, 1}∗ → {0, 1}∗ heißt Einwegfunktion, falls gilt: (1) Es existiert ein deterministischer polynomialer Algorithmus F , der bei Input x ∈ {0, 1}∗ den Wert f (x) ausgibt (d.h. F (x) = f (x)). (2) Für jeden probabilistischen polynomialen Algorithmus A und jedes positive Polynom P ∈ Z[x] gilt für alle genügend großen n: pr(A(f (x), 1n ) ∈ 36 1 f −1 (f (x)) |x ← Ωn ) < | {z } P (n) Urbild von f (x) Ausführlicher Beweis bei Delfs, Knebl, Introduction to Cryptography [21], Goldreich, Foundations of Cryptography [24] oder Stinson, Cryptography-Theory and Practice [45] 118 [1n bezeichnet einen String aus n Einsen.] 7.8 Bedeutung von Definition 7.7 • Der Hilfs-Input 1n bei A, der die Länge des gewünschten Urbilds angibt, dient dazu, gewisse Funktionen als Einwegfunktionen auszuschließen. Ausgeschlossen werden solche Funktionen f , bei denen die Länge von f (x) so drastisch gesenkt wird, dass A keine Chance hat, ein Urbild in polynomialer Zeit in der Größe des Inputs f (x) auszugeben. Bsp: x ∈ {0, 1}n , f (x) = Binärdarstellung von n (der Länge von x) Dann f (x) ∈ {0, 1}⌈log2 n⌉ Kein polynomialer Algorithmus kann f (x) invertieren; aber natürlich kann man in polynomialer Zeit in n ein Urbild zu f (x) ∈ {0, 1}⌈log2n⌉ hinschreiben, z.B. (0, . . . , 0). ←−n−→ • Der Algorithmus A, der ein Urbild rät, hat Wahrscheinlichkeit von mindestens 21n , ein richtiges Urbild zu finden. Also kann man die Wahr1 scheinlichkeitsschranke P (n) nicht durch 21n (oder sogar 0) ersetzen. • Ein Algorithmus kann sich bis zu einem n0 eine Liste {(f (x), x)| Länge von x ≤ n0 } erstellen. Für solche f (x) findet er dann schnell ein Urbild. Daher kann man die Forderung in 7.7 (2) nur für alle genügend großen n stellen (abhängig vom Algorithmus A und dem Polynom P ). Einer der wichtigsten Sätze der komplexitätstheoretisch orientierten Kryptologie, der frühere Ergebnisse von Blum/Micali, Yao, Goldreich/Krawcyk/ Luby verallgemeinert, ist der folgende: 7.9 Satz (Håstad, Impagliazzo, Levin, Luby; 1999) Genau dann existieren kryptographisch sichere Pseudozufallsfolgen-Generatoren, wenn Einwegfunktionen existieren. Der Beweis dieses Satzes ist kompliziert, vor allem die Richtung, wie man aus Einwegfunktionen kryptographisch sichere Pseudozufallsfolgen-Generatoren gewinnt. Wir beschreiben einige wesentliche Punkte: 119 a) Kryptographisch sichere Pseudozufallsfolgen-Generatoren ⇒ Einwegfunktionen: Wir nehmen der Einfachheit halber an, dass G ein kryptographisch sicherer Pseudozufallsfolgen-Generator ist mit Erweiterungsfunktion l(n) = 2n. S S Dann definiert man eine Funktion f : {0, 1}2n → {0, 1}2n N N n∈ n∈ n durch f (x, y) = G(x) für x, y ∈ {0, 1} . Dann erfüllt f die Bedingung einer Einwegfunktion: Polynomiale Berechenbarkeit folgt aus der von G. Ang. f ist keine Einwegfunktion. Dann existiert probabilistischer polynomialer Algorithmus und positives Polynom Q, so dass pr(A(f (x), 12n ) ∈ f −1 (f (x))| x ← Ω2n ) > 1 Q(2n) für unendlich viele n. Man benötigt jetzt einen probabilistischen polynomialen Algorithmus D, der Ω2n und G(Ωn ) ‘unterscheidet’. Bei Eingabe von α ∈ {0, 1}2n nutzt D den Algorithmus A. D gibt 1 aus, falls A ein Urbild von F zu α findet, sonst 0. Wegen f (Ω2n ) = G(Ωn ) [denn für β ∈ {0, 1}2n ist |{α ∈ {0, 1}2n |f (α) = β}| = 2n · |{γ ∈ {0, 1}n |G(γ) = β}|] ist pr(D(G(x)) = 1|x ← Ωn ) = pr(D(f (z)) = 1|z ← Ω2n ) = pr(A(f (z), 12n ) ∈ f −1 (f (z))|z ← Ω2n ) > 1 Q(2n) für unendlich viele n. Andererseits gibt es nur maximal 2n viele Elemente in {0, 1}2n , die Urbilder unter f haben können (denn G hat nur 2n viele Bilder in {0, 1}2n ); also wird D nur bei maximal 2n vielen Elementen aus {0, 1}2n n Wert 1 ausgeben. Also pr(D(z) = 1| z ← Ω2n ) ≤ 222n = 21n Damit: pr(D(G(x)) = 1| x ← Ωn ) − pr(D(z) = 1| z ← Ω2n ) ≥ 1 Q(2n) − 1 2n ≥ 1 2Q(2n) für unendlich viele n, Widerspruch. Man kann schließlich mit einfachen Techniken, auf die hier nicht eingegangen wird, aus f eine Funktion f ′ : {0, 1}∗ → {0, 1}∗ konstruieren, die eine Einwegfunktion ist.37 37 s. Goldreich [24], S. 36ff. 120 b) Einwegfunktionen ⇒ kryptographisch sichere Pseudozufalls-Generatoren: Zunächst Begriff des Hard-Core-Prädikats einer Einwegfunktion. Bei einer Einwegfunktion f ist es so gut wie nicht möglich, ein Urbild x aus y = f (x) mit einem effizienten Algorithmus zu bestimmen. Dennoch tritt oft der Fall auf, dass einzelne Bits von x leicht zu berechnen sind. (Z.B. g Einwegfunktion; für x = (x1 , . . . , xn ) sei f (x, xn+1 ) = (g(x), xn+1 ). Dann f Einweg, aber xn+1 leicht zu bestimmen.) Andererseits können bei einer Einwegfunktion nicht alle Bits von x aus f (x) leicht zu berechnen sein, denn sonst wäre x leicht zu berechnen. Welche Bits schwierig zu bestimmen sind, könnte allerdings bei jedem x unterschiedlich sein. Jedenfalls ist es plausibel, dass es eine gewisse Boolesche Funktion h : {0, 1}∗ → {0, 1} gibt, so dass h(x) aus f (x) im Wesentlichen genauso schwierig zu bestimmen ist wie x, d.h. die Schwierigkeit, x aus f (x) zu bestimmen, manifestiert sich schon in einem Bit h(x). Dies ist die Idee der Hard-Core-Prädikate. Def.: Sei h : {0, 1}∗ → {0, 1} durch einen deterministischen polynomialen Algorithmus berechenbar. h heißt Hard-Core-Prädikat einer Funktion f : {0, 1}∗ → {0, 1}∗ , falls für jeden probabilistischen polynomialen Algorithmus A (Input Elemente aus {0, 1}∗, Output 0 oder 1) und jedes positive Polynom P für alle genügend großen n gilt: pr(A(f (x)) = h(x)| x ← Ωn ) ≤ 1 1 + 2 P (n) Bedeutung: • Beachte zunächst: Die Bedingung pr(A(f (x)) = h(x)| x ← Ωn ) ≤ 21 + P (n) und die entsprechende Bedingung für den Algorithmus A′ = 1 + A implizieren, dass |pr(h(x) = 0| x ← Ωn ) − pr(h(x) = 1| x ← Ωn )| vernachlässigbar klein ist, d.h. h verhält sich fast wie Münzwurf auf Ωn . Daher besagt die Bedeutung von Hard-Core-Prädikaten, dass die Bestimmung von h(x) aus f (x) durch einen effizienten Algorithmus bis auf einen vernachlässigbaren Rest nicht besser ist als h(x) durch Münzwurf zu ‘raten’. • Für die Existenz eines Hard-Core-Prädikats kann es zwei Gründe geben: 121 (a) Informationsverlust von f (d.h. f ist nicht injektiv) z.B. f (z1 , . . . , zn ) = (0, z2 , . . . , zn ), h(z1 , . . . , zn ) = z1 (b) f ist Einwegfunktion Wir sind am zweiten Fall interessiert. Tatsächlich kann man zu jeder Einwegfunktion eine eng mit dieser verwandte Einwegfunktion konstruieren, die ein Hard-Core-Prädikat besitzt: Satz (Goldreich, Levin; 1989) Sei f : {0, 1}∗S → {0, 1}∗ eine Einwegfunktion. Definiere g : {0, 1}2n → {0, 1}∗ durch g(x, y) = (f (x), y), x, y ∈ {0, 1}n . n∈N P Ist x = (x1 , . . . , xn ), y = (y1 , . . . , yn ), so sei h(x, y) = xi yi mod 2. Dann ist g eine Einwegfunktion und h ist ein Hard-Core-Prädikat für g.38 [Es ist nicht schwierig, aus g eine Einwegfunktion g̃ : {0, 1}∗ → {0, 1}∗ zu konstruieren, die ein Hard-Core-Prädikat besitzt.] Wir können also annehmen, dass wir eine Einwegfunktion f mit Hard-CorePrädikat h vorliegen haben. Wir beschreiben die Konstruktion eines kryptographisch sicheren Zufallszahlen-Generators jetzt nur für den Fall, dass f eine bijektive und längenerhaltende (d.h. x ∈ {0, 1}n ⇒ f (x) ∈ {0, 1}n für alle n ∈ N) Einwegfunktion ist. Sei l ein Polynom mit l(n) > n für alle n. Definiere G auf folgende Weise: Sei s0 ∈ {0, 1}n ein Input für G (seed ). Für j = 1, . . . , l(n) sei sj = f (sj−1). Definiere nun G(s0 ) = (h(s1 ), . . . , h(sl(n) )) ∈ {0, 1}l(n) . Wir zeigen, dass G ein kryptographisch sicherer Pseudozufallsfolgen-Generator ist. Dies beweist man, indem man nachweist, dass G alle Next-Bit-Tests besteht (und zwar von rechts nach links!). Angenommen, man kann bei zufällig und gleichverteiltem ‘seed‘ s0 ∈ {0, 1}n für unendlich viele n die Bits h(sin ) (für mindestens ein in ∈ {1, . . . , l(n)}) 1 aus h(sin +1 ), . . . , h(sl(n) ) mit einer Wahrscheinlichkeit > 21 + Q(n) (für ein festes positives Polynom Q) vorhersagen. 38 s. Goldreich [24], S. 66 ff. 122 Wir behaupten nun: Wenn s0 zufällig und gleichverteilt aus {0, 1}n gewählt 1 wird, so kann man h(sin ) aus f (sin ) mit Wahrscheinlichkeit > 21 + Q(n) vorhersagen: Es sind nämlich f (sin ) = sin +1 , . . . , f (sl(n)−1 ) = sl(n) aus f (sin ) berechenbar. Aus diesen erhält man h(sin +1 ), . . . , h(sl(n) ) und aus diesen ist nach obiger 1 Annahme h(sin ) mit Wahrscheinlichkeit > 21 + Q(n) vorhersagbar. Da f längenerhaltend und bijektiv ist, gilt dies auch für f in , d.h. es ist f in ({0, 1}n ) = {0, 1}n . Daher folgt aus s0 ← Ωn auch sin = f in (s0 ) ← Ωn . Damit widerspricht die vorher bewiesene Aussage der Definition des HardCore-Prädikats. Obige Annahme ist also nicht aufrechtzuhalten, d.h. G besteht alle Next-BitTests (von rechts nach links). Nach dem Satz von Yao (siehe 7.6) ist G daher ein kryptographisch sicherer Pseudozufallsfolgen-Generator. 7.10 Die Frage nach der Existenz von Einwegfunktionen Es bleibt die Frage, ob Einwegfunktionen existieren. Dies ist nicht bekannt. Eine notwendige Bedingung für die Existenz von Einwegfunktionen ist P 6= NP . (Ob dies gilt, ist eines der berühmtesten offenen Probleme der Komplexitätstheorie.) Sei nämlich f eine polynomial berechenbare Funktion. Dann kann man in polynomialer Zeit entscheiden, ob für gegebene x und y gilt: f (x) = y. Daher liegt die Berechnung eines Urbilds von y in NP (eine Lösung lässt sich in polynomialer Zeit verifizieren). Ist also P = NP , so lässt sich jede polynomial berechenbare Funktion auch in polynomialer Zeit invertieren, und es gibt keine Einwegfunktionen. Tatsächlich ist bei unserer Definition von Einwegfunktionen, in der die Invertierung (bis auf einen vernachlässigbaren Rest) auch durch probabilistische polynomiale Algorithmen unmöglich sein muss, sogar eine weitergehende Bedingung notwendig, nämlich NP * BP P . BP P steht für Bounded-Probability Polynomial Time. BP P ist die Klasse aller Sprachen, die von einer probabilistischen, polynomial laufzeitbeschränkten Turing-Maschine M (also von einem polynomial probabilistischen Algorithmus) erkannt werden. Dies bedeutet: Für alle x ∈ L : pr(M(x) = 1) ≥ 2 3 123 Für alle x 6∈ L : pr(M(x) = 0) ≥ 2 3 (bounded: Wahrscheinlichkeit wegbeschränkt von 21 ) Äquivalent: 1 Ersetze 32 durch 1 − 2|x| , |x| = Länge von x. 1 (sogar 1 − 2Q(|x|) , Q ein beliebiges positives Polynom) Klar: P ⊆ BP P . Also: NP * BP P ⇒ NP 6= P . Nicht bekannt ist auch, ob BP P ⊆ NP . Die obige Forderung verbietet die umgekehrte Inklusion. P 6= NP bedeutet nur, dass es NP -Probleme gibt, die Instanzen besitzen, die nicht effizient (deterministisch) lösbar sind (worst case). Wir benötigen Funktionen, die im Durchschnitt nicht effizient zu invertieren sind. Es ist nicht bekannt, ob aus der Annahme P 6= NP (oder sogar NP * BP P ) die Existenz von Einwegfunktionen folgt. Im nächsten Kapitel werden wir Kandidaten für Einwegfunktionen kennenlernen. 124 8 Public-Key-Kryptographie 8.1 Die Grundidee Die Idee für Public-Key-Kryptographie stammt von W. Diffie und M.E. Hellman, dargelegt in der berühmten Arbeit New Directions in Cryptography [22]. In einem Public-Key-Verschlüsselungssystem gibt es keinen gemeinsamen geheimen Schlüssel, der von zwei Kommunikationspartnern (Alice und Bob) benutzt wird (wie bei den symmetrischen Verfahren). Stattdessen: Jeder Teilnehmer B hat ein Paar von Schlüsseln: • geheimer Schlüssel (private key) GB • öffentlicher Schlüssel (public key) PB GB ist nur B bekannt, PB wird öffentlich gemacht. Zu jedem öffentlichen Schlüssel PB gehört eine Verschlüsselungsfunktion EPB (= E(., PB )). Diese ist auch öffentlich bekannt. Will Alice (A) an Bob (B) eine Nachricht m senden, so verschlüsselt A die Nachricht m mit dem öffentlichen Schlüssel von B m → EPB (m) =: c und sendet c an B. Ein solches System kann nur sicher sein, wenn zwei Bedingungen erfüllt sind: a) m darf mit realistischem Aufwand nicht aus EPB berechenbar sein: EPB ist eine injektive Einwegfunktion. (EPB soll natürlich effizient berechenbar sein.) b) B muss m aus c = EPB (m) effizient berechnen können. Dies gelingt mit Hilfe seines geheimen Schlüssels GB . Diese Zusatzinformation ermög(c)). licht eine effiziente Entschlüsselung m = DGB (c) (= EP−1 B Injektive Einwegfunktionen, die mit einer Zusatzinformation effizient zu invertieren sind, heißen Geheimtürfunktionen (oder Falltürfunktionen) (trapdoor functions). Bedingungen 1) und 2) implizieren: 125 3) GB darf aus PB nicht effizient berechenbar sein. Nach 7.10 ist nicht bekannt, ob Einwegfunktionen existieren; dies gilt umso mehr für Falltürfunktionen. Dennoch gibt es einige Klassen von Funktionen, die als Kandidaten für Falltürfunktionen angesehen werden, da bis heute kein (probabilistischer) polynomialer Algorithmus zur Invertierung (in einer nicht vernachlässigbaren Anzahl von Fällen) bekannt ist. Die wichtigsten Klassen solcher Funktionen und die darauf fußenden PublicKey-Verfahren werden wir im Folgenden besprechen. Zuvor noch eine Bemerkung: Ein Vorteil von Public-Key-Systemen gegenüber solchen mit symmetrischen Verschlüsselungsverfahren ist folgender: Bei n Teilnehmern, die alle geheim miteinander kommunizieren wollen, muss bei symmetrischen Verfahren jedes Paar von Teilnehmern einen eigenen Schlüssel besitzen. Dies erfordert n(n−1) 2 Schlüssel; die Anzahl wächst also quadratisch mit der Anzahl der Teilnehmer. Bei Public-Key-Verfahren sind jedoch nur 2n Schlüssel (je ein öffentlicher und geheimer pro Teilnehmer) erforderlich; die Anzahl wächst linear. 8.2 Modulare Potenzen und das RSA-Verfahren 1977 stellten R. Rivest, A. Shamir und L. Adleman ein Public-Key-Verfahren (RSA-Verfahren) vor,39 das bis heute zu den populärsten Public-Key-Verfahren gehört. Es beruht auf folgender Funktionenklasse, die zur Verschlüsselung verwendet wird: Sei n das Produkt zweier verschiedener Primzahlen p und q und sei e ∈ teilerfremd zu ϕ(n). Z n → Zn (modulares Potenzieren). Def. RSAe,n := x 7→ xe mod n N Falls n fest, schreiben wir RSAe statt RSAe,n . Man beachte: Es ist ϕ(n) = (p − 1)(q − 1). [Denn die p + q − 1 natürlichen Zahlen i · p, 1 ≤ i ≤ q − 1, j · q, 1 ≤ j ≤ p − 1, und n sind die einzigen ≤ n, die nicht teilerfremd zu n sind; also ϕ(n) = n − p − q + 1 = (p − 1)(q − 1).] 39 erschienen im Aufsatz On Digital Signatures and Public Key Cryptosystems [2] 126 8.3 Lemma (Satz von Euler) a) (Satz von Euler) Ist n ∈ N, x ∈ Z, ggT(x, n) = 1, so ist xϕ(n) ≡ 1 (mod n). [n = p : xp−1 ≡ 1 (mod p) (kleiner Satz von Fermat)] b) Ist n = pq, p, q verschiedene Primzahlen, und sind a, k ∈ N0 , x ∈ Z, so ist xkϕ(n)+a ≡ xa (mod n). Beweis: a) Ist x mod n = x′ , d.h. x = tn + x′ , 0 ≤ x′ < n, so ist x ≡ x′ (mod n), also xϕ(n) ≡ (x′ )ϕ(n) (mod n). Also ist o.B.d.A. 0 < x < n, d.h. x ∈ Z∗n = {y ∈ Zn : ggT(y, n) = 1} (Gruppe bezüglich Multiplikation mod n), |Z∗n | = ϕ(n). g |G| |{z} In jeder endlichen Gruppe G gilt: = e |{z} (folgt neutrales Element Potenzierung in G ϕ(n) 40 aus Satz von Lagrange ). Hier ist also x | {z } Potenzierung in behauptet ϕ(n) x | {z } Potenzierung in Z Z = 1, d.h. wie ∗ n ≡ 1 (mod n). b) Ist p | x, so ist xa ≡ 0 (mod p) und xkϕ(n)+a ≡ 0 (mod p). a) Ist p ∤ x, so ist xkϕ(n)+a = xa (xϕ(n) )k ≡ xa (mod p). Also ist in jedem Fall xkϕ(n)+a ≡ xa (mod p), und analog folgt xkϕ(n)+a ≡ xa (mod q). Da p und q verschiedene Primzahlen sind, erhält man wie behauptet xkϕ(n)+a ≡ xa (mod n). 8.4 Satz (Eigenschaften der RSA-Funktionen) a) Ist e = kϕ(n) + e′ , k ∈ N0 , 0 ≤ e′ < ϕ(n), so ist RSAe = RSAe′ . Also kann man 0 < e < ϕ(n) wählen. b) Unter den Voraussetzungen von 8.2 ist RSAe bijektiv (d.h. eine Permutation auf Zn ). 40 siehe z.B. Buchmann [15, 2.1.1] 127 c) Die inverse Abbildung zu RSAe ist RSAd , wobei d eindeutig bestimmt ist durch 0 < d < ϕ(n) und ed ≡ 1 (mod ϕ(n)). Beweis: ′ ′ a) Es ist xe = xkϕ(n)+e ≡ xe (mod n) nach 8.3 b). b),c) Nach a) ist o.B.d.A. 0 < e < ϕ(n), e ∈ Z∗ϕ(n) . Dann existiert genau ein = 1, ed = kϕ(n) + 1, e| {z ⊙ d} d ∈ Z∗ϕ(n) mit ed mod ϕ(n) = Multiplikation in d.h. ed ≡ 1 (mod ϕ(n)) und 0 < d < ϕ(n). (d ist das Inverse zu e in Z∗ϕ(n) .) Z ϕ(n) Sei nun x ∈ Zn . Dann ist RSAd (RSAe (x)) = (xe )d mod n = xed mod n 8.3 b) = xkϕ(n)+1 mod n = x, also (RSAe )−1 = RSAd . 8.5 Bemerkung (schnelles Potenzieren) RSA-Funktionen sind effizient zu berechnen. Man berechnet ae mod n mit der Methode der iterierten Quadrierung: Schreibe e in Binärdarstellung. Sei l = ⌊log2 e⌋ + 1, d.h. e ist l-Bit-Zahl, e = 2l−1 el−1 + . . . + 20 e0 (ei ∈ {0, 1}, el−1 = 1) = (. . . ((2el−1 + el−2 ) · 2 + el−3 ) · 2 + . . . + e1 ) · 2 + e0 ae = ((. . . ((a2 · ael−2 )2 · ael−3 )2 . . .)2 · ae1 )2 · ae0 Also kann ae in l − 1 Schritten berechnet werden. Jeder Schritt besteht aus einer Quadrierung und gegebenenfalls einer weiteren Multiplikation. Zur Berechnung von ae mod n nimmt man nach jeder Quadrierung und ggf. Multiplikation den Rest modulo n. 128 8.6 RSA-Verfahren (Basisversion) a) Schlüsselerzeugung: a) Wähle große Primzahlen p, q, p 6= q und berechne n = p · q. b) Wähle e mit ggT(e, ϕ(n)) = 1. öffentlicher Schlüssel: P = (n, e) c) Berechne d mit 0 < d < ϕ(n) und ed ≡ 1 (mod ϕ(n)). Geheimer Schlüssel: G (p, q und ϕ(n) werden ebenfalls geheimgehalten, besser gelöscht. Nach Bestimmung von e und d werden sie nicht mehr benötigt.) b) Verschlüsselung: Wir verschlüsseln Zahlen m mit 0 ≤ m < n. Der Klartext m wird mit dem öffentlichem Schlüssel (n, e) mit Hilfe der RSAe -Funktion verschlüsselt: c = me mod n (Jeder, der den öffentlichen Schlüssel eines Teilnehmers kennt, kann diesem eine verschlüsselte Nachricht senden.) c) Entschlüsselung: Entschlüsselung mit dem geheimen Schlüssel (n, d) und der RSAd Funktion: m = cd mod n Korrektheit der Entschlüsselung auf Grund von Satz 8.4 c). 8.7 Bemerkung (Bestimmung von e und d) a) In der Praxis wird e häufig als kleine Zahl gewählt, damit die Verschlüsselung besonders effizient möglich ist. Wegen ggT(e, ϕ(n)) = 1 und ϕ(n) = (p − 1)(q − 1), muss e ungerade sein. Bei Wahl von e = 3 ist z.B. zur Berechnung von me mod n eine Quadrierung und eine Multiplikation modulo n durchzuführen. Sehr kleine Exponenten e bergen aber gewisse Sicherheitsrisiken (dazu später mehr). Daher werden auch gelegentlich Exponenten e der Form 2k + 1 verwendet. Hier sind zur Berechnung von me mod n nur k Quadrierungen 129 und eine Multiplikation modulo n erforderlich. Eine typische Wahl ist e = 216 + 1 = 65537 (Primzahl). b) Bestimmung von d: d wird mit Hilfe des erweiterten Euklidischen Algorithmus aus e und ϕ(n) bestimmt. Beachte: ϕ(n) = (p − 1)(q − 1) ist bei Kenntnis von p und q leicht zu berechnen. (ggT(e, ϕ(n)) = 1. Erweiterter Euklidischer Algorithmus (vgl. 2.1 (b)) liefert s, t ∈ Z mit es + ϕ(n)t = 1. Sei s = d + ϕ(n) · u, 0 ≤ d < ϕ(n). Dann ed = es − ϕ(n)eu = 1 − ϕ(n)(eu − t) ≡ 1 (mod ϕ(n)).) 8.8 Beispiel zur RSA-Verschüsselung p = 13, q = 23 (unrealistisch klein), n = pq = 299, ϕ(n) = 12 · 22 = 264 = 8 · 3 · 11, e = 5 (kleinstmögliches e); öffentlicher Schlüssel (n, e) = (299, 5). Bestimmung von d mit ed ≡ 1 (mod ϕ(n)). Erweiterter Euklidischer Algorithmus mit ϕ(n) = 264 und e = 5: x 264 264 mod 5 = 4 6= 0 5 5 mod 4 = 1 6= 0 4 1 mod 1 = 0 y s1 s2 s t1 t2 t g r 5 1 0 0 0 1 1 4 0 1 1 1 −52 −52 52 4 1 1 −1 −1 −52 53 53 1 1 1 =ggT(264, 5) = 264 · (−1) + 5 · 53, d = 53 (ed = 5 · 53 ≡ 1 (mod 264)) Geheimer Schlüssel d = 53 Der Klartext sei m = 212. Zur Verschlüsselung muss man m5 mod 299 berechnen. 2122 ≡ 44944 ≡ 94 (mod 299) 2124 ≡ 942 ≡ 8836 ≡ 165 (mod 299) 2125 ≡ 165 · 212 ≡ 34980 ≡ 296 (mod 299) Verschlüsselter Text ist c = 296. Zur Entschlüsselung wird c53 mod 299 berechnet. 130 53 = 25 + 24 + 22 + 20 , daher 29653 = ((((2962 · 296)2)2 · 296)2)2 · 296 2962 ≡ (−3)2 ≡ 9 (mod 299) 2962 · 296 ≡ 9 · (−3) ≡ −27 (mod 299) (−27)2 ≡ 729 ≡ 131 (mod 299) (−27)4 ≡ 1312 ≡ 17161 ≡ 118 (mod 299) (−27)4 · 296 ≡ 118 · (−3) ≡ −354 ≡ 244 (mod 299) 2442 ≡ (−55)2 ≡ 3025 ≡ 35 (mod 299) 2444 ≡ 352 ≡ 29 (mod 299) 29 · 296 ≡ 8584 ≡ 212 (mod 299) Die Entschlüsselung liefert also wieder den Klartext m = 212. 8.9 Verwendung von RSA als Blockchiffre Das zugrundeliegende Klartextalphabet R bestehe aus N Zeichen. Diesen werden die Zahlen 0, 1, . . . , N − 1 zugeordnet. (Typischerweise R = Z2 , N = 2) Sei (n, e) der öffentliche Schlüssel des Teilnehmers B. Setze k = ⌊logN n⌋, d.h. N k ≤ n < N k+1 . Ein Klartext (mit Zeichen in 0, 1, . . . N − 1) wird in Blöcke der Länge k aufgeteilt, die einzeln verschlüsselt werden: m1 , . . . mk sei ein solcher Block. k P Bilde m = mi N k−i . (N-adische Zahldarstellung) i=1 Dann: 0 ≤ m ≤ (N − 1) k P i=1 N k−i = N k − 1 < n m wird verschlüsselt zu c = me mod n. Schreibe Zahl c wieder zur Basis N. Die N-adische Darstellung von c kann Länge k + 1 haben (wenn N k ≤ c < n). Chiffretextblock ist dann c = c0 c1 . . . ck , 0 ≤ ci ≤ N − 1, d.h. Chiffretextblöcke werden immer in der Länge k + 1 dargestellt, evtl. mit führenden Nullen. Das RSA-Verfahren bildet dann Blöcke der Länge k injektiv auf Blöcke der Länge k + 1 ab. In dieser Form kann man das Verfahren wie eine Blockchiffre im ECB-Mode oder im CBC-Mode (mit leichter Modifikation) anwenden. 131 Bsp: R = { 0, a, b, c } ↓ ↓ ↓ ↓ 0 1 2 3 n = 299, e = 5, d = 53 N = 4, k = ⌊log4 299⌋ = 4 Zu verschlüsselnder Klartextblock: caa0 → 3110 m = 3 · 43 + 1 · 42 + 1 · 4 + 0 · 1 = 192 + 16 + 4 = 212 Verschlüsselung: 2125 mod 299. Also c = 296 (siehe Beispiel 8.8) 296 = 1 · 44 + 0 · 43 + 2 · 42 + 2 · 41 + 0 · 40 Also Schlüsseltextblock: a0bb0 In der Praxis sind noch weitere Bedingungen für die RSA-Verschlüsselung zu beachten. Geläufige Standards (z.B. PKCS#1v1.5, PKCS#1v2.1 von RSA Data Security Company) operieren auf Byte-Basis und unterscheiden sich von obiger Beschreibung. Näheres z.B. in Vaudenay [47, 9.3.2 und 9.3.8]. 8.10 Sicherheit des RSA-Verfahrens a) Die Sicherheit des RSA-Verfahrens beruht auf der Annahme, dass die RSA-Funktionen Einwegfunktionen sind. Nach Definition 7.7 müssen Einwegfunktionen auf {0, 1}∗ definiert sein. Daher wird die Einwegfunktionsannahme für die gesamte Familie der RSA-Funktionen gemacht: Sei Ik = {(n, e)|n = p · q, p 6= q Primzahlen, 0 < e < ϕ(n), ggT(e, ϕ(n)) = 1, |n| = k} Sei P (x) ∈ Z[x] ein positives Polynom und A(n, e, y) ein polynomialer probabilistischer Algorithmus. Dann existiert k0 ∈ N, so dass ∗ pr(A(n, e, y) = RSA−1 e (y) | (n, e) ← Ik , y ← Zn ) ≤ für alle k ≥ k0 . 1 Q(k) Dabei ist die Gleichverteilung auf Ik und auf Z∗n angenommen, bezüglich derer (n, e) bzw. y zufällig ausgewählt werden. Dies nennt man die RSA-Annahme. (Unter dieser Annahme kann man zeigen, dass das 132 niedrigste Bit von x ein Hard-Core-Prädikat für RSAe (x) ist; siehe z.B. [38, Theorem 9.1, S. 286].) Wir werden im Folgenden einige Gründe für die RSA-Annahme benennen und außerdem einige Sicherheitsvorkehrungen bei der Wahl von p, q uns e für praktische Anwendungen beschreiben. b) Klar ist, dass die RSAe -Funktionen leicht zu invertieren ist, wenn man den geheimen Schlüssel d kennt. Unbekannt ist, ob man zur effizienten Invertierung von RSAe tatsächlich d benötigt. c) Die Bestimmung des geheimen Schlüssels d ist “genauso“ schwierig wie die Faktorisierung von n. Es gilt nämlich: Satz: Gibt es für eines der folgenden Probleme einen polynomialen (probabilistischen) Algorithmus, so auch für jedes der anderen: Gegeben: (n, e), 0 < e < ϕ(n), ggT(e, ϕ(n)) = 1 (n = p · q) (1) Bestimme Faktorisierung von n. (2) Bestimme ϕ(n). (3) Bestimme d mit ed ≡ 1 (mod ϕ(n)). Beweis: (1) ⇒ (2) Sind p, q mit n = p · q bekannt, so ϕ(n) = (p − 1)(q − 1). (2) ⇒ (3) Sind ϕ(n), e bekannt, so bestimmt man mit dem erweiterten Euklidischen Algorithmus d. (3) ⇒ (1) Zunächst eine Vorbemerkung: Ist G eine endliche Gruppe mit neutralem Element 1G und g ∈ G, so existiert eine kleinste natürliche Zahl c mit g c = 1G . c heißt die Ordnung von g, c = o(g). Dabei gilt: 1) Es ist o(g) = | < g > |, wobei < g >= {1G , g, g 2, . . . , g o(g)−1 } die von g erzeugte (zyklische) Untergruppe von G ist. Nach dem Satz von Lagrange ist o(g) ein Teiler von |G| (vgl. auch Beweis von 8.3 a)). 2) Ist g b = 1G , b ∈ N, so ist o(g) ein Teiler von b. 3) Ist o(g) = 2f u, wobei u ungerade ist, und ist z ungerade, so ist o(g z ) = 2f u′ , und u′ teilt u. Sei nun 2s die größte Zweierpotenz, die ed − 1 teilt, und k = Ist dann a ∈ Z∗n (d.h. 1 ≤ a ≤ n, ggT(a, n) = 1), so ist o(ak mod n) ∈ {2i |0 ≤ i ≤ s}, 133 ed − 1 . 2s s denn (ak )2 mod n = aed−1 mod n, da ed − 1 ≡ 0 (mod ϕ(n)) (vgl. Vorbemerkung Punkt 2)). Für ein solches a ist natürlich auch a mod p ∈ Z∗p und a mod q ∈ Z∗q . Ang. o(ak mod p) 6= o(ak mod q), o.E. o(ak mod p) > o(ak mod q). Auch die Ordnungen von ak mod p bzw. ak mod q liegen in {2i |0 ≤ r i ≤ s}. Sei o(ak mod q) = 2r . Dann r < s und ak·2 ≡ 1 (mod q), aber r r ak·2 6≡ 1 (mod p); daher ggT(a2 k − 1, n) = q. Um also n zu faktorisieren, wählt man zufällig und gleichverteilt a ∈ {1, . . . , n − 1} und berechnet t=ggT(a, n). Ist t > 1, so ist t ein echter Teiler von n, fertig. r Ist t = 1, so berechne ggT(a2 k − 1, n), r = 0, . . . , s − 1. Findet man dabei einen Teiler von n, so fertig; wenn nicht, wählt man ein neues a. Wir werden gleich im Anschluss zeigen, dass gilt: |{a|a ∈ {0, . . . , n − 1}, ggT(a, n) = 1, o(ak mod p) 6= o(ak mod q)}| ≥ (p−1)(q−1) 2 (∗) Daher ist die Wahrscheinlichkeit, ein a mit o(ak mod p) 6= o(ak mod q) – und damit einen echten Teiler von n – zu finden, mindestens 21 . Nach l Iterationen ist die Wahrscheinlichkeit also mindestens 1 − 21l , einen Teiler von n zu finden; also ist z.B. für l ≥ log(n) die Wahrscheinlichkeit mindestens 1 − n1 . Jede Iteration erfordert wegen s < log(ed) < log(n2 ) = 2 log n maximal 2 log n viele ggT-Bestimmungen (die auch polynomial in log n durchführbar sind). Für die noch zu beweisende Anzahlaussage (∗) benötigen wir noch: Chinesischer Restsatz Seien m1 , . . . , mh paarweise teilerfremde natürliche Zahlen und seien a1 , . . . , ah ganze Zahlen. h Q Dann gibt es genau eine Zahl x mit 0 ≤ x ≤ mi mit x ≡ aj (mod i=1 mj ) für alle j = 1, . . . , h. Beweis: Setze m = h Q mi und Mj = m/mj für j = 1, . . . , h. i=1 Dann ist ggT(mj , Mj ) = 1 für j = 1, . . . , h. Mit dem erweiterten Euklidischen Algorithmus kann man daher natürliche Zahlen yj bestimmen, so dass yj Mj ≡ 1 (mod mj ) für alle j = 134 1, . . . , h. Dann folgt auch aj yj Mj ≡ aj (mod mj ) für j = 1, . . . , h. Da für i 6= j die Zahl mj ein Teiler von Mi ist, gilt auch ai yi Mi ≡ 0 (mod mj ) für alle i, j = 1, . . . , h, i 6= j. h P Setzt man x = ai yi Mi mod m, so folgt daher x ≡ aj (mod mj ) für i=1 alle j = 1, . . . , h. Sind x, x′ zwei Lösungen mit 0 ≤ x, x′ ≤ m, so ist x ≡ aj ≡ x′ (mod mj ) für alle j = 1, . . . , h. Da die mj paarweise teilerfremd sind, folgt dann auch x ≡ x′ (mod m), also x = x′ . Wir beweisen jetzt die noch offen gebliebene Aussage (∗): Z∗p und Z∗q sind zyklische Gruppen der Ordnung p − 1 bzw. q − 1. Sei v ∈ {1, . . . , p − 1} mit < v >= Z∗p (d.h. o(v) = p − 1) und sei w ∈ {1, . . . , q − 1} mit < w >= Z∗q . Nach dem Chinesischen Restsatz existiert ein x, 1 ≤ x ≤ n = pq mit x ≡ v (mod p) und x ≡ w (mod q). Dann ist also o(x mod p) = p − 1 und o(x mod q) = q − 1. 1. Fall: o(xk mod p) > o(xk mod q) Da p − 1 ein Teiler von ϕ(n) und ϕ(n) ein Teiler von ed − 1 ist, ist s s ed − 1 = (p − 1)r für ein r ∈ N. Es folgt (xk mod p)2 = (x mod p)k·2 = (x mod p)ed−1 = (x mod p)(p−1)r = 1. Also ist o(xk mod p) = 2i mit i ≤ s. Analog ist o(xk mod q) = 2j mit j < i. Sei u eine ungerade Zahl in {1, . . . , p − 1} und y ∈ {0, . . . , q − 2}. Nach dem Chinesischen Restsatz gibt es ein a, 1 ≤ a < n = pq, mit a ≡ hu (mod p) und a ≡ hy (mod q). Dann ist o(ak mod p) = o(xuk mod p), also o(ak mod p) = o(xk mod p) (siehe Vorbemerkung 3)). j j j Andererseits ist (ak mod q)2 = ak·2 mod q = xyk·2 mod q = 1, d.h. o(ak mod q) ≤ o(xk mod q) (siehe oben, 2)). Also ist o(ak mod p) > o(ak mod q). Es ist klar, dass für jede der (p−1)(q−1) möglichen Wahlen von (u, y) die 2 zugehörigen Zahlen a < n paarweise verschieden sind. Damit folgt die Behauptung in diesem Fall. 2. Fall: o(xk mod p) < o(xk mod q) Analog zum ersten Fall. 3. Fall: o(xk mod p) = o(xk mod q) Wie zu Beginn des ersten Falles sieht man, dass o(xk mod p) = o(xk mod q) = 2i , i ≤ s. 135 Dabei ist i ≥ 1 (siehe Vorbemerkung 3)), da k ungerade ist und p − 1 oder q − 1 gerade ist (in unserem Fall dann sogar beide). Ist u eine ungerade Zahl in {0, . . . , p − 2} und y eine gerade Zahl in {0, . . . , q − 2}, so existiert nach dem Chinesischen Restsatz ein a, 1 ≤ a < n = pq, mit a ≡ xu (mod p) und a ≡ xy (mod q). Wie im ersten Fall sieht man, dass o(ak mod p) = o(xk mod p). i−1 i−1 i−1 Andererseits ist (ak mod q)2 = (xyk mod q)2 = (xk mod q)y·2 1, da y gerade und daher 2i ein Teiler von y2i−1 ist. = Also ist o(ak mod q) < o(ak mod p). Wählt man u als gerade Zahl in {0, . . . , p − 2} und y als ungerade Zahl in {0, . . . , q − 2}, so verläuft das Argument analog. Für jede dieser insgesamt (p−1)(q−1) möglichen Wahlen von (u, y) sind die zugehörigen 2 Zahlen a < n verschieden. Damit ist der Beweis vollständig. d) In Folge von c) stellt sich die Frage, wie schnell sich eine Zahl n = p · q faktorisieren lässt. Es gibt eine Reihe guter Faktorisierungsalgorithmen, auf die wir aber in dieser Vorlesung nicht eingehen können. Keiner von ihnen ist ein polynomialer Algorithmus, und es ist unbekannt, ob Faktorisierung in polynomialer Zeit möglich ist. Die besten derzeit bekannten Algorithmen ( Zahlkörpersieb“) haben eine Komplexität von ” 1 2 O(ec(log n) 3 (log log n) 3 ), c geeignete Konstante (c ≤ 3). Von 1991 bis 2007 veranstaltete die Firma RSA Security die sogenannte RSA-Challenge, bei der große RSA-Zahlen (Produkt zweier Primzahlen) faktorisiert werden sollten. Das letzte Ergebnis war die Faktorisierung einer 640-Bit-Zahl im November 2005 (Bahr, Boehm, Franke, Kleinjung). Die Rechenzeit auf einem 2,2-GHz-Prozessor betrug 30 Jahre (tatsächlich wurde die Faktorisierung in fünf Monaten auf parallelen Rechnern ermittelt). Zur Zeit gilt eine Bitlänge von 1024 Bit für n als sicher.41 e) Es gibt eine Reihe von Algorithmen, die bei speziellen Eigenschaften von p und q schnell eine Faktorisierung liefern. Z.B. sollten p und q nicht 41 Näheres über Faktorisierungsalgorithmen: Buchmann [15], Kapitel 8, Crandall [19] oder Riesel [41] 136 die gleiche Bitlänge haben, da ansonsten Algorithmen, die in der Nähe √ von n nach Faktoren suchen, erfolgreich sind. Andererseits sollten p und q beide groß sein. Eine kleine Differenz der Bitlänge von p und q ist daher die beste Wahl. Andere Eigenschaften, die häufig gefordert werden: 1. p − q besitzt einen großen Primfaktor, r 2. r − 1 besitzt einen großen Primfaktor (sog. starke Primzahlen) 3. p + 1 besitzt einen großen Primfaktor (analog für q) f) Wie vorne erwähnt, wird aus Effizienzgründen oft ein kleiner Exponent e, z.B. e = 3, für das Verschlüsseln verwendet. Das birgt aber eine Gefahr in sich, wenn A ein und dieselbe Nachricht an mehrere Benutzer mit den öffentlichen Schlüsseln (n1 , 3), (n2, 3), (n3 , 3) schickt. Ist m der Klartext, so sendet A ei = m3 mod ni , i = 1, 2, 3. Wie nehmen m < ni an! Lauscherin Eve fängt c1 , c2 , c3 ab. Mit Hilfe des Chinesischen Restsatzes findet sie ein a, 0 ≤ a < n1 n2 n3 , mit a ≡ c1 (mod n1 ) a ≡ c2 (mod n2 ) a ≡ c3 (mod n3 ) Dieses a ist eindeutig bestimmt. Wegen m3 < n1 n2 n3 ist a = m3 . Eve kann m durch Ziehen der Kubikwurzel aus a erhalten. Lösung: Entweder größere e. Oder: An m wird eine zufällig erzeugte Bitfolge geeigneter Länge (z.B. 64 Bit) vor der Chiffrierung angehängt (’Salting’, ’Padding’, Maskierung). Für jedes i muss ein anderer Bitstring gewählt werden. g) Auch für kleine d gibt es Unsicherheiten. Hier gibt es einen Angriff, der auf M.J. Wiener (1990) zurückgeht.42 Dann kann man durch Kettenbruchzerlegung von e 1 = a0 + n a1 + a2 + 1 1 a3 +... 42 Einzelheiten siehe: Wiener [50] 137 n 1/4 ) den geheimen Exponent d schnell ermitteln. im Fall d < ( 18 Von D. Boneh, G. Durfee u. Y. Frankel (1998) wurde dieser Angriff ausgedehnt auf den Fall, dass d < n0,293 . Weitere Verbesserungen wurden später noch erzielt. Aus diesem Grund wird gelegentlich empfohlen, bei der Wahl von e und d zunächst d geeignet zu wählen und daraus e mit dem erweiterten Euklidischen Algorithmus zu bestimmen. (Aus Effizienzgründen – e wird i.d.R. groß sein – wird dies in der Praxis aber selten gemacht.) h) Eine weitere Angriffsmöglichkeit beruht auf der Multiplikativität der RSA-Funktionen: Es gilt (m1 m2 )e mod n = me1 me2 mod n. Das liefert die folgende Angriffsmöglichkeit bei kleinem m (Boneh, Joax, Nguyen, 2000). Angenommen Eve weiß, dass m < 2t < n ist (z.B. Passwort, DESSchlüssel). Mit nicht-vernachlässigbarer Wahrscheinlichkeit ist dann t m = m1 m2 , m1 , m2 < 2 2 . [Hat m z.B. 64 Bit (d.h. m < 264 ), dann ist die Wahrscheinlichkeit 18%, dass m = m1 m2 ist mit m1 , m2 jeweils 32-Bit-Zahlen.] Dann ist c = me mod n = me1 me2 mod n = ((me1 mod n)(me2 mod n)) mod n. t Eve bildet nun die Datenbank {1e , 2e , 3e , . . . , (2 2 )e } (alles mod n). Dabei seien o.B.d.A. alle k e teilerfremd zu n. t Sie bildet auch {(1e )−1 , (2e )−1 , (3e )−1 , . . . , ((2 2 )e )−1 } (alles mod n). t Nun testet sie, ob c(k e )−1 mod n = j e für geeignete k, j ∈ {1, . . . , 2 2 }. Dann ist c = j e k e mod n, und m = jk (denn RSAe : Zn → Zn ist bijektiv, und es sind m, jk < n). (Dies ist ein Meet-in-the-Middle Angriff, vgl. 4.6.) Wir analysieren die Kosten bei diesem Angriff: Für den Speicher der t Datenbank benötigt man 2 2 log n Bits. Wenn die Datenbank erstellt und sortiert ist, ist der Aufwand für die binäre Suche vernachlässigbar (logarithmisch in der Größe der Datenbank). Es sind also im Wesentlit chen 2 2 Multiplikationen durchzuführen. Beispiel: DES-Schlüssel mit 56 Bit (< 256 ), n 1024-Bit-Zahl. Dann hat die Datenbank eine Größe von 228 1024 = 238 Bit (= 32 Gigabyte). 138 Falls der DES-Schlüssel das Produkt zweier Zahlen < 228 ist, so wird er in 228 Multiplikationen gefunden (anstelle von 256 Exponentiationen). Lösung: Padding-Techniken (vgl. [38, Kapitel 14 und 15]). i) Angriffe auf Grund von Laufzeiteffekten bei modularer Potenzierung (Paul Kocher, 1995). Möglich, falls physikalischer Zugriff auf Rechner.43 8.11 Effizienz des RSA-Verfahrens Die aus Sicherheitsgründen empfohlene Wahl von Zahlen n mit der Bitlänge von 1024 Bit impliziert, dass das RSA-Verfahren zeitaufwändig ist (bei Verund mehr noch bei Entschlüsselung). Vergleiche dazu die Schlüssellänge von DES und AES. Software-Implementierungen von AES sind derzeit ca. 100 mal schneller als bei RSA. Bei Hardware-Implementierungen ist der Geschwindigkeitsunterschied noch größer. Daher wird das RSA-Verfahren häufig nur zur Chiffrierung beim Schlüsselaustausch für symmetrische Verfahren eingesetzt oder bei digitalen Signaturen (Hybrid-Verfahren) oder zur Authentifizierung (siehe Kapitel 9, 10). 8.12 Bestimmung großer Primzahlen a) Zur Schlüsselerzeugung beim RSA-Verfahren werden große Primzahlen benötigt, etwa von Bitlänge 500, also in Dezimalstellung ca. 150-stellige Primzahlen. Dazu geht man so vor, dass durch Zufallswahlen Zahlen im gewünschten Größenbereich gewählt werden. Zunächst wird überprüft, ob eine so gewählte Zahl durch eine kleine Primzahl (z.B. bis 106 , Liste) teilbar ist. Wenn dies nicht der Fall ist, wird ein Primzahltest durchgeführt (dazu gleich Näheres). Sollte sich herausstellen, dass die gewählte Zahl keine Primzahl ist, wird eine weitere Zufallswahl durchgeführt. 43 s. Trappe, Washington [46], S. 143-145 und Ertel [23], S. 84-85 139 Wann kann man dabei erwarten, eine Primzahl gefunden zu haben? Der Primzahlsatz (Hadamard, de la Vallé Poussin44 , 1896) besagt, dass π(x) ∼ x , ln(x) π(x) = # Primzahlen ≤ x. Man kann also erwarten, nach ln(10150 ) = 150 · ln(10) ≈ 350 Versuchen eine 150-stellige Primzahl zu finden, wobei sich diese Anzahl verringert, wenn man z.B. von vorneherein alle geraden Zahlen ausschließt. (Achtung: Aus dem Primzahlsatz kann man nicht entnehmen, dass in jedem Fall zwischen x und x + ln(x) eine Primzahl liegt. Tatsächlich gilt nämlich x x für x ≥ 17 und π(x) < 1, 26 · ln(x) (Rosser, Schoenfeld), und π(x) > ln(x) hieraus ergibt sich qualitativ nicht viel Besseres als das, was schon das sogenannte Bertrand’sche Postulat (ein bewiesener Satz) besagt, dass nämlich zwischen x und 2x eine Primzahl liegt.) Wie sehen Primzahltests aus? √ Die naheliegende Probedivision mit allen Zahlen ≤ n ist zu aufwändig. Sie hat exponentiellen Aufwand bzgl. der Inputlänge log(n). Man benötigt schnellere Tests. b) Fermat-Test Er beruht auf dem kleinen Satz von Fermat (8.3 a)): Ist p eine Primzahl, a ∈ N, ggT(a, p) = 1, so ist ap−1 ≡ 1 (mod p). Test: Gegeben n. Wähle a ∈ N, a < n. Ist ggT(a, n) 6= 1, so ist n keine Primzahl. Ist ggT(a, n) = 1, so überprüfe, ob an−1 ≡ 1 (mod n). Wenn nicht, so ist n keine Primzahl. Ansonsten ist keine Aussage möglich. Wiederhole dann den Test mit neuem a. (Dass nur a < n gewählt werden, ist keine Einschränkung, da (a + kn)n−1 ≡ an−1 (mod n).) Mit wievielen a muss man den Fermat-Test wiederholen, um bei einer zusammengesetzten Zahl herauszufinden, dass sie zusammengesetzt ist? Hier liegt eine Schwäche des Fermat-Tests, denn es gibt zusammengesetzte Zahlen n, so dass an−1 ≡ 1 (mod n) für alle a mit ggT(a, n) = 1 ist. 44 vgl. Chandrasekharan [17] 140 Solche Zahlen heißen Carmichael-Zahlen; sie werden vom Fermat-Test nur dann als zusammengesetzt erkannt, wenn man zufällig ein a < n testet mit ggT(a, n) 6= 1 (dann hat man sogar schon einen nicht-trivialen Teiler von n gefunden). Zwar sind Carmichael-Zahlen selten (z.B. gibt es zwischen 1 und 100.000 nur 16 Carmichael-Zahlen; 561 ist die kleinste), aber es gibt unendlich viele.45 c) Miller-Rabin-Test Um den Fall der Carmichael-Zahlen auszuschließen, muss man den FermatTest verfeinern. Eine solche Verfeinerung stellt der Miller-Rabin-Test dar. Er ist auch ein probabilistischer Primzahltest, den wir jetzt kurz vorstellen. Er beruht auf folgender Überlegung: Sei p eine ungerade Primzahl, a ∈ N, ggT(a, p) = 1. Sei p − 1 = 2s · t, 2 ∤ t. Klar: s ≥ 1. Aus ap−1 ≡ 1 (mod p) folgt dann, dass s−1 ·t (a2 )2 ≡ 1 (mod p). Anders ausgedrückt: a2 ·t ist eine Nullstelle des Polynoms x2 − 1 über Zp . Da Zp ein Körper ist, hat dieses Polynom nur zwei Nullstellen, nämlich 1 und p − 1 = −1 mod p, d.h. s−1 s−1 ·t a2 s−1 ·t Ist s − 1 ≥ 1 und ist a2 ≡ 1 (mod p), so folgt mit demselben Argument s−2 ·t a2 ≡ 1 oder − 1 (mod p). ≡ 1 oder − 1 (mod p). So fortfahrend erhält man: Entweder ist at ≡ 1 (mod p) oder es existiert ein i, 0 ≤ i ≤ s − 1 mit i a2 ·t ≡ −1 (mod p). Diese Eigenschaft wird nun beim Miller-Rabin-Test für eine ungerade Zahl n (anstelle p) getestet: 45 siehe den Beweis von Alford, Granville und Pomerance, [3] 141 Miller-Rabin-Test: Sei n ungerade, n − 1 = 2s · t, 2 ∤ t. Wähle a ∈ {2, 3, . . . , n − 1} zufällig, gleichverteilt. Ist ggT(a, n) 6= 1, so ist n zusammengesetzt. s−1 Ist ggT(a, n) = 1, so berechne at , a2t ,. . . , a2 ·t . i Ist at 6≡ 1 (mod n) und a2 ·t 6≡ −1 (mod n) für alle i = 1, . . . , s − 1, so ist n zusammengesetzt. Andernfalls wähle neues a. Nun kann man zeigen: Ist n zusammengesetzt, n ≥ 3 ungerade, so gibt es in der Menge {1, . . . , n−1} höchstens ϕ(n) Zahlen a, die zu n teilerfremd sind und für die der Miller4 Rabin-Test nicht zeigt, dass n zusammengesetzt ist. Die übrigen mindestens 3 ϕ(n) zu n teilerfremden Zahlen a nennt man Zeugen gegen die Primzahlei4 genschaft von n. Das bedeutet also, dass beim Miller-Rabin-Test auch jede Carmichael-Zahl n von vielen zu n teilerfremden a als zusammengesetzt erkannt wird. Führt man den Miller-Rabin-Test mit maximal r Iterationen, also verschiedenen Wahlen von a, durch, so ist die Wahrscheinlichkeit, dass man für eine ungerade zusammengesetzte Zahl n nach r Iterationen keinen Zeugen gegen die Primzahleigenschaft von n gefunden hat, nach obiger Bemerkung ≤ 41r . Als probabilistischer Primzahltest wird der Miller-Rabin-Test so angewandt, dass ein geeignetes r für die Anzahl der Iterationen festgelegt wird. Hat man nach r Wahlen von a keinen Zeugen gegen die Primzahleigenschaft gefunden, so wird n ist Primzahl“ausgegeben. Testet man Zahlen n unterhalb einer ” Schranke N, so ist die Wahrscheinlichkeit, dass n eine Primzahl ist, wenn der ) . Dies ist eine bedingte Miller-Rabin-Test dies ausgibt, mindestens 1 − ln(N 4r Wahrscheinlichkeit. Man erhält die angegebene Abschätzung, wenn man beN nutzt, dass die Anzahl der Primzahlen ≤ N etwa ln(N ist (Primzahlsatz). ) In der Praxis wird der Miller-Rabin-Test häufig nur mit sehr wenigen Iterationen durchgeführt. Der Grund hierfür ist, dass es vermutlich bei einer zusammengesetzten Zahl n sehr viel mehr als 43 ϕ(n) Zeugen gegen die Primzahleigenschaft gibt. So haben z.B. Damgård, Landrock und Pomerance 1999 gezeigt, dass die Wahrscheinlichkeit, eine zusammengesetzte ungerade Zahl n ∈ [2499 , 2500 ] bei einem Durchlauf des Miller-Rabin-Tests nicht als zusammengesetzt zu erkennen, kleiner als 4128 ist. Die Komplexität eines Durchlaufs des Miller-Rabin-Tests ist O((log(n))3 ). Bei fester Anzahl r von Iterationen ist der Miller-Rabin-Test also ein proba142 bilistischer polynomialer Primzahltest. Um ihn zu einem deterministischen Test zu machen, müsste man allerdings nach obiger Bemerkung mehr als 41 ϕ(n) Zahlen a testen. Ob schon polynomial (in log(n)) viele Tests genügen, ist unbekannt. Wenn dies der Fall wäre, so hätte man mit dem Miller-Rabin-Test einen polynomialen deterministischen Primzahltest. Bis vor kurzem war es eine offene Frage, ob es deterministische polynomiale Algorithmen zur Entscheidung, ob eine Zahl n eine Primzahl ist oder nicht, gibt. Im August 2002 fanden Magrawal, N. Kayal, N. Saxena in Kanpur, Indien eine positive Antwort. Ihr Algorithmus beruht auf folgender Kennzeichnung von Primzahlen: n prim ⇔ (x + a)n = xn + a in Zn [x] für alle a mit ggT(a, n) = 1 Rechne modulo xr − 1 mit kleinem Grad r. Man braucht dann nur O(poly(log(n))) Paare (r, a) zu testen. Für Einzelheiten verweisen wir auf [28]. Wir betrachten jetzt eine andere wichtige Klasse von Funktionen, die als Kandidaten für Einwegfunktionen angesehen werden. 8.13 Diskreter Logarithmus Sei p eine ungerade Primzahl, g eine Primitivwurzel mod p, d.h. Z∗p =< g >= {g 0 = 1, g, . . . , g p−2} (vgl. 4.8 d)). Zp−1 = {0, . . . p − 2} → Z∗p Expp,g : x 7→ g x Inverse: Logp,g : Z∗p → Zp−1 y 7→ Logp,g (y) . Dies ist der “diskrete“ Logarithmus. Man kennt bis heute keine polynomialen Algorithmen zur Berechnung von Logp,g . Die Menge {Expp,g } gilt daher als Kandidatenfamilie von Einwegfunktionen. Dies wird explizit gemacht durch die sogenannte Diskrete-LogarithmusAnnahme. Sei Ik = {(p, g)| |p| = k, p ungerade Primzahl, g Primitivwurzel mod p}, k ∈ N. Sei P (x) ein positives Polynom und A(p, g, y) ein polynomialer probabili- 143 stischer Algorithmus. Dann existiert k0 ∈ N, so dass pr(A(p, g, y) = Logp,g (y) | (p, g) ← Ik , y ← Z∗p ) ≤ 1 P (k) für alle k ≥ k0 . Dabei ist die Gleichverteilung auf Ik und auf Z∗p angenommen, bezüglich derer (p, g) und y zufällig ausgewählt werden. Die Nutzung des diskreten Logarithmus in der Kryptographie geschah zunächst nicht zur Konstruktion eines Verschlüsselungsverfahrens, sondern eines Verfahrens zur Schlüsselvereinbarung für symmetrische Verfahren. Diffie-Hellman-Verfahren (1976, Schlüsselvereinbarung) Situation: Alice und Bob wollen sich auf einen Schlüssel K einigen, haben aber nur eine Kommunikationsverbindung zur Verfügung, die abgehört werden kann. Lösung: Bob und Alice einigen sich auf eine Primzahl p (p > gewünschter Schlüssel K) und eine Primitivwurzel g mod p (2 ≤ g ≤ p − 2). (p und g können öffentlich bekannt sein.) 1) Alice wählt zufällig a ∈ {2, . . . p − 2}. Sie berechnet x = g a mod p und sendet x an Bob (a hält sie geheim). 2) Bob wählt zufällig b ∈ {2, . . . p − 2}. Er berechnet y = g b mod p und sendet y an Alice (b hält er geheim). 3) Alice berechnet y a mod p = K. Bob berechnet xb mod p = K. K ist der gemeinsame Schlüssel (für ein symmetrisches Verfahren). Gültigkeit des Verfahrens: y a ≡ g ba ≡ g ab ≡ xb (mod p) Beispiel: p = 17, g = 3 (Beachte: 32 = 9 6≡ 1 (mod 17) 34 = 81 ≡ 13 6≡ 1 (mod 17) 38 ≡ 132 ≡ −1 (mod 17) 316 ≡ 1 (mod 17)) 144 Alice wählt a = 11. 311 = (34 · 3)2 · 3 34 ≡ 13 (mod 17), 34 · 3 ≡ 5 (mod 17), 52 ≡ 8 (mod 17), 52 · 3 ≡ 7 (mod 17) x ≡ 311 ≡ 7 (mod 17) Bob wählt b = 4. y = 34 ≡ 13 (mod 17) Alice: K = y a = 1311 ≡ 4 (mod 17) Bob: K = xb = 74 ≡ 4 (mod 17) K=4 8.14 Bestimmung von p und g Zur Bestimmung von Primzahlen, siehe Abschnitt 8.12. Wie bestimmt man Primitivwurzel g modulo p? Ein g ∈ {2, . . . p − 2} ist genau dann eine Primitivwurzel modulo p, wenn g p−1 ≡ 1 (mod p), aber g i 6≡ 1 (mod p) für alle 1 ≤ i < p − 1. Tatsächlich 6≡ 1 (mod p) für alle Primteiler q von p − 1. genügt es zu zeigen, dass g p−1 q Sind diese also bekannt, so kann man schnell entscheiden, ob g Primitivwurzel ist. Ohne die Faktorisierung von p − 1 zu kennen, ist kein schnelles Verfahren bekannt, das testet, ob ein gegebenes g eine Primitivwurzel modulo p ist. Obwohl es relativ viele Primitivwurzeln modulo p gibt, nämlich ϕ(p − 1), und daher Zufallswahlen eine sinnvolle Möglichkeit darstellen, eine solche zu finden, wird man also i.Allg. nicht schnell entscheiden können, ob tatsächlich eine Primitivwurzel vorliegt. Man geht in der Praxis daher häufig folgendermaßen vor: Man wählt p von der Form 2r + 1, wobei r eine Primzahl ist. Dies geschieht durch zufällige Wahl von r, Test auf Primzahleigenschaft und im positiven Fall Test, ob 2r + 1 eine Primzahl ist. Die Erfahrung zeigt, dass dieses Vorgehen meist relativ schnell funktioniert. Ein solches p hat den Vorteil, dass die Faktorisierung von p − 1 = 2r bekannt ist. Die Wahrscheinlichkeit, per Zufallswahl eine Primitivwurzel zu finden, ist ϕ(p−1) = 12 r−1 , also fast 12 . Man hat bei gewähltem g ∈ Z∗p nur zu testen, ob p−1 r g 2 6= 1 (d.h. g 6= 1, p − 1) und g r 6= 1. Ist dies der Fall, so ist g Primitivwurzel modulo p. 145 Primzahlen r mit der Eigenschaft, dass auch 2r + 1 eine Primzahl ist, heißen Sophie Germain-Primzahlen (nach Sophie Germain, 1776-1831). Es ist unbekannt, ob es unendlich viele Sophie Germain-Primzahlen gibt. Es gibt 26.569.515 Sophie Germain-Primzahlen unterhalb 1010 . Die größte bekannte Sophie Germain-Primzahl ist größer als 2172.000 . 8.15 Sicherheit des Diffie-Hellman-Verfahrens a) Ein Angreifer kennt p, g, x = g a mod p und y = g b mod p. Er will den geheimen Schlüssel K = g ab mod p berechnen. Die einzig bekannte Methode dafür ist, a aus x oder b aus y zu bestimmen, d.h. diskrete Logarithmen mod p zu berechnen. Es ist aber nicht bekannt, ob die Berechnung von K tatsächlich äquivalent zur Bestimmung von a oder b ist. b) Es gibt eine Reihe bekannter Algorithmen zur Bestimmung diskreter Logarithmen. Die besten haben die gleiche Komplexität (in p) wie die besten Faktorisierungsalgorithmen (in n). Daher gehen die Empfehlungen wie bei RSA dahin, Primzahlen mit 1024 Bit Länge zu wählen. c) Ein anderes Risiko beim Diffie-Hellman-Verfahren (wie bei anderen zur Schlüsselvereinbarung auch) besteht im sogenannten Man-in-themiddle-Angriff. Mallory wählt Exponent c ∈ {0, 1, . . . p − 2}. Er fängt g a und g b ab. Er sendet g c an Alice und Bob (die glauben, g b bzw. g a erhalten zu haben). Alice berechnet KA = g ca mod p und Bob berechnet KB = g cb mod p. Sie denken, dies ist ihr gemeinsamer Schlüssel. Mallory kann (g a )c = g ca und (g b)c = g cb berechnen. Schickt Alice an Bob eine mit KA verschlüsselte Nachricht, so kann Mallory sie entschlüsseln (denn er kennt KA und KA ist ein Schlüssel für ein symmetrisches Verfahren), lesen, ggf. verändern und mit KB verschlüsselt an Bob schicken. Bob kann die empfangene Nachricht entschlüsseln (er erhält ja eine mit dem ihm bekannten Schlüssel KB verschlüsselte Nachricht) und schöpft keinen Verdacht. Diesem Angriff kann nur durch Authentifizierungsmethoden begegnet werden, auf die wir in Kapitel 10 zu sprechen kommen. 146 8.16 Das ElGamal-Verschlüsselungsverfahren T. El Gamal (1984) Das ElGamal-Verfahren zur Verschlüsselung beruht auf der Sicherheit des Diffie-Hellman-Verfahrens. Schlüsselerzeugung: Alice wählt Primzahl p und eine Primitivwurzel mod p, g. Sie wählt zufällig und gleichverteilt a ∈ {2, . . . p − 2}. Sie berechnet x = g a mod p. öffentlicher Schlüssel: (p, g, x) Geheimer Schlüssel: a Verschlüsselung: Klartextraum {0, 1, . . . p − 1} Bob will Alice den Klartext m senden. Bob wählt Zufallszahl b ∈ {2, . . . p−2} und berechnet y = g b mod p. Dann bestimmt er f = xb m mod p. Chiffretext ist (y, f ). (Beachte: x und y führen zu gemeinsamem Schlüssel xb mod p = y a mod p wie bei Diffie-Hellman. Die Verschlüsselung geschieht also gerade durch Multiplikation dieses Schlüssels mit m.) Entschlüsselung: Alice hat von Bob Schlüsseltext (y, f ) erhalten. Sie berechnet (y a )−1 · f mod p. Dies ist der ursprüngliche Klartext m. Korrektheit der Entschlüsselung: y a mod p = xb mod p, also (y a )−1 f ≡ (y a )−1 xb · m ≡ m (mod p). Wie berechnet Alice (y a)−1 mod p? Entweder berechnet sie y a mod p und dessen Inverses mit Hilfe des erweiterten Euklidischen Algorithmus (vgl. 2.1 b) bzw. 8.7 b)). Oder sie bildet s = p − 1 − a > 0 und berechnet y s . Es ist y s y a = y p−1 ≡ 1 (mod p) nach dem kleinen Satz von Fermat (vgl. 8.3 a)), also y s = (y a )−1 . Die zweite Möglichkeit ist i.Allg. die schnellere. Beispiel: Schlüssel von Alice: p=17 , g = 3, a=11 x = 311 mod 17 = 7 (Siehe Beispiel zum Diffie-Hellman-Verfahren auf S. 144.) öffentlicher Schlüssel von Alice: (p = 17, g = 3, x = 7) Geheimer Schlüssel von Alice: a = 11 147 Bob will Klartext m verschlüsselt an Alice senden. m = 10 Bob wählt b = 4. y ≡ 34 (mod 17), also y = 13. f ≡ xb m ≡ 74 · 10 ≡ 4 · 10 ≡ 6 (mod 17) Chiffretext ist (13, 6). Entschlüsselung durch Alice: s = p − 1 − a = 5. y s f = 135 · 6 ≡ 13 · 6 ≡ 10 (mod 17). Klartext lautet 10. 8.17 Effizienz des ElGamal-Verfahrens Zum Verschlüsseln sind zwei modulare Exponentiationen modulo p (xb mod p, g b mod p) erforderlich. Dabei ist die Größenordnung von p ebenso groß wie die Größenordnung von n beim RSA-Verfahren (1024 Bit). RSA benötigt aber nur eine Exponentation. Aber: xb mod p, g b mod p können im Voraus berechnet werden und müssen dann nur sicher gespeichert werden (Chipkarte). Voraussetzung ist dabei die Kommunikation mit einem festen Partner (z.B. Bank). Dann erfordert die Verschlüsselung nur eine Multiplikation mod p (dass b immer gleich gewählt wird, birgt aber Sicherheitsrisiken, vgl. 8.18 b)). Effizienznachteil: Die verschlüsselte Nachricht ist doppelt so lang wie der Klartext. 8.18 Sicherheit des ElGamal-Verfahrens a) ElGamal ist genauso schwer zu knacken wie Diffie-Hellman: Ang. Mallory kann ElGamal knacken, d.h. aus (p, g, x) und (y, f ) kann er m bestimmen (für jede Nachricht m). Dann kann er aus p, g, x = g a mod p, y = g b mod p auch K = g ab mod p bestimmen: Er wendet ElGamal-Entschlüsselung auf (p, g, x) und (y, 1) an. Er erhält eine Nachricht m. Er weiß: 1 = g ab m mod p. Dann g ab ≡ m−1 (mod p). Umgekehrt: Ang. Mallory kann Diffie-Hellman knacken, d.h. aus Kenntnis von (p, g, x, y) auf K = g ab mod p schließen. Ang. Mallory erhält ElGamal Chiffretext (y, f ) (öffentlicher Schlüssel (p, g, x)). 148 Er kann K = g ab mod p bestimmen. Da f = g ab · m mod p, kann er durch K −1 f mod p den Klartext m bestimmen. b) b sollte bei jeder Verschlüsselung neu gewählt werden. Das so randomisierte Verschlüsselungsverfahren erschwert z.B. die Anwendung statistischer Tests zur Kryptoanalyse. Es macht auch folgenden Angriff wirkungslos: Ang. Angreifer kennt einen Klartext m und chiffrierten Text (y, f ), der mit (p, g, x) und y = g b mod p verschlüsselt wurde. Wird zum Verschlüsseln eines zweiten Klartextes m′ das gleiche b, d.h das gleiche y verwendet, f ′ = xb m′ mod p, so gilt: f ′ f −1 ≡ m′ m−1 (mod p) Damit lässt sich m′ = f ′ f −1 m mod p ermitteln. 8.19 Erweiterungen der Diffie-Hellman und ElGamalVerfahren Die beiden Verfahren lassen sich übertragen auf andere Gruppen G anstelle Z∗p. Man wählt dann g ∈ G und hat dann das diskrete Logarithmus-Problem in < g > zu lösen. Dazu muss man in G (bzw. der Untergruppe < g >) effizient rechnen können, das diskrete Logarithmus-Problem muss aber schwer zu lösen sein. Einen besonders wichtigen Fall stellen die Punktgruppen elliptischer Kurven über einem endlichen Körper (Miller 1985; Koblitz 1987) dar. Die entsprechenden elliptic-curve-cryptosystems werden auch in der Praxis eingesetzt und sind offenbar mindestens so sicher wie diejenigen, die auf dem diskreten logarithmischen Problem in Z∗p beruhen, wobei man mit deutlich kleineren Schlüssellängen auskommt. [Elliptische Kurven sind die Lösungsmengen von Gleichungen der Form y 2 = x3 + ax + b (dies ist etwas vereinfacht). Auf diesen Lösungsmengen kann man eine Gruppenoperation definieren.46 ] Wir besprechen jetzt noch kurz ein Public-Key-Verfahren, das von Rabin stammt und darauf beruht, dass es schwierig ist, Quadratwurzeln modulo 46 Einzelheiten siehe z.B. Koblitz [36], Chapter 6 oder Trappe, Washington [46], Chapter 15 149 n zu berechnen, wenn n wie im RSA-Verfahren ein Produkt zweier großer Primzahlen ist. Wir gehen daher zunächst auf modulare Quadratwurzeln ein. Dies wird auch in Kapitel 10 benötigt. 8.20 Modulare Quadratwurzeln a) Sei p eine ungerade Primzahl. Die Menge Q = {y 2 : y ∈ Z∗p } ist eine Untergruppe von Z∗p . Da y und −y mod p = p − y das gleiche Quadrat haben, aber y 6= p − y (p ungerade), ist genau die Hälfte der Elemente in Z∗p ein Quadrat (mod p), d.h. |Q| = (p − 1)/2. Das bedeutet, dass ein Element x ∈ Z∗p entweder keine oder zwei Quadratwurzeln mod p besitzt. Ist a ein Quadrat in Z∗p , so ist a|Q| = 1 (in Z∗p ; folgt aus dem Satz von Lagrange, vgl. Beweis zu 8.3 a)), d.h. es ist a(p−1)/2 mod p = 1. Ist a kein Quadrat in Z∗p , so ist a(p−1)/2 mod p = p − 1. (Der Grund hierfür ist folgender: Für jedes a ∈ Z∗p gilt nach dem kleinen Satz von Fermat ap−1 = 1 (in Z∗p ). Also kann a(p−1)/2 als Nullstelle des Polynoms t2 − 1 ∈ Zp [t] nur die Werte 1 bzw. −1 mod p = p − 1 annehmen. Sämtliche (p − 1)/2 Elemente a ∈ Q erfüllen a(p−1)/2 = 1 in Z∗p , sind also Nullstellen des Polynoms t(p−1)/2 − 1 ∈ Zp [t]. Da dieses Polynom nicht mehr als (p−1)/2 Nullstellen besitzt, muss für alle übrigen Elemente a ∈ Z∗p , also die Nichtquadrate, a(p−1)/2 mod p = p − 1 gelten.) Man kann also leicht entscheiden, ob ein a ∈ Z∗p ein Quadrat ist oder nicht. Zur Berechnung von Quadratwurzeln in Z∗p gibt es schnelle (probabilistische) Algorithmen (siehe z.B. Wätjen [48], Kap. 9.2). Für p ≡ 1 (mod 4) sind allerdings keine deterministischen polynomialen Algorithmen bekannt. Anders im Fall p ≡ 3 (mod 4), wo die Quadratwurzelbestimmung ganz einfach ist. Ist nämlich a ein Quadrat, so ist (a(p+1)/4 )2 ≡ a(p+1)/2 ≡ a · a(p−1)/2 ≡ a (mod p). b) Sei nun n = p · q, wobei p 6= q ungerade Primzahlen sind. Dann gilt: Ist a ∈ Z∗n (d.h. ggT(a, n) = 1), so hat a entweder keine Quadratwurzel in Z∗n oder genau vier: Hat a eine Quadratwurzel mod n, so auch mod p und mod q. Seien x1 , p − x1 die Quadratwurzeln von a in Z∗p und x2 , q − x2 die in Z∗q . 150 Nach dem Chinesischen Restsatz gibt es dann zu jeder Kombination x ∈ {x1 , p − x1 }, x′ ∈ {x2 , q − x2 } ein y ∈ Z∗n mit y ≡ x (mod p) und y ≡ x′ (mod q), und dieses ist auch schnell zu berechnen (siehe 8.10 c)). Damit erhält man vier verschiedene y mit y 2 ≡ a (mod p) und y 2 ≡ a (mod q), d.h. y 2 ≡ a (mod n). Beispiel: n = 21, p = 3, q = 7. Gesucht: Quadratwurzeln aus 16 in Z∗n . 4 | p + 1, 4 | q + 1. x1 = 16(3+1)/4 mod 3 = 1, 3 − x1 = 2. x2 = 16(7+1)/4 mod 7 = 4, 7 − x2 = 3. Viermalige Anwendung des Chinesischen Restsatzes liefert die folgenden vier Quadratwurzeln von 16 in Z∗21 : y1 = 4 (zu x1 = 1 und x2 = 4) y2 = 17 (zu 3 − x1 = 2 und 7 − x2 = 3) y3 = 11 (zu 3 − x1 = 2 und x2 = 4) y4 = 10 (zu x1 = 1 und 7 − x2 = 3). (Beachte: y2 = n − y1 , y4 = n − y3 ) c) Sei wieder n = p · q, wobei p 6= q ungerade Primzahlen sind. Dann ist die Berechnung von Quadratwurzeln mod n genauso schwierig, wie die Bestimmung der Faktorisierung von n: Kennt man p und q, so kann man nach a) und b) Quadratwurzeln modulo n effizient berechnen. Umgekehrt: Wähle x ∈ Z∗n zufällig und berechne a = x2 mod n. Bestimme Quadratwurzel y aus a. Ist y = x oder y = n − x, so wähle neues x. Da es vier Quadratwurzeln von a gibt, ist y 6= x, n − x mit Wahrscheinlichkeit 1/2. Durch Iterieren erhält man also mit beliebig hoher Wahrscheinlichkeit zu einem x und a = x2 mod n eine Quadratwurzel y von a mit y 6= x, n − x. Mit einem solchen y kann man die Faktorisierung von n schnell bestimmen: Es ist x2 − y 2 ≡ 0 (mod n), d.h. n = p · q|(x − y) · (x + y). n teilt nicht x + y, da wegen x + y < 2n sonst x + y = n folgte, also y = n − x, im Widerspruch zur Annahme über y. n teilt auch nicht x − y, da sonst x = y, ebenfalls im Widerspruch zur Annahme über y. 151 Also ist ggT(x + y, n) = p oder q. Da der ggT mit Hilfe des Euklidischen Algorithmus schnell zu berechnen ist, erhält man somit die Faktorisierung von n. 8.21 Das Public-Key-Verfahren von Rabin M. Rabin hat 1979 ein Verschlüsselungsverfahren vorgeschlagen, das darauf beruht, dass modulares Quadrieren modulo n einfach, das Quadratwurzelziehen modulo n aber, falls n Produkt zweier (großer) Primzahlen ist, schwierig ist. Konkret wird bei diesem Verfahren n = p · q gewählt, wobei p, q ≡ 3 (mod 4). Die Abbildung ∗ Zn → Z∗n ist dann ein Kandidat für eine Einwegfunktion. Quad : x 7→ x2 (Beachte: Quad ist weder surjektiv noch injektiv, denn ein Quadrat hat immer vier Quadratwurzeln.) Das Verschlüsselungsverfahren von Rabin besteht gerade in der Anwendung der Funktion Quad. Der öffentliche Schlüssel ist n. Nach 8.20 ist das Berechnen der Quadratwurzeln modulo n (also die Entschlüsselung) genauso schwierig wie die Faktorisierung von n (beachte Unterschied zum RSA-Verfahren). Kennt man p und q (sie bilden den geheimen Schlüssel), so kann man die Quadratwurzeln von einem y leicht berechnen: ±y p+1 4 mod p, ±y q+1 4 mod q sind die beiden Quadratwurzeln modulo p bzw. modulo q. Mit dem Chinesischen Restsatz erhält man daraus die vier Quadratwurzeln modulo n (vgl. 8.20). [Man muss dann noch sicherstellen, dass der Empfänger erkennen kann, welches die richtige Wurzel ist.47 ] Wie oben erwähnt ist das Brechen des Rabin-Verfahrens (bei einem ChosenPlaintext-Angriff) genauso schwierig wie die Bestimmung der Faktorisierung von n. Gegenüber einem Chosen-Ciphertext-Angriff ist es allerdings unsicher, denn dann kann man bei einem Versuch nach 8.20 c) mit Wahrscheinlichkeit 1 die Faktorisierung von n bestimmen. 2 47 Details siehe Buchmann [15], Kapitel 7.4 152 8.22 Der Blum-Blum-Shub Pseudozufallsfolgengenerator Wie bei den anderen Kandidaten für Einwegfunktionen (RSA-Funktionen, Exponentialfunktionen) kann auch Quad verwendet werden, um Pseudozufallsfolgen-Generatoren zu konstruieren. Dieser ist besonders populär und wird nach seinen Erfindern Blum-Blum-Shub-Generator (BBS-Generator) genannt48 . Entsprechend den Überlegungen in Kapitel 7.9 benötigt man dazu ein Hard-Core-Prädikat für Quad. Man kann zeigen, dass das niedrigste Bit von x ein Hard-Core-Prädikat für Quad ist.49 Der BBS-Generator arbeitet daher folgendermaßen: ’Initial seed’ x. x0 = x2 mod n. Zufallsfolge b1 , b2 , . . . erzeugt durch: 1) xj = x2j−1 mod n 2) bj = niedrigstes Bit von xj (least significant bit) 48 49 Publikation: Blum, Blum, Shub [14] siehe z.B. Delfs, Knebel [21], Kapitel 7.3 153 9 Digitale Signaturen und kryptographische Hashfunktionen 9.1 Grundidee digitaler Signaturen Die Anforderungen an die digitale Signatur eines elektronischen Dokuments sind die gleichen wie bei gewöhnlichen Unterschriften: Niemand kann ein Dokument mit der Signatur einer Person A signieren, selbst wenn er Signaturen von A aus anderen Dokumenten kennt. Daher kann auch A nicht abstreiten, ein Dokument signiert zu haben. Ferner: Signatur lässt sich nicht vom Dokument entfernen. Also: Digitale Signatur muss einen unauflösbaren Zusammenhang zu • dem Unterzeichner des Dokuments (Identitätseigenschaft) und • dem signiertem Dokument (Echtheitseigenschaft) besitzen. Ferner: Jeder Empfänger muss die digitale Signatur verifizieren können (Verifikationseigenschaft). 9.2 Signaturschema (vereinfachte Form) Jedem Teilnehmer A des Systems wird eine Signaturfunktion sA und eine Verifikationsfunktion vA zugeordnet. sA ist geheim (also nur A bekannt). vA ist öffentlich. Aus vA lässt sich sA praktisch nicht bestimmen. A signiert die Nachricht m folgendermaßen: A berechnet sA (m) und sendet (m, sA (m)). Der Empfänger kann mit vA die Echtheit der Signatur prüfen. Oft: vA ist Umkehrfunktion zu sA , d.h. vA (sA (m)) = m. Aus der Identitätseigenschaft folgt dann, dass vA eine Einwegfunktion sein muss. Daher werden 154 Signaturschemata häufig mit Mitteln der Public-Key-Kryptographie realisiert. Beispiele werden wir später angeben. Notwendig für dieses Signaturschema ist ferner, dass das Verzeichnis der öffentlichen Verifikationsfunktion vor Veränderungen durch Unbefugte geschützt ist. Andernfalls könnte ein Betrüger die öffentliche Verifikationsfunktion eines Teilnehmers durch seine eigene ersetzen und dann in dessen Namen Signaturen (mit seiner Signaturfunktion, also der des Betrügers) erzeugen. Dies führt zur Notwendigkeit von Trusted Centers oder Certification Authorities (Zertifizierungsstellen), die einen wichtigen Bestandteil der sogenannten Public-Key-Infrastruktur darstellen. Hierauf werden wir in dieser Vorlesung nicht eingehen.50 Werden Signaturschemata mit Public-Key-Systemen realisiert, so ist i.Allg. die Signatur sA (m) der Nachricht m ebenso lang wie m. Dies ist nicht sehr effizient. Aus diesem Grund, aber auch aus Sicherheitsgründen, auf die wir bei den speziellen Signaturverfahren noch eingehen, wird i.Allg. nicht die Nachricht m, sondern ein Hashwert H(m) von m signiert (H öffentlich). Wir gehen daher zunächst auf kryptographische Hashfunktionen ein. 9.3 Definition (Hashfunktion) Sei R ein endliches Alphabet. Eine Hashfunktion ist eine Abbildung H : R∗ → Rn (n ∈ N fest, R∗ = Menge aller endlichen Strings über R, Rn = Menge aller Strings der Länge n), die effizient (d.h. in polynomialer Zeit) berechenbar ist. Also: Hashfunktionen sind nie injektiv, d.h. es existieren (unendlich viele) Paare (x, x′ ) ∈ R∗ × R∗ , x 6= x′ , mit H(x) = H(x′ ). Beispiel: Quersumme mod 2, R = {0, 1}, n = 1 Das oben schon erwähnte Signaturverfahren mit Hashfunktion sieht also folgendermaßen aus: 50 Näheres dazu z.B. in ausführlicher Darstellung in Mao [38], Schmeh [42], Schwenk [44]. Standardwerk: Adams und Lloyd [1], Auszüge unter http://www.pkiforum.com/books/adams\_understandingpki.html 155 9.4 Signaturschema mit Hashfunktion Gegeben sei ein Signaturschema mit Signaturfunktionen sA und öffentlichen Verifikationsfunktionen vA (für jeden Teilnehmer A). Ferner sei eine öffentlich bekannte kryptographisch sichere Hashfunktion H gegeben. A will Nachricht m an B senden und Signatur anfügen. Zur Signatur berechnet A den Hashwert x = H(m) von m. Sie signiert x : sA (x) und sendet (m, sA (x)) an B. Verifikation der Signatur durch B: B berechnet H(m) = x und verifiziert mit vA , ob sA (x) die Signatur von x ist. Ist dies der Fall, wird die Signatur akzeptiert. Verwendet man Hashfunktionen für kryptographische Zwecke (speziell für Signaturen), so sind folgende Punkte zu beachten: - Wenn eine Nachricht m mit dem signierten Hashwert sA (H(m)) von A versandt wird, so kann jeder Angreifer (mittels vA ) H(m) ermitteln. Gelingt es ihm, eine Nachricht m′ zu finden mit H(m) = H(m′ ), so wird (m′ , sA (H(m))) = (m′ , sA (H(m′ ))) vom Empfänger als eine korrekt signierte Nachricht angesehen. - Angenommen ein Angreifer wählt y zufällig und berechnet vA (y) = z. Da sA (z) = y, kann er behaupten, y sei eine gültige Signatur von A. Gelingt es ihm, eine Nachricht m zu finden mit H(m) = z, so kann er behaupten, dass A die Nachricht m mit sA (z) = y signiert hat. Dies führt zu Anforderungen an kryptographische Hashfunktionen, die in folgender Definition zusammengefasst sind. 9.5 Definition (kryptographische Hashfunktion) Eine kryptographische Hashfunktion ist eine Hashfunktion, die folgende Bedingungen erfüllt: (1) H ist eine Einwegfunktion (um Angriffe des zweiten Typs oben zu verhindern). (2) H ist schwach kollisionsresistent, d.h. für ein gegebenes x ist es nicht effizient möglich (polynomialer Algorithmus), ein x 6= x′ zu finden mit H(x′ ) = H(x) (um Angriffe des ersten Typs oben zu verhindern). 156 Einer Verschärfung von (2) ist (2’) H ist stark kollisionsresistent, d.h. es ist nicht effektiv möglich, x 6= x′ zu finden mit H(x) = H(x′ ). (Werte von kryptographischen Hashfunktionen werden auch digital fingerprints oder message digests genannt.) Die Bedingungen (1) und (2) aus obiger Definition sind unabhängig voneinander. Das ist in folgendem Satz enthalten: 9.6 Satz (Kollisionsresistenz und Einwegeigenschaft) a) Ist H stark kollisionsresistent, so ist H schwach kollisionsresistent. b) Existiert eine schwach bzw. stark kollisionsresistente Hashfunktion, so existiert auch eine schwach bzw. stark kollisionsresistente Hashfunktion, die keine Einwegfunktion ist. c) Ist H eine schwach kollisionsresistente Hashfunktion, H : R∗ → Rn , und hat jedes x ∈ Rn mindestens zwei Urbilder unter H (typischer Fall), so ist H eine Einwegfunktion. d) Existiert eine Einwegfunktion h : R∗ → Rn , so existiert auch eine Einwegfunktion h̃ : R∗ → Rn , die nicht schwach kollisionsresistent ist. Beweis: a) klar. b) Sei H eine kollisionsresistente Hashfunktion, H : R∗ → Rn . ( 1x falls x Länge n hat, Definiere h : R∗ → Rn+1 durch h(x) = 0 H(x) sonst. h ist kollisionsresistent, aber für die Hälfte aller y ∈ Rn+1 (die mit 1 beginnen) kann man ein Urbild finden. c) Angenommen es existiert ein probabilistischer polynomialer Algorithmus A, der mit nicht-vernachlässigbarer Wahrscheinlichkeit zu x ein x′ = A(H(x)) liefert mit H(x′ ) = H(x). Es gilt |H −1(H(x))| ≥ 2, also ist die Wahrscheinlichkeit ≥ 12 , dass x′ 6= x ist. Dies führt zu einem probabilistischen polynomialen Algorithmus zur Erzeugung von Kollisionen. 157 ( h(x) falls x mit 1 beginnt, h(1 x) falls x mit 0 beginnt. h̃ ist eine Einwegfunktion, aber für alle x, die mit 10 beginnen (also in 1 der Fälle), m = 10 m′ , ist h̃(m) = h̃(0 m′ ). 4 d) Definiere h̃(x) = Allerdings gilt (vgl. 9.6 d)): Satz (Roempel, 1990) Existiert eine Einwegfunktion, so existiert auch eine universelle Hashfunktion; diese ist schwach kollisionsresistent. (Eine universelle Hashfunktion ist eine unendliche Familie {Hs : s ∈ S} von Hashfunktionen, zusammen mit einem probabilistischen polynomialen Algorithmus, der s auswählt und einem polynomialen Algorithmus, der zu gegebenem s ∈ S und x ∈ R∗ den Wert Hs (x) berechnet. Wir werden in 9.16 ein ähnliches Konzept behandeln.) Es ist unbekannt, ob schwach bzw. stark kollisionsresistente Hashfunktionen existieren. Wie groß sollte bei einer Hashfunktion die Länge n des Hashwertes gewählt werden? Natürlich nicht zu groß, denn darin liegt der Sinn von Hashfunktionen. Andererseits führen zu kleine n zu einer Auffälligkeit bezüglich starker Kollisionsresistenz. Dies ist der Ansatzpunkt der sogenannten Geburtstagsattacke, die auf dem sogenannten Geburtstagsparadox beruht. 9.7 Satz (Geburtstagsparadox) Ein Merkmal komme in m verschiedenen Ausprägungen vor. Jede Person besitze genau √ eine dieser Merkmalsausprägungen. √ (1+ 1+8m·ln 2) ≈ 1, 18 m, so ist die Wahrscheinlichkeit, dass unter k Ist k ≥ 2 Personen zwei die gleiche Merkmalsausprägung haben, mindestens 12 . (Speziell: Merkmalsausprägung = Geburtstagsdatum, m = 365: Bei 23 Personen ist die Wahrscheinlichkeit mindestens 12 , dass zwei am gleichen Tag Geburtstag haben.) Beweis: Wir beschreiben die Merkmalsausprägungen mit den Zahlen 1, . . . , m und be158 trachten den Wahrscheinlichkeitsraum {1, . . . m}k mit Gleichverteilung. Jedes Elementarereignis (g1 , . . . gk ) ∈ {1, . . . m}k hat also die Wahrscheinlichkeit 1 . mk Das Elementarereignis (g1 , . . . gk ) tritt ein, wenn die i-te Person die Merkmalsausprägung gi besitzt. Wie groß ist die Wahrscheinlichkeit q, dass k Personen alle verschiedene Merkmalsausprägungen haben? |{(gi, . . . gk )| alle gi verschieden}| = q= mk k−1 Q i=0 (m − i) mk i=0 Es ist ex ≥ 1 + x für alle x ∈ R. Also gilt: q≤ k−1 Y i −m e − =e k−1 P i=0 i m = e− = k−1 Y (1 − i ) m k(k−1) 2m i=0 Damit: − k(k−1) 2m e k(k − 1) 1+ 1 ≤ − ln 2 ⇔ k ≥ ≤ ⇔− 2 2m √ 1 + 8m · ln 2 2 Daraus folgt die Behauptung des Satzes. 9.8 Geburtstagsattacke Sei R = Z2 . H : Z∗2 → Zn2 Hashfunktion. Ein Angreifer erzeugt möglichst viele Hashwerte. Diese werden nach Kollision nen untersucht. Nach dem Satz ist bei etwas mehr als 2 2 vielen Hashwerten die Wahrscheinlichkeit mindestens 21 , dass eine Kollision vorliegt. Daran sieht man, dass z.B. n = 64 keine ausreichende Sicherheit bietet (232 ≈ 4 · 109 ). Heutzutage wählt man für kryptographische Hashfunktionen mindestens n ≥ 128, eher sogar n ≥ 160. Wie konstruiert man Hashfunktionen? 9.9 Serielles Hashing mit Kompressionsfunktionen Sei k : Rl → Rn , l > n fest, eine Kompressionsfunktion. 159 Konstruktion einer Hashfunktion h : R∗ → Rn : Der Klartext m wird in Blöcke m1 , . . . , mt der Länge l − n zerlegt (evtl. Padding). Wähle dann einen Initialisierungsvektor IV =: h0 der Länge n (öffentlich bekannt). Nun berechne: h1 = k(m1 , h0 ) h2 = k(m2 , h1 ) .. . ht = k(mt , ht−1 ) und setze h(m) = ht . Dann gilt: Satz (Damgård, 1989) Ist k kollisionsresistent, so auch h. (Es gibt auch eine Version des parallelen Hashings, siehe z.B. Hardjono, Pieprzyk, Seberry [27], 6.3.) 9.10 Konstruktion von Kompressionsfunktionen unter Verwendung von Blockchiffren Das Prinzip aus 9.9 wird häufig realisiert durch Kompressionsfunktionen, die auf Blockchiffren beruhen. Man kann eine Blockchiffre mit Blocklänge n (gleiche Länge von Klartextund Chiffretextblöcken) und Schlüssellänge s als Kompressionsfunktion Rs+n → Rn betrachten via (k, x) → E(k, x) = Ek (x), | {z } | {z } s+n ∈ Rn ∈R E die Verschlüsselungsfunktion (k ∈ Rs Schlüssel, x ∈ Rn ). Diese Kompressionsfunktionen werden entweder direkt wie in 9.9 verwendet oder es werden daraus andere Kompressionsfunktionen abgeleitet. Typische Konstruktionen sind: a) hi = Emi (hi−1 ) (Rabin-Verfahren) Hierbei wird der Klartext in Blöcke mi der Länge s zerlegt. h0 = IV ∈ R ist ein Initialisierungsvektor. Die mi fungieren als Schlüssel. 160 [Die Konstruktion hi = Ehi−1 (mi ) (= E(hi−1 , mi )) ist nicht empfehlenswert. Hier müsste ohnehin s = n sein und falls m die Länge ≤ n hat, so ist h(m) = E(h0 , m). In diesem Fall ist m berechenbar, falls E die Verschlüsselungsfunktion eines symmetrischen Verfahrens ist, und h ist keine Einwegfunktion.] b) hi = Emi (hi−1 ) ⊕ hi−1 (Davis-Meyer-Verfahren) c) hi = Ehi−1 (mi ) ⊕ mi (Matyas-Meyer-Oseas-Verfahren) Hier ist s = n und hi−1 ist Schlüssel. d) hi = Ehi−1 (mi ) ⊕ hi−1 ⊕ mi (Miyaguchi-Preneel-Verfahren; auch andere Bezeichnungen.) Auch hier ist s = n. 9.11 Spezielle Hashfunktionen Die in der Praxis am häufigsten benutzten kryptographischen Hashfunktionen beruhen in der Regel nicht auf Verschlüsselungsverfahren, sondern sind speziell für kryptographische (insbesondere Signatur-) Zwecke konstruiert. Sehr verbreitet war lange die Hashfunktion MD4 (Message Digest 4) von Ron Rivest. Mit Angriffsmethoden, die in den letzten Jahren entwickelt wurden, ist es aber relativ einfach, Kollisionen bei MD4 zu erzeugen. Weit verbreitet sind derzeit eine Weiterentwicklung von MD4, nämlich MD5 (1992) und vor allem der von der NSA entwickelte Secure Hash Algorithm, SHA-1 (1992/93). MD5 liefert Hashwerte von 128 Bit, SHA-1 von 160 Bit.51 Beide Hashfunktionen wurden hinsichtlich starker Kollisionsresistenz erfolgreich angegriffen (Joux; Wang et al. seit 2004). Bei SHA-1 beispielsweise wurden Kollisionen hergestellt mit 269 (ggf. sogar 263 ) Hashoperationen (anstelle von 280 ).52 51 Einzelheiten über die Funktionsweise von SHA-1 u. MD5 siehe z.B. Hardjono, Pieprzyk, Seberry [27], Menezes, van Oorschott, Vanstone [39], Schmeh [42] oder Schneier [43]. 52 Zu den Angriffen auf MD5 bzw. SHA-1 siehe Hoffman, Schneier, http://www.rfc-archive.org/getrfc.php?rfc=4270 und dortige Links. 161 Das NIST (National Institute of Standards and Technology) hat die Entwicklung einer neuen Hashfunktion als Standard angestoßen (ähnlich wie bei AES). Der Sieger soll 2012 feststehen. Beachte: Anwenden einer Hashfunktion H auf Dokument m liefert keine digitale Signatur. Zwar wird die Echtheitseigenschaft des Dokuments gewährleistet (da man H(m) aus dem öffentlich bekannten H selbst berechnen kann und mit dem gesuchten Hashwert vergleichen kann), nicht aber die Identitätseigenschaft: Jeder kann H(m) herstellen. 9.12 RSA-Signatur Vereinfachte Version (ohne Hashfunktion) Wie bei RSA-Verschlüsselung hat jeder Teilnehmer A einen öffentlichen Schlüssel (n, e) und einen geheimen Schlüssel d. Diese werden wie im RSAVerfahren erzeugt. Erzeugung der Signatur einer Nachricht m ∈ {0, 1, . . . n − 1}: A berechnet s = md mod n. s ist die Signatur von m. A sendet (m, s) an B. Verifikation durch B: B berechnet se mod n. Stimmt das Ergebnis mit m überein, wird die Signatur akzeptiert. Denn B sieht daran, dass s mit dem geheimen Schlüssel von A erzeugt wurde, den nur A kennt. Damit sind Echtheitseigenschaft und Identitätseigenschaft gewährleistet. (Bei sprachlichen Nachrichten m wird oft auch nur s = md mod n gesendet; liefert se mod n einen sinnvollen Text, so wird dieser als m akzeptiert.) Sicherheit: • Solange das RSA-Verfahren sicher ist, kann niemand ohne Kenntnis von d die Signatur s von m erzeugen. • Die beschriebene einfache Version der RSA-Signatur birgt jedoch die Gefahr der sogenannten existentiellen Fälschung (existential forgery): Mallory wählt s ∈ {0, . . . n − 1} und behauptet, dies sei eine Signatur 162 von Alice. Wer das verifizieren will, berechnet m = se mod n mit dem öffentlichen Schlüssel von Alice und glaubt, Alice habe m signiert. In aller Regel wird m ein sinnloser Text sein, aber bei kurzen Mitteilungen von Zahlenwerten besteht hier eine Gefahr. • Sind m1 , m2 ∈ {0, . . . n − 1} und s1 = md1 mod n und s2 = md2 mod n die zugehörigen Signaturen, so kennt man die Signatur von m1 m2 (falls m1 m2 < n): (m1 m2 )d mod n = s1 s2 mod n. Aus zwei gültigen Signaturen lässt sich eine gültige dritte gewinnen (Multiplikativität). Es gibt verschiedene Möglichkeiten, den beiden genannten Gefahren zu begegnen. Eine ist die Verwendung von Signaturen eines Hashwertes, die zudem Effizienzvorteile bringt. RSA-Signatur mit Hashfunktion Sei m ein beliebiger Text (m ∈ Z∗2 ). Zur Signatur von m verwendet A öffentm lich bekannte, kollisionsresistente Hashfunktion H : Z∗2 → Zm 2 (2 ≤ n, n aus dem RSA-Verfahren) und verfährt wie in 9.4 beschrieben. Man sieht leicht, dass mit diesem Verfahren die oben genannten Angriffe unmöglich gemacht werden. In der Praxis konstruiert man H mit einer kollisionsresistenten Hashfunktion, die z.B. einen 160-Bit-String erzeugt und wendet darauf eine Expansionsfunktion an, die den 160-Bit-String auf einen m-Bit-String abbildet. Einzelheiten sind in einem Public Key Cryptography Standard (PKCS) festgelegt, in diesem Fall in PKCS#1. PKCS#1 beschreibt Verfahren der Datenaufbereitung für RSA-Verschlüsselung und -Signatur. (Die bisher existierenden PKCS#1 bis PKCS#15 sind von der Firma RSA Security entwickelte Standards, die hauptsächlich Datenformate für die Public-Key-Kryptographie festlegen.53 ) 9.13 ElGamal-Signatur Das ElGamal-Verschlüsselungsverfahren ist nicht unmittelbar für Signaturen anwendbar (wie RSA), da die Entschlüsselung von einer Zufallswahl des Absenders abhängt; Entschlüsselung und Verschlüsselung sind nicht einfach 53 Näheres zu diesen Standards in: Schmeh [42] 163 vertauschbar. Das ElGamal-Signaturverfahren muss daher anders konstruiert werden: Wie beim ElGamal-Verschlüsselungsverfahren hat jeder Teilnehmer A einen öffentlichen Schlüssel (p, g, x) und einen geheimen Schlüssel a (p Primzahl, g Primitivwurzel mod p, a ∈ {2, . . . p − 2}, x = g a mod p). Erzeugung der Signatur einer Nachricht m ∈ Z∗2 : A benutzt öffentlich bekannte kollisionsresistente Hashfunktion H : Z∗2 → {1, 2, . . . p − 2}. (Ist H : Z∗2 → Zn2 , so muss 2n ≤ p − 2 gelten, damit die Hashwerte als Elemente in {1, 2, . . . p − 2} interpretiert werden können.) A wählt Zufallszahl k ∈ {1, 2, . . . p − 2} mit ggT(k, p − 1) = 1. Sie berechnet r = g k mod p und s = k −1 (H(m) − ar) mod (p − 1) (k −1 Inverses von k mod (p − 1).) Signatur sA (m) = (r, s). Gesendet wird (m, sA (m)). Verifikation durch Empfänger: B kennt öffentlichen Schlüssel (p, g, x) von A und die Hashfunktion H. Er erhält von A die signierte Nachricht (m, sA (m)), wobei sA (m) = (r, s). B verifiziert, dass 1 ≤ r ≤ p − 1. Falls dies nicht gilt, wird Signatur zurückgewiesen. Falls 1 ≤ r ≤ p − 1, so überprüft B, ob xr r s ≡ g H(m) mod p gilt. Wenn ja, so akzeptiert er die Signatur, sonst nicht. Gültigkeit der Verifikation: Ist (r, s) wie oben konstruiert worden, so gilt wegen r = g k mod p und s = k −1 (H(m) − ar) mod (p − 1): xr r s ≡ g ar g ks ≡ g ar g H(m)−ar ≡ g H(m) mod p. Beispiel: p = 17, g = 3, a = 11, x = 311 mod 17, also x = 7. öffentlicher Schlüssel von A : (p, g, x) = (17, 3, 7) Geheimer Schlüssel von A : a = 11 A will Nachricht m mit Hashwert H(m) = 10 signieren. Sie wählt k ∈ {1, . . . 15} mit ggT(k, 16) = 1. Etwa: k = 13. Berechnung von k −1 mod 16 (mit erweitertem Euklidischen Algorithmus) liefert k −1 = 5 (13 · 5 = 65 ≡ 1 mod 16). r = g k mod p : 313 ≡ 12 mod 17, also r = 12. s = k −1 (H(m) − ar) mod (p − 1): 5 · (10 − 11 · 12) ≡ 14 mod 16, also s = 14. 164 Signatur von m : (12, 14). Verifikation durch B: B berechnet aus m den Hashwert H(m) = 10 und bestimmt dann g H(m) modulo p : 310 ≡ 8 mod 17 Dann berechnet er xr r s mod p und vergleicht, ob dies das gleiche Ergebnis wie g H(m) mod p liefert (also 8): 712 · 1214 ≡ 13 · 15 ≡ 8 mod 17 Signatur wird akzeptiert. Effizienz des Verfahrens Die Erzeugung der Signatur erfordert eine Anwendung des erweiterten Euklidischen Algorithmus zur Bestimmung von k −1 mod p − 1 und eine modulare Exponentiation r = g k mod p. Beide sind als Vorausberechnungen möglich (dann ist aber eine sichere Speicherung notwendig, bis eine Nachricht signiert wird). Die aktuelle Signatur erfordert dann nur zwei modulare Multiplikationen, ist also sehr schnell. Verifikation erfordert drei modulare Exponentiationen (mehr als bei RSASignatur). Eine Beschleunigung ist möglich, indem man die Kongruenz g −H(m) xr r s ≡ 1 mod p verifiziert und auf der linken Seite möglichst viele Exponentiationen simultan durchführt. 9.14 Sicherheit der ElGamal-Signatur a) Warum Überprüfung 1 ≤ r ≤ p − 1 ? Wenn dies nicht geschieht, kann Angreifer Mallory, falls er eine gültige Signatur (r, s) von A einer Nachricht m kennt, jede andere Nachricht m′ mit der Signatur von A versehen (sofern ggT(H(m), p − 1) = 1): Mallory berechnet u = H(m′ )H(m)−1 mod (p − 1) und daraus s′ = su mod (p − 1). Mit Hilfe des Chinesischen Restsatzes berechnet er dann r ′ mit 1 ≤ r ′ ≤ p(p − 1), so dass r ′ ≡ ru mod (p − 1) und r ′ ≡ r mod p. Dann ist (r ′ , s′ ) eine gültige Signatur (von A) der Nachricht m′ (wenn man nicht 1 ≤ r ′ ≤ p − 1 überprüft !): ′ ′ ′ ′ ′ ′ ′ xr r ′s ≡ xr r s ≡ g ar g ks ≡ g u(ar+ks) ≡ g uH(m) ≡ g H(m ) mod p 165 (r ′ verletzt den Test 1 ≤ r ′ ≤ p − 1: r ′ ≡ ru mod (p − 1). Wäre ru ≡ r mod (p − 1), so H(m′ )H(m)−1 ≡ u ≡ 1 mod (p − 1). Dann H(m′ ) = H(m), da 1 ≤ H(m′ ), H(m) ≤ p − 1. Dies widerspricht der Kollisionsresistenz von H. Also: r ′ 6≡ r mod (p − 1), aber r ′ ≡ r mod p. Daher r ′ ≥ p.) b) Kann Mallory Signatur von A einer Nachricht m fälschen, ohne dass er a kennt ? 1. Möglichkeit: Er wählt r und versucht einen passenden Wert s zu finden. Dann muss xr r s ≡ g H(m) mod p gelten, d.h. er muss den diskreten Logarithmus von x−r g H(m) zur Basis r modulo p finden. Das ist schwierig. 2. Möglichkeit: Er wählt s und versucht einen passenden Wert r zu finden. Dazu muss er xr r s ≡ g H(m) mod p nach r auflösen“. Hierfür sind keine effizienten ” Lösungsalgorithmen bekannt, obwohl das Problem nicht direkt mit der Berechnung diskreter Logarithmen zusammenhängt. Man kennt auch keine effektive Methode, (r, s) ohne Kenntnis von a simultan zu bestimmen, so dass es eine gültige Signatur von m durch A ist. c) Für die Sicherheit des ElGamal-Verfahrens ist die Verwendung einer Hashfunktion notwendig. Würde nämlich eine Nachricht m direkt signiert, so lautet die Verifikationskongruenz xr r s ≡ g m mod p. Dann kann man (r, s, m) bestimmen, die diese Kongruenz erfüllen; allerdings kann man dabei m nicht vorgeben (existentielle Fälschung). Man wählt u, v ∈ Z, wobei ggT(v, p − 1) = 1. Man setzt r = g u xv mod p, s = −rv −1 mod (p − 1) und m = s u mod (p − 1). Dann gilt: xr r s ≡ xr g us xvs ≡ xr g us x−r ≡ g m mod p. Bei Verwendung von Hashwerten kann man auf diese Weise nur die Signatur eines Hashwertes erzeugen, aber dann nicht eine zugehörige Nachricht zu diesem Hashwert bestimmen (wegen der Einwegeigenschaft der Hashfunktion). d) Notwendig für die Sicherheit der ElGamal-Signatur ist auch, dass bei jeder Signatur ein neues k zufällig aus {1, . . . p−2} (mit ggT(k, p−1) = 1) gewählt wird: 166 Angenommen für die Signatur zweier Nachrichten m1 , m2 wird das gleiche k, also auch das gleiche r = g k mod p verwendet. Seien (r, s1 ), (r, s2 ) die beiden Signaturen von m1 , m2 . Dann s1 − s2 ≡ k −1 (H(m1 ) − H(m2 )) mod (p − 1). Ist ggT(H(m1 ) − H(m2 ), p − 1) = 1 (dies ist häufig der Fall), so kann man hieraus k bestimmen (beachte 1 ≤ k ≤ p − 2). Es ist s1 ≡ k −1 (H(m1 ) − ar) mod (p − 1). Da s1 , k, H(m1), r bekannt sind, kann man hieraus den geheimen Schlüssel a bestimmen (beachte 2 ≤ a ≤ p − 2). 9.15 Der Digital Signature Algorithm (DSA) Es gibt zahlreiche Varianten des ElGamal-Signatur-Verfahrens. Eine besonders effiziente wurde 1991 vom NIST (National Institute of Standards and Technology) vorgeschlagen und 1994 zum Standard erklärt. DSA arbeitet mit Primzahlen p mit Bitlängen zwischen 512 und 1024 Bit. Die Exponentationen erfolgen in einer echten Untergruppe der multiplikativen Gruppe von Zp , die Primzahlordnung q hat, q ≈ 2160 . Dadurch wird das Verfahren sehr beschleunigt. Ob dadurch die Sicherheit beeinträchtigt ist, ist unbekannt. Darüberhinaus ist die Parameterwahl beim DSA viel genauer vorgeschrieben als beim ElGamal-Verfahren.54 Wir beschreiben jetzt noch eine Idee, die mit der digitaler Signaturen verwandt ist: 9.16 Message Authentication Codes (MAC) Auch: Schlüsselabhängige kryptographische Hashfunktionen. Dabei hat die Abkürzung MAC nichts mit ‘Media Access Control‘, der Adresse von Netzgeräten in der OSI-Schicht 2 zu tun. Vielmehr handelt es sich bei den Message Authentication Codes um eine Familie {hk : k ∈ K} von kryptographischen Hashfunktionen. K ist der Schlüsselraum. 54 Einzelheiten siehe z.B.: Buchmann [15], 11.5 167 Zwei Teilnehmer A und B tauschen den Schlüssel k ∈ K aus. A schickt (m, hk (m)). B überprüft, ob der Hashwert mit dem vereinbarten Schlüssel von A gebildet wurde. Damit kann B überprüfen, ob die Nachricht unverändert ist und von A kommt. (Auch Möglichkeit der Datensicherung; Viren!) Also: MACs haben eine ähnliche Funktion wie die digitale Signatur. Ihr Vorteil ist, dass sie in der Regel schneller zu berechnen sind. Hashfunktionen sind schneller als Public-Key-Verfahren, auf denen häufig digitale Signaturen beruhen. (Symmetrische Verfahren kann man für digitale Signaturen nicht verwenden.) Der Nachteil ist aber: A kann abstreiten, (m, hk (m)) gesendet zu haben, denn B hätte dasselbe Paar erzeugen können. Also: Nur Nachrichtenauthentizität, aber Fälschungen nicht durch Dritte möglich (wie bei einfachen Hashfunktionen). 9.17 Konstruktionsmöglichkeiten von MACs a) CBC-MACs: Beruht auf Blockchiffre (der Länge m). Der Schlüssel k der Blockchiffre wird ausgetauscht. Die Nachricht m wird in Blöcke m0 , . . . , mt der Länge n aufgeteilt. Sender und Empfänger einigen sich auf einen Initialisierungsvektor IV = c0 , z.B. den Nullstring. CBC-Modus: Ek (ci ⊕ mi ) = ci+1 ct+1 = Hk (m) ist dann MAC von m. (Vgl. Konstruktion von Hashfunktionen mit Blockchiffren!) b) HMAC: Bellare, Canetti, Krawczyk, 1996. Gegeben sei: H Hashfunktion (z.B. MD5, SHA-1), 2 Konstanten ipad und opad (Länge abhängig von Schlüssellänge), k Schlüssel. Berechnet wird HMAC von m durch H(k ⊕ opad | H(k ⊕ ipad | m)). Dabei sorgen ipad und opad dafür, dass innerer und äußerer Schlüssel verschieden sind. HMAC wird z.B. in TLS-Standard des SSL verwendet. 168 10 Authentifizierung und Zero-KnowledgeBeweise Authentifizierung: Nachweis bzw. Überprüfung, dass jemand derjenige ist, der er behauptet zu sein (manchmal wird hierfür auch der Begriff Identifizierung gebraucht). Forderungen: - Kein Teilnehmer eines Systems darf sich als jemand anderen ausgeben können. - Der Verifizierer darf sich nicht als anderer Teilnehmer ausgeben können. Im Wesentlichen gibt es drei Möglichkeiten: Authentifizierung durch Wissen: A hat eine Information, die nur sie kennt (und ggf. derjenige, gegenüber dem sie sich ausweist), also ein Geheimnis. Authentifizierung durch Besitz: Es wird überprüft, ob A einen bestimmten schwer zu fälschenden Gegestand besitzt (z.B. Ausweis). Authentifizierung durch biometrische Merkmale: Z.B. Fingerabdruck Für uns ist nur die erste Möglichkeit von Interesse. 10.1 Passwörter Passwort w wird von A ausgewählt. Im Rechner, gegenüber dem sich A authentifizieren muss, ist f (w) gespeichert, f Einwegfunktion. Angreifer können in der Regel aus f (w) nicht auf w schließen! (Diese Methode wird in modifizierter Form z.B. beim Zugang zu UNIXSystemen verwendet. Allerdings wird dort in der Regel w als Schlüssel für die Verschlüsselung des Nullstrings 0 mit einer schlüsselabhängigen Einwegfunktion fw verwendet und fw (0) wird gespeichert. Tatsächlich ist das Verfahren noch etwas aufwändiger. Für Details sei auf Mao [38], 11.5 verwiesen.) Wichtig: Passwortverzeichnis (also die f (w) bzw. fw (0)) muss vor unberechtigten Schreibzugriffen gesichert sein. 169 Gefahren: • Passwort wird oft unverschlüsselt über unsichere Netze zum Rechner geschickt, der die Authentifizierung vornimmt. • Oft werden einfache Passwörter w gewählt. Angreifer berechnen für solche w die Werte f (w). Gefahreneindämmung durch Einmal-Passwörter. 10.2 Challenge-Response-Authentifizierung Bei diesem Verfahren teilt A demjenigen, gegenüber dem sie sich authentifizieren will (etwa B), nicht das Geheimnis mit (wie bei Passwörtern). Vielmehr erhält sie von B eine Aufgabe (’challenge’). die sie nur lösen kann, wenn sie ein Geheimnis kennt. Die Lösung schickt A an B (’response’). B verifiziert die Lösung und erkennt die Identität von A an, falls die Lösung korrekt ist. Die einfachste Möglichkeit der Realisierung von Challenge-Response-Verfahren ist die Verwendung von Verschlüsselungsverfahren. a) Verwendung von symmetrischen Verschlüsselungsverfahren A und B kennen beide den geheimen Schlüssel k eines symmetrischen Verschlüsselungsverfahrens. Will sich A gegenüber B ausweisen, teilt sie das B mit. B sendet Zufallszahl r an A. A verschlüsselt r mit k und sendet c = Ek (r) an B. B entschlüsselt c mit k und überprüft, ob Dk (c) und r übereinstimmen. Falls ja, so ist die Identität von A anerkannt, sonst nicht. Nachteil: B muss k kennen. Bei Verwendung dieses Verfahrens als Zugangsschutz zu Rechnernetz müssen die geheimen Schlüssel sicher gespeichert sein. (Man kann die Verschlüsselungsfunktion auch durch einen MAC ersetzen.) b) Verwendung von Public-Key-Signaturverfahren A will sich gegenüber B ausweisen. B sendet Zufallszahl r an A. 170 A signiert r mit ihrem geheimen Schlüssel. B verifiziert Signatur mit öffentlichem Schlüssel von A. Vorteil: B erfährt das Geheimnis, also den geheimen Schlüssel von A, nicht. Er könnte allerdings durch geeignete Wahl von r ggf. Teilinformationen über den geheimen Schlüssel erhalten. Gefahren: Ein böswilliger B könnte eine von C mit Hilfe des öffentlichen Schlüssels von A verschlüsselte Nachricht für A abgefangen haben. Er sendet (statt der Zufallszahl) diese an A. Bei der Authentifizierung durch Signatur entschlüsselt A nun diese Nachricht für B! Daher sollte nie derselbe Schlüssel für Authentifizierungsverfahren und Nachrichtenverschlüsselungen verwendet werden. 10.3 Zero-Knowledge-Beweise Das Konzept der ’Zero-Knowledge-Proofs’ wurde 1985 von Goldwasser, Micali und Rackoff eingeführt. Wir behandeln hier nur Zero-Knowledge-Verfahren, die sog. interaktive Beweissysteme sind. Bei interaktiven Beweissystemen wird ein Protokoll zwischen Beweiser A und dem Verifizierer B durchgeführt. A kennt ein Geheimnis, B nicht. Ein solches Protokoll beschreibt Kommunikationsschritte zwischen A und B (Interaktion) und erfüllt zwei Kriterien: 1) In dem Protokoll überzeugt A den Verifizierer B davon, das Geheimnis zu kennen. (Durchführbarkeit) 2) Ein Betrüger kann das nicht (oder nur mit beliebig geringer Wahrscheinlichkeit > 0). (Korrektheit) (Diese Eigenschaften haben auch die Challenge-Response-Systeme.) Zusätzlich wird jetzt noch die Zero-Knowledge-Eigenschaft gefordert: 3) Der Verifizierer B erfährt nur, dass A das Geheimnis kennt, aber nichts weiter (gleichgültig, welche Strategie er anwendet). 171 Wie kann man 3) überprüfen? Idee: Jede mögliche Interaktion zwischen A und B kann auch ohne Kenntnis des Geheimnisses von einem Simulator konstruiert werden, ohne dass ein Außenstehender dies von einem echten interaktiven Beweis unterscheiden kann. Wir gehen darauf noch einmal kurz in 10.5 ein. Wir werden jetzt eine Realisierung eines Zero-Knowledge-Verfahrens kennenlernen, nämlich das sogenannte Fiat-Shamir-Verfahren. Es beruht auf dem Wurzelziehen modulo einer zusammengesetzten Zahl, das wir schon in 8.20 betrachtet haben. 10.4 Das Fiat-Shamir-Verfahren (Fiat, Shamir, 1986) A wählt p, q, große Primzahlen, bildet n = p · q. Sie wählt s ∈ {1, . . . n − 1} zufällig mit ggT(s, n) = 1. Sie berechnet v = s2 mod n. (v, n) ist öffentlich, s geheim. (Beachte nach 8.20: s ist nur dann aus n zu bestimmen, wenn man die Faktorisierung von n kennt.) A beweist B, dass sie eine Quadratwurzel von v modulo n kennt. (A braucht die Faktorisierung von n nicht zu kennen!) Protokoll: 1) A wählt zufällig und gleichverteilt r ∈ {1, 2, . . . n − 1}. Sie berechnet x = r 2 mod n. 2) A sendet x an Verifizierer B. 3) B wählt zufällig mit Wahrscheinlichkeit an A.(Challenge) 1 2 ein e ∈ {0, 1} und sendet e 4) Erhält A den Wert e = 0, so schickt sie r (die Wurzel von x) zurück. Erhält A den Wert e = 1, so schickt sie y = rs mod n (also Wurzel von xv) an B. (Response) 5) B verifiziert, dass r 2 ≡ x mod n (im Fall e = 0) bzw. y 2 ≡ xv mod n (im Fall e = 1). (Schritte 1) bis 5) werden wiederholt; jedesmal neues r wählen!) 172 Analyse: a) Kennt A das Geheimnis (also s), so kann sie jede der Fragen von B beantworten. b) Ein Betrüger kann aus (n, v) das Geheimnis nicht entschlüsseln (Quadratwurzeln modulo n genauso schwierig wie Faktorisierung von n). c) Was passiert, wenn ein Betrüger trotzdem das Protokoll mit B durchführt, um sich als A auszuweisen? Er kann nicht beide möglichen Fragen beantworten, denn kennt er r und rs, so auch s. Er hat also nur zwei Möglichkeiten: • Er wählt r wie vorgesehen und sendet x = r 2 mod n. Sendet B e = 0, so antwortet er r, korrekt. Sendet B e = 1, so kann er nicht antworten. • Er wählt y vor und sendet x = y 2 v −1 mod n. Bei e = 1 kann er jetzt korrekt antworten. Bei e = 0 müsste er die Wurzel von v bestimmen. Kann er nicht. Da er x angeben muss, bevor er e erhält, kann er mit einer Wahrscheinlichkeit von 21 richtig antworten. Nach k Wiederholungen ist die Wahrscheinlichkeit 21k , dass er immer richtig antwortet. Bei immer richtiger Antwort ist B mit einer Wahrscheinlichkeit von 1 − 21k überzeugt, dass A tatsächlich A ist. 10.5 Formalisierung der Zero-Knowledge-Eigenschaft Wir geben nur die Idee an (am Beispiel des Fiat-Shamir-Verfahrens). Für alle s sei Ts die Menge aller möglichen Transkripte von Protokollen, die zwischen einer ehrlichen A (welche also s kennt) und dem Verifizierer B möglich sind. Das Protokoll besitzt die Zero-Knowledge-Eigenschaft, falls folgendes gilt: Es existiert ein probabilistischer polynomialer Algorithmus S (der ‘Simulator‘), der zu jedem s Protokolltranskripte erzeugt. Sei die Menge dieser ‘gefälschten‘ Transkripte Fs . Dann ist Ts = Fs und für alle T ∈ Ts ist die Wahrscheinlichkeit, dass T als Transkript eines interaktiven Protokolls zwischen A und B erzeugt wird, gleich der Wahrscheinlichkeit, dass T von S 173 erzeugt wird. (Perfekte Zero-Knowledge-Eigenschaft) Was macht S bei Fiat-Shamir? Er wählt zufällig r und e. Für e = 0 berechnet er x = r 2 mod n und gibt (x, e, r) aus. Für e = 1 berechnet er x = r 2 v −1 mod n und gibt (x, e, r) aus. Näheres siehe Beutelspacher, Neumann, Schwarzpaul [9], Kapitel 16, Goldreich [24], Kapitel 4, Mao [38], Kapitel 18 oder Wätjen [48], Kapitel 11. 174 (∗) 11 Anonymität Bei jeder Kommunikation, insbesondere auch im Internet, gibt es verschiedene Formen von Anonymität, die in gewissen Situationen wünschenswert sind: • Senderanonymität (z.B. bei elektronischen Wahlen) • Empfängeranonymität (z.B. bei gewissen Chiffre-Anzeigen) • Kommunikationsanonymität (Die Tatsache, dass A und B miteinander kommunizieren, soll vor den anderen Systemteilnehmern geheim gehalten werden.) Sämtliche dieser drei Typen lassen sich bei elektronischer Kommunikation durch sog. MIXe erreichen. Die Idee geht auf D. Chaum (1981) zurück. 11.1 MIX Was macht ein MIX? Dies ist ein Rechner im Netz, der innerhalb eines gewissen Zeitintervalls die an ihn gesendeten Nachrichten sammelt, sie in der Reihenfolge mischt und sie nach einer gewissen Zeit weitersendet. Der MIX hat einen öffentlichen Schlüssel EM IX und einen geheimen Schlüssel DM IX zu einem Public-Key-Verfahren. Wir beschreiben nun, wie mit Hilfe eines MIX verschiedene Formen von Anonymität realisiert werden können. a) Kommunikationsanonymität durch MIX A will B eine Nachricht m senden, diese Kommunikation aber geheim halten. Dies geschieht in folgenden Schritten: (1) A verschlüsselt m zu c = Ek (m), so dass nur B sie entschlüsseln kann (z.B. mit dem öffentlichen Schlüssel von B oder einem gemeinsamen Schlüssel eines symmetrischen Verfahrens). Dieser Schritt kann auch entfallen, wenn m nicht geheim gehalten werden muss (insbesondere nicht vor MIX); dann ist c = m. (2) A bildet (IB , c), wobei IB die Adresse von B ist. 175 (3) A verschlüsselt dies mit dem öffentlichen Schlüssel von MIX, EM IX (IB , c), und sendet dies an MIX. (4) MIX öffnet mit seinem geheimen Schlüssel DM IX diese Nachricht und erhält (IB , c). (5) Da MIX die Adresse IB von B kennt, sendet er c an B. (6) B entschlüsselt c zu m (entfällt, falls c = m). Die Kommunikationsanonymität wird gewährleistet, wenn in einem Zeitraum genügend viele Nachrichten bei MIX eintreffen. Da er diese während dieses Zeitraums sammelt und sie dann in einer anderen Reihenfolge als der ihres Eingangs (‘Mischen‘) an die jeweiligen Empfänger weitersendet, kann ein Angreifer, der diese Sendevorgänge beobachtet, nicht feststellen, welche Teilnehmer miteinander kommunizieren. b) Kommunikations- und Senderanonymität durch MIX Senderanonymität wird schon durch Protokoll a) geleistet, wenn A keinen Hinweis auf seine Identität in die Nachricht einbaut. B kann dann nicht feststellen, von wem die Nachricht kommt. Andererseits kann B dann auch nicht antworten. Diese Möglichkeit lässt sich trotz Senderanonymität durch das folgende Verfahren erreichen: (1) A sendet EM IX (m, EM IX (IA ), IB ) an MIX (evtl. auch Ek (m) statt m); dabei ist IA die Adresse von A und EM IX (A) fungiert als anonyme Rückadresse. (2) MIX öffnet mit DM IX diese Nachricht und sendet (m, EM IX (IA )) an B. (3) B sendet als Antwort EM IX (m′ , EM IX (IA )) an MIX. (4) MIX öffnet diese Nachricht und dann EM IX (IA ) und sendet m′ an A. c) Kommunikations- und Empfängeranonymität durch MIX B richtet ein ‘Postfach‘ im MIX ein: EM IX (IB ). B gibt EM IX (IB ) bekannt (senderanonym), ggf. zusammen mit einer Nachricht. Will A an (den anonymen) B eine Nachricht m senden, so sendet er EM IX (m, EM IX (IB )) an MIX. MIX öffnet und sendet m an B. 176 d) Vertrauen in MIX MIX ist die einzige Instanz in obigen Protokollen, die alle Kommunikationsbeziehungen rekonstruieren kann. MIX ist also eine Vertrauensinstanz. Dies lässt sich abschwächen durch ein Kaskadenmodell : Es handelt sich hierbei um ein Kommunikationsnetz mit verschiedenen MIXen. A wählt dann eine Kette (Kaskade) von MIXen, über die sie eine Nachricht an B schickt. Arbeitet nur ein MIX dieser Kette korrekt, so ist die Kommunikation anonym. e) Kryptographische Sicherheit eines MIX Wesentlich bei den dargestellten Verfahren ist, dass das Public-Key-System von MIX (mit dem also EM IX gebildet wird) nicht deterministisch ist; RSA kommt also nicht in Frage, ElGamal jedoch schon. Der Grund ist, dass bei festem öffentlichen Schlüssel von MIX ein Klartext bei mehrfacher Verschlüsselung unterschiedlich verschlüsselt werden muss. Sonst könnte nämlich ein Angreifer alle ausgehenden Nachrichten mit EM IX verschlüsseln, mit den eingegangenen Nachrichten vergleichen und die Zuordnung rekonstruieren. MIXe werden z.B. für elektronische Wahlen eingesetzt; Einzelheiten dazu findet man z.B. in Wätjen [48, 10.6]. 11.2 Blinde Signaturen Es gibt Situationen, wo (um Anonymität zu erreichen) ein Dokument von B signiert werden soll, ohne dass B den Inhalt des Dokuments kennt. Möglich ist das mit sogenannten blinden Signaturen, ein Konzept, das ebenfalls von D. Chaum (1981) stammt. Wir beschreiben das Verfahren einer blinden Signatur mit Hilfe des RSAVerfahrens: Ziel: A will eine Nachricht m von B signiert erhalten, ohne dass B die Nachricht m kennt. B habe öffentlichen Schlüssel (e, n) und geheimen Schlüssel d. (1) A wählt zufällig r mit ggT(r, n) = 1 und bildet t = r e · m mod n. (2) A lässt t von B signieren: td mod n = r · md mod n. (3) A bildet r −1 mod n (beachte ggt(r, n) = 1). Dann ist r −1 td mod n = md mod n die Signatur von m durch B. 177 Wenn r zufällig gleichverteilt aus Z∗n gewählt wird, so ist auch r e mod n zufällig gleichverteilt aus Z∗n . B hat also keine Möglichkeit aus der Kenntnis von t = r e · m mod n auf m zu schließen. 11.3 Anwendung: Elektronische Münzen a) Jedes Münzsystem muss folgende Forderungen erfüllen: 1. Jeder muss die Echtheit des Geldes anhand von Sicherheitsmerkmalen verifizieren können. 2. Geld muss fälschungssicher sein, d.h. es darf nur von einer autorisierten Bank ausgestellt werden können. 3. Geldmünzen sind anonym, d.h. sie geben keine Informationen über den Besitzer preis. b) Konstruktion eines digitalen Münzsystems (nach D. Chaum, 1985) Für jeden Münzwert gibt die Bank B einen öffentlichen Schlüssel pB (also bei Verwendung von RSA (e, n)) bekannt und ein sog. ‘Redundanzschema‘. Daten, die nach diesem Redundanzschema gebildet sind und von der Bank signiert sind, sind gültige Münzen zu dem gegebenen Wert. Das Redundanzschema könnte z.B. folgendermaßen aussehen: A wählt zufällig einen String v von gewisser Länge und bildet die Konkatenation m = v|v. m wird von der Bank blind signiert: t = sB (m) (im Fall von RSA also t = md mod n, wobei d der geheime Schlüssel zu (e, n) ist). t ist die Münze. (Vorher muss sich A gegenüber der Bank authentifizieren; die Bank bucht dann den Gegenwert der ausgestellten Münze(n) von ihrem Konto ab.) Sind die Forderungen 1. - 3. aus a) erfüllt? 1. Echtheit: pB (t) = m erfüllt das Redundanzschema. Wenn nicht von B signiert wurde, wird das nicht der Fall sein. 2. Fälschungssicherheit: Niemand kann Münzen selbst herstellen. Man benötigte dazu ein y, so dass pB (y) (also y e mod n) das Redundanzschema erfüllt. Das lässt sich ohne Kenntnis des geheimen Schlüssels 178 der Bank (also d) nicht bewerkstelligen. Man beachte: Es hilft nichts, wenn y das Redundanzschema erfüllt; PB (y) = y e mod n wird das Redundanzschema fast sicher nicht erfüllen. 3. Anonymität: Die Bank B weiß nicht, welche Münze sie an A ausgegeben hat (wegen blinder Signatur). Sie weiß nur, dass sie eine an A ausgegeben hat. A kann die Münze zur Bezahlung verwenden. Der Empfänger C kann sich von der Echtheit der Münze überzeugen. Er reicht sie bei der Bank ein und bekommt den Gegenwert gutgeschrieben. c) Nachteile des Systems: Wenn A eine Münze durch die Bank ausgestellt bekommen hat, kann er sie beliebig oft kopieren. Ein Empfänger C kann nicht entscheiden, ob es sich um das Original oder eine Kopie handelt. Er muss daher vor Beendigung der Transaktion mit A bei der Bank nachfragen, ob die Münze ein Original ist, d.h. nicht schon einmal eingereicht wurde. Man spricht daher von einem Online-Münzsystem. Dazu benötigt die Bank aber ein Verzeichnis aller eingelösten Münzen, was mit einem sehr großen Aufwand verbunden ist. Es gibt auch Offline-Münzsysteme, bei denen die Bank die Identität von A aufdecken kann, wenn eine Münze zweimal eingereicht wird. Ein weiteres Problem ist, dass Geld aus Erpressungen oder Geldwäsche nicht zurückverfolgt werden kann. Um diesem Problem zu begegnen, sind auch geeignete Verfahren entwickelt worden (z.B. von Frankel, Tsiounis, Yung, 1998), auf die wir aber hier nicht weiter eingehen. 179 (∗) 12 Secret Sharing Schemes Secret Sharing Schemes sind wesentlicher Bestandteil vieler sog. Multiparty Computations. Darunter versteht man Verfahren, bei denen eine gewisse Anzahl von Teilnehmern mit ihren Eingaben ein korrektes Ergebnis einer gewissen Berechnung erzeugen (dieses Ergebnis kann, je nach Anwendungsfall, den Teilnehmern zumindest teilweise bekannt werden oder auch nicht), aber kein Teilnehmer erfährt etwas über die Eingabe der übrigen Teilnehmer. Bei Secret Sharing Schemes wird ein Geheimnis auf mehrere Personen verteilt (Teilgeheimnisse), so dass gewisse Teilgruppen der Personen das Geheimnis rekonstruieren können, alle anderen Teilgruppen aber nicht. Ein solches Szenario hat vielfältige Anwendungen, z.B. bei Zugangskontrollen, digitalen Signaturen durch mehrere Personen etc. Die genauere Definition von Secret Sharing Schemes beruht auf dem Begriff der Zugriffsstruktur: 12.1 Definition (Zugriffsstruktur) Sei T eine Menge von Teilnehmern. Eine Zugriffsstruktur Z auf T ist eine Menge von Teilmengen von T , d.h. Z ⊆ P(T ). Die Teilmengen von T , die in Z liegen, heißen zulässige Konstellationen, die anderen unzulässige Konstellationen. Bsp.: T = {1, 2, 3, 4}, Z = {{1, 2}, {1, 3, 4}, {2, 3}} Wir nehmen im Folgenden o.B.d.A. an, dass jeder Teilnehmer in mindestens einer zulässigen Konstellation enthalten ist. Wir geben jetzt eine informelle Definition von Secret Sharing Schemes, die für unsere Zwecke ausreicht. Eine genaue Definition findet man z.B. in Stinson [45, 13.2.2]. 12.2 Definition (Secret Sharing Schemes) Seien T und Z wie in 12.1. Sei g ein Geheimnis. (g stammt in der Regel aus einer Menge von möglichen Geheimnissen, z.B. den möglichen geheimen Schlüsseln für eine digitale Signatur.) 180 In einem Secret Sharing Scheme werden an die Teilnehmer durch eine vertrauenswürdige Instanz (Dealer ) Elemente einer Menge S verteilt (Teilgeheimnisse, shadows), so dass folgende beiden Bedingungen erfüllt sind: (1) Jede zulässige Konstellation von Teilnehmern kann mit Hilfe ihrer Teilgeheimnisse das Geheimnis g bestimmen. (2) Jede unzulässige Konstellation kann das nicht. Das Secret Sharing Scheme heißt perfekt, falls jede unzulässige Konstellation mit ihren Teilgeheimnissen soviel über g erfährt wie ohne diese. Wir betrachten zunächst einen wichtigen Spezialfall von Secret Sharing Schemes. 12.3 Definition (Schwellenwertsystem) Sei T eine Menge von Teilnehmern T = {1, . . . , n}. Sei k ≤ n. Sei Z die Zugriffsstruktur, die aus allen Teilmengen von T besteht, die mindestens k Teilnehmer enthalten: Z = {U ⊆ T : |U| ≥ k} Ein Secret Sharing Scheme zu dieser Zugriffsstruktur heißt (k, n)-Schwellenwertsystem (threshold system). 12.4 Shamirs Konstruktion eines perfekten Schwellenwertsystems Gegeben sei T mit |T | = n, 2 ≤ k ≤ n. Vorgegeben wird eine große Primzahl p (die das Sicherheitsniveau festlegt; siehe unten). In jedem Fall muss p ≥ n + 1 gelten. Das Geheimnis g sei ein Element aus Zp . Der Dealer wählt zufällig a1 , . . . , ak−1 ∈ Zp , ak−1 6= 0 und bildet f (x) = g + a1 x + · · · + ak−1 xk−1 ∈ Zp [x], ein Polynom vom Grad k−1. a1 , . . . , ak−1 und natürlich auch g hält er geheim. Der Dealer wählt ferner zufällig paarweise verschiedene x1 , . . . , xn ∈ Z∗p . Diese 181 werden öffentlich gemacht. Der Teilnehmer i erhält als Teilgeheimnis gi = f (xi ). Zur Rekonstruktion von g müssen k Teilnehmer kooperieren, etwa i1 , . . . , ik . Durch (xi1 , gi1 ), . . . , (xik , gik ) ist das Polynom f eindeutig bestimmt. Man kann es z.B. durch Lagrange-Interpolation berechnen: f (x) = k X j=1 (x − xi1 ) · · · (x − xij−1 )(x − xij+1 ) · · · (x − xik ) · gij (xij − xi1 ) · · · (xij − xij−1 )(xij − xij+1 ) · · · (xij − xik ) Dann ist g = f (0). Man kann g natürlich auch direkt berechnen, indem man gleich x = 0 in obige Formel für f (x) einsetzt: ! k X Y xi l g= gij · xil − xij j=1 l6=j (Alle Rechnungen sind in Zp, d.h. mod p durchzuführen.) Wenn mehr als k Teilnehmer kooperieren, etwa e k, so liefert die LagrangeInterpolation ebenfalls f , da alle Punkte auf dem Graph von f liegen. Genauer: Sei fe das von den e k Teilnehmern interpolierte Polynom vom Grad e e ≤ k − 1, so hat f − f Nullstellen xi1 , . . . , xiek , die paarweise verschieden sind. Da der Grad des Polynoms fe − f höchstens e k − 1 ist, ist fe − f = 0, d.h. fe = f . k ′ < k Teilnehmer können g mit hoher Wahrscheinlichkeit nicht bestimmen: Sie interpolieren mit ihren Punkten (xi1 , gi1 ), . . . , (xik′ , gik′ ) ein Polynom vom Grad ≤ k ′ −1. Nun gibt es, wie man mit Hilfe der Vandermonde-Determinante nachrechnen kann, für jedes h ∈ Zp gleich viele Polynome vom Grad ≤ k ′ − 1, die durch (xi1 , gi1 ), . . . , (xik′ , gik′ ) gehen und an der Stelle 0 den Wert h haben. Werden also (xi1 , gi1 ), . . . , (xik′ , gik′ ) zu Beginn gleichverteilt zufällig gewählt, so ist die Wahrscheinlichkeit 1p , dass die k ′ Teilnehmer das richtige Geheimnis rekonstruieren. Dies ist dieselbe Wahrscheinlichkeit, ohne Kenntnis der Teilgeheimnisse das Geheimnis zu raten. Das Shamirsche Schwellenwertsystem ist also perfekt. Wir betrachten jetzt noch eine allgemeinere Form von Zugriffsstrukturen, durch die die meisten in Anwendungen auftretenden Fälle abgedeckt sind: 182 12.5 Definition (monotone Zugriffsstruktur) Eine Zugriffsstruktur Z ⊆ P(T ) heißt monoton, falls gilt: Ist U ∈ Z, U ⊆ V ⊆ T , so ist V ∈ Z. Klar: Zugriffsstrukturen von Schwellenwertsystemen sind monoton, aber der Monotoniebegriff ist natürlich allgemeiner. Auch für beliebige monotone Zugriffsstrukturen lassen sich Secret Sharing Schemes konstruieren. Es gibt eine Vielzahl von Konstruktionsverfahren. Wir beschreiben hier eines, das Methoden der linearen Algebra benutzt und auf G. Simmons (1991) zurückgeht. 12.6 Monotone Secret Sharing Schemes nach Simmons Die Konstruktion von Simmons beruht auf folgendem Lemma Sei Y ein d-dimensionaler Vektorraum, v1 , . . . , vd eine Basis von Y . Dann existiert vd+1 ∈ Y , so dass v1 , . . . , vi−1 , vi+1 , . . . , vd+1 eine Basis von Y ist für alle i = 1, . . . , d + 1. Beweis: Pd Wir zeigen, dass jedes vd+1 = i=1 ai vi mit ai 6= 0 für alle i (also z.B. vd+1 = v1 + · · · + vd ) die Behauptung des Lemmas erfüllt: Aus Symmetriegründen genügt es, die Behauptung für iP = 1 zu zeigen. Angenommen, v2 , . . . , vd , vd+1 sind linear abhängig. Sei d+1 j=2 bj vj = 0, nicht alle bj = 0. Wäre bd+1 = 0, so wären v2 , . . . , vd linear abhängig, Widerspruch zurPVoraussetzung. Also ist bd+1 6= 0. Dann ist a1 v1 + · · · + ad vd = vd+1 = bj − dj=2 bd+1 vj , also a1 v1 ∈ hv2 , . . . , vd i. Wegen a1 6= 0 ist dann auch v1 ∈ hv2 , . . . , vd i, ein Widerspruch zur Voraussetzung. Damit ist die Behauptung gezeigt. Wir beschreiben jetzt das Simmons-Verfahren: (1) Sei T = {t1 , . . . , tn } die Teilnehmermenge, Z ⊆ P(T ) eine monotone Zugriffsstruktur. Sei U = P(T ) \ Z die Menge der unzulässigen Konstellationen, Umax = {U ∈ U : U 6⊆ U ′ für alle U ′ ∈ U} 183 die Menge der maximal unzulässigen Konstellationen. Sei d = |Umax |, Umax = {U1 , . . . , Ud }. Sei p eine große Primzahl (p bestimmt das Sicherheitsniveau), V ein (d + 1)-dimensionaler Zp -Vektorraum (V = Zd+1 p ). Wähle in V – einen 2-dimensionalen Unterraum X; dies ist der (öffentlich bekannte) sog. Geheimnisraum; – in X einen 1-dimensionalen Unterraum G = hwi, das Geheimnis; – einen d-dimensionalen Unterraum Y von V mit Y ∩ X = G; – Vektoren y1 , . . . , yd in Y , so dass je d Vektoren aus y1 , . . . , yd , w linear unabhängig sind (also eine Basis von Y bilden); dies geht, indem man w zu einer Basis y2 , . . . , yd , w von Y ergänzt und auf diese das obige Lemma anwendet, um y1 zu erhalten. (2) Verteilung der Teilgeheimnisse: Sei t ein beliebiger Teilnehmer aus {t1 , . . . , tn }. Sei t 6∈ Ui1 , . . . , Uir und t ∈ Uj für alle j ∈ {1, . . . , d} \ {i1 , . . . , ir }. Dann erhält t als Teilgeheimnismenge {yi1 , . . . , yir }. (Ggf. erhält t die leere Menge, wenn er in allen Uj enthalten ist.) (3) Rekonstruktion (bzw. Versuch der Rekonstruktion) des Geheimnisses durch eine Menge S von Teilnehmern: Die Teilnehmer aus S bilden den von ihren Vektoren erzeugten Unterraum und bilden dessen Durchschnitt mit X. 1. Fall: Die Teilnehmermenge S ist zulässig (d.h. S ∈ Z): Dann S 6⊆ Ui für alle i = 1, . . . , d, denn Teilmengen unzulässiger Mengen sind unzulässig wegen der Monotonie von Z. Sei i ∈ {1, . . . , d}. Dann existiert ein Teilnehmer t in S, t 6∈ Ui . Daher kommt yi unter den Teilgeheimnissen von t vor. Da dies für alle i gilt (jedes Mal evtl. mit einem anderen Teilnehmer aus S), ist die Menge aller Teilgeheimnisse der Teilnehmer aus S die Menge {y1 , . . . , yd}. Es ist hy1, . . . , yd i = Y und Y ∩ X = G. Die Teilnehmermenge S kann also das Geheimnis G bestimmen. 2. Fall: Die Teilnehmermenge S ist unzulässig: Dann existiert ein j mit S ⊆ Uj . Also kommt yj nicht unter den Teilgeheimnissen der Teilnehmer in S vor. Folglich ist der von den Teilnehmern in S mit ihren Teilgeheimnissen erzeugte Unterraum Y0 in 184 hy1 , . . . , yj−1, yj+1, . . . , ydi enthalten. Es ist Y0 ∩X ⊆ Y ∩X = hwi. Angenommen, w ∈ Y0 ∩X ⊆ hy1, . . . , yj−1, yj+1, . . . , yd i. Dann sind w, y1, . . . , yj−1, yj+1, . . . , yd linear abhängig, im Widerspruch zur Wahl in (1). Folglich ist Y0 ∩ X = {0}, und die Teilnehmer aus S erfahren nichts über G. 2 −1 Das Secret Sharing Scheme ist also perfekt. Da es pp−1 = p+1 1-dimensionale Unterräume in X gibt, ist bei zufälliger gleichverteilter 1 Wahl des Geheimnisses G die Wahrscheinlichkeit p+1 , dieses zu raten. Beispiel: Sei T = {1, 2, 3, 4}, Z = {{2, 4}, {1, 2, 4}, {1, 3, 4}, {2, 3, 4}, {1, 2, 3, 4}}. Z ist monoton. Die maximal unzulässigen Mengen sind U1 = {1, 2, 3}, U2 = {1, 4}, U3 = {3, 4}. Also ist d = 3 und V = Z4p . Sei e1 , e2 , e3 , e4 eine Basis von V, z.B. die kanonische. Wir wählen als Geheimnisraum X = he1 , e2 i und als Geheimnis G = he1 +e2 i. Wir setzen ferner Y = he1 + e2 , e3 , e4 i. Mit y1 = e1 + e2 + e3 + e4 , y2 = e3 , y3 = e4 und w = e1 + e2 sind die Bedingungen aus (1) erfüllt. Nun werden die Teilgeheimnisse verteilt: 1 6∈ U3 , also erhält 1 die Menge {e4 }; 2 6∈ U2 , U3 , also erhält 2 die Menge {e3 , e4 }; 3 6∈ U2 , also erhält 3 die Menge {e3 }; 4 6∈ U1 , also erhält 4 die Menge {e1 + e2 + e3 + e4 }. Wir überprüfen jetzt den Rekonstruktionsprozess an zwei Beispielen: Sei S = {2, 3, 4}. S ist also zulässig. Der von 2, 3, 4 mit ihren Teilgeheimnissen erzeugte Unterraum ist Y0 = he3 , e4 , e1 + e2 + e3 + e4 i = he3 , e4 , e1 + e2 i. Es ist Y0 ∩ X = he1 + e2 i = G. Das Geheimnis wird rekonstruiert. Sei S = {1, 2, 3}. S ist unzulässig. Der von 1, 2, 3 mit ihren Teilgeheimnissen erzeugte Unterraum ist Y0 = he3 , e4 i. Es ist Y0 ∩ X = {0}, d.h. das Geheimnis wird nicht rekonstruiert. 185 Literatur [1] Charlisle Adams and Steve Lloyd. Understanding Public-Key Infrastructure. Technology Series. New Riders Publishing, Indianapolis, USA, 2 edition, 1999. [2] Leonard Adleman, Ronald L. Rivest and Adi Shamir. On Digital Signatures and Public Key Cryptosystems. MIT Laboratory for Computer Science Technical Memorandum, (82), April 1977. [3] William R. Alford, Andrew Granville and Carl Pomerance. There are infinitely many Carmichael numbers. Annals of Mathematics, (140):703– 722, 1994. [4] Doris Baker and H. X. Mel. Cryptography decrypted. Addison Wesley, Boston, 2001. [5] Friedrich L. Bauer. Entzifferte Geheimnisse. Springer, 3. Auflage, 2000. [6] Friedrich L. Bauer. Mathematik besiegte in Polen die unvernünftig gebrauchte ENIGMA - Teil 1. Informatik Spektrum, 28(6):493–497, 2005. [7] Friedrich L. Bauer. Mathematik besiegte in Polen die unvernünftig gebrauchte ENIGMA - Teil 2. Informatik Spektrum, 29(1):53–60, 2006. [8] Henry Beker and Fred Piper. Cipher Systems: The protection of communications. Northwood Books, London, 1982. [9] Albrecht Beutelspacher, Heike B. Neumann und Thomas Schwarzpaul. Kryptographie in Theorie und Praxis. Vieweg, Braunschweig, 2005. [10] Albrecht Beutelspacher, Jörg Schwenk und Klaus-Dieter Wolfenstetter. Moderne Verfahren der Kryptologie. Vieweg, Braunschweig, 4. Auflage, 2001. [11] Eli Biham and Adi Shamir. Differential Cryptanalysis of DES-like Cryptosystems. Journal of Cryptology, 4(1):3–72, 1991. [12] Eli Biham and Adi Shamir. Differential Cryptanalysis of the Data Encryption Standard. Springer, 1993. [13] Alex Biryukov, Christophe de Cannière and Bart Preneel. An Introduction to Block Cipher Cryptanalysis. Proceedings of the IEEE, 94(2):346– 356, 2006. 186 [14] Leonore Blum, Manuel Blum and Mike Shub. A Simple Unpredictable Random Number Generator. SIAM Journal on Computing, (15):364– 383, 1986. [15] Johannes Buchmann. Einführung in die Kryptographie. Springer, Berlin, 2. Auflage, 2001. [16] Steve Burnett and Stephen Paine. Kryptographie. mitp, Bonn, 2001. [17] Komaravolu Chandrasekharan. Einführung in die analytische Zahlentheorie. Lecture notes in mathematics 29, Springer, Berlin, 1966. [18] Don Coppersmith. The data encryption standard (DES) and its strength against attacks. IBM Journal of Research and Development, 38(3):243– 250, 1994. [19] Richard Crandall and Carl Pomerance. Prime Numbers - A Computational Perspective. Springer, New York, 2001. [20] Joan Daemen and Vincent Rijmen. The Design of Rijndael. AES - The Advanced Encryption Standard. Springer, Berlin, 2002. [21] Hans Delfs and Helmut Knebl. Introduction to Cryptography. Springer, Berlin, Heidelberg, 2002. [22] Whitfield Diffie and Martin E. Hellman. New Directions in Cryptography. IEEE Transactions on Information Theory, 22:644–654, 1976. [23] Wolfgang Ertel. Angewandte Kryptographie. Fachbuchverl. Leipzig im Carl-Hanser-Verl., München, 2001. [24] Oded Goldreich. Foundations of Cryptography, Vol. 1 - Basic Tools. Cambridge University Press, Cambridge, 2001. [25] Oded Goldreich. Foundations of Cryptography, Vol. 2 - Basic Applications. Cambridge University Press, Cambridge, 2004. [26] Max Goldt. Quitten für die Menschen zwischen Emden und Zittau. Haffmans Verlag, Zürich, 1993. [27] Thomas Hardjono, Josef Pieprzyk and Jennifer Seberry. Fundamentals of Computer Security. Springer, Berlin, 2003. [28] Peter Hauck. Primzahltests und Faktorisierungsalgorithmen. Vorlesungsskript, Universität Tübingen, SS 2007. 187 [29] Andrew Hodges. Alan Turing: the Enigma. Simon Schuster, New York, 1983. [30] Patrick Horster. Kryptologie. Bibliographisches Institut, Mannheim, 1985. [31] David Kahn. The Codebreakers. MacMillan, New York, 1967. [32] David Kahn. Seizing the Enigma. Houghton Miffin, Boston, 1991. [33] Jonathan Katz and Yehuda Lindell. Introduction to Modern Cryptography. Chapman & Hall/CRC, Boca Raton, 2008. [34] Donald E. Knuth. The Art of Computer Programming, volume 2. Addison Wesley, Reading, Mass., 2 edition, 1998. [35] Neal Koblitz. A course in number theory and cryptography. Springer, New York, 2 edition, 1994. [36] Neal Koblitz. Algebraic aspects of cryptography. Springer, Berlin u.a., 2 edition, 1999. [37] Rudolf Lidl and Harald Niederreiter. Introduction to finite fields and their applications. Cambridge University Press, Cambridge, 1986. [38] Wenbo Mao. Modern Cryptography - Theory and Praxis. Prentice Hall, 2004. [39] Alfred J. Menezes, Paul C. van Oorschot and Scott A. Vanstone. Handbook of Applied Cryptography. CRC Press, London, 1997. [http://www.cacr.math.uwaterloo.ca/hac/]. [40] Michael Miller. Symmetrische Verschlüsselungsverfahren. Stuttgart/Leipzig/Wiesbaden, 2003. Teubner, [41] Hans Riesel. Prime Numbers and computer methods for factorizations. Birkhäuser, Boston, 2 edition, 1994. [42] Klaus Schmeh. Kryptografie und Public-Key-Infrastrukturen im Internet. dpunkt, Heidelberg, 2. Auflage, 2001. [43] Bruce Schneier. Angewandte Kryptographie. Addison Wesley, Bonn u.a., 1997. [44] Jörg Schwenk. Sicherheit und Kryptographie im Internet. Vieweg, Wiesbaden, 2002. 188 [45] Douglas Stinson. Cryptography - Theory and Praxis. Hall/CRC, Boca Raton, 3 edition, 2006. Chapman & [46] Wade Trappe and Lawrence C. Washington. Introduction to Cryptography with Coding Theory. Prentice Hall, New Jersey, 2002. [47] Serge Vaudenay. A Classical Introduction to Cryptography: Applications for Communications Security. Springer, New York, 2006. [48] Dietmar Wätjen. Kryptographie - Grundlagen, Algorithmen, Protokolle. Spektrum Akademischer Verlag, 2004. [49] Michael Welschenbach. Kryptographie in C und C++. Springer, Berlin u.a., 2. Auflage, 2001. [50] Michael J. Wiener. Cryptanalysis of short RSA secret exponents. IEEE Transactions on Information Theory, 36(3):553–558, 1990. 189