idnits 2.17.1 draft-ietf-tokbind-negotiation-01.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 (October 6, 2015) is 3118 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-02 ** Obsolete normative reference: RFC 5226 (Obsoleted by RFC 8126) ** Obsolete normative reference: RFC 5246 (Obsoleted by RFC 8446) Summary: 3 errors (**), 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 8, 2016 D. Balfanz 6 A. Langley 7 Google Inc. 8 October 6, 2015 10 Transport Layer Security (TLS) Extension for Token Binding Protocol 11 Negotiation 12 draft-ietf-tokbind-negotiation-01 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 April 8, 2016. 37 Copyright Notice 39 Copyright (c) 2015 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 . . . . . . . . . . . . . . . . . . . 6 61 6.1. Downgrade Attacks . . . . . . . . . . . . . . . . . . . . 6 62 6.2. Triple Handshake Vulnerability in TLS . . . . . . . . . . 6 63 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 6 64 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 6 65 8.1. Normative References . . . . . . . . . . . . . . . . . . 6 66 8.2. Informative References . . . . . . . . . . . . . . . . . 7 67 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 7 69 1. Introduction 71 In order to use the Token Binding protocol 72 [I-D.ietf-tokbind-protocol], the client and server need to agree on 73 the Token Binding protocol version and the parameters (signature 74 algorithm, length) of the Token Binding key. This document specifies 75 a new TLS extension to accomplish this negotiation without 76 introducing additional network round-trips. 78 1.1. Requirements Language 80 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 81 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 82 document are to be interpreted as described in [RFC2119]. 84 2. Token Binding Negotiation Client Hello Extension 86 The client uses the "token_binding" TLS extension to indicate the 87 highest supported Token Binding protocol version and key parameters. 89 enum { 90 token_binding(TBD), (65535) 91 } ExtensionType; 93 The "extension_data" field of this extension contains a 94 "TokenBindingParameters" value. 96 struct { 97 uint8 major; 98 uint8 minor; 99 } ProtocolVersion; 101 enum { 102 rsa2048_pkcs1.5(0), rsa2048_pss(1), ecdsap256(2), (255) 103 } TokenBindingKeyParameters; 105 struct { 106 ProtocolVersion token_binding_version; 107 TokenBindingKeyParameters key_parameters_list<1..2^8-1> 108 } TokenBindingParameters; 110 "token_binding_version" indicates the version of the Token Binding 111 protocol the client wishes to use during this connection. This 112 SHOULD be the latest (highest valued) version supported by the 113 client. [I-D.ietf-tokbind-protocol] describes version {1, 0} of the 114 protocol. Prototype implementations of Token Binding drafts can 115 indicate support of a specific draft version, e.g. {0, 1} or {0, 2}. 117 "key_parameters_list" contains the list of identifiers of the Token 118 Binding key parameters supported by the client, in descending order 119 of preference. 121 3. Token Binding Negotiation Server Hello Extension 123 The server uses the "token_binding" TLS extension to indicate support 124 for the Token Binding protocol and to select the protocol version and 125 key parameters. 127 The server that supports Token Binding and receives a client hello 128 message containing the "token_binding" extension, will include the 129 "token_binding" extension in the server hello if all of the following 130 conditions are satisfied: 132 1. The server supports the Token Binding protocol version offered by 133 the client or a lower version. 135 2. The server finds acceptable Token Binding key parameters on the 136 client's list. 138 3. The server is also negotiating Extended Master Secret TLS 139 extension [I-D.ietf-tls-session-hash] (see security 140 considerations section below for more details). 142 The server will ignore any key parameters that it does not recognize. 143 The "extension_data" field of the "token_binding" extension is 144 structured the same as described above for the client 145 "extension_data". 147 "token_binding_version" contains the lower of the Token Binding 148 protocol version offered by the client in the "token_binding" 149 extension and the highest version supported by the server. 151 "key_parameters_list" contains exactly one Token Binding key 152 parameters identifier selected by the server from the client's list. 154 4. Negotiating Token Binding Protocol Version and Key Parameters 156 It is expected that a server will have a list of Token Binding key 157 parameters identifiers that it supports, in preference order. The 158 server MUST only select an identifier that the client offered. The 159 server SHOULD select the most highly preferred key parameters 160 identifier it supports which is also advertised by the client. In 161 the event that the server supports none of the key parameters that 162 the client advertises, then the server MUST NOT include 163 "token_binding" extension in the server hello. 165 The client receiving the "token_binding" extension MUST terminate the 166 handshake with a fatal "unsupported_extension" alert if any of the 167 following conditions are true: 169 1. The client did not include the "token_binding" extension in the 170 client hello. 172 2. "token_binding_version" is higher than the Token Binding protocol 173 version advertised by the client. 175 3. "key_parameters_list" includes more than one Token Binding key 176 parameters identifier. 178 4. "key_parameters_list" includes an identifier that was not 179 advertised by the client. 181 5. Extended Master Secret [I-D.ietf-tls-session-hash] is not 182 negotiated (see security considerations section below for more 183 details). 185 If the "token_binding" extension is included in the server hello and 186 the client supports the Token Binding protocol version selected by 187 the server, it means that the version and key parameters have been 188 negotiated between the client and the server and SHALL be definitive 189 for the TLS connection. In this case, the client MUST use the 190 negotiated key parameters in the "provided_token_binding" as 191 described in [I-D.ietf-tokbind-protocol]. 193 If the client does not support the Token Binding protocol version 194 selected by the server, then the connection proceeds without Token 195 Binding. 197 Please note that the Token Binding protocol version and key 198 parameters are negotiated for each TLS connection, which means that 199 the client and server include their "token_binding" extensions both 200 in the full TLS handshake that establishes a new TLS session and in 201 the subsequent abbreviated TLS handshakes that resume the TLS 202 session. 204 5. IANA Considerations 206 This document defines a new TLS extension "token_binding", which 207 needs to be added to the IANA "Transport Layer Security (TLS) 208 Extensions" registry. 210 This document establishes a registry for identifiers of Token Binding 211 key parameters entitled "Token Binding Key Parameters" under the 212 "Token Binding Protocol" heading. 214 Entries in this registry require the following fields: 216 o Value: The octet value that identifies a set of Token Binding key 217 parameters (0-255). 219 o Description: The description of the Token Binding key parameters. 221 o Specification: A reference to a specification that defines the 222 Token Binding key parameters. 224 This registry operates under the "Expert Review" policy as defined in 225 [RFC5226]. The designated expert is advised to encourage the 226 inclusion of a reference to a permanent and readily available 227 specification that enables the creation of interoperable 228 implementations using the identified set of Token Binding key 229 parameters. 231 An initial set of registrations for this registry follows: 233 Value: 0 235 Description: rsa2048_pkcs1.5 237 Specification: this document 239 Value: 1 240 Description: rsa2048_pss 242 Specification: this document 244 Value: 2 246 Description: ecdsap256 248 Specification: this document 250 6. Security Considerations 252 6.1. Downgrade Attacks 254 The Token Binding protocol version and key parameters are negotiated 255 via "token_binding" extension within the TLS handshake. TLS prevents 256 active attackers from modifying the messages of the TLS handshake, 257 therefore it is not possible for the attacker to remove or modify the 258 "token_binding" extension. The signature algorithm and key length 259 used in the TokenBinding of type "provided_token_binding" MUST match 260 the parameters negotiated via "token_binding" extension. 262 6.2. Triple Handshake Vulnerability in TLS 264 The Token Binding protocol relies on the TLS Exporters [RFC5705] to 265 associate a TLS connection with a Token Binding. The triple 266 handshake attack [TRIPLE-HS] is a known TLS protocol vulnerability 267 allowing the attacker to synchronize exported keying material between 268 TLS connections. The attacker can then successfully replay bound 269 tokens. For this reason, the Token Binding protocol MUST NOT be 270 negotiated unless the Extended Master Secret TLS extension 271 [I-D.ietf-tls-session-hash] has also been negotiated. 273 7. Acknowledgements 275 This document incorporates comments and suggestions offered by Eric 276 Rescorla, Gabriel Montenegro, Martin Thomson, Vinod Anupam, Bill Cox, 277 Nick Harper and others. 279 8. References 281 8.1. Normative References 283 [I-D.ietf-tokbind-protocol] 284 Popov, A., Nystrom, M., Balfanz, D., and A. Langley, "The 285 Token Binding Protocol Version 1.0", draft-ietf-tokbind- 286 protocol-02 (work in progress), September 2015. 288 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 289 Requirement Levels", BCP 14, RFC 2119, 290 DOI 10.17487/RFC2119, March 1997, 291 . 293 [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an 294 IANA Considerations Section in RFCs", BCP 26, RFC 5226, 295 DOI 10.17487/RFC5226, May 2008, 296 . 298 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 299 (TLS) Protocol Version 1.2", RFC 5246, 300 DOI 10.17487/RFC5246, August 2008, 301 . 303 [RFC5705] Rescorla, E., "Keying Material Exporters for Transport 304 Layer Security (TLS)", RFC 5705, DOI 10.17487/RFC5705, 305 March 2010, . 307 8.2. Informative References 309 [I-D.ietf-tls-session-hash] 310 Bhargavan, K., Delignat-Lavaud, A., Pironti, A., Langley, 311 A., and M. Ray, "Transport Layer Security (TLS) Session 312 Hash and Extended Master Secret Extension", draft-ietf- 313 tls-session-hash-06 (work in progress), July 2015. 315 [TRIPLE-HS] 316 Bhargavan, K., Delignat-Lavaud, A., Fournet, C., Pironti, 317 A., and P. Strub, "Triple Handshakes and Cookie Cutters: 318 Breaking and Fixing Authentication over TLS. IEEE 319 Symposium on Security and Privacy", 2014. 321 Authors' Addresses 323 Andrei Popov (editor) 324 Microsoft Corp. 325 USA 327 Email: andreipo@microsoft.com 329 Magnus Nystroem 330 Microsoft Corp. 331 USA 333 Email: mnystrom@microsoft.com 334 Dirk Balfanz 335 Google Inc. 336 USA 338 Email: balfanz@google.com 340 Adam Langley 341 Google Inc. 342 USA 344 Email: agl@google.com