<?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.5.12 -->
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-duke-quic-version-aliasing-07" category="exp" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.10.0 -->
  <front>
    <title abbrev="QUIC Version Aliasing">QUIC Version Aliasing</title>
    <seriesInfo name="Internet-Draft" value="draft-duke-quic-version-aliasing-07"/>
    <author initials="M." surname="Duke" fullname="Martin Duke">
      <organization>F5 Networks, Inc.</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" numbered="true" toc="default">
      <name>Introduction</name>
      <t>The QUIC version number is critical to future extensibility of the protocol
(<xref target="RFC9000" format="default"/>). Past experience with other protocols, such as TLS1.3
<xref target="RFC8446" format="default"/>, 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" format="default"/> 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" format="default"/> 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" numbered="true" toc="default">
        <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" format="default"/>.</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. To be compatible with version aliasing,
the first client packet in a standard version MUST encode the packet type and
token as if it were a QUIC version 1 initial packet. That is:</t>
        <ul spacing="normal">
          <li>The most significant bit MUST be 1.</li>
          <li>The third and fourth most significant bits MUST be zero.</li>
          <li>The first field after the Source Connection ID MUST be a variable-length
integer including the length of a token.</li>
          <li>The second field after the Destination Connection ID MUST be a field, with
length indicated by the previous field, that contains opaque data generated by
the server.</li>
          <li>There must be a variable-length integer that encodes the packet length,
unprotected in the header.</li>
        </ul>
        <t>An "aliased version" is a version with a number generated in accordance with
this document. Except for the version field in long headers, it conforms
entirely to the specification of the standard version.</t>
      </section>
    </section>
    <section anchor="protocol-overview" numbered="true" toc="default">
      <name>Protocol Overview</name>
      <t>When they instantiate a connection, servers select an alternate 32-bit version
number, and optionally an initial token extension, for the next connection at
random and securely derive a salt and Packet Length Offset from those values
using a repeatable process. They communicate this using a transport parameter
extension including the version, initial token extension, salt, Packet Length
Offset, and an expiration time for that value.</t>
      <t>If a client next connects to that server within the indicated expiration time,
it MAY use the provided version number and encrypt its Initial Packets using a
key derived from the provided salt. It adds the Packet Length Offset to the
true packet length when encoding it in the long header. If the server provided
an Initial Token Extension, the client puts it in the Initial Packet token
field. If there is another token the client wishes to include, it appends the
Initial Token Extension to that token. The server can reconstruct the salt and
Packet Length Offset from the requested version and token, and proceed with the
connection normally.</t>
      <t>The Packet Length Offset provides a low-cost way for the server to verify it can
derive a valid salt from the inputs without trial decryption. This has important
security implications, as described in <xref target="retry-injection" format="default"/>.</t>
      <t>When generating a salt and Packet Length Offset, 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>
      <section anchor="relationship-to-ech-and-quic-protected-initials" numbered="true" toc="default">
        <name>Relationship to ECH and QUIC Protected Initials</name>
        <t>The TLS Encrypted Client Hello <xref target="ECHO" format="default"/> 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>If ECH is operating in "Split Mode", where a client-facing server is using the
SNI information to route to a backend server, the client-facing server MUST
have the cryptographic context relevant to version aliasing at the backend
server to successfully extract the SNI for routing purposes. Furthermore, either
all backend servers must share this context, or the client-facing server must
trial decrypt the incoming packet with all possible derived salts.</t>
        <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" format="default"/>).</t>
        <t>Similarly, the QUIC Protected Initial
<xref target="QUIC-PI" format="default"/> 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.</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" format="default"/> for further discussion of tradeoffs.</t>
      </section>
    </section>
    <section anchor="the-version-alias-transport-parameter" numbered="true" toc="default">
      <name>The Version Alias Transport Parameter</name>
      <section anchor="version-number-generation" numbered="true" toc="default">
        <name>Version Number Generation</name>
        <t>Servers MUST use a random process to generate version numbers. This version
number 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" format="default"/>, even though they might be advertised in Version Negotiation Packets.</t>
        <t>Servers MUST NOT use client-controlled information (e.g. the client IP address)
in the random process, see <xref target="salt-polling" format="default"/>.</t>
        <t>Servers MUST NOT advertise these versions in QUIC Version Negotiation packets.</t>
      </section>
      <section anchor="initial-token-extension-ite-generation" numbered="true" toc="default">
        <name>Initial Token Extension (ITE) Generation</name>
        <t>Servers SHOULD generate an Initial Token Extension (ITE) to provide additional
entropy in salt generation. Two clients that receive the same version number but
different extensions will not be able to decode each other's Initial Packets.</t>
        <t>Servers MAY choose any length that will allow client Initial Packets to fit
within the minimum QUIC packet size of 1200 octets. A four-octet extension is
RECOMMENDED. The ITE MUST appear to be random to observers.</t>
        <t>If a server supports multiple standard versions, it MUST either encode the
