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...
Ziele
Eve (Alices Schwester) – von Natur aus neugierig.
Alice und Bob möchten nicht dass Eve erfährt, was sie zu
bereden h...
Ziele
Mallory (Bobs rachsüchtige Ex) – geht sogar noch weiter und versucht durch
gefälschte Nachrichten die beiden zu entz...
Ziele
● Alice schließt mit Bob einen Vertrag via EMail,
was sie später bestreitet
● Wie kann Bob gegenüber Dritten beweise...
Symmetrische Cryptographie
● M → X=C(key, M) → D(key, X)=M
● Alice und Bob haben sich auf einen
gemeinsamen Schlüssel vers...
Symmetrische Cryptographie
● Nachteile
– Sichere Schlüsselübertragung notwendig
– Ein Schlüssel pro Kommunikationspaar
● A...
Hashfunktionen
● Hashfunktionen bilden Nachrichten auf kurze
Bytefolgen ab
● Schwierig (soll)
– 2 Nachrichten mit gleichem...
Asymmetrische Cryptographie
● M → X=C(pubkey, M) → D(privkey, X)=M
● Es gibt ein Schlüsselpaar
● Private Key ist nur dem B...
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...
Hybridverschlüsselung
● Generiere Zufallswert
● Übertrage diesen mittels asymmetrischer
Verschlüsselung
● Nutze ihn für sy...
Hybridsignatur
● Bilde Hashwert der Nachricht
● Signiere den Hashwert
● Effizienz
● Mehrere Unterzeichner
● Nachricht ohne...
Message Authentication Code
● Symmetrische Version digitaler Signaturen
● Hash mit Schlüssel
● Integrität und Authentizitä...
Public Key Infrastruktur
● Problem: Authentizität des Public Keys
– Direkte Übergabe
– Trust on first use (SSH)
– Web of T...
Zertifikate
● Key der CA muss bekannt sein
● Welche CAs sind vertrauenswürdig?
● Zertifikatsketten
● CRL/OCSP
● Gültigkeit...
Blockverschlüsselung
● Feste Blockgröße → Padding
● Mode of Operation
– ECB: Block für Block → schlecht
– Bild: lewing@isc...
Blockverschlüsselung
● Mode of Operation 2
– Besser CFB, OFB → Initialisierungsvektor
– Block → Stromchiffre (Bit für Bit)...
Zufallsgenerator
● Unterschätzte Komponente
● Statistisch gut != Cryptographisch gut
● Soll: Nicht vorhersagbar
● Debian-O...
Key derivation
● Passwort → Key
● Absichtlich aufwendige Funktionen
– Gegen Brute force
● PBKDF2, Scrypt, Bcrypt
● Auch al...
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());
...
Code-Sample: Cipher (EBICS)
Cipher desCipher=Cipher.getInstance("DESede/CBC/X923Padding");
SecretKeyFactory skf=SecretKeyF...
Perfect Forward Secrecy
● Problem: Wird geheimer Schlüssel
kompromittiert, kann damit nachträglich die
Übertragung entschl...
Durch die Hintertür
● Side Channel Attacks
– Timing
– Stromaufnahme
– Cacheverhalten (Virtualisierung!)
– Fehlermeldungen ...
Don't do it yourself
● Jeder kann eine Verschlüsselung erfinden, die
er selbst nicht brechen kann
● Snake Oil: Unser neuar...
Secret Sharing
● Geheimnis → mehrere Teile
● Einzelteile enthalten keine Information: RAID -1
● 0+0=1!
● 2 von 2 für PIN:
...
Challenge-Response
● Passwort-Authentisierung: Prüfer lernt das
Passwort
● Problematisch bei bösartigem Prüfer (Phishing)
...
Zero-Knowledge-Proof-Systems
● Challenge-Response++
● Prüfer lernt nichts (nicht mal
Hash(Passwort+Challenge))
● Prüfer kö...
XMLSec/WS-Security
●
Standard für Verschlüsselung und Signatur im XML-Umfeld
●
Verschlüsselung relativ unkritisch
●
Signat...
Auditur et altera pars
http://xkcd.com/177/
Nächste SlideShare
Wird geladen in …5
×

Crypto 101 @ JUG Bielefeld

492 Aufrufe

Veröffentlicht am

Folien zum Crypto-Übersichtsvortrag bei der JUG Bielefeld

Veröffentlicht in: Technologie
0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
492
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
7
Aktionen
Geteilt
0
Downloads
7
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Crypto 101 @ JUG Bielefeld

  1. 1. Crypto 101 Im Schweinsgalopp durch die Cryptowelt Christian Kleinewächter vitroconnect systems GmbH
  2. 2. Agenda ● Ziele ● Private- vs. Public-Key-Cryptographie ● Building-Blocks ● Java-Beispiele ● Verschiedenes
  3. 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. 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. 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. 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. 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. 8. Symmetrische Cryptographie ● Nachteile – Sichere Schlüsselübertragung notwendig – Ein Schlüssel pro Kommunikationspaar ● Algorithmen – AES – Blowfish – 3DES – ...
  9. 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. 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. 11. Asymmetrische Cryptographie ● Vertraulichkeit ist gewährleistet ● Problem der Authentizität des Schlüssels – später...
  12. 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. 13. Hybridverschlüsselung ● Generiere Zufallswert ● Übertrage diesen mittels asymmetrischer Verschlüsselung ● Nutze ihn für symmetrische Verschlüsselung ● Effizienz, mehrere Empfänger
  14. 14. Hybridsignatur ● Bilde Hashwert der Nachricht ● Signiere den Hashwert ● Effizienz ● Mehrere Unterzeichner ● Nachricht ohne Prüfung der Signatur lesbar
  15. 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. 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. 17. Zertifikate ● Key der CA muss bekannt sein ● Welche CAs sind vertrauenswürdig? ● Zertifikatsketten ● CRL/OCSP ● Gültigkeitsdauer ● Java-Truststore, X509Trustmanager, HostnameVerifier
  18. 18. Blockverschlüsselung ● Feste Blockgröße → Padding ● Mode of Operation – ECB: Block für Block → schlecht – Bild: lewing@isc.tamu.edu
  19. 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. 20. Zufallsgenerator ● Unterschätzte Komponente ● Statistisch gut != Cryptographisch gut ● Soll: Nicht vorhersagbar ● Debian-Openssl-Desaster ● Java: SecureRandom ● XKCD (Seafile: Das war ein Scherz!)
  21. 21. Key derivation ● Passwort → Key ● Absichtlich aufwendige Funktionen – Gegen Brute force ● PBKDF2, Scrypt, Bcrypt ● Auch als Ersatz für Hashfunktion zur Passwortspeicherung
  22. 22. Java-API ● javax.crypto/java.security ● Serviceprovider-Modell ● Cipher – AlgorithmParameters ● Mac ● Key vs. KeySpec
  23. 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. 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. 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. 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. 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. 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. 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. 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. 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. 32. Auditur et altera pars http://xkcd.com/177/

×