Skip to content

Commit 5828473

Browse files
authored
Merge branch 'master' into other-signaling
2 parents 6b81e24 + 7070626 commit 5828473

File tree

4 files changed

+39
-34
lines changed

4 files changed

+39
-34
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ This repository contains work-in-progress **editors' drafts** of the Internet-Dr
66
The following links yield HTML renderings of these **editors' drafts** (note also the spec name acronyms, please use them in Issue titles when submitting issues):
77
- TBPROTO: [draft-ietf-tokbind-protocol-12](http://xml2rfc.ietf.org/cgi-bin/xml2rfc.cgi?modeAsFormat=html/ascii&url=https://raw.githubusercontent.com/TokenBinding/Internet-Drafts/master/draft-ietf-tokbind-protocol-12.xml)
88
- HTTPSTB: [draft-ietf-tokbind-https-08](http://xml2rfc.ietf.org/cgi-bin/xml2rfc.cgi?modeAsFormat=html/ascii&url=https://raw.githubusercontent.com/TokenBinding/Internet-Drafts/master/draft-ietf-tokbind-https-08.xml)
9-
- TBNEGO: [draft-ietf-tokbind-negotiation-06](http://xml2rfc.ietf.org/cgi-bin/xml2rfc.cgi?modeAsFormat=html/ascii&url=https://raw.githubusercontent.com/TokenBinding/Internet-Drafts/master/draft-ietf-tokbind-negotiation-06.xml)
9+
- TBNEGO: [draft-ietf-tokbind-negotiation-07](http://xml2rfc.ietf.org/cgi-bin/xml2rfc.cgi?modeAsFormat=html/ascii&url=https://raw.githubusercontent.com/TokenBinding/Internet-Drafts/master/draft-ietf-tokbind-negotiation-07.xml)
1010

1111
Snapshots of the above, formally submitted to the [IETF Internet-Drafts repository](https://www.ietf.org/id-info/), are [here](https://datatracker.ietf.org/wg/tokbind/documents/).

draft-ietf-tokbind-https-08.xml

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?>
1+
<?xml version="1.0" encoding="utf-8"?>
22
<!-- This template is for creating an Internet Draft using xml2rfc,
33
which is available here: http://xml.resource.org. -->
44
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
@@ -340,9 +340,9 @@
340340

341341
<t>A TokenBindingMessage is validated by the server as described in Section
342342
4.2. "Server Processing Rules" of <xref target="I-D.ietf-tokbind-protocol"/>.
343-
If validaion fails and a Token Binding is rejected, any associated bound
343+
If validation fails and a Token Binding is rejected, any associated bound
344344
tokens MUST also be rejected by the server. HTTP requests containing invalid
345-
tokens MUST be rejected. In this case, the server application may return HTTP
345+
tokens MUST be rejected. In this case, the server application MAY return HTTP
346346
status code 400 (Bad Request) or proceed with an application-specific invalid
347347
token response (e.g. directing the client to re-authenticate and present a
348348
different token), or terminate the connection.</t>
@@ -408,7 +408,8 @@
408408
</section>
409409

410410
<section title="First-party Use Cases">
411-
<t>In a first-party use case, an HTTP server issues a security token
411+
<t>In a first-party use case (also known as a
412+
"same-site" use case), an HTTP server issues a security token
412413
such as a cookie (or similar) to a client, and expects the client to return
413414
the security token at a later time, e.g., in order
414415
to authenticate. Binding the security token to the TLS connection between
@@ -488,11 +489,11 @@
488489
want to include in the token the Token-Binding public key that the client
489490
uses when communicating with the Token Consumer, thus
490491
<spanx style="emph">binding</spanx> the token to client's Token-Binding
491-
keypair. The client
492+
key pair. The client
492493
proves possession of the private key when communicating with
493494
the Token Consumer through the <xref target="I-D.ietf-tokbind-protocol">Token
494495
Binding Protocol</xref>, and reveals the corresponding public key of this
495-
keypair as part of the Token Binding ID. Comparing the public key from the
496+
key pair as part of the Token Binding ID. Comparing the public key from the
496497
token with the public key from the Token Binding ID allows the Token
497498
Consumer to verify that the token was sent to it by the legitimate
498499
client.</t>
@@ -571,25 +572,25 @@
571572
TokenBinding MUST be signed
572573
with the Token Binding key used by the client for connections
573574
between itself and the Token Consumer (more specifically, the
574-
web origin that issued the Include-Referred-Token-Binding-ID
575+
server that issued the Include-Referred-Token-Binding-ID
575576
response header field). The Token Binding ID established by this
576577
TokenBinding is called a <spanx style="emph">Referred Token
577578
Binding ID</spanx>.</t>
578579

579580
<t>As described above, the TokenBindingMessage MUST
580581
additionally contain a Provided Token Binding ID, i.e., a
581-
TokenBinding structure with TokenBindingType
582+
TokenBinding structure with TokenBindingType of
582583
provided_token_binding, which MUST be signed with the Token
583584
Binding key used by the client for connections between itself
584-
and the Token Provider (more specifically, the web origin that
585+
and the Token Provider (more specifically, the server that
585586
the token request is being sent to).
586587
</t>
587588

588589
<t>If for some deployment-specific reason the initial
589590
Token Provider ("TP1") needs to redirect the
590591
client to another Token Provider ("TP2"), rather than
591592
directly back to the Token Consumer, it can be
592-
accomodated using the header fields defined in this
593+
accommodated using the header fields defined in this
593594
specification in the following fashion ("the
594595
redirect-chain approach"):
595596

@@ -623,9 +624,9 @@ contexts. Other approaches are possible, but are outside the scope of this speci
623624
key parameters negotiated with the Token Consumer in the
624625
referred_token_binding TokenBinding of the TokenBindingMessage,
625626
even if those key parameters are different from the ones
626-
negotiated with the origin that the header field is sent to.</t>
627+
negotiated with the server that the header field is sent to.</t>
627628
<t>Token Providers SHOULD support all the Token Binding key parameters
628-
specified in the <xref target="I-D.ietf-tokbind-protocol"/>.
629+
specified in <xref target="I-D.ietf-tokbind-protocol"/>.
629630
If a token provider does not support the key parameters
630631
specified in the referred_token_binding TokenBinding in the
631632
TokenBindingMessage, it MUST NOT issue a bound token.</t>
@@ -731,7 +732,7 @@ contexts. Other approaches are possible, but are outside the scope of this speci
731732
+-------------------------------->| |
732733
| 3b. HTTPS GET or POST with |
733734
| ETBMSG[[{EKM1}Ks1,TBID1,provided_token_binding]] |
734-
| conveying Authn Reponse containing |
735+
| conveying Authn Response containing |
735736
| ID Token w/TBID1, issued for TC |
736737
| | |
737738
| | |
@@ -771,8 +772,8 @@ contexts. Other approaches are possible, but are outside the scope of this speci
771772
can return an
772773
Include-Referred-Token-Binding-ID HTTP response header field to a Web browser,
773774
thus signaling to the Token Binding implementation in the Web browser
774-
that the Web application associated with the server's origin
775-
intents to convey the Web browser's Token Binding ID to another server.
775+
that the server
776+
intends to convey the Web browser's Token Binding ID to another server.
776777
Other signaling mechanisms are possible, and are specific to the application
777778
layer protocol, but are outside the scope of this specification.
778779
<list style="hanging" hangIndent="7">
@@ -791,12 +792,13 @@ contexts. Other approaches are possible, but are outside the scope of this speci
791792
prevent attackers from exporting and replaying tokens used in
792793
protocols between the client and Token Consumer, thereby
793794
impersonating legitimate users and gaining access to protected
794-
resources. Bound tokens can still be replayed by malware
795-
present in the client. In order to export the token to
796-
another machine and successfully replay it, the attacker also
797-
needs to export the corresponding private key. The Token
798-
Binding private key is therefore a high-value asset and MUST
799-
be strongly protected, ideally by generating it in a hardware
795+
resources. Although bound tokens can still be replayed by any malware
796+
present in clients (which may be undetectable by a server),
797+
in order to export bound tokens to
798+
other machines and successfully replay them, attackers also
799+
need to export the corresponding Token Binding private keys. Token
800+
Binding private keys are therefore high-value assets and SHOULD
801+
be strongly protected, ideally by generating them in a hardware
800802
security module that prevents key export.</t>
801803
</section>
802804
<section title="Triple Handshake Vulnerability in TLS 1.2 and Older TLS Versions">
@@ -870,9 +872,9 @@ contexts. Other approaches are possible, but are outside the scope of this speci
870872
</t>
871873
<t>
872874
Therefore, we need to protect the integrity of the Sec-Token-Binding
873-
header field. One origin should not be able to set the Sec-Token-Binding header field
875+
header field. One eTLD+1 should not be able to set the Sec-Token-Binding header field
874876
(through a DOM API or otherwise) that the User Agent uses with
875-
another origin. Employing the "Sec-" header field prefix helps to meet this
877+
another eTLD+1. Employing the "Sec-" header field prefix helps to meet this
876878
requirement by denoting the header field name to be a "forbidden header name",
877879
see <xref target="fetch-spec"/>.
878880
</t>
@@ -955,7 +957,7 @@ contexts. Other approaches are possible, but are outside the scope of this speci
955957
must be communicated to the Token Producer in a manner that can not
956958
be affected by the man-in-the-middle (who, as we recall, can modify
957959
redirect URLs and Javascript at the client). Including the referred
958-
Token Binding message in the Sec-Token-Binding header field (as opposed to,
960+
Token Binding structure in the Sec-Token-Binding header field (as opposed to,
959961
say, including the referred Token Binding key in an application-level
960962
message as part of the redirect URL) is one way to assure that the
961963
man-in-the-middle between client and Token Consumer cannot affect the
@@ -979,7 +981,8 @@ contexts. Other approaches are possible, but are outside the scope of this speci
979981
</t>
980982
<t>In the case of HTTP cookies, servers may use Token Binding to secure their cookies.
981983
These cookies can be attached to any
982-
sub-domain of effective top-level domains, and clients therefore should use the same
984+
sub-domain of effective top-level domains (eTLDs),
985+
and clients therefore should use the same
983986
Token Binding key across such subdomains. This will ensure that any server
984987
capable of receiving the cookie will see the same Token Binding ID from
985988
the client, and thus be able to verify the token binding of the cookie.
@@ -993,7 +996,7 @@ contexts. Other approaches are possible, but are outside the scope of this speci
993996
permissible to use different Token Binding key scoping rules, such as
994997
using the same Token Binding key for both the Relying Party and the Identity
995998
Provider. Absent such special knowledge, conservative key-scoping rules
996-
should be used, assuring that clients use different Token Binding keys
999+
should be used, assuring that clients use different Token Binding key pairs
9971000
with different servers.
9981001
</t>
9991002
</section>
@@ -1190,6 +1193,7 @@ contexts. Other approaches are possible, but are outside the scope of this speci
11901193
v07 2016-11-22 Andrei Popov Merged PR #81: renegotiation requirements.
11911194
v08 2016-12-06 Jeff Hodges Init -08.
11921195
v08 2016-12-06 Jeff Hodges Add explanation of splitting across renego boundaries.
1196+
v08 2016-12-14 Jeff Hodges Various editorial cleanups.
11931197
-->
11941198
</back>
11951199
</rfc>

draft-ietf-tokbind-negotiation-06.xml renamed to draft-ietf-tokbind-negotiation-07.xml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
<?rfc subcompact="no" ?>
4040
<!-- keep one blank line between list items -->
4141
<!-- end of list of popular I-D processing instructions -->
42-
<rfc category="std" docName="draft-ietf-tokbind-negotiation-06" ipr="trust200902">
42+
<rfc category="std" docName="draft-ietf-tokbind-negotiation-07" ipr="trust200902">
4343
<!-- category values: std, bcp, info, exp, and historic
4444
ipr values: full3667, noModification3667, noDerivatives3667
4545
you can add the attributes updates="NNNN" and obsoletes="NNNN"
@@ -349,10 +349,10 @@ struct {
349349
<section title="Triple Handshake Vulnerability in TLS 1.2 and Older TLS Versions">
350350
<t>The Token Binding protocol relies on the TLS Exporters <xref target="RFC5705" /> to
351351
associate a TLS connection with a Token Binding. The triple handshake attack
352-
<xref target="TRIPLE-HS" /> is a known TLS protocol vulnerability allowing the attacker
353-
to synchronize exported keying material between TLS connections. The attacker can then
354-
successfully replay bound tokens. For this reason, the Token Binding protocol MUST NOT be
355-
negotiated with these TLS versions, unless the Extended Master Secret
352+
<xref target="TRIPLE-HS" /> is a known vulnerability in TLS 1.2 and older TLS versions,
353+
allowing the attacker to synchronize keying material between TLS connections. The attacker
354+
can then successfully replay bound tokens. For this reason, the Token Binding protocol MUST
355+
NOT be negotiated with these TLS versions, unless the Extended Master Secret
356356
<xref target="RFC7627" /> and Renegotiation Indication <xref target="RFC5746" /> TLS
357357
extensions have also been negotiated.</t>
358358
</section>
@@ -427,6 +427,7 @@ struct {
427427
v04 2016-08-26 Andrei Popov Clarified that renegotiation indication ext. is only needed when renegotiation is enabled.
428428
v05 2016-09-02 Andrei Popov Corrected acknowledgements (it's Michael B. Jones).
429429
v06 2016-11-16 Andrei Popov Undid the change from 2016-08-26 above. Renegotiation indication is always needed.
430+
v07 2016-12-23 Andrei Popov Clarifying the TLS versions affected by the triple handshake attack.
430431
-->
431432
</back>
432433
</rfc>

draft-ietf-tokbind-protocol-12.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -728,8 +728,8 @@
728728
Binding keys to the same group(s) of applications that share the same tokens.</t>
729729
</section>
730730
<section title="Triple Handshake Vulnerability in TLS 1.2 and Older TLS Versions">
731-
<t>The Token Binding protocol relies on the exported keying material (EKM) to associate a
732-
TLS connection with a Token Binding. The triple handshake attack
731+
<t>The Token Binding protocol relies on the TLS Exporters <xref target="RFC5705" /> to
732+
associate a TLS connection with a Token Binding. The triple handshake attack
733733
<xref target="TRIPLE-HS" /> is a known vulnerability in TLS 1.2 and older TLS versions,
734734
allowing the attacker to synchronize keying material between TLS connections. The attacker
735735
can then successfully replay bound tokens. For this reason, the Token Binding protocol MUST

0 commit comments

Comments
 (0)