IT-Sicherheitsmanagement Teil 11: Symmetrische

Transcription

IT-Sicherheitsmanagement Teil 11: Symmetrische
IT-Sicherheitsmanagement
Teil 11: Symmetrische Verschlüsselung
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
16.06.16 1
Literatur
[11-1]
Schäfer, Günter: Netzsicherheit. dpunkt, 2003
[11-2]
Stallings, William: Sicherheit im Internet. Addison-Wesley, 2001
[11-3]
Beutelspacher, A.; Schwenk, J.; Wolfenstetter, K.-D.: Moderne
Verfahren der Kryptographie. 4. Auflage, Vieweg 2001
[11-4]
Schmeh, Klaus: Kryptografie. dpunkt, 4. Auflage, 2009
[11-5]
Schneier, Bruce: Angewandte Kryptographie. Addison-Wesley
http://www.schneier.com/
[11-6]
Freiermuth, Karin; Hromkovic, Juraj; Keller, Lucia; Steffen, Björn:
Einführung in die Kryptologie. Vieweg+Teubner, 2010
[11-7]
Buchmann, Johannes: Einführung in die Kryptographie. 5. Auflage,
Springer, 2010
[11-8]
Burnett, Steve; Paine, Stephen: Kryptographie. RSA Security‘s Official
Guide. RSA Press, mitp, 2001
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
2
Übersicht
•
•
•
•
•
•
Gedanken zur Brute Force-Methode
Perfekte Sicherheit
One-Time-Pad
Meet in the Middle
Betriebsarten von Blockchiffren
Stromchiffren
– RC4
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
3
Brute Force Angriff – ein Gedankenspiel I
Schlüssellänge
[bit]
Anzahl möglicher
Schlüssel
Zeitbedarf
106 Entschl./s
32
4,3 * 1009
35,8 Min.
56
7,2 * 1016
1.142 Jahre
128
3,4 * 1038
5,4*1024 Jahre
Hinweise
•
Eine Annahme, dass 106 Entschlüsselungen pro Sekunde für das
DES-Verfahren möglich sind, entspricht der Technologie Mitte
der 90er Jahre.
•
Durch Spezialhardware (Kosten ca. 8.000 EUR) soll der Schlüsselraum von 256
in ca. 6 Tagen durchlaufen werden können.
Bei 1 Woche und 255 Versuchen entspricht dies ca. 60 Milliarden/s
bzw. 60.000/10-6s, also 60/ns – glaubhaft?
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
4
Brute Force Angriff – ein Gedankenspiel II
Nun realisieren wir einen Ciphertext-Only-Angriff, also einem Angriff,
bei dem nur der verschlüsselte Text bekannt ist.
func crack(ChipherText) {
for key:= 0..2n-1 do
PlainText:= encrypt(ChipherText,key)
if test(PlainText) then
return key
fi
od
throw Exception("I give up")
}
Und wie sieht die test()-Funktion aus?
Woher "weiß" diese Funktion, dass der richtige Wert gefunden wurde?
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
5
Brute Force Angriff – ein Gedankenspiel III
• Nehmen wir an, dass der richtige Plaintext eine Word-Datei ist,
dann würde test() prüfen, ob vermutete Plaintext überhaupt eine
Word-Datei sein kann (Kopf, Struktur etc.).
Kann dieser Test 106 mal pro Sekunde erfolgen?
• Aber das reicht noch nicht, denn auch wenn formal eine WordDatei vorliegt, muss diese nicht die richtige sein, denn es kann dort
so etwas drin stehen: 3g&7r_90hdIk4$ etc.
• Noch schlimmer ist es, wenn es reiner ASCII-Text ist; dann ist der
Test schnell zu implementieren, aber das Problem mit
3g&7r_90hdIk4$ besteht trotzdem.
• Noch schlimmer: der Ciphertext ist ein verschlüsseltes Passwort.
Dann ist jeder ASCII-Text ein Kandidat für den richtigen Plaintext.
Oder: was nutzt eine geknackte Passwort-Datei mit ca. 250.000
möglichen korrekten Zeichenketten?
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
6
Brute Force Angriff – ein Gedankenspiel IV
Nun realisieren wir einen Known-Plaintext-Angriff, also einem Angriff,
bei dem der Plaintext und der ChiperText bekannt sind:
func crack(ChipherText,Plaintext) {
for key:= 0..2n-1 do
Plain:= encrypt(ChipherText,key)
if test(PlainText,Plain) then
return key
fi
od
throw Exception("I give up")
}
Und wie sieht die test()-Funktion aus?
Trivial und sehr schnell.
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
Bei diesem Angriff
sollten wir uns wegen
schneller Hardware
Sorgen machen...
7
Was lernen wir daraus?
• Ein Angreifer versucht möglichst aus einem Ciphertext-Only-Angriff
einen Known-Plaintext-Angriff zu machen – und das muss
verhindert werden.
• Liefern Sie daher dem Angreifer möglichst nie ein Paar
(Chiphertext, Plaintext) oder gar eine Menge dieser Paare.
• Leider liefern der Kontext und weitere öffentliche Informationen
genügend Hinweise:
– Struktur/Aufbau von Dateien oder Dateisysteme
– (Menschliche) Sprache, Floskeln
– Protokollaufbau (Bitfelder)
– Bilder (Web)
• Dann kann der Chiphertext selbst eine Quelle von Hinweisen sein:
– Größere gleiche Blöcke
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
8
Perfekte Sicherheit (Shannon)
• ℙ Menge der möglichen Klartexte (plain text)
• ℂ Menge der verschlüsselten Texte (cipher text)
•
Menge der möglichen Schlüssel
Ein Verschlüsselungsverfahren heißt perfekt sicher, wenn es nur
einen Schlüssel zur Entschlüsselung gibt und wenn die
verschlüsselten Texte unabhängig von den Klartexten sind,
also dass
P(p|c) = P(p) mit p ε ℙ und c ε ℂ für alle k ε
ist
wobei P(p|c) die bedingte Wahrscheinlichkeit ist.
Das bedeutet aber auch, dass
|ℙ|<=|ℂ|<=| | ist
wobei | | die Anzahl der Elemente von
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
bedeutet.
9
One-Time-Pad (Vernam-Chiffre) I
• Dieses Verfahren ist eines der wenigen, die perfekt sicher sind.
• Es wird eine Tabelle (Pad) mit wirklich zufälligen Zeichen der
Länge L erstellt.
• Der Klartext hat dieselbe Länge L.
• Verschlüsselung:
Jedes Zeichen des Klartextes wird mit dem korrespondierenden
Zeichen der Tabelle verknüpft, z. B. per XOR.
• Entschlüsselung:
Jedes Zeichen des Chiffretextes wird mit dem korrespondierenden
Zeichen der Tabelle mit einer inversen Funktion verknüpft, z. B.
auch per XOR.
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
10
One-Time-Pad (Vernam-Chiffre) II
• Vorteile
– Sehr sicher, wenn wirklich zufällige Kodierungen benutzt werden
Im 2.Weltkrieg hatte die Sowjetische Armee Wiederholungen benutzt,
so dass einige Texte entschlüsselt werden konnten.
• Nachteile
– Unhandlich
– Beide Seiten müssen dieselbe unhandliche Tabelle benutzen.
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
11
Begriffe
• Blockchiffre = Unabhängige Verschlüsselung von Blöcken gleicher
Länge, meist 64 bit
– Jeder Block wird für sich getrennt von anderen behandelt.
– Die kryptographischen Nachteile werden durch Blockmodi beseitigt.
• Stromchiffre = Kontinuierliche Verschlüsselung unterschiedlich
langer Blöcke, von 1 bit bis viele Bytes auch variierend
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
12
Blockchiffren – Digital Encryption Standard (DES)
• Blockchiffre mit 56 bit effektiver Schlüssellänge, Schlüssel besitzt
noch 8 Bits Prüfsumme
• Block ist 64 bit lang
• Entwickelt von IBM Anfang der 70er Jahre
• Das DES-Verfahren ist (bis auf die Schlüssellänge) sehr sicher: in
35 Jahren ist es nicht gelungen das Verfahren zu brechen, aber:
– Bis 1997 keine erfolgreiche Known-Plaintext-Attacke, dann aber:
DES-Challenge (Preis von RSA Data Security)
14.000 Rechner rechneten ca. 4 Monate
– 1998: Reduktion auf 39 Tage, teilweise 56 h
– 1999: Unterschreitung der 24 h-Grenze
100.000 Rechner rechneten 22 h
– Ab ca. 2000: Bau von speziellen Maschinen
• DES gehört zu den am besten untersuchten Verfahren.
• Ursprünglich wollte IBM einen 128 bit-Schlüssel benutzen und
wurde von der US-Regierung daran gehindert.
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
13
Schlüssellängen - Ein weiteres Gedankenexperiment
Schlüssellänge
Aufwand
56 bit
1s
64 bit
4 Minuten
80 bit
194 Tage
112 bit
109 Jahre
128 bit
1014 Jahre
192 bit
1033 Jahre
256 bit
1052 Jahre
Erläuterung:
Wenn das Durchprobieren aller 56 bit-Schlüssel 1 s dauern würde,
dann würde bei einem 64 bit-Schlüssel das Probieren schon 4 Minuten
dauern....
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
14
Doppelte Verschlüsselung
•
•
•
Es entsteht eine doppelte Verschlüsselung und damit eine theoretische
Verlängerung des Schlüssels auf 2*56 also 112 bit. Dies wäre
vollkommen ausreichend.
Dabei wird voraus gesetzt, dass eine doppelte Verschlüsselung nicht
durch eine einzige mit einem anderen Schlüssel ersetzt werden kann.
Diese Bedingung erfüllt DES, aber z.B. nicht XOR.
Es gibt aber einen Angriff: Meet in the Middle.
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
15
Meet in the Middle I
(A)
(B)
(M)
Plaintext
ist bekannt
•
•
•
•
Chiffretext
ist bekannt
Es ist ein Paar(Plaintext, Chiffretext) bekannt.
(A): vom Plaintext ausgehend werden alle Schlüssel (256) angewendet
und in in einer Tabelle abgespeichert. Das ist die Menge aller Werte (M).
Dann wird vom Chiffretext ausgehend alle Schlüssel (256) schrittweise
entschlüsselt. Bei jedem Schritt wird geprüft, ob ein Wert aus der Tabelle
der (M) gefunden wurde. Falls ja, dann ist das Paar (K1, K2) ein Kandidat
der gesuchten Schlüssel.
Leider/zum Glück ist das nicht eindeutig, denn es mehrere Kandidaten
gefunden werden. Dann wäre ein weiteres Paar(Plaintext, Chiffretext)
notwendig, um die falschen Kandidaten auszusortieren.
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
16
Meet in the Middle II - Aufwand
•
•
•
•
•
Ein volles Durchprobieren für K1: 256 DES
Abspeichern und Sortieren in der Datenbank
Ein volles Durchprobieren für K2: 256 DES
Bei jedem Schritt: Suchen in der Datenbank
Ergebnis: Menge von Kandidaten
• Anhand eines weiteren Paares (Plaintext, Chiffretext) wird jeder
Kandidat jeweils 1x geprüft und gegebenenfalls aussortiert.
• Sind noch Kandidaten übrig, müssen diese mit einem weiteren
Paar (Plaintext, Chiffretext) ausgeschlossen werden.
d.h. bestenfalls eine effektive Schlüssellänge von 258, eher 257.
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
17
Dreifache Verschlüsselung I
(A)
(B)
(M)
•
•
•
•
Nun hätten wir 3x56 bit, also einen 168 bit-Schlüssel.
Aber auch hier funktioniert der Meet in the Middle-Angriff, so dass für K1
je 256 und für K2 auch 256 Schlüssel zu probieren und in der Tabelle
abzuspeichern sind: 2112.
Dazu kommt noch der rechte Zweig mit 256, was aber in Anbetracht von
2112 zu vernachlässigen ist.
Die effektive Schlüssellänge ist 112 bit, was (heute) ausreichend ist
(siehe Gedankenexperiment von oben)
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
18
Dreifache Verschlüsselung II - Triple-DES (3DES)
•
Die 2. Verschlüsselung ist eine "Entschlüsselung"
– Optional steht dann noch eine 1DES zur Verfügung, wenn K1 = K2 = k3 ist.
– Sonst keine Vor- oder Nachteile, außer Performanz
•
e: Verschlüsselung, d: Entschlüsselung, m: Klartext, c: Chiffretext: c=
e(K1,d(k2,e(k3,m)))
•
Falls K1 = K3, dann ist die Schlüssellänge 112 bit.
In der Praxis wird so gearbeitet.
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
19
Weitere Verfahren neben AES und DES
• Blowfish
– https://de.wikipedia.org/wiki/Blowfish
• Twofish
– Teilnehmer am AES-Wettbewerb
– https://de.wikipedia.org/wiki/Twofish
• CAST-256
– Wird von PGP benutzt
– RFC 2144, 128 bit-Schlüssel
– Teilnehmer am AES-Wettbewerb
• MISTY
– Mitsubishi
– 64 bit-Blöcke, variable Runden mit 128 bit-Schlüssel
– Parallelisierbarkeit
• Und noch: Safer, GOST, LOKI, Khufu, Khafre....
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
20
Betriebsarten von Blockchiffren
Der Zweck der Betriebsarten/Modi liegt darin, verschiedene Blöcke so
zu verknüpfen, dass bei Unkenntnis des Schlüssels das Entschlüsseln
erschwert wird.
Voraussetzung dazu ist das Auffüllen des letzten Blocks auf das
Mehrfache der Blocklänge (Padding).
Diese Zusatzbits müssen beim Entschlüsseln wieder entfernt werden.
Es werden folgende Betriebsarten vorgestellt:
•
•
•
•
Electronic Codebook Mode (ECB-Mode)
Cipher Block Chaining Mode (CBC-Mode)
Output Feedback Mode (OFB-Mode)
Cipher Feedback Mode (CFB-Mode)
Siehe auch:
http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
21
Electronic Codebook Mode (ECB-Mode) I
•
Plain1
Plain2
Plain3
Plainn
encryptk
encryptk
encryptk
encryptk
Cypher1
Cypher2
Cypher3
Cyphern
Verschlüsselung
Vorteile und Probleme
– Parallelität ist sehr einfach zu realisieren.
– Für kurze Nachrichten ist ECB vollkommen geeignet
Ansonsten: nicht benutzen!
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
22
Electronic Codebook Mode (ECB-Mode) II
•
Cypher1
Cypher2
Cypher3
Cyphern
decryptk
decryptk
decryptk
decryptk
Plain1
Plain2
Plain3
Plainn
Entschlüsselung
Probleme
– Angriff durch Häufigkeitsanalyse möglich
– Gleiche Blöcke werden gleich verschlüsselt.
Siehe auch:
https://de.wikipedia.org/wiki/Electronic_Code_Book_Mode
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
23
Cipher Block Chaining Mode (CBC-Mode) I
Initialisierungsvektor
•
•
•
Plain1
Plain2
Plain3
Plainn
+
+
+
+
encryptk
encryptk
encryptk
encryptk
Cypher1
Cypher2
Cypher3
Cyphern
Verschlüsselung
Der Initialisierungsvektor ist ein nicht geheimer Block, mit dem als
erstes per XOR verschlüsselt wird.
Nun gibt es keine gleichen Chiffreblocks bei denselben Klartextblöcken
mehr.
Mit einer XOR-Funktion wird "addiert".
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
24
Cipher Block Chaining Mode (CBC-Mode) II
Initialisierungsvektor
Cypher1
Cypher2
Cypher3
Cyphern
decryptk
decryptk
decryptk
decryptk
+
+
+
+
Plain3
Plainn
Plain1
•
Plain2
Entschlüsselung
Dies ist die zu empfehlende Betriebsart
Siehe auch: https://de.wikipedia.org/wiki/Cipher_Block_Chaining_Mode
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
25
Output Feedback Mode (OFB-Mode) I
Initialisierungsvektor
Plain1
encryptk
encryptk
•
•
Plain2
Plainn
Plain3
Verschlüsselung
encryptk
encryptk
+
+
+
+
Cypher1
Cypher2
Cypher3
Cyphern
Der Initialvektor wird in einer Fortschaltfunktion wiederholt mit dem
Schlüssel verschlüsselt.
Mit jeweils dem neuen verschlüsselten Wert werden per XOR die
Klartextblöcke verschlüsselt.
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
26
Output Feedback Mode (OFB-Mode) II
Initialisierungsvektor
Cypher1
encryptk
encryptk
•
•
•
Cypher2
Cypher3
Cyphern
Entschlüsselung
encryptk
encryptk
+
+
+
+
Plain1
Plain2
Plain3
Plainn
Die Verschlüsselungsketten können im Voraus/parallel berechnet
werden, so dass hohe Parallelität erreicht werden kann.
Mit einer XOR-Funktion wird "addiert".
Diese Art der mehrfach verschlüsselten Werte wird uns bei dem
Pseudozufallsgeneratoren wieder begegnen.
Siehe auch: https://de.wikipedia.org/wiki/Output_Feedback_Mode
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
27
Cipher Feedback Mode (CFB-Mode) I
Initialisierungsvektor
encryptk
Plain1
•
Plainn
Verschlüsselung
+
encryptk
Cypher1
•
Plain3
Plain2
+
encryptk
Cypher2
+
Cypher3
encryptk
+
Cyphern
Wie beim OFB-Mode wird der Initialvektor mehrfach hintereinander
verschlüsselt, wobei bei jedem Schritt nicht der Schlüssel sondern das
Ergebnis der XOR-Verschlüsselung des Klartextblocks benutzt wird.
Wie bei OFB wird mit dem neuen verschlüsselten Vektor der nächste
Klartextblock per XOR verschlüsselt.
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
28
Cipher Feedback Mode (CFB-Mode) II
Initialisierungsvektor
encryptk
Cypher1
Cypher3
Cyphern
Entschlüsselung
+
encryptk
Plain1
•
Cypher2
+
Plain2
encryptk
+
Plain3
encryptk
+
Plainn
Siehe auch: http://de.wikipedia.org/wiki/Cipher_Feedback_Mode
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
29
Bemerkungen
• Die beiden letzten Modi (OFB und CFB) erlauben auch das
Verarbeiten von Blöcken, die kleiner als die intendierte Blocklänge
von (meist) 64 bit sind.
• ECB wird selten benutzt, öfter CFB, insbesondere im Internet.
• Stromchiffren (siehe unten) arbeiten in der Regel im OFB-Modus.
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
30
Stromchiffren
• Blockchiffren haben den Nachteil, dass der Klartext in Einheiten
der Blockgröße vorliegen sollte.
• Für interaktive Anwendungen heißt dies, dass gewartet werden
muss bis ein Block vorhanden ist oder dass der Block mit
Füllinformation aufgefüllt werden muss.
• Stromchiffren = Verschlüsselungsalgorithmen, die keine Einheiten
mit festgelegter Größe (Blöcke) benötigen und bei denen die
Einheiten ähnlich den Blockmodi verknüpft sind.
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
31
Verfahren von Ron Rivest
• RC2 (Rivest Cipher), RFC 2268
– Einsatz in S/MIME
– Relativ wenig untersucht
• RC4
– Entwickelt 1987
– Geheim gehalten bis 1994
• RC5
• RC6
– Schnell und einfach
– Teilnehmer am AES-Wettbewerb
Siehe: http://de.wikipedia.org/wiki/Ronald_L._Rivest
http://en.wikipedia.org/wiki/RC2
http://en.wikipedia.org/wiki/RC4_(cipher)
http://en.wikipedia.org/wiki/RC5
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
32
RC 4
• Rivest Cipher No. 4, 1987,
http://en.wikipedia.org/wiki/RC4_(cipher)
• Erst geheim, ab 1994 veröffentlicht.
• Dieses Verfahren wird in SSL/SSH, WEP und WPA (WLAN)
verwendet. Inzwischen wird von der Benutzung abgeraten.
• RC4 ist in Software ca. 10x schneller als DES.
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
33
RC 4 - Vorbereitung
• Schlüssellänge: 1..2048 bit, praktisch: 128 oder 256 bit
• In ein Feld S mit 256 Zellen wird der jeweiligen Index zugewiesen.
• Das Feld k wird mit Schlüssel der Länge L des Schlüssels gefüllt,
nötigenfalls mehrfach hintereinander.
• Dann werden 256 mal die Elemente in S anhand von k vertauscht:
S0
S1
S2
S3
S4
S5
....
S 255
k0
k1
k2
k3
k4
k5
....
k 255
:=Index
Byteweise mit Schlüssel füllen
Falls Schlüssel kürzer als 2048 bit: Mehrfach wiederholen
for j:=0, i:=0 to 255 do
j:=(j + S[i] + k[i mod L]) mod 256
swap(S[i],S[j])
od
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
34
RC 4 - Durchführung
• Das Feld S von 256 Elementen, in denen die Werte von 0 bis 255
entsprechend dem Schlüssel gesetzt wurden, wird nach dem
Verfahren unten bearbeitet.
• Das Ergebnis eines Durchlaufs Key wird mit XOR mit den Klartext
verschlüsselt. Für das nächste Byte wird ein erneuter Durchlauf
durchgeführt.
i:= (i+1) mod 256;
j:= (j+s[i]) mod 256;
swab(S[i],S[j])
key:= (S[i]+S[j]) mod 256;
Cipher[..]:= Plain[..] xor key
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
35
Weitere Stromchiffren (Beispiele)
• A5
–
–
–
–
Einsatz in Mobil Telefonen: D1, D2 E-Plus und E2
Gehört zum GSM-Standard
War zunächst geheim
Ist in den beiden einfachen Versionen recht unsicher, die dritte ist
besser (A5/3)
– Siehe: http://de.wikipedia.org/wiki/A5_(Algorithmus)
• SEAL
– Sicherheit und Schnelligkeit ähnlich RC4
• Eigenes Verfahren in winzip
– Sehr unsicher
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
36
Nach dieser Anstrengung etwas Entspannung....
ISM – SS 2016 – 11/Symmetrische Verschlüsselung
37