TLS Fallback Signaling Cipher Suite Value (SCSV) for Preventing Protocol Downgrade Attacks

Similar documents
Internet Engineering Task Force (IETF) Category: Standards Track. A. Langley Google Inc. E. Stephan Orange July 2014

Internet Engineering Task Force (IETF) ISSN: January Suite B Profile for Transport Layer Security (TLS)

Internet Engineering Task Force (IETF) Request for Comments: Google Inc. October 2018

Internet Engineering Task Force (IETF) Category: Standards Track October 2015 ISSN:

Internet Engineering Task Force (IETF) Request for Comments: 8516 Category: Standards Track January 2019 ISSN:

Internet Engineering Task Force (IETF) Updates: 5451 March 2012 Category: Standards Track ISSN:

Internet Engineering Task Force (IETF) Category: Informational ISSN: October 2013

Internet Engineering Task Force (IETF) Request for Comments: 6961 June 2013 Category: Standards Track ISSN:

Internet Engineering Task Force (IETF) Request for Comments: ISSN: M. Petit-Huguenin Impedance Mismatch January 2015

Internet Engineering Task Force (IETF) Request for Comments: 7504 June 2015 Updates: 1846, 5321 Category: Standards Track ISSN:

Internet Engineering Task Force (IETF) Request for Comments: 7264 Category: Standards Track. Y. Zhang CoolPad / China Mobile June 2014

Internet Engineering Task Force (IETF) RTFM, Inc. January 2011

Internet Engineering Task Force (IETF) Request for Comments: Category: Standards Track. Cisco May 2012

Internet Engineering Task Force (IETF) Request for Comments: Category: Best Current Practice ISSN: March 2017

Internet Engineering Task Force (IETF) Request for Comments: ISSN: October 2011

Internet Engineering Task Force (IETF) Request for Comments: 6379 Obsoletes: 4869 Category: Informational October 2011 ISSN:

Internet Engineering Task Force (IETF) Request for Comments: 8142 Category: Standards Track April 2017 ISSN:

Internet Engineering Task Force (IETF) Category: Informational. May IEEE Information Element for the IETF

Internet Engineering Task Force (IETF) January 2014

Internet Engineering Task Force (IETF) Request for Comments: 6441 BCP: 171 November 2011 Category: Best Current Practice ISSN:

Internet Engineering Task Force (IETF) Request for Comments: Category: Standards Track. July 2014

Internet Engineering Task Force (IETF) Request for Comments: Category: Standards Track May 2011 ISSN:

Internet Engineering Task Force (IETF) Request for Comments: 8035 Updates: 5761 November 2016 Category: Standards Track ISSN:

Internet Engineering Task Force (IETF) Cisco Systems, Inc. April 2015

Internet Engineering Task Force (IETF) Category: Standards Track. March 2017

Internet Engineering Task Force (IETF) Category: Informational March 2016 ISSN:

Internet Engineering Task Force (IETF) Request for Comments: Google K. Patel Cisco Systems August 2015

Internet Engineering Task Force (IETF) Request for Comments: ISSN: November 2013

Internet Engineering Task Force (IETF) Request for Comments: November 2010

Internet Engineering Task Force (IETF) Updates: 6376 January 2018 Category: Standards Track ISSN:

Internet Engineering Task Force (IETF) Request for Comments: ISSN: March 2016

Internet Engineering Task Force (IETF) Category: Standards Track ISSN: March 2010

Internet Engineering Task Force (IETF) Request for Comments: Category: Standards Track ISSN: September 2015

Internet Engineering Task Force (IETF) Updates: 4326 June 2014 Category: Standards Track ISSN:

Internet Engineering Task Force (IETF) Category: Standards Track March 2015 ISSN:

Internet Engineering Task Force (IETF) Request for Comments: 8437 Updates: 3501 August 2018 Category: Standards Track ISSN:

Updates: 6126 May 2015 Category: Experimental ISSN: Extension Mechanism for the Babel Routing Protocol

Clarifications for When to Use the name-addr Production in SIP Messages

Internet Engineering Task Force (IETF) Category: Best Current Practice. Cisco Systems July IPv6 Prefix Length Recommendation for Forwarding

Internet Engineering Task Force (IETF) Request for Comments: 6522 STD: 73 January 2012 Obsoletes: 3462 Category: Standards Track ISSN:

Internet Engineering Task Force (IETF) Request for Comments: 7725 Category: Standards Track February 2016 ISSN:

