draft-ietf-tokbind-negotiation-03.txt   draft-ietf-tokbind-negotiation-04.txt 
Internet Engineering Task Force A. Popov, Ed. Internet Engineering Task Force A. Popov, Ed.
Internet-Draft M. Nystroem Internet-Draft M. Nystroem
Intended status: Standards Track Microsoft Corp. Intended status: Standards Track Microsoft Corp.
Expires: January 8, 2017 D. Balfanz Expires: February 27, 2017 D. Balfanz
A. Langley A. Langley
Google Inc. Google Inc.
July 7, 2016 August 26, 2016
Transport Layer Security (TLS) Extension for Token Binding Protocol Transport Layer Security (TLS) Extension for Token Binding Protocol
Negotiation Negotiation
draft-ietf-tokbind-negotiation-03 draft-ietf-tokbind-negotiation-04
Abstract Abstract
This document specifies a Transport Layer Security (TLS) [RFC5246] This document specifies a Transport Layer Security (TLS) [RFC5246]
extension for the negotiation of Token Binding protocol extension for the negotiation of Token Binding protocol
[I-D.ietf-tokbind-protocol] version and key parameters. [I-D.ietf-tokbind-protocol] version and key parameters.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
skipping to change at page 1, line 36 skipping to change at page 1, line 36
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on January 8, 2017. This Internet-Draft will expire on February 27, 2017.
Copyright Notice Copyright Notice
Copyright (c) 2016 IETF Trust and the persons identified as the Copyright (c) 2016 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 16 skipping to change at page 2, line 16
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2
2. Token Binding Negotiation Client Hello Extension . . . . . . 2 2. Token Binding Negotiation Client Hello Extension . . . . . . 2
3. Token Binding Negotiation Server Hello Extension . . . . . . 3 3. Token Binding Negotiation Server Hello Extension . . . . . . 3
4. Negotiating Token Binding Protocol Version and Key Parameters 4 4. Negotiating Token Binding Protocol Version and Key Parameters 4
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5
6. Security Considerations . . . . . . . . . . . . . . . . . . . 5 6. Security Considerations . . . . . . . . . . . . . . . . . . . 5
6.1. Downgrade Attacks . . . . . . . . . . . . . . . . . . . . 5 6.1. Downgrade Attacks . . . . . . . . . . . . . . . . . . . . 6
6.2. Triple Handshake Vulnerability in TLS 1.2 and Older TLS 6.2. Triple Handshake Vulnerability in TLS 1.2 and Older TLS
Versions . . . . . . . . . . . . . . . . . . . . . . . . 5 Versions . . . . . . . . . . . . . . . . . . . . . . . . 6
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 6 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 6
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 6 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 6
8.1. Normative References . . . . . . . . . . . . . . . . . . 6 8.1. Normative References . . . . . . . . . . . . . . . . . . 6
8.2. Informative References . . . . . . . . . . . . . . . . . 7 8.2. Informative References . . . . . . . . . . . . . . . . . 7
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 7 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 7
1. Introduction 1. Introduction
In order to use the Token Binding protocol In order to use the Token Binding protocol
[I-D.ietf-tokbind-protocol], the client and server need to agree on [I-D.ietf-tokbind-protocol], the client and server need to agree on
skipping to change at page 2, line 46 skipping to change at page 2, line 46
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119]. document are to be interpreted as described in [RFC2119].
2. Token Binding Negotiation Client Hello Extension 2. Token Binding Negotiation Client Hello Extension
The client uses the "token_binding" TLS extension to indicate the The client uses the "token_binding" TLS extension to indicate the
highest supported Token Binding protocol version and key parameters. highest supported Token Binding protocol version and key parameters.
enum { enum {
token_binding(TBD), (65535) token_binding(24), (65535)
} ExtensionType; } ExtensionType;
The "extension_data" field of this extension contains a The "extension_data" field of this extension contains a
"TokenBindingParameters" value. "TokenBindingParameters" value.
struct { struct {
uint8 major; uint8 major;
uint8 minor; uint8 minor;
} ProtocolVersion; } ProtocolVersion;
skipping to change at page 3, line 48 skipping to change at page 3, line 48
message containing the "token_binding" extension, will include the message containing the "token_binding" extension, will include the
"token_binding" extension in the server hello if all of the following "token_binding" extension in the server hello if all of the following
conditions are satisfied: conditions are satisfied:
1. The server supports the Token Binding protocol version offered by 1. The server supports the Token Binding protocol version offered by
the client or a lower version. the client or a lower version.
2. The server finds acceptable Token Binding key parameters on the 2. The server finds acceptable Token Binding key parameters on the
client's list. client's list.
3. The server is also negotiating Extended Master Secret [RFC7627] 3. The server is also negotiating the Extended Master Secret
and Renegotiation Indication [RFC5746] TLS extensions. This [RFC7627] TLS extension. This requirement only applies when TLS
requirement only applies when TLS 1.2 or an older TLS version is 1.2 or an older TLS version is used (see security considerations
used (see security considerations section below for more section below for more details).
details).
4. The server is also negotiating the Renegotiation Indication
[RFC5746] TLS extension. This requirement only applies if the
TLS server is configured to initiate or allow renegotiation.
The server will ignore any key parameters that it does not recognize. The server will ignore any key parameters that it does not recognize.
The "extension_data" field of the "token_binding" extension is The "extension_data" field of the "token_binding" extension is
structured the same as described above for the client structured the same as described above for the client
"extension_data". "extension_data".
"token_binding_version" contains the lower of the Token Binding "token_binding_version" contains the lower of the Token Binding
protocol version offered by the client in the "token_binding" protocol version offered by the client in the "token_binding"
extension and the highest version supported by the server. extension and the highest version supported by the server.
skipping to change at page 4, line 44 skipping to change at page 4, line 48
2. "token_binding_version" is higher than the Token Binding protocol 2. "token_binding_version" is higher than the Token Binding protocol
version advertised by the client. version advertised by the client.
3. "key_parameters_list" includes more than one Token Binding key 3. "key_parameters_list" includes more than one Token Binding key
parameters identifier. parameters identifier.
4. "key_parameters_list" includes an identifier that was not 4. "key_parameters_list" includes an identifier that was not
advertised by the client. advertised by the client.
5. TLS 1.2 or an older TLS version is used, but Extended Master 5. TLS 1.2 or an older TLS version is used, but the Extended Master
Secret [RFC7627] and Renegotiation Indication [RFC5746] TLS Secret [RFC7627] TLS extension is not negotiated (see security
extensions are not negotiated (see security considerations considerations section below for more details).
section below for more details).
6. The client is configured to initiate or allow renegotiation, but
the Renegotiation Indication [RFC5746] TLS extension is not
negotiated.
If the "token_binding" extension is included in the server hello and If the "token_binding" extension is included in the server hello and
the client supports the Token Binding protocol version selected by the client supports the Token Binding protocol version selected by
the server, it means that the version and key parameters have been the server, it means that the version and key parameters have been
negotiated between the client and the server and SHALL be definitive negotiated between the client and the server and SHALL be definitive
for the TLS connection. In this case, the client MUST use the for the TLS connection. In this case, the client MUST use the
negotiated key parameters in the "provided_token_binding" as negotiated key parameters in the "provided_token_binding" as
described in [I-D.ietf-tokbind-protocol]. described in [I-D.ietf-tokbind-protocol].
If the client does not support the Token Binding protocol version If the client does not support the Token Binding protocol version
skipping to change at page 5, line 21 skipping to change at page 5, line 30
Please note that the Token Binding protocol version and key Please note that the Token Binding protocol version and key
parameters are negotiated for each TLS connection, which means that parameters are negotiated for each TLS connection, which means that
the client and server include their "token_binding" extensions both the client and server include their "token_binding" extensions both
in the full TLS handshake that establishes a new TLS session and in in the full TLS handshake that establishes a new TLS session and in
the subsequent abbreviated TLS handshakes that resume the TLS the subsequent abbreviated TLS handshakes that resume the TLS
session. session.
5. IANA Considerations 5. IANA Considerations
This document defines a new TLS extension "token_binding", which This document updates the TLS "ExtensionType Values" registry
needs to be added to the IANA "Transport Layer Security (TLS) originally created in [RFC4366]. IANA has provided the following
Extensions" registry. 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 This document uses "Token Binding Key Parameters" registry originally
created in [I-D.ietf-tokbind-protocol]. This document creates no new created in [I-D.ietf-tokbind-protocol]. This document creates no new
registrations in this registry. registrations in this registry.
6. Security Considerations 6. Security Considerations
6.1. Downgrade Attacks 6.1. Downgrade Attacks
The Token Binding protocol version and key parameters are negotiated The Token Binding protocol version and key parameters are negotiated
via "token_binding" extension within the TLS handshake. TLS prevents via "token_binding" extension within the TLS handshake. TLS prevents
active attackers from modifying the messages of the TLS handshake, active attackers from modifying the messages of the TLS handshake,
therefore it is not possible for the attacker to remove or modify the therefore it is not possible for the attacker to remove or modify the
"token_binding" extension. The signature algorithm and key length "token_binding" extension. The signature algorithm and key length
used in the TokenBinding of type "provided_token_binding" MUST match used in the TokenBinding of type "provided_token_binding" MUST match
the parameters negotiated via "token_binding" extension. the parameters negotiated via "token_binding" extension.
skipping to change at page 5, line 50 skipping to change at page 6, line 23
6.2. Triple Handshake Vulnerability in TLS 1.2 and Older TLS Versions 6.2. Triple Handshake Vulnerability in TLS 1.2 and Older TLS Versions
The Token Binding protocol relies on the TLS Exporters [RFC5705] to The Token Binding protocol relies on the TLS Exporters [RFC5705] to
associate a TLS connection with a Token Binding. The triple associate a TLS connection with a Token Binding. The triple
handshake attack [TRIPLE-HS] is a known TLS protocol vulnerability handshake attack [TRIPLE-HS] is a known TLS protocol vulnerability
allowing the attacker to synchronize exported keying material between allowing the attacker to synchronize exported keying material between
TLS connections. The attacker can then successfully replay bound TLS connections. The attacker can then successfully replay bound
tokens. For this reason, the Token Binding protocol MUST NOT be tokens. For this reason, the Token Binding protocol MUST NOT be
negotiated with these TLS versions, unless the Extended Master Secret negotiated with these TLS versions, unless the Extended Master Secret
[RFC7627] and Renegotiation Indication [RFC5746] TLS extensions have [RFC7627] TLS extension has also been negotiated. In addition, TLS
also been negotiated. renegotiation MUST NOT be initiated or allowed, unless the
Renegotiation Indication [RFC5746] TLS extension has been negotiated.
7. Acknowledgements 7. Acknowledgements
This document incorporates comments and suggestions offered by Eric This document incorporates comments and suggestions offered by Eric
Rescorla, Gabriel Montenegro, Martin Thomson, Vinod Anupam, Anthony Rescorla, Gabriel Montenegro, Martin Thomson, Vinod Anupam, Anthony
Nadalin, Michael Jones, Bill Cox, Nick Harper, Brian Campbell and Nadalin, Michael Jones, Bill Cox, Nick Harper, Brian Campbell and
others. others.
8. References 8. References
8.1. Normative References 8.1. Normative References
[I-D.ietf-tokbind-protocol] [I-D.ietf-tokbind-protocol]
Popov, A., Nystrom, M., Balfanz, D., Langley, A., and J. Popov, A., Nystrom, M., Balfanz, D., Langley, A., and J.
Hodges, "The Token Binding Protocol Version 1.0", draft- Hodges, "The Token Binding Protocol Version 1.0", draft-
ietf-tokbind-protocol-06 (work in progress), May 2016. ietf-tokbind-protocol-08 (work in progress), July 2016.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>. <http://www.rfc-editor.org/info/rfc2119>.
[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 [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an
IANA Considerations Section in RFCs", BCP 26, RFC 5226, IANA Considerations Section in RFCs", BCP 26, RFC 5226,
DOI 10.17487/RFC5226, May 2008, DOI 10.17487/RFC5226, May 2008,
<http://www.rfc-editor.org/info/rfc5226>. <http://www.rfc-editor.org/info/rfc5226>.
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security
(TLS) Protocol Version 1.2", RFC 5246, (TLS) Protocol Version 1.2", RFC 5246,
DOI 10.17487/RFC5246, August 2008, DOI 10.17487/RFC5246, August 2008,
<http://www.rfc-editor.org/info/rfc5246>. <http://www.rfc-editor.org/info/rfc5246>.
 End of changes. 14 change blocks. 
23 lines changed or deleted 44 lines changed or added

This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/