5Internet Engineering Task Force (IETF)                         S. Whited
 
6Request for Comments: 9266                                     July 2022
 
7Updates: 5801, 5802, 5929, 7677                                         
 
8Category: Standards Track                                               
 
12                      Channel Bindings for TLS 1.3
 
16   This document defines a channel binding type, tls-exporter, that is
 
17   compatible with TLS 1.3 in accordance with RFC 5056, "On the Use of
 
18   Channel Bindings to Secure Channels".  Furthermore, it updates the
 
19   default channel binding to the new binding for versions of TLS
 
20   greater than 1.2.  This document updates RFCs 5801, 5802, 5929, and
 
25   This is an Internet Standards Track document.
 
27   This document is a product of the Internet Engineering Task Force
 
28   (IETF).  It represents the consensus of the IETF community.  It has
 
29   received public review and has been approved for publication by the
 
30   Internet Engineering Steering Group (IESG).  Further information on
 
31   Internet Standards is available in Section 2 of RFC 7841.
 
33   Information about the current status of this document, any errata,
 
34   and how to provide feedback on it may be obtained at
 
35   https://www.rfc-editor.org/info/rfc9266.
 
39   Copyright (c) 2022 IETF Trust and the persons identified as the
 
40   document authors.  All rights reserved.
 
42   This document is subject to BCP 78 and the IETF Trust's Legal
 
43   Provisions Relating to IETF Documents
 
