<?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.29 (Ruby 3.1.4) -->
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-duke-quic-version-aliasing-10" category="exp" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.1 -->
  <front>
    <title abbrev="QUIC Version Aliasing">QUIC Version Aliasing</title>
    <seriesInfo name="Internet-Draft" value="draft-duke-quic-version-aliasing-10"/>
    <author initials="M." surname="Duke" fullname="Martin Duke">
      <organization>Google</organization>
      <address>
        <email>martin.h.duke@gmail.com</email>
      </address>
    </author>
    <date/>
    <area>Transport</area>
    <workgroup>QUIC</workgroup>
    <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>
    <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>The QUIC version number is critical to future extensibility of the protocol
(<xref target="RFC9000"/>). Past experience with other protocols, such as TLS1.3
<xref target="RFC8446"/>, shows that middleboxes might attempt to enforce that QUIC packets
use versions known at the time the middlebox was implemented. This deters
deployment of experimental and standard versions on the internet.</t>
      <t>Each version of QUIC has a "salt" <xref target="RFC9001"/> that is used to derive the keys
used to encrypt Initial packets. As each salt is published in a standards
document, any observer can decrypt these packets and inspect the contents,
including a TLS Client Hello. A subsidiary mechanism like Encrypted Client Hello
<xref target="ECHO"/> might protect some of the TLS fields inside a TLS
Client Hello.</t>
      <t>This document proposes "QUIC Version Aliasing," a standard way for servers to
advertise the availability of other versions inside the cryptographic
protection of a QUIC handshake. These versions are syntactically identical to
the QUIC version in which the communication takes place, but use a different
salt. In subsequent communications, the client uses the new version number and
encrypts its Initial packets with a key derived from the provided salt. These
version numbers and salts are unique to the client.</t>
      <t>If a large subset of QUIC traffic adopts his technique, middleboxes will be
unable to enforce particular version numbers or policy based on Client Hello
contents without incurring unacceptable penalties on users. This would
simultaneously protect the protocol against ossification and improve its privacy
properties.</t>
      <section anchor="terminology">
        <name>Terminology</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>
        <t>In this document, these words will appear with that interpretation only when in
ALL CAPS.  Lower case uses of these words are not to be interpreted as carrying
significance described in RFC 2119.</t>
        <t>A "standard version" is a QUIC version that would be advertised in a QUIC
version negotiation and conforms to a specification. Any aliased version
corresponds to a standard version in all its formats and behaviors, except for
the version number field in long headers. QUIC versions require certain
properties to support use as a standard version. QUIC version 1 (<xref target="RFC9000"/>)
and version 2 (<xref target="I-D.draft-ietf-quic-v2"/>) both have the necessary properties.
Future QUIC version specifications can specify their suitability for this
purpose.</t>
        <t>An "aliased version" is a version with a number generated in accordance with
this document. Except when specified below, it conforms entirely to the
specification of the standard version.</t>
      </section>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>When they instantiate a connection, servers select an alternate 32-bit version
number, and optionally a server connection ID, for the next connection at
random and securely derive parameters from those values using a repeatable
process. Among those is a "salt" that can be used to encrypt Initial packets
instead of the well-known salt provided in the specification. A bitmask
parameter serves to "grease" parts of the QUIC public header that are currently
unencrypted. Servers communicate these parameters using a transport parameter.</t>
      <t>If a client next connects to that server within the indicated expiration time,
it uses the provided version number and connection ID, and encrypts its Initial
Packets using a key derived from the provided salt. It uses the bitmask to
grease certain public header fields. In all other respects, the packet is
identical to an Initial packet from a standard version indicated in the
transport parameter.</t>
      <t>When a server receives a long header packet with an aliased version, it uses the
version number and destination connection ID to recover the parameters, which
allows it to extract the header values and decrypt the packet.</t>
      <t>When generating parameters, servers can choose between doing so randomly and
storing the mapping, or using a cryptographic process to transform the aliased
version number and token extension into the salt. The two options provide a
simple tradeoff between computational complexity and storage requirements.</t>
      <t>All long header packets use the aliased version and apply the greasing
parameters. Short header packets are in every respect unchanged from the
standard version.</t>
      <section anchor="relationship-to-ech-and-quic-protected-initials">
        <name>Relationship to ECH and QUIC Protected Initials</name>
        <t>The TLS Encrypted Client Hello <xref target="ECHO"/> shares some goals with
this document. It encodes an "inner" encrypted Client Hello in a TLS extension
in an "outer" Client Hello. The encryption uses asymmetric keys with the
server's public key distributed via an out-of-band mechanism like DNS. The
inner Client Hello contains any privacy-sensitive information and is only
readable with the server's private key.</t>
        <t>Significantly, unlike QUIC Version Aliasing, ECH can operate on the first
connection between a client and server. However, from the second connection
QUIC version aliasing provides additional benefits. It:</t>
        <ul spacing="normal">
          <li>greases QUIC header fields and packet formats;</li>
          <li>protects all of the TLS Client Hello and Server Hello;</li>
          <li>mitigates Retry injection attacks;</li>
          <li>does not require a mechanism to distribute the public key;</li>
          <li>uses smaller Client Hello messages, which might allow a larger 0RTT packet
in the same datagram; and</li>
          <li>relies on computationally cheap symmetric encryption.</li>
        </ul>
        <t>Note that in the event of the server losing state, the two approaches have a
similar fallback: ECH uses information in the outer Client Hello, and Version
Aliasing requires a connection using a standard version. In either case,
maintaining privacy requires the outer or standard version Client Hello to
exclude privacy-sensitive information. However, ECH will allow confidential
transmission of data in 1 RTT, while Version Aliasing requires 2 RTTs to resume.
This mechanism is also relevant to mitigation of downgrade attacks (see
<xref target="downgrade"/>).</t>
        <t>Similarly, the QUIC Protected Initial
