Internet Engineering Task Force A. Popov, Ed.
Internet-Draft M. Nystroem
Intended status: Standards Track Microsoft Corp.
Expires: October 23, 2017 D. Balfanz
A. Langley
Google Inc.
April 21, 2017
Transport Layer Security (TLS) Extension for Token Binding Protocol
Negotiation
draft-ietf-tokbind-negotiation-08
Abstract
This document specifies a Transport Layer Security (TLS) [RFC5246]
extension for the negotiation of Token Binding protocol
[I-D.ietf-tokbind-protocol] version and key parameters.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on October 23, 2017.
Copyright Notice
Copyright (c) 2017 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
(http://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
Popov, et al. Expires October 23, 2017 [Page 1]
Internet-Draft Token Binding Negotiation TLS Extension April 2017
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2
2. Token Binding Negotiation Client Hello Extension . . . . . . 2
3. Token Binding Negotiation Server Hello Extension . . . . . . 3
4. Negotiating Token Binding Protocol Version and Key Parameters 4
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5
6. Security Considerations . . . . . . . . . . . . . . . . . . . 6
6.1. Downgrade Attacks . . . . . . . . . . . . . . . . . . . . 6
6.2. Triple Handshake Vulnerability in TLS 1.2 and Older TLS
Versions . . . . . . . . . . . . . . . . . . . . . . . . 6
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 6
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 6
8.1. Normative References . . . . . . . . . . . . . . . . . . 6
8.2. Informative References . . . . . . . . . . . . . . . . . 7
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 7
1. Introduction
In order to use the Token Binding protocol
[I-D.ietf-tokbind-protocol], the client and server need to agree on
the Token Binding protocol version and the parameters (signature
algorithm, length) of the Token Binding key. This document specifies
a new TLS extension to accomplish this negotiation without
introducing additional network round-trips in TLS 1.2 and earlier
versions. 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.
1.1. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119].
2. Token Binding Negotiation Client Hello 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. Expires October 23, 2017 [Page 2]
Internet-Draft Token Binding Negotiation TLS Extension April 2017
The "extension_data" field of this extension contains a
"TokenBindingParameters" value.
struct {
uint8 major;
uint8 minor;
} ProtocolVersion;
enum {
(255)
} TokenBindingKeyParameters;
struct {
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. This
SHOULD be the latest (highest valued) version supported by the
client. [I-D.ietf-tokbind-protocol] describes version {1, 0} of the
protocol.
RFC EDITOR: PLEASE REMOVE THE FOLLOWING PARAGRAPH: Prototype
implementations of Token Binding drafts can indicate support of a
specific draft version, e.g. {0, 1} or {0, 2}.
"key_parameters_list" contains the list of identifiers of the Token
Binding key parameters supported by the client, in descending order
of preference. [I-D.ietf-tokbind-protocol] defines an initial set of
identifiers for Token Binding key parameters.
3. Token Binding Negotiation Server Hello 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.
The server that supports Token Binding and receives a client hello
message containing the "token_binding" extension will include the
"token_binding" extension in the server hello 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 on the
client's list.
Popov, et al. Expires October 23, 2017 [Page 3]
Internet-Draft Token Binding Negotiation TLS Extension April 2017
3. The server is also negotiating the Extended Master Secret
[RFC7627] and Renegotiation Indication [RFC5746] TLS extensions.
This requirement only applies when TLS 1.2 or an older TLS
version is used (see security considerations section below 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 the Token Binding
protocol version offered by the client in the "token_binding"
extension and the highest 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
"token_binding" extension in the server hello.
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
client hello.
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 [RFC7627] and TLS Renegotiation Indication [RFC5746]
Popov, et al. Expires October 23, 2017 [Page 4]
Internet-Draft Token Binding Negotiation TLS Extension April 2017
extensions are not negotiated (see security considerations
section below for more details).
If the "token_binding" extension is included in the server hello 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. Please note that TLS 1.2 and earlier
versions support renegotiation, allowing 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
[I-D.ietf-tokbind-protocol].
If the client does not support the Token Binding protocol version
selected by the server, then the connection proceeds without Token
Binding.
Please note that 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 both
in the full TLS handshake that establishes a new TLS session and in
the subsequent abbreviated TLS handshakes that resume the TLS
session.
5. IANA Considerations
This document updates the TLS "ExtensionType Values" registry
originally created in [RFC4366]. IANA has provided the following
temporary registration for the "token_binding" TLS extension:
Value: 24
Extension name: token_binding
Reference: this document
IANA is requested to make this registration permanent, keeping the
value of 24, which has been used by the prototype implementations of
the Token Binding protocol.
This document uses "Token Binding Key Parameters" registry originally
created in [I-D.ietf-tokbind-protocol]. This document creates no new
registrations in this registry.
Popov, et al. Expires October 23, 2017 [Page 5]
Internet-Draft Token Binding Negotiation TLS Extension April 2017
6. Security Considerations
6.1. Downgrade Attacks
The Token Binding protocol version and key parameters are negotiated
via "token_binding" extension within the TLS handshake. TLS prevents
active attackers from modifying the messages of the TLS handshake,
therefore it is not possible for the attacker to remove or modify the
"token_binding" extension. The signature algorithm and key length
used in the Token Binding of type "provided_token_binding" MUST match
the parameters negotiated via "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 [RFC5705] 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, allowing the 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 [RFC7627] and Renegotiation Indication [RFC5746] TLS
extensions have also been negotiated.
7. 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 and
others.
8. References
8.1. Normative References
[I-D.ietf-tokbind-protocol]
Popov, A., Nystrom, M., Balfanz, D., Langley, A., and J.
Hodges, "The Token Binding Protocol Version 1.0", draft-
ietf-tokbind-protocol-13 (work in progress), February
2017.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>.
Popov, et al. Expires October 23, 2017 [Page 6]
Internet-Draft Token Binding Negotiation TLS Extension April 2017
[RFC4366] Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J.,
and T. Wright, "Transport Layer Security (TLS)
Extensions", RFC 4366, DOI 10.17487/RFC4366, April 2006,
<http://www.rfc-editor.org/info/rfc4366>.
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an
IANA Considerations Section in RFCs", BCP 26, RFC 5226,
DOI 10.17487/RFC5226, May 2008,
<http://www.rfc-editor.org/info/rfc5226>.
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security
(TLS) Protocol Version 1.2", RFC 5246,
DOI 10.17487/RFC5246, August 2008,
<http://www.rfc-editor.org/info/rfc5246>.
[RFC5705] Rescorla, E., "Keying Material Exporters for Transport
Layer Security (TLS)", RFC 5705, DOI 10.17487/RFC5705,
March 2010, <http://www.rfc-editor.org/info/rfc5705>.
[RFC5746] Rescorla, E., Ray, M., Dispensa, S., and N. Oskov,
"Transport Layer Security (TLS) Renegotiation Indication
Extension", RFC 5746, DOI 10.17487/RFC5746, February 2010,
<http://www.rfc-editor.org/info/rfc5746>.
[RFC7627] 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/RFC7627, September 2015,
<http://www.rfc-editor.org/info/rfc7627>.
8.2. Informative References
[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", 2014.
Authors' Addresses
Andrei Popov (editor)
Microsoft Corp.
USA
Email: andreipo@microsoft.com
Popov, et al. Expires October 23, 2017 [Page 7]
Internet-Draft Token Binding Negotiation TLS Extension April 2017
Magnus Nystroem
Microsoft Corp.
USA
Email: mnystrom@microsoft.com
Dirk Balfanz
Google Inc.
USA
Email: balfanz@google.com
Adam Langley
Google Inc.
USA
Email: agl@google.com
Popov, et al. Expires October 23, 2017 [Page 8]