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

SSL / TLS erklärt

SSL / TLS erklärt

Introduction to SSL / TLS at code.talks 2014 Hamburg (German)

Christian Heimes

October 10, 2014
Tweet

More Decks by Christian Heimes

Other Decks in Programming

Transcript

  1. $ who am i • Backend Developer bei About You

    – ShopAPI: Python, ElasticSearch, AMQP, Redis, uWSGI... • Python Core Developer – Python 3000 – PEP 369, 370, 452, 456, 466 – SSL, crypto, XML, performance • Python Security Response Team
  2. Ziel des Vortrags • Grundlegendes Verständnis für SSL/TLS • Warum

    ist SSL/TLS sicher? • Was passiert beim Verbindungsaufbau? • … ihr verwendet den Begriff TLS.
  3. Vortrag behandelt nicht • SSL/TLS Konfiguration • Angriffe auf SSL

    • Erstellung von Zertifikaten • Mathematik
  4. Literatur • Bulletproof SSL and TLS (Ivan Ristić, 2014) •

    Cryptography Engineering 2nd Edition (Ross Anderson, 2008) • Security Engineering (Ferguson, Schneier, Kohno, 2010) • Geheime Botschaften / The Code Book (Simon Singh, 1999) • Coursera: Cryptography I (Onlinekurs von Dan Boneh)
  5. Entwicklung von SSL/TLS ursprünglich entwickelt von Netscape SSL 1.0 unveröffentlicht

    SSL 2.0 1995 SSL 3.0 1996 TLS 1.0 1999 (IETF Standard, SSL 3.1) TLS 1.1 2006 TLS 1.2 2008 TLS 1.3 in Entwicklung
  6. Verwendung • HTTPS, SPDY • Email (ssmtp, imaps, pop3s) •

    Jabber / XMPP • Datenbankverbindung (LDAP, MySQL, Postgres, MongoDB) • uvm. SSH (sftp, scp) ist ein anderes Protokoll
  7. Ziele von TLS • verschlüsselte Kommunikation • Schutz vor Manipulation

    • Authentifizierung des Kommunikationspartners
  8. Verschlüsselte Kommunikation • Eine effiziente Verschlüsselung ist nur über symmetrische

    Algorithmen möglich. • Beide Seiten müssen sich auf einen gemeinsamen Schlüssel einigen. • Der Schlüssel muss unvorhersagbar sein und regelmäßig ausgetauscht werden. Problem: Schlüsselaustausch
  9. Schutz vor Manipulation • Verschlüsselung schützt nicht vor gezielter Manipulation!

    (Malleability von Verschlüsselungsalgorithmen) • Verbindungsaufbau ist besonders gefährdet, zum Beispiel für downgrade attacks. • Erkennung von Manipulation durch 'Message Authentication Code' (MAC) oder authentifizierten Verschlüsselungsmodus (AEAD). Problem: MAC und AEAD benötigen auch einen Schlüssel.
  10. Authentifizierung des Kommunikationspartners • Ein Service muss sich eindeutig und

    fälschungssicher beim Client ausweisen. (umgekehrt in der Regel über Passwörter) • Kein Dritter darf sich als ein Service ausgeben dürfen. • Authentifizierung muss für viele Millionen Services (Webseiten, Mailserver) skalieren. • 'Ausweis' muss zurückgezogen werden können (Diebstahl, Eigentümerwechsel der Domain) Problem: Sichere Ausweise und effiziente Verteilung.
  11. Alice & Bob • Alice • Bob • Eve (eavesdropper)

    • Chuck (malicious participant) • Mallory (malicious attacker)
  12. Passiver Mithörer Alice → Bob Wir treffen uns morgen um

    10 im Park. Aufgabe Eve kann den Klartext nicht lesen oder Daten entschlüsseln.
  13. Aktiver Angreifer Alice → Bob Wir treffen uns morgen um

    10 im Park. Mallory → Bob Wir treffen uns morgen um 12 im Park. Aufgabe Mallory kann den Datensatz nicht unbemerkt ändern.
  14. Replay Attacks Alice → Alice Bank Überweise 50.00 EUR von

    Kreditkarte 1234 an Chuck. Mallory → Alice Bank Überweise 50.00 EUR von Kreditkarte 1234 an Chuck. Überweise 50.00 EUR von Kreditkarte 1234 an Chuck. Überweise 50.00 EUR von Kreditkarte 1234 an Chuck. Aufgabe: Mallory kann eine aufgezeichnete Übertragung später nicht unbemerkt wiederspielen.
  15. Man-in-the-middle Angriffen Bob → Alice Mallory gibt sich gegenüber Alice

    als Bob aus, und umgekehrt. Bob → Mallory → Alice Aufgabe: Niemand darf sich als ein anderer ausgeben können.
  16. Probabilistische Verschlüsselung Eve darf nicht vom verschlüsselten Text auf den

    Inhalt eines zweiten verschlüsselten Texts schließen dürfen. Aufgabe: Verschlüsselte Nachrichten dürfen selbst bei gleichem Inhalt nicht deterministisch sein, sondern ununterscheidbar (probabilistisch).
  17. Unleugbarkeit (non-repudiation) Alice → Chuck Hiermit überweise ich dir 50

    EUR. Chuck → Alice Ich bin nicht Chuck. Aufgabe / Problem: Ein Kommunikationspartner kann seine Idendität nicht verleugnen.
  18. Ungeschützt • Eve kann feststellen, wenn und wann Alice mit

    Bob kommuniziert. • Eve kann Länge der Nachricht und Zeitverhalten sehen. • Mallory kann die Kommunikation jederzeit stören oder unterbrechen.
  19. Verschlüsselung und Manipulationsschutz • trivial (wenn man vom Schlüsselaustausch absieht)

    • reichhaltige Auswahl effizienter Algorithmen – Stromchiffre: RC4, Salsa20, ChaCha – Blockchiffre: AES, 3DES, Camellia – MAC: HMAC mit SHA-1, SHA-2 – AEAD: Galois/Counter Mode (GCM)
  20. AES • NIST-Standard seit 2001 • Blockchiffre mit 16 Bytes

    Blockgröße • Schlüsselgröße 128, 196, 256 Bit. • performant in Software und Hardware • AES-NI Befehlssatz in modernen CPUs (>700 MB/sec) Problem: AES kann nur 16 Bytes verschlüsseln, benötigt daher einen Betriebsmodus und Padding.
  21. CBC (cipher block chaining) "CBC encryption" by WhiteTimberwolf (SVG version)

    - PNG version. Licensed under Public domain via Wikimedia Commons - http://commons.wikimedia.org/wiki/File:CBC_encryption.svg#mediaviewer/File:CBC_encryption.svg Cipher Block Chaining (CBC) mode encryption block cipher encryption Key Ciphertext Plaintext block cipher encryption Key Ciphertext Plaintext block cipher encryption Key Ciphertext Plaintext Initialization Vector (IV)
  22. HMAC & GCM Blockmodus • HMAC(Schlüssel, Nachricht, Algorithmus) → Prüfsumme

    • AES mit Galois/Counter Mode berechnet verschlüsselten Text und Prüfsumme gleichzeitig. • Zusätzliche Hardwarebeschleunigung mit AES-NI. AES-GMC ist schneller und sicherer als AES-CBC + HMAC (BEAST padding oracle attack durch MAC-then-encrypt).
  23. Mehrere Schlüssel & Replay-Attacks • Es werden unterschiedliche Schlüssel benötigt:

    – symmetrische Verschlüsselung – HMAC / AEAD – Schutz des Verbindungsaufbau • Verhinderung von Replay-Attacks ohne persistente Daten – Datenbank mit allen jemals verwendeten Schlüsseln ist zu aufwendig und ein Sicherheitsrisiko.
  24. pre master secret • Client sendet 32 Bytes Zufallszahlen an

    den Server. • Server sendet 32 Bytes Zufallszahlen an den Client. • Client und Server tauschen ein pre master secret aus. master_secret = PRF(pre_master_secret, “master secret“, client_random + server_random) key_block = PRF(master_secret, “key expansion“, server_random + client_random)
  25. Asymmetrische (public-key) Kryptographie Privater Schlüssel / öffentlicher Schlüssel • Asymmetrische

    Verschlüsselung – RSA • Signaturverfahren (digital signature) – RSA, DSA, ECDSA • Schlüsselaustausch (key agreement) – DH, ECDH
  26. Schlüsselaustausch mit RSA • Client erzeugt pre master secret. •

    Client verschlüsselt das pre master secret mit dem öffentlichen RSA-Schlüssel des Servers. • Client sendet das verschlüsselte Geheimnis an den Server. • Server entschlüsselt das Geheimnis mit seinem privaten RSA- Schlüssel. • Server verschlüsselt Prüfsummen mit dem master secret und beweist damit den Besitz des privaten Schlüssels.
  27. RSA Cipher Suite TLS_RSA_WITH_AES_128_GCM_SHA256 • TLS Cipher suite • Schlüsselaustausch

    und Authentifizierung über RSA • Verschlüsselung mit AES-128 im Betriebsmodus GCM • SHA-256 ist Hashfunktion für MAC
  28. Schwachstelle beim RSA Schlüsselaustausch Falls der private Schlüssel einer dritten

    Partei in die Hände fällt (Diebstahl, Sicherheitslücke, Durchsuchungsbefehl), so kann diese alle Sitzungsschlüssel entschlüsseln. Dies hat zur Folge, dass ein passiver Mithörer sämtliche Kommunikation entschlüsseln kann. Davon betroffen sind auch verschlüsselte Daten, die ggf. über Jahre aufgezeichnet worden sind.
  29. Signaturverfahren "Digital Signature diagram" by Acdx - Own work. Licensed

    under Creative Commons Attribution-Share Alike 3.0 via Wikimedia Commons - http://commons.wikimedia.org/wiki/File:Digital_Signature_diagram.svg#mediaviewer/File:Digital_Signature_diagram.svg Data Hash function 101100110101 Hash Encrypt hash using signer's private key 111101101110 Signature Certificate Attach to data Digitally signed data Digitally signed data Data Hash function 101100110101 Hash 111101101110 Signature Decrypt using signer's public key 101100110101 Hash ? If the hashes are equal, the signature is valid. Signing Verification
  30. Schlüsselaustausch (key agreement) "Public key shared secret". Licensed under Public

    domain via Wikimedia Commons - http://commons.wikimedia.org/wiki/File:Public_key_shared_secret.svg#mediaviewer/File:Public_key_shared_secret.svg Alice's private key Combine keys Bob's public key 751A696C 24D97009 Alice's public key Bob's private key Alice Alice and Bob's shared secret Bob Combine keys 751A696C 24D97009 Alice and Bob's shared secret
  31. Schlüsselaustausch p = 7, g = 3 C_priv = 23

    C_pub = 3^23 mod 7 = 5 4^23 mod 7 = 2 p = 7, g = 3 S_priv = 16 S_pub = 3^16 mod 7 = 4 5^16 mod 7 = 2
  32. Schlüsselaustausch nach Diffie-Hellmann • Server bestimmt DH-Parameter. • Server erzeugt

    privaten und öffentlichen Schlüssel. • Server sendet Parameter und öffentlichen Schlüssel an Client. • Client erzeugt privaten und öffentlichen Schlüssel. • Client sendet öffentlichen Schlüssel an Server. • Beide berechnen pre master key.
  33. Authentifizierter DH-Austausch • … • Server signiert seinen öffentlichen DH-Schlüssel

    mit seinem privaten RSA- oder ECDSA-Schlüssel. • Server sendet DH-Parameter, öffentlichen Schlüssel und die Signatur an den Client. • … • Client validiert Signatur mit dem öffentlichen RSA oder ECDSA- Schlüssel des Servers.
  34. Elliptische-Kurven-Kryptographie ECRYPT2 Yearly Report on Algorithms and Keysizes (2008-2009) Symmetrisch

    RSA / DH ECDH 80 1024 160 112 2048 224 128 3072 256 192 7680 384 256 15360 512
  35. Cipher Suite TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 • TLS Cipher suite • Schlüsselaustausch mit

    ECDHE • Authentifizierung über RSA • Verschlüsselung mit AES-256 im Betriebsmodus GCM • SHA-384 ist Hashfunktion für MAC
  36. TLS Verbindungsaufbau • Protokollversion und Verbindungsparameter aushandeln – SSL/TLS Version,

    Cipher Suites • Zertifikate austauschen und prüfen – Server sendet Endzertifikat und Zwischenzertifikate • Sitzungsschlüssel aushandeln – RSA oder Diffie-Hellmann • Validierung des Verbindungsaufbau (verschlüsselt) – Validierung Prüfsumme alle Daten des Verbindungsaufbaus
  37. X.509 Zertifikate • ITU-Standard von 1988 für Public Key Infrastructure

    (PKI) • aktuelle Version X.509v3 • ASN.1-Format • hierarchische Struktur von Zertifizierungsstellen (CA) – Stammzertifikate beglaubigen weitere Zertifikate
  38. ASN.1 (Abstract Syntax Notation One) • ISO, IEC und ITU-Standard

    von 1984 • verschiedene Codierungen – Basic Encoding Rules (BER) – Canonical Encoding Rules (CER) – Distinguished Encoding Rules (DER) – XML Encoding Rules (XER) – Privacy-enhanced Mail (PEM, base64 encoded DER) • Object Identifier (OID) – 1.3.6.1.5.5.7.3.1 TLS Web Server Authentication – 1.2.840.113549.1.1.11 sha256WithRSAEncryption
  39. Public Key Infrastructure • hierarchische Struktur, Zertifikate bilden eine Vertrauenskette

    • Stammzertifikate (root CA certs) – Im Browser oder Betriebsystem eingebaut. • Zwischenzertifikate (intermediate CA certs) – in der Regel ein bis drei Zwischenzertifikate • Endzertifikate (leaf certificate) des Servers
  40. Stammzertifikate You Won’t Be Needing These Any More: Removing Unused

    Certificates From Trust Stores, Perl, Fahl, Smith (Jan 2014) Windows 377 OSX / iOS 207 Mozilla 172 Linux 159 Android 146
  41. Aufbau eines X.509 Zertifikats • Zertifikat – Version – Seriennummer

    – Inhaber (Subject) – Aussteller (Issuer) – Gültigkeit von/bis – öffentlicher Schlüssel (Subject Public Key Information) – ...
  42. Aufbau eines X.509 Zertifikats • Zertifikate (mehr) – Erweiterung (X509v3

    extensions) • Basic Constraints • Subject Alternative Names • Key Usage • … • Signatur des Ausstellers
  43. Erweiterungen (X509v3 Extensions) • Basic Constraints • Subject Alternative Name

    • Certificate Policies • Key Usage • Extended Key Usage • Authority Key Identifier • Subject Key Identifier • CRL Distribution Points • Authority Information Access • Name Constraints • Policy Constraints
  44. $ openssl x509 -in python.org.pem -text -noout Certificate: Data: Version:

    3 (0x2) Serial Number: 01:bb:6f:00:12:2b:17:7f:36:ca:b4:9c:ea:8b:6b:26 Signature Algorithm: sha256WithRSAEncryption Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 Extended Validation Server CA Validity Not Before: Sep 5 00:00:00 2014 GMT Not After: Sep 9 12:00:00 2016 GMT Subject: businessCategory=Private Organization/1.3.6.1.4.1.311.60.2.1.3=US/1.3.6.1.4.1.311.60.2.1.2=Delaware/serialNumb er=3359300/street=16 Allen Rd/postalCode=03894-4801, C=US, ST=NH, L=Wolfeboro,, O=Python Software Foundation, CN=www.python.org Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:ad:52:77:c7:a4:eb:5e:a0:8a:99:c4:6b:1a:47: ... Exponent: 65537 (0x10001)
  45. X509v3 extensions: X509v3 Authority Key Identifier: keyid:3D:D3:50:A5:D6:A0:AD:EE:F3:4A:60:0A:65:D3:21:D4:F8:F8:D6:0F X509v3 Subject Key

    Identifier: 4D:67:E6:29:38:6E:20:18:64:65:7E:01:DF:23:5F:F8:3A:41:AA:89 X509v3 Subject Alternative Name: DNS:www.python.org, DNS:python.org, DNS:pypi.python.org, ... X509v3 Key Usage: critical Digital Signature, Key Encipherment X509v3 Extended Key Usage: TLS Web Server Authentication, TLS Web Client Authentication X509v3 CRL Distribution Points: Full Name: URI:http://crl3.digicert.com/sha2-ev-server-g1.crl Full Name: URI:http://crl4.digicert.com/sha2-ev-server-g1.crl X509v3 Certificate Policies: Policy: 2.16.840.1.114412.2.1 CPS: https://www.digicert.com/CPS Authority Information Access: OCSP - URI:http://ocsp.digicert.com CA Issuers - URI:http://cacerts.digicert.com/DigiCertSHA2ExtendedValidationServerCA.crt X509v3 Basic Constraints: critical CA:FALSE
  46. Signature Algorithm: sha256WithRSAEncryption 6c:4e:03:0e:15:43:fc:c0:75:69:80:2c:e6:fd:f4:13:ac:aa: 78:9f:17:1b:f6:6f:60:91:35:b5:69:12:ae:86:50:18:83:f0: 94:43:c0:c2:d0:88:b5:5e:a3:a8:95:39:86:8b:a3:48:c9:7d: 97:7f:e4:56:aa:1e:d4:cc:af:90:df:46:36:44:61:9b:ff:8e: ee:65:a8:9f:f5:66:88:94:a1:a7:e3:40:f5:9b:3c:f2:1a:3a: df:4c:c4:92:16:5a:ed:c3:28:3f:df:23:3c:28:df:34:d0:2c: f9:1e:05:e7:1c:3d:aa:22:e6:1c:62:a5:d1:45:2e:84:ec:f1:

    07:07:50:e6:87:bd:a2:08:01:d8:c1:44:e0:7d:c7:ea:51:65: 44:67:6e:84:42:13:f8:2e:4e:3e:86:cd:94:26:c0:14:9c:c5: a3:ef:f6:e7:93:c2:d1:fc:a6:6e:98:bb:ae:bf:74:4a:96:64: 75:42:0f:bd:00:28:5a:7e:20:82:16:b6:b5:53:17:e0:ce:7b: c5:e6:87:09:ce:be:a7:36:66:1c:ea:4d:48:99:a8:a9:46:ae: dc:fc:eb:b0:51:34:ea:36:a4:76:15:c7:87:9a:9a:a5:90:0d: 80:be:37:6f:4a:fc:27:38:3b:b1:dd:03:db:32:e7:08:68:95: eb:51:4c:1f ASN.1 JavaScript decoder
  47. Validierung von Zertifikat • Server sendet Endzertifikat und Zwischenzertifikate •

    Client sucht Stammzertifikat im Trust Store und baut Vertrauenskette auf. • Client prüft Vertrauenskette von Stamm- zu Endzertifikat. – Signaturen – Gültigskeitsdatum – Revocations – Extensions (critical, policies, constraints ...)
  48. Stammzertifikat • Subject: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance

    EV Root CA • Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV Root CA • Subject Key Identifier: B1:3E:C3:69:03:F8:BF:47:... • Authority Key Identifier: B1:3E:C3:69:03:F8:BF:47:... • Basic Contraints: CA:TRUE • Signature des Stammzertifikats (self-signed certificate)
  49. Zwischenzertifikat • Subject: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 Extended

    Validation Server C • Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV Root CA • Subject Key Identifier: 3D:D3:50:A5:D6:A0:AD:EE:... • Authority Key Identifier: B1:3E:C3:69:03:F8:BF:47:... • Basic Contraints: CA:TRUE, pathlen:0 • Signatur des Stammzertifikats
  50. Endzertifikat • Subject: businessCategory=PrivateOrganization/..., C=US, ST=NH, L=Wolfeboro,, O=Python Software Foundation,

    CN=www.python.org • Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 Extended Validation Server C • Subject Key Identifier: 4D:67:E6:29:38:6E:20:18:... • Authority Key Identifier: 3D:D3:50:A5:D6:A0:AD:EE:... • Basic Contraints: CA:FALSE • Signatur des Zwischenzertifikats
  51. Endzertifikat – Hostname Match • Hostname(n) im Zertifikat muss mit

    dem Hostname des Service übereinstimmen. • Hostnamen stehen im Subject Alternative Name (SAN) Feld oder im CN (common name) des Inhabers (subject). • … nicht so trivial, wie man denkt. Meine CVEs und Issues: – Python: CVE-2013-4238, CVE-2013-2099, Issue #17997 – PHP: CVE-2013-4248 – Firefox / NSS: CVE-2014-1492 / MFSA-2014-45 – OpenSSL 1.0.2dev IDNA bug
  52. Zertifikate sperren • CRL (certification revocation lists) • OCSP (Online

    Certificate Status Protocol) – OCSP Stapling, MustStaple extension • Certificate Pinning – CRLSets (Chrome) – OneCRL (Mozilla) • DANE (DNS-based Authentication of Named Entities)