<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent" [
  <!ENTITY docName "draft-ietf-kitten-tls-channel-bindings-for-tls13-06">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     ipr="trust200902"
     docName="&docName;"
     obsoletes=""
     updates="5801, 5802, 5929, 8446"
     submissionType="IETF"
     category="std"
     consensus="true"
     xml:lang="en"
     tocInclude="true"
     symRefs="true"
     sortRefs="true"
     version="3">
  <front>
    <title abbrev="">Channel Bindings for TLS 1.3</title>
    <seriesInfo name="Internet-Draft" value="&docName;"/>
    <author initials="S" surname="Whited" fullname="Sam Whited">
      <organization/>
      <address>
        <postal>
          <street/>
          <city>Atlanta</city>
          <code>GA</code>
          <country>USA</country>
          <region/>
        </postal>
        <phone/>
        <email>sam@samwhited.com</email>
        <uri>https://blog.samwhited.com/</uri>
      </address>
    </author>
    <date year="2021" month="May" day="26"/>
    <area>Internet</area>
    <workgroup>Transport Layer Security</workgroup>
    <abstract>
      <t>
        This document defines a channel binding type, tls-exporter, that is
        compatible with TLS 1.3 in accordance with RFC 5056, On Channel Binding.
        Furthermore it updates the "default" channel binding to the new binding
        for versions of TLS greater than 1.2.
        This document updates <xref target="RFC5801"/>,
        <xref target="RFC5802"/>, <xref target="RFC5929"/>, and
        <xref target="RFC8446"/>.
      </t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>
        The "unique" channel binding types defined in <xref target="RFC5929"/>
        were found to be vulnerable to the "triple handshake vulnerability"
        <xref target="TRIPLE-HANDSHAKE"/> without the extended master secret
        extension defined in <xref target="RFC7627"/>.
        Because of this they were not defined for TLS 1.3 (see
        <xref target="RFC8446"/> section C.5).
        To facilitate channel binding with TLS 1.3, a new channel binding type
        is needed.
      </t>
      <section anchor="conventions-and-terminology" numbered="true" toc="default">
        <name>Conventions and Terminology</name>
        <t>
          Throughout this document the acronym "EKM" is used to refer to
          Exported Keying Material as defined in <xref target="RFC5705"/>.
        </t>
        <t>
          The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
          "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
          "OPTIONAL" in this document are to be interpreted as described in BCP
          14 <xref target="RFC2119" format="default"/> <xref target="RFC8174"
          format="default"/> when, and only when, they appear in all capitals,
          as shown here.
        </t>
      </section>
    </section>
    <section anchor="tls-exporter" numbered="true" toc="default">
      <name>The 'tls-exporter' Channel Binding Type</name>
      <t>
        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"/> and <xref target="RFC8446"/> section
        7.5 by supplying the following inputs:
      </t>
      <dl>
        <dt>Label:</dt>
        <dd>
          The ASCII string "EXPORTER-Channel-Binding" with no terminating NUL.
        </dd>
        <dt>Context value:</dt>
        <dd>
          Empty context value.
        </dd>
        <dt>Length:</dt>
        <dd>
          32 bytes.
        </dd>
      </dl>
      <t>
        In previous versions of TLS the "tls-unique" channel binding type was
        defined as the default channel binding if no mechanism was defined for
        negotiating a different channel binding.
        Because "tls-unique" is not defined for TLS 1.3, the default channel
        binding mechanism for TLS versions 1.3 and greater <bcp14>MUST</bcp14>
        be "tls-exporter".
      </t>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>
        Channel bindings do not leak secret information about the channel and
        are considered public.
        Implementations MUST NOT use the channel binding to protect secret
        information.
      </t>
      <t>
        The Security Considerations sections of <xref target="RFC5056"/>, <xref
        target="RFC5705"/>, and <xref target="RFC8446"/> apply to this document.
      </t>
      <section anchor="legacy-tls" numbered="true" toc="default">
        <name>Use with Legacy TLS</name>
        <t>
          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 the Security Considerations section of <xref
          target="RFC5705"/>.
        </t>
        <t>
          When TLS renegotiation is enabled the "tls-exporter" channel binding
          type is not defined and implementations <bcp14>MUST NOT</bcp14>
          support it.
        </t>
        <t>
          In general, users wishing to take advantage of channel binding should
          upgrade to TLS 1.3 or later.
        </t>
        <t>
          The derived data <bcp14>MUST NOT</bcp14> be used for any purpose other
          than channel bindings as described in <xref target="RFC5056"/>.
        </t>
      </section>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <section anchor="cb-type-registration" numbered="true" toc="default">
        <name>Registration of Channel Binding Type</name>
        <t>
          This document adds the following registration in the "Channel-Binding
          Types" registry:
        </t>
        <dl>
          <dt>Subject:</dt>
          <dd>Registration of channel binding tls-exporter</dd>
          <dt>Channel binding unique prefix:</dt>
          <dd>tls-exporter</dd>
          <dt>Channel binding type:</dt>
          <dd>unique</dd>
          <dt>Channel type:</dt>
          <dd><xref target="RFC8446">TLS</xref></dd>
          <dt>Published specification:</dt>
          <dd>&docName;</dd>
          <dt>Channel binding is secret:</dt>
          <dd>no</dd>
          <dt>Description:</dt>
          <dd>The EKM value obtained from the current TLS connection.</dd>
          <dt>Intended usage:</dt>
          <dd>COMMON</dd>
          <dt>
            Person and email address to contact for further information:
          </dt>
          <dd>Sam Whited &lt;sam@samwhited.com&gt;.</dd>
          <dt>Owner/Change controller name and email address:</dt>
          <dd>IESG.</dd>
          <dt>Expert reviewer name and contact information:</dt>
          <dd>
            IETF KITTEN or TLS WG (kitten@ietf.org or tls@ietf.org, failing
            that, ietf@ietf.org).
          </dd>
          <dt>Note:</dt>
          <dd>
            See the published specification for advice on the applicability of
            this channel binding type.
          </dd>
        </dl>
      </section>
      <section anchor="exporter-registration" numbered="true" toc="default">
        <name>Registration of Channel Binding TLS Exporter Label</name>
        <t>
          This document adds the following registration in the "TLS Exporter
          Labels" registry:
        </t>
        <dl>
          <dt>Value:</dt>
          <dd>EXPORTER-Channel-Binding</dd>
          <dt>DTLS-OK:</dt>
          <dd>Y</dd>
          <dt>Recommended:</dt>
          <dd>Y</dd>
          <dt>Reference:</dt>
          <dd>This document</dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.5056.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.5705.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8446.xml"/>
      </references>
      <references>
        <name>Informative References</name>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.5801.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.5802.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.5929.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.7627.xml"/>
        <reference anchor="TRIPLE-HANDSHAKE" target="https://www.mitls.org/pages/attacks/3SHAKE">
          <front>
            <title>Password Storage</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>
  </back>
</rfc>
