Internet Engineering Task Force A. Popov, Ed.
Internet-Draft M. Nystroem
Intended status: Standards Track Microsoft Corp.
Expires: November 30, 2015 D. Balfanz
A. Langley
Google Inc.
May 29, 2015
Transport Layer Security (TLS) Extension for Token Binding ProtocolNegotiationdraft-popov-tokbind-negotiation-00
Abstract
This document specifies a Transport Layer Security (TLS) [RFC5246]
extension for the negotiation of Token Binding protocol [TBPROTO]
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 November 30, 2015.
Copyright Notice
Copyright (c) 2015 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 November 30, 2015 [Page 1]

Internet-Draft Token Binding Negotiation TLS Extension May 2015
struct {
uint8 major;
uint8 minor;
} ProtocolVersion;
enum {
rsa2048_pkcs1.5_sha256(0), rsa2048_pss_sha256(1), ecdsap256_sha256(2), (255)
} TokenBindingKeyParameters;
struct {
ProtocolVersion token_binding_version;
TokenBindingKeyParameters key_parameters_list<2..2^16-1>
} TokenBindingParameters;
"token_binding_version" indicates the supported version of the Token
Binding protocol. [TBPROTO] describes version {1, 0} of the
protocol. Protype implementations of Token Binding drafts can
indicate support of a specific draft version, e.g. {0, 0} or {0, 1}.
"key_parameters_list" contains the list of identifiers of the Token
Binding key parameters supported by the client, in descending order
of preference.
3. Token Binding Negotiation Server Hello Extension
The server uses the "token_binding" TLS extension to indicate support
for the Token Binding protocol version offered by the client and to
select 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.
2. The server finds acceptable Token Binding key parameters on the
client's list.
3. The server is also negotiating Extended Master Secret TLS
extension [I-D.ietf-tls-session-hash] (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".
Popov, et al. Expires November 30, 2015 [Page 3]

Internet-Draft Token Binding Negotiation TLS Extension May 2015
"token_binding_version" echos the Token Binding protocol version
advertised by the client.
"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" does not match 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. Extended Master Secret [I-D.ietf-tls-session-hash] is not
negotiated (see security considerations section below for more
details).
If the "token_binding" extension is included in the server hello and
the TLS handshake succeeds, it means that the Token Binding protocol
version and key parameters have been negotiated between the client
and the server and SHALL be definitive for the TLS session. In this
case, the client MUST use the negotiated key parameters in the
"provided_token_binding" as described in [TBPROTO].
Popov, et al. Expires November 30, 2015 [Page 4]

Internet-Draft Token Binding Negotiation TLS Extension May 20155. IANA Considerations
This document defines a new TLS extension "token_binding", which
needs to be added to the IANA "Transport Layer Security (TLS)
Extensions" registry.
This document establishes a registry for identifiers of Token Binding
key parameters entitled "Token Binding Key Parameters" under the
"Token Binding Protocol" heading.
Entries in this registry require the following fields:
o Value: The octet value that identifies a set of Token Binding key
parameters (0-255).
o Description: The description of the Token Binding key parameters.
o Specification: A reference to a specification that defines the
Token Binding key parameters.
This registry operates under the "Expert Review" policy as defined in
[RFC5226]. The designated expert is advised to encourage the
inclusion of a reference to a permanent and readily available
specification that enables the creation of interoperable
implementations using the identified set of Token Binding key
parameters.
An initial set of registrations for this registry follows:
Value: 0
Description: rsa2048_pkcs1.5_sha256
Specification: this document
Value: 1
Description: rsa2048_pss_sha256
Specification: this document
Value: 2
Description: ecdsap256_sha256
Specification: this document
Popov, et al. Expires November 30, 2015 [Page 5]