<xref target="QUIC-PI"/> uses the ECH distribution mechanism
to generate secure initial keys and Retry integrity tags. While still dependent
on a key distribution system, asymmetric encryption, and relatively large Initial
packets, it offers similar protection properties to Version Aliasing while still
not greasing the version field. Note that since QUIC Protected Initials have
their own scheme for protecting Initial packets, that version is not suitable
for use as a standard version. However, these connections can be used to deliver
the version_aliasing transport parameter.</t>
        <t>A maximally privacy-protecting client might use Protected Initials for any
connection attempts for which it does not have an unexpired aliased version, and
QUIC version aliasing otherwise.</t>
        <t>See also section 1.1 of <xref target="QUIC-PI"/> for further discussion of tradeoffs.</t>
      </section>
    </section>
    <section anchor="the-versionaliasing-transport-parameter">
      <name>The version_aliasing Transport Parameter</name>
      <t>This feature is governed by the version_aliasing transport parameter, which has
two versions. The client version is of zero length and indicates a willingness
to accept the server version of the parameter. Clients MAY send this, and
servers MAY restrict sending of their version_aliasing parameter to clients that
request it. However, servers can send this parameter to all clients if resources
allow.</t>
      <t>If they support version aliasing and resources allow, servers SHOULD respond to
a client version_aliasing transport parameter of greater than zero length with a
TRANSPORT_PARAMETER_ERROR.</t>
      <t>The server version MAY be sent in any QUIC connection that supports transport
parameters. It has the following format.</t>
      <figure anchor="fig-transport-parameter">
        <name>version_aliasing Transport Parameter value</name>
        <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Aliased Version (32)                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Standard Version (32)                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                            Salt (160)                         |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Expiration Time (i)                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  CID length  |           Connection ID (variable)             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Bitmask (variable)                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <t>These fields are described in the sections below.</t>
      <t>The Expiration Time field is encoded using the Variable Length Integer encoding
from Section 16 of <xref target="RFC9000"/>. Expiration Time is measured in seconds.</t>
      <t>The Connection ID Length (CID Length) is in bytes.</t>
      <t>Note that servers that support version aliasing need not send the transport
parameter on every connection. Therefore, a client MAY attempt to connect with
an unexpired aliased version, even if in its most recent connection it did not
receive the transport parameter.</t>
      <t>Clients remember the values in this transport parameter for a future connection.
Servers MUST either store the contents of the transport parameter, or preserve
the state to compute the full contents based on the Aliased Version and
Connection ID.</t>
      <t>A client that receives this transport parameter not conforming to this format
MUST close the connection with a TRANSPORT_PARAMETER_ERROR.</t>
      <t>Servers SHOULD provide a new version_aliasing transport parameter each time a
client connects. However, issuing version numbers to a client SHOULD be rate-
limited to mitigate the salt polling attack (<xref target="salt-polling"/>) and MAY cease to
clients that are consistently connecting with standard versions.</t>
      <section anchor="aliased-version">
        <name>Aliased Version</name>
        <t>The version MUST appear to be random, although there are certain values that
will not be sent. Specifically, it MUST NOT correspond to a QUIC version the
server advertises in QUIC Version Negotiation packets or transport parameters.
Servers SHOULD also exclude version numbers used in known specifications or
experiments to avoid confusion at clients, whether or not they have plans to
support those specifications.</t>
        <t>Servers MAY use version numbers reserved for grease in Section 15.1 of
<xref target="RFC9000"/>, even though they might be advertised in Version Negotiation
Packets. Some clients may use these version numbers to probe for Version
Negotiation capability, which would likely result in a fallback procedure (see
<xref target="fallback"/>) instead of a Version Negotiation packet.</t>
        <t>Servers MUST NOT use client-controlled information (e.g. the client IP address)
as in input to generate the version number, see <xref target="salt-polling"/>.</t>
        <t>Servers MUST NOT advertise these versions in QUIC Version Negotiation packets.</t>
      </section>
      <section anchor="standard-version">
        <name>Standard Version</name>
        <t>Servers also identify the Standard version that the client uses to specify
the wire formats and behaviors of the aliased version. This version MUST meet
the criteria to support version aliasing, and MUST either be included as a
supported version in the client's version_information transport parameter (see
<xref target="QUIC-VN"/>) or be the standard version of
the current connection.</t>
        <t>Note that servers MUST NOT accept resumption tickets or NEW_TOKEN tokens from
a certain standard version in a connection using a different standard version.
Therefore, the choice of standard version might impact the performance of the
connection that uses an aliased version. The standard version that generated
tickets and/or tokens is typically encoded in those tickets or tokens.</t>
        <t>There are several possible techniques for the server securely recovering the
standard version in use for an aliased connection:</t>
        <ul spacing="normal">
          <li>the server could store a mapping of aliased versions to standard version;</li>
          <li>the server could encrypt the standard version in use in the aliased version
number and/or connection ID;</li>
          <li>the server only accepts one standard version for aliased versions; or</li>
          <li>the standard version is included as an input to the parameter generation
algorithm, and the server tries all supported standard versions and tests each
resulting bitmask for validity.</li>
        </ul>
        <section anchor="criteria-to-support-version-aliasing">
          <name>Criteria to Support Version Aliasing</name>
          <t>Version aliasing is designed to work with QUICv1 and QUICv2 as standard
versions, but does not preclude other standard versions. Note that the
"standard version" is the version which provides the wire format and behavior
for the aliased connection. A different connection exchanges the mandatory-to-
implement transport parameters for version aliasing, and need not be of the
same version.</t>
          <t>Any QUIC version that uses transport parameters with similar security
