GENWiki

Premier IT Outsourcing and Support Services within the UK

User Tools

Site Tools


rfc:rfc7507

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

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

Abstract

 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] RFC 7507 TLS Fallback SCSV April 2015

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] RFC 7507 TLS Fallback SCSV April 2015

 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] RFC 7507 TLS Fallback SCSV April 2015

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] RFC 7507 TLS Fallback SCSV April 2015

 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 "version-
 tolerant" (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] RFC 7507 TLS Fallback SCSV April 2015

 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] RFC 7507 TLS Fallback SCSV April 2015

       +-------+------------------------+---------+-----------+
       | Value |      Description       | DTLS-OK | Reference |
       +-------+------------------------+---------+-----------+
       |   86  | inappropriate_fallback |    Y    |  RFC 7507 |
       +-------+------------------------+---------+-----------+
                  Addition to the TLS Alert Registry

8. References

8.1. Normative References

 [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] RFC 7507 TLS Fallback SCSV April 2015

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]

/data/webs/external/dokuwiki/data/pages/rfc/rfc7507.txt · Last modified: 2015/04/24 22:10 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki