Angewandte Kryptographie Rüdiger Kügler | Security Expert
[email protected]
14.02.2017
Angewandte Kryptographie
1
Legendäre Fehler Verschlüsseltes Geschlecht Krankenakte mit AES-CTR Bild mit AES-ECB 14.02.2017
Angewandte Kryptographie
2
Verschlüsseltes Geschlechtsmerkmal
Implementierung Datenfeld mit „0“ aufgefüllt Verschlüsselt mit AES ohne IV
Fehler Entropie der Daten ist zu gering IV und Padding mit „0“
Hack Erraten der Feldes
14.02.2017
Angewandte Kryptographie
3
Datenbank Dump (Auszug) ID
Name
Geschlecht
442225
782B9CAB890DB937C3A48DBD39F426A4
E37CD363DD7C87A09AFF0E3E60E09C82
33273
4A453644D133566ADC04B7A478A5A5AD
E37CD363DD7C87A09AFF0E3E60E09C82
483916
77CF3A86923DEB80434F16646DE7DB7F
C6A13B37878F5B826F4F8162A1C8D879
137333
F7A846F8F336B511D2B01444BEFBA18B
E37CD363DD7C87A09AFF0E3E60E09C82
147607
851DD615E24D586E0F232DD2FFC573A9
C6A13B37878F5B826F4F8162A1C8D879
303044
19B0930C53F45AC14360E2F3A3B04EF7
C6A13B37878F5B826F4F8162A1C8D879
916345
5BEBF00AF658C1256C0821553C35FAC3
E37CD363DD7C87A09AFF0E3E60E09C82
777169
19B0930C53F45AC14360E2F3A3B04EF7
C6A13B37878F5B826F4F8162A1C8D879
154800
19B0930C53F45AC14360E2F3A3B04EF7
C6A13B37878F5B826F4F8162A1C8D879
14.02.2017
Angewandte Kryptographie
4
Verschlüsseltes Geschlechtsmerkmal
Implementierung Datenfeld mit „0“ aufgefüllt Verschlüsselt mit AES ohne IV
Fehler Entropie der Daten ist zu gering
Sichere Lösung Verschlüsselte Daten sind größer als unverschlüsselte Daten:
Zufälliger Initialization Vector oder
Auffüllen mit zufälligen Daten
IV und Padding mit „0“
Hack Erraten der Feldes
14.02.2017
Angewandte Kryptographie
5
Verschlüsselte Krankenakte
Implementierung
EncRecord
Verschlüsselung von xml/docx mit AES-CTR
Fehler Implementierungsfehler: Nonce = „0“
MyEncRecord
MyPlainRecord
Hack Stehlen der verschlüsselten Datenbank Eigene Krankenakte besorgen (unverschlüsselt) Record = MyPlainRecord XOR MyEncRecord XOR EncRecord
14.02.2017
Angewandte Kryptographie
Record
6
Verschlüsseltes Bild
Electronic Codebook
Cipher-Block Chaining
ECB erhält die Struktur der Daten. 14.02.2017
Angewandte Kryptographie
7
Kryptographie Grundlagen Symmetrische Verschlüsselung Hash Funktionen Asymmetrische Verschlüsselung 14.02.2017
Angewandte Kryptographie
8
Symmetrische Verschlüsselung
Encrypt
Encrypted Data
Shared Key
Decrypt
Encrypted Data
14.02.2017
Shared Key
Empfänger
Sender
Data
Data
Angewandte Kryptographie
9
Asymmetrische Verschlüsselung
Encrypt
Encrypted Data
Public Key
Decrypt
Encrypted Data
14.02.2017
Private Key
Empfänger
Sender
Data
Data
Angewandte Kryptographie
10
Schlüssel(-Paare) in Abhängigkeit der Teilnehmer
14.02.2017
Anzahl
Symmetrisch
Asymmetrisch
2
1
2
3
3
3
4
6
4
5
10
5
6
15
6
7
21
7
8
28
8
…
…
…
1000
499500
1000
…
…
…
n
n*(n-1) / 2
n
Angewandte Kryptographie
11
Hash
Data
Hash
Hash
Hash 14.02.2017
Empfänger
Sender
Data
Hash Angewandte Kryptographie
12
Hash mit Salt
Hash
Data
Salt
Hash
Hash 14.02.2017
Salt
Empfänger
Sender
Data
Hash Angewandte Kryptographie
13
Signatur
Data
Data
Sender
Hash
Hash Sign
Private Key Validate
Public Key
Empfänger
Signature
Data Signature 14.02.2017
Ja
Angewandte Kryptographie
Nein
14
Block Cipher Modes Electronic Codebook (ECB) Cipher-Block Chaining (CBC) Counter (CTR) 14.02.2017
Angewandte Kryptographie
15
Electronic Codebook (ECB) – Verschlüsselung
14.02.2017
Plaintext
Plaintext
Plaintext
AES Encryption
AES Encryption
AES Encryption
Ciphertext
Ciphertext
Ciphertext
Angewandte Kryptographie
16
Electronic Codebook (ECB) – Entschlüsselung
14.02.2017
Ciphertext
Ciphertext
Ciphertext
AES Decryption
AES Decryption
AES Decryption
Plaintext
Plainrtext
Plaintext
Angewandte Kryptographie
17
Cipher-Block Chaining (CBC) – Verschlüsselung Plaintext
Plaintext
Plaintext
AES Encryption
AES Encryption
AES Encryption
Ciphertext
Ciphertext
Ciphertext
IV
14.02.2017
Angewandte Kryptographie
18
Cipher-Block Chaining (CBC) – Entschlüsselung Ciphertext
Ciphertext
Ciphertext
AES Decryption
AES Decryption
AES Decryption
Plaintext
Plaintext
Plaintext
IV
14.02.2017
Angewandte Kryptographie
19
Counter (CTR) – Verschlüsselung Nonce Counter (0)
Counter (1)
Nonce Counter (2)
add
add
add
AES Encryption
AES Encryption
AES Encryption
Plaintext
Plaintext
Ciphertext 14.02.2017
Nonce
Plaintext
Ciphertext Angewandte Kryptographie
Ciphertext 20
Counter (CTR) – Entschlüsselung Nonce Counter (0)
Counter (1)
Nonce Counter (2)
add
add
add
AES Encryption
AES Encryption
AES Encryption
Ciphertext
Ciphertext
Plaintext 14.02.2017
Nonce
Ciphertext
Plaintext Angewandte Kryptographie
Plaintext 21
Hybride Verschlüsselung
14.02.2017
Angewandte Kryptographie
22
Asymmetrische Verschlüsselung
Encrypt
Encrypted Data
Public Key
Decrypt
Encrypted Data
14.02.2017
Private Key
Empfänger
Sender
Data
Data
Angewandte Kryptographie
23
Hybride Verschlüsselung
Sender
Data
Random Key
Encrypt
Encrypt
AES
Public Key
Encrypted Data
Encrypted Key 14.02.2017
Encrypted Key Angewandte Kryptographie
24
Hybride Entschlüsselung
Encrypted Data
Encrypted Data
Decrypt
Private Key
Key
AES
Encrypt
Empfänger
Encrypted Key
Data
14.02.2017
Angewandte Kryptographie
25
ECC oder RSA
ECC 224 bit == RSA 2048 bit ECC ist schneller ECC: Private Key = Zufallszahl
RSA: Schlüsselpaar wird über eine Primzahl erzeugt ECC: Signatur und Verschlüsselung sind unterschiedliche Funktionen RSA: Entschlüsseln == Signieren ECC: Signatur hat zufällige Komponente
14.02.2017
Angewandte Kryptographie
26
Anwendungsbeispiele
14.02.2017
Angewandte Kryptographie
27
Challenge Response Check
Stellt sicher, dass ein gültiger Dongle vorhanden ist Private Key im Dongle (mit Lizenz, für alle Kunden gleich) Public Key in der Software
Software erzeugt eine Challenge Dongle signiert die Challenge Software überprüft die Response
Verhindert eine Record Playback Attacke auf den Dongle Verhindert eine Simulation des Dongles
14.02.2017
Angewandte Kryptographie
28
Challenge Response Check
Ja oder Nein
Software Zufallszahl
Überprüfung
Challenge (Z)
Response (Signatur)
Öffentlicher Schlüssel
Lizenz Privater Schlüssel
14.02.2017
Angewandte Kryptographie
29
Verschlüsselte Kommunikation
Übermittlung der Fischfänge an einen zentralen Server (über Satellit) Anforderungen: Authentisch und Vertraulich
Implementierung: Schlüsselpaar auf dem Server und jedem Schiff Tagebuch verschlüsselt mit Public Key des Servers
Tagebuch signiert mit Private Key des Schiffs
Ergebnis: Authentisch und Vertraulich 603 14.02.2017
Angewandte Kryptographie
4711 30
Demoversion und Vollversion
Software (Demo)
Software
Öffentlicher Schlüssel
Öffentlicher Schlüssel
Lizenz Daten
14.02.2017
Privater Schlüssel
Angewandte Kryptographie
31
Zertifikate
14.02.2017
Angewandte Kryptographie
32
Signatur
Data
Data
Sender
Hash
Hash Sign
Private Key Validate
Public Key
Empfänger
Signature
Data Signature 14.02.2017
Ja
Angewandte Kryptographie
Nein
33
Die Herausforderung!
Woher weiß ich, dass der Public Key echt ist? 14.02.2017
Angewandte Kryptographie
34
Die Lösung
Zertifikate (Public Key Zertifikate, X.509)
14.02.2017
Angewandte Kryptographie
35
Ein Zertifikat
Bestätigt den Eigentümer eines öffentlichen Schlüssels Identität: Person
Organisation
Zertifikat Issued for: Common name (CN):
Wolfgang Voelker
Company (O):
WIBU-SYSTEMS AG
Business unit (OU):
WOPS
Serial number:
1be10001000220613…
Public key:
0x15, 0x3c, 0xd0, 0x26, 0xd6, 0x71, 0xfa, 0xae, 0x20, 0xa6, 0x15, 0x58, 0xea, 0x3d, 0xdd, 0x36, 0x89, …
IT-System (z.B. Server)
Unterschrieben vom Aussteller
Issued by: Common name (CN):
Root
Attribute
Company (O):
WIBU-SYSTEMS AG
.. Valid until:
14.02.2017
Angewandte Kryptographie
31.12.2017
36
Die nächste Herausforderung!
Woher weiß ich, dass das Zertifikat echt ist? 14.02.2017
Angewandte Kryptographie
37
Die nächste Lösung
Das Zertifikat ist vom Herausgeber unterschrieben. (Prüfung mit dem Public Key des Herausgebers) 14.02.2017
Angewandte Kryptographie
38
Die … Herausforderung!
…? 14.02.2017
Angewandte Kryptographie
39
Die finale Lösung
Ich kenne bereits ein Stammzertifikat von einer Zertifzierungsstelle. (Root Certificate / Certificate Authority) 14.02.2017
Angewandte Kryptographie
40
Beispiele für Stammzertifkate
14.02.2017
Angewandte Kryptographie
41
Selbst signiertes Zertifikat (Selfsigned Certificate)
Selbst unterschrieben
Zertifikat
Es gibt kein Stammzertifikat
Ausgestellt für:
Wird in der Regel nicht akzeptiert Anwender muss dem Zertifikat manuell vertrauen
Allgemeiner Name (CN):
Rüdiger Kügler
Organisation (O):
WIBU-SYSTEMS AG
Organisationseinheit (OU): Professional Services Seriennummer:
1be10001000220613…
Ausgestellt von:
Allgemeiner Name (CN):
Rüdiger Kügler
Organisation (O):
WIBU-SYSTEMS AG
.. Gültig bis:
14.02.2017
Angewandte Kryptographie
31.12.2017
42
Anwendungsfälle
Server Zertifikate Client Zertifikate E-Mail Zertifikate / VPN Zertifikate
OPC UA Zertifikate Authenticode Code Integrität von Software …
14.02.2017
Angewandte Kryptographie
43
Authenticode
14.02.2017
Angewandte Kryptographie
44
Die Frage
Ich signiere meine Anwendung mit Authenticode. Damit ist ein Cracker NICHT in der Lage meine Anwendung zu verändern.
Falsch?
Richtig?
14.02.2017
Angewandte Kryptographie
45
Motivation: Die Anwendung - Vorher
Signierte Anwendung
14.02.2017
Angewandte Kryptographie
46
Motivation: Der Patch
14.02.2017
Angewandte Kryptographie
47
Motivation: Die Anwendung - Nachher
Läuft die Anwendung noch?
14.02.2017
Angewandte Kryptographie
48
Die Antwort
Ich signiere meine Anwendung mit Authenticode. Damit ist ein Cracker NICHT in der Lage meine Anwendung zu verändern.
Falsch
Richtig?
14.02.2017
Falsch?
Angewandte Kryptographie
49
Zusammenfassung
Microsoft Windows startet jede Anwendung Ohne Signatur Mit gültiger Signatur
Mit ungültiger Signatur
Bordmittel sind nicht für Kopierschutz / Integritätsschutz geeignet
14.02.2017
Angewandte Kryptographie
50
Ja, aber …
Ich überprüfe die Authenticode Signatur in meiner eigenen Anwendung. Damit bin ich doch sicher.
Falsch?
Richtig?
14.02.2017
Angewandte Kryptographie
51
Überprüfung in der Software
Überprüfung der Signatur Gültig / ungültig? Wer hat unterzeichnet?
Wann wurde unterzeichnet?
Reaktion bei Fehlern Beenden (Verstecken des Calls?)
„Falsch rechnen“ !?
14.02.2017
Angewandte Kryptographie
52
Die Schwachstelle
Software Patchen Hooken Überschreiben
Dokumentierter API Aufruf
WINTRUST.DLL
14.02.2017
Angewandte Kryptographie
53
Die Schwachstelle
Bekanntes und dokumentiertes Windows API überprüft die Signatur !? Angriffe: Patchen der WINTRUST.DLL
Hooken der Funktion mit Standard-Tools Überscheiben der Funktion in der Dll zur Laufzeit aus der gepatchten Anwendung
14.02.2017
Angewandte Kryptographie
54
Überschreiben im Speicher
HMODULE lib = LoadLibrary(_T("WINTRUST.DLL")); FARPROC p = GetProcAddress(lib, "WinVerifyTrust"); BYTE fake[5]; Mythos entlarvt: fake[0] = 0x32; Sie können ausführbaren Code fake[1] = 0xC0; im Speicher verändern! fake[2] = 0xC2; fake[3] = 0x0C; fake[4] = 0x00; VirtualProtect(p, 5, PAGE_EXECUTE_READWRITE, &old); memcpy(p, fake, 5); VirtualProtect(p, 5, old, &old);
14.02.2017
Angewandte Kryptographie
55
Die Antwort ist wieder …
Ich überprüfe die Authenticode Signatur in meiner eigenen Anwendung. Damit bin ich doch sicher.
Falsch
Richtig?
14.02.2017
Falsch?
Angewandte Kryptographie
56
Zusammenfassung Authenticode
Software-Hersteller
Anwender
Kopierschutz
14.02.2017
Mods
Virus
Cheats
Sabotage
Vermeidung von False Positives
Cheats
Angewandte Kryptographie
57
Fazit Authenticode
Zertifikate bieten nur dann eine Sicherheit, wenn die Prüfstelle in einem vertrauenswürdigem Umfeld läuft. Authenticode = Schutz des Anwenders vor Viren
Authenticode ≠ Schutz gegen Raubkopien
14.02.2017
Angewandte Kryptographie
58
Schlusswort
14.02.2017
Angewandte Kryptographie
59
Zusammenfassung
Selbst der beste Algorithmus kann nichts wert sein, wenn er falsch implementiert ist Bedrohungen und Anforderungen analysieren
Experten zu Rate ziehen Auswahl des richtigen Verfahrens Symmetrisch Asymmetrisch Chaining Mode Länge der Daten 14.02.2017
Angewandte Kryptographie
60
Vielen Dank für Ihre Aufmerksamkeit!
Deutschland: Deutschland: USA: USA:
+49-721-931720 +49-721-931720 +1-425-7756900 +1-425-7756900
China: China:
+86-21-55661790 +86-21-55661790
14.02.2017
http://www.wibu.com http://www.wibu.com
[email protected] [email protected] Angewandte Kryptographie
61