guarantees, or provides an equivalent mechanism, can exchange the relevant
information. An alternate mechanism will likely require specification of the
equivalent messages.</t>
          <t>New QUIC versions could also serve as standard versions. However, version
aliasing leverages several assumptions. New versions that deviate from these
assumptions will have to specify how version aliasing can utilize the version.</t>
          <ul spacing="normal">
            <li>Version Aliasing assumes that connections begin with a Long Header packet
encrypted with a key derived from a salt.</li>
            <li>The rules for which header fields are subject to the bitmask are written to
be clear for QUICv1 and v2. New version-specific header fields might be
ambiguous relative to these criteria, or be a special case (as the fixed bit is
for v1 and v2).</li>
          </ul>
        </section>
      </section>
      <section anchor="salt">
        <name>Salt</name>
        <t>The salt is an opaque 20-octet field. It is used to generate Initial connection
keys using the process described in <xref target="RFC9001"/>.</t>
        <t>Servers MUST either generate a random salt and store a mapping of aliased
version and connection ID to salt, or generate the salt using a cryptographic
method that uses the version number, connection ID, and server state that is
persistent across connections. It MUST NOT use client controlled information
other than the version number and connection ID; for example, the client's IP
address and port.</t>
      </section>
      <section anchor="expiration-time">
        <name>Expiration Time</name>
        <t>Servers should select an expiration time in seconds, measured from the instant
the transport parameter is first sent. This time SHOULD be less than the time
until the server expects to support new QUIC versions, rotate the keys used
to encode information in the version number, or rotate the keys used in salt
generation. The expiration need not be derivable from the aliased version and
connection ID; it is a matter of policy.</t>
        <t>Furthermore, the expiration time SHOULD be short enough to frustrate a salt
polling attack (<xref target="salt-polling"/>).</t>
        <t>Conversely, an extremely short expiration time will often force the client to
use standard QUIC version numbers and salts.</t>
        <t>The client SHOULD NOT use an aliased version if the time since the receipt of
the transport parameter exceeds the Expiration Time. Attempting to do so is
likely to result in a fallback procedure (see <xref target="fallback"/>). The server need
not enforce this restriction; the Expiration Time is purely advisory.</t>
      </section>
      <section anchor="server-connection-id">
        <name>Server Connection ID</name>
        <t>Servers SHOULD generate a Connection ID to provide additional entropy in salt
generation. Two clients that receive the same version number but different
connection IDs will not be able to decode each other's Initial Packets.</t>
        <t>The connection ID MUST appear to be random to observers, but it might encode
information to route the packet in the server infrastructure, or standard
version information.</t>
        <t>The connection ID MUST NOT be between 1 and 7 bytes long. A zero-length
connection ID signals that the destination connection ID will not be an input
to the server's process, so the client may choose any destination connection ID
compliant with the standard version.</t>
      </section>
      <section anchor="bitmask">
        <name>Bitmask</name>
        <t>The length of the bitmask field is inferred from the remaining length of the
transport parameter.</t>
        <t>For all initial packets, the bitmask is applied to all parts of the packet
header that do not meet any of the following criteria:</t>
        <ul spacing="normal">
          <li>They are encrypted via header encryption (in QUIC version 1, the packet
number, packet number length, and reserved bits in the first byte).</li>
          <li>They are part of the <xref target="RFC8999"/> invariants in the long header (i.e., the
long header bit, version, connection IDs, and connection ID lengths).</li>
          <li>They are encrypted using a server-specific scheme (such as the Initial token).</li>
        </ul>
        <t>Therefore, in QUIC version 1 or 2 <xref target="I-D.draft-ietf-quic-v2"/>, the bitmask is
applied to the packet type, fixed bit, initial token length, and length fields.
Senders apply the bitmask after header protection. Receivers apply it before
removing header protection.</t>
        <t>Each octet of the bitmask is XORed with an octet of the header than contains
bits that are masked. Bits of those octets that are not masked MUST be zero in
the bitmask. If the standard version is QUICv1 or v2, therefore, the first,
fifth, sixth, seventh, and eighth bits must all be zero.</t>
        <t>For example, an outgoint aliased Initial header, with a Standard Version of
QUICv1, might have these values prior to applying the bitmask:</t>
        <artwork><![CDATA[
First Byte: 0xcd (Long Header, Fixed Bit, Initial Packet, encrypted bits)
Aliased version: 0x4d8723a1
Destination Connection ID Length: 0x08
Destination Connection ID: 0xf4ad00431f2901ff
Source Connection ID Length: 0x00
Token Length: 0x10
Token: 0x467daa15 270a6718 7cd84310 b62c119b
Length: 0x44b0 (1200 B)
Packet Number: 0x349ae204 (encrypted)
]]></artwork>
        <t>There are a total of four octets that require masking: the first type, token
length, and length field. The provided bitmask field is</t>
        <artwork><![CDATA[
0x2051efa4
]]></artwork>
        <t>Therefore, the final form of the packet header on egress is</t>
        <artwork><![CDATA[
First Byte: 0xed (0b11001101 ^ 0b0010000)
Aliased version: 0x4d8723a1 (no change)
Destination Connection ID Length: 0x08 (no change)
Destination Connection ID: 0xf4ad00431f2901ff (no change)
Source Connection ID Length: 0x00 (no change)
Token Length: 0x41 (0x10 ^ 0x51)
Token: 0x467daa15 270a6718 7cd84310 b62c119b (no change)
Length: 0xab14 (0x44b0 ^ 0xefa4))
Packet Number: 0x349ae204 (no change)
]]></artwork>
        <t>The "Fixed bit" (second-most-significant bit of the first octet) is sometimes
