<?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-rfc2629 version 1.6.6 (Ruby 3.0.4) -->
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-duke-quic-protected-initial-04" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.4 -->
  <front>
    <title abbrev="protected-initial">Protected QUIC Initial Packets</title>
    <seriesInfo name="Internet-Draft" value="draft-duke-quic-protected-initial-04"/>
    <author initials="M." surname="Duke" fullname="Martin Duke">
      <organization>Google LLC</organization>
      <address>
        <email>martin.h.duke@gmail.com</email>
      </address>
    </author>
    <author initials="D." surname="Schinazi" fullname="David Schinazi">
      <organization>Google LLC</organization>
      <address>
        <postal>
          <street>1600 Amphitheatre Parkway</street>
          <city>Mountain View, California 94043</city>
          <country>United States of America</country>
        </postal>
        <email>dschinazi.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2022" month="April" day="27"/>
    <area>Transport</area>
    <workgroup>quic</workgroup>
    <abstract>
      <t>QUIC encrypts its Initial Packets using keys derived from well-known constants,
meaning that observers can inspect the contents of these packets and
successfully spoof them. This document proposes a new version of QUIC that
encrypts Initial Packets more securely by leveraging a Public Key distributed
via the Domain Name System (DNS) or other out-of-band system.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    mailing list (quic@ietf.org),
  which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/quic/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://github.com/martinduke/quic-version-aliasing"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>DISCLAIMER: This draft is a preliminary proposal with insufficient security
analysis. It should not be used in production systems.</t>
      <t>The QUIC Initial Packet <xref target="RFC9000"/> is encrypted using a key derived from the
Destination Connection ID in the packet cleartext and a well-known salt (see
Section 5.2 of <xref target="RFC9001"/>). Section 7 of that draft describes security
vulnerabilities resulting from the resulting lack of authentication.</t>
      <t>This also has privacy implications, as observers can decrypt the packet and
inspect the contents, which contain the TLS Client Hello and Server Hello
Messages (<xref target="RFC8446"/>). The former contains QUIC Transport Parameters, which
reveal even more information about the traffic.</t>
      <t>Furthermore, packets vulnerable to deep inspection create an ossification
vector. Intermediaries that expect the contents of these messages to match a
certain format and template might drop packets that do not, preventing the use
of new protocol extensions or improved security protocols.</t>
      <t>This document proposes a new version of QUIC where the client obtains a public
key generated by the server and uses it to encrypt a shared secret, sent in the
Initial packet header, that both endpoints can then use to protect Initial
packets.</t>
      <t>This mechanism leverages the public key that would be distributed via DNS (or
other out-of-band mechanism) to support Encrypted Client Hello
<xref target="ECHO"/>. That design uses Hybrid Public Key Exchange (HPKE)
<xref target="HPKE"/> to authenticate some HPKE configuration
information and the "outer client hello" that is in plaintext, while encrypting
the "inner client hello" that contains privacy-sensitive information. This
document uses the widespread configuration that will exist if ECHO is widely
deployed, but only sends the subset of information necessary to seed the QUIC
key generation process.</t>
      <section anchor="relationship-to-ech-and-version-aliasing">
        <name>Relationship to ECH and Version Aliasing</name>
        <t>Encrypted Client Hello <xref target="ECHO"/> and QUIC Version Aliasing