Internet Engineering Task Force (IETF) Request for Comments: Category: Standards Track October 2018 ISSN:

Internet Engineering Task Force (IETF) Category: Informational. August IANA Registration for the Cryptographic Algorithm Object Identifier Range

Internet Engineering Task Force (IETF) Request for Comments: ISSN: April 2011

Internet Engineering Task Force (IETF) Request for Comments: ISSN: August 2010

Internet Engineering Task Force (IETF) Request for Comments: ISSN: March 2018

Internet Engineering Task Force (IETF) Category: Standards Track ISSN: January 2011

Internet Engineering Task Force (IETF) Category: Standards Track. Cisco Systems, Inc. J. Scudder Juniper Networks September 2016

Internet Engineering Task Force (IETF) Request for Comments: 7189 Category: Standards Track March 2014 ISSN:

Applicability Statement: DNS Security (DNSSEC) DNSKEY Algorithm Implementation Status

Internet Engineering Task Force (IETF) Request for Comments: 7881 Category: Standards Track. Big Switch Networks July 2016

Internet Engineering Task Force (IETF) Request for Comments: 7973 Category: Informational ISSN: November 2016

Internet Engineering Task Force (IETF) Request for Comments: Category: Standards Track. Juniper July 2017

Moving the Undeployed TCP Extensions RFC 1072, RFC 1106, RFC 1110, RFC 1145, RFC 1146, RFC 1379, RFC 1644, and RFC 1693 to Historic Status.

Internet Engineering Task Force (IETF) Request for Comments: ISSN: January 2010

Internet Engineering Task Force (IETF) Request for Comments: 8186 Category: Standards Track. June 2017

Internet Engineering Task Force (IETF) Request for Comments: 7192 Category: Standards Track April 2014 ISSN:

Internet Engineering Task Force (IETF) Request for Comments: 8336 Category: Standards Track. March 2018

Internet Engineering Task Force (IETF) Updates: 5066 February 2014 Category: Standards Track ISSN:

Internet Engineering Task Force (IETF) Request for Comments: Category: Standards Track. January 2010

Internet Engineering Task Force (IETF) Request for Comments: 8441 Updates: 6455 September 2018 Category: Standards Track ISSN:

Internet Engineering Task Force (IETF) Request for Comments: ISSN: May 2018

Internet Engineering Task Force (IETF) Updates: 5614 October 2013 Category: Experimental ISSN:

Internet Engineering Task Force (IETF) Request for Comments: 7982 Category: Standards Track. V. Singh callstats.io September 2016

Internet Engineering Task Force (IETF) Request for Comments: 6725 Category: Standards Track August 2012 ISSN:

Internet Engineering Task Force (IETF) Request for Comments: 7809 Updates: 4791 March 2016 Category: Standards Track ISSN:

Internet Engineering Task Force (IETF) Huawei Technologies November 2013

Internet Engineering Task Force (IETF) Request for Comments: Category: Standards Track ISSN: February 2016

Internet Engineering Task Force (IETF) July Transport Layer Security (TLS) Cached Information Extension

Internet Engineering Task Force (IETF) Category: Standards Track December 2012 ISSN:

Internet Engineering Task Force (IETF) Request for Comments: 7319 BCP: 191 July 2014 Category: Best Current Practice ISSN:

Internet Engineering Task Force (IETF) Request for Comments: 6470 Category: Standards Track February 2012 ISSN:

Internet Engineering Task Force (IETF) Request for Comments: 6594 Category: Standards Track April 2012 ISSN:

Internet Engineering Task Force (IETF) Category: Standards Track. February 2012

Internet Engineering Task Force (IETF) Request for Comments: 5736 Category: Informational. ICANN January 2010

Category: Standards Track May Transport Layer Security Protocol Compression Methods

Internet Engineering Task Force (IETF) Request for Comments: March 2012

Internet Engineering Task Force (IETF) Category: Standards Track

Internet Engineering Task Force (IETF) Request for Comments: November 2015

Internet Engineering Task Force (IETF) Request for Comments: 8069 Category: Informational February 2017 ISSN:

Internet Engineering Task Force (IETF) Request for Comments: 7403 Category: Standards Track November 2014 ISSN:

Internet Engineering Task Force (IETF) Huawei Technologies Co., Ltd.

Internet Engineering Task Force (IETF) Category: Standards Track March 2011 ISSN:

