Kryptologie und Datensicherheit - Diskrete Mathematik
Transcription
Kryptologie und Datensicherheit - Diskrete Mathematik
Universität Tübingen Wilhelm-Schickard-Institut Arbeitsbereich Diskrete Mathematik Leitung: Prof. Dr. Peter Hauck Vorlesung WS 2002/2003 Stand: 15. Juni 2007 Kryptologie und Datensicherheit Herstellung der TeX-Fassung des Vorlesungsskripts: Jürgen Sommer Inhaltsverzeichnis 1 Grundbegriffe 9 2 Klassische symmetrische Verschlüsselungsverfahren 2.1 14 Substitutionschiffren . . . . . . . . . . . . . . . . . . . . . . . 15 2.1.a Monoalphabetische Substitutionschiffren . . . . . . . . 15 2.1.b Homophone Substitutionschiffren . . . . . . . . . . . . 16 2.1.c Kryptoanalyse monoalphabetischer und homophoner Substitutionschiffren . . . . . . . . . . . . . . . . . . . 18 2.1.d Polyalphabetische Verschlüsselungen und Lauftextverschlüsselungen . . . . . . . . . . . . . . . . 24 2.1.e Kryptoanalyse periodischer polyalphabetischer Verschlüsselungen . . . . . . . . . . . . . . . . . . . . . 30 2.2 Transpositionschiffren . . . . . . . . . . . . . . . . . . . . . . . 38 2.3 Affin lineare Chiffren . . . . . . . . . . . . . . . . . . . . . . . 42 2.3.a Lineare Algebra über kommutativen Ringen . . . . . . 42 2.3.b Affin lineare Blockchiffren . . . . . . . . . . . . . . . . 44 3 Blockchiffren und ihre Betriebsarten 47 3.1 Allgemeine Vorbemerkungen . . . . . . . . . . . . . . . . . . . 47 3.2 Feistel-Chiffren . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3.3 Eine vereinfachte Version des DES-Algorithmus . . . . . . . . 52 3.4 Der ’Data Encryption Standard’ DES 3.5 Andere Blockchiffren . . . . . . . . . . . . . . . . . . . . . . . 74 3.6 Der Advanced Encryption Standard (AES) Das Rijndael-Verfahren . . . . . . . . . . . . . . . . . . . . . . 75 3.7 Betriebsarten von Blockchiffren . . . . . . . . . . . . . . . . . 85 2 . . . . . . . . . . . . . 66 4 Stromchiffren und Pseudozufallsfolgen 89 4.1 Synchrone Stromchiffren . . . . . . . . . . . . . . . . . . . . . 89 4.2 Selbstsynchronisierende (asynchrone) Stromchiffren . . . . . . 90 4.3 Schieberegister . . . . . . . . . . . . . . . . . . . . . . . . . . 92 4.4 Lineare Schieberegister . . . . . . . . . . . . . . . . . . . . . . 93 4.5 Lineare Komplexität und Bestimmung von Schieberegisterfolgen aus Teilfolgen . . . . . . . . . . . . . . . . . . . . . . . 96 4.6 Schieberegister zur Schlüsselstromerzeugung . . . . . . . . . . 98 4.7 Andere Stromchiffren . . . . . . . . . . . . . . . . . . . . . . . 101 4.8 Pseudozufallsfolgen . . . . . . . . . . . . . . . . . . . . . . . . 102 4.9 4.8.a Die Golomb-Postulate . . . . . . . . . . . . . . . . . . 102 4.8.b Statistische Tests . . . . . . . . . . . . . . . . . . . . . 105 4.8.c Kolmogorov-Komplexität . . . . . . . . . . . . . . . . . 110 4.8.d Kryptographisch sichere Pseudozufallsfolgen . . . . . . 110 Kryptographisch sichere Pseudozufallszahlen-Generatoren und Einwegfunktionen . . . . . . . . . . . . . . . . . . . . . . 115 4.10 Die Frage nach der Existenz von Einwegfunktionen . . . . . . 119 5 Public-Key-Kryptographie 121 5.1 Die Grundidee . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 5.2 Modulare Potenzen und das RSA-Verfahren . . . . . . . . . . 122 5.3 Sicherheit des RSA-Verfahrens . . . . . . . . . . . . . . . . . . 128 5.4 Effizienz des RSA-Verfahrens 5.5 Primzahltests . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 5.6 Diskrete Logarithmen und das Schlüsselaustauschverfahren von Diffie und Hellman . . . . . . . . . . . . . . . . . . . . . . 137 5.7 Sicherheit des Diffie-Hellman-Verfahrens . . . . . . . . . . . . 139 3 . . . . . . . . . . . . . . . . . . 134 5.8 Das ElGamal-Verschlüsselungsverfahren . . . . . . . . . . . . . 140 5.9 Erweiterungen der Diffie-Hellman und ElGamal-Verfahren . . 142 5.10 Modulares Quadrieren, das Verfahren von Rabin und der Blum-Blum-Shub Pseudozufallsfolgengenerator . . . . . . . . . 143 6 Digitale Signaturen und kryptographische Hashfunktionen 145 6.1 Grundidee digitaler Signaturen . . . . . . . . . . . . . . . . . 145 6.2 Kryptographische Hashfunktionen . . . . . . . . . . . . . . . . 146 6.3 Signaturen mit Hashfunktionen . . . . . . . . . . . . . . . . . 150 6.4 RSA-Signaturen . . . . . . . . . . . . . . . . . . . . . . . . . . 151 6.5 ElGamal-Signatur . . . . . . . . . . . . . . . . . . . . . . . . . 153 6.6 Der Digital Signature Algorithm (DSA) . . . . . . . . . . . . . 156 6.7 Blinde Signaturen . . . . . . . . . . . . . . . . . . . . . . . . . 157 7 Authentifizierung und Zero-Knowledge-Beweise 159 7.1 Passwörter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 7.2 Challenge-Response-Authentifizierung . . . . . . . . . . . . . . 160 7.3 7.2.a Verwendung von symmetrischen Verschlüsselungsverfahren . . . . . . . . . . . . . . . . . . . . . . . . . 160 7.2.b Verwendung von Public-Key-Signaturverfahren . . . . 160 Zero-Knowledge-Beweise . . . . . . . . . . . . . . . . . . . . . 161 4 Abbildungsverzeichnis 1 Grundschema einer Verschlüsselung zwischen Alice und Bob . 2 Die Teildisziplinen Kryptographie und Kryptoanalyse . . . . . 12 3 Strom- vs Block-, Substitutions- vs Transpositionschiffre . . . 14 4 Zuordnung bei homophoner Substitutionschiffre . . . . . . . . 17 5 Glättung der Buchstabenhäufigkeiten bei VigenèreVerschlüsselung . . . . . . . . . . . . . . . . . . . . . . . . . . 26 6 Schematischer Signallaufplan ENIGMA . . . . . . . . . . . . . 28 7 Schematischer Ablauf einer Feistel-Chiffrierung . . . . . . . . . 50 8 Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 9 Vereinfachtes DES: Expansion, Rundenschlüsseladdition, Substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 10 Rundenschlüsselerzeugung . . . . . . . . . . . . . . . . . . . . 67 11 Schematische Darstellung der Berechnung von fKi (R) . . . . . 70 12 Schematischer Ablauf des Rijndael-Verfahrens . . . . . . . . . 80 13 Transformationen . . . . . . . . . . . . . . . . . . . . . . . . . 81 14 Verschlüsselung selbstsynchronisierender Stromchiffren . . . . 90 15 Entschlüsselung selbstsynchronisierender Stromchiffren . . . . 90 16 Rückgekoppeltes Schieberegister . . . . . . . . . . . . . . . . . 92 17 Binäres lineares Schieberegister der Länge n . . . . . . . . . . 93 18 Nichtlineare Kombination von linearen Schieberegistern . . . . 99 19 Nichtlineare Filtergeneratoren . . . . . . . . . . . . . . . . . . 100 20 Stop-and-Go-Generator . . . . . . . . . . . . . . . . . . . . . . 100 21 Wahrscheinlichkeitsfunktion p(X = i) der binomialverteilten Zufallsgröße X für n = 6 . . . . . . . . . . . . . . . . . . . . . 106 5 9 22 23 Ablehnungsbereich einer binären 0-1-Folge der Länge 20 hinsichtlich der Zufallsvariablen Anzahl der Einsen“ . . . . . 107 ” Wahrscheinlichkeitsfunktion der Zufallsvariablen X1 für n = 6 und n = 20 . . . . . . . . . . . . . . . . . . . . . . . . . 108 6 Tabellenverzeichnis 1 Häufigkeitsverteilung der Buchstaben in deutschsprachigen Texten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2 Häufigste Digramme in deutschsprachigen Texten . . . . . . . 19 3 Exemplarische Zeichenfolgeabstände, Ermittlung v. d nach Kasiski . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4 Teiltexte 1-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 5 Alle 8 Input- u. Output-Differenzen zu geg. A′ = (1010) u. S1 57 6 Alle 8 Input- u. Output-Differenzen zu geg. A′ = (0011) u. S1 57 7 Alle 8 Input- u. Output-Differenzen zu geg. A′ = (1011) u. S2 58 8 Alle 8 Input- u. Output-Differenzen zu geg. A′ = (1100) u. S2 58 9 Die 8 S-Boxen des DES, repräsentiert durch 8 4 × 16 Matrizen 69 7 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 Speichermedien) • aktive Beeinflussung (Fälschen 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 vier 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 des Senders der Nachricht gegenüber dem Empfänger, d.h. Empfänger kann sicher sein, dass die Nachricht nicht von einem anderen (unbefugten) Absender kommt.) • 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) 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 des Algorithmus. 8 Heute: Zivile Anwendungen noch wichtiger, insbesondere wegen des enormen Wachstums netzgestützter Kommunikation (Internet). Inhalt der Vorlesung • Klassische (symmetrische) Verschlüsselungsverfahren • Asymmetrische Verschlüsselungsverfahren (Public Key Systeme) • Kryptologische Hash-Funktionen • Digitale Signaturen und Authentifizierung • Zero-Knowledge Beweise 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). 9 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 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. Entschlüsselungsfunktion D: D(c, kd ) = m Ist kd = ke (oder lässt sich kd leicht aus ke bestimmen) so spricht man von symmetrischen Verschlüsselungsverfahren, ansonsten von asymmetrischen Verschlüsselungsverfahren. Die Gesamtheit aus Verschlüsselungsverfahren und aller Schlüssel wird Kryptosystem genannt. Beispiel: A = B = {0, 1, . . . 25} Verfahren: Verschiebeschiffre (Shift Cipher) Verschlüsselung: x ∈ A, 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 ∈ A, 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) 10 Ein Verschlüsselungsverfahren beinhaltet i.a. 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. Geheimgehalten werden muss der Schlüssel kd (d.h. bei symmetrischen Verfahren der gemeinsame Schlüssel). Das Verfahren lässt sich i.a. 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. 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 sog. 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). 11 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 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. • Globale Deduktion: Finden einer zu D(., kd ) äquivalenten Funktion ohne Kenntnis des Schlüssels. • 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). • Angriffe mit Gewalt, Bestechung, Erpressung o.ä. 12 Letztere Angriffe sind 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: • 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). 13 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 14 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. 2.1 Substitutionschiffren Eine Substitutionschiffre heißt monoalphabetisch, wenn jedes Klartextzeichen aus A immer auf dasselbe Chiffretextzeichen aus B abgebildet wird und diese Zuordnung injektiv ist. Ansonsten spricht man von polyalphabetischen Substitutionschiffren. 2.1.a Monoalphabetische Substitutionschiffren Wir nehmen der Einfachheit halber A = B an (keine wesentliche Einschränkung). |A| = n (z.B. n = 26, natürlichsprachiges Alphabet) Chiffrierverfahren: Anwendung einer Permutation σ von A 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 A = {a, b, . . . z} (bzw. A = {0, 1, . . . 25}). Sei A = {0, 1, . . . n − 1}. Häufig wird nicht die gesamte Schlüsselmenge benutzt. Verschiebechiffre1 : m → m + i mod n n verschiedene Schlüssel (nämlich alle i ∈ {0, 1, . . . n − 1}.) 1 s. Kap. 1 15 Tauschchiffren (affine Chiffre) sind eine Verallgemeinerung von Verschiebechiffren: m → am + b mod n, a, b ∈ {0, 1, . . . n − 1} Damit diese Zuordnung bijektiv ist, muss ggT (a, n) = 1 sein. (Z.B. n = 26, a = 2, b = 0 13 → 2 · 13 = 0 0 → 0 · 13 = 0) Damit hat man ϕ(n) Möglichkeiten für a und insgesamt n·ϕ(n) viele Schlüssel (a, b). n = 26 : 12 · 26 = 312 viele Schlüssel Beispiel: A= {0,1,. . .25} xx x x x codiere A= {a, b ,. . . z } m → 7m + 12 mod 26 codiere chif f riere decodiere TEXT −−−−→ 19, 4, 23, 19 −−−−−−→ 15, 14, 17, 15 −−−−−→ PORP 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 Tauschchiffren: Hier genügt die Identifikation eines bzw. zweier Buchstaben, um den Schlüssel zu knacken. Wir werden in Kürze auf die Kryptoanalyse monoalphabetischer Verfahren genauer eingehen. 2.1.b Homophone Substitutionschiffren Homophone Substitutionschiffren lassen sich als spezielle polyalphabetische Chiffren auffassen, also solche, in denen nicht jeder Klartextbuchstabe jeweils 16 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 a ∈ A eine Teilmenge f (a) ⊆ B des Chiffretextalphabets zuordnet. Forderung: a1 , a2 ∈ A, a1 6= a2 , so f (a1 ) ∩ f (a2 ) = ∅ . a1 . . . .f(a ) . . .f(a. ) .. . 1 a2 2 . . . .. an . . . .. . .f(a ) .. . . . . . . . n Abbildung 4: Zuordnung bei homophoner Substitutionschiffre Verfahren: Ein Klartext m = a1 a2 . . . wird chiffriert in c = c1 c2 . . ., wobei ci zufällig aus f (ai ) gewählt wird. Schlüssel: Abb. f , d.h. {f (a)|a ∈ A} (Dieses Verfahren wurde schon um 1400 in Italien verwendet.) Vorteil der homophonen Substitution: Die Häufigkeitsverteilung der Klartextbuchstaben wird zerstört. Ist a ∈ A und p(a) die Häufigkeit, in der a im Klartext auftaucht, wählt man f (a) so groß, dass p(a) ≈ c Konstante, unabhängig von a |f (a)| Man benötigt dazu ein großes Alphabet B. In einem Chiffretext treten dann alle Buchstaben aus ∪ f (a) etwa gleich a∈A oft auf. Damit ist keine direkte Häufigkeitsanalyse mehr möglich. Durch homophone Substitution ist es auch möglich, ein Chiffrierverfahren mit folgender Eigenschaft anzugeben: Zu jedem empfangenen Chiffretext c gibt 17 es (mindestens) zwei verschiedene Schlüssel, die c in zwei sinnvolle Klartexte dechiffrieren (Hammer 1981). Wir beschreiben kurz die Konstruktion: Chiffretextalphabet B = {1, . . . n2 } Klartextalphabet A, |A| = n K sei eine n × n - Matrix. Spalten und Zeilen seien mit den Elementen aus A (in gegebener Reihenfolge) indiziert. Einträge von K: Die natürlichen Zahlen von 1 . . . n2 (d.h. die Elemente von B) in zufälliger Anordnung (jede genau einmal). Definiere zwei homophone Substitutionen f1 , f2 : a∈A: f1 (a) = Menge der Zahlen in Zeile mit Index a f2 (a) = Menge der Zahlen in Spalte mit Index a Sei nun ein Klartext m = a1 a2 . . . ak zu verschlüsseln. Wähle einen anderen sinnvollen Klartext x = a′1 a′2 . . . a′k derselben Länge wie m. Verschlüssele m in c = c1 c2 . . . ck , wobei {ci } = f1 (ai ) ∩ f2 (a′i ) a′i ai ci .. . Unter Schlüssel f1 wird c in korrektes m dechiffriert, unter Schlüssel f2 wird c in sinnvolles, aber nicht korrektes x dechiffriert. Brute-Force-Angriffe sind damit wirkungslos, wenn der Angreifer nicht entscheiden kann, welcher der Texte m bzw. x der korrekte ist. (Beachte jedoch, dass hier alle f1 (a), a ∈ A gleich groß sind, ebenso alle f2 (a), a ∈ A). 2.1.c Kryptoanalyse monoalphabetischer und homophoner Substitutionschiffren Die Kryptoanalyse monoalphabetischer und homophoner Substitutionschiffren beruht auf der Häufigkeitsanalyse von Chiffretextzeichen bzw. -digrammen (Digramm: Paar aufeinander folgender Zeichen). 18 Natürliche Sprachen haben eine charakteristische Häufigkeitsverteilung von Buchstaben und Digrammen (siehe Tabellen 1 u. 2). 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 en er ch de te nd ei ie in es Häufigkeit (unter den 262 = 676 Paaren) jeweils 3,5 - 4,5 % 2,5 - 3 % 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). 19 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 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 - Buchstabenhäufigkeiten im Chiffretext Im Chiffretext sind 503 Digramme enthalten. Aus der Buchstabenhäufigkeit entnimmt man: K wird dechiffriert zu E. 20 Häufigkeit 2,90% 2,40% 2,30% 1,80% 1,50% 1,30% 1,30% 0,50% 0,20% 0,20% 0,20% - 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 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: 21 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 F G H I J K L (M) Klartext G V W C M K Q Z T L E J Chiffretext N O P Q (R) S T U V W X Y Z Klartext O A U D 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 2 aus: M. Goldt, Quitten für die Menschen zwischen Emden und Zittan [17] 22 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 ? Bei homophonen Substitutionen wird die Häufigkeitsanalyse von Buchstaben nicht helfen (per Konstruktion). 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’ verschlüsselt, tritt dagegen mit einer Häufigkeit von 2,75 % ≈ 1, 8% auf. Keine 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. 23 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. 2.1.d Polyalphabetische Verschlüsselungen und Lauftextverschlü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 A das Klartextalphabet, B0 , . . . Bd−1 Chiffretextalphabete. fj : A → Bj bijektive Abbildungen (j = 0, . . . d − 1) und h: N→ {0, . . . d − 1} (i.a. h(x) = x mod d) Klartext m = a1 . . . at (ai ∈ A) wird verschlüsselt in Chiffretext c = fh(1) (a1 ) fh(2) (a2 ) . . . fh(t) (at ). 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: A = B0 = B1 = . . . = Bd−1 Beispiel (Vigenère-Chiffre 3 ): A = {0, 1, . . . n − 1} (z.B. n = 26) h(x) = x mod d fj (a) = (a + kj ) mod n, kj ∈ A fest (Caesarchiffre) 3 nach Blaise de Vigenère, 1523-1596 24 Schlüssel: k0 , . . . kd−1 Man nennt ko k1 . . . kd−1 auch Schlüsselwort. Insgesamt gibt es also nd viele verschiedene Schlüsselworte. konkretes Beispiel: A = {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: - 10 Schlüsselwort : 10 fortlaufender Klartext in Zeilen der XXX X z X Länge d = 6 20 14 24 8 18 17 24 15 19 14 14 12 12 4 12 X XXX 5 10 1 23 0 y X fortlaufender 17 6 4 13 13 Chiffretext 8 4 19 6 1 in Zeilen der 2 7 19 Länge d = 6 9 19 5 8 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.a. in verschiedene Chiffretextbuchstaben verschlüsselt (z.B. 12 in 0, 1, 10). Polyalphabetische Substitutionen führen i.a. zur Glättung der Buchstabenhäufigkeiten. Wir machen dies am Beispiel der Vigenère-Chiffre von Seite 24 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 25 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′ vielen 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 26 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 viele monoalphabetische Substitutionschiffren zu entschlüsseln. Dies geht, falls Chiffretexte genügend groß (im Vergleich zur Periodenlänge d) sind, wie in Unterkapitel 2.1.c beschrieben. Bei der VigenèreChiffre sind die zu entschlüsselnden, monoalphabetisch verschlüsselten Texte die in jeder Spalte. Sie beruhen auf Caesar-Chiffren 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 nicht-periodische polyalphabetische Verschlüsselungen eingehen, sei ein historisches Beispiel vorgestellt: 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 viele 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) • Der Reflektor ist eine fest verdrahtete Permutation von 13 disjunkten 2er Zyklen. 27 • 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 im nächsten Abschnitt dargestellten kryptoanalytischen Verfahren nicht anwendbar. Dennoch wurde die ENIGMA-Verschlüsselung von den Briten durch die Gruppe um Alan Turing in Bletchley Park geknackt. (Entwicklung der BOMB erster elektromagnetischer Computer, später COLOSSUS - erster programmierbarer Computer)4 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 5 , 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 4 Einzelheiten hierzu in den Werken von Bauer und Kahn [5], [20] [21] oder in der Turing-Biographie von A. Hodges [18] 5 nach G. Vernam (AT&T) 28 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.6 In jedem Fall sollten daher bei Lauftextverschlüsselungen durch Addition von Schlüsseltexten Zufallsfolgen von Buchstaben als Schlüsseltexte genommen werden.7 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. A = {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. Es bietet absolute Sicherheit. Was heißt Zufallsfolge von Bits? (an )n∈N , an ∈ {0, 1} heißt Zufallsfolge, falls die Werte 0, 1 jeweils mit dem Wahrscheinlichkeitswert 12 vorkommen und aus der Kenntnis eines beliebig langen Anfangsstücks der Folge (etwa Länge m) keine Informationen über am+1 ableitbar sind. (Präziser: Folge statistisch unabhängiger, symmetrisch verteilter binärer Zufallsvariablen) Es ist anschaulich klar, dass bei Addition einer solchen Zufallsfolge zu einer beliebigen (Klartext-) Bitfolge eine Folge entsteht, in der an jeder Stelle 0, 1 mit einer Wahrscheinlichkeit von 12 vorkommt und die Kenntnis der ersten m Chiffretextglieder keine Information über das (m + 1)-te gibt. Für jeden Klartext ist jede Bitfolge gleicher Länge wie der Klartext gleich wahrscheinlich als Chiffretext. Daraus lässt sich mit der Bayes’schen Formel leicht folgern: (∗) p(m|c) = p(m) für jeden Klartext m und jeden Chiffretext c; 6 siehe z.B. Bauer [5] Auf die Problematik der Erzeugung von Zufallsfolgen werden wir an späterer Stelle eingehen. 7 29 d.h. die Wahrscheinlichkeit, dass m Klartext ist, wenn man den Chiffretext c kennt, ist genauso groß wie die Wahrscheinlichkeit, dass m Klartext ist, ohne dass man c kennt. ∗ ist die Bedingung für perfekte (uneingeschränkte) Sicherheit eines Kryptosystems. 2.1.e 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 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 Unterkapitel 2.1.c 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. 1. Methode 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.8 8 Visualisierungen dieses Verfahrens sind daher oft hilfreich. Siehe z.B. http://math. uscd.edu/∼crypto/ (Java Applet) 30 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. Methode (Kasiski-Test9 ) Dieser 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. 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 9 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. 31 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 · 32 · 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 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. 3. Methode (Friedman-Test10 ) Zentral für den Friedman-Test ist der sog. Koinzidenzindex. Koinzidenzindex I = I(m) einer Zeichenfolge m über einem Alphabet A (|A| = n) ist die Wahrscheinlichkeit, dass an zwei zufälligen Positionen des Textes die Zeichen gleich sind. Sei A = {a1 , . . . an }. Sei l die Länge der Zeichenfolge m und li die Häufigkeit des Auftretens von ai 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 10 William Frederic Friedman (1891-1969) hat statistische Methoden in die Kryptologie eingeführt. 32 Die Wahrscheinlichkeit, dass an zwei zufällig gewählten Positionen in m der gleiche Buchstabe steht, ist also: I = I(m) = n P i=1 li (li − 1) l(l − 1) Wir nehmen jetzt n = 26 an, A = {0, 1, . . . 25} als Codierung für {A, . . . Z}. In langen deutschsprachigen Texten ist I ≈ Id := 0, 0762 (ergibt sich aus den Buchstabenhäufigkeiten in deutschen Texten). Für lange Texte mit l1 = l2 = . . . l26 (Zufallstexte) gilt: I= = 26 P ( li )2 lgroß i=1 l ≈ = 26 P i=1 26 P li (li − 1) = l(l − 1) li2 l i=1 1 − 2 l (1 − l ) l(l − 26 P 1 2 1 ( 26 ) = 26 i=1 1) = ≈ 26 P i=1 li2 26 P li i=1 − l(l − 1) l(l − 1) 26 P li2 l 1 · i=12 − l−1 l l−1 0, 0385 =: Iz (z für zufällig) 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. 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, daß 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 ≈ Id = 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 ≈ Iz = 0, 0385. 33 [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 a ∈ A soll gelten: 1 X 1 , p(σ −1 (a)) ≈ |M | σ∈M 26 wobei M die Menge der auftretenden Permutationen und p(b) für b ∈ A die relative Häufigkeit des Buchstabens b 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 (a))p(σj (a)) − p(σi−1 (a))2 ) a∈A i,j=1 a∈A i j X 1 1 ·d· − p(σi−1 (a))2 ) (d · 26 26 i a∈A d2 X X −1 [ − p(σi (a))2 ] 26 i a∈A d2 X X [ − p(a)2 ] 26 i a∈A | {z } X 2 ≈ i=1 X X X X (( p(σi−1 (a)) · p(σj−1 (a)) − p(σi−1 (a))2 ) i 2 ≈Id ≈ 26 d 2d d−2 1 1 [ − ]= · d(d − 1) 26 26 d − 1 26 ≈ 1 für große d. ] 26 Sei nun l die Länge des Chiffretextes c, sein Koinzidenzindex I(c). Da es d Teiltexte mit je etwa dl vielen Zeichen gibt, gibt es insgesamt ungefähr l(l − d) 1 l l · ( − 1) · d = 2 d d 2d viele (ungeordnete) Paare von Positionen innerhalb der Teiltexte und 34 1 · 2 l2 (d − 1) l )= ·( l− 2d | {z d} Mögl. l |{z} Anz. an 1. Pos. Anz. Mögl. an 2. Pos. viele (ungeordnete) Paare von Positionen aus verschiedenen Teiltexten. Die Zahl der (ungeordneten) Paare von Positionen innerhalb c mit gleichen Buchstaben ist danach ungefähr: l(l − d) l2 (d − 1) · 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 I(c): I(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)I(c) − 0, 0385l + 0, 0762 Da sich I(c) = 26 P i=1 li (li − 1) l(l − 1) , li = Anzahl des Buchstabens ai 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. 35 Beispiel: Wir verwenden wieder den Text von Seite 31 und bestimmen die Häufigkeitsverteilung der Buchstaben. Häufigkeitsverteilung der Buchstaben: Buchstabe A B C D E F G H I J K L M Anzahl l0 − l12 5 8 8 4 32 22 13 14 30 11 9 13 9 rel. Häufigkeit 1,60% 2,50% 2,50% 1,30% 10,00% 6,90% 4,10% 4,40% 9,40% 3,40% 2,80% 3,10% 2,80% Buchstabe N O P Q R S T U V W X Y Z Anzahl l13 − l25 10 13 5 3 15 16 11 14 19 4 11 15 6 rel. Häufigkeit 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 I(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) · I(c) − 0, 0385 · l + 0, 0762) auf den Chiffretext von Seite 31 mit den Werten l = 320 und I(c) = 0, 048 liefert die Abschätzung d ≈ 3, 93. Wir nehmen jetzt 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. Da der Gesamttext mit Vigenère-Chiffrierung verschlüsselt wurde, entstanden die Teiltexte durch Verschiebe-Chiffren aus den entsprechenden Teiltexten des Klartextes. 36 Tabelle 4: Teiltexte 1-5 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. Teiltext 5: Offenbar steht V für den Klartextbuchstaben E. Verschiebung ∧ um 17 = R. Demnach ist das Schlüsselwort BAUER und der Klartext lautet (mit Satzzeichen): 37 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 2.2 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 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 Transpositionschiffren Bei Transpositionschiffren (oder Permutationschiffren) werden Klartextzeichen nicht durch andere ersetzt, sondern ihre Stellung innerhalb des Textes wird nach einer festen Regel verändert. Daher bleiben bei der Verschlüsselung die individuellen Buchstabenhäufigkeiten erhalten. Daran ist oft leicht zu erkennen, dass eine Transpositionschiffre angewandt wurde. Kryptoanalytische Methoden, die sich auf charakteristische Häufigkeitsverteilungen von Buchstaben in natürlichsprachigen Texten 38 beziehen, helfen bei Transpositonschiffren nicht. Ggf. können aber Häufigkeiten von Digrammen nützlich sein.11 Block-Transposition Klartext wird in Blöcke einer festen Länge n eingeteilt (evtl. Blendbuchstaben einfügen). Diese Blöcke werden jeweils derselben Permutation der Positionen unterworfen (Block Chiffre). Block: a1 . . . an → aσ(1) . . . aσ(n) Beispiel: Klartext: KRYPTO|LOGIEU|NDDATE|NSICHE|RHEITZ| Permutation: σ = (153642) , n = 6 Chiffretext: TKORYP|ELKOGI|TNEDDA|HNESIC|TRZHEI| Kryptoanalytische Methoden für Block-Transpositonschiffren versuchen zunächst die Blocklänge zu ermitteln (Teiler der Nachrichtenlänge). Anschließend wird analysiert, ob sich aus den Buchstabenfolgen in den Blöcken sinnvolle Klartextstücke bilden lassen (jeweils durch Anwenden derselben Permutation) mit Hilfe von Anagrammen. Bei kurzen Blocklängen ist dies i.d.R. kein Problem und Mehrdeutigkeiten in einem Block (die bei längeren Blocklängen oft auftreten) lassen sich meist dadurch beseitigen, dass bei allen Blöcken dieselbe Permutation angewandt wird. Spalten-Transposition Der Klartext wird zeilenweise in ein Rechteck mit einer festen Spaltenzahl n geschrieben (Zeilenanzahl hängt von Klartextlänge ab; evtl. Blendbuchstaben hinzufügen). Danach werden die Spalten mit einer Permutation σ ∈ Sn vertauscht und der Text wird spaltenweise gesendet.(Bei Block-Transpositionen wird er zeilenweise gesendet.) Beachte: Bei Spalten-Transpositionen ist der gesamte Klartext zu verschlüsseln, bevor er gesendet werden kann. Sie eignen sich daher nur für kürzere Klartexte. Spalten-Transpositionen sind weder Block- noch Stromchiffren. 11 Zur Häufigkeit von Digrammen in deutscher Sprache siehe Abbildung 2 auf S. 19. 39 Beispiel (Klartext wie Beispiel in Block-Transposition): K L N N R R O D S H Y G D I E P T O T I E U E P erm. A T E −−−→ T C H E H I T Z T K L N N R O R U O E D E S Z H Y G D I E P I A C I Chiffretext: TETHTKLNNROUEEZRODSHYGDIEPIACI Block- und Spalten-Transpositionen stellen typische Vertreter von Transpositionschiffren dar. Jede für sich genommen ist relativ leicht zu knacken (Beispiel für Spalten- Transposition am Ende dieses Unterkapitels). Es gibt allerdings viele Variationen und vor allem Hintereinanderausführungen von Block bzw. Spalten-Transpositionen. Diese sind dann deutlich schwieriger für eine Kryptoanalyse. Z. B. wurde die Hintereinanderausführung von zwei Spalten-Transpositionen häufig für militärische Geheimhaltungszwecke eingesetzt. Kryptoanalyse von Spalten-Transpositionen: 1. Schritt: Schätzung der Spaltenlänge s = l teilt n (n = Anzahl der Spalten, l = Länge des Chiffretextes) (s/l; i.d.R. relativ großer Teiler von l, da n i.d.R. nicht zu groß) 2. Schritt: Bestimmung der Spaltenpermutation durch Herausfinden benachbarter Spalten: Häufige Digramme, Ausschluss seltener Digramme, etc. Beispiel: Kryptoanalyse einer Spalten-Transposition Chiffretext: IAEEKCWENUCETOEEKRAMDEZNEDNZAIFATRWNIRR SUBSNWKREELNTEURERKNSIKZIMIKFVNUHANENK Länge: 77 Zeichen Mögliche Spaltenlängen: 7 oder 11 40 I A E E K C W E N U C E T O E E K R A M D E Z N E D N Z A I F A T R W N I R R S U B S N W K R E E L N T E U R E R K N S I K Z I M I K F V N U H A N E N K I A E E K C W E N U C E T O E E K R A M D E Z N E D N Z A I F A T R W N I R R S U B S N W K R E E L N T E U R E R K N S I K Z Im zweiten Rechteck enthält die vorletzte Zeile 9 Konsonanten und 2 Vokale, mit denen kein sinnvoller Klartext herstellbar erscheint. Wir gehen daher zunächst von Spaltenlänge 11, also dem ersten Rechteck, aus. I A E E K C W E N U C K F V N U H A N E N K Die erste Spalte enthält zweimal den Buchstaben C. Da C sehr selten als Endbuchstabe eines Wortes auftaucht und innerhalb eines Wortes im Deutschen fast immer vor einem H oder K steht, liegt es nahe, dass im Klartext die erste und letzte Spalte des obigen Rechtecks aufeinander folgen. Falls die hintere der beiden Spalten nicht letzte Spalte im Klartextrechteck ist, zeigen schon die ersten drei Positionen (IK, AF, EV), dass sich nur die mit ET beginnende Spalte anschließen kann. Da wahrscheinlich mindestens vor einem der beiden Digramme CH und CK ein Vokal stehen wird, liegt es nahe, dass vor der ersten der beiden Spalten die mit ER beginnende Spalte steht. Die verbleibenden drei Spalten lassen sich jetzt leicht einordnen: Die schon zusammengestellten vier Spalten bilden die 3. - 6. Spalte des Klartextrechteckes, die mit Z beginnende Spalte steht an der ersten Stelle, die mit W beginnende Spalte an der zweiten und die mit R beginnende an der letzten Stelle. Damit ergibt sich folgender sinnvoller Klartext: ZWEI KERNKRAFTWERKE, VON DENEN EINES KUERZLICH KRANK WAR, SITZEN AUF EINEM BAUM UND STRICKEN. 41 E R K N S I K Z I M I I A E E K C W E N U C K F V N U H A N E N K E T O E E K R A M D E I M I K F V N U H A N E N K 2.3 Affin lineare Chiffren Üblicherweise lassen sich die Alphabete, die in der Kryptologie verwendet werden, als (endliche) kommutative Ringe auffassen. Beispiel: ∧ {0, 1} = Z/2Z ∧ {A, B, . . . Z} = {0, 1, . . . 25} ∼ = Z/26Z Dies hat den Vorteil, dass man die Elemente des Alphabets addieren und multiplizieren kann. Insbesondere von der Addition haben wir in Kapitel 2.1 häufig Gebrauch gemacht. Affine lineare Chiffren sind Verschlüsselungsverfahren von Texten über Alphabeten, welche kommutative Ringe sind. 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. 2.3.a 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 Multiplikationen 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. Z/nZ = Zn ist der Ring der ganzen Zahlen modulo n. Man kann ihn auffassen als Menge der Restklassen {a + nZ|a ∈ Z} von Z bzgl. des Ideals nZ. Die verschiedenen Restklassen sind gerade {0 + nZ, 1 + nZ, . . . (n − 1) + nZ}. Üblicherweise schreibt man Zn als {0, 1, . . . n−1} und addiert und multipliziert modulo n: Addition (Multiplikation) wie in Z, dann Division 42 durch n mit Rest r, 0 ≤ r ≤ n − 1; außerdem −i = n − i, der Rest ist das Ergebnis der Addition (Multiplikation) in Zn . Welches sind die Einheiten in Zn ? a Einheit ⇔ ∃b, k ∈ Z: a · b = k · n + 1 ⇔ ggT(a, n) = 1 Z.B.: Einheiten in Z10 : Z∗10 = {1, 3, 7, 9} Ist n = p, so sind alle von 0 verschiedenen Elemente Einheiten: Zp ist Körper. Wie über Körpern kann man über Ringen Vektoren und Matrizen bilden: Rn = {(r1 , . . . rn )|ri ∈ R} R(n,k) = r11 . . . r1k .. | rij ∈ R . . 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) : det(a) = a n P (−1)i+j aij det Ai,j ∈ R n ≥ 1 : A ∈ R(n,n) : det A = 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 0 1 Rechne über Z, reduziere dann modulo 6. 43 1 3 1 1 3 1 + 5 · det − 2 · det det A = 0 · det 4 0 4 1 0 1 = −2 · (4 − 1) + 5 · (0 − 12) = −2 + 8 − 60 = −54 ≡ 0 (mod 6) det A = 0 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 1 3 A= 3 2 2 − 9 = −7 ≡ 5 (mod 6) , d.h. A ist invertierbar in R(2,2) . (det A)−1 = 5 −1 A 2.3.b =5· 2 −3 −3 1 =5· 2 3 3 1 = 4 3 3 5 Affin lineare Blockchiffren Klartexte seien codiert in 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 affin lineare Blockchiffre ordnet jedem v = (v1 , . . . vn ) ∈ Znk das Element (n,n) vA + b ∈ Znk zu, wobei A ∈ Zk , b ∈ Znk . Schlüssel ist das Paar (A, b). Damit die Chiffrierung v 7→ vA+b injektiv ist, muss die Matrix A in Zk invertierbar sein, d.h. det A muss eine Einheit in Zk sein (also ggT(det A, k) = 1). Die Dechiffrierung von w = vA + b erfolgt dann durch (n,n) v = (w − b)A−1 . 44 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: (Affin) lineare Blockchiffren sind weder Substitutions- noch Transpositionschiffren: Ist w = vA + b = (w1 , . . . wn ), so hängt jedes wi i.d.R. von allen v1 , . . . vn ab; die vi lassen sich nicht einzeln verschlüsseln, sondern nur der gesamte Block (v1 , . . . vn ). Beispiele: a) Die Vigenère-Chiffre ist eine affin lineare Blockchiffre über Schlüssel werden sämtliche (En , b), b ∈ Zn26 verwendet: v 7→ v + b Z26 . Als (b ist das Schlüsselwort“) ” b) Block-Transpositionen sind lineare Blockchiffren: Sei σ eine Permutation von {1, . . . n}. Sei Pσ = (pij ) die folgende Permutationsmatrix. 0 für i 6= σ(j) pij = 1 für i = σ(j) (v1 , . . . vn )Pσ = (vσ(1) , . . . vσ(n) ) Pσ−1 = Pσ−1 (gilt über jedem Ring R, z.B. R = Z26 ) Vigenère-Chiffren und Block-Transpositionen natürlichsprachiger Texte (also über Z26 ) lassen sich mit einer ciphertext-only-attack brechen, wie wir in Kapitel 2.1 und 2.2 gesehen haben (vorausgesetzt der Chiffretext ist genügend lang). Wir zeigen jetzt, wie allgemein affin lineare Chiffren durch eine knownplaintext-attack gebrochen werden können. Kryptoanalyse affin linearer Blockchiffren Known-plaintext-attack (R = Zk ) Ausgangssituation: Schlüssel (A, b) ist festgelegt worden. 12 Lester S. Hill (1891-1961), 1929 45 Verschlüsselungsfunktion: v 7→ vA + b, v ∈ Znk (A ∈ Zk (n,n) , b ∈ Znk ) Angreifer will (A, b) bestimmen. Wir gehen davon aus, dass er n + 1 gehörigen chiffrierten Blöcke c0 , . . . cn w1 − w0 .. Wir nehmen an, dass det . wn − w0 Klartextblöcke w0 , . . . wn und die zukennt. eine Einheit in Zk ist. = 1 und nϕ(n) (Das passiert häufig, da lim ϕ(n) 1−δ → ∞ für alle δ > 0 n c1 − c0 w1 − w0 (n,n) .. .. C= Setze W = ∈ Zk , . . cn − c0 wn − w0 Dann gilt: W A = C. Da det W eine Einheit in Zk 13 ) ist, existiert W −1 . Es folgt: A = W −1 C und b = c0 − w0 A (Ist die Chiffre sogar linear, so benötigt man nur w1 , . . . wn und bestimmt a wie oben (mit w0 = co = 0).) Beispiel: Ang.: Blocklänge n = 2, k = 26 Angenommen wir wissen, dass der Klartext HERBST in den Chiffretext SOMMER verschlüsselt wurde. D.h.: W = 7 4 17 1 18 19 −→ 18 14 12 12 4 17 w0 w1 w2 c0 c1 c2 w1 − w0 w2 − w0 = 10 23 11 15 C= c1 − c0 c2 − c0 10 · 15 − 23 · 11 = 150 − 253 = −103 ≡ 1 (mod 26), 15 3 15 −23 −1 = W = −11 10 15 10 13 siehe z.B. K. Chandrasekharan [11], S. IV.20 46 = 20 24 12 3 det W = 1 in Z26 −1 A = W C 24 5 300 + 36 360 + 9 20 24 15 3 = = = 4 0 300 + 120 360 + 30 12 3 15 10 b = c0 −w0 A = (18, 14)−(7, 4) Test: w1 A+b = (17, 1) w2 A+b = (18, 19) 3 3.1 24 5 4 0 24 5 4 0 24 5 4 0 = (18, 14)−(−14+16, 35) = (16, 5) +(16, 5) = (−34+4, 85)+(16, 5) = (12, 12) = c1 +(16, 5) = (−36+76, 90)+(16, 5) = (4, 17) = c2 Blockchiffren und ihre Betriebsarten Allgemeine Vorbemerkungen Wir betrachten im Folgenden Blockchiffren über dem Alphabet Z2 = {0, 1}. Klartexte sind also Bitfolgen (z.B. durch Codierung mit ASCII-Code entstanden), die in Blöcke einer festen Länge n zerlegt werden. 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 Zn2 ). 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 nehmen im Folgenden ferner an, dass Blöcke der Länge n über Z2 wieder in Blöcke der Länge n über Z2 verschlüsselt werden. Dann gibt es also (2n )! viele Blockchiffren (mit Blöcken der Länge n über Z2 ). Wenn man alle diese Permutationen der 2n vielen möglichen Klartextblöcke über F2 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 viele Bits, wobei 2s = (2n )!. 47 Nach der Stirling-Approximation ist (2n )! ≈ √ n n π · 2n+1 ( 2e )2 , also √ n n s ≈ log2 ( π · 2n+1 · ( 2e )2 ) = 12 (n + 1) + 21 log2 π + 2n (n − log2 e) ≈ 2n (n − 1, 44) [ Die übliche Codierung eines Schlüssels (= Permutation der 2n vielen Blöcke) wäre, die Permutation so anzugeben, dass zunächst das Bild des Blockes (0, . . . 0) angegeben wird (n Bits), dann das Bild des Blockes (0, . . . 0, 1), . . ., ←n→ schließlich das Bild des Blockes (1, . . . 1). Dies erfordert n · 2n viele 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. Bsp.: n = 64 Schlüssellänge: s = 264 · 26 = 270 ≈ 1021 Bits Zur Speicherung eines Schlüssels werden mehr als 109 Festplatten mit einer Kapazität von je 100 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. Bsp.: lineare Chiffren, 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 ] (Deshalb könnte man die Schlüssel auch mit ⌈log2 (0, 29·24096 )⌉ = 4095 vielen Bits kodieren; keine große Ersparnis) 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 (affin) linearer Blockchiffren wieder eine (affin) lineare Blockchiffre; hier bringt die Hintereinanderausführung nichts. Oft werden z.B. Substitutionschiffren (auch solche, die kleinere Blöcke durch 48 Blöcke entsprechender Größe substituieren) und Permutationschiffren alternierend hintereinander eingesetzt. 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 hat14 : Diffusion: Die nderung eines Bits im Klartextblock ändert mehrere Bits im Chiffretextblock und umgekehrt (Nachteil: Ein kleiner Fehler im Klartext führt zu großem Fehler im Chiffretext!) Konfusion: Der Chiffretext hängt nicht in einfacher Weise mit dem Schlüssel zusammen. Jedes Bit des Chiffretextes sollte von mehreren Bits des Schlüssels abhängen. Beispiel: Lineare Chiffren: v → vA, A n × n-Matrix 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). Eine der wichtigsten Typen von Blockchiffren, die durch Hintereinanderschachtelungen mehrerer einfacherer Blockchiffren (nämlich Substitution und Transposition) entstehen, behandeln wir im folgenden Abschnitt. 14 Claude Shannon, 1916 - 2001, Bell-Laboratories, MIT 49 3.2 Feistel-Chiffren Feistel-Chiffren sind benannt nach dem IBM-Ingenieur Horst Feistel, 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 AbL R schnitt eingehen. K Klartextblock v 0 0 1 + Feistel-Chiffren sind die Prototypen aller moderner Blockchiffren. Sie realisieren den Vorschlag Shannons, alternierende Folgen von 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. f L1 R1 K2 + f L2 Zutaten für eine Feistel-Chiffre: Blockchiffre über Z2 , Blocklänge t, K zugehörige Schlüsselmenge; Verschlüsselungsfunktion zum Schlüssel K sei fK , also fK : Zt2 → Zt2 R2 L r-1 R r-1 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.a. KF 6= K) Kr + f Lr Rr Chiffretextblock E k (v) Abbildung 7: Schematischer Ablauf einer FeistelChiffrierung Wahl einer Methode, die aus einem Schlüssel k ∈ KF eine Folge K1 , . . . Kr ∈ K von Rundenschlüsseln erzeugt.15 Verschlüsselungsfunktion Ek (zum Schlüssel k ∈ KF ) der Feistel-Chiffre: Sei v ein Klartextblock der Länge 2t (d.h. v ∈ Z2t 2 ). Teile v in zwei Hälften der Länge t auf: v = (L0 , R0 ) ↑ ↑ linke Hälfte rechte Hälfte 15 Wie eine solche Methode realisiert werden kann, sehen wir in den nächsten Abschnit- ten. 50 Konstruiere eine Folge (Li , Ri ), i = 1, . . . r − 1 nach folgender Vorschrift: (Li , Ri ) = (Ri−1 , Li−1 ⊕ fKi (Ri−1 )) [Also: Substitution des linken Teilblocks durch Addition des Schlüsselworts“ fK (Ri−1 ) (Li−1 , Ri−1 ) −”−−−−−−−−−−−−−i−−−−→ Transposition (Vertauschen der beiden Teilblöcke) −−−−−−−−−−−−→ (Li−1 ⊕ fKi (Ri−1 ), Ri−1 ) (Ri−1 , Li−1 ⊕ fKi (Ri−1 )) = (Li , Ri ) ] 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 51 Am Ende der (r − 1)-ten Reihe hat man dann: ′ (L′r−1 , Rr−1 ) = (R1 , L1 ) r-te Runde: ′ ′ (L′r , Rr′ ) = (L′r−1 ⊕ fKr′ (Rr−1 ), Rr−1 ) = (R1 ⊕ fK1 (L1 ), L1 ) = (L0 ⊕ fK1 (R0 ) ⊕fK1 ( R0 ), R0 ) = (L0 , R0 ) = v |{z} |{z} | {z } =R1 L1 L1 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) linear sind, denn sonst ist die gesamte Feistel-Chiffre affin linear (Transpositionen sind linear nach Beispiel b) auf Seite 45). Dies bedeutet, dass nicht alle Ri−1 → fKi (Ri−1 ) affin linear sind. Denn: Ist fKi (Ri−1 ) = Ri−1 Ai + bi , Ai ∈ Zt2 , so ist (Li−1 ⊕ fKi (Ri−1 ), Ri−1 ) = (Li−1 , Ri−1 ) · 3.3 1 ... Ai 0 1 1 ... + (bi , 0, . . . 0). ←−t−→ 1 Eine vereinfachte Version des DES-Algorithmus16 Bevor wir im nächsten Abschnitt den eigentlichen DES-Algorithmus beschreiben, wollen wir hier eine vereinfachte Form (mit kürzerer Blocklänge und einfacherem Design) darstellen. An diesem Beispiel lassen sich dann auch gewisse kryptoanalytische Verfahren (z.B. differentielle Kryptoanalyse) leichter darstellen. Wir beschreiben eine Feistel-Chiffre mit Blocklänge 12 (also t = 6). Der Ausgangsschlüssel k hat 9 Bits, die Rundenschlüssel K1 , . . . Kr haben 8 Bits. 16 nach W. Trappe, L.C. Washington [31] 52 Die Rundenzahl r ist zunächst beliebig. Zur Kryptoanalyse werden wir später r = 3 oder r = 4 wählen. Wir haben zu beschreiben, wie die Schlüssel K1 , . . . Kr erzeugt werden und wie die Verschlüsselungsfunktion fKi : Z62 → Z62 aussieht. 1) Erzeugung der Schlüssel K1 , . . . Kr ∈ Z82 : k hat 9 Bits, d.h. k ∈ Z92 Ki erhält man aus k, indem man als erstes Bit das von k an Stelle i (i modulo 9 gerechnet) nimmt und dann die folgenden 7 Bits in k. Ist i ≥ 3, so fährt man am Anfang von k fort, wenn man das Ende von k erreicht hat: k = (a1 . . . a9 ), so Ki = (ai . . . ai+7 ) (Indizes > 9 modulo 9 lesen) (Beachte: Ki = Ki+9l , l ∈ N0 ) [Bsp.: k = (010011001), so K4 = (01100101) ] 2) Beschreibung der Funktion fK , K ∈ {K1 , . . . K9 }: Sei T ∈ Z62 . 1. Schritt: Expansion e : Z62 → Z82 1 2 1 2 4 3 4 3 4 3 5 6 5 6 Abbildung 8: Expansion Dies ist so zu verstehen: Die ersten beiden Bits von T bleiben erhalten, das dritte Bit von T wird an die 4. und 6. Stelle von e(T ) geschrieben, das 4. Bit von R wird an die 3. und 5. Stelle von e(T ) geschrieben, das 5. und 6. Bit von R werden zum 7. und 8. Bit von e(T ). [Bsp.: T = (101011), so e(T ) = (10010111)] Beachte: e ist lineare Abb.: e(T1 ⊕ T2 ) = e(T1 ) ⊕ e(T2 ), denn 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 e(T ) = T · 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 53 2. Schritt: e(T ) ⊕ K ∈ Z82 3. Schritt (Hauptschritt): Substitution mit Hilfe zweier S-Boxen S1 , S2 . 4 0 6 5 7 1 3 2 5 2 1 6 3 4 7 0 , S2 = S1 = 5 3 0 7 6 2 1 4 1 4 6 2 0 7 5 3 Jede S-Box besteht aus zwei Zeilen. Jede Zeile enthält die Zahlen von 0 bis 7 in einer gewissen Reihenfolge. Input für eine S-Box ist eine Folge von vier Bits. Das erste Bit gibt die Zeile ∧ ∧ der S-Box an: 0 = 1. Zeile, 1 = 2. Zeile. Die letzten drei Bits beschreiben eine ∧ ∧ Zahl zwischen 0 und 7, die die Spalte bestimmt: 000 = 1. Spalte,. . . 111 = 8. Spalte. Output ist die Binärdarstellung der Zahl, die an der entsprechenden Stelle der S-Box steht. Wir können also die Si als Funktion Z42 → Z32 auffassen. Beispiel.: S1 ( x 1 0 1 1} ) = 0 1 0 | {z x 2. Zeile 4. Spalte Im 3. Schritt wird e(T ) ⊕ K ∈ Z82 in zwei Hälften (A, B) zu je 4 Bits geteilt. fk (T ) = (S1 (A), S2 (B)) ∈ Z62 Beispiel: k = (010011001), T = (101011) Was ist fK4 (T )? K4 = (01100101) e(T ) ⊕ K4 = (10010111) ⊕ (01100101) = (11110010) S1 ( x 1 1 1 1} ) = 0 1 1 | {z x 2. Zeile S2 ( x 0 0 1 0} ) = 1 1 0 | {z x 1. Zeile 8. Spalte 3. Spalte fK4 (T ) = (011110) 54 6 2 T E e (T) 8 2 + K 4 A S 4 2 B 2 8 2 S2 1 f K (T) = (S 1 (A))(S 2 (B)) Abbildung 9: Vereinfachtes DES: Expansion, Rundenschlüsseladdition, Substitution Wie sieht nun z.B. die 4. Runde des vereinfachten DES aus? Ang.: Also: (L3 , R3 ) (L4 , R4 ) L3 ⊕ fK4 (R3 ) (L4 , R4 ) s.o. (001111, 101011) ∈ Z12 2 (R3 , L3 ⊕ fK4 (R3 )) (falls r > 4) (001111) ⊕ (011110) = (010001) = (101011010001) = = = (T =R3 ) Differentielle Kryptoanalyse Das Verfahren der Differentiellen Kryptoanalyse wurde von Biham und Shamir 1990 vorgestellt. Es wurde zur Schlüsselbestimmung des DES entworfen, kann aber auch auf andere ähnliche Verfahren angewandt werden. Offensichtlich war die Differentielle Kryptoanalyse auch den Designern des DES bei IBM bekannt. Nach einem Mitglied des Teams, D. Coppersmith, wurde der DES (d.h. dessen S-Boxen; s. Kapitel 3.4) so konzipiert, dass er möglichst wenig Angriffsmöglichkeiten für die Differentielle Kryptoanalyse bietet. Die Differentielle Kryptoanalyse ist eine Choosen-Plaintext-Attack. Wir verdeutlichen sie am Beispiel des vereinfachten DES mit wenigen Runden. Dem Angreifer ist das Verfahren (also die S-Boxen, Expansion e, Transposition, Rundenschlüsselerzeugung) bekannt. Nur der Schlüssel k = (a1 , . . . a9 ) 55 ist unbekannt. Er soll bestimmt werden. Der Angreifer kann einen beliebigen Klartextblock (L0 , R0 ) wählen und erhält das verschlüsselte (Lr , Rr ). Versucht er, die r Verschlüsselungsrunden zu verfolgen, so endet er (bei größeren r) schnell in komplexen Situationen, die nicht mehr zu analysieren sind; denn in jeder Runde werden 8 Bits des unbekannten Schlüssels zum expandierten Ergebnis der vorangegangenen Runde addiert. Die Differentielle Kryptoanalyse beruht auf der Analyse von Differenzen (= Summe modulo 2) von Klartextblöcken (L0 , R0 ), (L∗0 , R0∗ ), also (L0 ⊕ L∗0 , R0 ⊕ R0∗ ) und der Differenz der verschlüsselten Blöcke (Lr ⊕ L∗r , Rr ⊕ Rr∗ ). Es sind im Wesentlichen zwei Gründe, die dies zu einem erfolgversprechenden Ansatz zur Kryptoanalyse des DES machen: 1) Differenzen ändern sich nicht, wenn zu jedem der Blöcke ein gleicher Block (im DES der Rundenschlüssel) addiert wird. 2) Die S-Boxen des vereinfachten DES (wie auch die des nicht vereinfachten DES) haben die Eigenschaft, dass für manche D ∈ Z42 viele Input-Paare mit dieser Differenz D auch eine gleiche Differenz beim Output haben. (Diese Eigenschaft spielt v.a. bei der Analyse größerer Rundenzahlen eine wichtige Rolle.) Nun zur genauen Erläuterung: Wir betrachten eine der beiden S-Boxen, etwa S1 . Für Inputs A, A∗ ∈ Z42 dieser S-Box nennen wir A ⊕ A∗ die Input-Differenz. Analog heißt S1 (A) ⊕ S1 (A∗ ) ∈ Z42 die Output-Differenz. Sei A′ ∈ Z42 . Für alle {A, A∗ } mit A ⊕ A∗ = A′ kann man die OutputDifferenzen S1 (A) ⊕ S1 (A∗ ) bestimmen und die Verteilung in einer Tabelle festhalten. Beachte: Ist A′ 6= (0000), so gibt es genau 8 solche Mengen {A, A∗ }, nämlich alle {A, A ⊕ A′ } für A ∈ Z42 . Wie geben exemplarisch zwei solcher Tabellen für die S-Box S1 an und zwei weitere für die S-Box S2 (Diese werden wir später auch verwenden.): 5 2 1 6 3 4 7 0 S1 = 1 4 6 2 0 7 5 3 56 A′ = (1010) {A, A∗ } (0000), (1010) (0001), (1011) (0010), (1000) (0011), (1001) (0100), (1110) (0101), (1111) (0110), (1100) (0111), (1101) S1 (A) ⊕ S1 (A∗ ) (101) ⊕ (110) = (011) (010) ⊕ (010) = (000) (001) ⊕ (001) = (000) (110) ⊕ (100) = (010) (011) ⊕ (101) = (110) (100) ⊕ (011) = (111) (111) ⊕ (000) = (111) (000) ⊕ (111) = (111) (111) (000) (010) (011) (110) (001) (100) (101) 3× 2× 1× 1× 1× − − − Tabelle 5: Alle 8 Input- u. Output-Differenzen zu geg. A′ = (1010) ∈ S-Box S1 Z42 u. Z42 u. A′ = (0011) {A, A∗ } (0000), (0011) (0001), (0010) (0100), (0111) (0101), (0110) (1000), (1011) (1001), (1010) (1100), (1111) (1101), (1110) S1 (A) ⊕ S1 (A∗ ) (101) ⊕ (110) = (011) (010) ⊕ (001) = (011) (011) ⊕ (000) = (011) (100) ⊕ (111) = (011) (001) ⊕ (010) = (011) (100) ⊕ (110) = (010) (000) ⊕ (011) = (011) (111) ⊕ (101) = (010) (011) 6× (010) 2× Rest − Tabelle 6: Alle 8 Input- u. Output-Differenzen zu geg. A′ = (0011) ∈ S-Box S1 A′ = (0011) ist eine Differenz, bezüglich der die S-Box S1 die unter 2) oben erwähnte Eigenschaft hat. 4 0 6 5 7 1 3 2 S2 = 5 3 0 7 6 2 1 4 57 A′ = (1011) {A, A∗ } (0000), (1011) (0001), (1010) (0010), (1001) (0011), (1000) (0100), (1111) (0101), (1110) (0110), (1101) (0111), (1100) S2 (A) ⊕ S2 (A∗ ) (100) ⊕ (111) = (011) (000) ⊕ (000) = (000) (110) ⊕ (011) = (101) (101) ⊕ (101) = (000) (111) ⊕ (100) = (011) (001) ⊕ (001) = (000) (011) ⊕ (010) = (001) (010) ⊕ (110) = (100) Tabelle 7: Alle 8 Input- u. Output-Differenzen zu geg. A′ = (1011) ∈ S-Box S2 Z42 u. Z42 u. A′ = (1100) {A, A∗ } (0000), (1100) (0001), (1100) (0010), (1110) (0011), (1111) (0100), (1000) (0101), (1001) (0110), (1010) (0111), (1011) S2 (A) ⊕ S2 (A∗ ) (100) ⊕ (110) = (010) (000) ⊕ (010) = (010) (110) ⊕ (001) = (111) (101) ⊕ (100) = (001) (111) ⊕ (101) = (010) (001) ⊕ (011) = (010) (011) ⊕ (000) = (011) (010) ⊕ (111) = (101) Tabelle 8: Alle 8 Input- u. Output-Differenzen zu geg. A′ = (1100) ∈ S-Box S2 Diese Tabellen erstellt man für alle fünfzehn A′ ∈ Z42 \ {0} und für die beiden S-Boxen S1 , S2 . Wir betrachten nun die Situation in Runde i bei der Chiffrierung zweier Klartextblöcke (L0 , R0 ), (L∗0 , R0∗ ). Der entscheidende Schritt dort ist die Bildung ∗ von fKi (Ri−1 ) und fKi (Ri−1 ). 58 Runde i: Schlüssel Ki = (KiL , KiR ) Ri−1 ↓ e(Ri−1 ) = (Ã, B̃) ↓ e(Ri−1 ) ⊕ Ki = (à ⊕ KiL , B̃ ⊕ KiR ) | {z } | {z } A B ↓ ↓ S1 (A) S2 (B) ∗ Ri−1 ↓ ∗ e(Ri−1 ) = (Ã∗ , B̃ ∗ ) ↓ ∗ e(Ri−1 ) ⊕ Ki = (Ã∗ ⊕ KiL , B̃ ∗ ⊕ KiR ) | {z } | {z } A∗ B∗ ↓ ↓ S1 (A∗ ) S2 (B ∗ ) Wichtig: A ⊕ A∗ = (à ⊕ KiL ) ⊕ (Ã∗ ⊕ KiL ) = à ⊕ Ã∗ (und analog B ⊕ B ∗ = B̃ ⊕ B̃ ∗ ) Durch die Schlüsseladdition ändert sich die Differenz nicht! [Aber: Die Output-Differenz S1 (A) ⊕ S1 (A∗ ) hängt natürlich vom Schlüssel Ki ab! Nichtlinearität der Boxen: S1 (à ⊕ KiL ) ist i. a. von S1 (Ã) ⊕ S1 (KiL ) verschieden.] Ang.: Wir kennen Ã, Ã∗ und die Output-Differenz S1 (A) ⊕ S1 (A∗ ). A, A∗ haben Input-Differenz A′ = A ⊕ A∗ = à ⊕ Ã∗ , bekannt A, A∗ haben Output-Differenz C ′ = S1 (A) ⊕ S1 (A∗ ), bekannt Also tauchen {A, A∗ } in der Tabelle zur Input-Differenz A′ auf, und man kennt alle Möglichkeiten für {A, A∗ }, so dass die Output-Differenz gerade das bekannte C ′ ist. Da A = à ⊕ KiL und à bekannt ist, erhält man damit eine Einschränkung der Möglichkeiten für KiL . Bsp.: à = (0100), Ã∗ = (0111), S1 (A) ⊕ S1 (A∗ ) = (010) 59 Input-Differenz: A ⊕ A∗ = à ⊕ Ã∗ = (0011) Tabelle: A ∈ {(1001), (1010), (1101), (1110)} Folglich: KiL = à ⊕ A ∈ {(1101), (1110), (1001), (1010)} (Es ist Zufall, dass hier die Möglichkeiten für A und für KiL übereinstimmen.) Wiederholt man jetzt das Verfahren mit zwei anderen Klartextblöcken (weiterhin unter der Annahme, dass man den Output nach der (i − 1)-ten und die Output-Differenz nach der i-ten Runde kennt), so erhält man wieder eine Menge von Möglichkeiten für KiL , und der richtige Schlüssel liegt im Durchschnitt dieser beiden Mengen. Man fährt solange fort, bis KiL eindeutig bestimmt ist. Entsprechend für KiR . Wir zeigen jetzt, dass diese Überlegungen schon ausreichen, um das vereinfachte DES mit r = 3 Runden zu berechnen. Differentielle Kryptoanalyse für drei Runden Wir beginnen mit zwei Klartextblöcken (L0 , R0 ), (L∗0 , R0∗ ) und kennen die zugehörigen Chiffretextblöcke (L3 , R3 ), (L∗3 , R3∗ ). L3 = L2 ⊕ fK3 (R2 ) = R1 ⊕ fK3 (R2 ) = L0 ⊕ fK1 (R0 ) ⊕ fK3 (R2 ) r=3 Analog: L∗3 = L∗0 ⊕ fK1 (R0∗ ) ⊕ fK3 (R2∗ ). Wir wählen die Klartextblöcke so, dass R0 = R0∗ . Dann: L3 ⊕ L∗3 = Lo ⊕ L∗0 ⊕fK3 (R2 ) ⊕ fK3 (R2∗ ) | {z } | {z } =:L′3 =:L′0 L′3 ⊕L′0 = fK3 (R2 )⊕fK3 (R2∗ ) = fK3 (R3 )⊕fK3 (R3∗ ), da R2 = R3 und R2∗ = R3∗ . Wir kennen also R2 = R3 , R2∗ = R3∗ und daher auch e(R2 ), e(R2∗ ) | {z } | {z } (Ã,B̃) K3L ) ∗ K3L ) sowie S1 (à ⊕ ⊕ S1 (à ⊕ (= linke Hälfte von fK3 (R3 ) ⊕ fK3 (R3∗ ) = L′3 ⊕ L′0 ) | {z } bekannt [und entsprechend S2 (B̃ ⊕ K3R ) ⊕ S2 (B̃ ∗ ⊕ K3R )] 60 (Ã∗ ,B̃ ∗ ) Wir sind also genau in der Situation der Vorbemerkung und können jetzt versuchen, K3R , K3L – und dann auch k – zu bestimmen. [Benötigt wird also nur: L0 ⊕ L∗0 , L3 ⊕ L∗3 , R3 , R3∗ , R0 = R0∗ ] Wir führen dies durch an einem Beispiel: (L0 , R0 ) = (000111011011) (L3 , R3 ) = (100101000011) (L∗0 , R0∗ ) = (101110011011) (L∗3 , R3∗ ) = (011000100100) (beachte R0 = R0∗ ) Ziel: Bestimmung von k (oder wenigstens Einschränkung der Möglichkeiten für k) aus Kenntnis dieser beiden (und ggf. weiterer) Klartext-ChiffretextblockPaare. e(R2 ) = (0000 |{z}) |{z}, 0011 R2 = R3 = (000011) R2∗ = R3∗ e(R2∗ ) = (100100) à B̃ = (1010 |{z}) |{z}, 1000 Ã∗ B̃ ∗ Input-Differenz in S-Box S1 : à ⊕ Ã∗ = (1010) Output-Differenz von S-Box S1 = linke Hälfte von L′3 ⊕ L′0 L′3 = (100101) ⊕ (011000) = (111101) L′0 = (000111) ⊕ (101110) = (101001) L′3 ⊕ L′0 = (010100) Output-Differenz von S-Box S1 = (010) Aus Tabelle 5 von Seite 57: A ∈ {(0011), (1001)}, also K3L = A ⊕ à ∈ {(0011), (1001)} Input-Differenz in S-Box S2 : B̃ ⊕ B̃ ∗ = (1011) Output-Differenz von S-Box S2 = rechte Hälfte von L′3 ⊕ L′0 = (100) Mit Tabelle 7 von Seite 58 sieht man: K3R ∈ {(1111), (0100)} Damit gibt es 4 Möglichkeiten für K3 und 8 Möglichkeiten für k (aus 29 = 512 vielen). 61 Um die Möglichkeiten für K3 weiter einzuschränken, wiederholt man diese Prozedur mit zwei weiteren Klartext-Chiffretextblock-Paaren, z.B.: (L0 , R0 ) = (010111011011) (L3 , R3 ) = (001010001011) (L∗0 , R0∗ ) = (101110011011) (L∗3 , R3∗ ) = (011000100100) (wieder R0 = R0∗ ) Analoge Analyse wie vorher zeigt: K3L ∈ {(0011), (1000)} K3R ∈ {(0100), (1011)} Damit bleibt für K3 nur die Möglichkeit K3 = (00110100) Wie erhält man k? k = (0?0011010) Überprüfe mit den beiden Möglichkeiten für ?, ob L0 R0 zu L3 R3 verschlüsselt wird. Nur bei ? = 1 ist das der Fall, d.h. k = (010011010). Differentielle Kryptoanalyse für vier Runden Hier nutzen wir das Phänomen aus, dass die S-Boxen bei manchen InputDifferenzen häufig die gleiche Output-Differenz liefern. Bei S-Box S1 erhält man z.B. bei den acht ungeordneten Paaren von Viererblöcken mit InputDifferenz (0011) in sechs Fällen Ouput-Differenz (011) (siehe Tabelle 6 auf S. 57). Bei S-Box S2 erhält man bei den acht ungeordneten Paaren mit InputDifferenz (1100) in vier Fällen Output-Differenz (010) (s. Tabelle 8). Wir wählen jetzt Paare von Klartextblöcken (L0 , R0 ), (L∗0 , R0∗ ) mit folgenden Eigenschaften: 1) R0′ = R0 ⊕ R0∗ = (001100) Bei der Bildung von fK1 (R0 ), fK1 (R0∗ ) in der ersten Runde gilt dann: e(R0 ) ⊕ e(R0∗ ) = (00111100), d.h. die Input-Differenz für S1 ist (0011) und die Input-Differenz für S2 ist (1100). Wir erwarten also mit einer Wahrscheinlichkeit von 43 eine OutputDifferenz (011) bei S1 und mit einer Wahrscheinlichkeit von 21 eine Output-Differenz (010) bei S2 . Sind die Ouputs der beiden S-Boxen unabhängig, so erwarten wir mit einer Wahrscheinlichkeit von 43 · 12 = 83 eine Gesamt-Output-Differenz fK1 (R0 ) ⊕ fK1 (R0∗ ) = (011010) 62 [Da die Expansionsfunktion e die Bits 3 und 4 von R0 bzw. R0∗ in beide S-Boxen schickt, haben wir allerdings keine Unabhängigkeit; dennoch ist 38 eine sinnvolle Wahrscheinlichkeitsabschätzung.] 2) L′0 = L0 ⊕ L∗0 = (011010) Da R1 = L0 ⊕ fK1 (R0 ), R1∗ = L∗0 ⊕ fK1 (R0 ), folgt im Falle fK1 (R0 ) ⊕ fK1 (R0∗ ) = (011010), dass R1 ⊕ R1∗ = L0 ⊕ L∗0 ⊕ fK1 (R0 ) ⊕ fK1 (R0∗ ) = (000000), d.h. R1 = R1∗ . Wegen R1 = R0 , L∗1 = R0∗ , gilt also mit einer Wahrscheinlichkeit von 3 , dass (L1 , R1 ) und (L∗1 , R1∗ ) die Eigenschaft R1 = R1∗ haben und 8 (L1 , R1 ) ⊕ (L∗1 , R1∗ ) = (R0 ⊕ R0∗ , 0 . . . 0) = (001100, 000000) gilt. Die Strategie für die 4-Runden-Kryptoanalyse ist nun folgende: Wähle mehrere Klartext-Paare (L0 , R0 ), (L∗0 , R0∗ ) mit der Summe (011010, 001100) und bestimme (L4 , R4 ), (L∗4 , R4∗ ). Wir nehmen jetzt in jedem dieser Fälle an, dass R1 ⊕ R1∗ = (000000). Dann haben wir alle Zutaten, um eine 3-Runden-Kryptoanalyse der Runden 2, 3, 4 durchzuführen. In 83 dieser Fälle (dort wo die Annahme R1 ⊕ R1∗ = (000000) korrekt war) erhalten wir also eine Menge möglicher Schlüssel, in denen K4 vorkommt (genauer je zwei, die K4L und K4R enthalten). In den übrigen 85 der Fälle liefert die 3-Runden-Kryptoanalyse irgendwelche Mengen von zufälligen 8Bit-Strings. Da es keinen Grund gibt, dass hier ein 8-Bit-String besonders häufig vorkommt, kann man davon ausgehen, dass der richtige Schlüssel K4 insgesamt deutlich häufiger vorkommt als alle übrigen 8-Bit-Folgen. Wir geben ein Beispiel aus dem Buch von Trappe und Washington. Sie testeten (bei festem Schlüssel) ein vereinfachtes DES mit 100 Paaren (L0 , R0 ), (L∗0 , R0∗ ), so dass L0 ⊕ L∗0 = (011010) und R0 ⊕ R0∗ = (001100). Beachte: Es gibt 212 2 = 2048 viele solcher ungeordneten Paare. 63 Sie erhielten mit der beschriebenen Methode folgende Häufigkeiten der Kandidaten für K4L und K4R : 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Anzahl bei ersten 4 Bits (Kand. für K4L ) 12 7 8 15 4 3 4 6 33 40 35 35 59 32 28 39 Anzahl bei letzten 4 Bits (Kand. für K4R ) 14 6 42 10 27 10 8 11 8 16 8 18 8 23 6 17 Vermutung: K4L = (1100), K4R = (0010) Also: k = (10?110000) Teste, ob einer der beiden Schlüssel mit ? = 0 oder ? = 1 einen Block (L0 , R0 ) so in (L4 , R4 ) verschlüsselt wie das untersuchte 4-Runden DES. Wenn ja, so hat man höchstwahrscheinlich den Schlüssel. Wenn nein, so teste die Schlüsselmöglichkeiten mit anderen rechten und linken Hälften, die in der obigen Tabelle besonders häufig vorkommen. Differentielle Kryptoanalyse bei größeren Rundenzahlen Die Strategie bei größeren Rundenzahlen wird durch das Verfahren bei 4 Runden nahegelegt. Man gibt gewisse L0 , R0 , . . . L′t , Rt′ vor und berechnet Wahrscheinlichkeiten pi folgendermaßen: ∗ Falls nach der Runde i − 1 zwei Blöcke (Li−1 , Ri−1 ), (L∗i−1 , Ri−1 ) mit Li−1 ⊕ ∗ ′ ∗ ′ Li−1 = Li−1 und Ri−1 ⊕ Ri−1 = Ri−1 in Runde i chiffriert werden, so ist die Wahrscheinlichkeit, dass Li ⊕ L∗i = L′i und Ri ⊕ Ri∗ = Ri′ gilt, gerade pi . 64 Die Liste L′0 , R0′ , L′1 , R1′ , p1 , . . . L′t , Rt′ , pt nennt man eine t-Runden Charakteristik. Unter der Voraussetzung, dass alle pi voneinander unabhängig sind,17 ist dann p1 . . . pt die Wahrscheinlichkeit, dass für zwei Blöcke (L0 , R0 ), (L∗0 , R0∗ ) mit L0 ⊕ L∗0 = L′0 , R0 ⊕ R0∗ = R0′ nach jeder Runde i, i = 1, . . . t, Blöcke (Li , Ri ), (L∗i , Ri∗ ) entstanden sind mit Li ⊕ L∗i = L′i , Ri ⊕ Ri∗ = Ri′ . Insbesondere ist dies dann mindestens die Wahrscheinlichkeit nach der Runde t Blöcke (Lt , Rt ), (L∗t , Rt∗ ) mit Lt ⊕ L∗t = L′t und Rt ⊕ Rt∗ = Rt′ zu erhalten. Wie im Fall r = 4 wählt man bei beliebiger Rundenzahl r eine (r − 3)Runden-Charakteristik mit möglichst großem p1 . . . pr−3 und wendet dann die differenzielle Kryptoanalyse für die letzten drei Runden an (diese muss ∗ etwas modifiziert werden, da Rr−3 = Rr−3 nicht mehr gelten muss). Dies wird für eine genügend große Anzahl von Klartextblöcken mit der Differenz L′0 , R0′ durchgeführt: Man kennt Lr , Rr , L∗r , Rr∗ und vermutet mit einer Wahrscheinlichkeit von p = ∗ ′ p1 . . . pr−3 , dass (Lr−3 , Rr−3 ), (L∗r−3 , Rr−3 ) die Differenz (L′r−3 , Rr−3 ) haben. Die Ermittlung von Kr (wie bei r = 4) erfolgt durch Häufigkeitsanalysen. Klar: Je größer r, desto kleiner p, desto mehr Tests mit Klartextblöcken notwendig. Bei genügend großem r ist dann die vollständige Durchsuchung des Schlüsselraums effektiver. 17 Die Voraussetzung ist nicht streng erfüllt, da die Rundenschlüssel K1 , . . . Kt nicht unabhängig sind. 65 3.4 Der ’Data Encryption Standard’ DES DES ist (leicht modifizierte) Feistel-Chiffre. Klartextblöcke und Chiffretextblöcke bestehen aus 64 Bits. Schlüssellänge k hat 56 Bits, wird aber als 64-Bit-String beschrieben; die Bits an den Positionen 8, 16, 24, . . . 64 werden so gewählt, dass die 8 Teilblöcke zu 8 Bits jeweils 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 18 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. (Sie wurden möglicherweise gewählt, um Chips effizienter auszulasten; um 1970 war das von Bedeutung.) Zur Beschreibung des DES fehlen jetzt nur noch 1. Erzeugung der Rundenschlüssel 2. Angabe der fK 1. Rundenschlüsselerzeugung Sei k ∈ Z64 2 der DES-Schlüssel (mit den Parity-Bits wie oben beschrieben). 18 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. 66 Def. zunächst vi für 1 ≤ i ≤ 16 durch 1 für i = 1, 2, 9, 16 vi = 2 sonst 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 ). 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 In Runde i (i = 1, . . . 16) werden aus Ci−1 , Di−1 ∈ Z28 2 neue Ci , Di ∈ Z28 erzeugt, aus die2 sen wird dann der Rundenschlüssel Ki ∈ Z48 2 erzeugt. Ci entsteht aus Ci−1 durch zyklischen Linksshift um vi Stellen. Di entsteht aus Di−1 in der gleichen Weise. 64 2 k Di Ci Kompressionsabb. Ki fKi Eingabe Runde i+1: Ci 48 2 Di 56 2 (Also: In Runde 1, 2, 9, 16 Linksshift um eine Stelle, in den übrigen Runden um zwei.) Abbildung 10: Rundenschlüsselerzeugung Auf (Ci , Di ) ∈ Z56 2 wird eine Kompressionsabbildung angewandt, die aus (Ci , Di ) den Rundenschlüssel Ki ∈ Z48 2 herstellt. [Die Kompressionsabb. wählt 48 der 56 Bits von (Ci , Di ) aus und permutiert diese.] 57 58 59 60 31 30 29 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 67 Kompressionsabbildung 17 11 24 1 5 3 28 6 21 10 23 19 12 4 8 16 7 27 20 13 2 52 31 37 47 55 30 40 45 33 48 44 49 39 56 53 46 42 50 36 29 32 2. Beschreibung der Verschlüsselungsfunktion fKi Wie bei jeder Feistelchiffre wird aus der Ausgabe (Li−1 , Ri−1 ) ∈ Z64 2 der 64 (i − 1)-ten Runde die Ausgabe (Li , Ri ) ∈ Z2 der i-ten Runde erhalten durch: 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 , Ki ∈ Z2 der Rundenschlüssel für Runde i. 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 1. Schritt: Anwendung der Expansionsabbildung 48 e : Z32 2 → Z2 : R → e(R) 2. Schritt: Schlüsseladdition: e(R) ⊕ Ki = (B1 , B2 , . . . B8 ) ∈ Z48 2 Bi ∈ Z62 , i = 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. Bi ist Input für die S-Box Si . Ist Bi = (b1 b2 b3 b4 b5 b6 ), so wird durch b1 b6 die Zeile von Si 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 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 Ci = Si (Bi ) ∈ Z42 , die S-Box-Substitution von Bi . 4. Schritt: (C1 , C2 , . . . C8 ) ∈ Z32 2 wird abschließend einer sogenannten P-Box-Permutation unterworfen; das Ergebnis ist fKi (R) ∈ Z32 2 . P-Box-Permutation 16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25 68 14 4 13 0 15 7 4 1 14 15 12 8 1 4 8 2 2 14 13 4 15 1 3 13 0 14 13 8 8 14 6 4 7 15 7 11 10 10 1 3 10 0 13 7 13 6 1 10 9 14 0 9 4 9 13 0 6 3 8 6 7 13 13 8 10 6 3 15 14 11 9 0 0 6 12 10 3 5 0 6 2 12 4 1 7 14 11 2 12 4 4 2 1 11 10 11 8 12 7 1 12 1 10 15 10 15 4 2 9 14 15 5 4 3 2 12 9 7 2 9 4 11 2 14 13 0 11 7 1 4 11 13 6 11 13 8 15 4 12 1 13 2 8 1 15 13 7 11 4 2 1 14 6 10 9 4 4 8 1 7 S-Box 1 15 11 8 3 2 13 1 10 6 2 11 15 9 1 7 5 S-Box 2 11 3 4 9 2 8 14 12 4 13 1 5 15 4 2 11 S-Box 3 3 15 5 1 4 6 10 2 15 3 0 11 9 8 7 4 S-Box 4 6 9 10 1 15 0 3 4 11 7 13 15 1 13 8 9 S-Box 5 10 11 6 8 7 13 1 5 13 7 8 15 14 2 13 6 S-Box 6 2 6 8 0 12 9 5 6 8 12 3 7 5 15 10 11 S-Box 7 0 8 13 3 9 1 10 14 3 7 14 10 4 10 7 9 S-Box 8 15 11 1 10 3 7 4 12 12 14 2 0 10 8 13 15 10 6 12 5 6 12 11 9 12 9 7 3 11 3 14 10 9 5 10 0 0 3 5 6 7 0 8 6 0 9 3 5 5 10 11 5 2 15 14 9 13 12 7 11 4 8 5 14 12 11 1 2 12 5 10 15 14 3 11 5 2 8 15 1 14 7 2 12 2 7 1 4 4 15 14 9 8 4 2 14 2 13 12 1 10 6 12 6 9 7 12 0 8 2 3 5 5 11 12 12 1 10 14 5 2 11 12 7 5 3 15 13 0 15 10 3 9 12 5 6 15 0 9 10 0 9 3 4 7 8 0 13 14 9 8 6 0 14 5 3 13 3 4 14 7 5 11 1 13 14 0 11 3 8 0 4 10 1 13 11 6 14 1 7 6 0 8 13 12 3 15 5 9 5 6 0 9 3 5 6 6 10 12 9 7 5 12 2 8 0 15 14 14 11 13 0 10 15 5 2 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 9: Die 8 S-Boxen des DES, repräsentiert durch 8 4 × 16 Matrizen 69 32 R ZZ 2 e Expansionsabb. 48 e(R) ZZ2 + Ki 48 ZZ 2 B 1 B2 B 3 B 4 B 5 B6 B 7 B 8 S-Boxen S1 S2 S3 S4 S5 S6 C1 C2 C3 C4 C5 C 6 C 7 C 8 P-Box fKi (R) Bi S7 Ci 6 ZZ 2 S8 4 ZZ 2 P-Box-Permutation 32 ZZ 2 Abbildung 11: Schematische Darstellung der Berechnung von fKi (R) Sicherheit des DES 1) 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′ ). Daher muss man beim Brute-Force-Angriff nur max. 255 Schlüssel testen. 70 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 Tex 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 (85 % 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.19 2) 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 Genau für die 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. (Dadurch sind die semischwachen Schlüssel auch charakterisiert.)20 3) 16-Runden-DES ist gegen differentielle Kryptoanalyse sicher, da diese Methode den Entwicklern bekannt war. S-Boxen wurden entsprechend konstruiert. Z.B. gilt Folgendes: Für jede S-Box Si und jede Input-Differenz A′ ∈ Z62 hat höchstens ein Viertel der ungeordneten Paare {A, A∗ } mit A ⊕ A∗ = A′ die gleiche Output-Differenz Si (A) ⊕ Si (A∗ ). Bei einem Chosen-Plaintext-Angriff mit diff. Kryptoanalyse benötigt man 247 Klartextblöcke. Wendet man differentielle Kryptoanalyse als 19 20 Einzelheiten siehe Trappe und Washington [31], S. 118-122 Details siehe P. Horster [19] 71 Known-Plaintext-Angriff an (was auch möglich ist), so benötigt man 255 Klartextblöcke. Dies entspricht einem Brute-Force-Angriff (Durchsuchen des gesamten Schlüsselraums). Bei weniger als 16 Runden ist diff. Kryptoanalyse (als Known-Plaintext-Angriff) besser als vollständige Schlüsselsuche. Dies ist der Grund für die Wahl von 16 Runden. 4) 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 approxmieren – sogenannte lineare Kryptoanalyse (Known-plaintext-Angriff)21 – erwies sich DES als ausreichend sicher: Für das 16Runden DES werden 243 Klartext-Chiffretextblockpaare benötigt, um mit dieser Methode den Schlüssel zu bestimmen. Allerdings ist sie besser als differentielle Kryptoanalyse und vollständige Durchsuchung des Schlüsselraums. Beachte: Die Methode der linearen Kryptoanalyse war den Designern von DES nicht bekannt. Die S-Boxen sind bezüglich linearer Kryptoanalyse nicht optimiert. 5) 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 die S-Boxen in Runde i + 1 sorgt.) 6) 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 . 21 M. Mitsui; Linear cryptoanalysis method for DES cipher, Adv. in CryptologyEUROCRYPT ’93, Springer LNCS 765, 1994, S. 386-397. 72 Die 256 vielen DES -Verschlüsselungsfunktionen erzeugen also eine größere Gruppe (innerhalb der Gruppe S264 aller Permutationen der 264 vielen Blöcke der Länge 64 über Z2 ). Tatsächlich folgt aus Arbeiten von Coppersmith (1992) und Campbell/Wiener (1993), dass die von den DES-Verschlüsselungsfunktionen erzeugte Gruppe mindestens Ordnung 20 1, 94 · 102499 hat. (Beachte: |S264 | = (264 )! > 10(10 ) .) 7) Aufgrund von 6) 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 vielen einfachen DESVerschlüsselungen ermitteln (mit einem enormen Aufwand an Speicherplatz). Dies geschieht mit Hilfe der sog. Meet-in-the-Middle Attack, die für alle Mehrfachhintereinanderausführungen symmetrischer Verschlüsselungsverfahren funktioniert. Wir beschreiben sie 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 viele Vergleiche durchzuführen). Dies ist deutlich weniger aufwändig als N 2 viele Berechnungen für vollständige Schlüsselsuche. 8) Aufgrund von 7) 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.) Meet-in-the-Middle Attack erfordert jetzt etwa 2113 viele Berechnungen, und der benötigte Speicherplatz ist exorbitant. 73 3.5 Andere Blockchiffren Neben dem DES gibt es eine Reihe weiterer gebräuchlicher Blockchiffren. Wir beschreiben knapp die wichtigsten, bevor wir auf den neuen Advanced Encryption Standard (AES) eingehen. 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 Multiplikationen22 (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.23 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.24 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.25 22 genauer: modifizierte Multipliktion modulo 216 +1; 0 muss gesondert behandelt werden Details siehe Schmeh [28], S. 84-85 24 Details: http://www.faqs.org/rfcs/rfc2268.html 25 Details siehe Menezes, van Oorschott, Vanstone [26], S. 269-270 23 74 RC6 (1998 veröffentlicht) erreichte die Auswahlrunde der letzten AES-Kandidaten. Schnell und einfach zu implementieren. Variable Schlüssellänge (128, 192, 256 Bit), Blocklänge 128 Bit. 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. Rundenschlüssel und S-Boxerstellung ist recht aufwändig. Dennoch ist Blowfish ein schneller und einfach zu implementiernder Algorithmus (da nur XOR und + von 32 Bit-Worten). Blowfish gilt als sehr sicher. Twofish erreichte die Auswahlrunde der letzten fünf AES-Kandidaten. Schlüssellänge und Blocklänge wie bei RC6. Twofish ist Feistel-Chiffre. 8 × 8 S-Boxen, arithmetische Operationen z.T. in F28 . 4) Weitere gebräuchliche Blockchiffren sind • SAFER (Massey, 1995) • CAST (C. Adams, S. Tavares 1990; 1997. Wird auch von PGP verwandt.) • SKipjack (NSA, 1990; veröffentlicht 1998) • MISTY (Fa. Mitsubishi, 1996) Weiterentwicklung: KASUMI; vorgesehen für die symmetrische Verschlüsselung bei UMTS (Universal Mobile Telecommunication System)26 3.6 Der Advanced Encryption Standard (AES) - Das Rijndael-Verfahren 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. 26 Infos: http://www.infoserversecurity.org oder Buch von Schneier [29] 75 1998: 15 AES-Kandidaten werden eingereicht (darunter ’Magenta’, Deutsche Telekom) und begutachtet. 1999: Auswahl von 5 Algorithmen für die letzte Runde: • Twofish (s. 3.5) • RC6 (s. 3.5) • MARS (IBM, D. Coppersmith) • Serpent (R. Anderson, E. Biham, L. Knudsen; 32-Runden Feistel-Chiffre, DES-ähnlich) • Rjndael (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) in den USA. Zur Beschreibung des Rijndael-Algorithmus benötigen wir (auch für spätere Zwecke) einen kurzen Exkurs über endliche Körper 1) Endliche Körper haben immer Primzahlpotenzordnung pa und es gilt 1 + . . . + 1 = 0. ←−p−→ 2) Zu jeder Primzahlpotenz gibt es (bis auf Isomorphie) genau einen Körper. 3) Die Körper von Primzahlordnung sind gerade Zp = Z/pZ, auch bezeichnet als Fp . 4) Um einen Körper der Ordnung pa zu konstruieren, benötigt man ein irreduzibles Polynom m(x) = xa + ba−1 xa−1 + . . . + b1 x + b0 über Fp (also in Fp [x]) vom Grad a. Irreduzibel: m(x) ist nicht Produkt zweier Polynome vom Grad ≥ 1. Fp lässt sich dann auffassen als Menge aller Polynome über Fp vom Grad ≤ a − 1, wobei Addition und Multiplikation folgendermaßen definiert sind: a Addition komponentenweise 76 Multiplikation: Polynommultiplikation, dann Division durch m(x) mit Rest r(x); r(x) ist das Ergebnis der Multiplikation in Fpa . Bsp.: Konstruktion von F28 : m(x) = x8 + x4 + x3 + x + 1 ist irreduzibel über F2 8 F2 . = {a7 x7 + a6 x6 + . . . a1 x + a0 | ai ∈ F2 = {0, 1}} (x6 + x4 + x2 + x + 1) Mult. in F (x7 + x + 1): ⊙ ↑ 28 (später nur·) Zunächst normale Polynommultiplikation: (x6 + x4 + x2 + x + 1) · (x7 + x + 1) = x13 + x11 + x9 + x8 + x7 + x7 + x5 + x3 + x2 + x + x6 + x4 + x2 + x + 1 = x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1 Jetzt Division mit Rest durch m(x): (x13 +x11 +x9 + x8 + x6 +x5 +x4 + x3 +1) : (x8 + x4 + x3 + x + 1) = x5 + x3 x13 +x9 + x8 + x6 +x5 Rest x7 + x6 + 1 x11 x11 7 +x + x 6 +x4 + x3 +1 +x4 + x3 +1 x7 + x6 +1 Also: (x6 + x4 + x2 + x + 1) ⊙ (x7 + x + 1) = x7 + x6 + 1 Oft schreibt man die Elemente aus Fpa auch als a-Tupel über Fp (ba−1 xa−1 + . . . b1 x + b0 ↔ (ba−1 , . . . b1 , b0 )). Addition dann komponentenweise, aber 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 (modulo m̃(x)) zweier Polynome vom Grad ≤ a−1 ein anderes. Die entstehenden Körper sind aber isomorph. 77 5) Die multiplikativen Inversen eines Elements 6= 0 in Fpα berechnet man mit dem erweiterten Euklidischen Algorithmus in Fp [x]: g(x) 6= 0 (vom Grad ≤ a − 1) g(x) und m(x) sind teilerfremd. (d.h es gibt kein Polynom vom Grad ≥ 1, das g(x) und m(x) in Fp [x] teilt, denn m(x) ist irreduzibel.) Dann ex. u(x), v(x) ∈ Fp [x] mit g(x)u(x) + m(x)v(x) = 1 und Grad u(x) ≤ a − 1 (Berechnung siehe 6)) Dann g(x) ⊙ u(x) = 1 6) Der erweiterte Euklidische Algorithmus in Fp [x] funktioniert wie der in Z. Ist a(x) = s(x) · b(x) + r(x), Grad r(x) ≤ Grad b(x) (Grad 0 = −1) (Division mit Rest), so schreibe: s(x) = a(x) div b(x), r(x) = a(x) mod b(x) Erweiterter Euklidischer Algorithmus zur Bestimmung von u(x), v(x) mit a(x)u(x) + b(x)v(x) = ggT (a(x), b(x)) ← normiert o.b.d.A. a(x), b(x) normiert, Grad a(x) ≥ Grad b(x). (1) Setze 1 0 a(x) p(x) und A : = := 0 1 b(x) q(x) (2) Solange q(x) 6= 0, wiederhole: 0 1 A:=A· 1 −(p(x) div q(x)) q(x) p(x) = p(x) mod q(x) q(x) 1 u(x) =A· (3) Setze d(x) = p(x) und 0 v(x) Dann d(x) = ggT (a(x), b(x)) = u(x) · a(x) + v(x) · b(x) 78 Bsp: a(x) = x8 + x4 + x3 + x + 1 , b(x) = x7 + x6 + x3 + x + 1 über p(x) q(x) A 1 0 (1) x8 + x4 + x3 + x + 1 x7 + x6 + x3 + x + 1 (2) x7 + x6 + x3 + x + 1 x6 + x2 + x 1 x6 + x2 + x 0 d(x) u(x) v(x) 01 0 1 1 x +1 1 0 1 1 x +1 1 x +1 1 x + 1 = x + 1 x2 0 1 F2 1 x + 1 0 1 2 6 2 x+ 1 x 1 x + x + x x + 1 x7 + x6 + x3 + x + 1 = x2 x8 + x4 + x3 + x + 1 (3) 1 x + 1 x2 Teste: (x + 1)(x8 + x4 + x3 + x + 1) + x2 (x7 + x6 + x3 + x + 1) = 1 Ist F28 bzgl. m(x) = x8 + x4 + x3 + x + 1 (= a(x) oben) definiert, so ist (11001011)−1 = (00000100), denn x2 (x7 + x6 + x3 + x + 1) = (x + 1)m(x) + 1, d.h. x2 ⊙ (x7 + x6 + x3 + x + 1) = 1. 7) Algebraisch ist Fpa = ˜ Fp [x]/(m(x)), wobei (m(x)) das von m(x) erzeugte Ideal ist. Die Polynome vom Grad ≤ a − 1 bilden ein vollständiges Vertretersystem der Restklassen modulo (m(x)). Nun zur Beschreibung des Rijndael-Algorithmus: Rijndael ist eine iterierte Blockchiffre, aber keine Feistel-Chiffre. 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.) 79 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 12: Schematischer Ablauf des Rijndael-Verfahrens 80 Der Ablauf des Rijndael-Verfahrens ist auf Seite 80 skizziert. Die Zwischenergebnisse S0 , S1 , . . . S9 werden in Rijndael Zustände genannt. Jede Runde, bis auf die zehnte, besteht aus drei Layern: ByteSub-Transformation: Nichtlineare Transformation; dient dem Schutz gegen differentielle und lineare Kryptoanalyse. ShiftRow-Transformation: Dient der Diffusion MixColumn-Transformation: Dient ebenfalls der Diffusion In Runde 10 werden nur die ByteSub-Transformation und die ShiftRow-Transformation vorgenommen (s. Abb. unten): S Die Schlüsseladdition (bin.Add.,XOR) AddRoundKey wird als 4. Layer berechnet. i-1 ByteSub Runde i Wir beschreiben nun die 3 Layer ByteSub, ShiftRow, MixColumn 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 ein Byte, d.h. einen 8-Bit-String ist: a00 a10 a20 a33 a01 a11 a21 a31 a02 a12 a22 a32 a03 a13 a23 a33 ShiftRow entfällt für i = 10 MixColumn + Ki Si Abbildung 13: Transformationen Die Bytes sind spaltenweise zu lesen, 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. 81 ByteSub-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 ByteSub-Transformation. Sei g = b7 b6 . . . b0 ein Byte. Die ByteSub-Transformation umfasst zwei Schritte: 1. Schritt: Fasse g als Element in F28 auf und berechne g −1 in g 6= 00 . . . 0. Falls g = 0 . . . 0, so bleibt g ungeändert. 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 ByteSub-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. 79) 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 ByteSub-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 b2 b0 die Spalte (Zeilen u. Spalten mit 0, . . . 15 nummeriert). Der Eintrag an der entsprechenden Stelle ist die Zahl, die binär codiert die ByteSub-Transformation von b7 . . . b0 angibt. (Schneller als jedesmal Inverse und affine Transformation zu berechnen.) In ByteSub wird durch g → g −1 die Nichtlinearität (über F2 ) sicherstellt. Die Einfachheit dieser Abbildung könnte ggf. kryptoanalytische Angriffe ermöglichen; daher ist eine affine Abbildung nachgeschaltet. Sie sorgt auch dafür, dass der Output von ByteSub nie mit dem Input oder dem Komplement des Inputs übereinstimmt (Byte-weise). ShiftRow-Transformation Jede der vier Zeilen der 4 × 4-Matrix, die man nach ByteSub 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. MixColumn-Transformation Jedes der Bytes in der Input 4 × 4-Matrix wird als Element in F28 aufgefasst. Diese 4 × 4-Matrix wird von links mit 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 multipliziert; die Eintäge dieser Matrix sind auch als Elemente von zufassen. Die Matrizenmultiplikation erfolgt über F28 . F2 8 auf- 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 wer83 den 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) 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 Wende auf b, c, d, a die ByteSub-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 Entschlüsselung Alle einzelnen Transformationen in Rijndael sind invertierbar. Kehre Algorithmus um und ersetze alle Transformationen durch ihre Inverse. Entschlüsselung ist um ca. 30% langsamer als Verschlüsselung, da die Einträge in der inversen Matrix von MixColumn komplexer sind als die der zur Verschlüsselung genutzten Matrix. Sicherheit Nach zwei Runden hat man vollständige Diffusion: Jedes der 128 Output-Bits nach Runde 2 hängt von jedem der 128 Klartextblockbits ab. Rijndael ist gegen alle bekannten kryptoanalytischen Angriffe sicher; insbesondere wurde ShiftRow eingefügt, um gegen zwei relativ neue kryptoanalytische Angriffe ( truncated differentials“und Square-attack“ – ’Square’ war ein Vorläufer ” ” von Rijndael) – sicher zu sein. Alle bekannten Angriffe sind bei mehr als sechs Runden nicht besser als Brute Force. Die Schlüsselerzeugung mittels ByteSub soll verhindern, dass bei Kenntnis von Teilen des Schlüssels die übrigen Bits einfach zu ermitteln 84 sind. Außerdem sorgt dies dafür, dass verschiedene Ausgangsschlüssel nie viele Rundenschlüssel gemeinsam haben. 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. möglich (zum Vergleich: DES ca. 80 MBit/sec.). Bei HardwareImplementierung über 1 GBit/sec. 3.7 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 A verschlüsselt. Schlüsselmenge K, k ∈ K, so Ek Verschlüsselungsfunktion, Dk Entschlüsselungsfunktion. 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 n 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. Kann die Kryptoanalyse erleichtern; z.B. 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. Man kann die Sicherheit des ECB Mode steigern, wenn Blöcke nur teilweise aus dem Klartext und teilweise aus zufälligen Zeichen gebildet werden. 85 Cipherblock Chaining Mode (CBC Mode) Diese Betriebsart wurde erfunden, um einige der Probleme des ECB Mode zu beseitigen. Im CBC Mode hängt die Verschlüsselung eines Blocks auch von den vorhergegangenen Blöcken ab (kontextabhängige Verschlüsselung). Es sei A = {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 ) Vorteile: Gleiche Klartextblöcke in unterschiedlichem Kontext werden i.a. verschieden verschlüsselt. Man erkennt beim Entschlüsseln, ob Chiffretextblöcke geändert oder in der Reihenfolge verändert worden sind. Übertragungsfehler in einem Block cj macht sich bei der Entschlüsselung höchstens bei mj und mj+1 bemerkbar. Selbst bei Verwendung unterschiedlicher Initialisierungsvektoren kann der Empfänger höchstens den ersten Block nicht korrekt entschlüsseln. 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. Cipher Feedback Mode (CFB Mode) Hier wieder A = {0, 1}. CFB Mode ist eine stromchiffreähnliche Betriebsart von Blockchiffren, die eine Verschlüsselung von Klartexten ermöglicht, ohne abwarten zu müssen, 86 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 bedeutet 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 !) Ij+1 = Rn−r (Ij )|cj (Beachte: cj ⊕ Lr (Ek (Ij )) = pj ⊕ Lr (EK (Ij )) ⊕ Lr (EK (Ij )) = pj ) Man sieht an der Beschreibung, dass der CBC Mode wie eine Stromchiffre (auf r-Bit Strings) funktioniert, wobei der Schlüsselstrom 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. Übertragungsfehler in einem Chiffretextblock wirken sich solange aus, bis der fehlerhafte Block aus Ij herausgeschoben wurde, d.h. auf die nächsten ⌈ nr ⌉ Blöcke. Beachte: CFB Mode hängt nur von der Geschwindigkeit der Blockverschlüsselung (nicht Entschlüsselung) ab. Bei AES beispielsweise macht sich also die geringere Entschlüsselungsgeschwindigkeit nicht bemerkbar. 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. 87 Output Feedback Mode (OFB Mode) Wieder A = {0, 1}. Analog zu CFB, nur wird Ij+1 = Ek (Ij ) gesetzt. Der Schlüsselstrom Lr (Ek (Ij )) hängt also nur von IV und k ab. Die Verschlüsselung von Klartextblöcken hängt daher nur von der Position und nicht von den vorhergehenden Klartextblöcken ab. Daher können nach OFB Mode verschlüsselte Nachrichten leichter manipuliert werden als im CFB Mode. Vorteil: Übertragungsfehler in einem cj machen sich bei der Entschlüsselung nur bei cj und bei keinem anderen Chiffretextblock bemerkbar. 88 4 Stromchiffren und Pseudozufallsfolgen In Abschnitt 2.1.d hatten wir polyalphabetische Substitutionen, insbesondere Lauftextverschlüsselungen (z.B. One-Time-Pad) als Beispiele von Stromchiffren kennen gelernt. 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 (asynchrone) Stromchiffren. 4.1 Synchrone Stromchiffren Sie sind dadurch gekennzeichnet, daß 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(ki , mi ) = 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(ki , mi ) = ki ⊕ mi ), so spricht man von binären additiven Stromchiffren (Bsp. One-Time-Pad). (Synchrone Stromchiffren entsprechen ECB bzw. OFB Mode bei Blockchiffren.) 89 4.2 Selbstsynchronisierende (asynchrone) 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(k, zi ) Funktion zur Erzeugung des Schlüsselstroms ci = E(ki , mi ) Verschlüsselungsfunktion mi = D(ki , ci ) Entschlüsselungsfunktion zi c i-t c ki g k c i-1 ... i-t+1 . E ci mi Abbildung 14: Verschlüsselung zi c i-t c c i-1 ... i-t+1 . ci k ki g Abbildung 15: Entschlüsselung 90 D mi Typische Vertreter selbstsynchronisierender Stromchiffren sind Blockchiffren im 1-Bit CFB Mode (d.h. r = 1 im CFB Mode; s. Abschnitt 3.7; 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 viele werden falsch entschlüsselt. Bsp: t = 2 Verschl.: ... m m 8 9 k =g(k,c ,c ) 6 7 y· y8 . . . c8 c9 m10 y· c/// 10 |{z} geht verloren ... Entschl.: c8 c9 c11 k =g(k,c ,c ) g(k,c ,c ) 6 7 y· 8 9 y8 y . . . m8 m9 m e 11 m11 m12 m13 y· y· yk13 =g(k,c11 ,c12 ) c11 c12 c13 c12 g(k,c ,c ) 9 11 y m e 12 c13 k =g(k,c ,c ) 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. 91 4.3 Schieberegister Def.: Ein (rückgekoppeltes) Schieberegister (feedback shift register) über dem endlichen Körper F ist eine Maschine, die aus n vielen Verzögerungsgliedern S0 , . . . Sn−1 (stages) besteht, die einen Input und eine Output besitzen und ein Element aus F speichern können; einer Uhr, die den Transport der Daten (= Elemente aus F) kontrolliert; und einer Recheneinheit, die eine fest vorgegebene Funktion f : Fn → F berechnet. n heißt Länge des Schieberegisters. Recheneinheit f( a j-1 , a j-2 a a j-1 j . S n-1 , ... , a j-n ) S n-2 a j-n a j-n+1 a j-2 . . S1 S0 . Output Verzögerungsglieder Abbildung 16: Rückgekoppeltes Schieberegister Während jeder Zeiteinheit werden folgende Operationen durchgeführt: • Der Inhalt von S0 wird ausgegeben und ist Teil der Output-Folge. • Der Inhalt von Si wird an Si−1 weitergegeben, i = n − 1, . . . 1. • Der neue Inhalt von Sn−1 ist aj = f (aj−1 , . . . aj−n ), wobei aj−i der frühere Inhalt von Sn−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 Si (im (j − n + 1)-ten Zeittakt) j = n + 1, n + 2, . . . heißen die Zustände des Schieberegisters. Also: Inhalt von Sn−1 Sn−2 0. Zeittakt an−1 an−2 1. Zeittakt an = f (an−1 , . . . a0 ) an−1 2. Zeittakt an+1 = f (an , . . . a1 ) an 92 ... ... ... ... S1 a1 a2 a3 S0 a0 a1 → Output a0 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 mit n Verzögerungsgliedern 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 |F|n vielen möglichen Zuständen. Daher gibt es Zeitpunkte t1 < t2 , in denen sich das Schieberegister in den gleichen Zuständen 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 p, d.h. ai = ai+p für alle i ≥ j0 . 4.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 ∈ F, so heißt das Schieberegister ein lineares Schieberegister (LSR). (Die cj heißen dann auch Rückkopplungskoeffizienten.) Es gilt also: aj = n−1 P ci aj−n+i i=0 Im wichtigsten Fall F = F2 lässt sich ein lineares Schieberegister also folgendermaßen darstellen (binäres LSR): XOR-Gatter aj c n-2 c n-1 a j-1 S n-1 . S n-2 . c1 a j-2 S1 . c0 a j-n+1 S0 .a j-n Output AND-Gatter (sind nur dort erforderlich, wo c i =1) i Abbildung 17: Binäres lineares Schieberegister der Länge n 93 Bsp.: f (x3 , x2 , x1 , x0 ) = x2 + x0 Anfangszustand (a0 , a1 , a2 , a3 ) = (1011) t S3 S2 S1 S0 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 . . . Eigenschaften von linearen Schieberegistern: 1) 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. Solche LSR heißen dann nicht-singulär. 2) Ein (nicht-singuläres) LSR ist periodisch, d.h. es ex. p mit at = at+p für alle t ≥ 0. Das kleinste solche p heißt Periode des LSR. [Wähle j minimal mit aj+t = aj+t+p für alle t ≥ 0. Ang. j > 0. Dann aj−1 6= aj−1+p Es ist aj−1+n = c0 aj−1 + c1 aj + . . . + cn−1 aj−2+n und aj −1+n = aj−1+n+p = c0 aj−1+p + c1 aj+p + . . . + cn−1 aj−2+n+p |{z} | {z } |{z} ≥0 aj aj−2+n Also c0 aj−1 = c0 aj−1+p und wegen c0 6= 0 dann aj−1 = aj−1+p , Widerspruch.] 3) Kommt unter den Zuständen eines LSR einmal (0, . . . 0) vor, so verbleibt das LSR immer im Zustand (0, . . . 0). Also nach 2): Ein nicht singuläres LSR der Länge n mit dem Anfangszustand 6= (0, . . . 0) hat eine Periode ≤ |F|n − 1, im binären Fall also ≤ 2n − 1. 4) 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). 94 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(x) = c0 + c1 x + . . . + cn−1 xn−1 + xn Es gilt: Satz: Genau dann hat das (nicht singuläre) binäre LSR der Länge n Periode 2n − 1, wenn sein charakteristisches Polynom primitiv ist. Was bedeutet Primitivität von p(x)? Primitiv bedeutet: 1) p(x) ist irreduzibel 2) Im Körper F2n , der durch das irreduzible Polynom p(x) definiert wird (siehe Seite 76), hat das Element x die Eigenschaft: 2n −1 xr 6= 1 für 1 ≤ r < 2n − 1 |x {z } = 1, |{z} Potenzen in F2n (x ist ein erzeugendes Element der zykl. Gruppe F2n \ {0}.) Das läßt sich in F2 [x] auch so beschreiben: n p(x) | x2 −1 − 1 , p(x) ∤ xr − 1 für alle 1 ≤ r < 2n − 1 Es gibt genau Φ(2n −1) n n viele primitive Polynome über F2 von Grad n. [F2n \ {0} hat Φ(2 − 1) viele Erzeugende; mit α bestimmen auch n−1 α, α2 , α4 , . . . α2 das gleiche primitive Polynom.27 ] 5) 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). 6) m-Folgen haben gute statistische Eigenschaften hinsichtlich der Eigenschaft als Pseudozufallsfolgen zu gelten (dazu später mehr). 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. 27 Beweis: z.B. Lidl, Niederreiter: Introduction to Finite Fields and their applications [25] 95 4.5 Lineare Komplexität und Bestimmung von Schieberegisterfolgen aus Teilfolgen Ist (a0 , a1 , . . .) eine binäre Folge mit Periode p, so gibt es immer mindestens ein binäres LSR, das diese Folge erzeugt: Wähle LSR von Länge p, c0 = 1, c1 = . . . = cp−1 = 0 Anfangszustand (a0 , a1 , . . . ap−1 ) [Im allgemeinen gibt es mehrere: Bsp. von Seite 94: Outputfolge wird auch erzeugt von LSR der Länge 2 mit f (x1 , x0 ) = x1 + x0 , Anfangszustand (a0 , a1 ) = (10)] 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 p, so setze a(x) = a0 + a1 x + . . . + ap−1 xp−1 und q(x) = xp + 1 ggT(a(x), xp + 1) Ist Grad q(x) = n, so ist p(x) = xn q( x1 ) (das reziproke Polynom von q) das charakteristische Polynom des LSR von minimaler Länge (= Grad p(x) = n), das (a0 , a1 , . . .) erzeugt.28 Es gilt nun: Satz: Sei (a0 , a1 , . . .) eine periodische binäre Folge der linearen Komplexität n. Dann sind n aufeinanderfolgende ‘Zustandsvektoren’ der Länge n (am , am+1 , . . . am+n−1 ), . . . , (am+n−1 , am+n , . . . am+2n−2 ) 28 Literatur z.B. H. Beker, F. Pieper, Cipher Systems, Northwood Books, 1982 96 (m ∈ N0 beliebig) linear unabhängig. Beweis: Für t ≥ 0 sei vt = (at , at+1 , . . . , at+n−1 ). Ist p(x) = c0 + c1 x + . . . + cn−1 xn−1 + xn das charakteristische Polynom des LSR kürzester Länge n, das (a0 , a1 , . . .) erzeugt, so setze 0 1 C= 0 . .. 0 0 .. . .. . 0 1 0 0 0 ... co c1 .. . .. . 0 1 cn−1 Det C = c0 . Klar: c0 = 1. Dann vt+1 = vt C für alle t. Genau dann sind vm , . . . vm+n−1 linear unabhängig, wenn v0 = vm C −m , . . . vn−1 = vm+n−1 C −m linear unabhängig sind. Ang. v0 , . . . vn−1 sind linear abhängig. Wähle t ≤ n − 1 minimal mit v0 , . . . vt linear abhängig. Dann existiert d0 , . . . dt ∈ F2 mit d0 v0 + . . . + dt vt = 0, dt = 1. Also: vt = t−i P dj vj j=0 Dann gilt für alle i ≥ 0 : vt+i = vt C i = Daher: at+i = t−i P j=0 t−i P j=0 dj vj C i = t−i 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, q.e.d. Sei nun (a0 , a1 , . . .) eine binäre periodische Folge der linearen Komplexität n. (Beachte: Die Periode kann dann maximal 2n − 1 betragen.) Bekannt seien ar , ar+1 , . . . ar+2n−1 . Man möchte die Rückkopplungskoeffizienten c0 , . . . cn−1 des minimalen LSR bestimmen , das (a0 , a1 , . . .) erzeugt. 97 Es gilt: at+n = n−1 P i=0 ci at+i , t = r, r + 1, . . . r + n − 1, d.h. (*) (ar+n , . . . ar+2n−1 ) = (c0 , . . . cn−1 ) · A mit ar ar+1 .. . ... ... ar+n−1 ar+n .. . A= ar+n−1 . . . ar+2n−2 Die linke Seite und die Matrix A sind bekannt. Man kann daher (*) als lineares Gleichungssystem für c0 , . . . cn−1 betrachten. Nach dem vorigen Satz sind die Spalten von A linear unabhängig, d.h. A ist invertierbar. Damit lässt sich (c0 , . . . cn−1 ) = (ar+n , . . . ar+2n−1 ) · A−1 bestimmen. Es bleibt allerdings folgendes Problem: Wenn der Angreifer ein Teilstück der Schieberegisterfolge kennt, so kann er i.a. 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. Hierfür 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(r2 ) Bit-Operationen bestimmt. Ist also r ≥ 2n, so ist (nach obigem Verfahren) n auch die lineare Komplexität der gesamten Schieberegisterfolge und das minimale LSR kann bestimmt werden.29 4.6 Schieberegister zur Schlüsselstromerzeugung Wir hatten in Unterkapitel 4.5 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 29 Literatur: Lidl, Niederreiter [25] 98 mit den am Ende von 4.5 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. Solche nicht-lineare Schieberegister sind aber bis auf Ausnahmefälle mathematisch nur schwer, wenn überhaupt, zu analysieren, so dass dieser Weg kaum beschritten wird. Stattdessen werden in der Praxis folgende Möglichkeiten (und Variationen hiervon) verwendet: • Nichtlineare Kombination von linearen Schieberegistern LSR 1 LSR 2 f Schlüsselstrom LSR Abbildung 18: 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. • Nichtlineare Filtergeneratoren f erzeugt aus den Zuständen des LSR den Schlüsselstrom, ist also eine nicht-lineare Funktion f : Zn2 → Z2 . (siehe Abbildung 19) 99 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 19: Nichtlineare Filtergeneratoren • 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 20: 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. 100 4.7 Andere Stromchiffren Es gibt eine Vielzahl von Stromchiffren, die nicht auf Schieberegistern beruhen, z.B. A5 (Verschlüsselung von Verbindungen zwischen Handy und Basisstation bei GSM-Standard), SEAL (Software-optimized Encryption Algorithm, entwickelt von IBM im Jahr 1993) oder RC 4. Wir beschreiben RC 4 etwas genauer: Entwickelt 1987 von Ron Rivest, bis 1994 geheimgehalten (dann von unbekanntem Urheber im Internet veröffentlicht). Ausgangsschlüssel (Schlüssellänge variabel). Dieser bestimmt eine Permutation S0 , . . . , S255 der Zahlen 0, . . . , 255 (dargestellt als Bytes), die gleich beschrieben wird. Die durch den Schlüssel erzeugte Anfangsfolge S0 , . . . , S255 (seed) wird mit folgender Fortschaltfunktion bearbeitet: Initialisierung: i := 0; j := 0. Wiederhole: i := i + 1 i0 := i mod 256 j := (j + Si0 ) mod 256 vertausche Si0 und Sj t := (Si0 + Sj ) mod 256 ki := St Das Byte ki wird mit dem i-ten Byte des Klartextes XOR- verknüpft. Erzeugung von S0 , . . . S255 aus dem Ausgangsschlüssel: Initialisiere Si := i Schreibe Schlüssel byteweise als Zahlenfolge b0 , b1 , . . . b255 . Ist der Schlüssel kleiner als 8×256 = 2048 Bit, so wird er mehrfach hintereinander geschrieben. Danach: j := 0 Für i = 0 bis 255: j := j + Si + bi mod 256 Vertausche Si und Sj . RC 4 ist einfach und sehr schnell. Kryptoanalytische Schwächen sind nicht bekannt (bei ausreichend langer Schlüssellänge, z.B. 128 oder 256 Bit).30 30 Einzelheiten zu den o.g. Stromchiffren und anderen: B. Schneier, Angewandte Kryptographie [29] 101 4.8 Pseudozufallsfolgen Wie beschränken uns im Folgenden auf binäre Folgen, also Folgen von Bits. 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 Zahl, 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. Dementsprechend würde man 00 . . . 0 oder 0101 . . . 01 nicht als Zufallsfolgen bezeichnen. 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. 4.8.a Die Golomb-Postulate Einer der ersten Versuche, notwendige Bedingungen für Pseudozufallsfolgen anzugeben, stammt von S.W. Golomb (1967). Er postulierte drei Bedingungen, die von einer Folge erfüllt sein müssen, damit sie als Pseudozufallsfolge angesehen werden kann. Diese Bedingungen spiegeln statistische Eigenschaften wider, die eine genügend lange Folge, welche von einer binären symmetrischen Quelle erzeugt wird, mit großer Wahrscheinlichkeit erfüllt (nach dem Gesetz der großen Zahl). 102 Diese sog. Golomb-Postulate sind heute eher von historischem Interesse; sie sind dennoch instruktiv und sollen hier daher kurz dargestellt werden. Golomb betrachtet periodische Folgen (wie sie z.B. von Schieberegistern erzeugt werden) und untersucht die ‘Zufälligkeit’ einer Periode. Sei also s = s0 s1 s2 . . . eine unendliche Bitfolge mit Periode p. Wir benötigen zur Formulierung der Golomb-Postulate einige Begriffe: • Ein run ist eine Folge si si+1 . . . sk aufeinanderfolgender Elemente der Folge, die alle gleich sind, si−1 6= si (falls i > 0) und sk 6= sk+1 . Die Anzahl k − i + 1 der Elemente des runs heißt Länge des runs. Runs aus Einsen heißen Blöcke (blocks), runs aus Nullen heißen Lücken (gaps). Bsp.: 0111001 Lücke der Länge 1, gefolgt von Block der Länge 3, gefolgt von Lücke der Länge 2 • Sei 0 ≤ t < p Vergleiche die ersten p Terme von s0 s1 . . . sp−1 mit den ersten p Termen der um t Positionen verschobenen Folge st st+1 . . . st+p−1 . Sei At die Anzahl der Positionen, an denen diese beiden Folgen übereinstimmen, und Dt = p − At die Anzahl der Positionen, wo sie nicht übereinstimmen. Also: At − Dt = p−1 P (−1)si +si+t i=0 Die Autokorrelationsfunktion C(t) ist definiert durch C(t) = At − Dt p Ist t = 0, so C(0) = 1. Ansonsten: −1 ≤ C(t) < 1. Je größer C(t), desto größer die Übereinstimmung der Periode der Ausgangsfolge mit der verschobenen; je kleiner, desto geringer. Bsp.: 10110 01101 11010 10101 01011 C(1) = − 53 C(2) = − 51 C(3) = 51 C(4) = − 53 103 Golomb-Postulate (R1) In s0 , . . . sp−1 gilt: |Anzahl Nullen − Anzahl Einsen| ≤ 1 (d.h. = 0, falls p gerade; = 1, falls p ungerade) (R2) In s0 , . . . sp−1 gilt: Hälfte der runs hat Länge 1 Viertel der runs hat Länge 2 .. . Der 1 -te 2i Teil der runs hat Länge i (solange es mind. 2i viele runs gibt) Ferner: Für jede dieser Längen gibt es gleich viele Blöcke wie Lücken (±1). (R3) Die Autokorrelationsfunktion ist konstant für t 6= 0, d.h. C(t) = C(t′ ) für alle 0 < t, t′ < p. Bedeutung der Golomb-Postulate: (R1) Beschreibt Gleichverteilung von Nullen und Einsen. (R2) Nach einer ununterbrochenen Folge von Nullen oder von Einsen (der Länge i) ist die Wahrscheinlichkeit 50 %, dass die Folge mit 0 (bzw. 1) fortgesetzt wird. (R3) Beschreibt Unabhängigkeit der Folgenglieder. [Tatsächlich wird man erwarten, dass At und Dt etwa gleich groß sind, C(t) also klein ist.] Periodische Folgen, die die Golomb-Postulate erfüllen, werden pn-Folgen (pseudo noise) genannt. Man kann zeigen: m-Folgen (d.h. Schieberegisterfolgen der Periode 2n − 1, die von LSR der Länge n erzeugt werden) erfüllen die Golomb-Postulate, wobei die Autokorrelationsfunktion den Wert C(t) = 2n−1 für 0 < t < 2n − 1 hat.31 −1 Damit ergibt sich: m-Folgen sind, jedenfalls nach den Golomb-Postulaten, gute Pseudozufallsfolgen, nach den Ergebnissen von Kapitel 4.5 aber kryptologisch untauglich. 31 Beweis: s. Beker, Piper, Cipher Systems [6] 104 4.8.b Statistische Tests Die Golomb-Postulate werden heute kaum für Pseudozufallsfolgentests verwendet. Zum einen sind die Forderungen an die Anzahlen der Nullen und Einsen bzw. der runs und die Autokorrelationsfunktion zu rigide; eine Folge, die (R1),(R2),(R3) erfüllt, ist hinsichtlich der dadurch getesteten Gleichverteilungs- und Unabhängigkeitsbedingungen schon fast zu ‘perfekt zufällig’. Zum anderen gibt es weitere Eigenschaften, die man von Pseudozufallsfolgen erwarten würde, die durch (R1),(R2),(R3) nicht abgedeckt werden. Aus diesen Gründen werden häufig Verfahren der statistischen Testtheorie angewandt, um Folgen auf ‘Zufälligkeit’ zu testen. Wie geschieht dies? Wir betrachten 0-1-Folgen der Länge n. Eine binäre symmetrische Quelle erzeugt jede 0-1-Folge der Länge n mit gleicher Wahrscheinlichkeit ( 21 )n . Wir betrachten also den Wahrscheinlichkeitsraum Ωn der 0-1-Folgen der Länge n mit der Gleichverteilung. Auf Ωn untersuchen wir Zufallsvariablen (d.h. Funktionen X : Ωn → R) und betrachten deren Verteilung auf Ωn . Z.B. Zufallsvariable X : Anzahl der Einsen in einer Folge. X ist binomialverteilt. Bsp.: n = 6 Wert von X Anzahl der Folgen = 0 1 1 6 2 15 20 3 4 15 5 6 6 1 n i 105 p(X = i) = ni · ( 12 )n 0, 016 0, 094 0, 234 0, 313 0, 234 0, 094 0, 016 p(X = 3) ≈ 0, 31 p(2 ≤ X ≤ 4) ≈ 0, 78 p(1 ≤ X ≤ 5) ≈ 0, 97 Abbildung 21: Wahrscheinlichkeitsfunktion p(X = i) der binomialverteilten Zufallsgröße X für n = 6 Wenn wir jetzt eine gegebene 0-1-Folge auf Pseudozufälligkeit testen, könnte ein Test darin bestehen, ob die Anzahl der Einsen untypisch für eine zufällig gewählte 0-1-Folge ist. Sollte unsere Folge nur aus Nullen bestehen, so ist die Wahrscheinlichkeit nur 1,5%, dass eine zufällig gewählte 0-1-Folge diese Eigenschaft hat. Dann wird man wohl sagen, dass sie den Test auf Pseudozufälligkeit nicht bestanden hat. Anders ausgedrückt: Die Wahrscheinlichkeit, dass wir diese Folge als nichtzufällig abgelehnt haben, obwohl sie tatsächlich von einer binären Quelle erzeugt worden ist, beträgt 1,5%. Bleiben wir bei der binomialverteilten Zufallvariablen ‘Anzahl der Einsen’. In der Testtheorie geht man nun so vor, dass man eine Wahrscheinlichkeit α (das Signifikanzniveau des Tests) festlegt (z.B. α = 5%) und in der Dichtefunktion der Binomialverteilung links und rechts jeweils den Bereich markiert, in den ein Anteil von α2 aller 0-1-Folgen fallen. Dies ist der sog. Ablehnungsbereich: Fällt eine zu testende 0-1-Folge in diesen Bereich, so lehnen wir sie als ‘Pseudozufallsfolge’ ab (und nehmen dabei einen Fehler von α – hier 5% – in Kauf, dass es sich doch um eine durch eine binäre symmetrische Quelle erzeugte Folge gehandelt hat). α = 5%: n = 6: Ablehnungsbereich: n1 = 0 oder n1 = 6 106 (n1 = # der Einsen) n = 20: Ablehnungsbereich: 0 ≤ n1 ≤ 5 oder 15 ≤ n1 ≤ 20 Abbildung 22: Ablehnungsbereich einer binären 0-1-Folge der Länge 20 hinsichtlich der Zufallsvariablen Anzahl der Einsen“ ” (Test: Nullhypothese H0 : ‘Folge ist zufällig’ wird auf Signifikanzniveau α abgelehnt.) Die Berechnung der Binomialverteilung wird für große n immer beschwerlicher. Man kann dies umgehen, indem man die Binomialverteilung für große n durch eine Normalverteilung approximiert. Tatsächlich verwendet man beim Test bzgl. der Häufigkeit von Einsen eine andere Zufallsvariable: n0 = # der Nullen (n0 − n1 )2 X1 = n n1 = # der Einsen n = n0 + n1 Es ist klar, dass bei grossen n die meisten 0-1-Folgen kleine X1 -Werte haben. Große X1 -Werte sind unwahrscheinlich. Der Vorteil der Verwendung der obigen Zufallsvariablen (oder Statistik) X1 liegt darin, dass sich X1 für große n durch eine stetige Verteilungsfunktion gut approximieren lässt, die sog. χ2 -Verteilung mit 1 Freiheitsgrad ; diese ist unabhängig von n. 107 Beim Test einer 0-1-Folge auf Pseudozufälligkeit bzgl. der Anzahl der Einsen berechnet man deren X1 -Wert und vergleicht diesen mit dem Wert, der bei geg. α in Tabellen der χ2 -Verteilung als Ablehnungsschwelle Vα angegeben ist; ist der Wert von X1 größer als Vα , so wird die 0-1-Folge als nicht-zufällig abgelehnt. (Einseitiger Test) Für α = 5% beträgt Vα = 3, 84. n= 6: n = 20 : n0 0 1 2 3 4 5 6 X1 > 3, 84 ⇔ n0 = 0 oder n0 = 6 X1 > 3, 84 ⇔ 0 ≤ n1 ≤ 5 oder 15 ≤ n1 ≤ 20 (15−5)2 (14−6)2 = 5, = 3, 2 20 20 X1 6 2, 66 0, 66 0 0, 66 2, 66 6 Abbildung 23: Wahrscheinlichkeitsfunktion der Zufallsvariablen X1 für n = 6 und n = 20 108 Wir halten fest: Im Gegensatz zu den Golomb-Postulaten, wo eine 0-1-Folge der Periode p dann als Pseudozufallsfolge akzeptiert wird, wenn z.B. die Anzahl der Einsen innerhalb der Periode genau dem Erwartungswert der entsprechenden Zufallsvariablen auf Ωp entspricht, wird bei dem beschriebenen Test eine Folge nur dann abgelehnt, wenn ihre Anzahl von Einsen extrem vom Erwartungswert abweicht. Um eine 0-1-Folge als Pseudozufallsfolge zu akzeptieren, werden daher in der Praxis mehrere Tests bzgl. anderer Eigenschaften durchgeführt. Z.B.: • Untersuchung der Verteilung der Paare 00, 01, 10, 11 innerhalb der Folge (2-Bit-Test). Als Teststatistik wird hier X2 = 4 2 (n200 + n201 + n210 + n211 ) − (n20 + n21 ) + 1 n−1 n verwendet, die für große n durch eine X 2 -Verteilung mit zwei Freiheitsgraden approximiert wird. • Untersuchung der Anzahlen der runs • Autokorrelationstests, etc.32 Dabei ist es natürlich relativ willkürlich, welche Eigenschaften man testet. Eine Folge kann viele Tests bestehen, einen weiteren vielleicht nicht. Auf diese Weise bleibt eine Unsicherheit hinsichtlich der Frage, wann man von einer Pseudozufallsfolge sprechen kann. Eine letzte Bemerkung: In der Regel testet man nicht eine Folge, sondern einen Algorithmus (Generator), der 0-1-Folgen produziert. Wendet man daher statistische Tests an, so sollte man überprüfen, ob sich der Algorithmus ähnlich wie eine binäre symmetrische Quelle verhält. D.h. auch, dass man mehrere von diesem Algorithmus produzierten Folgen auf Pseudozufälligkeit testen sollte. 32 Einzelheiten z.B.: Knuth, The Art of Computer Programming, Vol. 2 Chap. 3 [22] oder Menezes, van Oorschot, Vanstone, Handbook of Applied Cryptography [26] 109 4.8.c Kolmogorov-Komplexität Eine andere Möglichkeit, Zufälligkeit einer endlichen Folge zu definieren, wurde von Solomonov (1964), Kolmogorov (1965) und Chaitin (1966, 1969) eingeführt und beruht auf der Berechenbarkeitstheorie. Die Kolmogorov-Komplexität einer 0-1-Folge ist die Länge eines kürzesten Programms für eine fest vorgegebene universelle Maschine, die gegebene Folge zu erzeugen. Eine 0-1-Folge heißt dann (Kolmogorov-) zufällig, falls das kürzeste Programm in etwa dieselbe Länge wie die Folge hat (d.h. die Folge einzulesen und auszugeben).33 Obwohl theoretisch interessant, ist dieser Zugang praktisch von geringer Bedeutung, da die Kolmogorov-Komplexität eine praktisch nicht zu berechnende Funktion ist. 4.8.d Kryptographisch sichere Pseudozufallsfolgen Der hier vorzustellende Ansatz, Pseudozufälligkeit in einer für die Kryptologie geeigneten Weise zu definieren, hat seine Wurzeln in der Komplexitätstheorie; er 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. 33 Vgl. dazu den ähnlichen Begriff der linearen Komplexität aus Kapitel 4.5; im Kolmogorov’schen Sinne sind also m-Folgen (die per Definition eine sehr kleine lineare Komplexität haben) besonders nicht-zufällig. 110 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. Wir benötigen jetzt noch einige wahrscheinlichkeitstheoretische Bezeichnungsweisen. 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. Ist B: {0, 1}n → {0, 1}, p eine Wahrscheinlichkeitsverteilung auf {0, 1}n , so schreiben wir P p pr(B(x) = 1| x ← {0, 1}n ) 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 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 In diesem Fall steht pr(B(x) = 1| x ← {0, 1}n ) für p(x)·pr(B(x) = 1), x∈{0,1}n 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. Definition: Ein kryptographisch sicherer Pseudozufallsfolgen-Generator ist ein deterministischer Algorithmus G mit einer Erweiterungsfunktion l : N → N (d.h. l(n) > n für alle n), wobei für jedes n ∈ N gilt: G : {0, 1}n → {0, 1}l(n) . 111 Dabei soll Folgendes gelten: 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, falls a > 0) gilt für genügend große n: |pr(D(G(x)) = 1| x ← Ωn ) − pr(D(z) = 1| z ← Ωl(n) )| < 1 P (n) Bedeutung: • Der Pseudozufallsfolgen-Generator, beschrieben durch den deterministischen Algorithmus G, soll effizient sein, d.h. G ist polynomialer Algorithmus. • 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. • 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 vielen 0-1-Folgen in Ωn nur 2n viele 0-1Folgen der Länge l(n). Also haben 2l(n) − 2n viele 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. Mit größerem Aufwand allerdings schon. Das wird als kryptologisch nicht relevant angesehen. • Die Algorithmen D können als statistische Tests aufgefasst werden, die die Gleichverteilung auf Ωl(n) und die durch G(Ωn ) erzeugte Verteilung zu unterscheiden versuchen (falls sie als probabilistische Algorithmen mit polynomialer Laufzeit implementiert werden können; z.B. X 2 -Tests). 112 • Die Bedingung 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). Definition: 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: pr(A(G(x)1 G(x)2 . . . G(x)i ) = G(x)i+1 |x ← Ωn ) ≤ 1 1 + 2 P (n) für alle 0 ≤ i < l(n). Bedeutung: • 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 113 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 Wahrscheinlich1 keit > 12 + 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 > 21 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 | pr(D(G(x)) = 1 | x ←− Ωn ) − pr(D(z)) = 1 | z ←− Ωl(n) | ≥ Q(n) für 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 Verteilung auf {0, 1}l(n) . D kann p̃0 und p̃l(n) unterscheiden (im obigen Sinne). 114 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 p̃j+1 (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 {0, 1}l(n) )| ≥ {0, 1}l(n) ) − pr(D(z) = 1 | z ←− | pr(D(z) = 1 | z ←− 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 21 ) 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.34 +1 Offen bleibt die Frage: Gibt es kryptographisch sichere PseudozufallsfolgenGeneratoren? Damit beschäftigen wir uns in den nächsten beiden Abschnitten. 4.9 Kryptographisch sichere Pseudozufallszahlen-Generatoren und Einwegfunktionen Einwegfunktionen sind Funktionen, die leicht zu berechnen, aber schwierig zu invertieren sind. Def.: 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 ) ∈ 34 1 f −1 (f (x)) |x ← Ωn ) < | {z } P (n) Urbild von f (x) Ausführlicher Beweis bei Delfs, Knebl, Introduction to Cryptography [13], Goldreich, Foundations of Cryptography [16] oder Stinson, Cryptography-Theory and Practice [30] 115 Bemerkung: 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}⌈log2 n⌉ hinschreiben, z.B. 0 . . . 0. ←n→ 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: 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: 1) 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 ) > 116 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.35 2) Einwegfunktionen ⇒ kryptographisch sichere Pseudozufalls-Generatoren: Zunächst Begriff des Hard-Core-Prädikats einer Einwegfunktion. Bei einer Einwegfunktion f ist es nicht immer 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 sollte es bei einer Einwegfunktion einzelne Bits von x oder, allgemeiner, Eigenschaften von x, die als Boolesche Prädikate formuliert werden können, geben, die sehr schwierig zu bestimmen sind. Dies ist die Idee der Hard-Core-Prädikate. Def.: Sei b : {0, 1}∗ → {0, 1} durch einen deterministischen polynomialen Algorithmus berechenbar. b heißt Hard-Core-Prädikat einer Funktion f : {0, 1}∗ → {0, 1}∗ , falls für jeden probabilistischen polynomialen 35 s. Goldreich [16], S. 36ff. 117 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)) = b(x)| x ← Ωn ) ≤ 1 1 + 2 P (n) Bedeutung: • Beachte zunächst: Die Bedingung pr(A(f (x)) = b(x)| x ← Ωn ) ≤ 21 + P (n) und die entsprechende Bedingung für den Algorithmus A′ = 1 + A implizieren, dass |pr(b(x) = 0| x ← Ωn ) − pr(b(x) = 1| x ← Ωn )| vernachlässigbar klein ist, d.h. b verhält sich fast wie Münzwurf auf Ωn . Daher besagt die Bedeutung von Hard-Core-Prädikaten, dass die Bestimmung von b(x) aus f (x) durch einen effizienten Algorithmus bis auf einen vernachlässigbaren Rest nicht besser ist als b(x) durch Münzwurf zu ‘raten’. • Für die Existenz eines Hard-Core-Prädikats kann es zwei Gründe geben: (a) Informationsverlust von f (d.h. f ist nicht injektiv) z.B. f (z1 . . . zn ) = 0z2 . . . zn , b(z1 , . . . zn ) = z1 (b) f ist Einwegfunktion Wir sind am zweiten Fall interessiert. Es gilt nun: 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 b(x, y) = xi yi mod 2. Dann ist g eine Einwegfunktion und b ist ein Hard-Core-Prädikat für g.36 [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 mit Hard-CorePrädikat b vorliegen haben. 36 s. Goldreich [16], S. 66 ff. 118 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 (seed ). Für j = 1, . . . l(n) : sj = f (sj−1 ), σj = b(sj ) G(s0 ) = σ1 σ2 . . . σl(n) ∈ {0, 1}l(n) Dann ist G kryptographisch sicherer Zufallsfolgen-Generator. Dazu zeigt man, dass G alle next-bit-Tests besteht (hier von rechts nach links!). Dies ist einsichtig: Kann man b(si ) aus b(si+1 ), . . . b(sl(n) ) vorhersagen 1 (mit Wahrscheinlichkeit > 21 + Q(n) ), so kann man b(si ) aus f (si ) vorhersagen (denn f (si ) = si+1 , . . . f (sl(n)−1 ) = sl(n) sind aus f (si ) berechenbar, und daher erhält man b(si+1 ), . . . b(sl(n) )). Dies widerspricht aber der Tatsache, dass b ein Hard-Core-Prädikat für f ist. Die Behauptung folgt dann mit dem Satz von Yao (siehe Kapitel 4.8).37 4.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= N P . (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. Ist also P = N P , so lässt sich jede polynomial berechenbare Funktion auch in polynomialer Zeit invertieren. 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 N P * BP P . BP P steht für Bounded-Probability Polynomial Time. BP P ist die Klasse aller Sprachen, die von einer probabilistischen, polyno37 Details zum Beweis: Goldreich [16], S. 128 ff. 119 mial 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 Für alle x 6∈ L : pr[M (x) = 0] ≥ 2 3 (bounded: Wahrscheinlichkeit wegbeschränkt von 12 ) Äquivalent: 1 , |x| = Länge von x. Ersetze 32 durch 1 − 2|x| 1 (sogar 1 − 2p(|x|) , p positives Polynom) Klar: P ⊆ BP P . Also: N P * BP P ⇒ N P 6= P . Nicht bekannt ist auch, ob BP P ⊆ N P . Die obige Forderung verbietet die umgekehrte Inklusion. P 6= N P bedeutet nur, dass es N P -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. Aber auch bei Annahme von N P * BP P ist nicht bekannt, ob daraus die Existenz von Einwegfunktionen folgt. Im nächsten Kapitel werden wir Kandidaten für Einwegfunktionen kennenlernen. 120 5 Public-Key-Kryptographie 5.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.38 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 Alice die Nachricht m mit Bobs öffentlichem Schlüssel m → EPB (m) =: c und sendet c an Bob. Ein solches System kann nur sicher sein, wenn zwei Bedingungen erfüllt sind: 1) m darf mit realistischem Aufwand nicht aus EPB berechenbar sein: EPB ist eine injektive Einwegfunktion. (EPB soll natürlich effizient berechenbar sein.) 2) B muss m aus c = EPB (m) effizient berechnen können. Dies gelingt mit Hilfe seines geheimen Schlüssels GB . Diese Zusatzinformation ermöglicht eine effiziente Entschlüsselung m = DGB (c) (= EP−1 (c)). B Injektive Einwegfunktionen, die mit einer Zusatzinformation effizient zu invertieren sind, heißen Falltürfunktionen (trapdoor function). Bedingungen 1) und 2) implizieren: 38 in IEEE Transactions on Information Theory, IT-22, pp. 644-654, 1976 [14] 121 3) GB darf aus PB nicht effizient berechenbar sein. Nach 4.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 zwei Klassen solcher Funktionen und die darauf fußenden Public-Key-Verfahren werden wir im Folgenden besprechen. 5.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). Zn → Zn RSA-Funktionen (Z = Z/nZ Ring) Def. RSAe := n x 7→ xe Satz: Unter den obigen Voraussetzungen an n und e ist RSAe eine bijektive Funktion, d.h. eine Permutation auf Zn . Die inverse Abbildung zu RSAe ist gegeben durch RSAd , wobei d (eindeutig) bestimmt ist durch 0 < d < ϕ(n) und ed ≡ 1 mod ϕ(n). Beweis: Sei m irgendeine natürliche Zahl. Wie in 2.3.a beschrieben wurde, sind die Einheiten von Zm = Z/mZ, also die bezüglich der Multiplikation invertierbaren Elemente, gerade die a + mZ mit ggT(a, m) = 1. Für m = ϕ(n) folgt also wegen ggT(e, ϕ(n)) = 1, dass es ein d + ϕ(n)Z gibt mit ed + ϕ(n)Z = (e + ϕ(n)Z)(d + ϕ(n)Z) = 1 + ϕ(n)Z, d.h. ed ≡ 1 mod ϕ(n). Dabei kann man 0 < d < ϕ(n) wählen und d ist dann eindeutig bestimmt. 39 erschienen im Aufsatz On Digital Signatures and Public Key Cryptosystems [2] 122 Beachte: ggT(d, ϕ(n)) = 1, da auch d + ϕ(n)Z invertierbar ist. Also existiert RSAd . Wir haben zu zeigen: RSAe ist bijektiv und RSA−1 e = RSAd . ed Dazu haben wir zu zeigen: x = x für alle x ∈ Zn . Sei zunächst x ∈ Z∗n . Z∗n hat Ordnung ϕ(n) (s.o.). Der Satz von Euler besagt: xϕ(n) = 1 (in Zn ). (Dies lässt sich leicht direkt beweisen oder aus folgender einfachen Konsequenz des Satzes von Lagrange ablesen: Ist G eine endliche Gruppe, g ∈ G, so g |G| = 1. Die Ordnung von g teilt |G|.40 ) Da ed ≡ 1 mod ϕ(n), d.h. ed = 1 + kϕ(n) für ein k ∈ N0 , folgt xed = x1+kϕ(n) = x · (xϕ(n) )k = x. Sei nun x 6∈ Z∗n , d.h. x = a + nZ, ggT(a, n) 6= 1. Da n = pq, folgt p | a oder q | a. Falls pq | a, so x = 0 und trivialerweise xed = x. Es gelte: p | a, q ∤ a. a ≡ 0 mod p, also aed ≡ 0 ≡ a mod p. Es ist ϕ(n) = ϕ(pq) = (p − 1)(q − 1). Es ist aq−1 ≡ 1 mod q (|Z∗q | = q − 1). Aus ed = 1 + kϕ(n) = 1 + k(p − 1)(q − 1) folgt damit aed = a1+k(p−1)(q−1) ≡ a mod q. Da p, q verschiedene Primzahlen sind, ist aed ≡ a mod n, d.h. xed = x. Der Fall p ∤ a, q | a folgt analog. Bemerkung: 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. 40 siehe z.B. 2.11 in Buchmann, Einführung in die Kryptographie [9] 123 RSA-Verfahren: 1) 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 = (n, d) (p, q und ϕ(n) werden ebenfalls geheimgehalten, besser gelöscht. Nach Bestimmung von e und d werden sie nicht mehr benötigt.) 2) Verschlüsselung: Wir verschlüsseln alle Zahlen m mit 0 ≤ m < n (andere Form später). 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.) 3) 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 des vorangegangenen Satzes. Wie werden p, q, e und d bestimmt? 1) Bestimmung von p und q. Hierzu mehr im Abschnitt 5.5. 2) Wahl von e: 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). 124 Daher werden auch gelegentlich Exponenten e der Form 2k + 1 verwendet. Hier sind zur Berechnung von me mod n nur k Quadrierungen und eine Multiplikation modulo n erforderlich. Eine typische Wahl ist e = 216 + 1 = 65537 (Primzahl). 3) 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 (s.u.) 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)) Erweiterter Euklidischer Algorithmus Gegeben: natürliche Zahlen a und b, a > b. Zu bestimmen: g = ggT(a, b) und ganze Zahlen u, v mit g = au + bv. Bezeichnung: Sind x und y natürliche Zahlen, x = sy +r, 0 ≤ r < y (Division mit Rest), so ist s = x div y und r = x mod y. 1 0 a x , A= = (1) Setze 0 1 b y (2) Solange y 6= 0, wiederhole: 0 1 Setze A = A · 1 −(x div y) y x = Setze x mod y y 1 u =A· (3) Setze g = x und 0 v Dann g = ggT(a, b) = au + bv. 125 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 y A 1 0 264 5 (264 = 52 · 5 + 4) 0 1 0 1 5 4 (5 = 4 · 1 + 1) 1 −52 0 1 0 1 1 −1 · = 4 1 (4 = 4 · 1 + 0) −52 53 1 −52 1 −1 0 1 1 −1 −1 5 · = 1 0 1 −4 −52 53 53 −264 1 =ggT(264, 5) = 264 · (−1) + 5 · 53, d = 53 (ed = 5 · 53 ≡ 1 mod 264) Geheimer Schlüssel (n, d) = (299, 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. 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. 126 Realisierung der RSA-Verschlüsselung in Blockchiffren-ähnlicher Weise Das zugrundeliegende Klartextalphabet Σ bestehe aus N Zeichen. Diesen werden die Zahlen 0, 1, . . . N − 1 zugeordnet. Sei (n, e) der öffentliche Schlüssel des Teilnehmers B. Setze k = ⌊logN n⌋. 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 mi N k−i . (N -adische Zahldarstellung) Bilde m = 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). Schlüsselblock ist dann c = c0 c1 . . . ck , 0 ≤ ci ≤ N − 1. 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. Bsp: P = { 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 voriges Beispiel) 296 = 1 · 44 + 0 · 43 + 2 · 42 + 2 · 41 + 0 · 40 Also Schlüsseltextblock: a0bb0 127 5.3 Sicherheit des RSA-Verfahrens a) Die Sicherheit des RSA-Verfahrens beruht auf der Annahme, dass die Funktionen RSAe : Zn → Zn Einwegfunktionen sind. Dies ist für manche Wahlen von n = p · q nicht der Fall (siehe später). Daher wird die Einwegfunktionsannahme nicht für eine spezielle RSA-Funktion, sondern für die gesamte Familie 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 ) ≤ 1 Q(k) für alle k ≥ k0 . 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 niedrigste Bit von x ein Hard-Core-Prädikat für RSAe (x) ist.) 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) Es gilt: 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 128 Euklidischen Algorithmus d. (3) ⇒ (1) Hierzu geht man folgendermaßen vor: Sei 2s die größte Zweierpotenz, die ed − 1 teilt, und k = ed − 1 . 2s Ist dann a ∈ N, ggT(a, n) = 1, d.h. a + nZ ∈ Z∗n , so ist o(ak + nZ) ∈ {2i |0 ≤ i ≤ s}, s denn (ak )2 + nZ = aed−1 + nZ = 1 + nZ, da ed − 1 ≡ 0 mod ϕ(n) (vgl. Punkt 2) auf Seite 130 ( Ordnungen von ” Elementen endlicher Gruppen“). Für ein solches a ist natürlich auch a + pZ ∈ Z∗p und a + q Z ∈ Z∗q . Ang. o(ak + pZ) 6= o(ak + q Z), o.E. o(ak + pZ) > o(ak + q Z). Auch die Ordnungen von ak + pZ bzw. ak + q Z liegen in {2i |0 ≤ i ≤ s}. Sei t t o(ak + q Z) = 2t . Dann t < s und ak·2 ≡ 1 mod q, aber ak·2 6≡ 1 mod p; t 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 g=ggT(a, n). Ist g > 1, so ist g ein echter Teiler von n, fertig. t Ist g = 1, so berechne ggT(a2 k − 1, n) t = 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 +pZ) 6= o(ak +q Z)}| ≥ (p−1)(q−1) 2 Daher ist die Wahrscheinlichkeit, ein a mit o(ak + pZ) 6= o(ak + q Z) – und damit einen echten Teiler von n – zu finden, mindestens 12 . Nach r Iterationen ist die Wahrscheinlichkeit also mindestens 1 − 21r , einen Teiler von n zu finden; also ist z.B. für r = 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 im vorangegangenen Beweis benötigen wir zwei Hilfsmittel. Chinesischer Restsatz: Seien m1 , . . . , mn paarweise teilerfremde natürliche Zahlen und seien a1 , . . . , an ganze Zahlen. n Q mi mit x ≡ aj mod mj Dann gibt es genau eine Zahl x mit 0 ≤ x ≤ i=1 für alle j = 1, . . . n. 129 Beweis: Setze m = n Q mi und Mj = m/mj für j = 1, . . . , n. i=1 Dann ist ggT(mj , Mj ) = 1 für j = 1, . . . , n. Mit dem Erweiterten Euklidischen Algorithmus kann man daher natürliche Zahlen yj bestimmen, so dass yj Mj ≡ 1 mod mj für alle j = 1, . . . , n. Dann folgt auch aj yj Mj ≡ aj mod mj für j = 1, . . . , n. 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, . . . , n, i 6= j. n P ai yi Mi mod m, so folgt daher x ≡ aj mod mj Setzt man x = i=1 für alle j = 1, . . . , n. Sind x, x′ zwei Lösungen mit 0 ≤ x, x′ ≤ m, so ist x ≡ aj ≡ x′ mod mj für alle j = 1, . . . , n. Da die mj paarweise teilerfremd sind, folgt dann auch x ≡ x′ mod m, also x = x′ . Ordnungen von Elementen endlicher Gruppen Ist G eine endliche Gruppe, g ∈ G, so ist die Ordnung von g, o(g), die kleinste natürliche Zahl n mit g n = 1. Die folgenden Aussagen sind leicht zu verifizieren: 1) Es ist o(g) = | < g > |, wobei < g >= {1, 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|. 2) Ist g m = 1, so ist o(g) ein Teiler von m. 3) Ist o(g) = 2h u, wobei u ungerade ist, und ist t ungerade, so ist o(g t ) = 2h u′ und u′ teilt u. Wir können jetzt noch die im Beweisteil (3) ⇒ (1) des Satzes auf Seite 129 offen gebliebene Anzahlaussage beweisen. Satz: Sei n, p, q, e, d wie im RSA-Verfahren. Sei 2s die größte Zweierpotenz, . die ed − 1 teilt, k = (ed−1) 2s Dann ist die Anzahl der zu n teilerfremden Zahlen a mit 1 ≤ a ≤ n − 1, für die o(ak + pZ) 6= o(ak + q Z) gilt, wenigstens (p−1)(q−1) . 2 (Die Ordnungen beziehen sich auf die Gruppen Z∗p bzw. Z∗q .) Beweis: 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 + pZ) = p − 1) und sei 130 w ∈ {1, . . . q − 1} mit < w >= Z∗q . Nach dem Chinesischen Restsatz existiert ein h, 1 ≤ h ≤ n = pq mit h ≡ v mod p und h ≡ w mod q. Dann ist also o(h + pZ) = p − 1 und o(h + q Z) = q − 1. 1. Fall: o(hk + pZ) > o(hk + q Z) 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 (hk + pZ)2 = (h + pZ)k·2 = (h + pZ)ed−1 = (h + pZ)(p−1)r = 1. Also ist o(hk + pZ) = 2i mit i ≤ s (siehe oben, 2)). Analog ist o(hk + q Z) = 2j mit j < i. Sei x 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 ≡ hx mod p und a ≡ hy mod q. Dann ist o(ak + pZ) = o(hxk + pZ), also o(ak + pZ) = o(hk + pZ) (siehe oben, 3)). Andererseits ist (ak + q Z)2 = ak·2 + q Z = hyk·2 + q Z = 1 + q Z, d.h. o(ak +q Z) ≤ o(hk +q Z) (siehe oben, 2)). Also ist o(ak +pZ) > o(ak +q Z). j j j Es ist klar, dass für jede der (p−1)(q−1) möglichen Wahlen von (x, y) die 2 zugehörigen Zahlen a < n paarweise verschieden sind. Damit folgt die Behauptung in diesem Fall. 2. Fall: o(hk + pZ) < o(hk + q Z) Analog zum ersten Fall. 3. Fall: o(hk + pZ) = o(hk + q Z) Wie zu Beginn des ersten Falles sieht man, dass o(hk + pZ) = o(hk + q Z) = 2i , i ≤ s. Dabei ist i ≥ 1 (siehe oben, 3)), da k ungerade ist und p − 1 oder q − 1 gerade ist (in unserem Fall dann sogar beide). Ist x 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 ≡ hx mod p und a ≡ hy mod q. Wie im ersten Fall sieht man, dass o(ak + pZ) = o(hk + pZ). Andererseits ist (ak +q Z)2 = (hyk +q Z)2 = (hk +q Z)y·2 da y gerade und daher 2i ein Teiler von y2i−1 ist. i−1 i−1 i−1 = 1+q Z, Also ist o(ak + q Z) < o(ak + pZ). Wählt man x 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 131 insgesamt (p−1)(q−1) möglichen Wahlen von (x, 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). Seit 1991 (in etwas anderer Form seit 1977) gibt es von der Firma RSA Security die sogenannte RSA-Challenge, bei der große RSA-Zahlen (Produkt zweier Primzahlen) faktorisiert werden sollen. Die größte faktorisierte Zahl besaß bisher 155 Dezimalstellen (faktorisiert in vier Monaten Rechenzeit parallel auf 296 PCs und Workstations mit Taktfrequenz ∼ 400 MHz). Im Moment 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 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 41 Näheres über Faktorisierungsalgorithmen: H. Riesel, Prime Numbers and Computer Methods for Faktorisation [27], J. Buchmann, Einführung in die Kryptographie [9], Kapitel 8 oder R. Crandall, C. Pomerance, Prime Numbers – A Computational Perspective [12] 132 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 + a 2 + 1 1 a3 +... 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 . 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) Angriffe auf Grund von Laufzeiteffekten bei modularer Potenzierung (Paul Kocher, 1995). Möglich falls physikalischer Angriff auf Rechner.43 42 Einzelheiten siehe: M.J. Wiener, Cryptanalysis of short RSA exponents, IEEE Transactions on Information Theory 36 (1990), pp. 553-558 [33] 43 s. Trappe, Washington [31], S. 143-145 und Ertel [15], S. 84-85 133 5.4 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 RSA sind derzeit ca. 100 mal langsamer als DES. (Verschlüsseln ca. 15-20 kbit/sec., Entschlüsseln ca. 3-5 kbit/sec.) Die Hardware-Implementierungen von RSA sind etwa 1000 mal langsamer als Hardware-Implementierungen von DES (Durchsatz ca. 64 kbit/sec.; in Planung sind Chips mit 1 Mbit/sec.) Daher wird das RSA-Verfahren häufig nur zur Chiffrierung beim Schlüsselaustausch für symmetrische Verfahren eingesetzt. 5.5 Primzahltests 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. Wann kann man dabei erwarten, eine Primzahl gefunden zu haben? Der Primzahlsatz (Hadamard, de la Vall Poussin44 ) besagt, dass π(x) ∼ x , ln x π(x) = # Primzahlen ≤ x. Man kann also erwarten, nach ln(10150 ) = 150 · ln10 ≈ 350 vielen Versuchen eine Primzahl zu finden. (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 44 vgl. Chandrasekharan [11] 134 π(x) > lnxx für x ≥ 17 und π(x) < 1, 26· lnxx (Rosser, Schoenfeld), und 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. Wir suchen Tests, deren Laufzeit polynomial in log n ist (wenn möglich). Die meisten Primzahltests beruhen auf dem Satz von Fermat: n ∈ N, n ≥ 2. Dann: n Primzahl ⇔ an−1 ≡ 1 mod n für alle 2 ≤ a < n Findet man ein a mit an−1 6≡ 1 mod n, so ist n zusammengesetzt. Wenn aber n eine Primzahl ist, wieviele a muss man testen? Im Prinzip alle. Wenn aber für zusammengesetzte n der Anteil a ∈ {2, ... n−1} groß wäre (z.B. ≥ 12 ), für die an−1 6≡ 1 mod n, so könnte man nach genügend vielen (etwa 100) Wahlen von a, die stets an−1 ≡ 1 mod n ergeben haben, davon ausgehen, dass n eine Primzahl ist, denn eine zusammengesetzte Zahl 1 sich nicht als zusammenwürde nur mit einer Wahrscheinlichkeit ≤ 2100 gesetzte Zahl zu erkennen geben. Man hätte dann einen probabilistischen Primzahltest. Tatsächlich funktioniert dieser Fermat-Test für viele Zahlen n. Aber leider gibt es zusammengesetzte Zahlen n, für die das nicht der Fall ist. Sie haben die Eigenschaft, dass nur für diejenigen a mit ggT(a, n) 6= 1 tatsächlich an−1 6≡ 1 mod n gilt, für die übrigen a (also ϕ(n) viele; das ist die große Mehrzahl: lim ϕ(n) = 1; Abschätzung nach Rosser, Schoenfeld: n n ϕ(n) ≥ 6ln(ln(n)) für alle n ≥ 5), aber stets an−1 ≡ 1 mod n. Solche Zahlen heißen Carmichael-Zahlen. 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 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 folgendem Satz Sei n ∈ N ungerade, 2s die höchste Zweierpotenz, die n−1 teilt, k = Ist n eine Primzahl und a ∈ N mit ggT(a, n) = 1, so gilt 45 siehe den Beweis von Alford, Granville und Pomerance, [3] 135 n−1 . 2s entweder oder ak r a2 ·k ≡ 1 mod n ≡ −1 mod n für ein r ∈ {0, 1, . . . s − 1} Findet man also eine Zahl a mit ggT(a, n) = 1, für die ak 6≡ 1 mod n und r a2 ·k 6≡ −1 für alle r ∈ {0, 1, . . . s − 1} gilt, so ist n zusammengesetzt. Eine solche Zahl heißt Zeuge gegen die Primzahleigenschaft von n. Nun kann man zeigen: Ist n zusammengesetzt, n ≥ 3 ungerade, so gibt es in der Menge {1, . . . n−1} höchstens n−1 Zahlen, die zu n teilerfremd sind und keine Zeugen gegen die 4 Primzahleigenschaft von n sind. Miller-Rabin-Test: Sei n ungerade, k wie oben. Wähle a ∈ {2, 3 . . . n − 1} zufällig, gleichverteilt. Ist ggT(a, n) 6= 1, so n zusammengesetzt. s−1 Ist ggT(a, n) = 1, berechne ak , a2k , . . . a2 k . i Ist ak 6≡ 1 mod n und a2 k 6≡ −1 mod n, i = 1, . . . , s − 1, so ist n zusammengesetzt. Andernfalls ist a kein Zeuge gegen die Primzahleigenschaft. Wähle neues a. Dass man für eine zusammengesetzte Zahl n nach r Iterationen keinen Zeugen gegen die Primzahleigenschaft von n gefunden hat, ist dann nur mit einer Wahrscheinlichkeit ≤ 41r möglich. 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). ) Da der Euklidische Algorithmus polynomial in log(n) ist, s ≤ log n, überlegt man sich leicht, dass der Miller-Rabin-Test ein probabilistischer polynomialer Algorithmus für den Test auf Primzahleigenschaft ist. 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. 136 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)) viele Paare (r, a) zu testen. Algorithmus elementar. Zur Gültigkeit braucht man eine tiefen Satz der analytischen Zahlentheorie (Goldfeld, 1969) über die Anzahl von Primzahlen p ≤ x, für die p − 1 ebenfalls einen großen Primteiler besitzt.46 ) 5.6 Diskrete Logarithmen und das Schlüsselaustauschverfahren von Diffie und Hellman Wir betrachten jetzt eine andere Klasse von Funktionen, die als Kandidaten für Einwegfunktionen angesehen werden, nämlich die ’diskreten’ LogarithmusFunktionen: Sei p eine ungerade Primzahl, g eine Primitivwurzel mod p, d.h. < g >= Z∗p . 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) Man kennt bis heute keine probabilistischen polynomialen Algorithmen zur Berechnung von Logp,g . Sie gelten daher als Kandidaten für 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 probabilistischer 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. 46 s. http://www.cse.iitk.ac.in/news/primality.html und http://cr.yp.to/ papers.html 137 Die Nutzung des diskreten Logarithmus in der Kryptographie geschah zunächst nicht zur Konstruktion eines Verschlüsselungsverfahrens, sondern eines Verfahrens zum Schlüsselaustausch für symmetrische Verfahren. Diffie-Hellman-Verfahren (Schlüsselaustausch) 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) 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 138 Alice: K = y a = 1311 ≡ 4 mod 17 Bob: K = xb = 74 ≡ 4 mod 17 K=4 Wie berechnet man p und g? Zur Bestimmung von Primzahlen, siehe Kapitel 5.5. 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 genügt es zu zeigen, dass g p−1 6≡ 1 mod p für alle Primteiler q von p − 1. Sind diese q 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. Es bleibt die Frage: Wenn man g zufällig aus {2, . . . p − 2} wählt, wie groß ist die Chance, dass g Primitivwurzel modulo p ist? Z∗p ist eine zyklische Gruppe und hat daher ϕ(p − 1) viele Erzeuger. Wir p−1 hatten in Kapitel 5.5 gesehen, dass ϕ(p − 1) groß ist, ϕ(p − 1) ≥ 6 ln(ln(p−1)) . D.h. bei Zufallsvariablen wird man relativ schnell eine Primitivwurzel modulo p finden. 5.7 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 zum Schlüsselaustausch auch) besteht im sogenannten Man-in-the-middleAngriff. Mallory wählt Exponent c ∈ {0, 1, . . . p − 2}. Er fängt g a und g b ab. 139 Er sendet g c an Alice und Bob (die glauben g b bzw. g a erhalten zu haben). Alice berechnet KA = g ca und Bob berechnet KB = g cb . 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 Kürze zu sprechen kommen. 5.8 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 ) Entschlüsselung: Alice hat von Bob Schlüsseltext (y, f ) erhalten. Sie berechnet s = p − 1 − a; 1 ≤ s ≤ p − 3. Sie berechnet dann y s f mod p. Dies ist der ursprüngliche Klartext m. Korrektheit der Entschlüsselung: y s · f ≡ g bs xb m ≡ g b(p−1)−ba g ba m ≡ m mod p 140 Beispiel: Schlüssel von Alice: p=17 , g = 3, a=11 x = 311 mod 17 = 7 (Siehe Beispiel zum Diffie-Hellman-Verfahren auf S. 138.) öffentlicher Schlüssel von Alice: (p = 17, g = 3, x = 7) Geheimer Schlüssel von Alice: a = 11 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. Eiffizienz des 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 bei 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 (dies birgt aber Sicherheitsrisiken). Effizienznachteil: Die verschlüsselte Nachricht ist doppelt so lang wie der Klartext. Sicherheit des Verfahrens: • 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. 141 Ang. Mallory erhält ElGamal Chiffretext (y, f ) (öffentlicher Schlüssel (p, g, x)). 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 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. 5.9 Erweiterungen der Diffie-Hellman und ElGamalVerfahren Die beiden Verfahren lassen sich übertragen auf andere Gruppen G als auf 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. Ein in letzter Zeit vorgeschlagener und inzwischen auch schon implementierter Kandidat für G ist die Punktgruppe einer elliptischen Kurve über einem endlichen Körper (Miller 1985; Koblitz 1987). Die entsprechenden ellipticcurve-cryptosystems 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.47 ] 47 Einzelheiten siehe z.B. Koblitz, Algebraic Aspects of Cryptography [24], Chapter 6 oder Trappe, Washington, Introduction to Cryptography and Coding Theory [31], Chapter 15 142 5.10 Modulares Quadrieren, das Verfahren von Rabin und der Blum-Blum-Shub Pseudozufallsfolgengenerator M. Rabin hat 1979 ein Verschlüsselungsverfahren vorgeschlagen, das darauf beruht, dass modulares Quadrieren modulo n einfach, das Quadratwurzelziehen modulo n aber, falls n Prudukt 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; insbesondere hat ein Quadrat immer vier Quadratwurzeln. Man kann diese Funktion aber bijektiv machen , indem man sie auf die Menge der Quadrate in Z∗n (den quadratischen Resten modulo n) einschränkt.) Man kann zeigen, dass das Berechnen der Quadratwurzeln modulo n genauso schwierig ist wie die Faktorisierung von n (beachte Unterschied zum RSAVerfahren). Das Verschlüsselungsverfahren von Rabin besteht gerade in der Anwendung der Funktion Quad. Kennt man p und q, so kann man die Quadratwurzeln von einem y leicht berechnen: ±y p+1 4 + pZ , ±y q+1 4 + qZ sind die beiden Quadratwurzeln modulo p bzw. modulo q. Mit dem Chinesischen Restsatz erhält man daraus die vier Quadratwurzeln modulo n. [Man muss dann noch sicherstellen, dass der Empfänger erkennen kann, welches die richtige Wurzel ist.48 ] Das Rabin-Verfahren ist gegen einen Typ von Choosen-Ciphertext-Angriff nicht sicher, und wird daher in der Praxis nicht häufig eingesetzt. 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 48 Details siehe Buchmann, Einführung in die Kryptographie [9], Kapitel 7.4 143 wird nach seinen Erfindern Blum-Blum-Shub-Generator (BBS-Generator) genannt49 . Entsprechend den Überlegungen in Kapitel 4.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.50 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) 49 Publikation: Blum, Blum and Shub (1986), A Simple Unpredictable Random Number Generator [8], pp. 364-383 50 siehe z.B. Delfs, Knebel [13], Kapitel 7.3 144 6 Digitale Signaturen und kryptographische Hashfunktionen 6.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). 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 praktisch nicht sA 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 Signaturschemata häufig mit Mitteln der Public-Key-Kryptographie realisiert. Ein Beispiel werden wir anhand der ElGamal-Signatur auf Seite 153 angeben. 145 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.51 Werden Signaturschemata mit Public-Key-Systemen realisiert, so ist i.a. 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.a. nicht die Nachricht m, sondern ein Hashwert H(m) von m signiert (H öffentlich). Wir gehen daher zunächst auf kryptographische Hashfunktionen ein. 6.2 Kryptographische Hashfunktionen Definition: Eine Hashfunktion ist eine Abbildung H : Σ∗ → Σn (n ∈ N ) (Σ Alphabet; Σ∗ = Menge aller endlichen Strings über Σ, Σn = Menge aller Strings der Länge n.) Also: Hashfunktionen sind nie injektiv. Beispiel: Quersumme mod 2, Σ = {0, 1}, n = 1 Hashfunktionen können mit Hilfe von Kompressionsfunktionen erzeugt werden: K : Σm → Σn (n, m ∈ N), wobei m > n Hashfunktionen und Kompressionsfunktionen werden häufig in der Informatik verwendet. Dabei sind immer zwei Dinge wichtig: • H (bzw. K) muss schnell berechenbar sein • Der Fall H(x) = H(x′ ) für x 6= x′ sollte nicht zu häufig auftreten (analog für K). Eine solche Situation nennt man Kollision. Sie ist nicht vermeidbar, da H (bzw. K) nicht injektiv ist. 51 Näheres dazu z.B. in ausführlicher Darstellung in Schmeh, Kryptografie [28], knapp in Buchmann, Einführung in die Kryptografie [9]. Standardwerk: Adams und Lloyd, Understanding Public-Key Infrastructure [1], Auszüge unter http://www.pkiforum.com/ books/adams\ understandingpki.html 146 Für kryptographische Zwecke ist aber eine weitere Eigenschaft wichtig: Wenn eine Nachricht m mit dem signierten Hashwert sT (H(m)) von T versandt wird, so kann jeder Angreifer H(m) ermitteln. Gelingt es ihm, eine Nachricht m′ zu finden mit H(m) = H(m′ ), so wird (m′ , sT (H(m))) = (m′ , sT (H(m′ ))) vom Empfänger als eine korrekt signierte Nachricht angesehen. Dies führt zu folgenden Forderungen an kryptographische Hashfunktionen: (1) H ist effizient berechenbar. (2) H ist eine Einwegfunktion. (3) H ist schwach kollisionsresistent, d.h. für ein gegebenes x ist es nicht effektiv möglich (polynomialer Algorithmus), ein x 6= x′ zu finden mit H(x′ ) = H(x). Einer Verschärfung von (3) ist (3’) 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.) Klar: (3’) ⇒ (3). Man kann auch zeigen: (3’) ⇒ (2). (Hat man einen Invertierungsalgorithmus A für H (d.h einen, der Urbilder findet), so liefert A zu gegebenem x ein Element x′ = A(H(x)). Ist die Menge der Urbilder zu H(x) größer als 1 – und das ist bei einer Hash- bzw. Kompressionsfunktion im Durchschnitt der Fall – so ist die Chance, dass x′ 6= x im Durchschnitt mindestens 12 . Dies führt zu einem probabilistischen Algorithmus zur Erzeugung von Kollisionen.) Man ist also in der Kryptographie an stark kollisionsresistenten Hashfunktionen interessiert. Dabei gilt: Satz (Merkle) n Aus einer stark kollisionsresistenten Kompressionskunktion Zm 2 → Z2 lässt sich eine stark kollisionsresistente Hashfunktion Z∗2 → Zn2 konstruieren.52 52 Beweis bei Buchmann [9], Kapitel 10.4. und bei Stinson [30], Kapitel 7.5 147 Da die Existenz stark kollisionsresistenter Hashfunktionen (oder Kompressionsfunktionen) die Existenz von Einwegfunktionen impliziert, weiß man derzeit nicht, ob solche Hashfunktionen existieren (vgl. 4.10). Daher benutzt man in der Praxis Hashfunktionen, deren Kollisionsresistenz bisher noch nicht widerlegt wurde. Im allgemeinen beruhen diese auf Verschlüsselungsverfahren, die als sicher gelten: Sei n die gewünschte Länge des Hashwertes. Benötigt wird ein Verschlüsselungsverfahren, dessen Klartextmenge, Schlüsselmenge und Chiffretextmenge Zn2 ist. Sei Ek : Zn2 → Zn2 , k ∈ Zn2 , die Verschlüsselungsfunktion zum Schlüssel k. Dann kann man eine Hashfunktion H : Z∗2 → Zn2 folgendermaßen definieren: Sei x = x1 . . . xe , xi ∈ Zn2 . (ggf. muss man x durch geeignetes ’Padding’ auf eine Länge vergrößern, die ein Vielfaches von n ist). Wähle einen Eingangswert k0 ∈ Zn2 . n Setze ki = f (xi , ki−1 ), wobei f : Z2n 2 → Z2 eine geeignete Funktion ist, die die Verschlüsselungsfunktion involviert. Sei schließlich H(x) = ke . Viele Wahlen von f führen trotz sicheren Verschlüsselungsverfahren zu unsicheren Hashfunktionen. Vier Typen scheinen allerdings nach jetzigem Stand sicher zu sein (falls die Verschlüsselungsfunktion sicher ist): ki ki ki ki = Eki−1 (xi ) ⊕ xi = Eki−1 (xi ) ⊕ xi ⊕ ki−1 = Eki−1 (xi ⊕ ki−1 ) ⊕ xi = Eki−1 (xi ⊕ ki−1 ) ⊕ xi ⊕ ki−1 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. Satz (Geburtstagsparadox): Ein Merkmal komme in m verschiedenen Ausprägungen vor. Jede Person besitze genau√eine dieser Merkmalsausprägungen. √ 2) Ist k ≥ (1+ 1+8m·ln m, so ist die Wahrscheinlichkeit, dass unter k ≈ 1, 18 2 148 Personen zwei die gleiche Merkmalsausprägung haben, mindestens 21 . (Speziell: Merkmalsausprägung = Geburtstagsdatum, m = 365: Bei 23 Personen ist die Wahrscheinlichkeit mindestens 21 , dass zwei am gleichen Tag Geburtstag haben.) Beweis: Wir beschreiben die Merkmalsausprägungen mit den Zahlen 1, . . . m und betrachten den Wahrscheinlichkeitsraum {1, . . . m}k mit Gleichverteilung. Jedes Elementarereignis (g1 , . . . gk ) ∈ {1, . . . m}k hat also die Wahrscheinlichkeit m1k . Das Elementarereignis (g1 , . . . gk ) tritt ein, wenn die i-te Person die Merkmalsausprägung gi besitzt. Wir 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 = k−1 Y i=0 (1 − i ) m 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(k−1) 2m i=0 Damit: − e k(k−1) 2m 1 k(k − 1) 1+ ≤ ⇔− ≤ − ln 2 ⇔ k ≥ 2 2m √ 1 + 8m · ln 2 2 Daraus folgt die Behauptung des Satzes. Wie sieht nun die Geburtstagsattacke aus? Sei Σ = 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 ). Verwendet man also eine Hashfunktion, die, wie oben beschrieben, auf einem Verschlüsselungsverfahren beruht, so ist eine Schlüssellänge von n = 64 nicht ausreichend. Heutzutage wählt man n ≥ 128, für Hashfunktionen mit digitalen Signaturen n ≥ 160. 149 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. Eine Weiterentwicklung ist MD5, das auch heute noch oft benutzt wird, obgleich H. Dobbertin (Bundesamt für Sicherheit in der Informationstechnik) auch hier eine Schwäche in der Kollisionsresistenz bei der Kompressionsfunktion innerhalb MD5 gefunden hat. Diese Schwachstelle hat sich bisher nicht auf das ganze Verfahren übertragen lassen, aber hat zu Unsicherheitsgefühlen geführt. MD5 liefert Hashwerte von 128 Bit. Daher wird heute vermehrt die kryptographische Hashfunktion SHA-1 (Secure Hash Algorithm One) verwendet,53 die von der NSA entwickelt wurde. Bei ihr sind bisher noch keine Schwächen entdeckt worden. SHA-1 liefert Hashwerte von 160 Bit (wird in PGP 7.0.3 verwendet).54 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. 6.3 Signaturen mit Hashfunktionen 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. 53 Z.B. in S/MIME (Secure/Multipurpose Internet Mail Extensions), einem hierarchischen Zertifizierungsmodell, bei dem die Echtheit übermittelter Daten von einer übergeordneten Instanz bestätigt wird. 54 Einzelheiten über die Funktionsweise von SHA-1 u. MD5 siehe z.B. Schmeh, Kryptographie [28], Schneier, Angewandte Kryptographie [29] und Menezes, van Oorschott, Vanstone, Handbook of Applied Cryptography [26]. 150 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. Kann ein Angreifer m zu m′ ändern und mit der Signatur von A versehen? Er hat zwei Möglichkeiten: • Er müsste Signatur von A von H(m′ ) anfertigen. sA ist aus vA aber praktisch nicht berechenbar. • Er müsste m′ finden mit sA (H(m′ )) = sA (H(m)) (dann würde (m′ , sA (x)) akzeptiert). Das bedeutet, er müsste Kollision von H erzeugen (sogar zu vorgegebenem m). Dies ist aber wegen der Kollisionsresitsenz von H praktisch nicht möglich. 6.4 RSA-Signaturen 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 RSA-Verfahren 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. 151 • 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 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 6.3 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.55 ) 55 Näheres zu diesen Standards in: K. Schmeh, Kryptographie [28] 152 6.5 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 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 rs ≡ 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 rs ≡ 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. 153 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. 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 rs 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. Sicherheit: • 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 rs ≡ g ar g ks ≡ g u(ar+ks) ≡ g uH(m) ≡ g H(m ) mod p (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.) 154 • 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 rs ≡ 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 rs ≡ 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. • 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 rs ≡ 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 rs ≡ 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). • 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: 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). 155 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). 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 rs ≡ 1 mod p verifiziert und auf der linken Seite möglichst viele Exponentiationen simultan durchführt.56 6.6 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.57 56 Einzelheiten zur Auswertung von Potenzprodukten siehe z.B. Buchmann, Einführung in die Kryptographie [9], Abschnitt 2.13 57 Einzelheiten siehe z.B.: Buchmann, Einführung in die Kryptographie [9], 11.5 156 6.7 Blinde Signaturen Es gibt Situationen, in denen es sinnvoll ist, Nachrichten zu signieren, ohne dass der Signierer deren Inhalt vollständig kennt. Man spricht dann von blinden Signaturen. Beispiel, wo blinde Signaturen eine wichtige Rolle spielen: Simulation von Bargeld mit Softwaremitteln (elektronisches Geld, digital cash). Das vorgestellte Verfahren (Protokoll) beruht auf Ideen von David Chaum (1985, 1992). Zweck: Digitaler Geldschein muss von Bank signiert werden (sonst könnte jeder Geldscheine herstellen), aus Gründen des Datenschutzes sollte die Bank die Seriennummer des Geldscheins nicht kennen. Die Bank sollte also nicht in der Lage sein, zu einem späteren Zeitpunkt feststellen zu können, für wen sie den Geldschein signiert hat (Anonymität, im Gegensatz zu Kreditkartenund Kontensystemen). Ziel: Alice will digitalen 100-Euroschein von ihrer Bank erhalten. Zu diesem Zweck wird folgendes Protokoll zwischen Alice und der Bank durchgeführt: 1) Alice stellt zehn Geldscheine zu 100 Euro selbst her. Sie verwendet für jeden Schein eine andere Zufallszahl als Seriennummer. 2) Sie verschlüsselt diese zehn Geldscheine mit einem symmetrischen Verfahren mit jeweils unterschiedlichem Schlüssel und sendet diese an die Bank. 3) Die Bank wählt zufällig einen der zehn Geldscheine aus und signiert ihn (blinde Signatur). Sie teilt Alice mit, welchen Schein sie signiert hat. 4) Alice sendet die neun Schlüssel für die nicht-signierten Scheine an die Bank. 5) Die Bank entschlüsselt die neun nicht-signierten Scheine und überprüft, ob diese von Alice korrekt hergestellt wurden (insbesondere, ob sie alle den Wert 100 Euro haben). Ist dies der Fall, sendet die Bank den signierten Geldschein an Alice. 157 Nach Durchführung dieses Protokolls besitzt Alice einen (allerdings verschlüsselten) von der Bank signierten 100-Euroschein. Die Bank kennt die Seriennummer des Scheins nicht, kann aber mit 90%-iger Wahrscheinlichkeit davon ausgehen, dass es sich um einen 100-Euroschein handelt. Diese Wahrscheinlichkeit lässt sich natürlich beliebig erhöhen. Wird die Signatur mit dem RSA-Verfahren (ohne Hashfunktion) erstellt und verwendet Alice eine symmetrische Verschlüsselung, die mit modularer Exponentiation vertauschbar ist, so kann Alice den Geldschein entschlüsseln und hat eine gültige Signatur für den entschlüsselten Geldschein. Zum Beispiel: Alice wählt Zufallszahl k, verschlüsselt Schein s durch t = s · k e mod n (e, n öffentlicher Schlüssel der Bank für die RSA-Signatur). Bank signiert t : (t, td mod n). Es ist td ≡ sd k ed ≡ sd k mod n, also k −1 td ≡ sd mod n. Dies ist die Signatur von s. Systeme für elektronisches Bargeld wurden auch in die Praxis umgesetzt, allerdings bisher nicht mit großem Erfolg.58 58 Näheres siehe z.B.: W. Ertel, Angewandte Kryptographie [15], Kapitel 9, 10 158 7 Authentifizierung Beweise und Zero-Knowledge- Authentifizierung: Nachweis bzw. Überprüfung, dass jemand derjenige ist, der er behauptet zu sein (manchmal wird hierfür auch der Begriff Identifizierung gebraucht). 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 persönliches Merkmal: Z.B. Fingerabdruck Für uns ist nur die erste Möglichkeit von Interesse. 7.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 (z.B. Zugang zu UNIX-Systemen). (Angreifer können in der Regel aus f (w) nicht auf w schließen!) Wichtig: Passwortverzeichnis (also die f (w)) muss vor unberechtigten Schreibzugriffen gesichert sein. 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. 159 7.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. 7.2.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. 7.2.b A B A B B Verwendung von Public-Key-Signaturverfahren will sich gegenüber B ausweisen. sendet Zufallszahl an A. signiert Zufallszahl mit ihrem geheimen Schlüssel. verifiziert Signatur mit öffentlichem Schlüssel von A. kennt also daher das Geheimnis von A nicht! 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! Um dies zu verhindern, werden in jüngster Zeit vermehrt sogenannte ZeroKnowledge-Proof-Verfahren eingesetzt. 160 7.3 Zero-Knowledge-Beweise Das Konzept der ’Zero-Knowledge-Proofs’ wurde 1985 von Goldwasser, Micali und Rackoff eingeführt. Zero-Knowledge-Beweis-Systeme sind spezielle interaktive Beweissysteme. Bei interaktiven Beweissystemen wird ein Protokoll zwischen Beweiser A und dem Verifizierer B durchgeführt. A kennt ein Geheimnis, B nicht. • In dem Protokoll überzeugt der Beweiser den Verifizierer davon, dass er das Geheimnis kennt. • Ein Betrüger kann das nicht. (Diese Eigenschaften haben auch die Public-Key-Verfahren zur Authentifizierung.) Zusätzlich bei Zero-Knowledge-Beweis-Systemen ist folgende Forderung: • Der Verifizierer erfährt nur, dass der Beweiser das Geheimnis kennt, aber nichts weiter (gleichgültig, welche Strategie er anwendet). Wir geben ein Beispiel, das sogenannte Fiat-Shamir-Verfahren (1986): A, die Beweiserin, 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: 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. Protokoll: 1) A wählt zufällig und gleichverteilt r ∈ {1, 2, . . . n − 1}. Sie berechnet x = r2 mod n. 2) A sendet x an Verifizierer B. 3) B wählt zufällig mit Wahrscheinlichkeit an A.(Challenge) 161 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 r2 ≡ x mod n (im Fall e = 0) bzw. y 2 ≡ xv mod n (im Fall e = 1). Analyse: a) Kennt A das Geheimnis, 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 = r2 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 12 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. d) Man kann zeigen, dass B aus diesem Beweissystem nichts über s erfährt, außer dass A s kennt. (Gleichgültig, ob er sich dem Protokoll entsprechend verhält (e zufällig wählen) oder eine andere Strategie verfolgt.) (Zero-Knowledge-Eigenschaft) Man formalisiert dies dadurch, dass man fordert: Ist die Behauptung des Beweises wahr, so kann die Interaktion zwischen A und B in polynomialer Zeit (von B) simuliert werden, ohne dass eine Interaktion mit dem Beweiser stattfindet.59 59 Details siehe Goldreich, Foundations of Cryptography - Basic Tools [16] 162 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 Adir 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 edition, 2000. [6] Henry Beker and Fred Piper. Cipher Systems: The protection of communications. Northwood Books, London, 1982. [7] Albrecht Beutelspacher, Jörg Schwenk, and Klaus-Dieter Wolfenstetter. Moderne Verfahren der Kryptologie. Vieweg, Braunschweig, 4 edition, 2001. [8] Leonore Blum, Manuel Blum, and Mike Shub. A Simple Unpredictable Random Number Generator. SIAM Journal on Computing, (15):364– 383, 1986. [9] Johannes Buchmann. Einführung in die Kryptographie. Springer, Berlin, 2 edition, 2001. [10] Steve Burnett and Stephen Paine. Kryptographie. mitp, Bonn, 1 edition, 2001. [11] Komaravolu Chandrasekharan. Einführung in die analytische Zahlentheorie. Lecture notes in mathematics ; 29. Springer, Berlin, 1966. [12] Richard Crandall and Carl Pomerance. Prime Numbers - A Computational Perspective. Springer, New York, 2001. [13] Hans Delfs and Helmut Knebl. Introduction to Cryptography. Springer, Berlin, Heidelberg, 2002. 163 [14] Whitfield Diffie and Martin E. Hellman. New Directions in Cryptography. IEEE Transactions on Information Theory, 22:644–654, 1976. [15] Wolfgang Ertel. Angewandte Kryptographie. Fachbuchverl. Leipzig im Carl-Hanser-Verl., München, 2001. [16] Oded Goldreich. Foundations of Cryptography - Basic Tools. Cambridge University Press, Cambridge, 2001. [17] Max Goldt. Quitten für die Menschen zwischen Emden und Zittan. Haffmans Verlag, Zürich, 1993. [18] Andrew Hodges. Alan Turing: the Enigma. Simon Schuster, New York, 1983. [19] Patrick Horster. Kryptologie. Number 47 in Informatik. Bibliographisches Institut, Mannheim, 1985. [20] David Kahn. The Codebreakers. MacMillan, New York, 1967. [21] David Kahn. Seizing the Enigma. Houghton Miffin, Boston, 1991. [22] Donald E. Knuth. The Art of Computer Programming, volume 2. Addison Wesley, Reading, Mass., 2 edition, 1998. [23] Neal Koblitz. A course in number theory and cryptography. Springer, New York, 2 edition, 1994. [24] Neal Koblitz. Algebraic aspects of cryptography. Springer, Berlin u.a., 2 edition, 1999. [25] Rudolf Lidl and Harald Niederreiter. Introduction to finite fields and their applications. Cambridge University Press, Cambridge, 1986. [26] Alfred J. Menezes, Paul C. van Oorschot, and Scott A. Vanstone. Handbook of Applied Cryptography. CRC Press, London, 1997. [27] Hans Riesel. Prime Numbers and computer methods for factorizations. Birkhäuser, Boston, 2 edition, 1994. [28] Klaus Schmeh. Kryptografie und Public-Key-Infrastrukturen im Internet. dpunkt, Heidelberg, 2 edition, 2001. [29] Bruce Schneier. Angewandte Kryptographie. Addison Wesley, Bonn u.a., 1997. 164 [30] Douglas Stinson. Cryptography - Theory and Praxis. CRC Press, Boca Raton, 1995. [31] Wade Trappe and Lawrence C. Washington. Introduction to Cryptography with Coding Theory. Prentice Hall, New Jersey, 2002. [32] Michael Welschenbach. Kryptographie in C und C++. Springer, Berlin u.a., 2 edition, 2001. [33] Michael J. Wiener. Cryptanalysis of short RSA secret exponents. IEEE Transactions on Information Theory, 36(3):553–558, Mai 1990. 165