standard version of the current connection in the ITE or store it in a lookup
table.</t>
        <t>If the server chooses to encode the standard version, it MUST be
cryptographically protected.</t>
        <t>Encoded standard versions MUST be robust to false positives. That is, if decoded
with a new key, the version encoding must return as invalid, rather than an
incorrect value.</t>
        <t>Alternatively, servers MAY store a mapping of unexpired aliased versions and
ITEs to standard versions. This mapping SHOULD NOT create observable patterns,
e.g. one plaintext bit indicates if the standard version is 1 or 2.</t>
        <t>The server MUST be able to distinguish ITEs from Resumption and Retry tokens in
incoming Initial Packets that contain an aliased version number. As the server
controls the lengths and encoding of each, there are many ways to guarantee
this.</t>
      </section>
      <section anchor="salt-and-packet-length-offset-generation" numbered="true" toc="default">
        <name>Salt and Packet Length Offset Generation</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" format="default"/>.</t>
        <t>The Packet Length Offset is a 64-bit unsigned integer with a maximum value of
2^62 - 1. Clients MUST ignore a transport parameter with a value that exceeds
this limit.</t>
        <t>To reduce header overhead, servers MAY consistently use a Packet Length Offset
of zero if and only if it either (1) never sends Retry packets, or (2) can
guarantee, through the use of persistent storage or other means, that it will
never lose the cryptographic state required to generate the salt before the
promised expiration time. <xref target="retry-injection" format="default"/> describes the implications if it
uses zero without meeting these conditions.</t>
        <t>Servers MUST either generate a random salt and Packet Length Offset and store a
mapping of aliased version and ITE to salt and offset, or generate the salt and
offset using a cryptographic method that uses the version number, ITE, and only
server state that is persistent across connections.</t>
        <t>If the latter, servers MUST implement a method that it can repeat
deterministically at a later time to derive the salt and offset from the
incoming version number and ITE. It MUST NOT use client controlled information
other than the version number and ITE; for example, the client's IP address and
port.</t>
      </section>
      <section anchor="expiration-time" numbered="true" toc="default">
        <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.</t>
        <t>Furthermore, the expiration time SHOULD be short enough to frustrate a salt
polling attack (<xref target="salt-polling" format="default"/>)</t>
        <t>Conversely, an extremely short expiration time will often force the client to
use standard QUIC version numbers and salts.</t>
      </section>
      <section anchor="format" numbered="true" toc="default">
        <name>Format</name>
        <t>This document defines a new transport parameter extension for QUIC with
provisional identifier 0x5641. The contents of the value field are indicated
below.</t>
        <figure anchor="fig-transport-parameter">
          <name>Version Alias Transport Parameter value</name>
          <artwork name="" type="" align="left" alt=""><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Version (32)                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                            Salt (160)                         |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Packet Length Offset (i)                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Expiration (i)                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                Initial Token Extension (variable)             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>The definition of the fields is described above. Note that the "Expiration"
field is in seconds, and its length is encoded using the Variable Length
Integer encoding from Section 16 of <xref target="RFC9000" format="default"/>.</t>
        <t>The Packet Length Offset is also encoded as a Variable Length Integer.</t>
        <t>Clients can compute the length of the Initial Token Extension by subtracting
known and encoded field lengths from the overall transport parameter length.</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 MAY remember the value in this transport parameter for future
connections. Servers MUST either store the contents of the transport parameter,
or preserve the state to compute the full contents based on what the client
provides.</t>
      </section>
      <section anchor="multiple-servers-for-one-domain" numbered="true" toc="default">
        <name>Multiple Servers for One Domain</name>
        <t>If multiple servers serve the same entity behind a load balancer, all such
servers SHOULD either have a common configuration for encoding standard versions
and computing salts, or share a common database of mappings. They MUST NOT
generate version numbers that any of them would advertise in a Version
Negotiation Packet or Transport Parameter.</t>
      </section>
      <section anchor="multiple-entities-with-one-load-balancer" numbered="true" toc="default">
        <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 server that
routes the traffic. This use case makes concealing the contents of the Client
Initial especially attractive, as the IP address reveals less information. There
are several solutions to solve this problem.</t>
        <ul spacing="normal">
          <li>All entities have a common crytographic context for deriving salts and Packet
Length Offsets from the version number and ITE. This is straightforward but also
increases the risk that the keys will leak to an attacker which could then
decode Initial packets from point where the packets are observable. This is
therefore NOT RECOMMENDED.</li>
          <li>Each entity has its own cryptographic context, shared with the load balancer.
This requires the load balancer to trial decrypt each incoming Initial with
each context. As there is no standard algorithm for encoding information in the
Version and ITE, 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>
        </ul>
        <t>Note that <xref target="ECHO" format="default"/> and <xref target="QUIC-PI" format="default"/> 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 anchor="client-behavior" numbered="true" toc="default">
      <name>Client Behavior</name>
      <t>When a client receives the Version Alias Transport Parameter, it MAY cache the
