Internet Engineering Task Force (IETF) E. Rescorla Request for Comments: 8446 Mozilla Obsoletes: 5077, 5246, 6961 August 2018 Updates: 5705, 6066 Category: Standards Track ISSN: 2070-1721 The Transport Layer Security (TLS) Protocol Version 1.3 Abstract This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery. This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations. Status of This Memo This is an Internet Standards Track document. Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc8446. Table of Contents 1. Introduction 1.1. Conventions and Terminology 1.2. Major Differences from TLS 1.2 1.3. Updates Affecting TLS 1.2 2. Protocol Overview 2.1. Incorrect DHE Share 2.2. Resumption and Pre-Shared Key (PSK) 2.3. 0-RTT Data 3. Presentation Language 3.1. Basic Block Size 3.2. Miscellaneous 3.3. Numbers 3.4. Vectors 3.5. Enumerateds 3.6. Constructed Types 3.7. Constants 3.8. Variants 4. Handshake Protocol 4.1. Key Exchange Messages 4.1.1. Cryptographic Negotiation 4.1.2. Client Hello 4.1.3. Server Hello 4.1.4. Hello Retry Request 4.2. Extensions 4.2.1. Supported Versions 4.2.2. Cookie 4.2.3. Signature Algorithms 4.2.4. Certificate Authorities 4.2.5. OID Filters 4.2.6. Post-Handshake Client Authentication 4.2.7. Supported Groups 4.2.8. Key Share 4.2.9. Pre-Shared Key Exchange Modes 4.2.10. Early Data Indication 4.2.11. Pre-Shared Key Extension 4.3. Server Parameters 4.3.1. Encrypted Extensions 4.3.2. Certificate Request 4.4. Authentication Messages 4.4.1. The Transcript Hash 4.4.2. Certificate 4.4.3. Certificate Verify 4.4.4. Finished 4.5. End of Early Data 4.6. Post-Handshake Messages 4.6.1. New Session Ticket Message 4.6.2. Post-Handshake Authentication 4.6.3. Key and Initialization Vector Update 5. Record Protocol 5.1. Record Layer 5.2. Record Payload Protection 5.3. Per-Record Nonce 5.4. Record Padding 5.5. Limits on Key Usage 6. Alert Protocol 6.1. Closure Alerts 6.2. Error Alerts 7. Cryptographic Computations 7.1. Key Schedule 7.2. Updating Traffic Secrets 7.3. Traffic Key Calculation 7.4. (EC)DHE Shared Secret Calculation 7.4.1. Finite Field Diffie-Hellman 7.4.2. Elliptic Curve Diffie-Hellman 7.5. Exporters 8. 0-RTT and Anti-Replay 8.1. Single-Use Tickets 8.2. Client Hello Recording 8.3. Freshness Checks 9. Compliance Requirements 9.1. Mandatory-to-Implement Cipher Suites 9.2. Mandatory-to-Implement Extensions 9.3. Protocol Invariants 10. Security Considerations 11. IANA Considerations 12. References 12.1. Normative References 12.2. Informative References Appendix A. State Machine Appendix B. Protocol Data Structures and Constant Values B.1. Record Layer B.2. Alert Messages B.3. Handshake Protocol B.3.1. Key Exchange Messages B.3.2. Server Parameters Messages B.3.3. Authentication Messages B.3.4. Ticket Establishment B.3.5. Updating Keys B.4. Cipher Suites Appendix C. Implementation Notes C.1. Random Number Generation and Seeding C.2. Certificates and Authentication C.3. Implementation Pitfalls C.4. Client Tracking Prevention C.5. Unauthenticated Operation Appendix D. Backward Compatibility D.1. Negotiating with an Older Server D.2. Negotiating with an Older Client D.3. 0-RTT Backward Compatibility D.4. Middle-Box Compatibility Mode D.5. Security Restrictions Related to Backward Compatibility Appendix E. Overview of Security Properties E.1. Handshake E.2. Record Layer E.3. Traffic Analysis E.4. Side-Channel Attacks E.5. Replay Attacks on 0-RTT E.6. PSK Identity Exposure E.7. Sharing PSKs E.8. Attacks on Static RSA Acknowledgements Author's Address [NOTE: This file contains the header, abstract, and table of contents of RFC 8446. The full specification text is available at: https://www.rfc-editor.org/rfc/rfc8446 https://www.rfc-editor.org/rfc/rfc8446.txt (text) https://www.rfc-editor.org/rfc/rfc8446.pdf (PDF) Full document: 160 pages, August 2018 Author: Eric Rescorla (Mozilla) DOI: 10.17487/RFC8446 Obsoletes: RFC 5077, RFC 5246, RFC 6961 Updates: RFC 5705, RFC 6066]