<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-schinazi-httpbis-transport-auth-08" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.0 -->
  <front>
    <title>HTTP Unprompted Authentication</title>
    <seriesInfo name="Internet-Draft" value="draft-schinazi-httpbis-transport-auth-08"/>
    <author initials="D." surname="Schinazi" fullname="David Schinazi">
      <organization>Google LLC</organization>
      <address>
        <postal>
          <street>1600 Amphitheatre Parkway</street>
          <city>Mountain View</city>
          <region>CA</region>
          <code>94043</code>
          <country>United States of America</country>
        </postal>
        <email>dschinazi.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="D." surname="Oliver" fullname="David M. Oliver">
      <organization>Guardian Project</organization>
      <address>
        <email>david@guardianproject.info</email>
        <uri>https://guardianproject.info</uri>
      </address>
    </author>
    <author initials="J." surname="Hoyland" fullname="Jonathan Hoyland">
      <organization>Cloudflare Inc.</organization>
      <address>
        <email>jonathan.hoyland@gmail.com</email>
      </address>
    </author>
    <date year="2022" month="October" day="13"/>
    <area>Applications and Real-Time</area>
    <workgroup>HTTPBIS</workgroup>
    <keyword>secure</keyword>
    <keyword>tunnels</keyword>
    <keyword>masque</keyword>
    <keyword>http-ng</keyword>
    <abstract>
      <t>Existing HTTP authentication mechanisms are probeable in the sense that it is
possible for an unauthenticated client to probe whether an origin serves
resources that require authentication. It is possible for an origin to hide the
fact that it requires authentication by not generating Unauthorized status
codes, however that only works with non-cryptographic authentication schemes:
cryptographic schemes (such as signatures or message authentication codes)
require a fresh nonce to be signed, and there is no existing way for the origin
to share such a nonce without exposing the fact that it serves resources that
require authentication. This document proposes a new non-probeable cryptographic
authentication scheme.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://DavidSchinazi.github.io/draft-schinazi-httpbis-transport-auth/draft-schinazi-httpbis-transport-auth.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-schinazi-httpbis-transport-auth/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        HTTP Working Group mailing list (<eref target="mailto:ietf-http-wg@w3.org"/>),
        which is archived at <eref target="https://lists.w3.org/Archives/Public/ietf-http-wg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/DavidSchinazi/draft-schinazi-httpbis-transport-auth"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>Existing HTTP authentication mechanisms (see <xref section="11" sectionFormat="of" target="HTTP"/>)
are probeable in the sense that it is possible for an unauthenticated client to
probe whether an origin serves resources that require authentication. It is
possible for an origin to hide the fact that it requires authentication by not
generating Unauthorized status codes, however that only works with
non-cryptographic authentication schemes: cryptographic schemes (such as
signatures or message authentication codes) require a fresh nonce to be signed,
and there is no existing way for the origin to share such a nonce without
exposing the fact that it serves resources that require authentication. This
document proposes a new non-probeable cryptographic authentication scheme.</t>
      <t>There are scenarios where servers may want to expose the fact that
authentication is required for access to specific resources. This is left for
future work.</t>
      <section anchor="conventions">
        <name>Conventions and Definitions</name>
        <t>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"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <t>This document uses the following terminology from <xref section="3" sectionFormat="of" target="STRUCTURED-FIELDS"/> to specify syntax and parsing: Integer, Token and
Byte Sequence.</t>
      </section>
    </section>
    <section anchor="compute-proof">
      <name>Computing the Authentication Proof</name>
      <t>This document only defines Unprompted Authentication for uses of HTTP with TLS
<xref target="TLS"/>. This includes any use of HTTP over TLS as typically used for
HTTP/2 <xref target="H2"/>, or HTTP/3 <xref target="H3"/> where the transport protocol uses TLS as its
authentication and key exchange mechanism <xref target="QUIC-TLS"/>.</t>
      <t>The user agent leverages a TLS keying material exporter <xref target="KEY-EXPORT"/>
