Kryptologie und Datensicherheit - Diskrete Mathematik

Transcription

Kryptologie und Datensicherheit - Diskrete Mathematik
Universität Tübingen
Wilhelm-Schickard-Institut
Arbeitsbereich Diskrete Mathematik
Leitung: Prof. Dr. Peter Hauck
Vorlesung WS 2002/2003
Stand: 15. Juni 2007
Kryptologie und Datensicherheit
Herstellung der TeX-Fassung des Vorlesungsskripts: Jürgen Sommer
Inhaltsverzeichnis
1 Grundbegriffe
9
2 Klassische symmetrische Verschlüsselungsverfahren
2.1
14
Substitutionschiffren . . . . . . . . . . . . . . . . . . . . . . . 15
2.1.a
Monoalphabetische Substitutionschiffren . . . . . . . . 15
2.1.b
Homophone Substitutionschiffren . . . . . . . . . . . . 16
2.1.c
Kryptoanalyse monoalphabetischer und homophoner
Substitutionschiffren . . . . . . . . . . . . . . . . . . . 18
2.1.d
Polyalphabetische Verschlüsselungen und
Lauftextverschlüsselungen . . . . . . . . . . . . . . . . 24
2.1.e
Kryptoanalyse periodischer polyalphabetischer
Verschlüsselungen . . . . . . . . . . . . . . . . . . . . . 30
2.2
Transpositionschiffren . . . . . . . . . . . . . . . . . . . . . . . 38
2.3
Affin lineare Chiffren . . . . . . . . . . . . . . . . . . . . . . . 42
2.3.a
Lineare Algebra über kommutativen Ringen . . . . . . 42
2.3.b
Affin lineare Blockchiffren . . . . . . . . . . . . . . . . 44
3 Blockchiffren und ihre Betriebsarten
47
3.1
Allgemeine Vorbemerkungen . . . . . . . . . . . . . . . . . . . 47
3.2
Feistel-Chiffren . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.3
Eine vereinfachte Version des DES-Algorithmus . . . . . . . . 52
3.4
Der ’Data Encryption Standard’ DES
3.5
Andere Blockchiffren . . . . . . . . . . . . . . . . . . . . . . . 74
3.6
Der Advanced Encryption Standard (AES)
Das Rijndael-Verfahren . . . . . . . . . . . . . . . . . . . . . . 75
3.7
Betriebsarten von Blockchiffren . . . . . . . . . . . . . . . . . 85
2
. . . . . . . . . . . . . 66
4 Stromchiffren und Pseudozufallsfolgen
89
4.1
Synchrone Stromchiffren . . . . . . . . . . . . . . . . . . . . . 89
4.2
Selbstsynchronisierende (asynchrone) Stromchiffren . . . . . . 90
4.3
Schieberegister . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.4
Lineare Schieberegister . . . . . . . . . . . . . . . . . . . . . . 93
4.5
Lineare Komplexität und Bestimmung von Schieberegisterfolgen aus Teilfolgen . . . . . . . . . . . . . . . . . . . . . . . 96
4.6
Schieberegister zur Schlüsselstromerzeugung . . . . . . . . . . 98
4.7
Andere Stromchiffren . . . . . . . . . . . . . . . . . . . . . . . 101
4.8
Pseudozufallsfolgen . . . . . . . . . . . . . . . . . . . . . . . . 102
4.9
4.8.a
Die Golomb-Postulate . . . . . . . . . . . . . . . . . . 102
4.8.b
Statistische Tests . . . . . . . . . . . . . . . . . . . . . 105
4.8.c
Kolmogorov-Komplexität . . . . . . . . . . . . . . . . . 110
4.8.d
Kryptographisch sichere Pseudozufallsfolgen . . . . . . 110
Kryptographisch sichere Pseudozufallszahlen-Generatoren
und Einwegfunktionen . . . . . . . . . . . . . . . . . . . . . . 115
4.10 Die Frage nach der Existenz von Einwegfunktionen . . . . . . 119
5 Public-Key-Kryptographie
121
5.1
Die Grundidee . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
5.2
Modulare Potenzen und das RSA-Verfahren . . . . . . . . . . 122
5.3
Sicherheit des RSA-Verfahrens . . . . . . . . . . . . . . . . . . 128
5.4
Effizienz des RSA-Verfahrens
5.5
Primzahltests . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
5.6
Diskrete Logarithmen und das Schlüsselaustauschverfahren
von Diffie und Hellman . . . . . . . . . . . . . . . . . . . . . . 137
5.7
Sicherheit des Diffie-Hellman-Verfahrens . . . . . . . . . . . . 139
3
. . . . . . . . . . . . . . . . . . 134
5.8
Das ElGamal-Verschlüsselungsverfahren . . . . . . . . . . . . . 140
5.9
Erweiterungen der Diffie-Hellman und ElGamal-Verfahren . . 142
5.10 Modulares Quadrieren, das Verfahren von Rabin und der
Blum-Blum-Shub Pseudozufallsfolgengenerator . . . . . . . . . 143
6 Digitale Signaturen und kryptographische Hashfunktionen 145
6.1
Grundidee digitaler Signaturen
. . . . . . . . . . . . . . . . . 145
6.2
Kryptographische Hashfunktionen . . . . . . . . . . . . . . . . 146
6.3
Signaturen mit Hashfunktionen . . . . . . . . . . . . . . . . . 150
6.4
RSA-Signaturen . . . . . . . . . . . . . . . . . . . . . . . . . . 151
6.5
ElGamal-Signatur . . . . . . . . . . . . . . . . . . . . . . . . . 153
6.6
Der Digital Signature Algorithm (DSA) . . . . . . . . . . . . . 156
6.7
Blinde Signaturen . . . . . . . . . . . . . . . . . . . . . . . . . 157
7 Authentifizierung und Zero-Knowledge-Beweise
159
7.1
Passwörter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
7.2
Challenge-Response-Authentifizierung . . . . . . . . . . . . . . 160
7.3
7.2.a
Verwendung von symmetrischen Verschlüsselungsverfahren . . . . . . . . . . . . . . . . . . . . . . . . . 160
7.2.b
Verwendung von Public-Key-Signaturverfahren
. . . . 160
Zero-Knowledge-Beweise . . . . . . . . . . . . . . . . . . . . . 161
4
Abbildungsverzeichnis
1
Grundschema einer Verschlüsselung zwischen Alice und Bob .
2
Die Teildisziplinen Kryptographie und Kryptoanalyse . . . . . 12
3
Strom- vs Block-, Substitutions- vs Transpositionschiffre . . . 14
4
Zuordnung bei homophoner Substitutionschiffre . . . . . . . . 17
5
Glättung der Buchstabenhäufigkeiten bei VigenèreVerschlüsselung . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6
Schematischer Signallaufplan ENIGMA . . . . . . . . . . . . . 28
7
Schematischer Ablauf einer Feistel-Chiffrierung . . . . . . . . . 50
8
Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
9
Vereinfachtes DES: Expansion, Rundenschlüsseladdition,
Substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
10
Rundenschlüsselerzeugung . . . . . . . . . . . . . . . . . . . . 67
11
Schematische Darstellung der Berechnung von fKi (R) . . . . . 70
12
Schematischer Ablauf des Rijndael-Verfahrens . . . . . . . . . 80
13
Transformationen . . . . . . . . . . . . . . . . . . . . . . . . . 81
14
Verschlüsselung selbstsynchronisierender Stromchiffren . . . . 90
15
Entschlüsselung selbstsynchronisierender Stromchiffren . . . . 90
16
Rückgekoppeltes Schieberegister . . . . . . . . . . . . . . . . . 92
17
Binäres lineares Schieberegister der Länge n . . . . . . . . . . 93
18
Nichtlineare Kombination von linearen Schieberegistern . . . . 99
19
Nichtlineare Filtergeneratoren . . . . . . . . . . . . . . . . . . 100
20
Stop-and-Go-Generator . . . . . . . . . . . . . . . . . . . . . . 100
21
Wahrscheinlichkeitsfunktion p(X = i) der binomialverteilten
Zufallsgröße X für n = 6 . . . . . . . . . . . . . . . . . . . . . 106
5
9
22
23
Ablehnungsbereich einer binären 0-1-Folge der Länge 20
hinsichtlich der Zufallsvariablen Anzahl der Einsen“ . . . . . 107
”
Wahrscheinlichkeitsfunktion der Zufallsvariablen X1 für
n = 6 und n = 20 . . . . . . . . . . . . . . . . . . . . . . . . . 108
6
Tabellenverzeichnis
1
Häufigkeitsverteilung der Buchstaben in deutschsprachigen
Texten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2
Häufigste Digramme in deutschsprachigen Texten . . . . . . . 19
3
Exemplarische Zeichenfolgeabstände, Ermittlung v. d nach
Kasiski . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4
Teiltexte 1-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5
Alle 8 Input- u. Output-Differenzen zu geg. A′ = (1010) u. S1
57
6
Alle 8 Input- u. Output-Differenzen zu geg. A′ = (0011) u. S1
57
7
Alle 8 Input- u. Output-Differenzen zu geg. A′ = (1011) u. S2
58
8
Alle 8 Input- u. Output-Differenzen zu geg. A′ = (1100) u. S2
58
9
Die 8 S-Boxen des DES, repräsentiert durch 8 4 × 16 Matrizen 69
7
Einleitung
Kryptologie: Wissenschaft von der sicheren Übermittlung (oder Speicherung)
von Daten.
Übermittlung erfolgt über Kanäle: Kupferleitung, Glasfaser, drahtlose Kommunikation, etc.
Folgende Beeinträchtigungen sind möglich:
• zufällige Störungen
• systematische (physikalisch bedingte Störungen)
• passive Beeinträchtigungen (Abhören von Telefongesprächen, Lesen von
Speichermedien)
• aktive Beeinflussung (Fälschen von Daten, Nachrichten)
Die ersten beiden Punkte sind Thema der Codierungstheorie und der Signalverarbeitung. Die letzten beiden betreffen die Kryptologie.
Praktisch alle kryptologischen Verfahren haben die Aufgabe, eine (oder mehrere) der folgenden vier Anforderungen an die Übermittlung bzw. Speicherung von Nachrichten zu gewährleisten:
• Geheimhaltung (Lesen der Nachricht für Unbefugte unmöglich bzw.
schwierig zu machen)
• Authentifizierung (Identitätsbeweis des Senders der Nachricht gegenüber dem Empfänger, d.h. Empfänger kann sicher sein, dass die Nachricht nicht von einem anderen (unbefugten) Absender kommt.)
• Integrität (Nachricht darf während ihrer Übermittlung nicht (von Unbefugten) verändert werden, ohne dass dies bemerkt wird.)
• Verbindlichkeit (Der Sender kann später nicht leugnen, die Nachricht
abgeschickt zu haben)
Früher: Vor allem Geheimhaltung wichtig; hauptsächlich im militärischen
Bereich; Bsp.: Strategische Bedeutung der legendären Chiffriermaschine ENIGMA während des 2. Weltkrieges; führende Beteiligung Alan
Turings am Brechen des Algorithmus.
8
Heute: Zivile Anwendungen noch wichtiger, insbesondere wegen des enormen
Wachstums netzgestützter Kommunikation (Internet).
Inhalt der Vorlesung
• Klassische (symmetrische) Verschlüsselungsverfahren
• Asymmetrische Verschlüsselungsverfahren (Public Key Systeme)
• Kryptologische Hash-Funktionen
• Digitale Signaturen und Authentifizierung
• Zero-Knowledge Beweise
1
Grundbegriffe
Klartext (plaintext)
Zeichenfolge über Alphabet R
Sender
(Alice)
Verschlüsselung
Chiffrierung
(encryption)
Schlüssel
Geheimtext, Chiffretext(ciphertext), Kryptogramm:
Zeichenfolge über Alphabet S (ggf. R=S)
Empfänger
(Bob)
Entschlüsselung
Dechiffrierung
(decryption)
Schlüssel
Klartext
Abbildung 1: Grundschema einer Verschlüsselung zwischen Alice und Bob
Die Verschlüsselung geschieht mit einem Verschlüsselungsverfahren, Chiffrieralgorithmus.
Die Verschlüsselung eines Klartextes durch diesen Algorithmus erfolgt mit
Hilfe eines Schlüssels ke (key, encryption key).
9
Das Verschlüsselungsverfahren ist dann eine Funktion E, die jedem beliebigen Klartext m (message) einen Chiffretext c in Abhängigkeit vom Chiffrierschlüssel ke zuordnet:
c = E(m, ke )
Dabei muss gelten: Für jeden Schlüssel ke ist
E(m1 , ke ) 6= E(m2 , ke )
falls m1 6= m2
Schlüssel sind ebenfalls Zeichenfolgen (Passwort, Geheimzahl, Bitfolge . . . ).
Die Entschlüsselung des Chiffretextes c erfolgt dann mit einem zum Verschlüsselungsverfahren gehörenden Entschlüsselungsverfahren mit Hilfe eines
Dechiffrierschlüssels kd (decryption key), der von ke abhängt.
Entschlüsselungsfunktion D:
D(c, kd ) = m
Ist kd = ke (oder lässt sich kd leicht aus ke bestimmen) so spricht man von
symmetrischen Verschlüsselungsverfahren, ansonsten von asymmetrischen Verschlüsselungsverfahren.
Die Gesamtheit aus Verschlüsselungsverfahren und aller Schlüssel wird Kryptosystem genannt.
Beispiel:
A = B = {0, 1, . . . 25}
Verfahren: Verschiebeschiffre (Shift Cipher)
Verschlüsselung: x ∈ A, x → x + i mod 26 für ein i ∈ {0, 1, . . . 25}
Schlüssel: i
Entschlüsselung: x → x − i mod 26
(Symmetrisches Verfahren)
Ist m = k1 . . . kr , ki ∈ A,
so E(m, i) = ((k1 + i) mod 26) . . . ((kr + i) mod 26) = l1 . . . lr = c
D(C, i) = ((l1 − i) mod 26) . . . ((lr − i) mod 26) = m.
(Caesarchiffre: i = 3)
10
Ein Verschlüsselungsverfahren beinhaltet i.a. sehr viele verschiedene Verschlüsselungsmöglichkeiten, die jeweils durch einen Schlüssel festgelegt sind.
Kommunikationspartner müssen sich grundsätzlich über das Verschlüsselungsverfahren einigen und vor der Übertragung die Schlüssel vereinbaren.
Geheimgehalten werden muss der Schlüssel kd (d.h. bei symmetrischen Verfahren der gemeinsame Schlüssel). Das Verfahren lässt sich i.a. nicht geheimhalten (und sollte auch nicht geheimgehalten werden).
Kerkhoff ’sches Prinzip:
Die Sicherheit eines Verschlüsselungsverfahrens darf nur von der Geheimhaltung des Schlüssels abhängen, nicht jedoch von der Geheimhaltung des
Algorithmus.
Bei symmetrischen Verschlüsselungsverfahren muss daher der Schlüssel k(=
ke = kd ) auf sicherem Weg übermittelt werden.
Weshalb dann nicht gleich die ganze Nachricht auf sicherem Wege übermitteln?
• Nachricht lang, Schlüssel kurz
• Zeitpunkt der Schlüsselübergabe ist frei wählbar.
• Mehrere Nachrichten können mit gleichem Schlüssel verschlüsselt werden.
Mit Hilfe sog. Public-Key-Verfahren (asymmetrische Verfahren) hat man die
Möglichkeit, die Schlüssel ohne Gefahr auszutauschen.
Beispiel:
Biryukov, Shamir und Wagner haben 1999 den Verschlüsselungsalgorithmus
(A5) geknackt, der GSM-Handy-Telefonate auf der Funkstrecke zur Mobiltelefon-Basisstation schützt. GSM-Association hat den Algorithmus geheimgehalten (GSM-Group Special Mobile Standard für Funktelefone).
11
Kryptologie
Kryptographie
Kryptoanalyse
untersucht, wie Verschlüsselungsverfahren
zu brechen sind
beschäftigt sich mit
dem Entwurf von Verschlüsselungsverfahren
Abbildung 2: Die Teildisziplinen Kryptographie und Kryptoanalyse
Die Kryptoanalyse prüft, wie schwer ein Kryptosystem zu knacken ist. Hinsichtlich der Schwere eines Angriffs können folgende qualitative Unterscheidungen in absteigender Reihenfolge getroffen werden:
• Vollständiges Aufbrechen:
Schlüssel kd wird gefunden. Dann kann jede Nachricht, die mit dem
zugehörigen Schlüssel ke verschlüsselt wurde, entschlüsselt werden.
• Globale Deduktion:
Finden einer zu D(., kd ) äquivalenten Funktion ohne Kenntnis des Schlüssels.
• Lokale Deduktion:
Finden des Klartextes für nur einen abgefangenen Chiffretext.
Wichtige Arten von Angriffen:
(Angreifer heisst oft Mallory (malicious) - aktiv, oder Eve (eavesdropper,
Lauscher) - passiv.)
• Ciphertext-Only-Attack:
Der Kryptoanalytiker verfügt über eine bestimmte Menge Chiffretext.
• Known-Plaintext-Attack:
Der Kryptoanalytiker kennt zusätzlich den zum Chiffretext gehörenden
Klartext.
• Chosen-Plaintext-Attack:
Der Kryptoanalytiker kann einen beliebigen Klartext vorgeben und hat
die Möglichkeit, den zugehörigen Chiffretext zu erhalten (relevant v.a.
bei Public-Key-Systemen).
• Angriffe mit Gewalt, Bestechung, Erpressung o.ä.
12
Letztere Angriffe sind sehr wirkungsvoll. Der Besitzer des Schlüssels stellt
(neben fehlerhaften Implementierungen von Verschlüsselungsverfahren) die
größte Sicherheitsgefahr dar.
Ein Angriff, bei dem alle möglichen Schlüssel durchprobiert werden, heisst
Brute-Force-Angriff.
Daher: Menge der Schlüssel sollte möglichst groß sein (d.h. Schlüssellänge
muss genügend groß sein!)
Unterschied zwischen sicheren und uneingeschränkt sicheren Kryptosystemen:
• Uneingeschränkt sicher:
Auch bei Kenntnis von beliebig viel Chiffretext kann (beweisbar!) nicht
genug Information gewonnen werden, um daraus den Klartext oder den
Schlüssel zu rekonstruieren (theoretisch sicher ).
• Sicher:
Aufwand zur Entschlüsselung ist mit vertretbaren Kosten, Speicherkapazität, Zeitdauer zu groß (komplexitätstheoretisch sicher oder auch
nur praktisch sicher beim Stand der jetzigen Kenntnis).
Beispiel:
Schlüssellänge 128 Bit. 2128 ≈ 2, 5 · 1038 Schlüssel.
Seien 1012 Schlüssel pro Sekunde testbar.
Ang. 50 % der Schlüssel müssen getestet werden.
Aufwand: 1, 25 · 1026 Sek. ≈ 4 · 1018 Jahre
Rechenzeit dauert etwa 400 Millionen mal länger als das Alter des Universums (≈ 1010 Jahre).
13
2
Klassische symmetrische Verschlüsselungsverfahren
Klassisch: Verfahren vor 1970
Es gibt zwei Typen von Unterscheidungen symmetrischer Verschlüsselungsverfahren:
1. Unterscheidung:
Stromchiffren (stream ciphers)
Blockchiffren (block ciphers)
in Verbindung
mit
2. Unterscheidung:
Substitutionschiffren
Transpositionschiffren
Permutationschiffren
Abbildung 3: Strom- vs Block-, Substitutions- vs Transpositionschiffre
Stromchiffre:
Jedes Zeichen (oder jeder kurze Block) des Klartextes wird einzeln verschlüsselt.
Blockchiffre:
Klartext wird in Blöcke einer festen (i.a. nicht zu kleinen) Länge n zerlegt,
und jeder Block wird einzeln verschlüsselt. (Es gibt auch Verfahren mit variabler Blocklänge.)
Stromchiffren lassen sich nach dieser Definition als Blockchiffren mit der
Länge 1 auffassen. In der Regel spricht man aber nur von Blockchiffren,
wenn die Blöcke größere Länge haben.
Darüber hinaus sind Stromchiffren in der Regel dadurch gekennzeichnet, dass
aus einem Ausgangsschlüssel k ein Schlüsselstrom ki , k2 , . . . erzeugt wird,
wobei in einem Klartext m = m1 m2 . . . dann m1 mit k1 , m2 mit k2 , . . .
verschlüsselt wird.
Zweite Unterscheidungsmöglichkeit symmetrischer Verfahren:
Substitutionschiffre:
Jedes Zeichen des Klartextes wird durch ein Zeichen des Geheimtextalphabets ersetzt, die Position bleibt unverändert. Substitutionschiffren kommen
sowohl als Stromchiffren als auch als Blockchiffren vor.
Transpositionschiffre:
Der Klartext wird in Blöcke zerlegt, und die Zeichen innerhalb des Blocks
14
werden permutiert. Zeichen bleiben also unverändert, Positionen werden verändert. Transpositionschiffren sind in der Regel Blockchiffren. (Es gibt allerdings auch Transpositionschiffren, die ohne Blockzerlegung den gesamten
Klartext permutieren.)
Substitutionschiffren und Transpositionschiffren sind die Urtypen symmetrischer Verfahren. Es gibt Verallgemeinerungen, die sich keiner dieser beiden
Typen mehr zuordnen lassen, und Kombinationen dieser beiden Typen.
2.1
Substitutionschiffren
Eine Substitutionschiffre heißt monoalphabetisch, wenn jedes Klartextzeichen
aus A immer auf dasselbe Chiffretextzeichen aus B abgebildet wird und diese
Zuordnung injektiv ist. Ansonsten spricht man von polyalphabetischen Substitutionschiffren.
2.1.a
Monoalphabetische Substitutionschiffren
Wir nehmen der Einfachheit halber A = B an (keine wesentliche Einschränkung).
|A| = n
(z.B. n = 26, natürlichsprachiges Alphabet)
Chiffrierverfahren:
Anwendung einer Permutation σ von A auf die Buchstaben des Klartextes:
m1 . . . mk → σ(m1 ) . . . σ(mk )
Schlüssel: Permutation σ
Also gibt es z.B. 26! ≈ 4 · 1026 monoalphabetische Chiffrierungen über dem
natürlichen Alphabet A = {a, b, . . . z} (bzw. A = {0, 1, . . . 25}).
Sei A = {0, 1, . . . n − 1}.
Häufig wird nicht die gesamte Schlüsselmenge benutzt.
Verschiebechiffre1 :
m → m + i mod n
n verschiedene Schlüssel (nämlich alle i ∈ {0, 1, . . . n − 1}.)
1
s. Kap. 1
15
Tauschchiffren (affine Chiffre) sind eine Verallgemeinerung von Verschiebechiffren:
m → am + b mod n,
a, b ∈ {0, 1, . . . n − 1}
Damit diese Zuordnung bijektiv ist, muss ggT (a, n) = 1 sein.
(Z.B. n = 26, a = 2, b = 0
13 → 2 · 13 = 0
0 → 0 · 13 = 0)
Damit hat man ϕ(n) Möglichkeiten für a und insgesamt n·ϕ(n) viele Schlüssel
(a, b).
n = 26 :
12 · 26 = 312 viele Schlüssel
Beispiel:
A= {0,1,. . .25}
xx x x
x
  

   codiere

A= {a, b ,. . . z }
m → 7m + 12 mod 26
codiere
chif f riere
decodiere
TEXT −−−−→ 19, 4, 23, 19 −−−−−−→ 15, 14, 17, 15 −−−−−→ PORP
Monoalphabetische Verschlüsselungen natürlichsprachiger Texte sind kryptologisch nicht sicher, selbst unter der schwächsten Annahme einer Ciphertextonly-attack.
Dies liegt an der charakteristischen Häufigkeitsverteilung der Buchstaben
in natürlichsprachigen Texten. Diese Häufigkeitsverteilung insgesamt ändert
sich bei monoalphabetischen Verfahren nicht (es ändert sich nur die Häufigkeit der einzelnen Buchstaben), und das erlaubt in der Regel die Rekonstruktion der Klartexte schon aus Chiffretexten mit ca. 500 Buchstaben.
Noch einfacher ist die Analyse bei Verschiebe- oder Tauschchiffren: Hier
genügt die Identifikation eines bzw. zweier Buchstaben, um den Schlüssel
zu knacken.
Wir werden in Kürze auf die Kryptoanalyse monoalphabetischer Verfahren
genauer eingehen.
2.1.b
Homophone Substitutionschiffren
Homophone Substitutionschiffren lassen sich als spezielle polyalphabetische
Chiffren auffassen, also solche, in denen nicht jeder Klartextbuchstabe jeweils
16
auf denselben Chiffretextbuchstaben abgebildet wird.
Homophone Chiffren wurden entwickelt, um den Nachteil der charakteristischen Häufigkeitsverteilung bei monoalphabetischen Chiffren zu beheben.
Homophone Substitutionschiffre:
Abb. f , die jedem Klartextbuchstaben a ∈ A eine Teilmenge f (a) ⊆ B des
Chiffretextalphabets zuordnet.
Forderung: a1 , a2 ∈ A, a1 6= a2 , so f (a1 ) ∩ f (a2 ) = ∅
.
a1
.
. .
.f(a )
.
. .f(a. ) ..
.
1
a2
2
. . . ..
an
.
.
. .. . .f(a ) ..
.
. . .
.
.
.
n
Abbildung 4: Zuordnung bei homophoner Substitutionschiffre
Verfahren: Ein Klartext m = a1 a2 . . . wird chiffriert in c = c1 c2 . . .,
wobei ci zufällig aus f (ai ) gewählt wird.
Schlüssel: Abb. f , d.h. {f (a)|a ∈ A}
(Dieses Verfahren wurde schon um 1400 in Italien verwendet.)
Vorteil der homophonen Substitution:
Die Häufigkeitsverteilung der Klartextbuchstaben wird zerstört.
Ist a ∈ A und p(a) die Häufigkeit, in der a im Klartext auftaucht, wählt man
f (a) so groß, dass
p(a)
≈ c Konstante, unabhängig von a
|f (a)|
Man benötigt dazu ein großes Alphabet B.
In einem Chiffretext treten dann alle Buchstaben aus ∪ f (a) etwa gleich
a∈A
oft auf. Damit ist keine direkte Häufigkeitsanalyse mehr möglich.
Durch homophone Substitution ist es auch möglich, ein Chiffrierverfahren mit
folgender Eigenschaft anzugeben: Zu jedem empfangenen Chiffretext c gibt
17
es (mindestens) zwei verschiedene Schlüssel, die c in zwei sinnvolle Klartexte
dechiffrieren (Hammer 1981).
Wir beschreiben kurz die Konstruktion:
Chiffretextalphabet B = {1, . . . n2 }
Klartextalphabet A, |A| = n
K sei eine n × n - Matrix. Spalten und Zeilen seien mit den Elementen aus
A (in gegebener Reihenfolge) indiziert.
Einträge von K: Die natürlichen Zahlen von 1 . . . n2 (d.h. die Elemente von
B) in zufälliger Anordnung (jede genau einmal).
Definiere zwei homophone Substitutionen f1 , f2 :
a∈A:
f1 (a) = Menge der Zahlen in Zeile mit Index a
f2 (a) = Menge der Zahlen in Spalte mit Index a
Sei nun ein Klartext m = a1 a2 . . . ak zu verschlüsseln. Wähle einen anderen
sinnvollen Klartext x = a′1 a′2 . . . a′k derselben Länge wie m.
Verschlüssele m in c = c1 c2 . . . ck , wobei {ci } = f1 (ai ) ∩ f2 (a′i )
a′i
ai
ci
..
.
Unter Schlüssel f1 wird c in korrektes m dechiffriert, unter Schlüssel f2 wird
c in sinnvolles, aber nicht korrektes x dechiffriert.
Brute-Force-Angriffe sind damit wirkungslos, wenn der Angreifer nicht entscheiden kann, welcher der Texte m bzw. x der korrekte ist. (Beachte jedoch,
dass hier alle f1 (a), a ∈ A gleich groß sind, ebenso alle f2 (a), a ∈ A).
2.1.c
Kryptoanalyse monoalphabetischer und homophoner
Substitutionschiffren
Die Kryptoanalyse monoalphabetischer und homophoner Substitutionschiffren beruht auf der Häufigkeitsanalyse von Chiffretextzeichen bzw. -digrammen (Digramm: Paar aufeinander folgender Zeichen).
18
Natürliche Sprachen haben eine charakteristische Häufigkeitsverteilung von
Buchstaben und Digrammen (siehe Tabellen 1 u. 2).
Buchstabe
E
N
I
R
S
A
T
D
H
U
L
G
C
O
M
Häufigkeit
17,5 %
9,8 %
7,7 %
7,2 %
7,1 %
6,5 %
6,1 %
4,9 %
4,5 %
4,3 %
3,5 %
3,0 %
2,9 %
2,7 %
2,5 %
27 %
35 %
28 %
Buchstabe
B
F
W
K
Z
P
V
J
Y
X
Q
Häufigkeit
1,9 %
1,7 %
1,7 %
1,3 %
1,1 %
0,9 %
0,8 %
0,3 %
zus.
0,1 %
Tabelle 1: Häufigkeitsverteilung der Buchstaben in deutschsprachigen Texten
Paar
en
er
ch
de
te
nd
ei
ie
in
es
Häufigkeit (unter den 262 = 676 Paaren)
jeweils
3,5 - 4,5 %
2,5 - 3 %
jeweils
1,5 - 2,5 %
Tabelle 2: Häufigste Digramme in deutschsprachigen Texten
Bei monoalphabetischen Substitutionen bleiben diese Häufigkeitsverteilungen
als Ganzes erhalten und erlauben die Rekonstruktion von Klartexten aus
schon relativ kurzen Chiffretexten (ca. 500 Buchstaben).
19
Beispiel:
Gesucht wird ein Klartext in deutscher Sprache, der mittels monoalphabetischer Substitution verschlüsselt wurde:
upu ovkt hpe puvkjskvikwiku zkseswdzku nvwi, qkt gpsiik. akcsww cstq qkt
jkwkt bktwiokuqusw qoypkt zovku, qoww sdz ktwi ksueoj ksusak vkektfpuaku pkvkt puwkt hcksipuvkjskvikwikw nvwi, qku fpktvsw, eodzk. qskwku
jskvi lo wdzskt uskeouq. su untqoektsfo swi kw pkvjsdz, se nfinvkt fpktvswwk
bnt wksuk zopwipktk hp jkaku, pe qku opinyoztktu hp wsauojswsktku, qoww
kw nfinvkt swi. hp zojjnckku znji eou wsk qouu suw zopw puq jokwwi wsk
puikt ouiksjuozek qkt aouhku yoesjsk yksktjsdz bktyopjku. upt undz ksusak itoqsisnuojswiku eodzku wsdz qsk epkzk, fpktvswintik hp vodfku, ckjdzk
qouu su ojpesuspeynjsk akcsdfkji su qku fpkzjwdztouf akakvku cstq, pe qouu
ksusak cndzku wxokikt esi atnwwke zojjn puq sasii ajksdzyojjw su qku ovyojj
hp couqktu.
Zur Kryptoanalyse werden die Häufigkeitsverteilung der Buchstaben und Digramme in deutschsprachigen Texten mit der Verteilung im vorliegenden
Chiffretext verglichen.
Buchstabe
K
U
S
W
O
T
P
I
J
Q
Z
V
E
Anzahl
102
62
59
44
40
36
33
32
29
24
24
20
19
Häufigkeit
16,60%
10,10%
9,60%
7,20%
6,50%
5,90%
5,40%
5,20%
4,70%
3,90%
3,90%
3,30%
3,10%
Buchstabe
N
D
A
F
C
H
Y
B
G
L
X
M
R
Anzahl
18
15
14
11
9
8
8
3
1
1
1
-
Buchstabenhäufigkeiten im Chiffretext
Im Chiffretext sind 503 Digramme enthalten.
Aus der Buchstabenhäufigkeit entnimmt man:
K wird dechiffriert zu E.
20
Häufigkeit
2,90%
2,40%
2,30%
1,80%
1,50%
1,30%
1,30%
0,50%
0,20%
0,20%
0,20%
-
Digramm
KU
KS
KW
KO
KT
KP
KI
Anzahl
20
10
8
26
1
Häufigkeit
4,00%
2,00%
1,60%
5,20%
0,20%
Digramm
UK
SK
WK
OK
TK
PK
IK
Anzahl
1
13
6
3
3
9
10
Häufigkeit
0,20%
2,60%
1,20%
0,60%
0,60%
1,80%
2,00%
Häufigkeit der relevanten Digramme, die den Buchstaben K enthalten
Ferner zeigt sich, dass sehr wahrscheinlich U oder S zu N dechiffriert wird.
Da bei den Digrammen KU doppelt so häufig vorkommt wie KS, nehmen wir
an:
U wird dechiffriert zu N.
Unter allen relevanten Digrammen, die K enthalten, treten einzig im Paar
(KS,SK) beide Digramme mit einer Häufigkeit von jeweils mindestens 2 %
auf. Es ist daher plausibel anzunehmen:
S wird dechiffriert zu I.
Aus der Digrammhäufigkeit von KT ergibt sich:
T wird dechiffriert zu R.
Ersetzt man im Chiffretext die Chiffretextbuchstaben k,u,s,t durch die ihnen
vermutlich zugeordneten Klartextbuchstaben E,N,I,R, so ergibt sich:
NpN ovER hpe pNvEjIEviEwiEN zEIeIwdzEN nvwi, qER gpIiiE. aEcIww
cIRq qER jEwER bERwioENqNIw qoypER zovEN, qoww Idz ERwi EINeoj
EINIaE vEeERfpNaEN pEvER pNwER hcEIipNvEjIEviEwiEw nvwi, qEN
fpERvIw, eodzE. qIEwEN jIEvi lo wdzIER NIEeoNq. IN NnRqoeERIfo Iwi
Ew pEvjIdz, Ie nfinvER fpERvIwwE bnR wEINE zopwipERE hp jEaEN, pe
qEN opinyozRERN hp wIaNojIwIEREN, qoww Ew nfinvER Iwi. hp zojjncEEN znji eoN wIE qoNN INw zopw pNq joEwwi wIE pNiER oNiEIjNozeE
qER aoNhEN yoeIjIE yEIERjIdz bERyopjEN. NpR Nndz EINIaE iRoqIiInNojIwiEN eodzEN wIdz qIE epEzE, fpERvIwinRiE hp vodfEN, cEjdzE
qoNN IN ojpeINIpeynjIE aEcIdfEji IN qEN fpEzjwdzRoNf aEaEvEN cIRq,
pe qoNN EINIaE cndzEN wxoEiER eIi aRnwwEe zojjn pNq IaIii ajEIdzyojjw IN qEN ovyojj hp coNqERN.
Nun ergeben sich unmittelbar weitere Ersetzungen:
21
P wird dechiffriert zu U, W wird dechiffriert zu S, O wird dechiffriert zu A,
etc.
Es ist dann einfach, die vollständige Dechiffrierung vorzunehmen:
Chiffretext
A
B
C
D
E
F
G
H
I
J
K
L
(M)
Klartext
G
V
W
C
M
K
Q
Z
T
L
E
J
Chiffretext
N
O
P
Q
(R)
S
T
U
V
W
X
Y
Z
Klartext
O
A
U
D
I
R
N
B
S
P
F
H
Der dechiffrierte Text lautet also:
Nun aber zum unbeliebtesten heimischen Obst, der Quitte. Gewiss wird der
Leser Verstaendnis dafuer haben, dass ich erst einmal einige Bemerkungen
ueber unser zweitunbeliebtestes Obst, den Kuerbis, mache. Diesen liebt ja
schier niemand. In Nordamerika ist es ueblich, im Oktober Kuerbisse vor seine Haustuere zu legen, um den Autofahrern zu signalisieren, dass es Oktober
ist. Zu Halloween holt man sie dann ins Haus und laesst sie unter Anteilnahme der ganzen Familie feierlich verfaulen. Nur noch einige Traditionalisten
machen sich die Muehe, Kuerbistorte zu backen, welche dann in Aluminiumfolie gewickelt in den Kuehlschrank gegeben wird, um dann einige Wochen
spaeter mit grossem Hallo und Igitt gleichfalls in den Abfall zu wandern.2
Aufgabe:
Der folgende Text wurde vor längerer Zeit abgefangen. Es ist bekannt, dass
es sich um einen monoalphabetisch verschlüsselten deutschsprachigen Text
handelt. Leider wurden Wortzwischenräume und Satzzeichen weggelassen.
(Die Aufteilung in 5er- Blöcke dient nur der besseren Übersicht.)
wzzsv uwgof uwsgs vpbfu lgyso wfuho pvsws vohvb ifuss heloj qrwsi ysplf
uhjqu lxsgp sggli owugg qgpsv svohs lgonv lgyai bysvj elvjq vqsfd plwuz
2
aus: M. Goldt, Quitten für die Menschen zwischen Emden und Zittan [17]
22
qivwf uzwhs wgszo fuily lqaod wggjq rbvys dbzzs gelvl xsvps vjesw hspsv
xiwhj ofugs iiplg lfuul shhss vispw yhesv psgzq soosg eqvps rbgps valqo hgqvg
bfuys ohvsw ahpsg gwgje wofus gulhh sswgu wsxrb guwgh sgzwh swgsz ofues
vsgys ysgoh lgpqi vwfuo dbnax swglu sjsvo nvsgy h
a) Wie lautet der Klartext ?
b) Wer ist Alice ?
Bei homophonen Substitutionen wird die Häufigkeitsanalyse von Buchstaben
nicht helfen (per Konstruktion). Dennoch werden auch hier z.B. Digramme
zur Kryptoanalyse verwendet.
Wir machen dies an einem Beispiel klar:
Angenommen die homophone Substitution f eines deutschsprachigen Textes
wurde so gewählt, dass im Chiffretext alle Buchstaben mit etwa gleicher
Häufigkeit vorkommen.
D.h. |f (Buchstabe)| ∼ Häufigkeit des Buchstabens in Texten der deutschen
Sprache.
Ist z.B. |f (c)| = α ∈ N, so folgt aus der Häufigkeit von e, n, r, h in deutschsprachigen Texten, dass annähernd Folgendes gilt:
|f (e)| = 6α, |f (n)| = 3, 5α, |f (r) = 2, 5α, |f (h)| = 1, 5α
Das Digramm ’en’ wird also auf 21α2 viele Arten als Digramm eines Buchstaben aus f (e) und eines aus f (n) chiffriert, und bei zufälliger Auswahl treten
diese Digramme im Chiffretext etwa gleich häufig auf.
Dagegen wird das Digramm ’ch’ nur auf 1, 5α2 viele Arten chiffriert. Da
’en’ im Klartext etwa 4% aller Digramme ausmacht und ’ch’ etwa 2, 75%,
tritt jetzt jedes Digramm im Chiffretext, welchen ’en’ verschlüsselt, mit einer
4
Häufigkeit von 21
% ≈ 0, 2% auf. Jedes Digramm im Chiffretext, welches ’ch’
verschlüsselt, tritt dagegen mit einer Häufigkeit von 2,75
% ≈ 1, 8% auf. Keine
1,5
anderen Digramme im Chiffretext treten mit einer derartig hohen Häufigkeit
auf (Digramme, die ’nd’ verschlüsseln, sind die zweit häufigsten). Auf diese
Weise lassen sich die Mengen f (c) und f (h) bestimmen. Der Grund hierfür
ist also, dass die Einzelhäufigkeiten von ’c’ und ’h’ relativ gering, die Digrammhäufigkeit von ’ch’ aber relativ hoch ist, während bei allen anderen
häufigen Digrammen auch die Häufigkeit wenigstens eines beteiligten Buchstabens relativ hoch ist.
23
Mit ähnlichen Methoden der Digrammanalyse (und geschicktem Raten) lassen sich auch die Teilmengen des Chiffretextalphabets B, die anderen Klartextbuchstaben zugeordnet sind, ermitteln.
Allerdings: Man benötigt deutlich längere Chiffretexte für diese Analysen
als es bei Texten der Fall ist, die mittels monoalphabetischer Substitution
verschlüsselt wurden.
2.1.d
Polyalphabetische Verschlüsselungen und Lauftextverschlüsselungen
Bei polyalphabetischen Verschlüsselungen wird ein Klartextzeichen durch
verschiedene Chiffretextzeichen verschlüsselt, und ein und dasselbe Chiffretextzeichen kann für verschiedene Klartextzeichen stehen (in Abhängigkeit
von ihrer Position im Text).
Sei A das Klartextalphabet, B0 , . . . Bd−1 Chiffretextalphabete.
fj : A → Bj bijektive Abbildungen (j = 0, . . . d − 1) und
h: N→ {0, . . . d − 1} (i.a. h(x) = x mod d)
Klartext m = a1 . . . at (ai ∈ A) wird verschlüsselt in
Chiffretext c = fh(1) (a1 ) fh(2) (a2 ) . . . fh(t) (at ).
Schlüssel = h, f0 , . . . fd−1
Man sagt: h erzeugt den Schlüsselstrom fh(1) , fh(2) , . . .
Eine solche Chiffrierung heißt polyalphabetische Substitution (im engeren Sinne). Es handelt sich um eine Stromchiffre. Sie ist also eine Folge von monoalphabetischen Substitutionen mit wechselnden Schlüsseln, die durch die
Auswahlfunktion h bestimmt werden.
Ist h(x) = x mod d, so wiederholen sich die Schlüssel nach jeweils d verschlüsselten Klartextzeichen. Man nennt die Chiffre dann periodisch. Dann
sind f0 , . . . fd−1 die Schlüssel, die periodisch angewendet werden.
Annahme für diesen Abschnitt: A = B0 = B1 = . . . = Bd−1
Beispiel (Vigenère-Chiffre 3 ):
A = {0, 1, . . . n − 1} (z.B. n = 26)
h(x) = x mod d
fj (a) = (a + kj ) mod n,
kj ∈ A fest (Caesarchiffre)
3
nach Blaise de Vigenère, 1523-1596
24
Schlüssel: k0 , . . . kd−1
Man nennt ko k1 . . . kd−1 auch Schlüsselwort.
Insgesamt gibt es also nd viele verschiedene Schlüsselworte.
konkretes Beispiel:
A = {0, 1, . . . 25}
(Codierung von {A, B, C, . . . Z})
Schlüsselwort:
codiert
KRYPTO −−−−→ 10, 17, 24, 15, 19, 14
(d = 6)
Klartext:
codiert
KOMMEMORGENNICHT −−−−→ 10, 14, 12, 12, 4, 12, 14, 17, 6, 4, 13, 13, 8, 2, 7, 19
Die periodische Addition (modulo 26) des Schlüsselworts wird meist in folgender Weise geschrieben:
- 10
Schlüsselwort
: 10
fortlaufender
Klartext in
Zeilen der
XXX
X
z
X
Länge d = 6
20
14
24
8
18
17 24 15 19 14
14 12 12 4 12
X
XXX
5 10 1 23 0 y
X fortlaufender
17 6 4 13 13
Chiffretext
8 4 19 6 1 in Zeilen der
2 7 19
Länge d = 6
9
19 5 8
Decodiert: UFKBXAYIETGBSTFI
Beachte: Es ist die Regel, dass der gleiche Chiffretextbuchstabe für verschiedene Klartextbuchstaben steht (z.B. 1 für 12 und 13). Ebenso wird ein und
derselbe Klartextbuchstabe i.a. in verschiedene Chiffretextbuchstaben verschlüsselt (z.B. 12 in 0, 1, 10).
Polyalphabetische Substitutionen führen i.a. zur Glättung der Buchstabenhäufigkeiten. Wir machen dies am Beispiel der Vigenère-Chiffre von Seite 24
plausibel, indem wir den Chiffretextbuchstaben I analysieren:
Hat das Schlüsselwort d′ ≤ d verschiedene Buchstaben, so kann jeder Chiffretextbuchstabe aus d′ verschiedenen Klartextbuchstaben entstehen.
∧
Chiffretextbuchstabe 8 = I
25
enstanden aus Klartextbuchstaben
8
8
8
8
8
8
in
in
in
in
in
in
der
der
der
der
der
der
1.
2.
3.
4.
5.
6.
Spalte
Spalte
Spalte
Spalte
Spalte
Spalte
∧
Y=
∧
R=
∧
K=
∧
T=
∧
P=
∧
U=
24 = 8 − 10
17 = 8 − 17
10 = 8 − 24
19 = 8 − 15
15 = 8 − 19
20 = 8 − 14
(mod 26)
(mod 26)
(mod 26)
(mod 26)
(mod 26)
(mod 26)
Bei längeren Klartexten kann man davon ausgehen, dass sich die Häufigkeit
der Buchstaben im Klartext der Häufigkeit der Klartextbuchstaben in den
einzelnen Spalten annähert. (Das sind in der ersten Spalte die Buchstaben
an Position 1, d + 1, 2d + 1, . . . des Klartextes, in der zweiten Spalte die an
Position 2, d + 2, 2d + 2, . . .)
Also entspricht die Häufigkeit eines Chiffretextbuchstabens der durchschnittlichen Häufigkeit von d′ vielen verschiedenen Klartextbuchstaben. Diese mittelt sich aus.
In obigem Beispiel entspricht die Häufigkeit von I im Chiffretext der durchschnittlichen Häufigkeit von Y, R, K, T, P, U im Klartext, also von relativ
selten vorkommenden Buchstaben wie Y, P, K und relativ häufigen wie R,
T und U.
Abbildung 5: Glättung der Buchstabenhäufigkeiten bei Vigenère-Verschlüsselung mit Schlüsselwort aus d verschiedenen Buchstaben
26
Zur Kryptoanalyse periodischer polyalphabetischer Verschlüsselungen ist es
zunächst notwendig, die Periodenlänge d (also bei Vigenère-Chiffren die Schlüsselwortlänge) zu bestimmen. Wie das möglich ist, werden wir im nächsten
Abschnitt beleuchten.
Ist d bekannt, so sind d viele monoalphabetische Substitutionschiffren zu entschlüsseln. Dies geht, falls Chiffretexte genügend groß (im Vergleich zur Periodenlänge d) sind, wie in Unterkapitel 2.1.c beschrieben. Bei der VigenèreChiffre sind die zu entschlüsselnden, monoalphabetisch verschlüsselten Texte
die in jeder Spalte. Sie beruhen auf Caesar-Chiffren und sind deshalb besonders einfach zu knacken. Man beachte jedoch: Die Klartexte in den Spalten
sind keine sinnvollen Texte (diese ergeben sich zeilenweise).
Bevor wir auf nicht-periodische polyalphabetische Verschlüsselungen eingehen, sei ein historisches Beispiel vorgestellt:
Beispiel (ENIGMA):
Chiffriermaschine, von der deutschen Wehrmacht im 2. Weltkrieg eingesetzt,
die 1920 von Arthur Scherbius zunächst für den zivilen Bereich entwickelt
wurde. Sie beruht auf polyalphabetischer Verschlüsselung.
Funktionsprinzip:
• Der Klartext wird über eine Tastatur eingegeben, die mittels elektrischer Kontakte Signale an das Steckbrett weiter gibt.
• Auf dem Steckbrett kann jede Permutation, die aus 5 (disjunkten) 2er
Zyklen besteht, geschaltet werden (andere Versionen wurden ebenfalls
konstruiert). Damit existieren
26 24 22 20 18
≈ 6 · 1011 viele Steckbrettmöglichkeiten.
2
2
2
2
2
• Auf jeder Walze ist eine Permutation verdrahtet. Nach Eingabe eines
Zeichens dreht sich die 1. Walze um eine Position, so dass eine neue
Permutation entsteht. Nach 26 Drehschritten geht sie wieder in ihre
ursprüngliche Position und die 2. Walze dreht sich um eine Position.
Nach 26 Drehschritten der 2. Walze beginnt die 3. Walze sich um eine
Position zu drehen. (Auch andere Versionen mit 4 und 5 Walzen)
• Der Reflektor ist eine fest verdrahtete Permutation von 13 disjunkten
2er Zyklen.
27
• Auf dem Rückweg werden die Permutationen der 3., 2., 1. Walze nochmals durchlaufen. Dadurch wird kein Klartextzeichen auf sich abgebildet.(Das stellte sich als Schwachpunkt heraus.)
Periodenlänge: 26 · 26 · 26 = 17576
• Die Ausgabe erfolgt über ein leuchtendes Buchstabenlämpchen.
Steckbrett
1. Walze
2. Walze
3. Walze
Reflektor
Abbildung 6: Schematischer Signallaufplan ENIGMA
Je nach Steckbrettverschaltung und Ausgangsstellung der Walzen gibt es damit 17576 · 602350749000 ≈ 1, 06 · 1017 viele Schlüssel. Diese wurden zunächst
alle drei Monate, dann jeden Tag, dann alle acht Stunden gewechselt. Bei der
großen Periodenlänge (in der Regel größer als die Klartextlänge) waren die
im nächsten Abschnitt dargestellten kryptoanalytischen Verfahren nicht anwendbar.
Dennoch wurde die ENIGMA-Verschlüsselung von den Briten durch die Gruppe um Alan Turing in Bletchley Park geknackt. (Entwicklung der BOMB erster elektromagnetischer Computer, später COLOSSUS - erster programmierbarer Computer)4
Nichtperiodische polyalphabetische Verschlüsselungen
Nichtperiodische polyalphabetische Verschlüsselungsverfahren, auch Lauftextverschlüsselungen genannt, erfüllen die Eigenschaft
Länge Schlüsselfolge ≥ Länge Klartext.
Man bezeichnet sie auch als Vernam-Chiffren 5 , insbesondere wenn das Alphabet {0, 1} zugrunde liegt.
Wird eine Vigenère-Chiffre mit genügend langem ’Schlüsselwort’gewählt (d.h.
Länge Schlüsseltext ≥ Länge Klartext), so bestehen kryptoanalytische Möglichkeiten, falls das Schlüsselwort ein sinnvoller Text ist (z.B. fortlaufender
Text eines Buches; als auszutauschenden Schlüssel benötigt man dann nur
4
Einzelheiten hierzu in den Werken von Bauer und Kahn [5], [20] [21] oder in der
Turing-Biographie von A. Hodges [18]
5
nach G. Vernam (AT&T)
28
Seite, Zeile und Position des ersten Schlüsselwortbuchstabens in der Zeile). Dies beruht auf einer Beobachtung des Kryptologen William Friedman
(1891 – 1969), dass in diesem Fall ein hoher Anteil der Geheimtextbuchstaben durch Addition häufig auftretender Klartextbuchstaben mit häufig
auftretenden Schlüsseltextbuchstaben entsteht.6
In jedem Fall sollten daher bei Lauftextverschlüsselungen durch Addition von
Schlüsseltexten Zufallsfolgen von Buchstaben als Schlüsseltexte genommen
werden.7
Bei der Wahl von Zufallsfolgen als Schlüsseltexte lassen sich tatsächlich theoretisch sichere Kryptosysteme konstruieren.
Zur Verdeutlichung dieser Tatsache nehmen wir an, dass alle Nachrichten
binär kodiert sind, d.h. A = {0, 1}, und der ’Schlüsseltext’ ebenfalls eine Folge
von Bits ist. Die Verschlüsselung erfolgt dann durch stellenweise Addition
modulo 2 (XOR, ⊕) von Klartextbits und Schlüsseltextbits.
Ist der Schlüsseltext eine echte Zufallsfolge, so nennt man dieses Verfahren
one-time-pad. Es bietet absolute Sicherheit.
Was heißt Zufallsfolge von Bits?
(an )n∈N , an ∈ {0, 1} heißt Zufallsfolge, falls die Werte 0, 1 jeweils mit dem
Wahrscheinlichkeitswert 12 vorkommen und aus der Kenntnis eines beliebig
langen Anfangsstücks der Folge (etwa Länge m) keine Informationen über
am+1 ableitbar sind.
(Präziser: Folge statistisch unabhängiger, symmetrisch verteilter binärer Zufallsvariablen)
Es ist anschaulich klar, dass bei Addition einer solchen Zufallsfolge zu einer
beliebigen (Klartext-) Bitfolge eine Folge entsteht, in der an jeder Stelle 0, 1
mit einer Wahrscheinlichkeit von 12 vorkommt und die Kenntnis der ersten
m Chiffretextglieder keine Information über das (m + 1)-te gibt.
Für jeden Klartext ist jede Bitfolge gleicher Länge wie der Klartext gleich
wahrscheinlich als Chiffretext.
Daraus lässt sich mit der Bayes’schen Formel leicht folgern:
(∗) p(m|c) = p(m)
für jeden Klartext m und jeden Chiffretext c;
6
siehe z.B. Bauer [5]
Auf die Problematik der Erzeugung von Zufallsfolgen werden wir an späterer Stelle
eingehen.
7
29
d.h. die Wahrscheinlichkeit, dass m Klartext ist, wenn man den Chiffretext c
kennt, ist genauso groß wie die Wahrscheinlichkeit, dass m Klartext ist, ohne
dass man c kennt.
∗ ist die Bedingung für perfekte (uneingeschränkte) Sicherheit eines Kryptosystems.
2.1.e
Kryptoanalyse periodischer polyalphabetischer Verschlüsselungen
Bei der Kryptoanalyse sind zwei Schritte erforderlich:
a) Bestimmung der Periode d
b) Kryptoanalyse der monoalphabetisch verschlüsselten Teiltexte, die durch
die Buchstaben des Chiffretextes gegeben sind, die an der Stelle
1, d + 1, 2d + 1, . . .
2, d + 2, 2d + 2, . . .
..
.
d, 2d, 3d, . . .
stehen.
Ist der Chiffretext genügend lang, so lässt sich der zweite Schritt wie in Unterkapitel 2.1.c behandeln. Insbesondere bei Vigenère-Verschlüsselungen, wo
die monoalphabetischen Verschlüsselungen Verschiebechiffren sind, ist dies
besonders einfach.
Wir kümmern uns also jetzt um den ersten Schritt, wie man die Periode d
bestimmen kann.
1. Methode
Man teste nacheinander d = 1, 2, . . . solange, bis sich in den Teiltexten aus
Schritt 2 eine Häufigkeitsverteilung ergibt, die der Häufigkeitsverteilung eines
natürlichsprachigen (etwa deutschen) Textes entspricht. Ist der Chiffretext
im Vergleich zur Periodenlänge genügend groß und ist d relativ klein, so funktioniert diese Methode (insbesondere mit Computerunterstützung) gut. Bei
einer falschen Wahl von d entstehen Teiltexte mit Häufigkeitsverteilungen,
die in der Regel deutlich glatter sind als die Häufigkeitsverteilung in einem
natürlichsprachigen Text.8
8
Visualisierungen dieses Verfahrens sind daher oft hilfreich. Siehe z.B. http://math.
uscd.edu/∼crypto/ (Java Applet)
30
Die nächsten beiden Methoden geben Hinweise auf die Größe von d und
können sinnvoll in Kombination mit Methode 1 eingesetzt werden.
2. Methode (Kasiski-Test9 )
Dieser Test beruht auf folgender Überlegung:
Wiederholt sich eine Zeichenfolge im Klartext mit einem Abstand, der ein
Vielfaches der Periodenlänge ist, so werden diese Zeichenfolgen gleich verschlüsselt, so dass sich Wiederholungen von Zeichenfolgen im Chiffretext ergeben, deren Abstand ein Vielfaches der Periodenlänge ist.
Solche Wiederholungen von Zeichenfolgen können im Chiffretext natürlich
auch zufällig auftreten, wobei der Abstand dann kein Vielfaches der Periodenlänge ist. Dies tritt aber deutlich seltener auf als die erstgenannten
Wiederholungen.
Der Kasiski-Test beruht nun darin, den Chiffretext auf Wiederholungen von
Zeichenfolgen mit mindestens drei Zeichen zu untersuchen und die jeweiligen
Abstände zu bestimmen. Bei längeren Texten gibt dies deutliche Hinweise
auf die Periodenlänge. In aller Regel bleiben nur wenige Möglichkeiten, die
dann näher zu untersuchen sind.
Beispiel:
Mit Vigenère-Chiffrierung verschlüsselter deutschsprachiger Text (die Aufteilung in Blöcke dient nur der besseren Übersicht):
FSGEXV
PGIAVI
EHKCJS
EEIYWX
UGYFSP
JGEIZU
MEFSSR
EVIISA
KJSWLT
WLFEEL
JLNRRU
IIGABV
ZOIZOE
KBXORU
MGYFNX
IIZJIJ
JIBNTS
UYVCJC
VOGYRL
LFVLAH
TEGEEU
EJTMUR
ELXVOT
VTIMGY
BELDHZ
FGYRUL
RKFNMT
IEDLCE
MPNYME
YBKMEC
JSNECT
YVSKFE
AHKVOK
IBCBIQ
NVRDHN
FMPSIH
GYUELW
IBRQVE
IUERXV
FEIUER
VUHXVS
IE
EFIXUE
RHEHOR
HXJDHF
TGCFKF
XRVFTY
SOGOFN
HQFOOU
ONIFVS
YVTSYP
IHIZOF
XFHIII
ILEFSY
l = 320 Buchstaben
9
Diese Methode stammt in Ansätzen von dem englischen Mathematiker und Ökonom
Charles Babbage (1792-1871) aus dem Jahr 1854. Sie wurde 1863 von dem preußischen
Major Friedrich Kasiski (1805- 1881) veröffentlicht.
31
Kasiski-Test:
Zeichenfolge
MGY
GYF
YMEF
JSWL
TIB
KFEIUERX
IZO
GYR
LAH
EFS
Position 1
13
14
28
56
126
172
189
207
216
280
Position 2
118
194
288
101
264
222
249
212
256
285
105
180
260
45
138
50
60
40
Abstand
= 3·5·7
= 22 · 32 · 5
= 22 · 5 · 13
= 32 · 5
= 2 · 3 · 23
= 2 · 52
= 22 · 3 · 5
5
= 23 · 5
5
Tabelle 3: Exemplarische Zeichenfolgeabstände, Ermittlung v. d nach Kasiski
Da die lange Zeichenfolge KFEIUERX mit großer Wahrscheinlichkeit sich
nicht zufällig wiederholt, kann man davon ausgehen, dass die Schlüsselwortlänge ein Teiler von 50 ist. Da 5 in neun Fällen die auftretenden Abstände
teilt, 2 aber nur in sechs Fällen (und 25 überhaupt nur in einem Fall), ist es
plausibel anzunehmen, dass das Schlüsselwort Länge d = 5 hat. Die Zeichenfolge TIB hätte sich dann als einzige zufällig wiederholt.
3. Methode (Friedman-Test10 )
Zentral für den Friedman-Test ist der sog. Koinzidenzindex.
Koinzidenzindex I = I(m) einer Zeichenfolge m über einem Alphabet A
(|A| = n) ist die Wahrscheinlichkeit, dass an zwei zufälligen Positionen des
Textes die Zeichen gleich sind.
Sei A = {a1 , . . . an }. Sei l die Länge der Zeichenfolge m und li die Häufigkeit
des Auftretens von ai in m.
Also: l =
n
P
li
i=1
Gesamtzahl aller (ungeordneten) Paare von Positionen in m ist
l
2
=
l(l−1)
.
2
Gesamtzahl aller (ungeordneten) Paare von Positionen mit gleichen Zeichen
n
n
P
P
li (li −1)
li
.
=
ist
2
2
i=1
i=1
10
William Frederic Friedman (1891-1969) hat statistische Methoden in die Kryptologie
eingeführt.
32
Die Wahrscheinlichkeit, dass an zwei zufällig gewählten Positionen in m der
gleiche Buchstabe steht, ist also:
I = I(m) =
n
P
i=1
li (li − 1)
l(l − 1)
Wir nehmen jetzt n = 26 an, A = {0, 1, . . . 25} als Codierung für {A, . . . Z}.
In langen deutschsprachigen Texten ist I ≈ Id := 0, 0762 (ergibt sich aus den
Buchstabenhäufigkeiten in deutschen Texten).
Für lange Texte mit l1 = l2 = . . . l26 (Zufallstexte) gilt:
I=
=
26
P
( li )2
lgroß i=1 l
≈
=
26
P
i=1
26
P
li (li − 1)
=
l(l − 1)
li2
l
i=1
1 −
2
l (1 − l ) l(l −
26
P
1 2
1
( 26
) = 26
i=1
1)
=
≈
26
P
i=1
li2
26
P
li
i=1
−
l(l − 1) l(l − 1)
26
P
li2
l
1
· i=12 −
l−1
l
l−1
0, 0385 =: Iz
(z für zufällig)
Also: In deutschsprachigen Texten treten gleiche Buchstaben an zwei zufällig
(unabhängig) gewählten Positionen etwa doppelt so häufig auf wie in zufällig
erzeugten Texten.
Was hilft der Koinzidenzindex zur Bestimmung der Periode d einer polyalphabetischen Verschlüsselung?
Zerlege den Chiffretext c in die d monoalphabetisch verschlüsselten Teiltexte:
(Pos. 1, d + 1, 2d + 1, . . . Pos. 2, d + 2, 2d + 2, . . . Pos. d, 2d, 3d, . . .)
Wir nehmen an, daß diese verschieden monoalphabetisch verschlüsselt wurden. (Bei Vigenère bedeutet dies, dass das Schlüsselwort aus lauter verschiedenen Buchstaben besteht.) Wählt man zwei Positionen innerhalb eines solchen Teiltextes, so ist die Wahrscheinlichkeit für zwei gleiche Buchstaben
≈ Id = 0, 0762. Wählt man zwei Positionen, die in verschiedenen Teiltexten
liegen, so ist die Wahrscheinlichkeit für zwei gleiche Buchstaben annähernd
die eines Zufallstextes, also ≈ Iz = 0, 0385.
33
[Anmerkung: Letztere Aussage trifft nur zu, wenn die Permutationen, die die
monoalphabetischen Substitutionen bewirken, die Häufigkeit jedes Buchstaben insgesamt gleichmäßig verteilen, d.h. für jedes a ∈ A soll gelten:
1 X
1
,
p(σ −1 (a)) ≈
|M | σ∈M
26
wobei M die Menge der auftretenden Permutationen und p(b) für b ∈ A die
relative Häufigkeit des Buchstabens b in (langen) deutschsprachigen Texten
bezeichnet.
Begründung:
Sei M = {σ1 , . . . σd }, also |M | = d. Die Wahrscheinlichkeit für zwei gleiche
Buchstaben in zwei zufällig gewählten Positionen in verschiedenen Teiltexten
ist:
=
≈
V or.
=
=
1
d(d − 1)
1
d(d − 1)
1
d(d − 1)
1
d(d − 1)
1
d(d − 1)
d
d
X X
X
−1
−1
(
p(σi (a))p(σj (a)) −
p(σi−1 (a))2 )
a∈A i,j=1
a∈A
i
j
X
1
1
·d·
−
p(σi−1 (a))2 )
(d ·
26
26
i
a∈A
d2 X X
−1
[ −
p(σi (a))2 ]
26
i a∈A
d2 X X
[ −
p(a)2 ]
26
i a∈A
| {z }
X
2
≈
i=1
X X
X
X
((
p(σi−1 (a)) ·
p(σj−1 (a)) −
p(σi−1 (a))2 )
i
2
≈Id ≈ 26
d
2d
d−2 1
1
[ − ]=
·
d(d − 1) 26 26
d − 1 26
≈
1
für große d. ]
26
Sei nun l die Länge des Chiffretextes c, sein Koinzidenzindex I(c). Da es d
Teiltexte mit je etwa dl vielen Zeichen gibt, gibt es insgesamt ungefähr
l(l − d)
1 l l
· ( − 1) · d =
2 d d
2d
viele (ungeordnete) Paare von Positionen innerhalb der Teiltexte und
34
1
·
2
l2 (d − 1)
l
)=
·( l−
2d
| {z d}
Mögl.
l
|{z}
Anz.
an 1. Pos.
Anz. Mögl.
an 2. Pos.
viele (ungeordnete) Paare von Positionen aus verschiedenen Teiltexten. Die
Zahl der (ungeordneten) Paare von Positionen innerhalb c mit gleichen Buchstaben ist danach ungefähr:
l(l − d)
l2 (d − 1)
· 0, 0762 +
· 0, 0385
2d
2d
aller (ungeordneten) Paare, so
Dividiert man durch die Gesamtzahl l(l−1)
2
erhält man eine Approximation von I(c):
I(c) ≈
l−d
l(d − 1)
· 0, 0762 +
· 0, 0385
(l − 1)d
(l − 1)d
Diese Gleichung“ läßt sich nach d auflösen. Es ergibt sich
”
d≈
0, 0377l
(l − 1)I(c) − 0, 0385l + 0, 0762
Da sich
I(c) =
26
P
i=1
li (li − 1)
l(l − 1)
, li = Anzahl des Buchstabens ai in c,
berechnen lässt, erhält man damit eine Abschätzung für d. Diese Abschätzung
gibt jedenfalls die Größenordnung von d an und kann mit den beiden anderen
Methoden zur Bestimmung von d kombiniert werden.
35
Beispiel:
Wir verwenden wieder den Text von Seite 31 und bestimmen die Häufigkeitsverteilung der Buchstaben.
Häufigkeitsverteilung der Buchstaben:
Buchstabe
A
B
C
D
E
F
G
H
I
J
K
L
M
Anzahl
l0 − l12
5
8
8
4
32
22
13
14
30
11
9
13
9
rel.
Häufigkeit
1,60%
2,50%
2,50%
1,30%
10,00%
6,90%
4,10%
4,40%
9,40%
3,40%
2,80%
3,10%
2,80%
Buchstabe
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
Anzahl
l13 − l25
10
13
5
3
15
16
11
14
19
4
11
15
6
rel.
Häufigkeit
3,10%
4,10%
1,60%
0,90%
4,70%
5,00%
3,40%
4,40%
5,90%
1,30%
3,40%
4,70%
1,90%
Koinzidenzindex des verschlüsselten Textes c:
X
I(c) = (
li (li − 1))/l(l − 1) = 0, 048
Es handelt sich also nicht um einen monoalphabetisch verschlüsselten Text
(d.h. die Länge des Schlüsselworts ist größer als 1).
Die Anwendung der Friedman-Formel
d ≈ 0, 0377 · l/((l − 1) · I(c) − 0, 0385 · l + 0, 0762)
auf den Chiffretext von Seite 31 mit den Werten l = 320 und I(c) = 0, 048
liefert die Abschätzung d ≈ 3, 93.
Wir nehmen jetzt d = 5 an und ermitteln die Buchstabenhäufigkeiten der
fünf Teiltexte, die sich aus den Buchstaben an den Positionen i, d+i, 2d+i, . . .
für i = 1, 2, 3, 4, 5 ergeben.
Da der Gesamttext mit Vigenère-Chiffrierung verschlüsselt wurde, entstanden die Teiltexte durch Verschiebe-Chiffren aus den entsprechenden Teiltexten des Klartextes.
36
Tabelle 4: Teiltexte 1-5
Teiltext 1: Offenbar steht F für den Klartextbuchstaben E. Verschiebung
∧
um 1 = B.
Teiltext 2: Aus der Häufigkeit von E entnimmt man, dass hier keine Ver∧
schiebung, d.h. Verschiebung um 0 = A vorliegt. (Ist das der Fall, so
kommt allerdings der in deutschen Texten relativ häufige Buchstabe R
in dem zweiten Klartextstück überhaupt nicht vor.)
Teiltext 3: Dieser Teiltext hat keine typische Häufigkeitsverteilung. Kandidaten für den Klartextbuchstaben E sind die Chiffretextbuchstaben H
oder Y. Im ersten Fall würde Q für N stehen, d.h. der zweithäufigste
Buchstabe in deutschen Texten würde in diesem Klartextstück nicht
auftauchen. Die Wahl von Y für E ist plausibler. Dann Verschiebung
∧
um 20 = U.
Teiltext 4: Offenbar steht I für den Klartextbuchstaben E. Verschiebung
∧
um 4 = E.
Teiltext 5: Offenbar steht V für den Klartextbuchstaben E. Verschiebung
∧
um 17 = R.
Demnach ist das Schlüsselwort BAUER und der Klartext lautet (mit Satzzeichen):
37
Es mag ueberraschen, dass man von einem vorgelegten monoalphabetisch chiffrierten Text leichter sagen kann, ob er englisch
oder franzoesisch ist, als ihn zu entschluesseln. Dies gilt natuerlich auch fuer Klartext: es gibt ein einfaches Verfahren, genuegend
langen Klartext auf Zugehoerigkeit zu einer bekannten Sprache
zu untersuchen, ohne seine Syntax oder Semantik zu betrachten.
(Aus: F.L.Bauer, Entzifferte Geheimnisse [5])
Aufgabe:
Der folgende Chiffretext entstand durch polyalphabetische periodische Verschlüsselung eines deutschsprachigen Texts. Versuchen Sie ihn zu entschlüsseln.
GQGOEQ
XYGDHJ
RYGPTW
CVCLET
WMROCV
MJXIFZ
CTRIFF
DQWCBS
XYGBWT
TICRTT
BYGPTV
GQGOCJ
EGTGBE
UAHDPE
CQGBDJ
2.2
RYZOEJ
OYZEHY
GTCRHT
CTEHVI
NCVRWA
WYEFUF
GOVOOT
OTUPKY
NEYRDF
XZTRQG
UBVRQZ
OPCRUG
OBCHTH
SLREWT
D
DJGBGT
GOVVIT
FYZCWF
YOUUWT
MBRKTZ
ZYXVZT
UCRVBL
GQXNWT
FECRQT
SLTCEF
DYEYDB
DJKVWV
XMCGBT
UBCJVI
OPCBDJ
XOKVHT
DLVRJZ
HLCHVI
SEZVTT
BYGDPT
YOYMDG
HMCJFT
UEVLQT
GORREL
GPJAEN
XEVLBJ
HYPKTG
HJCJUT
WAHYHT
ULRIFI
PYYUDJ
DORIFF
UMCRIT
XOCRGH
DVCADQ
OPXOTW
XYGBDJ
HYZJDT
ZBAOAW
OBIDPT
GTCRXT
HZCGBT
WPCYHT
MBWPTW
HEYOAF
WYHGZH
OBLSTA
GKZOTW
RZTRET
UEHVDZ
WAHYHT
HYGGHI
GOAOTQ
XOCRQG
RYGLEL
OLVRJZ
FYZCWF
MMVGVI
RYZFPF
XVCMWC
DMCJUC
RYZEDG
YPXOAT
TEGRKH
WPCYJT
GEVLQT
REGRGG
GSCHQT
HPAOAW
NYJAEQ
DLVRJG
REXGWZ
GLCFBO
CBRTOJ
CLVOUZ
DWVRCF
XGKDBV
XMKJJK
WWCHVI
XJCFZG
UXEHVI
XPVNDJ
GOXHDQ
OPWOTW
WBCJDG
OXTPHN
OYWYWC
OPIBEZ
GLKSUF
RYZREC
UYGFDZ
DYZDDQ
GTIHUF
QKCRGT
GQGCEL
QKCLUZ
OAHVQK
MTKRJT
Transpositionschiffren
Bei Transpositionschiffren (oder Permutationschiffren) werden Klartextzeichen nicht durch andere ersetzt, sondern ihre Stellung innerhalb des Textes
wird nach einer festen Regel verändert.
Daher bleiben bei der Verschlüsselung die individuellen Buchstabenhäufigkeiten erhalten. Daran ist oft leicht zu erkennen, dass eine Transpositionschiffre
angewandt wurde. Kryptoanalytische Methoden, die sich auf charakteristische Häufigkeitsverteilungen von Buchstaben in natürlichsprachigen Texten
38
beziehen, helfen bei Transpositonschiffren nicht. Ggf. können aber Häufigkeiten von Digrammen nützlich sein.11
Block-Transposition
Klartext wird in Blöcke einer festen Länge n eingeteilt (evtl. Blendbuchstaben einfügen). Diese Blöcke werden jeweils derselben Permutation der
Positionen unterworfen (Block Chiffre).
Block: a1 . . . an → aσ(1) . . . aσ(n)
Beispiel:
Klartext:
KRYPTO|LOGIEU|NDDATE|NSICHE|RHEITZ|
Permutation: σ = (153642) , n = 6
Chiffretext:
TKORYP|ELKOGI|TNEDDA|HNESIC|TRZHEI|
Kryptoanalytische Methoden für Block-Transpositonschiffren versuchen zunächst die Blocklänge zu ermitteln (Teiler der Nachrichtenlänge). Anschließend wird analysiert, ob sich aus den Buchstabenfolgen in den Blöcken sinnvolle Klartextstücke bilden lassen (jeweils durch Anwenden derselben Permutation) mit Hilfe von Anagrammen.
Bei kurzen Blocklängen ist dies i.d.R. kein Problem und Mehrdeutigkeiten
in einem Block (die bei längeren Blocklängen oft auftreten) lassen sich meist
dadurch beseitigen, dass bei allen Blöcken dieselbe Permutation angewandt
wird.
Spalten-Transposition
Der Klartext wird zeilenweise in ein Rechteck mit einer festen Spaltenzahl n
geschrieben (Zeilenanzahl hängt von Klartextlänge ab; evtl. Blendbuchstaben
hinzufügen). Danach werden die Spalten mit einer Permutation σ ∈ Sn vertauscht und der Text wird spaltenweise gesendet.(Bei Block-Transpositionen
wird er zeilenweise gesendet.)
Beachte: Bei Spalten-Transpositionen ist der gesamte Klartext zu verschlüsseln,
bevor er gesendet werden kann. Sie eignen sich daher nur für kürzere Klartexte. Spalten-Transpositionen sind weder Block- noch Stromchiffren.
11
Zur Häufigkeit von Digrammen in deutscher Sprache siehe Abbildung 2 auf S. 19.
39
Beispiel (Klartext wie Beispiel in Block-Transposition):
K
L
N
N
R
R
O
D
S
H
Y
G
D
I
E
P T O
T
I E U
E
P erm.
A T E −−−→ T
C H E
H
I T Z
T
K
L
N
N
R
O R
U O
E D
E S
Z H
Y
G
D
I
E
P
I
A
C
I
Chiffretext: TETHTKLNNROUEEZRODSHYGDIEPIACI
Block- und Spalten-Transpositionen stellen typische Vertreter von Transpositionschiffren dar. Jede für sich genommen ist relativ leicht zu knacken (Beispiel für Spalten- Transposition am Ende dieses Unterkapitels).
Es gibt allerdings viele Variationen und vor allem Hintereinanderausführungen von Block bzw. Spalten-Transpositionen. Diese sind dann deutlich schwieriger für eine Kryptoanalyse. Z. B. wurde die Hintereinanderausführung von
zwei Spalten-Transpositionen häufig für militärische Geheimhaltungszwecke
eingesetzt.
Kryptoanalyse von Spalten-Transpositionen:
1. Schritt: Schätzung der Spaltenlänge s = l teilt n (n = Anzahl der Spalten,
l = Länge des Chiffretextes)
(s/l; i.d.R. relativ großer Teiler von l, da n i.d.R. nicht zu groß)
2. Schritt: Bestimmung der Spaltenpermutation durch Herausfinden benachbarter Spalten: Häufige Digramme, Ausschluss seltener Digramme, etc.
Beispiel:
Kryptoanalyse einer Spalten-Transposition
Chiffretext:
IAEEKCWENUCETOEEKRAMDEZNEDNZAIFATRWNIRR SUBSNWKREELNTEURERKNSIKZIMIKFVNUHANENK
Länge: 77 Zeichen
Mögliche Spaltenlängen: 7 oder 11
40
I
A
E
E
K
C
W
E
N
U
C
E
T
O
E
E
K
R
A
M
D
E
Z
N
E
D
N
Z
A
I
F
A
T
R
W
N
I
R
R
S
U
B
S
N
W
K
R
E
E
L
N
T
E
U
R
E
R
K
N
S
I
K
Z
I
M
I
K
F
V
N
U
H
A
N
E
N
K
I
A
E
E
K
C
W
E
N
U
C
E
T
O
E
E
K
R
A
M
D
E
Z
N
E
D
N
Z
A
I
F
A
T
R
W
N
I
R
R
S
U
B
S
N
W
K
R
E
E
L
N
T
E
U
R
E
R
K
N
S
I
K
Z
Im zweiten Rechteck enthält die vorletzte Zeile 9 Konsonanten und 2 Vokale,
mit denen kein sinnvoller Klartext herstellbar erscheint. Wir gehen daher
zunächst von Spaltenlänge 11, also dem ersten Rechteck, aus.
I
A
E
E
K
C
W
E
N
U
C
K
F
V
N
U
H
A
N
E
N
K
Die erste Spalte enthält zweimal den Buchstaben C. Da C sehr
selten als Endbuchstabe eines Wortes auftaucht und innerhalb eines
Wortes im Deutschen fast immer vor einem H oder K steht, liegt
es nahe, dass im Klartext die erste und letzte Spalte des obigen
Rechtecks aufeinander folgen.
Falls die hintere der beiden Spalten nicht letzte Spalte im Klartextrechteck ist, zeigen schon die ersten drei Positionen (IK, AF,
EV), dass sich nur die mit ET beginnende Spalte anschließen kann.
Da wahrscheinlich mindestens vor einem der beiden Digramme CH
und CK ein Vokal stehen wird, liegt es nahe, dass vor der ersten
der beiden Spalten die mit ER beginnende Spalte steht.
Die verbleibenden drei Spalten lassen sich jetzt
leicht einordnen: Die schon zusammengestellten
vier Spalten bilden die 3. - 6. Spalte des Klartextrechteckes, die mit Z beginnende Spalte steht
an der ersten Stelle, die mit W beginnende Spalte
an der zweiten und die mit R beginnende an der
letzten Stelle. Damit ergibt sich folgender sinnvoller Klartext:
ZWEI KERNKRAFTWERKE, VON DENEN EINES KUERZLICH KRANK WAR, SITZEN AUF
EINEM BAUM UND STRICKEN.
41
E
R
K
N
S
I
K
Z
I
M
I
I
A
E
E
K
C
W
E
N
U
C
K
F
V
N
U
H
A
N
E
N
K
E
T
O
E
E
K
R
A
M
D
E
I
M
I
K
F
V
N
U
H
A
N
E
N
K
2.3
Affin lineare Chiffren
Üblicherweise lassen sich die Alphabete, die in der Kryptologie verwendet
werden, als (endliche) kommutative Ringe auffassen.
Beispiel:
∧
{0, 1} = Z/2Z
∧
{A, B, . . . Z} = {0, 1, . . . 25} ∼
= Z/26Z
Dies hat den Vorteil, dass man die Elemente des Alphabets addieren und
multiplizieren kann. Insbesondere von der Addition haben wir in Kapitel 2.1
häufig Gebrauch gemacht.
Affine lineare Chiffren sind Verschlüsselungsverfahren von Texten über Alphabeten, welche kommutative Ringe sind. Sie beruhen auf Operationen, die
aus der linearen Algebra bekannt sind, nur dass die dort auftretenden Körper
auch kommutative Ringe sein können. Wir stellen daher zunächst einmal die
wesentlichen Hilfsmittel aus der linearen Algebra über kommutativen Ringen
zusammen, wobei wir auf Beweise verzichten.
2.3.a
Lineare Algebra über kommutativen Ringen
Im folgenden sei R immer ein kommutativer Ring mit 1. D.h. R erfüllt alle
Axiome eines Körpers, nur müssen die von 0 verschiedenen Elemente von R
nicht notwendig ein Inverses bezüglich Multiplikationen besitzen. Diejenigen
Elemente, die ein multiplikatives Inverses besitzen, nennt man Einheiten von
R. Die Menge aller Einheiten des Rings R bezeichnet man mit R∗ .
Beispiele:
a)
Z ist kommutativer
Z∗ = {1, −1}.
Ring mit 1. Die Einheiten sind 1 und −1, also
b) Sei n eine natürliche Zahl.
Z/nZ
= Zn ist der Ring der ganzen Zahlen modulo n. Man kann ihn
auffassen als Menge der Restklassen {a + nZ|a ∈ Z} von Z bzgl. des
Ideals nZ. Die verschiedenen Restklassen sind gerade {0 + nZ, 1 + nZ,
. . . (n − 1) + nZ}.
Üblicherweise schreibt man Zn als {0, 1, . . . n−1} und addiert und multipliziert modulo n: Addition (Multiplikation) wie in Z, dann Division
42
durch n mit Rest r, 0 ≤ r ≤ n − 1; außerdem −i = n − i, der Rest ist
das Ergebnis der Addition (Multiplikation) in Zn .
Welches sind die Einheiten in
Zn ?
a Einheit ⇔ ∃b, k ∈ Z:
a · b = k · n + 1 ⇔ ggT(a, n) = 1
Z.B.: Einheiten in Z10 : Z∗10 = {1, 3, 7, 9}
Ist n = p, so sind alle von 0 verschiedenen Elemente Einheiten: Zp ist Körper.
Wie über Körpern kann man über Ringen Vektoren und Matrizen bilden:
Rn = {(r1 , . . . rn )|ri ∈ R}
R(n,k)




= 





r11 . . . r1k


..
 | rij ∈ R .
.


rn1 . . . rnk
Also: Rn = R(1,n)
Matrizenaddition und -multiplikation wie über Körpern.
Ebenso kann man die Determinante einer quadratischen Matrix berechnen:
n=1:
A = (a11 ) = (a) : det(a) = a
n
P
(−1)i+j aij det Ai,j ∈ R
n ≥ 1 : A ∈ R(n,n) :
det A =
j=1
(Entwicklung nach der i-ten Zeile)
Ai,j entsteht aus A durch Streichen der i-ten Zeile und j-ten Spalte.
Ebenso:
det A =
n
P
(−1)i+j aij det Ai,j (Entwicklung nach der j-ten Spalte)
i=1
Beispiel: R = Z6


0 2 5
A= 1 3 1 
4 0 1
Rechne über Z, reduziere dann modulo 6.
43
1 3
1 1
3 1
+ 5 · det
− 2 · det
det A = 0 · det
4 0
4 1
0 1
= −2 · (4 − 1) + 5 · (0 − 12) = −2 + 8 − 60 = −54 ≡ 0 (mod 6)
det A = 0
Wann besitzt eine Matrix A ∈ R(n,n) eine Inverse A−1 ?
Forderung:


A · A−1 = A−1 · A = En = 
1
0
...
0
1



Kriterium: A ∈ R(n,n) besitzt Inverse ⇔ det A ist Einheit in R.
Setzt man bij = (−1)i+j det Aj,i , Aj,i wie oben, B = (bij ),
so gilt A−1 = (det A)−1 · B.
Beispiel: R = Z6
1 3
A=
3 2
2 − 9 = −7 ≡ 5 (mod 6) ,
d.h. A ist invertierbar in R(2,2) .
(det A)−1 = 5
−1
A
2.3.b
=5·
2 −3
−3
1
=5·
2 3
3 1
=
4 3
3 5
Affin lineare Blockchiffren
Klartexte seien codiert in einem Alphabet Zk für ein k ∈ N. Klartexte werden
zerlegt in Blöcke der Länge n, d.h. in Elemente aus Znk . Die Blöcke werden
einzeln in derselben Weise verschlüsselt:
Eine affin lineare Blockchiffre ordnet jedem v = (v1 , . . . vn ) ∈ Znk das Element
(n,n)
vA + b ∈ Znk zu, wobei A ∈ Zk , b ∈ Znk . Schlüssel ist das Paar (A, b).
Damit die Chiffrierung v 7→ vA+b injektiv ist, muss die Matrix A in Zk
invertierbar sein, d.h. det A muss eine Einheit in Zk sein (also ggT(det A, k) = 1).
Die Dechiffrierung von w = vA + b erfolgt dann durch
(n,n)
v = (w − b)A−1 .
44
Wird der Schlüsselraum eingeschränkt auf alle (A, b) mit b = 0 (v 7→ vA,
A Schlüssel), so spricht man von linearen Blockchiffren. Sie werden auch
Hill-Chiffren genannt.12
Beachte:
(Affin) lineare Blockchiffren sind weder Substitutions- noch Transpositionschiffren: Ist w = vA + b = (w1 , . . . wn ), so hängt jedes wi i.d.R. von allen
v1 , . . . vn ab; die vi lassen sich nicht einzeln verschlüsseln, sondern nur der
gesamte Block (v1 , . . . vn ).
Beispiele:
a) Die Vigenère-Chiffre ist eine affin lineare Blockchiffre über
Schlüssel werden sämtliche (En , b), b ∈ Zn26 verwendet:
v 7→ v + b
Z26 .
Als
(b ist das Schlüsselwort“)
”
b) Block-Transpositionen sind lineare Blockchiffren:
Sei σ eine Permutation von {1, . . . n}.
Sei Pσ = (pij ) die folgende Permutationsmatrix.
0 für i 6= σ(j)
pij =
1 für i = σ(j)
(v1 , . . . vn )Pσ = (vσ(1) , . . . vσ(n) )
Pσ−1 = Pσ−1 (gilt über jedem Ring R, z.B. R = Z26 )
Vigenère-Chiffren und Block-Transpositionen natürlichsprachiger Texte (also
über Z26 ) lassen sich mit einer ciphertext-only-attack brechen, wie wir in
Kapitel 2.1 und 2.2 gesehen haben (vorausgesetzt der Chiffretext ist genügend
lang). Wir zeigen jetzt, wie allgemein affin lineare Chiffren durch eine knownplaintext-attack gebrochen werden können.
Kryptoanalyse affin linearer Blockchiffren
Known-plaintext-attack (R = Zk )
Ausgangssituation: Schlüssel (A, b) ist festgelegt worden.
12
Lester S. Hill (1891-1961), 1929
45
Verschlüsselungsfunktion: v 7→ vA + b, v ∈ Znk
(A ∈ Zk
(n,n)
, b ∈ Znk )
Angreifer will (A, b) bestimmen.
Wir gehen davon aus, dass er n + 1
gehörigen chiffrierten Blöcke c0 , . . . cn

w1 − w0

..
Wir nehmen an, dass det 
.
wn − w0
Klartextblöcke w0 , . . . wn und die zukennt.


 eine Einheit in
Zk
ist.
= 1 und nϕ(n)
(Das passiert häufig, da lim ϕ(n)
1−δ → ∞ für alle δ > 0
n




c1 − c0
w1 − w0




(n,n)
..
..
C=
Setze W = 
 ∈ Zk
,
.
.
cn − c0
wn − w0
Dann gilt: W A = C. Da det W eine Einheit in
Zk
13
)
ist, existiert W −1 .
Es folgt:
A = W −1 C und b = c0 − w0 A
(Ist die Chiffre sogar linear, so benötigt man nur w1 , . . . wn und bestimmt a
wie oben (mit w0 = co = 0).)
Beispiel:
Ang.: Blocklänge n = 2, k = 26
Angenommen wir wissen, dass der Klartext HERBST in den Chiffretext
SOMMER verschlüsselt wurde.
D.h.:
W =
7 4 17 1 18 19 −→ 18 14 12 12 4 17
w0
w1
w2
c0
c1
c2
w1 − w0
w2 − w0
=
10 23
11 15
C=
c1 − c0
c2 − c0
10 · 15 − 23 · 11 = 150 − 253 = −103 ≡ 1 (mod 26),
15 3
15 −23
−1
=
W =
−11
10
15 10
13
siehe z.B. K. Chandrasekharan [11], S. IV.20
46
=
20 24
12 3
det W = 1 in
Z26
−1
A = W
C
24 5
300 + 36 360 + 9
20 24
15 3
=
=
=
4 0
300 + 120 360 + 30
12 3
15 10
b = c0 −w0 A = (18, 14)−(7, 4)
Test:
w1 A+b = (17, 1)
w2 A+b = (18, 19)
3
3.1
24 5
4 0
24 5
4 0
24 5
4 0
= (18, 14)−(−14+16, 35) = (16, 5)
+(16, 5) = (−34+4, 85)+(16, 5) = (12, 12) = c1
+(16, 5) = (−36+76, 90)+(16, 5) = (4, 17) = c2
Blockchiffren und ihre Betriebsarten
Allgemeine Vorbemerkungen
Wir betrachten im Folgenden Blockchiffren über dem Alphabet Z2 = {0, 1}.
Klartexte sind also Bitfolgen (z.B. durch Codierung mit ASCII-Code entstanden), die in Blöcke einer festen Länge n zerlegt werden. Diese Blöcke
werden verschlüsselt.
Wir betrachten zunächst die Situation, dass zwei gleiche Blöcke des Klartextes auch gleich verschlüsselt werden (d.h. dies entspricht einer monoalphabetischen Substitution über dem Alphabet Zn2 ). Es gibt andere Betriebsarten
von Blockchiffren, bei denen die Verschlüsselung eines Blocks von der Verschlüsselung der vorangehenden Blöcke abhängt (also von seiner Position im
Text; vgl. polyalphabetische Verschlüsselungen). Auf diese Betriebsarten von
Blockchiffren werden wir später eingehen.
Wir nehmen im Folgenden ferner an, dass Blöcke der Länge n über Z2 wieder
in Blöcke der Länge n über Z2 verschlüsselt werden. Dann gibt es also (2n )!
viele Blockchiffren (mit Blöcken der Länge n über Z2 ).
Wenn man alle diese Permutationen der 2n vielen möglichen Klartextblöcke
über F2 zur Verschlüsselung zulässt, so besteht die Schlüsselmenge aus allen (2n )! dieser Permutationen. Die Codierung einer Permutation (also eines
Schlüssels) erfordert dann mindestens s viele Bits, wobei 2s = (2n )!.
47
Nach der Stirling-Approximation ist (2n )! ≈
√
n
n
π · 2n+1 ( 2e )2 , also
√
n
n
s ≈ log2 ( π · 2n+1 · ( 2e )2 )
= 12 (n + 1) + 21 log2 π + 2n (n − log2 e)
≈ 2n (n − 1, 44)
[ Die übliche Codierung eines Schlüssels (= Permutation der 2n vielen Blöcke)
wäre, die Permutation so anzugeben, dass zunächst das Bild des Blockes
(0, . . . 0) angegeben wird (n Bits), dann das Bild des Blockes (0, . . . 0, 1), . . .,
←n→
schließlich das Bild des Blockes (1, . . . 1). Dies erfordert n · 2n viele Bits. ]
Bei der in der Praxis üblichen Blocklänge von n = 64 oder n = 128 (oder
sogar mehr) sind solche Schlüssellängen natürlich illusorisch.
Bsp.: n = 64
Schlüssellänge: s = 264 · 26 = 270 ≈ 1021 Bits
Zur Speicherung eines Schlüssels werden mehr als 109 Festplatten mit einer
Kapazität von je 100 GByte benötigt.
Daher beschränkt man sich in der Praxis auf kleine Teilmengen von Blockchiffren, für die die Schlüssel (also die Permutationen) mit geringer Bitlänge
codiert werden können.
Bsp.: lineare Chiffren, n = 64
Schlüssel A
64 × 64 -Matrix über Z2 mit Determinante 1
Schlüssellänge: 642 = 212 = 4096 Bits
(falls man die Matrix als 64 × 64 -array speichert.)
Anzahl der Schlüssel: |GL(64, 2)| = (264 − 1)(264 − 2) . . . (264 − 263 )
≈ 0, 29 · 24096
64
21
[Winzig im Vergleich zu 264 ! ≈ 22 ·62,56 ≈ 210 ]
(Deshalb könnte man die Schlüssel auch mit ⌈log2 (0, 29·24096 )⌉ = 4095 vielen
Bits kodieren; keine große Ersparnis)
Die Sicherheit von Blockchiffren kann erhöht werden, indem mehrere Blockchiffren hintereinander ausgeführt werden (Produkt von Blockchiffren, Überchiffrierung). Wichtig dabei ist, dass die Hintereinanderausführung zweier Blockchiffren nicht wieder eine Blockchiffre derselben Art ist (Gruppeneigenschaft darf nicht erfüllt sein). Z.B. ist die Hintereinanderausführung
zweier (affin) linearer Blockchiffren wieder eine (affin) lineare Blockchiffre;
hier bringt die Hintereinanderausführung nichts.
Oft werden z.B. Substitutionschiffren (auch solche, die kleinere Blöcke durch
48
Blöcke entsprechender Größe substituieren) und Permutationschiffren alternierend hintereinander eingesetzt.
Ziel solcher Hintereinanderschachtelungen ist es u.a., zwei Eigenschaften von
Blockchiffren sicherzustellen, die Claude Shannon in einer seiner grundlegenden Arbeiten zur Kryptographie 1949 als wesentlich für die Sicherheit von
(Block-)Chiffren formuliert hat14 :
Diffusion:
Die nderung eines Bits im Klartextblock ändert mehrere Bits im Chiffretextblock und umgekehrt (Nachteil: Ein kleiner Fehler im Klartext führt zu
großem Fehler im Chiffretext!)
Konfusion:
Der Chiffretext hängt nicht in einfacher Weise mit dem Schlüssel zusammen.
Jedes Bit des Chiffretextes sollte von mehreren Bits des Schlüssels abhängen.
Beispiel:
Lineare Chiffren: v → vA, A n × n-Matrix als Schlüssel.
Lineare Chiffren haben die Eigenschaft der Diffusion.
Konfusion: Chiffretextbit an Stelle i hängt von allen Einträgen der i-ten
Spalte von A ab (schwache Form der Konfusion).
Eine der wichtigsten Typen von Blockchiffren, die durch Hintereinanderschachtelungen mehrerer einfacherer Blockchiffren (nämlich Substitution und
Transposition) entstehen, behandeln wir im folgenden Abschnitt.
14
Claude Shannon, 1916 - 2001, Bell-Laboratories, MIT
49
3.2
Feistel-Chiffren
Feistel-Chiffren sind benannt nach dem IBM-Ingenieur Horst Feistel, der
1971 einen Chiffrieralgorithmus namens LUCIFER entwickelte, welcher als
Vorläufer des DES (Data Encryption Standard) anzusehen ist. Das typische Konstruktionsprinzip von LUCIFER
ist in der Definition von Feistel-Chiffren beinhaltet. Auf
den DES werden wir im nächsten bzw. übernächsten AbL
R
schnitt eingehen.
K
Klartextblock
v
0
0
1
+
Feistel-Chiffren sind die Prototypen aller moderner Blockchiffren. Sie realisieren den Vorschlag Shannons, alternierende Folgen von Substitutionen und Transpositionen zur
Diffusions- und Konfusionserzeugung zu verwenden, und
beruhen außerdem auf der Idee, aus einem (kurzen) Ausgangsschlüssel eine Folge von Schlüsseln für die Substitutionen zu erzeugen.
f
L1
R1
K2
+
f
L2
Zutaten für eine Feistel-Chiffre:
Blockchiffre über Z2 , Blocklänge t, K zugehörige Schlüsselmenge; Verschlüsselungsfunktion zum Schlüssel K sei fK ,
also fK : Zt2 → Zt2
R2
L r-1
R
r-1
Konstruktion der Feistel-Chiffre (zur gegebenen Blockchiffre):
Feistel-Chiffre ist Blockchiffre über Z2 , Blocklänge 2t.
Festlegung einer Rundenzahl r ≥ 1 und eines Schlüsselraums KF (i.a. KF 6= K)
Kr
+
f
Lr
Rr
Chiffretextblock
E k (v)
Abbildung
7:
Schematischer Ablauf einer FeistelChiffrierung
Wahl einer Methode, die aus einem Schlüssel k ∈ KF eine
Folge K1 , . . . Kr ∈ K von Rundenschlüsseln erzeugt.15
Verschlüsselungsfunktion Ek (zum Schlüssel k ∈ KF ) der
Feistel-Chiffre:
Sei v ein Klartextblock der Länge 2t (d.h. v ∈ Z2t
2 ).
Teile v in zwei Hälften der Länge t auf:
v = (L0 , R0 )
↑ ↑
linke Hälfte rechte Hälfte
15
Wie eine solche Methode realisiert werden kann, sehen wir in den nächsten Abschnit-
ten.
50
Konstruiere eine Folge (Li , Ri ), i = 1, . . . r − 1 nach folgender Vorschrift:
(Li , Ri ) = (Ri−1 , Li−1 ⊕ fKi (Ri−1 ))
[Also:
Substitution des linken Teilblocks durch Addition des
Schlüsselworts“ fK (Ri−1 )
(Li−1 , Ri−1 ) −”−−−−−−−−−−−−−i−−−−→
Transposition
(Vertauschen der
beiden Teilblöcke)
−−−−−−−−−−−−→
(Li−1 ⊕ fKi (Ri−1 ), Ri−1 )
(Ri−1 , Li−1 ⊕ fKi (Ri−1 )) = (Li , Ri ) ]
Schließlich in der r-ten Runde:
(Lr , Rr ) = (Lr−1 ⊕ fKr (Rr−1 ), Rr−1 )
[Hier keine Transposition mehr.]
Ek (v) = (Lr , Rr ), Chiffretextblock
Entschlüsselung:
Wie Verschlüsselung, nur mit der Schlüsselfolge (Kr , Kr−1 , . . . K1 ).
Begründung: Wir setzen L′0 = Lr , R0′ = Rr , Ki′ = Kr+1−i , i = 1, . . . r.
Wir verschlüsseln (L′0 , R0′ ) mit der Folge (K1′ , . . . Kr′ ) und betrachten die Zwischenresultate (L′i , Ri′ ), i = 1, . . . r.
1. Runde:
(L′1 , R1′ ) =
=
(R0′ , L′0 ⊕ fK1′ (R0′ )) = (Rr , Lr ⊕ fKr (Rr ))
(Rr−1 , Lr−1 ⊕ fKr (Rr−1 ) ⊕ fKr (Rr−1 )
| {z }
| {z } |
{z
}
Rr
Rr
Lr
|
2. Runde:
= (Rr−1 , Lr−1 )
{z
(0,...0)
←−t−→
}
(L′2 , R2′ ) = (R1′ , L′1 ⊕ fK2′ (R1′ )) = (Lr−1 , Rr−1 ⊕ fKr−1 (Lr−1 ))
=
(Rr−2 , Lr−2 ⊕ fKr−1 (Rr−2 ) ⊕ fKr−1 (Rr−2 )) = (Rr−2 , Lr−2 )
| {z } |
| {z }
{z
}
Lr−1
Lr−1
Rr−1
51
Am Ende der (r − 1)-ten Reihe hat man dann:
′
(L′r−1 , Rr−1
) = (R1 , L1 )
r-te Runde:
′
′
(L′r , Rr′ ) =
(L′r−1 ⊕ fKr′ (Rr−1
), Rr−1
)
= (R1 ⊕ fK1 (L1 ), L1 )
= (L0 ⊕ fK1 (R0 ) ⊕fK1 ( R0 ), R0 ) = (L0 , R0 ) = v
|{z} |{z}
|
{z
}
=R1
L1
L1
Beachte:
Man muss bei Feistel-Chiffren dafür sorgen, dass nicht alle Substitutionen
(Li−1 , Ri−1 ) → (Li−1 ⊕ fKi (Ri−1 ), Ri−1 ) (affin) linear sind, denn sonst ist die
gesamte Feistel-Chiffre affin linear (Transpositionen sind linear nach Beispiel
b) auf Seite 45). Dies bedeutet, dass nicht alle Ri−1 → fKi (Ri−1 ) affin linear
sind. Denn:
Ist
fKi (Ri−1 ) = Ri−1 Ai + bi , Ai ∈ Zt2 ,
so ist


(Li−1 ⊕ fKi (Ri−1 ), Ri−1 ) = (Li−1 , Ri−1 ) · 
3.3
1
...
Ai

0
1
1
...

 + (bi , 0, . . . 0).
←−t−→
1
Eine vereinfachte Version des DES-Algorithmus16
Bevor wir im nächsten Abschnitt den eigentlichen DES-Algorithmus beschreiben, wollen wir hier eine vereinfachte Form (mit kürzerer Blocklänge und
einfacherem Design) darstellen. An diesem Beispiel lassen sich dann auch gewisse kryptoanalytische Verfahren (z.B. differentielle Kryptoanalyse) leichter
darstellen.
Wir beschreiben eine Feistel-Chiffre mit Blocklänge 12 (also t = 6). Der
Ausgangsschlüssel k hat 9 Bits, die Rundenschlüssel K1 , . . . Kr haben 8 Bits.
16
nach W. Trappe, L.C. Washington [31]
52
Die Rundenzahl r ist zunächst beliebig. Zur Kryptoanalyse werden wir später
r = 3 oder r = 4 wählen.
Wir haben zu beschreiben, wie die Schlüssel K1 , . . . Kr erzeugt werden und
wie die Verschlüsselungsfunktion fKi : Z62 → Z62 aussieht.
1) Erzeugung der Schlüssel K1 , . . . Kr ∈ Z82 :
k hat 9 Bits, d.h. k ∈ Z92
Ki erhält man aus k, indem man als erstes Bit das von k an Stelle i
(i modulo 9 gerechnet) nimmt und dann die folgenden 7 Bits in k. Ist
i ≥ 3, so fährt man am Anfang von k fort, wenn man das Ende von k
erreicht hat:
k = (a1 . . . a9 ), so Ki = (ai . . . ai+7 ) (Indizes > 9 modulo 9 lesen)
(Beachte: Ki = Ki+9l , l ∈ N0 )
[Bsp.: k = (010011001), so K4 = (01100101) ]
2) Beschreibung der Funktion fK , K ∈ {K1 , . . . K9 }:
Sei T ∈ Z62 .
1. Schritt: Expansion e : Z62 → Z82
1
2
1
2
4
3
4
3
4
3
5
6
5
6
Abbildung 8: Expansion
Dies ist so zu verstehen: Die ersten beiden Bits von T bleiben erhalten,
das dritte Bit von T wird an die 4. und 6. Stelle von e(T ) geschrieben,
das 4. Bit von R wird an die 3. und 5. Stelle von e(T ) geschrieben, das
5. und 6. Bit von R werden zum 7. und 8. Bit von e(T ).
[Bsp.: T = (101011), so e(T ) = (10010111)]
Beachte: e ist lineare Abb.: e(T1 ⊕ T2 ) = e(T1 ) ⊕ e(T2 ), denn


1 0 0 0 0 0 0 0
 0 1 0 0 0 0 0 0 


 0 0 0 1 0 1 0 0 


e(T ) = T · 

0
0
1
0
1
0
0
0


 0 0 0 0 0 0 1 0 
0 0 0 0 0 0 0 1
53
2. Schritt: e(T ) ⊕ K ∈ Z82
3. Schritt (Hauptschritt):
Substitution mit Hilfe zweier S-Boxen S1 , S2 .
4 0 6 5 7 1 3 2
5 2 1 6 3 4 7 0
, S2 =
S1 =
5 3 0 7 6 2 1 4
1 4 6 2 0 7 5 3
Jede S-Box besteht aus zwei Zeilen. Jede Zeile enthält die Zahlen von 0 bis
7 in einer gewissen Reihenfolge.
Input für eine S-Box ist eine Folge von vier Bits. Das erste Bit gibt die Zeile
∧
∧
der S-Box an: 0 = 1. Zeile, 1 = 2. Zeile. Die letzten drei Bits beschreiben eine
∧
∧
Zahl zwischen 0 und 7, die die Spalte bestimmt: 000 = 1. Spalte,. . . 111 = 8.
Spalte.
Output ist die Binärdarstellung der Zahl, die an der entsprechenden Stelle
der S-Box steht.
Wir können also die Si als Funktion Z42 → Z32 auffassen.
Beispiel.:
S1 ( x
1 0 1 1} ) = 0 1 0
 | {z
x

2. Zeile
4. Spalte
Im 3. Schritt wird e(T ) ⊕ K ∈ Z82 in zwei Hälften (A, B) zu je 4 Bits geteilt.
fk (T ) = (S1 (A), S2 (B)) ∈ Z62
Beispiel:
k = (010011001), T = (101011)
Was ist fK4 (T )?
K4 = (01100101)
e(T ) ⊕ K4 = (10010111) ⊕ (01100101) = (11110010)
S1 ( x
1 1 1 1} ) = 0 1 1
 | {z
x

2. Zeile
S2 ( x
0 0 1 0} ) = 1 1 0
 | {z
x

1. Zeile
8. Spalte
3. Spalte
fK4 (T ) = (011110)
54
6
2
T
E
e (T)
8
2
+
K
4
A
S
4
2
B
2
8
2
S2
1
f K (T) = (S 1 (A))(S 2 (B))
Abbildung 9: Vereinfachtes DES: Expansion, Rundenschlüsseladdition, Substitution
Wie sieht nun z.B. die 4. Runde des vereinfachten DES aus?
Ang.:
Also:
(L3 , R3 )
(L4 , R4 )
L3 ⊕ fK4 (R3 )
(L4 , R4 )
s.o.
(001111, 101011) ∈ Z12
2
(R3 , L3 ⊕ fK4 (R3 ))
(falls r > 4)
(001111) ⊕ (011110) = (010001)
=
(101011010001)
=
=
=
(T =R3 )
Differentielle Kryptoanalyse
Das Verfahren der Differentiellen Kryptoanalyse wurde von Biham und Shamir 1990 vorgestellt. Es wurde zur Schlüsselbestimmung des DES entworfen,
kann aber auch auf andere ähnliche Verfahren angewandt werden. Offensichtlich war die Differentielle Kryptoanalyse auch den Designern des DES
bei IBM bekannt. Nach einem Mitglied des Teams, D. Coppersmith, wurde
der DES (d.h. dessen S-Boxen; s. Kapitel 3.4) so konzipiert, dass er möglichst
wenig Angriffsmöglichkeiten für die Differentielle Kryptoanalyse bietet.
Die Differentielle Kryptoanalyse ist eine Choosen-Plaintext-Attack. Wir verdeutlichen sie am Beispiel des vereinfachten DES mit wenigen Runden.
Dem Angreifer ist das Verfahren (also die S-Boxen, Expansion e, Transposition, Rundenschlüsselerzeugung) bekannt. Nur der Schlüssel k = (a1 , . . . a9 )
55
ist unbekannt. Er soll bestimmt werden.
Der Angreifer kann einen beliebigen Klartextblock (L0 , R0 ) wählen und erhält
das verschlüsselte (Lr , Rr ). Versucht er, die r Verschlüsselungsrunden zu verfolgen, so endet er (bei größeren r) schnell in komplexen Situationen, die
nicht mehr zu analysieren sind; denn in jeder Runde werden 8 Bits des unbekannten Schlüssels zum expandierten Ergebnis der vorangegangenen Runde
addiert.
Die Differentielle Kryptoanalyse beruht auf der Analyse von Differenzen
(= Summe modulo 2) von Klartextblöcken (L0 , R0 ), (L∗0 , R0∗ ), also (L0 ⊕
L∗0 , R0 ⊕ R0∗ ) und der Differenz der verschlüsselten Blöcke (Lr ⊕ L∗r , Rr ⊕ Rr∗ ).
Es sind im Wesentlichen zwei Gründe, die dies zu einem erfolgversprechenden
Ansatz zur Kryptoanalyse des DES machen:
1) Differenzen ändern sich nicht, wenn zu jedem der Blöcke ein gleicher
Block (im DES der Rundenschlüssel) addiert wird.
2) Die S-Boxen des vereinfachten DES (wie auch die des nicht vereinfachten DES) haben die Eigenschaft, dass für manche D ∈ Z42 viele
Input-Paare mit dieser Differenz D auch eine gleiche Differenz beim
Output haben. (Diese Eigenschaft spielt v.a. bei der Analyse größerer
Rundenzahlen eine wichtige Rolle.)
Nun zur genauen Erläuterung:
Wir betrachten eine der beiden S-Boxen, etwa S1 .
Für Inputs A, A∗ ∈ Z42 dieser S-Box nennen wir A ⊕ A∗ die Input-Differenz.
Analog heißt S1 (A) ⊕ S1 (A∗ ) ∈ Z42 die Output-Differenz.
Sei A′ ∈ Z42 . Für alle {A, A∗ } mit A ⊕ A∗ = A′ kann man die OutputDifferenzen S1 (A) ⊕ S1 (A∗ ) bestimmen und die Verteilung in einer Tabelle
festhalten.
Beachte: Ist A′ 6= (0000), so gibt es genau 8 solche Mengen {A, A∗ }, nämlich
alle {A, A ⊕ A′ } für A ∈ Z42 .
Wie geben exemplarisch zwei solcher Tabellen für die S-Box S1 an und zwei
weitere für die S-Box S2 (Diese werden wir später auch verwenden.):
5 2 1 6 3 4 7 0
S1 =
1 4 6 2 0 7 5 3
56
A′ = (1010)
{A, A∗ }
(0000), (1010)
(0001), (1011)
(0010), (1000)
(0011), (1001)
(0100), (1110)
(0101), (1111)
(0110), (1100)
(0111), (1101)
S1 (A) ⊕ S1 (A∗ )
(101) ⊕ (110) = (011)
(010) ⊕ (010) = (000)
(001) ⊕ (001) = (000)
(110) ⊕ (100) = (010)
(011) ⊕ (101) = (110)
(100) ⊕ (011) = (111)
(111) ⊕ (000) = (111)
(000) ⊕ (111) = (111)
(111)
(000)
(010)
(011)
(110)
(001)
(100)
(101)
3×
2×
1×
1×
1×
−
−
−
Tabelle 5: Alle 8 Input- u. Output-Differenzen zu geg. A′ = (1010) ∈
S-Box S1
Z42
u.
Z42
u.
A′ = (0011)
{A, A∗ }
(0000), (0011)
(0001), (0010)
(0100), (0111)
(0101), (0110)
(1000), (1011)
(1001), (1010)
(1100), (1111)
(1101), (1110)
S1 (A) ⊕ S1 (A∗ )
(101) ⊕ (110) = (011)
(010) ⊕ (001) = (011)
(011) ⊕ (000) = (011)
(100) ⊕ (111) = (011)
(001) ⊕ (010) = (011)
(100) ⊕ (110) = (010)
(000) ⊕ (011) = (011)
(111) ⊕ (101) = (010)
(011) 6×
(010) 2×
Rest −
Tabelle 6: Alle 8 Input- u. Output-Differenzen zu geg. A′ = (0011) ∈
S-Box S1
A′ = (0011) ist eine Differenz, bezüglich der die S-Box S1 die unter 2) oben
erwähnte Eigenschaft hat.
4 0 6 5 7 1 3 2
S2 =
5 3 0 7 6 2 1 4
57
A′ = (1011)
{A, A∗ }
(0000), (1011)
(0001), (1010)
(0010), (1001)
(0011), (1000)
(0100), (1111)
(0101), (1110)
(0110), (1101)
(0111), (1100)
S2 (A) ⊕ S2 (A∗ )
(100) ⊕ (111) = (011)
(000) ⊕ (000) = (000)
(110) ⊕ (011) = (101)
(101) ⊕ (101) = (000)
(111) ⊕ (100) = (011)
(001) ⊕ (001) = (000)
(011) ⊕ (010) = (001)
(010) ⊕ (110) = (100)
Tabelle 7: Alle 8 Input- u. Output-Differenzen zu geg. A′ = (1011) ∈
S-Box S2
Z42
u.
Z42
u.
A′ = (1100)
{A, A∗ }
(0000), (1100)
(0001), (1100)
(0010), (1110)
(0011), (1111)
(0100), (1000)
(0101), (1001)
(0110), (1010)
(0111), (1011)
S2 (A) ⊕ S2 (A∗ )
(100) ⊕ (110) = (010)
(000) ⊕ (010) = (010)
(110) ⊕ (001) = (111)
(101) ⊕ (100) = (001)
(111) ⊕ (101) = (010)
(001) ⊕ (011) = (010)
(011) ⊕ (000) = (011)
(010) ⊕ (111) = (101)
Tabelle 8: Alle 8 Input- u. Output-Differenzen zu geg. A′ = (1100) ∈
S-Box S2
Diese Tabellen erstellt man für alle fünfzehn A′ ∈ Z42 \ {0} und für die beiden
S-Boxen S1 , S2 .
Wir betrachten nun die Situation in Runde i bei der Chiffrierung zweier Klartextblöcke (L0 , R0 ), (L∗0 , R0∗ ). Der entscheidende Schritt dort ist die Bildung
∗
von fKi (Ri−1 ) und fKi (Ri−1
).
58
Runde i:
Schlüssel
Ki = (KiL , KiR )
Ri−1
↓
e(Ri−1 ) = (Ã, B̃)
↓
e(Ri−1 ) ⊕ Ki = (Ã ⊕ KiL , B̃ ⊕ KiR )
| {z } | {z }
A
B
↓
↓
S1 (A)
S2 (B)
∗
Ri−1
↓
∗
e(Ri−1 ) = (Ã∗ , B̃ ∗ )
↓
∗
e(Ri−1 ) ⊕ Ki =
(Ã∗ ⊕ KiL , B̃ ∗ ⊕ KiR )
| {z } | {z }
A∗
B∗
↓
↓
S1 (A∗ )
S2 (B ∗ )
Wichtig:
A ⊕ A∗ = (Ã ⊕ KiL ) ⊕ (Ã∗ ⊕ KiL ) = Ã ⊕ Ã∗ (und analog B ⊕ B ∗ = B̃ ⊕ B̃ ∗ )
Durch die Schlüsseladdition ändert sich die Differenz nicht!
[Aber: Die Output-Differenz S1 (A) ⊕ S1 (A∗ ) hängt natürlich vom Schlüssel
Ki ab! Nichtlinearität der Boxen: S1 (Ã ⊕ KiL ) ist i. a. von S1 (Ã) ⊕ S1 (KiL )
verschieden.]
Ang.:
Wir kennen Ã, Ã∗ und die Output-Differenz S1 (A) ⊕ S1 (A∗ ).
A, A∗ haben Input-Differenz A′ = A ⊕ A∗ = Ã ⊕ Ã∗ , bekannt
A, A∗ haben Output-Differenz C ′ = S1 (A) ⊕ S1 (A∗ ), bekannt
Also tauchen {A, A∗ } in der Tabelle zur Input-Differenz A′ auf, und man
kennt alle Möglichkeiten für {A, A∗ }, so dass die Output-Differenz gerade
das bekannte C ′ ist.
Da A = à ⊕ KiL und à bekannt ist, erhält man damit eine Einschränkung
der Möglichkeiten für KiL .
Bsp.:
à = (0100), Ã∗ = (0111), S1 (A) ⊕ S1 (A∗ ) = (010)
59
Input-Differenz: A ⊕ A∗ = Ã ⊕ Ã∗ = (0011)
Tabelle: A ∈ {(1001), (1010), (1101), (1110)}
Folglich: KiL = Ã ⊕ A ∈ {(1101), (1110), (1001), (1010)} (Es ist Zufall, dass
hier die Möglichkeiten für A und für KiL übereinstimmen.)
Wiederholt man jetzt das Verfahren mit zwei anderen Klartextblöcken (weiterhin unter der Annahme, dass man den Output nach der (i − 1)-ten und
die Output-Differenz nach der i-ten Runde kennt), so erhält man wieder
eine Menge von Möglichkeiten für KiL , und der richtige Schlüssel liegt im
Durchschnitt dieser beiden Mengen. Man fährt solange fort, bis KiL eindeutig bestimmt ist. Entsprechend für KiR .
Wir zeigen jetzt, dass diese Überlegungen schon ausreichen, um das vereinfachte DES mit r = 3 Runden zu berechnen.
Differentielle Kryptoanalyse für drei Runden
Wir beginnen mit zwei Klartextblöcken (L0 , R0 ), (L∗0 , R0∗ ) und kennen die
zugehörigen Chiffretextblöcke (L3 , R3 ), (L∗3 , R3∗ ).
L3 = L2 ⊕ fK3 (R2 ) = R1 ⊕ fK3 (R2 ) = L0 ⊕ fK1 (R0 ) ⊕ fK3 (R2 )
r=3
Analog:
L∗3 = L∗0 ⊕ fK1 (R0∗ ) ⊕ fK3 (R2∗ ).
Wir wählen die Klartextblöcke so, dass R0 = R0∗ .
Dann:
L3 ⊕ L∗3 = Lo ⊕ L∗0 ⊕fK3 (R2 ) ⊕ fK3 (R2∗ )
| {z } | {z }
=:L′3
=:L′0
L′3 ⊕L′0 = fK3 (R2 )⊕fK3 (R2∗ ) = fK3 (R3 )⊕fK3 (R3∗ ), da R2 = R3 und R2∗ = R3∗ .
Wir kennen also R2 = R3 , R2∗ = R3∗ und daher auch e(R2 ), e(R2∗ )
| {z } | {z }
(Ã,B̃)
K3L )
∗
K3L )
sowie S1 (Ã ⊕
⊕ S1 (Ã ⊕
(= linke Hälfte von fK3 (R3 ) ⊕ fK3 (R3∗ ) = L′3 ⊕ L′0 )
| {z }
bekannt
[und entsprechend S2 (B̃ ⊕ K3R ) ⊕ S2 (B̃ ∗ ⊕ K3R )]
60
(Ã∗ ,B̃ ∗ )
Wir sind also genau in der Situation der Vorbemerkung und können jetzt
versuchen, K3R , K3L – und dann auch k – zu bestimmen. [Benötigt wird also
nur: L0 ⊕ L∗0 , L3 ⊕ L∗3 , R3 , R3∗ , R0 = R0∗ ]
Wir führen dies durch an einem Beispiel:
(L0 , R0 ) = (000111011011)
(L3 , R3 ) = (100101000011)
(L∗0 , R0∗ ) = (101110011011)
(L∗3 , R3∗ ) = (011000100100)
(beachte R0 = R0∗ )
Ziel:
Bestimmung von k (oder wenigstens Einschränkung der Möglichkeiten für
k) aus Kenntnis dieser beiden (und ggf. weiterer) Klartext-ChiffretextblockPaare.
e(R2 ) = (0000
|{z})
|{z}, 0011
R2 = R3 = (000011)
R2∗
=
R3∗
e(R2∗ )
= (100100)
Ã
B̃
= (1010
|{z})
|{z}, 1000
Ã∗
B̃ ∗
Input-Differenz in S-Box S1 : Ã ⊕ Ã∗ = (1010)
Output-Differenz von S-Box S1 = linke Hälfte von L′3 ⊕ L′0
L′3 = (100101) ⊕ (011000) = (111101)
L′0 = (000111) ⊕ (101110) = (101001)
L′3 ⊕ L′0 = (010100)
Output-Differenz von S-Box S1 = (010)
Aus Tabelle 5 von Seite 57:
A ∈ {(0011), (1001)}, also K3L = A ⊕ Ã ∈ {(0011), (1001)}
Input-Differenz in S-Box S2 : B̃ ⊕ B̃ ∗ = (1011)
Output-Differenz von S-Box S2 = rechte Hälfte von L′3 ⊕ L′0 = (100)
Mit Tabelle 7 von Seite 58 sieht man: K3R ∈ {(1111), (0100)}
Damit gibt es 4 Möglichkeiten für K3 und 8 Möglichkeiten für k (aus 29 = 512
vielen).
61
Um die Möglichkeiten für K3 weiter einzuschränken, wiederholt man diese
Prozedur mit zwei weiteren Klartext-Chiffretextblock-Paaren, z.B.:
(L0 , R0 ) = (010111011011)
(L3 , R3 ) = (001010001011)
(L∗0 , R0∗ ) = (101110011011)
(L∗3 , R3∗ ) = (011000100100)
(wieder R0 = R0∗ )
Analoge Analyse wie vorher zeigt: K3L ∈ {(0011), (1000)}
K3R ∈ {(0100), (1011)}
Damit bleibt für K3 nur die Möglichkeit K3 = (00110100)
Wie erhält man k?
k = (0?0011010)
Überprüfe mit den beiden Möglichkeiten für ?, ob L0 R0 zu L3 R3 verschlüsselt
wird.
Nur bei ? = 1 ist das der Fall, d.h. k = (010011010).
Differentielle Kryptoanalyse für vier Runden
Hier nutzen wir das Phänomen aus, dass die S-Boxen bei manchen InputDifferenzen häufig die gleiche Output-Differenz liefern. Bei S-Box S1 erhält
man z.B. bei den acht ungeordneten Paaren von Viererblöcken mit InputDifferenz (0011) in sechs Fällen Ouput-Differenz (011) (siehe Tabelle 6 auf
S. 57).
Bei S-Box S2 erhält man bei den acht ungeordneten Paaren mit InputDifferenz (1100) in vier Fällen Output-Differenz (010) (s. Tabelle 8).
Wir wählen jetzt Paare von Klartextblöcken (L0 , R0 ), (L∗0 , R0∗ ) mit folgenden
Eigenschaften:
1) R0′ = R0 ⊕ R0∗ = (001100)
Bei der Bildung von fK1 (R0 ), fK1 (R0∗ ) in der ersten Runde gilt dann:
e(R0 ) ⊕ e(R0∗ ) = (00111100), d.h. die Input-Differenz für S1 ist (0011)
und die Input-Differenz für S2 ist (1100).
Wir erwarten also mit einer Wahrscheinlichkeit von 43 eine OutputDifferenz (011) bei S1 und mit einer Wahrscheinlichkeit von 21 eine
Output-Differenz (010) bei S2 .
Sind die Ouputs der beiden S-Boxen unabhängig, so erwarten wir mit
einer Wahrscheinlichkeit von 43 · 12 = 83 eine Gesamt-Output-Differenz
fK1 (R0 ) ⊕ fK1 (R0∗ ) = (011010)
62
[Da die Expansionsfunktion e die Bits 3 und 4 von R0 bzw. R0∗ in beide
S-Boxen schickt, haben wir allerdings keine Unabhängigkeit; dennoch
ist 38 eine sinnvolle Wahrscheinlichkeitsabschätzung.]
2) L′0 = L0 ⊕ L∗0 = (011010)
Da R1 = L0 ⊕ fK1 (R0 ), R1∗ = L∗0 ⊕ fK1 (R0 ),
folgt im Falle fK1 (R0 ) ⊕ fK1 (R0∗ ) = (011010),
dass R1 ⊕ R1∗ = L0 ⊕ L∗0 ⊕ fK1 (R0 ) ⊕ fK1 (R0∗ ) = (000000), d.h. R1 = R1∗ .
Wegen R1 = R0 , L∗1 = R0∗ , gilt also mit einer Wahrscheinlichkeit von
3
, dass (L1 , R1 ) und (L∗1 , R1∗ ) die Eigenschaft R1 = R1∗ haben und
8
(L1 , R1 ) ⊕ (L∗1 , R1∗ ) = (R0 ⊕ R0∗ , 0 . . . 0) = (001100, 000000) gilt.
Die Strategie für die 4-Runden-Kryptoanalyse ist nun folgende:
Wähle mehrere Klartext-Paare (L0 , R0 ), (L∗0 , R0∗ ) mit der Summe (011010,
001100) und bestimme (L4 , R4 ), (L∗4 , R4∗ ). Wir nehmen jetzt in jedem dieser
Fälle an, dass R1 ⊕ R1∗ = (000000). Dann haben wir alle Zutaten, um eine
3-Runden-Kryptoanalyse der Runden 2, 3, 4 durchzuführen.
In 83 dieser Fälle (dort wo die Annahme R1 ⊕ R1∗ = (000000) korrekt war)
erhalten wir also eine Menge möglicher Schlüssel, in denen K4 vorkommt
(genauer je zwei, die K4L und K4R enthalten). In den übrigen 85 der Fälle
liefert die 3-Runden-Kryptoanalyse irgendwelche Mengen von zufälligen 8Bit-Strings. Da es keinen Grund gibt, dass hier ein 8-Bit-String besonders
häufig vorkommt, kann man davon ausgehen, dass der richtige Schlüssel K4
insgesamt deutlich häufiger vorkommt als alle übrigen 8-Bit-Folgen.
Wir geben ein Beispiel aus dem Buch von Trappe und Washington. Sie testeten (bei festem Schlüssel) ein vereinfachtes DES mit 100 Paaren (L0 , R0 ),
(L∗0 , R0∗ ), so dass L0 ⊕ L∗0 = (011010) und R0 ⊕ R0∗ = (001100).
Beachte: Es gibt
212
2
= 2048 viele solcher ungeordneten Paare.
63
Sie erhielten mit der beschriebenen Methode folgende Häufigkeiten der Kandidaten für K4L und K4R :
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Anzahl bei ersten 4 Bits
(Kand. für K4L )
12
7
8
15
4
3
4
6
33
40
35
35
59
32
28
39
Anzahl bei letzten 4 Bits
(Kand. für K4R )
14
6
42
10
27
10
8
11
8
16
8
18
8
23
6
17
Vermutung: K4L = (1100), K4R = (0010)
Also: k = (10?110000)
Teste, ob einer der beiden Schlüssel mit ? = 0 oder ? = 1 einen Block (L0 , R0 )
so in (L4 , R4 ) verschlüsselt wie das untersuchte 4-Runden DES. Wenn ja,
so hat man höchstwahrscheinlich den Schlüssel. Wenn nein, so teste die
Schlüsselmöglichkeiten mit anderen rechten und linken Hälften, die in der
obigen Tabelle besonders häufig vorkommen.
Differentielle Kryptoanalyse bei größeren Rundenzahlen
Die Strategie bei größeren Rundenzahlen wird durch das Verfahren bei 4
Runden nahegelegt. Man gibt gewisse L0 , R0 , . . . L′t , Rt′ vor und berechnet
Wahrscheinlichkeiten pi folgendermaßen:
∗
Falls nach der Runde i − 1 zwei Blöcke (Li−1 , Ri−1 ), (L∗i−1 , Ri−1
) mit Li−1 ⊕
∗
′
∗
′
Li−1 = Li−1 und Ri−1 ⊕ Ri−1 = Ri−1 in Runde i chiffriert werden, so ist die
Wahrscheinlichkeit, dass Li ⊕ L∗i = L′i und Ri ⊕ Ri∗ = Ri′ gilt, gerade pi .
64
Die Liste L′0 , R0′ , L′1 , R1′ , p1 , . . . L′t , Rt′ , pt nennt man eine t-Runden Charakteristik.
Unter der Voraussetzung, dass alle pi voneinander unabhängig sind,17 ist
dann p1 . . . pt die Wahrscheinlichkeit, dass für zwei Blöcke (L0 , R0 ), (L∗0 , R0∗ )
mit L0 ⊕ L∗0 = L′0 , R0 ⊕ R0∗ = R0′ nach jeder Runde i, i = 1, . . . t, Blöcke
(Li , Ri ), (L∗i , Ri∗ ) entstanden sind mit Li ⊕ L∗i = L′i , Ri ⊕ Ri∗ = Ri′ .
Insbesondere ist dies dann mindestens die Wahrscheinlichkeit nach der Runde
t Blöcke (Lt , Rt ), (L∗t , Rt∗ ) mit Lt ⊕ L∗t = L′t und Rt ⊕ Rt∗ = Rt′ zu erhalten.
Wie im Fall r = 4 wählt man bei beliebiger Rundenzahl r eine (r − 3)Runden-Charakteristik mit möglichst großem p1 . . . pr−3 und wendet dann
die differenzielle Kryptoanalyse für die letzten drei Runden an (diese muss
∗
etwas modifiziert werden, da Rr−3 = Rr−3
nicht mehr gelten muss). Dies
wird für eine genügend große Anzahl von Klartextblöcken mit der Differenz
L′0 , R0′ durchgeführt:
Man kennt Lr , Rr , L∗r , Rr∗ und vermutet mit einer Wahrscheinlichkeit von p =
∗
′
p1 . . . pr−3 , dass (Lr−3 , Rr−3 ), (L∗r−3 , Rr−3
) die Differenz (L′r−3 , Rr−3
) haben.
Die Ermittlung von Kr (wie bei r = 4) erfolgt durch Häufigkeitsanalysen.
Klar: Je größer r, desto kleiner p, desto mehr Tests mit Klartextblöcken
notwendig. Bei genügend großem r ist dann die vollständige Durchsuchung
des Schlüsselraums effektiver.
17
Die Voraussetzung ist nicht streng erfüllt, da die Rundenschlüssel K1 , . . . Kt nicht
unabhängig sind.
65
3.4
Der ’Data Encryption Standard’ DES
DES ist (leicht modifizierte) Feistel-Chiffre. Klartextblöcke und Chiffretextblöcke bestehen aus 64 Bits.
Schlüssellänge k hat 56 Bits, wird aber als 64-Bit-String beschrieben; die Bits
an den Positionen 8, 16, 24, . . . 64 werden so gewählt, dass die 8 Teilblöcke
zu 8 Bits jeweils ungerade Anzahl von Einsen enthalten (Fehlerentdeckende
Codierung). Damit gibt es 256 ≈ 7, 2 · 1016 verschiedene Schlüssel.
Rundenschlüssel Ki haben jeweils 48 Bits.
Die Modifikation des DES im Vergleich zu reiner Feistel-Chiffre besteht darin,
dass der Klartextblock zunächst einer festen Eingangspermutation IP (initial permutation) unterworfen wird, dann eine Feistel-Chiffre mit 16 Runden
durchgeführt wird und schließlich eine Schlusspermutation IP−1 (Inverse der
Eingangspermutation) angewandt wird.
58
60
62
64
57
59
61
63
Eingangspermutation IP 18
50 42 34 26 18 10
52 44 36 28 20 12
54 46 38 30 22 14
56 48 40 32 24 16
49 41 33 25 17 9
51 43 35 27 19 11
53 45 37 29 21 13
55 47 39 31 23 15
2
4
6
8
1
3
5
7
40
39
38
37
36
35
34
33
Schlusspermutation IP−1
8 48 16 56 24 64
7 47 15 55 23 63
6 46 14 54 22 62
5 45 13 53 21 61
4 44 12 52 20 60
3 43 11 51 19 59
2 42 10 50 18 58
1 41 9 49 17 57
32
31
30
29
28
27
26
25
IP und IP−1 haben keine kryptologische Bedeutung. (Sie wurden möglicherweise gewählt, um Chips effizienter auszulasten; um 1970 war das von Bedeutung.)
Zur Beschreibung des DES fehlen jetzt nur noch
1. Erzeugung der Rundenschlüssel
2. Angabe der fK
1. Rundenschlüsselerzeugung
Sei k ∈ Z64
2 der DES-Schlüssel (mit den Parity-Bits wie oben beschrieben).
18
Diese und folgende Tabellen sind zeilenweise von links oben nach rechts unten zu
lesen. Steht eine Zahl z an der Position i, so heißt das, dass das Bit an der Position z im
Eingabestring auf die Position i im Ausgabestring abgebildet wird.
66
Def. zunächst vi für 1 ≤ i ≤ 16 durch
1 für i = 1, 2, 9, 16
vi =
2 sonst
Zu Beginn wird k durch eine
Schlüsselpermutation auf einen
56-Bit-String verkürzt. (Man
spricht von Permutation, da die
8 Parity-Bits von k an der Stelle 8, 16, . . . 64 unberücksichtigt
bleiben und die übrigen 56 Positionen permutiert werden.)
Dieser 56-Bit-String wird in 2
28-Bit Hälften geteilt: (C0 , D0 ).
Schlüsselpermutation
Eingabe Runde 1:
C0
D0
56
2
Eingabe Runde i:
C i-1
Di-1
56
2
zykl. Linksshift
um vi Stellen
zykl. Linksshift
um vi Stellen
In Runde i (i = 1, . . . 16) werden aus Ci−1 , Di−1 ∈ Z28
2 neue
Ci , Di ∈ Z28
erzeugt,
aus
die2
sen wird dann der Rundenschlüssel Ki ∈ Z48
2 erzeugt.
Ci entsteht aus Ci−1 durch zyklischen Linksshift um vi Stellen. Di entsteht aus Di−1 in
der gleichen Weise.
64
2
k
Di
Ci
Kompressionsabb.
Ki
fKi
Eingabe Runde i+1:
Ci
48
2
Di
56
2
(Also: In Runde 1, 2, 9, 16 Linksshift um eine Stelle, in den übrigen Runden um zwei.)
Abbildung 10: Rundenschlüsselerzeugung
Auf (Ci , Di ) ∈ Z56
2 wird eine Kompressionsabbildung angewandt, die aus
(Ci , Di ) den Rundenschlüssel Ki ∈ Z48
2 herstellt. [Die Kompressionsabb.
wählt 48 der 56 Bits von (Ci , Di ) aus und permutiert diese.]
57
58
59
60
31
30
29
Schlüsselpermutation
49 41 33 25 17 9 1
50 42 34 26 18 10 2
51 43 35 27 19 11 3
52 44 36 63 55 47 39
23 15 7 62 54 46 38
22 14 6 61 53 45 37
21 13 5 28 20 12 4
14
15
26
41
51
34
67
Kompressionsabbildung
17 11 24 1 5 3 28
6 21 10 23 19 12 4
8 16 7 27 20 13 2
52 31 37 47 55 30 40
45 33 48 44 49 39 56
53 46 42 50 36 29 32
2. Beschreibung der Verschlüsselungsfunktion fKi
Wie bei jeder Feistelchiffre wird aus der Ausgabe (Li−1 , Ri−1 ) ∈ Z64
2 der
64
(i − 1)-ten Runde die Ausgabe (Li , Ri ) ∈ Z2 der i-ten Runde erhalten durch:
Li = Ri−1
Ri = Li−1 ⊕ fKi (Ri−1 )
[Ausnahme Runde 16; dort R16 = R15 , L16 = L15 ⊕ fK16 (R15 ).]
48
Sei also R ∈ Z32
2 , Ki ∈ Z2 der Rundenschlüssel für Runde i.
Expansionsabbildung
32 1 2 3 4
5
4
5 6 7 8
9
8
9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1
1. Schritt:
Anwendung der Expansionsabbildung
48
e : Z32
2 → Z2 :
R → e(R)
2. Schritt:
Schlüsseladdition: e(R) ⊕ Ki = (B1 , B2 , . . . B8 ) ∈ Z48
2
Bi ∈ Z62 , i = 1, . . . 8
3. Schritt:
8 S-Boxen S1 , . . . S8 . Jede S-Box besteht aus vier Zeilen, jede der Zeilen
enthält die Zahlen {0, 1, . . . 15} in einer gewissen Reihenfolge.
Bi ist Input für die S-Box Si . Ist Bi = (b1 b2 b3 b4 b5 b6 ), so wird durch b1 b6 die
Zeile von Si festgelegt: b1 b6 ist die Binärdarstellung einer Zahl a ∈ {0, 1, 2, 3}.
Wähle die (a + 1)-te Zeile von Si . b2 b3 b4 b5 legt den Eintrag in der gewählten
Zeile fest. b2 b3 b4 b5 ist die Binärdarstellung einer Zahl b ∈ {0, . . . 15}.
Wähle (b + 1)-te Position in der betreffenden Zeile.
Schreibe den Eintrag an der ausgewählten Position binär. Dies ist Ci =
Si (Bi ) ∈ Z42 , die S-Box-Substitution von Bi .
4. Schritt:
(C1 , C2 , . . . C8 ) ∈ Z32
2 wird abschließend einer sogenannten
P-Box-Permutation unterworfen;
das Ergebnis ist fKi (R) ∈ Z32
2 .
P-Box-Permutation
16 7 20 21 29 12 28 17
1 15 23 26 5 18 31 10
2 8 24 14 32 27 3 9
19 13 30 6 22 11 4 25
68
14 4 13
0 15 7
4 1 14
15 12 8
1
4
8
2
2
14
13
4
15 1
3 13
0 14
13 8
8 14 6
4 7 15
7 11 10
10 1 3
10 0
13 7
13 6
1 10
9 14
0 9
4 9
13 0
6
3
8
6
7 13
13 8
10 6
3 15
14
11
9
0
0
6
12
10
3
5
0
6
2 12 4 1 7
14 11 2 12 4
4 2 1 11 10
11 8 12 7 1
12 1 10 15
10 15 4 2
9 14 15 5
4 3 2 12
9
7
2
9
4 11 2 14
13 0 11 7
1 4 11 13
6 11 13 8
15
4
12
1
13 2 8
1 15 13
7 11 4
2 1 14
6
10
9
4
4
8
1
7
S-Box 1
15 11 8 3
2 13 1 10
6 2 11 15
9 1 7 5
S-Box 2
11 3 4 9
2 8 14 12
4 13 1 5
15 4 2 11
S-Box 3
3 15 5 1
4 6 10 2
15 3 0 11
9 8 7 4
S-Box 4
6 9 10 1
15 0 3 4
11 7 13 15
1 13 8 9
S-Box 5
10 11 6 8
7 13 1 5
13 7 8 15
14 2 13 6
S-Box 6
2 6 8 0
12 9 5 6
8 12 3 7
5 15 10 11
S-Box 7
0 8 13 3
9 1 10 14
3 7 14 10
4 10 7 9
S-Box 8
15 11 1 10
3 7 4 12
12 14 2 0
10 8 13 15
10 6 12 5
6 12 11 9
12 9 7 3
11 3 14 10
9
5
10
0
0
3
5
6
7
0
8
6
0
9
3
5
5 10
11 5
2 15
14 9
13 12 7 11 4
8 5 14 12 11
1 2 12 5 10
15 14 3 11 5
2 8
15 1
14 7
2 12
2
7
1
4
4 15
14 9
8 4
2 14
2 13 12
1 10 6
12 6 9
7 12 0
8
2
3
5
5 11 12
12 1 10
14 5 2
11 12 7
5 3 15 13
0 15 10 3
9 12 5 6
15 0 9 10
0
9
3
4
7
8
0
13
14 9
8 6
0 14
5 3
13 3 4 14 7 5 11
1 13 14 0 11 3 8
0 4 10 1 13 11 6
14 1 7 6 0 8 13
12
3
15
5
9
5
6
0
9 3
5 6
6 10
12 9
7 5
12 2
8 0
15 14
14
11
13
0
10
15
5
2
6
8
9
3
1
6
2
12
5 0 12 7
0 14 9 2
15 3 5 8
3 5 6 11
Tabelle 9: Die 8 S-Boxen des DES, repräsentiert durch 8 4 × 16 Matrizen
69
32
R
ZZ 2
e
Expansionsabb.
48
e(R)
ZZ2
+
Ki
48
ZZ 2
B 1 B2 B 3 B 4 B 5 B6 B 7 B 8
S-Boxen
S1
S2
S3
S4
S5
S6
C1 C2 C3 C4 C5 C 6 C 7 C 8
P-Box
fKi (R)
Bi
S7
Ci
6
ZZ 2
S8
4
ZZ 2
P-Box-Permutation
32
ZZ 2
Abbildung 11: Schematische Darstellung der Berechnung von fKi (R)
Sicherheit des DES
1) Bei vollständiger Durchsuchung des Schlüsselraums müssen im schlimmsten Fall (bei einem ciphertext-only Angriff) 256 Schlüssel ausprobiert
werden. Der DES hat jedoch folgende Symmetrieeigenschaft:
Sei m ein Klartextblock, k ein Schlüssel, c = Ek (m) der durch DES
verschlüsselte Block. Bezeichnet man mit m′ , k ′ , c′ die zu m, k und
c komplementären Blöcke (Nullen und Einsen vertauschen), so gilt
c′ = Ek′ (m′ ). Daher muss man beim Brute-Force-Angriff nur max. 255
Schlüssel testen.
70
Zur Zeit der Einführung des DES (1975) war eine vollständige Schlüsselsuche kaum denkbar. Dennoch zeigten W. Diffie und M. Hellman in
einer Arbeit 1977, dass es möglich ist, für 20 Millionen US-$ eine Maschine zu bauen, die einen DES-Schlüssel innerhalb eines Tages ermitteln würde. (Kritik von Diffie und Hellman: Kurze Schlüssellänge von
56 Bits)
1997: RSA Data Security bot 10.000 US-$ demjenigen, der zuerst einen
DES-chiffrierten Tex knacken würde. Nach fünf Monaten wurde der
Schlüssel von R. Vesper ermittelt. Methode: Tausende über das Internet
verbundene Rechner arbeiteten zusammen. (25 % des Schlüsselraums
mussten durchsucht werden.)
1998: Zweites DES-Challenge durch RSA Data Security. Nach 39 Tagen
wurde der Schlüssel von Distributed Computing Technologies ermittelt
(85 % des Schlüsselraums wurden durchsucht).
1998/1999: DES-Cracker von Electronic Frontier Foundation (EEF):
1536 parallel arbeitende spezielle Chips (40 MHz). Benötigt im Schnitt
viereinhalb Tage, um DES-Schlüssel zu ermitteln.19
2) Es gibt vier sog. schwache Schlüssel beim DES. Sie haben die Eigenschaft, dass alle erzeugten Rundenschlüssel gleich sind. Die schwachen Schlüssel sind: (00000001)8 , (11111110)8 , (00011111)4 (00001110)4 ,
(11100000)4 (11110001)4
Genau für die schwachen Schlüssel gilt: Ek (Ek (m)) = m
Schwache Schlüssel müssen vermieden werden. Außerdem gibt es insgesamt 12 Schlüssel, die nur zwei verschiedene Rundenschlüssel erzeugen.
Diese heißen semischwache Schlüssel und sollten ebenfalls vermieden
werden. Diese 12 Schlüssel lassen sich in 6 Paare (k1 , k2 ) aufteilen, so
dass Ek1 (Ek2 (m)) = m. (Dadurch sind die semischwachen Schlüssel
auch charakterisiert.)20
3) 16-Runden-DES ist gegen differentielle Kryptoanalyse sicher, da diese
Methode den Entwicklern bekannt war. S-Boxen wurden entsprechend
konstruiert. Z.B. gilt Folgendes:
Für jede S-Box Si und jede Input-Differenz A′ ∈ Z62 hat höchstens ein
Viertel der ungeordneten Paare {A, A∗ } mit A ⊕ A∗ = A′ die gleiche
Output-Differenz Si (A) ⊕ Si (A∗ ).
Bei einem Chosen-Plaintext-Angriff mit diff. Kryptoanalyse benötigt
man 247 Klartextblöcke. Wendet man differentielle Kryptoanalyse als
19
20
Einzelheiten siehe Trappe und Washington [31], S. 118-122
Details siehe P. Horster [19]
71
Known-Plaintext-Angriff an (was auch möglich ist), so benötigt man
255 Klartextblöcke. Dies entspricht einem Brute-Force-Angriff (Durchsuchen des gesamten Schlüsselraums). Bei weniger als 16 Runden ist
diff. Kryptoanalyse (als Known-Plaintext-Angriff) besser als vollständige Schlüsselsuche. Dies ist der Grund für die Wahl von 16 Runden.
4) Keine der S-Boxen beschreibt eine (affin-) lineare Funktion, ebensowenig wie das gesamte DES als (affin-) lineare Funktion (bei gegebenem
Schlüssel) beschrieben werden kann. Der DES ist also gegen die einfachen Angriffe, die bei (affin-) linearen Blockchiffren möglich sind, sicher.
Auch gegen kryptoanalytische Angriffe, die darauf beruhen, das Verschlüsselungsverfahren (bei festem Schlüssel) durch eine lineare Funktion zu approxmieren – sogenannte lineare Kryptoanalyse (Known-plaintext-Angriff)21 – erwies sich DES als ausreichend sicher: Für das 16Runden DES werden 243 Klartext-Chiffretextblockpaare benötigt, um
mit dieser Methode den Schlüssel zu bestimmen. Allerdings ist sie besser als differentielle Kryptoanalyse und vollständige Durchsuchung des
Schlüsselraums.
Beachte: Die Methode der linearen Kryptoanalyse war den Designern
von DES nicht bekannt. Die S-Boxen sind bezüglich linearer Kryptoanalyse nicht optimiert.
5) Beim DES sind die Prinzipien der Diffusion und Konfusion verwirklicht.
• Die nderung eines Input-Bits einer S-Box ändert den Output der
S-Box um mindestens zwei Bits.
• Jedes Output-Bit hängt nach 5 Runden von jedem Klartextbit
und jedem Schlüsselbit ab (Lawineneffekt).
(Dazu trägt auch die P-Box-Permutation bei, die für eine gleichmäßige Verteilung der Output-Bits der S-Boxen in Runde i auf
die S-Boxen in Runde i + 1 sorgt.)
6) Jedes Chiffretextverfahren, das die Gruppeneigenschaft besitzt, wo also
die Hintereinanderausführung zweier Verschlüsselungen mit den Schlüsseln
k1 , k2 einer Verschlüsselung mit einem Schlüssel k3 entspricht, hat eine
gewisse innere Symmetrie, die für kryptoanalytische Angriffe nutzbar
gemacht werden kann. Das DES hat jedoch nicht diese Eigenschaft, d.h.
für die Schlüssel k1 , k2 ist i.a. Ek1 ◦ Ek2 6= Ek3 für alle Schlüssel k3 .
21
M. Mitsui; Linear cryptoanalysis method for DES cipher, Adv. in CryptologyEUROCRYPT ’93, Springer LNCS 765, 1994, S. 386-397.
72
Die 256 vielen DES -Verschlüsselungsfunktionen erzeugen also eine größere Gruppe (innerhalb der Gruppe S264 aller Permutationen der 264 vielen Blöcke der Länge 64 über Z2 ). Tatsächlich folgt aus Arbeiten von
Coppersmith (1992) und Campbell/Wiener (1993), dass die von den
DES-Verschlüsselungsfunktionen erzeugte Gruppe mindestens Ordnung
20
1, 94 · 102499 hat. (Beachte: |S264 | = (264 )! > 10(10 ) .)
7) Aufgrund von 6) kann man die Sicherheit des DES erhöhen, indem
man (mit verschiedenen Schlüsseln) einen Klartext mehrmals chiffriert.
Allerdings bringt doppelte DES-Verschlüsselung kaum mehr Sicherheit. Tatsächlich hat der Schlüsselraum jetzt zwar die Größe 2112 , aber
man kann ein Schlüsselpaar (k1 , k2 ) mit 257 vielen einfachen DESVerschlüsselungen ermitteln (mit einem enormen Aufwand an Speicherplatz). Dies geschieht mit Hilfe der sog. Meet-in-the-Middle Attack, die für alle Mehrfachhintereinanderausführungen symmetrischer
Verschlüsselungsverfahren funktioniert.
Wir beschreiben sie kurz:
Angenommen: Eve kennt Klartext m und doppelt chiffrierten Text
c = Ek1 (Ek2 (m)). Sie will (k1 , k2 ) bestimmen.
Sie berechnet und speichert alle Ek (m) für alle Schlüssel k. Dann berechnet und speichert sie alle Dk (c).
(Dk (c) = Entschlüsselung von c; bei DES: verwende die durch k erzeugten Rundenschlüssel k1 , . . . k16 in umgekehreter Reihenfolge.)
Dann vergleicht sie die beiden Listen. Ist Ek2 (m) = Dk1 (c), so ist
Ek1 (Ek2 (m)) = c. Erhält man mehrere mögliche Paare (k1 , k2 ), so wähle
weiteres Klartext-Chiffretextpaar und teste, welches der Schlüsselpaare
(k1 , k2 ) den Klartext auf den Chiffretext abbildet.
Bei N Schlüsseln (N = 256 bei DES) sind also 2N Berechnungen erforderlich (+N 2 viele Vergleiche durchzuführen). Dies ist deutlich weniger
aufwändig als N 2 viele Berechnungen für vollständige Schlüsselsuche.
8) Aufgrund von 7) wird zur Erhöhung der Sicherheit in der Praxis oft
das Triple-DES benutzt.
Zwei typische Varianten:
Ek1 ◦ Ek2 ◦ Ek3 für drei Schlüssel k1 , k2 , k3
Ek1 ◦ DK2 ◦ Ek1 für zwei Schlüssel k1 , k2
(Bei k1 = k2 hat man wieder das einfache DES.)
Meet-in-the-Middle Attack erfordert jetzt etwa 2113 viele Berechnungen, und der benötigte Speicherplatz ist exorbitant.
73
3.5
Andere Blockchiffren
Neben dem DES gibt es eine Reihe weiterer gebräuchlicher Blockchiffren.
Wir beschreiben knapp die wichtigsten, bevor wir auf den neuen Advanced
Encryption Standard (AES) eingehen.
1) IDEA
Anfang der 90er Jahre von Xuejia Lai und James Massey entwickelt
(IDEA wird auch von PGP verwendet)
Länge Klartext-/Chiffretextblöcke 64 Bit
Schlüssellänge 128 Bit
Funktionsweise:
Aufteilen der 64 Bits eines Klartextblocks auf vier Blöcke 16 Bit.
Diese vier Blöcke werden in acht Runden bearbeitet. In jeder dieser
Runden werden aus den vier Eingabeblöcken und jeweils sechs Teilschlüsseln der Länge 16 mittels 4 Additionen (modulo 216 ) und 4 Multiplikationen22 (modulo 216 + 1) die vier Eingabeblöcke für die nächste
Runde erzeugt. Am Ende nochmals je zwei weitere Additionen und
Multiplikationen mit 16 Bit-Schlüsseln und Zusammensetzen der resultierenden 4 Blöcke zum Chiffretextblock. IDEA ist keine Feistel-Chiffre.
IDEA hat bisher keine Sicherheitsrisiken aufgewiesen und ist etwa doppelt so schnell wie DES.23
2) RC2, RC5, RC6
Wichtige Blockverschlüsselungsverfahren aus der RC-Familie, entwickelt
von Ron Rivest (vertrieben von RSA Data Security).
RC2 (Anfang der 90’er Jahre entwickelt, 1997 veröffentlicht)
Variable Schlüssellänge (40 Bits bis 1024 Bits), Blocklänge 64 Bit, wird
unter anderem im S/MIME-Standard verwendet.24
RC5 (1995 veröffentlicht)
Variable Schlüssellänge, Klartextblocklänge, Rundenzahl (z.B. Klartextblocklänge 32 Bit, Schlüssellänge 128 Bit, 12 Runden)
Kombiniert Add. mod 2w (w = Klartextblocklänge), binäre Add. XOR,
zyklische Shifts (abhängig von Klartextblöcken). RC5 scheint gegen differentielle Kryptoanalyse und lineare Kryptoanalyse sicher zu sein.25
22
genauer: modifizierte Multipliktion modulo 216 +1; 0 muss gesondert behandelt werden
Details siehe Schmeh [28], S. 84-85
24
Details: http://www.faqs.org/rfcs/rfc2268.html
25
Details siehe Menezes, van Oorschott, Vanstone [26], S. 269-270
23
74
RC6 (1998 veröffentlicht)
erreichte die Auswahlrunde der letzten AES-Kandidaten. Schnell und
einfach zu implementieren. Variable Schlüssellänge (128, 192, 256 Bit),
Blocklänge 128 Bit.
3) Blowfish, Twofish
Blowfish (1994) und Twofish (1998) sind von B. Schneier entwickelte
Feistel-Chiffren.
Blowfish hat variable Schlüssellänge (bis 448 Bit), S-Boxen sind schlüsselabhängig , 16 Runden, Blocklänge 64. Rundenschlüssel und S-Boxerstellung ist recht aufwändig. Dennoch ist Blowfish ein schneller und
einfach zu implementiernder Algorithmus (da nur XOR und + von 32
Bit-Worten). Blowfish gilt als sehr sicher.
Twofish erreichte die Auswahlrunde der letzten fünf AES-Kandidaten.
Schlüssellänge und Blocklänge wie bei RC6. Twofish ist Feistel-Chiffre.
8 × 8 S-Boxen, arithmetische Operationen z.T. in F28 .
4) Weitere gebräuchliche Blockchiffren sind
• SAFER (Massey, 1995)
• CAST (C. Adams, S. Tavares 1990; 1997. Wird auch von PGP
verwandt.)
• SKipjack (NSA, 1990; veröffentlicht 1998)
• MISTY (Fa. Mitsubishi, 1996) Weiterentwicklung: KASUMI; vorgesehen für die symmetrische Verschlüsselung bei UMTS (Universal Mobile Telecommunication System)26
3.6
Der Advanced Encryption Standard (AES) - Das
Rijndael-Verfahren
1997: US-Standardisierungsbehörde NIST (National Institute of Standards
and Technology) startet öffentliche Ausschreibung für Nachfolgeverfahren des
DES.
Anforderungen: öffentlich, lizenzfrei, weltweit verfügbar, schneller als TRIPLEDES. Blocklänge mind. 128 Bit, variable Schlüssellängen von 128, 192, 256
Bit.
26
Infos: http://www.infoserversecurity.org oder Buch von Schneier [29]
75
1998: 15 AES-Kandidaten werden eingereicht (darunter ’Magenta’, Deutsche
Telekom) und begutachtet.
1999: Auswahl von 5 Algorithmen für die letzte Runde:
• Twofish (s. 3.5)
• RC6 (s. 3.5)
• MARS (IBM, D. Coppersmith)
• Serpent (R. Anderson, E. Biham, L. Knudsen; 32-Runden Feistel-Chiffre,
DES-ähnlich)
• Rjndael (J. Daemen, V. Rijmen)
2000: Wahl von Rijndael als neuen AES (vor Twofish und Serpent)
Mai 2002: AES (Rijndael) wird zum Federal Information Processing Standard
(FIPS) in den USA.
Zur Beschreibung des Rijndael-Algorithmus benötigen wir (auch für spätere
Zwecke) einen kurzen
Exkurs über endliche Körper
1) Endliche Körper haben immer Primzahlpotenzordnung pa und es gilt
1 + . . . + 1 = 0.
←−p−→
2) Zu jeder Primzahlpotenz gibt es (bis auf Isomorphie) genau einen Körper.
3) Die Körper von Primzahlordnung sind gerade Zp = Z/pZ, auch bezeichnet als Fp .
4) Um einen Körper der Ordnung pa zu konstruieren, benötigt man ein
irreduzibles Polynom m(x) = xa + ba−1 xa−1 + . . . + b1 x + b0 über Fp
(also in Fp [x]) vom Grad a.
Irreduzibel: m(x) ist nicht Produkt zweier Polynome vom Grad ≥ 1.
Fp
lässt sich dann auffassen als Menge aller Polynome über Fp vom
Grad ≤ a − 1, wobei Addition und Multiplikation folgendermaßen definiert sind:
a
Addition komponentenweise
76
Multiplikation: Polynommultiplikation, dann Division durch m(x) mit
Rest r(x); r(x) ist das Ergebnis der Multiplikation in Fpa .
Bsp.: Konstruktion von F28 :
m(x) = x8 + x4 + x3 + x + 1 ist irreduzibel über
F2
8
F2 .
= {a7 x7 + a6 x6 + . . . a1 x + a0 | ai ∈ F2 = {0, 1}}
(x6 + x4 + x2 + x + 1)
Mult. in
F
(x7 + x + 1):
⊙
↑
28
(später nur·)
Zunächst normale Polynommultiplikation:
(x6 + x4 + x2 + x + 1) · (x7 + x + 1)
= x13 + x11 + x9 + x8 + x7 + x7 + x5 + x3 + x2 + x + x6 + x4 + x2 + x + 1
= x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1
Jetzt Division mit Rest durch m(x):
(x13 +x11 +x9 + x8 + x6 +x5 +x4 + x3 +1) : (x8 + x4 + x3 + x + 1) = x5 + x3
x13
+x9 + x8 + x6 +x5
Rest x7 + x6 + 1
x11
x11
7
+x + x
6
+x4 + x3 +1
+x4 + x3 +1
x7 + x6
+1
Also:
(x6 + x4 + x2 + x + 1) ⊙ (x7 + x + 1) = x7 + x6 + 1
Oft schreibt man die Elemente aus Fpa auch als a-Tupel über Fp
(ba−1 xa−1 + . . . b1 x + b0 ↔ (ba−1 , . . . b1 , b0 )). Addition dann komponentenweise, aber Multiplikation nach obiger Regel.
Also in
F82 (mit obigem m(x)):
(0, 1, 0, 1, 0, 1, 1, 1) ⊙ (1, 0, 0, 0, 0, 0, 1, 1) = (1, 1, 0, 0, 0, 0, 0, 1)
Beachte:
Wählt man ein anderes irreduzibles Polynom m̃(x) vom Grad a, so ist
das Ergebnis der Multiplikation (modulo m̃(x)) zweier Polynome vom
Grad ≤ a−1 ein anderes. Die entstehenden Körper sind aber isomorph.
77
5) Die multiplikativen Inversen eines Elements 6= 0 in Fpα berechnet man
mit dem erweiterten Euklidischen Algorithmus in Fp [x]:
g(x) 6= 0
(vom Grad ≤ a − 1)
g(x) und m(x) sind teilerfremd.
(d.h es gibt kein Polynom vom Grad ≥ 1,
das g(x) und m(x) in Fp [x] teilt,
denn m(x) ist irreduzibel.)
Dann ex. u(x), v(x) ∈ Fp [x] mit g(x)u(x) + m(x)v(x) = 1 und
Grad u(x) ≤ a − 1 (Berechnung siehe 6))
Dann g(x) ⊙ u(x) = 1
6) Der erweiterte Euklidische Algorithmus in Fp [x] funktioniert wie der in
Z.
Ist a(x) = s(x) · b(x) + r(x), Grad r(x) ≤ Grad b(x) (Grad 0 = −1)
(Division mit Rest), so schreibe: s(x) = a(x) div b(x), r(x) = a(x) mod
b(x)
Erweiterter Euklidischer Algorithmus zur Bestimmung von u(x), v(x)
mit a(x)u(x) + b(x)v(x) = ggT (a(x), b(x)) ← normiert
o.b.d.A. a(x), b(x) normiert, Grad a(x) ≥ Grad b(x).
(1) Setze
1 0
a(x)
p(x)
und A : =
:=
0 1
b(x)
q(x)
(2) Solange q(x) 6= 0, wiederhole:
0
1
A:=A·
1 −(p(x) div q(x))
q(x)
p(x)
=
p(x) mod q(x)
q(x)
1
u(x)
=A·
(3) Setze d(x) = p(x) und
0
v(x)
Dann d(x) = ggT (a(x), b(x)) = u(x) · a(x) + v(x) · b(x)
78
Bsp:
a(x) = x8 + x4 + x3 + x + 1 , b(x) = x7 + x6 + x3 + x + 1 über
p(x)
q(x)
A
1 0
(1) x8 + x4 + x3 + x + 1 x7 + x6 + x3 + x + 1
(2) x7 + x6 + x3 + x + 1
x6 + x2 + x
1
x6 + x2 + x

0

d(x) u(x) v(x)
 01 
0 1 
1
x
+1

1  0 1 
1 x +1
1 x
+1
1 x + 1
=
x
+
1 x2
0
1
F2

1
x
+
1
0
1



2
6
2
x+ 1 x
1 x + x + x
x + 1 x7 + x6 + x3 + x + 1
=
x2 x8 + x4 + x3 + x + 1
(3)
1
x + 1 x2
Teste: (x + 1)(x8 + x4 + x3 + x + 1) + x2 (x7 + x6 + x3 + x + 1) = 1
Ist F28 bzgl. m(x) = x8 + x4 + x3 + x + 1 (= a(x) oben) definiert, so
ist (11001011)−1 = (00000100),
denn x2 (x7 + x6 + x3 + x + 1) = (x + 1)m(x) + 1,
d.h. x2 ⊙ (x7 + x6 + x3 + x + 1) = 1.
7) Algebraisch ist Fpa =
˜ Fp [x]/(m(x)), wobei (m(x)) das von m(x) erzeugte
Ideal ist. Die Polynome vom Grad ≤ a − 1 bilden ein vollständiges
Vertretersystem der Restklassen modulo (m(x)).
Nun zur Beschreibung des Rijndael-Algorithmus:
Rijndael ist eine iterierte Blockchiffre, aber keine Feistel-Chiffre. Blocklänge
b und Schlüssellänge k können unabhängig voneinander auf einen der Werte
128, 192, 256 Bit gesetzt werden. Die Zahl der Runden r ist abhängig von
diesen Werten 10, 12 oder 14.
Im FIPS-Standard ist b = 128, k = 128, r = 10.
(Wir verwenden im Folgenden auch diese Parameter.)
79
Klartextblock
Schlüssel
128 Bit
Schlüsselexpansion
128 Bit
auf 128 * 11
= 1408 Bit
K0
+
128 Bit
S0
128 Bit
Runde 1
+
K1
128 Bit
S1
128 Bit
Runde 2
K3
+
128 Bit
S9
128 Bit
Runde 10
K10
+
128 Bit
Chiffretextblock
128 Bit
Abbildung 12: Schematischer Ablauf des Rijndael-Verfahrens
80
Der Ablauf des Rijndael-Verfahrens ist auf Seite 80 skizziert. Die Zwischenergebnisse S0 , S1 , . . . S9 werden in Rijndael Zustände genannt.
Jede Runde, bis auf die zehnte, besteht aus drei Layern:
ByteSub-Transformation: Nichtlineare Transformation; dient dem Schutz
gegen differentielle und lineare Kryptoanalyse.
ShiftRow-Transformation: Dient der Diffusion
MixColumn-Transformation: Dient ebenfalls der Diffusion
In Runde 10 werden nur die ByteSub-Transformation
und die ShiftRow-Transformation vorgenommen (s. Abb. unten):
S
Die Schlüsseladdition (bin.Add.,XOR) AddRoundKey wird als 4. Layer berechnet.
i-1
ByteSub
Runde i
Wir beschreiben nun die 3 Layer ByteSub,
ShiftRow, MixColumn und danach die Rundenschlüsselerzeugung.
Zunächst aber zwei Vorbemerkungen:
Die Klar- und Chiffretextblöcke und sämtliche Zustände in Rijndael werden als 4x4
Matrizen geschrieben, wobei jeder Eintrag
ein Byte, d.h. einen 8-Bit-String ist:

a00
 a10

 a20
a33
a01
a11
a21
a31
a02
a12
a22
a32

a03
a13 

a23 
a33
ShiftRow
entfällt für
i = 10
MixColumn
+
Ki
Si
Abbildung 13: Transformationen
Die Bytes sind spaltenweise zu lesen, d.h. der Block hat die Form:
a00 a10 a21 a20 a01 . . . a33
An einigen Stellen muss man Bytes (d.h. 8-Bit-Strings) als Elemente in F28
auffassen: (b7 b6 . . . b0 ) ↔ b7 x7 +b6 x6 +. . . b0 . Addition entspricht XOR, Multiplikation Körpermultiplikation. In Rijndael ist F28 bezüglich des irreduziblen
Polynoms x8 + x4 + x3 + x + 1 gegeben.
81
ByteSub-Transformation
Eingabe:


b00 . . . b03

..  , b Bytes
Zustand Si =  ...
.  ij
b30 . . . b33
Jedes Byte bij wird einzeln verändert; dies liefert eine neue 4 × 4-Matrix, die
Ausgabe der ByteSub-Transformation.
Sei g = b7 b6 . . . b0 ein Byte.
Die ByteSub-Transformation umfasst zwei Schritte:
1. Schritt: Fasse g als Element in F28 auf und berechne g −1 in
g 6= 00 . . . 0. Falls g = 0 . . . 0, so bleibt g ungeändert.
F2
8
, falls
2. Schritt: Fasse das nach dem ersten Schritt erzeugte Byte c7 c6 . . . c0 als
Bit-Folge (also Element in Z82 ) auf und unterwerfe es der folgenden affinen
Transformation des Z82 :












1
1
1
1
1
0
0
0
0
1
1
1
1
1
0
0
0
0
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
0
0
0
1
1
1
1
1
1
0
0
0
1
1
1
1
1
1
0
0
0
1
1
1
1
1
1
0
0
0
1























c0
c1
c2
c3
c4
c5
c6
c7


 
 
 
 
 
+
 
 
 
 
 
1
1
0
0
0
1
1
0


 
 
 
 
 
=
 
 
 
 
 
d0
d1
d2
d3
d4
d5
d6
d7












d7 d6 d5 d4 d3 d2 d1 d0 ist dann das Ergebnis der ByteSub-Transformation von
g = b7 b6 . . . b0 .
Bsp.:
g = (11001011)

1
1

1

1

1

0

0
0
g −1 = (00000100)
0
1
1
1
1
1
0
0
0
0
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
0
0
0
1
1
1
1
1
1
0
0
0
1
1
1
1
1
1
0
0
0
1
1

1
1

1

1

0

0

0
1
(siehe S. 79)












82
0
0
1
0
0
0
0
0


 
 
 
 
 
+
 
 
 
 
 
1
1
0
0
0
1
1
0


 
 
 
 
 
=
 
 
 
 
 
1
1
1
1
1
0
0
0












Also: (11001011) → (00011111)
In Rijndael ist die ByteSub-Transformation durch eine S-Box beschrieben.
Die S-Box ist eine 16×16 Matrix, deren Einträge die Zahlen von 0 bis 255 (in
einer gewissen Reihenfolge) sind. Ein Byte b7 . . . b0 bestimmt durch b7 b6 b5 b4
die Zeile und durch b3 b2 b2 b0 die Spalte (Zeilen u. Spalten mit 0, . . . 15 nummeriert). Der Eintrag an der entsprechenden Stelle ist die Zahl, die binär
codiert die ByteSub-Transformation von b7 . . . b0 angibt. (Schneller als jedesmal Inverse und affine Transformation zu berechnen.)
In ByteSub wird durch g → g −1 die Nichtlinearität (über F2 ) sicherstellt. Die
Einfachheit dieser Abbildung könnte ggf. kryptoanalytische Angriffe ermöglichen; daher ist eine affine Abbildung nachgeschaltet. Sie sorgt auch dafür,
dass der Output von ByteSub nie mit dem Input oder dem Komplement des
Inputs übereinstimmt (Byte-weise).
ShiftRow-Transformation
Jede der vier Zeilen der 4 × 4-Matrix, die man nach ByteSub erhält, werden
zyklisch verschoben:
Die 1. Zeile bleibt unverändert, die 2. Zeile wird um eine Stelle nach links,
die 3. Zeile um zwei Stellen nach links und die 4. Zeile um drei Stellen nach
links verschoben.
MixColumn-Transformation
Jedes der Bytes in der Input 4 × 4-Matrix wird als Element in F28 aufgefasst.
Diese 4 × 4-Matrix wird von links mit


0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0
multipliziert; die Eintäge dieser Matrix sind auch als Elemente von
zufassen. Die Matrizenmultiplikation erfolgt über F28 .
F2
8
auf-
Schlüsselerzeugung
Ausgangsschlüssel hat 128 Bit. Er wird als 4 × 4-Matrix von Bytes geschrieben, spaltenweise zu lesen. Seien w(0), w(1), w(2), w(3) diese Spalten. Es wer83
den 40 weitere Spalten vier Bytes definiert.
Sei w(i − 1) schon definiert.
Ist i 6≡ 0 (mod 4), so w(i) = w(i − 4) ⊕ w(i − 1)
Ist i ≡ 0 (mod 4) , so w(i) = w(i − 4) ⊕ T (w(i − 1)),
wobei T folgende Transformation ist:
 
a
b

a, b, c, d Bytes
Sei w(i − 1) = 
c ,
d
Wende auf b, c, d, a die ByteSub-Transformation an.
Dies liefert vier Bytes, e, f, g, h.
i−4
Berechne r(i) = (00000010) 4 in F28 (beachte i ≡ 0 (mod 4))


e ⊕ r(i)
 f 

Dann T (w(i − 1)) = 
 g 
h
Der Rundenschlüssel Ki besteht dann aus der 4 × 4-Matrix
(w(4i), w(4i + 1), w(4i + 2), w(4i + 3)), i = 0, 1, . . . 10
Entschlüsselung
Alle einzelnen Transformationen in Rijndael sind invertierbar. Kehre Algorithmus um und ersetze alle Transformationen durch ihre Inverse.
Entschlüsselung ist um ca. 30% langsamer als Verschlüsselung, da die Einträge in der inversen Matrix von MixColumn komplexer sind als die der zur
Verschlüsselung genutzten Matrix.
Sicherheit
Nach zwei Runden hat man vollständige Diffusion: Jedes der 128 Output-Bits
nach Runde 2 hängt von jedem der 128 Klartextblockbits ab. Rijndael ist
gegen alle bekannten kryptoanalytischen Angriffe sicher; insbesondere wurde
ShiftRow eingefügt, um gegen zwei relativ neue kryptoanalytische Angriffe
( truncated differentials“und Square-attack“ – ’Square’ war ein Vorläufer
”
”
von Rijndael) – sicher zu sein.
Alle bekannten Angriffe sind bei mehr als sechs Runden nicht besser als
Brute Force. Die Schlüsselerzeugung mittels ByteSub soll verhindern, dass
bei Kenntnis von Teilen des Schlüssels die übrigen Bits einfach zu ermitteln
84
sind. Außerdem sorgt dies dafür, dass verschiedene Ausgangsschlüssel nie
viele Rundenschlüssel gemeinsam haben.
Schnelligkeit
Rijndael ist deutlich schneller als DES (bei Software-Implementierung). Auf
1 GHz-Rechner sind Verschlüsselungen (abhängig vom C-Compiler) von ca.
200 MBit/sec. möglich (zum Vergleich: DES ca. 80 MBit/sec.). Bei HardwareImplementierung über 1 GBit/sec.
3.7
Betriebsarten von Blockchiffren
Blockchiffren können bei der Verschlüsselung längerer Klartexte in verschiedenen Weisen eingesetzt werden. Wir beschreiben im Folgenden die wichtigsten dieser Betriebsarten (’modes of operation’).
Sei also eine Blockchiffre gegeben, die Klartextblöcke der Länge n über Alphabet A verschlüsselt. Schlüsselmenge K, k ∈ K, so Ek Verschlüsselungsfunktion, Dk Entschlüsselungsfunktion.
Electronic Codebook Mode (ECB Mode)
Beliebig langer Klartext wird in Blöcke der Länge n zerlegt. Ggf. Klartext
ergänzen, dass durch n teilbare Länge n entsteht (z.B. zufällige Zeichen am
Ende, padding). Chiffrierter Text ist dann Folge der chiffrierten Blöcke. (Für
feste Schlüssel könnte man eine Tabelle der Klartext-Chiffretext-Paare anlegen: electronic codebook; daher diese Bezeichnung.)
Probleme:
• Regelmäßigkeiten des Klartextes führen zu Regelmäßigkeiten des chiffrierten Textes. Kann die Kryptoanalyse erleichtern; z.B. wenn Klartextnachrichten immer in der gleichen Weise beginnen (z.B. e-mail).
• Angreifer kann die Nachricht ändern, indem er Chiffretext einfügt, der
mit dem gleichen Schlüssel verschlüsselt worden ist; oder er kann die
Reihenfolge der Chiffretextblöcke ändern.
Man kann die Sicherheit des ECB Mode steigern, wenn Blöcke nur teilweise
aus dem Klartext und teilweise aus zufälligen Zeichen gebildet werden.
85
Cipherblock Chaining Mode (CBC Mode)
Diese Betriebsart wurde erfunden, um einige der Probleme des ECB Mode
zu beseitigen.
Im CBC Mode hängt die Verschlüsselung eines Blocks auch von den vorhergegangenen Blöcken ab (kontextabhängige Verschlüsselung).
Es sei A = {0, 1}.
CBC Mode benötigt festen Initialisierungsvektor IV ∈ {0, 1}n
Verschlüsselung:
Klartextblöcke m1 , . . . mt
Setze c0 = IV , cj = Ek (cj−1 ⊕ mj ).
Chiffretextblöcke c1 , . . . ct
Entschlüsselung:
Gegeben c1 . . . ct
Setze c0 = IV .
Dann mj = cj−1 ⊕ Dk (cj )
Vorteile:
Gleiche Klartextblöcke in unterschiedlichem Kontext werden i.a. verschieden
verschlüsselt. Man erkennt beim Entschlüsseln, ob Chiffretextblöcke geändert
oder in der Reihenfolge verändert worden sind.
Übertragungsfehler in einem Block cj macht sich bei der Entschlüsselung
höchstens bei mj und mj+1 bemerkbar. Selbst bei Verwendung unterschiedlicher Initialisierungsvektoren kann der Empfänger höchstens den ersten Block
nicht korrekt entschlüsseln.
Wie bei ECB besteht auch bei CBC der Nachteil, dass (ohne Verwendung
von padding) stets abgewartet werden muss, bis ein vollständiger Block der
Länge n vorhanden ist, bevor verschlüsselt werden kann. CBC ist also v.a.
bei Verschlüsselungen langer Klartexte gut geeignet.
Cipher Feedback Mode (CFB Mode)
Hier wieder A = {0, 1}.
CFB Mode ist eine stromchiffreähnliche Betriebsart von Blockchiffren, die
eine Verschlüsselung von Klartexten ermöglicht, ohne abwarten zu müssen,
86
bis ein Block der Länge n vorliegt. Dies ist insbesondere bei interaktiver
Computerkommunikation nützlich.
Der Klartext wird in Blöcke p1 , p2 , . . . der Länge r für ein festes r mit
1 ≤ r ≤ n aufgeteilt (typisch: r = 8). Benötigt wird außerdem ein Initialisierungsvektor IV ∈ {0, 1}n .
Setze I1 = IV .
Dann für j = 1, 2, 3, . . .
cj = pj ⊕ Lr (Ek (Ij )) ∈ {0, 1}r
Ij+1 = Rn−r (Ij )|cj ∈ {0, 1}n
Dabei bedeutet Lr (X) die r linksstehenden Bits eines Blocks X der Länge
n, Rn−r (X) die n − r rechtsstehenden Bits von X.
X|Y ist das Hintereinanderschreiben der Strings X und Y .
c1 , c2 , c3 , . . . sind die verschlüsselten p1 , p2 , p3 , . . . .
Entschlüsselung:
I1 = IV
Dann für j = 1, 2, . . .
pj = cj ⊕ Lr (Ek (Ij ))
(keine Entschlüsselung mit Dk !)
Ij+1 = Rn−r (Ij )|cj
(Beachte: cj ⊕ Lr (Ek (Ij )) = pj ⊕ Lr (EK (Ij )) ⊕ Lr (EK (Ij )) = pj )
Man sieht an der Beschreibung, dass der CBC Mode wie eine Stromchiffre
(auf r-Bit Strings) funktioniert, wobei der Schlüsselstrom mittels Blockchiffrierung aus I1 und den vorher verschlüsselten r-Bits erzeugt wird.
CFB Mode ist sehr schnell und kann von Sender und Empfänger fast simultan
ausgeführt werden. Sobald cj vorliegt, kann der Empfänger Ij+1 und dann
Lr (Ek (Ij+1 )) berechnen und dann bei Empfang von cj+1 sofort durch XOR
pj+1 entschlüsseln.
Übertragungsfehler in einem Chiffretextblock wirken sich solange aus, bis der
fehlerhafte Block aus Ij herausgeschoben wurde, d.h. auf die nächsten ⌈ nr ⌉
Blöcke. Beachte: CFB Mode hängt nur von der Geschwindigkeit der Blockverschlüsselung (nicht Entschlüsselung) ab. Bei AES beispielsweise macht
sich also die geringere Entschlüsselungsgeschwindigkeit nicht bemerkbar.
Da Sender und Empfänger nur über die Verschlüsselungsfunktion Ek verfügen
müssen, ist der CFB Mode bei Public-Key-Systemen (siehe später) nicht
anwendbar, denn dort ist Ek als öffentlicher Schlüssel jedem bekannt. CFB
Mode wird häufig im Internet eingesetzt.
87
Output Feedback Mode (OFB Mode)
Wieder A = {0, 1}.
Analog zu CFB, nur wird Ij+1 = Ek (Ij ) gesetzt.
Der Schlüsselstrom Lr (Ek (Ij )) hängt also nur von IV und k ab. Die Verschlüsselung von Klartextblöcken hängt daher nur von der Position und nicht
von den vorhergehenden Klartextblöcken ab. Daher können nach OFB Mode
verschlüsselte Nachrichten leichter manipuliert werden als im CFB Mode.
Vorteil:
Übertragungsfehler in einem cj machen sich bei der Entschlüsselung nur bei
cj und bei keinem anderen Chiffretextblock bemerkbar.
88
4
Stromchiffren und Pseudozufallsfolgen
In Abschnitt 2.1.d hatten wir polyalphabetische Substitutionen, insbesondere
Lauftextverschlüsselungen (z.B. One-Time-Pad) als Beispiele von Stromchiffren kennen gelernt.
Wir wollen jetzt Stromchiffren etwas genauer betrachten. Sie spielten (und
spielen) in militärischen Anwendungen eine große Rolle, werden aber auch
für zivile Zwecke häufig verwendet.
Man unterscheidet zwei Typen: synchrone und selbstsynchronisierende (asynchrone) Stromchiffren.
4.1
Synchrone Stromchiffren
Sie sind dadurch gekennzeichnet, daß der Schlüsselstrom unabhängig von
Klar- und Chiffretext erzeugt wird.
Beschreibung:
Ausgangsschlüssel k
Funktion zur Erzeugung des Schlüsselstroms g(i, k) = ki (i = 0, 1, 2, . . .)
Verschlüsselungsfunktion E: E(ki , mi ) = ci
(verschlüsselt Klartextbit resp. Klartextblock mi mit ki zu Chiffretextbit
resp. Chiffretextblock ci )
Notwendig:
Sender und Empfänger müssen synchronisiert sein. Geht die Sychronisation
verloren (z.B. weil Chiffretextbits während der Übermittlung verloren gehen),
so schlägt die Entschlüsselung fehl (allerdings tritt sehr viel häufiger die
Änderung eines Bits als ein Verlust auf!).
Fehlerfortpflanzung:
Die Änderung eines Chiffretextbits bei der Übertragung hat keine Auswirkungen auf die korrekte Entschlüsselung der folgenden Bits.
Falls Bits durch binäre Addition (XOR) mit Schlüsselbits ki verschlüsselt
werden (d.h. E(ki , mi ) = ki ⊕ mi ), so spricht man von binären additiven
Stromchiffren (Bsp. One-Time-Pad).
(Synchrone Stromchiffren entsprechen ECB bzw. OFB Mode bei Blockchiffren.)
89
4.2
Selbstsynchronisierende (asynchrone) Stromchiffren
Sie sind dadurch gekennzeichnet, dass der Schlüsselstrom als Funktion des
Ausgangsschlüssels und einer festen Zahl vorheriger Chiffretextbits (oder blöcke) erzeugt wird.
Beschreibung:
Ausgangsschlüssel k
z0 = (c−t , c−t+1 , . . . c−1 ) Anfangszustand (nicht geheim)
zi = (ci−t , ci−t+1 , . . . ci−1 )
i≥1
ki = g(k, zi ) Funktion zur Erzeugung des Schlüsselstroms
ci = E(ki , mi ) Verschlüsselungsfunktion
mi = D(ki , ci ) Entschlüsselungsfunktion
zi
c
i-t
c
ki
g
k
c i-1
...
i-t+1
.
E
ci
mi
Abbildung 14: Verschlüsselung
zi
c
i-t
c
c i-1
...
i-t+1
.
ci
k
ki
g
Abbildung 15: Entschlüsselung
90
D
mi
Typische Vertreter selbstsynchronisierender Stromchiffren sind Blockchiffren
im 1-Bit CFB Mode (d.h. r = 1 im CFB Mode; s. Abschnitt 3.7; die Funktion
g wird durch die Blockchiffre realisiert. E ist dann einfach XOR.)
Selbstsynchronisation:
Geht ein Chiffretextbit bei der Übertragung verloren, so synchronisiert sich
das System selber; nur ein Klartextbit geht verloren und t viele werden falsch
entschlüsselt.
Bsp: t = 2
Verschl.:
... m
m
8
9
k =g(k,c ,c ) 
6 7 y·
y8
. . . c8
c9
m10

y·
c///
10
|{z}
geht verloren
...
Entschl.:
c8
c9 c11
k =g(k,c ,c ) 
g(k,c ,c )
6 7 y·
8 9
y8
y
. . . m8
m9 m
e 11
m11 m12 m13



y· y· yk13 =g(k,c11 ,c12 )
c11 c12 c13
c12
g(k,c ,c )
9 11
y
m
e 12
c13
k =g(k,c ,c )
11 12
y 13
m13
Diese Selbstsynchronisation hat aber auch zur Folge, dass Einfügen und Entfernen von Chiffretextbits durch Angreifer schwerer erkannt werden (anders
als bei synchronen Stromchiffren).
Fehlerfortpflanzung:
Wird ein ci bei der Übertragung verändert, so wird nur die Entschlüsselung
der nächsten t Bits ggf. verfälscht, danach wird wieder korrekt entschlüsselt.
(Bei synchronen Stromchiffren wird sofort das nächste Bit wieder korrekt entschlüsselt; daher lassen sich – speziell bei größeren t – absichtliche Änderungen von Chiffretextbits durch einen Angreifer bei selbstsynchronisierenden
Stromchiffren leichter erkennen.)
Sowohl bei synchronen als auch bei selbstsynchronisierenden Stromchiffren ist
die Schlüsselstromerzeugung (beschrieben durch die Funktion g) die entscheidende Komponente. In vielen Systemen spielen bei der Schlüsselstromerzeugung Schieberegister eine wichtige Rolle. Wir geben im Folgenden eine kurze
Beschreibung.
91
4.3
Schieberegister
Def.:
Ein (rückgekoppeltes) Schieberegister (feedback shift register) über dem endlichen Körper F ist eine Maschine, die aus n vielen Verzögerungsgliedern
S0 , . . . Sn−1 (stages) besteht, die einen Input und eine Output besitzen und
ein Element aus F speichern können; einer Uhr, die den Transport der Daten
(= Elemente aus F) kontrolliert; und einer Recheneinheit, die eine fest vorgegebene Funktion f : Fn → F berechnet. n heißt Länge des Schieberegisters.
Recheneinheit
f( a j-1 , a j-2
a
a j-1
j
.
S n-1
, ... , a j-n )
S n-2
a j-n
a j-n+1
a j-2
.
.
S1
S0
.
Output
Verzögerungsglieder
Abbildung 16: Rückgekoppeltes Schieberegister
Während jeder Zeiteinheit werden folgende Operationen durchgeführt:
• Der Inhalt von S0 wird ausgegeben und ist Teil der Output-Folge.
• Der Inhalt von Si wird an Si−1 weitergegeben, i = n − 1, . . . 1.
• Der neue Inhalt von Sn−1 ist aj = f (aj−1 , . . . aj−n ), wobei aj−i der
frühere Inhalt von Sn−i ist, i = 1, . . . n (Rückkopplung).
Zu Beginn enthält jedes Si einen Anfangswert ai , i = 0, . . . n − 1; (a0 , . . . an−1 )
heißt der Anfangszustand des Schieberegisters.
Die Inhalte (aj−n+1 , aj−n+2 , . . . aj ) der Si (im (j − n + 1)-ten Zeittakt)
j = n + 1, n + 2, . . . heißen die Zustände des Schieberegisters.
Also: Inhalt von
Sn−1
Sn−2
0. Zeittakt
an−1
an−2
1. Zeittakt an = f (an−1 , . . . a0 ) an−1
2. Zeittakt an+1 = f (an , . . . a1 ) an
92
...
...
...
...
S1
a1
a2
a3
S0
a0
a1 → Output a0
a2 → Output a1 a0
Die Outputfolge ist also eindeutig bestimmt durch den Anfangszustand
(a0 , . . . an−1 ) und die Rekursionsvorschrift aj = f (aj−1 , . . . aj−n ).
Schieberegister mit n Verzögerungsgliedern sind also nichts anderes als eine
maschinelle Veranschaulichung von Rekursionen (der Ordnung n).
Zu jedem Zeitpunkt befindet sich ein Schieberegister der Länge n in einem
von |F|n vielen möglichen Zuständen.
Daher gibt es Zeitpunkte t1 < t2 , in denen sich das Schieberegister in den
gleichen Zuständen befindet. Dann stimmt die Outputfolge betrachtet ab
Zeitpunkt t1 mit der ab Zeitpunkt t2 überein.
Also:
Die Outputfolge eines Schieberegisters ist ab einem aj0 periodisch mit Periode
p, d.h. ai = ai+p für alle i ≥ j0 .
4.4
Lineare Schieberegister
Def.:
Ist in einem Schieberegister der Länge n die Funktion f von der Form
f (xn−1 , . . . x0 ) = cn−1 xn−1 + . . . + c0 x0 für feste cn−1 , . . . c0 ∈ F, so heißt
das Schieberegister ein lineares Schieberegister (LSR).
(Die cj heißen dann auch Rückkopplungskoeffizienten.)
Es gilt also: aj =
n−1
P
ci aj−n+i
i=0
Im wichtigsten Fall F = F2 lässt sich ein lineares Schieberegister also folgendermaßen darstellen (binäres LSR):
XOR-Gatter
aj
c n-2
c n-1
a j-1
S n-1
.
S n-2
.
c1
a j-2
S1
.
c0
a j-n+1
S0
.a
j-n
Output
AND-Gatter
(sind nur dort
erforderlich,
wo c i =1)
i
Abbildung 17: Binäres lineares Schieberegister der Länge n
93
Bsp.:
f (x3 , x2 , x1 , x0 ) = x2 + x0
Anfangszustand (a0 , a1 , a2 , a3 ) = (1011)
t S3 S2 S1 S0 Output
0 1 1 0 1
1 0 1 1 0
1
2 1 0 1 1
0
3 1 1 0 1
1
← wie Anfangszustand
Output-Folge ist periodisch mit Periode 3: 101101101 . . .
Eigenschaften von linearen Schieberegistern:
1) Bei einem LSR der Länge n gilt:
Ist c0 = 0, so stimmt die Output-Folge (bis auf a0 ) mit der des LSR der
Länge n−1 überein, das gegeben ist durch f (xn−2 , . . . x0 ) = cn−1 xn−2 +
. . . + c1 x0 ) und Anfangszustand (a1 , . . . an−1 ).
Wir nehmen im Folgenden daher stets c0 6= 0. Solche LSR heißen dann
nicht-singulär.
2) Ein (nicht-singuläres) LSR ist periodisch, d.h. es ex. p mit at = at+p für
alle t ≥ 0. Das kleinste solche p heißt Periode des LSR.
[Wähle j minimal mit aj+t = aj+t+p für alle t ≥ 0.
Ang. j > 0. Dann aj−1 6= aj−1+p
Es ist aj−1+n = c0 aj−1 + c1 aj + . . . + cn−1 aj−2+n
und aj −1+n = aj−1+n+p = c0 aj−1+p + c1 aj+p + . . . + cn−1 aj−2+n+p
|{z}
| {z }
|{z}
≥0
aj
aj−2+n
Also c0 aj−1 = c0 aj−1+p und wegen c0 6= 0 dann aj−1 = aj−1+p , Widerspruch.]
3) Kommt unter den Zuständen eines LSR einmal (0, . . . 0) vor, so verbleibt das LSR immer im Zustand (0, . . . 0).
Also nach 2): Ein nicht singuläres LSR der Länge n mit dem Anfangszustand 6= (0, . . . 0) hat eine Periode ≤ |F|n − 1, im binären Fall also
≤ 2n − 1.
4) Man ist interessiert daran, LSR mit möglichst großer Periode zu konstruieren. Wir beschränken uns jetzt auf den binären Fall (der Fall
allgemeiner endlicher Körper ist analog).
94
Es stellt sich heraus, dass es für jedes n binäre LSR gibt, die die Periode
2n − 1 haben. Welche sind das?
Dazu betrachtet man das sog. charakteristische Polynom des binären
LSR:
p(x) = c0 + c1 x + . . . + cn−1 xn−1 + xn
Es gilt:
Satz: Genau dann hat das (nicht singuläre) binäre LSR der Länge n
Periode 2n − 1, wenn sein charakteristisches Polynom primitiv ist.
Was bedeutet Primitivität von p(x)?
Primitiv bedeutet:
1) p(x) ist irreduzibel
2) Im Körper F2n , der durch das irreduzible Polynom p(x) definiert
wird (siehe Seite 76), hat das Element x die Eigenschaft:
2n −1
xr 6= 1 für 1 ≤ r < 2n − 1
|x {z } = 1, |{z}
Potenzen in F2n
(x ist ein erzeugendes Element der zykl. Gruppe F2n \ {0}.)
Das läßt sich in F2 [x] auch so beschreiben:
n
p(x) | x2 −1 − 1 , p(x) ∤ xr − 1 für alle 1 ≤ r < 2n − 1
Es gibt genau
Φ(2n −1)
n
n
viele primitive Polynome über
F2 von Grad n.
[F2n \ {0} hat Φ(2 − 1) viele Erzeugende; mit α bestimmen auch
n−1
α, α2 , α4 , . . . α2
das gleiche primitive Polynom.27 ]
5) Ein binäres LSR der Länge n mit primitivem charakteristischen Polynom erzeugt für jeden Anfangszustand 6= (0, . . . 0) eine periodische
Folge mit Periode 2n − 1. Solche Folgen heißen m-Folgen (m = maximale Periode).
6) m-Folgen haben gute statistische Eigenschaften hinsichtlich der Eigenschaft als Pseudozufallsfolgen zu gelten (dazu später mehr).
Für kryptographische Zwecke sind sie dennoch nicht tauglich. Aus einer
Teilfolge der Länge 2n (deutlich kleiner als die Periode 2n −1) lässt sich
nämlich die gesamte Folge ermitteln.
27
Beweis: z.B. Lidl, Niederreiter: Introduction to Finite Fields and their applications
[25]
95
4.5
Lineare Komplexität und Bestimmung von Schieberegisterfolgen aus Teilfolgen
Ist (a0 , a1 , . . .) eine binäre Folge mit Periode p, so gibt es immer mindestens
ein binäres LSR, das diese Folge erzeugt:
Wähle LSR von Länge p, c0 = 1, c1 = . . . = cp−1 = 0
Anfangszustand (a0 , a1 , . . . ap−1 )
[Im allgemeinen gibt es mehrere: Bsp. von Seite 94: Outputfolge wird auch
erzeugt von LSR der Länge 2 mit f (x1 , x0 ) = x1 + x0 , Anfangszustand
(a0 , a1 ) = (10)]
Man kann zeigen: Ist (a0 , a1 , . . .) eine binäre periodische Folge, so gibt es ein
eindeutig bestimmtes binäres LSR von minimaler Länge n, so dass (a0 , a1 , . . .)
als Outputfolge dieses LSR (mit Anfangszustand (a0 , a1 , . . . an−1 )) auftritt.
Man sagt auch: n ist die lineare Komplexität von (a0 , a1 , . . .).
[Beachte: Erzeugt ein LSR der Länge n eine Folge der Periode 2n − 1, so hat
die Folge lineare Komplexität n.]
Dieses binäre LSR minimaler Länge lässt sich folgendermaßen beschreiben:
Hat (a0 , a1 , . . .) Periode p, so setze
a(x) = a0 + a1 x + . . . + ap−1 xp−1
und
q(x) =
xp + 1
ggT(a(x), xp + 1)
Ist Grad q(x) = n, so ist p(x) = xn q( x1 ) (das reziproke Polynom von q) das
charakteristische Polynom des LSR von minimaler Länge (= Grad p(x) = n),
das (a0 , a1 , . . .) erzeugt.28
Es gilt nun:
Satz:
Sei (a0 , a1 , . . .) eine periodische binäre Folge der linearen Komplexität n.
Dann sind n aufeinanderfolgende ‘Zustandsvektoren’ der Länge n
(am , am+1 , . . . am+n−1 ), . . . , (am+n−1 , am+n , . . . am+2n−2 )
28
Literatur z.B. H. Beker, F. Pieper, Cipher Systems, Northwood Books, 1982
96
(m ∈ N0 beliebig) linear unabhängig.
Beweis:
Für t ≥ 0 sei vt = (at , at+1 , . . . , at+n−1 ).
Ist p(x) = c0 + c1 x + . . . + cn−1 xn−1 + xn das charakteristische Polynom des
LSR kürzester Länge n, das (a0 , a1 , . . .) erzeugt, so setze

0

1

C=
0
.
 ..
0
0
..
.
..
.
0
1
0
0 0
...
co
c1
..
.
..
.
0
1 cn−1








Det C = c0 . Klar: c0 = 1.
Dann vt+1 = vt C für alle t.
Genau dann sind vm , . . . vm+n−1 linear unabhängig,
wenn v0 = vm C −m , . . . vn−1 = vm+n−1 C −m linear unabhängig sind.
Ang. v0 , . . . vn−1 sind linear abhängig. Wähle t ≤ n − 1 minimal mit v0 , . . . vt
linear abhängig.
Dann existiert d0 , . . . dt ∈ F2 mit d0 v0 + . . . + dt vt = 0, dt = 1.
Also: vt =
t−i
P
dj vj
j=0
Dann gilt für alle i ≥ 0 : vt+i = vt C i =
Daher: at+i =
t−i
P
j=0
t−i
P
j=0
dj vj C i =
t−i
P
dj vj+i
j=0
dj aj+i für alle i ≥ 0 (1. Komponente betrachten).
Also wird (a0 , a1 , . . .) von einem LSR der Länge t ≤ n − 1 erzeugt, Widerspruch, q.e.d.
Sei nun (a0 , a1 , . . .) eine binäre periodische Folge der linearen Komplexität
n. (Beachte: Die Periode kann dann maximal 2n − 1 betragen.)
Bekannt seien ar , ar+1 , . . . ar+2n−1 .
Man möchte die Rückkopplungskoeffizienten c0 , . . . cn−1 des minimalen LSR
bestimmen , das (a0 , a1 , . . .) erzeugt.
97
Es gilt: at+n =
n−1
P
i=0
ci at+i , t = r, r + 1, . . . r + n − 1, d.h.
(*) (ar+n , . . . ar+2n−1 ) = (c0 , . . . cn−1 ) · A mit

ar
ar+1
..
.
...
...

ar+n−1
ar+n 

.. 
. 


A=

ar+n−1 . . . ar+2n−2
Die linke Seite und die Matrix A sind bekannt. Man kann daher (*) als
lineares Gleichungssystem für c0 , . . . cn−1 betrachten. Nach dem vorigen Satz
sind die Spalten von A linear unabhängig, d.h. A ist invertierbar.
Damit lässt sich (c0 , . . . cn−1 ) = (ar+n , . . . ar+2n−1 ) · A−1 bestimmen.
Es bleibt allerdings folgendes Problem:
Wenn der Angreifer ein Teilstück der Schieberegisterfolge kennt, so kann er
i.a. nicht wissen, ob dieses Teilstück mindestens Länge 2n, n lineare Komplexität der Schieberegisterfolge, hat oder nicht. Und selbst wenn das Teilstück
mindestens Länge 2n besitzt, so kennt er zunächst einmal n nicht. Hierfür
gibt es jedoch eine Lösung:
Man kann auch für endliche Bitfolgen (a0 , . . . ar ) den Begriff der linearen
Komplexität definieren: Dies ist die kleinste Länge eines LSR, dessen OutputFolge mit (a0 , . . . ar ) beginnt. Es gibt einen Algorithmus von Berlekamp und
Massey, der zu gegebener Bitfolge (a0 , . . . ar ) deren lineare Komplexität mit
O(r2 ) Bit-Operationen bestimmt. Ist also r ≥ 2n, so ist (nach obigem Verfahren) n auch die lineare Komplexität der gesamten Schieberegisterfolge und
das minimale LSR kann bestimmt werden.29
4.6
Schieberegister zur Schlüsselstromerzeugung
Wir hatten in Unterkapitel 4.5 gesehen, dass LSR zur Erzeugung von Schlüsselströmen kaum geeignet sind. Dies ist insbesondere bei additiven binären
Stromchiffren der Fall, wo Mallory bei einer Known-Plaintext-Attack bei
genügend langem Klartext (Länge ≥ 2·lineare Komplexität der Schieberegisterfolge) durch mi ⊕ ci (m1 , m2 , . . . Klartextfolge, c1 , c2 , . . .zugehörige Chiffretextfolge) einen Teil des Schlüsselstroms ermitteln kann, der ausreicht, um
29
Literatur: Lidl, Niederreiter [25]
98
mit den am Ende von 4.5 beschriebenen Methoden das (minimale) LSR für
den gesamten Schlüsselstrom zu ermitteln.
Statt LSR könnte man Schieberegister mit einer nicht-linearen Rückkopplungsfunktion f verwenden. Solche nicht-lineare Schieberegister sind aber
bis auf Ausnahmefälle mathematisch nur schwer, wenn überhaupt, zu analysieren, so dass dieser Weg kaum beschritten wird.
Stattdessen werden in der Praxis folgende Möglichkeiten (und Variationen
hiervon) verwendet:
• Nichtlineare Kombination von linearen Schieberegistern
LSR 1
LSR 2
f
Schlüsselstrom
LSR
Abbildung 18: Nichtlineare Kombination von linearen Schieberegistern
f ist nicht-lineare Funktion
Zk2 → Z2
f muss allerdings sorgfältig gewählt werden, um das System gegen sogenannte Korrelationsangriffe sicher zu machen. Diese bestehen darin, Zusammenhänge (Korrelationen) zwischen dem Schlüsselstrom und
den Outputfolgen einzelner LSR zu ermitteln (statistische Methoden).
Die lineare Komplexität einer solchen nicht-linearen Kombination kann
sehr groß gemacht werden.
• Nichtlineare Filtergeneratoren
f erzeugt aus den Zuständen des LSR den Schlüsselstrom, ist also eine
nicht-lineare Funktion f : Zn2 → Z2 . (siehe Abbildung 19)
99
a j = c 0 a j-n + ... + c n-1 aj-1
LSR:
aj
a j-1
S n-1
a j-2
a j-n
a j-n+1
S1
S n-2
S0
f
Schlüsselstrom
Abbildung 19: Nichtlineare Filtergeneratoren
• Takt-gesteuerte Generatoren
In den beiden bisher genannten Ansätzen sind alle Systemkomponenten
gleich getaktet. Takt-gesteuerte Generatoren erzeugen Nichtlinearität
auf folgende Weise: Der Output eines LSR bestimmt den Takt eines
anderen LSR.
Wir beschreiben ein Beispiel, den alternierenden Stop-and-Go-Generator:
3 LSR unterschiedlicher Länge
LSR 2 wird getaktet, wenn LSR 1 Output 1 liefert.
LSR 3 wird getaktet, wenn LSR 1 Output 0 liefert.
Ausgabe des Generators ist XOR-Verknüpfung von LSR 2 und LSR 3:
LSR 2
Uhr (Taktgeber)
.
LSR 1
Output
NOT Gatter
LSR 3
AND Gatter
Abbildung 20: Stop-and-Go-Generator
Dieser Typ von Generatoren ist gegen Korrelationsangriffe relativ sicher
und hat i.d.R. große Periode und große lineare Komplexität.
100
4.7
Andere Stromchiffren
Es gibt eine Vielzahl von Stromchiffren, die nicht auf Schieberegistern beruhen, z.B. A5 (Verschlüsselung von Verbindungen zwischen Handy und Basisstation bei GSM-Standard), SEAL (Software-optimized Encryption Algorithm, entwickelt von IBM im Jahr 1993) oder RC 4.
Wir beschreiben RC 4 etwas genauer:
Entwickelt 1987 von Ron Rivest, bis 1994 geheimgehalten (dann von unbekanntem Urheber im Internet veröffentlicht).
Ausgangsschlüssel (Schlüssellänge variabel). Dieser bestimmt eine Permutation S0 , . . . , S255 der Zahlen 0, . . . , 255 (dargestellt als Bytes), die gleich
beschrieben wird.
Die durch den Schlüssel erzeugte Anfangsfolge S0 , . . . , S255 (seed) wird mit
folgender Fortschaltfunktion bearbeitet:
Initialisierung: i := 0; j := 0. Wiederhole:
i := i + 1
i0 := i mod 256
j := (j + Si0 ) mod 256
vertausche Si0 und Sj
t := (Si0 + Sj ) mod 256
ki := St
Das Byte ki wird mit dem i-ten Byte des Klartextes XOR- verknüpft.
Erzeugung von S0 , . . . S255 aus dem Ausgangsschlüssel:
Initialisiere Si := i
Schreibe Schlüssel byteweise als Zahlenfolge b0 , b1 , . . . b255 . Ist der Schlüssel
kleiner als 8×256 = 2048 Bit, so wird er mehrfach hintereinander geschrieben.
Danach: j := 0
Für i = 0 bis 255:
j := j + Si + bi mod 256
Vertausche Si und Sj .
RC 4 ist einfach und sehr schnell. Kryptoanalytische Schwächen sind nicht
bekannt (bei ausreichend langer Schlüssellänge, z.B. 128 oder 256 Bit).30
30
Einzelheiten zu den o.g. Stromchiffren und anderen: B. Schneier, Angewandte Kryptographie [29]
101
4.8
Pseudozufallsfolgen
Wie beschränken uns im Folgenden auf binäre Folgen, also Folgen von Bits.
Für Stromchiffren (aber auch in anderen kryptologischen Zusammenhängen)
werden häufig ‘Zufallsfolgen’ von Bits benötigt.
Frage: Was versteht man unter einer Zufallsfolge?
Eine Zufallsfolge stellt man sich vor als Folge von Werten unabhängiger,
gleich verteilter Boolescher Zufallsvariablen, d.h. als Output einer Quelle,
die mit gleicher Wahrscheinlichkeit Bits 0 und 1 unabhängig von den schon
erzeugten Bits ausgibt (binäre symmetrische Quelle).
Dann sind aber zwei Bitfolgen gleicher (endl.) Länge gleich wahrscheinlich.
Da wir es stets nur mit endlichen Folgen zu tun haben, legt dieser Befund
nahe, dass man den Begriff endlicher Zufallsfolgen nicht sinnvoll definieren
kann.
Andererseits folgt aus dem Gesetz der großen Zahl, dass bei genügend langen
Folgen, die von einer binären symmetrischen Quelle erzeugt werden, z.B.
annähernd gleich viele Einsen und Nullen vorkommen oder dass die Paare
00, 01, 10, 11 annähernd gleich oft auftreten, etc. Dementsprechend würde
man 00 . . . 0 oder 0101 . . . 01 nicht als Zufallsfolgen bezeichnen.
Ein anderer Punkt ist außerdem von Bedeutung:
In aller Regel werden ‘Zufallsfolgen’ algorithmisch erzeugt (vgl. Schieberegisterfolgen). Was immer man auch unter ‘Zufall’ versteht, eine deterministische Erzeugung wird man nicht als zufällig ansehen. Aus diesem Grund
spricht man in diesem Fall von Pseudozufallsfolgen. Es bleibt aber die Frage,
was man unter Pseudozufallsfolgen verstehen soll.
4.8.a
Die Golomb-Postulate
Einer der ersten Versuche, notwendige Bedingungen für Pseudozufallsfolgen
anzugeben, stammt von S.W. Golomb (1967). Er postulierte drei Bedingungen, die von einer Folge erfüllt sein müssen, damit sie als Pseudozufallsfolge
angesehen werden kann.
Diese Bedingungen spiegeln statistische Eigenschaften wider, die eine genügend
lange Folge, welche von einer binären symmetrischen Quelle erzeugt wird, mit
großer Wahrscheinlichkeit erfüllt (nach dem Gesetz der großen Zahl).
102
Diese sog. Golomb-Postulate sind heute eher von historischem Interesse; sie
sind dennoch instruktiv und sollen hier daher kurz dargestellt werden.
Golomb betrachtet periodische Folgen (wie sie z.B. von Schieberegistern erzeugt werden) und untersucht die ‘Zufälligkeit’ einer Periode.
Sei also s = s0 s1 s2 . . . eine unendliche Bitfolge mit Periode p.
Wir benötigen zur Formulierung der Golomb-Postulate einige Begriffe:
• Ein run ist eine Folge si si+1 . . . sk aufeinanderfolgender Elemente der
Folge, die alle gleich sind, si−1 6= si (falls i > 0) und sk 6= sk+1 . Die
Anzahl k − i + 1 der Elemente des runs heißt Länge des runs. Runs aus
Einsen heißen Blöcke (blocks), runs aus Nullen heißen Lücken (gaps).
Bsp.: 0111001
Lücke der Länge 1, gefolgt von Block der Länge 3, gefolgt von Lücke
der Länge 2
• Sei 0 ≤ t < p
Vergleiche die ersten p Terme von s0 s1 . . . sp−1 mit den ersten p Termen
der um t Positionen verschobenen Folge st st+1 . . . st+p−1 .
Sei At die Anzahl der Positionen, an denen diese beiden Folgen übereinstimmen, und Dt = p − At die Anzahl der Positionen, wo sie nicht
übereinstimmen.
Also: At − Dt =
p−1
P
(−1)si +si+t
i=0
Die Autokorrelationsfunktion C(t) ist definiert durch
C(t) =
At − Dt
p
Ist t = 0, so C(0) = 1. Ansonsten: −1 ≤ C(t) < 1.
Je größer C(t), desto größer die Übereinstimmung der Periode der Ausgangsfolge mit der verschobenen; je kleiner, desto geringer.
Bsp.:
10110
01101
11010
10101
01011
C(1) = − 53
C(2) = − 51
C(3) = 51
C(4) = − 53
103
Golomb-Postulate
(R1) In s0 , . . . sp−1 gilt: |Anzahl Nullen − Anzahl Einsen| ≤ 1
(d.h. = 0, falls p gerade; = 1, falls p ungerade)
(R2) In s0 , . . . sp−1 gilt:
Hälfte der runs hat Länge 1
Viertel der runs hat Länge 2
..
.
Der
1
-te
2i
Teil der runs hat Länge i (solange es mind. 2i viele runs gibt)
Ferner: Für jede dieser Längen gibt es gleich viele Blöcke wie Lücken (±1).
(R3) Die Autokorrelationsfunktion ist konstant für t 6= 0, d.h. C(t) = C(t′ )
für alle 0 < t, t′ < p.
Bedeutung der Golomb-Postulate:
(R1) Beschreibt Gleichverteilung von Nullen und Einsen.
(R2) Nach einer ununterbrochenen Folge von Nullen oder von Einsen (der
Länge i) ist die Wahrscheinlichkeit 50 %, dass die Folge mit 0 (bzw. 1)
fortgesetzt wird.
(R3) Beschreibt Unabhängigkeit der Folgenglieder. [Tatsächlich wird man
erwarten, dass At und Dt etwa gleich groß sind, C(t) also klein ist.]
Periodische Folgen, die die Golomb-Postulate erfüllen, werden pn-Folgen
(pseudo noise) genannt.
Man kann zeigen:
m-Folgen (d.h. Schieberegisterfolgen der Periode 2n − 1, die von LSR der
Länge n erzeugt werden) erfüllen die Golomb-Postulate, wobei die Autokorrelationsfunktion den Wert C(t) = 2n−1
für 0 < t < 2n − 1 hat.31
−1
Damit ergibt sich:
m-Folgen sind, jedenfalls nach den Golomb-Postulaten, gute Pseudozufallsfolgen, nach den Ergebnissen von Kapitel 4.5 aber kryptologisch untauglich.
31
Beweis: s. Beker, Piper, Cipher Systems [6]
104
4.8.b
Statistische Tests
Die Golomb-Postulate werden heute kaum für Pseudozufallsfolgentests verwendet. Zum einen sind die Forderungen an die Anzahlen der Nullen und Einsen bzw. der runs und die Autokorrelationsfunktion zu rigide; eine Folge, die
(R1),(R2),(R3) erfüllt, ist hinsichtlich der dadurch getesteten Gleichverteilungs- und Unabhängigkeitsbedingungen schon fast zu ‘perfekt zufällig’. Zum
anderen gibt es weitere Eigenschaften, die man von Pseudozufallsfolgen erwarten würde, die durch (R1),(R2),(R3) nicht abgedeckt werden.
Aus diesen Gründen werden häufig Verfahren der statistischen Testtheorie
angewandt, um Folgen auf ‘Zufälligkeit’ zu testen.
Wie geschieht dies?
Wir betrachten 0-1-Folgen der Länge n. Eine binäre symmetrische Quelle
erzeugt jede 0-1-Folge der Länge n mit gleicher Wahrscheinlichkeit ( 21 )n . Wir
betrachten also den Wahrscheinlichkeitsraum Ωn der 0-1-Folgen der Länge
n mit der Gleichverteilung. Auf Ωn untersuchen wir Zufallsvariablen (d.h.
Funktionen X : Ωn → R) und betrachten deren Verteilung auf Ωn .
Z.B. Zufallsvariable X : Anzahl der Einsen in einer Folge.
X ist binomialverteilt.
Bsp.: n = 6
Wert von X Anzahl der Folgen =
0
1
1
6
2
15
20
3
4
15
5
6
6
1
n
i
105
p(X = i) = ni · ( 12 )n
0, 016
0, 094
0, 234
0, 313
0, 234
0, 094
0, 016
p(X = 3) ≈ 0, 31
p(2 ≤ X ≤ 4) ≈ 0, 78
p(1 ≤ X ≤ 5) ≈ 0, 97
Abbildung 21: Wahrscheinlichkeitsfunktion p(X = i)
der binomialverteilten Zufallsgröße X für n = 6
Wenn wir jetzt eine gegebene 0-1-Folge auf Pseudozufälligkeit testen, könnte
ein Test darin bestehen, ob die Anzahl der Einsen untypisch für eine zufällig
gewählte 0-1-Folge ist.
Sollte unsere Folge nur aus Nullen bestehen, so ist die Wahrscheinlichkeit nur
1,5%, dass eine zufällig gewählte 0-1-Folge diese Eigenschaft hat. Dann wird
man wohl sagen, dass sie den Test auf Pseudozufälligkeit nicht bestanden hat.
Anders ausgedrückt: Die Wahrscheinlichkeit, dass wir diese Folge als nichtzufällig abgelehnt haben, obwohl sie tatsächlich von einer binären Quelle
erzeugt worden ist, beträgt 1,5%.
Bleiben wir bei der binomialverteilten Zufallvariablen ‘Anzahl der Einsen’. In
der Testtheorie geht man nun so vor, dass man eine Wahrscheinlichkeit α (das
Signifikanzniveau des Tests) festlegt (z.B. α = 5%) und in der Dichtefunktion der Binomialverteilung links und rechts jeweils den Bereich markiert, in
den ein Anteil von α2 aller 0-1-Folgen fallen. Dies ist der sog. Ablehnungsbereich: Fällt eine zu testende 0-1-Folge in diesen Bereich, so lehnen wir sie als
‘Pseudozufallsfolge’ ab (und nehmen dabei einen Fehler von α – hier 5% –
in Kauf, dass es sich doch um eine durch eine binäre symmetrische Quelle
erzeugte Folge gehandelt hat).
α = 5%:
n = 6: Ablehnungsbereich: n1 = 0 oder n1 = 6
106
(n1 = # der Einsen)
n = 20: Ablehnungsbereich: 0 ≤ n1 ≤ 5 oder 15 ≤ n1 ≤ 20
Abbildung 22: Ablehnungsbereich einer binären 0-1-Folge der Länge 20 hinsichtlich der Zufallsvariablen Anzahl der Einsen“
”
(Test: Nullhypothese H0 : ‘Folge ist zufällig’ wird auf Signifikanzniveau α
abgelehnt.)
Die Berechnung der Binomialverteilung wird für große n immer beschwerlicher. Man kann dies umgehen, indem man die Binomialverteilung für große
n durch eine Normalverteilung approximiert.
Tatsächlich verwendet man beim Test bzgl. der Häufigkeit von Einsen eine
andere Zufallsvariable:
n0 = # der Nullen
(n0 − n1 )2
X1 =
n
n1 = # der Einsen
n = n0 + n1
Es ist klar, dass bei grossen n die meisten 0-1-Folgen kleine X1 -Werte haben.
Große X1 -Werte sind unwahrscheinlich.
Der Vorteil der Verwendung der obigen Zufallsvariablen (oder Statistik) X1
liegt darin, dass sich X1 für große n durch eine stetige Verteilungsfunktion
gut approximieren lässt, die sog. χ2 -Verteilung mit 1 Freiheitsgrad ; diese ist
unabhängig von n.
107
Beim Test einer 0-1-Folge auf Pseudozufälligkeit bzgl. der Anzahl der Einsen
berechnet man deren X1 -Wert und vergleicht diesen mit dem Wert, der bei
geg. α in Tabellen der χ2 -Verteilung als Ablehnungsschwelle Vα angegeben
ist; ist der Wert von X1 größer als Vα , so wird die 0-1-Folge als nicht-zufällig
abgelehnt. (Einseitiger Test)
Für α = 5% beträgt Vα = 3, 84.
n= 6:
n = 20 :
n0
0
1
2
3
4
5
6
X1 > 3, 84 ⇔ n0 = 0 oder n0 = 6
X1 > 3, 84 ⇔ 0 ≤ n1 ≤ 5 oder 15 ≤ n1 ≤ 20
(15−5)2
(14−6)2
=
5,
=
3,
2
20
20
X1
6
2, 66
0, 66
0
0, 66
2, 66
6
Abbildung 23: Wahrscheinlichkeitsfunktion der Zufallsvariablen X1 für n = 6
und n = 20
108
Wir halten fest:
Im Gegensatz zu den Golomb-Postulaten, wo eine 0-1-Folge der Periode p
dann als Pseudozufallsfolge akzeptiert wird, wenn z.B. die Anzahl der Einsen innerhalb der Periode genau dem Erwartungswert der entsprechenden
Zufallsvariablen auf Ωp entspricht, wird bei dem beschriebenen Test eine
Folge nur dann abgelehnt, wenn ihre Anzahl von Einsen extrem vom Erwartungswert abweicht.
Um eine 0-1-Folge als Pseudozufallsfolge zu akzeptieren, werden daher in der
Praxis mehrere Tests bzgl. anderer Eigenschaften durchgeführt.
Z.B.:
• Untersuchung der Verteilung der Paare 00, 01, 10, 11 innerhalb der
Folge (2-Bit-Test). Als Teststatistik wird hier
X2 =
4
2
(n200 + n201 + n210 + n211 ) − (n20 + n21 ) + 1
n−1
n
verwendet, die für große n durch eine X 2 -Verteilung mit zwei Freiheitsgraden approximiert wird.
• Untersuchung der Anzahlen der runs
• Autokorrelationstests,
etc.32
Dabei ist es natürlich relativ willkürlich, welche Eigenschaften man testet.
Eine Folge kann viele Tests bestehen, einen weiteren vielleicht nicht. Auf
diese Weise bleibt eine Unsicherheit hinsichtlich der Frage, wann man von
einer Pseudozufallsfolge sprechen kann.
Eine letzte Bemerkung:
In der Regel testet man nicht eine Folge, sondern einen Algorithmus (Generator), der 0-1-Folgen produziert. Wendet man daher statistische Tests an,
so sollte man überprüfen, ob sich der Algorithmus ähnlich wie eine binäre
symmetrische Quelle verhält. D.h. auch, dass man mehrere von diesem Algorithmus produzierten Folgen auf Pseudozufälligkeit testen sollte.
32
Einzelheiten z.B.: Knuth, The Art of Computer Programming, Vol. 2 Chap. 3 [22]
oder Menezes, van Oorschot, Vanstone, Handbook of Applied Cryptography [26]
109
4.8.c
Kolmogorov-Komplexität
Eine andere Möglichkeit, Zufälligkeit einer endlichen Folge zu definieren, wurde von Solomonov (1964), Kolmogorov (1965) und Chaitin (1966, 1969) eingeführt und beruht auf der Berechenbarkeitstheorie.
Die Kolmogorov-Komplexität einer 0-1-Folge ist die Länge eines kürzesten
Programms für eine fest vorgegebene universelle Maschine, die gegebene Folge zu erzeugen.
Eine 0-1-Folge heißt dann (Kolmogorov-) zufällig, falls das kürzeste Programm in etwa dieselbe Länge wie die Folge hat (d.h. die Folge einzulesen
und auszugeben).33
Obwohl theoretisch interessant, ist dieser Zugang praktisch von geringer Bedeutung, da die Kolmogorov-Komplexität eine praktisch nicht zu berechnende Funktion ist.
4.8.d
Kryptographisch sichere Pseudozufallsfolgen
Der hier vorzustellende Ansatz, Pseudozufälligkeit in einer für die Kryptologie geeigneten Weise zu definieren, hat seine Wurzeln in der Komplexitätstheorie; er wurde in Arbeiten von Goldwasser/Micali, Blum/Micali und Yao
im Jahr 1982 begründet.
Grundidee: Die von einem 0-1-Folgen-Generator erzeugte Verteilung von 01-Folgen wird als pseudozufällig angesehen, wenn sie sich von der Gleichverteilung nicht durch einen effizienten Algorithmus unterscheiden lässt.
Effiziente Algorithmen sind Algorithmen, die polynomiale Zeitkomplexität
haben. Neben deterministischen polynomialen Algorithmen betrachten wir
auch probabilistische Algorithmen mit polynomialer Zeitkomplexität.
Probabilistische Algorithmen können bei gegebenem Input während der Berechnung des Outputs endlich oft Zufallswahlen (Münzwurf) ausführen, so
dass der nächste Schritt des Algorithmus vom Ausgang dieses Zufallsexperiments abhängt. Daher: Bei gleichem Input kann ein probabilistischer Algorithmus verschiedene Outputs liefern.
33
Vgl. dazu den ähnlichen Begriff der linearen Komplexität aus Kapitel 4.5; im Kolmogorov’schen Sinne sind also m-Folgen (die per Definition eine sehr kleine lineare Komplexität
haben) besonders nicht-zufällig.
110
Probabilistische Algorithmen mit polynomialer Zeitkomplexität sind solche,
für die die Anzahl der Schritte (jeder Münzwurf zählt als ein Schritt) durch
ein Polynom in der Länge des Inputs beschränkt ist.
Wir benötigen jetzt noch einige wahrscheinlichkeitstheoretische Bezeichnungsweisen.
Ist p eine Wahrscheinlichkeitsverteilung auf {0, 1}n , dem Raum der 0-1p
Folgen der Länge n, so bedeutet x ← {0, 1}n , dass Elemente x ∈ {0, 1}n
zufällig bezüglich der Wahrscheinlichkeitsverteilung p ausgewählt werden.
{0, 1}n mit der Gleichverteilung (p(x) = ( 21 )n ) bezeichnen wir mit Ωn und
schreiben x ← Ωn , wenn Elemente x zufällig und mit gleicher Wahrscheinlichkeit aus {0, 1}n ausgewählt werden.
Ist B: {0, 1}n → {0, 1}, p eine Wahrscheinlichkeitsverteilung auf {0, 1}n , so
schreiben wir
P
p
pr(B(x) = 1| x ← {0, 1}n ) für p({x ∈ {0, 1}n | B(x) = 1}) =
p(x).
x∈{0,1}n
B(x)=1
Also: pr(B(x) = 1| x ← Ωn ) =
|{x∈{0,1}n | B(x)=1}|
2n
Wir haben auch den Fall zu betrachten, dass B keine Funktion (bei uns
immer beschrieben durch einen deterministischen Algorithmus) sondern ein
probabilistischer Algorithmus ist.
P
p
In diesem Fall steht pr(B(x) = 1| x ← {0, 1}n ) für
p(x)·pr(B(x) = 1),
x∈{0,1}n
wobei pr(B(x) = 1) die Wahrscheinlichkeit angibt, dass B bei Input x den
Wert 1 ausgibt. Diese Wahrscheinlichkeit ist über die Gleichverteilung der
Zufallswahlen in B gegeben.
Hierzu ein Bemerkung: Bei gegebenem x kann die Anzahl der Zufallswahlen vom Ausgang vorheriger Zufallswahlen abhängen. Sie ist aber in jedem
Fall durch eine Konstante tx beschränkt. Indem ggf. Zufallswahlen zusätzlich
durchgeführt werden, die keinen Einfluss auf den Ablauf des Algorithmus
haben, wird die Gleichverteilung auf {0, 1}tx betrachtet.
Definition:
Ein kryptographisch sicherer Pseudozufallsfolgen-Generator ist ein deterministischer Algorithmus G mit einer Erweiterungsfunktion l : N → N (d.h.
l(n) > n für alle n), wobei für jedes n ∈ N gilt:
G : {0, 1}n → {0, 1}l(n) .
111
Dabei soll Folgendes gelten:
Für jeden probabilistischen polynomialen Algorithmus D, der für jede endliche 0-1-Folge als Input den Wert 0 oder 1 ausgibt, und jedes positive Polynom
P ∈ Z[x] (d.h. P (a) > 0, falls a > 0) gilt für genügend große n:
|pr(D(G(x)) = 1| x ← Ωn ) − pr(D(z) = 1| z ← Ωl(n) )| <
1
P (n)
Bedeutung:
• Der Pseudozufallsfolgen-Generator, beschrieben durch den deterministischen Algorithmus G, soll effizient sein, d.h. G ist polynomialer Algorithmus.
• Die Erweiterungsfunktion l beschreibt, dass der Algorithmus G aus 01-Folgen der Länge n (den ‘seeds’) 0-1-Folgen der (größeren) Länge l(n)
produziert. Beachte: l(n) ist polynomial beschränkt, da G deterministischer polynomialer Algorithmus.
• Ein Angreifer kann bei Einsatz eines beliebigen probabilistischen polynomialen Algorithmus D die von G erzeugte Verteilung G(Ωn ) auf
{0, 1}l(n) (bis auf einen vernachlässigbaren Rest) nicht von der Gleichverteilung auf {0, 1}l(n) , also Ωl(n) , unterscheiden.
Beachte: Natürlich sind G(Ωn ) und Ωl(n) Wahrscheinlichkeitsräume mit
unterschiedlicher Verteilung, denn G, als deterministischer Algorithmus, produziert aus den 2n vielen 0-1-Folgen in Ωn nur 2n viele 0-1Folgen der Länge l(n). Also haben 2l(n) − 2n viele 0-1-Folgen der Länge
l(n) unter der durch G erzeugten Wahrscheinlichkeitsverteilung Wahrscheinlichkeit 0. Dieser Unterschied lässt sich entsprechend der Def. mit
beschränkten Ressourcen (d.h. probabilistischem polynomialem Algorithmus) nicht (d.h. in nicht vernachlässigbarer Weise) aufklären. Mit
größerem Aufwand allerdings schon. Das wird als kryptologisch nicht
relevant angesehen.
• Die Algorithmen D können als statistische Tests aufgefasst werden,
die die Gleichverteilung auf Ωl(n) und die durch G(Ωn ) erzeugte Verteilung zu unterscheiden versuchen (falls sie als probabilistische Algorithmen mit polynomialer Laufzeit implementiert werden können; z.B.
X 2 -Tests).
112
• Die Bedingung für den vernachlässigbaren Rest ‘|pr(. . .) − pr(. . .)|
1
< P (n)
’ impliziert, dass diese Bedingung erhalten bleibt, wenn Unterscheidungsversuche mit D mit ‘vertretbarem’ Aufwand (d.h. polynomial oft) wiederholt werden.
Kryptographisch sichere Pseudozufallsfolgen-Generatoren im obigen Sinne
können auch auf andere Weise charakterisiert werden.
Sei dazu G ein deterministischer polynomialer Algorithmus mit Erweiterungsfunktion l : N → N , der aus 0-1-Folgen der Länge n 0-1-Folgen der
Länge l(n) erzeugt.
Für eine 0-1-Folge x, sei G(x)i das i-te Bit der 0-1-Folge G(x).
Definition:
G besteht alle next-bit-Tests, falls für jeden probabilistischen polynomialen
Algorithmus A, der für jede endliche 0-1-Folge als Input den Wert 0 oder 1
ausgibt, und jedes positive Polynom P ∈ Z[x] für alle genügend großen n
gilt:
pr(A(G(x)1 G(x)2 . . . G(x)i ) = G(x)i+1 |x ← Ωn ) ≤
1
1
+
2 P (n)
für alle 0 ≤ i < l(n).
Bedeutung:
• Der Algorithmus A versucht aus der Kenntnis der ersten i Bits der
Folge G(x) das (i + 1)-te Bit von G(x) vorauszusagen.
∧
• G besteht alle next-bit-Tests, wenn mit vertretbarem Aufwand (= polynomialem probabilistischem Algorithmus) das nächste Bit i.w. nicht
besser bestimmt werden kann als durch Münzwurf (Wahrscheinlichkeit
1
).
2
113
Satz (Yao, 1982)
Genau dann ist G ein krytographisch sicherer Pseudozufallsfolgen-Generator,
wenn G alle next-bit-Tests besteht.
Beweisidee:
=⇒ :
Wenn G nicht alle next-bit-Tests besteht, so gibt es einen probabilistischen
Algorithmus A, ein positives Polynom Q und eine unendliche Teilmenge K
von N, so dass A für jedes n ∈ K für jeweils eine Position in < l(n) aus der
Kenntnis von G(x)1 , . . . G(x)in das nächste Bit G(x)in +1 mit Wahrscheinlich1
keit > 12 + Q(n)
voraussagen kann. Bei zufälliger Wahl einer Folge aus Ωl(n)
lässt sich deren (in + 1)-tes Bit aber nicht mit Wahrscheinlichkeit > 21 voraussagen.
Definiere einen probabilistischen
polynomialen Algorithmus D durch
1, falls A(z1 , . . . zin ) = zin +1
D(z1 , . . . zl(n) ) =
0, sonst
für (z1 , . . . zl(n) ) ∈ {0, 1}l(n) , n ∈ K. (Für alle übrigen Längen von {0, 1}Folgen kann man z.B. D(z1 , . . . zm ) = 0 definieren.)
Dann ist anschaulich klar (und kann mit etwas Rechnung auch präzise nachgewiesen werden), dass mit diesem D die Bedingung eines kryptographisch
sicheren Pseudozufallsfolgen-Generators verletzt ist.
⇐= :
Ang., G ist kein kryptographisch sicherer Pseudozufallsfolgen-Generator. Dann
existiert ein probabilistischer polynomialer Algorithmus D, ein positives Polynom Q(x) und eine unendliche Teilmenge K von N, so dass
1
| pr(D(G(x)) = 1 | x ←− Ωn ) − pr(D(z)) = 1 | z ←− Ωl(n) | ≥ Q(n)
für
alle n ∈ K.
Sei pi die Gleichverteilung auf {0, 1}i , d.h. ({0, 1}i , pi ) = Ωi . Für jedes n ∈ K
definieren wir jetzt Wahrscheinlichkeitsverteilungen p̃0 , . . . p̃l(n) auf {0, 1}l(n)
in folgender Weise:
p̃0 ((b1 , . . . bl(n) )) = pl(n) ((b1 , . . . bl(n) )) =
1
2l(n)
p̃1 ((b1 , . . . bl(n) )) = pr(G(x)1 = b1 |x ← Ωn ) · pl(n)−1 (b2 , . . . bl(n) ))
p̃2 ((b1 , . . . bl(n) )) = pr(G(x)1 = b1 , G(x)2 = b2 |x ← Ωn ) · pl(n)−2 ((b3 , . . . bl(n) ))
..
.
p̃l(n) ((b1 , . . . bl(n) )) = pr(G(x)1 = b1 , . . . G(x)l(n) = bl(n) |x ← Ωn )
Also: p̃0 Gleichverteilung auf {0, 1}l(n) , p̃l(n) die durch G(Ωn ) erzeugte Verteilung auf {0, 1}l(n) . D kann p̃0 und p̃l(n) unterscheiden (im obigen Sinne).
114
Sei pr(D(G(x)) = 1 | x ←− Ωn ) ≥ pr(D(z) = 1 | z ←− Ωl(n) ) (ansonsten
betrachte man im Folgenden die umgekehrten Differenzen).
Man sieht dann leicht, dass
pr(D(G(x)) = 1 | x ←− Ωn ) − pr(D(z) = 1 | z ←− Ωl(n) ) =
Pl(n)−1
p̃j
p̃j+1
(pr(D(z) = 1 | z ←− {0, 1}l(n) ) − pr(D(z) = 1 | z ←− {0, 1}l(n) )).
j=0
Also existiert zu jedem n ∈ K ein in , 0 ≤ in < l(n), mit
p̃i
p̃i
n
n
{0, 1}l(n) )| ≥
{0, 1}l(n) ) − pr(D(z) = 1 | z ←−
| pr(D(z) = 1 | z ←−
1
.
Q(n)l(n)
Beachte, dass l(n) durch ein positives Polynom nach oben beschränkt ist, da
G ein polynomialer Algorithmus ist.
Es folgt, dass D für z = (G(x)1 , . . . G(x)in , b, bin +2 , . . . bl(n) ) mit b = G(x)in +1
den Wert 1 mit nicht-vernachlässigbarer höherer Wahrscheinlichkeit liefert,
als wenn b zufällig (mit Wahrscheinlichkeit 21 ) gewählt wird.
Damit kann man dann aus D leicht einen probabilistischen polynomialen
Algorithmus A konstruieren, so dass G den next-bit-Test bzgl. dieses Algorithmus nicht besteht.34
+1
Offen bleibt die Frage: Gibt es kryptographisch sichere PseudozufallsfolgenGeneratoren? Damit beschäftigen wir uns in den nächsten beiden Abschnitten.
4.9
Kryptographisch sichere Pseudozufallszahlen-Generatoren und Einwegfunktionen
Einwegfunktionen sind Funktionen, die leicht zu berechnen, aber schwierig
zu invertieren sind.
Def.: Eine Funktion f : {0, 1}∗ → {0, 1}∗ heißt Einwegfunktion, falls gilt:
1) Es existiert ein deterministischer polynomialer Algorithmus F , der bei
Input x ∈ {0, 1}∗ den Wert f (x) ausgibt (d.h. F (x) = f (x)).
2) Für jeden probabilistischen polynomialen Algorithmus A und jedes positive Polynom P ∈ Z[x] gilt für alle genügend großen n:
pr(A(f (x), 1n ) ∈
34
1
f −1 (f (x)) |x ← Ωn ) <
| {z }
P (n)
Urbild von f (x)
Ausführlicher Beweis bei Delfs, Knebl, Introduction to Cryptography [13], Goldreich,
Foundations of Cryptography [16] oder Stinson, Cryptography-Theory and Practice [30]
115
Bemerkung: Der Hilfs-Input 1n bei A, der die Länge des gewünschten Urbilds
angibt, dient dazu, gewisse Funktionen als Einwegfunktionen auszuschließen.
Ausgeschlossen werden solche Funktionen f , bei denen die Länge von f (x) so
drastisch gesenkt wird, dass A keine Chance hat, ein Urbild in polynomialer
Zeit in der Größe des Inputs f (x) auszugeben.
Bsp:
x ∈ {0, 1}n , f (x) = Binärdarstellung von n (der Länge von x)
Dann f (x) ∈ {0, 1}⌈log2 n⌉
Kein polynomialer Algorithmus kann f (x) invertieren; aber natürlich kann
man in polynomialer Zeit in n ein Urbild zu f (x) ∈ {0, 1}⌈log2 n⌉ hinschreiben,
z.B. 0 . . . 0.
←n→
Einer der wichtigsten Sätze der komplexitätstheoretisch orientierten Kryptologie, der frühere Ergebnisse von Blum/Micali, Yao, Goldreich/Krawcyk/
Luby verallgemeinert, ist der Folgende:
Satz (Håstad, Impagliazzo, Levin, Luby; 1999)
Genau dann existieren kryptographisch sichere Pseudozufallsfolgen-Generatoren, wenn Einwegfunktionen existieren.
Der Beweis dieses Satzes ist kompliziert, vor allem die Richtung, wie man aus
Einwegfunktionen kryptographisch sichere Pseudozufallsfolgen-Generatoren
gewinnt.
Wir beschreiben einige wesentliche Punkte:
1) Kryptographisch sichere Pseudozufallsfolgen-Generatoren ⇒ Einwegfunktionen:
Wir nehmen der Einfachheit halber an, dass G ein kryptographisch
sicherer Pseudozufallsfolgen-Generator ist mit Erweiterungsfunktion
l(n) = 2n.
S
S
Dann definiert man eine Funktion f :
{0, 1}2n →
{0, 1}2n
n∈
N
n∈
N
n
durch f (x, y) = G(x) für x, y ∈ {0, 1} .
Dann erfüllt f die Bedingung einer Einwegfunktion:
Polynomiale Berechenbarkeit folgt aus der von G.
Ang. f ist keine Einwegfunktion. Dann existiert probabilistischer polynomialer Algorithmus und positives Polynom Q, so dass
pr(A(f (x), 12n ) ∈ f −1 (f (x))| x ← Ω2n ) >
116
1
Q(2n)
für unendlich viele n.
Man benötigt jetzt einen probabilistischen polynomialen Algorithmus
D, der Ω2n und G(Ωn ) ‘unterscheidet’.
Bei Eingabe von α ∈ {0, 1}2n nutzt D den Algorithmus A. D gibt 1
aus, falls A ein Urbild von F zu α findet, sonst 0.
Wegen f (Ω2n ) = G(Ωn ) [denn für β ∈ {0, 1}2n ist
|{α ∈ {0, 1}2n |f (α) = β}| = 2n · |{γ ∈ {0, 1}n |G(γ) = β}|] ist
pr(D(G(x)) = 1|x ← Ωn ) =
pr(D(f (z)) = 1|z ← Ω2n ) =
pr(A(f (z), 12n ) ∈ f −1 (f (z))|z ← Ω2n ) >
1
Q(2n)
für unendlich viele n.
Andererseits gibt es nur maximal 2n viele Elemente in {0, 1}2n , die
Urbilder unter f haben können (denn G hat nur 2n viele Bilder in
{0, 1}2n ); also wird D nur bei maximal 2n vielen Elementen aus {0, 1}2n
n
Wert 1 ausgeben. Also pr(D(z) = 1| z ← Ω2n ) ≤ 222n = 21n
Damit: pr(D(G(x)) = 1| x ← Ωn ) − pr(D(z) = 1| z ← Ω2n )
≥
1
Q(2n)
−
1
2n
≥
1
2Q(2n)
für unendlich viele n, Widerspruch.
Man kann schließlich mit einfachen Techniken, auf die hier nicht eingegangen wird, aus f eine Funktion f ′ : {0, 1}∗ → {0, 1}∗ konstruieren,
die eine Einwegfunktion ist.35
2) Einwegfunktionen ⇒ kryptographisch sichere Pseudozufalls-Generatoren:
Zunächst Begriff des Hard-Core-Prädikats einer Einwegfunktion.
Bei einer Einwegfunktion f ist es nicht immer möglich ein Urbild x
aus y = f (x) mit einem effizienten Algorithmus zu bestimmen. Dennoch tritt oft der Fall auf, dass einzelne Bits von x leicht zu berechnen
sind. (Z.B. g Einwegfunktion; für x = (x1 , . . . , xn ) sei f (x, xn+1 ) =
(g(x), xn+1 ). Dann f Einweg, aber xn+1 leicht zu bestimmen.) Andererseits sollte es bei einer Einwegfunktion einzelne Bits von x oder,
allgemeiner, Eigenschaften von x, die als Boolesche Prädikate formuliert werden können, geben, die sehr schwierig zu bestimmen sind. Dies
ist die Idee der Hard-Core-Prädikate.
Def.:
Sei b : {0, 1}∗ → {0, 1} durch einen deterministischen polynomialen
Algorithmus berechenbar. b heißt Hard-Core-Prädikat einer Funktion
f : {0, 1}∗ → {0, 1}∗ , falls für jeden probabilistischen polynomialen
35
s. Goldreich [16], S. 36ff.
117
Algorithmus A (Input Elemente aus {0, 1}∗ , Output 0 oder 1) und
jedes positive Polynom P für alle genügend großen n gilt:
pr(A(f (x)) = b(x)| x ← Ωn ) ≤
1
1
+
2 P (n)
Bedeutung:
• Beachte zunächst:
Die Bedingung pr(A(f (x)) = b(x)| x ← Ωn ) ≤ 21 + P (n) und die
entsprechende Bedingung für den Algorithmus A′ = 1 + A implizieren, dass |pr(b(x) = 0| x ← Ωn ) − pr(b(x) = 1| x ← Ωn )|
vernachlässigbar klein ist, d.h. b verhält sich fast wie Münzwurf
auf Ωn .
Daher besagt die Bedeutung von Hard-Core-Prädikaten, dass die
Bestimmung von b(x) aus f (x) durch einen effizienten Algorithmus bis auf einen vernachlässigbaren Rest nicht besser ist als b(x)
durch Münzwurf zu ‘raten’.
• Für die Existenz eines Hard-Core-Prädikats kann es zwei Gründe
geben:
(a) Informationsverlust von f (d.h. f ist nicht injektiv)
z.B. f (z1 . . . zn ) = 0z2 . . . zn , b(z1 , . . . zn ) = z1
(b) f ist Einwegfunktion
Wir sind am zweiten Fall interessiert.
Es gilt nun:
Satz (Goldreich, Levin; 1989)
Sei f : {0, 1}∗S→ {0, 1}∗ eine Einwegfunktion.
Definiere g :
{0, 1}2n → {0, 1}∗ durch g(x, y) = (f (x), y), x, y ∈ {0, 1}n .
n∈N
P
Ist x = (x1 , . . . xn ), y = (y1 , . . . yn ), so sei b(x, y) = xi yi mod 2.
Dann ist g eine Einwegfunktion und b ist ein Hard-Core-Prädikat für g.36
[Es ist nicht schwierig, aus g eine Einwegfunktion g̃ : {0, 1}∗ → {0, 1}∗ zu
konstruieren, die ein Hard-Core-Prädikat besitzt.]
Wir können also annehmen, dass wir eine Einwegfunktion mit Hard-CorePrädikat b vorliegen haben.
36
s. Goldreich [16], S. 66 ff.
118
Wir beschreiben die Konstruktion eines kryptographisch sicheren Zufallszahlen-Generators jetzt nur für den Fall, dass f eine bijektive und längenerhaltende (d.h. x ∈ {0, 1}n ⇒ f (x) ∈ {0, 1}n für alle n ∈ N) Einwegfunktion
ist.
Sei l ein Polynom mit l(n) > n für alle n.
Definiere G auf folgende Weise: Sei s0 ∈ {0, 1}n (seed ).
Für j = 1, . . . l(n) : sj = f (sj−1 ), σj = b(sj )
G(s0 ) = σ1 σ2 . . . σl(n) ∈ {0, 1}l(n)
Dann ist G kryptographisch sicherer Zufallsfolgen-Generator.
Dazu zeigt man, dass G alle next-bit-Tests besteht (hier von rechts nach
links!). Dies ist einsichtig: Kann man b(si ) aus b(si+1 ), . . . b(sl(n) ) vorhersagen
1
(mit Wahrscheinlichkeit > 21 + Q(n)
), so kann man b(si ) aus f (si ) vorhersagen
(denn f (si ) = si+1 , . . . f (sl(n)−1 ) = sl(n) sind aus f (si ) berechenbar, und daher
erhält man b(si+1 ), . . . b(sl(n) )). Dies widerspricht aber der Tatsache, dass b
ein Hard-Core-Prädikat für f ist.
Die Behauptung folgt dann mit dem Satz von Yao (siehe Kapitel 4.8).37
4.10
Die Frage nach der Existenz von Einwegfunktionen
Es bleibt die Frage, ob Einwegfunktionen existieren. Dies ist nicht bekannt.
Eine notwendige Bedingung für die Existenz von Einwegfunktionen ist P 6=
N P . (Ob dies gilt, ist eines der berühmtesten offenen Probleme der Komplexitätstheorie.)
Sei nämlich f eine polynomial berechenbare Funktion. Dann kann man in
polynomialer Zeit entscheiden, ob für gegebene x und y gilt: f (x) = y. Ist
also P = N P , so lässt sich jede polynomial berechenbare Funktion auch in
polynomialer Zeit invertieren.
Tatsächlich ist bei unserer Definition von Einwegfunktionen, in der die Invertierung (bis auf einen vernachlässigbaren Rest) auch durch probabilistische
polynomiale Algorithmen unmöglich sein muss, sogar eine weitergehende Bedingung notwendig, nämlich N P * BP P .
BP P steht für Bounded-Probability Polynomial Time.
BP P ist die Klasse aller Sprachen, die von einer probabilistischen, polyno37
Details zum Beweis: Goldreich [16], S. 128 ff.
119
mial laufzeitbeschränkten Turing-Maschine M (also von einem polynomial
probabilistischen Algorithmus) erkannt werden. Dies bedeutet:
Für alle x ∈ L : pr[M (x) = 1] ≥
2
3
Für alle x 6∈ L : pr[M (x) = 0] ≥
2
3
(bounded: Wahrscheinlichkeit wegbeschränkt von 12 )
Äquivalent:
1
, |x| = Länge von x.
Ersetze 32 durch 1 − 2|x|
1
(sogar 1 − 2p(|x|) , p positives Polynom)
Klar: P ⊆ BP P .
Also: N P * BP P ⇒ N P 6= P . Nicht bekannt ist auch, ob BP P ⊆ N P .
Die obige Forderung verbietet die umgekehrte Inklusion.
P 6= N P bedeutet nur, dass es N P -Probleme gibt, die Instanzen besitzen,
die nicht effizient (deterministisch) lösbar sind (worst case).
Wir benötigen Funktionen, die im Durchschnitt nicht effizient zu invertieren
sind. Aber auch bei Annahme von N P * BP P ist nicht bekannt, ob daraus
die Existenz von Einwegfunktionen folgt. Im nächsten Kapitel werden wir
Kandidaten für Einwegfunktionen kennenlernen.
120
5
Public-Key-Kryptographie
5.1
Die Grundidee
Die Idee für Public-Key-Kryptographie stammt von W. Diffie und M.E. Hellman, dargelegt in der berühmten Arbeit New Directions in Cryptography.38
In einem Public-Key-Verschlüsselungssystem gibt es keinen gemeinsamen geheimen Schlüssel, der von zwei Kommunikationspartnern (Alice und Bob)
benutzt wird (wie bei den symmetrischen Verfahren).
Stattdessen: Jeder Teilnehmer B hat ein Paar von Schlüsseln:
• geheimer Schlüssel (private key) GB
• öffentlicher Schlüssel (public key) PB
GB ist nur B bekannt, PB wird öffentlich gemacht. Zu jedem öffentlichen
Schlüssel PB gehört eine Verschlüsselungsfunktion EPB (= E(., PB )). Diese
ist auch öffentlich bekannt.
Will Alice (A) an Bob (B) eine Nachricht m senden, so verschlüsselt Alice
die Nachricht m mit Bobs öffentlichem Schlüssel
m → EPB (m) =: c
und sendet c an Bob.
Ein solches System kann nur sicher sein, wenn zwei Bedingungen erfüllt sind:
1) m darf mit realistischem Aufwand nicht aus EPB berechenbar sein: EPB
ist eine injektive Einwegfunktion. (EPB soll natürlich effizient berechenbar sein.)
2) B muss m aus c = EPB (m) effizient berechnen können. Dies gelingt mit
Hilfe seines geheimen Schlüssels GB . Diese Zusatzinformation ermöglicht
eine effiziente Entschlüsselung m = DGB (c) (= EP−1
(c)).
B
Injektive Einwegfunktionen, die mit einer Zusatzinformation effizient zu invertieren sind, heißen Falltürfunktionen (trapdoor function). Bedingungen 1)
und 2) implizieren:
38
in IEEE Transactions on Information Theory, IT-22, pp. 644-654, 1976 [14]
121
3) GB darf aus PB nicht effizient berechenbar sein.
Nach 4.10 ist nicht bekannt, ob Einwegfunktionen existieren; dies gilt umso
mehr für Falltürfunktionen.
Dennoch gibt es einige Klassen von Funktionen, die als Kandidaten für
Falltürfunktionen angesehen werden, da bis heute kein (probabilistischer) polynomialer Algorithmus zur Invertierung (in einer nicht vernachlässigbaren
Anzahl von Fällen) bekannt ist.
Die wichtigsten zwei Klassen solcher Funktionen und die darauf fußenden
Public-Key-Verfahren werden wir im Folgenden besprechen.
5.2
Modulare Potenzen und das RSA-Verfahren
1977 stellten R. Rivest, A. Shamir und L. Adleman ein Public-Key-Verfahren
(RSA-Verfahren) vor,39 das bis heute zu den populärsten Public-Key-Verfahren gehört. Es beruht auf folgender Funktionenklasse, die zur Verschlüsselung
verwendet wird:
Sei n das Produkt zweier verschiedener Primzahlen p und q und sei e teilerfremd zu ϕ(n).
Zn → Zn RSA-Funktionen (Z = Z/nZ Ring)
Def. RSAe :=
n
x 7→ xe
Satz:
Unter den obigen Voraussetzungen an n und e ist RSAe eine bijektive Funktion, d.h. eine Permutation auf Zn . Die inverse Abbildung zu RSAe ist gegeben durch RSAd , wobei d (eindeutig) bestimmt ist durch 0 < d < ϕ(n) und
ed ≡ 1 mod ϕ(n).
Beweis:
Sei m irgendeine natürliche Zahl. Wie in 2.3.a beschrieben wurde, sind die
Einheiten von Zm = Z/mZ, also die bezüglich der Multiplikation invertierbaren Elemente, gerade die a + mZ mit ggT(a, m) = 1.
Für m = ϕ(n) folgt also wegen ggT(e, ϕ(n)) = 1, dass es ein d + ϕ(n)Z gibt
mit ed + ϕ(n)Z = (e + ϕ(n)Z)(d + ϕ(n)Z) = 1 + ϕ(n)Z, d.h. ed ≡ 1 mod ϕ(n).
Dabei kann man 0 < d < ϕ(n) wählen und d ist dann eindeutig bestimmt.
39
erschienen im Aufsatz On Digital Signatures and Public Key Cryptosystems [2]
122
Beachte: ggT(d, ϕ(n)) = 1, da auch d + ϕ(n)Z invertierbar ist. Also existiert
RSAd .
Wir haben zu zeigen: RSAe ist bijektiv und RSA−1
e = RSAd .
ed
Dazu haben wir zu zeigen: x = x für alle x ∈ Zn .
Sei zunächst x ∈ Z∗n . Z∗n hat Ordnung ϕ(n) (s.o.).
Der Satz von Euler besagt: xϕ(n) = 1 (in Zn ).
(Dies lässt sich leicht direkt beweisen oder aus folgender einfachen Konsequenz des Satzes von Lagrange ablesen: Ist G eine endliche Gruppe, g ∈ G,
so g |G| = 1. Die Ordnung von g teilt |G|.40 )
Da ed ≡ 1 mod ϕ(n), d.h. ed = 1 + kϕ(n) für ein k ∈ N0 ,
folgt xed = x1+kϕ(n) = x · (xϕ(n) )k = x.
Sei nun x 6∈ Z∗n , d.h. x = a + nZ, ggT(a, n) 6= 1. Da n = pq, folgt p | a oder
q | a. Falls pq | a, so x = 0 und trivialerweise xed = x.
Es gelte: p | a, q ∤ a. a ≡ 0 mod p, also aed ≡ 0 ≡ a mod p.
Es ist ϕ(n) = ϕ(pq) = (p − 1)(q − 1).
Es ist aq−1 ≡ 1 mod q (|Z∗q | = q − 1).
Aus ed = 1 + kϕ(n) = 1 + k(p − 1)(q − 1) folgt damit
aed = a1+k(p−1)(q−1) ≡ a mod q. Da p, q verschiedene Primzahlen sind, ist
aed ≡ a mod n, d.h. xed = x. Der Fall p ∤ a, q | a folgt analog.
Bemerkung:
RSA-Funktionen sind effizient zu berechnen. Man berechnet ae mod n mit
der Methode der iterierten Quadrierung:
Schreibe e in Binärdarstellung. Sei l = ⌊log2 e⌋ + 1, d.h. e ist l-Bit-Zahl,
e = 2l−1 el−1 + . . . + 20 e0 (ei ∈ {0, 1}, el−1 = 1)
= (. . . ((2el−1 + el−2 ) · 2 + el−3 ) · 2 + . . . + e1 ) · 2 + e0
ae = ((. . . ((a2 · ael−2 )2 · ael−3 )2 . . .)2 · ae1 )2 · ae0
Also kann ae in l − 1 Schritten berechnet werden. Jeder Schritt besteht aus
einer Quadrierung und gegebenenfalls einer weiteren Multiplikation. Zur Berechnung von ae mod n nimmt man nach jeder Quadrierung und ggf. Multiplikation den Rest modulo n.
40
siehe z.B. 2.11 in Buchmann, Einführung in die Kryptographie [9]
123
RSA-Verfahren:
1) Schlüsselerzeugung:
a) Wähle große Primzahlen p, q, p 6= q und berechne n = p · q.
b) Wähle e mit ggT(e, ϕ(n)) = 1.
öffentlicher Schlüssel: P = (n, e)
c) Berechne d mit 0 < d < ϕ(n) und ed ≡ 1 mod ϕ(n).
Geheimer Schlüssel: G = (n, d)
(p, q und ϕ(n) werden ebenfalls geheimgehalten, besser gelöscht. Nach
Bestimmung von e und d werden sie nicht mehr benötigt.)
2) Verschlüsselung:
Wir verschlüsseln alle Zahlen m mit 0 ≤ m < n (andere Form später).
Der Klartext m wird mit dem öffentlichem Schlüssel (n, e) mit Hilfe
der RSAe -Funktion verschlüsselt:
c = me mod n
(Jeder, der den öffentlichen Schlüssel eines Teilnehmers kennt, kann
diesem eine verschlüsselte Nachricht senden.)
3) Entschlüsselung:
Entschlüsselung mit dem geheimen Schlüssel (n, d) und der RSAd Funktion:
m = cd mod n
Korrektheit der Entschlüsselung auf Grund des vorangegangenen
Satzes.
Wie werden p, q, e und d bestimmt?
1) Bestimmung von p und q. Hierzu mehr im Abschnitt 5.5.
2) Wahl von e:
In der Praxis wird e häufig als kleine Zahl gewählt, damit die Verschlüsselung besonders effizient möglich ist. Wegen ggT(e, ϕ(n)) = 1
und ϕ(n) = (p − 1)(q − 1), muss e ungerade sein.
Bei Wahl von e = 3 ist z.B. zur Berechnung von me mod n eine Quadrierung und eine Multiplikation modulo n durchzuführen. Sehr kleine Exponenten e bergen aber gewisse Sicherheitsrisiken (dazu später
mehr).
124
Daher werden auch gelegentlich Exponenten e der Form 2k + 1 verwendet. Hier sind zur Berechnung von me mod n nur k Quadrierungen
und eine Multiplikation modulo n erforderlich. Eine typische Wahl ist
e = 216 + 1 = 65537 (Primzahl).
3) Bestimmung von d:
d wird mit Hilfe des erweiterten Euklidischen Algorithmus aus e und
ϕ(n) bestimmt.
Beachte: ϕ(n) = (p − 1)(q − 1) ist bei Kenntnis von p und q leicht zu
berechnen.
(ggT(e, ϕ(n)) = 1. Erweiterter Euklidischer Algorithmus (s.u.) liefert
s, t ∈ Z mit es + ϕ(n)t = 1. Sei s = d + ϕ(n) · u, 0 ≤ d < ϕ(n). Dann
ed = es − ϕ(n)eu = 1 − ϕ(n)(eu − t) ≡ 1 mod ϕ(n))
Erweiterter Euklidischer Algorithmus
Gegeben: natürliche Zahlen a und b, a > b.
Zu bestimmen: g = ggT(a, b) und ganze Zahlen u, v mit g = au + bv.
Bezeichnung: Sind x und y natürliche Zahlen, x = sy +r, 0 ≤ r < y (Division
mit Rest), so ist s = x div y und r = x mod y.
1 0
a
x
, A=
=
(1) Setze
0 1
b
y
(2) Solange y 6= 0, wiederhole:
0
1
Setze A = A ·
1 −(x div y)
y
x
=
Setze
x mod y
y
1
u
=A·
(3) Setze g = x und
0
v
Dann g = ggT(a, b) = au + bv.
125
Beispiel zur RSA-Verschüsselung:
p = 13, q = 23 (unrealistisch klein), n = pq = 299, ϕ(n) = 12 · 22 = 264 =
8 · 3 · 11, e = 5 (kleinstmögliches e); öffentlicher Schlüssel (n, e) = (299, 5).
Bestimmung von d mit ed ≡ 1 mod ϕ(n).
Erweiterter Euklidischer Algorithmus mit ϕ(n) = 264 und e = 5:
x y A
1 0
264 5
(264 = 52 · 5 + 4)
0 1 0 1
5 4
(5 = 4 · 1 + 1)
1 −52 0 1
0 1
1 −1
·
=
4 1
(4 = 4 · 1 + 0)
−52 53 1 −52 1 −1 0 1
1 −1
−1
5
·
=
1 0
1 −4
−52 53
53 −264
1 =ggT(264, 5) = 264 · (−1) + 5 · 53, d = 53 (ed = 5 · 53 ≡ 1 mod 264)
Geheimer Schlüssel (n, d) = (299, 53)
Der Klartext sei m = 212.
Zur Verschlüsselung muss man m5 mod 299 berechnen.
2122 ≡ 44944 ≡ 94 mod 299
2124 ≡ 942 ≡ 8836 ≡ 165 mod 299
2125 ≡ 165 · 212 ≡ 34980 ≡ 296 mod 299
Verschlüsselter Text ist c = 296.
Zur Entschlüsselung wird c53 mod 299 berechnet.
53 = 25 + 24 + 22 + 20 , daher 29653 = ((((2962 · 296)2 )2 · 296)2 )2 · 296
2962 ≡ (−3)2 ≡ 9 mod 299
2962 · 296 ≡ 9 · (−3) ≡ −27 mod 299
(−27)2 ≡ 729 ≡ 131 mod 299
(−27)4 ≡ 1312 ≡ 17161 ≡ 118 mod 299
(−27)4 · 296 ≡ 118 · (−3) ≡ −354 ≡ 244 mod 299
2442 ≡ (−55)2 ≡ 3025 ≡ 35 mod 299
2444 ≡ 352 ≡ 29 mod 299
29 · 296 ≡ 8584 ≡ 212 mod 299
Die Entschlüsselung liefert also wieder den Klartext m = 212.
126
Realisierung der RSA-Verschlüsselung in Blockchiffren-ähnlicher Weise
Das zugrundeliegende Klartextalphabet Σ bestehe aus N Zeichen. Diesen
werden die Zahlen 0, 1, . . . N − 1 zugeordnet.
Sei (n, e) der öffentliche Schlüssel des Teilnehmers B.
Setze k = ⌊logN n⌋.
Ein Klartext (mit Zeichen in 0, 1, . . . N − 1) wird in Blöcke der Länge k
aufgeteilt, die einzeln verschlüsselt werden:
m1 , . . . mk sei ein solcher Block.
k
P
mi N k−i . (N -adische Zahldarstellung)
Bilde m =
i=1
Dann: 0 ≤ m ≤ (N − 1)
k
P
i=1
N k−i = N k − 1 < n
m wird verschlüsselt zu c = me mod n.
Schreibe Zahl c wieder zur Basis N . Die N -adische Darstellung von c kann
Länge k + 1 haben (wenn N k ≤ c < n).
Schlüsselblock ist dann c = c0 c1 . . . ck , 0 ≤ ci ≤ N − 1. Das RSA-Verfahren
bildet dann Blöcke der Länge k injektiv auf Blöcke der Länge k + 1 ab.
In dieser Form kann man das Verfahren wie eine Blockchiffre im ECB-Mode
oder im CBC-Mode (mit leichter Modifikation) anwenden.
Bsp:
P
= { 0, a, b, c }
↓ ↓ ↓ ↓
0 1 2 3
n = 299, e = 5, d = 53
N = 4, k = ⌊log4 299⌋ = 4
Zu verschlüsselnder Klartextblock: caa0 → 3110
m = 3 · 43 + 1 · 42 + 1 · 4 + 0 · 1 = 192 + 16 + 4 = 212
Verschlüsselung: 2125 mod 299. Also c = 296 (siehe voriges Beispiel)
296 = 1 · 44 + 0 · 43 + 2 · 42 + 2 · 41 + 0 · 40
Also Schlüsseltextblock: a0bb0
127
5.3
Sicherheit des RSA-Verfahrens
a) Die Sicherheit des RSA-Verfahrens beruht auf der Annahme, dass die
Funktionen RSAe : Zn → Zn Einwegfunktionen sind. Dies ist für manche Wahlen von n = p · q nicht der Fall (siehe später). Daher wird die
Einwegfunktionsannahme nicht für eine spezielle RSA-Funktion, sondern für die gesamte Familie gemacht:
Sei Ik = {(n, e)|n = p · q, p 6= q Primzahlen, 0 < e < ϕ(n),
ggT(e, ϕ(n)) = 1, |n| = k}
Sei P (x) ∈ Z[x] ein positives Polynom und A(n, e, y) ein polynomialer
probabilistischer Algorithmus.
Dann existiert k0 ∈ N, so dass
∗
pr(A(n, e, y) = RSA−1
e (y) | (n, e) ← Ik , y ← Zn ) ≤
1
Q(k)
für alle k ≥ k0 .
Dabei ist die Gleichverteilung auf Ik und auf Z∗n angenommen, bezüglich
derer (n, e) bzw. y zufällig ausgewählt werden. Dies nennt man die
RSA-Annahme. (Unter dieser Annahme kann man zeigen, dass das
niedrigste Bit von x ein Hard-Core-Prädikat für RSAe (x) ist.)
Wir werden im Folgenden einige Gründe für die RSA-Annahme benennen und außerdem einige Sicherheitsvorkehrungen bei der Wahl von
p, q uns e für praktische Anwendungen beschreiben.
b) Klar ist, dass die RSAe -Funktionen leicht zu invertieren ist, wenn man
den geheimen Schlüssel d kennt. Unbekannt ist, ob man zur effizienten
Invertierung von RSAe tatsächlich d benötigt.
c) Es gilt:
Satz:
Gibt es für eines der folgenden Probleme einen polynomialen (probabilistischen) Algorithmus, so auch für jedes der anderen:
Gegeben: (n, e), 0 < e < ϕ(n), ggT(e, ϕ(n)) = 1 (n = p · q)
(1) Bestimme Faktorisierung von n.
(2) Bestimme ϕ(n).
(3) Bestimme d mit ed ≡ 1 mod ϕ(n).
Beweis:
(1) ⇒ (2) Sind p, q mit n = p · q bekannt, so ϕ(n) = (p − 1)(q − 1).
(2) ⇒ (3) Sind ϕ(n), e bekannt, so bestimmt man mit dem Erweiterten
128
Euklidischen Algorithmus d.
(3) ⇒ (1) Hierzu geht man folgendermaßen vor:
Sei 2s die größte Zweierpotenz, die ed − 1 teilt, und k =
ed − 1
.
2s
Ist dann a ∈ N, ggT(a, n) = 1, d.h. a + nZ ∈ Z∗n ,
so ist o(ak + nZ) ∈ {2i |0 ≤ i ≤ s},
s
denn (ak )2 + nZ = aed−1 + nZ = 1 + nZ,
da ed − 1 ≡ 0 mod ϕ(n) (vgl. Punkt 2) auf Seite 130 ( Ordnungen von
”
Elementen endlicher Gruppen“).
Für ein solches a ist natürlich auch a + pZ ∈ Z∗p und a + q Z ∈ Z∗q .
Ang. o(ak + pZ) 6= o(ak + q Z), o.E. o(ak + pZ) > o(ak + q Z). Auch
die Ordnungen von ak + pZ bzw. ak + q Z liegen in {2i |0 ≤ i ≤ s}. Sei
t
t
o(ak + q Z) = 2t . Dann t < s und ak·2 ≡ 1 mod q, aber ak·2 6≡ 1 mod p;
t
daher ggT(a2 k − 1, n) = q.
Um also n zu faktorisieren, wählt man zufällig und gleichverteilt
a ∈ {1, . . . n − 1} und berechnet g=ggT(a, n).
Ist g > 1, so ist g ein echter Teiler von n, fertig.
t
Ist g = 1, so berechne ggT(a2 k − 1, n) t = 0 . . . s − 1.
Findet man dabei einen Teiler von n, so fertig; wenn nicht, wählt man
ein neues a.
Wir werden gleich im Anschluss zeigen, dass gilt:
|{a|a ∈ {0, . . . n−1}, ggT(a, n) = 1, o(ak +pZ) 6= o(ak +q Z)}| ≥
(p−1)(q−1)
2
Daher ist die Wahrscheinlichkeit, ein a mit o(ak + pZ) 6= o(ak + q Z) –
und damit einen echten Teiler von n – zu finden, mindestens 12 .
Nach r Iterationen ist die Wahrscheinlichkeit also mindestens 1 − 21r ,
einen Teiler von n zu finden; also ist z.B. für r = log(n) die Wahrscheinlichkeit mindestens 1 − n1 . Jede Iteration erfordert wegen s < log(ed) <
log(n2 ) = 2 log n maximal 2 log n viele ggT-Bestimmungen (die auch
polynomial in log n durchführbar sind).
Für die noch zu beweisende Anzahlaussage im vorangegangenen Beweis
benötigen wir zwei Hilfsmittel.
Chinesischer Restsatz:
Seien m1 , . . . , mn paarweise teilerfremde natürliche Zahlen und seien
a1 , . . . , an ganze Zahlen.
n
Q
mi mit x ≡ aj mod mj
Dann gibt es genau eine Zahl x mit 0 ≤ x ≤
i=1
für alle j = 1, . . . n.
129
Beweis:
Setze m =
n
Q
mi und Mj = m/mj für j = 1, . . . , n.
i=1
Dann ist ggT(mj , Mj ) = 1 für j = 1, . . . , n.
Mit dem Erweiterten Euklidischen Algorithmus kann man daher natürliche Zahlen yj bestimmen, so dass yj Mj ≡ 1 mod mj für alle
j = 1, . . . , n. Dann folgt auch aj yj Mj ≡ aj mod mj für j = 1, . . . , n. Da
für i 6= j die Zahl mj ein Teiler von Mi ist, gilt auch ai yi Mi ≡ 0 mod mj
für alle i, j = 1, . . . , n, i 6= j.
n
P
ai yi Mi mod m, so folgt daher x ≡ aj mod mj
Setzt man x =
i=1
für alle j = 1, . . . , n.
Sind x, x′ zwei Lösungen mit 0 ≤ x, x′ ≤ m, so ist x ≡ aj ≡ x′ mod mj
für alle j = 1, . . . , n. Da die mj paarweise teilerfremd sind, folgt dann
auch x ≡ x′ mod m, also x = x′ .
Ordnungen von Elementen endlicher Gruppen
Ist G eine endliche Gruppe, g ∈ G, so ist die Ordnung von g, o(g), die
kleinste natürliche Zahl n mit g n = 1.
Die folgenden Aussagen sind leicht zu verifizieren:
1) Es ist o(g) = | < g > |, wobei < g >= {1, g, g 2 , . . . g o(g)−1 } die von
g erzeugte (zyklische) Untergruppe von G ist. Nach dem Satz von
Lagrange ist o(g) ein Teiler von |G|.
2) Ist g m = 1, so ist o(g) ein Teiler von m.
3) Ist o(g) = 2h u, wobei u ungerade ist, und ist t ungerade, so ist
o(g t ) = 2h u′ und u′ teilt u.
Wir können jetzt noch die im Beweisteil (3) ⇒ (1) des Satzes auf Seite
129 offen gebliebene Anzahlaussage beweisen.
Satz:
Sei n, p, q, e, d wie im RSA-Verfahren. Sei 2s die größte Zweierpotenz,
.
die ed − 1 teilt, k = (ed−1)
2s
Dann ist die Anzahl der zu n teilerfremden Zahlen a mit 1 ≤ a ≤ n − 1,
für die o(ak + pZ) 6= o(ak + q Z) gilt, wenigstens (p−1)(q−1)
.
2
(Die Ordnungen beziehen sich auf die Gruppen Z∗p bzw. Z∗q .)
Beweis:
Z∗p und Z∗q sind zyklische Gruppen der Ordnung p − 1 bzw. q − 1. Sei
v ∈ {1, . . . , p − 1} mit < v >= Z∗p (d.h. o(v + pZ) = p − 1) und sei
130
w ∈ {1, . . . q − 1} mit < w >= Z∗q .
Nach dem Chinesischen Restsatz existiert ein h, 1 ≤ h ≤ n = pq mit
h ≡ v mod p und h ≡ w mod q. Dann ist also o(h + pZ) = p − 1 und
o(h + q Z) = q − 1.
1. Fall: o(hk + pZ) > o(hk + q Z)
Da p − 1 ein Teiler von ϕ(n) und ϕ(n) ein Teiler von ed − 1 ist, ist
s
s
ed − 1 = (p − 1)r für ein r ∈ N. Es folgt (hk + pZ)2 = (h + pZ)k·2
= (h + pZ)ed−1 = (h + pZ)(p−1)r = 1. Also ist o(hk + pZ) = 2i mit i ≤ s
(siehe oben, 2)). Analog ist o(hk + q Z) = 2j mit j < i.
Sei x eine ungerade Zahl in {1, . . . p−1} und y ∈ {0, . . . q−2}. Nach dem
Chinesischen Restsatz gibt es ein a, 1 ≤ a < n = pq, mit a ≡ hx mod p
und a ≡ hy mod q.
Dann ist o(ak + pZ) = o(hxk + pZ), also o(ak + pZ) = o(hk + pZ) (siehe
oben, 3)).
Andererseits ist (ak + q Z)2 = ak·2 + q Z = hyk·2 + q Z = 1 + q Z, d.h.
o(ak +q Z) ≤ o(hk +q Z) (siehe oben, 2)). Also ist o(ak +pZ) > o(ak +q Z).
j
j
j
Es ist klar, dass für jede der (p−1)(q−1)
möglichen Wahlen von (x, y) die
2
zugehörigen Zahlen a < n paarweise verschieden sind. Damit folgt die
Behauptung in diesem Fall.
2. Fall: o(hk + pZ) < o(hk + q Z)
Analog zum ersten Fall.
3. Fall: o(hk + pZ) = o(hk + q Z)
Wie zu Beginn des ersten Falles sieht man, dass
o(hk + pZ) = o(hk + q Z) = 2i , i ≤ s.
Dabei ist i ≥ 1 (siehe oben, 3)), da k ungerade ist und p − 1 oder q − 1
gerade ist (in unserem Fall dann sogar beide).
Ist x eine ungerade Zahl in {0, . . . p − 2} und y eine gerade Zahl in
{0, . . . q − 2}, so existiert nach dem Chinesischen Restsatz ein a,
1 ≤ a ≤ n = pq, mit a ≡ hx mod p und a ≡ hy mod q. Wie im ersten Fall sieht man, dass o(ak + pZ) = o(hk + pZ).
Andererseits ist (ak +q Z)2 = (hyk +q Z)2 = (hk +q Z)y·2
da y gerade und daher 2i ein Teiler von y2i−1 ist.
i−1
i−1
i−1
= 1+q Z,
Also ist o(ak + q Z) < o(ak + pZ).
Wählt man x als gerade Zahl in {0, . . . p − 2} und y als ungerade
Zahl in {0, . . . q − 2}, so verläuft das Argument analog. Für jede dieser
131
insgesamt (p−1)(q−1)
möglichen Wahlen von (x, y) sind die zugehörigen
2
Zahlen a < n verschieden.
Damit ist der Beweis vollständig.
d) In Folge von c) stellt sich die Frage, wie schnell sich eine Zahl n = p · q
faktorisieren lässt.
Es gibt eine Reihe guter Faktorisierungsalgorithmen, auf die wir aber
in dieser Vorlesung nicht eingehen können. Keiner von ihnen ist ein
polynomialer Algorithmus, und es ist unbekannt, ob Faktorisierung in
polynomialer Zeit möglich ist. Die besten derzeit bekannten Algorithmen ( Zahlkörpersieb“) haben eine Komplexität von
”
1
2
O(ec(log n) 3 (log log n) 3 ),
c geeignete Konstante (c ≤ 3).
Seit 1991 (in etwas anderer Form seit 1977) gibt es von der Firma RSA
Security die sogenannte RSA-Challenge, bei der große RSA-Zahlen
(Produkt zweier Primzahlen) faktorisiert werden sollen. Die größte faktorisierte Zahl besaß bisher 155 Dezimalstellen (faktorisiert in vier Monaten Rechenzeit parallel auf 296 PCs und Workstations mit Taktfrequenz ∼ 400 MHz).
Im Moment gilt eine Bitlänge von 1024 Bit für n als sicher.41
e) Es gibt eine Reihe von Algorithmen, die bei speziellen Eigenschaften
von p und q schnell eine Faktorisierung liefern. Z.B. sollten p und q nicht
die gleiche
Bitlänge haben, da ansonsten Algorithmen, die in der Nähe
√
von n nach Faktoren suchen, erfolgreich sind. Andererseits sollten p
und q beide groß sein. Eine kleine Differenz der Bitlänge von p und q
ist daher die beste Wahl.
Andere Eigenschaften, die häufig gefordert werden:

1. p − q besitzt einen großen Primfaktor, r 
2. r − 1 besitzt einen großen Primfaktor
(sog. starke Primzahlen)

3. p + 1 besitzt einen großen Primfaktor
(analog für q)
f) Wie vorne erwähnt, wird aus Effizienzgründen oft ein kleiner Exponent
e, z.B. e = 3, für das Verschlüsseln verwendet. Das birgt aber eine
41
Näheres über Faktorisierungsalgorithmen: H. Riesel, Prime Numbers and Computer
Methods for Faktorisation [27], J. Buchmann, Einführung in die Kryptographie [9], Kapitel
8 oder R. Crandall, C. Pomerance, Prime Numbers – A Computational Perspective [12]
132
Gefahr in sich, wenn A ein und dieselbe Nachricht an mehrere Benutzer
mit den öffentlichen Schlüsseln (n1 , 3), (n2 , 3), (n3 , 3) schickt. Ist m der
Klartext, so sendet A
ei = m3 mod ni , i = 1, 2, 3.
Wie nehmen m < ni an!
Lauscherin Eve fängt c1 , c2 , c3 ab. Mit Hilfe des Chinesischen Restsatzes
findet sie ein a, 0 ≤ a < n1 n2 n3 , mit
a ≡ c1 mod n1
a ≡ c2 mod n2
a ≡ c3 mod n3
Dieses a ist eindeutig bestimmt. Wegen m3 < n1 n2 n3 ist a = m3 . Eve
kann m durch Ziehen der Kubikwurzel aus a erhalten.
Lösung: Entweder größere e.
Oder: An m wird eine zufällig erzeugte Bitfolge geeigneter Länge (z.B.
64 Bit) vor der Chiffrierung angehängt (’Salting’, ’Padding’, Maskierung). Für jedes i muss ein anderer Bitstring gewählt werden.
g) Auch für kleine d gibt es Unsicherheiten.
Hier gibt es einen Angriff, der auf M.J. Wiener (1990) zurückgeht.42
Dann kann man durch Kettenbruchzerlegung von
e
1
= a0 +
n
a1 + a 2 + 1
1
a3 +...
n 1/4
) den geheimen Exponent d schnell ermitteln.
im Fall d < ( 18
Von D. Boneh, G. Durfee u. Y. Frankel (1998) wurde dieser Angriff
ausgedehnt auf den Fall, dass d < n0,293 .
Aus diesem Grund wird gelegentlich empfohlen, bei der Wahl von e
und d zunächst d geeignet zu wählen und daraus e mit dem erweiterten
Euklidischen Algorithmus zu bestimmen. (Aus Effizienzgründen – e
wird i.d.R. groß sein – wird dies in der Praxis aber selten gemacht.)
h) Angriffe auf Grund von Laufzeiteffekten bei modularer Potenzierung
(Paul Kocher, 1995). Möglich falls physikalischer Angriff auf Rechner.43
42
Einzelheiten siehe: M.J. Wiener, Cryptanalysis of short RSA exponents, IEEE Transactions on Information Theory 36 (1990), pp. 553-558 [33]
43
s. Trappe, Washington [31], S. 143-145 und Ertel [15], S. 84-85
133
5.4
Effizienz des RSA-Verfahrens
Die aus Sicherheitsgründen empfohlene Wahl von Zahlen n mit der Bitlänge
von 1024 Bit impliziert, dass das RSA-Verfahren zeitaufwändig ist (bei Verund mehr noch bei Entschlüsselung). Vergleiche dazu die Schlüssellänge von
DES und AES.
Software-Implementierungen von RSA sind derzeit ca. 100 mal langsamer als
DES. (Verschlüsseln ca. 15-20 kbit/sec., Entschlüsseln ca. 3-5 kbit/sec.)
Die Hardware-Implementierungen von RSA sind etwa 1000 mal langsamer
als Hardware-Implementierungen von DES (Durchsatz ca. 64 kbit/sec.; in
Planung sind Chips mit 1 Mbit/sec.)
Daher wird das RSA-Verfahren häufig nur zur Chiffrierung beim Schlüsselaustausch für symmetrische Verfahren eingesetzt.
5.5
Primzahltests
Zur Schlüsselerzeugung beim RSA-Verfahren werden große Primzahlen benötigt, etwa von Bitlänge 500, also in Dezimalstellung ca. 150-stellige Primzahlen.
Dazu geht man so vor, dass durch Zufallswahlen Zahlen im gewünschten
Größenbereich gewählt werden. Zunächst wird überprüft, ob eine so gewählte
Zahl durch eine kleine Primzahl (z.B. bis 106 , Liste) teilbar ist. Wenn dies
nicht der Fall ist, wird ein Primzahltest durchgeführt (dazu gleich Näheres).
Sollte sich herausstellen, dass die gewählte Zahl keine Primzahl ist, wird eine
weitere Zufallswahl durchgeführt.
Wann kann man dabei erwarten, eine Primzahl gefunden zu haben?
Der Primzahlsatz (Hadamard, de la Vall Poussin44 ) besagt, dass
π(x) ∼
x
,
ln x
π(x) = # Primzahlen ≤ x.
Man kann also erwarten, nach ln(10150 ) = 150 · ln10 ≈ 350 vielen Versuchen
eine Primzahl zu finden.
(Achtung: Aus dem Primzahlsatz kann man nicht entnehmen, dass in jedem
Fall zwischen x und x + ln x eine Primzahl liegt. Tatsächlich gilt nämlich
44
vgl. Chandrasekharan [11]
134
π(x) > lnxx für x ≥ 17 und π(x) < 1, 26· lnxx (Rosser, Schoenfeld), und hieraus
ergibt sich qualitativ nicht viel Besseres als das, was schon das sogenannte
Bertrand’sche Postulat (ein bewiesener Satz) besagt, dass nämlich zwischen
x und 2x eine Primzahl liegt.)
Wie sehen Primzahltests aus?
√
Die naheliegende Probedivision mit allen Zahlen ≤ n ist zu aufwändig. Wir
suchen Tests, deren Laufzeit polynomial in log n ist (wenn möglich).
Die meisten Primzahltests beruhen auf dem Satz von Fermat:
n ∈ N, n ≥ 2.
Dann: n Primzahl ⇔ an−1 ≡ 1 mod n für alle 2 ≤ a < n
Findet man ein a mit an−1 6≡ 1 mod n, so ist n zusammengesetzt.
Wenn aber n eine Primzahl ist, wieviele a muss man testen?
Im Prinzip alle. Wenn aber für zusammengesetzte n der Anteil a ∈ {2, ... n−1}
groß wäre (z.B. ≥ 12 ), für die an−1 6≡ 1 mod n, so könnte man nach genügend
vielen (etwa 100) Wahlen von a, die stets an−1 ≡ 1 mod n ergeben haben,
davon ausgehen, dass n eine Primzahl ist, denn eine zusammengesetzte Zahl
1
sich nicht als zusammenwürde nur mit einer Wahrscheinlichkeit ≤ 2100
gesetzte Zahl zu erkennen geben. Man hätte dann einen probabilistischen
Primzahltest. Tatsächlich funktioniert dieser Fermat-Test für viele Zahlen n.
Aber leider gibt es zusammengesetzte Zahlen n, für die das nicht der Fall
ist. Sie haben die Eigenschaft, dass nur für diejenigen a mit ggT(a, n) 6= 1
tatsächlich an−1 6≡ 1 mod n gilt, für die übrigen a (also ϕ(n) viele; das
ist die große Mehrzahl: lim ϕ(n)
= 1; Abschätzung nach Rosser, Schoenfeld:
n
n
ϕ(n) ≥ 6ln(ln(n)) für alle n ≥ 5), aber stets an−1 ≡ 1 mod n. Solche Zahlen
heißen Carmichael-Zahlen.
Zwar sind Carmichael-Zahlen selten (z.B. gibt es zwischen 1 und 100.000 nur
16 Carmichael-Zahlen; 561 ist die kleinste), aber es gibt unendlich viele.45
Um den Fall der Carmichael-Zahlen auszuschließen, muss man den FermatTest verfeinern. Eine solche Verfeinerung stellt der Miller-Rabin-Test dar. Er
ist auch ein probabilistischer Primzahltest, den wir jetzt kurz vorstellen. Er
beruht auf folgendem
Satz Sei n ∈ N ungerade, 2s die höchste Zweierpotenz, die n−1 teilt, k =
Ist n eine Primzahl und a ∈ N mit ggT(a, n) = 1, so gilt
45
siehe den Beweis von Alford, Granville und Pomerance, [3]
135
n−1
.
2s
entweder
oder
ak
r
a2 ·k
≡
1 mod n
≡ −1 mod n
für ein r ∈ {0, 1, . . . s − 1}
Findet man also eine Zahl a mit ggT(a, n) = 1, für die ak 6≡ 1 mod n und
r
a2 ·k 6≡ −1 für alle r ∈ {0, 1, . . . s − 1} gilt, so ist n zusammengesetzt. Eine
solche Zahl heißt Zeuge gegen die Primzahleigenschaft von n.
Nun kann man zeigen:
Ist n zusammengesetzt, n ≥ 3 ungerade, so gibt es in der Menge {1, . . . n−1}
höchstens n−1
Zahlen, die zu n teilerfremd sind und keine Zeugen gegen die
4
Primzahleigenschaft von n sind.
Miller-Rabin-Test:
Sei n ungerade, k wie oben.
Wähle a ∈ {2, 3 . . . n − 1} zufällig, gleichverteilt.
Ist ggT(a, n) 6= 1, so n zusammengesetzt.
s−1
Ist ggT(a, n) = 1, berechne ak , a2k , . . . a2 k .
i
Ist ak 6≡ 1 mod n und a2 k 6≡ −1 mod n, i = 1, . . . , s − 1, so ist n zusammengesetzt.
Andernfalls ist a kein Zeuge gegen die Primzahleigenschaft. Wähle neues a.
Dass man für eine zusammengesetzte Zahl n nach r Iterationen keinen Zeugen
gegen die Primzahleigenschaft von n gefunden hat, ist dann nur mit einer
Wahrscheinlichkeit ≤ 41r möglich.
Als probabilistischer Primzahltest wird der Miller-Rabin-Test so angewandt,
dass ein geeignetes r für die Anzahl der Iterationen festgelegt wird. Hat man
nach r Wahlen von a keinen Zeugen gegen die Primzahleigenschaft gefunden,
so wird n ist Primzahl“ausgegeben. Testet man Zahlen n unterhalb einer
”
Schranke N , so ist die Wahrscheinlichkeit, dass n eine Primzahl ist, wenn der
)
. Dies ist eine bedingte
Miller-Rabin-Test dies ausgibt, mindestens 1 − ln(N
4r
Wahrscheinlichkeit. Man erhält die angegebene Abschätzung, wenn man beN
nutzt, dass die Anzahl der Primzahlen ≤ N etwa ln(N
ist (Primzahlsatz).
)
Da der Euklidische Algorithmus polynomial in log(n) ist, s ≤ log n, überlegt
man sich leicht, dass der Miller-Rabin-Test ein probabilistischer polynomialer
Algorithmus für den Test auf Primzahleigenschaft ist.
Bis vor kurzem war es eine offene Frage, ob es deterministische polynomiale
Algorithmen zur Entscheidung, ob eine Zahl n eine Primzahl ist oder nicht,
gibt. Im August 2002 fanden Magrawal, N. Kayal, N. Saxena in Kanpur,
Indien eine positive Antwort.
136
Ihr Algorithmus beruht auf folgender Kennzeichnung von Primzahlen:
n prim ⇔ (x + a)n = xn + a in Zn [x] für alle a mit ggT(a, n) = 1
Rechne modulo xr − 1 mit kleinem Grad r.
Man braucht dann nur O(poly(log n)) viele Paare (r, a) zu testen. Algorithmus elementar. Zur Gültigkeit braucht man eine tiefen Satz der analytischen
Zahlentheorie (Goldfeld, 1969) über die Anzahl von Primzahlen p ≤ x, für
die p − 1 ebenfalls einen großen Primteiler besitzt.46 )
5.6
Diskrete Logarithmen und das Schlüsselaustauschverfahren von Diffie und Hellman
Wir betrachten jetzt eine andere Klasse von Funktionen, die als Kandidaten
für Einwegfunktionen angesehen werden, nämlich die ’diskreten’ LogarithmusFunktionen:
Sei p eine ungerade Primzahl, g eine Primitivwurzel mod p, d.h. < g >= Z∗p .
Zp−1 = {0, . . . p − 2} → Z∗p
Expp,g :
x 7→ g x
Inverse:
Logp,g :
Z∗p → Zp−1
y 7→ Logp,g (y)
Man kennt bis heute keine probabilistischen polynomialen Algorithmen zur
Berechnung von Logp,g . Sie gelten daher als Kandidaten für Einwegfunktionen; dies wird explizit gemacht durch die sogenannte Diskrete-LogarithmusAnnahme.
Sei Ik = {(p, g)| |p| = k, p ungerade Primzahl, g Primitivwurzel mod p}, k ∈
N. Sei P (x) ein positives Polynom und A(p, g, y) ein polynomialer probabilistischer Algorithmus. Dann existiert k0 ∈ N, so dass
pr(A(p, g, y) = Logp,g (y) | (p, g) ← Ik , y ← Z∗p ) ≤
1
P (k)
für alle k ≥ k0 .
Dabei ist die Gleichverteilung auf Ik und auf Z∗p angenommen, bezüglich derer
(p, g) und y zufällig ausgewählt werden.
46
s. http://www.cse.iitk.ac.in/news/primality.html und http://cr.yp.to/
papers.html
137
Die Nutzung des diskreten Logarithmus in der Kryptographie geschah zunächst nicht zur Konstruktion eines Verschlüsselungsverfahrens, sondern eines Verfahrens zum Schlüsselaustausch für symmetrische Verfahren.
Diffie-Hellman-Verfahren (Schlüsselaustausch)
Situation: Alice und Bob wollen sich auf einen Schlüssel K einigen, haben
aber nur eine Kommunikationsverbindung zur Verfügung, die abgehört werden kann.
Lösung: Bob und Alice einigen sich auf eine Primzahl p (p > gewünschter
Schlüssel K) und eine Primitivwurzel g mod p (2 ≤ g ≤ p − 2). (p und g
können öffentlich bekannt sein.)
1) Alice wählt zufällig a ∈ {2, . . . p − 2}.
Sie berechnet x = g a mod p und sendet x an Bob (a hält sie geheim).
2) Bob wählt zufällig b ∈ {2, . . . p − 2}.
Er berechnet y = g b mod p und sendet y an Alice (b hält er geheim).
3) Alice berechnet y a mod p = K.
Bob berechnet xb mod p = K.
K ist der gemeinsame Schlüssel (für ein symmetrisches Verfahren).
Gültigkeit des Verfahrens:
y a ≡ g ba ≡ g ab ≡ xb mod p
Beispiel:
p = 17, g = 3
(Beachte: 32 = 9 6≡ 1 mod 17
34 = 81 ≡ 13 6≡ 1 mod 17
38 ≡ 132 ≡ −1 mod 17
316 ≡ 1 mod 17)
Alice wählt a = 11.
311 = (34 · 3)2 · 3
34 ≡ 13 mod 17, 34 · 3 ≡ 5 mod 17, 52 ≡ 8 mod 17, 52 · 3 ≡ 7 mod 17
x ≡ 311 ≡ 7 mod 17
Bob wählt b = 4.
y = 34 ≡ 13 mod 17
138
Alice: K = y a = 1311 ≡ 4 mod 17
Bob: K = xb = 74 ≡ 4 mod 17
K=4
Wie berechnet man p und g?
Zur Bestimmung von Primzahlen, siehe Kapitel 5.5.
Wie bestimmt man Primitivwurzel g modulo p?
Ein g ∈ {2, . . . p − 2} ist genau dann eine Primitivwurzel modulo p, wenn
g p−1 ≡ 1 mod p, aber g i 6≡ 1 mod p für alle 1 ≤ i < p − 1. Tatsächlich genügt
es zu zeigen, dass g p−1
6≡ 1 mod p für alle Primteiler q von p − 1. Sind diese
q
also bekannt, so kann man schnell entscheiden, ob g Primitivwurzel ist.
Ohne die Faktorisierung von p − 1 zu kennen, ist kein schnelles Verfahren
bekannt, das testet, ob ein gegebenes g eine Primitivwurzel modulo p ist.
Es bleibt die Frage: Wenn man g zufällig aus {2, . . . p − 2} wählt, wie groß
ist die Chance, dass g Primitivwurzel modulo p ist?
Z∗p ist eine zyklische Gruppe und hat daher ϕ(p − 1) viele Erzeuger. Wir
p−1
hatten in Kapitel 5.5 gesehen, dass ϕ(p − 1) groß ist, ϕ(p − 1) ≥ 6 ln(ln(p−1))
.
D.h. bei Zufallsvariablen wird man relativ schnell eine Primitivwurzel modulo
p finden.
5.7
Sicherheit des Diffie-Hellman-Verfahrens
a) Ein Angreifer kennt p, g, x = g a mod p und y = g b mod p. Er will
den geheimen Schlüssel K = g ab mod p berechnen. Die einzig bekannte
Methode dafür ist, a aus x oder b aus y zu bestimmen, d.h. diskrete
Logarithmen mod p zu berechnen. Es ist aber nicht bekannt, ob die
Berechnung von K tatsächlich äquivalent zur Bestimmung von a oder
b ist.
b) Es gibt eine Reihe bekannter Algorithmen zur Bestimmung diskreter
Logarithmen. Die besten haben die gleiche Komplexität (in p) wie die
besten Faktorisierungsalgorithmen (in n). Daher gehen die Empfehlungen wie bei RSA dahin, Primzahlen mit 1024 Bit Länge zu wählen.
c) Ein anderes Risiko beim Diffie-Hellman-Verfahren (wie bei anderen zum
Schlüsselaustausch auch) besteht im sogenannten Man-in-the-middleAngriff.
Mallory wählt Exponent c ∈ {0, 1, . . . p − 2}.
Er fängt g a und g b ab.
139
Er sendet g c an Alice und Bob (die glauben g b bzw. g a erhalten zu
haben).
Alice berechnet KA = g ca und Bob berechnet KB = g cb . Sie denken,
dies ist ihr gemeinsamer Schlüssel.
Mallory kann (g a )c = g ca und (g b )c = g cb berechnen.
Schickt Alice an Bob eine mit KA verschlüsselte Nachricht, so kann
Mallory sie entschlüsseln (denn er kennt KA und KA ist ein Schlüssel
für ein symmetrisches Verfahren), lesen, ggf. verändern und mit KB
verschlüsselt an Bob schicken. Bob kann die empfangene Nachricht
entschlüsseln (er erhält ja eine mit dem ihm bekannten Schlüssel KB
verschlüsselte Nachricht) und schöpft keinen Verdacht.
Diesem Angriff kann nur durch Authentifizierungsmethoden begegnet
werden, auf die wir in Kürze zu sprechen kommen.
5.8
Das ElGamal-Verschlüsselungsverfahren
T. El Gamal (1984)
Das ElGamal-Verfahren zur Verschlüsselung beruht auf der Sicherheit des
Diffie-Hellman-Verfahrens.
Schlüsselerzeugung:
Alice wählt Primzahl p und eine Primitivwurzel mod p, g.
Sie wählt zufällig und gleichverteilt a ∈ {2, . . . p − 2}.
Sie berechnet x = g a mod p.
öffentlicher Schlüssel: (p, g, x)
Geheimer Schlüssel: a
Verschlüsselung:
Klartextraum {0, 1, . . . p − 1}
Bob will Alice den Klartext m senden. Bob wählt Zufallszahl b ∈ {2, . . . p−2}
und berechnet y = g b mod p. Dann bestimmt er f = xb m mod p.
Chiffretext ist (y, f )
Entschlüsselung:
Alice hat von Bob Schlüsseltext (y, f ) erhalten.
Sie berechnet s = p − 1 − a; 1 ≤ s ≤ p − 3.
Sie berechnet dann y s f mod p. Dies ist der ursprüngliche Klartext m.
Korrektheit der Entschlüsselung:
y s · f ≡ g bs xb m ≡ g b(p−1)−ba g ba m ≡ m mod p
140
Beispiel:
Schlüssel von Alice: p=17 , g = 3, a=11
x = 311 mod 17 = 7
(Siehe Beispiel zum Diffie-Hellman-Verfahren auf S. 138.)
öffentlicher Schlüssel von Alice: (p = 17, g = 3, x = 7)
Geheimer Schlüssel von Alice: a = 11
Bob will Klartext m verschlüsselt an Alice senden. m = 10
Bob wählt b = 4.
y ≡ 34 mod 17, also y = 13.
f ≡ xb m ≡ 74 · 10 ≡ 4 · 10 ≡ 6 mod 17
Chiffretext ist (13, 6).
Entschlüsselung durch Alice:
s = p − 1 − a = 5.
y s f = 135 · 6 ≡ 13 · 6 ≡ 10 mod 17.
Klartext lautet 10.
Eiffizienz des Verfahrens:
Zum Verschlüsseln sind zwei modulare Exponentiationen modulo p (xb mod
p, g b mod p) erforderlich. Dabei ist die Größenordnung von p ebenso groß
wie die Größenordnung von n bei RSA-Verfahren (1024 Bit). RSA benötigt
aber nur eine Exponentation. Aber: xb mod p, g b mod p können im Voraus
berechnet werden und müssen dann nur sicher gespeichert werden (Chipkarte). Voraussetzung ist dabei die Kommunikation mit einem festen Partner (z.B. Bank). Dann erfordert die Verschlüsselung nur eine Multiplikation
mod p (dies birgt aber Sicherheitsrisiken). Effizienznachteil: Die verschlüsselte Nachricht ist doppelt so lang wie der Klartext.
Sicherheit des Verfahrens:
• ElGamal ist genauso schwer zu knacken wie Diffie-Hellman:
Ang. Mallory kann ElGamal knacken, d.h. aus (p, g, x) und (y, f ) kann
er m bestimmen (für jede Nachricht m).
Dann kann er aus p, g, x = g a mod p, y = g b mod p auch K = g ab mod
p bestimmen:
Er wendet ElGamal-Entschlüsselung auf (p, g, x) und (y, 1) an.
Er erhält eine Nachricht m.
Er weiß: 1 = g ab m mod p. Dann g ab ≡ m−1 mod p.
Umgekehrt: Ang. Mallory kann Diffie-Hellman knacken, d.h. aus Kenntnis von (p, g, x, y) auf K = g ab mod p schließen.
141
Ang. Mallory erhält ElGamal Chiffretext (y, f ) (öffentlicher Schlüssel
(p, g, x)).
Er kann K = g ab mod p bestimmen. Da f = g ab · m mod p, kann er
durch K −1 f mod p den Klartext m bestimmen.
• b sollte bei jeder Verschlüsselung neu gewählt werden. Das so randomisierte Verschlüsselungsverfahren erschwert z.B. die Anwendung statistischer Tests zur Kryptoanalyse.
Es macht auch folgenden Angriff wirkungslos:
Ang. Angreifer kennt einen Klartext m und chiffrierten Text (y, f ), der
mit (p, g, x) und y = g b mod p verschlüsselt wurde. Wird zum Verschlüsseln eines zweiten Klartextes m′ das gleiche b, d.h das gleiche y
verwendet, f ′ = xb m′ mod p, so gilt:
f ′ f −1 ≡ m′ m−1 mod p
Damit lässt sich m′ ≡ f ′ f −1 m mod p ermitteln.
5.9
Erweiterungen der Diffie-Hellman und ElGamalVerfahren
Die beiden Verfahren lassen sich übertragen auf andere Gruppen G als auf
Z∗p . Man wählt dann g ∈ G und hat dann das diskrete Logarithmus-Problem
in < g > zu lösen. Dazu muss man in G (bzw. der Untergruppe < g >) effizient rechnen können, das diskrete Logarithmus-Problem muss aber schwer
zu lösen sein.
Ein in letzter Zeit vorgeschlagener und inzwischen auch schon implementierter Kandidat für G ist die Punktgruppe einer elliptischen Kurve über einem
endlichen Körper (Miller 1985; Koblitz 1987). Die entsprechenden ellipticcurve-cryptosystems sind offenbar mindestens so sicher wie diejenigen, die
auf dem diskreten logarithmischen Problem in Z∗p beruhen, wobei man mit
deutlich kleineren Schlüssellängen auskommt.
[Elliptische Kurven sind die Lösungsmengen von Gleichungen der Form y 2 =
x3 + ax + b (dies ist etwas vereinfacht).
Auf diesen Lösungsmengen kann man eine Gruppenoperation definieren.47 ]
47
Einzelheiten siehe z.B. Koblitz, Algebraic Aspects of Cryptography [24], Chapter 6
oder Trappe, Washington, Introduction to Cryptography and Coding Theory [31], Chapter
15
142
5.10
Modulares Quadrieren, das Verfahren von Rabin
und der Blum-Blum-Shub Pseudozufallsfolgengenerator
M. Rabin hat 1979 ein Verschlüsselungsverfahren vorgeschlagen, das darauf
beruht, dass modulares Quadrieren modulo n einfach, das Quadratwurzelziehen modulo n aber, falls n Prudukt zweier (großer) Primzahlen ist, schwierig
ist.
Konkret wird bei diesem Verfahren n = p · q gewählt, wobei p, q ≡ 3 mod 4.
Die Abbildung
∗
Zn → Z∗n ist dann ein Kandidat für eine Einwegfunktion.
Quad :
x 7→ x2
(Beachte: Quad ist weder surjektiv noch injektiv; insbesondere hat ein Quadrat immer vier Quadratwurzeln. Man kann diese Funktion aber bijektiv
machen , indem man sie auf die Menge der Quadrate in Z∗n (den quadratischen Resten modulo n) einschränkt.)
Man kann zeigen, dass das Berechnen der Quadratwurzeln modulo n genauso
schwierig ist wie die Faktorisierung von n (beachte Unterschied zum RSAVerfahren).
Das Verschlüsselungsverfahren von Rabin besteht gerade in der Anwendung
der Funktion Quad. Kennt man p und q, so kann man die Quadratwurzeln
von einem y leicht berechnen:
±y
p+1
4
+ pZ ,
±y
q+1
4
+ qZ
sind die beiden Quadratwurzeln modulo p bzw. modulo q. Mit dem Chinesischen Restsatz erhält man daraus die vier Quadratwurzeln modulo n.
[Man muss dann noch sicherstellen, dass der Empfänger erkennen kann, welches die richtige Wurzel ist.48 ]
Das Rabin-Verfahren ist gegen einen Typ von Choosen-Ciphertext-Angriff
nicht sicher, und wird daher in der Praxis nicht häufig eingesetzt.
Wie bei den anderen Kandidaten für Einwegfunktionen (RSA-Funktionen,
Exponentialfunktionen) kann auch Quad verwendet werden, um Pseudozufallsfolgen-Generatoren zu konstruieren. Dieser ist besonders populär und
48
Details siehe Buchmann, Einführung in die Kryptographie [9], Kapitel 7.4
143
wird nach seinen Erfindern Blum-Blum-Shub-Generator (BBS-Generator) genannt49 . Entsprechend den Überlegungen in Kapitel 4.9 benötigt man dazu
ein Hard-Core-Prädikat für Quad.
Man kann zeigen, dass das niedrigste Bit von x ein Hard-Core-Prädikat für
Quad ist.50
Der BBS-Generator arbeitet daher folgendermaßen:
’Initial seed’ x. x0 = x2 mod n.
Zufallsfolge b1 , b2 , . . . erzeugt durch:
1) xj = x2j−1 mod n
2) bj = niedrigstes Bit von xj (least significant bit)
49
Publikation: Blum, Blum and Shub (1986), A Simple Unpredictable Random Number
Generator [8], pp. 364-383
50
siehe z.B. Delfs, Knebel [13], Kapitel 7.3
144
6
Digitale Signaturen und kryptographische
Hashfunktionen
6.1
Grundidee digitaler Signaturen
Die Anforderungen an die digitale Signatur eines elektronischen Dokuments
sind die gleichen wie bei gewöhnlichen Unterschriften:
Niemand kann ein Dokument mit der Signatur einer Person A
signieren, selbst wenn er Signaturen von A aus anderen Dokumenten kennt.
Daher kann auch A nicht abstreiten, ein Dokument signiert zu haben.
Ferner: Signatur lässt sich nicht vom Dokument entfernen.
Also: Digitale Signatur muss einen unauflösbaren Zusammenhang zu
• dem Unterzeichner des Dokuments (Identitätseigenschaft) und
• dem signiertem Dokument (Echtheitseigenschaft)
besitzen.
Ferner: Jeder Empfänger muss die digitale Signatur verifizieren können (Verifikationseigenschaft).
Signaturschema (vereinfachte Form):
Jedem Teilnehmer A des Systems wird eine Signaturfunktion sA und eine
Verifikationsfunktion vA zugeordnet.
sA ist geheim (also nur A bekannt).
vA ist öffentlich.
Aus vA lässt sich praktisch nicht sA bestimmen.
A signiert die Nachricht m folgendermaßen:
A berechnet sA (m) und sendet (m, sA (m)).
Der Empfänger kann mit vA die Echtheit der Signatur prüfen.
Oft: vA ist Umkehrfunktion zu sA , d.h. vA (sA (m)) = m. Aus der Identitätseigenschaft folgt dann, dass vA eine Einwegfunktion sein muss. Daher werden
Signaturschemata häufig mit Mitteln der Public-Key-Kryptographie realisiert. Ein Beispiel werden wir anhand der ElGamal-Signatur auf Seite 153
angeben.
145
Notwendig für dieses Signaturschema ist ferner, dass das Verzeichnis der
öffentlichen Verifikationsfunktion vor Veränderungen durch Unbefugte geschützt ist. Andernfalls könnte ein Betrüger die öffentliche Verifikationsfunktion eines Teilnehmers durch seine eigene ersetzen und dann in dessen Namen
Signaturen (mit seiner Signaturfunktion, also der des Betrügers) erzeugen.
Dies führt zur Notwendigkeit von Trusted Centers oder Certification Authorities (Zertifizierungsstellen), die einen wichtigen Bestandteil der sogenannten
Public-Key-Infrastruktur darstellen. Hierauf werden wir in dieser Vorlesung
nicht eingehen.51
Werden Signaturschemata mit Public-Key-Systemen realisiert, so ist i.a. die
Signatur sA (m) der Nachricht m ebenso lang wie m. Dies ist nicht sehr effizient. Aus diesem Grund, aber auch aus Sicherheitsgründen, auf die wir bei
den speziellen Signaturverfahren noch eingehen, wird i.a. nicht die Nachricht
m, sondern ein Hashwert H(m) von m signiert (H öffentlich). Wir gehen
daher zunächst auf kryptographische Hashfunktionen ein.
6.2
Kryptographische Hashfunktionen
Definition: Eine Hashfunktion ist eine Abbildung H : Σ∗ → Σn (n ∈ N )
(Σ Alphabet; Σ∗ = Menge aller endlichen Strings über Σ, Σn = Menge aller
Strings der Länge n.)
Also: Hashfunktionen sind nie injektiv.
Beispiel: Quersumme mod 2, Σ = {0, 1}, n = 1
Hashfunktionen können mit Hilfe von Kompressionsfunktionen erzeugt werden:
K : Σm → Σn
(n, m ∈ N), wobei m > n
Hashfunktionen und Kompressionsfunktionen werden häufig in der Informatik verwendet. Dabei sind immer zwei Dinge wichtig:
• H (bzw. K) muss schnell berechenbar sein
• Der Fall H(x) = H(x′ ) für x 6= x′ sollte nicht zu häufig auftreten
(analog für K). Eine solche Situation nennt man Kollision. Sie ist nicht
vermeidbar, da H (bzw. K) nicht injektiv ist.
51
Näheres dazu z.B. in ausführlicher Darstellung in Schmeh, Kryptografie [28], knapp in
Buchmann, Einführung in die Kryptografie [9]. Standardwerk: Adams und Lloyd, Understanding Public-Key Infrastructure [1], Auszüge unter http://www.pkiforum.com/
books/adams\ understandingpki.html
146
Für kryptographische Zwecke ist aber eine weitere Eigenschaft wichtig:
Wenn eine Nachricht m mit dem signierten Hashwert sT (H(m)) von T versandt wird, so kann jeder Angreifer H(m) ermitteln.
Gelingt es ihm, eine Nachricht m′ zu finden mit H(m) = H(m′ ), so wird
(m′ , sT (H(m))) = (m′ , sT (H(m′ ))) vom Empfänger als eine korrekt signierte
Nachricht angesehen. Dies führt zu folgenden Forderungen an kryptographische Hashfunktionen:
(1) H ist effizient berechenbar.
(2) H ist eine Einwegfunktion.
(3) H ist schwach kollisionsresistent, d.h. für ein gegebenes x ist es nicht
effektiv möglich (polynomialer Algorithmus), ein x 6= x′ zu finden mit
H(x′ ) = H(x).
Einer Verschärfung von (3) ist
(3’) H ist stark kollisionsresistent, d.h. es ist nicht effektiv möglich, x 6= x′
zu finden mit H(x) = H(x′ ).
(Werte von kryptographischen Hashfunktionen werden auch digital fingerprints oder message digests genannt.)
Klar: (3’) ⇒ (3). Man kann auch zeigen: (3’) ⇒ (2).
(Hat man einen Invertierungsalgorithmus A für H (d.h einen, der Urbilder
findet), so liefert A zu gegebenem x ein Element x′ = A(H(x)). Ist die
Menge der Urbilder zu H(x) größer als 1 – und das ist bei einer Hash- bzw.
Kompressionsfunktion im Durchschnitt der Fall – so ist die Chance, dass
x′ 6= x im Durchschnitt mindestens 12 . Dies führt zu einem probabilistischen
Algorithmus zur Erzeugung von Kollisionen.)
Man ist also in der Kryptographie an stark kollisionsresistenten Hashfunktionen interessiert. Dabei gilt:
Satz (Merkle)
n
Aus einer stark kollisionsresistenten Kompressionskunktion Zm
2 → Z2 lässt
sich eine stark kollisionsresistente Hashfunktion Z∗2 → Zn2 konstruieren.52
52
Beweis bei Buchmann [9], Kapitel 10.4. und bei Stinson [30], Kapitel 7.5
147
Da die Existenz stark kollisionsresistenter Hashfunktionen (oder Kompressionsfunktionen) die Existenz von Einwegfunktionen impliziert, weiß man
derzeit nicht, ob solche Hashfunktionen existieren (vgl. 4.10).
Daher benutzt man in der Praxis Hashfunktionen, deren Kollisionsresistenz
bisher noch nicht widerlegt wurde. Im allgemeinen beruhen diese auf Verschlüsselungsverfahren, die als sicher gelten:
Sei n die gewünschte Länge des Hashwertes.
Benötigt wird ein Verschlüsselungsverfahren, dessen Klartextmenge, Schlüsselmenge und Chiffretextmenge Zn2 ist. Sei Ek : Zn2 → Zn2 , k ∈ Zn2 , die Verschlüsselungsfunktion zum Schlüssel k.
Dann kann man eine Hashfunktion H : Z∗2 → Zn2 folgendermaßen definieren:
Sei x = x1 . . . xe , xi ∈ Zn2 . (ggf. muss man x durch geeignetes ’Padding’ auf
eine Länge vergrößern, die ein Vielfaches von n ist).
Wähle einen Eingangswert k0 ∈ Zn2 .
n
Setze ki = f (xi , ki−1 ), wobei f : Z2n
2 → Z2 eine geeignete Funktion ist, die
die Verschlüsselungsfunktion involviert.
Sei schließlich H(x) = ke .
Viele Wahlen von f führen trotz sicheren Verschlüsselungsverfahren zu unsicheren Hashfunktionen. Vier Typen scheinen allerdings nach jetzigem Stand
sicher zu sein (falls die Verschlüsselungsfunktion sicher ist):
ki
ki
ki
ki
= Eki−1 (xi ) ⊕ xi
= Eki−1 (xi ) ⊕ xi ⊕ ki−1
= Eki−1 (xi ⊕ ki−1 ) ⊕ xi
= Eki−1 (xi ⊕ ki−1 ) ⊕ xi ⊕ ki−1
Wie groß sollte bei einer Hashfunktion die Länge n des Hashwertes gewählt
werden?
Natürlich nicht zu groß, denn darin liegt der Sinn von Hashfunktionen. Andererseits führen zu kleine n zu einer Auffälligkeit bezüglich starker Kollisionsresistenz.
Dies ist der Ansatzpunkt der sogenannten Geburtstagsattacke, die auf dem
sogenannten Geburtstagsparadox beruht.
Satz (Geburtstagsparadox):
Ein Merkmal komme in m verschiedenen Ausprägungen vor. Jede Person besitze genau√eine dieser Merkmalsausprägungen.
√
2)
Ist k ≥ (1+ 1+8m·ln
m, so ist die Wahrscheinlichkeit, dass unter k
≈
1,
18
2
148
Personen zwei die gleiche Merkmalsausprägung haben, mindestens 21 .
(Speziell: Merkmalsausprägung = Geburtstagsdatum, m = 365: Bei 23 Personen ist die Wahrscheinlichkeit mindestens 21 , dass zwei am gleichen Tag
Geburtstag haben.)
Beweis: Wir beschreiben die Merkmalsausprägungen mit den Zahlen 1, . . . m
und betrachten den Wahrscheinlichkeitsraum {1, . . . m}k mit Gleichverteilung. Jedes Elementarereignis (g1 , . . . gk ) ∈ {1, . . . m}k hat also die Wahrscheinlichkeit m1k .
Das Elementarereignis (g1 , . . . gk ) tritt ein, wenn die i-te Person die Merkmalsausprägung gi besitzt.
Wir groß ist die Wahrscheinlichkeit q, dass k Personen alle verschiedene Merkmalsausprägungen haben?
|{(gi , . . . gk )| alle gi verschieden}|
q=
=
mk
k−1
Q
i=0
(m − i)
mk
=
k−1
Y
i=0
(1 −
i
)
m
Es ist ex ≥ 1 + x für alle x ∈ R. Also gilt:
q≤
k−1
Y
i
−m
e
−
=e
k−1
P
i=0
i
m
= e−
k(k−1)
2m
i=0
Damit:
−
e
k(k−1)
2m
1
k(k − 1)
1+
≤ ⇔−
≤ − ln 2 ⇔ k ≥
2
2m
√
1 + 8m · ln 2
2
Daraus folgt die Behauptung des Satzes.
Wie sieht nun die Geburtstagsattacke aus?
Sei Σ = Z2 .
H : Z∗2 → Zn2 Hashfunktion.
Ein Angreifer erzeugt möglichst viele Hashwerte. Diese werden nach Kollision
nen untersucht. Nach dem Satz ist bei etwas mehr als 2 2 vielen Hashwerten
die Wahrscheinlichkeit mindestens 21 , dass eine Kollision vorliegt. Daran sieht
man, dass z.B. n = 64 keine ausreichende Sicherheit bietet (232 ≈ 4 · 109 ).
Verwendet man also eine Hashfunktion, die, wie oben beschrieben, auf einem Verschlüsselungsverfahren beruht, so ist eine Schlüssellänge von n = 64
nicht ausreichend. Heutzutage wählt man n ≥ 128, für Hashfunktionen mit
digitalen Signaturen n ≥ 160.
149
Die in der Praxis am häufigsten benutzten kryptographischen Hashfunktionen beruhen in der Regel nicht auf Verschlüsselungsverfahren, sondern sind
speziell für kryptographische (insbesondere Signatur-) Zwecke konstruiert.
Sehr verbreitet war lange die Hashfunktion MD4 (Message Digest 4) von Ron
Rivest. Mit Angriffsmethoden, die in den letzten Jahren entwickelt wurden,
ist es aber relativ einfach, Kollisionen bei MD4 zu erzeugen.
Eine Weiterentwicklung ist MD5, das auch heute noch oft benutzt wird, obgleich H. Dobbertin (Bundesamt für Sicherheit in der Informationstechnik)
auch hier eine Schwäche in der Kollisionsresistenz bei der Kompressionsfunktion innerhalb MD5 gefunden hat. Diese Schwachstelle hat sich bisher nicht
auf das ganze Verfahren übertragen lassen, aber hat zu Unsicherheitsgefühlen
geführt. MD5 liefert Hashwerte von 128 Bit. Daher wird heute vermehrt die
kryptographische Hashfunktion SHA-1 (Secure Hash Algorithm One) verwendet,53 die von der NSA entwickelt wurde. Bei ihr sind bisher noch keine
Schwächen entdeckt worden. SHA-1 liefert Hashwerte von 160 Bit (wird in
PGP 7.0.3 verwendet).54
Beachte:
Anwenden einer Hashfunktion H auf Dokument m liefert keine digitale Signatur. Zwar wird die Echtheitseigenschaft des Dokuments gewährleistet (da
man H(m) aus dem öffentlich bekannten H selbst berechnen kann und mit
dem gesuchten Hashwert vergleichen kann), nicht aber die Identitätseigenschaft: Jeder kann H(m) herstellen.
6.3
Signaturen mit Hashfunktionen
Gegeben sei ein Signaturschema mit Signaturfunktionen sA und öffentlichen
Verifikationsfunktionen vA (für jeden Teilnehmer A). Ferner sei eine öffentlich
bekannte kryptographisch sichere Hashfunktion H gegeben.
A will Nachricht m an B senden und Signatur anfügen. Zur Signatur berechnet A den Hashwert x = H(m) von m. Sie signiert x : sA (x) und sendet
(m, sA (x)) an B.
53
Z.B. in S/MIME (Secure/Multipurpose Internet Mail Extensions), einem hierarchischen Zertifizierungsmodell, bei dem die Echtheit übermittelter Daten von einer übergeordneten Instanz bestätigt wird.
54
Einzelheiten über die Funktionsweise von SHA-1 u. MD5 siehe z.B. Schmeh, Kryptographie [28], Schneier, Angewandte Kryptographie [29] und Menezes, van Oorschott,
Vanstone, Handbook of Applied Cryptography [26].
150
Verifikation der Signatur durch B:
B berechnet H(m) = x und verifiziert mit vA , ob sA (x) die Signatur von x
ist. Ist dies der Fall, wird die Signatur akzeptiert.
Kann ein Angreifer m zu m′ ändern und mit der Signatur von A versehen?
Er hat zwei Möglichkeiten:
• Er müsste Signatur von A von H(m′ ) anfertigen. sA ist aus vA aber
praktisch nicht berechenbar.
• Er müsste m′ finden mit sA (H(m′ )) = sA (H(m)) (dann würde (m′ , sA (x))
akzeptiert). Das bedeutet, er müsste Kollision von H erzeugen (sogar
zu vorgegebenem m). Dies ist aber wegen der Kollisionsresitsenz von
H praktisch nicht möglich.
6.4
RSA-Signaturen
Vereinfachte Version (ohne Hashfunktion)
Wie bei RSA-Verschlüsselung hat jeder Teilnehmer A einen öffentlichen Schlüssel
(n, e) und einen geheimen Schlüssel d. Diese werden wie im RSA-Verfahren
erzeugt.
Erzeugung der Signatur einer Nachricht m ∈ {0, 1, . . . n − 1}:
A berechnet s = md mod n. s ist die Signatur von m.
A sendet (m, s) an B.
Verifikation durch B:
B berechnet se mod n.
Stimmt das Ergebnis mit m überein, wird die Signatur akzeptiert. Denn B
sieht daran, dass s mit dem geheimen Schlüssel von A erzeugt wurde, den nur
A kennt. Damit sind Echtheitseigenschaft und Identitätseigenschaft gewährleistet. (Bei sprachlichen Nachrichten m wird oft auch nur s = md mod n
gesendet; liefert se mod n einen sinnvollen Text, so wird dieser als m akzeptiert.)
Sicherheit:
• Solange das RSA-Verfahren sicher ist, kann niemand ohne Kenntnis
von d die Signatur s von m erzeugen.
151
• Die beschriebene einfache Version der RSA-Signatur birgt jedoch die
Gefahr der sogenannten existentiellen Fälschung (existential forgery):
Mallory wählt s ∈ {0, . . . n − 1} und behauptet, dies sei eine Signatur
von Alice. Wer das verifizieren will, berechnet m = se mod n mit dem
öffentlichen Schlüssel von Alice und glaubt, Alice habe m signiert. In
aller Regel wird m ein sinnloser Text sein, aber bei kurzen Mitteilungen
von Zahlenwerten besteht hier eine Gefahr.
• Sind m1 , m2 ∈ {0, . . . n − 1} und s1 = md1 mod n und s2 = md2 mod n
die zugehörigen Signaturen, so kennt man die Signatur von m1 m2 (falls
m1 m2 < n): (m1 m2 )d mod n = s1 s2 mod n.
Aus zwei gültigen Signaturen lässt sich eine gültige dritte gewinnen
(Multiplikativität).
Es gibt verschiedene Möglichkeiten, den beiden genannten Gefahren zu begegnen. Eine ist die Verwendung von Signaturen eines Hashwertes, die zudem
Effizienzvorteile bringt.
RSA-Signatur mit Hashfunktion
Sei m ein beliebiger Text (m ∈ Z∗2 ). Zur Signatur von m verwendet A öffentm
lich bekannte, kollisionsresistente Hashfunktion H : Z∗2 → Zm
2 (2 ≤ n, n aus
dem RSA-Verfahren) und verfährt wie in 6.3 beschrieben. Man sieht leicht,
dass mit diesem Verfahren die oben genannten Angriffe unmöglich gemacht
werden.
In der Praxis konstruiert man H mit einer kollisionsresistenten Hashfunktion,
die z.B. einen 160-Bit-String erzeugt und wendet darauf eine Expansionsfunktion an, die den 160-Bit-String auf einen m-Bit-String abbildet.
Einzelheiten sind in einem Public Key Cryptography Standard (PKCS) festgelegt, in diesem Fall in PKCS#1. PKCS#1 beschreibt Verfahren der Datenaufbereitung für RSA-Verschlüsselung und -Signatur. (Die bisher existierenden PKCS#1 bis PKCS#15 sind von der Firma RSA Security entwickelte
Standards, die hauptsächlich Datenformate für die Public-Key-Kryptographie
festlegen.55 )
55
Näheres zu diesen Standards in: K. Schmeh, Kryptographie [28]
152
6.5
ElGamal-Signatur
Das ElGamal-Verschlüsselungsverfahren ist nicht unmittelbar für Signaturen anwendbar (wie RSA), da die Entschlüsselung von einer Zufallswahl des
Absenders abhängt; Entschlüsselung und Verschlüsselung sind nicht einfach
vertauschbar. Das ElGamal-Signaturverfahren muss daher anders konstruiert
werden:
Wie beim ElGamal-Verschlüsselungsverfahren hat jeder Teilnehmer A einen
öffentlichen Schlüssel (p, g, x) und einen geheimen Schlüssel a (p Primzahl, g
Primitivwurzel mod p, a ∈ {2, . . . p − 2}, x = g a mod p).
Erzeugung der Signatur einer Nachricht m ∈ Z∗2 :
A benutzt öffentlich bekannte kollisionsresistente Hashfunktion H :
Z∗2 → {1, 2, . . . p − 2}. (Ist H : Z∗2 → Zn2 , so muss 2n ≤ p − 2 gelten, damit
die Hashwerte als Elemente in {1, 2, . . . p − 2} interpretiert werden können.)
A wählt Zufallszahl k ∈ {1, 2, . . . p − 2} mit ggT(k, p − 1) = 1.
Sie berechnet r = g k mod p und s = k −1 (H(m) − ar) mod (p − 1)
(k −1 Inverses von k mod (p − 1).)
Signatur sA (m) = (r, s). Gesendet wird (m, sA (m)).
Verifikation durch Empfänger:
B kennt öffentlichen Schlüssel (p, g, x) von A und die Hashfunktion H. Er
erhält von A die signierte Nachricht (m, sA (m)), wobei sA (m) = (r, s).
B verifiziert, dass 1 ≤ r ≤ p − 1. Falls dies nicht gilt, wird Signatur zurückgewiesen.
Falls 1 ≤ r ≤ p − 1, so überprüft B, ob xr rs ≡ g H(m) mod p gilt. Wenn ja, so
akzeptiert er die Signatur, sonst nicht.
Gültigkeit der Verifikation:
Ist (r, s) wie oben konstruiert worden, so gilt wegen r = g k mod p und s =
k −1 (H(m) − ar) mod (p − 1):
xr rs ≡ g ar g ks ≡ g ar g H(m)−ar ≡ g H(m) mod p.
Beispiel:
p = 17, g = 3, a = 11, x = 311 mod 17, also x = 7.
öffentlicher Schlüssel von A : (p, g, x) = (17, 3, 7)
Geheimer Schlüssel von A : a = 11
A will Nachricht m mit Hashwert H(m) = 10 signieren.
Sie wählt k ∈ {1, . . . 15} mit ggT(k, 16) = 1.
Etwa: k = 13.
153
Berechnung von k −1 mod 16 (mit erweitertem Euklidischen Algorithmus) liefert k −1 = 5 (13 · 5 = 65 ≡ 1 mod 16).
r = g k mod p : 313 ≡ 12 mod 17, also r = 12.
s = k −1 (H(m) − ar) mod (p − 1): 5 · (10 − 11 · 12) ≡ 14 mod 16, also s = 14.
Signatur von m : (12, 14).
Verifikation durch B:
B berechnet aus m den Hashwert H(m) = 10 und bestimmt dann g H(m)
modulo p : 310 ≡ 8 mod 17
Dann berechnet er xr rs mod p und vergleicht, ob dies das gleiche Ergebnis
wie g H(m) mod p liefert (also 8): 712 · 1214 ≡ 13 · 15 ≡ 8 mod 17
Signatur wird akzeptiert.
Sicherheit:
• Warum Überprüfung 1 ≤ r ≤ p − 1 ?
Wenn dies nicht geschieht, kann Angreifer Mallory, falls er eine gültige
Signatur (r, s) von A einer Nachricht m kennt, jede andere Nachricht
m′ mit der Signatur von A versehen (sofern ggT(H(m), p − 1) = 1):
Mallory berechnet u = H(m′ )H(m)−1 mod (p − 1) und daraus s′ =
su mod (p − 1).
Mit Hilfe des Chinesischen Restsatzes berechnet er dann r′ mit
1 ≤ r′ ≤ p(p − 1), so dass
r′ ≡ ru mod (p − 1) und
r′ ≡ r mod p.
Dann ist (r′ , s′ ) eine gültige Signatur (von A) der Nachricht m′ (wenn
man nicht 1 ≤ r′ ≤ p − 1 überprüft !):
′
′
′
′
′
′
′
xr r′s ≡ xr rs ≡ g ar g ks ≡ g u(ar+ks) ≡ g uH(m) ≡ g H(m ) mod p
(r′ verletzt den Test 1 ≤ r′ ≤ p − 1: r′ ≡ ru mod (p − 1). Wäre
ru ≡ r mod (p − 1), so H(m′ )H(m)−1 ≡ u ≡ 1 mod (p − 1). Dann
H(m′ ) = H(m), da 1 ≤ H(m′ ), H(m) ≤ p − 1. Dies widerspricht der
Kollisionsresistenz von H. Also: r′ 6≡ r mod (p − 1), aber r′ ≡ r mod p.
Daher r′ ≥ p.)
154
• Kann Mallory Signatur von A einer Nachricht m fälschen, ohne dass er
a kennt ?
1. Möglichkeit:
Er wählt r und versucht einen passenden Wert s zu finden. Dann muss
xr rs ≡ g H(m) mod p gelten, d.h. er muss den diskreten Logarithmus
von x−r g H(m) zur Basis r modulo p finden. Das ist schwierig.
2. Möglichkeit:
Er wählt s und versucht einen passenden Wert r zu finden. Dazu muss
er xr rs ≡ g H(m) mod p nach r auflösen“. Hierfür sind keine effizienten
”
Lösungsalgorithmen bekannt, obwohl das Problem nicht direkt mit der
Berechnung diskreter Logarithmen zusammenhängt.
Man kennt auch keine effektive Methode, (r, s) ohne Kenntnis von a
simultan zu bestimmen, so dass es eine gültige Signatur von m durch
A ist.
• Für die Sicherheit des ElGamal-Verfahrens ist die Verwendung einer
Hashfunktion notwendig. Würde nämlich eine Nachricht m direkt signiert, so lautet die Verifikationskongruenz
xr rs ≡ g m mod p.
Dann kann man (r, s, m) bestimmen, die diese Kongruenz erfüllen; allerdings kann man dabei m nicht vorgeben (existentielle Fälschung).
Man wählt u, v ∈ Z, wobei ggT(v, p − 1) = 1.
Man setzt r = g u xv mod p, s = −rv −1 mod (p − 1) und m = s u mod
(p − 1).
Dann gilt: xr rs ≡ xr g us xvs ≡ xr g us x−r ≡ g m mod p.
Bei Verwendung von Hashwerten kann man auf diese Weise nur die
Signatur eines Hashwertes erzeugen, aber dann nicht eine zugehörige Nachricht zu diesem Hashwert bestimmen (wegen der Einwegeigenschaft der Hashfunktion).
• Notwendig für die Sicherheit der ElGamal-Signatur ist auch, dass bei
jeder Signatur ein neues k zufällig aus {1, . . . p−2} (mit ggT(k, p−1) =
1) gewählt wird:
Angenommen für die Signatur zweier Nachrichten m1 , m2 wird das gleiche k, also auch das gleiche r = g k mod p verwendet.
Seien (r, s1 ), (r, s2 ) die beiden Signaturen von m1 , m2 .
Dann s1 − s2 ≡ k −1 (H(m1 ) − H(m2 )) mod (p − 1).
155
Ist ggT(H(m1 ) − H(m2 ), p − 1) = 1 (dies ist häufig der Fall), so kann
man hieraus k bestimmen (beachte 1 ≤ k ≤ p − 2).
Es ist s1 ≡ k −1 (H(m1 ) − ar) mod (p − 1). Da s1 , k, H(m1 ), r bekannt
sind, kann man hieraus den geheimen Schlüssel a bestimmen (beachte
2 ≤ a ≤ p − 2).
Effizienz des Verfahrens
Die Erzeugung der Signatur erfordert eine Anwendung des erweiterten Euklidischen Algorithmus zur Bestimmung von k −1 mod p − 1 und eine modulare
Exponentiation r = g k mod p.
Beide sind als Vorausberechnungen möglich (dann ist aber eine sichere Speicherung notwendig, bis eine Nachricht signiert wird). Die aktuelle Signatur
erfordert dann nur zwei modulare Multiplikationen, ist also sehr schnell.
Verifikation erfordert drei modulare Exponentiationen (mehr als bei RSASignatur).
Eine Beschleunigung ist möglich, indem man die Kongruenz g −H(m) xr rs ≡
1 mod p verifiziert und auf der linken Seite möglichst viele Exponentiationen
simultan durchführt.56
6.6
Der Digital Signature Algorithm (DSA)
Es gibt zahlreiche Varianten des ElGamal-Signatur-Verfahrens. Eine besonders effiziente wurde 1991 vom NIST (National Institute of Standards and
Technology) vorgeschlagen und 1994 zum Standard erklärt.
DSA arbeitet mit Primzahlen p mit Bitlängen zwischen 512 und 1024 Bit. Die
Exponentationen erfolgen in einer echten Untergruppe der multiplikativen
Gruppe von Zp , die Primzahlordnung q hat, q ≈ 2160 . Dadurch wird das
Verfahren sehr beschleunigt. Ob dadurch die Sicherheit beeinträchtigt ist, ist
unbekannt.
Darüberhinaus ist die Parameterwahl beim DSA viel genauer vorgeschrieben
als beim ElGamal-Verfahren.57
56
Einzelheiten zur Auswertung von Potenzprodukten siehe z.B. Buchmann, Einführung
in die Kryptographie [9], Abschnitt 2.13
57
Einzelheiten siehe z.B.: Buchmann, Einführung in die Kryptographie [9], 11.5
156
6.7
Blinde Signaturen
Es gibt Situationen, in denen es sinnvoll ist, Nachrichten zu signieren, ohne dass der Signierer deren Inhalt vollständig kennt. Man spricht dann von
blinden Signaturen.
Beispiel, wo blinde Signaturen eine wichtige Rolle spielen:
Simulation von Bargeld mit Softwaremitteln (elektronisches Geld, digital
cash). Das vorgestellte Verfahren (Protokoll) beruht auf Ideen von David
Chaum (1985, 1992).
Zweck:
Digitaler Geldschein muss von Bank signiert werden (sonst könnte jeder Geldscheine herstellen), aus Gründen des Datenschutzes sollte die Bank die Seriennummer des Geldscheins nicht kennen. Die Bank sollte also nicht in der
Lage sein, zu einem späteren Zeitpunkt feststellen zu können, für wen sie
den Geldschein signiert hat (Anonymität, im Gegensatz zu Kreditkartenund Kontensystemen).
Ziel:
Alice will digitalen 100-Euroschein von ihrer Bank erhalten.
Zu diesem Zweck wird folgendes Protokoll zwischen Alice und der Bank
durchgeführt:
1) Alice stellt zehn Geldscheine zu 100 Euro selbst her. Sie verwendet für
jeden Schein eine andere Zufallszahl als Seriennummer.
2) Sie verschlüsselt diese zehn Geldscheine mit einem symmetrischen Verfahren mit jeweils unterschiedlichem Schlüssel und sendet diese an die
Bank.
3) Die Bank wählt zufällig einen der zehn Geldscheine aus und signiert
ihn (blinde Signatur). Sie teilt Alice mit, welchen Schein sie signiert
hat.
4) Alice sendet die neun Schlüssel für die nicht-signierten Scheine an die
Bank.
5) Die Bank entschlüsselt die neun nicht-signierten Scheine und überprüft,
ob diese von Alice korrekt hergestellt wurden (insbesondere, ob sie alle den Wert 100 Euro haben). Ist dies der Fall, sendet die Bank den
signierten Geldschein an Alice.
157
Nach Durchführung dieses Protokolls besitzt Alice einen (allerdings verschlüsselten) von der Bank signierten 100-Euroschein. Die Bank kennt die
Seriennummer des Scheins nicht, kann aber mit 90%-iger Wahrscheinlichkeit davon ausgehen, dass es sich um einen 100-Euroschein handelt. Diese
Wahrscheinlichkeit lässt sich natürlich beliebig erhöhen.
Wird die Signatur mit dem RSA-Verfahren (ohne Hashfunktion) erstellt und
verwendet Alice eine symmetrische Verschlüsselung, die mit modularer Exponentiation vertauschbar ist, so kann Alice den Geldschein entschlüsseln und
hat eine gültige Signatur für den entschlüsselten Geldschein.
Zum Beispiel:
Alice wählt Zufallszahl k, verschlüsselt Schein s durch t = s · k e mod n (e, n
öffentlicher Schlüssel der Bank für die RSA-Signatur).
Bank signiert t : (t, td mod n).
Es ist td ≡ sd k ed ≡ sd k mod n, also k −1 td ≡ sd mod n. Dies ist die Signatur
von s.
Systeme für elektronisches Bargeld wurden auch in die Praxis umgesetzt,
allerdings bisher nicht mit großem Erfolg.58
58
Näheres siehe z.B.: W. Ertel, Angewandte Kryptographie [15], Kapitel 9, 10
158
7
Authentifizierung
Beweise
und
Zero-Knowledge-
Authentifizierung: Nachweis bzw. Überprüfung, dass jemand derjenige ist, der
er behauptet zu sein (manchmal wird hierfür auch der Begriff Identifizierung
gebraucht).
Im Wesentlichen gibt es drei Möglichkeiten:
Authentifizierung durch Wissen: A hat eine Information, die nur sie kennt
(und ggf. derjenige, gegenüber dem sie sich
ausweist), also ein Geheimnis.
Authentifizierung durch Besitz:
Es wird überprüft, ob A einen bestimmten
schwer zu fälschenden Gegestand besitzt
(z.B. Ausweis).
Authentifizierung durch persönliches Merkmal: Z.B. Fingerabdruck
Für uns ist nur die erste Möglichkeit von Interesse.
7.1
Passwörter
Passwort w wird von A ausgewählt. Im Rechner, gegenüber dem sich A authentifizieren muss, ist f (w) gespeichert, f Einwegfunktion (z.B. Zugang zu
UNIX-Systemen).
(Angreifer können in der Regel aus f (w) nicht auf w schließen!)
Wichtig: Passwortverzeichnis (also die f (w)) muss vor unberechtigten Schreibzugriffen gesichert sein.
Gefahren:
• Passwort wird oft unverschlüsselt über unsichere Netze zum Rechner
geschickt, der die Authentifizierung vornimmt.
• Oft werden einfache Passwörter w gewählt. Angreifer berechnen für
solche w die Werte f (w).
Gefahreneindämmung durch Einmal-Passwörter.
159
7.2
Challenge-Response-Authentifizierung
Bei diesem Verfahren teilt A demjenigen, gegenüber dem sie sich authentifizieren will (etwa B), nicht das Geheimnis mit (wie bei Passwörtern). Vielmehr erhält sie von B eine Aufgabe (’challenge’). die sie nur lösen kann, wenn
sie ein Geheimnis kennt. Die Lösung schickt A an B (’response’). B verifiziert
die Lösung und erkennt die Identität von A an, falls die Lösung korrekt ist.
Die einfachste Möglichkeit der Realisierung von Challenge-Response-Verfahren
ist die Verwendung von Verschlüsselungsverfahren.
7.2.a
Verwendung von symmetrischen Verschlüsselungsverfahren
A und B kennen beide den geheimen Schlüssel k eines symmetrischen Verschlüsselungsverfahrens. Will sich A gegenüber B ausweisen, teilt sie das B
mit.
B sendet Zufallszahl r an A.
A verschlüsselt r mit k und sendet c = Ek (r) an B.
B entschlüsselt c mit k und überprüft, ob Dk (c) und r übereinstimmen.
Falls ja, so ist die Identität von A anerkannt, sonst nicht.
Nachteil: B muss k kennen. Bei Verwendung dieses Verfahrens als Zugangsschutz zu Rechnernetz müssen die geheimen Schlüssel sicher gespeichert sein.
7.2.b
A
B
A
B
B
Verwendung von Public-Key-Signaturverfahren
will sich gegenüber B ausweisen.
sendet Zufallszahl an A.
signiert Zufallszahl mit ihrem geheimen Schlüssel.
verifiziert Signatur mit öffentlichem Schlüssel von A.
kennt also daher das Geheimnis von A nicht!
Gefahren: Ein böswilliger B könnte eine von C mit Hilfe des öffentlichen
Schlüssels von A verschlüsselte Nachricht für A abgefangen haben. Er sendet
(statt der Zufallszahl) diese an A. Bei der Authentifizierung durch Signatur
entschlüsselt A nun diese Nachricht für B!
Um dies zu verhindern, werden in jüngster Zeit vermehrt sogenannte ZeroKnowledge-Proof-Verfahren eingesetzt.
160
7.3
Zero-Knowledge-Beweise
Das Konzept der ’Zero-Knowledge-Proofs’ wurde 1985 von Goldwasser, Micali und Rackoff eingeführt.
Zero-Knowledge-Beweis-Systeme sind spezielle interaktive Beweissysteme. Bei
interaktiven Beweissystemen wird ein Protokoll zwischen Beweiser A und
dem Verifizierer B durchgeführt.
A kennt ein Geheimnis, B nicht.
• In dem Protokoll überzeugt der Beweiser den Verifizierer davon, dass
er das Geheimnis kennt.
• Ein Betrüger kann das nicht. (Diese Eigenschaften haben auch die
Public-Key-Verfahren zur Authentifizierung.)
Zusätzlich bei Zero-Knowledge-Beweis-Systemen ist folgende Forderung:
• Der Verifizierer erfährt nur, dass der Beweiser das Geheimnis kennt,
aber nichts weiter (gleichgültig, welche Strategie er anwendet).
Wir geben ein Beispiel, das sogenannte Fiat-Shamir-Verfahren (1986):
A, die Beweiserin, wählt p, q, große Primzahlen, bildet n = p · q.
Sie wählt s ∈ {1, . . . n − 1} zufällig mit ggT(s, n) = 1.
Sie berechnet v = s2 mod n. (v, n) ist öffentlich, s geheim.
(Beachte: s ist nur dann aus n zu bestimmen, wenn man die Faktorisierung
von n kennt.)
A beweist B, dass sie eine Quadratwurzel von v modulo n kennt.
Protokoll:
1) A wählt zufällig und gleichverteilt r ∈ {1, 2, . . . n − 1}. Sie berechnet
x = r2 mod n.
2) A sendet x an Verifizierer B.
3) B wählt zufällig mit Wahrscheinlichkeit
an A.(Challenge)
161
1
2
ein e ∈ {0, 1} und sendet e
4) Erhält A den Wert e = 0, so schickt sie r (die Wurzel von x) zurück.
Erhält A den Wert e = 1, so schickt sie y = rs mod n (also Wurzel von
xv) an B. (Response)
5) B verifiziert, dass r2 ≡ x mod n (im Fall e = 0) bzw. y 2 ≡ xv mod n
(im Fall e = 1).
Analyse:
a) Kennt A das Geheimnis, so kann sie jede der Fragen von B beantworten.
b) Ein Betrüger kann aus (n, v) das Geheimnis nicht entschlüsseln (Quadratwurzeln modulo n genauso schwierig wie Faktorisierung von n).
c) Was passiert, wenn ein Betrüger trotzdem das Protokoll mit B durchführt, um sich als A auszuweisen?
Er kann nicht beide möglichen Fragen beantworten, denn kennt er r
und rs, so auch s. Er hat also nur zwei Möglichkeiten:
• Er wählt r wie vorgesehen und sendet x = r2 mod n.
Sendet B e = 0, so antwortet er r, korrekt.
Sendet B e = 1, so kann er nicht antworten.
• Er wählt y vor und sendet x = y 2 v −1 mod n.
Bei e = 1 kann er jetzt korrekt antworten.
Bei e = 0 müsste er die Wurzel von v bestimmen. Kann er nicht.
Da er x angeben muss, bevor er e erhält, kann er mit einer Wahrscheinlichkeit von 12 richtig antworten. Nach k Wiederholungen ist die
Wahrscheinlichkeit 21k , dass er immer richtig antwortet.
Bei immer richtiger Antwort ist B mit einer Wahrscheinlichkeit von
1 − 21k überzeugt, dass A tatsächlich A ist.
d) Man kann zeigen, dass B aus diesem Beweissystem nichts über s erfährt,
außer dass A s kennt. (Gleichgültig, ob er sich dem Protokoll entsprechend verhält (e zufällig wählen) oder eine andere Strategie verfolgt.)
(Zero-Knowledge-Eigenschaft)
Man formalisiert dies dadurch, dass man fordert:
Ist die Behauptung des Beweises wahr, so kann die Interaktion zwischen
A und B in polynomialer Zeit (von B) simuliert werden, ohne dass eine
Interaktion mit dem Beweiser stattfindet.59
59
Details siehe Goldreich, Foundations of Cryptography - Basic Tools [16]
162
Literatur
[1] Charlisle Adams and Steve Lloyd. Understanding Public-Key Infrastructure. Technology Series. New Riders Publishing, Indianapolis, USA, 2
edition, 1999.
[2] Leonard Adleman, Ronald L. Rivest, and Adir Shamir. On Digital Signatures and Public Key Cryptosystems. MIT Laboratory for Computer
Science Technical Memorandum, (82), April 1977.
[3] William R. Alford, Andrew Granville, and Carl Pomerance. There are
infinitely many Carmichael numbers. Annals of Mathematics, (140):703–
722, 1994.
[4] Doris Baker and H. X. Mel. Cryptography decrypted. Addison Wesley,
Boston, 2001.
[5] Friedrich L. Bauer. Entzifferte Geheimnisse. Springer, 3 edition, 2000.
[6] Henry Beker and Fred Piper. Cipher Systems: The protection of communications. Northwood Books, London, 1982.
[7] Albrecht Beutelspacher, Jörg Schwenk, and Klaus-Dieter Wolfenstetter.
Moderne Verfahren der Kryptologie. Vieweg, Braunschweig, 4 edition,
2001.
[8] Leonore Blum, Manuel Blum, and Mike Shub. A Simple Unpredictable
Random Number Generator. SIAM Journal on Computing, (15):364–
383, 1986.
[9] Johannes Buchmann. Einführung in die Kryptographie. Springer, Berlin,
2 edition, 2001.
[10] Steve Burnett and Stephen Paine. Kryptographie. mitp, Bonn, 1 edition,
2001.
[11] Komaravolu Chandrasekharan. Einführung in die analytische Zahlentheorie. Lecture notes in mathematics ; 29. Springer, Berlin, 1966.
[12] Richard Crandall and Carl Pomerance. Prime Numbers - A Computational Perspective. Springer, New York, 2001.
[13] Hans Delfs and Helmut Knebl. Introduction to Cryptography. Springer,
Berlin, Heidelberg, 2002.
163
[14] Whitfield Diffie and Martin E. Hellman. New Directions in Cryptography. IEEE Transactions on Information Theory, 22:644–654, 1976.
[15] Wolfgang Ertel. Angewandte Kryptographie. Fachbuchverl. Leipzig im
Carl-Hanser-Verl., München, 2001.
[16] Oded Goldreich. Foundations of Cryptography - Basic Tools. Cambridge
University Press, Cambridge, 2001.
[17] Max Goldt. Quitten für die Menschen zwischen Emden und Zittan.
Haffmans Verlag, Zürich, 1993.
[18] Andrew Hodges. Alan Turing: the Enigma. Simon Schuster, New York,
1983.
[19] Patrick Horster. Kryptologie. Number 47 in Informatik. Bibliographisches Institut, Mannheim, 1985.
[20] David Kahn. The Codebreakers. MacMillan, New York, 1967.
[21] David Kahn. Seizing the Enigma. Houghton Miffin, Boston, 1991.
[22] Donald E. Knuth. The Art of Computer Programming, volume 2. Addison Wesley, Reading, Mass., 2 edition, 1998.
[23] Neal Koblitz. A course in number theory and cryptography. Springer,
New York, 2 edition, 1994.
[24] Neal Koblitz. Algebraic aspects of cryptography. Springer, Berlin u.a., 2
edition, 1999.
[25] Rudolf Lidl and Harald Niederreiter. Introduction to finite fields and
their applications. Cambridge University Press, Cambridge, 1986.
[26] Alfred J. Menezes, Paul C. van Oorschot, and Scott A. Vanstone. Handbook of Applied Cryptography. CRC Press, London, 1997.
[27] Hans Riesel. Prime Numbers and computer methods for factorizations.
Birkhäuser, Boston, 2 edition, 1994.
[28] Klaus Schmeh. Kryptografie und Public-Key-Infrastrukturen im Internet. dpunkt, Heidelberg, 2 edition, 2001.
[29] Bruce Schneier. Angewandte Kryptographie. Addison Wesley, Bonn u.a.,
1997.
164
[30] Douglas Stinson. Cryptography - Theory and Praxis. CRC Press, Boca
Raton, 1995.
[31] Wade Trappe and Lawrence C. Washington. Introduction to Cryptography with Coding Theory. Prentice Hall, New Jersey, 2002.
[32] Michael Welschenbach. Kryptographie in C und C++. Springer, Berlin
u.a., 2 edition, 2001.
[33] Michael J. Wiener. Cryptanalysis of short RSA secret exponents. IEEE
Transactions on Information Theory, 36(3):553–558, Mai 1990.
165