idnits 2.17.1 draft-ietf-tokbind-negotiation-14.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 : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (May 23, 2018) is 2157 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) == Outdated reference: A later version (-19) exists of draft-ietf-tokbind-protocol-18 ** Obsolete normative reference: RFC 5246 (Obsoleted by RFC 8446) Summary: 1 error (**), 0 flaws (~~), 2 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: November 24, 2018 D. Balfanz 6 A. Langley 7 Google Inc. 8 May 23, 2018 10 Transport Layer Security (TLS) Extension for Token Binding Protocol 11 Negotiation 12 draft-ietf-tokbind-negotiation-14 14 Abstract 16 This document specifies a Transport Layer Security (TLS) extension 17 for the negotiation of Token Binding protocol version and key 18 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 https://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 November 24, 2018. 37 Copyright Notice 39 Copyright (c) 2018 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 (https://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 . . . . . . 4 58 4. Negotiating Token Binding Protocol Version and Key Parameters 4 59 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 60 6. Security Considerations . . . . . . . . . . . . . . . . . . . 6 61 6.1. Downgrade Attacks . . . . . . . . . . . . . . . . . . . . 6 62 6.2. Triple Handshake Vulnerability in TLS 1.2 and Older TLS 63 Versions . . . . . . . . . . . . . . . . . . . . . . . . 6 64 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 65 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 66 8.1. Normative References . . . . . . . . . . . . . . . . . . 7 67 8.2. Informative References . . . . . . . . . . . . . . . . . 8 68 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 8 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 [RFC5246] extension to accomplish this negotiation without 77 introducing additional network round-trips in TLS 1.2 and earlier 78 versions. The negotiation of the Token Binding protocol and key 79 parameters in combination with TLS 1.3 and later versions is beyond 80 the scope of this document. 82 1.1. Requirements Language 84 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 85 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 86 "OPTIONAL" in this document are to be interpreted as described in BCP 87 14 [RFC2119] [RFC8174] when, and only when, they appear in all 88 capitals, as shown here. 90 2. Token Binding Negotiation Client Hello Extension 92 The client uses the "token_binding" TLS extension to indicate the 93 highest supported Token Binding protocol version and key parameters. 95 enum { 96 token_binding(24), (65535) 97 } ExtensionType; 99 The "extension_data" field of this extension contains a 100 "TokenBindingParameters" value. 102 struct { 103 uint8 major; 104 uint8 minor; 105 } TB_ProtocolVersion; 107 enum { 108 rsa2048_pkcs1.5(0), rsa2048_pss(1), ecdsap256(2), (255) 109 } TokenBindingKeyParameters; 111 struct { 112 TB_ProtocolVersion token_binding_version; 113 TokenBindingKeyParameters key_parameters_list<1..2^8-1> 114 } TokenBindingParameters; 116 "token_binding_version" indicates the version of the Token Binding 117 protocol the client wishes to use during this connection. If the 118 client supports multiple Token Binding protocol versions, it SHOULD 119 indicate the latest supported version (the one with the highest 120 TB_ProtocolVersion.major and TB_ProtocolVersion.minor) in 121 TokenBindingParameters.token_binding_version. E.g. if the client 122 supports versions {1, 0} and {0, 13} of the Token Binding protocol, 123 it SHOULD indicate version {1, 0}. Please note that the server MAY 124 select any lower protocol version, see Section 3 125 "Token Binding Negotiation Server Hello Extension" for more details. 126 If the client does not support the Token Binding protocol version 127 selected by the server, then the connection proceeds without Token 128 Binding. [I-D.ietf-tokbind-protocol] describes version {1, 0} of the 129 protocol. 131 Please note that the representation of the Token Binding protocol 132 version using two octets ("major" and "minor") is for human 133 convenience only and carries no protocol significance. 135 RFC EDITOR: PLEASE REMOVE THE FOLLOWING PARAGRAPH: Prototype 136 implementations of Token Binding drafts can indicate support of a 137 specific draft version, e.g. {0, 1} or {0, 2}. 139 "key_parameters_list" contains the list of identifiers of the Token 140 Binding key parameters supported by the client, in descending order 141 of preference. [I-D.ietf-tokbind-protocol] establishes an IANA 142 registry for Token Binding key parameter identifiers. 144 3. Token Binding Negotiation Server Hello Extension 146 The server uses the "token_binding" TLS extension to indicate support 147 for the Token Binding protocol and to select the protocol version and 148 key parameters. 150 The server that supports Token Binding and receives a client hello 151 message containing the "token_binding" extension will include the 152 "token_binding" extension in the server hello if all of the following 153 conditions are satisfied: 155 1. The server supports the Token Binding protocol version offered by 156 the client or a lower version. 158 2. The server finds acceptable Token Binding key parameters on the 159 client's list. 161 3. The server is also negotiating the Extended Master Secret 162 [RFC7627] and Renegotiation Indication [RFC5746] TLS extensions. 163 This requirement applies when TLS 1.2 or an older TLS version is 164 used (see Section 6 "Security Considerations" below for more 165 details). 167 The server will ignore any key parameters that it does not recognize. 168 The "extension_data" field of the "token_binding" extension is 169 structured the same as described above for the client 170 "extension_data". 172 "token_binding_version" contains the lower of: 174 o the Token Binding protocol version offered by the client in the 175 "token_binding" extension and 177 o the highest Token Binding protocol version supported by the 178 server. 180 "key_parameters_list" contains exactly one Token Binding key 181 parameters identifier selected by the server from the client's list. 183 4. Negotiating Token Binding Protocol Version and Key Parameters 185 It is expected that a server will have a list of Token Binding key 186 parameters identifiers that it supports, in preference order. The 187 server MUST only select an identifier that the client offered. The 188 server SHOULD select the most highly preferred key parameters 189 identifier it supports which is also advertised by the client. In 190 the event that the server supports none of the key parameters that 191 the client advertises, then the server MUST NOT include the 192 "token_binding" extension in the server hello. 194 The client receiving the "token_binding" extension MUST terminate the 195 handshake with a fatal "unsupported_extension" alert if any of the 196 following conditions are true: 198 1. The client did not include the "token_binding" extension in the 199 client hello. 201 2. "token_binding_version" is higher than the Token Binding protocol 202 version advertised by the client. 204 3. "key_parameters_list" includes more than one Token Binding key 205 parameters identifier. 207 4. "key_parameters_list" includes an identifier that was not 208 advertised by the client. 210 5. TLS 1.2 or an older TLS version is used, but the Extended Master 211 Secret [RFC7627] and TLS Renegotiation Indication [RFC5746] 212 extensions are not negotiated (see Section 6 213 "Security Considerations" below for more details). 215 If the "token_binding" extension is included in the server hello and 216 the client supports the Token Binding protocol version selected by 217 the server, it means that the version and key parameters have been 218 negotiated between the client and the server and SHALL be definitive 219 for the TLS connection. TLS 1.2 and earlier versions support 220 renegotiation, allowing the client and server to renegotiate the 221 Token Binding protocol version and key parameters on the same 222 connection. The client MUST use the negotiated key parameters in the 223 "provided_token_binding" as described in [I-D.ietf-tokbind-protocol]. 225 If the client does not support the Token Binding protocol version 226 selected by the server, then the connection proceeds without Token 227 Binding. There is no requirement for the client to support any Token 228 Binding versions other than the one advertised in the client's 229 "token_binding" extension. 231 Client and server applications can choose to handle failure to 232 negotiate Token Binding in a variety of ways, e.g.: continue using 233 the connection as usual, shorten the lifetime of tokens issued during 234 this connection, require stronger authentication, terminate the 235 connection, etc. 237 The Token Binding protocol version and key parameters are negotiated 238 for each TLS connection, which means that the client and server 239 include their "token_binding" extensions both in the full TLS 240 handshake that establishes a new TLS session and in the subsequent 241 abbreviated TLS handshakes that resume the TLS session. 243 5. IANA Considerations 245 This document updates the TLS "ExtensionType Values" registry. IANA 246 has provided the following temporary registration for the 247 "token_binding" TLS extension: 249 Value: 24 251 Extension name: token_binding 253 Reference: this document 255 Recommended: Yes 257 IANA is requested to make this registration permanent, keeping the 258 value of 24, which has been used by the prototype implementations of 259 the Token Binding protocol. 261 This document uses "Token Binding Key Parameters" registry originally 262 created in [I-D.ietf-tokbind-protocol]. This document creates no new 263 registrations in this registry. 265 6. Security Considerations 267 6.1. Downgrade Attacks 269 The Token Binding protocol version and key parameters are negotiated 270 via the "token_binding" extension within the TLS handshake. TLS 271 detects handshake message modification by active attackers, therefore 272 it is not possible for an attacker to remove or modify the 273 "token_binding" extension without breaking the TLS handshake. The 274 signature algorithm and key length used in the Token Binding of type 275 "provided_token_binding" MUST match the parameters negotiated via the 276 "token_binding" extension. 278 6.2. Triple Handshake Vulnerability in TLS 1.2 and Older TLS Versions 280 The Token Binding protocol relies on the TLS Exporters [RFC5705] to 281 associate a TLS connection with a Token Binding. The triple 282 handshake attack [TRIPLE-HS] is a known vulnerability in TLS 1.2 and 283 older TLS versions, allowing an attacker to synchronize keying 284 material between TLS connections. The attacker can then successfully 285 replay bound tokens. For this reason, the Token Binding protocol 286 MUST NOT be negotiated with these TLS versions, unless the Extended 287 Master Secret [RFC7627] and Renegotiation Indication [RFC5746] TLS 288 extensions have also been negotiated. 290 7. Acknowledgements 292 This document incorporates comments and suggestions offered by Eric 293 Rescorla, Gabriel Montenegro, Martin Thomson, Vinod Anupam, Anthony 294 Nadalin, Michael B. Jones, Bill Cox, Nick Harper, Brian Campbell, 295 Benjamin Kaduk, Alexey Melnikov and others. 297 This document was produced under the chairmanship of John Bradley and 298 Leif Johansson. The area directors included Eric Rescorla, Kathleen 299 Moriarty and Stephen Farrell. 301 8. References 303 8.1. Normative References 305 [I-D.ietf-tokbind-protocol] 306 Popov, A., Nystrom, M., Balfanz, D., Langley, A., and J. 307 Hodges, "The Token Binding Protocol Version 1.0", draft- 308 ietf-tokbind-protocol-18 (work in progress), May 2018. 310 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 311 Requirement Levels", BCP 14, RFC 2119, 312 DOI 10.17487/RFC2119, March 1997, 313 . 315 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 316 (TLS) Protocol Version 1.2", RFC 5246, 317 DOI 10.17487/RFC5246, August 2008, 318 . 320 [RFC5705] Rescorla, E., "Keying Material Exporters for Transport 321 Layer Security (TLS)", RFC 5705, DOI 10.17487/RFC5705, 322 March 2010, . 324 [RFC5746] Rescorla, E., Ray, M., Dispensa, S., and N. Oskov, 325 "Transport Layer Security (TLS) Renegotiation Indication 326 Extension", RFC 5746, DOI 10.17487/RFC5746, February 2010, 327 . 329 [RFC7627] Bhargavan, K., Ed., Delignat-Lavaud, A., Pironti, A., 330 Langley, A., and M. Ray, "Transport Layer Security (TLS) 331 Session Hash and Extended Master Secret Extension", 332 RFC 7627, DOI 10.17487/RFC7627, September 2015, 333 . 335 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 336 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 337 May 2017, . 339 8.2. Informative References 341 [TRIPLE-HS] 342 Bhargavan, K., Delignat-Lavaud, A., Fournet, C., Pironti, 343 A., and P. Strub, "Triple Handshakes and Cookie Cutters: 344 Breaking and Fixing Authentication over TLS. IEEE 345 Symposium on Security and Privacy", 2014. 347 Authors' Addresses 349 Andrei Popov (editor) 350 Microsoft Corp. 351 USA 353 Email: andreipo@microsoft.com 355 Magnus Nystroem 356 Microsoft Corp. 357 USA 359 Email: mnystrom@microsoft.com 361 Dirk Balfanz 362 Google Inc. 363 USA 365 Email: balfanz@google.com 367 Adam Langley 368 Google Inc. 369 USA 371 Email: agl@google.com