to generate a nonce which can be signed using the user's key. The keying
material exporter uses a label that starts with the characters
"EXPORTER-HTTP-Unprompted-Authentication-" (see <xref target="schemes"/> for the labels and
contexts used by each scheme). The TLS keying material exporter is used to
generate a 32-byte key which is then used as a nonce.</t>
    </section>
    <section anchor="header-definition">
      <name>Header Field Definition</name>
      <t>The "Unprompted-Authentication" header field allows a user agent to authenticate
with an origin server. The authentication is scoped to the HTTP request
associated with this header field. The value of the Unprompted-Authentication
header field is a token which represents the Unpromted Authentication Scheme;
see <xref target="schemes"/>. This header field supports parameters.</t>
      <section anchor="parameter-u">
        <name>The u Parameter</name>
        <t>The <bcp14>OPTIONAL</bcp14> "u" (user ID) parameter is a byte sequence that specifies the user
ID that the user agent wishes to authenticate.</t>
      </section>
      <section anchor="parameter-p">
        <name>The p Parameter</name>
        <t>The <bcp14>OPTIONAL</bcp14> "p" (proof) parameter is a byte sequence that specifies the proof
that the user agent provides to attest to possessing the credential that matches
its user ID.</t>
      </section>
      <section anchor="parameter-s">
        <name>The s Parameter</name>
        <t>The <bcp14>OPTIONAL</bcp14> "s" (signature) parameter is an integer that specifies the
signature algorithm used to compute the proof transmitted in the "p" directive.
Its value is an integer between 0 and 255 inclusive from the IANA "TLS
SignatureAlgorithm" registry maintained at
&lt;<eref target="https://www.iana.org/assignments/tls-parameters#tls-parameters-16"/>&gt;.</t>
      </section>
      <section anchor="parameter-h">
        <name>The h Parameter</name>
        <t>The <bcp14>OPTIONAL</bcp14> "h" (hash) parameter is an integer that specifies the hash
algorithm used to compute the proof transmitted in the "p" directive. Its value
is an integer between 0 and 255 inclusive from the IANA "TLS HashAlgorithm"
registry maintained at
&lt;<eref target="https://www.iana.org/assignments/tls-parameters#tls-parameters-18"/>&gt;.</t>
      </section>
    </section>
    <section anchor="schemes">
      <name>Unprompted Authentication Schemes</name>
      <t>The Unprompted Authentication Framework allows defining Unprompted
Authentication Schemes, which specify how to authenticate user IDs. This
documents defined the "Signature" and "HMAC" schemes.</t>
      <section anchor="signature">
        <name>Signature</name>
        <t>The "Signature" Unprompted Authentication Scheme uses asymmetric cyptography.
User agents possess a user ID and a public/private key pair, and origin servers
maintain a mapping of authorized user IDs to their associated public keys. When
using this scheme, the "u", "p", and "s" parameters are <bcp14>REQUIRED</bcp14>. The TLS keying
material export label for this scheme is
"EXPORTER-HTTP-Unprompted-Authentication-Signature" and the associated context
is empty. The nonce is then signed using the selected asymmetric signature
algorithm and transmitted as the proof directive.</t>
        <t>For example, the user ID "john.doe" authenticating using Ed25519
<xref target="ED25519"/> could produce the following header field (lines are folded
to fit):</t>
        <artwork><![CDATA[
Unprompted-Authentication: Signature u=:am9obi5kb2U=:;s=7;
p=:SW5zZXJ0IHNpZ25hdHVyZSBvZiBub25jZSBoZXJlIHdo
aWNoIHRha2VzIDUxMiBiaXRzIGZvciBFZDI1NTE5IQ==:
]]></artwork>
      </section>
      <section anchor="hmac">
        <name>HMAC</name>
        <t>The "HMAC" Unprompted Authentication Scheme uses symmetric cyptography. User