<xref target="VERSION-ALIASING"/> also exist in the solution
space of concealing parts of the Initial packet exchange from observers. The
following table summarizes the advantages and disadvantages of each.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Property</th>
              <th align="center">ECH</th>
              <th align="center">Protected Initials</th>
              <th align="center">Version Aliasing</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Fields Protected</td>
              <td align="center">Some of Client Hello</td>
              <td align="center">All Initial Payloads</td>
              <td align="center">All Initial Payloads</td>
            </tr>
            <tr>
              <td align="left">Delay when server loses its keys</td>
              <td align="center">1 RTT</td>
              <td align="center">2 RTT</td>
              <td align="center">2 RTT</td>
            </tr>
            <tr>
              <td align="left">Works with TLS over TCP</td>
              <td align="center">Yes</td>
              <td align="center">No</td>
              <td align="center">No</td>
            </tr>
            <tr>
              <td align="left">First-connection protection</td>
              <td align="center">Yes</td>
              <td align="center">Yes</td>
              <td align="center">No</td>
            </tr>
            <tr>
              <td align="left">Prevents Initial packet injection attacks</td>
              <td align="center">No</td>
              <td align="center">Yes</td>
              <td align="center">Yes</td>
            </tr>
            <tr>
              <td align="left">Symmetric Encryption Only</td>
              <td align="center">No</td>
              <td align="center">No</td>
              <td align="center">Yes</td>
            </tr>
            <tr>
              <td align="left">Greases the Version Field</td>
              <td align="center">No</td>
              <td align="center">No</td>
              <td align="center">Yes</td>
            </tr>
            <tr>
              <td align="left">Prevents Retry injection attacks</td>
              <td align="center">No</td>
              <td align="center">No</td>
              <td align="center">Yes</td>
            </tr>
            <tr>
              <td align="left">No trial decryption</td>
              <td align="center">No</td>
              <td align="center">No</td>
              <td align="center">Yes</td>
            </tr>
          </tbody>
        </table>
        <t>The more complex properties in the table are discussed in
<xref target="security-considerations"/>.</t>
        <t>Both ECH and Protected Initials are complimentary with Version Aliasing: they
provide a computationally expensive way to protect parts of the Initial packet
during the first connection between client and server, after which Version
Aliasing can protect future exchanges with several additional desirable
properties.</t>
      </section>
    </section>
    <section anchor="conventions">
      <name>Conventions</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
interpreted as described in RFC 2119 <xref target="RFC2119"/>.</t>
    </section>
    <section anchor="differences-with-quic-version-1">
      <name>Differences with QUIC Version 1</name>
      <t>The version of QUIC described in this specification is identical to QUIC version
1 <xref target="RFC9000"/> except where described in this document.</t>
      <section anchor="version-number">
        <name>Version Number</name>
        <t>The version field in long headers is TBD. Note: for interoperability
exercises, use the provisional value 0xff454900.</t>
      </section>
      <section anchor="key-configuration">
        <name>Key Configuration</name>
        <t>The client obtains the Encrypted ClientHello Configuration (ECHConfig) described
in Section 4 of <xref target="ECHO"/>, which provides the context that allows protection of
Initial packets. The ECHConfig is available via a DNS record or other out-of-
band system.</t>
      </section>
      <section anchor="labels">
        <name>Key Derivation Labels</name>
        <t>The labels used to derive keying material in <xref target="RFC9001"/> change from "quic key",
"quic iv", "quic hp", and "quic ku" to "quicpi key", "quicpi iv", "quicpi hp",
 and "quicpi ku", respectively.</t>
      </section>
      <section anchor="initial-packet-header">
        <name>Initial Packet Header</name>
        <t>The figure below is presented in the format from <xref target="RFC9000"/>, and adds a
variable-length Encryption Context preceded by a length field:</t>
        <artwork><![CDATA[
Initial Packet {
   Header From (1) = 1,
   Fixed Big (1) = 1,
   Long Packet Type (2) = 0,
   Reserved Bits (2),
   Packet Number Length (2),
   Version (32),
   Destination Connection ID Length (8),
   Destination Connection ID (0..160),
   Source Connection ID Length (8),
   Source Connection ID (0..160),
   Token Length (i),
   Token (..),
   Encryption Context Length (8),
   Encryption Context (..),
   Length (i),
   Packet Number (8..32),
}
]]></artwork>
        <t>Encryption Context Length: A variable-length integer specifying the length of
the encryption context, in bytes. Servers MUST set this field to zero; a client
that receives a non-zero length MUST either discard the packet or generate a
connection error of type PROTOCOL_VIOLATION.</t>
        <t>Clients MUST include a nonzero Encryption Context Length in all Initial packets,
unless executing fallback procedures (see <xref target="fallback"/>).</t>
        <t>When the client includes a non-zero-length Encryption Context, it MUST include
