Crypto 101

875e2bcfb1dc37d05adebcf72269dc77?s=47 Oliver Milke
September 12, 2017

Crypto 101

Speziell im DevOps-Umfeld kommt man als Entwickler an Kryptographie nicht vorbei. Viele vorgefertigte Abläufe und Konfigurationen benötigen kaum detailliertes Wissen. Das wiederum kann Fluch und Segen zugleich sein. Ab und an ist dieses Detailwissen dennoch ganz spannend und kann dazu beitragen, größere Zusammenhänge zu verstehen. Worin unterscheidet sich eigentlich ein Zertifikat von einem Public Key? Was ist eine Cipher Suite meines Webservers? Was ist ein MAC?

In diesem Vortrag will ich diese und ähnliche wesentliche Begrifflichkeiten näher beleuchten. Hierbei geht es mir nicht darum, ganz konkrete Security-Themen in immenser Detailtiefe zu behandeln. Mein Fokus liegt auf der Vermittlung einer soliden Grundlage.

Wenn du dir auch schon immer mal vorgenommen hast, dich genauer mit diesem Thema zu befassen, dann bist du in diesem Vortrag genau richtig.

875e2bcfb1dc37d05adebcf72269dc77?s=128

Oliver Milke

September 12, 2017
Tweet

Transcript

  1. @OliverMilke @cloudogu

  2. meta 1 Überblick | Abgrenzung 2 Key Pair vs. Signature

    3 Cipher Suite 4
  3. Entwickler? 1 Dev Ops? 2

  4. Begriffe / Konzepte • Dinge, über die ich gestolpert bin

    • praxisrelevant, nicht from Scratch  Crypto is hard to get right • Dutch Election Security Talk 
  5. • > 10 Jahre Softwareentwicklung • Crypto und Security im

    Bereich Mobile Online Dienste bei VW • Software Craftsman @Cloudogu EcoSystem • JUG Ostfalen • Fitness / Freeletics Oliver Milke Software Craftsman https://stackoverflow.com/users/2108 919/omilke https://twitter.com/OliverMilke http://oliver-milke.de/ https://github.com/omilke
  6. meta 1 Überblick | Abgrenzung 2 Key Pair vs. Signature

    3 Cipher Suite 4
  7. https://www.xkcd.com/538/

  8. Kryptologie Security Kryptographie Kryptoanalyse … Awareness Prozesse

  9. Vertraulichkeit Integrität Authentizität

  10. SQL verschlüsselt?  Authorization: Basic d2lraTpwZWRpYQ==  Sicherheit durch Geheimhaltung

    des Schlüssels • nicht des Algorithmus • Gegenteil: Security By Obscurity 
  11. Symmetrische Verschlüsselung • 1 Schlüssel für Ver- und Entschlüsselung •

    Schnell • Stream Cipher • Block Cipher • Verschiedene Modi • AES − Rijndael Cipher Kryptographischer Hash • Einwegfunktion • Kollisionsresistent • MD*, SHA-*, bCyrpt
  12. Digitale Signatur • Asymmetrisch verschlüsselter Hash Asymmetrische Verschlüsselung • 2

    inverse Schlüssel (Key Pair) • Operationen können mit jeweils anderem Schlüssel umgekehrt werden • langsam
  13. Kryptografisch sichere Zufallszahlengenerierung • Zufall durch eine Maschine? • Noncen

    • Schutz vor Replay
  14. Einwegfunktionen • „vorwärts“ ist einfach • „rückwärts“ ist schwer /

    unmöglich  Problemklassen • Integerfaktorisierung − RSA • Diskreter Logarithmus − Diffie-Hellman, ElGamal − endliche Körper / Elliptische Kurven • AES 
  15. Exploits Spezifikation  Implementierung Side Channel Attack 

  16. https://www.xkcd.com/936/

  17. Speicherung für Anmeldung ? Salt • Individuell für jedes Passwort

     Pepper • Gleich für alle Passwort ! Argon2  PBKDF2  sCrypt / bCrypt 
  18. Einwegfunktion  Integrität kann überprüft werden  Unsicherer Transportweg •

    Austausch von Original und Hash möglich  1010001 Hash
  19. Hash Unsicherer Transportweg • Austausch nicht möglich  HMAC +

    Shared Secret Integrität und Authentizität  1010001 0110000
  20. meta 1 Überblick | Abgrenzung 2 Key Pair vs. Signature

    …oder: was ist ein Trust Anchor? 3 Cipher Suite 4
  21. Server Client

  22. Intermediate Certificate Server Certificate Certificate Authority (CA) Root Certificate Client

    Server
  23. meta 1 Überblick | Abgrenzung 2 Key Pair vs. Signature

    …oder: was ist ein Trust Anchor? 3 ECDHE-ECDSA-AES256-GCM-SHA384 …oder: Was ist eine Cipher Suite? 4
  24. Verbindung ist verschlüsselt  Welcher Algorithmus? • ECDHE-ECDSA-AES256-GCM-SHA384 

  25. Verbindung ist verschlüsselt • AES256-GCM-SHA384  Woher kommt der Schlüssel?

    • ECDHE-ECDSA-AES256-GCM-SHA384 
  26. Verbindung ist verschlüsselt • AES256-GCM-SHA384 • Key Exchange mit ECDHE

     Richtiger Host (meine Bank)? • ECDHE-ECDSA-AES256-GCM-SHA384 
  27. Crypto-System • Beteiligte Primitiven • Konstanten mit spezifizierten Details 

    Abhängig vom Protokoll • Beispiel TLS 1.2 − TLS 1.3 verwendet andere Konzepte 
  28. None
  29. Crypto Lib (bCrypt) http://www.bouncycastle.org/java.html  Password Policy http://www.passay.org/ (ehemals vt-password)

  30. Password Hashing security.stackexchange.com Thread  OWASP Password Storage Cheat Sheet

    https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet  OWASP Forgot Password Cheat Sheet https://www.owasp.org/index.php/Forgot_Password_Cheat_Sheet 
  31. Qualys SSL Lab Server Test https://www.ssllabs.com/ssltest/ ! Mozilla Config Generator

    https://mozilla.github.io/server-side-tls/ssl-config-generator/ ! Bruce Schneier https://www.schneier.com/  Security Bewertungen https://www.keylength.com/ 
  32. Thank you feedback plz Get in touch • https://twitter.com/OliverMilke •

    http://oliver-milke.de/ • dev@oliver-milke.de