<?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.25 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-httpbis-unprompted-auth-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title>HTTP Unprompted Authentication</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-unprompted-auth-01"/>
    <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="2023" month="March" 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>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-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/"/>.
        Working Group information can be found at <eref target="https://httpwg.org/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/httpwg/http-extensions/labels/unprompted-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>Unprompted Authentication serves use cases in which a site wants to offer a
service or capability only to "those who know" while all others are given no
indication the service or capability exists. The conceptual model is that of a
"speakeasy". "Knowing" is via an externally-defined mechanism by which keys
are distributed. For example, a company might offer remote employee access to
company services directly via its website using their employee credentials, or
offer access to limited special capabilities for specific employees, while
making discovering (probing for) such capabilities difficult. Members of
less well-defined communities might use more ephemeral keys to acquire access
to geography- or capability-specific resources, as issued by an entity whose
user base is larger than the available resources can support (by having that
entity metering the availability of keys temporally or geographically).
Unprompted Authentication is also useful for cases where a service provider
wants to distribute user-provisioning information for its resources without
exposing the provisioning location to non-users.</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 and Byte
Sequence.</t>
      </section>
    </section>
    <section anchor="compute-proof">
      <name>Computing the Authentication Proof</name>
      <t>This document only defines the Signature and HMAC authentication schemes 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 chosen 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>
      <t>Because the TLS keying material exporter is only secure for authentication when
it is uniquely bound to the TLS session <xref target="RFC7627"/>, the Signature and HMAC
authentication schemes require either one of the following properties:</t>
      <ul spacing="normal">
        <li>The TLS version in use is greater or equal to 1.3 <xref target="TLS"/>.</li>
        <li>The TLS version in use is greater or equal to 1.2 and the Extended
Master Secret extension <xref target="RFC7627"/> has been negotiated.</li>
      </ul>
      <t>Clients <bcp14>MUST NOT</bcp14> use the Signature and HMAC authentication
schemes on connections that do not meet one of the two properties
above. If a server receives a request that uses these authentication
schemes on a connection that meets neither of the above properties,
the server <bcp14>MUST</bcp14> treat the request as malformed.</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 credentials object, as defined in <xref section="11.4" sectionFormat="of" target="HTTP"/>.
Credentials contain an authentication scheme followed by optional authentication
parameters.</t>
    </section>
    <section anchor="authentication-parameters">
      <name>Authentication Parameters</name>
      <t>This specification defines the following authentication parameters, they can be
used by the authentication schemes defined in <xref target="schemes"/>.</t>
      <section anchor="parameter-k">
        <name>The k Parameter</name>
        <t>The <bcp14>OPTIONAL</bcp14> "k" (key ID) parameter is a byte sequence that identifies which key
the user agent wishes to use to authenticate. This can for example be used to
point to an entry into a server-side database of known keys.</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 key 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>Authentication Schemes</name>
      <t>This document defines the "Signature" and "HMAC" HTTP authentication schemes.</t>
      <section anchor="signature">
        <name>Signature</name>
        <t>The "Signature" HTTP Authentication Scheme uses asymmetric cryptography.
User agents possess a key ID and a public/private key pair, and origin servers
maintain a mapping of authorized key IDs to their associated public keys. When
using this scheme, the "k", "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 key ID "basement" authenticating using Ed25519
<xref target="ED25519"/> could produce the following header field (lines are folded
to fit):</t>
        <artwork><![CDATA[
Unprompted-Authentication: Signature k=:YmFzZW1lbnQ=:;s=7;
p=:SW5zZXJ0IHNpZ25hdHVyZSBvZiBub25jZSBoZXJlIHdo
aWNoIHRha2VzIDUxMiBiaXRzIGZvciBFZDI1NTE5IQ==:
]]></artwork>
      </section>
      <section anchor="hmac">
        <name>HMAC</name>
        <t>The "HMAC" HTTP Authentication Scheme uses symmetric cryptography. User
agents possess a key ID and a secret key, and origin servers maintain a mapping
of authorized key IDs to their associated secret key. When using this scheme,
the "k", "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 key ID "basement" 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 k="YmFzZW1lbnQ=";h=6;
p="SW5zZXJ0IEhNQUMgb2Ygbm9uY2UgaGVyZSB3aGljaCB0YWtl
cyA1MTIgYml0cyBmb3IgU0hBLTUxMiEhISEhIQ=="
]]></artwork>
      </section>
      <section anchor="other-http-authentication-schemes">
        <name>Other HTTP Authentication Schemes</name>
        <t>The HTTP Authentication Scheme registry maintained by IANA at
&lt;<eref target="https://www.iana.org/assignments/http-authschemes/http-authschemes.xhtml"/>&gt;
contains entries not defined in this document. Those entries <bcp14>MAY</bcp14> be used with
Unprompted Authentication.</t>
      </section>
    </section>
    <section anchor="server-handling">
      <name>Server Handling</name>
      <t>Servers that wish to introduce resources whose existence cannot be probed need
to ensure that they do not reveal any information about those resources to
unauthenticated clients. In particular, such servers <bcp14>MUST</bcp14> respond to
authentication failures with the exact same response that they would have used
for non-existent resources. For example, this can mean using HTTP status code
404 (Not Found) instead of 401 (Unauthorized). Such authentication failures
can be caused for example by:
* absence of the Unprompted-Authentication field
* failure to parse the Unprompted-Authentication field
* use of Unprompted Authentication with an unknown key ID
* failure to validate the signature or MAC.</t>
      <t>Such servers <bcp14>MUST</bcp14> also ensure that the timing of their request handling does
