SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Crypto 101
Im Schweinsgalopp durch die Cryptowelt
Christian Kleinewächter
vitroconnect systems GmbH
Agenda
● Ziele
● Private- vs. Public-Key-Cryptographie
● Building-Blocks
● Java-Beispiele
● Verschiedenes
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...
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
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)
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)
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!
Symmetrische Cryptographie
● Nachteile
– Sichere Schlüsselübertragung notwendig
– Ein Schlüssel pro Kommunikationspaar
● Algorithmen
– AES
– Blowfish
– 3DES
– ...
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)
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
– …
Asymmetrische Cryptographie
● Vertraulichkeit ist gewährleistet
● Problem der Authentizität des Schlüssels
– später...
Digitale Signaturen
● M → X=C(privkey, M) → D(pubkey, X)=M
● Asymmetrische Verschlüsselung
„verkehrtherum“
● Authentizität/Integrität/Nichtabstreitbarkeit
● Encrypt/Sign robuster als Sign/Encrypt
Hybridverschlüsselung
● Generiere Zufallswert
● Übertrage diesen mittels asymmetrischer
Verschlüsselung
● Nutze ihn für symmetrische Verschlüsselung
● Effizienz, mehrere Empfänger
Hybridsignatur
● Bilde Hashwert der Nachricht
● Signiere den Hashwert
● Effizienz
● Mehrere Unterzeichner
● Nachricht ohne Prüfung der Signatur lesbar
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))
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!
Zertifikate
● Key der CA muss bekannt sein
● Welche CAs sind vertrauenswürdig?
● Zertifikatsketten
● CRL/OCSP
● Gültigkeitsdauer
● Java-Truststore, X509Trustmanager,
HostnameVerifier
Blockverschlüsselung
● Feste Blockgröße → Padding
● Mode of Operation
– ECB: Block für Block → schlecht
– Bild: lewing@isc.tamu.edu
Blockverschlüsselung
● Mode of Operation 2
– Besser CFB, OFB → Initialisierungsvektor
– Block → Stromchiffre (Bit für Bit)
– Implementierungsabhängige Defaults
● Statt Cipher.getInstance(„AES“) besser
Cipher.getInstance(„AES/CBC/PKCS5PADDING“)
Zufallsgenerator
● Unterschätzte Komponente
● Statistisch gut != Cryptographisch gut
● Soll: Nicht vorhersagbar
● Debian-Openssl-Desaster
● Java: SecureRandom
● XKCD (Seafile: Das war ein Scherz!)
Key derivation
● Passwort → Key
● Absichtlich aufwendige Funktionen
– Gegen Brute force
● PBKDF2, Scrypt, Bcrypt
● Auch als Ersatz für Hashfunktion zur
Passwortspeicherung
Java-API
● javax.crypto/java.security
● Serviceprovider-Modell
● Cipher
– AlgorithmParameters
● Mac
● Key vs. KeySpec
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);
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);
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
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)
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
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
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
Zero-Knowledge-Proof-Systems
● Challenge-Response++
● Prüfer lernt nichts (nicht mal
Hash(Passwort+Challenge))
● Prüfer könnte Protokoll ohne Prüfling simulieren
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
Auditur et altera pars
http://xkcd.com/177/

Weitere ähnliche Inhalte

Ähnlich wie Crypto 101 @ JUG Bielefeld

Wieso Informatiker bei der Informationssicherheit scheitern
Wieso Informatiker bei der Informationssicherheit scheiternWieso Informatiker bei der Informationssicherheit scheitern
Wieso Informatiker bei der Informationssicherheit scheiternDigicomp Academy AG
 
Verschlüsselung in Theorie und Praxis
Verschlüsselung in Theorie und PraxisVerschlüsselung in Theorie und Praxis
Verschlüsselung in Theorie und PraxisPeter Tröger
 
2004 | Kryptographie in Theorie und Praxis: Only the Paranoids Survive
2004 | Kryptographie in Theorie und Praxis: Only the Paranoids Survive2004 | Kryptographie in Theorie und Praxis: Only the Paranoids Survive
2004 | Kryptographie in Theorie und Praxis: Only the Paranoids SurviveJutta Horstmann
 
