Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Crypto 101

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.

Oliver Milke

November 12, 2020
Tweet

More Decks by Oliver Milke

Other Decks in Technology

Transcript

  1. @OliverMilke
    @cloudogu

    View Slide

  2. 2
    @omilke | Crypto 101
    meta
    1
    Überblick | Abgrenzung
    2
    Key Pair vs. Signature
    3
    Cipher Suite
    4

    View Slide

  3. 3
    @omilke | Crypto 101
    Entwickler?
    1
    Dev Ops?
    2

    View Slide

  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

    View Slide

  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/

    View Slide

  6. 6
    @omilke | Crypto 101
    meta
    1
    Überblick | Abgrenzung
    2
    Key Pair vs. Signature
    3
    Cipher Suite
    4

    View Slide

  7. https://www.xkcd.com/538/

    View Slide

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

    Awareness Prozesse

    View Slide

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

    View Slide

  10. 10
    @omilke | Crypto 101
    SQL verschlüsselt?

    Authorization: Basic d2lraTpwZWRpYQ==

    Sicherheit durch Geheimhaltung des Schlüssels
    • nicht des Algorithmus
    • Gegenteil: Security By Obscurity

    View Slide

  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

    View Slide

  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

    View Slide

  13. 13
    @omilke | Crypto 101
    Kryptografisch sichere Zufallszahlengenerierung
    • Zufall durch eine Maschine?
    • Seeds für Stream Cipher
    • Salts
    • Noncen
    • Schutz vor Replay

    View Slide

  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

    View Slide

  15. 15
    @omilke | Crypto 101
    Spezifikation

    Implementierung
    Side Channel Attack

    View Slide

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

    View Slide

  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

    View Slide

  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
    !

    View Slide

  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

    View Slide

  20. 20
    @omilke | Crypto 101
    langsam
    speicher-intensiv

    bCrypt

    Argon2id

    PBKDF2


    View Slide

  21. 21
    @omilke | Crypto 101
    Einwegfunktion

    Integrität kann überprüft
    werden

    Unsicherer Transportweg
    • Austausch von Original &
    Neuberechnung Hash
    !
    1010001
    Text
    Hash

    View Slide

  22. 22
    @omilke | Crypto 101
    Unsicherer Transportweg
    • Austausch nicht möglich

    + Secret
    Integrität und Authentizität

    1010001
    0110000
    Text
    HMAC

    View Slide

  23. 23
    @omilke | Crypto 101
    meta
    1
    Überblick | Abgrenzung
    2
    Key Pair vs. Signature
    …oder: was ist ein Trust Anchor?
    3
    Cipher Suite
    4

    View Slide

  24. 24
    @omilke | Crypto 101
    Server
    Client

    View Slide

  25. 25
    @omilke | Crypto 101
    Intermediate
    Certificate
    Server Certificate
    Certificate Authority
    (CA)
    Root
    Certificate
    Client Server

    View Slide

  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

    View Slide

  27. 27
    @omilke | Crypto 101
    Verbindung ist verschlüsselt

    Wie, d. h. mit welchem 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
    !

    View Slide

  28. 28
    @omilke | Crypto 101
    ausgehandelt im Handshake
    • ECDHE-ECDSA-AES256-GCM-SHA384

    Transportverschlüsselung
    • ECDHE-ECDSA-AES256-GCM-SHA384

    View Slide

  29. 29
    @omilke | Crypto 101
    Verbindung ist verschlüsselt
    • AES256-GCM-SHA384

    Woher kommt der Schlüssel?
    • ECDHE-ECDSA-AES256-GCM-SHA384
    ?

    View Slide

  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
    ?

    View Slide

  31. 31
    @omilke | Crypto 101
    Crypto-System
    • Beteiligte Primitiven

    Abhängig vom Protokoll
    • Beispiel TLS 1.2
    − Andere Protokolle mit anderen Primitiven

    View Slide

  32. View Slide

  33. 33
    @omilke | Crypto 101
    bcrypt(pwSaltPepper, 16++)
    !
    Zertifikat = signierter Public Key + meta
    !
    Abgehangene Krypto ♥
    !
    Was liegt meinem Vertrauen zugrunde?
    ?

    View Slide

  34. 34
    @omilke | Crypto 101
    Passwort-Speicherung in DB
    ?
    Online Dienste in Fahrzeugen
    ?
    eigene Passwörter speichern
    ?
    per Email versenden
    ?

    View Slide

  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)

    View Slide

  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

    View Slide

  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/

    View Slide

  38. feedback plz
    Thank
    you
    get in touch
    • https://twitter.com/OliverMilke
    [email protected]
    • Vortrag als Blog-Artikel

    View Slide