agents possess a user ID and a secret key, and origin servers maintain a mapping
of authorized user IDs to their associated secret key. When using this scheme,
the "u", "p", and "h" parameters are <bcp14>REQUIRED</bcp14>. The TLS keying material export
label for this scheme is "EXPORTER-HTTP-Unprompted-Authentication-HMAC" and the
associated context is empty. The nonce is then HMACed using the selected HMAC
algorithm and transmitted as the proof directive.</t>
        <t>For example, the user ID "john.doe" authenticating using HMAC-SHA-512
<xref target="SHA"/> could produce the following header field (lines are folded to
fit):</t>
        <artwork><![CDATA[
Unprompted-Authentication: HMAC u="am9obi5kb2U=";h=6;
p="SW5zZXJ0IEhNQUMgb2Ygbm9uY2UgaGVyZSB3aGljaCB0YWtl
cyA1MTIgYml0cyBmb3IgU0hBLTUxMiEhISEhIQ=="
]]></artwork>
      </section>
    </section>
    <section anchor="intermediary">
      <name>Intermediary Considerations</name>
      <t>Since Unprompted Authentication leverages TLS keying material exporters, it
cannot be transparently forwarded by HTTP intermediaries. HTTP intermediaries
that support this specification will validate the authentication received from
the client themselves, then inform the upstream HTTP server of the presence of
valid authentication using some other mechanism.</t>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>Unprompted Authentication allows a user-agent to authenticate to an origin
server while guaranteeing freshness and without the need for the server
to transmit a nonce to the user agent. This allows the server to accept
authenticated clients without revealing that it supports or expects
authentication for some resources. It also allows authentication without
the user agent leaking the presence of authentication to observers due to
clear-text TLS Client Hello extensions.</t>
      <t>The authentication proofs described in this document are not bound to individual
HTTP requests; if the same user sends an authentication proof on multiple
requests they will all be identical. This allows for better compression when
sending over the wire, but implies that client implementations that multiplex
different security contexts over a single HTTP connection need to ensure that
those contexts cannot read each other's header fields. Otherwise, one context
would be able to replay the unprompted authentication header field of another.
This constraint is met by modern Web browsers. If an attacker were to compromise
the browser such that it could access another context's memory, the attacker
might also be able to access the corresponding key, so binding authentication to
requests would not provide much benefit in practice.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="iana-header">
        <name>Unprompted-Authentication Header Field</name>
        <t>This document will request IANA to register the following entry in the "HTTP
Field Name" registry maintained at
&lt;<eref target="https://www.iana.org/assignments/http-fields"/>&gt;:</t>
        <dl spacing="compact">
          <dt>Field Name:</dt>
          <dd>
            <t>Unprompted-Authentication</t>
          </dd>
          <dt>Template:</dt>
          <dd>
            <t>None</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>provisional (permanent if this document is approved)</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Comments:</dt>
          <dd>
            <t>None</t>
          </dd>
        </dl>
      </section>
      <section anchor="iana-schemes">
        <name>Unprompted Authentication Schemes Registry</name>
        <t>This document, if approved, requests IANA to create a new "HTTP Unprompted
Authentication Schemes" Registry. This new registry contains strings and is
covered by the First Come First Served policy from <xref section="4.4" sectionFormat="of" target="IANA-POLICY"/>. Each entry contains an optional "Reference" field.</t>
        <t>It initially contains the following entries:</t>
        <ul spacing="normal">
          <li>Signature</li>
          <li>HMAC</li>
        </ul>
        <t>The reference for both is this document.</t>
      </section>
      <section anchor="iana-exporter-label">
        <name>TLS Keying Material Exporter Labels</name>
        <t>This document, if approved, requests IANA to register the following entries in
