<?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 2.6.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-schinazi-httpbis-unprompted-auth-00" category="std" 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-unprompted-auth-00"/>
    <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-unprompted-auth.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-schinazi-httpbis-unprompted-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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

-->

</rfc>
