Teil 3: Grundlagen der Kryptographie 2

Transcrição

Teil 3: Grundlagen der Kryptographie 2
Vorlesung Informationssicherheit
Thema 3: Grundlagen der Kryptographie II
Robert Baumgartl
12. Mai 2016
1 / 109
Zufallszahlen
Wozu?
I
(Monte-Carlo-)Simulation, Statistik
I
randomisierte Algorithmen
I
Spiele
I
Kryptografie
Zufallszahlen – durch einen echten zufälligen Prozess
generiert (Rauschen, atomare Zerfallsprozesse, . . . )
Pseudozufallszahlen – Folgen von Zahlen, die wie
Zufallszahlen aussehen (, aber durch einen deterministischen
Prozess generiert werden)
2 / 109
Güte von Zufallszahlen
Anforderungen:
1. Gleichverteilung
2. lange bzw. keine Periode
3. Unabhängigkeit
4. effizient ermittelbar
Kryptografisch sichere Zufallszahlen dürfen zusätzlich nicht
vorhersehbar sein.
Prüfung der Güte erfolgt mittels Tests, z.B.:
wahrscheinlichkeitstheoretisch
χ2 -Test1
Kolmogorov-Smirnov-Test
1
empirisch
Gleichverteilungstest
Serientest
sprich: „Tschih-Quadrat-Test“
3 / 109
χ2 -Test
Beispiel2 : 2 gekoppelte Würfel
Augen s
2
3
4
5
6
7
8
9
10
11
12
Wkt. ps
1
36
2
36
3
36
4
36
5
36
6
36
5
36
4
36
3
36
2
36
1
36
Experiment mit n = 144 Würfen
gezählt Ys
2
4
10
12
22
29
21
15
14
9
6
erwartet (nps )
4
8
12
16
20
24
20
16
12
8
4
I
Maß für die „Abweichung“ der Würfelwerte vom „richtigen“
Verhalten:
V = (Y2 − np2 )2 + (Y3 − np3 )2 + · · · + (Y12 − np12 )2
I
2
unausgewogen, da (z. B.) Fehler in Y7 aufgrund p7 > p2 viel
stärker gewichtet als Fehler in Y2
D. E. Knuth: The Art of Computer Programming. Vol. 2, 1998, S. 42ff
4 / 109
χ2 -Test, fortgesetzt
Beispiel: 2 gekoppelte Würfel und Verallgemeinerung
I
Normierung mit erwarteter Anzahl:
V =
(Y3 − np3 )2
(Y12 − np12 )2
(Y2 − np2 )2
+
+ ··· +
np2
np3
np12
Allgemein gilt:
V =
k
X
(Ys − nps )2
s=1
nps
k
1X
=
n
s=1
Ys2
ps
−n
V wird nun in der Tabelle der Quantile der χ2 -Verteilung aufgesucht:
I
Freiheitsgrade ν („nü“) = k − 1 (Anzahl Kategorien - 1)
I
Tabelleneintrag x in Zeile ν: „V ist kleiner oder gleich x mit
Wahrscheinlichkeit p.“
5 / 109
χ2 -Test, fortgesetzt
Tabelle der Quantile der χ2 -Verteilung
Freiheits-
p
grade
1%
5%
25%
50%
75%
95%
99%
ν =1
0.00
0.00
0.11
0.45
1.32
3.84
6.63
ν =2
0.02
0.10
0.58
1.39
2.77
5.99
9.21
ν =3
0.11
0.35
1.21
2.37
4.11
7.81
11.34
ν =4
0.30
0.71
1.92
3.36
5.39
9.49
13.28
ν =5
0.55
1.15
2.68
4.35
6.63
11.07
15.09
ν =6
0.87
1.64
3.46
5.35
7.84
12.59
16.81
ν =7
1.24
2.17
4.26
6.35
9.04
14.07
18.48
ν =8
1.65
2.73
5.07
7.34
10.22
15.51
20.09
ν =9
2.09
3.33
5.90
8.34
11.39
16.92
21.67
ν = 10
2.56
3.94
6.74
9.34
12.55
18.31
23.21
ν = 11
3.05
2.82
7.54
10.34
13.70
19.68
24.73
ν = 12
3.57
5.23
8.44
11.34
14.85
21.03
26.22
Für das Beispiel gilt V ≈ 7.15, ν = 10 . Abzulesen: V ≤ 9.34 mit 50%iger Wkt., V ≤ 6.74 mit 25%iger Wkt.
Fazit: V = 7.15 tritt in rund einem Drittel aller Fälle auf; Würfel sind o.k.!
6 / 109
Lineare Kongruenzgeneratoren
Berechnung einer Zufallsfolge mittels
zi+1 = (azi + b) mod m
(m prim, Initialisierungswert z0 mit 0 < z0 < m; a, b Parameter)
Beispiel: a = 6, b = 0, m = 13, z0 = 2
i
zi
0
2
1
12
2
7
3
3
4
5
5
4
6
11
7
1
8
6
9
10
10
8
11
9
12
2
...
...
I
generiert volle Periode (auch für m = 231 − 1, a = 16807 u. a.)
I
zi = 0 nicht erreichbar (warum?)
I
keine volle Periode z. B. für m = 13, a = 5, b = 0, z0 = 1
I
effiziente Berechnung, gutes statistisches Verhalten
I
ungeeignet für kryptografische Zwecke, da vorhersehbar
(vgl. James Reeds: “Cracking” a Random Number Generator.
Cryptologia Vol. 1, No. 1, 1977, S. 20–26)
7 / 109
Linear rückgekoppelte Schieberegister
Prinzip
Rückkopplungsfunktion
bn bn−1
...
b3
b2
b1
Zufallsbit
Abbildung: Rückgekoppeltes Schieberegister mit n Bit Länge
Arbeitsweise:
I
Ausgabe des Bits b1 als neues Zufallsbit
I
gleichzeitig Verknüpfung der Bits bi miteinander (z. B.
mittels ⊕) in Rückkopplungsfunktion
I
Ergebnis der Verknüpfung wird bn , alle anderen Bits eine
Stelle nach rechts
8 / 109
Linear rückgekoppeltes Schieberegister
Beispiel
XOR
b4
b3
b2
b1
ZB
I
sog. linear feedback shift register
(LFSR)
I
n = 4 Bit; Init: z0 = 1111
I
hier: maximale Periode (2n − 1)
I
Ergebnis darf nie 0 sein
i
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
b
1111
0111
1011
0101
1010
1101
0110
0011
1001
0100
0010
0001
1000
1100
1110
1111
usw.
ZB
1
1
1
1
0
1
0
1
1
0
0
1
0
0
0
9 / 109
Einwegfunktionen
. . . sind ein wichtiger Baustein kryptografischer Verfahren
I
Bestimmung von f (x) aus x leicht (vorwärts)
I
Bestimmung von x aus gegebenem f (x) extrem schwer,
d. h. nur mit allen zur Verfügung stehenden Rechnern der
Welt in hunderten von Jahren
Beispiele:
I
Suche einer Telefonnummer zu gegebenem Namen im
Telefonbuch ist einfach
I
Suche eines Namens zu gegebener Telefonnummer im
Telefonbuch ist schwierig
I
Multiplikation zweier (großer) Primzahlen ist einfach
I
Zerlegung des Produktes in zwei Primzahlfaktoren ist
extrem aufwändig (→ Faktorisierungsverfahren)
10 / 109
Einwegfunktionen, contd.
Es gibt
I
keinen Beweis für die Existenz von und
I
keine systematischen Konstruktionsverfahren für
Einwegfunktionen.
Einwegfunktion mit Hintertür:
I
mit Kenntnis eines Zusatzschlüssels wird die Ermittlung
von x aus f (x) einfach.
11 / 109
Einweg-Hashfunktionen
. . . sind Einwegfunktionen, die zu gegebenen Daten variabler
Länge einen Funktionswert konstanter, meist kurzer Länge (→
„Fingerabdruck“, kryptografischer Hash, Message Digest)
ermitteln.
I
I
I
Hash H(m) zu gegebenen Daten m ist leicht zu ermitteln
(effizient zu berechnen).
Zu vorgegebenem Hash eine passende Eingabe zu
konstruieren ist hingegen (extrem) schwer
(m = H −1 (H(m))).
Änderung eines Bits in der Eingabe sollte im Mittel die
Hälfte der Bits in der Ausgabe ändern.
Anwendung:
I Integritätssicherung von Dateien
I Digitales Signieren
I Authentifizierung
12 / 109
Kryptografische Hashverfahren
Beispiele
Verfahren
MD2
MD4
MD5
SHA-1
SHA-256
SHA-512
SHA-3
Jahr
1988
1990
1991
1995
2004
2004
2012
gebrochen?
X3
X
X4
X5
-
Hashlänge
[Bit]
128
128
128
160
256
512
226-512
Blockgröße
[Bit]
128
512
512
512
512
1024
576-1152
Es ist ebenfalls möglich, Blockchiffren als kryptografische Hashes
einzusetzen.
3
4
5
Knudsen, Mathiassen: Preimage and Collision Attacks on MD2, 2005
Praktikumsaufgabe
Stevens, Karpman, Peyrin: Freestart Collision for full SHA-1, 2015
13 / 109
Angriffe gegen Hashfunktionen
Kollisionen
I
Kollision: Für zwei Nachrichten m1 und m2 wird ein- und
derselbe Hash erzeugt, also H(m1 ) = H(m2 )
I
in der Softwaretechnik z. B. durch Überlauflisten
behandelt, unkritisch
I
bei kryptografischen Hashes gefährlich; erste Stufe zum
„Brechen“ des Hashverfahrens
I
Kollisionsfreiheit ist unmöglich (unendlich viele
verschiedene Nachrichten werden auf 2Hashlänge
verschiedene Hashwerte abgebildet)
I
stattdessen: Kollisionsresistenz gefordert
14 / 109
Angriffe gegen Hashfunktionen
Kollisionsresistenz
Schwache Kollisionsresistenz
I
Zu einer Nachricht m und deren gegebenen Hashwert
H(m) ist es praktisch unmöglich, eine zweite Nachricht m0
zu finden, die den gleichen Hashwert H(m0 ) = H(m) hat.
Starke Kollisionsresistenz
I
Es ist praktisch unmöglich, zwei Nachrichten m und m0 zu
finden, die den gleichen Hashwert H(m) = H(m0 )
aufweisen.
15 / 109
Angriffe gegen Hashfunktionen
Brute-Force-Angriff gegen schwache Kollisionsresistenz
gegeben: Nachricht m mit Hashwert H(m)
gesucht: Nachricht m0 mit H(m0 ) = H(m)
1:
2:
3:
4:
5:
6:
7:
8:
I
START
zufällige Generierung m0
Ermittlung H(m0 )
if H(m0 ) = H(m) then
STOP {Kollision gefunden}
else
GOTO 2
end if
bei einer Hashlänge von n Bit ist die Wkt. einer Kollision
bei jeder Iteration 2−n
im Mittel 2n Iterationen bis zur
Kollision nötig
16 / 109
Angriffe gegen Hashfunktionen
Brute-Force-Angriff gegen schwache Kollisionsresistenz
Start
zufällige Auswahl m0
Berechnung H(m0 )
H(m0 ) =
H(m) ?
yes
Kollision gefunden
Stop
17 / 109
Angriffe gegen Hashfunktionen
Geburtstagsangriff
Geburtstagsparadoxon:
Wie viele Personen müssen sich in einem Raum befinden,
damit die Wahrscheinlichkeit, dass jemand mit mir am
gleichen Tag Geburtstag6 hat größer ist als 50%?
I
253
Wieviele Personen müssen sich in einem Raum befinden,
damit die Wkt., dass zwei von Ihnen am gleichen Tag
Geburtstag haben, größer ist als 50%?
I
6
23
6. September
18 / 109
Angriffe gegen Hashfunktionen
Geburtstagsangriff
Geburtstagsparadoxon:
Wie viele Personen müssen sich in einem Raum befinden,
damit die Wahrscheinlichkeit, dass jemand mit mir am
gleichen Tag Geburtstag6 hat größer ist als 50%?
I
253
Wieviele Personen müssen sich in einem Raum befinden,
damit die Wkt., dass zwei von Ihnen am gleichen Tag
Geburtstag haben, größer ist als 50%?
I
6
23
6. September
19 / 109
Angriffe gegen Hashfunktionen
Geburtstagsangriff
Geburtstagsparadoxon:
Wie viele Personen müssen sich in einem Raum befinden,
damit die Wahrscheinlichkeit, dass jemand mit mir am
gleichen Tag Geburtstag6 hat größer ist als 50%?
I
253
Wieviele Personen müssen sich in einem Raum befinden,
damit die Wkt., dass zwei von Ihnen am gleichen Tag
Geburtstag haben, größer ist als 50%?
I
6
23
6. September
20 / 109
Geburtstagsparadoxon
Beweisskizze
I
Wkt., dass man an einem bestimmten Tag im Jahr
1
Geburtstag hat: 365
I
Wkt., dass man an einem bestimmten Tag im Jahr nicht
364
Geburtstag hat: 365
I
Wkt., dass man an zwei bestimmten Tagen im Jahr nicht
Geburtstag hat: 363
365
Voraussetzung: Geburtstage in der Gruppe sind unabhängig
und gleichverteilt
I
Eine Gruppe von zwei Personen enthält mit
364
keine zwei Personen mit dem
Wahrscheinlichkeit 365
gleichen Geburtstag, da die zweite Person genau an
einem Tag keinen Geburtstag haben kann.
21 / 109
Geburtstagsparadoxon
Beweisskizze, Fortsetzung
I
Eine Gruppe von drei Personen enthält mit
364 363
Wahrscheinlichkeit 365
· 365 keine zwei Personen mit dem
gleichen Geburtstag, da die dritte Person (und nur diese)
an zwei Tagen keinen Geburtstag haben darf.
I
Eine Gruppe von n Personen enthält mit Wkt.
366−n
364 363
365 · 365 · . . . · 365 keine 2 Personen gleichen
Geburtstags.
I
Eine Gruppe von n Personen enthält mit Wkt.
363
366−n
pn = 1 − 364
365 · 365 · . . . · 365 2 Personen gleichen
Geburtstags.
p23 ≈ 0, 5072
In einer Gruppe von (mindestens) 23 Personen ist die
Wahrscheinlichkeit, dass 2 Personen am gleichen Tag
Geburtstag haben, größer als 50%.
22 / 109
Angriffe gegen Hashfunktionen
Zurück zum Planet...Geburtstagsangriff
I
Der Angreifer möchte zwei Nachrichten M und M 0 finden,
so dass gilt: H(M) = H(M 0 ).
I
Er kann dann M dem Kommunikationspartner zeigen, den
(gemeinsamen) Hash H(M) signieren lassen und dann M
durch M 0 ersetzen
Aus dem Geburtstagsparadoxon folgt:
I
Es ist sehr schwer, zu einer gegebenen Nachricht mit
Hash einen zweiten Hash zu finden, der mit ihrem eigenen
Hashwert kollidiert.
I
Es ist leichter, eine Kollision zu erzeugen, wenn beide
Nachricht variabel sind!
I
Die Anzahl zu prüfender Hashes reduziert sich um die
Wurzel!
23 / 109
Geburtstagsangriff
Beispiel und Fazit
I
Gegeben sei eine kryptografisch sichere Hashfunktion.
I
(hypothetische) Hashlänge 64 Bit (k = 64)
I
Brute-Force-Angriff eines gegebenen Hashes erfordert das
Prüfen von 264 Hashwerten (≈ 1.892 · 1019 )
I
Rechner, der in der Sekunde 1.000.000 Hashes generiert,
benötigt dafür etwa 600.000 Jahre
I
Ein Geburtstagsangriff auf diese Hashfunktion erfordert
das Prüfen von 2k /2 = 232 Hashes
I
Obiger Rechner benötigt dafür etwa 71 Minuten7 !
Fazit: Ist ein Geburtstagsangriff auf die Hashfunktion zu
erwarten, so muss die Länge des generierten Hashes im
Vergleich zum ausschließlich drohenden Brute-Force-Angriff
verdoppelt werden.
7
Ein analoger Angriff auf SHA-1 benötigt 2.79 Urknallperioden (á 13.75 Mrd. Jahre)
24 / 109
Hashing en Detail: MD5
Idee: Kompression
I
(mehrfache) Iteration einer sog. Kompressionsfunktion
I
I
I
Eingabe: Daten fester Länge
Resultat: Daten fester Länge (kürzer als Eingabe)
Beispiel: Kompression bei MD5: Eingabe H (128 Bit), B
(512 Bit), Resultat 128 Bit
Nachricht M
512
Init 128
H0
C
512
128
H1
C
...
... 128
512
C
Pad
128
C
128
Hn = h(M)
Abbildung: Merkle-Damgård-Verfahren
25 / 109
Merkle-Damgård-Schema
1. M wird aufgefüllt (Padding) mit
I
I
I
1 Bit mit Wert 1,
variable Anzahl 0-Bits,
64 Bit, in denen die Länge von M (in Bits) kodiert ist,
so dass die Länge der resultierenden Nachricht M 0 ein
Vielfaches von 512 Bit beträgt
Pad =
1 0
0
...
0
Länge (64 Bit)
Abbildung: Padding im Merkle-Damgård-Verfahren
2. M 0 wird in 512 Bit lange Blöcke B1 , B2 , . . . Bn aufgeteilt
3. H0 = IV (Initial Value)
4. Hi = C(Hi−1 , Bi ) ∀i = 1, . . . , n
5. Hn = H(M), der gesuchte Hashwert von M.
26 / 109
Merkle-Damgård-Schema
Anmerkungen:
I
maximale Länge der Nachricht 264 Bit= 2 EiB (ExbiByte) =
2048 PiB (PebiByte)
I
lineare Komplexität des Verfahrens
I
die meisten kryptografischen Hashverfahren nutzen diese
Technik (unterscheiden sich in C)
Satz (Merkle/Damgård, 1989): Wenn die Kompressionsfunktion
C keine Kollisionen verursacht, dann auch nicht das nach
obigem Verfahren konstruierte Hashverfahren.
27 / 109
„Message Digest“ MD5
I
Ronald Rivest, 1991
I
beschrieben im RFC 1321
I
nutzt das Merkle-Damgård-Schema
I
sehr populär (Zertifikate, Integritätsprüfungen, . . . )
I
Linux: Kommando md5sum
I
seit 2004 sind Kollisionen publiziert → unsicher
Ablauf:
I
relativ komplexe Kompressionsfunktion
I
für jeden der Blöcke Bi werden 4 Iterationen („Runden“)
ausgeführt
I
jede Runde besteht aus 16 Operationen
28 / 109
Eine Operation in MD5
16mal
Hi , 128 Bit
A
B
modulare Addition +
N
j-ter Teilblock von Bi
(32 Bit)
C
D
C
D
+
Konstante
32 Bit
+
Linksrotation
«s
+
A
B
29 / 109
Nichtlineare Funktionen N
F (X , Y , Z ) = (X ∧ Y ) ∨ ((¬X ) ∧ Z )
G(X , Y , Z ) = (X ∧ Z ) ∨ (Y ∧ (¬Z ))
H(X , Y , Z ) = X ⊕ Y ⊕ Z
I(X , Y , Z ) = Y ⊕ (X ∨ (¬Z ))
I
in jeder Runde wird eine andere Funktion genutzt
30 / 109
Anwendung: Message Authentication Codes (MAC)
I
= spezieller Hash, der von Eingabedaten und einem
zusätzlichen geheimen Schlüssel abhängt
I
somit nur für Besitzer des Schlüssels generier- bzw.
prüfbar
I
mittels Blockchiffre im CBC- oder CFB-Modus oder aus
Hashfunktion implementierbar
I
Beispiel: HMAC (RFC 2104) → TLS, IPsec
Zweck:
I
Sicherung der Integrität von Nachrichten
I
Authentisierung der Nachricht
I
Nichtabstreitbarkeit der Nachricht
31 / 109
Message Authentication Codes (MAC)
Prinzip
1. Alice und Bob tauschen (geheimen) Schlüssel aus
2. Alice generiert Nachricht, ermittelt MAC aus Nachricht und
Schlüssel
3. Nachricht und MAC werden an Bob übertragen
4. Bob berechnet MAC aus Nachricht und Schlüssel
5. Stimmen errechnete und übertragene MAC überein, ist die
Nachricht authentisch und muss von Alice stammen, da
nur diese den Schlüssel besitzt.
32 / 109
Message Authentication Codes (MAC)
Realisierung mittels Hashfunktion
I
Secret Prefix MAC: MACk (x) = h(k k x)
I
I
I
gefährlich, weil MAC einer verlängerten Nachricht x aus
MACk (x) ohne Kenntnis von k ermittelt werden kann:
h(k kx1 x2 . . . xn+1 ) = h (h(k ||x1 x2 . . . xn )||xn+1 )
Secret Suffix MAC: MACk (x) = h(x k k )
I
I
gefährlich, wenn Mallory Kollisionen erzeugen kann, d. h. ,
h(x) = h(y ) mit x 6= y
damit:
MACk (x) = h(x k k ) = h(y k k ) = MACk (y )
I
I
Mallory könnte x durch y ersetzen
HMACk (x) = h [(k + ⊕ opad) k h[(k + ⊕ ipad) k x]]
I
I
zweifaches Hashen beseitigt Nachteile
trotzdem effizient, da Nachricht x nur einmal gehasht
33 / 109
A hash-based message authentication code which does not show the security weakness described above is the HMAC construction proposed by Mihir Bellare, Ran
HMAC (RFC2104)
Canetti and Hugo Krawczyk in 1996. The scheme consists of an inner and outer
Struktur, grafisch
hash and is visualized in Figure 12.2.
Fig. 12.2 HMAC construction
(Abb.:Christof Paar und Jan Pelzl. Understanding Cryptography.
Springer, 2010, S. 324)
The MAC computation starts with expanding the symmetric key k with zeros on
34 / 109
Anwendungsbeispiel: Hashcash
Idee:
I
zur Autorisierung soll ein Nutzer ‘etwas’ Rechenzeit
aufwenden und diesen Aufwand nachweisen
I
Nutzung Hashfunktion; Ergebnis muss bestimmte
Merkmale aufweisen
I
Beispiel: „Generiere einen SHA1-Hash über einem
zufällligen Datum, dessen erste 20 Bits alle den Wert Null
haben!“ → es müssen ca. 220 Hashes ermittelt werden
Anwendung:
I
Abwehr von Spam
I
Mining-Funktion in Cryptowährungen (z. B. Bitcoin)
35 / 109
Signaturen (Unterschriften)
. . . dienen dem Beweis der Echtheit, der Urheberschaft oder
dem Einverständnis mit dem Inhalt eines Dokumentes.
Eigenschaften:
I
authentisch - überzeugt den Empfänger, dass der
Unterzeichner willentlich unterschrieben hat
I
fälschungssicher - beweist, dass der Unterzeichner (und
kein anderer) das Dokument unterzeichnete
I
nicht wiederverwendbar - kann in kein anderes Dokument
„übertragen“ werden
I
Unterschriebenes Dokument kann nicht mehr verändert
werden.
I
nicht rücknehmbar - Unterzeichner kann Unterschrift nicht
leugnen.
36 / 109
Digitale Signaturen
Verschlüsselung von Dokumenten weist viele dieser
Anforderungen auf → Nutzung kryptografischer Techniken zur
Signierung digitaler Dokumente
Verschiedene Verfahren:
I
symmetrische Verschlüsselung und Vermittlung
I
mittels Public-Key-Kryptographie
I
mittels Public-Key-Kryptographie und Einweg-Hashfunktion
37 / 109
Signieren mit symmetrischen Kryptosystemen und
Vermittler
Voraussetzungen:
I
Vermittler (Trent), dem vertraut wird
I
Schlüssel KA für Komm. Alice ↔ Trent und KB für Bob ↔
Trent
Protokoll:
1. Alice verschlüsselt M an Bob mit KA und schickt sie an
Trent.
2. Trent entschlüsselt M mittels KA .
3. Trent verschlüsselt M zusammen mit einer Nachricht, dass
M von Alice stammt, mit KB
4. Trent sendet C = KB (M) an Bob.
5. Bob entschlüsselt C mit KB . Er kann M lesen und ist
sicher, dass diese von Alice stammt.
38 / 109
Signieren mit Public-Key-Kryptographie
1. Alice verschlüsselt M mit ihrem privaten (!) Schlüssel DKA
(unterzeichnet): C = DKA (M)
2. Alice schickt Chiffrat C an Bob
3. Bob entschlüsselt C mit Alice’ öffentlichen Schlüssel EKA ,
was die Echtheit von M beweist
Vorteil im Vergleich zum symmetrischen Verfahren:
I
kein Vermittler erforderlich
I
auch nicht im Streitfall
Probleme:
I
Sicherung der Authentizität des öffentlichen Schlüssels
von Alice EKA
I
Zeitbedarf bei langen Dokumenten
39 / 109
Signieren mit Public-Key-Kryptographie und
Einweg-Hashfunktion
Idee: Signierung eines Einweg-Hashes über das Dokument
anstatt des Dokumentes selbst (→ effizient).
Protokoll:
1. Alice berechnet den Einweg-Hash W1 zum
entsprechenden Dokument M: W1 = H(M).
2. Alice verschlüsselt W1 mit ihrem privaten Schlüssel DKA :
C = DKA (W1 ) = DKA (H(M)) (Signatur).
3. Alice sendet C und M an Bob.
4. Bob ermittelt den Einweg-Hash W2 zum empfangenen
Dokument M.
5. Bob entschlüsselt W1 = EKA (C) mit Alice’ öffentlichem
Schlüssel
6. Bob prüft, ob W1 = W2 gilt. Wenn ja, dann ist die
Unterschrift von Alice unter M gültig.
40 / 109
Vorteile des Signierens mit Public-Key-Kryptographie
und Einweg-Hashfunktion
1. großer Geschwindigkeitsgewinn bei gleicher Sicherheit
(Voraussetzung: sichere Hashfunktion)
2. Unterschrift und Dokument können getrennt gespeichert
werden.
3. Möglichkeit, das Dokument selbst (noch) geheim zu
halten; Offenlegung erst bei Prüfung der Unterschrift nötig
→ urheberrechtliches Schützen
41 / 109
Nutzung von Zeitstempeln
I
Wenn signiertes Dokument nur einmal genutzt werden darf
(Scheck, Gutschein, . . . ) muss Mehrfachverwendung
unterbunden werden
I
Lösung: Datum und Zeit der Unterschrift an Dokument
anhängen, gemeinsam unterschreiben
42 / 109
Nutzung von Zeitstempeln
I
Wenn signiertes Dokument nur einmal genutzt werden darf
(Scheck, Gutschein, . . . ) muss Mehrfachverwendung
unterbunden werden
I
Lösung: Datum und Zeit der Unterschrift an Dokument
anhängen, gemeinsam unterschreiben
43 / 109
Mehrfachsignatur
Problem: Alice und Bob wollen beide ein- und dasselbe
Dokument signieren (z. B. einen Vertrag)
Möglichkeiten:
a) Alice und Bob unterschreiben verschiedene Kopien des
Dokuments (unhandlich)
b) Erst unterzeichnet Alice, dann unterzeichnet Bob das von
Alice unterzeichnete Dokument. (→ Signaturprüfung von
Alice muss immer erst Signaturprüfung von Bob
vorangehen - unelegant)
c) Alice und Bob unterschreiben separat den Hashwert des
Dokuments (→ Unterschriften einzeln prüfbar)
44 / 109
Digitale Signaturen mit Verschlüsselung
Kombination von Signierung und Verschlüsselung:
1. Alice unterschreibt ihre Nachricht M mit ihrem privaten
Schlüssel: SA (M) mit SA = DKA
2. Alice verschlüsselt die unterzeichnete Nachricht mit Bobs
öffentlichem Schlüssel: C = EKB (SA (M))
3. Alice schickt C an Bob
4. Bob entschlüsselt C mit seinem privaten Schlüssel
DKB : DKB (EKB (SA (M)))
5. Bob prüft die Gültigkeit mit Alice’ öffentlichen Schlüssel
und erhält die Klartextnachricht:
VA (DKB (EKB (SA (M)))) = M mit VA = EKA
45 / 109
Anmerkungen
Günstig, vor der Verschlüsselung zu signieren:
I
Unterschrift kann nicht durch einen Gegner entfernt
werden.
I
Man sieht, was man unterschreibt!
I
Keine kryptanalytischen Angriffe möglich.
Es können für Signierung und Verschlüsselung
unterschiedliche Schlüsselpaare verwendet werden.
46 / 109
Erneutes Senden als Empfangsbestätigung
1. Alice unterschreibt M mit ihrem privaten Schlüssel,
verschlüsselt anschließend mit Bobs öffentlichem
Schlüssel und sendet das Chiffrat an Bob:
C = EKB (SA (M))
2. Bob entschlüsselt mit seinem privaten Schlüssel, überprüft
Alice’ Signatur mit deren öffentlichen Schlüssel und stellt
M damit wieder her: VA (DKB (EKB (SA (M)))) = M.
3. Bob unterschreibt seinerseits M mit seinem privaten
Schlüssel SB , chiffriert anschließend mit Alice’ öffentlichen
Schlüssel und schickt die Nachricht als
Empfangsbestätigung zurück: C2 = EKA (SB (M))
4. Alice entschlüsselt mit Ihrem privaten Schlüssel und prüft
wiederum Bobs Signatur mit seinem öffentlichen
Schlüssel. Stimmt die entschlüsselte mit der
ursprünglichen Nachricht überein, weiß sie, dass Bob die
Nachricht erhalten hat.
47 / 109
Erneutes Senden als Empfangsbestätigung
Rücksendeangriff
Protokoll ist unsicher, wenn für Verschlüsselung und Signierung
der gleiche Algorithmus eingesetzt wird (Vx = Ex , Sx = Dx )!
1. Alice signiert und verschlüsselt (wie gehabt):
C = EKB (DKA (M))
2. Mallory zeichnet C auf, sendet sie (etwas später) an Bob
und behauptet, C sei von ihm.
3. Bob dechiffriert die Nachricht mit seinem privaten
Schlüssel und versucht anschließend, mit Mallorys
öffentlichem Schlüssel die (von Alice stammende)
Unterschrift zu prüfen.
EKM (DKB (EKB (DKA (M)))) = EKM (DKA (M))
48 / 109
Erneutes Senden als Empfangsbestätigung
Rücksendeangriff und dessen Abwehr
4. Obwohl die Unterschrift nicht verifiziert werden kann,
schickt Bob (automatisiert?) gemäß dem Protokoll eine
Empfangsbestätigung an Mallory
C2 = EKM (DKB (EKM (DKA (M))))
5. Mallory muß nun:
I
I
I
I
mit seinem privaten Schlüssel DKM entschlüsseln
mit Bobs öffentlichen Schlüssel EKB entschlüsseln
erneut mit seinem privaten Schlüssel entschlüsseln
mit Alice’ öffentlichen Schlüssel EKA entschlüsseln
. . . und schon kann er M lesen!
Lehre:
Verschiedene Schlüssel oder verschiedene Algorithmen für
Signierung und Verschlüsselung einsetzen! Nicht automatisch
bestätigen und signieren!
49 / 109
Authentifizierung (oder Authentifikation)
2 Rollen:
I
Partei, die Identität nachweisen will (Beweisender,
„Prover“)
I
Partei, die Identität prüfen will (Verifizierender, „Verifier“)
Unterscheidung von
I
einseitiger Authentifikation (z. B. gegenüber Rechner) und
I
gegenseitiger Authentifikation.
Nutzung von
I
charakteristischen Eigenschaften
I
Besitz
I
Wissen
50 / 109
Authentifizierung mittels Passwort
Naive Implementierung
Alice
{A, P}
P0
P = P0
gespeichertes
Passwort
Zugang gewährt
Anmerkungen:
I
Passwort muss erzeugt/vergeben werden
I
Identität A muss mit übermittelt werden
I
Abspeicherung des Passwortes P0 im Klartext
51 / 109
Authentifizierung mittels Passwort
Nutzung einer kryptografischen Hashfunktion
Alice
{A, P}
h(P0 )
h(P) = h(P0 )
gespeicherter
Passworthash
Zugang gewährt
Anmerkungen:
I
Passwort nicht mehr im Klartext abgelegt → kann nicht
gestohlen werden!
I
Problem: schlechte Passworte
52 / 109
Mögliche Angriffe auf den Vorgang der
Authentifizierung
I
Ausspähen des Passwortes
I
Social Engineering
I
Erraten des Passwortes
I
Wörterbuchangriff
I
Brute Force
53 / 109
Social Engineering
„Hallo, ich bin der freundliche Mann vom
Rechenzentrum. Ich möchte die Virensoftware auf
Ihrem Rechner aktualisieren und benötige dazu Ihr
Nutzerkennzeichen und Passwort.“
Verwandte Themen:
I
„Dumpster Diving“ – Auswertung von Papierkörben,
Abfallbehältern
I
„Tailgating“ – einer berechtigten Person in sensitive
Bereiche folgen
I
„Shoulder Surfing“ – Ablesen/Abfilmen von Passworten bei
der Eingabe
Johnny Long: No Tech Hacking: A Guide to Social Engineering,
Dumpster Diving and Shoulder Surfing. Syngress, 2008
54 / 109
Erraten des Passwortes
Ein legendärer Einbruch im Lawrence Berkeley National
Laboratory, Kalifornien:
LBL> telnet elxsi
Elxsi at LBL
login: root
password: root
incorrect passwort, try again
login: guest
password: guest
incorrect passwort, try again
login: uucp
password: uucp
WELCOME TO THE ELXSI COMPUTER AT LBL
(Clifford Stoll: Kuckucksei. Fischer, 1991)
I
bei gut gewarteten Systemen heute nahezu aussichtslos
55 / 109
Automatisiertes Erraten des Passwortes
Linux-PC, Authentifizierungs-Logfile /var/log/auth.log, Ausschnitt
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
14:44:35
14:44:39
14:44:43
14:44:44
14:44:46
14:44:47
14:44:49
14:44:51
14:44:53
14:44:54
14:44:56
14:44:58
14:45:00
14:45:01
14:45:03
14:45:05
14:45:07
14:45:10
14:45:11
14:45:13
14:45:15
14:45:17
14:45:21
14:45:24
14:45:27
14:45:31
14:45:32
14:45:34
14:45:35
14:45:37
14:45:39
idir
idir
idir
idir
idir
idir
idir
idir
idir
idir
idir
idir
idir
idir
idir
idir
idir
idir
idir
idir
idir
idir
idir
idir
idir
idir
idir
idir
idir
idir
idir
sshd[14612]:
sshd[14620]:
sshd[14630]:
sshd[14640]:
sshd[14640]:
sshd[14648]:
sshd[14648]:
sshd[14656]:
sshd[14656]:
sshd[14666]:
sshd[14666]:
sshd[14674]:
sshd[14674]:
sshd[14684]:
sshd[14684]:
sshd[14692]:
sshd[14692]:
sshd[14702]:
sshd[14710]:
sshd[14710]:
sshd[14718]:
sshd[14718]:
sshd[14728]:
sshd[14736]:
sshd[14746]:
sshd[14754]:
sshd[14762]:
sshd[14762]:
sshd[14770]:
sshd[14770]:
sshd[14780]:
Failed password for invalid user admin from 93.99.106.4 port 40799 ssh2
Failed password for root from 93.99.106.4 port 42116 ssh2
Failed password for root from 93.99.106.4 port 43885 ssh2
Invalid user test from 93.99.106.4
Failed password for invalid user test from 93.99.106.4 port 45676 ssh2
Invalid user test from 93.99.106.4
Failed password for invalid user test from 93.99.106.4 port 47395 ssh2
Invalid user webmaster from 93.99.106.4
Failed password for invalid user webmaster from 93.99.106.4 port 48814 ssh2
Invalid user user from 93.99.106.4
Failed password for invalid user user from 93.99.106.4 port 50581 ssh2
Invalid user username from 93.99.106.4
Failed password for invalid user username from 93.99.106.4 port 51972 ssh2
Invalid user username from 93.99.106.4
Failed password for invalid user username from 93.99.106.4 port 53530 ssh2
Invalid user user from 93.99.106.4
Failed password for invalid user user from 93.99.106.4 port 55065 ssh2
Failed password for root from 93.99.106.4 port 56829 ssh2
Invalid user admin from 93.99.106.4
Failed password for invalid user admin from 93.99.106.4 port 60192 ssh2
Invalid user test from 93.99.106.4
Failed password for invalid user test from 93.99.106.4 port 33440 ssh2
Failed password for root from 93.99.106.4 port 35208 ssh2
Failed password for root from 93.99.106.4 port 36679 ssh2
Failed password for root from 93.99.106.4 port 38334 ssh2
Failed password for root from 93.99.106.4 port 39667 ssh2
Invalid user danny from 93.99.106.4
Failed password for invalid user danny from 93.99.106.4 port 41516 ssh2
Invalid user sharon from 93.99.106.4
Failed password for invalid user sharon from 93.99.106.4 port 42957 ssh2
Invalid user aron from 93.99.106.4
56 / 109
Wörterbuchangriff (Dictionary Attack)
Idee:
I Offline-Generierung einer Liste aus Einträgen mit
I
I
potentielles Passwort
potentielles Passwort, verschlüsselt
I
alle möglichen Worte, Namen, Bezeichner usw. mittels der
Einwegfunktion des Betriebssystems verschlüsseln
I
Diebstahl der Passwortdatei
I
Vergleich der verschlüsselten Wortliste mit den Hashes
aus der Passwortdatei
I
Bei Übereinstimmung ist das unverschlüsselte Passwort
der entsprechende Eintrag aus der Wortliste
→ Werkzeug john (Praktikum)
57 / 109
Erschwerung des Wörterbuchangriffes mittels Salz
I
Passwort wird vor Verschlüsselung mit einer Zufallszahl
konkateniert (dem Salz)
I
Salz wird mit in der (geheimen) Passwortdatei gespeichert
I
bei genügend großer Anzahl möglicher Hash-Werte wird
ein Wörterbuchangriff unmöglich
I
Mallory müßte zu jedem Wort alle möglichen Salz-Werte
durchprobieren
I
erschwert nur Wörterbuchangriff, kein Brute-Force-Attack
Beispiel: crypt() im POSIX
58 / 109
Weitere Gegenmaßnahmen gegen Wörterbuchangriff
I
möglichst keine Hinweise auf Länge des PW (’*’ u. ä.) in
der Eingabemaske
I
möglichst kein Hinweis, ob NKZ gültig
I
Verzögerung nach jedem erfolglosen Anmeldeversuch
periodisches Erneuern der Passworte:
I
+ gecrackte PW werden automatisch ausgetauscht
− Nutzer müssen periodisch neue PW lernen
59 / 109
Anforderungen an gute Passworte
I
möglichst lang
I
gesamten Zeichenvorrat nutzen (sonst resultiert eine
signifikante Verkleinerung des Schlüsselraums →
Brute-Force-Angriff vereinfacht)
I
keine Namen, Worte (auch nicht rückwärts)
I
regelmäßig wechseln
I
computergenerierte Passworte: geringe Akzeptanz
(werden aufgeschrieben) → Standard FIPS PUB 181
(http://www.itl.nist.gov/fipspubs/fip181.htm)
I
proaktive PW-Checker prüfen gewähltes PW auf
Mindestanforderungen
60 / 109
Dauer von Brute-Force-Angriffen
in Abhängigkeit vom Schlüsselraum
4 Byte
5 Byte
6 Byte
7 Byte
8 Byte
Kleinbuchstaben (26)
0.5 s
12 s
5 min
2.2 h
2.4 d
Kleinbuchst.+Ziffern (36)
1.7 s
1 min
36 min
22 h
33 d
alphanum. Zeichen (62)
15 s
15 min
16 h
41 d
6.9 a
druckbare Zeichen (95)
1.4 min
2.1 h
8.5 d
2.2 a
210 a
ASCII-Zeichen (128)
4.5 min
9.5 h
51 d
18 a
2300 a
8-Bit-Zeichen (256)
1.2 h
13 d
8.9 a
2300 a
580.000 a
Tabelle: vgl. Bruce Schneier: Angewandte Kryptographie, Pearson,
2006, S.201
I
zugrundegelegt wurde eine Geschwindigkeit von
1.000.000 Schlüsselberechnungen pro Sekunde
61 / 109
Welche Knackgeschwindigkeit ist realistisch?
Stefan Arbeiter, Matthias Deeg: Bunte Rechenknechte. In: c’t 06/2009, S. 204ff
I
I
abhängig vom gewählten Verschlüsselungsverfahren
System 1 - 4 Prozessoren á 6 Cores (Intel Dunnington) @
2.5 GHz (HP-PC, ca. 18.000 US-$)
I
I
ermittelt ca. 1.2 Milliarden NTLM-Hashes pro Sekunde
System 2 - Intel Core 2 Quad, Nvidia GeForce GTX 280
(„Gamer-PC“, ca. 800 EUR)
I
I
I
CPU ca. 200 Millionen Hashes/s
GPU ca. 720 Millionen Hashes/s (CUDA8 nutzender
Passwortknacker)
P
0.9 Milliarden NTLM-Hashes pro Sekunde
8
Compute Unified Device Architecture, eine API zur Nutzung der Shader-Prozessoren aktueller Grafikkarten für
wissenschaftliche Berechnungen
62 / 109
Professionelle Knack-Hardware
a) „Deep Crack“
I
I
I
1998, 250.000 US-$, EFF9
1536 Kryptoprozessoren
88 Milliarden DES-Schlüssel pro Sekunde
b) COPACOBANA
I
I
I
2006, 10.000 US-$, Unis Bochum und Kiel
120 XILINX Spartan3-1000 FPGA
65 Milliarden DES-Schlüssel pro Sekunde
c) distributed.net
I
verteiltes Rechnen; Nutzbarmachung von idle-Time auf
Internet-Hosts
d) es ist davon auszugehen, dass Geheimdiensten weit
teurere Systeme zur Verfügung stehen
9
Electronic Frontier Foundation, eine Nichtregierungsorganisation der Vereinigten Staaten
63 / 109
Regenbogentabellen
Motivation
Brute-Force-Angriff auf ein Passwort:
I
sehr viel Rechenzeit, kaum Speicher
Wörterbuchangriff
I
sehr viel Speicherplatz, kaum Rechenzeit
Idee: kompaktere Datenstruktur als Wörterbuch, dafür
größerer, aber vertretbarer Suchaufwand
(„Time-Memory-Tradeoff“)
Voraussetzungen:
I
Hashfunktion H (bildet Passworte auf Hashes ab)
I
Reduktionsfunktion R, bildet Hashes auf (potentielle)
Passworte ab (keine Inverse von H!)
Beispiel für R für ZK der Länge n Bit:
ZK = (Bit 63. . . 0 des Hashes + Position in Tabelle) mod 2n
64 / 109
Regenbogentabellen
Ermittlung
I
beginnend mit einem Element des Schlüsselraums (potentielles
Passwort) Nacheinanderausführung von H und R
I
es entstehen Ketten von Passworten und Hashes (ca. 10.000
Elemente lang)
I
nur das erste und letzte Passwort jeder Kette wird gespeichert;
diese bilden die Regenbogentabelle
I
es werden so viele Ketten gebildet, bis 99.9% aller möglichen
Passworte erfasst sind
I
Tabelle wird nach den jeweils letzten Passworten sortiert
65 / 109
Regenbogentabellen
armel
xqjkx
wurtl
H
H
H
0xbf1ffd. . .
0x365023. . .
0xadb661. . .
R
R
R
bmgfs
xphkp
dvniw
H
H
H
0x21cd0e. . .
0x432045. . .
0xfdb21b. . .
R
R
R
ybtos
jbprb
jglkw
H
H
H
0xa8a258. . .
0xa31303. . .
0x072195. . .
R
R
R
lfslf
imest
qkmbr
66 / 109
Regenbogentabellen
Knacken eines Hashes (Finden des zugehörigen Passwortes)
1. Hash wird alternierend der Reduktions- und der
Hashfunktion unterworfen, bis er ein Passwort generiert,
das in der zweiten Spalte der Regenbogentabelle
vorkommt.
2. Dann wird die zugehörige Anfangszeichenkette reduziert
und gehasht, bis der Eingangshash wieder erzeugt wurde.
3. Das Resultat der vorgangegangenen Reduktionsfunktion
ist das gesuchte Passwort.
67 / 109
bcrypt
Problem: Zur Authentifizierung genutzte Hashingverfahren
(MD5, Blowfish, SHA) wurden entwickelt, um effizient
berechnet zu werden. → gut für Brute-Force-Angriff!
Idee: spezielles Hashverfahren, das besonders langsam
arbeitet, um Brute-Force-Angriff zu verlangsamen.
Lösung:
I
bcrypt10
I
128 Bit Salz
I
konfigurierbare Iterationsanzahl (→
Berechnungsgeschwindigkeit adaptierbar)
10
Niels Provos und David Mazières. “A Future-Adaptable Password Scheme”. In: Proceedings of the 1999
USENIX Annual Technical Conference, FREENIX Track. 1999, S. 81–91.
68 / 109
Exkurs: “Forgot your Password?”
I
viele (webbasierte) Dienste erfordern Authentifizierung
(Webmail, . . . )
I
im Falle eines verlorenen Passwortes wird eine
‘persönliche’ Frage vereinbart, deren korrekte
Beantwortung das Passwort zurücksetzt oder dem
Eigentümer per Mail zustellt
Beispiele:
I
I
I
I
“What is your mother’s maiden name?”
“What is your dog’s name?”
Diese Informationen sind insbesondere bei Prominenten
bzw. Netizens leicht recherchierbar!
Literatur: Herbert H. Thompson: How I Stole Someone’s
Identity. Scientific American, August, 2008
http://www.sciam.com/article.cfm?id=anatomy-of-a-social-hack
69 / 109
Exkurs: “Forgot your Password?”
Beispiel: Sarah Palin
I
Yahoo-Account von Vizepräsidentschaftskandidatin Sarah
Palin
I
Passwort wurde durch Unbekannte zurückgesetzt
(09/2008)
‘Sicherheits’fragen:
I
I
I
I
I
ZIP code
date of birth
“Where did you meet your husband?” → auf der Webseite
steht, dass sie ihren Mann seit Highschool-Zeiten kennt
und welche Highschool sie besuchte
Recherche dauerte ca. 45 Minuten
Quelle: http://www.itworld.com/security/55185/sarah-palingoes-way-paris-hilton
70 / 109
Rätsel
Welche der folgenden Fragen taugen nicht für das Rücksetzen
eines Passwortes? Können sie die folgenden Fragen für eine
fremde Person (z. B. mich) mit wenig Aufwand recherchieren?
Welche Ansätze für Recherchen gibt es?
1. What is my mother’s maiden name?
2. What was the brand of my first car?
3. What is the name of my best friend?
4. In which city did I grow up?
5. What was the lastname of my kindergarden teacher?
6. What is my favourite movie?
7. What is my dog’s name?
71 / 109
Challenge-Response-Verfahren
oder: „Wer über die Brücke des Todes will gehen, der muß drei mal Rede und Antwort stehen. Dann darf er die andere Seite
sehen.“
= Authentifizierung auf der Basis gemeinsamen Wissens
1. Server stellt eine Aufgabe (Challenge))
2. Nutzer (bzw. ein Stellvertreterprozeß) löst die Aufgabe
(antwortet; Response)
3. Lösung korrekt → Login erlaubt
Beispiel: Kopierschutz in alten Computerspielen.
I
Zu Beginn Frage, etwa: “Was steht im Handbuch auf
S.412, dritte Zeile, 2. Wort?”
I
richtiger Begriff → Spiel startet
I
falscher Begriff → Abbruch
72 / 109
Challenge-Response zur Authentifizierung
Ablauf:
1. Alice schickt Bob (dem Host) ihr Nutzerkennzeichen
2. Bob sendet eine Zufallszahl („Nonce“ - (random) number,
used once) an Alice ≡ Challenge
3. Alice verschlüsselt die Nonce mit dem Hash ihres
Passworts und schickt das Chiffrat an Bob ≡ Response
4. Bob verschlüsselt die Nonce ebenfalls mit Alice’
Passwort-Hash
5. ist das Chiffrat gleich der Antwort von Alice, so wird
Zugang gewährt
73 / 109
Beispiel: Authentifizierung in Windows
I
Authentifizierungsprotokoll NTLM - NT Lan Manager
I
Nachfolger des (unsicheren) LM-Authentifizierungsverfahrens
I
ursprünglich proprietär, daher reverse-engineered
I
mittlerweile durch Microsoft offengelegt
Grobablauf:
1. Client (Nutzer) schickt das NKZ mittels sog. Type-1-Nachricht an
den Server
2. Server (Host) antwortet mit einer Type-2-Nachricht, die u. a. eine
8 Byte lange Nonce enthält
3. Client verschlüsselt die Nonce mit dem Hash seines Passwortes
als Schlüssel, schickt Chiffrat als Type-3-Nachricht an Server
4. Server verschlüsselt ebenfalls Nonce mit Passworthash und
gewährt bei Identität beider Chiffrate Zugang zum System
Literatur: http://davenport.sourceforge.net/ntlm.html
74 / 109
Sicherheit von NTLM
Stellen
6
6
8
8
8
11
Zeichenraum
A-Za-z0-9
A-Za-z0-9, 22 SZ
A-Za-z0-9
A-Za-z0-9, 22 SZ
A-Za-z0-9, alle SZ
A-Za-z
Dauer
1 min
6 min
2 d, 17 h
33 d
82 d
270 a
Tabelle: Maximale Dauer der Ermittlung von NTLM-Passworten
mittels „Distributed Password Recovery“ (ElcomSoft)
22 SZ = typische Sonderzeichen, d.h.
_@#$&+-=%*"~!?.,:;()<>
I genutztes System: AMD Athlon X2 4850e, 2 Nvidia
GeForce 9800 GTX
Quelle: Stefan Arbeiter, Matthias Deeg: Bunte Rechenknechte.
In: c’t 06/2009, S. 205
I
75 / 109
Authentifizierung mit physischen Objekten
I
I
Schlüssel
Chipkarten
I
I
passiv – “Stored Value Cards”, z.B. Telefonkarten
aktiv – “Smart Cards”, ausgerüstet mit 8-Bit-CPU, Scratch
RAM, ROM, EEPROM
Server
PC
1. Challenge an Smart Card
3. Response an Server
Smart
Card
2. Smart Card errechnet Antwort
Abbildung: Nutzung einer Smartcard zur Authentifizierung
76 / 109
Smartcards
I
Smartcards können aktualisiert werden, z.B. bei Bruch des
verwendeten Kryptografie-Verfahrens
I
Problem: Verlust, Diebstahl
I
Power Analysis Attack, um Key zu ermitteln
I
Diebstahl eröffnet neue Angriffsvektoren; Tamper
Resistance nötig
77 / 109
Authentifizierung mittels biometrischer Merkmale
Idee: Erkennung/Authentikation einer Person anhand
individueller physischer Merkmale.
I
Gesichtsmerkmale (z. B. bei direkter
Mensch-Mensch-Authentikation)
I
Fingerabdrücke (wahrscheinlich einzigartig innerhalb der
gesamten Bevölkerung)
I
Geometrie der Hand (Form, Länge, Dicke der Finger)
I
Blutgefäße der Retina (ebenfalls einzigartig)
I
Unterschrift
I
Sprache
Probleme: False-Match, False-Nonmatch
78 / 109
Authentifizierung mit Public-Key-Kryptografie
Alternative: Public-Key-Kryptografie
1. Host sendet Alice einen Zufallsstring Z
2. Alice chiffriert Z mit ihrem privaten Schlüssel und schickt
das Chiffrat mit ihrem Namen an den Host
3. Host ruft Alice’ öffentlichen Schlüssel aus seiner
Datenbank und dechiffriert Nachricht
4. Stimmt Dechiffrat mit ursprünglichen String Z überein, so
erhält Alice Zugang zum System
79 / 109
Protokolle zum Schlüsselaustausch
Überblick
I
Austausch mittels symmetrischer Kryptografie
I
Austausch mittels Public-Key-Kryptografie
I
Beispiel: Diffie-Hellman-Protokoll
80 / 109
Schlüsselaustausch mit symmetrischer Kryptografie
Voraussetzungen: Vertrauenswürdige Instanz (Key Distribution
Center - KDC, aka Trent), sowohl Alice als auch Bob besitzen
Schlüssel zur Kommunikation mit Trent
Protokoll:
I Alice bittet Trent um Generierung eines Sitzungsschlüssels
zur Kommunikation mit Bob
I Trent generiert zufälligen Sitzungsschlüssel, generiert 2
Kopien, verschlüsselt eine mit Alice’ und eine mit Bobs
Schlüssel
I Trent schickt beide (verschlüsselte) Kopien an Alice
I Alice dechiffriert ihre Kopie des Sitzungsschlüssels
I Alice schickt Bob dessen (verschlüsselte) Kopie
I Bob dechiffriert seine Kopie des Sitzungsschlüssels
I Alice und Bob kommunizieren mittels des
Sitzungsschlüssels
81 / 109
Schlüsselaustausch mittels Public-Key-Kryptografie
. . . wie bereits unter „hybride Kryptosysteme“ diskutiert:
1. Alice bezieht Bobs öffentlichen Schlüssel aus dem KDC
2. Alice generiert einen zufälligen Sitzungsschlüssel und
verschlüsselt diesen mit Bobs öffentlichem Schlüssel
3. Alice sendet das Chiffrat an Bob
4. Bob dechiffriert die empfangene Nachricht mit seinem
privaten Schlüssel
5. Beide kommunizieren mit Hilfe des Sitzungsschlüssels
82 / 109
Man-in-the-Middle-Attack
Ablauf
1. Alice sendet Bob ihren öffentlichen Schlüssel
2. Mallory fängt diesen Schlüssel ab und schickt stattdessen
seinen eigenen öffentlichen Schlüssel an Bob
3. Bob sendet seinen öffentlichen Schlüssel an Alice
4. Mallory fängt auch diesen ab und schickt stattdessen
seinen öffentlichen Schlüssel an Alice
5. Sendet Alice eine mit Bobs11 öffentlichem Schlüssel
verschlüsselte Nachricht an Bob, fängt Mallory diese ab
und
I
I
I
I
I
I
11
entschlüsselt sie mit seinem privaten Schlüssel,
liest sie,
chiffriert sie mit Bobs öffentlichem Schlüssel und
schickt sie weiter an Bob.
Analog geht Mallory in der Rückrichtung (Bob → Alice) vor
Weder Alice noch Bob können diesen Angriff entdecken
d. h. , Mallorys
83 / 109
Das Interlock-Protokoll (Rivest/Shamir, 1984)
. . . erschwert oder vereitelt den Man-in-the-Middle-Attack
1. Alice sendet Bob ihren öffentlichen Schlüssel KA .
2. Bob sendet Alice seinen öffentlichen Schlüssel KB .
3. Alice chiffriert ihre Nachricht M1 mit KB und schickt die
Hälfte der verschlüsselten Nachricht an Bob.
4. Bob chiffriert seine Nachricht M2 mit KA und schickt die
Hälfte der verschlüsselten Nachricht an Alice.
5. Alice schickt die zweite Hälfte an Bob.
6. Bob fügt beide Hälften zusammen und dechiffriert. Danach
schickt er Alice seine zweite Hälfte.
7. Alice setzt Bobs zweite Nachricht zusammen und
dechriffriert.
84 / 109
Analyse des Interlock-Protokolls
I
Mallory kann nicht dechiffrieren, weil er nur eine halbe
Nachricht hat
I
er muss aber mit seinem privaten Schlüssel dechiffrieren,
um anschließend mit Bobs öffentlichem Schlüssel zu
chiffrieren
I
er muss eine andere Nachricht erfinden, und die Hälfte
davon an Bob schicken (und zurück an Alice)
Wenn Alice und Bob ihre Nachrichten vorher absprechen12 ,
können sie mit dem Interlock-Protokoll die Authentizität ihrer
jeweiligen öffentlichen Schlüssel prüfen und Mallory entlarven.
12
Dafür ist aber ein sicherer Kanal notwendig.
85 / 109
Schlüsselaustausch mit digitaler Signatur
Idee:
I
Trent signiert die öffentlichen Schlüssel von Bob und Alice
I
Beim Schlüsselerhalt prüfen Alice und Bob Trents Signatur
I
→ Mallory kann nicht mehr in deren jeweilige Rolle
schlüpfen!
86 / 109
Schlüsselaustausch mittels Diffie-Hellman-Protokoll
1. Bob und Alice einigen sich auf eine große Primzahl n und
eine Zahl g.
2. Alice wählt eine (große) zufällige Zahl x (Alice’ geheimer
Schlüssel) und berechnet X = g x mod n (Alice’ öffentlicher
Schlüssel).
3. Alice sendet X an Bob.
4. Bob wählt eine (große) zufällige Zahl y (Bobs geheimer
Schlüssel) und berechnet Y = g y mod n (Bobs öffentlicher
Schlüssel).
5. Bob sendet Y an Alice.
6. Alice berechnet
k = Y x mod n = (g y mod n)x mod n = g xy mod n, den
geheimen Sitzungsschlüssel.
7. Bob berechnet
k = X y mod n = (g x mod n)y mod n = g xy mod n.
87 / 109
Anmerkungen zum Diffie-Hellman-Protokoll
I
I
g muss primitiv modulo n sein, d.h. es muss stets ein a
geben, so dass g a ≡ b mod n ∀ 1 ≤ b < n.
Eve kann X und Y abfangen, es nützt ihr aber nichts, sie
kann g xy mod n nicht aus g x mod n und g y mod n
berechnen.
Beispiel:
Alice
g = 4,
Bob
n = 11
x =3
y =4
X = 43 mod 11 = 9
Y = 44 mod 11 = 3
X =9→B
A←Y =3
Yx
k=
mod n
3
= 3 mod 11 = 5
k = X y mod n
= 94 mod 11 = 5
88 / 109
Authentifizierung und Schlüsselaustausch
Überblick
Ziel: Alice und Bob wollen sich gegenseitig authentifizieren und
sicher miteinander kommunizieren (→ Schlüsselaustausch)
I
Wide-Mouthed-Frog (Breitmaulfrosch)
I
Needham-Schroeder-Protokoll
I
Kerberos
89 / 109
Wide-Mouthed-Frog (1989)
I
Voraussetzung: Alice und Bob benötigen geheimen
Schlüssel zur Kommunikation mit Trent
Ablauf13 :
1. Alice konkateniert einen Zeitstempel TA , Bobs Namen und
einen zufälligen Sitzungsschlüssel KAB und chiffriert alles
mit dem Schlüssel KAT für Trent-Alice. Sie sendet ihren
Namen und das Chiffrat an Trent:
A, {TA , B, KAB }KAT → Trent
2. Trent dechiffriert die Nachricht. Dann konkateniert er einen
weiteren Zeitstempel TT , Alice’ Namen und den
Sitzungsschlüssel KAB . Alles wird mit dem Schlüssel KBT
für Trent-Bob chiffriert und an Bob geschickt:
{TT , A, KAB }KBT → Bob
13
Michael Burrows, Martin Abadi und Roger Needham. A Logic of Authentication. Techn. Ber. SRC-RR-39. Palo
Alto, CA: Digital Equipment Corporation Systems Research Center, Feb. 1989.
90 / 109
Wide-Mouthed-Frog-Protokoll
Grafische Veranschaulichung
Trent
1.
A, {TA , B, KAB }KAT
Alice
2.
{TT , A, KAB }KBT
Bob
91 / 109
Wide-Mouthed-Frog
Anmerkungen
I
keine direkte Authentifizierung von A und B
I
sehr simpel; nur zwei Nachrichten sind notwendig
I
Alice muss in der Lage sein, einen sehr guten
Sitzungsschlüssel zu generieren (Zufallszahlen sind
schwierig zu generieren!) – Bob vertraut Alice
dahingehend
I
Zeitstempel verhindern (bzw. erschweren) Replay-Attacke
I
erfordert eng synchronisierte Uhren
I
zustandbehaftetes Protokoll: Was tut Trent, wenn Bob nicht
antwortet?
92 / 109
Needham-Schroeder-Protokoll (1978)
Voraussetzungen:
I symmetrisch, Trent benötigt
I Alice und Bob verfügen über geheime Schlüssel KAT
bzw. KBT , um mit Trent zu kommunizieren.
Ablauf14 :
1. Alice generiert eine Zufallszahl NA und schickt diese mit
ihrem und Bobs Namen an Trent:
(A, B, NA ) → Trent
2. Trent generiert einen zufälligen Sitzungsschlüssel KAB für
Alice und Bob.
3. Trent chiffriert mit KBT eine Nachricht (für Bob), die KAB
und Alice’ Namen enthält.
KBT (KAB , A)
14
Roger M. Needham und Michael D. Schroeder. “Using Encryption for Authentication in Large Networks of
Computers”. In: Communications of the ACM 21.12 (Dez. 1978), S. 993–999.
93 / 109
Needham-Schroeder-Protokoll
Teil 2
4. Trent chiffriert NA , Bobs Namen, KAB und das eben
generierte Chiffrat mit KAT und schickt dieses an Alice.
KAT (NA , B, KAB , KBT (KAB , A)) → Alice
5. Alice entschlüsselt die Nachricht, extrahiert KAB und prüft,
ob NA der in Schritt 1 generierten Zufallszahl entspricht.
6. Falls ja, so schickt sie die für Bob bestimmte Subnachricht
an diesen
KBT (KAB , A) → Bob
7. Bob dechiffriert die Nachricht und extrahiert KAB . Dann
generiert er eine zweite Zufallszahl NB , chiffriert diese mit
KAB und schickt die Nachricht an Alice.
KAB (NB ) → Alice
94 / 109
Needham-Schroeder-Protokoll
Teil 3
8. Alice dechriffriert die Nachricht mittels KAB . Sie generiert
NB − 1, chiffriert diese Zahl mit KAB und sendet das
Chiffrat an Bob:
KAB (NB − 1) → Bob
9. Bob dechiffriert diese Nachricht und prüft, dass NB − 1
gesendet wurde.
95 / 109
Needham-Schroeder-Protokoll
Grafische Veranschaulichung
Trent
1. A, B, NA
2.
{NA , B, KAB , {KAB , A}KBT }KAT
3. {K , A}
AB
KBT
4.
Alice
5.
{NB }KAB
Bob
{NB − 1}KAB
96 / 109
Needham-Schroeder-Protokoll
Diskussion
I
Zufallszahlen (Nonces) NA , NB dienen der Verhinderung
von Replay-Angriffen: Mallory zeichnet Nachrichten auf
und versucht damit (später) die Integrität des
Datenverkehrs zu unterwandern
I
Hier: Mallory könnte durch Aufzeichnung und Replay der
Nachrichten 2 und 3 die Kommunikationspartner zwingen,
einen alten (kompromittierten) Schlüssel KAB
weiterzuverwenden
Resultat des Algorithmus
I
Generierung eines geeigneten Schlüssels durch Trent
I
Verteilung des Schlüssels zwischen Alice und Bob
I
Alice authentifiziert sich gegenüber Bob durch Nachricht 5
(Challenge-Response)
97 / 109
Needham-Schroeder-Protokoll
Schwäche: kompromittierter Schlüssel erlaubt Replay-Attacke
I
Bob hat keine Möglichkeit zu testen, ob der Schlüssel KAB
frisch generiert wurde
I
wenn Mallory in den Besitz irgendeines alten Schlüssels
0 kommt, kann er Nachricht 3 aufzeichnen und später
KAB
wieder Bob vorspielen (Replay-Attacke)
I
Bob generiert die Nonce NB , verschlüsselt sie mit dem
0 und schickt sie an Alice
empfangenen KAB
I
0 ,
Mallory fängt diese Nachricht ab, entschlüsselt sie mit KAB
0
berechnet NB − 1 und schickt das Ergebnis mit KAB
verschlüsselt wieder an Bob
I
fortan ist Mallory gegenüber Bob als Alice
authentifiziert!
→ Needham-Schroeder-Protokoll als fehlerhaft angesehen →
Zeitstempel/Gültigkeitsintervall für Schlüssel nötig → Kerberos
98 / 109
Kerberos
Überblick
I
Protokoll zur Authentifizierung in TCP/IP-basierten Netzen
I
Ziel: Einrichtung sicherer Kommunikationskanäle zwischen
einem Client und beliebigen Servern in einem verteilten
System
I
Weiterentwicklung des Needham-Schroeder-Protokolls
I
basierend auf symmetrischer Verschlüsselung
I
erfordert vertrauenswürdige Instanz (Trent)
I
jeder Teilnehmer besitzt geheimen Schlüssel zur
Kommunikation mit Trent
I
Identitätsbeweis = Kenntnis des Schlüssels
I
Versionen 4 und 5 (RFC 4120)
99 / 109
Wer ist Kerberos (auch „Cerberus“) eigentlich?
I
ein-, drei- oder fünfzigköpfiger Hund, der den Hades, die
Unterwelt in der griechischen Mythologie, bewacht
„Auch den Kerberos sah ich, mit bissigen Zähnen bewaffnet
Böse rollt er die Augen, den Schlund des Hades bewachend.
Wagt es einer der Toten an ihm vorbei sich zu schleichen,
So schlägt er die Zähne tief und schmerzhaft ins Fleisch der Entfliehenden
Und schleppt sie zurück unter Qualen,
Der böse, der bissige Wächter.“
(Odyssee)
Abbildung: Kerberos, gezeichnet von Pearson Scott Foresman
100 / 109
Von Needham-Schroeder zu Kerberos
Basisprotokoll
Idee: Aufnahme eines Zeitstempels, um Replay-Attacken
effektiver zu bekämpfen.
Ablauf15 :
1. Alice sendet an Trent eine Nachricht mit ihrer und Bobs
Identität:
(A, B) → Trent
2. Trent generiert einen Sitzungsschlüssel KAB .
3. Trent generiert eine Nachricht mit Zeitstempel TT ,
Geltungsdauer L, KAB und Alice’ Identität und chiffriert
diese mit Bobs Schlüssel KBT .
KBT (TT , L, KAB , A)
15
Jennifer G. Steiner, Clifford Neuman und Jeffrey I. Schiller. “Kerberos: An Authentication Service for Open
Network Systems”. In: Proceedings of the USENIX Winter Conference. Dallas, TX, Feb. 1988, S. 191–202.
101 / 109
Kerberos
Basisprotokoll, contd.
4. Trent generiert eine analoge Nachricht, jedoch mit Bobs
Identität, die er mit Alice’ Schlüssel KAT chiffriert.
KAT (TT , L, KAB , B)
5. Trent schickt beide Nachrichten an Alice.
KBT (TT , L, KAB , A), KAT (TT , L, KAB , B) → Alice
6. Alice generiert eine Nachricht mit ihrer Identität und einem
Zeitstempel und verschlüsselt diese mit KAB .
KAB (TA , A)
7. Alice schickt diese und Trents Nachricht an Bob.
KAB (TA , A), KBT (TT , L, KAB , A) → Bob
102 / 109
Kerberos
Basisprotokoll, contd.
8. Bob generiert eine Nachricht mit dem von Alice
empfangenen Zeitstempel TA + 1 , chiffriert diese mit KAB
und schickt sie an Alice.
KAB (TA + 1) → Alice
I
jeder Empfänger prüft die erhaltenen Zeitstempel auf
Aktualität → Replay-Attacken wirkungslos
I
viele Varianten existieren; ggf. werden Nonces
hinzugenommen
I
Voraussetzung: Alice, Bob und Trent haben sichere und
synchronisierte Uhren!
103 / 109
Basisprotokoll bei Kerberos
Grafische Veranschaulichung
Trent
1.
A, B
2.
{TT , L, KAB , B}KAT , {TT , L, KAB , A}KBT
3.
{TT , L, KAB , A}KBT , {TA , A}KAB
Alice
4.
Bob
{TA + 1}KAB
104 / 109
Tickets und Authentikatoren
Kerberos unterscheidet zwei Formen der Legitimation:
Ticket
I
durch Kerberos erzeugt
I
zur sicheren Übertragung der Identität eines
dienstanfordernden Clients c an einen Server s
I
mit geheimem Schlüssel Ks des Servers verschlüsselt
I
besitzt Geltungsdauer, innerhalb derer der Client Anfragen
an den Server stellen kann
Authentikator
I
zusätzliche Legitimation
I
durch Client erzeugt
I
wird dem Server gemeinsam mit Ticket präsentiert
105 / 109
Struktur eines Tickets
Tc,s = s, {c, a, v , Kc,s } Ks
mit
Symbol
Bedeutung
s
Server
c
Client
a
IP-Adresse des Clients
v
Geltungsdauer des Tickets
Kx,y
Kx
{m}Kx
Sitzungsschlüssel für x und y
geheimer Schlüssel von x
Nachricht m, mit Kx verschlüsselt
106 / 109
Struktur eines Authentikators
Ac,s = {c, t, Schlüssel} Kc,s
mit
Symbol
Bedeutung
c
Client
t
Zeitstempel
Kx,y
Schlüssel
Sitzungsschlüssel für x und y
weiterer (optionaler )Sitzungsschlüssel
107 / 109
Kerberos
Überblick Authentifizierungsschritte
Authentication Server
Ticket Granting Server
Kerberos
3: Anforderung
Serverticket
TGS
2: TGT
4: Serverticket
1: Anforderung TGT
Client
Server
5: Dienstanforderung
108 / 109
Was haben wir gelernt?
1. Kryptografische Hashes
2. Signaturen
3. Schlüsselaustauschprotokolle
4. Authentifizierung
5. Schlüsselaustausch und Authentifizierung
6. einige Formen von Angriffen
I
I
I
I
I
Brute Force
Replay-Attacke
Man-in-the-Middle-Attack
Social Engineering
Wörterbuchangriff
7. Authentifizierung und Schlüsselaustausch
I
I
I
Wide-Mouthed-Frog
Needham-Schroeder-Protokoll
Kerberos
109 / 109

Documentos relacionados