used to differentiate QUIC packets from other UDP traffic at the server. The
server MAY choose to always set this bit to zero in the bitmask to maintain this
property. For packets sent from server to client, this bit in the bitmask MUST
always be treated as zero. Clients and servers interested in greasing the fixed
bit in the server-to-client direction can use <xref target="RFC9287"/> to do so.</t>
        <t>Aside from greasing the remaining non-invariant header fields , this parameter
provides a low-cost means for the server to determine if the client and server
share a valid version aliasing context. For example, if the server loses state
after sending a version_aliasing transport parameter, the bitmask will not
match. This will cause the token length and packet length fields to be
essentially random. If the token length does not match tokens generated by the
server, or the packet length field implies a packet larger than the UDP
datagram, the packet was not masked with the correct version aliasing context,
and the server initiates the procedure in <xref target="fallback"/>.</t>
        <t>In the typical case where the token length field is one octet and the packet
length field is two octets, about 127/128 of incoming packets with an invalid
version aliasing context can be identified as such based on the token length
(i.e. it is neither zero nor the correct token length). Of those that are not
identified, approximately 50% will resolve to a plausible packet length (equal
to or smaller than the size of the datagram). Thus, approximately 1 out of
every 256 packets with an incorrect version aliasing context will require trial
decryption at the server to detect the problem. If a server has multiple token
lengths, the odds of requiring trial decryption increase.</t>
      </section>
      <section anchor="operational-considerations-for-multiple-server-architectures">
        <name>Operational Considerations for Multiple-Server Architectures</name>
        <section anchor="multiple-servers-for-one-domain">
          <name>Multiple Servers for One Domain</name>
          <t>If multiple servers serve the same entity behind a load balancer, they MUST NOT
generate version numbers that any of them would advertise in a Version
Negotiation Packet or Transport Parameter.</t>
          <t>Such servers will either need a common configuration for generating parameters
from the version number and connection ID, maintain a commmon database of
mappings, or the connection ID itself can be used to route the Initial packet to
the server that generated the transport parameter. See
<xref target="QUIC-LB"/> for an example of the last approach.</t>
        </section>
        <section anchor="multiple-entities-with-one-load-balancer">
          <name>Multiple Entities With One Load Balancer</name>
          <t>If mutually mistrustful entities share the same IP address and port, incoming
packets are usually routed by examining the SNI at a load balancer that routes
the traffic. This use case makes concealing the contents of the client Initial
especially attractive, as the IP address reveals less information, but there is
no obvious means for the load balancer to inspect a version aliased packet.
There are several solutions to solve this problem.</t>
          <ul spacing="normal">
            <li>The RECOMMENDED solution is to use routable connection IDs, so that the load
balancer can correctly direct the packet without any knowledge of its version-
dependent syntax. See <xref target="QUIC-LB"/> for an example design.</li>
            <li>Each entity has its own cryptographic context, shared with the load balancer.
This requires the load balancer to compute a bitmask for each context, and
choose the one with a valid result. If multiple contexts are possible, it will
require trial decryption. As there is no standard algorithm for deriving
parameters from the version and connection ID, this involves synchronizing the
method, not just the key material.</li>
            <li>Each entity reports its Version Aliasing Transport Parameters to the load
balancer out-of-band.</li>
            <li>Each entity is assigned certain version numbers for use. This assignment
SHOULD NOT follow observable patterns (e.g., assigning ranges to each entity),
as this would allow observers to obtain the target server based on the version.
The scheme SHOULD assign all available version numbers to maximize the entropy
of the encoding.</li>
            <li>All entities have a common crytographic context for deriving salts and
bitmasks from the version number and connection ID. This is straightforward but
also increases the risk that the keys will leak to an attacker which could then
decode Initial packets from a point where the packets are observable. This is
therefore NOT RECOMMENDED.</li>
          </ul>
          <t>Note that <xref target="ECHO"/> and <xref target="QUIC-PI"/> solve this problem elegantly by only holding
the private key at the load balancer, which decodes the sensitive information on
behalf of the back-end server.</t>
        </section>
      </section>
    </section>
    <section anchor="client-behavior">
      <name>Additional Client Requirements</name>
      <t>The Client MUST NOT use the contents of a Version Alias transport parameter if
the handshake does not (1) later authenticate the server name or (2)
result in both endpoints computing the same 1-RTT keys. See <xref target="impersonation"/>.
The authenticated server name MAY be a "public name" distributed as described in
<xref target="ECHO"/> rather than the true target domain.</t>
      <t>Clients MUST advertise aliased versions in the chosen version field of the
version_information Transport Parameter (see <xref target="QUIC-VN"/>).</t>
      <t>Clients SHOULD NOT use the provided version number and connection ID in more
than one connection. Using the same connection ID in two connections could
confuse the server demultiplexer. If the client IP has changed, reuse of these
parameters can link the client across connection attempts.</t>
      <t>If a client receives an aliased version number that matches a standard version
that the client supports, it SHOULD assume the server does not support the
standard version and MUST use aliased version behaviors in any connection with
the server using that version number.</t>
      <t>If the response to an Initial packet using the provided version is a Version
Negotiation Packet, the client SHOULD assume that the server no longer supports
version aliasing and attempt to connect with one of the advertised versions
(while observing the considerations in <xref target="downgrade"/>).</t>
      <t>If the response to an Initial packet is a Bad Salt packet, the client follows
the procedures in <xref target="fallback"/>.</t>
    </section>
    <section anchor="fallback">
      <name>Fallback</name>
      <t>If the server has lost its encryption state, it may not be able to generate