an initial_encryption_context in its Client Hello, so that this header field
is included in the TLS handshake transcript.</t>
        <section anchor="encryption-context">
          <name>Encryption Context</name>
          <t>The encryption context, if nonzero length, has the following format:</t>
          <artwork><![CDATA[
Encryption Context {
    Config ID (8),
    SCKDF (16),
    SCAEADID (16),
    Encapsulated Secret (..),
}
]]></artwork>
          <t>Config ID: An 8-bit integer identifying the configuration parameters, obtained
from the ECHConfig. This ID implicitly identifies the public key, Key
Encapsulation Mechanism, and the set of symmetric suites from which the
following fields are selected.</t>
          <t>SCKDF: Symmetric Cipher Key Derivation Function. The client selects this from
the cipher suites listed in the ECHConfig. This is the cipher used to encrypt
the Initial Packet. The values are listed in Section 7.2 of <xref target="HPKE"/>. All
endpoints MUST support HKDF-SHA256 (0x0001), which is used for QUIC Version 1
Initial packets.</t>
          <t>SCAEADID: Symmetric Cipher Key Derivation Function. The client selects this
from the cipher suites listed in the ECHConfig. This is the cipher used to
encrypt the Initial Packet. The values are listed in Section 7.3 of <xref target="HPKE"/>.
All endpoints MUST support AES-128-GCM (0x0001), which is used for QUIC Version
1 Initial packets.</t>
          <t>The Encapsulated Secret is HPKE encapsulated. Its length is inferred from the
Encryption Context Length field.</t>
        </section>
      </section>
      <section anchor="client-packet-protection-procedure">
        <name>Client Packet Protection Procedure</name>
        <t>An client extracts the public key pkR and uses it to generate a shared_secret:</t>
        <artwork><![CDATA[
pkR = Deserialize(ECHConfig.contents.public_key)
shared_secret, enc = Encap(pkR)
initial_secret = HKDF-Extract(shared_secret,
        client_dst_connection_id || ECHConfig)
]]></artwork>
        <t>enc is the Encapsulated Secret, and is written into that subfield of the
Encryption Context Field.</t>
        <t>The initial_secret above is used to generate client_initial_secret and
server_initial_secret as described in Section 5.2 of <xref target="RFC9001"/>.</t>
        <t>When applying header protection, the Context Length and Encryption Context are
not Protected.</t>
        <t>This derivation is performed once per connection. Subsequent Initial Packets
use the same keys and the same offset to the packet number, regardless of
additional Encryption Context fields or changed connection IDs.</t>
      </section>
      <section anchor="server-procedure">
        <name>Server Packet Protection Procedure</name>
        <t>The server reads the Config ID and Encapsulated Secret (enc) from the Initial
Packet. It looks up its private key (skR) associated with the Config ID.</t>
        <t>Otherwise, the server generates the Initial secrets:</t>
        <artwork><![CDATA[
shared_secret = Decap(enc, skR)
initial_secret = HKDF-Extract(shared_secret,
        client_dst_connection_id || ECHConfig)
]]></artwork>
        <t>The remainder is identical to the client procedure. All server-generated
Initial packets use the keys generated in this process.</t>
        <t>If packet decryption fails, see <xref target="fallback"/>.</t>
        <t>The server terminates the connection with a TRANSPORT_PARAMETER_ERROR under the
following conditions:</t>
        <ul spacing="normal">
          <li>There is a zero-length Encryption Context field, but the
initial_encryption_context transport parameter is present</li>
          <li>There is a non-zero-length Encryption Context field, but the
initial_encryption_context transport parameter is absent or does not match the
header.</li>
        </ul>
        <t>However, see <xref target="intermediaries"/> for exceptions to this transport parameter
processing rule.</t>
      </section>
      <section anchor="retry">
        <name>Retry Integrity Tag</name>
        <t>The Retry packet is identical to QUIC version 1, except that the key and nonce
