3. Ziele
Darf ich vorstellen:
Alice und Bob (Platz 1 und 2 auf der „People in Cryptography“-Liste).
Alice und Bob haben einen Kanal, über den sie miteinander kommunizieren
können.
Aber es gibt da ein paar kleine Probleme...
4. Ziele
Eve (Alices Schwester) – von Natur aus neugierig.
Alice und Bob möchten nicht dass Eve erfährt, was sie zu
bereden haben.
Ziel: Vertraulichkeit
5. Ziele
Mallory (Bobs rachsüchtige Ex) – geht sogar noch weiter und versucht durch
gefälschte Nachrichten die beiden zu entzweien. Da sie gefälschte
Nachrichten schickt, möchte Bob feststellen können, dass die Nachricht
von Alice stammt und nicht verändert wurde.
Ziele: Authentizität & Integrität
Kein Ziel: Verhindern, dass Mallory Nachrichten austauscht (Erkennen reicht)
6. Ziele
● Alice schließt mit Bob einen Vertrag via EMail,
was sie später bestreitet
● Wie kann Bob gegenüber Dritten beweisen,
dass die Nachricht von Alice stammt
● Ziel: Nichtabstreitbarkeit/Verbindlichkeit (Non
repudiation)
7. Symmetrische Cryptographie
● M → X=C(key, M) → D(key, X)=M
● Alice und Bob haben sich auf einen
gemeinsamen Schlüssel verständigt
● Öffentlicher Algorithmus zur Verschlüsselung
(Kerckhoffs' Prinzip)
● Vertraulichkeit ist gewährleistet
● Integrität/Authentizität nur mit Zusatzmaßnahmen
● Nicht-Abstreitbarkeit wird nicht erzielt!
9. Hashfunktionen
● Hashfunktionen bilden Nachrichten auf kurze
Bytefolgen ab
● Schwierig (soll)
– 2 Nachrichten mit gleichem Hashwert (Collision)
● Bruteforce: 2^(n/2)
– Nachricht zu gegebenen Hashwert (Preimage)
● Bruteforce: 2^n
● SHA-x, (MD5)
10. Asymmetrische Cryptographie
● M → X=C(pubkey, M) → D(privkey, X)=M
● Es gibt ein Schlüsselpaar
● Private Key ist nur dem Besitzer bekannt
● Public Key kann öffentlich gemacht werden
● Algorithmen
– RSA
– Elliptische Kurven
– …
14. Hybridsignatur
● Bilde Hashwert der Nachricht
● Signiere den Hashwert
● Effizienz
● Mehrere Unterzeichner
● Nachricht ohne Prüfung der Signatur lesbar
15. Message Authentication Code
● Symmetrische Version digitaler Signaturen
● Hash mit Schlüssel
● Integrität und Authentizität (aber abstreitbar)
● Schlecht:
– H(K|M): Extension Attack
– H(M|K): Etwas besser
● Gut:
– HMAC: H((K+opad)|H((k+ipad)|M))
16. Public Key Infrastruktur
● Problem: Authentizität des Public Keys
– Direkte Übergabe
– Trust on first use (SSH)
– Web of Trust (PGP)
– Certification Authority (X.509)
● Zertifikat: Public-Key + Identitätsattribute + Beglaubigung
→ Ausweis!
17. Zertifikate
● Key der CA muss bekannt sein
● Welche CAs sind vertrauenswürdig?
● Zertifikatsketten
● CRL/OCSP
● Gültigkeitsdauer
● Java-Truststore, X509Trustmanager,
HostnameVerifier
20. Zufallsgenerator
● Unterschätzte Komponente
● Statistisch gut != Cryptographisch gut
● Soll: Nicht vorhersagbar
● Debian-Openssl-Desaster
● Java: SecureRandom
● XKCD (Seafile: Das war ein Scherz!)
21. Key derivation
● Passwort → Key
● Absichtlich aufwendige Funktionen
– Gegen Brute force
● PBKDF2, Scrypt, Bcrypt
● Auch als Ersatz für Hashfunktion zur
Passwortspeicherung
23. Mac-Codesample
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(hmacKey);
mac.update(Long.toHexString(userId).getBytes());
mac.update((byte)0);
mac.update(Long.toHexString(prId).getBytes());
byte[] sigValue = mac.doFinal();
return Hex.encodeHexString(sigValue);
24. Code-Sample: Cipher (EBICS)
Cipher desCipher=Cipher.getInstance("DESede/CBC/X923Padding");
SecretKeyFactory skf=SecretKeyFactory.getInstance("DESede");
// Blow up 2Key-3DES
byte[] tdeskey=new byte[24];
for (int i=0; i<24; i++) {
tdeskey[i]=txnKey[i%16];
}
...
DESedeKeySpec ks=new DESedeKeySpec(tdeskey);
SecretKey k = skf.generateSecret(ks);
IvParameterSpec ivs = new IvParameterSpec(iv);
desCipher.init(Cipher.ENCRYPT_MODE, k, ivs);
25. Perfect Forward Secrecy
● Problem: Wird geheimer Schlüssel
kompromittiert, kann damit nachträglich die
Übertragung entschlüsselt werden
● Verwende Zertifikat nur zur Authentisierung
● Schlüsselaustausch mittels Diffie-Hellman
● Geht nur Online (Webserver, VPN)
● Ungeeignet für EMail
26. Durch die Hintertür
● Side Channel Attacks
– Timing
– Stromaufnahme
– Cacheverhalten (Virtualisierung!)
– Fehlermeldungen (Padding-Oracle)
●
Traffic-Analyse
●
Sensibles Material im Speicher/kopierbar → HSM
● Pebkacs
– Nicht immer die Schuld der Person auf dem Stuhl
– KISS
– Nicht abgedeckte Teile (Subject in Mails)
27. Don't do it yourself
● Jeder kann eine Verschlüsselung erfinden, die
er selbst nicht brechen kann
● Snake Oil: Unser neuartiges patentiertes streng
geheimes unknackbare System...
● Complication Illusionaire
28. Secret Sharing
● Geheimnis → mehrere Teile
● Einzelteile enthalten keine Information: RAID -1
● 0+0=1!
● 2 von 2 für PIN:
– 1 Teil: Zufallswert 0000...9999
– 2 Teil: Ergänze Ziffern zur PIN (mod 10)
● K von N: Shamirs Secret Sharing
29. Challenge-Response
● Passwort-Authentisierung: Prüfer lernt das
Passwort
● Problematisch bei bösartigem Prüfer (Phishing)
● Challenge-Response: Prüfer erhält Hash vom
Passwort+Zufallswert
● Nachteil: Prüfer muss PW kennen (nicht nur
Hash)
● CHAP
31. XMLSec/WS-Security
●
Standard für Verschlüsselung und Signatur im XML-Umfeld
●
Verschlüsselung relativ unkritisch
●
Signatur: Problem der eindeutigen Umwandlung in Bytefolge
– Attribute
– Namespaces
– Charsets
– Self-Closed-Tags
– Lösung: Kanonisierung/Transformation
● JSR-105/-106