the correct salts from previously provided versions and connection IDs. The
fallback mechanism provides a means of recovering from this state while
protecting against injection of messages by attackers.</t>
      <t>When a server receives a packet with an unsupported version number, it SHOULD
send a Version Negotiation Packet if it is configured not to generate that
version number at random.</t>
      <t>If the unmasked Token Length or packet length fields are inconsistent with
possible server-generated token lengths or the size of the UDP datagram, the
packet was not generated with the proper version aliasing context.</t>
      <t>The server MAY apply further checks (e.g. against the minimum QUIC packet
length) to further reduce the small probability of a false positive.</t>
      <t>In the unlikely event that the length fields produce a plausible result but the
salt is incorrect, the packet will fail authentication. Servers MAY also
interpret this as a loss of version aliasing state.</t>
      <t>When any of these indicators suggest an invalid version aliasing context, the
server sends a Bad Salt packet. The server ignores failures in subsequent
packets for that connection.</t>
      <section anchor="bad-salt-packets">
        <name>Bad Salt Packets</name>
        <t>The Bad Salt packet has a long header and a reserved version number, because it
must not be confused with a legitimate packet in any standard version. They are
not encrypted, not authenticated, and have the following format:</t>
        <artwork><![CDATA[
Bad Salt Packet {
    Header Form (1) = 1,
    Unused (7),
    Version (32) = TBD (provisional value = 0x56415641),
    Destination Connection ID Length (8),
    Destination Connection ID (0..2040),
    Source Connection ID Length (8),
    Source Connection ID (0..2040),
    Supported Version (32) ...,
    Integrity Tag (128),
}
]]></artwork>
        <t>Unused: The unused field is filled randomly by the sender and ignored on
receipt.</t>
        <t>Version: The version field is reserved for use by the Bad Salt packet.</t>
        <t>Destination and Source Connection IDs and Lengths: These fields are copied from
the client packet, with the source fields from the client packet written into
the destination fields of the Bad Salt, and vice versa.</t>
        <t>Supported Version: A list of standard QUIC version numbers which the server
supports. The number of versions is inferred from the length of the datagram.</t>
        <t>Integrity Tag: To compute the integrity tag, the server creates a pseudo-packet
by contents of the entire client Initial UDP payload, including any coalesced
packets, with the Bad Salt packet:</t>
        <artwork><![CDATA[
Bad Salt Pseudo-Packet {
    Client UDP Payload (9600..),
    Header Form (1) = 1,
    Unused (7),
    Version (32) = TBD (provisional value = 0x56415641),
    Destination Connection ID Length (8),
    Destination Connection ID (0..2040),
    Source Connection ID Length (8),
    Source Connection ID (0..2040),
    Supported Version (32) ...,
}
]]></artwork>
        <t>In a process similar to the Retry Integrity Tag, the Bad Salt Integrity Tag is
computed as the output of AEAD_AES_128_GCM with the following inputs:</t>
        <ul spacing="normal">
          <li>The secret key, K, is 0xbe0c690b9f66575a1d766b54e368c84e.</li>
          <li>The nonce, N, is 0x461599d35d632bf2239825bb.</li>
          <li>The plaintext, P, is empty.</li>
          <li>The associated data, A, is the Bad Salt pseudo-packet.</li>
        </ul>
        <t>These values are derived using HKDF-Expand-Label from the secret
0x767fedaff519a2aad117d8fd3ce0a04178ed205ab0d43425723e436853c4b3e2 and labels
"quicva key" and "quicva iv".</t>
        <t>The integrity tag serves to validate the integrity of both the Bad Salt packet
itself and the Initial packet that triggered it.</t>
      </section>
      <section anchor="client-response-to-bad-salt">
        <name>Client Response to Bad Salt</name>
        <t>Upon receipt of a Bad Salt packet, the client SHOULD wait for a Probe Timeout
(PTO) to check if the Bad Salt packet was injected by an attacker, and a valid
response arrives from the actual server.</t>
        <t>After waiting, the client checks the Integrity Tag using its record of the
Initial it sent. If this fails, the client SHOULD assume packet corruption and
resend the Initial packet.</t>
        <t>If the verification succeeds, the client SHOULD attempt to connect with one of
the listed standard versions. It SHOULD observe the privacy considerations in
<xref target="first-connection"/>. It MUST include a version_aliasing_fallback Transport
Parameter in the Client Hello.</t>
        <t>Once it sends this transport parameter, the client MUST NOT attempt to connect
with that aliased version again.</t>
        <t>The original Client Initial is not part of the new connection. Therefore, the
Connection IDs can change, and the original client hello is not part of the
transcript for TLS key derivation.</t>
      </section>
      <section anchor="versionaliasingfallback-transport-parameter">
        <name>version_aliasing_fallback Transport Parameter</name>
        <t>The client sends this transport parameter in a TLS Client Hello generated in
response to a Bad Salt packet:</t>
        <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Aliased Version (32)                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   CID length  |           Connection ID (variable)            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                            Salt (160)                         |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                                                               +
|                                                               |
+                   Bad Salt Integrity Tag (128)                +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <t>The Aliased Version, Connection ID, and Salt fields are taken from the
connection attempt that triggered this fallback.</t>
        <t>The Bad Salt Integrity Tag is taken from the Bad Salt packet that
triggered this fallback. Its purpose is to include the Bad Salt packet contents
in the TLS handshake hash.</t>
      </section>
      <section anchor="server-response-to-versionaliasingfallback-transport-parameter">
        <name>Server Response to version_aliasing_fallback Transport Parameter</name>
        <t>A client version_aliasing_fallback transport parameter tells the server that the
