Skript Kryptologie I WS 2007/08

Transcription

Skript Kryptologie I WS 2007/08
1
Einführung: Was ist Kryptologie
Antwort: Die Wissenschaft von den Geheimschriften
Seit es Sprache gibt, gibt es vertrauliche Mitteilungen.
Romeo
Ich liebe dich
−→
Julia
Worum geht es dabei?
1. Abhörsicherheit: Chiffrieren
2. Integrität: Unversehrtheit und Unveränderbarkeit
3. Authenzität: Gewissheit über den Ursprung
4. Anonymität
1.1
Sichere Übermittlung einer Nachricht
1. Persönlich oder durch einen vertrauenswürdigen Boten („Der Kurier
der Kaiserin“)
2. Existenz verheimlichen, zum Beispiel durch
• Unsichtbare Tinte (Karl May)
• Verstecken in größerem Text oder im Bild (Steganographie)
3. Verschlüsseln! Übermittlung über einen an sich unsicheren Kanal,
aber so „chiffriert“, dass niemand Unbefugter sie „dechiffrieren“ kann.
• Kryptologie war die Domäne des Militärs.
• Nur dort gab es ausreichend Motivation und vor allem auch (finanzielle) Mittel, um die damaligen Chiffriermaschinen zu entwickeln
(„Enigma“).
• Dies trieb auch die Entwicklung der digitalen Computer an.
1.2
Vorteil der Kryptologie
Kryptologie ist Mathematik, und damit kann man Dinge beweisen, zum
Beispiel, dass eine Methode eine gewisse Sicherheit bietet (im Idealfall).
2
Historisches, Einfaches und Grundlagen
2.1
Terminologie
• Klartext: a b c d e f . . .
• Geheimtext (Kryptogramm): A B C D E F . . .
• Chiffrieren: Klartext −→ Geheimtext
• Dechiffrieren: Geheimtext −→ Klartext
• Alphabet: Zeichenvorrat
– Buchstaben: {a, . . . , z}
– als Zahlen: {1, . . . , 26}
– oder auch: {0, . . . , 25}
– Bits: {0, 1}
– 64-Bit-Worte: {(a1 , . . . , a64 )|ai ∈ {0, 1}}
2.2
Die Skytala von Sparta
• Vor 2500 Jahren benutzten die Spartaner die sogenannte Skytala: Holz-
stäbe mit bestimmtem Durchmesser.
• Der Absender einer Botschaft wickelte ein schmales Band aus Pergament spiralförmig darum und schrieb dann der Länge nach die
Nachricht darauf.
• Nur wenn der Empfänger einen Zylinder mit gleichem Umfang hatte, konnte er die Nachricht lesen.
Praktisch bedeutet das, dass der Text spaltenweise in einer bestimmten
Anzahl von Zeilen aufgeschrieben wird (Transpositionschiffre):
2
F
A
C
H
H S
O C
C H
H U
L
E
D
A
R A
M D
S T
T Z
Geheimtext: FHSLRAAOCEMDCCHDSTHHUATZ
2.3
Verschiebechiffren: Caesar
• Julius Caesar benutzte für seine militärische Korrespondenz eine Verschiebechiffre.
• Man schreibt das Geheimtextalphabet unter das Klartextalphabet,
aber um 23 Stellen nach rechts verschoben:[2mm]
2.4
Algorithmus und Schlüssel
• An diesen einfachen Beispielen kann man die beiden wichtigen Begriffe Algorithmus und Schlüssel erklären.
• Chiffrieralgorithmus (Maschine, Programm): Methode, „wie“.
• Schlüssel: beschreibt wie der Algorithmus verwendet wird.
• Algorithmus: kann nicht geheim gehalten werden („Chiffriermaschine“), das heisst, die Sicherheit beruht auf der Geheimhaltung des
Schlüssels.
• Statt der sicheren Übermittlung einer oder mehrerer geheimer Nachrichten ist die sichere Übermittlung und Aufbewahrung des Schlüssels notwendig.
• Vorteil: der Schlüssel ist kürzer und muss nur einmal übermittelt
werden, zum Beispiel irgendwann vorher („Reitender Bote“).
• Wichtige Alternative: Public Key Systeme
3
2.5
Kryptoanalyse der Caesar-Chiffre
• Wie kann ich eine verschlüsselte Nachricht „knacken“?
• Angenommen, ich kenne den Algorithmus: ich weiss oder vermute,
es handelt sich um eine Verschiebechiffre.
• Methode 1 Systematische Schlüsselsuche (Exhaustive Key Search,
Brute Force) Führt immer zum Erfolg, kann aber sehr lange dauern. Ich probiere alle Möglichekeiten durch (bei Verschiebechiffre maximal 26): bei k verschiedenen möglichen Schlüsseln maximal k Versuche, im Durchschnitt k/2.
Methode 2 Statistische Analyse: Häufigkeit der Buchstaben
Buchstabe
a
b
c
d
e
f
g
h
i
j
k
l
m
Häufigkeit
6,51%
1,89%
3.06%
5,08%
17,40%
1,66%
3,01%
4,76%
7,55%
0,27%
1,21%
3,44%
2,53%
Buchstabe
n
o
p
q
r
s
t
u
v
w
x
y
z
Häufigkeit
9,78%
2,51%
0,79%
0,02%
7,00%
7,27%
6,15%
4,35%
0,67%
1,89%
0,03%
0,04%
1,13%
Häufigkeiten der Buchstaben der deutschen Sprache
Gruppe
e,n
i,s,r,a,t
d,h,u,l,c,g,m,o,b,w,f,k,z
p,v,j,y,x,q
Gesamthäufigkeit
27,18%
34,48%
36,52%
1,82 %
Buchstabengruppen
2.6
Monoalphabetische Chiffrierungen
Eine Chiffrierung heisst monoalphabetisch, wenn jeder Buchstabe des Alphabets stets zu demselben Geheimtextbuchstaben chiffriert wird.
(Beispiel)
Jeder monoalphabetischen Chiffre entspricht eine Permutation der Buchstaben des Alphabets und umgekehrt. es gibt also insgesamt 26! ≈ 4 · 1026
davon.
4
2.7
Mathematischer Exkurs: Modulare Arithmetik
Rechnen modulo 26: wir teilen jede Zahl durch 26 wie in der Grundschule:
1 : 26 = 0 Rest 1 . . . 25 : 26 = 0 Rest 25 26 : 26 = 1 Rest 0 . . . 32 : 26 =
1 Rest 6 Wir betrachten nur den Rest und sagen: 32 und 6 sind äquivalent
modulo 26. Wir schreiben:
32 ≡ 6
26 ≡ 0
(mod 26)
(mod 26)
Allgemein:
p≡q
(mod 26) ⇐⇒ p − q ist durch 26 teilbar
Dies teilt alle ganzen Zahlen in 26 verschiedene Klassen ein.
Addieren, Subtrahieren und Multiplizieren kann ich wie gehabt:
(32 · 5) = 160 ≡ 4 (mod 26)
32 ≡ 6 (mod 26), und (6 · 5) = 30 ≡ 4
(mod 26).
oder anders ausgedrückt: aus p ≡ q (mod 26) folgt:
p + n ≡ q + n (mod 26)
p · n ≡ q · n (mod 26)
pn ≡ q n (mod 26)
Diese Grundrechenarten gelten also.
Division ist nicht immer möglich! Warum ist das so? Wenn wir die Zahl
p durch die Zahl s dividieren wollen, dann suchen wir eine Zahl s−1 (das
Inverse von s), für die gilt:
s · s−1 = 1.
Haben wir die gefunden, dann können wir berechnen:
p/s = p · s−1
In unserer modularen Welt heisst das, wir suchen das Inverse modulo 26,
es muss also gelten:
s · s−1 ≡ 1 (mod 26).
5
Dann suchen wir mal. . .
1·1
2·?
3·9
4·?
12 · ?
13 · ?
14 · ?
15 · 7
≡
≡
≡
≡
...
≡
≡
≡
≡
...
1 (mod 26)
1 (mod 26)
1 (mod 26)
1 (mod 26)
1
1
1
1
(mod
(mod
(mod
(mod
26)
26)
26)
26)
Überall, wo das ? steht, ist es nicht möglich, eine passende Zahl zu finden.
Genauer gesagt, für Zahlen, die durch 2 oder 13 teilbar sind, gibt es
kein Inverses.
AHA! 2 oder 13 sind auch die Teiler von 26.
Dies gilt allgemein: zu einer Zahl s gibt es nur dann ein Inverses modulo n, wenn s und n teilerfremd sind, das heisst, wenn sie keine gemeinsamen Teiler haben (außer 1).
Unter anderem deswegen rechnet man bei der modularen Arithmetik
meist modulo einer Primzahl, denn Primzahlen haben überhaupt keine
Teiler (außer 1 natürlich). Damit lässt sich immer das Inverse (modulo der
jeweiligen Primzahl) finden, und Division ist immer eindeutig möglich.
(Mathematisch spricht man von einem Körper.)
2.8
Tauschchiffren
Wir ordnen jedem Buchstaben eine Zahl zu:
a → 1
b → 2
...
y → 25
z → 0
Eine Verschiebechiffre entsteht durch Addition einer Zahl t modulo 26
6
(nämlich wenn ich um t Stellen verschiebe).
Beispiel: Caesar-Chiffre mit Verschiebung um drei Buchstaben: t = 3.
a → 1,
b → 2,
v → 22,
w → 23,
x → 24,
y → 25,
z → 0,
1 + 3 mod 26 = 4 → D
2 + 3 mod 26 = 5 → E
...
22 + 3 mod 26 = 25→ Y
23 + 3 mod 26 = 0 → Z
24 + 3 mod 26 = 1 → A
25 + 3 mod 26 = 2 → B
0 + 3 mod 26 = 3 → C
Beim Dechiffrieren ziehe ich t ab (modulo 26) oder addiere 26 − t = 23
(modulo 26):
A → 1,
B → 2,
C → 3,
D → 4,
1 + 23 mod 26 = 24
2 + 23 mod 26 = 25
3 + 23 mod 26 = 0
4 + 23 mod 26 = 1
...
Y → 25, 25 + 23 mod 26 = 22
Z → 0,
0 + 23 mod 26 = 23
→x
→y
→z
→a
→v
→w
Die Methode ist also immer:
• Übersetze jeden Buchstaben a,. . . ,z in eine Zahl zwischen 0 und 25;
• Wende eine Rechenvorschrift an (modulo 26);
• Übersetze die Zahlen zurück in Buchstaben.
• Mit dieser Methode ergibt jede Rechenvorschrift eine monoalphabetische Chiffre.
Wenn ich addieren kann, kann ich auch multiplizieren, zum Beispiel
7
mit 2 (modulo 26):
a → 1, 1 · 2 mod 26 = 2→ B
b → 2, 2 · 2 mod 26 = 4→ D
c → 3, 3 · 2 mod 26 = 6→ F
...
m → 13,13 · 2 mod 26 = 0→ Z
n → 14,14 · 2 mod 26 = 2→ B
o → 15,15 · 2 mod 26 = 4→ D
...
z → 0, 0 · 2 mod 26 = 0→ Z
Dies ist nicht eindeutig (weil 26 durch 2 teilbar ist).
Noch schlimmer ist es bei Multiplikation mit 13:
a → 1,1 · 13 mod 26 = 13→ M
b → 2,2 · 13 mod 26 = 0 → Z
c → 3,3 · 13 mod 26 = 13→ M
d → 3,4 · 13 mod 26 = 0 → Z
...
Dann probieren wir doch mal die Multiplikation mit 3:
a → 1, 1 · 3 mod 26 = 3→ C
b → 2, 2 · 3 mod 26 = 6→ F
c → 3, 3 · 3 mod 26 = 9 → I
...
i → 9, 9 · 3 mod 26 = 1 → A
j → 10,10 · 3 mod 26 = 4→ D
...
z → 0, 0 · 3 mod 26 = 0→ Z
Es geht also bei Multiplikation mit Zahlen, die teilerfremd zu 26 sind:
1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25
Es gibt also 12 dieser Multiplikativen Chiffren.
Durch Kombination mit der Verschiebechiffre ergibt sich die Tauschchiffre: multipliziere mit s, addiere t.
Tauschchiffre:
8
Schlüssel Ein paar (s, t) von natürlichen Zahlen < 26, s teilerfremd zu 26.
Chiffre Sei s0 eine Zahl, für die gilt: s · s0 ≡ 1 (mod 26), das heisst s0 ≡ 1/s
(mod 26).
x → x · s + t mod 26
y → (y − t) · s0 mod 26
Es gibt 26 · 12 = 312 Tauschchiffren (auch affine Chiffren genannt).
2.9
Schlüsselwortchiffre
Zum Abschluss dieses Abschnitts eine andere Methode, eine monoalphabetische Chiffre zu erzeugen.
• Schlüssel: Ein Wort. Doppelt vorkommende Buchstaben werden beim
zweiten oder späteren Auftreten entfernt.
• Das Wort wird als Anfang des Geheimtextalphabets benutzt, dieses
wird mit dem restlichen Buchstaben des Alphabets aufgefüllt.
• Chiffrieren/Dechiffrieren: wie gehabt.
2.10
Kryptoanalyse
Prinzip von Kerkhoffs: Die Sicherheit eines Kryptosystem darf nicht von
der Geheimhaltung des Algorithmus abhängen; sie beruht nur auf der Geheimhaltung des Schlüssels.
Known ciphertext attack Der Angreifer kennt (oder hört ab) ein Stück
Geheimtext. Davon kann man immer ausgehen.
Known plaintext attack Der Angreifer kennt ein Stück Klartext und das
dazugehörige Stück Geheimtext. Kommt durchaus vor.
Chosen plaintext attack Der Angreifer hat Zugang zum Verschlüsselungsalgorithmus und kann selbst gewählte Stücke Klartext verschlüsseln, zum Beispiel, wenn er Zugang zu der Verschlüsselungsmaschine hat.
9
Das Knacken einer monoalphabetischen Chiffrierung einer natürlichen
Sprache (26 Buchstaben) einfach durch die Attacke mit bekanntem Geheimtext, und zwar mittels statistischer Analyse der Buchstabenhäufigkeit
und der Bigrammhäufigkeit.
Bigramm Häufigkeit Bigramm Häufigkeit
en
3,88%
nd
1,99%
er
3,75%
ei
1,88%
ch
2,75%
ie
1,79%
te
2,66%
in
1,67%
de
2,00%
es
1,52%
Die häufigsten Bigramme im Deutschen
2.11
Verschleierung der Häufigkeiten
• Kann ich die Häufigkeitsverteilung der Buchstaben vielleicht verstecken?
• Ja: Man sorgt dafür, dass die Geheimtextzeichen alle mit der gleichen
Häufigkeit auftreten.
• Bei der homophonen Chiffre werden einem Klartextzeichen mehrere
Geheimtextzeichen zugeordnet, und zwar
• kommt jedes Geheimtextzeichen dabei nur einmal vor (sonst wäre
die Dechiffrierung nicht eindeutig), und
• wird die Verteilung so gewählt, dass alle Geheimtextzeichen gleich
häufig vorkommen.
Beispiel: den Buchstaben a,. . . ,z werden die Zahlen 00,. . . ,99 zugeordnet, und zwar nach folgender Vorschrift:
10
Buchstabe
a
b
c
d
e
f
g
h
i
j
k
l
m
Zugeordnete Zeichen
10 21 52 59 71
Buchstabe Zugeordnete Zeichen
n
30 35 43 62 63
67 68 72 77 79
20 34
o
02 05 82
28 06 80
p
31
04 19 70 81 87
q
25
09 18 33 38 40 42 53 54 55
r
17 36 51 69 74 78 83
60 66 75 85 86 92 93 99
00 41
s
15 26 45 56 6173 96
08 12 97
t
13 32 90 91 95 98
07 24 47 89
u
29 01 58
14 39 46 50 65 76 88 94
v
37
57
w
22
23
x
44
16 03 84
y
48
27 11 49
z
64
Beim Chiffrieren wählt man zufällig eines der zugehörigen Zeichen aus.
2.12
Moderne Monoalphabetische Chiffrierungen
DES Alphabet: 64-bit Strings, Schlüssel: 56-bit Strings. (1999: Vollständige
Schlüsselsuche in 22 Stunden!).
3DES DES mit k1 , dann mit k2−1 , dann wieder mit k1 . Der Schlüssel ist also
112 bit lang.
AES Schlüssel 128/192/256 bit.
2.13
Die Vigenère-Chiffre
• Blaise der Vigenère (1523-1596) machte die Vigenère-Verschlüsselung
im Jahre 1586 bekannt.
• Man benutzt verschiedene monoalphabetische Chiffrierungen im Wechsel.
• Die Idee ist älter, ähnliche Chiffrierungen wurden schon von Anderen im 16. Jhd. veröffentlicht.
• Es handelt sich um eine periodische polyalphabetische Chiffrierung.
11
• Bei einer polyalphabetischen Chiffrierung wird ein Klartextbuchstabe nicht jedesmal zu demselben Geheimtextbuchstaben verschlüsselt, aber natürlich nicht willkürlich.
• Die Dechiffrierung muss eindeutig sein.
Warum die doch schon angestaubte Vigenère-Chiffre?
• Prototyp für viele noch heute benutzte Algorithmen (WordPerfect)
• Wichtig als Beispiel
• Kryptoanalyse: Kasiski-Test und Friedman-Test
a
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
b
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
c
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
d
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
e
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
f
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
g
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
h
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
i
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
j
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
k
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
l
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
m
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
Klartext: hochschuledarmstadt
Schlüsselwort: BLAU
BLAUBLAUBLAUBLAUBLA
hochschuledarmstadt
12
n
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
o
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
p
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
q
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
r
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
s
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
t
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
u
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
v
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
w
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
x
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
y
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
z
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Für jeden Klartextbuchstaben nehmen wir den darüberstehenden Buchstaben des Schlüsselworts. Dieser bestimmt die Zeile, mit der der Klartextbuchstabe verschlüsselt wird.
h : B : Zeile die mit B beginnt, Spalte h, ergibt I
o : L : ergibt Z
c : A : ergibt C
h : U : ergibt B
usw.
Schlüsselwort: BLAUBLAUBLAUBLAUBLA
Klartext:
hochschuledarmstadt
Geheimtext:
IZCBTNHOMPDASXSNBOT
• Nimm den Schlüsselwortbuchstaben, der über dem Geheimtextbuchstaben steht,
• dann nimm die Zeile die mit diesem Schlüsselwortbuchstaben beginnt.
• Gehe in dieser Zeile, vom Geheimtextbuchstaben ausgehend nach
oben:
• I : Zeile B, über I steht h, usw.
• Wenn wir die Buchstaben durch Zahlen ersetzen, ist die Vorschrift
noch viel einfacher:
• Der Geheimtextbuchstabe entsteht durch Addition (modulo 26) des
Klartextbuchstabens und des zugehörigen Schlüsselwortbuchstabens.
• Beispiel: o und L, dies entspricht
14 + 11 = 25 → Z .
• Beim Dechiffrieren wird subtrahiert statt addiert.
2.14
Kryptoanalyse der Vigenère-Chiffre
Wilhelm Kasiski (1805-1881) erkannte:
• Es gibt Perioden mit der Länge des Schlüsselwortes.
Schlüsselwort: BLAUBLAUBLAUBLAUBLAU
ein..ein..ein..ein..
• Beispiel: Verschlüsselung des Wortes „ein“: Klartext:
Geheimtext:
FTN..PIH..ECO..YJY..
13
• Es gibt also nur 4 Möglichkeiten, ein Wort zu verschlüsseln, weil das
Schlüsselwort 4 Buchstaben lang ist.
• Außerdem gilt:
Wenn zwei Klartextfolgen einen Abstand haben, der ein Vielfaches
der Länge des Schlüsselworts ist, dann sind die zugehörigen Geheimtextfolgen gleich!
• Man suche Folgen aus gleichen Buchstaben im Geheimtext und bestimme deren Abstand.
• Dieser ist (vermutlich) ein Vielfaches der Schlüsselwortlänge.
William Friedman (1891-1969) entwickelte diesen statistischen Test 1925.
• Frage: Mit welcher Wahrscheinlichkeit besteht ein willkürlich aus
dem Klartext herausgegriffenes Buchstabenpaar aus gleichen Buchstaben?
• Antwort: Koinzidenzindex.
• Wir nehmen eine beliebige Folge von Buchstaben, Länge n.
• Dann zählen wir, wie oft die verschiedenen Buchstaben vorkommen:
• Die Anzahl der a’s sei n1 ,. . . , die der z’s sei n26 .
• Daraus folgt, dass die Summe all dieser Zahlen gleich n ist.
• Frage: Wie groß ist die Wahrscheinlichkeit, dass ein zufällig ausgewähltes Buchstabenpaar aus zwei gleichen Buchstaben besteht?
• Antwort: der Friedmansche Koinzidenzindex eines bekannten Textes:
26
X
ni (ni − 1)
I=
i=1
n(n − 1)
• Was nützt uns das?
• Wenn wir wissen, wie oft die verschiedenen Buchstaben vorkommen, können wir diesen Index statistisch vorausberechnen.
14
• Sei pi die Wahrscheinlichkeit für Buchstabe i. Dann ist die der Koinzidenzindex:
26
X
I=
p2i
i=1
Zwei Beispiele:
1. Deutsche Sprache, wir kennen die Wahrscheinlichkeiten. Dann ist
laut Tabelle der Buchstabenhäufigkeiten: I = 0,0762.
2. Ein zufälliger Buchstabensalat. Dann sind alle Buchstaben gleich wahrscheinlich, also pi = 1/26, und die Summe ist
2
26 X
1
1
I=
≈ 0,0385
=
26
26
i=1
• Allgemein kann man mit den entsprechenden mathematischen Methoden beweisen, dass der Koinzidenzindex um so größer wird, je
unregelmäßiger der Text ist.
• Der Wert 1/26 ist das absolute Minimum.
• Test für monoalphabetische Chiffre: Wenn der Koinzidenzindex ungefähr 0,0762 ist, dann ist der Text monoalphabetisch verschlüsselt.
• Test für Vigenère-Chiffre: Wenn der Geheimtext die Länge n hat, und
die Länge des Schlüsselwortes h ist, dann ist der Konizidenzindex
I=
0,0377n
0,0385n − 0,0762
+
h(n − 1)
n−1
oder, nach h aufgelöst:
h=
0,0377n
I(n − 1) − 0,0385n + 0,0762
• Mit diesen Methoden ist jede Vigenère-Chiffre leicht zu knacken:
• Durch diese Tests kennen wir die Länge des Schlüsselwortes.
• Die Buchstaben, die unter dem gleichen Schlüsselwortbuchstaben
stehen, werden durch dieselbe monoalphabetische Chiffrierung verschlüsselt.
15
• Also schaue ich mir alle Geheimtextbuchstaben aus dieser Gruppe
an und bestimme den häufigsten, der dann dem Klartextbuchstaben
e entspricht.
• Das mache ich für alle Buchstaben des Schlüsselwortes, fertig!
Erster Ausweg ich nehme ein sehr langes Schlüsselwort, zum Beispiel den
Text eines Buches.
Problem: Da das Schlüsselwort aus Sätzen der deutschen Sprache besteht,
lassen sich wieder statistische Methoden auf den Geheimtext anwenden (Friedman).
Zweiter Ausweg ich nehme ein Schlüsselwort, das wieder sehr, sehr lang
ist, und aus zufällig gewürfelten Buchstaben besteht (Buchstabenwurm). Ein solches System ist beweisbar sicher (perfekte Sicherheit).
3
Ein bischen Formalismus: Chiffriersysteme
3.1
Chiffriersysteme
Bisher Sender und Empfänger vereinbaren einen Schlüssel, verschlüsseln
damit einen Klartext. Das ist unrealistisch.
Chiffriersysteme Menge von Klartexten, Geheimtexten, Schlüsseln
Wir haben also immer:
M Menge aller Klartexte
K Menge aller Schlüssel
C Menge aller Geheimtexte
Wir bezeichnen mit f den Verschlüsselungsalgorithmus; die Spezialisierung auf Schlüssel k mit fk . Die Abbildungen von M in C nennen wir
Transformationen; die Menge aller Transformationen F.
Wichtige Eigenschaften der fk : Umkehrbarkeit, das heisst, es gibt die
inverse Transformation fk−1 mit
fk−1 (fk (m)) = m, m ∈ M
In Worten: zu jeder Verschlüsselung muss es eine passende Entschlüsselung geben.
Beispiele:
16
• Klartexte: Alle Bücher in der Bibliothek der H. Darmstadt Chiffrierungen: Alle 312 affinen Chiffrierungen Geheimtexte: alle, die sich
aus Anwendung aller 312 Chiffrierungen auf alle Bücher ergeben
• Klartexte: alle lateinischen Ausdrücke in allen Asterix-Bänden, Chiffrierungen alle 26 Caesar-Chiffrierungen und die dazugehörigen Geheimtexte.
Ein (symmetrisches) Chiffriersystem S besteht aus einer Menge M von
Klartexten, einer endlichen Menge C von Geheimtexten und einer Menge
F von umkehrbaren Transformationen von M in C.
Bemerkungen:
• Verschiedene f können für denselben Klartext den gleichen Geheimtext ergeben.
• Aus der Umkehrbarkeit folgt, dass die Menge M höchstens genauso
viele Elemente enthalten kann wie C: |M| ≤ |C|.
3.2
Sicherheit eines Chiffriersystems
Was ist Sicherheit? Was ist perfekte Sicherheit?
Perfekte Sicherheit: Angreifer hat keine Chance, aus der Definition eines Chiffriersystems etwas über das Chiffriersystem zu lernen, das heisst
Wahrscheinlichkeit Null.
Sei µ ein Klartext, p(µ) die Wahrscheinlichkeit, dass dieser Klartext vorkommt.
Beispiele:
• Klartexte sind Buchstaben des Textes eines deutschen Buches: die
Häufigkeiten p(µ) sind die Buchstabenhäufigkeiten der deutschen
Sprache.
• Klartexte sind Buchstabenpaare der Texte eines deutschen Buches:
die p(µ) sind die Bigrammhäufigkeitender deutschen Sprache.
Die p(µ) heissen a-priori-Wahrscheinlichkeiten oder theoretische Wahrscheinlichkeiten.
• Ein Angreifer fängt einen Geheimtext γ ab.
17
• Er kann (prinzipiell) alle Klartexte und alle möglichen Verschlüsselungen durchgehen und analysieren, wie hoch die Wahrscheinlichkeit pγ (µ) ist, dass ein bestimmter Geheimtext γ von einem bestimmten Klartext µ kommt.
• Die pγ (µ) heissen beobachtete oder a-posteriori-Wahrscheinlichkeiten.
Beispiele:
• Die Klartexte M seien die Buchstaben des Textes eines deutschen Buches, die Chiffierungen alle 26 Verschiebechiffren. Jeder Geheimtextbuchstabe hat die gleiche Wahrscheinlichkeit, von einem bestimmten
Klartextbuchstaben herzurühren, also ist für jedes γ: pγ (µ) = p(µ)
für alle µ.
• Die Klartexte seien die ersten 100 Buchstaben einer jeden Seite des
ersten Bandes des großen Brockhaus, |M| = Anzahl der Seiten des
ersten Bandes. Chiffierungen alle 26 Verschiebechiffren. Für jeden
Klartext ist seine Wahrscheinlichkeit gleich 1/|M|. Jeder Geheimtext
kann entweder aus einem dieser |M| Klartexte kommen, nämlich,
wenn die Buchstabenveteilung der einer der Seiten entspricht, oder
nicht. pγ (µ) ist entweder 0 oder 1.
Wenn für ein gewisses µ gilt:
pγ (µ) > p(µ),
dann kommt γ mit hoher Wahrscheinlichkeit vom Klartext µ her. Ist umgekehrt
pγ (µ) < p(µ),
so kommt γ mit hoher Wahrscheinlichkeit nicht von µ. In beiden Fällen
hat der Angreifer etwas gelernt.
Definition: Ein Chiffriersystem S bietet perfekte Sicherheit, wenn für jeden Geheimtext γ gilt:
pγ (µ) = p(µ) für alle Klartexte µ.
(A-priori- gleich A-posteriori-Wahrscheinlichkeiten)
Daraus folgt: Verschiebechiffren sind perfekt, wenn sie nur einen Buchstaben verschlüsseln!
Kriterien für perfekte Systeme:
18
1. Kriterium: In einem perfekten System S kann jeder Klartext auf jeden
Geheimtext abgebildet werden. Begründung: sonst wären manche
der pγ (µ) = 0.
2. Kriterium: In einem perfekten System S gilt: |F| ≥ |C| ≥ |M|. Begründung: Damit ein beliebiger Klartext µ in alle möglichen Geheimtexte
überführt werden kann, braucht man mindestens soviele Transformationen wie mögliche Geheimtexte.
3. Kriterium: Sei S ein System mit |F| = |C| = |M|. Ferner gelte: Es gibt
zu jedem Klartext µ und zu jedem Geheimtext γ genau eine Transformation, die µ in γ überführt. Dann ist S perfekt!
3.3
Das One-Time Pad, ein perfektes System
Wir betrachten folgendes Chiffriersystem:
• Klartexte: alle Buchstabenfolgen der Länge n, a1 . . . an .
• Schlüssel: alle Buchstabenfolgen der Länge n, k1 . . . kn .
• Geheimtext: a1 ⊕k1 . . . an ⊕kn . ⊕: bedeutet Addition gemäß Verschiebechiffre (Caesar).
a1 . . . an
a1 ⊕ k1 . . . an ⊕ kn
L
k1 . . . kn
Vigenère-Chiffre mit Schlüsselwort k1 . . . kn .
• Es gilt die erste Voraussetzung des 3. Kriteriums, denn: |F| = |C| =
|M|.
• Die zweite Voraussetzung kann buchstabenweise überprüft werden.
• Also ist dieses System perfekt.
Erfunden wurde dieses One-Time-Pad 1917 von Gilbert S. Vernam (18901960). (One-time pad = Abreissblock!)
• Heutzutage nimmt man keine Buchstaben, sondern einzelne Bits.
19
• Die Buchstaben ai und ki sind also aus dem Alphabet (0, 1).
• Als Verküpfung nimmt man die binäre Addition ohne Übertrag (XOR,
exclusive-or):
0 ⊕ 0 = 0,
1 ⊕ 0 = 1,
0 ⊕ 1 = 1,
1 ⊕ 1 = 0.
Wichtig Alle möglichen Schlüssel müssen gleich wahrscheinlich sein, deswegen werden die Bits zufällig erzeugt.
Problem Übermittlung der Schlüssel.
Lösung Erzeugung der Schlüsselbits als pseudozufällige Folge von Bits durch
einen Algorithmus.
4
Block- und Stromchiffren
4.1
Was sind Blockchiffren?
Einfache Definition: Eine Blockchiffre verschlüsselt immer ganze Wörter,
die alle gleich lang sind, also Folgen der Länge n von Buchstaben
eines Alphabets.
Präzise Definition: Eine Blockchiffre hat als Menge der Klartexte und als
Menge der Geheimtexte die Menge aller Wörter der Länge n über
einem Alphabet.
Beispiel:
DES. Alphabet ist die Menge der Bits (0, 1), Länge ist 64.
4.2
ECB-Modus (Electronic Code Book)
• ECB: Der Klartext wird in Blöcke der Länge n (64) aufgeteilt. Ist der
letzte Block zu kurz wird er mit zufälligen Zeichen aufgefüllt.
• Jeder Block wird mit einer gegebenen Verschlüsselungsfunktion fk
(mit einem Schlüssel k) verschlüsselt.
• Sei Ki der i-te Klartextblock, Gi der i-te Geheimtextblock, dann gilt:
Gi = fk (Ki )
Ki = fk−1 (Gi )
20
.........
Ki−1
Ki
Ki+1
.........
.........
fk
fk
fk
.........
.........
Gi−1
Gi
Gi+1
.........
Probleme:
• Für einen gegebenen Schlüssel wird derselbe Klartext immer zu demselben Geheimtext kodiert.
• Der Angreifer kann Teile der Nachricht nochmal senden (Block Replay).
4.3
CBC-Modus (Cipher Block Chaining)
• CBC: Vor dem Chiffrieren eines Blockes wird dieser mit dem vorhergehenden Geheimtextblock verküpft, üblicherweise mit bitweisem
XOR.
• Zusätzlich wird am Anfang ein zufälliger Block eingefügt (IV, Initialization Vector).
• Sei Ki der i-te Klartextblock, Gi der i-te Geheimtextblock, dann gilt:
Gi = fk (Ki ⊕ Gi−1 )
Ki = Gi−1 ⊕ fk−1 (Gi )
• Dadurch hängt jeder Geheimtextblock von allen vorhergehenden Blöcken
.........
Ki−1
Ki+1
Ki
ab.
.........
L
L
L
.........
fk
fk
fk
.........
.........
Gi−1
Gi
Gi+1
.........
21
Probleme:
• Anfügen von Blocks durch Angreifer
• Modifikation von Blöcken durch Angreifer
• Sehr lange Nachrichten haben immer noch Muster
4.4
CFB-Modus (Cipher Feedback Mode)
CFB: Das Ergebnis der Chiffrierung wird mit dem Klartext verknüpft und
ergibt so den Geheimtextblock. Auch hier wird ein IV (G0 ) benötigt:
Gi = fk (Gi−1 ) ⊕ Ki
Ki = Gi ⊕ fk−1 (Gi−1 )
.........
Ki−1
Ki
Ki+1
L
L
L
fk
.........
4.5
fk
.........
fk
Gi−1
Gi
Gi+1
.........
OFB-Modus (Output Feedback Mode)
CFB: Derselbe Block wird mehrfach verschlüsselt, das Ergbnis mit dem
Klartext verknüpft (internal Feedback). Auch hier wird ein IV (s0 ) benötigt:
si = fk (si−1 )
Gi = si ⊕ Ki
Ki = Gi ⊕ si
22
.........
Ki−1
L
?
L
?
s-
fk
s
.........
4.6
-
si−1
?
Gi−1
Ki+1
Ki
L
?
-
fk
s
-
-
si
.........
fk
s
-
si+1
?
?
Gi
Gi+1
.........
Stromchiffren
• Eine Stromchiffre codiert den Klartext zum Geheimtext Bit für Bit.
• Dazu wird ein sogenannter Schlüsselstrom erzeugt: eine Folge von
Bits.
• Zur Sicherheit hängt der Schlüsselstrom vom einem Schlüssel ab.
• Blockchiffren können als Stromchiffren verwendet werden. Da die
zu verschlüsselnden Texte kürzer sind als ein Block, müssen zusätzliche
Verfahren angewandt werden.
Schieberegister
Schieberegister
Beispiel: CFB wird benutzt, um ein die Daten byteweise zu kodieren
? 64-bit-Blöcken. (Man
(8-bit CFB). ?
Die verwendete Blockchiffre arbeitet auf
fk
fk
könnte auch
1-bit CFB benutzen, um bitweise zu kodieren,
allerdings muss
dann für jedes
? Bit ein 64-bit-Block chiffriert werden.)
?
Byte ganz links
ki
si
?
-L
Byte ganz links
- gi
gi
Verschlüsselung
si
?
-L
- ki
Entschlüsselung
8-bit CFB
Analog kann auch 8-Bit OFB zur Verschlüsselung benutzt werden. Allerdings zeigt die Kryptoanalyse, dass man OFB nur benutzen sollte, wenn
die Blocklänge gleich der Blocklänge des verwendeten Verschlüsselungsalgorithmus ist.
23
Schieberegister
Schieberegister
?
?
fk
fk
?
si
? - gi
-L
Byte ganz links
ki
gi
Verschlüsselung
5
?
si
? - k
-L
i
Byte ganz links
Entschlüsselung
* 8-bit OFB
DES und AES
5.1
Geschichte des Data Encryption Standard
DES und AES
• Es gab kaum kryptografische Forschung außerhalb des militärischen
Bereichs.
• NSA hatte Wissen und Erfahrung, aber selbst die Existenz der NSA
wurde nicht öffentlich zugegeben.
• Kleine Firmen stellten kryptografisches Equipment her und verkauften es; verschiedene Produkte waren nicht interoperabel.
• Niemand wusste, ob das sicher war, weil es keine unabhängige Prüfstelle für die Sicherheit gab.
• NBS 1972 beginnt ein Programm zum Schutz von Rechnern und Datenkommunikation.
• Teil dieses Programms: Entwicklung eines einheitlichen kryptografischen Standardalgorithmus.
• Mai 1973: Öffentlicher Aufruf des NBS für Vorschläge für einen kryptografischen Standardalgorithmus.
• Hohe Sicherheit,
• vollständig spezifiziert und einfach zu verstehen,
24
• Sicherheit des Algorithmus steckt im Schlüssel, nicht in der Geheimhaltung des Algorithmus,
• für alle Benutzer verfügbar,
• für viele verschiedene Anwendungen brauchbar,
• zu vernünftigem Preis in Hardware implementierbar,
• effizient in der Benutzung,
• validierbar,
• exportierbar.
• Resonanz groß, aber wenig Expertise.
• Keiner der eingereichten Vorschläge kam in die Nähe der Anforderungen.
• August 1974: Neuer Aufruf des NBS.
• Ein vielversprechender Kandidat von IBM, basierend auf einem den
frühen 1970ern entwickelten ein Algorithmus namens Lucifer.
• NBS bat NSA um Hilfe bei der Beurteilung der Sicherheit und der
Eignung als amerikanischer Standard.
• IBM hatte den Algorithmus zum Patent eingereicht, war aber bereit,
die Benutzung Allen kostenlos zu erlauben.
• 17.3.1975: Veröffentlichung der Details und Aufruf zum Kommentar.
Große Resonanz auf die Veröffentlichung:
• Viele Bedenken wegen der Beteiligung der NSA.
• Hatte die NSA vielleicht eine Hintertür eingebaut?
• Warum hatte die NSA die Schlüssellänge von 128 Bit (Lucifer) auf
56 Bit verkürzt?
• 1976: Zwei Workshops über die Mathematik des Algorithmus und
über die Möglichkeit, den Schlüssel länger zu machen. „lively“.
25
• 23.11.1976: Amerikanischer Standard, der für alle kritische, aber nicht
als geheim klassifizierte Regierungskommunikation genutzt werden
durfte.
• 15.1.1977: Veröffentlichung der offiziellen Beschreibung für DES (FIPS
PUB 46).
• Niemals vorher war ein von der NSA beurteilter Algorithmus veröffentlicht worden.
• Wahrscheinlich ein Missverständnis zwischen NBS und NSA.
• Die NSA glaubte, DES sei nur für den Einsatz in Hardware gedacht.
• Der Standard schrieb eine Implementierung in Hardware vor, enthielt aber genügend Details für das Schreiben der Software.
• Hätte die NSA das gewusst, hätten sie der Veröffentlichung nie zugestimmt.
• Der nächste Regierungsstandardalgorithmus Skipjack wurde (bis 1998)
geheimgehalten.
• Weil die Details von DES öffentlich waren, hatte DES einen enormen
Antrieb für die Kryptoanalyse (im öffentlichen Bereich).
• In den folgenden zehn Jahren wurde DES von vielen Organisationen
zum kryptografischen Standard gemacht, zum Beispiel von ANSI,
der American Bankers Association, ISO, Autralischer Bank-Standard.
• Als Teil des DES-Standards validiert NIST (Nachfolger von NBS) die
Implementierungen des DES.
• Bis 1994 nur Hardware, weil der Standard Softwareimplementierungen verbot.
• DES als Standard muss alle fünf Jahre neu evaluiert und bestätigt
werden.
• 1983 ging das einfach so durch.
• 1987 wollte die NSA (durch eine von Ronald Reagan unterzeichnete
Direktive mit Vetorecht ausgestattet) nicht wieder zertifizieren.
26
• Das kam nicht gut, besonders in der Finanzwelt, und so wurde nach
längerer Diskussion DES bis 1992 zertifiziert, angeblich zum letzten
Mal.
• 1992 gab es immer noch keine Alternative. Zwar waren sich alle einig, dass DES nicht mehr den heutigen Anforderungen entsprach,
aber der Algorithmus wurde für weitere fünf Jahre zertifiziert.
Nach heutigen Standards ist DES nicht gut genug.
• Im Sommer 1998 konnte eine DES-verschlüsselte Nachricht in 56 Stunden geknackt werden (auf einem speziellen Rechner).
• Im Januar 1999 dauerte es nur 22 Stunden, mit Hilfe von 100000 PCs.
• Deswegen wurde ein Nachfolger gesucht und in AES gefunden.
• Ein guter Überblicksartikel ist: http://www.ams.org/notices/200003/fealandau.pdf.
5.2
Der DES-Algorithmus
DES benutzt die zwei grundlegenden Verschlüsselungstechniken, die auf
Shannon zurückgehen: Vermischung (confusion) und Verteilung (diffusion).
• Vermischung verschleiert den Zusammenhang zwischen Klartext und
Geheimtext.
• Dies behindert die Suche nach Redundanzen und statistischen Mustern im Geheimtext.
• Die einfachste Methode ist Substitution.
• Verteilung der Redundanz des Klartextes über den Geheimtext.
• Die einfachste Methode ist Transposition (auch Permutation genannt).
• Stromchiffren beruhen nur auf Vermischung, Blockchiffren benutzen
Vermischung und Verteilung.
• DES ist eine Blockchiffre, die Blöcke von 64 Bits verschlüsselt, mit
einem 56 Bit langen Schlüssel.
27
• Der Schlüssel wird oft mit Paritätsbit versehen und dann als 64 Bit
dargestellt.
• Einige wenige mögliche Schlüssel sind schwache Schlüssel, die leicht
vermieden werden können.
• Alle Sicherheit beruht auf dem Schlüssel.
• DES arbeitet in mehreren Iterationen, die alle gleich aufgebaut sind.
Dies nennt man eine Runde des Algorithmus.
• DES hat 16 Runden, jede davon arbeitet in gleicher Weise.
• Für jede Runde wird ein etwas anderer Rundenschlüssel verwendet.
• Zu Beginn des Algorithmus steht eine Anfangspermutation (Initial
Permutation (IP)) der 64 Bits.
• Am Ende wird diese Permutation rückgängig gemacht.
• Diese Permutationen haben so gut wie keine Bedeutung für die Verschlüsselung.
• Vermutlich sollte damit das Laden des 64 Bit langen Blocks in einen
DES-Chip leichter gemacht werden, indem man ein Byte grosse Stücke
lädt.
• Aber: ohne diese Permutationen ist es kein DES.
• DES teilt die 64 Bit Eingabe in zwei Hälften zu je 32 Bit auf, arbeitet getrennt auf den beiden Teilen und vertauscht sie am Ende jeder
Runde.
• Dies ist ein Beispiel einer Feistel-Chiffre:
1. Eine Rundenfunktion wird auf eine der beiden Hälften angewandt.
2. Das Ergebnis wird mit der anderen Hälfte per XOR verknüpft.
3. Die beiden Hälften werden vertauscht (außer in der letzten Runde).
4. Verschlüsselung und Entschlüsselung sind von der Struktur her
identisch.
Li = Ri−1
Ri = Li−1 ⊕ f (Ri−1 , Ki )
28
K1
K2
K16
O
I
R0
N
P
R1
f
AP
U
L0 ⊕
R2
R15
f
U
R16
AP−1
f
L1 ⊕
L15 ⊕ L16
L2
T
P
U
T
T
58
62
57
61
50
54
49
53
42
46
41
45
34
38
33
37
26
30
25
29
18 10 2 60 52
22 14 6 64 56
17 9 1 59 51
21 13 5 63 55
44
48
43
47
36
40
35
39
28
32
27
31
20
24
19
23
12
16
11
15
4
8
3
7
Anfangspermutation (AP)
Zunächst wird der 64-Bit DES-Schlüssel auf 56 Bit reduziert, indem in
einer Permutation jedes achte Bit weggelassen wird (Paritätsbit).
57 49 41 33 25
10 2 59 51 43
63 55 47 39 31
14 6 61 53 45
17 9 1
35 27 19
23 15 7
37 29 21
58 50 42 34 26 18
11 3 60 52 44 36
62 54 46 38 30 22
13 5 28 20 12 4
DES: Schlüsselpermutation
Dann wird der entstehende Schlüssel in zwei Hälften zu 28 Bit aufgeteilt. dann wird, je nach Runde, für jede der beiden Hälften ein zirkulärer
Linksshift um ein oder zwei Bit durchgeführt (ein Bit in Runde 1, 2, 9 und
16).
Runde 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Shift 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
DES: Linkshift der Schlüsselbits
Nach dem Shift werden aus den entstandenen 56 Schlüsselbits 48 ausgewählt (Kompressionspermutation).
14
23
41
44
17
19
52
49
11
12
31
39
24
4
37
56
1
26
47
34
5
8
55
53
3
16
30
46
28
7
40
42
15
27
51
50
6
20
45
36
DES: Kompressionspermutation
29
21
13
33
29
10
2
48
32
Durch den Linksshift wird in jeder Runde eine andere Auswahl der Schlüsselbits verwendet. Jedes Bit wird ungefähr in 14 der 16 Runden benutzt,
allerdings nicht alle Bits genau gleich oft.
56 Bit
56 Bit
shift
Kompressionspermutation
shift
Ki
Der fundamentale Block von DES ist
eine Substitution, gefolgt von einer Permutation, abhängig von einem Schlüssel. Die Rundenfunktion f
besteht aus vier Teilen:
• Expansionspermutation E,
• XOR-Verknüpfung mit dem Rundenschlüssel,
• Ersetzung mit S-Boxen,
• Permutation (P-Box).
Die arithmetischen und logischen Operationen sind so gewählt, dass sie
mit der Hardware der 70er leicht zu implementieren waren, gerade auf
speziellen Chips. Ki
Ri−1
E
L
S
P
Li−1
L
Ri
Li
• Die Expansionsfunktion E operiert auf der rechten Hälfte der Daten
Ri und erweitert die 32 Bits zu 48 Bits.
30
• Der Hauptzweck ist allerdings, mit einem Bit mehr als eine Substitution zu beeinflussen.
• Dadurch verteilt sich der Einfluss der Eingabebits schneller über alle
Ausgabebits (Lawineneffekt, diffusion).
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
DES: Expansionspermutation
• Nach dem Verknüpfung mit dem Rundenschlüssel ist ein neues 48 BitMuster entstanden.
• Dies wird durch 32 Bit substituiert, und zwar in 8 Gruppen von 6 Bit
zu 4 Bit.
• Dazu dienen 8 Substitutionsboxen oder S-Boxen, alle verschieden.
• Die S-Boxen sind der Grund für die Komplexität und Qualität des
DES-Algorithmus.
• Jede S-Box hat sechs Eingabebits b1 , . . . , b6 und vier Ausgabebits.
• Man kann die Bits b2 , b3 , b4 , b5 als Eingabe und die Bits b1 und b6 als
Steuerung ansehen.
b2 b3 b4 b5
b1
b6
S-Box
31
b2 b3 b4 b5
b1
b6
S-Box
b1 b6
0
0
1
1
0
1
0
1
b2 , b3 , b4 , b5
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
b8 b9 b10 b11
b2
b12
S-Box
b7 b12
0
0
1
1
0
1
0
1
b8 , b9 , b10 , b11
0 1 2 3 4 5 6 7 8 9
15 1 8 14 6 11 3 4 9 7
3 13 4 7 15 2 8 14 12 0
0 14 7 11 10 4 13 1 5 8
13 8 10 1 3 15 4 2 11 6
10
2
1
12
7
11 12 13 14 15
13 12 0 5 10
10 6 9 11 5
6 9 3 2 15
12 0 5 14 9
b14 b15 b16 b17
b13
b18
S-Box
b13 b18
0
0
1
1
0
1
0
1
b14 , b15 , b16 , b17
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1
13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
32
b20 b21 b22 b23
b19
b24
S-Box
b19 b24
0
0
1
1
0
1
0
1
b20 , b21 , b22 , b23
0 1 2 3 4 5 6 7 8 9 10
7 13 14 3 0 6 9 10 1 2 8
13 8 11 5 6 15 0 3 4 7 2
10 6 9 0 12 11 7 13 15 1 3
3 15 0 6 10 1 13 8 9 4 5
11 12 13 14 15
5 11 12 4 15
12 1 10 14 9
14 5 2 8 4
11 12 7 2 14
b26 b27 b28 b29
b25
b30
S-Box
b25 b30
0
0
1
1
0
1
0
1
b26 , b27 , b28 , b29
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9
14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6
4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
b32 b33 b34 b35
b31
b36
S-Box
b31 b36
0
0
1
1
0
1
0
1
0 1 2 3
12 1 10 15
10 15 4 2
9 14 15 5
4 3 2 12
b32 , b33 , b34 , b35
4 5 6 7 8 9 10 11 12 13 14 15
9 2 6 8 0 13 3 4 14 7 5 11
7 12 9 5 6 1 13 14 0 11 3 8
2 8 12 3 7 0 4 10 1 13 11 6
9 5 15 10 11 14 1 7 6 0 8 13
33
b38 b39 b40 b41
b37
b42
S-Box
b37 b42
0
0
1
1
0
1
0
1
b38 , b39 , b40 , b41
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12
b44 b45 b46 b47
b43
b48
S-Box
b43 b48
0
0
1
1
0
1
0
1
0 1 2
13 2 8
1 15 13
7 11 4
2 1 14
b44 , b45 , b46 , b47
3 4 5 6 7 8 9 10
4 6 15 11 1 10 9 3
8 10 3 7 4 12 5 6
1 9 12 14 2 0 6 10
7 4 10 8 13 15 12 9
11 12 13 14 15
14 5 0 12 7
11 0 14 9 2
13 15 3 5 8
0 3 5 6 11
• Die 32 Bit aus der S-Box-Operation werden in der sogenannten P-Box
permutiert.
• Dies ist wiederum eine reine Permutation, kein Bit geht verloren und
keines wird hinzugefügt.
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
DES: P-Box Permutation
34
Li−1
Ri−1
Schlüsseli−1
Shift
Expansionperm.
Shift
Kompressionsperm.
⊕
S-Box-Subst.
P-Box-Perm.
⊕
Li
Ri
Schlüsseli
Rundenfunktion f
• Man sollte meinen, die Entschlüsselung funktioniere ganz anders.
• Im Gegenteil!
• Der Algorithmus ist genau derselbe, nur die Rundenschlüssel müssen in umgekehrter Reihnefolge angewandt werden.
• Das heisst, statt zirkulärem Linkshift erfolge zirkulärer Rechtsshift,
und die Anzahl der Shifts ist in der jeweiligen Runde 0, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1.
5.3
Einige Eigenschaften von DES
• Komplementarität: bedeutet X̄ das bitweise Komplement von X, so
ist
DES(m, k) = DES(m̄, k̄).
• Dies halbiert den Aufwand der vollständigen Schlüsselsuche.
• Es gibt vier schwache Schlüssel, bei denen alle Rundenschlüssel gleich
sind.
• Bei den 6 halbschwachen Schlüsselpaaren gibt es nur zwei verschiedene Rundenschlüssel (je achtmal).
35
• Ebenso gibt es 48 Schlüssel, aus denen nur vier verschiedene Rundenschlüssel hervorgehen.
• Dies ist kein Problem, weil es so viele andere mögliche Schlüssel gibt.
• Die DES-Verschlüsselungen bilden keine Gruppe.
• Das heisst, doppelte Verschlüsselung ergibt etwas Anderes als einfache.
• Doppelte DES-Verschlüsselung ist nur unwesentlich sicherer als einfache (“meet-in-the-middle”-Angriff).
• Dreifache DES-Verschlüsselung braucht 2112 Angriffsversuche statt
256 .
5.4
DES: Kryptoanalyse
• 1990 erfanden Eli Biham und Adi Shamir die differentielle Kryptoanalyse.
• Sie entdeckten eine chosen-plaintext-Attacke, die weniger Aufwand
benötigt als die vollständige Schüsselsuche.
• Jede Veränderung, die sie am DES-Algorithmus vornahmen, machte
ihn unsicherer.
• Später gab Don Copperfield (damals IBM) zu, dass den Entwicklern
und der NSA diese Technik bekannt war und sie das und die Designkriterien bewusst geheim gehalten hätten.
5.5
Die wirklichen Designkriterien
Nachdem die differentielle Kryptoanalyse bekannt geworden war, veröffentlichte Copperfield die Designkriterien für die S-Box- und P-Box-Transformationen:
• Jede S-Box hat 6 Bits Eingabe und 4 Bits Ausgabe (Designlimit für
Chips im Jahre 1974)
• Kein Outputbit einer S-Box sollte zu ähnlich einer linearen Transformation der Eingabebits sein.
• Hält man das erste und letzte Eingabebit einer S-Box fest und variiert
die anderen 4 Bits, so ergibt sich jeder mögliche 4-Bit-Ausgabekombination
genau einmal.
36
• Wenn sich zwei Eingabemuster einer S-Box um 1 Bit unterscheiden,
so müssen mindestens 2 Outputbits unterschiedlich sein.
• Wenn sich zwei Eingabemuster einer S-Box nur in den mittleren 2
Bits unterscheiden, müssen sich die zugehörigen Outputs um mindesten 2 Bits unterscheiden.
• Wenn sich zwei Eingabemuster einer S-Box in den ersten beiden Bits
unterscheiden und die letzten beiden Bits übereinstimmen, dürfen
die zugehörigen Outputs nicht gleich sein.
• Für eine gegebene 6-Bit-Differenz zweier Eingabemuster dürfen nicht
mehr als 8 der 32 Paare zur selben Differenz der Outputs führen.
• Ein ähnliches Kriterium, aber für drei S-Boxen.
• Die 4 Ausgabebits jeder S-Box in Runde i werden in der P-Box so
verteilt, dass 2 von ihnen die mittleren Bits von S-Boxen in Runde
i + 1 beeinflussen und die anderen 2 die Bits am Ende.
• Die 4 Ausgabebits jeder S-Box beeinflussen 6 verschiedene S-Boxen,
es gibt keine 2 Bits, die dieselbe S-Box beeinflussen.
• Wenn ein Outputbit einer S-Box ein mittleres Bit einer anderen S-Box
beeinflusst, dann darf ein Ausgabebit dieser S-Box kein mittleres Bit
der ersten S-box beeinflussen.
Dies ist heutzutage einfach, damals war es hart. Die Leute bei IBM liessen
den Computer monatelang nach passenden Transformationen suchen.
• Nicht vorhergesehen hatten die DES-Entwickler die Erfindung der
Linearen Kryptoanalyse durch Misuru Matsui.
• Damit kann der Schlüssel aus 243 bekannten Klartext/Geheimtextpaaren
bestimmt werden.
• All diese Angriffe sind eher theoretischer Natur.
• DES wurde gebrochen durch die Geschwindigkeit heutiger Rechner.
5.6
Varianten
• 3DES (Triple DES) darf (im Gegensatz zu DES) von amerikanischen
Regierungsstellen weiter benutzt werden.
• crypt(3) zur Passwortverschlüsselung auf Unix-Systemen hat eine
vom Schlüssel anbhängige Expansionspermutation.
37
5.7
AES/Rijndael
• 2. Januar 1997: NIST kündigt die Suche nach dem Advanced Encryption Standard (AES) an.
• 12. September 1997: Aufruf an die Öffentlichkeit, Algorithmen einzureichen. Es mussten nicht geheime, öffentlich bekannte Verschlüsselungsalgorithmen sein, die weltweit ohne Lizenzgebühren verfügbar waren. Außerdem musste der Algorithmus eine symmetrische
Blockchiffre implementieren, mit Blockgröße 128 Bits, und Schlüssellängen von 128, 192 und 256 Bits.
• 20. August 1998: (AES1-Konferenz) Fünfzehn Kandidaten wurden
bekannt gemacht, und NIST bittet um Kommentare.
• März 1999: (AES2-Konferenz) Die Ergebnisse werden diskutiert.
• 15. April 1999: Ende der Phase des öffentlichen Kommentars. NIST
wählt fünf Algorithmen für die zweite Phase des Auswahlverfahrens aus:
1. MARS (IBM),
2. RC6 (RSA Laboratories),
3. Rijndael (Joan Daemen, Vincent Rijmen),
4. Serpent (Ross Anderson, Eli Biham, Lars Knudsen),
5. Twofish (Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall, Niels Ferguson).
• 13.–14. April 2000 (New York): AES3-Konferenz, ein öffentliches Diskussionsforum.
• 15. Mai 2000: Ende der zweiten Phase.
Wichtig: Alle fünf Endrundenkandidaten sind sehr gute Blockchiffren.
Im endgültigen Bericht wird dies klar dargestellt: jeder der fünf Kandidaten könnte als AES dienen. Als Auswahlkriterien dienten:
Sicherheit
Kosten/Aufwand
Eigenschaften
• Resistenz des Algorithmus gegen moderne Kryptoanalyse,
38
• gute mathematische Grundlagen,
• Zufälligkeit der Ausgabe,
• Sicherheit im Vergleich zu den anderen Kandidaten.
• Lizenzbedingungen,
• Geschwindigkeit auf verschiedenen Plattformen,
• Speicherbedarf.
Eigenschaften des Algorithmus und der Implementation:
• Flexibilität: Anwendbarkeit als Stromchiffre oder Hash-Algorithmus,
• Einfachheit,
• Eignung zur Implementation in Hard- und Software,
• 2. Oktober 2000: NIST verkündet die Wahl von Rijndael.
• 26. November 2001: FIPS (Federal Information Processing Standard):
http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf, gültig ab
26. Mai 2002:
• Der Algorithmus darf in Software, Firmware, Hardware, oder jeder
Kombination davon implementiert werden.
• Der Algorithmus muss in Verbindung mit einem geeigneten Modus
(CBC,. . . ) benutzt werden.
• AES/Rijndael ist eine Blockchiffre mit Blocklänge 128 Bits, die Schlüssellänge ist 128, 192 oder 256 Bits.
• Der Algorithmus kann auch mit anderen Block- oder Schlüssellängen arbeiten,
• der AES-Standard erlaubt keine anderen Größen.
• Bei 128 Bit Schlüssellänge hat der Algorithmus 10 Runden, bei 192
Bit 12 Runden, bei 256 Bit 14 Runden.
• Im Gegensatz zu DES ist bei AES das Byte die Basis aller Operationen.
39
• Die Operationen sind in der Sprache der Algebra formuliert.
• Zum Beispiel die Darstellung eines Bytes: {b7 , b6 , b5 , b4 , b3 , b2 , b1 , b0 }.
• Alle Bytes werden als Elemente eines endlichen Körpers GF(28 ) interpretiert, unter Verwendung einer Polynomdarstellung:
7
6
5
4
3
2
b7 x + b6 x + b5 x + b4 x + b3 x + b 2 x + b1 x + b0 =
7
X
bi x i .
i=0
• Zum Beispiel bedeutet {01100011} das Polynom x6 + x5 + x + 1. Oder
hexadezimal: {63}.
Der Standard spezifiziert zunächst, wie die Grundrechenarten in diesem Körper aussehen:
• Addition erfolgt durch bitweises XOR:
• {01010111} ⊕ {10000011} = {11010100},
• {57} ⊕ {83} = {d4},
• (x6 + x4 + x2 + x + 1) + (x7 + x + 1) = x7 + x6 + x4 + x2 .
• Multiplikation ist definiert als Polynommultiplikation modulo dem
irreduziblen Polynom m(x) = x8 + x4 + x3 + x + 1.
• Alle Operationen werden durch diese Basisoperationen ausgedrückt.
Intern arbeitet AES mit dem sogenannten State Array, das aus 128 Bit
(16 Bytes) besteht, angeordnet als 4 Blöcke von je 4 Bytes:
si,j , 0 ≤ i, j ≤ 3
Zustandsfeld (State Array)
40
Wenn ini , i = 0, . . . , 15 die 16 Eingabebytes bezeichnet, so werden diese
am Anfang in s kopiert via
sz,s = in4z+s
Entsprechend wird bei der Ausgabe zurückkopiert:
out4z+s = sz,s
Die 4 Bytes in jeder Spalte des Zustandsfeldes bilden Worte à 32 Bit:
w0 = s0,0 s1,0 s2,0 s3,0
w1 = s0,1 s1,1 s2,1 s3,1
Schlüssellänge
(Nk Worte)
AES-128
AES-192
AES-256
4
6
8
w2 = s0,2 s1,2 s2,2 s3,2
w3 = s0,3 s1,3 s2,3 s3,3
Blockgröße
(Nb Wor- Rundenzahl(Nr)
te)
4
10
4
12
4
14
• Zu Beginn wird der Block wie oben angegeben in das Zustandsfeld
kopiert.
• Danach wird ein Rundenschlüssel addiert.
• Nun wird die Rundenfunktion, je nach Schlüssellänge 10, 12, oder 14
Mal auf das Zustandsfeld angewandt,
• die letzte Rundenfunktion ist etwas anders als die Nr-1 vorhergehenden.
• Der Endzustand wird wie schon beschrieben in den Ausgabeblock
kopiert.
• Vor der ersten und in jeder Runde wird ein Rundenschlüssel aus
Nb=4 Worten verwandt.
• Insgesamt sind dies Nb*(Nr+1) Worte, die in einem eindimensionalen Feld w vorgehalten werden.
Jede Rundenfunktion besteht aus vier Byte-orientierten Transformationen:
41
1. Byte-Substitution an Hand einer Tabelle (S-Box),
2. Shift der einzelnen Zeilen des Zustandsfeldes um verschiedene Werte,
3. Mischen der Daten innerhalb der Spalten des Zustandsfeldes,
4. Addition eines Rundenschlüssels zum Zustandsfeld.
Cipher(byte in[4*Nb],byte out[4*Nb],word w[Nb*(Nr+1)])
begin
byte state[4,Nb]
state = in
AddRoundKey(state, w[0, Nb-1])
for round = 1 step 1 to Nr-1
SubBytes(state)
ShiftRows(state)
MixColumns(state)
AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])
end for
SubBytes(state)
ShiftRows(state)
AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])
out = state
end
Die einzelnen Schritte:
• SubBytes() ist eine S-Box-Transformation.
42
S-Box aus SubBytes() in Hexadezimaldarstellung.
• ShiftRows() verschiebt die letzten drei Zeilen des Zustandsfeldes
zyklisch um jeweils verschieden viele Bits:
s0z,s = sz,(s+shift(r,N b) mod N b)
für 0 < z < 4 und 0 ≤ c < N b
shift(1, 4) = 1; shift(2, 4) = 2; shift(3, 4) = 3.
• MixColumns() verändert das Zustandsfeld spaltenweise.
43
• AddRoundKey() verknüpft das Zustandsfeld mit dem Rundenschlüssel per XOR.
In Worten:
• Die ersten Nk Worte des expandierten Schlüssels, stimmen mit dem
Schlüssel überein,
• das heisst, der erste Rundenschlüssel ist der Schlüssel selber.
• Jedes weitere Wort w[i] ist das Ergebnis einer XOR-Operation des
vorhergehenden Wortes w[i-1] mit dem Wort w[i-Nk], das Nk
Worte vorher steht.
• Ausnahmen gibt es bei dem jeweils letzten der Nk Worte eines Rundenschlüssels, bei denen eine zusätzliche Transformation angewandt
wird.
• Bei Schlüssellänge 256 Bits und wenn i + 4 ein Vielfaches von Nk
ist, wird ausserdem vor dem XOR noch ein SubWord() auf w[i]
angewandt.
Hier ist der Pseudocode zur Schlüsselexpansion:
KeyExpansion(byte key[4*Nk], word w[Nb*(Nr+1)], Nk)
begin
word temp
i = 0
while (i < Nk)
w[i] = word(key[4*i], key[4*i+1], key[4*i+2], key[4*i+3])
i = i+1
end while
i = Nk
while (i < Nb * (Nr+1)]
temp = w[i-1]
if (i mod Nk = 0)
temp = SubWord(RotWord(temp)) xor Rcon[i/Nk]
else if (Nk > 6 and i mod Nk = 4)
44
temp = SubWord(temp)
end if
w[i] = w[i-Nk] xor temp
i = i + 1
end while
end
Bemerkungen:
• N k = 4, 6 und 8 sind alle in dem if zusammengefasst.
• SubWord() bezeichnet wieder die S-Box-Transformation.
• RotWord() rotiert ein 32-Bit Wort um 8 Bit nach links.
• Die Felder Rcon[i] sind 32-Bit-Konstanten.
Analog zur Verschlüsselung gibt es bei der Entschlüsselung in jeder
Runde wieder die vier Transformationen:
• InvShiftRows(),
• InvSubBytes(),
• InvMixColumns(),
• AddRoundKey().
• Die Rundenschlüssel sind dieselben wie bei der Verschlüsselung,
werden aber in umgekehrter Reihenfolge angewandt.
InvCipher(byte in[4*Nb],byte out[4*Nb],word w[Nb*(Nr+1)])
begin
byte state[4,Nb]
state = in
AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])
for round = Nr-1 step -1 downto 1
InvShiftRows(state)
InvSubBytes(state)
AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])
InvMixColumns(state)
end for
InvShiftRows(state)
InvSubBytes(state)
AddRoundKey(state, w[0, Nb-1])
out = state
end
45
• Die Reihenfolge der Transformationen bei der Entschlüsselung ist
eine andere als bei der Verschlüsselung.
• Gewisse Eigenschaften des AES-Algorithmus erlauben die gleiche
Reihenfolge der Transformation bei der Entschlüsselung wie bei der
Verschüsselung:
1. SubBytes() und ShiftRows() sind vertauschbar (ebenso ihre Umkehrungen InvShiftRows() und InvSubBytes()).
2. MixColumns() und InvMixColumns() sind linear bezüglich
der Spalten, das heisst: MixColumns(state XOR RoundKey)
= MixColumns(state) XOR MixColumns(RoundKey
• Damit lässt sich die Entschlüsselung analog schreiben:
Cipher(byte in[4*Nb],byte out[4*Nb],word dw[Nb*(Nr+1)])
begin
byte state[4,Nb]
state = in
AddRoundKey(state, dw[Nr*Nb, (Nr+1)*Nb-1])
for round = Nr-1 step -11 downto 1
InvSubBytes(state)
InvShiftRows(state)
InvMixColumns(state)
AddRoundKey(state, dw[round*Nb, (round+1)*Nb-1])
end for
InvSubBytes(state)
InvShiftRows(state)
AddRoundKey(state, w[0, Nb-1])
out = state
end
5.8
Sicherheit von AES
Wie sicher ist AES? 2002 wurde eine Arbeit veröffentlicht, deren Autoren behaupten, sie könnten (zumindest theoretisch), den Schlüssel berechnen, wenn sie ein oder zwei Klartexte und zugehörige Geheimtexte kennen (known plaintext attack). Die Komplexität ist allerdings immer noch
2100 , im Gegensatz zu 2128 Operationen, um alle möglichen Schlüssel durch
vollständige Schlüsselsuche zu finden.
Das ist noch nicht kritisch. Kritisch wird es erst, wenn diese Methode
auch praktisch funktioniert und noch weiter vereinfacht wird.
46
5.9
Andere Blockchiffren
Die anderen Finalisten des AES-Wettbewerbs wurden schon genannt.
MARS Entwickelt von IBM
• Blocklänge 128 Bit, Schlüssellänge variabel.
• Muss lizensiert werden, ist aber kostenlos.
RC6 Entwickelt von Ron Rivest (RSA Data Security) als Verbesserung von
RC5.
• Blocklänge variabel (32, 64, 128 Bits), Schlüssellänge variabel (0–
2040 Bits), Anzahl der Runden variabel (0–255).
Serpent Entwickelt von Ross Anderson, Eli Biham und Lars Knudsen.
• Blocklänge 128 Bits, Schlüssellänge variabel (0–2040 Bits),
• 32 Runden.
• Vollständig public domain
• Im Linux Kernel implementiert
Twofish Entwickelt von Bruce Schneier et al.
• Blocklänge 128 Bits, Schlüssellänge 128, 192 oder 256 Bits,
• 16 Runden.
• Unpatentiert, kein Copyright, kostenlos.
• Im Linux Kernel implementiert
Es gibt noch eine Reihe anderer wichtiger und häufig verwendeter
Blockchiffren:
RC2 Entwickelt 1987 von Ron Rivest (RSA Data Security)
• Blocklänge 64 Bit, Schlüssellänge variabel und beliebig.
• Algorithmus erst 1997 veröffentlicht.
• Angeblich zwei bis dreimal so schnell wie DES (in Software).
• Muss lizensiert werden.
IDEA (International Data Encryption Algorithm), entwickelt von MediaCrypt.
47
• Blocklänge 64 Bit, Schlüssellänge 128 Bits.
• Patentiert, Benutzung kostet Geld (15 Euro je Benutzer).
CAST Entwickelt von Carlisle Adams und Stafford Tavares
• Blocklänge 64 Bit, Schlüssellänge 64 Bits.
• Patentiert.
• Neue Algorithmen CAST5 (CAST-128) und CAST6 (CAST-256)
sind weltweit ohne Lizenzgebühren zu benutzen, im Linux-Kernel
implementiert.
Blowfish Entwickelt 1993 von Bruce Schneier.
• Blocklänge 64 Bit, Schlüssellänge variabel: 32–448 Bits.
• Viel schneller als DES und IDEA.
• Nicht patentiert und lizenzfrei.
• Im Linux-Kernel implementiert.
RC5 Entwickelt 1994 von Ron Rivest (RSA Data Security)
• Blocklänge variabel (32, 64, 128 Bits), Schlüssellänge variabel (0–
2040 Bits), Anzahl der Runden variabel (0–255).
• Patentiert.
6
Authentifikation
Bisher haben wir uns mit der Geheimhaltung von Nachrichten beschäftigt, dem Schutz vor einem passiven Angreifer, der Nachrichten abhören möchte. Jetzt geht es um den Schutz vor einem aktiven Angreifer, der
Nachrichten aktiv verändern möchte. Es geht insbesondere um drei Punkte:
• Nachrichtenintegrität: Wie kann der Empfänger einer Nachricht sicher sein, dass die Nachricht nicht verändert wurde?
• Nachrichtenauthentifikation: Wie kann der Empfänger sicherstellen,
dass die Nachricht wirklich vom angeblichen Absender stammt?
• Benutzerauthentifikation: Wie kann eine Person ihre Identität beweisen?
48
6.1
Kryptografische Prüfsummen
• Damit der Empfänger die Unversehrtheit der Nachricht prüfen kann,
braucht er zusätzliche Information.
• Dieser Informationsblock heißt kryptografische Prüfsumme, kryptografischer Fingerabdruck (Fingerprint), Message Authentication Code (MAC),
oder auch parametrisierte Hashfunktion.
Beispiel: mit symmetrischer Verschlüsselung
Erzeugen eines MAC Aus der Nachricht m berechnet der Sender mit Hilfe eines Algorithmus F unter einem geheimen Schlüssel k den Message Authentication Code: MAC = Fk (m).
Überprüfen eines MAC Der Empfänger erhält mit der Nachricht m0 einen
Message Authentication Code MAC0 . Er überprüft, ob MAC0 = Fk (m0 ).
(Sender und Empfänger müssen also vorher einen geheimen Schlüssel
vereinbaren.)
Bemerkungen:
• Ein Angreifer kann die Nachricht nicht fälschen, ohne dass der Empfänger es merkt, weil der Angreifer den geheimen Schlüssel k nicht
kennt.
• Der Empfänger kann nur erkennen, ob die Nachricht unversehrt ist;
stellt er fest, dass sie verändert wurde, kann er das Original nicht
erzeugen.
Wie sieht das in der Praxis aus? Als Beispiel verwenden wir DES im
CBC-Modus:
Beispiel: DES im CBC-Modus
• Die Nachricht wird in Blöcke der Länge 64 Bit zerlegt (eventuell mit
passenden Bits aufgefüllt).
• Dann werden die Blöcke der Reihe nach mit DES-CBC verschlüsselt
und der letzte Block des Geheimtextes wird als MAC verwendet.
c1 = fk (m1 ) ,
49
ci = fk (ci−1 ⊕ mi )
k
. . . m3 m2 m1 L
DES
. . . c3 c2 c1
Vorteile:
• MAC hängt von allen Blöcken der Nachricht ab.
• MAC hat eine feste Länge (immer 64 Bit).
Das bringt uns zu der Frage: Wann ist ein MAC-Algorithmus „gut“?
1. Es sollte praktisch unmöglich sein, zu einem gegebenen MAC eine
passende Nachricht zu finden („Einweg-Hashfunktion’).
Praktisch unmöglich bedeutet: mit heutigen Methoden dauert es sehr,
sehr lange (Hunderte von Jahren), zum Beispiel, weil alle Nachrichten durchprobiert werden müssen.
2. Es sollte praktisch unmöglich sein, zwei verschiedene Nachrichten
m und m0 zu finden, die zum gleichen MAC führen („Kollisionsresistenz“).
3. Man unterscheidet:
(a) Schwache Kollisionsresistenz: Für ein gegebenes m ist es praktisch unmöglich, ein passendes m0 zu finden, so dass die MACs
übereinstimmen.
(b) Starke Kollisionsresistenz: Es ist praktisch unmöglich, irgendein Paar m, m0 mit demselben MAC zu finden.
6.2
Einweg-Hashfunktionen
Kompressionsfunktion bildet Strings fester Länge auf Strings fester, aber
geringerer Länge ab.
Hashfunktion bildet Strings beliebiger Länge auf Strings fester Länge ab.
Einwegfunktion h: Es ist praktisch unmöglich, sie umzukehren, das heißt,
für ein gegebenes s ein x zu finden, so dass h(x) = s.
50
6.3
Die Geburtstagsattacke
Frage: Wie lang muss das Ergebnis einer Einweg-Hashfunktion sein, damit der MAC sinnvoll einsetzbar ist?
• Alle solchen Einweg-Hashfunktionen sind prinzipiell mit der Geburtstagsattacke angreifbar.
• Dabei berechnet und speichert der Angreifer möglichst viele Nachrichten und deren Hashwerte.
• Die Attacke erfolgt durch Vergleich eines gegebenen MAC mit den
gespeicherten Werten.
• Damit lässt sich die Frage so formulieren: Wie lang muss das Ergebnis sein, damit es praktisch unmöglich ist, genügend viele Werte
auszurechnen und zu speichern?
• Antwort: Es muss so viele verschiedene mögliche Hashwerte geben,
dass es praktisch unmöglich ist, dass zufällig zweimal der gleiche
Wert herauskommt.
• Genau lässt sich diese Frage durch eine einfache statistische Analyse
beantworten.
• Anschaulich handelt es sich um das gleiche Problem wie beim so
genannten Geburtstagsparadox:
• In einem Raum halten sich k Personen auf. Wie groß ist die Wahrscheinlichkeit, dass zwei von ihnen am gleichen Tag Geburtstag haben?
• Etwas allgemeiner formuliert: Es gibt n verschiedene mögliche Geburtstage (n = 366) und k Personen im Raum.
• Die Wahrscheinlichkeit, dass die i-te Person (i = 1, . . . , k) am Tag gi
(gi = 1, . . . , n) Geburtstag hat, ist 1/n.
• Für alle Personen zusammen schreiben wir:
(g1 , . . . , gk ),
gi ∈ {1, . . . , n}
• Die Wahrscheinlichkeit dafür ist 1/nk .
51
• Wir berechnen die Wahrscheinlichkeit q, dass alle Geburtstage verschieden sind.
• Die Wahrscheinlichkeit, dass zwei (oder mehr) Personen am gleichen
Tag Geburtstag haben, ist dann p = 1 − q.
• Was uns interessiert, ist die Menge E aller (g1 , . . . , gk ), in denen alle
gi verschieden sind.
• Wie groß ist diese Menge?
• Zunächst einmal: Ist k > n (mehr als 366 Personen), so sind mindestens zwei der gi gleich, die Menge E ist leer.
• Ist k ≤ n, so hat, wie eben festgestellt, jedes der Elemente von E die
Wahrscheinlichkeit 1/nk ;
• also ist
q=
1
· |E|.
nk
• Wir müssen also die Elemente von E zählen.
• In der ersten Position g1 kann jeder Tag vorkommen, g1 kann also
alle n verschiedenen Werte annehmen.
• Hat g1 einen bestimmten Wert, so kann dieser für g2 nicht mehr vorkommen, deswegen gibt es für g2 nur n − 1 mögliche Werte, und so
weiter.
• Insgesamt gilt:
|E| = n(n − 1)(n − 2) . . . (n − k + 1).
• Die gesuchte Wahrscheinlichkeit q ist
1
|E|
nk
1
=
· n · (n − 1) · · · (n − k + 1)
nk
1
k−1
= 1 · (1 − ) · · · (1 −
).
n
n
q =
• Dies lässt sich leicht ausrechnen.
52
• Zur Vereinfachung schätzen wir das Ergebnis ab.
• Für alle reellen Zahlen x gilt die Ungleichung 1 − x ≤ e−x .
• Eingesetzt ergibt sich:
q ≤ e−1/n . . . e−(k−1)/n = e−k(k−1)/(2n) .
• Daraus folgt
p
1
k ≤ (1 + 1 − 8n ln q)
2
• Wenn wir jetzt fragen: Wie groß muss k sein, damit q ≤
1
), dann bekommen wir daraus die Antwort:
2
1
2
(oder p ≥
√
1
k ≥ (1 + 1 + 8n ln 2)
2
• Für unsere Geburtstage (n = 366), bekommen wir k ≥ 23.
• Das heißt: Wenn n = 366 und k = 23, dann ist die Wahrscheinlichkeit, dass zwei Personen am gleichen Tag Geburtstag haben, größer
als 1/2.
• Die Formel gilt aber auch für andere Fälle:
• Wenn n sehr groß ist, gilt:
k≈
√
√
√
1√
8n ln 2 = 2 ln 2 n ≈ 1,2 n
2
• Zurück zu unseren Einweghashfunktionen, bei denen die gleiche
statistische Analyse gilt:
• Kann die Hashfunktion n verschiedene Werte annehmen, so reichen
√
1
k ≥ (1 + 1 + 8n ln 2)
2
Werte aus, damit die Wahrscheinlichkeit für zwei gleiche Hashwerte
größer als 1/2 ist.
• Nehmen wir an, dass die Hashfunktion Werte mit N Bits berechnet,
so ist n = 2N , also
√
p
1
k ≥ f (N ) = (1 + (1 + (8 ln 2)2N ≈ 1,2 2N .
2
53
• Das heißt für eine Hashfunktion mit N Bits sind ungefähr
k ≥ f (N ) ≈ 2N/2
verschiedene Eingaben nötig, um mit 50% Wahrscheinlichkeit zwei
gleiche Hashwerte zu bekommen.
• Heutzutage wählt man daher mindestens N ≥ 128 (dies entspricht
64 Bits Sicherheit und damit DES).
• Für den digitalen Signaturstandard wird sogar N ≥ 160 verlangt.
• Zu AES (128 Bit Sicherheit) gehört eine Hash-Funktion mit N ≥ 256.
6.4
Beispiele aus der wirklichen Welt
Fast alle Hash-Funktionen aus der wirklichen Welt (und alle im Folgenden
vorgestellten) sind iterative Hashfunktionen. Das heißt:
1. Zuerst wird die Eingabe in Blöcke gleicher Länge aufgespalten: m1 , . . . , mk ;
fehlende Bits im letzten Block werden nach einer bestimmten Regel
ergänzt. Eine typische Blocklänge ist 512 Bits.
2. Dann werden diese Blöcke der Reihe nach abgearbeitet, mit Hilfe
einer Kompressionsfunktion h0 und eines internen Zustands Hi im
i-ten Schritt: Der Prozess beginnt mit einem festen Wert H0 des internen Zustands, und in jedem Schritt wird der Zustand verändert
nach der Regel
Hi = h0 (Hi−1 , mi ) .
Der letzte Wert Hk ist der Wert der Hash-Funktion.
Dies hat mehrere wichtige Vorteile:
1. Es ist einfach zu spezifizieren und zu implementieren.
2. Man kann anfangen zu rechnen, wenn der erste Block bekannt ist.
Damit kann auch ein Datenstrom von der Hash-Funktion verarbeitet
werden.
54
6.4.1
MD4
• MD4 (Message Digest 4) wurde 1990 von Ron Rivest vorgestellt. Der
Output ist ein 128-Bit-Hashwert.
• MD4 ist sehr schnell, aber inzwischen sind Attacken bekannt.
• Schon früher, als nur Attacken auf Teile des Algorithmus veröffentlicht waren, verbesserte Ron Rivest MD4 zu MD5.
Sicherheit: Es ist praktisch unmöglich, zwei Nachrichten zu finden, die
denselben Hashwert haben. Keine Attacke ist besser als Brute Force.
Direkte Sicherheit: Die Sicherheit von MD4 beruht nicht auf unbewiesenen Annahmen, wie: es ist schwierig, große Zahlen zu faktorisieren.
Geschwindigkeit: MD4 ist geeignet für schnelle Implementationen in Software. Es beruht auf einfachen Operationen auf 32-Bit-Operanden.
Einfachheit und Kompaktheit: MD4 ist so einfach wie möglich, ohne große
Datenstrukturen oder ein kompliziertes Programm.
Favorisiert Little-Endian-Architekturen: MD4 ist optimiert für Mikroprozessorarchitekturen (insbesondere Intel).
6.4.2
MD5
• MD5 ist im Design ähnlich zu MD4, aber komplizierter („MD4 mit
Sicherheitsgurt“).
• MD5 verarbeitet die Eingabe in Blöcken von 512 Bits, und zwar in
(16) Teilblöcken zu je 32 Bit.
• Daher ist dieser Algorithmus sehr effizient auf 32-Bit-CPUs.
• Zunächst wird die Nachricht auf ein Vielfaches von 512 Bit verlängert.
• Die letzten 64 Bit sind dabei die Länge der Nachricht (als 64-BitZahl);
• zwischen der eigentlichen Nachricht und diesem Längenfeld wird
mit genau einem 1-Bit und so vielen 0-Bits wie nötig aufgefüllt.
• Dann werden die einzelnen 512-Bit-Blöcke verarbeitet, und zwar in
jeweils 4 Runden, in jeder Runde 128 Bit.
55
• Die Zwischenergebnisse werden in 4 Variablen à 32 Bit gespeichert,
die wie folgt initialisiert werden:
A
B
C
D
=
=
=
=
0x01234567
0x89abcdef
0xfedcba98
0x76543210
• Diese Operation wird solange wiederholt, bis alle Eingabeblöcke abgearbeitet sind. Das Ergebnis ist dann der 128-Bit-Hashwert ABCD.
Jede Runde besteht aus 16 Operationen, die etwas unterschiedlich sind.
Message Block (512)
A
B
C
D
- - 1
-
-
A @
A
@
A
@
R
@
- AAU
-@
- 3
- 4
2
-
-⊕
-A
-⊕
-B
-C
6 ⊕
-D
6⊕
6
6
MD5: Hauptschleife
-
Mj t j
a
b
@
c
@
R
@
-Nichtlin. Funkt.-⊕?
-⊕?
-⊕?
- <<< s -⊕?
d
MD5: Eine Rundenoperation
Dabei bedeutet <<< s einen zirkulären Linksshift um s Bit. Die Werte A,
B, C, D werden zyklisch auf a, b, c, d abgebildet.
56
6.4.3
SHA (Secure Hash Algorithm)
• SHA ist Teil des Secure Hash Standard (SHS), der von NIST (mit
Hilfe der NSA) zur Benutzung für den Digital Signature Standard
entworfen wurde.
• Es heißt, die Designprinzipien seien „ähnlich wie bei MD4“; sie wurden aber nicht im Detail veröffentlicht.
• SHA-1 erzeugt einen 160-Bit-Hashwert.
• Wie bei MD5 wird die Nachricht zunächst auf ein Vielfaches von 512
Bit verlängert.
• Die Hauptschleife besteht wiederum aus 4 Runden, die allerdings
komplizierter sind als bei MD5:
ei−1
L
L
Wt
Kt
L
L
di−1
ci−1
ei
di
Nichtl. Fkt.
bi−1
ci
<<< 30
bi
<<< 5
ai−1
6.4.4
ai
Probleme iterativer Hash-Funktionen
Verlängerung
• Angenommen, wir haben eine Nachricht m, bestehend aus k Blöcken
m1 , . . . , mk , mit Hashwert h(m).
• Dann kann ein Angreifer einen Block mk+1 anfügen, und den Hashwert dieser neuen Nachricht m0 berechnen als
h(m0 ) = h0 (h(m), mk+1 ) .
• Da der Hashwert stimmt, kann der Empfänger diese Manipulation
nicht entdecken!
57
Kollision bei Nachrichtenteilen
• Angenommen, es gebe zwei verschiedene Nachrichten m und m0 mit
gleichem Hashwert h(m) = h(m0 ).
• Wenn ich nun an beide Nachrichten den gleichen Text X anfüge, so
ist der Hashwert der neuen, verlängerten Nachrichten m k X und
m0 k X immer noch gleich.
• Der Angreifer muss also nur noch zu einer gegebenen Nachricht m k
X einen Teil m und m0 finden, sodass h(m) = h(m0 ).
• Dann ist automatisch auch h(m k X) = h(m0 k X).
1. Zu jeder Nachricht m berechne zuerst h(m), dann hänge h(m) und
m zusammen, und berechne davon den Hashwert: h(h(m) k m).
2. Zu jeder Nachricht m berechne zuerst h(h(m)).
3. HMAC.
6.4.5
HMAC
HMAC ist die Bezeichnung für einen MAC mit Hilfe einer Einweg-Hashfunktion
h.
• Gegeben unsere Nachricht m und unser geheimer Schlüssel, so berechnet der HMAC-Algorithmus:
h((k ⊕ a) k h((k ⊕ b) k m)) .
a und b sind Konstanten.
• Vorteil: Kollisionen spielen keine große Rolle, weil a und b die Rolle
eines Schlüssels spielen.
• HMAC wird an vielen Stellen benutzt.
Probleme:
• Es ist möglich, in MD5 Kollisionen zu erzeugen.
• Weiterhin sind 128 Bit in unseren Zeiten zu wenig. Die Geburtstagsattacke zeigt, dass 264 Versuche ausreichen, um eine Kollision zu
finden.
58
• 2004 wurde nachgewiesen, dass es mit vertretbarem Aufwand möglich ist, zu einer Nachricht mit einem bestimmten Hashwert eine
zweite, unterschiedliche, Nachricht mit demselben Hashwert zu erzeugen, und zwar für: MD4, MD5 und Andere (RIPEMD, HAVAL128, SHA-0).
• SHA-1 war nicht betroffen.
• Zunächst war keine kryptografische Attacke gegen SHA-1 bekannt.
• Wie bei MD5 wird argumentiert, dass 160 Bit zu wenig sind, weil
man in 280 Versuchen eine Kollision finden kann.
• In diesem Jahr wiesen drei chinesische Forscher nach, dass SHA-1
gebrochen werden kann, und zwar durch eine Kollision in 269 Versuchen.
• Damit ist SHA-1 für digitale Signaturen nicht mehr zu empfehlen.
• Es gibt bereits neue amerikanische Standards SHA-224, SHA-256,
SHA-384, SHA-512.
• Allerdings ist SHA-384 ziemlich sinnlos, weil man 512 Bit berechnet
und dann 128 Bit weg lässt. Diese Algorithmen sind deutlich langsamer als SHA-1.
6.5
Benutzerauthentifikation
• Wie kann sich eine Person (eine Benutzerin) gegenüber einem Rechner (Zielsystem) ausweisen?
• Die naive Methode benutzt einen Benutzernamen und ein Passwort,
das nur der Benutzerin bekannt ist.
Probleme:
1. Benutzername und Passwort werden im Klartext übertragen und
können abgehört werden. Lösung: Verschlüsselung
2. Selbst verschlüsselter Verkehr ist protokollier- und wiederholbar („Replay Attack“). Mögliche Lösungen: Wechsel der Schlüssel, Zeitstempel (Timestamps), Einmalpasswörter (Beispiel: TANs)
59
3. Ein Angreifer könnte sich den Schlüssel beschaffen. Damit wäre die
gesamte Methode unsicher.
4. Die Passwörter sind auf dem Zielsystem abgelegt. Lösung: lege Hashwerte der Passwörter ab, damit sind die Passwörter auf dem Zielsystem nicht entschlüsselbar.
5. Das Zielsystem ist nicht identifizierbar, ein aktiver Angreifer könnte
den Benutzerinnen die Identität des Zielsystem vorspiegeln und so
in den Besitz der Passwörter kommen.
• Wie kann man sich vor der Replay-Attacke schützen?
• Eine mögliche Lösung heißt Challenge-Response-Methode und funktioniert so:
1. Das Zielsystem schickt ein zufällig gewähltes Bitmuster RAND
an die Benutzerin, die sich authentifizieren will.
2. Die Benutzerin wendet einen Algorithmus auf RAND an, der
von ihrem Passwort abhängt, fk (RAND), und schickt das Ergebnis an das Zielsystem.
3. Das Zielsystem berechnet ebenfalls fk (RAND) und vergleicht.
• Auf den ersten Blick sieht das so aus, als müsste doch das Passwort
auf dem Zielsystem hinterlegt sein.
• Nein! Denn man kann ja auch zum Beispiel den Hashwert des Passwortes hinterlegen.
• Gegen ein Ausspähen des und Einbruch in das Zielsystem nützt das
allerdings auch nur begrenzt.
• Nach wie vor ist dies nur einseitige Authentifikation, das Zielsystem
könnte vorgespiegelt sein.
• Dies kann man durch gegenseitige Challenge-Response lösen.
• Praktische Anwendungen: GSM-Handy, dort erfolgt eine ChallengeResponse-Authentifizierung des Handy mit Hilfe der SIM-Karte. Erst
bei UMTS authentifiziert sich auch das Netz gegenüber dem Handy.
60
6.6
Zero-Knowledge-Protokolle
• Alle bisher vorgestellten Systeme beruhen mehr oder weniger auf
dem so genannten Prinzip des Gemeinsamen Geheimnisses (Shared
Secret): es gibt eine (geheime) Information, die beiden Seiten, Benutzerin wie Zielsystem, bekannt ist.
• Kann ich das auch ohne gemeinsames Geheimnis machen? Kann ich
einen Kommunikationspartner davon überzeugen, dass ich etwas
weiß, ohne ihm das Wissen selbst mitzuteilen?
• Ja! Die Antwort liefern die Zero-Knowledge-Protokolle.
Nach n Versuchen, ist die Wahrscheinlichkeit, dass Circe das Geheimnis nicht kennt, 2−n .
6.6.1
Das Fiat-Shamir-Protokoll
• Das Fiat-Shamir-Protokoll wurde 1986 von Adi Shamir und Amos
Fiat vorgestellt.
• Es wurde für den Einsatz auf Chipkarten entwickelt und beruht darauf, dass es äußerst schwierig ist, die modulare Quadratwurzel einer
großen Zahl v zu berechnen.
• Seien n, v positive ganze Zahlen.
• Gesucht ist eine Zahl s mit der Eigenschaft s2 = v (mod n).
• Wenn n genügend groß ist (200–300 Dezimalstellen bzw. 1024 Binärstellen), dann ist die Kenntnis von s ein Geheimnis, dass man gut
hüten sollte.
• Zu Beginn wählt man in einer Authentisierungszentrale n als Produkt zweier ungefähr gleich langer Primzahlen p, q: n = p · q.
• n wird öffentlich gemacht; p und q werden geheim gehalten!
• Denn: wenn man die Quadratwurzeln (mod p) und (mod q) kennt,
kann man die Quadratwurzel (mod (pq)) daraus sozusagen zusammensetzen.
• Diese Zahlen müssen so groß sein, dass es praktisch unmöglich ist, p
und q als Primfaktoren von n zu berechnen.
61
• Für jeden Benutzer wird jetzt eine Zahl s bestimmt, die das Geheimnis des Benutzers ist, und daraus v = s2 (mod n) berechnet.
Benutzerin Alice beweist folgendermaßen, dass sie s kennt, ohne die
geringste Information über s selbst preiszugeben:
1. Alice wählt zufällig eine Zahl r, die teilerfremd zu n ist, berechnet
x = r2 (mod n), und sendet diese Zahlt x an das Zielsystem.
2. Das Zielsystem wählt zufällig ein Bit b aus und sendet es an Alice
(Challenge). (Die Wahl dieses Bits entspricht der Wahl Odysseus, ob
er „Rechts!“ oder „Links!“ ruft.)
3. Alice berechnet:
(a) Im Fall b = 1: y = r · s (mod n),
(b) Im Fall b = 0: y = r (mod n),
und sendet y an das Zielsystem.
4. Das Zielsystem berechnet y 2 (mod n) und prüft
(a) Im Fall b = 1: y 2 (mod n) = r2 s2 (mod n) = x · v (mod n),
(b) Im Fall b = 0: y 2 (mod n) = r2 (mod n) = x (mod n).
1. Die Challenge ist die Frage nach entweder r oder r · s. Da Alice s
kennt, kann sie beide Fragen richtig beantworten.
2. Ein Angreifer, der s nicht kennt, kann nur eine der beiden Fragen
richtig beantworten. Denn er hat zwei Möglichkeiten:
(a) Er hofft, dass das Zielsystem b = 0 sendet. Dann wählt er (wie
Alice) eine Zahl r, die teilerfremd zu n ist und sendet x = r2
im ersten Schritt. Hat er richtig geraten, so sendet er im dritten
Schritt y = r.
(b) Er hofft, dass das Zielsystem b = 1 sendet. Dann wählt er eine
Zahl r0 , die teilerfremd zu n ist, und sendet x = r02 ·v −1 im ersten
Schritt. Hat er richtig geraten, so sendet er im dritten Schritt
y = r0 , denn y 2 = r02 = x · v.
Kennt er s nicht, ist die Wahrscheinlichkeit, die richtige Antwort zu
geben, pro Schritt 1/2, nach n Schritten 2−n .
1. Beide Seiten müssen nur einfache Operationen durchführen.
62
2. Das Zielsystem verwendet nur öffentliche Informationen, nur Alice
kennt s. (s selbst bleibt geheim.)
3. Das Verfahren beruht darauf, dass es praktisch unmögliche ist, die
modulare Quadratwurzel zu berechnen.
6.7
Chipkarten
Eine Chipkarte ist eine Plastikkarte mit einem eingebetteten Minirechner.
Damit kann zum ersten Mal Sicherheit auf der kryptografischer Basis realisiert werden, und zwar für jedermann, nicht nur für Experten! Das liegt
am Zusammentreffen zweier Eigenschaften:
• Chipkarten sind ideal für Kryptografie: Speicherung geheimer Schlüssel, Ausführung kryptografischer Algorithmen
• Chipkarten sind ideal für Menschen: einfach zu benutzen (PIN)
6.7.1
Zugangskontrolle mit Chipkarte
Der übliche Passwortmechanismus wird in zwei Schritte zerlegt:
1 Die Kartenbesitzerin identifiziert sich der Chipkarte gegenüber mit ihrer PIN, die innerhalb der Karte verifiziert wird. Das heißt insbesondere, dass die PIN nirgendwo sonst gespeichert wird! Man kann
eine Reihe von nützlichen Mechanismen einbauen: zum Beispiel die
automatische Sperre der Karte, wenn die PIN dreimal falsch eingegeben wird, oder sogar der Benutzerin erlauben, die PIN zu ändern.
Auch die Länge kann variabel sein.
2 Wenn die PIN stimmt, identifiziert sich die Chipkarte dem Rechner gegenüber mit einem Challenge-Response-Verfahren. Dafür brauchen
Chipkarte und Rechner einen gemeinsamen Algorithmus f und einen
geheimen Schlüssel k (shared secret). Der Rechner sendet eine Zufallszahl RAND an die Karte, diese berechnet fk (RAND) und schickt
das Ergebnis zurück. Da sich die Nachricht jedes mal ändert, kann
ein Angreifer mit einer abgehörten Nachricht nichts anfangen.
63
6.8
6.8.1
Anwendungen in der realen Welt: MS-CHAP und Kerberos
PPTP und MS-CHAP
• Das Point-to-Point Tunneling Protocol (PPTP) ist ein Protokoll von
Microsoft für sichere Kommunikation über (unsichere) TCP/IP-Verbindungen.
(Im Verbindungsassistenten nennt sich das einfach VPN.)
• Die ursprüngliche (NT-)Implementation dieses Protokolls war unsicher, sowohl bei der Authentifikation als auch bei der Verschlüsselung.
• Ich beschränke mich hier auf die Authentifikation mit MS-CHAP.
• Näheres siehe im Artikel von Bruce Schneier.
Der PPTP-Server läuft auf NT 4 oder 5 (W2K(3)) Server. Es gab zunächst drei Authentifizierungsmethoden:
1. Passwort wird im Klartext übertragen (Verbindung unverschlüsselt).
2. Passwort-Hash wird übertragen (Verbindung unverschlüsselt).
3. Challenge-Response mittels MS-CHAP (Verbindung verschlüsselt).
Passwort-Hashes Es wurden gleichzeitig zwei verschiedene Hash-Funktionen
verwendet, vermutlich der Rückwärtskompatibilität wegen:
Lan-Manager-Hash: 1. Das Passwort wird durch Abschneiden oder Auffüllen mit 0-Bytes auf 14 Byte Länge gebracht (b1 . . . b14 ).
2. Alle Kleinbuchstaben werden in die entsprechenden Großbuchstaben umgewandelt.
3. Die zwei Hälften à 7 Byte, also 56 Bits werden als DES-Schlüssel
benutzt, um festgelegte Konstanten c1 und c2 (!) zu verschlüsseln.
4. Die beiden jeweils 8 Byte langen Ergebnisse ergeben zusammen
den 16 Byte langen LAN-Manager-Hashwert.
Lan-Manager-Hash: Dies ist ein sehr schwacher Hash! Zum Beispiel: ist
das Passwort nicht länger als 7 Buchstaben, dann ist der besteht der
zweite DES-Schlüssel aus lauter 0-Bits, und damit sind die letzten 8
Byte des LAN-Manager-Hashes konstant und bekannt!
64
NT-Passwort-Hash: Wandle das Passwort (das wiederum aus maximal 14
Zeichen bestehen darf) nach Unicode um und berechne daraus den
16 Byte langen MD4-Hash.
Problem: es werden immer beide Hashwerte benutzt. Damit ist das Verfahren nur so gut wie der schwächere LAN-Manager-Hash.
Das MS-CHAP-Verfahren (Version 1)
1. Der Klient fordert ein Login an.
2. Der Server sendet eine zufällige 8-Byte-Challenge.
3. Der Klient berechnet den Lan-Manager-Hash des Passwortes, fügt
fünf 0-Bytes hinzu, um drei 56 Bit lange DES-Schlüssel zu bekommen. Die Server-Challenge wird mit jedem dieser drei DES-Schlüssel
verschlüsselt, die Ergebnisse werden zu einer 24 Byte langen Antwort zusammengefasst. Das gleiche Verfahren wird mit dem NTPasswort-Hash durchgeführt. Die Ergebnisse gehen zurück an den
Server.
4. Der Server führt dieselben Operationen durch und vergleicht, aber
nur mit einem der beiden 24 Byte langen Ergebnisse, abhängig von
einem Flag im Antwortpaket des Klienten. Der andere 24-Byte-Block
wird ignoriert.
Probleme:
1. Es reicht aus, den schwachen LAN-Manager-Hash zu attackieren.
2. Weil drei Teile unabhängig voneinander verschlüsselt werden, kann
man das Protokoll selbst attackieren:
Ist das Passwort maximal 7 Zeichen lang, so sind die letzten 8 Byte
des LAN-Manager-Hashes konstant. Daher bestehen die letzten 8
Byte des 24-Byte langen Antwortblocks aus dem Challenge, das mit
dieser Konstanten verschlüsselt ist!
3. Der Server ist nicht authentisiert.
Kurz gesagt, das Protokoll selbst ist so unsicher, dass es mit einfachen
Mitteln möglich ist, dem Server eine falsche Identität vorzutäuschen. Dazu kommt dann noch, dass die Verschlüsselung des Datenverkehrs auch
nicht sicher war. Microsoft hat dann nachgelegt und eine neue Version
entwickelt, die die Probleme vermeidet: MS-CHAPv2.
65
Das MS-CHAP-Verfahren (Version 2)
• Der Klient fordert ein Login an.
• Der Server sendet eine zufällige 16 Byte lange Challenge.
• Der Klient erzeugt ebenfalls eine 16 Byte lange Zufallszahl (“Peer
Authentication Challenge”). Aus der Server-Challenge, der Peer Authentication Challenge und dem Benutzernamen des Klienten wird
mittels SHA-1 ein 8 Byte langer Hashwert erzeugt.
Wie bei MS-CHAPv1 werden aus dem NT-Passwort-Hash drei DESSchlüssel erzeugt, die diesen Hashwert verschlüsseln. Der Klient sendet dem Server die Peer Authentication Challenge und das 24 Byte
lange Ergebnis der Verschlüsselung.
• Der Server führt dieselben Berechnungen durch und prüft die Gültigkeit. Ist das Ergebnis richtig, erzeugt er aus der Peer Authentication Challenge und dem NT-Passwort-Hash eine 20 Byte lange “Peer
Authenticator Response” und sendet sie an den Klienten.
• Der Klient führt die gleichen Operationen durch und prüft das Ergebnis. Damit wird sichergestellt, dass auch der Server das NT-PasswortHash kennt.
Probleme:
• Warum so kompliziert?
• NT-Passwort-Hash ist durch Brute-Force-Attacke knackbar.
• Schwache Passworte sind nach wie vor leicht knackbar.
6.8.2
Kerberos
• Kerberos wurde am MIT für das Athena-Projekt entwickelt.
• Kerberos 4 war die erste öffentliche Version (1987).
• Kerberos 5 (1991) ist die Authentisierungsmethode in Windows-Domänen
seit NT 5 (W2K).
• Kerberos benutzt Shared Secrets.
66
• Dreh- und Angelpunkt ist der Kerberos Authentication Server, genannt Key Distribution Center (KDC), bei dem Benutzer und Netzwerkdienste (“Principals”) ihre geheimen Schlüssel hinterlegen.
• Daher muss dieser Rechner sicher sein (in W2K: DC). Für Benutzer
ist dieser geheime Schlüssel eine verschlüsselte Version des Passwortes.
• Die Grundidee ist sehr einfach. Alice hat mit dem KDC einen Schlüssel KA vereinbart, Bob ebenso KB . Daher können Alice und Bob, jede(r) für sich, sicher mit dem KDC kommunizieren. Wenn aber Alice
und Bob sicher miteinander reden wollen, erzeugt der KDC einen
gemeinsamen Schlüssel KAB , den Alice und Bob benutzen können.
• Damit ist es möglich, Nachrichten zu verschicken, die einen Principal von der Identität eines anderen überzeugen. Im Detail geht das
so:
1. Alice will mit Bob reden und teilt das dem KDC mit. Der KDC
sendet einen neuen geheimen Schlüssel KAB , und dazu nochmal KAB , diesmal aber mit Bobs geheimem Schlüssel KB (den
Alice nicht kennt) verschlüsselt. Diese beiden Teilnachrichten
sind mit Alices geheimen Schlüssel KA verschlüsselt, sodass nur
Alice sie lesen kann.
2. Damit hat Alice schon einmal den gemeinsamen Schlüssel KAB .
Den zweiten Teil sendet Alice nun an Bob, der ihn entschlüsselt und damit auch KAB erhält. Also haben Alice und Bob jetzt
einen gemeinsamen geheimen Sitzungsschlüssel, mit dem der
Netzwerkverkehr zwischen den beiden Parteien verschlüsselt
wird.
3. Ist die Sitzung beendet, wird der zugehörige Schlüssel zerstört,
das heißt, beide Parteien löschen ihn.
• Der KDC vergisst (löscht) den Schlüssel sofort, nachdem er ausgegeben wurde. Der KDC muss also keine zusätzlichen Daten speichern,
und kann deshalb mehrfach vorhanden sein.
• Die Verschlüsselung selbst erfolgt mit DES (oder 3DES) im CBCModus, oder (W2K) mit RC4-HMAC.
• Die Schlüssel haben eine begrenzte Gültigkeit (typisch: zehn Stunden).
67
• Ein Netzwerkdienst, zum Beispiel ein Dateiserver, ist genauso ein
Principal wie ein Benutzer, hat also auch einen Schlüssel beim KDC
hinterlegt.
• Ein Ticket ist eine sichere Methode, einen Server von der Identität
eines Klienten zu überzeugen. Es gilt immer nur für einen Server
und einen Klienten und enthält:
– Name und Netzwerkadresse des Klienten
– Name des Servers
– Gültigkeitsdauer (Timestamp), typisch Stunden bis maximal Tage.
– Einen Sitzungsschlüssel
Das Ticket ist mit dem geheimen Schlüssel des Servers verschlüsselt;
damit ist der Klient sicher, dass nur der zuständige Server etwas damit anfangen kann.
• Zum Anfordern eines Dienstes wird neben dem Ticket ein Authenticator benutzt. Dieser ist (im Gegensatz zum Ticket) nur einmal gültig
und ist mit dem Sitzungsschlüssel der beiden Partner verschlüsselt.
Er enthält:
– Name des Klienten
– Zeitstempel
– Sitzungsschlüssel (optional)
• Es gibt einen speziellen Dienst, den Ticket Granting Service (TGS).
Dieser kann Tickets für alle anderen Dienste ausgeben, wenn der Klient sich mit dem initialen Ticket Granting Ticket bei ihm identifiziert.
• Authentisierungsschritte:
1. Klient fordert Ticket-Granting-Ticket (TGT) an.
2. Kerberos (KDC) sendet TGT.
3. Klient benutzt TGT, um ein Server-Ticket anzufordern.
4. TGS sendet Server-Ticket.
5. Klient benutzt Server-Ticket, um Dienst anzufordern.
68
Kerberos (KDC)
TGS
6
1. TGT?
3./4. Server-Ticket
2. TGT!
?
Klient
5. Dienst anfordern
Server
Sicherheit von Kerberos
• Alle Rechner müssen die gleiche Uhrzeit haben.
• Da Tickets eine gewisse Lebensdauer haben, gibt es die Möglichkeit
von Replay Attacks.
• Passworte können geraten werden!
• Die Kerberos-Software auf allen beteiligten Rechnern muss sicher
und vertrauenswürdig sein.
7
Public-Key-Kryptografie
Bisher: Symmetrische Kryptosysteme, das heißt:
1. Wer verschlüsseln kann, kann auch entschlüsseln.
2. Vor der Verschlüsselung muss der geheime Schlüssel ausgetauscht
werden.
Geht’s auch anders? Ja! Mai 1976: Whitfield Diffie und Martin Hellman
veröffentlichen ihre Arbeit: New Directions in Cryptography. Sie enthält
drei wichtige neue Konzepte:
1. Versenden verschlüsselter Nachrichten ohne Schlüsselaustausch (nur
theoretisch, ohne konkretes Verfahren),
2. Konzept der Digitalen Signatur
69
3. Schlüsselaustausch über einen unsicheren Kanal.
1977: RSA-Algorithmus bietet konkretes Verfahren.
7.1
Idee der Public-Key-Kryptografie
• Jeder Teilnehmer hat ein Paar von Schlüsseln, einen geheimen Schlüssel d (private key) und einen öffentlichen Schlüssel e (public key).
• Es ist praktisch unmöglich, von e (öffentlich) auf d (geheim) zu schließen.
• Dies definiert ein asymmetrisches Kryptosystem.
• e dient zum Verschlüsseln:
e : Klartext → Geheimtext.
Wir schreiben: g = EB (k), um die Verschlüsselung des Klartextes k
mit dem öffentlichen Schlüssel der Person B zu bezeichnen.
• Nur mit d kann ich die Nachricht wieder entschlüsseln:
d : Geheimtext → Klartext.
Wir schreiben: k = DB (g).
• Mathematisch gesprochen: e definiert eine Einwegfunktion, d eine
„Hintertür“, um die Umkehrung doch berechnen zu können.
Wenn ich jemandem eine geheime Nachricht senden will, besorge ich
mir den öffentlichen Schlüssel des Empfängers, verschlüssele damit und
sende das Ergebnis. Nur der Empfänger besitzt den zugehörigen geheimen Schlüssel, um die Nachricht entschlüsseln zu können.
Ein asymmetrisches Kryptosystem heißt Public-Key-Verschlüsselungssystem
(oder auch: asymmetrisches Verschlüsselungssystem), wenn für jede Nachricht m gilt:
c = E(m), m = D(c),
das heißt, D macht E rückgängig.
Vorteile
• Kein Schlüsselaustausch
• Nur ein Schlüssel je Teilnehmer
• Neue Teilnehmer können jederzeit hinzugefügt werden.
70
Nachteile
• Wie garantiere ich, dass ich den öffentlichen Schlüssel des Empfängers bekomme (und keine Fälschung)? Lösung: PKI (Public Key Infrastructure), kommt später.
• Asymmetrische Verfahren sind langsam.
7.2
Erste Realisierung: RSA-Algorithmus
Autoren: Ronald Rivest, Adi Shamir, Leonard Adleman
Idee: Für jeden Teilnehmer nehme zwei etwa gleich große Primzahlen p,
q, berechne n = p · q und bestimme zwei natürliche Zahlen e und d so, dass
gilt:
e · d = s(p − 1)(q − 1) + 1
Dann ist d der geheime Schlüssel, e (zusammen mit dem so genannten
Modul n) der öffentliche Schlüssel. Verschlüsselung einer Zahl m < n:
c = me mod n
Entschlüsselung mit d:
m0 = cd mod n
Zauberei? Nein, Zahlentheorie!
7.3
Kleiner Zahlentheoretischer Exkurs
Von Leonard Euler (1707-1783) stammt ein nach ihm benannter Satz, aus
dem folgende Aussage abgeleitet werden kann: Seien p, q Primzahlen, n =
p · q. Für jede natürliche Zahl m ≤ n und jede natürliche Zahl s gilt:
ms(p−1)(q−1)+1 ≡ m (mod n).
Beispiel:
p = 2, q = 5. Dann gilt für s = 1:
m5 ≡ m
(mod 10) für m ≤ 10.
Mit dieser Aussage können wir beweisen:
m0 = m
für m < n,
71
denn es gilt:
m0 =
=
=
≡
cd mod n
(me mod n)d mod n = (me )d mod n = me·d mod n
ms(p−1)(q−1)+1 mod n
m (mod n) = m.
Damit ist bewiesen, dass die Methode tatsächlich funktioniert.
Wie schwer ist es, e und d zu finden? Die Antwort liefert der Euklidische
Algorithmus (um 300 v. Chr.): Für jede natürliche Zahl e, die teilerfremd zu
(p-1)(q-1) ist, kann man leicht eine natürliche Zahl d finden, so dass gilt:
e · d = s(p − 1)(q − 1) + 1.
e wird vorgegeben, d und s ergeben sich im Laufe der Rechnung.
In unserem Fall ist die Voraussetzung leicht erfüllt, weil n = p · q ist,
und damit teilerfremd zu p − 1 und q − 1. Anders formuliert: wenn p und q
bekannt sind, sind e und d leicht zu berechnen. Umgekehrt, ist es schwer,
d zu berechnen, wenn es schwer ist, p und q zu bestimmen.
Achtung: Die Bedingung, dass e teilerfremd zu (p − 1) und (q − 1) sein
muss, bedeutet, dass n mod e 6= 1 sein muss!
In der Praxis wählt man kleine Zahlen für e. Ist e zum Beispiel 3 oder
5, denn dann muss man nur (m3 mod n) oder (m5 mod n) berechnen.
Wir werden später sehen, dass man häufig auch die vierte Fermat-Zahl
e = 65537 = 216 + 1 wählt.
Dieses Problem hat zwei Aspekte:
• Angreifer: Ich habe e und n, ich will d berechnen! In diesem Fall reduziert sich das Problem auf die Frage: wie schwer ist es, eine gegebene
natürliche Zahl n in ihre Primfaktoren zu zerlegen? Damals (1977):
512 Bit sind „schwer“. Heute werden 2048 Bit als Länge für die Zahl
n empfohlen.
• Benutzer: Ich brauche zwei etwa gleich große Primzahlen p und q,
aus denen ich meine Schlüssel berechnen kann! Es gibt zwar sehr
viele Primzahlen (zum Beispiel ist im Bereich der 512 Bit langen Zahlen jede 354te Zahl eine Primzahl), aber trotzdem muss ich prüfen,
ob eine Zahl eine Primzahl ist. Zwar sind p und q nur etwa halb so
lang wie n, was meinen Aufwand kleiner macht, aber im Prinzip stehe ich vor demselben Problem wie der Angreifer.
Die Lösung bieten probabilistische Primzahltests. Solche Tests können
nicht beweisen, dass eine Zahl eine Primzahl ist, aber sie können diese
72
Aussage mit einer gewissen Wahrscheinlichkeit treffen. Allerdings haben
sie eine ganz entscheidende Eigenschaft: die Feststellung, dass eine Zahl
keine Primzahl ist, ist immer richtig. Es kann also nur vorkommen (mit
einer kleinen Wahrscheinlichkeit), dass der Test eine Zahl zur Primzahl
erklärt, obwohl sie keine ist.
Beispiel: Miller-Rabin-Test
Miller-Rabin-Test
Input:
• p, ein Kandidat für eine Primzahl,
• a, eine Zufallszahl, die kleiner als p ist.
Liefert dieser Test die Aussage, dass eine Zahl eine Primzahl ist, so ist die
Wahrscheinlichkeit allerhöchstens 1/4, dass sie doch zusammengesetzt ist.
Wiederholt man den Test k-mal mit verschiedenen Zahlen a, so ist diese
Wahrscheinlichkeit höchstens 4−k , für k = 10 also schon etwa 10−6 . Dies
ist allerdings eine sehr pessimistische Annahme, realistischer sind Fehlerhäufigkeiten von 1/10000 (an Stelle von 1/4 für einen Durchgang des Tests.
Bewaffnet mit diesem Wissen können wir mit vertretbarem Aufwand
Primzahlen von k Bits Länge zufällig bestimmen, und zwar so:
1. Wir wählen zufällig ein Bitmuster der Länge k, in dem das erste und
letzte Bit 1 sind. (Das erste Bit, weil die Länge sonst kleiner als k wäre, und das letzte Bit, weil Primzahlen immer ungerade sind.) Damit
haben wir einen Kandidaten n.
2. Wir prüfen, ob n durch kleine Primzahlen teilbar ist: 3, 5, 7, 11,. . .
Dies ist nicht wirklich nötig, geht aber sehr schnell und schließt einen
große Zahl von möglichen Kandidaten aus. Testet man zum Beispiel
nur auf Division durch 3, 5 und 7, so hat man schon über die Hälfte der Kandidaten eliminiert. Häufig testet man für alle Primzahlen
unter 256 (80%); sehr effizient ist es, auf alle Primzahlen unter 2000
zu testen.
1. (RSA-spezifischer Test:) Wir prüfen, ob n mod e 6= 1, und zwar für
alle Werte von e, die wir verwenden. (Das sind nur ein paar mögliche
Zahlen.)
2. Wir führen den Miller-Rabin-Test für ein zufälliges a < n durch. Wiederhole dies noch viermal.
3. Fällt n durch einen der Tests, fange von vorne an.
73
7.4
Besonderheiten des RSA-Verfahrens
• Normalerweise: Verschlüsselung mit öffentlichem Schlüssel e, Entschlüsselung mit geheimem Schlüssel d. Weil aber bei RSA die Methode (modulare Exponentiation) dieselbe ist, gilt auch die Umkehrung: Was mit dem geheimen Schlüssel d verschlüsselt wird, kann
mit dem öffentlichen Schlüssel e entschlüsselt werden, denn für k <
n gilt:
(k d mod n)e mod n = k d·e mod n = k.
Diese Eigenschaft gilt nicht für jedes asymmetrische Verschlüsselungssystem.
• Multiplikativität: Wenn ich die Verschlüsselung zweier Nachrichten
kenne, kann ich die Verschlüsselung des Produktes berechnen:
(m1 m2 )e mod n = me1 me2 mod n = (me1 mod n)(me2 mod n).
Dies bietet eine Angriffsmöglichkeit, da ich für gewisse Nachrichten (der Form m1 m2 ) die Verschlüsselung vorhersagen kann. Mögliche Lösung: Klartexte einschränken, zum Beispiel so, dass das letzte
Byte immer gleich dem ersten ist. Dann ist m1 m2 so gut wie nie eine
gültiger Klartext.
• Sehr kurze Nachrichten: Nehmen wir an, dass der
√ Exponent e = 5
ist, und dass die Nachricht so kurz ist, dass m < 5 n gilt. Dann wird
me = m5 < n und damit m5 mod n = m5 übertragen, und ein Angreifer kann einfach die fünfte Wurzel berechnen, um an die ursprüngliche Nachricht zu kommen. Abhilfe: Struktur der ursprünglichen
Nachricht verschleiern („encoding function“).
7.5
Hybride Kryptosysteme
Asymmetrische Verschlüsselung ist langsam. Deswegen benutzt man meistens die asymmetrische Verschlüsselung nur zum Austausch des Schlüssels für ein symmetrisches Kryptosystem:
1. Der Sender A wählt einen geheimen Schlüssel k und verschlüsselt
seine Nachricht m damit: g1 = fk (m).
2. Der Sender verschlüsselt k mit dem öffentlichen Schlüssel e des Empfängers B: g2 = EB (k) und sendet g1 und g2 an B.
74
3. B entschlüsselt zunächst g2 mit seinem geheimen Schlüssel: k = DB (g2 ),
erhält damit k. Damit kann er g1 schnell entschlüsseln.
Beispiele für hybride Systeme: SSL/TLS, PGP
Die Sicherheit eines hybriden Systems ist nur so gut wie die Sicherheit
der Bestandteile: kann ich den symmetrischen Teil brechen, habe ich die
Nachricht; kann ich den asymmetrischen Teil brechen, bekomme ich den
geheimen Schlüssel k und kann damit die Nachricht entschlüsseln.
7.6
Schlüsselaustausch nach Diffie und Hellman
Der Schlüsselaustausch in einem hybriden Kryptosystem ist nicht symmetrisch: Der Sender A wählt den geheimen Schlüssel k und überträgt ihn an
B. Schöner wäre es, wenn A und B die gleiche Rolle spielen würden.
In ihrer Arbeit aus dem Jahre 1976 schlugen Diffie und Hellman eine
symmetrische Methode zum Schlüsselaustausch vor:
1. Die beiden Partner A und B vereinbaren
• eine Primzahl p
• eine natürliche Zahl g < p.
Diese brauchen nicht geheim zu sein.
2. A und B wählen je eine natürliche Zahl a bzw. b, die beide kleiner
als p − 1 sind und halten sie geheim. A berechnet: α = g a mod p und
schickt α an B, B berechnet: β = g b mod p und schickt β an A.
3. A berechnet: ka = β a mod p, B berechnet: kb = αb mod p. Diese beiden
Zahlen ka und kb sind gleich, denn:
ka = β a mod p = (g b mod p)a mod p = g ba mod p,
kb = αb mod p = (g a mod p)b mod p = g ab mod p.
ka = kb = k ist dann ein gemeinsames Geheimnis. A und B nehmen
dieses gemeinsame Geheimnis entweder direkt als Schlüssel, oder
sie berechnen daraus den Schlüssel auf eine vorher vereinbarte Weise. (Dies kann eine öffentlich bekannte Methode sein, zum Beispiel
die Vorschrift: „Nimm die ersten 56 Bit als DES-Schlüssel!“)
Diese Verfahren ist wieder praktisch unmöglich zu knacken, weil die Berechnung des diskreten Logarithmus schwierig ist.
75
7.7
Andere Verschlüsselungsverfahren
Eng mit dem DH-Verfahren zusammen hängt das ElGamal-Verschlüsselungsverfahren
(Taher El Gamal 1985) (und andere, zum Beispiel Massey-Omura):
• Alle Teilnehmer haben dieselbe Primzahl p und natürliche Zahl g <
p.
• B hat als geheimen Schlüssel b < p − 1, als öffentlichen Schlüssel
β = g b mod p.
• A wählt zufällig eine Zahl a < p − 1 und berechnet k = β a mod p.
Dann wird die Nachricht m mit einem Verfahren f mit Schlüssel k
verschlüsselt: c = fk (m).
• A sendet an B: c und α = g a mod p.
• B wendet seinen geheimen Schlüssel b auf α an: k = αb mod p. Damit
entschlüsselt B den Geheimtext c: m = fk−1 (c).
Bemerkungen:
• Im ursprünglichen ElGamal-Schema war fk (m) = k · m mod p, aber
das ist eine unnötige Einschränkung.
• ElGamal ist ein sogenanntes randomisiertes Verschlüsselungsverfahren: A kann jedes mal eine andere Zahl a wählen. Dadurch entsteht
aus demselben Klartext jedes mal ein anderer Geheimtext; die Geheimtexte sind zufällig und gleichverteilt, wenn a dies ist. Dies erschwert die Kryptoanalyse, zum Beispiel die Anwendung statistischer Tests.
Ein weiteres Schema, das auf dem DH-Schlüsselaustausch beruht, wurde von Jim Massey (ETH Zürich) und Jim Omura (UC) unabhängig voneinander entwickelt. Es beruht auf Shamirs No-Key-Algorithmus. Dabei
wird ohne Austausch von Schlüsseln trotzdem verschlüsselt kommuniziert! Man kann sich das Prinzip dieses Algorithmus mit Hilfe von Koffern
mit Vorhängeschlössern veranschaulichen.
1. A steckt die zu übermittelnde Nachricht in einen Koffer, versieht diesen mit einem Vorhängeschloss und behält den Schlüssel. Der verschlossene Koffer wird an B geschickt.
2. B verschließt den Koffer mit einem weiteren Vorhängeschloss, behält
den Schlüssel und schickt den Koffer an A zurück.
76
3. A entfernt das erste Schloss, dessen Schlüssel sie behalten hat, lässt
das zweite Schloss unangetastet und schickt den Koffer an B zurück.
4. B öffnet das verbleibende Schloss und kann die Nachricht aus dem
Koffer entnehmen.
Was bedeutet das für die Kryptografie, die ja mit Zahlen und Operationen auf Zahlen arbeitet, und nicht mit Schlössern und Schlüsseln? Wir
brauchen eine doppelte Verschlüsselung (für A und B), bei der es egal ist,
in welcher Reihenfolge die Entschlüsselungen durchgeführt werden, denn
den obigen Schritten entsprechen folgende Operationen auf der Nachricht
m:
1. A berechnet fkA (m) und schickt dies an B.
2. B berechnet fkB (fkA (m)) und schickt dies an A.
3. A kehrt seine Operation um: fk−1
(fkB (fkA (m))) und schickt dies an B.
A
4. B berechnet fk−1
(fk−1
(fkB (fkA (m)))).
B
A
Damit dies wieder m ergibt, muss gelten:
fkB (fkA (m)) = fkA (fkB (m)).
Dies ist eine kommutative symmetrische Verschlüsselung.
Massey-Omura-Schema
• Alle Teilnehmer vereinbaren: eine Primzahl p so, dass p − 1 einen
großen Primfaktor hat.
• Jeder Teilnehmer T wählt einen Schlüssel eT , der teilerfremd zu p − 1
ist und berechnet mit dem euklidischen Algorithmus eine Zahl dT
so, dass eT · dT ≡ 1 (mod p − 1) ist. Beide Zahlen eT und dT werden
geheimgehalten.
Aus dem Satz von Euler folgt dann, dass meT ·dT mod p = m ist.
• A berechnet: α = meA mod p und schickt dies an B.
• B berechnet: β = αeB mod p = meA ·eB mod p und schickt dies an A.
77
• A berechnet:
γ = β dA mod p = αdA ·eb mod p = mdA eA eB mod p
= (mdA eA mod p)eB mod p = meB mod p
und schickt dies an B.
• B berechnet γ dB mod p = mdB eB mod p = m.
Zum Knacken dieses Verfahrens ist wieder die Berechnung des diskreten
Logarithmus notwendig.
Ein Problem dieses Schemas ist seine Anfälligkeit für eine so genannte
Man-in-the-middle-Attacke: Ein Angreifer C fängt die Nachrichten ab und
gibt sich A gegenüber als B und B gegenüber als A aus. Das Schema hat
keine Vorkehrung, einen solchen Eingriff zu entdecken. C wickelt mit beiden Seiten das Protokoll ab und ist am Ende im Besitz der Klartextnachricht m.
7.8
7.8.1
Weiterführende Methoden
Elliptische Kurven
• Public-Key-Kryptosysteme beruhen auf mathematischen Strukturen,
nämlich Gruppen und endlichen Körpern. Rechnen mit ganzen Zahlen
oder modulo einer Primzahl sind ein einfaches Beispiel dieser Strukturen.
• Man RSA oder DH auch auf anderen Gruppen und endlichen Körpern aufbauen, zum Beispiel auf so genannten elliptischen Kurven
über einem Galoiskörper GF (2n ).
• Vorteil: Viele bekannte kryptoanalytische Methoden funktionieren
nicht gut mit solchen elliptischen Kurven.
• Nachteil: Die Mathematik ist viel schwieriger.
• Link zum Tutorial
8
Die digitale Signatur
Die Idee der digitalen Signatur ist abgeleitet von der handschriftlichen Unterschrift:
78
• Nur die richtige Person kann ihre eigene Unterschrift produzieren.
• Jeder kann die Unterschrift prüfen (zumindest im Prinzip).
Idee der Anwendung eines asymmetrischen Kryptosystems: Ein asymmetrisches Kryptosystem heißt Signaturschema, wenn für jede Nachricht m
mit Hilfe des öffentlichen Schlüssels E überprüft werden kann, ob m und
D(m) zusammenpassen. Man schreibt: D(m) = sig.
Beispiel:
1. A unterschreibt eine Nachricht mit ihrem geheimen Schlüssel DA
und sendet m und sig = D(m) an B.
2. B überprüft, ob m und D(m) zusammenpassen.
8.1
Digitale Signatur mit dem RSA-Algorithmus
Bei RSA gilt: E(D(m)) = m. Das heißt, man kann sig = D(m) überprüfen,
indem man E(sig) berechnet:
E(sig) = E(D(m)) = m.
Da dabei m wiedergewonnen wird, spricht man von einem Signaturverfahren mit Nachrichtenrückgewinnung.
Konkret:
1. Um eine Nachricht m zu signieren, berechnet A als Signatur:
s = mdA mod n.
2. Um s zu verifizieren berechnet B:
seA = meA ·dA mod n = m.
Dies ist nur korrekt, wenn A wirklich ihren geheimen Schlüssel dA
benutzt hat.
Ein entscheidender Unterschied zur handschriftlichen Signatur ist, dass
die digitale Signatur untrennbar mit der Nachricht verbunden ist. Weder
Nachricht noch Signatur kann nachträglich verändert werden, ohne dass
die digitale Signatur ungültig wird.
79
• Schlüssel unterschieben: Der Angreifer C überzeugt B davon, dass
eC der öffentliche Schlüssel von A ist. Da B der Sache traut, glaubt
er, alle mit dC signierten Nachrichten, seien von A unterschrieben.
• Existenzielle Fälschung: C wählt irgendeine Zahl s < n. Dann behauptet C, s sei eine Signatur von A. Zur Verifikation berechnet B
m = seA mod n und glaubt, A habe m signiert. Wenn m jetzt auch
noch ein halbwegs sinnvoller Text ist, wird B dem glauben.
• Multiplikativität: Sind s1 und s2 die Signaturen von m1 und m2 , so
ist
s = s1 s2 mod n = md1 md2 mod n = (m1 m2 )d mod n
die Signatur von m = m1 m2 . Aus zwei gültigen Signaturen lässt sich
so leicht eine dritte gültige Signatur berechnen, ohne den zugehörigen privaten Schlüssel zu kennen.
Redundanz: Signiere nur Texte, deren Binärdarstellung zum Beispiel aus
zwei gleichen Hälften besteht.
Signatur mit Hashwert: Wende eine öffentliche, kollisionsresistente EinwegHashfunktion h(x) auf den Text an, und berechne die Signatur wie
folgt:
s = h(m)d mod n.
Hier müssen m und s versendet werden, da man aus s die Nachricht
m nicht zurückgewinnen kann. Der Empfänger berechnet se mod n
und vergleicht mit h(m). In der Praxis wählt man eine gängige 160Bit-Hashfunktion (zum Beispiel SHA-1) und wendet eine Expansionsfunktion an, um einen langen Bitstring zu bekommen.
8.2
Andere Public-Key-Verfahren
Für die digitale Signatur lässt sich sofort jedes Public-Key-Verfahren verwenden, bei dem Verschlüsselung und Entschlüsselungsmethode vertauschbar sind, das heißt E(D(m)) = m. Aber es geht auch anders.
8.2.1
ElGamal-Signatur
Bei dem ElGamal-Verfahren sind Entschlüsselung und Verschlüsselung
nicht vertauschbar; daher sieht das Signaturverfahren etwas anders aus
als die weiter oben vorgestellte ElGamal-Verschlüsselung.
80
• A wählt einmal eine Primzahl p und eine Zahl g < p.
• A wählt a < p−1 und berechnet α = g a mod p. Der geheime Schlüssel
ist a, der öffentliche Schlüssel besteht aus (p, g, α).
• Signiert wird eine Nachricht m mit Hilfe einer Hashfunktion h(x). A
wählt zufällig eine Zahl k < p − 1, die zu p − 1 teilerfremd ist und
berechnet
r = g k mod p
s = k −1 (h(m) − a · r) mod (p − 1)
Die Signatur besteht aus (r, s).
• Verifikation der Signatur: überprüfe zunächst, dass 1 ≤ r ≤ p − 1.
Dann berechne
αr rs = (g a )r (g k )k
−1 (h(m)−a·r)
mod p = g h(m) mod p.
Probleme des ElGamal-Signatur-Verfahrens
1. Kann durch Berechnung des diskreten Logarithmus geknackt werden (sehr schwierig).
2. Unter gewissen Bedingungen ist das Knacken einfacher, nämlich wenn
(a) p ≡ 3 (mod 4),
(b) g ein Teiler von p − 1 ist,
(c) die Berechnung diskreter Logarithmen in einer Untergruppe möglich ist (das heißt, wenn g nicht zu groß ist).
3. Für jede Signatur muss die Zahl k neu gewählt werden, sonst lässt
sich der geheime Schlüssel a berechnen!
4. Es muss eine Hashfunktion verwendet werden, sonst ist die existenzielle Fälschung möglich.
5. Dieses Verfahren ist deutlich aufwändiger als RSA: die Überprüfung
erfordert drei modulare Exponentiationen.
81
8.2.2
Der Digital Signature Algorithm (DSA)
• 1991 vorgeschlagen von NIST; Teil des Digital Signature Standard
(DSS, 1994); NSA wieder beteiligt.
• Effizientere Variante von ElGamal, nur zwei modulare Exponentiationen, die Exponenten sind nur 160 Bit lang.
1. Eine Primzahl p der Länge L, wobei L zwischen 512 und 1024 liegt
und ein Vielfaches von 64 ist, als Formel ausgedrückt:
2511+64t < p < 2512+64t ,
t = 0, 1, 2, 3, 4, 5, 6, 7, 8,
(Ursprünglich sollte p genau 512 Bit lang sein, dieses wurde aber als
zu kurz kritisiert.)
2. Eine Primzahl q der Länge 160 Bit, das heißt,
2159 < q < 2160 ,
3. p − 1 ist durch q teilbar, das heißt, q ist ein Primfaktor von p − 1,
4. eine Zahl x < p − 1, sodass
g = x(p−1)/q mod p > 1,
5. eine Zahl a < q.
1. Berechne α = g a mod p.
2. Der geheime Schlüssel ist die Zahl a, der öffentliche Schlüssel besteht
aus des Zahlen (p, q, g, α).
3. Eine Einweg-Hashfunktion h(m), DSS schreibt SHA-1 vor (160 Bit).
Erzeugung der Signatur Die Signatur der Nachricht m berechnet sich
wie folgt: Absender A wählt eine Zufallszahl k < q und berechnet:
r = (g k mod p) mod q,
s = k −1 (h(m) + a · r) mod q.
Die Signatur besteht aus (r, s).
82
Überprüfung der Signatur Der Empfänger überprüft zunächst, dass 1 ≤
r, s ≤ q − 1 sind. Dann berechnet er
((g (s
−1 h(m))
mod q
α(rs
−1 )
(s−1 (h(m)+ar)) mod q
= ((g
= (g k mod p) mod q
= r.
mod q
) mod p) mod q
) mod p) mod q
Effizienz
• DSA ist bei Prüfen der digitalen Unterschrift um einen Faktor von
10–40 langsamer als RSA.
• Beschleunigung durch Vorberechnung: r hängt nicht von der Nachricht ab, sondern nur von der Zufallszahl k: r = (g k mod p) mod q.
Daher kann man im Voraus einige Zufallszahlen erzeugen und die
zugehörigen Werte von r für die nächsten Nachrichten berechnen,
ohne die Nachrichten selber zu kennen.
• Alle Exponenten sind maximal 160 Bit lang.
Sicherheit
• Neues k für jede Signatur wählen: kann eine Angreiferin zwei Nachrichten abhören, die mit dem gleichen Wert von k verschlüsselt wurden, so kann sie den geheimen Schlüssel a daraus gewinnen!
• Gute Hashfunktion wählen,
• Überprüfung von 1 ≤ r, s ≤ q − 1,
• die Länge von p bestimmt die Sicherheit (512 Bit waren zu wenig!)
RSA-Verschlüsselung mit DSA
Angenommen, man hat eine Prozedur für DSA implementiert, die bei
Eingabe von (p, q, g, k, x, h = H(m)) die Werte r und s zurück liefert:
DSAsign(p,q,g,k,x,h,r,s)
83
Dann kann man dieselbe Prozedur auch zur RSA-Verschlüsselung mit Modul n, Nachricht m und öffentlichem Schlüssel e benutzen:
DSAsign(n,n,m,e,0,0,r,s)
Der verschlüsselte Text ist der Wert von r. Ist d der geheime Schlüssel und
m die verschlüsselte Nachricht, so liefert
DSAsign(n,n,m,d,0,0,r,s)
die Klartextnachricht als r zurück.
ElGamal-Verschlüsselung mit DSA
Auch ElGamal-Verschlüsselung einer Nachricht m mit öffentlichem Schüssel β ist damit möglich (mit fk (m) = k · m mod p): Man wähle eine Zufallszahl a und rufe die Prozedur wie folgt auf:
DSAsign(p,p,g,a,0,0,alpha,s)
α ist der erste gewünschte Wert, s wird weggeworfen. Dann rufe
DSAsign(p,p,beta,a,0,0,k,s)
auf, s wird wieder weggeworfen und
DSAsign(p,p,m,1,k,0,r,c)
aufgerufen. Diesmal wird r weggeworfen; c ist zusammen mit der Zahl α
der gewünschte Geheimtext.
Die zugehörige Entschlüsselung funktioniert dann so: man nehme α
und den geheimen Schlüssel b und berechne:
DSAsign(p,p,alpha,b,0,0,k,s)
s wird ignoriert, und man berechnet aus k und c:
DSAsign(p,p,1,k,c,0,r,m)
m ist der Klartext der Nachricht.
Ein Wort der Warnung
Dies funktioniert nur, wenn der DSA-Algorithmus für beliebige Eingabewerte implementiert ist. Bei der Signatur muss ja q 160 Binärstellen
haben, und p mindestens 512, höchstens 1024.
84
9
Das Schlüsselverteilungsproblem
Alle öffentlichen Schlüssel sind allgemein bekannt. Es muss aber sichergestellt sein, zu welcher Person ein öffentlicher Schlüssel gehört, sonst könnte ein Angreifer einen falschen öffentlichen Schlüssel unterschieben. Wie
kann B garantieren, dass ein öffentlicher Schlüssel d zur Person A gehört?
9.1
Lösungsansatz–Theorie
1. A übergibt den eigenen öffentlichen Schlüssel eA persönlich an B–
sichere Methode aber nur in sehr kleinem Rahmen praktikabel.
2. C übergibt seinen öffentlichen Schlüssel eC persönlich an B. A übergibt eA persönlich an C. C erstellt eine digitale Signatur sigC (NameA , dA )
des Paares aus Name und Schlüssel von A und schickt sie zusammen mit eA per Email an B weiter. Name, öffentliche Schlüssel und
Signatur zusammen bezeichnet man als Zertifikat. Wenn B dem Überbringer C vertraut, vertraut er auch Cs digitaler Signatur und glaubt
daher, dass eA der öffentliche Schlüssel von A ist.
9.1.1
Ad-Hoc-Vertrauen
Letzteres kann man auch über mehrere Personen fortsetzen: B traut C, C
traut A und E, A traut D und F, D traut G und H, E traut F, G traut C, H
traut G. Nehmen genügend Personen teil, so ergibt sich ein Netzwerk des
Vertrauens (“web of trust”).
Auf dieser ad-hoc Methode baut die Schlüsselverteilung bei PGP auf.
Es gibt keine Regel, wie genau Schlüssel weitergegeben werden; jeder Teilnehmer entscheidet selber, ob er einer digitalen Signatur soweit traut, dass
er den damit unterschriebenen Schlüssel für richtig hält oder sogar selber
digital signiert. Dies erfordert keine weitere Organisation und hat sich in
begrenztem Rahmen bisher auch bewährt.
Die entstandene Schlüsselsammlung heißt keyring (Schlüsselbund).
Das System leidet an zwei grundsätzlichen Problemen:
• Zum einen muss es immer einen Vertrauenspfad zu einem anderen
Teilnehmer geben, damit man an den öffentlichen Schlüssel dieser
Person gelangen kann. Das funktioniert gut in begrenztem Rahmen,
aber zum Beispiel für ein System, das alle Menschen auch nur in
einer Stadt umfasst, ist es zu kompliziert.
85
• Das führt zum zweiten Problem: Das Konzept von PGP ist dem durchschnittlichen Computerbenutzer nicht nahe zubringen. (Es ist schon
schwierig genug, das Konzept eines Public-Key-Kryptosystems zu
erklären!)
9.1.2
Hierarchisches Vertrauen
Einen anderen Weg geht die hierarchische Methode: Hier gibt es eine zentrale Instanz, der alle Teilnehmer vertrauen. Diese Instanz kann entweder
alle Schlüssel der Teilnehmer direkt überprüfen und signieren oder aber
diese Aufgabe an Unterinstanzen delegieren. Dadurch wird garantiert,
dass der öffentliche Schlüssel eines jeden Teilnehmers von einer vertrauenswürdigen Instanz digital signiert ist. Eine solche Instanz nennt man
eine Certificate Authority (CA), die oberste Instanz in einer Hierarchie RootCA.
Eine Root-CA signiert ihren öffentlichen Schlüssel mit dem dazugehörigen geheimen Schlüssel. Das bedeutet: man kann zwar die Gültigkeit eines Root-CA-Zertifikats überprüfen, indem man die digitale Unterschrift
prüft, aber dem Zertifikat selbst und damit der Root-CA muss man vertrauen.
Beispiel Die Firma MBI will die öffentlichen Schlüssel aller Angestellten
signieren. Dazu richtig sie eine zentrale Root-CA Z am Firmensitz in den
USA ein. Damit nicht alle Angestellten persönlich dorthin reisen müssen,
um ihre Identität nachzuweisen, werden in allen Ländern, in denen die
Firma Niederlassungen hat, länderspezifische Signaturstellen (CAs) eingerichtet. Die zentrale Signaturinstanz Z signiert die öffentlichen Schlüssel
aller dieser Signaturstellen.
Damit nicht alle Angestellten in Deutschland zum Sitz der Niederlassung reisen müssen, werden an allen Standorten standortspezifische Signaturinstanzen eingerichtet, deren öffentliche Schlüssel von der für Deutschland zuständigen Signaturinstanz D digital signiert werden. Jede Angestellte muss jetzt nur noch bei der Signaturinstanz S ihres Standortes persönlich vorsprechen, um ihren öffentlichen Schlüssel digital signieren zu
lassen. Die so bestätigten öffentlichen Schlüssel werden im Firmennetzwerk veröffentlicht.
Wenn ein Angestellter B in den USA den öffentlichen Schlüssel einer
Angestellten A in Deutschland braucht, besorgt er sich diesen im Firmennetzwerk und überprüft die Kette der Signaturen: As Schlüssel ist von S
signiert. Die Gültigkeit der Signatur von S kann er mit dem öffentlichen
Schlüssel von S prüfen. Der wiederum ist von D signiert, der öffentliche
86
Schlüssel von D von Z. Den einzigen Schlüssel, den B also wirklich auf
sichere und nachweisbare Weise braucht, ist der der Root-CA Z.
Solch eine Struktur nennt man eine Public-Key-Infrastruktur (PKI). Allerdings gehört noch mehr dazu: es muss zum Beispiel möglich sein, einen
öffentlichen Schlüssel für ungültig zu erklären. Ein Teilnehmer könnte
nämlich seinen privaten Schlüssel verlieren (womit der öffentliche Schlüssel nutzlos wird, weil das Gegenstück fehlt), oder noch schlimmer, der private Schlüssel könnte gestohlen oder gar bekannt werden. In diesen Fällen
muss dies der zuständigen Signaturinstanz gemeldet werden. Diese veröffentlicht eine oder mehrere Listen ungültiger Schlüssel, oder sie bietet
sogar die Möglichkeit, über das Internet nachzufragen, ob ein öffentlicher
Schlüssel gültig ist oder nicht. (CRL=Certificate Revocation List).
Zertifikate haben eine begrenzte Gültigkeitsdauer. Dies hat mehrere
Gründe:
• Je länger ein Zertifikat gültig ist, desto größer ist die Chance, dass es
kompromittiert wird.
• Ein Zertifikat, das selber zertifiziert wurde, kann nicht länger gültig
sein, als das ausstellende Zertifikat.
• Beim Erneuern eines Zertifikats kann man die darin enthaltene Information aktualisieren (Name, Adresse, usw.).
• Typische Gültigkeitsdauer ist einige Monate bis einige Jahre.
Das Root-CA-Zertifikat müssen alle Teilnehmer einmal auf sichere Weise bekommen. Dies ist aber viel einfacher, als viele Zertifikate auf sichere
Weise zu erhalten. Zum Beispiel enthalten die Web-Browser vom Hersteller schon eine die Zertifikate einer ganzen Reihe von vertrauenswürdigen
Root-CAs.
Basis der Zertifikatsdienste ist der Standard X.509 (CCITT). Er regelt
das Format der Zertifikate und was man alles an Attributen unterbringen
kann. Unglücklicherweise ist es ein sehr komplizierter Standard.
9.2
Probleme des theoretischen Ansatzes
• Das Zertifikat ist an einen Namen gebunden. Was ist ein Name?
(PGP: Name/Email)
• Was ist eine gute CA? Wem vertraue ich?
87
• Ideal wäre eine universelle CA, sozusagen für Alles und Alle. Aber
welche Bank traut einer staatlichen Stelle? Es gibt keine Organisation, der jeder und jede vertraut.
• Indirekte Authorisierung: Einem (Benutzer-)Zertifikat sind gewisse
Rechte zugeordnet, zum Beispiel der Zugriff auf das (eigene) Bankkonto (Access Control List, ACL). Problem: Diese Zuordnung ist extern zum Zertifikat und damit getrennt angreifbar.
• Direkte Authorisierung: Die Zugriffsrechte (zum Beispiel auf das Bankkonto) sind Teil des Zertifikats. Problem: Die Zugriffsrechte müssen
bei der Ausstellung des Zertifikats eingetragen werden, also auch
organisiert und festgelegt sein.
9.3
PKI: Realistischer Lösungsansatz
• Jede Anwendung hat ihre eigene PKI mit eigener CA. Jeder Benutzer
ist zu einer gegebenen Zeit Mitglied vieler verschiedener PKIen.
• Er/Sie muss für jede PKI jeweils verschiedene Schlüssel benutzen.
Derselbe Schlüssel ließe sich nur dann in zwei (oder mehr) PKI-Systemen
benutzen, wenn beide mindestens technisch gleich funktionieren (zum
Beispiel denselben Signaturalgorithmus benutzen mit der derselben
Schlüssellänge usw.).
• Der Zweck der einzelnen PKI ist, einem Schlüssel eine Art Beglaubigung (englisch: credential) zuzuordnen. Die PKI der Bank dient zur
Beglaubigung des Zugriffs auf das Bankkonto, die PKI des Arbeitsgebers kann den Zugriff auf das Firmennetzwerk beglaubigen.
9.4
PKI: Widerruf eines Zertifikats
Der Widerruf eines Zertifikats ist ein schwieriges Problem. Die Möglichkeit muss es geben, denn zum Beispiel muss ein Arbeitgeber den Zugang
zum Firmennetzwerk sperren können, wenn ein Mitarbeiter ausscheidet.
Einen gewöhnlichen Ausweis aus Papier oder Plastik kann man vernichten. Ein elektronisches Zertifikat kann nicht vernichtet werden, da
niemand weiß, wie viele Kopien davon angelegt wurden und wo sie gespeichert sind.
Manche PKI-Implementationen ignorieren das Problem. Tatsächlich sind
PKIen ohne Widerruf praktisch nutzlos: Schlüssel werden kompromittiert,
und die PKI muss damit umgehen können.
88
Es gibt in Wesentlichen zwei funktionierende Lösungen für dieses Problem: kurze Gültigkeit und Widerrufslisten.
9.4.1
Widerruf durch begrenzte Gültigkeit
Wenn die Gültigkeit eines Zertifikats nach kurzer Zeit wieder abläuft (10 Minuten bis 24 Stunden), muss die Benutzerin für jede Benutzung jedes mal
ein neues Zertifikat anfordern.
Ein Widerruf ist nicht erforderlich, man braucht nur eine hinreichend
schnelle CA, die das Zertifikat bei Bedarf sofort ausstellt.
Nachteil: es ist nicht möglich, ein Zertifikat vor Ablauf zu widerrufen.
Daher ist diese Methode nicht geeignet für Anwendungen, die einen sofortigen Widerruf erfordern.
9.4.2
Widerruf mittels Widerrufsliste
Eine Widerrufsliste (Englisch: Certificate Revocation List, CRL) ist eine
Datenbank, die alle widerrufenen Zertifikate enthält. Jeder, der ein Zertifikat überprüfen will, muss nicht nur die digitale Signatur prüfen, sondern
auch, dass das Zertifikat nicht in der CRL auftaucht.
Jede CRL enthält auch die Information, ab und bis wann sie gültig ist,
damit man eine veraltete CRL sofort erkennen kann.
Vorteile einer zentralen CRL-Datenbank:
• Der Widerruf eines Zertifikats geschieht praktisch instantan: einmal
eingetragen, kann ein Zertifikat nicht mehr benutzt werden.
• Es gibt keine Begrenzung der Anzahl der widerrufenen Zertifikate.
Nachteile einer zentralen CRL-Datenbank:
• Alle Zertifikate müssen online geprüft werden, um die Datenbank
abzufragen.
• Die CRL-Datenbank ist ein single point of failure.
Auswege:
• Redundante, verteilte CRL-Datenbank: teuer und schwierig.
• Jeder Teilnehmer hat eine Kopie der CRL: nur für relativ kurze Listen
machbar
• Jeder Teilnehmer (Klient) hält die Kopie der CRL nur für kurze Zeit
(Caching): das regelmäßige Update produziert eine hohe Netzlast.
89
9.4.3
OCSP–Online Certificate Status Protocol
OCSP dient zur Abfrage des aktuellen Zustands eines Zertifikats:
• Ein Klient erfragt die Gültigkeit eines Zertifikats bei einem so genannten Responder, dessen Antwort (Gut/Zurückgezogen/Unbekannt)
digital signiert ist.
• Die Antwort ist aktuell.
• Die Netzwerklast ist deutlich geringer als bei der vollständigen Übertragung der gesamten CRL.
• Transportprotokoll ist HTTP.
• Die URL für den Responder sollte im X.509-Zertifikat enthalten sein.
9.5
Beispiele: Zertifikate nach X.509
Zur Demonstration hier der Inhalt eines Zertifikats, dessen Gültigkeitsdauer bereits abgelaufen ist (erzeugt mit openssl).
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 2 (0x2)
Signature Algorithm: md5WithRSAEncryption
Issuer: C=DE, ST=Rhineland-Palatinate, L=Mainz, O=Proteosys,
OU=Certificate Issuing Authority,
CN=Proteosys of Mainz Issuing CA/[email protected]
Validity
Not Before: Oct 10 15:43:10 2000 GMT
Not After : Aug 6 15:43:10 2001 GMT
Subject: C=DE, ST=Rhineland-Palatinate, L=Mainz, O=Proteosys,
CN=imap.proteosys/[email protected]
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:af:1f:64:56:5f:58:ce:8c:df:8b:fa:98:42:73:
82:31:8a:71:73:6d:54:5a:da:33:9f:28:24:28:49:
5f:f3:33:a9:0d:f2:b7:a9:a5:51:31:bf:91:60:7f:
df:4c:db:7d:30:5f:13:8a:55:3d:b4:45:7a:d9:72:
bb:f5:f0:24:51:f7:31:0b:64:5a:c1:c1:1c:1d:e4:
32:25:2d:87:f9:9b:d8:c9:0b:23:45:b1:04:75:98:
2e:f8:a7:40:83:d5:52:7f:7d:a3:c9:96:77:27:15:
0d:96:15:e3:cf:3b:a9:6f:14:e9:39:e1:0e:2d:1b:
4e:03:0e:3b:05:fb:71:9a:23
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Alternative Name:
email:[email protected]
Netscape Comment:
OpenSSL generated custom server certificate
Netscape Cert Type:
90
SSL Server
Signature Algorithm: md5WithRSAEncryption
31:93:99:e4:10:01:1f:28:9d:b8:7e:63:0e:15:44:f4:fb:9c:
60:de:8c:07:03:bc:e0:2b:b5:13:72:9e:9a:98:e5:c5:3f:47:
c8:8f:12:40:34:26:38:87:d4:c7:a5:b3:77:f7:85:a7:18:92:
eb:6f:98:49:d2:b6:d1:ad:42:27:b0:45:e0:1c:9a:68:7c:07:
eb:be:46:b4:da:ab:38:3d:b6:cc:a1:80:74:2d:aa:ca:3f:b5:
aa:de:84:6f:ca:ad:17:94:74:77:54:0d:7b:dd:fe:d4:d7:b2:
a8:f1:28:c7:c9:a6:1c:a0:7b:78:82:0d:05:0a:41:24:de:82:
28:f6:8f:0a:20:d0:07:f5:c7:ae:ff:b2:1e:c5:43:1d:c0:aa:
bb:27:3f:63:2e:71:79:bc:a8:07:64:a8:22:2e:79:d9:c9:6b:
57:4b:15:6b:03:3c:04:2b:21:5b:4f:af:37:1c:47:3f:73:a5:
9a:cf:30:00:b5:e5:c3:3c:76:b8:81:34:0a:30:01:c9:bb:d1:
f4:6a:b2:18:35:7b:90:31:06:9f:9a:e8:8f:de:5b:ac:ad:c8:
a6:b5:f7:19:99:8f:21:17:14:5e:6b:c3:bd:37:16:04:0b:3c:
76:9b:9f:61:e8:4f:76:b5:56:90:f0:87:df:2e:21:eb:96:74:
84:54:f4:a6
Dasselbe Zertifikat, dargestellt im Internet Explorer:
Ein Root-CA-Zertifikat von Verisign, Inc., dargestellt im Internet Explorer:
91
• PGP verwendet ein etwas anderes Konzept zum Widerruf eines öffentlichen PGP-Schlüssels:
• Es wird ein so genanntes Revocation Certificate erzeugt, das mit dem
zugehörigen privaten Schlüssel signiert ist.
• Dadurch kann nur der Besitzer des privaten Schlüssels den öffentlichen Schlüssel als ungültig markieren.
• Das Revocation Certificate wird als Update des öffentlichen Schlüssel verteilt.
• Neuere Versionen von PGP erlauben es, dieses Recht an andere private Schlüssel zu delegieren.
• PGP-Schlüssel werden über ein weltweites Netzwerk von so genannten PGP-Keyservern verteilt.
• Öffentliche Schlüssel können von jedem auf diese Server geladen werden.
• Updates vorhandener Schlüssel (neue Signaturen oder Widerruf) werden erkannt und korrekt in der Keyserver-Datenbank vermerkt.
92
10
Anonymität
Wird eine verschlüsselte Nachricht gesendet, so ist der Inhalt der Nachricht verborgen. Nicht verborgen sind:
• die Identität des Absenders,
• die Identität des Empfängers,
• die Tatsache, dass eine Nachricht gesendet wird.
Man kann also drei Arten von Anonymität unterscheiden:
• Anonymität des Absenders,
• Anonymität des Empfängers,
• Anonymität der Nachrichtenbeziehung.
Wozu Anonymität? – Beispiele
• Erhebung vertraulicher Daten
• Elektronische Wahlen
• Anonymer Chat
• Elektronisches Geld
10.1
Einfache Modelle für Anonymität
• Anonymität des Empfängers: Broadcasting
• Anonymität des Senders: Pseudonyme
• Anonymität der Kommunikationsbeziehung: Rauschen
10.2
Elektronisches Geld
Gewünschte Eigenschaften einer elektronischen 2-Euro-Münze sind:
• Sie wird von jedem Händler oder Automaten als Äquivalent von 2 €
akzeptiert.
93
• Wenn die elektronische Münze einmal akzeptiert wurde, kann niemand mehr feststellen, wer sie eingelöst hat (so genannte blinde Signatur).
Gehen wir von einem asymmetrischen Signaturschema aus, der Einfachheit halber nehmen wir RSA. Die ausgebende Bank hat ein spezielles
Paar von öffentlichem/geheimen Schlüsseln: Modul n, öffentlicher Exponent e, geheimer Exponent d.
Ein Kunde möchte ein elektronische 2€-Stück erwerben. Er erzeugt dazu zwei etwa gleich große Zahlen V und C. V ist das Rohmaterial für die
Münze, C dient zur Verschleierung (Camouflage).
Er bildet die Zahl W durch zweimaliges hintereinander schreiben der
Zahl V und berechnet mit Hilfe des öffentlichen Schlüssels (e, n) der Bank
die Zahl
S = C e · W mod n = E(C) · W mod n ,
die er an die Bank schickt.
Die Bank bucht 2€ von seinem Konto ab und berechnet
T = S d mod n = D(S)
Die elektronische Münze ist dann
Z = T · C −1 mod n = S d · C −1 mod n
= C ed · W d · C −1 mod n = C · W d · C −1 mod n
= W d mod n = D(W ) .
Jeder Händler oder Kaugummiautomat kann die Gültigkeit mit Hilfe des
öffentlichen Schlüssels der Bank überprüfen:
E(Z) = Z e mod n = W ed mod n = W ,
und anschließend muss überprüft werden, dass W aus zwei gleichen Hälften besteht.
Eigenschaften dieser elektronischen Münze
Anonymität Z ist nur dem Kunden der Bank bekannt, nicht der Bank
selbst, denn die kennt nur S und T . Damit kann niemand von Z auf
den Kunden schließen.
Reproduzierbarkeit Die Münze kann jederzeit kopiert werden. Um die
Gültigkeit zu prüfen, muss bei der Bank nachgefragt werden, ob
die Münze schon eingelöst wurde. Es handelt sich um ein OnlineMünzsystem.
94
Es gibt auch Vorschläge für Offline-Münzsysteme. Dabei bleibt beim ersten Einlösen die Person anonym. Wird versucht, dieselbe Münze ein zweites Mal einzulösen, kann die Bank die Person finden, an die die Münze
ausgegeben wurde.
11
11.1
Beispiele aus der realen Welt
Was ist das? (aus einer Software-Ankündigung)
Legion of the Bouncy Castle Java Cryptography API 1.24 by David Hook
- Monday, June 14th 2004 23:58 PDT
About: The Legion of the Bouncy Castle Java Cryptography API provides
a lightweight cryptography API in Java, a provider for the JCE and JCA, a
clean-room implementation of the JCE 1.2.1, generators for Version 1 and
Version 3 X.509 certificates, PKCS12 support, and APIs for dealing with
S/MIME, CMS, OCSP, and OpenPGP. Versions are provided for the J2ME,
and JDK 1.0-1.5.
Changes: This release patched a problem that could affect the encoding of
ASN.1 bit strings. Modifications were made to OpenPGP secret key ring
processing to handle user attribute packets and GPG comment packets.
The OpenPGP API now supports the creation of key ring sub-keys. A bug
in the lightweight CBCBlockCipherMac class was fixed, and JARs compiled and tested against JDK 1.5 were provided.
11.2
Was ist PKCS?
• PKCS (Public-Key Cryptography Standards) ist ein Satz von Standards für die Implementation von Public-Key-Kryptografie.
• Er wurde ausgegeben von der Firma RSA, in Zusammenarbeit mit
einem Industriekonsortium.
PKCS#1 RSA Cryptography Standard: Empfehlungen für die Implementation des RSA-Algorithmus für Public-Key-Kryptografie.
PKCS#7 Cryptographic Message Syntax (CMS) Standard: beschreibt eine
allgemeine Syntax für Daten, die kryptografisch verarbeitet werden,
wie digitale Signaturen oder digitale Umschläge.
PKCS#10 Certification Request Syntax Standard: beschreibt die Syntax
für einen „request for certification“ eines öffentlichen Schlüssels, eines Namens, und eventuell eines Satzes von Attributen.
95
PKCS#12 Personal Information Exchange Syntax Standard: beschreibt ein
portables Format zur Speicherung der privaten Schlüssel, Zertifikate
und sonstigen Geheimnisse eines Benutzers.
11.3
Die CCITT-Standards
Das CCITT–Comité Consultatif International Téléphonique et Télégraphique ist die Vorläuferorganisation der ITU–International Telecommunication Union. Es handelt sich um eine 1932 gegründete internationale Organisation zur Abstimmung weltweiter Standards im Bereich der Daten- und
Telekommunikation.
Für uns wichtig sind folgende Standards:
X.208 Recommendation X.208: Specification of Abstract Syntax Notation
One (ASN.1). 1988.
X.209 Recommendation X.209: Specification of Basic Encoding Rules for
Abstract Syntax Notation One (ASN.1). 1988.
X.500 Recommendation X.500: The Directory–Overview of Concepts, Models and Services. 1988.
X.509 Recommendation X.509: The Directory–Authentication Framework.
1988.
11.3.1
ASN.1
• Abstract Syntax Notation One (ASN.1) ist ein Standard zur Übertragung strukturierter Daten über ein Netzwerk.
• ASN.1 definiert die abstrakte Syntax der Information, aber nicht, wie
die Information kodiert wird.
• Es gibt eine Reihe von Kodierungsregeln für die konkrete Representation der Daten, der abstrakte Syntax in ASN.1 beschrieben ist.
• Die Standardkodierungsregeln sind:
BER Basic Encoding Rules - X.209,
CER Canonical Encoding Rules
DER Distinguished Encoding Rules
PER Packed Encoding Rules
96
• ASN.1 plus eine dieser Kodierungsregeln erlaubt den Austausch strukturierter Daten zwischen verschiedenen Anwendungsprogrammen
über Netzwerke.
• Dabei werden die Datenstrukturen unabhängig von Maschinenarchitektur und Implementierungssprache beschrieben.
Beispiel:
Zwei Anwendungsprogramme sollen den öffentlichen Schlüssel für einen
Benutzer austauschen. Die zu übertragenden Informationen sind:
• Name der Benutzers (String)
• Emailadresse des Benutzers (String)
• Verschlüsselungsverfahren (Nummer in einer Aufzählung)
• Öffentlicher Schlüssel (eine Folge von Bits)
ASN.1 beschreibt, wie ich diese Informationen (String,String,Nummer,Bitfolge)
abstrakt darstelle („jetzt kommt ein String der Länge 10“), die zugehörige
Kodierungsregel, wie die Informationen übertragen werden. Die Bedeutung der Daten ist Sache der Anwendungsprogramme!
11.3.2
X.509
• X.509 ist ein Standard für PKI.
• X.509 spezifiziert Standardformate für digitale Zertifikate.
• Ursprünglich (X.509v1) wurde ein streng hierarchisches System der
CAs angenommen, die möglichen Felder waren genau festegelegt.
• X.509v3 (Version 3) erlaubt das Hinzufügen neuer Felder und damit
auch andere Topologien.
• Ein X.509-Zertifikat, das eine CA erstellt, bindet einen öffentlichen
Schlüssel an einen Distinguished Name (X.500) oder an einen sogenannten Alternative Name, zum Beispiel eine Email-Adresse oder einen
DNS-Eintrag.
• Enthält das X.509-Zertifikat nur einen öffentlichen Schlüssel, so wird
es meist als .cer-Datei in Base-64- oder DER-Kodierung gespeichert. Möglich ist auch die Benutzung des PKCS #7-Standards (.p7b).
97
• Enthält das X.509-Zertifikat auch den privaten Schlüssel, so wird es
normalerweise als .pfx-Datei gemäß dem PKCS #12-Standard gespeichert.
Struktur eines X.509-Zertifikats
• Zertifikat
– Version
– Seriennummer
– ID des Algorithmus
– Aussteller
– Gültigkeit
* Nicht vor
* Nicht nach
– Subjekt
– Informationen über den Öffentlicher Schlüssel
* Public-Key-Algorithmus
* Der öffentliche Schlüssel selbst
– Unique Identifier des Ausstellers
– Unique Identifier des Subjekts
– Erweiterungen nach X.509v3
• Algorithmus der digitalen Signatur
• Digitale Signatur
Beispiel: Zertifikat im X.509-Format:
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 38 (0x26)
Signature Algorithm: md5WithRSAEncryption
Issuer: C=DE, ST=Rhineland-Palatinate, L=Mainz, O=Proteosys, OU=Root Certificate Authority, CN=Proteosys Root CA/emailAddress=ca@p
Validity
Not Before: Sep 16 12:31:12 2003 GMT
Not After : Oct 5 12:31:12 2005 GMT
Subject: C=DE, ST=Rhineland-Palatinate, L=Mainz, O=Proteosys, OU=Certificate Issuing Authority, CN=Proteosys of Mainz Issuing CA/e
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (2048 bit)
Modulus (2048 bit):
00:c2:21:4f:3a:92:bf:64:3c:c7:bb:05:b2:5e:d3:
8d:d4:cb:7d:28:1d:14:ed:db:68:67:f2:2d:3d:48:
f3:5f:8b:e1:92:62:4a:0b:be:a0:56:0c:72:a1:09:
59:77:a7:25:83:df:1c:4b:19:78:79:95:08:7a:8c:
b2:8c:af:ee:f8:ea:d6:c9:74:cd:2e:64:92:40:9a:
30:0e:79:b5:b7:98:ea:5e:fb:e2:10:11:4b:53:3d:
98
80:74:d7:bc:3b:1a:af:be:a5:77:d0:8f:9c:2f:92:
48:38:67:66:10:ad:96:1f:73:88:72:3c:1d:39:0c:
dd:32:a4:44:f0:3e:0c:81:8c:c0:a7:fd:20:5c:5f:
41:92:0e:ed:b8:b2:8b:2d:75:a9:71:e0:cc:c9:68:
cf:f1:8e:27:2c:70:60:88:d3:8c:55:7c:74:f1:fc:
7f:58:30:6b:fe:63:8c:65:34:89:e0:77:98:bb:b2:
63:ca:a4:7d:5e:43:12:3e:0d:3d:32:ca:f7:be:fb:
38:10:26:4a:5b:bf:d9:32:2b:6d:9c:be:6f:13:8b:
f7:df:67:92:4d:2a:06:76:5d:2b:f0:6b:13:ed:b7:
fd:bc:a3:d4:8d:3f:49:19:3a:2a:61:62:e6:34:b1:
14:da:d1:47:0b:6f:8d:5e:07:e9:be:91:5c:fa:ef:
17:17
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Alternative Name:
email:[email protected]
X509v3 Basic Constraints:
CA:TRUE
Signature Algorithm: md5WithRSAEncryption
a5:99:2d:2f:ce:ae:b0:32:d9:28:1d:be:5c:0e:84:34:35:d8:
60:12:d5:ce:2b:51:7e:ed:83:10:93:cb:03:fa:ba:91:5b:9a:
39:39:65:77:46:df:1a:47:c4:f5:d6:23:1c:cc:64:90:e4:5e:
34:62:69:25:e4:ac:7c:ea:ee:49:b5:f4:0d:ad:96:b9:de:28:
1b:fe:85:d9:11:90:30:f2:7a:a6:a9:c0:a8:df:f1:b2:37:6a:
3a:d7:02:fe:6f:0c:1f:10:5f:4a:1e:74:fe:35:dc:f7:99:f5:
5c:ca:92:8b:9b:13:0a:99:39:d4:9e:d4:d7:8d:bf:ee:28:bc:
3d:a8:01:a4:ab:a9:b4:32:a1:65:f3:1f:cb:95:0f:bc:f2:c4:
12:42:0d:0a:42:1c:9c:03:c2:b4:d1:c1:fd:9b:3c:9d:74:a7:
e7:b0:be:7e:b5:dd:07:c3:0e:98:75:61:60:27:7f:78:ca:e1:
fa:84:92:75:f2:f9:b8:d6:7b:eb:37:59:fd:7d:dc:68:89:f7:
94:15:7f:31:9a:a2:f5:8d:1b:ef:4a:7f:b5:ca:0d:e6:3d:33:
e0:7b:31:77:ff:c1:0a:42:21:03:54:70:bf:a8:fc:29:10:a6:
ba:f3:87:f4:2c:c4:41:0e:dd:9a:1e:62:ff:a6:aa:a4:8a:42:
3d:19:f3:90
Die abstrakte ASN.1-Darstellung:
0:d=0
4:d=1
8:d=2
10:d=3
13:d=2
16:d=2
18:d=3
29:d=3
31:d=2
34:d=3
36:d=4
38:d=5
43:d=5
47:d=3
49:d=4
51:d=5
56:d=5
78:d=3
80:d=4
82:d=5
87:d=5
94:d=3
96:d=4
98:d=5
103:d=5
114:d=3
116:d=4
118:d=5
123:d=5
151:d=3
153:d=4
155:d=5
160:d=5
179:d=3
181:d=4
183:d=5
194:d=5
211:d=2
213:d=3
228:d=3
...
hl=4
hl=4
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=3
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
hl=2
l=1050
l= 770
l=
3
l=
1
l=
1
l= 13
l=
9
l=
0
l= 177
l= 11
l=
9
l=
3
l=
2
l= 29
l= 27
l=
3
l= 20
l= 14
l= 12
l=
3
l=
5
l= 18
l= 16
l=
3
l=
9
l= 35
l= 33
l=
3
l= 26
l= 26
l= 24
l=
3
l= 17
l= 30
l= 28
l=
9
l= 15
l= 30
l= 13
l= 13
cons:
cons:
cons:
prim:
prim:
cons:
prim:
prim:
cons:
cons:
cons:
prim:
prim:
cons:
cons:
prim:
prim:
cons:
cons:
prim:
prim:
cons:
cons:
prim:
prim:
cons:
cons:
prim:
prim:
cons:
cons:
prim:
prim:
cons:
cons:
prim:
prim:
cons:
prim:
prim:
SEQUENCE
SEQUENCE
cont [ 0 ]
INTEGER
INTEGER
SEQUENCE
OBJECT
NULL
SEQUENCE
SET
SEQUENCE
OBJECT
PRINTABLESTRING
SET
SEQUENCE
OBJECT
PRINTABLESTRING
SET
SEQUENCE
OBJECT
PRINTABLESTRING
SET
SEQUENCE
OBJECT
PRINTABLESTRING
SET
SEQUENCE
OBJECT
PRINTABLESTRING
SET
SEQUENCE
OBJECT
PRINTABLESTRING
SET
SEQUENCE
OBJECT
IA5STRING
SEQUENCE
UTCTIME
UTCTIME
:02
:26
:md5WithRSAEncryption
:countryName
:DE
:stateOrProvinceName
:Rhineland-Palatinate
:localityName
:Mainz
:organizationName
:Proteosys
:organizationalUnitName
:Root Certificate Authority
:commonName
:Proteosys Root CA
:emailAddress
:[email protected]
:030916123112Z
:051005123112Z
99
11.4
Verschüsselung und das OSI-Schichtenmodell
Zusätzliche Sicherheit (Verschlüsselung/Authentisierung) bei der Datenübertragung kann im Prinzip auf eine von zwei Weisen hinzugefügt
werden:
• Zusätzliche Sicherheit der Kommunikationsverbindung selbst, in den
Schichten 1-4 (Beispiel: IPsec in Schicht 3).
• Zusätzliche Sicherheit kann um die Daten herum gebaut werden und
ist damit von der Kommunikationsverbindung unabhängig (oft als
„end-to-end“-Sicherheit bezeichnet).
11.5
SSL/TLS (Schicht 4)
• Das TLS-Protokoll (Transport Layer Security) ist eine Art Kompromiss zwischen sicherer Kommunikationsverbindung und end-to-endSicherheit.
• Es implementiert end-to-end-Sicherheit, die für die beteiligten Applikationen wie eine sichere Kommunikationsverbindung aussieht.
Dadurch können die Applikationen ihre eigenen Protokolle als zusätzliche Ebene über TLS implementieren. Beispiel: http/https
• TLS 1.0 ist der Nachfolger von SSL, Version 3 (1995). SSL steht für
Secure Socket Layer und wurde von Netscape entwickelt.
100
11.5.1
Ziele von TLS
Die Ziele von TLS sind, der Wichtigkeit nach geordnet:
1. Kryptografische Sicherheit: oberstes Ziel ist die sichere Verbindung,
2. Interoperatibilität,
3. Erweiterbarkeit,
4. (Relative) Effizienz.
• Das TLS-Protokoll besteht aus zwei Schichten:
• In der unteren Schicht läuft das TLS-Recordprotokoll ab, das den eigentlichen Datentransfer (verschlüsselt und authentisiert) abwickelt.
• In der oberen Schicht laufen 4 Teilprotokolle:
1. Handshake: Aushandeln der Verbindungsparameter und Authentisierung der Verbindung,
2. ChangeCipherSpec: Änderung der aktuell benutzten Kryptoverfahren,
3. Alert: Fehlermeldungen und Warnungen,
4. ApplicationData: Nutzdaten.
11.5.2
TLS-Handshake
Typische Teile in blau
Klient
ClientHello
Server
−→
←−
Certificate*
ClientKeyExchange
CertificateVerify*
[ChangeCipherSpec]
Finished
−→
Daten
←−
←→
ServerHello
Certificate*
ServerKeyExchange*
CertificateRequest*
ServerHelloDone
[ChangeCipherSpec]
Finished
Daten
101
11.6
Sichere Kommunikationsverbindung: IPsec
• IPsec bietet Sicherheit auf der Ebene des Internet-Protokolls, und ist
daher im Wesentlichen ein VPN-Protokoll.
• IPsec authentisiert einzelne IP-Pakete gegen einen privaten Schlüssel, das heisst, die Pakete sind nur dann gültig, wenn der sendende
Teilnehmer diesen geheimen Schlüssel kennt.
• IPsec ist sehr komplex.
• Trotzdem ist IPsec im Moment das beste Protokoll, das wir haben.
• Für eine Kritik von IPsec siehe den Artikel von Niels Ferguson and
Bruce Schneier.
• ESP (Encapsulated Security Payload) ermöglicht die Verschlüsselung
der Nutzdaten eines IP-Pakets und zusätzlich die Verwendung einer schlüsselabhängigen Hashfunktion. Die meisten Felder des IPHeaders werden nicht verschlüsselt.
• AH (Authentication Header) fügt ein Headerfeld hinzu, indem das
Resultat eines schlüsselabhängigen Hashfunktion übertragen wird,
die auf Nutzdaten und gewisse Headerfelder angewandt wird. Verschlüssselung findet nicht statt.
• IKE (Internet Key Exchange) dient zum Aushandeln und Übertragen
der Schlüssel. Es nutzt dazu:
1. ISAKMP (Internet Security Association and Key Management
Protocol): stellt Protokollrahmen mit bestimmten Nachrichtenformaten bereit,
2. Oakley (Schlüsselaustauschprotokoll auf der Basis von ISAKMP
und Diffie-Hellman).
• ESP und AH können jeweils im Transport- oder im Tunnelmodus
betrieben werden.
• Im Transport-Modus wird ein IP-paket erweitert.
• Im Tunnel-Modus wird das gesamte Paket in den Nutzdatenteil eines neuen IP-Paketes gepackt.
102
• Insbesondere kann im Transport-Modus nur eine Rechner-zu-RechnerKommunikation durchgeführt werden, da die IP-Adressen von Sender und Empfänger nicht verändert werden.
• Jedes einzelne Paket wird auch bestimmte Weise authentisiert oder
versclüsselt. Dies nennt maan Security Association (SA).
• Um die SA zu bezeichnen, steht im IP-Header der Security Parameter Index (SPI), der vom Empfängerhost gewählt wird.
• Jeder Host oder Gateway hat eine Security Association Database, die
mit IP-Adresse der Gegenstelle und SPI indiziert ist. Sie enthält folgende kryptografische Parameter:
1. Schlüssel,
2. Hash- und Verschlüsselungsalgorithmen,
3. Modus (ESP/AH),
4. Lebensdauer der SA.
• Die Einträge in der Security Policy Database (SPD) legen fest, wie
mit einzelnen IP-Paketen zu verfahren ist:
1. Unverschlüsselt senden (IKE),
103
2. Wegwerfen,
3. Entsprechend eines bestimmten SPI versenden.
• Es sind unterschiedliche Policies für die gleiche Zieladresse möglich.
• Mittels IKE wird ein bidirektionaler ISAKMP-Tunnel aufgebaut (eine
SA in der SAD für beide Richtungen.
• Innerhalb dieses Tunnels wird mit IKE je eine SA für jede Richtung
aufgebaut (zwei unidirektionale SAs).
• Die Spezifikation (4 RFCs) umfasst 214 Seiten!
Server
Client
ISAKMP Proposal
ISAKMP Proposal
Diffie-Hellman
verschl.
Diffie-Hellman
VPN ID, Zertifikat, Authentisierung
VPN ID, Zertifikat, Authentisierung
IPSec Proposal, SPI in
IPSec Proposal, SPI out
ACK
UDP
ESP (SPI out)
ESP (SPI in)
verschl.(außer
SPI)
ESP
• Network Address Translation nicht mehr möglich.
• Lösung: Ergänzung von IKE, Verkapselung der IP-Pakete in UDPPaketen.
• IKE ist anfällig gegen DoS-Attacken, zu langsam, zu komplex.
• Lösung: IKEv2
1. Nur noch ein RFC,
2. schneller,
3. besser geschützt gegen DoS-Attacken,
4. Integration von NAT-Traversal,
5. Dead Peer Detection (DPD)
• ipseckey: Nutzung von DNSSEC zum Schlüsselaustausch
104
11.7
Sichere Kommunikationsverbindung: WEP/WiFi/WPA
• WEP (Wired Equivalent Privacy) ist der Verschlüsselungsstandard
für Funknetze nach dem Standard IEEE 802.11. Es benutzt RC4 als
symmetrischen Verschlüsselungsalgorithmus.
• Bereits 2001 wurde theoretisch und praktisch nachgewiesen, dass
dieser Standard höchst unsicher ist!
• RC4 hat einen 24 Bit langen Initialisierungsvektor (IV), der bei WEP
erst berechnet und dann im Klartext übertragen wird. Dieser bildet
zusammen mit einem von WLAN-Benutzern nur selten gewechselten, frei wählbaren Teil (40 Bit bei WEP40, 104 Bit bei WEP128) den
WEP-Schlüssel.
• Der recht kurze IV kann sich schon nach Stunden wiederholen. Findet ein Angreifer zwei Blöcke, die mit demselben IV verschlüsselt
wurden, dann kann er mittels statistischer Analyse recht einfach den
gesamten Schlüssel finden.
• Damit nicht genug: es wurde entdeckt, dass ein Angreifer aus dem
IV den Schlüssel mit einer Methode berechnen kann, deren Aufwand
linear in der Schlüssellänge ist, sodass das Knacken des 104 Bit langen Schlüssels nur knapp dreimal so lange braucht wie das des 40 BitSchlüssels.
• Als Notlösung und im Vorgriff auf den neuen Standard hatte die WiFi-Alliance, eine Interessengemeinschaft von WLAN-Herstellern, den
WPA-Standard (WiFi Protected Access) eingeführt. WiFi steht für
Wireless Fidelity.
• Erst am 25. Juni 2004 wurde die Erweiterung IEEE 802.11i ratifiziert.
Diese enthält WPA und AES als Verschlüsselungsalgorithmus.
• Näheres siehe im Heise Newsticker.
11.8
Email-Verschlüsselung (Schicht 7)
Es gibt zwei Standards für sichere Email:
• S/MIME, ursprünglich entwickelt von RSA. Es benutzt das PKCS #7Format für die Nachrichten, und das X.509-Format für Zertifikate.
105
• PGP/MIME bzw. OpenPGP basiert auf PGP. Es benutzt eigene, binär kodierte Nachrichten- und Zertifikatsformate. (OpenPGP ist der
Name des neuen Standards.)
• Beide benutzen MIME für die Email-Nachrichten, insbsondere die
MIME-Typen multipart/signed und multipart/encrypted, die in RFC 1847
definiert werden.
S/MIME v3
Nachrichtenformat Binär, basiert auf
CMS
Zertifikatsformat Binär, basiert auf
X.509
Symmetrischer
TripleDES
Verschlüsselungs- (DES EDE3 CBC)
algorithmus
SignaturalgorithmusDiffie-Hellman
(X9.42) mit DSS
Hashalgorithmus SHA-1
MIMEmultipart/signed
Verpackung
oder CMS-Format
signierter Daten
MIMEapplication/pkcs7Verpackung
mime
verschlüsselter
Daten
OpenPGP
Binär, basiert auf
PGP
Binär, basiert auf
PGP
TripleDES (DES
EDE3 Eccentric
CFB)
ElGamal
with
DSS
SHA-1
multipart/signed,
als ASCII kodiert
multipart/encrypted
• S/MIME ist interoperabel und in vielen kommerziellen Mailprogrammen implementiert.
• OpenPGP ist eine (sehr populäre) Nischenlösung. X.509 und PKCS
vertragen sich schlecht mit OpenPGP.
• S/MIME setzt auf die hierarchische PKI, OpenPGP auf das Web of
Trust.
• Oft muss man als Nutzer mit beiden Typen verschlüsselter Emails
umgehen können.
• Emails werden per SMTP transportiert.
• Es gibt eine SMTP-Erweiterung zum verschlüsselten Transport und
zur Authentifizierung der Email-Server, die auf TLS basiert.
106
• Viele Email-Gateways (aber nicht alle) implementieren diesen Standard, aber es komtm immer wieder vor, dass er falsch angewandt
wird.
• Die Protokolle POP und IMAP für Lesen von Emails sind zunächst
unverschlüsselt.
• IMAP spezifiert Zusätze für sichere Authentifizierung (Kerberos, GSSAPI, S/Key).
• Außerdem gibt es eine Absicherung der Kommunikation über TLS.
12
Rechtliche Fragen
Für die Kryptografie ist heutzutage besonders wichtig:
• Ist die Benutzung von (starker) Kryptografie erlaubt?
• Wird die digitale Signatur im Rechtsverkehr anerkannt?
12.1
Einschränkung der Benutzung starker Kryptografie
• Innerhalb Deutschlands ist die Benutzung kryptografischer Algorithmen uneingeschränkt erlaubt.
• Das gilt auch für die meisten Länder der Europäischen Union.
• In Frankreich musste bis zum Juni 2004 jede Benutzung kryptografischer Algorithmen mit mehr als 128 Bit Schlüssellänge angemeldet
und genehmigt werden.
12.2
Import/Export kryptografischer Algorithmen
• Die Regeln für den Import oder Export kryptografischer Algorithmen und Programme variieren sehr stark in den verschiedenen Ländern der Welt.
• Für die Länder der EU gelten die Wassenaar-Vereinbarungen (Nachfolger der COCOM) und die entsprechenden EU-Richtlinien:
– Export in andere Länder der EU ist vollständig liberalisiert, mit
Ausnahme einiger sehr spezieller Produkte.
107
– Export nach Australien, Kanada, Japan, Neuseeland, Norwegen, in die Schweiz und in die Vereinigten Staaten erfordert eine
allgemeine Exporterlaubnis (CGEA).
– Export in alle anderen Staaten erfordert eine sogenannte General National License.
Näheres siehe im Überblicksartikel von Bert-Jaap Koops.
12.3
Die Stellung der Digitalen Signatur in Deutschland
In Deutschland gibt es seit 2001 Gesetze über die Benutzung der Digitalen
Signatur im Rechtsverkehr, und zwar:
• Das Signaturgesetz (22. Mai 2001, zuletzt geändert 2004)
• Die Signaturverordnung (22. November 2001)
• Das Formanpassungsgesetz (13. Juli 2001)
12.3.1
Das Signaturgesetz
Zweck des Signaturgesetzes „ist es, Rahmenbedingungen für digitale Signaturen zu schaffen, unter denen diese als sicher gelten und Fälschungen
digitaler Signaturen oder Verfälschungen von signierten Daten zuverlässig festgestellt werden können.“ (§ 1 (1) SigG)
12.3.2
Qualitätsstufen digitaler Signaturen
• Einfache elektronische Signaturen
• Fortgeschrittene elektronische Signaturen
• Qualifizierte elektronische Signaturen
• Qualifizierte elektronische Signaturen mit Anbieter-Akkreditierung
Qualifizierte Zertifikate müssen folgende Angaben enthalten:
• den Namen des Signaturschlüsselinhabers bzw. ein Pseudonym,
• den öffentlichen Schlüssel,
• die Bezeichnung der Algorithmen, die verwendet werden können,
108
• die laufende Nummer des Zertifikates,
• Beginn und Ende der Gültigkeit des Zertifikates,
• Angaben über den Zertifizierungsdiensteanbieter,
• Angaben über Nutzungsbeschränkungen des Signaturschlüssels,
• Angaben, dass es sich um ein qualifiziertes Zertifikat handelt,
• ggf. Attribute des Signaturschlüssel-Inhabers.
12.3.3
Die Signaturverordnung
Die Signaturverordnung ergänzt das Signaturgesetz um konkrete Vorschriften. Dazu gehören zum Beispiel
• die Pflichten der Zertifizierungsdiensteanbieter,
• die Gestaltung von Zertifikaten,
• Anforderungen an Produkte für qualifizierte digitale Signaturen.
12.3.4
Das Formanpassungsgesetz
• Das „Gesetz zur Anpassung der Formvorschriften des Privatrechts
und anderer Vorschriften an den modernen Rechtsverkehr“ stellt die
digitale Signatur in vielen Fällen mit der eigenhändigen Unterschrift
gleich.
• Im Beweisrecht wird sie sogar höher bewertet: eine geprüfte qualifizierte Signatur wird in der Zivilprozessordnung zunächst einmal als
echt angesehen, das heisst, „der Anschein der Echtheit [...] kann nur
durch Tatsachen erschüttert werden, die ernstliche Zweifel daran begründen, dass die Erklärung mit dem Willen des SignaturschlüsselInhabers abgegeben worden ist“.
• Dieser Schritt vervollständigte die Umsetzung der EU-Richtlinie für
digitale Signaturen.
109
12.4
Die digitale Signatur in anderen Ländern
Europäische Union Am 13 Dezember 1999 erging die Richtlinie 1999/93/EG
des Europäischen Parlaments und des Rates der Europäischen Union über gemeinschaftliche Rahmenbedingungen für elektronische
Signaturen. Sie ist in den meisten Staaten der EU in nationales Recht
umgesetzt.
Andere Länder Sehr viele Staaten erlauben inzwischen die Benutzung einer digitalen Signatur im Rechtsverkehr. Einen Überblick bietet die
Website von Simone van der Hof.
110