version number, ITE, salt, Packet Length Offset, and the expiration of these
values. It MAY use the version number and ITE in a subsequent connection and
compute the initial keys using the provided salt.</t>
      <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" format="default"/>.
The authenticated server name MAY be a "public name" distributed as described in
<xref target="ECHO" format="default"/> rather than the true target domain.</t>
      <t>Clients MUST NOT advertise aliased versions in the Version Negotiation Transport
Parameter unless they support a standard version with the same number. Including
that number signals support for the standard version, not the aliased version.</t>
      <t>Clients SHOULD NOT attempt to use the provided version number and salt after
the provided Expiration time has elapsed.</t>
      <t>Clients MAY decline to use the provided version number or salt in more than one
connection. It SHOULD do so if its IP address has changed between two connection
attempts. Using a consistent version number can link the client across
connection attempts.</t>
      <t>Clients MUST use the same standard version to format the Initial Packet as the
standard version used in the connection that provided the aliased version.</t>
      <t>If the server provided an ITE, the client MUST append it to any Initial Packet
token it is including from a Retry packet or NEW_TOKEN frame, if it is using
the associated aliased version. If there is no such token, it simply includes
the ITE as the entire token.</t>
      <t>When using an aliased version, the client MUST include a aliasing_parameters
transport parameter in its Client Hello.</t>
      <t>The QUIC Token Length field MUST include the length of both any Retry or
NEW_TOKEN token and the ITE.</t>
      <t>The Length fields of all Initial, Handshake, and 0-RTT packets in the
connection are set to the value described in <xref target="RFC9000" format="default"/> plus the provided Packet
Length Offset, modulo 2^62.</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" format="default"/>).</t>
      <t>If the response to an Initial packet is a Bad Salt packet, the client follows
the procedures in <xref target="fallback" format="default"/>.</t>
      <section anchor="the-aliasingparameters-transport-parameter" numbered="true" toc="default">
        <name>The aliasing_parameters Transport Parameter</name>
        <t>This transport parameter has the following format. Its provisional type is
0x4150.</t>
        <artwork name="" type="" align="left" alt=""><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Version (32)                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Initial Token (variable)                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <t>The Version field matches the one in the packet header.</t>
        <t>The Initial Token field matches the Initial Token in the packet header,
including any Retry token, NEW_TOKEN token, and Initial Token Extension. Its
length is inferred from the specified length of the parameter.</t>
        <t>The purpose of this parameter is to validate the contents of these header
fields by including it in the TLS handshake transcript.</t>
      </section>
    </section>
    <section anchor="server-actions" numbered="true" toc="default">
      <name>Server Actions on Aliased Version Numbers</name>
      <t>When a server receives an Initial 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>Otherwise, it extracts the ITE, if any, and either looks up the corresponding
salt in its database or computes it using the technique originally used to
derive the salt from the version number and ITE.</t>
      <t>The server similarly obtains the Packet Length Offset and subtracts it from the
provided Length field, modulo 2^62. If the resulting value is larger than the
entire UDP datagram, the server discards the packet and SHOULD follow the
procedure in <xref target="fallback" format="default"/>. The server MAY apply further checks (e.g. against the
minimum QUIC packet length) to further reduce the very small probability of a
false positive.</t>
      <t>If the server supports multiple standard versions, it uses the standard version
extracted by the ITE or stored in the mapping to parse the decrypted packet.</t>
      <t>In all packets with long headers, the server uses the aliased version number
and adds the Packet Length Offset to the length field.</t>
      <t>In the extremely unlikely event that the Packet Length Offset resulted in a
legal value but the salt is incorrect, the packet may fail authentication. The
server should drop these packets in case this is the result of packet corruption
along the path.</t>
      <t>To reduce linkability for the client, servers SHOULD provide a new Version Alias
transport parameter, with a new version number, ITE, salt, and Packet Length
Offset, 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" format="default"/> and MAY cease to clients that are consistently connecting with
standard versions.</t>
      <t>If there is no aliasing_parameters transport parameter, or the contents do not
match the fields in the Initial header, the server MUST terminate the
connection with a TRANSPORT_PARAMETER_ERROR.</t>
    </section>
    <section anchor="fallback" numbered="true" toc="default">
      <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 ITEs. The fallback
mechanism provides a means of recovering from this state while protecting
against injection of messages by attackers.</t>
      <t>When the packet length computation in <xref target="server-actions" format="default"/> fails, it signals
