Crypto 101

875e2bcfb1dc37d05adebcf72269dc77?s=47 Oliver Milke
November 12, 2020

Crypto 101

Speziell im DevOps-Umfeld kommt man als Entwickler streng genommen an Kryptographie nicht vorbei. Viele vorgefertigte Abläufe und Konfigurationen erfordern andererseits kaum detailliertes Wissen. Das 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 die 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, deren Verwendung und Bedeutung in Hinblick auf Security in immenser Detailtiefe zu behandeln. Mein Fokus liegt auf der Vermittlung einer soliden Grundlage, in der Hoffnung ein bisschen Licht ins Dunkel zu bringen.

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

November 12, 2020
Tweet

Transcript

  1. @OliverMilke @cloudogu

  2. 2 @omilke | Crypto 101 meta 1 Überblick | Abgrenzung

    2 Key Pair vs. Signature 3 Cipher Suite 4
  3. 3 @omilke | Crypto 101 Entwickler? 1 Dev Ops? 2

  4. 4 @omilke | Crypto 101 Begriffe / Konzepte • Dinge,

    über die ich gestolpert bin • praxisrelevant, nicht from Scratch  Crypto is hard to get right • Dutch Election Security Talk 
  5. • making software since 2001 • Crypto und Security im

    Bereich Mobile Online Dienste • Product Owner für Schulungsportfolio @cloudogu • JUG Ostfalen | IT Hub BS | Kids4IT • Fitness / Freeletics • Obstacle Races – join us About me Oliver Milke Software Craftsman https://twitter.com/cloudogu https://twitter.com/OliverMilke http://oliver-milke.de https://github.com/omilke/ https://github.com/cloudogu/
  6. 6 @omilke | Crypto 101 meta 1 Überblick | Abgrenzung

    2 Key Pair vs. Signature 3 Cipher Suite 4
  7. https://www.xkcd.com/538/

  8. 8 @omilke | Crypto 101 Kryptologie Security Kryptographie Kryptoanalyse …

    Awareness Prozesse
  9. 9 @omilke | Crypto 101 Ziele Vertraulichkeit Integrität Authentizität

  10. 10 @omilke | Crypto 101 SQL verschlüsselt?  Authorization: Basic

    d2lraTpwZWRpYQ==  Sicherheit durch Geheimhaltung des Schlüssels • nicht des Algorithmus • Gegenteil: Security By Obscurity 
  11. 11 @omilke | Crypto 101 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. 12 @omilke | Crypto 101 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. 13 @omilke | Crypto 101 Kryptografisch sichere Zufallszahlengenerierung • Zufall

    durch eine Maschine? • Seeds für Stream Cipher • Salts • Noncen • Schutz vor Replay
  14. 14 @omilke | Crypto 101 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 über endlichen Körpern • AES 
  15. 15 @omilke | Crypto 101 Spezifikation  Implementierung Side Channel

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

  17. 17 @omilke | Crypto 101 Speicherung für Anmeldung ? User

    Password User 1 123456 User 2 123456789 User 3 qwerty User 4 password User 5 1234567 User 6 12345678 User 7 12345 User 8 iloveyou User 9 123456
  18. 18 @omilke | Crypto 101 Hash Password hash-1 123456 hash-2

    123456789 hash-3 qwerty … … Speicherung für Anmeldung • als Hash ? User Password User 1 hash-1 User 2 hash-2 User 3 hash-3 User 4 hash-4 User 5 hash-5 User 6 hash-6 User 7 hash-7 User 8 hash-8 User 9 hash-1 Hash-Tables !
  19. 19 @omilke | Crypto 101 Speicherung für Anmeldung • als

    Hash ? Salt • zufällig für jedes Passwort  Pepper • Gleich für alle Passwort ! User Salt Password User 1 rnd-1 hash-1 User 2 rnd-2 hash-2 User 3 rnd-3 hash-3 User 4 rnd-4 hash-4 User 5 rnd-5 hash-5 User 6 rnd-6 hash-6 User 7 rnd-7 hash-7 User 8 rnd-8 hash-8 User 9 rnd-9 hash-9
  20. 20 @omilke | Crypto 101 langsam speicher-intensiv  bCrypt 

    Argon2id  PBKDF2  
  21. 21 @omilke | Crypto 101 Einwegfunktion  Integrität kann überprüft

    werden  Unsicherer Transportweg • Austausch von Original & Neuberechnung Hash ! 1010001 Text Hash
  22. 22 @omilke | Crypto 101 Unsicherer Transportweg • Austausch nicht

    möglich  + Secret Integrität und Authentizität  1010001 0110000 Text HMAC
  23. 23 @omilke | Crypto 101 meta 1 Überblick | Abgrenzung

    2 Key Pair vs. Signature …oder: was ist ein Trust Anchor? 3 Cipher Suite 4
  24. 24 @omilke | Crypto 101 Server Client

  25. 25 @omilke | Crypto 101 Intermediate Certificate Server Certificate Certificate

    Authority (CA) Root Certificate Client Server
  26. 26 @omilke | Crypto 101 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
  27. 27 @omilke | Crypto 101 Verbindung ist verschlüsselt  Wie

    d. h. mit welcher Algorithmus? • it depends ? Cipher Suite • große Vielzahl an Möglichkeiten • Angebote in der Server-Konfiguration • Nachfrage durch die Clients • Schnittmenge ausgehandelt im TLS Handshake !
  28. 28 @omilke | Crypto 101 ausgehandelt im Handshake • ECDHE-ECDSA-AES256-GCM-SHA384

     Transportverschlüsselung • ECDHE-ECDSA-AES256-GCM-SHA384 
  29. 29 @omilke | Crypto 101 Verbindung ist verschlüsselt • AES256-GCM-SHA384

     Woher kommt der Schlüssel? • ECDHE-ECDSA-AES256-GCM-SHA384 ?
  30. 30 @omilke | Crypto 101 Verbindung ist verschlüsselt • AES256-GCM-SHA384

    • Key Exchange mit ECDHE  Richtiger Host (meine Bank)? • ECDHE-ECDSA-AES256-GCM-SHA384 ?
  31. 31 @omilke | Crypto 101 Crypto-System • Beteiligte Primitiven 

    Abhängig vom Protokoll • Beispiel TLS 1.2 − Andere Protokolle mit anderen Primitiven 
  32. None
  33. 33 @omilke | Crypto 101 bcrypt(pwSaltPepper, 16++) ! Zertifikat =

    signierter Public Key + meta ! Abgehangene Krypto ♥ ! Was liegt meinem Vertrauen zugrunde? ?
  34. 34 @omilke | Crypto 101 Passwort-Speicherung in DB ? Online

    Dienste in Fahrzeugen ? Eigene Passwörter speichern ?
  35. 35 @omilke | Crypto 101 Crypto Lib (bCrypt) http://www.bouncycastle.org/java.html Vergleich

    von Crypto-Libs  Password Policy http://www.passay.org/ (ehemals vt-password) 
  36. 36 @omilke | Crypto 101 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 
  37. 37 @omilke | Crypto 101 Qualys SSL Lab Server Test

    https://www.ssllabs.com/ssltest/ ! Mozilla Config Generator https://ssl-config.mozilla.org/ ! Bruce Schneier https://www.schneier.com/  Security Bewertungen https://www.keylength.com/ 
  38. feedback plz Thank you get in touch • https://twitter.com/OliverMilke •

    dev@oliver-milke.de • Vortrag als Blog-Artikel