Internet Engineering Task Force (IETF) Request for Comments: 7537 Updates: 4379, L. Andersson S. Aldrin Huawei Technologies May 2015

Internet Engineering Task Force (IETF) Category: Standards Track. June 2016

Internet Engineering Task Force (IETF) Request for Comments: Category: Standards Track ISSN: July 2014

Internet Engineering Task Force (IETF) Request for Comments: 7791 Category: Standards Track. March 2016

Internet Engineering Task Force (IETF) Category: Informational. July Reclassification of Suite B Documents to Historic Status

Internet Engineering Task Force (IETF) Category: Standards Track. G. Zorn, Ed. Network Zen D. Miles Google B. Lourdelet Juniper Networks April 2013

Request for Comments: 7314 Category: Experimental July 2014 ISSN: Extension Mechanisms for DNS (EDNS) EXPIRE Option.

Internet Engineering Task Force (IETF) Category: Informational. August Using Trust Anchor Constraints during Certification Path Processing

Internet Engineering Task Force (IETF) Request for Comments: 6061 Category: Informational January 2011 ISSN:

Internet Engineering Task Force (IETF) Request for Comments: 5917 Category: Informational June 2010 ISSN:

Internet Engineering Task Force (IETF) Request for Comments: 6028 Category: Experimental ISSN: October 2010

Internet Engineering Task Force (IETF) Category: Standards Track. Enterprise Architects February 2012

Intended status: Informational Expires: June 6, 2019 A. Hutton Atos R. Jesske Deutsche Telekom T. Stach Unaffiliated December 3, 2018

Internet Engineering Task Force (IETF) Request for Comments: 8050 Category: Standards Track ISSN: May 2017

October 4, 2000 Expires in six months. SMTP Service Extension for Secure SMTP over TLS. Status of this Memo

Internet Engineering Task Force (IETF) Updates: 5885 Category: Standards Track July 2016 ISSN:

Internet Engineering Task Force (IETF) Category: Standards Track ISSN: July 2012

Transcription:

Internet Engineering Task Force (IETF) B. Moeller Request for Comments: 7507 A. Langley Updates: 2246, 4346, 4347, 5246, 6347 Google Category: Standards Track April 2015 ISSN: 2070-1721 Abstract TLS Fallback Signaling Cipher Suite Value (SCSV) for Preventing Protocol Downgrade Attacks This document defines a Signaling Cipher Suite Value (SCSV) that prevents protocol downgrade attacks on the Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) protocols. It updates RFCs 2246, 4346, 4347, 5246, and 6347. Server update considerations are included. Status of This Memo This is an Internet Standards Track document. This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741. Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc7507. Copyright Notice Copyright (c) 2015 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust s Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Moeller & Langley Standards Track [Page 1]

Table of Contents 1. Introduction........................ 2 2. Protocol Values....................... 3 3. Server Behavior....................... 4 4. Client Behavior....................... 4 5. Operational Considerations................. 5 6. Security Considerations................... 6 7. IANA Considerations..................... 6 8. References......................... 7 8.1. Normative References.................. 7 8.2. Informative References................. 7 Acknowledgements........................ 8 Authors Addresses....................... 8 1. Introduction To work around interoperability problems with legacy servers, many TLS client implementations do not rely on the TLS protocol version negotiation mechanism alone but will intentionally reconnect using a downgraded protocol if initial handshake attempts fail. Such clients may fall back to connections in which they announce a version as low as TLS 1.0 (or even its predecessor, Secure Socket Layer (SSL) 3.0) as the highest supported version. While such fallback retries can be a useful last resort for connections to actual legacy servers, there s a risk that active attackers could exploit the downgrade strategy to weaken the cryptographic security of connections. Also, handshake errors due to network glitches could similarly be misinterpreted as interaction with a legacy server and result in a protocol downgrade. All unnecessary protocol downgrades are undesirable (e.g., from TLS 1.2 to TLS 1.1, if both the client and the server actually do support TLS 1.2); they can be particularly harmful when the result is loss of the TLS extension feature by downgrading to SSL 3.0. This document defines an SCSV that can be employed to prevent unintended protocol downgrades between clients and servers that comply with this document by having the client indicate that the current connection attempt is merely a fallback and by having the server return a fatal alert if it detects an inappropriate fallback. (The alert does not necessarily indicate an intentional downgrade attack, since network glitches too could result in inappropriate fallback retries.) Moeller & Langley Standards Track [Page 2]

