draft-ietf-tokbind-https-01.txt | draft-ietf-tokbind-https-02.txt | |||
---|---|---|---|---|
Internet Engineering Task Force A. Popov | Internet Engineering Task Force A. Popov | |||
Internet-Draft M. Nystroem | Internet-Draft M. Nystroem | |||
Intended status: Standards Track Microsoft Corp. | Intended status: Standards Track Microsoft Corp. | |||
Expires: January 1, 2016 D. Balfanz, Ed. | Expires: April 17, 2016 D. Balfanz, Ed. | |||
A. Langley | A. Langley | |||
Google Inc. | Google Inc. | |||
June 30, 2015 | October 15, 2015 | |||
Token Binding over HTTP | Token Binding over HTTP | |||
draft-ietf-tokbind-https-01 | draft-ietf-tokbind-https-02 | |||
Abstract | Abstract | |||
This document describes a collection of mechanisms that allow HTTP | This document describes a collection of mechanisms that allow HTTP | |||
servers to cryptographically bind authentication tokens (such as | servers to cryptographically bind authentication tokens (such as | |||
cookies and OAuth tokens) to a TLS [RFC5246] connection. | cookies and OAuth tokens) to a TLS [RFC5246] connection. | |||
We describe both _first-party_ as well as _federated_ scenarios. In | We describe both _first-party_ as well as _federated_ scenarios. In | |||
a first-party scenario, an HTTP server issues a security token (such | a first-party scenario, an HTTP server issues a security token (such | |||
as a cookie) to a client, and expects the client to send the security | as a cookie) to a client, and expects the client to send the security | |||
skipping to change at page 2, line 4 | skipping to change at page 2, line 4 | |||
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 1, 2016. | This Internet-Draft will expire on April 17, 2016. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2015 IETF Trust and the persons identified as the | Copyright (c) 2015 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 | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | |||
2. The Sec-Token-Binding Header . . . . . . . . . . . . . . . . 3 | 2. The Token-Binding Header . . . . . . . . . . . . . . . . . . 3 | |||
3. Federation Use Cases . . . . . . . . . . . . . . . . . . . . 4 | 3. Federation Use Cases . . . . . . . . . . . . . . . . . . . . 4 | |||
3.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 4 | 3.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.2. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3.2. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.3. HTTP Redirects . . . . . . . . . . . . . . . . . . . . . 6 | 3.3. HTTP Redirects . . . . . . . . . . . . . . . . . . . . . 6 | |||
3.4. Negotiated Key Parameters . . . . . . . . . . . . . . . . 6 | 3.4. Negotiated Key Parameters . . . . . . . . . . . . . . . . 7 | |||
4. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | |||
4.1. Security Token Replay . . . . . . . . . . . . . . . . . . 7 | 4.1. Security Token Replay . . . . . . . . . . . . . . . . . . 7 | |||
4.2. Privacy Considerations . . . . . . . . . . . . . . . . . 7 | 4.2. Privacy Considerations . . . . . . . . . . . . . . . . . 7 | |||
4.3. Triple Handshake Vulnerability in TLS . . . . . . . . . . 7 | 4.3. Triple Handshake Vulnerability in TLS . . . . . . . . . . 7 | |||
5. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 4.4. Sensitivity of the Token-Binding Header . . . . . . . . . 8 | |||
5.1. Normative References . . . . . . . . . . . . . . . . . . 8 | 4.5. Securing Federated Sign-On Protocols . . . . . . . . . . 9 | |||
5.2. Informative References . . . . . . . . . . . . . . . . . 8 | 5. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9 | 5.1. Normative References . . . . . . . . . . . . . . . . . . 11 | |||
5.2. Informative References . . . . . . . . . . . . . . . . . 12 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | ||||
1. Introduction | 1. Introduction | |||
The Token Binding Protocol [TBPROTO] defines a Token Binding ID for a | The Token Binding Protocol [TBPROTO] defines a Token Binding ID for a | |||
TLS connection between a client and a server. The Token Binding ID | TLS connection between a client and a server. The Token Binding ID | |||
of a TLS connection is related to a private key that the client | of a TLS connection is related to a private key that the client | |||
proves possession of to the server, and is long-lived (i.e., | proves possession of to the server, and is long-lived (i.e., | |||
subsequent TLS connections between the same client and server have | subsequent TLS connections between the same client and server have | |||
the same Token Binding ID). When issuing a security token (e.g. an | the same Token Binding ID). When issuing a security token (e.g. an | |||
HTTP cookie or an OAuth token) to a client, the server can include | HTTP cookie or an OAuth token) to a client, the server can include | |||
skipping to change at page 3, line 36 | skipping to change at page 3, line 38 | |||
Token Binding ID that the client is using with a _different_ server | Token Binding ID that the client is using with a _different_ server | |||
than the one that the TokenBindingMessage is sent to. This is useful | than the one that the TokenBindingMessage is sent to. This is useful | |||
in federation scenarios. | in federation scenarios. | |||
1.1. Requirements Language | 1.1. Requirements Language | |||
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. The Sec-Token-Binding Header | 2. The Token-Binding Header | |||
Once a client and server have negotiated the Token Binding Protocol | Once a client and server have negotiated the Token Binding Protocol | |||
with HTTP/1.1 or HTTP/2 (see The Token Binding Protocol [TBPROTO]), | with HTTP/1.1 or HTTP/2 (see The Token Binding Protocol [TBPROTO]), | |||
clients MUST include the Sec-Token-Binding header in their HTTP | clients MUST include the Token-Binding header in their HTTP requests. | |||
requests. The ABNF of the Sec-Token-Binding header is: | The ABNF of the Token-Binding header is: | |||
Sec-Token-Binding = "Sec-Token-Binding" ":" [CFWS] EncodedTokenBindingMessage | Token-Binding = "Token-Binding" ":" [CFWS] EncodedTokenBindingMessage | |||
The EncodedTokenBindingMessage is a web-safe Base64-encoding of the | The EncodedTokenBindingMessage is a web-safe Base64-encoding of the | |||
TokenBindingMessage as defined in the TokenBindingProtocol [TBPROTO]. | TokenBindingMessage as defined in the TokenBindingProtocol [TBPROTO]. | |||
The TokenBindingMessage MUST contain a TokenBinding with | The TokenBindingMessage MUST contain a TokenBinding with | |||
TokenBindingType provided_token_binding, which MUST be signed with | TokenBindingType provided_token_binding, which MUST be signed with | |||
the Token Binding key used by the client for connections between | the Token Binding key used by the client for connections between | |||
itself and the server that the HTTP request is sent to (clients use | itself and the server that the HTTP request is sent to (clients use | |||
different Token Binding keys for different servers). The Token | different Token Binding keys for different servers). The Token | |||
Binding ID established by this TokenBinding is called a _Provided | Binding ID established by this TokenBinding is called a _Provided | |||
skipping to change at page 4, line 33 | skipping to change at page 4, line 38 | |||
that token to the TLS connection between the client and a Relying | that token to the TLS connection between the client and a Relying | |||
Party. | Party. | |||
In this section we describe mechanisms to achieve this. The common | In this section we describe mechanisms to achieve this. The common | |||
idea among these mechanisms is that a server (called the _Token | idea among these mechanisms is that a server (called the _Token | |||
Consumer_ in this document) gives the client permission to reveal the | Consumer_ in this document) gives the client permission to reveal the | |||
Provided Token Binding ID that is used between the client and itself, | Provided Token Binding ID that is used between the client and itself, | |||
to another server (called the _Token Provider_ in this document). | to another server (called the _Token Provider_ in this document). | |||
Also common across the mechanisms is how the Token Binding ID is | Also common across the mechanisms is how the Token Binding ID is | |||
revealed to the Token Provider: The client uses the Token Binding | revealed to the Token Provider: The client uses the Token Binding | |||
Protocol [TBPROTO], and includes a TokenBinding structure in the Sec- | Protocol [TBPROTO], and includes a TokenBinding structure in the | |||
Token-Binding HTTP header defined above. What differs between the | Token-Binding HTTP header defined above. What differs between the | |||
various mechanisms is _how_ the Token Consumer grants the permission | various mechanisms is _how_ the Token Consumer grants the permission | |||
to reveal the Token Binding ID to the Token Provider. Below we | to reveal the Token Binding ID to the Token Provider. Below we | |||
specify one such mechanism, which is suitable for redirect-based | specify one such mechanism, which is suitable for redirect-based | |||
interactions between Token Consumers and Token Providers. | interactions between Token Consumers and Token Providers. | |||
3.2. Overview | 3.2. Overview | |||
In a Federated Sign-On protocol, an Identity Provider issues an | In a Federated Sign-On protocol, an Identity Provider issues an | |||
identity token to a client, which sends the identity token to a | identity token to a client, which sends the identity token to a | |||
skipping to change at page 6, line 22 | skipping to change at page 6, line 25 | |||
Include-Referer-Token-Binding-ID = "Include-Referer-Token-Binding-ID" ":" | Include-Referer-Token-Binding-ID = "Include-Referer-Token-Binding-ID" ":" | |||
[CFWS] %x74.72.75.65 ; "true", case-sensitive | [CFWS] %x74.72.75.65 ; "true", case-sensitive | |||
Including this response header signals to the client that it should | Including this response header signals to the client that it should | |||
reveal the Token Binding ID used between the client and the Token | reveal the Token Binding ID used between the client and the Token | |||
Consumer to the Token Provider. In the absence of this response | Consumer to the Token Provider. In the absence of this response | |||
header, the client will not disclose any information about the Token | header, the client will not disclose any information about the Token | |||
Binding used between the client and the Token Consumer to the Token | Binding used between the client and the Token Consumer to the Token | |||
Provider. | Provider. | |||
This header has only meaning if the HTTP status code is 302 or 301, | This header has only meaning if the HTTP status code is 301, 302, | |||
and MUST be ignored by the client for any other status codes. If the | 303, 307 or 308, and MUST be ignored by the client for any other | |||
client supports the Token Binding Protocol, and has negotiated the | status codes. If the client supports the Token Binding Protocol, and | |||
Token Binding Protocol with both the Token Consumer and the Token | has negotiated the Token Binding Protocol with both the Token | |||
Provider, it already sends the following header to the Token Provider | Consumer and the Token Provider, it already sends the following | |||
with each HTTP request (see above): | header to the Token Provider with each HTTP request (see above): | |||
Sec-Token-Binding: EncodedTokenBindingMessage | Token-Binding: EncodedTokenBindingMessage | |||
The TokenBindingMessage SHOULD contain a TokenBinding with | The TokenBindingMessage SHOULD contain a TokenBinding with | |||
TokenBindingType referred_token_binding. If included, this | TokenBindingType referred_token_binding. If included, this | |||
TokenBinding MUST be signed with the Token Binding key used by the | TokenBinding MUST be signed with the Token Binding key used by the | |||
client for connections between itself and the Token Consumer (more | client for connections between itself and the Token Consumer (more | |||
specifically, the web origin that issued the Include-Referer-Token- | specifically, the web origin that issued the Include-Referer-Token- | |||
Binding-ID response header). The Token Binding ID established by | Binding-ID response header). The Token Binding ID established by | |||
this TokenBinding is called a _Referred Token Binding ID_. | this TokenBinding is called a _Referred Token Binding ID_. | |||
As described above, the TokenBindingMessage MUST additionally contain | As described above, the TokenBindingMessage MUST additionally contain | |||
skipping to change at page 7, line 43 | skipping to change at page 7, line 49 | |||
The Token Binding protocol uses persistent, long-lived TLS Token | The Token Binding protocol uses persistent, long-lived TLS Token | |||
Binding IDs. To protect privacy, TLS Token Binding IDs are never | Binding IDs. To protect privacy, TLS Token Binding IDs are never | |||
transmitted in clear text and can be reset by the user at any time, | transmitted in clear text and can be reset by the user at any time, | |||
e.g. when clearing browser cookies. Unique Token Binding IDs MUST be | e.g. when clearing browser cookies. Unique Token Binding IDs MUST be | |||
generated for connections to different origins, so they cannot be | generated for connections to different origins, so they cannot be | |||
used by cooperating servers to link user identities. | used by cooperating servers to link user identities. | |||
4.3. Triple Handshake Vulnerability in TLS | 4.3. Triple Handshake Vulnerability in TLS | |||
The Token Binding protocol relies on the tls_unique value to | The Token Binding protocol relies on the exported key material (EKM) | |||
associate a TLS connection with a TLS Token Binding. The triple | value [RFC5705] to associate a TLS connection with a TLS Token | |||
handshake attack [TRIPLE-HS] is a known TLS protocol vulnerability | Binding. The triple handshake attack [TRIPLE-HS] is a known TLS | |||
allowing the attacker to synchronize tls_unique values between TLS | protocol vulnerability allowing the attacker to synchronize keying | |||
connections. The attacker can then successfully replay bound tokens. | manterial between TLS connections. The attacker can then | |||
For this reason, the Token Binding protocol MUST NOT be negotiated | successfully replay bound tokens. For this reason, the Token Binding | |||
unless the Extended Master Secret TLS extension | protocol MUST NOT be negotiated unless the Extended Master Secret TLS | |||
[I-D.ietf-tls-session-hash] has also been negotiated. | extension [I-D.ietf-tls-session-hash] has also been negotiated. | |||
4.4. Sensitivity of the Token-Binding Header | ||||
The purpose of the Token Binding protocol is to convince the server | ||||
that the client that initiated the TLS connection controls a certain | ||||
key pair. For the server to correctly draw this conclusion after | ||||
processing the Token-Binding header, certain secrecy and integrity | ||||
requirements must be met. | ||||
For example, the client's private Token Binding key must be kept | ||||
secret by the client. If the private key is not secret, then another | ||||
actor in the system could create a valid Token Binding header, | ||||
impersonating the client. This can render the main purpose of the | ||||
protocol - to bind bearer tokens to certain clients - moot: Consider, | ||||
for example, an attacker who obtained (perhaps through a network | ||||
intrusion) an authentication cookie that a client uses with a certain | ||||
server. Consider further that the server bound that cookie to the | ||||
client's Token Binding ID precisely to thwart cookie theft. If the | ||||
attacker were to come into possession of the client's private key, he | ||||
could then establish a TLS connection with the server and craft a | ||||
Token-Binding header that matches the binding present in the cookie, | ||||
thus successfully authenticating as the client, and gaining access to | ||||
the client's data at the server. The Token Binding protocol, in this | ||||
case, didn't successfully bind the cookie to the client. | ||||
Likewise, we need integrity protection of the Token-Binding header: A | ||||
client shouldn't be tricked into sending a Token-Binding header to a | ||||
server that contains Token Binding messages about key pairs that the | ||||
client doesn't control. Consider an attacker A that somehow has | ||||
knowledge of the exported keying material (EKM) for a TLS connection | ||||
between a client C and a server S. (While that is somewhat unlikely, | ||||
it's also not entirely out of the question, since the client might | ||||
not treat the EKM as a secret - after all, a pre-image-resistant hash | ||||
function has been applied to the TLS master secret, making it | ||||
impossible for someone knowing the EKM to recover the TLS master | ||||
secret. Such considerations might lead some clients to not treat the | ||||
EKM as a secret.) Such an attacker A could craft a Token-Binding | ||||
header with A's key pair over C's EKM. If the attacker could now | ||||
trick C to send such a header to S, it would appear to S as if C | ||||
controls a certain key pair when in fact it doesn't (the attacker A | ||||
controls the key pair). | ||||
If A has a pre-existing relationship with S (perhaps has an account | ||||
on S), it now appears to the server S as if A is connecting to it, | ||||
even though it is really C. (If the server S doesn't simply use | ||||
Token Binding keys to identify clients, but also uses bound | ||||
authentication cookies, then A would also have to trick C into | ||||
sending one of A's cookies to S, which it can do through a variety of | ||||
means - inserting cookies through Javascript APIs, setting cookies | ||||
through related-domain attacks, etc.) In other words, A tricked C | ||||
into logging into A's account on S. This could lead to a loss of | ||||
privacy for C, since A presumably has some other way to also access | ||||
the account, and can thus indirectly observe A's behavior (for | ||||
example, if S has a feature that lets account holders see their | ||||
activity history on S). | ||||
Therefore, we need to protect the integrity of the Token-Binding | ||||
header. One origin should not be able to set the Token-Binding | ||||
header (through a DOM API or otherwise) that the User Agent uses with | ||||
another origin. | ||||
4.5. Securing Federated Sign-On Protocols | ||||
As explained above, in a federated sign-in scenario a client will | ||||
prove possession of two different key pairs to a Token Provider: One | ||||
key pair is the "provided" Token Binding key pair (which the client | ||||
normally uses with the Token Provider), and the other is the | ||||
"referred" Token Binding key pair (which the client normally uses | ||||
with the Token Consumer). The Token Provider is expected to issue a | ||||
token that is bound to the referred Token Binding key. | ||||
Both proofs (that of the provided Token Binding key and that of the | ||||
referred Token Binding key) are necessary. To show this, consider | ||||
the following scenario: | ||||
o The client has an authentication token with the Token Provider | ||||
that is bound to the client's Token Binding key. | ||||
o The client wants to establish a secure (i.e., free of men-in-the- | ||||
middle) authenticated session with the Token Consumer, but hasn't | ||||
done so yet (in other words, we're about to run the federated | ||||
sign-on protocol). | ||||
o A man-in-the-middle is allowed to intercept the connection between | ||||
client and Token Consumer or between Client and Token Provider (or | ||||
both). | ||||
The goal is to detect the presence of the man-in-the-middle in these | ||||
scenarios. | ||||
First, consider a man-in-the-middle between the client and the Token | ||||
Provider. Recall that we assume that the client possesses a bound | ||||
authentication token (e.g., cookie) for the Token Provider. The man- | ||||
in-the-middle can intercept and modify any message sent by the client | ||||
to the Token Provider, and any message sent by the Token Provider to | ||||
the client. (This means, among other things, that the man-in-the- | ||||
middle controls the Javascript running at the client in the origin of | ||||
the Token Provider.) It is not, however, in possession of the | ||||
client's Token Binding key. Therefore, it can either choose to | ||||
replace the Token Binding key in requests from the client to the | ||||
Token Provider, and create a Token-Binding header that matches the | ||||
TLS connection between the man-in-the-middle and the Token Provider; | ||||
or it can choose to leave the Token-Binding header unchanged. If it | ||||
chooses the latter, the signature in the Token Binding message | ||||
(created by the original client on the exported keying material (EKM) | ||||
for the connection between client and man-in-the-middle) will not | ||||
match the EKM between man-in-the-middle and the Token Provider. If | ||||
it chooses the former (and creates its own signature, with its own | ||||
Token Binding key, over the EKM for the connection between man-in- | ||||
the-middle and Token Provider), then the Token Binding message will | ||||
match the connection between man-in-the-middle and Token Provider, | ||||
but the Token Binding key in the message will not match the Token | ||||
Binding key that the client's authentication token is bound to. | ||||
Either way, the man-in-the-middle is detected by the Token Provider, | ||||
but only if the proof of key possession of the provided Token Binding | ||||
key is required in the protocol (as we do above). | ||||
Next, consider the presence of a man-in-the-middle between client and | ||||
Token Consumer. That man-in-the-middle can intercept and modify any | ||||
message sent by the client to the Token Consumer, and any message | ||||
sent by the Token Consumer to the client. The Token Consumer is the | ||||
party that redirects the client to the Token Provider. In this case, | ||||
the man-in-the-middle controls the redirect URL, and can tamper with | ||||
any redirect URL issued by the Token Consumer (as well as with any | ||||
Javascript running in the origin of the Token Consumer). The goal of | ||||
the man-in-the-middle is to trick the Token Issuer to issue a token | ||||
bound to _its_ Token Binding key, not to the Token Binding key of the | ||||
legitimate client. To thwart this goal of the man-in-the-middle, the | ||||
client's referred Token Binding key must be communicated to the Token | ||||
Producer in a manner that can not be affected by the man-in-the- | ||||
middle (who, as we recall, can modify redirect URLs and Javascript at | ||||
the client). Including the referred Token Binding message in the | ||||
Token-Binding header (as opposed to, say, including the referred | ||||
Token Binding key in an application-level message as part of the | ||||
redirect URL) is one way to assure that the man-in-the-middle between | ||||
client and Token Consumer cannot affect the communication of the | ||||
referred Token Binding key to the Token Provider. | ||||
Therefore, the Token-Binding header in the federated sign-on use case | ||||
contains both, a proof of possession of the provided Token Binding | ||||
key, as well as a proof of possession of the referred Token Binding | ||||
key. | ||||
5. References | 5. References | |||
5.1. Normative References | 5.1. Normative References | |||
[I-D.ietf-httpbis-header-compression] | [I-D.ietf-httpbis-header-compression] | |||
Peon, R. and H. Ruellan, "HPACK - Header Compression for | Peon, R. and H. Ruellan, "HPACK - Header Compression for | |||
HTTP/2", draft-ietf-httpbis-header-compression-12 (work in | HTTP/2", draft-ietf-httpbis-header-compression-12 (work in | |||
progress), February 2015. | progress), February 2015. | |||
[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, March 1997. | Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ | |||
RFC2119, March 1997, | ||||
<http://www.rfc-editor.org/info/rfc2119>. | ||||
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | |||
Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | |||
Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | Transfer Protocol -- HTTP/1.1", RFC 2616, DOI 10.17487/ | |||
RFC2616, June 1999, | ||||
<http://www.rfc-editor.org/info/rfc2616>. | ||||
[RFC4492] Blake-Wilson, S., Bolyard, N., Gupta, V., Hawk, C., and B. | [RFC4492] Blake-Wilson, S., Bolyard, N., Gupta, V., Hawk, C., and B. | |||
Moeller, "Elliptic Curve Cryptography (ECC) Cipher Suites | Moeller, "Elliptic Curve Cryptography (ECC) Cipher Suites | |||
for Transport Layer Security (TLS)", RFC 4492, May 2006. | for Transport Layer Security (TLS)", RFC 4492, DOI | |||
10.17487/RFC4492, May 2006, | ||||
<http://www.rfc-editor.org/info/rfc4492>. | ||||
[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, | |||
May 2008. | DOI 10.17487/RFC5226, May 2008, | |||
<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, August 2008. | (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>. | ||||
[RFC5929] Altman, J., Williams, N., and L. Zhu, "Channel Bindings | [RFC5929] Altman, J., Williams, N., and L. Zhu, "Channel Bindings | |||
for TLS", RFC 5929, July 2010. | for TLS", RFC 5929, DOI 10.17487/RFC5929, July 2010, | |||
<http://www.rfc-editor.org/info/rfc5929>. | ||||
[RFC7301] Friedl, S., Popov, A., Langley, A., and E. Stephan, | [RFC7301] Friedl, S., Popov, A., Langley, A., and E. Stephan, | |||
"Transport Layer Security (TLS) Application-Layer Protocol | "Transport Layer Security (TLS) Application-Layer Protocol | |||
Negotiation Extension", RFC 7301, July 2014. | Negotiation Extension", RFC 7301, DOI 10.17487/RFC7301, | |||
July 2014, <http://www.rfc-editor.org/info/rfc7301>. | ||||
[TBPROTO] Popov, A., "The Token Binding Protocol Version 1.0", 2014. | [TBPROTO] Popov, A., "The Token Binding Protocol Version 1.0", 2014. | |||
5.2. Informative References | 5.2. Informative References | |||
[I-D.ietf-httpbis-http2] | [I-D.ietf-httpbis-http2] | |||
Belshe, M., Peon, R., and M. Thomson, "Hypertext Transfer | Belshe, M., Peon, R., and M. Thomson, "Hypertext Transfer | |||
Protocol version 2", draft-ietf-httpbis-http2-17 (work in | Protocol version 2", draft-ietf-httpbis-http2-17 (work in | |||
progress), February 2015. | progress), February 2015. | |||
[I-D.ietf-tls-session-hash] | [I-D.ietf-tls-session-hash] | |||
Bhargavan, K., Delignat-Lavaud, A., Pironti, A., Langley, | Bhargavan, K., Delignat-Lavaud, A., Pironti, A., Langley, | |||
A., and M. Ray, "Transport Layer Security (TLS) Session | A., and M. Ray, "Transport Layer Security (TLS) Session | |||
Hash and Extended Master Secret Extension", draft-ietf- | Hash and Extended Master Secret Extension", draft-ietf- | |||
tls-session-hash-05 (work in progress), April 2015. | tls-session-hash-06 (work in progress), July 2015. | |||
[TRIPLE-HS] | [TRIPLE-HS] | |||
Bhargavan, K., Delignat-Lavaud, A., Fournet, C., Pironti, | Bhargavan, K., Delignat-Lavaud, A., Fournet, C., Pironti, | |||
A., and P. Strub, "Triple Handshakes and Cookie Cutters: | A., and P. Strub, "Triple Handshakes and Cookie Cutters: | |||
Breaking and Fixing Authentication over TLS. IEEE | Breaking and Fixing Authentication over TLS. IEEE | |||
Symposium on Security and Privacy", 2014. | Symposium on Security and Privacy", 2014. | |||
Authors' Addresses | Authors' Addresses | |||
Andrei Popov | Andrei Popov | |||
End of changes. 22 change blocks. | ||||
38 lines changed or deleted | 197 lines changed or added | |||
This html diff was produced by rfcdiff 1.42. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |