Hallo zusammen, das Transport Layer Security (TLS) Protocoll in der Version 1.3 ist nach einigen Iterationen [0] nun als RFC 8446 [1] final. Zeit, sich mit den Änderungen/Neuerungen zu befassen - gehen wir also in medias res - alle bekannten Schwachstellen der Vorgängerversionen sollen ausgemerzt werden - es soll eine Latenzminimierung (interessant/relevant für Edge Computing, wie IoT Geräte) - Optimierung der Architektur, um das Nachrüsten von Algorithmen (wie bspw. SIDH - Supersingular Isogeny Deffie-Hellman, welcher auch Quantencomputern standhalten soll) zu erleichtern. - neues, schlankeres Handshake-Verfahren - neue Signaturalgorithmen - Änderung des konzeptionellen Aufbaues einer Cipher Suite - bei den Chipher Suites wird aufgeräumt - statisches RSA fällt weg - DSA Cipher Suites fallen weg - Diffie-Hellmann (DH) Cipher Suites fallen weg (nicht Elliptische Kurven, ECDH) - unsichere Hashfunktionen sind nicht mehr zulässig - SHA1 fälllt weg - MD5 fällt weg - Stream-Verschlüsselung mit RC4 fällt weg - Blockchiffre-Modus CBC fällt weg - es werden alle Handshake-Nachrichten (bis auf ServerHello Initialisierung) verschlüsselt - vorher im Klartext übertragene Protokollerweiterungen können als EncryptedExtension-Nachricht verschlüsselt übertragen werden - es wird auf überflüssige Nachrichten (wie Change-Cipher-Spec, außer bei Mittelbox-Kompatibilität) verzichtet - alle nicht AEAD Cipher werden entfernt (Authenticated Encryption with Associated Data, Verschlüsselung mit integrierter Vorkehrung zur Gewährleistung der Datenintegrität). - Kompression wird abgeschafft - eine Neuverhandlung der Protokollversion (downgrade und upgrade) ist prinzipiell ausgeschlossen, eine Nachtverhandlung (ClientHello) auf bspw. 1.2 wird mit der generischen Meldung "unexpected_message" beendet - Der neue TLS 1.3 Aufbau der Cipher Suite trennt Authentifizierungs- und Schlüsselaustauschverfahren von dem Algorithmus der Verbindungsabsicherung (TLS Record Protection Algorithm) und von der Hash-Funktion. Es wird weder der Schlüssel- austausch- noch der Authentifizierungsmechanismus vorgegeben (nun vereinbarte optionen) - Neuer Aufbau der Cipher Suite ermöglicht Forward Secrecy trotz 0-Rount Trip Time Resumption (RTT, beschleunigte Wiederaufnahme einer abgebauten Verbindung) mittels beim erstmalingen Verbindungsaufbau erzeugten Schlüssel - TLS 1.3 Cipher Suite in openssl nach [2]: - TLS13-AES-256-GCM-SHA384 - TLS13-AES-128-GCM-SHA256 - TLS13-AES-128-CCM8-SHA256 - TLS13-AES-128-CCM-SHA256 - TLS13-CHACHA20-POLY1305-SHA256 - symmetrische Stream Cihper CHAHA20 - message authentication code (MAC) POLY1305 - Hashfunktion SHA256 - neue HMAC-based Key (Extract-and-Expand) Derivation Function (HKDF, RFC 5869) - Signaturerstellung (im Schlüsselaustauschverfahren) - Edwards-Curve Digital Signature Algorithm (EdDSA, RFC 8032) - Ed25519 (SHA512/256 und Curve 25519) - Ed448 (Ed448-Goldilocks) - Elliptic Curve Digital Signature Algorithm (ECDSA, u.a. RFC 5656) - RSA mit zugehöriger Hashfunktion (außer bspw. MD5) - Padding neben PKCS #1 (Version 1.5 RFC 2313) nun auch PSS (Probabilistic Signature Scheme, u.a. RFC 8017, obsolet RFC 2437) Padding - SHA1 für Signatur eines Zertifikates weiterhin noch erlaubt, nicht jedoch (mit Ausnahme bei Rückwärtskompatibilität zu TLS 1.2) für signierten TLS-Handshake - es können Zertifikate vom Typ X.509v3 (bspw. in der DFN-PKI, siehe [3]) verwendet werden - Einsatz von OpenPGP Zertifikate ist untersagt - Schlüsselvereinbarung (mit Forward Secrecy) nur noch via - Elliptic Curve Diffie-Hellmann Exchange (ECDHE) - Finite-Field Diffie-Hellmann Exchange (Kompatibilität mit älteren Client) - Pre Shared Key (PSK, Wiederherstellung einer Sitzung) - PSK mit (EC)DH (ebenfalls zur Wiederaufnahme) - kein MtE (MAC then Encrypt), Nutzung von AEAD (Authenticated Encryption with Associated Data) -Cipher - Entschlüsselungsfehler werden nichts sagend mit "bad_record_mac" quittiert, die Verbindung wird beendet - TLS 1.3 Handshake erspart einen ganzen Roundtrip (nur noch 3 statt 6 Schritte), einige Hundert Millisekunden schneller (ClientHello: Liste unterstützter Cipher + Versuch Schlüsselvereinbarungsprotokoll des Servers zu erraten und passenden mitzuliefern ServerHello: Wählt Protokoll der angebotenen Schlüsselvereinbarung und sendet eigenen Key-Share, Zertifikat und ServerFinished) - Symmetrische Verschlüsselung bereits nach einem Roundtrip (1-RTT) Eine Übersicht über die Client, welche bereits TLS 1.3 unterstützen, findet sich auf [4] VG Bernd p.s.: Nein ich habe mir noch nicht den finalen RFC durchgelesen, sondern mal eben den Artikel aus der aktuelle iX 8/2018 [0] https://datatracker.ietf.org/doc/rfc8446/ [1] https://tools.ietf.org/rfc/rfc8446.txt [2] https://wiki.openssl.org/index.php/TLS1.3 [3] https://www.pki.dfn.de/fileadmin/PKI/anleitungen/DFN-PKI-Zertifikatprofile_G... [4] https://caniuse.com/#feat=tls1-3 -- Bernd Kohler IT Center Abteilung: Netze RWTH Aachen University Wendlingweg 10 52074 Aachen Tel: +49 241 80-29793 Fax: +49 241 80-22666 kohler@itc.rwth-aachen.de https://www.itc.rwth-aachen.de