either that the packet has been corrupted in transit, or the client is using a
transport parameter issued before a server failure. In either case, the server
sends a Bad Salt packet.</t>
      <section anchor="bad-salt-packets" numbered="true" toc="default">
        <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 name="" type="" align="left" alt=""><![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 name="" type="" align="left" alt=""><![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" numbered="true" toc="default">
        <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" format="default"/>. It MUST include a version_aliaising Transport Parameter
in the Client Hello, that enumerates the aliased version and parameters it just
tried to connect with.</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>
        <t>Note that the client never sends this transport parameter with an aliased
version. A server that receives such a packet MUST terminate the connection with
a TRANSPORT_PARAMETER_ERROR.</t>
      </section>
      <section anchor="server-response-to-versionaliasing-transport-parameter" numbered="true" toc="default">
        <name>Server Response to version_aliasing Transport Parameter</name>
        <t>A client version_aliasing transport parameter tells the server that the client
received a Bad Salt packet. The server checks if could have generated that
version aliasing transport parameter given its current configuration; i.e. if
using the version and ITE as inputs results in the same salt and Packet Length
Offset.</t>
        <t>If the salt or Packet Length Offset are invalid, 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>
      </section>
    </section>
    <section anchor="considerations-for-retry-packets" numbered="true" toc="default">
      <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" format="default"/>. 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 an incorrect Length field 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" numbered="true" toc="default">
      <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" numbered="true" toc="default">
        <name>Endpoint Impersonation</name>
        <t>An on-path attacker might respond to an Initial Packet with a standard version
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" format="default"/>, 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" numbered="true" toc="default">
        <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" format="default"/>). Advice
for the Outer ClientHello in Section 10.5 of <xref target="ECHO" format="default"/> applies here.</t>
        <t>Endpoints are encouraged to instead use <xref target="ECHO" format="default"/> or <xref target="QUIC-PI" format="default"/> to increase
privacy on the first connection between a client and server.</t>
      </section>
      <section anchor="downgrade" numbered="true" toc="default">
        <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" format="default"/>.</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="I-D.ietf-quic-version-negotiation" format="default"/> or
abandon the connection attempt. If it subsequent 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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <name>Increased Linkability</name>
        <t>As each version number and ITE 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" numbered="true" toc="default">
        <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 ITEs 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 ITE 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" numbered="true" toc="default">
        <name>Server Fingerprinting</name>
        <t>The server chooses its own ITE length, and the length of this ITE is likely to
be discoverable to an observer. Therefore, the destination server of a client
Initial packet might be decipherable with an ITE length along with other
observables. A four-octet ITE is RECOMMENDED. Deviations from this value should
be carefully considered in light of this property.</t>
        <t>Servers with acute needs for higher or lower entropy than provided by a four-
octet ITE are RECOMMENDED to converge on common lengths to reduce the
uniqueness of their signatures.</t>
      </section>
      <section anchor="increased-processing-of-garbage-udp-packets" numbered="true" toc="default">
        <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 Packet Length Offset.</t>
        <t>Note that a nonzero Packet Length Offset will allow the server to drop all but
approximately 1 in every 2^49 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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <name>Request Forgery</name>
        <t>Section 21.4 of <xref target="RFC9000" format="default"/> 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>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <section anchor="quic-version-registry" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <name>QUIC Transport Parameter Registry</name>
        <t>This document requests that IANA add the following entries to the QUIC
Transport Parameters Registry:</t>
        <table align="center">
          <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">aliasing_parameters</td>
              <td align="center">This Document</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="quic-transport-error-codes-registry" numbered="true" toc="default">
        <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.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="26" month="May" year="2021"/>
            <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 offered is unacceptable.  This document describes
   a version negotiation mechanism that allows a client and server to
   select a mutually supported version.  Optionally, if the original and
   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-04"/>
        </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">
              <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="12" month="August" year="2021"/>
            <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-13"/>
        </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">
              <organization>F5 Networks, Inc.</organization>
            </author>
            <author fullname="David Schinazi">
              <organization>Google LLC</organization>
            </author>
            <date day="13" month="May" year="2021"/>
            <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-02"/>
        </reference>
      </references>
    </references>
    <section anchor="acknowledgments" numbered="true" toc="default">
      <name>Acknowledgments</name>
      <t>Marten Seemann was the original creator of the version aliasing approach.</t>
    </section>
    <section anchor="change-log" numbered="true" toc="default">
      <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-05" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <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:
H4sIAKr3dmEAA+19W3MbR5bme/6KGurBUi/AJamLLTp6d9kS3Wa0LGlE2h0T
GzuOApAgawSgMFUFUmhZ/dv3fOeSl6oi7Z6eftjYka0QCVTl9eS5fOeS0+nU
dVW38qfFwT//ePGq+Mk3bVVvirNVVbbV5vrAlbNZ42/v/35RzzflmhpYNOWy
my52H/3033fVfHorj05LfXR69LVblB09+fn12dX5FzenX67rZn9a+E9bV22b
06Jrdm13cnT08ujElY0vT4urpty027rp3F3dfLxu6t32tMBQnGu7crP4uVzV
G2pz71u3rU6L/93V80nR0guNX7b0034tP9A41+V2SwP5P86Vu+6mbk5dUUzp
b1FUm/a0+OGweE2j5w9kSj+UTVdt4qd1c31afPe8eOs7jIZavdjMD/krvy6r
1Wmx5jcObw6xDv/rGh8ezuu1c5u6WZdddetPnas2y+S36XRalLO2a8p559zV
jefp0VLoxIttU9Ok6hX94Fvf3Pq2qLq2WO66XeNp7Tq/aatZtaq6fbGl/lf7
YrZ37dbPq+We5stP624Um9165pvDgvqhl++q1aqY+aIsGr/iAdHL7bqkT+XB
ol667W62qtobv+g1QkOom6KjAdO/NDJfzlZeh4UOqhaLvlv7Dc/htlrQyEu3
9rT2C353vqroS/pwsyh4ZtRmVxcbIouuIurgxnetp1EUNf3cDEZQbVy7m7X+
33foZV5vNn7e0QPSpt/Mm/2WOrjYVNTgqnhfzj96+n0HgqQu543vio9+j4ba
zpcLzJfpqmzo541vD4uLJS1PW/1Fpse9dRgQ71LaIwbaYdZrP78pN1W7nvDv
rr2pd6sFtu8Wo1xXi8XKz+pPRd221bKic4AplUTbNGZMeb5rGjypPYUNcP3p
l/ZCvel4JW1cNuGtTHhSlG1x52lb6d9qzbuxuXZ41ajrq5Z+rG7L+R4fbT3R
Mc1eyFNG7Nwjardr6sWOZ5wQaz6ugtZg3tAA5jQC2s9RSqWRpt27x58//9OH
7169PDo6+vLlySFtVduBMfiGaGQOUu1ulAjsHRzv3fwGc7p6c3l8+NR9/vw/
qY1vnj178eULfXlT3xFB3ZTJmhMJrqvrm64ou86vtx3G53Ee516e5Pnosjls
qc6tLT5u6jvapo7H3VVrIc+4m3eytisPivcLOwK+owbcwm9X9Z7PAs1c5oXf
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
ygfi8KM2ZYC4ulySaDc3ImkADUhUGc39Xac5KCwlNX+vNc1iImF/e6EDBeMR
qEwa3FZ3w1I5uDSQ6vJQhCKi3pgLggsORAEWKlvRI9V1JcmVGr3p+qFYv4aJ
ZiG0raVlKezzQBEGNnnUbcbjC4FeQb6milWuwxRRIgGlR1CYuIBaSzc1+1RL
mhQ/vn4fUk0nmR5StXOUxUsPLOfYCjUoRqbjEpk1EFlp7QT2mG2hIFvKEPEI
TmTjeGUrv4UGx2Lx5cA+kTqM8r5GleoeWMFPIFNJvbnS5dHiAwvktwbbh2jC
gZ6nRBqr7aTh9MFMsjBIZF2UjZpkCvV6S3uWals8jbQAXF6YJtPedFDjKio7
m35LzQ/jh5a7dqEZpiG+S9LOkVHLSadBPxttU6hPS/I4IIQrpUP4A8IJEotN
AusnKZmtUbairFYpUmOukRCuKTGDi6beKtdNbAd233Tqk4jngaN6pQt0u9uK
Ic6rK92zazkGLMPmNloy8EOUthjyqechVnFAEFqGj41ZZ5MiyU94AEQcRNiG
ujUMNzPwUSYRnVyRJslqrUifHsaGSqaYy1VvTk3p/JTjtiVG2dLn457lMYKu
HyIodgkQUs796nrpQjDisjhvM0yQWwnDZJgBYcc1GN1j2u/oAtt+mXhe1OxO
Z+VEtF+rjJkpKqqUpKeMDS2J1tXFcD2LCsUrPpy9vXz/7sPVz+/PPpz9cH51
/uHn8w8f3n1ggf6dMkWS14E/9jkRtPIVwgEgrZLqFprMXcnB6CVNJYJVhR9q
gLI/TzxiWvlL0m0y+6w1WSWO5ZAL7mJiclJUhkPecYJQAIdaCDALnzNx7osZ
FZNcnXH1WHcB7mwtiwB2aW6+9jDWxerVHkqqHYiA6Sk8X5hXtArBMGLpVDMI
bMoUTlrhmVRU4eOv3BnUU/XT+GPZg3IcXqGTxejeUjIkdBMxFi4c3UttTzba
SV7CwCgUCy98qAkyokf0HtV6uYlcEPM3ZmD2ecrMz0tgBaTPcdKTkpEkiprX
klr013QM4MRLi/2RVj7M3b8C0kwnmjOhQ1kXwYIziF24WCj20Dc6T8Wo7M27
+Mz1yL+XySHwlx0Hvy+OJ/zFjxse9uOvn8jvmdX2++LqD6+Lx6khK/Ln9xrb
i7/64v0l9lSoPf7mV598fHR4eHL07EgfHK0V2G9t9KF+Q0Etz6Z3eHgo31+E
ZPqr8prW5wSNfxGrThbolE/2ThYrRKQtKw77D3WRVG8BXSolSeIP3JASf8R2
iQ5C2rzNLMaql/wLUtNWh1SeLiSrlCNLIcxJFq091XK/ViaGxci2UtPOJYfW
4JXo5pC29c2gtOcFLe9oDTsvlZqc6GVxhBG/TGcjRH1bzWUlSiTO9HfrtDgj
FaJlvePhOPdYi9hYhGqlwplDEfvEOzRm3+ZWran1rM8lhHKKAqC5ezCpyZBJ
PkkzBKvZtn63qKdaqGa2HwTCqD3RS7iFebEt9/D6Torczp/X5cq3ZDnE2gxh
13o0M2ARMpiMUyjOjQ7fS4fF45cvjuhA6WH6L1ZyHytRjgHLI2QeWnEMtQ8E
lMnIaJLvVM6LqtYc0Avzf9S7jn4HuZydn73++ez88mdiWD//8dUPcd+jbJDK
c6dJfVS942BS/AlqLa3+zB/NX7w8mr1cvnjx/Ovn5fHi6xcvZs+f+acvvpl/
88yH4qobhHBNirf63rMXx89fvlw8fb548fRktjw5efrym5Pns1l4PuTNTor3
/A4w5X34OvEQ4YhNirOJ2RmRbtPjIlhAKIvJ/Muq+4iK8f2fXn83Pf+0JR4x
fVPO/CqrvUUzd0efvn7x9dIvyuXy+fHL8qQsF8fHXy++WS6ezv1RefTs+Otv
/OLk6Hk5O1o8e/rs5PnXJ0/9M1qK50/nz2ZP/QkzrBUab90Bqr3ccomVA6ke
rR9UtweKXGRModALO/rYV3zIfEQjp9eRPutXy+ghylEoUdKa6vras7msepCe
5w8Jtm7tknCjzwoVTBKR8BDArgbOXVmJD7tErRVSfpCFRlTpHr+/esfIAiMS
lh7dV7n4XgTWY8XST4LUtIqorI0L7oCyaRh5C3tJKusO8XwWsnLGhX4xLq7e
lgxZsRFZrvRgCb3AQoAejts9eLQhALGyNLcLxS5VOb7X1TIwiDl6BMJ8dLsi
fgIbIJTA5apbfjHe0YNOGZa3kJJjyf+pr12jp9TVJLWhBj4askg5128aDTTg
UBcDL6r28DPMyeq+GDQrA5JXvtLyxrR4Tdndg79IJbtgoFYSJYc6YGJZpwsB
1BMli2XrFho4NmrTJosbQ0gGy+tiHfbBuK4lEAUn3EBOm14gIfE/omy/CXeg
FPeExIP4epqb1OJE9EOMdwqd6fBvpOzjoCsXkXA+q4DJQ3Fby3rMsy5CUd6Y
831vvLtB3rouLlgzZ2lwcATN5WIWOyRDIGDgWv0VICBA+ylfS2nxXlJ0ZzbR
weNjE+1ofdOKCf3lsrSCxYgdmpW8FUZEPFFCcNmMi0W3OZR64IodG9B1xYkP
iNyKdUhi2Py3RXVIVnO1dLtBRS2LeGMGzAVpBc8L2I1EtoxmpCtelsC+eIwI
axx8ZxBbi4Aki6csCDpvtdn56EXPg+7sOcYGcnDvwd3qje7+tPrGF8PB/QZ4
ihX0pmHPB2Kn3/509ubi9c9/ID3s8uzNlURP5rwUh0+0vgBEsOmSlVNIMXhW
uSEKFBhd7BgjQnWqWuyntuPgqNneIRs4+NktH7iweza4BqJvDdtO4qpiiQQz
lBRBb0dig6Q8VosCNlILuhcKwZjVYQhQCBuEmEopy87FNWutp+BDRAkXMM9L
9rBHvTYfWbpGEwWgtfKDxlohKGA9I+pHUX4tyuB2ML9ZBmqxOdxaNBKvxfHL
F0tNUjG9fphqkgV+yZik+zRcSV0IpZVcjQSjwbOhkPd98SEPDIFxgFgAKh1D
5shwqVtsMGUU6JVqRAVnLWgcu1zvoNdiSNtOC8kYbd1XpZnvCaCHuKS2ZRFl
5SZGDB5RNNMz0a/YAieYSwqePT/8Jk3OQ+GWpLouNNFe0KetiRk7xZ9ccPFI
DQOk+3ElqhDPok2oq9Ouf+Pv0EJAfTWmKr+YpBcqqPVe8jOeV+jJAYy8WkQg
EfGXLcz1mp/LsYJpjd/K7QpB1pqkjrWXslg1bRkIqFMEVCHMdPDfJqFW0gU/
FAReOUzpFPe7ljBnTqy6Zs4f+0UIYAnpRS52YZB40KRYUtGmTQ5vqIMizAtL
hsWCpEIZrrGyW+4iZcz3g/vxrDxaoC7JbJELdEgIWdHQ6GVN649qeQ4NrS4u
0qDp4vOjPIiar+ioN1M4y2KWjhTtS4sobnqDs+0ZuE/189+SExKUGLj4xDGf
ChAnSVX3pBD04+V1eDDDBoWW+nkDXybBkUXKLVTW0bh4N5jEmCYUKoto9cU8
Hj2Clo4xfs6aA9TAMeQJli72l+pg/Nqxhr8nyjKAmHgTGj2XR9FrWQ22mBIl
3kj+86OBMcWrNVD4QloTbLpExMJRlO55XlizduVcCm5bgkKoW8zwZr9KFueH
ad35rK76DNITK5AE3auRk+brrthvM+BHUn4IH/3lvvQTrjs00xJlwvOGQZes
mug1DubR5O54VHoBRH5E+3Apu2ZW4OCKu+UecJFAQgmSsZAo9EwobVbVcT7f
sUAbkGVWB1MrTjNaL7ekzn/mxiWKenPffQC9tFc8bNkQT8igWgAcd+Y2f5eU
kA4l/0MO+9HhcxGUlnm03XKxczAxLg5oWR9gaEha2qEe10Ju9xCRhwMZ3kfy
T5K4JJeAcAKiM95bJ6XxUxp7qDS+FaFh3fV1KMn8+VGMC2X2GNjivNyk9rkU
wSkTlVcUxsgrY+Gqchj0OwsF7DlfYCwSS4XnY60MvJZl7GLcxDCSNpziJwVj
Y33c6/62xAnJ2MBYRuQTPYJ3yOrkizMsnk4rDCmikwcKsveJZ5llZWXxwzTO
Ad6H0BLlzRYUEli8ODx2uD9OqsFX7cSVPZhK1JAgwLosqKTPs4HZqauLsUSn
WGIhWKKgjHqjiixW2OFacUGLEOuaWn2hxdKXHcf+pgmwon7hElJMa3C9qd7O
56KX2SDEMnigS6RL1oN0DaNMNgsTYK7cDGhPtP0qufXoHnEupoUE5xg6l0F2
pfAFCRUbQnW9klYSUng/VpHN2PzqRjIPSmGurhaugezXV4/AVbjVabVy90I/
D0DGYSujwZSnGNwXVGkTtBKqSVk5F4crc8DzMWrDbhP+/Pmfwn2x2V3mydWF
zCzdwwTCxia2NSpP0m3L0mgwFK79gPjB+jZUI0iWcizDQWzU5MZpJPzYarcD
qEXHlVVKVmF+YaEmLq9yfhyjbUWM3O5WsPc0juZ1fSkiLCbphnQ31DaTmzNv
jUXHPMSP3sdTyQmWj606wV+PSayRTnb5ZELWNiBeq0ZvAIVdcJmpgIdSUKGv
ZE1isIzGMjErcoLPApPAdcI8AprPqtxtAB8wKSQkyPcCiWlrITmfH/VLSurS
/RSWLjcIORdnW9dLLJ4VN9hbSChuJPwUkI4Jh4i0YiKlnjU7X9GFlNThFwlI
h26BmEOpHIPrcJDqXmpO6KToDRLiKHNKBHKSGjyRekOB9mUfLes7uAS2Nnua
lyEGQkT9l4NrEdpqNfXaVNCF4rVxruJpgq5etW5wcZsCABICmBU4iCTABRM4
SpLeqJrYtpO2bX3DdWi4SFTMe/p4/StVgsJ1XqF6DGfM3dXNRyFPvg4Mcic5
s3Zw7iJSDG3UN3JrVu/ysOQqskSLBcuMqEoa0KaryEa3MpAaCq5p3uD+eE+A
oPcWU5APitUDYfvEoMrrxgtLrQ1IDnVYb9ilR3/1CuEhsldoqQGVhBHm4lZC
IrBugJaP5BTkQTmh1Okw6CYiIaJQ9Hc6zuyeIs0hAzXzsIvaj+BWUuvY0d7r
Nw+SYy7TgQAsa1+lPG7mlWihb4dtpNeJ5h7T+9qAOBo0o/mcqSsjREqOFNrl
KqEbS2xzIeA8u+dbb9zpZ10L7esdPL1DJKNlmKHR/OV7brZ56HShBANQc3iX
UHdGyEPL7nPBho9a7Qm32Lq4T3stsMzAZQjJNiko9s2ieBODltlY50Dh8SQF
jnEMV4JLURENb66SXEi5mnlDouaumrOSyUWOs3xmNc1CwLiGi0vJ+8jYIOXp
bVYpUgM4TZiOeL8hAZxemVzea8YcCDOJ0XZ2+wu6DVU+x7Lg7VqQWPX7vQY2
f36URTQ79y4W7ZC7Bdqb5LKCvsdBcLB6ywak3EATgrfSClvhIlm9YotLn/vl
sha6UqwhdcEmZZQNOUurpIYa8hL6y/aHXehmd+xwEespI5UtlyVKZJQT915Y
WcW0QyqFeJMZnEAl3Tre9TC1M5RMzw0L7hgc2d0Qz01uN2qzKxz9Jz9HWFoK
VDoZ4aletqZxrzCppHR0NmY7R3X0p01weVqIbB+9koVjJgx+DrfV21mg9f3v
zJXYB4frNQeVbrs6c4VVS88fG0avXO+rmIXEIPg1ZE/f22nFF4j1+VgMxoKS
I3AzEY+psCCuZK3wZpfQSFb3pgxVcdJCVOKnFyHSppcNOlR3hniO+mMRTwMr
FMLeoevOwmWDDAwreScQCtnIJpvWtA9z6Aea/B4ByjguVPDg5UnqFKGcTrlX
gZyh5Mnat75sIFh4+XjWIcScqHCXaASlwHU3xFxRv5eZlKkeQ3hc/fbfVSA9
MmZ547IkL7sTw8pEgTz1yusgSNIITepDeXBglm7mg+Fkq4UCFDM7ynngRRan
qqOoI+N2vUircLMOMa9qe6NdmHoRh1tISowE6UByuniU+zeg6Ayyu09e+9vK
vMghQ0CiJlWCIvKcll8u6TOYQBSNlXBQy7wUD0nqppPxMpdAUUch7Rt6S8p3
0OnkWpkqTqGFBRcYdBAZvIujBxkkw9c4Gurq2utli2uGnqVKZXbQnQjPDc6R
HPVKq6YwjNOXzO/Fdaxc/I9lM8OlAhKxqi72M70XU69YxR5zCK3dIq7MIW4N
f81wabhpF7YO8WcyK7arei83Q2nyyMzH+wWXcj0VNBD1XimgNd6uC8CVVNaT
YWppdLWGIWp8jACIZWi4oqoUcCA52ONNkwCV9VhgCC0vDSXTattqmFt4ocx5
Wc7VJgxpkL32quSGl/Lee5hcld2hHJP7kzjFVjIOPad0VgF23YYNpq0Pjt5c
bw0pNQMnCpO735Z6QUQ559vqyxVKhDrELvQc8GwMF2YM8+UmXLMmapUozF79
hZpLwrDbGLwi2PeM485Y+n11/JVwxRo+LXCOMS+jWSvsunFpeg7zngdDWLLg
rRKRuXwtxaiinFzjlKhK0L0AhPIFnTtaGNxt+YlTVmi6x9gNKeF68q/PXsZr
P9p6aICy9hugE85AgqLEgIwspSyE4dXseNSwCbM2hXB7KzQJZUNx6IIhbDHk
6fW4tH3s7JOUPJXJwvqi3t9nJGIbvbuVe1T6ruhYY5A0dEmKzW0kvQhW1dDZ
rloFm9OFrJ8QSECK/wTADTs9eFX6kT58O3y5wpXGMEsWnJNdLgxtYr8X3CZ0
cPbg4wK1nBwfPuuVLu7dZKIuMzAlvBqgWbutli/gM94jUYea44QLPAzjXVUg
mxDMAB3vtqIhrIWLWjyEeXLH4B0mwrZHhfLifuAFThkPczCnwaBBle+SWglV
PytfddFZiopM4okktUz13RB5gq/m+55zheMYLs7eng3iFmhPMtb3wV+jvtl+
jIx8q9gEt0Tk2cMQIGb3puylcCuZYtIqae0/QfKfIo+CNp84xa49BShEDAs6
irtMA1JOi2wQzr1ioxCTkMtKmtPi4vzqO76KgubZnUq3f/5jnNhY4MCvTLL9
1VnqlaA2TzdasfJDnPQvBU+7+CUZxFtYv78U2YSLX+jR0+l0eloM/qVvkHzy
y9B/+4ss02ubRnx0LD12+PTIWp1zeOArrsP4d69WThOxXF3aySiFZJk2p0jW
ePnshC8eWdAD/bhF52ihuBQkqP1sDqB45RdsNxCl/0BnzsPL7InWNuyNiZgu
IguQ3VQ3/UMbj71emyzhkUKIb2pS+v9H8bvfEdMqzomN17DqINNOf/e74v2K
DdHGr2urlGn3p5LJALWlppfFx56IzCUPJ8RULQ3mlGUXPioOBLJ6lt00Xtib
2eA05unRc5jJH0gD56AwizrKA+XpiddyXys9E+oeXL69aK0gNuI4slKd3Chm
tSh+ehsBHcsZTu4C/lsG+0wGu5Jh3VRb4cn3BBw8Pn/1/RNWLcbvNca8Xgli
LMGInfrLEB8StadE1ftbxvrUZcs2Lpzav6nJEzR5GYrS8FXwLXPIByqr/009
HKOH79gfAz2ATC5A1KpuHLRkPx2oOL1gzLSjD4G1H6Ck9MKq+I2XMhUE1wNV
YS/dwLF09h9YkiMXej64p85Pe5ChPqxvmr0H4mD8dORGI0Z2uST3HGFfXDOb
dPR4vztfwTi4vPEe6NTuLFNNCe39AC/oAGuMl03iC2p/r8WHMwSD1UqQQatQ
+52T5VzV16SccNX4G601fOPjwV4TY5TJ8JrlGzzmVh4TXHhfl/cW3KtcGOzn
F8jH+r8EVonmYJsAAA==

-->

</rfc>
