Crypto 101 @ JUG Bielefeld

Embed Size (px)

DESCRIPTION

Folien zum Crypto-Übersichtsvortrag bei der JUG Bielefeld

Citation preview

  • 1. Crypto 101 Im Schweinsgalopp durch die Cryptowelt Christian Kleinewchter 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 knnen. Aber es gibt da ein paar kleine Probleme... 4. Ziele Eve (Alices Schwester) von Natur aus neugierig. Alice und Bob mchten nicht dass Eve erfhrt, was sie zu bereden haben. Ziel: Vertraulichkeit 5. Ziele Mallory (Bobs rachschtige Ex) geht sogar noch weiter und versucht durch geflschte Nachrichten die beiden zu entzweien. Da sie geflschte Nachrichten schickt, mchte Bob feststellen knnen, dass die Nachricht von Alice stammt und nicht verndert wurde. Ziele: Authentizitt & Integritt Kein Ziel: Verhindern, dass Mallory Nachrichten austauscht (Erkennen reicht) 6. Ziele Alice schliet mit Bob einen Vertrag via EMail, was sie spter bestreitet Wie kann Bob gegenber 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 Schlssel verstndigt ffentlicher Algorithmus zur Verschlsselung (Kerckhoffs' Prinzip) Vertraulichkeit ist gewhrleistet Integritt/Authentizitt nur mit Zusatzmanahmen Nicht-Abstreitbarkeit wird nicht erzielt! 8. Symmetrische Cryptographie Nachteile Sichere Schlsselbertragung notwendig Ein Schlssel 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 Schlsselpaar Private Key ist nur dem Besitzer bekannt Public Key kann ffentlich gemacht werden Algorithmen RSA Elliptische Kurven 11. Asymmetrische Cryptographie Vertraulichkeit ist gewhrleistet Problem der Authentizitt des Schlssels spter... 12. Digitale Signaturen M X=C(privkey, M) D(pubkey, X)=M Asymmetrische Verschlsselung verkehrtherum Authentizitt/Integritt/Nichtabstreitbarkeit Encrypt/Sign robuster als Sign/Encrypt 13. Hybridverschlsselung Generiere Zufallswert bertrage diesen mittels asymmetrischer Verschlsselung Nutze ihn fr symmetrische Verschlsselung Effizienz, mehrere Empfnger 14. Hybridsignatur Bilde Hashwert der Nachricht Signiere den Hashwert Effizienz Mehrere Unterzeichner Nachricht ohne Prfung der Signatur lesbar 15. Message Authentication Code Symmetrische Version digitaler Signaturen Hash mit Schlssel Integritt und Authentizitt (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: Authentizitt des Public Keys Direkte bergabe Trust on first use (SSH) Web of Trust (PGP) Certification Authority (X.509) Zertifikat: Public-Key + Identittsattribute + Beglaubigung Ausweis! 17. Zertifikate Key der CA muss bekannt sein Welche CAs sind vertrauenswrdig? Zertifikatsketten CRL/OCSP Gltigkeitsdauer Java-Truststore, X509Trustmanager, HostnameVerifier 18. Blockverschlsselung Feste Blockgre Padding Mode of Operation ECB: Block fr Block schlecht Bild: [email protected] 19. Blockverschlsselung Mode of Operation 2 Besser CFB, OFB Initialisierungsvektor Block Stromchiffre (Bit fr Bit) Implementierungsabhngige Defaults Statt Cipher.getInstance(AES) besser Cipher.getInstance(AES/CBC/PKCS5PADDING) 20. Zufallsgenerator Unterschtzte 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 fr 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