The fallback SCSV defined in this document is not a suitable substitute for proper TLS version negotiation. TLS implementations need to properly handle TLS version negotiation and extensibility mechanisms to avoid the security issues and connection delays associated with fallback retries. This specification applies to implementations of TLS 1.0 [RFC2246], TLS 1.1 [RFC4346], and TLS 1.2 [RFC5246], and to implementations of DTLS 1.0 [RFC4347] and DTLS 1.2 [RFC6347]. (It is particularly relevant if the TLS implementations also include support for predecessor protocol SSL 3.0 [RFC6101].) It can be applied similarly to later protocol versions. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. 2. Protocol Values This document defines a new TLS cipher suite value: TLS_FALLBACK_SCSV {0x56, 0x00} This is an SCSV, i.e., it does not actually correspond to a suite of cryptosystems, and it can never be selected by the server in the handshake; rather, its presence in the Client Hello message serves as a backwards-compatible signal from the client to the server. This document also allocates a new alert value in the TLS Alert Registry [RFC5246]: enum { /*... */ inappropriate_fallback(86), /*... */ (255) } AlertDescription; This alert is only generated by servers, as described in Section 3. It is always fatal. Moeller & Langley Standards Track [Page 3]

3. Server Behavior This section specifies server behavior when receiving the TLS_FALLBACK_SCSV cipher suite from a client in ClientHello.cipher_suites. o If TLS_FALLBACK_SCSV appears in ClientHello.cipher_suites and the highest protocol version supported by the server is higher than the version indicated in ClientHello.client_version, the server MUST respond with a fatal inappropriate_fallback alert (unless it responds with a fatal protocol_version alert because the version indicated in ClientHello.client_version is unsupported). The record layer version number for this alert MUST be set to either ClientHello.client_version (as it would for the Server Hello message if the server was continuing the handshake) or to the record layer version number used by the client. o Otherwise (either TLS_FALLBACK_SCSV does not appear or it appears and the client s protocol version is at least the highest protocol version supported by the server), the server proceeds with the handshake as usual. (A protocol version is supported by the server if, in response to appropriate Client Hello messages, the server would use it for ServerHello.server_version. If a particular protocol version is implemented but completely disabled by server settings, it is not considered supported. For example, if the implementation s highest protocol version is TLS 1.2 but the server operator has disabled this version, a TLS 1.1 Client Hello with TLS_FALLBACK_SCSV does not warrant responding with an inappropriate_fallback alert.) 4. Client Behavior The TLS_FALLBACK_SCSV cipher suite value is meant for use by clients that repeat a connection attempt with a downgraded protocol (perform a "fallback retry") in order to work around interoperability problems with legacy servers. o If a client sends a ClientHello.client_version containing a lower value than the latest (highest-valued) version supported by the client, it SHOULD include the TLS_FALLBACK_SCSV cipher suite value in ClientHello.cipher_suites; see Section 6 for security considerations for this recommendation. (The client SHOULD put TLS_FALLBACK_SCSV after all cipher suites that it actually intends to negotiate.) Moeller & Langley Standards Track [Page 4]

o As an exception to the above, when a client intends to resume a session and sets ClientHello.client_version to the protocol version negotiated for that session, it MUST NOT include TLS_FALLBACK_SCSV in ClientHello.cipher_suites. (In this case, it is assumed that the client already knows the highest protocol version supported by the server: see Appendix E.1 of [RFC5246].) o If a client sets ClientHello.client_version to its highest supported protocol version, it MUST NOT include TLS_FALLBACK_SCSV in ClientHello.cipher_suites. (A protocol version is supported by the client if the client normally attempts to use it in handshakes. If a particular protocol version is implemented but completely disabled by client settings, it is not considered supported. For example, if the implementation s highest protocol version is TLS 1.2 but the user has disabled this version, a TLS 1.1 handshake is expected and does not warrant sending TLS_FALLBACK_SCSV.) Fallback retries could be caused by events such as network glitches, and a client including TLS_FALLBACK_SCSV in ClientHello.cipher_suites may receive an inappropriate_fallback alert in response, indicating that the server supports a higher protocol version. Thus, if a client intends to use retries to work around network glitches, it should then retry with the highest version it supports. If a client keeps track of the highest protocol version apparently supported by a particular server for use in ClientHello.client_version later, then if the client receives an inappropriate_fallback alert from that server, it MUST clear the memorized highest supported protocol version. (Without the alert, it is a good idea -- but outside of the scope of this document -- for clients to clear that state after a timeout since the server s highest protocol version could change over time.) For clients that use client-side TLS False Start [false-start], it is important to note that the TLS_FALLBACK_SCSV mechanism cannot protect the first round of application data sent by the client: refer to the Security Considerations (Section 6) of [false-start]. 5. Operational Considerations Updating legacy server clusters to simultaneously add support for newer protocol versions and support for TLS_FALLBACK_SCSV can have complications if the legacy server implementation is not "versiontolerant" (cannot properly handle Client Hello messages for newer protocol versions): fallback retries required for interoperability with old server nodes might be rejected by updated server nodes. Moeller & Langley Standards Track [Page 5]

