<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.8 -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-vvv-tls-alps-00" category="std" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 2.43.0 -->
  <front>
    <title abbrev="TLS ALPS">TLS Application-Layer Protocol Settings Extension</title>
    <seriesInfo name="Internet-Draft" value="draft-vvv-tls-alps"/>
    <author initials="V." surname="Vasiliev" fullname="Victor Vasiliev">
      <organization>Google</organization>
      <address>
        <email>vasilvv@google.com</email>
      </address>
    </author>
    <date year="2020" month="June" day="26"/>
    <area>General</area>
    <workgroup>TLS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document describes a Transport Layer Security (TLS) extension for
negotiating application-layer protocol settings (ALPS) within the TLS handshake.
Any application-layer protocol operating over TLS can use this mechanism to
indicate its settings to the peer in parallel with the TLS handshake
completion.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
  TLS Working Group mailing list (tls@ietf.org),
  which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tls/">https://mailarchive.ietf.org/arch/browse/tls/</eref>.</t>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://github.com/vasilvv/tls-alps">https://github.com/vasilvv/tls-alps</eref>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>An application-layer protocol often starts with both parties negotiating
parameters under which the protocol operates; for instance, HTTP/2 <xref target="RFC7540" format="default"/>
uses a SETTINGS frame to exchange the list of protocol parameters supported by
each endpoint.  This is usually achieved by waiting for TLS handshake
<xref target="RFC8446" format="default"/> to complete and then performing the application-layer handshake
within the application protocol itself.  This approach, despite its apparent
simplicity at first, has multiple drawbacks:</t>
      <ol spacing="normal" type="1">
        <li>While the server is technically capable of sending configuration to the peer
as soon as it sends its Finished message, most TLS implementations do not
allow any application data to be sent until the Finished message is received
from the client.  This adds an extra round-trip to the time of when the
server settings are available to the client.</li>
        <li>In QUIC, any settings delivered within the application layer can arrive
after other application data; thus, the application has to operate under the
assumption that peer's settings are not always available.</li>
        <li>If the application needs to be aware of the server settings in order to send
0-RTT data, the application has to manually integrate with the TLS stack to
associate the settings with TLS session tickets.</li>
      </ol>
      <t>This document introduces a new TLS extension, <tt>application_settings</tt>, that
allows applications to exchange settings within the TLS handshake.  Through
doing that, the settings can be made available to the application as soon as the
handshake completes, and can be associated with TLS session tickets
automatically at the TLS layer.  This approach allows the application protocol
to be designed with the assumption that it has access to the peer's settings
whenever it is able to send data.</t>
    </section>
    <section anchor="conventions-and-definitions" numbered="true" toc="default">
      <name>Conventions and Definitions</name>
      <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 anchor="semantics" numbered="true" toc="default">
      <name>Semantics</name>
      <t>Settings are defined to be an opaque blob that is specified by the application
when initiating a TLS connection.  The settings are meant to be a <em>declaration</em>
of the protocol parameters supported by the sender.  While in this version of
the extension the server settings are always sent first, this may change in
future versions; thus, the application MUST NOT vary client settings based on
the ones received from the server.</t>
      <t>ALPS is <em>not</em> a negotiation mechanism: there is no notion of rejecting peer's
settings, and the settings are not responses to one another.  Nevertheless, it
is possible for parties to coordinate behavior by, for instance, requiring a
certain parameter to be present in both client and server settings.  This makes
ALPS mechanism similar to QUIC transport parameters
<xref target="I-D.ietf-quic-transport" format="default"/> or HTTP/2 SETTINGS frame <xref target="RFC7540" format="default"/>, but puts it
in contrast to similar mechanisms in TLS.</t>
      <t>Settings are exchanged as a part of the TLS handshake that is encrypted with the
handshake keys.  When the server settings are sent, the identity of the client
has not been yet established; therefore, an application MUST NOT use ALPS if it
requires the settings to be available only to the authenticated clients.</t>
      <t>The ALPS model provides applications with a guarantee that the settings are
available before any application data can be written.  Note that this implies
that when the full handshake is performed, the server can no longer send data
immediately after sending its Finished message; it has to wait for the client
to respond with its settings.  This may negatively impact the latency of the
protocols where the server sends the first message, however it should be noted
that sending application data before receiving has not been widely supported by
TLS implementations, nor has it been allowed in situations when establishing
client identity through TLS is required.</t>
      <t>ALPS can only be used in conjunction with Application-Layer Protocol
