Skip to main content

Transport Layer Security (TLS) Extension for Token Binding Protocol Negotiation
draft-ietf-tokbind-negotiation-05

The information below is for an old version of the document.
Document Type
This is an older version of an Internet-Draft that was ultimately published as RFC 8472.
Authors Andrei Popov , Magnus Nyström , Dirk Balfanz , Adam Langley
Last updated 2016-11-16 (Latest revision 2016-09-02)
Replaces draft-popov-tokbind-negotiation
RFC stream Internet Engineering Task Force (IETF)
Formats
Reviews
Additional resources Mailing list discussion
Stream WG state In WG Last Call
Associated WG milestone
Dec 2017
TLS extension for Token Binding to IESG
Document shepherd (None)
IESG IESG state Became RFC 8472 (Proposed Standard)
Consensus boilerplate Unknown
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-ietf-tokbind-negotiation-05
Internet Engineering Task Force                            A. Popov, Ed.
Internet-Draft                                               M. Nystroem
Intended status: Standards Track                         Microsoft Corp.
Expires: March 6, 2017                                        D. Balfanz
                                                              A. Langley
                                                             Google Inc.
                                                       September 2, 2016

  Transport Layer Security (TLS) Extension for Token Binding Protocol
                              Negotiation
                   draft-ietf-tokbind-negotiation-05

Abstract

   This document specifies a Transport Layer Security (TLS) [RFC5246]
   extension for the negotiation of Token Binding protocol
   [I-D.ietf-tokbind-protocol] version and key parameters.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on March 6, 2017.

Copyright Notice

   Copyright (c) 2016 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

Popov, et al.             Expires March 6, 2017                 [Page 1]
Internet-Draft   Token Binding Negotiation TLS Extension  September 2016

   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
     1.1.  Requirements Language . . . . . . . . . . . . . . . . . .   2
   2.  Token Binding Negotiation Client Hello Extension  . . . . . .   2
   3.  Token Binding Negotiation Server Hello Extension  . . . . . .   3
   4.  Negotiating Token Binding Protocol Version and Key Parameters   4
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   5
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .   5
     6.1.  Downgrade Attacks . . . . . . . . . . . . . . . . . . . .   6
     6.2.  Triple Handshake Vulnerability in TLS 1.2 and Older TLS
           Versions  . . . . . . . . . . . . . . . . . . . . . . . .   6
   7.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .   6
   8.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   6
     8.1.  Normative References  . . . . . . . . . . . . . . . . . .   6
     8.2.  Informative References  . . . . . . . . . . . . . . . . .   7
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .   7

1.  Introduction

   In order to use the Token Binding protocol
   [I-D.ietf-tokbind-protocol], the client and server need to agree on
   the Token Binding protocol version and the parameters (signature
   algorithm, length) of the Token Binding key.  This document specifies
   a new TLS extension to accomplish this negotiation without
   introducing additional network round-trips.

1.1.  Requirements Language

   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.  Token Binding Negotiation Client Hello Extension

   The client uses the "token_binding" TLS extension to indicate the
   highest supported Token Binding protocol version and key parameters.

   enum {
       token_binding(24), (65535)
   } ExtensionType;

   The "extension_data" field of this extension contains a
   "TokenBindingParameters" value.

Popov, et al.             Expires March 6, 2017                 [Page 2]
Internet-Draft   Token Binding Negotiation TLS Extension  September 2016

   struct {
       uint8 major;
       uint8 minor;
   } ProtocolVersion;

   enum {
       (255)
   } TokenBindingKeyParameters;

   struct {
       ProtocolVersion token_binding_version;
       TokenBindingKeyParameters key_parameters_list<1..2^8-1>
   } TokenBindingParameters;

   "token_binding_version" indicates the version of the Token Binding
   protocol the client wishes to use during this connection.  This
   SHOULD be the latest (highest valued) version supported by the
   client.  [I-D.ietf-tokbind-protocol] describes version {1, 0} of the
   protocol.  Prototype implementations of Token Binding drafts can
   indicate support of a specific draft version, e.g. {0, 1} or {0, 2}.

   "key_parameters_list" contains the list of identifiers of the Token
   Binding key parameters supported by the client, in descending order
   of preference.  [I-D.ietf-tokbind-protocol] defines an initial set of
   identifiers for Token Binding key parameters.

