<?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-02" 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-02"/>
    <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>Origins offering Unprompted Authentication are able to link requests that use
the same key for the Authentication Schemes provided. However, requests are
not linkable across origins if the keys used are specific to the individual
origins 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:
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
Hv8LpIukX9M7AAA=

-->

</rfc>