Negotiation: the client MUST offer ALPN <xref target="RFC7301" format="default"/> if advertising ALPS
support, and the server MUST NOT reply with ALPS unless it is also negotiating
ALPN.  The ALPS payload is protocol-dependent, and as such it MUST be specified
with respect to a selected ALPN.</t>
      <t>For application protocols that support 0-RTT data, both the client and the
server have to remember the settings provided by the both sides during the
original connection.  If the client sends 0-RTT data and the server accepts it,
the ALPS values SHALL be the same values as were during the original
connection.  In all other cases (including session resumption that does not
result in server accepting early data), new ALPS values SHALL be negotiated.</t>
      <t>If the client wishes to send different client settings for the 0-RTT session,
it MUST NOT offer 0-RTT.  Conversely, if the server would send different server
settings, it MUST reject 0-RTT.  Note that the ALPN itself is similarly
required to match the one in the original connection, thus the settings
only need to be remembered or checked for a single application protocol.</t>
    </section>
    <section anchor="wire-protocol" numbered="true" toc="default">
      <name>Wire protocol</name>
      <t>ALPS is only supported in TLS version 1.3 or later, as the earlier versions do
not provide any confidentiality protections for the handshake data.  The
exchange is performed in three steps:</t>
      <ol spacing="normal" type="1">
        <li>The client sends an extension in ClientHello that enumerates all ALPN values
for which ALPS is supported.</li>
        <li>The server sends an encrypted extension containing the server settings.</li>
        <li>The client sends a new handshake message containing the client settings.</li>
      </ol>
      <figure anchor="alps-full">
        <name>ALPS exchange in a full TLS handshake</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
       Client                                               Server

       ClientHello
       + alpn
       + alps                    -------->

                                                       ServerHello
                                             {EncryptedExtensions}
                                                          + {alpn}
                                                          + {alps}
                                                               ...
                                 <--------              {Finished}

       {ClientApplicationSettings}
       {Certificate*}
       {CertificateVerify*}
       {Finished}                -------->

                   +  Indicates extensions sent in the
                      previously noted message.

                   {} Indicates messages protected using
                      the handshake keys.

                   *  Indicates optional messages that are
                      not related to ALPS.
]]></artwork>
      </figure>
      <t>A TLS client can enable ALPS by specifying an <tt>application_settings</tt> extension.
The value of the <tt>extension_data</tt> field for the ALPS extension SHALL be a
ApplicationSettingsSupport struct:</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
    struct {
        ProtocolName supported_protocols<2..2^16-1>;
    } ApplicationSettingsSupport;
]]></artwork>
      <t>Here, the <tt>supported_protocols</tt> field indicates the names of the protocols (as
defined in <xref target="RFC7301" format="default"/>) for which ALPS exchange is supported; this is necessary
for the situations when the client offers multiple ALPN values but only supports
ALPS in some of them.</t>
      <t>If the server chooses an ALPN value for which the client has offered ALPS
support, the server MAY send an <tt>application_settings</tt> extension in the
EncryptedExtensions.  The value of the <tt>extension_data</tt> field in that case SHALL
be an opaque blob containing the server settings as specified by the application
protocol.</t>
      <t>If the client receives an EncryptedExtensions message containing an
<tt>application_settings</tt> extension from the server, after receiving server's
Finished message it MUST send a ClientApplicationSettings handshake message
before sending the Finished message:</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
    enum {
        client_application_settings(TBD), (255)
    } HandshakeType;

    struct {
        opaque application_settings<0..2^16-1>;
    } ClientApplicationSettings;
]]></artwork>
      <t>The value of the <tt>application_settings</tt> field SHALL be an opaque blob containing
the client settings as specified by the application protocol.  If the client is
providing a client certificate, the ClientApplicationSettings message MUST
precede the Certificate message sent by the client.</t>
      <t>If the ClientApplicationSettings message is sent or received during the
handshake, it SHALL be appended to the end of client's Handshake Context
context as defined in Section 4.4 of <xref target="RFC8446" format="default"/>.  In addition, for
Post-Handshake Handshake Context, it SHALL be appended after the client
Finished message.</t>
      <t>When performing session resumption with 0-RTT data, the settings are carried