client received a Bad Salt packet. The server checks if using the version and
connection ID as inputs results in the same salt.</t>
        <t>If the salt does not match, the server SHOULD continue with the connection and
SHOULD issue a new version_aliasing transport parameter.</t>
        <t>If the salt and Packet Length Offset are valid, the server MUST terminate the
connection with the error code INVALID_BAD_SALT.</t>
        <t>Note that the client never sends this transport parameter in a connection that
uses an aliased version. A server that receives such a packet MUST terminate the
connection with a TRANSPORT_PARAMETER_ERROR.</t>
      </section>
    </section>
    <section anchor="considerations-for-retry-packets">
      <name>Considerations for Retry Packets</name>
      <t>QUIC Retry packets reduce the load on servers during periods of stress by
forcing the client to prove it possesses the IP address before the server
decrypts any Initial Packets or establishes any connection state. Version
aliasing substantially complicates the process.</t>
      <t>If a server has to send a Retry packet, the required format is ambiguous without
understanding which standard version to use. If all supported standard versions
use the same Retry format, it simply uses that format with the client-provided
version number.</t>
      <t>If the supported standard versions use different Retry formats, the server
obtains the standard version via lookup or decoding and formats a Retry
containing the aliased version number accordingly.</t>
      <t>Servers generate the Retry Integrity Tag of a Retry Packet using the procedure
in Section 5.8 of <xref target="RFC9001"/>. However, for aliased versions, the secret key K
uses the first 16 octets of the aliased salt instead of the key provided in the
specification.</t>
      <t>Clients MUST ignore Retry packets that contain a QUIC version other than the
version it used in its Initial Packet.</t>
      <t>Servers MUST NOT reply to a packet with incorrect token lengt or packet length
fields in its long header with a Retry packet; it SHOULD reply with Bad Salt as
described above.</t>
    </section>
    <section anchor="security-and-privacy-considerations">
      <name>Security and Privacy Considerations</name>
      <t>This document intends to improve the existing security and privacy properties of
QUIC by dramatically improving the secrecy of QUIC Initial Packets. However,
there are new attacks against this mechanism.</t>
      <section anchor="impersonation">
        <name>Endpoint Impersonation</name>
        <t>An on-path attacker might respond to a standard version Initial packet with a
Version Aliasing Transport Parameter that then caused the client to reveal
sensitive information in a subsequent Initial.</t>
        <t>As described in <xref target="client-behavior"/>, clients cannot use the contents of a
Version Aliasing transport parameter until they have authenticated the source
as a trusted domain, and have verified that the 1RTT key derivation is
identical at both endpoints.</t>
      </section>
      <section anchor="first-connection">
        <name>First-Connection Privacy</name>
        <t>As version aliasing requires one connection over a standard QUIC version to
acquire initial state, this initial connection leaks some information about
the true target.</t>
        <t>The client MAY alter its Initial Packet to sanitize sensitive information and
obtain another aliased version before proceeding with its true request. However,
the client Initial must lead to the authentication of a domain name the client
trusts to provide accurate Version Aliasing information (possibly the
public_name from an Encrypted Client Hello configuration from <xref target="ECHO"/>). Advice
for the Outer ClientHello in Section 10.5 of <xref target="ECHO"/> applies here.</t>
        <t>Endpoints are encouraged to instead use <xref target="ECHO"/> or <xref target="QUIC-PI"/> to increase
privacy on the first connection between a client and server.</t>
      </section>
      <section anchor="downgrade">
        <name>Forcing Downgrade</name>
        <t>An attacker can attempt to force a client to send an Initial that uses a
standard version by injecting a Version Negotiation packet (which implies the
server no longer supports aliasing) or a Bad Salt 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 Bad Salt 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 an
standard version.</t>
        <t>If it connects with a standard version, it should consider the privacy advice
in <xref target="first-connection"/>.</t>
        <t>Furthermore, if it received a Bad Salt packet, the client sends a Version
Aliasing transport parameter to detect the downgrade attack, and the server will
terminate the connection if the Bad Salt 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="QUIC-VN"/> 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>
      </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>
      </section>
      <section anchor="retry-injection">
        <name>Retry Injection</name>
        <t>QUIC Version 1 Retry packets are spoofable, as they follow a fixed format, are
sent in plaintext, and the integrity protection uses a widely known key. As a
result, QUIC Version 1 has verification mechanisms in subsequent packets of the
connection to validate the origin of the Retry.</t>
        <t>Version aliasing largely frustrates this attack. As the integrity check key is
derived from the secret salt, packets from attackers will fail their integrity
check and the client will ignore them.</t>
        <t>The Packet Length Offset is important in this framework. Without this
mechanism, servers would have to perform trial decryption to verify the client
was using the correct salt. As this does not occur before sending Retry
Packets, servers would not detect disagreement on the salt beforehand and would
send a Retry packet signed with a different salt than the client expects.
Therefore, a client that received a Retry packet with an invalid integrity
check would not be able to distinguish between the following possibilities:</t>
        <ul spacing="normal">
          <li>a Retry packet corrupted in the network, which should be ignored;</li>
          <li>a Retry packet generated by an attacker, which should be ignored; or</li>
          <li>a Retry packet from a server that lost its cryptographic state, meaning that
further communication with aliased versions is impossible and the client should
revert to using a standard version.</li>
        </ul>
        <t>The Packet Length Offset introduces sufficient entropy to make the third
possibility exceedingly unlikely.</t>
      </section>
      <section anchor="increased-linkability">
        <name>Increased Linkability</name>
        <t>As each version number and connection ID is unique to each client, if a client