44   (https://trustee.ietf.org/license-info) in effect on the date of
 
45   publication of this document.  Please review these documents
 
46   carefully, as they describe your rights and restrictions with respect
 
47   to this document.  Code Components extracted from this document must
 
48   include Revised BSD License text as described in Section 4.e of the
 
49   Trust Legal Provisions and are provided without warranty as described
 
50   in the Revised BSD License.
 
55     1.1.  Conventions and Terminology
 
56   2.  The 'tls-exporter' Channel Binding Type
 
57   3.  TLS 1.3 with SCRAM or GSS-API over SASL
 
58   4.  Security Considerations
 
59     4.1.  Uniqueness of Channel Bindings
 
60     4.2.  Use with Legacy TLS
 
61   5.  IANA Considerations
 
62     5.1.  Registration of Channel Binding Type
 
63     5.2.  Registration of Channel Binding TLS Exporter Label
 
65     6.1.  Normative References
 
66     6.2.  Informative References
 
71   The "tls-unique" channel binding type defined in [RFC5929] was found
 
72   to be susceptible to the "triple handshake vulnerability"
 
73   [TRIPLE-HANDSHAKE] without the extended master secret extension
 
74   defined in [RFC7627].  While TLS 1.3 uses a complete transcript hash
 
75   akin to the extended master secret procedures, the safety of channel
 
76   bindings with TLS 1.3 was not analyzed as part of the core protocol
 
77   work, so the specification of channel bindings for TLS 1.3 was
 
78   deferred.  Appendix C.5 of [RFC8446] notes the lack of channel
 
79   bindings for TLS 1.3; this document defines such channel bindings and
 
80   fills that gap.  Furthermore, this document updates [RFC5929] by
 
81   adding an additional unique channel binding type, "tls-exporter",
 
82   that replaces some usage of "tls-unique".
 
841.1.  Conventions and Terminology
 
86   Throughout this document, the acronym "EKM" is used to refer to
 
87   "Exported Keying Material" as defined in [RFC5705].
 
89   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
 
90   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
 
91   "OPTIONAL" in this document are to be interpreted as described in
 
92   BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
 
93   capitals, as shown here.
 
97   Channel binding mechanisms are not useful until TLS implementations
 
98   expose the required data.  To facilitate this, "tls-exporter" uses
 
99   Exported Keying Material (EKM), which is already widely exposed by
 
100   TLS implementations.  The EKM is obtained using the keying material
 
101   exporters for TLS, as defined in [RFC5705] and Section 7.5 of
 
102   [RFC8446], by supplying the following inputs:
 
104   Label:  The ASCII string "EXPORTER-Channel-Binding" with no
 
107   Context value:  Zero-length string.
 
111   This channel binding mechanism is defined only when the TLS handshake
 
112   results in unique master secrets.  This is true of TLS versions prior
 
113   to 1.3 when the extended master secret extension of [RFC7627] is in
 
114   use, and it is always true for TLS 1.3 (see Appendix D of [RFC8446]).
 
1163.  TLS 1.3 with SCRAM or GSS-API over SASL
 
118   The specifications for Salted Challenge Response Authentication
 
119   Mechanism (SCRAM) [RFC5802] [RFC7677] and Generic Security Service
 
120   Application Program Interface (GSS-API) over Simple Authentication
 
121   and Security Layer (SASL) [RFC5801] define "tls-unique" as the
 
123   defined for TLS 1.3 (and greater), this document updates [RFC5801],
 
124   [RFC5802], and [RFC7677] to use "tls-exporter" as the default channel
 
125   binding over TLS 1.3 (and greater).  Note that this document does not
 
126   change the default channel binding for SCRAM mechanisms over TLS 1.2
 
127   [RFC5246], which is still "tls-unique" (also note that RFC 5246 has
 
128   been obsoleted by RFC 8446).
 
130   Additionally, this document updates the aforementioned documents to
 
131   make "tls-exporter" the mandatory-to-implement channel binding if any
 
132   channel bindings are implemented for TLS 1.3.  Implementations that
 
133   support channel binding over TLS 1.3 MUST implement "tls-exporter".
 
1354.  Security Considerations
 
137   The channel binding type defined in this document is constructed so
 
138   that disclosure of the channel binding data does not leak secret
 
139   information about the TLS channel and does not affect the security of
 
142   The derived data MUST NOT be used for any purpose other than channel
 
143   bindings as described in [RFC5056].  In particular, implementations
 
144   MUST NOT use channel binding as a secret key to protect privileged
 
147   The Security Considerations sections of [RFC5056], [RFC5705], and
 
148   [RFC8446] apply to this document.
 
1504.1.  Uniqueness of Channel Bindings
 
152   The definition of channel bindings in [RFC5056] defines the concept
 
153   of a "unique" channel binding as being one that is unique to the
 
154   channel endpoints and unique over time, that is, a value that is
 
155   unique to a specific instance of the lower-layer security protocol.
 
156   When TLS is the lower-layer security protocol, as for the channel
 
157   binding type defined in this document, this concept of uniqueness
 
158   corresponds to uniquely identifying the specific TLS connection.
 
160   However, a stronger form of uniqueness is possible, which would
 
161   entail uniquely identifying not just the lower-layer protocol but
 
162   also the upper-layer application or authentication protocol that is
 
163   consuming the channel binding.  The distinction is relevant only when
 
164   there are multiple instances of an authentication protocol, or
 
165   multiple distinct authentication protocols, that run atop the same
 
166   lower-layer protocol.  Such a situation is rare; most consumers of
 
167   channel bindings establish an instance of the lower-layer secure
 
168   protocol, run a single application or authentication protocol as the
 
169   upper-layer protocol, then terminate both upper and lower-layer
 
170   protocols.  In this situation, the stronger form of uniqueness is
 
171   trivially achieved, given that the channel binding value is unique in
 
172   the sense of [RFC5056].
 
174   The channel binding type defined by this document provides only the
 
175   weaker type of uniqueness, as per [RFC5056]; it does not achieve the
 
176   stronger uniqueness per the upper-layer protocol instance described
 
177   above.  This stronger form of uniqueness would be useful in that it
 
178   provides protection against cross-protocol attacks for the multiple
 
179   authentication protocols running over the same instance of the lower-
 
180   layer protocol, and it provides protection against replay attacks
 
181   that seek to replay a message from one instance of an authentication
 
182   protocol in a different instance of the same authentication protocol,
 
183   again running over the same instance of the lower-layer protocol.
 
184   Both of these properties are highly desirable when performing formal
 
185   analysis of upper-layer protocols; if these properties are not
 
186   provided, such formal analysis is essentially impossible.  In some
 
187   cases, one or both of these properties may already be provided by
 
188   specific upper-layer protocols, but that is dependent on the
 
189   mechanism(s) in question, and formal analysis requires that the
 
190   property is provided in a generic manner across all potential upper-
 
191   layer protocols that exist or might exist in the future.
 
193   Accordingly, applications that make use of the channel binding type
 
194   defined in this document MUST NOT use the channel binding for more
 
195   than one authentication mechanism instance on a given TLS connection.
 
196   Such applications MUST immediately close the TLS connection after the
 
197   conclusion of the upper-layer protocol.
 
1994.2.  Use with Legacy TLS
 
202   versions below 1.3, extra precaution must be taken to ensure that the
 
203   chosen cipher suites always result in unique master secrets.  For
 
204   more information, see [RFC7627] and the Security Considerations
 
205   section of [RFC5705] (TLS 1.3 always provides unique master secrets,
 
206   as discussed in Appendix D of [RFC8446]).
 
208   When TLS renegotiation is enabled on a connection, the "tls-exporter"
 
209   channel binding type is not defined for that connection, and
 
210   implementations MUST NOT support it.
 
212   In general, users wishing to take advantage of channel binding should
 
213   upgrade to TLS 1.3 or later.
 
2155.  IANA Considerations
 
2175.1.  Registration of Channel Binding Type
 
219   IANA has registered tls-exporter in the "Channel-Binding Types"
 
222   Channel-binding unique prefix:  tls-exporter
 
224   Channel-binding type:  unique
 
226   Channel type:  TLS [RFC8446]
 
228   Published specification:  RFC 9266
 
230   Channel-binding is secret:  no
 
232   Description:  The EKM value obtained from the current TLS connection.
 
234   Intended usage:  COMMON
 
236   Person and email address to contact for further information:  Sam
 
237      Whited <sam@samwhited.com>
 
239   Owner/Change controller name and email address:  IESG
 
241   Expert reviewer name and contact information:  IETF KITTEN WG
 
242      <kitten@ietf.org> or IETF TLS WG <tls@ietf.org>
 
244   Note:  See the published specification for advice on the
 
245      applicability of this channel binding type.
 
2475.2.  Registration of Channel Binding TLS Exporter Label
 
249   IANA has added the following registration in the "TLS Exporter
 
250   Labels" registry under the "Transport Layer Security (TLS)
 
251   Parameters" registry:
 
253   Value:  EXPORTER-Channel-Binding
 
2636.1.  Normative References
 
265   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
 
266              Requirement Levels", BCP 14, RFC 2119,
 
267              DOI 10.17487/RFC2119, March 1997,
 
268              <https://www.rfc-editor.org/info/rfc2119>.
 
270   [RFC5056]  Williams, N., "On the Use of Channel Bindings to Secure
 
271              Channels", RFC 5056, DOI 10.17487/RFC5056, November 2007,
 
272              <https://www.rfc-editor.org/info/rfc5056>.
 
274   [RFC5705]  Rescorla, E., "Keying Material Exporters for Transport
 
275              Layer Security (TLS)", RFC 5705, DOI 10.17487/RFC5705,
 
276              March 2010, <https://www.rfc-editor.org/info/rfc5705>.
 
278   [RFC5801]  Josefsson, S. and N. Williams, "Using Generic Security
 
279              Service Application Program Interface (GSS-API) Mechanisms
 
280              in Simple Authentication and Security Layer (SASL): The
 
281              GS2 Mechanism Family", RFC 5801, DOI 10.17487/RFC5801,
 
282              July 2010, <https://www.rfc-editor.org/info/rfc5801>.
 
284   [RFC5802]  Newman, C., Menon-Sen, A., Melnikov, A., and N. Williams,
 
285              "Salted Challenge Response Authentication Mechanism
 
286              (SCRAM) SASL and GSS-API Mechanisms", RFC 5802,
 
287              DOI 10.17487/RFC5802, July 2010,
 
288              <https://www.rfc-editor.org/info/rfc5802>.
 
290   [RFC5929]  Altman, J., Williams, N., and L. Zhu, "Channel Bindings
 
291              for TLS", RFC 5929, DOI 10.17487/RFC5929, July 2010,
 
292              <https://www.rfc-editor.org/info/rfc5929>.
 
294   [RFC7677]  Hansen, T., "SCRAM-SHA-256 and SCRAM-SHA-256-PLUS Simple
 
295              Authentication and Security Layer (SASL) Mechanisms",
 
296              RFC 7677, DOI 10.17487/RFC7677, November 2015,
 
297              <https://www.rfc-editor.org/info/rfc7677>.
 
299   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
 
300              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
 
301              May 2017, <https://www.rfc-editor.org/info/rfc8174>.
 
303   [RFC8446]  Rescorla, E., "The Transport Layer Security (TLS) Protocol
 
304              Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
 
305              <https://www.rfc-editor.org/info/rfc8446>.
 
3076.2.  Informative References
 
309   [RFC5246]  Dierks, T. and E. Rescorla, "The Transport Layer Security
 
310              (TLS) Protocol Version 1.2", RFC 5246,
 
311              DOI 10.17487/RFC5246, August 2008,
 
312              <https://www.rfc-editor.org/info/rfc5246>.
 
314   [RFC7627]  Bhargavan, K., Ed., Delignat-Lavaud, A., Pironti, A.,
 
315              Langley, A., and M. Ray, "Transport Layer Security (TLS)
 
316              Session Hash and Extended Master Secret Extension",
 
317              RFC 7627, DOI 10.17487/RFC7627, September 2015,
 
318              <https://www.rfc-editor.org/info/rfc7627>.
 
321              Bhargavan, K., Delignat-Lavaud, A., Fournet, C., Pironti,
 
322              A., and P. Strub, "Triple Handshakes Considered Harmful:
 
323              Breaking and Fixing Authentication over TLS", March 2014,
 
324              <https://www.mitls.org/pages/attacks/3SHAKE>.
 
330   United States of America
 
331   Email: sam@samwhited.com
 
332   URI:   https://blog.samwhited.com/