the "TLS Exporter Labels" registry maintained at
&lt;<eref target="https://www.iana.org/assignments/tls-parameters#exporter-labels"/>&gt;:</t>
        <ul spacing="normal">
          <li>EXPORTER-HTTP-Unprompted-Authentication-Signature</li>
          <li>EXPORTER-HTTP-Unprompted-Authentication-HMAC</li>
        </ul>
        <t>Both of these entries are listed with the following qualifiers:</t>
        <dl spacing="compact">
          <dt>DTLS-OK:</dt>
          <dd>
            <t>N</t>
          </dd>
          <dt>Recommended:</dt>
          <dd>
            <t>Y</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <displayreference target="H2" to="HTTP/2"/>
    <displayreference target="H3" to="HTTP/3"/>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="HTTP">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding">
              <organization/>
            </author>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke">
              <organization/>
            </author>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes. </t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <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>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <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>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="STRUCTURED-FIELDS">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <author fullname="P-H. Kamp" initials="P-H." surname="Kamp">
              <organization/>
            </author>
            <date month="February" year="2021"/>
            <abstract>
              <t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields that wish to use a common syntax that is more restrictive than traditional HTTP field values.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8941"/>
          <seriesInfo name="DOI" value="10.17487/RFC8941"/>
        </reference>
        <reference anchor="TLS">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <date month="August" year="2018"/>
            <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>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="KEY-EXPORT">
          <front>
            <title>Keying Material Exporters for Transport Layer Security (TLS)</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <date month="March" year="2010"/>
            <abstract>
              <t>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="IANA-POLICY">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton">
              <organization/>
            </author>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <author fullname="T. Narten" initials="T." surname="Narten">
              <organization/>
            </author>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters.  To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper.  For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed.  This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="H2">
          <front>
            <title>HTTP/2</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <author fullname="C. Benfield" initials="C." role="editor" surname="Benfield">
              <organization/>
            </author>
            <date month="June" year="2022"/>
            <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 latency by introducing field compression and allowing multiple concurrent exchanges on the same connection.</t>
              <t>This document obsoletes RFCs 7540 and 8740.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9113"/>
          <seriesInfo name="DOI" value="10.17487/RFC9113"/>
        </reference>
        <reference anchor="H3">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop">
              <organization/>
            </author>
            <date month="June" year="2022"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment.  This document describes a mapping of HTTP semantics over QUIC.  This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </reference>
        <reference anchor="QUIC-TLS">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </reference>
        <reference anchor="ED25519">
          <front>
            <title>Algorithm Identifiers for Ed25519, Ed448, X25519, and X448 for Use in the Internet X.509 Public Key Infrastructure</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson">
              <organization/>
            </author>
            <author fullname="J. Schaad" initials="J." surname="Schaad">
              <organization/>
            </author>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies algorithm identifiers and ASN.1 encoding formats for elliptic curve constructs using the curve25519 and curve448 curves.  The signature algorithms covered are Ed25519 and Ed448.  The key agreement algorithms covered are X25519 and X448. The encoding for public key, private key, and Edwards-curve Digital Signature Algorithm (EdDSA) structures is provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8410"/>
          <seriesInfo name="DOI" value="10.17487/RFC8410"/>
        </reference>
        <reference anchor="SHA">
          <front>
            <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd">
              <organization/>
            </author>
            <author fullname="T. Hansen" initials="T." surname="Hansen">
              <organization/>
            </author>
            <date month="May" year="2011"/>
            <abstract>
              <t>Federal Information Processing Standard, FIPS</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6234"/>
          <seriesInfo name="DOI" value="10.17487/RFC6234"/>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank many members of the IETF community, as this