uses one twice, those two connections are extremely likely to be from the same
host. If the client has changed IP address, this is a significant increase in
linkability relative to QUIC with a standard version numbers.</t>
      </section>
      <section anchor="salt-polling">
        <name>Salt Polling</name>
        <t>Observers that wish to decode Initial Packets might open a large number of
connections to the server in an effort to obtain part of the mapping of version
numbers and connection IDs to salts for a server. While storage-intensive, this
attack could increase the probability that at least some version-aliased
connections are observable. There are three mitigations servers can execute
against this attack:</t>
        <ul spacing="normal">
          <li>use a longer connection ID to increase the entropy of the salt,</li>
          <li>rate-limit transport parameters sent to a particular client, and/or</li>
          <li>set a low expiration time to reduce the lifetime of the attacker's database.</li>
        </ul>
        <t>Segmenting the version number space based on client information, i.e. using only
a subset of version numbers for a certain IP address range, would significantly
amplify an attack. Observers will generally be on the path to the client and be
able to mimic having an identical IP address. Segmentation in this way would
dramatically reduce the search space for attackers. Thus, servers are prohibited
from using this mechanism.</t>
      </section>
      <section anchor="server-fingerprinting">
        <name>Server Fingerprinting</name>
        <t>The server chooses its own connection ID length. Therefore, the destination
server of a version-aliased packet might become clear based on the chosen
length.</t>
      </section>
      <section anchor="increased-processing-of-garbage-udp-packets">
        <name>Increased Processing of Garbage UDP Packets</name>
        <t>As QUIC shares the UDP protocol number with other UDP applications, in some
deployments it may be possible for traffic intended for other UDP applications
to arrive at a QUIC server endpoint. When servers support a finite set of
version numbers, a valid version number field is a strong indicator the packet
is, in fact, QUIC. If the version number is invalid, a QUIC Version Negotiation
is a low-cost response that triggers very early in packet processing.</t>
        <t>However, a server that provides version aliasing is prepared to accept almost
any version number. As a result, many more sufficiently sized UDP payloads with
the first bit set to '1' are potential QUIC Initial Packets that require
computation of a salt and bitmask.</t>
        <t>Note that the bitmask will allow the server to drop all but approximately 1 in
every 256 packets, so trial decryption is unnecessary.</t>
        <t>While not a more potent attack then simply sending valid Initial Packets,
servers may have to provision additional resources to address this possibility.</t>
      </section>
      <section anchor="increased-retry-overhead">
        <name>Increased Retry Overhead</name>
        <t>This document requires two small cryptographic operations to build a Retry
packet instead of one, placing more load on servers when already under load.</t>
      </section>
      <section anchor="request-forgery">
        <name>Request Forgery</name>
        <t>Section 21.4 of <xref target="RFC9000"/> describes the request forgery attack, where a QUIC
endpoint can cause its peer to deliver packets to a victim with specific content.</t>
        <t>Version aliasing allows the server to specify the contents of the version field
and part of the token field in Initial packets sent by the client, potentially
increasing the potency of this attack.</t>
      </section>
      <section anchor="forward-secrecy">
        <name>Forward Secrecy</name>
        <t>There are two relevant keys to the forward secrecy of Initial packets that use
version aliasing. First, the Handshake key of the first connection protects the
transport parameter that delivers the salt. Second, if the server uses a
cryptographic process instead of a lookup table to derive the salt from the
incoming Connection ID and version, the key associated with that process
prevents observers from determining the salt.</t>
        <t>As the keys that protect Handshake packets are not forward-secure, a compromise
of the server's private key would also compromise any version aliasing salts
distributed with Handshake keys derived from that private key.</t>
        <t>Furthermore, if the server derives it salts from the incoming Connection ID and
version via a cryptographic method, compromise of that method and the key in use
allows attackers to compute the salts (and Initial Keys) of packets using
aliased versions.</t>
        <t>Note that, if the provided server connection ID causes subsequent connection