used for the Retry Integrity Tag (Sec 5.8 of <xref target="RFC9001"/> change to:</t>
        <artwork><![CDATA[
secret = 0xe453a2e22377289f08a4458ee1c9a90a4e39696e026372ffc33190b8de5a0123
key = 0xbe0c690b9f66575a1d766b54e368c84e
nonce = 0x461599d35d632bf2239825bb
]]></artwork>
        <t>This key and nonce are also used in Fallback packets (<xref target="fallback-packet"/>).</t>
      </section>
      <section anchor="fallback">
        <name>Fallback</name>
        <t>If decryption fails, the client may not have the server's correct configuration.
In this case, the server replies with a Fallback packet (see
<xref target="fallback-packet"/>), and discards the Initial.</t>
        <t>The client checks the Integrity Tag in the packet against the received Fallback
Packet and its own record of the Initial Packet. If they do not match, the
packet may have been corrupted, and the client SHOULD treat the packet as lost.
If they do match, the client MUST assume that it does not have the correct
ECHConfig.</t>
        <t>When it has the incorrect config, the client composes a new Client Hello. It
MUST include the public_key_failed transport parameter with the Config ID and
public key it attempted to use. It MUST use an Encryption Context Length of
zero, and encrypt it with keys derived from the "fallback salt"
0xbd62319ad6eeb17a9ed0d3bf75e37e4a8e7e6ac7, instead of the shared secret that
the server cannot decode. The Client Hello also MUST include any Retry Token the
previous Initial contained and MAY include a token from a NEW_TOKEN frame.</t>
        <t>This new Initial packet is part of the same connection and MUST use the same
Connection IDs and packet number space.</t>
        <t>Note that the fallback salt does not provide confidentiality to the client, and
the client SHOULD NOT include privacy-sensitive information there. See
<xref target="downgrade"/> for further discussion of this.</t>
        <t>A server interprets a client Initial with a zero-length Encryption Context as
an Initial encrypted with keys derived from the fallback salt and decrypts it
accordingly.</t>
        <t>The server checks the Config ID and public key from the public_key_failed
transport parameter to see if it should successfully process a Protected Initial
with these parameters. If it would have, it MUST terminate the connection with
an INVALID_PROTECTED_INITIAL_DOWNGRADE error to indicate that there has been an
attack.</t>
        <t>If the server would not have successfully decoded the packet with those
parameters, it MUST send its own public_key_failed transport parameter to
acknowledge the parameter was successfully processed. It MAY also send a
ECHConfig transport parameter to allow use of Protected Initials in subsequent
connections, a Version Aliasing transport parameter (see <xref target="VERSION-ALIASING"/>)
to enable a different means of Initial Protection, both, or neither.</t>
        <t>If the client does not receive a public_key_failed transport parameter in
response to sending a public_key_failed transport parameter, it MUST terminate
the connection with a TRANSPORT_PARAMETER_ERROR.</t>
        <t>The client MUST NOT include the original client hello in its TLS transcript
hash for key computation, as the server has no access to this message. However,
the client hello is an input to the Integrity tag in the public_key_failed
transport parameter, which will be in the transcript.</t>
        <t>If any part of the client hello changes (e.g the SNI or ALPN), the client MUST NOT
include a resumption ticket or send 0-RTT packets.</t>
      </section>
      <section anchor="fallback-packet">
        <name>The Fallback Packet</name>
        <t>The Fallback packet uses the 0x1 packet type code, which it shares with 0-RTT.
Since 0-RTT is only sent by clients and Fallback is only sent by servers, these
two types are distinguished by the endpoint's role in the handshake.</t>
        <t>The Fallback packet has the following format:</t>
        <artwork><![CDATA[
Fallback Packet {
  Header Form (1) = 1,
  Fixed Bit (1) = 1,
  Long Packet Type (2) = 1,
  Unused (4),
  Version (32),
  Destination Connection ID Length (8),
  Destination Connection ID (0..160),
  Source Connection ID Length (8),
  Source Connection ID (0..160),
  Integrity Tag (128),
}
]]></artwork>
        <t>The server computes the Integrity Tag by prepending the entire UDP payload that
contained the client Initial to the Fallback packet contents (minus the tag
itself, of course) to form a pseudo-packet. The server then computes the
Integrity Tag as the output of AEAD_AES_128_GCM with the key and nonce from
<xref target="retry"/>, no plaintext, and the pseudo-packet as the Additional Data. This
thus confirms the integrity of both packets in the exchange.</t>
      </section>
      <section anchor="new-transport-parameters">
        <name>New Transport Parameters</name>
        <section anchor="publickeyfailed">
          <name>public_key_failed</name>
          <t>The public_key_failed transport parameter allows detection of an attacker
injecting messages to force use of the fallback salt. For details on use,
see <xref target="fallback"/>.</t>
          <t>Its provisional type is 0x706b66.</t>
          <t>When sent by a client, the content of the transport parameter is as follows:</t>
          <artwork><![CDATA[
{
    Integrity Tag (128),
    Config ID (8),
    Public Key (..),
}
]]></artwork>
          <t>The Integrity Tag is copied from the Fallback packet.</t>
          <t>The other fields are populated using the ECHConfig that the client attempted to
use.  The length of the Public Key is inferred from the length field of the
transport parameter.</t>
          <t>When sent by a server, the transport parameter has no value field.</t>
          <t>Endpoints MUST respond to a malformed transport parameter by closing the
connection with a TRANSPORT_PARAMETER_ERROR.</t>
          <t>Note that this transport parameter is always sent as a result of a fallback from
a Protected Initial, and therefore with a zero-length Encryption Context in the
packet header. Therefore, if received with non-zero-length Encryption Context,
the receiving endpoint MUST terminate the connection with a
TRANSPORT_PARAMETER_ERROR.</t>
        </section>
        <section anchor="echconfig">
          <name>ECHConfig</name>
          <t>The ECHConfig transport parameter allows servers to directly provide clients a
valid configuration.</t>
          <t>Its provisional type is 0x454348.</t>
          <t>Its format is equivalent to ECHConfigList, as defined in Section 4 of <xref target="ECHO"/>.</t>
          <t>If this transport parameter does not match this format, is received by a server,
or is received in a connection where the client's most recent Initial had a
non-zero-length Encryption Context, the receiver MUST terminate the connection
with a TRANSPORT_PARAMETER_ERROR.</t>
        </section>
        <section anchor="initialencryptioncontext">
          <name>initial_encryption_context</name>
          <t>The format of this transport parameter is identical to the Encryption Context
described in <xref target="encryption-context"/>.</t>
          <t>Its provisional type is 0x696563.</t>
        </section>
      </section>
    </section>
    <section anchor="intermediaries">
      <name>Intermediaries</name>
      <t>In the topology proposed in Section 3.1 of <xref target="ECHO"/>, where a client-facing
server has its own public name and potentially fronts a number of independent
domains, only the client-facing server has the private keys. Thus, it modifies
incoming Initial Packets before forwarding to the back-end server.</t>
      <t>A common use case of this topology is a load balancer fronting multiple domains
using the same IP address, which makes routing decisions based on the SNI in the
Client Hello.</t>
      <section anchor="client-facing-server">
        <name>Client-Facing Server</name>
        <t>The client-facing server is responsible for verifying the Initial packet is
decryptable, sending a Fallback packet (and dropping the Initial) if it is not,
and otherwise forwarding the packet encrypted with a different key.</t>
        <t>If an incoming Initial packet is not decryptable, the client-facing server
sends a Fallback packet and drops the Initial.</t>
        <t>If an incoming client Initial has a non-zero length Encryption Context field,
the client-facing server MUST delete the Encryption Context field. When
forwarding to the back-end server, it encrypts the plaintext version of this
modified packet with keys derived from the fallback salt. Thus, between
client-facing server and back-end server the packet is inspectable by observers.</t>
        <t>Similarly, if the client is using the shared secret, the client-facing server
MUST decrypt server Initial packets encrypted with keys derived from the
fallback secret, and re-encrypt them with keys derived from the shared secret.</t>
        <t>The client-facing server MUST enforce correct use of the
initial_encryption_context parameter, as described in <xref target="server-procedure"/>, and
terminate the connection if necessary.</t>
        <t>Non-Initial packets pass unmodified through the client-facing server. Note that
client-facing servers cannot inspect any packet payloads except for Initial
packets.</t>
      </section>
      <section anchor="back-end-server">
        <name>Back-End Server</name>
        <t>Back-end servers MUST have an up-to-date copy of the ECHConfigList the client-
facing server is using, though it need not hold the private key, in order to
properly process and generate the relevant transport parameters.</t>
        <t>Back-end servers MUST NOT take any action based on the presence or contents of
the initial_encryption_context transport parameter, as the client-facing server
has likely stripped the Encryption Context out of the header.</t>
        <t>In all other respects, they operate as Protected Initial servers.</t>
      </section>
    </section>
    <section anchor="applicability">
      <name>Applicability</name>
      <t>This version of QUIC provides no change from QUIC version 1 relating to the
capabilities available to applications. Therefore, all Application Layer
Protocol Negotiation (ALPN) (<xref target="RFC7301"/>) codepoints specified to operate over
QUICv1 can also operate over this version of QUIC.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security and Privacy Considerations</name>
      <t>Sections 10.2, 10.3, 10.4, and 10.6 of <xref target="ECHO"/> apply to QUIC Protected Initials
as well.</t>
      <t>Section 7.8 of <xref target="VERSION-ALIASING"/> is also applicable.</t>
      <section anchor="downgrade">
        <name>Forcing Downgrade</name>
        <t>An attacker attempts to force a client to send an Initial that uses unprotected
Initials by injecting a Version Negotiation packet (which implies the server no
longer supports Protected Initials) or a Fallback packet (which implies the
server has a new cryptographic context).</t>
        <t>The weak form of this attack observes the Initial and injects the Version
Negotiation or Fallback packet, but cannot drop the Initial. To counteract this,
a client SHOULD NOT respond to these packets until they have waited for Probe
Timeout (PTO) for a valid server Initial to arrive.</t>
        <t>The strong form features an attacker that can drop Initial packets. In this
case, the client can either abandon the connection attempt or connect with a
unprotected Initial: using the fallback salt in response to a Fallback packet,
or a different version in response to Version Negotiation.</t>
        <t>If connecting with an unprotected Initial, the client MAY alter it to sanitize
sensitive information and obtain either a correct ECHConfig or an aliased
version before proceeding with its true connection attempt. However, the client
Initial MUST lead to the authentication of a domain name the client trusts to
provide accurate cryptographic information (usually the public_name from the
ECHConfig). Advice for the Outer ClientHello in Section 10.5 of <xref target="ECHO"/> applies
here.</t>
        <t>Furthermore, if it received a Fallback packet, the client sends a
public_key_failed transport parameter to detect the downgrade attack, and the
server will terminate the connection if the Fallback packet was an attack.</t>
        <t>If the client received a Version Negotiation packet, it MUST implement a
downgrade detection mechanism such as <xref target="I-D.ietf-quic-version-negotiation"/> or
abandon the connection attempt. If it subsequently detects a downgrade
detection, or discovers that the server does not support the same mechanism, it
terminates the connection attempt.</t>
        <t>Note that ECH is able to retrieve an up-to-date cryptographic context in 1 RTT,
because the client hello has enough plaintext information to begin a handshake
with the public_name. Protected Initials require reconnection with the public
name, incurring a 2 RTT penalty to achieve the same result.</t>
      </section>
      <section anchor="initial-packet-injection">
        <name>Initial Packet Injection</name>
        <t>QUIC version 1 handshakes are vulnerable to DoS from observers for the short
interval that endpoints keep Initial keys (usually ~1.5 RTTS), since Initial
Packets are not authenticated. With version aliasing, attackers do not have
the necessary keys to launch such an attack.</t>
        <t>QUIC version 1 can use a fixed symmetric cipher for its Initial Packets because
the encryption is not providing true security. As this design aspires to
stonger guarantees, the Encryption Context field of the Initial header provides
the codepoints to enable use of other symmetric ciphers should AES-128-GCM be
compromised in the future. This is to provide cryptographic agility in
accordance with <xref target="RFC7696"/>.</t>
      </section>
      <section anchor="retry-injection">
        <name>Retry Injection</name>
        <t>This version of QUIC does not improve the security of Retry packets with
respect to QUIC version 1. The Retry Integrity Tag uses a well-known key and
relies on data in the Initial that triggered the Retry. It therefore protects
against transmission errors and injection of Retry packets by off-path attackers
that cannot observe the Initial. To detect Retry packets injected by observers,
it relies on the subsequent exchange of transport parameters.</t>
        <t>An attacker that consistently injects Retry packets in front of a server that
also consistently sends Retry can result in a Denial of Service, as clients
cannot accept two Retries in the same connection.</t>
        <t>An alternate design would use the shared secret derived from the Client Initial
Packet to generate keys for the Retry Integrity Tag, which would allow the
client to immediately discard Retries injected by other parties. Unfortunately,
this would require servers to perform an asymmetric crypto operation to send a
Retry packet, when in a state where it is likely computationally limited.</t>
        <t>It is possible to enhance the security of Retry by assuming this added
computational cost. Such a design could also eliminate the complexity associated
with adding an arbitrary value to the Packet Length field. The purpose of this
addition is to avoid trial decryption to verify the configuration is correct,
but this cost is negligible compared to extracting the shared secret.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="quic-version-registry">
        <name>QUIC Version Registry</name>
        <t>This document requests that IANA add the following entry to the QUIC version
registry:</t>
        <t>Value: TBD</t>
        <t>Status: permanent</t>
        <t>Specification: This document</t>
        <t>Change Controller: IETF</t>
        <t>Contact: QUIC WG</t>
      </section>
      <section anchor="quic-transport-parameter-registry">
        <name>QUIC Transport Parameter Registry</name>
        <t>This document requests that IANA add the following three entries to the QUIC
Transport Parameters registry:</t>
        <table>
          <thead>
            <tr>
              <th align="center">Value</th>
              <th align="center">Parameter Name</th>
              <th align="center">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center">TBD</td>
              <td align="center">public_key_failed</td>
              <td align="center">This document</td>
            </tr>
            <tr>
              <td align="center">TBD</td>
              <td align="center">ECHConfig</td>
              <td align="center">This document</td>
            </tr>
            <tr>
              <td align="center">TBD</td>
              <td align="center">initial_encryption_context</td>
              <td align="center">This document</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="quic-transport-error-codes-registry">
        <name>QUIC Transport Error Codes Registry</name>
        <t>This document requests that IANA add the following entry to the QUIC Transport
Error Codes registry:</t>
        <t>Value: TBD</t>
        <t>Code: INVALID_PROTECTED_INITIAL_DOWNGRADE</t>
        <t>Description: Attacker is forcing insecure Initial</t>
        <t>Specification: This document</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol.  QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances.  Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC9001">
          <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="ECHO">
          <front>
            <title>TLS Encrypted Client Hello</title>
            <author fullname="Eric Rescorla">
              <organization>RTFM, Inc.</organization>
            </author>
            <author fullname="Kazuho Oku">
              <organization>Fastly</organization>
            </author>
            <author fullname="Nick Sullivan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Christopher A. Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="13" month="February" year="2022"/>
            <abstract>
              <t>   This document describes a mechanism in Transport Layer Security (TLS)
   for encrypting a ClientHello message under a server public key.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/tlswg/draft-ietf-tls-esni
   (https://github.com/tlswg/draft-ietf-tls-esni).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-esni-14"/>
        </reference>
        <reference anchor="HPKE">
          <front>
            <title>Hybrid Public Key Encryption</title>
            <author fullname="Richard L. Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="Karthik Bhargavan">
              <organization>Inria</organization>
            </author>
            <author fullname="Benjamin Lipp">
              <organization>Inria</organization>
            </author>
            <author fullname="Christopher A. Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="2" month="September" year="2021"/>
            <abstract>
              <t>This document describes a scheme for hybrid public key encryption (HPKE). This scheme provides a variant of public key encryption of arbitrary-sized plaintexts for a recipient public key. It also includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE works for any combination of an asymmetric KEM, key derivation function (KDF), and authenticated encryption with additional data (AEAD) encryption function. Some authenticated variants may not be supported by all KEMs. We provide instantiations of the scheme using widely used and efficient primitives, such as Elliptic Curve Diffie-Hellman (ECDH) key agreement, HMAC-based key derivation function (HKDF), and SHA2.

 This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-hpke-12"/>
        </reference>
        <reference anchor="I-D.ietf-quic-version-negotiation">
          <front>
            <title>Compatible Version Negotiation for QUIC</title>
            <author fullname="David Schinazi">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Eric Rescorla">
              <organization>Mozilla</organization>
            </author>
            <date day="5" month="April" year="2022"/>
            <abstract>
              <t>   QUIC does not provide a complete version negotiation mechanism but
   instead only provides a way for the server to indicate that the
   version the client chose is unacceptable.  This document describes a
   version negotiation mechanism that allows a client and server to
   select a mutually supported version.  Optionally, if the client's
   chosen version and the negotiated version share a compatible first
   flight format, the negotiation can take place without incurring an
   extra round trip.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-version-negotiation-07"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC8446">
          <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="VERSION-ALIASING">
          <front>
            <title>QUIC Version Aliasing</title>
            <author fullname="Martin Duke">
              <organization>F5 Networks, Inc.</organization>
            </author>
            <date day="25" month="October" year="2021"/>
            <abstract>
              <t>   The QUIC transport protocol preserves its future extensibility partly
   by specifying its version number.  There will be a relatively small
   number of published version numbers for the foreseeable future.  This
   document provides a method for clients and servers to negotiate the
   use of other version numbers in subsequent connections and encrypts
   Initial Packets using secret keys instead of standard ones.  If a
   sizeable subset of QUIC connections use this mechanism, this should
   prevent middlebox ossification around the current set of published
   version numbers and the contents of QUIC Initial packets, as well as
   improving the protocol's privacy properties.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-duke-quic-version-aliasing-07"/>
        </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="RFC7301">
          <front>
            <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
            <author fullname="S. Friedl" initials="S." surname="Friedl">
              <organization/>
            </author>
            <author fullname="A. Popov" initials="A." surname="Popov">
              <organization/>
            </author>
            <author fullname="A. Langley" initials="A." surname="Langley">
              <organization/>
            </author>
            <author fullname="E. Stephan" initials="E." surname="Stephan">
              <organization/>
            </author>
            <date month="July" year="2014"/>
            <abstract>
              <t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7301"/>
          <seriesInfo name="DOI" value="10.17487/RFC7301"/>
        </reference>
        <reference anchor="RFC7696">
          <front>
            <title>Guidelines for Cryptographic Algorithm Agility and Selecting Mandatory-to-Implement Algorithms</title>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <date month="November" year="2015"/>
            <abstract>
              <t>Many IETF protocols use cryptographic algorithms to provide confidentiality, integrity, authentication, or digital signature.  Communicating peers must support a common set of cryptographic algorithms for these mechanisms to work properly.  This memo provides guidelines to ensure that protocols have the ability to migrate from one mandatory-to-implement algorithm suite to another over time.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="201"/>
          <seriesInfo name="RFC" value="7696"/>
          <seriesInfo name="DOI" value="10.17487/RFC7696"/>
        </reference>
      </references>
    </references>
    <section anchor="change-log">
      <name>Change Log</name>
      <ul empty="true">
        <li>
          <t><strong>RFC Editor's Note:</strong> Please remove this section prior to
publication of a final version of this document.</t>
        </li>
      </ul>
      <section anchor="since-draft-duke-quic-protected-initials-01">
        <name>since draft-duke-quic-protected-initials-01</name>
        <ul spacing="normal">
          <li>Redesigned fallback again without Version Negotiation</li>
          <li>Added the initial_encryption_context transport parameter</li>
        </ul>
      </section>
      <section anchor="since-draft-duke-quic-protected-initials-00">
        <name>since draft-duke-quic-protected-initials-00</name>
        <ul spacing="normal">
          <li>Additional text comparing ECH, Version Aliasing</li>
          <li>Adapted to foreground the split-mode use case</li>
          <li>Clarified server initials are encrypted</li>
          <li>Retry keys are no longer generated from the shared secret</li>
          <li>Complete Rewrite of Fallback</li>
          <li>New transport parameters</li>
          <li>Added crypto agility</li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
Afs9v7JkYAAA

-->

</rfc>
