The RFC Archive
 The RFC Archive   RFC 8472   « Jump to any RFC number directly 
 RFC Home
Full RFC Index
Recent RFCs
RFC Standards
Best Current Practice
RFC Errata
1 April RFC



IETF RFC 8472

Transport Layer Security (TLS) Extension for Token Binding Protocol Negotiation

Last modified on Tuesday, October 9th, 2018

Permanent link to RFC 8472
Search GitHub Wiki for RFC 8472
Show other RFCs mentioning RFC 8472







Internet Engineering Task Force (IETF)                     A. Popov, Ed.
Request for Comments: 8472                                   M. Nystroem
Category: Standards Track                              Microsoft Corp.
ISSN: 2070-1721                                               D. Balfanz
                                                             Google Inc.
                                                            October 2018


              Transport Layer Security (TLS) Extension for
                   Token Binding Protocol Negotiation

 Abstract

   This document specifies a Transport Layer Security (TLS) extension
   for the negotiation of Token Binding protocol version and key
   parameters.  Negotiation of Token Binding in TLS 1.3 and later
   versions is beyond the scope of this document.

 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 7841.

   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/RFC 8472.

 Copyright Notice

   Copyright (c) 2018 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
   (https://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.





Popov, et al.                Standards Track                 PAGE 1 top


RFC 8472 Token Binding Negotiation TLS Extension October 2018 Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 2. Token Binding Negotiation ClientHello Extension . . . . . . . 2 3. Token Binding Negotiation ServerHello Extension . . . . . . . 3 4. Negotiating Token Binding Protocol Version and Key Parameters 4 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 6. Security Considerations . . . . . . . . . . . . . . . . . . . 6 6.1. Downgrade Attacks . . . . . . . . . . . . . . . . . . . . 6 6.2. Triple Handshake Vulnerability in TLS 1.2 and Older TLS Versions . . . . . . . . . . . . . . . . . . . . . . . . 6 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 7.1. Normative References . . . . . . . . . . . . . . . . . . 7 7.2. Informative References . . . . . . . . . . . . . . . . . 7 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 8 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 8 1. Introduction In order to use the Token Binding protocol [RFC 8471], the client and server need to agree on the Token Binding protocol version and the parameters (signature algorithm and length) of the Token Binding key. This document specifies a new TLS [RFC 5246] extension to accomplish this negotiation without introducing additional network round trips in TLS 1.2 and earlier versions. [TOKENBIND-TLS13] addresses Token Binding in TLS 1.3. The negotiation of the Token Binding protocol and key parameters in combination with TLS 1.3 and later versions is beyond the scope of this document. (Note: This document deals with TLS 1.2 and therefore refers to RFC 5246 (which has been obsoleted by RFC 8446). [TOKENBIND-TLS13] addresses Token Binding in TLS 1.3). 1.1. Requirements Language The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC 2119] [RFC 8174] when, and only when, they appear in all capitals, as shown here. 2. Token Binding Negotiation ClientHello 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; Popov, et al. Standards Track PAGE 2 top