Updating the server cluster in two consecutive steps makes this safe: first, update the server software but leave the highest supported version unchanged (by disabling newer versions in server settings); then, after all legacy (version-intolerant) implementations have been removed, change server settings to allow new protocol versions. 6. Security Considerations Section 4 does not require client implementations to send TLS_FALLBACK_SCSV in any particular case, it merely recommends it; behavior can be adapted according to the client s security needs. It is important to remember that omitting TLS_FALLBACK_SCSV enables downgrade attacks, so implementors must take into account whether the protocol version given by ClientHello.client_version still provides an acceptable level of protection. For example, during the initial deployment of a new protocol version (when some interoperability problems may have to be expected), smoothly falling back to the previous protocol version in case of problems may be preferable to potentially not being able to connect at all: so TLS_FALLBACK_SCSV could be omitted for this particular protocol downgrade step. However, it is strongly recommended to send TLS_FALLBACK_SCSV when downgrading to SSL 3.0 as the Cipher Block Chaining (CBC) cipher suites in SSL 3.0 have weaknesses that cannot be addressed by implementation workarounds like the remaining weaknesses in later (TLS) protocol versions. 7. IANA Considerations IANA has added TLS cipher suite number 0x56,0x00 with the name TLS_FALLBACK_SCSV to the TLS Cipher Suite Registry and alert number 86 with the name inappropriate_fallback to the TLS Alert Registry, as shown below. The registries are available from <http://www.iana.org/assignments/tls-parameters>. +-----------+-------------------+---------+-----------+ Value Description DTLS-OK Reference +-----------+-------------------+---------+-----------+ 0x56,0x00 TLS_FALLBACK_SCSV Y RFC 7507 +-----------+-------------------+---------+-----------+ Addition to the TLS Cipher Suite Registry Moeller & Langley Standards Track [Page 6]

8. References +-------+------------------------+---------+-----------+ Value Description DTLS-OK Reference +-------+------------------------+---------+-----------+ 86 inappropriate_fallback Y RFC 7507 +-------+------------------------+---------+-----------+ 8.1. Normative References Addition to the TLS Alert Registry [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997, <http://www.rfc-editor.org/info/rfc2119>. [RFC2246] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", RFC 2246, January 1999, <http://www.rfc-editor.org/info/rfc2246>. [RFC4346] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.1", RFC 4346, April 2006, <http://www.rfc-editor.org/info/rfc4346>. [RFC4347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer Security", RFC 4347, April 2006, <http://www.rfc-editor.org/info/rfc4347>. [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, August 2008, <http://www.rfc-editor.org/info/rfc5246>. [RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer Security Version 1.2", RFC 6347, January 2012, <http://www.rfc-editor.org/info/rfc6347>. 8.2. Informative References [RFC6101] Freier, A., Karlton, P., and P. Kocher, "The Secure Sockets Layer (SSL) Protocol Version 3.0", RFC 6101, August 2011, <http://www.rfc-editor.org/info/rfc6101>. [false-start] Langley, A., Modadugu, N., and B. Moeller, "Transport Layer Security (TLS) False Start", Work in Progress, draft-bmoeller-tls-falsestart-01, November 2014. Moeller & Langley Standards Track [Page 7]

Acknowledgements This specification was inspired by an earlier proposal by Eric Rescorla. We also thank Daniel Kahn Gillmor, Joe Saloway, Brian Smith, Martin Thomson, and others in the TLS Working Group for their feedback and suggestions. Authors Addresses Bodo Moeller Google Switzerland GmbH Brandschenkestrasse 110 Zurich 8002 Switzerland EMail: bmoeller@acm.org Adam Langley Google Inc. 345 Spear St San Francisco, CA 94105 United States EMail: agl@google.com Moeller & Langley Standards Track [Page 8]