attempts to route to the same server, then each server instance behind a load
balancer can have a unique key for deriving salts from version and connection
ID, rather than sharing one among the entire server pool. This substantially
reduces the effect of compromise of this key.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="quic-version-registry">
        <name>QUIC Version Registry</name>
        <t>This document request 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 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">version_aliasing</td>
              <td align="center">This Document</td>
            </tr>
            <tr>
              <td align="center">TBD</td>
              <td align="center">version_aliasing_fallback</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 (provisional: 0x4942)</t>
        <t>Code: INVALID_BAD_SALT</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="I-D.draft-ietf-quic-v2">
          <front>
            <title>QUIC Version 2</title>
            <author fullname="Martin Duke" initials="M." surname="Duke">
              <organization>Google LLC</organization>
            </author>
            <date day="15" month="December" year="2022"/>
            <abstract>
              <t>   This document specifies QUIC version 2, which is identical to QUIC
   version 1 except for some trivial details.  Its purpose is to combat
   various ossification vectors and exercise the version negotiation
   framework.  It also serves as a template for the minimum changes in
   any future version of QUIC.

   Note that "version 2" is an informal name for this proposal that
   indicates it is the second standards-track QUIC version.  The
   protocol specified here uses a version number other than 2 in the
   wire image, in order to minimize ossification risk.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-v2-10"/>
        </reference>
        <reference anchor="QUIC-VN">
          <front>
            <title>Compatible Version Negotiation for QUIC</title>
            <author fullname="David Schinazi" initials="D." surname="Schinazi">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Mozilla</organization>
            </author>
            <date day="19" month="December" 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.  This document updates RFC 8999.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-version-negotiation-14"/>
        </reference>
        <reference anchor="RFC8999">
          <front>
            <title>Version-Independent Properties of QUIC</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the properties of the QUIC transport protocol that are common to all versions of the protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8999"/>
          <seriesInfo name="DOI" value="10.17487/RFC8999"/>
        </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="ECHO">
          <front>
            <title>TLS Encrypted Client Hello</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>RTFM, Inc.</organization>
            </author>
            <author fullname="Kazuho Oku" initials="K." surname="Oku">
              <organization>Fastly</organization>
            </author>
            <author fullname="Nick Sullivan" initials="N." surname="Sullivan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="6" month="April" year="2023"/>
            <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-16"/>
        </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="QUIC-PI">
          <front>
            <title>Protected QUIC Initial Packets</title>
            <author fullname="Martin Duke" initials="M." surname="Duke">
              <organization>Google LLC</organization>
            </author>
            <author fullname="David Schinazi" initials="D." surname="Schinazi">
              <organization>Google LLC</organization>
            </author>
            <date day="27" month="April" year="2022"/>
            <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>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-duke-quic-protected-initial-04"/>
        </reference>
        <reference anchor="RFC9287">
          <front>
            <title>Greasing the QUIC Bit</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson">
              <organization/>
            </author>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes a method for negotiating the ability to send an arbitrary value for the second-most significant bit in QUIC packets.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9287"/>
          <seriesInfo name="DOI" value="10.17487/RFC9287"/>
        </reference>
        <reference anchor="QUIC-LB">
          <front>
            <title>QUIC-LB: Generating Routable QUIC Connection IDs</title>
            <author fullname="Martin Duke" initials="M." surname="Duke">
              <organization>Google</organization>
            </author>
            <author fullname="Nick Banks" initials="N." surname="Banks">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Christian Huitema" initials="C." surname="Huitema">
              <organization>Private Octopus Inc.</organization>
            </author>
            <date day="21" month="April" year="2023"/>
            <abstract>
              <t>   QUIC address migration allows clients to change their IP address
   while maintaining connection state.  To reduce the ability of an
   observer to link two IP addresses, clients and servers use new
   connection IDs when they communicate via different client addresses.
   This poses a problem for traditional "layer-4" load balancers that
   route packets via the IP address and port 4-tuple.  This
   specification provides a standardized means of securely encoding
   routing information in the server's connection IDs so that a properly
   configured load balancer can route packets with migrated addresses
   correctly.  As it proposes a structured connection ID format, it also
   provides a means of connection IDs self-encoding their length to aid
   some hardware offloads.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-load-balancers-16"/>
        </reference>
      </references>
    </references>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Marten Seemann was the original creator of the version aliasing approach.</t>
    </section>
    <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-version-aliasing-09">
        <name>since draft-duke-quic-version-aliasing-09</name>
        <ul spacing="normal">
          <li>Allowed client to send zero-length TP as a hint</li>
          <li>Discuss forward secrecy of version aliasing</li>
          <li>Replace "packet length offset" with a generic bitmask</li>
          <li>Added what it takes to be a standard version</li>
        </ul>
      </section>
      <section anchor="since-draft-duke-quic-version-aliasing-08">
        <name>since draft-duke-quic-version-aliasing-08</name>
        <ul spacing="normal">
          <li>Replaced Initial Token Extension with Server connection ID</li>
        </ul>
      </section>
      <section anchor="since-draft-duke-quic-version-aliasing-07">
        <name>since draft-duke-quic-version-aliasing-07</name>
        <ul spacing="normal">
          <li>Added the Bad Salt Integrity Tag to the transport parameter</li>
          <li>Greased packet types</li>
          <li>Allowed the server to specify the standard version to connect with</li>
        </ul>
      </section>
      <section anchor="since-draft-duke-quic-version-aliasing-05">
        <name>since draft-duke-quic-version-aliasing-05</name>
        <ul spacing="normal">
          <li>Revised security considerations</li>
          <li>Discussed multiple SNIs behind one load balancer</li>
          <li>Removed VN from the fallback mechanism</li>
        </ul>
      </section>
      <section anchor="since-draft-duke-quic-version-aliasing-04">
        <name>since draft-duke-quic-version-aliasing-04</name>
        <ul spacing="normal">
          <li>Relationship with Encrypted Client Hello (ECH) and QUIC Protected Initials</li>
          <li>Corrected statement about version negotiation</li>
        </ul>
      </section>
      <section anchor="since-draft-duke-quic-version-aliasing-03">
        <name>since draft-duke-quic-version-aliasing-03</name>
        <ul spacing="normal">
          <li>Discussed request forgery attacks</li>
        </ul>
      </section>
      <section anchor="since-draft-duke-quic-version-aliasing-02">
        <name>since draft-duke-quic-version-aliasing-02</name>
        <ul spacing="normal">
          <li>Specified 0RTT status of the transport parameter</li>
        </ul>
      </section>
      <section anchor="since-draft-duke-quic-version-aliasing-01">
        <name>since draft-duke-quic-version-aliasing-01</name>
        <ul spacing="normal">
          <li>Fixed all references to "seed" where I meant "salt."</li>
          <li>Added the Packet Length Offset, which eliminates Retry Injection Attacks</li>
        </ul>
      </section>
      <section anchor="since-draft-duke-quic-version-aliasing-00">
        <name>since draft-duke-quic-version-aliasing-00</name>
        <ul spacing="normal">
          <li>Added "Initial Token Extensions" to increase salt entropy and make salt
polling attacks impractical.</li>
          <li>Allowed servers to store a mapping of version number and ITE to salt instead.</li>
          <li>Made standard version encoding mandatory. This dramatically simplifies the new
Retry logic and changes the security model.</li>
          <li>Added references to Version Negotiation Transport Parameters.</li>
          <li>Extensive readability edit.</li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
AA==

-->

</rfc>