CLT 2011: E-Mail-Verschlüsselung mit GPG
CLT 2011: E-Mail-Verschlüsselung mit GPGCLT 2011: E-Mail-Verschlüsselung mit GPG
CLT 2011: E-Mail-Verschlüsselung mit GPGBirgit Hüsken
 

Ähnlich wie Crypto 101 @ JUG Bielefeld (7)

EN 6.3: 4 Kryptographie
EN 6.3: 4 KryptographieEN 6.3: 4 Kryptographie
EN 6.3: 4 Kryptographie
 
Kryptographie
KryptographieKryptographie
Kryptographie
 
Wieso Informatiker bei der Informationssicherheit scheitern
Wieso Informatiker bei der Informationssicherheit scheiternWieso Informatiker bei der Informationssicherheit scheitern
Wieso Informatiker bei der Informationssicherheit scheitern
 
Verschlüsselung in Theorie und Praxis
Verschlüsselung in Theorie und PraxisVerschlüsselung in Theorie und Praxis
Verschlüsselung in Theorie und Praxis
 
2004 | Kryptographie in Theorie und Praxis: Only the Paranoids Survive
2004 | Kryptographie in Theorie und Praxis: Only the Paranoids Survive2004 | Kryptographie in Theorie und Praxis: Only the Paranoids Survive
2004 | Kryptographie in Theorie und Praxis: Only the Paranoids Survive
 
CLT 2011: E-Mail-Verschlüsselung mit GPG
CLT 2011: E-Mail-Verschlüsselung mit GPGCLT 2011: E-Mail-Verschlüsselung mit GPG
CLT 2011: E-Mail-Verschlüsselung mit GPG
 
Hash.pdf
Hash.pdfHash.pdf
Hash.pdf
 

Crypto 101 @ JUG Bielefeld

  • 1. Crypto 101 Im Schweinsgalopp durch die Cryptowelt Christian Kleinewächter vitroconnect systems GmbH
  • 2. Agenda ● Ziele ● Private- vs. Public-Key-Cryptographie ● Building-Blocks ● Java-Beispiele ● Verschiedenes
  • 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!
  • 8. Symmetrische Cryptographie ● Nachteile – Sichere Schlüsselübertragung notwendig – Ein Schlüssel pro Kommunikationspaar ● Algorithmen – AES – Blowfish – 3DES – ...
  • 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 – …
  • 11. Asymmetrische Cryptographie ● Vertraulichkeit ist gewährleistet ● Problem der Authentizität des Schlüssels – später...
  • 12. Digitale Signaturen ● M → X=C(privkey, M) → D(pubkey, X)=M ● Asymmetrische Verschlüsselung „verkehrtherum“ ● Authentizität/Integrität/Nichtabstreitbarkeit ● Encrypt/Sign robuster als Sign/Encrypt
  • 13. Hybridverschlüsselung ● Generiere Zufallswert ● Übertrage diesen mittels asymmetrischer Verschlüsselung ● Nutze ihn für symmetrische Verschlüsselung ● Effizienz, mehrere Empfänger
  • 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
  • 18. Blockverschlüsselung ● Feste Blockgröße → Padding ● Mode of Operation – ECB: Block für Block → schlecht – Bild: lewing@isc.tamu.edu
  • 19. Blockverschlüsselung ● Mode of Operation 2 – Besser CFB, OFB → Initialisierungsvektor – Block → Stromchiffre (Bit für Bit) – Implementierungsabhängige Defaults ● Statt Cipher.getInstance(„AES“) besser Cipher.getInstance(„AES/CBC/PKCS5PADDING“)
  • 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
  • 22. Java-API ● javax.crypto/java.security ● Serviceprovider-Modell ● Cipher – AlgorithmParameters ● Mac ● Key vs. KeySpec
  • 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
  • 30. Zero-Knowledge-Proof-Systems ● Challenge-Response++ ● Prüfer lernt nichts (nicht mal Hash(Passwort+Challenge)) ● Prüfer könnte Protokoll ohne Prüfling simulieren
  • 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
  • 32. Auditur et altera pars http://xkcd.com/177/