3.  Token Binding Negotiation Server Hello Extension

   The server uses the "token_binding" TLS extension to indicate support
   for the Token Binding protocol and to select the protocol version and
   key parameters.

   The server that supports Token Binding and receives a client hello
   message containing the "token_binding" extension, will include the
   "token_binding" extension in the server hello if all of the following
   conditions are satisfied:

   1.  The server supports the Token Binding protocol version offered by
       the client or a lower version.

   2.  The server finds acceptable Token Binding key parameters on the
       client's list.

   3.  The server is also negotiating the Extended Master Secret
       [RFC7627] TLS extension.  This requirement only applies when TLS
       1.2 or an older TLS version is used (see security considerations
       section below for more details).

Popov, et al.             Expires March 6, 2017                 [Page 3]
Internet-Draft   Token Binding Negotiation TLS Extension  September 2016

   4.  The server is also negotiating the Renegotiation Indication
       [RFC5746] TLS extension.  This requirement only applies if the
       TLS server is configured to initiate or allow renegotiation.

   The server will ignore any key parameters that it does not recognize.
   The "extension_data" field of the "token_binding" extension is
   structured the same as described above for the client
   "extension_data".

   "token_binding_version" contains the lower of the Token Binding
   protocol version offered by the client in the "token_binding"
   extension and the highest version supported by the server.

   "key_parameters_list" contains exactly one Token Binding key
   parameters identifier selected by the server from the client's list.

4.  Negotiating Token Binding Protocol Version and Key Parameters

   It is expected that a server will have a list of Token Binding key
   parameters identifiers that it supports, in preference order.  The
   server MUST only select an identifier that the client offered.  The
   server SHOULD select the most highly preferred key parameters
   identifier it supports which is also advertised by the client.  In
   the event that the server supports none of the key parameters that
   the client advertises, then the server MUST NOT include
   "token_binding" extension in the server hello.

   The client receiving the "token_binding" extension MUST terminate the
   handshake with a fatal "unsupported_extension" alert if any of the
   following conditions are true:

   1.  The client did not include the "token_binding" extension in the
       client hello.

   2.  "token_binding_version" is higher than the Token Binding protocol
       version advertised by the client.

   3.  "key_parameters_list" includes more than one Token Binding key
       parameters identifier.

   4.  "key_parameters_list" includes an identifier that was not
       advertised by the client.

   5.  TLS 1.2 or an older TLS version is used, but the Extended Master
       Secret [RFC7627] TLS extension is not negotiated (see security
       considerations section below for more details).

Popov, et al.             Expires March 6, 2017                 [Page 4]
Internet-Draft   Token Binding Negotiation TLS Extension  September 2016

   6.  The client is configured to initiate or allow renegotiation, but
       the Renegotiation Indication [RFC5746] TLS extension is not
       negotiated.

   If the "token_binding" extension is included in the server hello and
   the client supports the Token Binding protocol version selected by
   the server, it means that the version and key parameters have been
   negotiated between the client and the server and SHALL be definitive
   for the TLS connection.  In this case, the client MUST use the
   negotiated key parameters in the "provided_token_binding" as
   described in [I-D.ietf-tokbind-protocol].

   If the client does not support the Token Binding protocol version
   selected by the server, then the connection proceeds without Token
   Binding.

   Please note that the Token Binding protocol version and key
   parameters are negotiated for each TLS connection, which means that
   the client and server include their "token_binding" extensions both
   in the full TLS handshake that establishes a new TLS session and in
   the subsequent abbreviated TLS handshakes that resume the TLS
   session.

5.  IANA Considerations

   This document updates the TLS "ExtensionType Values" registry
   originally created in [RFC4366].  IANA has provided the following
   temporary registration for the "token_binding" TLS extension:

      Value: 24

      Extension name: token_binding

      Reference: this document

   IANA is requested to make this registration permanent, keeping the
   value of 24, which has been used by the prototype implementations of
   the Token Binding protocol.

   This document uses "Token Binding Key Parameters" registry originally
   created in [I-D.ietf-tokbind-protocol].  This document creates no new
   registrations in this registry.

6.  Security Considerations

Popov, et al.             Expires March 6, 2017                 [Page 5]
Internet-Draft   Token Binding Negotiation TLS Extension  September 2016

