idnits 2.17.1 draft-ietf-tokbind-negotiation-10.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 (October 15, 2017) is 2382 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-15 ** 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: April 18, 2018 D. Balfanz 6 A. Langley 7 Google Inc. 8 October 15, 2017 10 Transport Layer Security (TLS) Extension for Token Binding Protocol 11 Negotiation 12 draft-ietf-tokbind-negotiation-10 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 April 18, 2018. 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 (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 . . . . . . 3 58 4. Negotiating Token Binding Protocol Version and Key Parameters 4 59 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5 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 . . . . . . . . . . . . . . . . . . . . . . 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 [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", "MAY", and "OPTIONAL" in this 86 document are to be interpreted as described in [RFC2119]. 88 2. Token Binding Negotiation Client Hello Extension 90 The client uses the "token_binding" TLS extension to indicate the 91 highest supported Token Binding protocol version and key parameters. 93 enum { 94 token_binding(24), (65535) 95 } ExtensionType; 96 The "extension_data" field of this extension contains a 97 "TokenBindingParameters" value. 99 struct { 100 uint8 major; 101 uint8 minor; 102 } TB_ProtocolVersion; 104 enum { 105 rsa2048_pkcs1.5(0), rsa2048_pss(1), ecdsap256(2), (255) 106 } TokenBindingKeyParameters; 108 struct { 109 TB_ProtocolVersion token_binding_version; 110 TokenBindingKeyParameters key_parameters_list<1..2^8-1> 111 } TokenBindingParameters; 113 "token_binding_version" indicates the version of the Token Binding 114 protocol the client wishes to use during this connection. If the 115 client supports multiple Token Binding protocol versions, it SHOULD 116 indicate the latest (highest valued) version in 117 TokenBindingParameters.token_binding_version. 118 [I-D.ietf-tokbind-protocol] describes version {1, 0} of the protocol. 120 RFC EDITOR: PLEASE REMOVE THE FOLLOWING PARAGRAPH: Prototype 121 implementations of Token Binding drafts can indicate support of a 122 specific draft version, e.g. {0, 1} or {0, 2}. 124 "key_parameters_list" contains the list of identifiers of the Token 125 Binding key parameters supported by the client, in descending order 126 of preference. [I-D.ietf-tokbind-protocol] defines an initial set of 127 identifiers for Token Binding key parameters. 129 3. Token Binding Negotiation Server Hello Extension 131 The server uses the "token_binding" TLS extension to indicate support 132 for the Token Binding protocol and to select the protocol version and 133 key parameters. 135 The server that supports Token Binding and receives a client hello 136 message containing the "token_binding" extension will include the 137 "token_binding" extension in the server hello if all of the following 138 conditions are satisfied: 140 1. The server supports the Token Binding protocol version offered by 141 the client or a lower version. 143 2. The server finds acceptable Token Binding key parameters on the 144 client's list. 146 3. The server is also negotiating the Extended Master Secret 147 [RFC7627] and Renegotiation Indication [RFC5746] TLS extensions. 148 This requirement only applies when TLS 1.2 or an older TLS 149 version is used (see security considerations section below for 150 more details). 152 The server will ignore any key parameters that it does not recognize. 153 The "extension_data" field of the "token_binding" extension is 154 structured the same as described above for the client 155 "extension_data". 157 "token_binding_version" contains the lower of: 159 o the Token Binding protocol version offered by the client in the 160 "token_binding" extension and 162 o the highest version supported by the server. 164 "key_parameters_list" contains exactly one Token Binding key 165 parameters identifier selected by the server from the client's list. 167 4. Negotiating Token Binding Protocol Version and Key Parameters 169 It is expected that a server will have a list of Token Binding key 170 parameters identifiers that it supports, in preference order. The 171 server MUST only select an identifier that the client offered. The 172 server SHOULD select the most highly preferred key parameters 173 identifier it supports which is also advertised by the client. In 174 the event that the server supports none of the key parameters that 175 the client advertises, then the server MUST NOT include 176 "token_binding" extension in the server hello. 178 The client receiving the "token_binding" extension MUST terminate the 179 handshake with a fatal "unsupported_extension" alert if any of the 180 following conditions are true: 182 1. The client did not include the "token_binding" extension in the 183 client hello. 185 2. "token_binding_version" is higher than the Token Binding protocol 186 version advertised by the client. 188 3. "key_parameters_list" includes more than one Token Binding key 189 parameters identifier. 191 4. "key_parameters_list" includes an identifier that was not 192 advertised by the client. 194 5. TLS 1.2 or an older TLS version is used, but the Extended Master 195 Secret [RFC7627] and TLS Renegotiation Indication [RFC5746] 196 extensions are not negotiated (see security considerations 197 section below for more details). 199 If the "token_binding" extension is included in the server hello and 200 the client supports the Token Binding protocol version selected by 201 the server, it means that the version and key parameters have been 202 negotiated between the client and the server and SHALL be definitive 203 for the TLS connection. TLS 1.2 and earlier versions support 204 renegotiation, allowing the client and server to renegotiate the 205 Token Binding protocol version and key parameters on the same 206 connection. The client MUST use the negotiated key parameters in the 207 "provided_token_binding" as described in [I-D.ietf-tokbind-protocol]. 209 If the client does not support the Token Binding protocol version 210 selected by the server, then the connection proceeds without Token 211 Binding. 213 Please note that the Token Binding protocol version and key 214 parameters are negotiated for each TLS connection, which means that 215 the client and server include their "token_binding" extensions both 216 in the full TLS handshake that establishes a new TLS session and in 217 the subsequent abbreviated TLS handshakes that resume the TLS 218 session. 220 5. IANA Considerations 222 This document updates the TLS "ExtensionType Values" registry. IANA 223 has provided the following temporary registration for the 224 "token_binding" TLS extension: 226 Value: 24 228 Extension name: token_binding 230 Reference: this document 232 IANA is requested to make this registration permanent, keeping the 233 value of 24, which has been used by the prototype implementations of 234 the Token Binding protocol. 236 This document uses "Token Binding Key Parameters" registry originally 237 created in [I-D.ietf-tokbind-protocol]. This document creates no new 238 registrations in this registry. 240 6. Security Considerations 242 6.1. Downgrade Attacks 244 The Token Binding protocol version and key parameters are negotiated 245 via "token_binding" extension within the TLS handshake. TLS prevents 246 active attackers from modifying the messages of the TLS handshake, 247 therefore it is not possible for the attacker to remove or modify the 248 "token_binding" extension. The signature algorithm and key length 249 used in the Token Binding of type "provided_token_binding" MUST match 250 the parameters negotiated via "token_binding" extension. 252 6.2. Triple Handshake Vulnerability in TLS 1.2 and Older TLS Versions 254 The Token Binding protocol relies on the TLS Exporters [RFC5705] to 255 associate a TLS connection with a Token Binding. The triple 256 handshake attack [TRIPLE-HS] is a known vulnerability in TLS 1.2 and 257 older TLS versions, allowing the attacker to synchronize keying 258 material between TLS connections. The attacker can then successfully 259 replay bound tokens. For this reason, the Token Binding protocol 260 MUST NOT be negotiated with these TLS versions, unless the Extended 261 Master Secret [RFC7627] and Renegotiation Indication [RFC5746] TLS 262 extensions have also been negotiated. 264 7. Acknowledgements 266 This document incorporates comments and suggestions offered by Eric 267 Rescorla, Gabriel Montenegro, Martin Thomson, Vinod Anupam, Anthony 268 Nadalin, Michael B. Jones, Bill Cox, Nick Harper, Brian Campbell and 269 others. 271 8. References 273 8.1. Normative References 275 [I-D.ietf-tokbind-protocol] 276 Popov, A., Nystrom, M., Balfanz, D., Langley, A., and J. 277 Hodges, "The Token Binding Protocol Version 1.0", draft- 278 ietf-tokbind-protocol-15 (work in progress), July 2017. 280 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 281 Requirement Levels", BCP 14, RFC 2119, 282 DOI 10.17487/RFC2119, March 1997, 283 . 285 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 286 (TLS) Protocol Version 1.2", RFC 5246, 287 DOI 10.17487/RFC5246, August 2008, 288 . 290 [RFC5705] Rescorla, E., "Keying Material Exporters for Transport 291 Layer Security (TLS)", RFC 5705, DOI 10.17487/RFC5705, 292 March 2010, . 294 [RFC5746] Rescorla, E., Ray, M., Dispensa, S., and N. Oskov, 295 "Transport Layer Security (TLS) Renegotiation Indication 296 Extension", RFC 5746, DOI 10.17487/RFC5746, February 2010, 297 . 299 [RFC7627] Bhargavan, K., Ed., Delignat-Lavaud, A., Pironti, A., 300 Langley, A., and M. Ray, "Transport Layer Security (TLS) 301 Session Hash and Extended Master Secret Extension", 302 RFC 7627, DOI 10.17487/RFC7627, September 2015, 303 . 305 8.2. Informative References 307 [TRIPLE-HS] 308 Bhargavan, K., Delignat-Lavaud, A., Fournet, C., Pironti, 309 A., and P. Strub, "Triple Handshakes and Cookie Cutters: 310 Breaking and Fixing Authentication over TLS. IEEE 311 Symposium on Security and Privacy", 2014. 313 Authors' Addresses 315 Andrei Popov (editor) 316 Microsoft Corp. 317 USA 319 Email: andreipo@microsoft.com 321 Magnus Nystroem 322 Microsoft Corp. 323 USA 325 Email: mnystrom@microsoft.com 326 Dirk Balfanz 327 Google Inc. 328 USA 330 Email: balfanz@google.com 332 Adam Langley 333 Google Inc. 334 USA 336 Email: agl@google.com