Kryptologie und Datensicherheit

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