over from the original connection.  The server SHALL send an empty
<tt>application_settings</tt> extension if it accepts 0-RTT, and the client SHALL NOT
send a ClientApplicationSettings message.</t>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>ALPS is protected using the handshake keys, which are the secret keys derived
as a result of (EC)DHE between the client and the server.</t>
      <t>In order to ensure that the ALPS values are authenticated, the TLS
implementation MUST NOT reveal the contents of peer's ALPS until peer's
Finished message is received, with exception of cases where the ALPS has been
carried over from the previous connection.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>IANA will update the "TLS ExtensionType Values" registry to include
<tt>application_settings</tt> with the value of TBD; the list of messages in which
this extension may appear is <tt>CH, SH</tt>.</t>
      <t>IANA will also update the "TLS HandshakeType" registry to include
<tt>client_application_settings</tt> message with value TBD, and "DTLS-OK" set to "Y".</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="BCP" value="14"/>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization/>
            </author>
            <date year="1997" month="March"/>
            <abstract>
              <t>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>
        </reference>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <seriesInfo name="DOI" value="10.17487/RFC8446"/>
            <seriesInfo name="RFC" value="8446"/>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
              <organization/>
            </author>
            <date year="2018" month="August"/>
            <abstract>
              <t>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>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>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="BCP" value="14"/>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t>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>
        </reference>
        <reference anchor="RFC7301" target="https://www.rfc-editor.org/info/rfc7301">
          <front>
            <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
            <seriesInfo name="DOI" value="10.17487/RFC7301"/>
            <seriesInfo name="RFC" value="7301"/>
            <author initials="S." surname="Friedl" fullname="S. Friedl">
              <organization/>
            </author>
            <author initials="A." surname="Popov" fullname="A. Popov">
              <organization/>
            </author>
            <author initials="A." surname="Langley" fullname="A. Langley">
              <organization/>
            </author>
            <author initials="E." surname="Stephan" fullname="E. Stephan">
              <organization/>
            </author>
            <date year="2014" month="July"/>
            <abstract>
              <t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t>
            </abstract>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC7540" target="https://www.rfc-editor.org/info/rfc7540">
          <front>
            <title>Hypertext Transfer Protocol Version 2 (HTTP/2)</title>
            <seriesInfo name="DOI" value="10.17487/RFC7540"/>
            <seriesInfo name="RFC" value="7540"/>
            <author initials="M." surname="Belshe" fullname="M. Belshe">
              <organization/>
            </author>
            <author initials="R." surname="Peon" fullname="R. Peon">
              <organization/>
            </author>
            <author initials="M." surname="Thomson" fullname="M. Thomson" role="editor">
              <organization/>
            </author>
            <date year="2015" month="May"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2).  HTTP/2 enables a more efficient use of network resources and a reduced perception of latency by introducing header field compression and allowing multiple concurrent exchanges on the same connection.  It also introduces unsolicited push of representations from servers to clients.</t>
              <t>This specification is an alternative to, but does not obsolete, the HTTP/1.1 message syntax.  HTTP's existing semantics remain unchanged.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="I-D.ietf-quic-transport" target="http://www.ietf.org/internet-drafts/draft-ietf-quic-transport-29.txt">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-quic-transport-29"/>
            <author initials="J" surname="Iyengar" fullname="Jana Iyengar">
              <organization/>
            </author>
            <author initials="M" surname="Thomson" fullname="Martin Thomson">
              <organization/>
            </author>
            <date month="June" day="9" year="2020"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. Accompanying documents describe QUIC's loss detection and congestion control and the use of TLS for key negotiation.  Note to Readers  Discussion of this draft takes place on the QUIC working group mailing list (quic@ietf.org (mailto:quic@ietf.org)), which is archived at https://mailarchive.ietf.org/arch/search/?email_list=quic  Working Group information can be found at https://github.com/quicwg; source code and issues list for this draft can be found at https://github.com/quicwg/base-drafts/labels/-transport.</t>
            </abstract>
          </front>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgments" toc="default">
      <name>Acknowledgments</name>
      <t>This document has benefited from contributions and suggestions from David
Benjamin, Nick Harper, David Schinazi, Renjie Tang and many others.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
MoOTKGYnKb3isfUDRbRD/wPqpLWblSkAAA==

-->

</rfc>
