idnits 2.17.1 draft-ietf-tokbind-negotiation-07.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The abstract seems to contain references ([RFC5246], [I-D.ietf-tokbind-protocol]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (February 16, 2017) is 2619 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Unused Reference: 'RFC5226' is defined on line 283, but no explicit reference was found in the text == Outdated reference: A later version (-19) exists of draft-ietf-tokbind-protocol-11 ** Obsolete normative reference: RFC 4366 (Obsoleted by RFC 5246, RFC 6066) ** Obsolete normative reference: RFC 5226 (Obsoleted by RFC 8126) ** Obsolete normative reference: RFC 5246 (Obsoleted by RFC 8446) Summary: 4 errors (**), 0 flaws (~~), 3 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Internet Engineering Task Force A. Popov, Ed. 3 Internet-Draft M. Nystroem 4 Intended status: Standards Track Microsoft Corp. 5 Expires: August 20, 2017 D. Balfanz 6 A. Langley 7 Google Inc. 8 February 16, 2017 10 Transport Layer Security (TLS) Extension for Token Binding Protocol 11 Negotiation 12 draft-ietf-tokbind-negotiation-07 14 Abstract 16 This document specifies a Transport Layer Security (TLS) [RFC5246] 17 extension for the negotiation of Token Binding protocol 18 [I-D.ietf-tokbind-protocol] version and key parameters. 20 Status of This Memo 22 This Internet-Draft is submitted in full conformance with the 23 provisions of BCP 78 and BCP 79. 25 Internet-Drafts are working documents of the Internet Engineering 26 Task Force (IETF). Note that other groups may also distribute 27 working documents as Internet-Drafts. The list of current Internet- 28 Drafts is at http://datatracker.ietf.org/drafts/current/. 30 Internet-Drafts are draft documents valid for a maximum of six months 31 and may be updated, replaced, or obsoleted by other documents at any 32 time. It is inappropriate to use Internet-Drafts as reference 33 material or to cite them other than as "work in progress." 35 This Internet-Draft will expire on August 20, 2017. 37 Copyright Notice 39 Copyright (c) 2017 IETF Trust and the persons identified as the 40 document authors. All rights reserved. 42 This document is subject to BCP 78 and the IETF Trust's Legal 43 Provisions Relating to IETF Documents 44 (http://trustee.ietf.org/license-info) in effect on the date of 45 publication of this document. Please review these documents 46 carefully, as they describe your rights and restrictions with respect 47 to this document. Code Components extracted from this document must 48 include Simplified BSD License text as described in Section 4.e of 49 the Trust Legal Provisions and are provided without warranty as 50 described in the Simplified BSD License. 52 Table of Contents 54 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 55 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 56 2. Token Binding Negotiation Client Hello Extension . . . . . . 2 57 3. Token Binding Negotiation Server Hello Extension . . . . . . 3 58 4. Negotiating Token Binding Protocol Version and Key Parameters 4 59 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5 60 6. Security Considerations . . . . . . . . . . . . . . . . . . . 5 61 6.1. Downgrade Attacks . . . . . . . . . . . . . . . . . . . . 5 62 6.2. Triple Handshake Vulnerability in TLS 1.2 and Older TLS 63 Versions . . . . . . . . . . . . . . . . . . . . . . . . 6 64 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 6 65 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 6 66 8.1. Normative References . . . . . . . . . . . . . . . . . . 6 67 8.2. Informative References . . . . . . . . . . . . . . . . . 7 68 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 7 70 1. Introduction 72 In order to use the Token Binding protocol 73 [I-D.ietf-tokbind-protocol], the client and server need to agree on 74 the Token Binding protocol version and the parameters (signature 75 algorithm, length) of the Token Binding key. This document specifies 76 a new TLS extension to accomplish this negotiation without 77 introducing additional network round-trips. 79 1.1. Requirements Language 81 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 82 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 83 document are to be interpreted as described in [RFC2119]. 85 2. Token Binding Negotiation Client Hello Extension 87 The client uses the "token_binding" TLS extension to indicate the 88 highest supported Token Binding protocol version and key parameters. 90 enum { 91 token_binding(24), (65535) 92 } ExtensionType; 94 The "extension_data" field of this extension contains a 95 "TokenBindingParameters" value. 97 struct { 98 uint8 major; 99 uint8 minor; 100 } ProtocolVersion; 102 enum { 103 (255) 104 } TokenBindingKeyParameters; 106 struct { 107 ProtocolVersion token_binding_version; 108 TokenBindingKeyParameters key_parameters_list<1..2^8-1> 109 } TokenBindingParameters; 111 "token_binding_version" indicates the version of the Token Binding 112 protocol the client wishes to use during this connection. This 113 SHOULD be the latest (highest valued) version supported by the 114 client. [I-D.ietf-tokbind-protocol] describes version {1, 0} of the 115 protocol. Prototype implementations of Token Binding drafts can 116 indicate support of a specific draft version, e.g. {0, 1} or {0, 2}. 118 "key_parameters_list" contains the list of identifiers of the Token 119 Binding key parameters supported by the client, in descending order 120 of preference. [I-D.ietf-tokbind-protocol] defines an initial set of 121 identifiers for Token Binding key parameters. 123 3. Token Binding Negotiation Server Hello Extension 125 The server uses the "token_binding" TLS extension to indicate support 126 for the Token Binding protocol and to select the protocol version and 127 key parameters. 129 The server that supports Token Binding and receives a client hello 130 message containing the "token_binding" extension, will include the 131 "token_binding" extension in the server hello if all of the following 132 conditions are satisfied: 134 1. The server supports the Token Binding protocol version offered by 135 the client or a lower version. 137 2. The server finds acceptable Token Binding key parameters on the 138 client's list. 140 3. The server is also negotiating the Extended Master Secret 141 [RFC7627] and Renegotiation Indication [RFC5746] TLS extensions. 142 This requirement only applies when TLS 1.2 or an older TLS 143 version is used (see security considerations section below for 144 more details). 146 The server will ignore any key parameters that it does not recognize. 147 The "extension_data" field of the "token_binding" extension is 148 structured the same as described above for the client 149 "extension_data". 151 "token_binding_version" contains the lower of the Token Binding 152 protocol version offered by the client in the "token_binding" 153 extension and the highest version supported by the server. 155 "key_parameters_list" contains exactly one Token Binding key 156 parameters identifier selected by the server from the client's list. 158 4. Negotiating Token Binding Protocol Version and Key Parameters 160 It is expected that a server will have a list of Token Binding key 161 parameters identifiers that it supports, in preference order. The 162 server MUST only select an identifier that the client offered. The 163 server SHOULD select the most highly preferred key parameters 164 identifier it supports which is also advertised by the client. In 165 the event that the server supports none of the key parameters that 166 the client advertises, then the server MUST NOT include 167 "token_binding" extension in the server hello. 169 The client receiving the "token_binding" extension MUST terminate the 170 handshake with a fatal "unsupported_extension" alert if any of the 171 following conditions are true: 173 1. The client did not include the "token_binding" extension in the 174 client hello. 176 2. "token_binding_version" is higher than the Token Binding protocol 177 version advertised by the client. 179 3. "key_parameters_list" includes more than one Token Binding key 180 parameters identifier. 182 4. "key_parameters_list" includes an identifier that was not 183 advertised by the client. 185 5. TLS 1.2 or an older TLS version is used, but the Extended Master 186 Secret [RFC7627] and TLS Renegotiation Indication [RFC5746] 187 extensions are not negotiated (see security considerations 188 section below for more details). 190 If the "token_binding" extension is included in the server hello and 191 the client supports the Token Binding protocol version selected by 192 the server, it means that the version and key parameters have been 193 negotiated between the client and the server and SHALL be definitive 194 for the TLS connection. Please note that TLS 1.2 and earlier 195 versions support renegotiation, allowing the client and server to 196 renegotiate the Token Binding protocol version and key parameters on 197 the same connection. The client MUST use the negotiated key 198 parameters in the "provided_token_binding" as described in 199 [I-D.ietf-tokbind-protocol]. 201 If the client does not support the Token Binding protocol version 202 selected by the server, then the connection proceeds without Token 203 Binding. 205 Please note that the Token Binding protocol version and key 206 parameters are negotiated for each TLS connection, which means that 207 the client and server include their "token_binding" extensions both 208 in the full TLS handshake that establishes a new TLS session and in 209 the subsequent abbreviated TLS handshakes that resume the TLS 210 session. 212 5. IANA Considerations 214 This document updates the TLS "ExtensionType Values" registry 215 originally created in [RFC4366]. IANA has provided the following 216 temporary registration for the "token_binding" TLS extension: 218 Value: 24 220 Extension name: token_binding 222 Reference: this document 224 IANA is requested to make this registration permanent, keeping the 225 value of 24, which has been used by the prototype implementations of 226 the Token Binding protocol. 228 This document uses "Token Binding Key Parameters" registry originally 229 created in [I-D.ietf-tokbind-protocol]. This document creates no new 230 registrations in this registry. 232 6. Security Considerations 234 6.1. Downgrade Attacks 236 The Token Binding protocol version and key parameters are negotiated 237 via "token_binding" extension within the TLS handshake. TLS prevents 238 active attackers from modifying the messages of the TLS handshake, 239 therefore it is not possible for the attacker to remove or modify the 240 "token_binding" extension. The signature algorithm and key length 241 used in the TokenBinding of type "provided_token_binding" MUST match 242 the parameters negotiated via "token_binding" extension. 244 6.2. Triple Handshake Vulnerability in TLS 1.2 and Older TLS Versions 246 The Token Binding protocol relies on the TLS Exporters [RFC5705] to 247 associate a TLS connection with a Token Binding. The triple 248 handshake attack [TRIPLE-HS] is a known vulnerability in TLS 1.2 and 249 older TLS versions, allowing the attacker to synchronize keying 250 material between TLS connections. The attacker can then successfully 251 replay bound tokens. For this reason, the Token Binding protocol 252 MUST NOT be negotiated with these TLS versions, unless the Extended 253 Master Secret [RFC7627] and Renegotiation Indication [RFC5746] TLS 254 extensions have also been negotiated. 256 7. Acknowledgements 258 This document incorporates comments and suggestions offered by Eric 259 Rescorla, Gabriel Montenegro, Martin Thomson, Vinod Anupam, Anthony 260 Nadalin, Michael B. Jones, Bill Cox, Nick Harper, Brian Campbell and 261 others. 263 8. References 265 8.1. Normative References 267 [I-D.ietf-tokbind-protocol] 268 Popov, A., Nystrom, M., Balfanz, D., Langley, A., and J. 269 Hodges, "The Token Binding Protocol Version 1.0", draft- 270 ietf-tokbind-protocol-11 (work in progress), November 271 2016. 273 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 274 Requirement Levels", BCP 14, RFC 2119, 275 DOI 10.17487/RFC2119, March 1997, 276 . 278 [RFC4366] Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J., 279 and T. Wright, "Transport Layer Security (TLS) 280 Extensions", RFC 4366, DOI 10.17487/RFC4366, April 2006, 281 . 283 [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an 284 IANA Considerations Section in RFCs", BCP 26, RFC 5226, 285 DOI 10.17487/RFC5226, May 2008, 286 . 288 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 289 (TLS) Protocol Version 1.2", RFC 5246, 290 DOI 10.17487/RFC5246, August 2008, 291 . 293 [RFC5705] Rescorla, E., "Keying Material Exporters for Transport 294 Layer Security (TLS)", RFC 5705, DOI 10.17487/RFC5705, 295 March 2010, . 297 [RFC5746] Rescorla, E., Ray, M., Dispensa, S., and N. Oskov, 298 "Transport Layer Security (TLS) Renegotiation Indication 299 Extension", RFC 5746, DOI 10.17487/RFC5746, February 2010, 300 . 302 [RFC7627] Bhargavan, K., Ed., Delignat-Lavaud, A., Pironti, A., 303 Langley, A., and M. Ray, "Transport Layer Security (TLS) 304 Session Hash and Extended Master Secret Extension", 305 RFC 7627, DOI 10.17487/RFC7627, September 2015, 306 . 308 8.2. Informative References 310 [TRIPLE-HS] 311 Bhargavan, K., Delignat-Lavaud, A., Fournet, C., Pironti, 312 A., and P. Strub, "Triple Handshakes and Cookie Cutters: 313 Breaking and Fixing Authentication over TLS. IEEE 314 Symposium on Security and Privacy", 2014. 316 Authors' Addresses 318 Andrei Popov (editor) 319 Microsoft Corp. 320 USA 322 Email: andreipo@microsoft.com 324 Magnus Nystroem 325 Microsoft Corp. 326 USA 328 Email: mnystrom@microsoft.com 329 Dirk Balfanz 330 Google Inc. 331 USA 333 Email: balfanz@google.com 335 Adam Langley 336 Google Inc. 337 USA 339 Email: agl@google.com