6.1.  Downgrade Attacks

   The Token Binding protocol version and key parameters are negotiated
   via "token_binding" extension within the TLS handshake.  TLS prevents
   active attackers from modifying the messages of the TLS handshake,
   therefore it is not possible for the attacker to remove or modify the
   "token_binding" extension.  The signature algorithm and key length
   used in the TokenBinding of type "provided_token_binding" MUST match
   the parameters negotiated via "token_binding" extension.

6.2.  Triple Handshake Vulnerability in TLS 1.2 and Older TLS Versions

   The Token Binding protocol relies on the TLS Exporters [RFC5705] to
   associate a TLS connection with a Token Binding.  The triple
   handshake attack [TRIPLE-HS] is a known TLS protocol vulnerability
   allowing the attacker to synchronize exported keying material between
   TLS connections.  The attacker can then successfully replay bound
   tokens.  For this reason, the Token Binding protocol MUST NOT be
   negotiated with these TLS versions, unless the Extended Master Secret
   [RFC7627] TLS extension has also been negotiated.  In addition, TLS
   renegotiation MUST NOT be initiated or allowed, unless the
   Renegotiation Indication [RFC5746] TLS extension has been negotiated.

7.  Acknowledgements

   This document incorporates comments and suggestions offered by Eric
   Rescorla, Gabriel Montenegro, Martin Thomson, Vinod Anupam, Anthony
   Nadalin, Michael B.  Jones, Bill Cox, Nick Harper, Brian Campbell and
   others.

8.  References

8.1.  Normative References

   [I-D.ietf-tokbind-protocol]
              Popov, A., Nystrom, M., Balfanz, D., Langley, A., and J.
              Hodges, "The Token Binding Protocol Version 1.0", draft-
              ietf-tokbind-protocol-09 (work in progress), August 2016.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <http://www.rfc-editor.org/info/rfc2119>.

   [RFC4366]  Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J.,
              and T. Wright, "Transport Layer Security (TLS)
              Extensions", RFC 4366, DOI 10.17487/RFC4366, April 2006,
              <http://www.rfc-editor.org/info/rfc4366>.

Popov, et al.             Expires March 6, 2017                 [Page 6]
Internet-Draft   Token Binding Negotiation TLS Extension  September 2016

   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an
              IANA Considerations Section in RFCs", BCP 26, RFC 5226,
              DOI 10.17487/RFC5226, May 2008,
              <http://www.rfc-editor.org/info/rfc5226>.

   [RFC5246]  Dierks, T. and E. Rescorla, "The Transport Layer Security
              (TLS) Protocol Version 1.2", RFC 5246,
              DOI 10.17487/RFC5246, August 2008,
              <http://www.rfc-editor.org/info/rfc5246>.

   [RFC5705]  Rescorla, E., "Keying Material Exporters for Transport
              Layer Security (TLS)", RFC 5705, DOI 10.17487/RFC5705,
              March 2010, <http://www.rfc-editor.org/info/rfc5705>.

   [RFC5746]  Rescorla, E., Ray, M., Dispensa, S., and N. Oskov,
              "Transport Layer Security (TLS) Renegotiation Indication
              Extension", RFC 5746, DOI 10.17487/RFC5746, February 2010,
              <http://www.rfc-editor.org/info/rfc5746>.

   [RFC7627]  Bhargavan, K., Ed., Delignat-Lavaud, A., Pironti, A.,
              Langley, A., and M. Ray, "Transport Layer Security (TLS)
              Session Hash and Extended Master Secret Extension",
              RFC 7627, DOI 10.17487/RFC7627, September 2015,
              <http://www.rfc-editor.org/info/rfc7627>.

8.2.  Informative References

   [TRIPLE-HS]
              Bhargavan, K., Delignat-Lavaud, A., Fournet, C., Pironti,
              A., and P. Strub, "Triple Handshakes and Cookie Cutters:
              Breaking and Fixing Authentication over TLS. IEEE
              Symposium on Security and Privacy", 2014.

Authors' Addresses

   Andrei Popov (editor)
   Microsoft Corp.
   USA

   Email: andreipo@microsoft.com

   Magnus Nystroem
   Microsoft Corp.
   USA

   Email: mnystrom@microsoft.com

Popov, et al.             Expires March 6, 2017                 [Page 7]
Internet-Draft   Token Binding Negotiation TLS Extension  September 2016

   Dirk Balfanz
   Google Inc.
   USA

   Email: balfanz@google.com

   Adam Langley
   Google Inc.
   USA

   Email: agl@google.com

Popov, et al.             Expires March 6, 2017                 [Page 8]