not leak any information. This can be accomplished by delaying responses to
all non-existent resources such that the timing of the authentication
verification is not observable.</t>
    </section>
    <section anchor="intermediary">
      <name>Intermediary Considerations</name>
      <t>Since the Signature and HMAC HTTP Authentication Schemes leverage TLS keying
material exporters, their output cannot be transparently forwarded by HTTP
intermediaries. HTTP intermediaries that support this specification have two
options:</t>
      <ul spacing="normal">
        <li>The intermediary can validate the authentication received from the client,
then inform the upstream HTTP server of the presence of valid authentication.</li>
        <li>The intermediary can export the nonce (see <xref target="compute-proof"/>}), and forward
it to the upstream HTTP server, then the upstream server performs the
validation.</li>
      </ul>
      <t>The mechanism for the intermediary to communicate this information to the
upstream HTTP server is out of scope for this document.</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 key is used for authentication proofs 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>
      <t>Key material used for authentication in unprompted authentication, whether
symmetric or asymmetric <bcp14>MUST NOT</bcp14> be reused in other protocols. Doing so can
undermine the security guarantees of the authentication.</t>
      <t>Sites offering Unprompted Authentication are able to link requests that use
the same key for the Authentication Schemes provided. However, requests are
not linkable across other sites if the keys used are private to the individual
sites using Unprompted Authentication.</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>HTTP Authentication Schemes Registry</name>
        <t>This document, if approved, requests IANA to add two new entries to the
"HTTP Authentication Schemes" Registry maintained at
&lt;<eref target="https://www.iana.org/assignments/http-authschemes"/>&gt;.
Both entries have the Reference set to this document, and the Notes empty.
The Authentication Scheme Name of the entries are:</t>
        <ul spacing="normal">
          <li>Signature</li>
          <li>HMAC</li>
        </ul>
      </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="RFC7627">
          <front>
            <title>Transport Layer Security (TLS) Session Hash and Extended Master Secret Extension</title>
            <author fullname="K. Bhargavan" initials="K." role="editor" surname="Bhargavan">
              <organization/>
            </author>
            <author fullname="A. Delignat-Lavaud" initials="A." surname="Delignat-Lavaud">
              <organization/>
            </author>
            <author fullname="A. Pironti" initials="A." surname="Pironti">
              <organization/>
            </author>
            <author fullname="A. Langley" initials="A." surname="Langley">
              <organization/>
            </author>
            <author fullname="M. Ray" initials="M." surname="Ray">
              <organization/>
            </author>
            <date month="September" year="2015"/>
            <abstract>
              <t>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>
      </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. Ben Schwartz contributed
ideas to this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA71b6XIbR5L+X09Rhn6M6BAgkqJkCx56zUsmbVGSRdKyNDE/
Ct0FoM0+MH0QghT0s+yz7JPtl5lVfeCgqfHsRkhBoLuOrMz88qpEv99XZVTG
dqhPLy/f6Kt0lmfJrLShPqjKqU3LKDBllKUqzILUJBgX5mZc9iNbjvvTspyN
oqJf1bP6BrP62zuqqEZJVBSYWS5mmHV2cvlCpVUysvlQhaa0QxVkaWHToiqG
uswrq26G+onCbnaS5YuhLspQzSdC1+HZhTK5NUPdO5jNYkdToU0a6rfWxP3L
KLE9dWPTCgtrPcmzaiZT8U0oeJfl11E60T/SOzydZnQaOkIxfPyY/s4ngyyf
PMa7xETxUNdn7M8nP8yf0Eu8M3kwbebFUVEWA3n5+ACvohtbPH5TjUDk4/YC
tGxuZ1kzdRKV02o0CLLE7c5/+vZjCa7Q8R7HZmTj4vESe5VM7IO9le3zmKFe
HnNtF/MsD4kZfV3YoMotfyyrNMWa/Dkxxb8qecw7pxNFc7OcZ+G/1lEK6RwP
9AUOlppPET8UPTg2N1HYfQEeDPWPWTaJrX758oifFWVubTnUO8+2t/VBMpuC
eGvwUL8x+fXcLHhUEJUQ+XlWpaWJUv1rZOf8PLcTcGKojw5kWBZi5+d723tP
3HdMIGW5SiPS2YsS6lPobIydbA414VFWxBkWjtYByeWHCT0l7q8c9nUMIeYr
Rz3vvJGzViYPI5PqN3n2uw3KznY06YeJGzGTAYMoHWc8qsqjliqsH9Ui66eB
Ps0WMRS+RddPWWrKKbZvv2LCjuKsCscxMKPP0mDQput3N2kwlUktRijaN08A
rhuG0enukGfuD/XbF0fPd3aE62FUzGKzEHw93qWBT5YG7q0Z+ESpfr+vzQgq
YcArdfIR4CFIsukxHXujExuAyKhIgHKcApwZWTOCYkE9MFCT6bD4ZEod4V+h
ZhnMDQ3AEWAYgIjWitCNII7wRZeZrKXnU4vXPDTLowmWLWwO8KrcFlmVB9Aj
Xj23/6oiUNClb6DPaFe9vKtbCrtMo5Dos2qMw9aEutWK5eOOFjrNSj2xqc0N
M+UqFTBGn0B8AcWuCkX6XzyC6Zpb6KEsmqXxQgPr14WeA1tYJu0H+WJWZpPc
AG7B8laAgU1sAQPcGeUe64dFFUy1KXQRTaApFRGLs+FVYSbLbGBEFluqZpIe
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
eI//BSghaATSOwAA

-->

</rfc>
