<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" consensus="true" docName="draft-ietf-kitten-tls-channel-bindings-for-tls13" indexInclude="true" ipr="trust200902" number="9266" prepTime="2022-07-26T12:03:16" scripts="Common,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude="true" updates="5801, 5802, 5929, 7677" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-kitten-tls-channel-bindings-for-tls13" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9266" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="">Channel Bindings for TLS 1.3</title>
    <seriesInfo name="RFC" value="9266" stream="IETF"/>
    <author initials="S" surname="Whited" fullname="Sam Whited">
      <organization showOnFrontPage="true"/>
      <address>
        <postal>
          <street/>
          <city>Atlanta</city>
          <region>GA</region>
          <country>United States of America</country>
          <region/>
        </postal>
        <phone/>
        <email>sam@samwhited.com</email>
        <uri>https://blog.samwhited.com/</uri>
      </address>
    </author>
    <date month="07" year="2022"/>
    <area>sec</area>
    <workgroup>kitten</workgroup>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">
        This document defines a channel binding type, tls-exporter, that is
        compatible with TLS 1.3 in accordance with RFC 5056, "On the Use of
        Channel Bindings to Secure Channels".  Furthermore, it updates the
        default channel binding to the new binding for versions of TLS greater
        than 1.2.  This document updates RFCs 5801, 5802, 5929, and 7677.
      </t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9266" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2022 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) 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 Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-conventions-and-terminology">Conventions and Terminology</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-the-tls-exporter-channel-bi">The 'tls-exporter' Channel Binding Type</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-tls-13-with-scram-or-gss-ap">TLS 1.3 with SCRAM or GSS-API over SASL</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-uniqueness-of-channel-bindi">Uniqueness of Channel Bindings</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-use-with-legacy-tls">Use with Legacy TLS</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-registration-of-channel-bin">Registration of Channel Binding Type</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-registration-of-channel-bind">Registration of Channel Binding TLS Exporter Label</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-address">Author's Address</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">
        The "tls-unique" channel binding type defined in
        <xref target="RFC5929" format="default" sectionFormat="of" derivedContent="RFC5929"/> was found to be susceptible to the "triple
        handshake vulnerability" <xref target="TRIPLE-HANDSHAKE" format="default" sectionFormat="of" derivedContent="TRIPLE-HANDSHAKE"/> without the
        extended master secret extension defined in <xref target="RFC7627" format="default" sectionFormat="of" derivedContent="RFC7627"/>.
        While TLS 1.3 uses a complete transcript hash akin to the extended
        master secret procedures, the safety of channel bindings with TLS 1.3
        was not analyzed as part of the core protocol work, so the
        specification of channel bindings for TLS 1.3 was deferred.
        <xref target="RFC8446" sectionFormat="of" section="C.5" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8446#appendix-C.5" derivedContent="RFC8446"/> notes the lack of channel bindings
        for TLS 1.3; this document defines such channel bindings and fills that
        gap.
        Furthermore, this document updates <xref target="RFC5929" format="default" sectionFormat="of" derivedContent="RFC5929"/> by adding an
        additional unique channel binding type, "tls-exporter", that replaces
        some usage of "tls-unique".
      </t>
      <section anchor="conventions-and-terminology" numbered="true" toc="include" removeInRFC="false" pn="section-1.1">
        <name slugifiedName="name-conventions-and-terminology">Conventions and Terminology</name>
        <t indent="0" pn="section-1.1-1">
          Throughout this document, the acronym "EKM" is used to refer to
          "Exported Keying Material" as defined in <xref target="RFC5705" format="default" sectionFormat="of" derivedContent="RFC5705"/>.
        </t>
        <t indent="0" pn="section-1.1-2">
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
    described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/>
    when, and only when, they appear in all capitals, as shown here.
        </t>
      </section>
    </section>
    <section anchor="tls-exporter" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-the-tls-exporter-channel-bi">The 'tls-exporter' Channel Binding Type</name>
      <t indent="0" pn="section-2-1">
        Channel binding mechanisms are not useful until TLS implementations
        expose the required data.  To facilitate this, "tls-exporter" uses
        Exported Keying Material (EKM), which is already widely exposed by TLS
        implementations.  The EKM is obtained using the keying material
        exporters for TLS, as defined in <xref target="RFC5705" format="default" sectionFormat="of" derivedContent="RFC5705"/> and <xref target="RFC8446" sectionFormat="of" section="7.5" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8446#section-7.5" derivedContent="RFC8446"/>, by supplying the
        following inputs:
      </t>
      <dl indent="3" newline="false" spacing="normal" pn="section-2-2">
        <dt pn="section-2-2.1">Label:</dt>
        <dd pn="section-2-2.2">
          The ASCII string "EXPORTER-Channel-Binding" with no terminating NUL.
        </dd>
        <dt pn="section-2-2.3">Context value:</dt>
        <dd pn="section-2-2.4">
          Zero-length string.
        </dd>
        <dt pn="section-2-2.5">Length:</dt>
        <dd pn="section-2-2.6">
          32 bytes.
        </dd>
      </dl>
      <t indent="0" pn="section-2-3">
        This channel binding mechanism is defined only when the TLS handshake
        results in unique master secrets. This is true of TLS versions prior to
        1.3 when the extended master secret extension of
        <xref target="RFC7627" format="default" sectionFormat="of" derivedContent="RFC7627"/> is in use, and it is always true for TLS 1.3
        (see <xref target="RFC8446" sectionFormat="of" section="D" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8446#appendix-D" derivedContent="RFC8446"/>).
      </t>
    </section>
    <section anchor="scram" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-tls-13-with-scram-or-gss-ap">TLS 1.3 with SCRAM or GSS-API over SASL</name>
      <t indent="0" pn="section-3-1">
        The specifications for Salted Challenge Response Authentication Mechanism (SCRAM) <xref target="RFC5802" format="default" sectionFormat="of" derivedContent="RFC5802"/> <xref target="RFC7677" format="default" sectionFormat="of" derivedContent="RFC7677"/> and Generic Security
        Service Application Program Interface (GSS-API) over Simple
        Authentication and Security Layer (SASL) <xref target="RFC5801" format="default" sectionFormat="of" derivedContent="RFC5801"/>
        define "tls-unique" as the default channel binding to use over TLS.
        As "tls-unique" is not defined for TLS 1.3 (and greater), this
        document updates <xref target="RFC5801" format="default" sectionFormat="of" derivedContent="RFC5801"/>, <xref target="RFC5802" format="default" sectionFormat="of" derivedContent="RFC5802"/>,
        and <xref target="RFC7677" format="default" sectionFormat="of" derivedContent="RFC7677"/> to use "tls-exporter" as the default
        channel binding over TLS 1.3 (and greater).
        Note that this document does not change the default channel
        binding for SCRAM mechanisms over TLS 1.2 <xref target="RFC5246" format="default" sectionFormat="of" derivedContent="RFC5246"/>,
        which is still "tls-unique" (also note that RFC 5246 has been obsoleted
        by RFC 8446).
      </t>
      <t indent="0" pn="section-3-2">
        Additionally, this document updates the aforementioned documents to make
        "tls-exporter" the mandatory-to-implement channel binding if any channel
        bindings are implemented for TLS 1.3.
        Implementations that support channel binding over TLS 1.3
        <bcp14>MUST</bcp14> implement "tls-exporter".
      </t>
    </section>
    <section anchor="security-considerations" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-4-1">
        The channel binding type defined in this document is constructed so that
        disclosure of the channel binding data does not leak secret information
        about the TLS channel and does not affect the security of the TLS
        channel.
      </t>
      <t indent="0" pn="section-4-2">
        The derived data <bcp14>MUST NOT</bcp14> be used for any purpose other
        than channel bindings as described in <xref target="RFC5056" format="default" sectionFormat="of" derivedContent="RFC5056"/>.
        In particular, implementations <bcp14>MUST NOT</bcp14> use channel binding as a
        secret key to protect privileged information.
      </t>
      <t indent="0" pn="section-4-3">
        The Security Considerations sections of <xref target="RFC5056" format="default" sectionFormat="of" derivedContent="RFC5056"/>, <xref target="RFC5705" format="default" sectionFormat="of" derivedContent="RFC5705"/>, and <xref target="RFC8446" format="default" sectionFormat="of" derivedContent="RFC8446"/> apply to this document.
      </t>
      <section anchor="unique-bindings" numbered="true" toc="include" removeInRFC="false" pn="section-4.1">
        <name slugifiedName="name-uniqueness-of-channel-bindi">Uniqueness of Channel Bindings</name>
        <t indent="0" pn="section-4.1-1">
          The definition of channel bindings in <xref target="RFC5056" format="default" sectionFormat="of" derivedContent="RFC5056"/>
          defines the concept of a "unique" channel binding as being one that
          is unique to the channel endpoints and unique over time, that is,
          a value that is unique to a specific instance of the lower-layer
          security protocol.
          When TLS is the lower-layer security protocol, as for the channel binding
          type defined in this document, this concept of uniqueness
          corresponds to uniquely identifying the specific TLS connection.
        </t>
        <t indent="0" pn="section-4.1-2">
          However, a stronger form of uniqueness is possible, which would entail
          uniquely identifying not just the lower-layer protocol but also the
          upper-layer application or authentication protocol that is consuming
          the channel binding.
          The distinction is relevant only when there are multiple instances of
          an authentication protocol, or multiple distinct authentication
          protocols, that run atop the same lower-layer protocol.
          Such a situation is rare; most consumers of channel bindings
          establish an instance of the lower-layer secure protocol, run a single
          application or authentication protocol as the upper-layer protocol,
          then terminate both upper and lower-layer protocols.
          In this situation, the stronger form of uniqueness is trivially
          achieved, given that the channel binding value is unique in the sense
          of <xref target="RFC5056" format="default" sectionFormat="of" derivedContent="RFC5056"/>.
        </t>
        <t indent="0" pn="section-4.1-3">
          The channel binding type defined by this document provides only the
          weaker type of uniqueness, as per <xref target="RFC5056" format="default" sectionFormat="of" derivedContent="RFC5056"/>; it does
          not achieve the stronger uniqueness per the upper-layer protocol
          instance described above.  This stronger form of uniqueness would be
          useful in that it provides protection against cross-protocol attacks
          for the multiple authentication protocols running over the same
          instance of the lower-layer protocol, and it provides protection
          against replay attacks that seek to replay a message from one
          instance of an authentication protocol in a different instance of
          the same authentication protocol, again running over the same
          instance of the lower-layer protocol.  Both of these properties are
          highly desirable when performing formal analysis of upper-layer
          protocols; if these properties are not provided, such formal
          analysis is essentially impossible.  In some cases, one or both of
          these properties may already be provided by specific upper-layer
          protocols, but that is dependent on the mechanism(s) in question,
          and formal analysis requires that the property is provided in a
          generic manner across all potential upper-layer protocols that
          exist or might exist in the future.
        </t>
        <t indent="0" pn="section-4.1-4">
          Accordingly, applications that make use of the channel binding type
          defined in this document <bcp14>MUST NOT</bcp14> use the channel
          binding for more than one authentication mechanism instance on a given
          TLS connection.
          Such applications <bcp14>MUST</bcp14> immediately close the TLS
          connection after the conclusion of the upper-layer protocol.
        </t>
      </section>
      <section anchor="legacy-tls" numbered="true" toc="include" removeInRFC="false" pn="section-4.2">
        <name slugifiedName="name-use-with-legacy-tls">Use with Legacy TLS</name>
        <t indent="0" pn="section-4.2-1">
          While it is possible to use this channel binding mechanism with TLS
          versions below 1.3, extra precaution must be taken to ensure that
          the chosen cipher suites always result in unique master secrets.
          For more information, see <xref target="RFC7627" format="default" sectionFormat="of" derivedContent="RFC7627"/> and the Security
          Considerations section of <xref target="RFC5705" format="default" sectionFormat="of" derivedContent="RFC5705"/> (TLS 1.3 always
          provides unique master secrets, as discussed in <xref target="RFC8446" sectionFormat="of" section="D" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8446#appendix-D" derivedContent="RFC8446"/>).
        </t>
        <t indent="0" pn="section-4.2-2">
          When TLS renegotiation is enabled on a connection, the "tls-exporter"
          channel binding type is not defined for that connection, and
          implementations <bcp14>MUST NOT</bcp14> support it.
        </t>
        <t indent="0" pn="section-4.2-3">
          In general, users wishing to take advantage of channel binding should
          upgrade to TLS 1.3 or later.
        </t>
      </section>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <section anchor="cb-type-registration" numbered="true" toc="include" removeInRFC="false" pn="section-5.1">
        <name slugifiedName="name-registration-of-channel-bin">Registration of Channel Binding Type</name>
        <t indent="0" pn="section-5.1-1">
          IANA has registered tls-exporter in the "Channel-Binding
          Types" registry:
        </t>
        <dl indent="3" newline="false" spacing="normal" pn="section-5.1-2">
          <dt pn="section-5.1-2.1">Channel-binding unique prefix:</dt>
          <dd pn="section-5.1-2.2">tls-exporter</dd>
          <dt pn="section-5.1-2.3">Channel-binding type:</dt>
          <dd pn="section-5.1-2.4">unique</dd>
          <dt pn="section-5.1-2.5">Channel type:</dt>
          <dd pn="section-5.1-2.6">TLS <xref target="RFC8446" format="default" sectionFormat="of" derivedContent="RFC8446"/></dd>
          <dt pn="section-5.1-2.7">Published specification:</dt>
          <dd pn="section-5.1-2.8">RFC 9266</dd>
          <dt pn="section-5.1-2.9">Channel-binding is secret:</dt>
          <dd pn="section-5.1-2.10">no</dd>
          <dt pn="section-5.1-2.11">Description:</dt>
          <dd pn="section-5.1-2.12">The EKM value obtained from the current TLS connection.</dd>
          <dt pn="section-5.1-2.13">Intended usage:</dt>
          <dd pn="section-5.1-2.14">COMMON</dd>
          <dt pn="section-5.1-2.15">
            Person and email address to contact for further information:
          </dt>
          <dd pn="section-5.1-2.16">Sam Whited &lt;sam@samwhited.com&gt;</dd>
          <dt pn="section-5.1-2.17">Owner/Change controller name and email address:</dt>
          <dd pn="section-5.1-2.18">IESG</dd>
          <dt pn="section-5.1-2.19">Expert reviewer name and contact information:</dt>
          <dd pn="section-5.1-2.20">
            IETF KITTEN WG &lt;kitten@ietf.org&gt; or IETF TLS WG &lt;tls@ietf.org&gt;
          </dd>
          <dt pn="section-5.1-2.21">Note:</dt>
          <dd pn="section-5.1-2.22">
            See the published specification for advice on the applicability of
            this channel binding type.
          </dd>
        </dl>
      </section>
      <section anchor="exporter-registration" numbered="true" toc="include" removeInRFC="false" pn="section-5.2">
        <name slugifiedName="name-registration-of-channel-bind">Registration of Channel Binding TLS Exporter Label</name>
        <t indent="0" pn="section-5.2-1">
          IANA has added the following registration in the "TLS Exporter
          Labels" registry under the "Transport Layer Security (TLS)
          Parameters" registry:
        </t>
        <dl indent="3" newline="false" spacing="normal" pn="section-5.2-2">
          <dt pn="section-5.2-2.1">Value:</dt>
          <dd pn="section-5.2-2.2">EXPORTER-Channel-Binding</dd>
          <dt pn="section-5.2-2.3">DTLS-OK:</dt>
          <dd pn="section-5.2-2.4">Y</dd>
          <dt pn="section-5.2-2.5">Recommended:</dt>
          <dd pn="section-5.2-2.6">Y</dd>
          <dt pn="section-5.2-2.7">Reference:</dt>
          <dd pn="section-5.2-2.8">RFC 9266</dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <references pn="section-6">
      <name slugifiedName="name-references">References</name>
      <references pn="section-6.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1997" month="March"/>
            <abstract>
              <t indent="0">In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC5056" target="https://www.rfc-editor.org/info/rfc5056" quoteTitle="true" derivedAnchor="RFC5056">
          <front>
            <title>On the Use of Channel Bindings to Secure Channels</title>
            <author initials="N." surname="Williams" fullname="N. Williams">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2007" month="November"/>
            <abstract>
              <t indent="0">The concept of channel binding allows applications to establish that the two end-points of a secure channel at one network layer are the same as at a higher layer by binding authentication at the higher layer to the channel at the lower layer.  This allows applications to delegate session protection to lower layers, which has various performance benefits.</t>
              <t indent="0">This document discusses and formalizes the concept of channel binding to secure channels.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5056"/>
          <seriesInfo name="DOI" value="10.17487/RFC5056"/>
        </reference>
        <reference anchor="RFC5705" target="https://www.rfc-editor.org/info/rfc5705" quoteTitle="true" derivedAnchor="RFC5705">
          <front>
            <title>Keying Material Exporters for Transport Layer Security (TLS)</title>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2010" month="March"/>
            <abstract>
              <t indent="0">A number of protocols wish to leverage Transport Layer Security (TLS) to perform key establishment but then use some of the keying material for their own purposes.  This document describes a general mechanism for allowing that.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5705"/>
          <seriesInfo name="DOI" value="10.17487/RFC5705"/>
        </reference>
        <reference anchor="RFC5801" target="https://www.rfc-editor.org/info/rfc5801" quoteTitle="true" derivedAnchor="RFC5801">
          <front>
            <title>Using Generic Security Service Application Program Interface (GSS-API) Mechanisms in Simple Authentication and Security Layer (SASL): The GS2 Mechanism Family</title>
            <author initials="S." surname="Josefsson" fullname="S. Josefsson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="N." surname="Williams" fullname="N. Williams">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2010" month="July"/>
            <abstract>
              <t indent="0">This document describes how to use a Generic Security Service Application Program Interface (GSS-API) mechanism in the Simple Authentication and Security Layer (SASL) framework.  This is done by defining a new SASL mechanism family, called GS2.  This mechanism family offers a number of improvements over the previous "SASL/ GSSAPI" mechanism: it is more general, uses fewer messages for the authentication phase in some cases, and supports negotiable use of channel binding.  Only GSS-API mechanisms that support channel binding and mutual authentication are supported.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5801"/>
          <seriesInfo name="DOI" value="10.17487/RFC5801"/>
        </reference>
        <reference anchor="RFC5802" target="https://www.rfc-editor.org/info/rfc5802" quoteTitle="true" derivedAnchor="RFC5802">
          <front>
            <title>Salted Challenge Response Authentication Mechanism (SCRAM) SASL and GSS-API Mechanisms</title>
            <author initials="C." surname="Newman" fullname="C. Newman">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Menon-Sen" fullname="A. Menon-Sen">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Melnikov" fullname="A. Melnikov">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="N." surname="Williams" fullname="N. Williams">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2010" month="July"/>
            <abstract>
              <t indent="0">The secure authentication mechanism most widely deployed and used by Internet application protocols is the transmission of clear-text passwords over a channel protected by Transport Layer Security (TLS). There are some significant security concerns with that mechanism, which could be addressed by the use of a challenge response authentication mechanism protected by TLS.  Unfortunately, the challenge response mechanisms presently on the standards track all fail to meet requirements necessary for widespread deployment, and have had success only in limited use.</t>
              <t indent="0">This specification describes a family of Simple Authentication and Security Layer (SASL; RFC 4422) authentication mechanisms called the Salted Challenge Response Authentication Mechanism (SCRAM), which addresses the security concerns and meets the deployability requirements.  When used in combination with TLS or an equivalent security layer, a mechanism from this family could improve the status quo for application protocol authentication and provide a suitable choice for a mandatory-to-implement mechanism for future application protocol standards.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5802"/>
          <seriesInfo name="DOI" value="10.17487/RFC5802"/>
        </reference>
        <reference anchor="RFC5929" target="https://www.rfc-editor.org/info/rfc5929" quoteTitle="true" derivedAnchor="RFC5929">
          <front>
            <title>Channel Bindings for TLS</title>
            <author initials="J." surname="Altman" fullname="J. Altman">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="N." surname="Williams" fullname="N. Williams">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="L." surname="Zhu" fullname="L. Zhu">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2010" month="July"/>
            <abstract>
              <t indent="0">This document defines three channel binding types for Transport Layer Security (TLS), tls-unique, tls-server-end-point, and tls-unique-for-telnet, in accordance with RFC 5056 (On Channel Binding).</t>
              <t indent="0">Note that based on implementation experience, this document changes the original definition of 'tls-unique' channel binding type in the channel binding type IANA registry.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5929"/>
          <seriesInfo name="DOI" value="10.17487/RFC5929"/>
        </reference>
        <reference anchor="RFC7677" target="https://www.rfc-editor.org/info/rfc7677" quoteTitle="true" derivedAnchor="RFC7677">
          <front>
            <title>SCRAM-SHA-256 and SCRAM-SHA-256-PLUS Simple Authentication and Security Layer (SASL) Mechanisms</title>
            <author initials="T." surname="Hansen" fullname="T. Hansen">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2015" month="November"/>
            <abstract>
              <t indent="0">This document registers the Simple Authentication and Security Layer (SASL) mechanisms SCRAM-SHA-256 and SCRAM-SHA-256-PLUS, provides guidance for secure implementation of the original SCRAM-SHA-1-PLUS mechanism, and updates the SCRAM registration procedures of RFC 5802.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7677"/>
          <seriesInfo name="DOI" value="10.17487/RFC7677"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" quoteTitle="true" derivedAnchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2018" month="August"/>
            <abstract>
              <t indent="0">This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t indent="0">This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
      </references>
      <references pn="section-6.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="RFC5246" target="https://www.rfc-editor.org/info/rfc5246" quoteTitle="true" derivedAnchor="RFC5246">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
            <author initials="T." surname="Dierks" fullname="T. Dierks">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2008" month="August"/>
            <abstract>
              <t indent="0">This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol.  The TLS protocol provides communications security over the Internet.  The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5246"/>
          <seriesInfo name="DOI" value="10.17487/RFC5246"/>
        </reference>
        <reference anchor="RFC7627" target="https://www.rfc-editor.org/info/rfc7627" quoteTitle="true" derivedAnchor="RFC7627">
          <front>
            <title>Transport Layer Security (TLS) Session Hash and Extended Master Secret Extension</title>
            <author initials="K." surname="Bhargavan" fullname="K. Bhargavan" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Delignat-Lavaud" fullname="A. Delignat-Lavaud">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Pironti" fullname="A. Pironti">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Langley" fullname="A. Langley">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Ray" fullname="M. Ray">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2015" month="September"/>
            <abstract>
              <t indent="0">The Transport Layer Security (TLS) master secret is not cryptographically bound to important session parameters such as the server certificate.  Consequently, it is possible for an active attacker to set up two sessions, one with a client and another with a server, such that the master secrets on the two sessions are the same.  Thereafter, any mechanism that relies on the master secret for authentication, including session resumption, becomes vulnerable to a man-in-the-middle attack, where the attacker can simply forward messages back and forth between the client and server.  This specification defines a TLS extension that contextually binds the master secret to a log of the full handshake that computes it, thus preventing such attacks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7627"/>
          <seriesInfo name="DOI" value="10.17487/RFC7627"/>
        </reference>
        <reference anchor="TRIPLE-HANDSHAKE" target="https://www.mitls.org/pages/attacks/3SHAKE" quoteTitle="true" derivedAnchor="TRIPLE-HANDSHAKE">
          <front>
            <title>Triple Handshakes Considered Harmful: Breaking and Fixing Authentication over TLS</title>
            <author initials="K." surname="Bhargavan"/>
            <author initials="A." surname="Delignat-Lavaud"/>
            <author initials="C." surname="Fournet"/>
            <author initials="A." surname="Pironti"/>
            <author initials="P." surname="Strub"/>
            <date year="2014" month="March"/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-authors-address">Author's Address</name>
      <author initials="S" surname="Whited" fullname="Sam Whited">
        <organization showOnFrontPage="true"/>
        <address>
          <postal>
            <street/>
            <city>Atlanta</city>
            <region>GA</region>
            <country>United States of America</country>
            <region/>
          </postal>
          <phone/>
          <email>sam@samwhited.com</email>
          <uri>https://blog.samwhited.com/</uri>
        </address>
      </author>
    </section>
  </back>
</rfc>