document is the fruit of many hallway conversations.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
YnqZirCCoIPs49B3P/g4go/9CfishBygQOu9D298GW/sCXibb+7gxpfhxu6B
W/xouC0WAGwV3Pij4ebk7pHGlpHGH0IaLr4fafjm/4osPDAYnOwHu5tbCC/4
idB6ubW985eghZXV46BFRl3udZqo6ryO914iqjo1qo7j81+uziajrevJKH1V
Xm9dTcRbQti2eJt8FIcHG9fvi4SFs/3Ns2F/cp0mG+HsIB1t9ydXG/HB6RBR
dhz3B/AHqOp4VFHjw6QyUgKSh0OdWUiHjagad6rxFjA3UKjH1XCb1+sPlZ8Q
wlXBoADH25tR1VkA4WVFQh3bqTCRq2upVGsQobAbec+gS+59MeSt2vcxHWVT
lSSYdim8g3fhoU06GJMEY4oo1yK8VY19AAcY6C1mHmS+7sLPmVmOV7UidSQ5
d1AVia7UC7FoZHTw4onOAq0G6Gm6MajbI5RuDfACWhX3KMX6N6CQ1apo1dDB
vTU0PVcVNPPUQ3KVSI6XqwIkLJFEar1n5BezqL5QQh4z6dvHDsW4AQaVCrN1
y8UX3vPCy5eynsj5aiIpDGXealjXtyy2Pt2ApYFQyYH4Fn1VCZMvAOUvN6SQ
UpJ3o7XdByoTq2t5tVdUNwMLZWMixU3lvBp6XlwNzOhRFSSiEuXAQlhrAvKR
iJFDZ2QnEo4HsguZ4bcj1rfCFvYjx4dJbKMDvdy1JlTpMqMKRWWRggq3FAlr
tj3sa66cmVqRetaAi4gqkvtO5XjBViaFAhfLqk2oj+2ghS1s7JVHbmHSVjAK
HuobLLWwZDKSvpChZjjDYylDdTdPeBtjwIuPQMkKHLqqLls8HHFMIq8eDq4i
95R9YpEajyV6El6hhNfNMjoBgjmclvguELzLfAuZbBlvTzJbGtdGALXjRUq9
gXdZgPjIddwIt1+3WzJgUxc4PFUW2NBZvZ5NKZyAlOjmB44yEq/6HTTmQF4Q
fyvQoI1ldGrXNZbxYyKAm8oo5EIygF4z1bAi4+/liI8MyB+bQrw/Jt0WhQhv
EOfSXXCQPnQKxJKR+/nufqyClouD/orIn19x9TWemmozc4G32p+lahJ7aDU4
rq6Z0L1qA3aQa6d9Sq1wrnLPS0iaG50TIyrCd29A/UDsSGZQ3BWIiRzbrsr3
KalkXg5sUAjfUVa5Mja3O5xuSeC0sdTWJwx4Ct2JpF6syb1VzzMHiZ/f1M0B
NEPmjjgHKP61jgl9kuSs8MUPkHvM94WH3gN9SzaEbC2hz9Ng3jlYLQR7uhum
ARI0Qhai+PMc4q7ICIvjBfeDiM9xsoxeMHYpCYqh27QlMMYOdUo0zw/80oOY
LUIQ0V4HrRJ02FlU0arOw2UlNK+mZh+icewaklxRuFY7w1pjkIj7mwI5dar5
835Epz7c+zxcWysRUQI6tPhNF3DmQqjCr1LAGbkcB83gjTJgOIcYm9zPAUYN
yD01lOJLt1073R2670Kyg3cXp/3DayoIN7foQugYXZOzsvp4jPN54TTYqRXT
8S1uxvCrA2zW0+1QvWrZcBV+BMO+mVeE+EBpOwUsU+3sXD54Cpf1N3Tge3YQ
+352+eFZlR8eV9cTp+6mw+uyShsDKlueqtIHQIihBb+bQRgiPQvn/1ebl20m
HDq/4U/ubjxlkdPKAerApaQQyiq2MU/A7zrntx5N4fwO6QL2Pg3q+ghEE1z8
7HCKoA4JuZCg09D1wzhfAWr86GcEgQId9H54k+lpIqOJ69F9eSbaI3ewi/uE
VkZ7nTHEFNm5mydI2lQxIVE3PtcU2Q0oLZthbBph9uWTcvwcF0NeWoKxz9Zc
Rdn8WEN5ozclhBJYRJvEgAr8mIQ+YzDWBRGwY/Zvlj73g0osAAA=

-->

</rfc>