RFC 8472 Token Binding Negotiation TLS Extension October 2018 The "extension_data" field of this extension contains a "TokenBindingParameters" value. struct { uint8 major; uint8 minor; } TB_ProtocolVersion; enum { rsa2048_pkcs1.5(0), rsa2048_pss(1), ecdsap256(2), (255) } TokenBindingKeyParameters; struct { TB_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. If the client supports multiple Token Binding protocol versions, it SHOULD indicate the latest supported version (the one with the highest TB_ProtocolVersion.major and TB_ProtocolVersion.minor) in TokenBindingParameters.token_binding_version. For example, if the client supports versions {1, 0} and {0, 13} of the Token Binding protocol, it SHOULD indicate version {1, 0}. Please note that the server MAY select any lower protocol version; see Section 3 ("Token Binding Negotiation ServerHello Extension") for more details. If the client does not support the Token Binding protocol version selected by the server, then the connection proceeds without Token Binding. [RFC 8471] describes version {1, 0} of the protocol. Please note that the representation of the Token Binding protocol version using two octets ("major" and "minor") is for human convenience only and carries no protocol significance. "key_parameters_list" contains the list of identifiers of the Token Binding key parameters supported by the client, in descending order of preference. [RFC 8471] establishes an IANA registry for Token Binding key parameters identifiers. 3. Token Binding Negotiation ServerHello 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. Popov, et al. Standards Track PAGE 3 top

RFC 8472 Token Binding Negotiation TLS Extension October 2018 The server that supports Token Binding and receives a ClientHello message containing the "token_binding" extension will include the "token_binding" extension in the ServerHello 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 in the client's list. 3. The server is also negotiating the extended master secret [RFC 7627] and renegotiation indication [RFC 5746] TLS extensions. This requirement applies when TLS 1.2 or an older TLS version is used (see Section 6 ("Security Considerations") for more details). 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: o the Token Binding protocol version offered by the client in the "token_binding" extension, and o the highest Token Binding protocol 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 the "token_binding" extension in the ServerHello. Popov, et al. Standards Track PAGE 4 top

RFC 8472 Token Binding Negotiation TLS Extension October 2018 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 ClientHello. 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 [RFC 7627] and TLS renegotiation indication [RFC 5746] extensions are not negotiated (see Section 6 ("Security Considerations") for more details). If the "token_binding" extension is included in the ServerHello 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. TLS 1.2 and earlier versions support renegotiation, which allows the client and server to renegotiate the Token Binding protocol version and key parameters on the same connection. The client MUST use the negotiated key parameters in the "provided_token_binding" as described in [RFC 8471]. If the client does not support the Token Binding protocol version selected by the server, then the connection proceeds without Token Binding. There is no requirement for the client to support any Token Binding versions other than the one advertised in the client's "token_binding" extension. Client and server applications can choose to handle failure to negotiate Token Binding in a variety of ways: continue using the connection as usual, shorten the lifetime of tokens issued during this connection, require stronger authentication, terminate the connection, etc. 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 in both the full TLS handshake that establishes a new TLS session and the subsequent abbreviated TLS handshakes that resume the TLS session. Popov, et al. Standards Track PAGE 5 top

RFC 8472 Token Binding Negotiation TLS Extension October 2018 5. IANA Considerations This document updates the "TLS ExtensionType Values" registry. The registration for the "token_binding" TLS extension is as follows: Value: 24 Extension name: token_binding Recommended: Yes Reference: This document This document uses the "Token Binding Key Parameters" registry created by [RFC 8471]. This document creates no new registrations in the registry. 6. Security Considerations 6.1. Downgrade Attacks The Token Binding protocol version and key parameters are negotiated via the "token_binding" extension within the TLS handshake. TLS detects handshake message modification by active attackers; therefore, it is not possible for an attacker to remove or modify the "token_binding" extension without breaking the TLS handshake. The signature algorithm and key length used in the Token Binding of type "provided_token_binding" MUST match the parameters negotiated via the "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 [RFC 5705] to associate a TLS connection with a Token Binding. The triple handshake attack [TRIPLE-HS] is a known vulnerability in TLS 1.2 and older TLS versions; it allows an attacker to synchronize 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 [RFC 7627] and renegotiation indication [RFC 5746] TLS extensions have also been negotiated. Popov, et al. Standards Track PAGE 6 top

RFC 8472 Token Binding Negotiation TLS Extension October 2018 7. References 7.1. Normative References [RFC 2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC 2119, March 1997, <https://www.rfc-editor.org/info/RFC 2119>. [RFC 5246] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, DOI 10.17487/RFC 5246, August 2008, <https://www.rfc-editor.org/info/RFC 5246>. [RFC 5705] Rescorla, E., "Keying Material Exporters for Transport Layer Security (TLS)", RFC 5705, DOI 10.17487/RFC 5705, March 2010, <https://www.rfc-editor.org/info/RFC 5705>. [RFC 5746] Rescorla, E., Ray, M., Dispensa, S., and N. Oskov, "Transport Layer Security (TLS) Renegotiation Indication Extension", RFC 5746, DOI 10.17487/RFC 5746, February 2010, <https://www.rfc-editor.org/info/RFC 5746>. [RFC 7627] 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/RFC 7627, September 2015, <https://www.rfc-editor.org/info/RFC 7627>. [RFC 8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC 8174, May 2017, <https://www.rfc-editor.org/info/RFC 8174>. [RFC 8471] Popov, A., Ed., Nystroem, M., Balfanz, D., and J. Hodges, "The Token Binding Protocol Version 1.0", RFC 8471, DOI 10.17487/RFC 8471, October 2018, <https://www.rfc-editor.org/info/RFC 8471>. 7.2. Informative References [TOKENBIND-TLS13] Harper, N., "Token Binding for Transport Layer Security (TLS) Version 1.3 Connections", Work in Progress, draft-ietf-tokbind-tls13-01, May 2018. Popov, et al. Standards Track PAGE 7 top

RFC 8472 Token Binding Negotiation TLS Extension October 2018 [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, DOI 10.1109/SP.2014.14, May 2014. 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, Benjamin Kaduk, Alexey Melnikov, and others. This document was produced under the chairmanship of John Bradley and Leif Johansson. The area directors included Eric Rescorla, Kathleen Moriarty, and Stephen Farrell. Authors' Addresses Andrei Popov (editor) Microsoft Corp. United States of America Email: andreipo@microsoft.com Magnus Nystroem Microsoft Corp. United States of America Email: mnystrom@microsoft.com Dirk Balfanz Google Inc. United States of America Email: balfanz@google.com Popov, et al. Standards Track PAGE 8 top

Transport Layer Security (TLS) Extension for Token Binding Protocol Negotiation RFC TOTAL SIZE: 16842 bytes PUBLICATION DATE: Tuesday, October 9th, 2018 LEGAL RIGHTS: The IETF Trust (see BCP 78)


RFC-ARCHIVE.ORG

© RFC 8472: The IETF Trust, Tuesday, October 9th, 2018
© the RFC Archive, 2024, RFC-Archive.org
Maintainer: J. Tunnissen

Privacy Statement