<?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.17 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-v2-07" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.2 -->
  <front>
    <title abbrev="QUICv2">QUIC Version 2</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-v2-07"/>
    <author initials="M." surname="Duke" fullname="Martin Duke">
      <organization>Google LLC</organization>
      <address>
        <email>martin.h.duke@gmail.com</email>
      </address>
    </author>
    <date year="2022" month="November" day="06"/>
    <area>Transport</area>
    <workgroup>QUIC</workgroup>
    <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.</t>
      <t>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>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://quicwg.org/quic-v2/draft-ietf-quic-v2.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-quic-v2/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        QUIC Working Group mailing list (<eref target="mailto:quic@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/quic/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/quic/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/quicwg/quic-v2"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>QUIC version 1<xref target="QUIC"/> has numerous extension points, including the version
number that occupies the second through fifth bytes of every long header (see
<xref target="QUIC-INVARIANTS"/>). If experimental versions are rare, and QUIC
version 1 constitutes the vast majority of QUIC traffic, there is the potential
for middleboxes to ossify on the version bytes always being 0x00000001.</t>
      <t>In QUIC version 1, Initial packets are encrypted with the version-specific salt
as described in <xref section="5.2" sectionFormat="of" target="QUIC-TLS"/>. Protecting Initial packets in this
way allows observers to inspect their contents, which includes the TLS Client
Hello or Server Hello messages. Again, there is the potential for middleboxes to
ossify on the version 1 key derivation and packet formats.</t>
      <t>Finally, <xref target="QUIC-VN"/> provides two mechanisms
for endpoints to negotiate the QUIC version to use. The "incompatible" version
negotiation method can support switching from any QUIC version to any
other version with full generality, at the cost of an additional round-trip at
the start of the connection. "Compatible" version negotiation eliminates the
round-trip penalty but levies some restrictions on how much the two versions can
differ semantically.</t>
      <t>QUIC version 2 is meant to mitigate ossification concerns and exercise the
version negotiation mechanisms. The changes provide an example of the minimum
set of changes necessary to specify a new QUIC version. However, note that the
choice of the version number on the wire is randomly chosen instead of "2", and
the two bits that identify each long header packet type are different from
version 1; both of these properties are meant to combat ossification and are not
strictly required of a new QUIC version.</t>
      <t>Any endpoint that supports two versions needs to implement version negotiation
to protect against downgrade attacks.</t>
    </section>
    <section anchor="conventions">
      <name>Conventions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
    </section>
    <section anchor="differences-with-quic-version-1">
      <name>Differences with QUIC Version 1</name>
      <t>Except for a few differences, QUIC version 2 endpoints <bcp14>MUST</bcp14> implement the QUIC
version 1 specification as described in <xref target="QUIC"/>, <xref target="QUIC-TLS"/>, and
<xref target="QUIC-RECOVERY"/>. The remainder of this section lists the differences.</t>
      <section anchor="version-field">
        <name>Version Field</name>
        <t>The Version field of long headers is 0x709a50c4. This randomly chosen value is
meant to avoid creating patterns in specified version numbers.</t>
        <ul empty="true">
          <li>
            <t><strong>RFC Editor's Note:</strong>  Please remove the sentence below prior to publication
of a final version of this document.</t>
          </li>
        </ul>
        <t>This version number will not change in subsequent versions of this draft,
unless there is a behavior change that breaks compatibility.</t>
      </section>
      <section anchor="long-header-packet-types">
        <name>Long Header Packet Types</name>
        <t>All version 2 long header packet types are different. The Type field values are:</t>
        <ul spacing="normal">
          <li>Initial: 0b01</li>
          <li>0-RTT: 0b10</li>
          <li>Handshake: 0b11</li>
          <li>Retry: 0b00</li>
        </ul>
      </section>
      <section anchor="cryptography-changes">
        <name>Cryptography changes</name>
        <t>The values below were chosen randomly.</t>
        <section anchor="initial-salt">
          <name>Initial Salt</name>
          <t>The salt used to derive Initial keys in <xref section="5.2" sectionFormat="of" target="QUIC-TLS"/> changes to:</t>
          <artwork><![CDATA[
initial_salt = 0xa707c203a59b47184a1d62ca570406ea7ae3e5d3
]]></artwork>
        </section>
        <section anchor="hkdf-labels">
          <name>HKDF Labels</name>
          <ul empty="true">
            <li>
              <t><strong>RFC Editor's Note:</strong>  Please ensure that the strings in quotes are not split
up in a line break in this section.</t>
            </li>
          </ul>
          <t>The labels used in <xref target="QUIC-TLS"/> to derive packet protection keys (Section
<xref section="5.1" sectionFormat="bare" target="QUIC-TLS"/>), header protection keys
(Section <xref section="5.4" sectionFormat="bare" target="QUIC-TLS"/>), Retry Integrity
Tag keys (Section <xref section="5.8" sectionFormat="bare" target="QUIC-TLS"/>), and key
updates (Section <xref section="6.1" sectionFormat="bare" target="QUIC-TLS"/>) change from
"quic key" to "quicv2 key", from "quic iv" to "quicv2 iv", from "quic hp" to
"quicv2 hp", and from "quic ku" to "quicv2 ku", to meet the guidance for new
versions in Section <xref section="9.6" sectionFormat="bare" target="QUIC-TLS"/> of that
document.</t>
        </section>
        <section anchor="retry-integrity-tag">
          <name>Retry Integrity Tag</name>
          <t>The key and nonce used for the Retry Integrity Tag (<xref section="5.8" sectionFormat="of" target="QUIC-TLS"/>)
change to:</t>
          <artwork><![CDATA[
secret =
  0x3425c20cf88779df2ff71e8abfa78249891e763bbed2f13c048343d348c060e2
key = 0xba858dc7b43de5dbf87617ff4ab253db
nonce = 0x141b99c239b03e785d6a2e9f
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="version-negotiation-considerations">
      <name>Version Negotiation Considerations</name>
      <t>QUIC version 2 is not intended to deprecate version 1. Endpoints that support
version 2 might continue support for version 1 to maximize compatibility with
other endpoints. In particular, HTTP clients often use Alt-Svc <xref target="RFC7838"/> to
discover QUIC support. As this mechanism does not currently distinguish between
QUIC versions, HTTP servers <bcp14>SHOULD</bcp14> support multiple versions to reduce the
probability of incompatibility and the cost associated with QUIC version
negotiation or TCP fallback. For example, an origin advertising support for "h3"
in Alt-Svc should support QUIC version 1 as it was the original QUIC version
used by HTTP/3, and therefore some clients will only support that version.</t>
      <t>Any QUIC endpoint that supports QUIC version 2 <bcp14>MUST</bcp14> send, process, and validate
the version_information transport parameter specified in <xref target="QUIC-VN"/> to prevent
version downgrade attacks.</t>
      <t>Note that version 2 meets the <xref target="QUIC-VN"/> definition of a compatible version
with version 1, and version 1 is compatible with version 2. Therefore, servers
can use compatible negotiation to switch a connection between the two versions.
Endpoints that support both versions <bcp14>SHOULD</bcp14> support compatible version
negotiation to avoid a round trip.</t>
      <section anchor="compatible-negotiation-requirements">
        <name>Compatible Negotiation Requirements</name>
        <t>Compatible version negotiation between versions 1 and 2 follow the same
requirements in either direction. This section uses the terms "original
version" and "negotiated version" from <xref target="QUIC-VN"/>.</t>
        <t>If the server sends a Retry packet, it <bcp14>MUST</bcp14> use the original version. The
client ignores Retry packets using other versions. The client <bcp14>MUST NOT</bcp14> use a
different version in the subsequent Initial packet that contains the Retry
token. The server <bcp14>MAY</bcp14> encode the QUIC version in its Retry token to validate
that the client did not switch versions, and drop the packet if it switched,
to enforce client compliance.</t>
        <t>QUIC version 2 uses the same transport parameters to authenticate the Retry as
QUIC version 1. After switching to a negotiated version after a Retry, the
server <bcp14>MUST</bcp14> include the relevant transport parameters to validate that the
server sent the Retry and the connection IDs used in the exchange, as described
in <xref section="7.3" sectionFormat="of" target="QUIC"/>.</t>
        <t>The server cannot send CRYPTO frames until it has processed the client's
transport parameters. The server <bcp14>MUST</bcp14> send all CRYPTO frames using
the negotiated version.</t>
        <t>The client learns the negotiated version by observing the first long header
Version field that differs from the original version. If the client receives a
CRYPTO frame from the server in the original version, that indicates that the
negotiated version is equal to the original version.</t>
        <t>Before the server is able to process transport parameters from the client, it
might need to respond to Initial packets from the client. For these packets, the
server uses the original version.</t>
        <t>Once the client has learned the negotiated version, it <bcp14>SHOULD</bcp14> send subsequent
Initial packets using that version. The server <bcp14>MUST NOT</bcp14> discard its original
version Initial receive keys until it successfully processes a Handshake
packet with the negotiated version.</t>
        <t>Both endpoints <bcp14>MUST</bcp14> send Handshake and 1-RTT packets using the negotiated
version. An endpoint <bcp14>MUST</bcp14> drop packets using any other version. Endpoints have
no need to generate the keying material that would allow them to decrypt or
authenticate such packets.</t>
        <t>The client <bcp14>MUST NOT</bcp14> send 0-RTT packets using the negotiated version, even after
processing a packet of that version from the server. Servers can accept 0-RTT
and then process 0-RTT packets from the original version.</t>
      </section>
    </section>
    <section anchor="tls-resumption-and-newtoken-tokens">
      <name>TLS Resumption and NEW_TOKEN Tokens</name>
      <t>TLS session tickets and NEW_TOKEN tokens are specific to the QUIC version of the
connection that provided them. Clients <bcp14>MUST NOT</bcp14> use a session ticket or token
from a QUIC version 1 connection to initiate a QUIC version 2 connection, or vice
versa.</t>
      <t>Servers <bcp14>MUST</bcp14> validate the originating version of any session ticket or token and
not accept one issued from a different version. A rejected ticket results in
falling back to a full TLS handshake, without 0-RTT. A rejected token results in
the client address remaining unverified, which limits the amount of data the
server can send.</t>
      <t>After compatible version negotiation, any resulting session ticket
maps to the negotiated version rather than original one.</t>
    </section>
    <section anchor="ossification-considerations">
      <name>Ossification Considerations</name>
      <t>QUIC version 2 provides protection against some forms of ossification. Devices
that assume that all long headers will encode version 1, or that the version 1
Initial key derivation formula will remain version-invariant, will not correctly
process version 2 packets.</t>
      <t>However, many middleboxes, such as firewalls, focus on the first packet in a
connection, which will often remain in the version 1 format due to the
considerations above.</t>
      <t>Clients interested in combating middlebox ossification can initiate a connection
using version 2 if they are either reasonably certain the server supports it, or
are willing to suffer a round-trip penalty if they are incorrect.  In
particular, a server that issues a session ticket for version 2 indicates an
intent to maintain version 2 support while the ticket remains valid, even if
support cannot be guaranteed.</t>
    </section>
    <section anchor="applicability">
      <name>Applicability</name>
      <t>This version of QUIC provides no change from QUIC version 1 relating to the
capabilities available to applications. Therefore, all Application Layer
Protocol Negotiation (ALPN) (<xref target="RFC7301"/>) codepoints specified to operate over
QUIC version 1 can also operate over this version of QUIC. In particular, both
the "h3" <xref target="H3"/> and "doq" <xref target="RFC9250"/> ALPNs can operate over
QUIC version 2.</t>
      <t>Unless otherwise stated, all QUIC extensions defined to work with version 1 also
work with version 2.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>QUIC version 2 introduces no changes to the security or privacy properties of
QUIC version 1.</t>
      <t>The mandatory version negotiation mechanism guards against downgrade attacks,
but downgrades have no security implications, as the version properties are
identical.</t>
      <t>Support for QUIC version 2 can help an observer to fingerprint both client and
server devices.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests that IANA add the following entry to the QUIC version
registry maintained at
&lt;<eref target="https://www.iana.org/assignments/quic/quic.xhtml#quic-versions"/>&gt;.</t>
      <dl spacing="compact">
        <dt>Value:</dt>
        <dd>
          <t>0x709a50c4</t>
        </dd>
        <dt>Status:</dt>
        <dd>
          <t>permanent</t>
        </dd>
        <dt>Specification:</dt>
        <dd>
          <t>This Document</t>
        </dd>
        <dt>Change Controller:</dt>
        <dd>
          <t>IETF</t>
        </dd>
        <dt>Contact:</dt>
        <dd>
          <t>QUIC WG</t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <displayreference target="H3" to="HTTP/3"/>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="QUIC">
          <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="QUIC-TLS">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </reference>
        <reference anchor="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="6" month="November" 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-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="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="QUIC-RECOVERY">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
              <organization/>
            </author>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes loss detection and congestion control mechanisms for QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9002"/>
          <seriesInfo name="DOI" value="10.17487/RFC9002"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="H3">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop">
              <organization/>
            </author>
            <date month="June" year="2022"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment.  This document describes a mapping of HTTP semantics over QUIC.  This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </reference>
        <reference anchor="QUIC-INVARIANTS">
          <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>
        <reference anchor="RFC7838">
          <front>
            <title>HTTP Alternative Services</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <author fullname="P. McManus" initials="P." surname="McManus">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." surname="Reschke">
              <organization/>
            </author>
            <date month="April" year="2016"/>
            <abstract>
              <t>This document specifies "Alternative Services" for HTTP, which allow an origin's resources to be authoritatively available at a separate network location, possibly accessed with a different protocol configuration.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7838"/>
          <seriesInfo name="DOI" value="10.17487/RFC7838"/>
        </reference>
        <reference anchor="RFC7301">
          <front>
            <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
            <author fullname="S. Friedl" initials="S." surname="Friedl">
              <organization/>
            </author>
            <author fullname="A. Popov" initials="A." surname="Popov">
              <organization/>
            </author>
            <author fullname="A. Langley" initials="A." surname="Langley">
              <organization/>
            </author>
            <author fullname="E. Stephan" initials="E." surname="Stephan">
              <organization/>
            </author>
            <date month="July" year="2014"/>
            <abstract>
              <t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7301"/>
          <seriesInfo name="DOI" value="10.17487/RFC7301"/>
        </reference>
        <reference anchor="RFC9250">
          <front>
            <title>DNS over Dedicated QUIC Connections</title>
            <author fullname="C. Huitema" initials="C." surname="Huitema">
              <organization/>
            </author>
            <author fullname="S. Dickinson" initials="S." surname="Dickinson">
              <organization/>
            </author>
            <author fullname="A. Mankin" initials="A." surname="Mankin">
              <organization/>
            </author>
            <date month="May" year="2022"/>
            <abstract>
              <t>This document describes the use of QUIC to provide transport confidentiality for DNS. The encryption provided by QUIC has similar properties to those provided by TLS, while QUIC transport eliminates the head-of-line blocking issues inherent with TCP and provides more efficient packet-loss recovery than UDP. DNS over QUIC (DoQ) has privacy properties similar to DNS over TLS (DoT) specified in RFC 7858, and latency characteristics similar to classic DNS over UDP. This specification describes the use of DoQ as a general-purpose transport for DNS and includes the use of DoQ for stub to recursive, recursive to authoritative, and zone transfer scenarios.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9250"/>
          <seriesInfo name="DOI" value="10.17487/RFC9250"/>
        </reference>
      </references>
    </references>
    <section anchor="test-vectors">
      <name>Sample Packet Protection</name>
      <t>This section shows examples of packet protection so that implementations can be
verified incrementally. Samples of Initial packets from both client and server
plus a Retry packet are defined. These packets use an 8-byte client-chosen
Destination Connection ID of 0x8394c8f03e515708. Some intermediate values are
included. All values are shown in hexadecimal.</t>
      <section anchor="keys">
        <name>Keys</name>
        <t>The labels generated during the execution of the HKDF-Expand-Label function
(that is, HkdfLabel.label) and part of the value given to the HKDF-Expand
function in order to produce its output are:</t>
        <t>client in:  00200f746c73313320636c69656e7420696e00</t>
        <t>server in:  00200f746c7331332073657276657220696e00</t>
        <t>quicv2 key:  001010746c73313320717569637632206b657900</t>
        <t>quicv2 iv:  000c0f746c7331332071756963763220697600</t>
        <t>quicv2 hp:  00100f746c7331332071756963763220687000</t>
        <t>The initial secret is common:</t>
        <artwork><![CDATA[
initial_secret = HKDF-Extract(initial_salt, cid)
    = ddfcb7b82a430b7845210ad64b406977
      ed51b269a14bc69aa9ea9b366fa3b06b
]]></artwork>
        <t>The secrets for protecting client packets are:</t>
        <artwork><![CDATA[
client_initial_secret
    = HKDF-Expand-Label(initial_secret, "client in", "", 32)
    = 9fe72e1452e91f551b770005054034e4
      7575d4a0fb4c27b7c6cb303a338423ae

key = HKDF-Expand-Label(client_initial_secret, "quicv2 key", "", 16)
    = 95df2be2e8d549c82e996fc9339f4563

iv  = HKDF-Expand-Label(client_initial_secret, "quicv2 iv", "", 12)
    = ea5e3c95f933db14b7020ad8

hp  = HKDF-Expand-Label(client_initial_secret, "quicv2 hp", "", 16)
    = 091efb735702447d07908f6501845794
]]></artwork>
        <t>The secrets for protecting server packets are:</t>
        <artwork><![CDATA[
server_initial_secret
    = HKDF-Expand-Label(initial_secret, "server in", "", 32)
    = 3c9bf6a9c1c8c71819876967bd8b979e
      fd98ec665edf27f22c06e9845ba0ae2f

key = HKDF-Expand-Label(server_initial_secret, "quicv2 key", "", 16)
    = 15d5b4d9a2b8916aa39b1bfe574d2aad

iv  = HKDF-Expand-Label(server_initial_secret, "quicv2 iv", "", 12)
    = a85e7ac31cd275cbb095c626

hp  = HKDF-Expand-Label(server_initial_secret, "quicv2 hp", "", 16)
    = b13861cfadbb9d11ff942dd80c8fc33b
]]></artwork>
      </section>
      <section anchor="sample-client-initial">
        <name>Client Initial</name>
        <t>The client sends an Initial packet.  The unprotected payload of this packet
contains the following CRYPTO frame, plus enough PADDING frames to make a
1162-byte payload:</t>
        <artwork><![CDATA[
060040f1010000ed0303ebf8fa56f129 39b9584a3896472ec40bb863cfd3e868
04fe3a47f06a2b69484c000004130113 02010000c000000010000e00000b6578
616d706c652e636f6dff01000100000a 00080006001d00170018001000070005
04616c706e0005000501000000000033 00260024001d00209370b2c9caa47fba
baf4559fedba753de171fa71f50f1ce1 5d43e994ec74d748002b000302030400
0d0010000e0403050306030203080408 050806002d00020101001c0002400100
3900320408ffffffffffffffff050480 00ffff07048000ffff08011001048000
75300901100f088394c8f03e51570806 048000ffff
]]></artwork>
        <t>The unprotected header indicates a length of 1182 bytes: the 4-byte packet
number, 1162 bytes of frames, and the 16-byte authentication tag.  The header
includes the connection ID and a packet number of 2:</t>
        <artwork><![CDATA[
d3709a50c4088394c8f03e5157080000449e00000002
]]></artwork>
        <t>Protecting the payload produces output that is sampled for header protection.
Because the header uses a 4-byte packet number encoding, the first 16 bytes of
the protected payload is sampled and then applied to the header as follows:</t>
        <artwork><![CDATA[
sample = 23b8e610589c83c92d0e97eb7a6e5003

mask = AES-ECB(hp, sample)[0..4]
     = 8e4391d84a

header[0] ^= mask[0] & 0x0f
     = dd
header[18..21] ^= mask[1..4]
     = 4391d848
header = dd709a50c4088394c8f03e5157080000449e4391d848
]]></artwork>
        <t>The resulting protected packet is:</t>
        <artwork><![CDATA[
dd709a50c4088394c8f03e5157080000 449e4391d84823b8e610589c83c92d0e
97eb7a6e5003f57764c5c7f0095ba54b 90818f1bfeecc1c97c54fc731edbd2a2
44e3b1e639a9bc75ed545b98649343b2 53615ec6b3e4df0fd2e7fe9d691a09e6
a144b436d8a2c088a404262340dfd995 ec3865694e3026ecd8c6d2561a5a3667
2a1005018168c0f081c10e2bf14d550c 977e28bb9a759c57d0f7ffb1cdfb40bd
774dec589657542047dffefa56fc8089 a4d1ef379c81ba3df71a05ddc7928340
775910feb3ce4cbcfd8d253edd05f161 458f9dc44bea017c3117cca7065a315d
eda9464e672ec80c3f79ac993437b441 ef74227ecc4dc9d597f66ab0ab8d214b
55840c70349d7616cbe38e5e1d052d07 f1fedb3dd3c4d8ce295724945e67ed2e
efcd9fb52472387f318e3d9d233be7df c79d6bf6080dcbbb41feb180d7858849
7c3e439d38c334748d2b56fd19ab364d 057a9bd5a699ae145d7fdbc8f5777518
1b0a97c3bdedc91a555d6c9b8634e106 d8c9ca45a9d5450a7679edc545da9102
5bc93a7cf9a023a066ffadb9717ffaf3 414c3b646b5738b3cc4116502d18d79d
8227436306d9b2b3afc6c785ce3c817f eb703a42b9c83b59f0dcef1245d0b3e4
0299821ec19549ce489714fe2611e72c d882f4f70dce7d3671296fc045af5c9f
630d7b49a3eb821bbca60f1984dce664 91713bfe06001a56f51bb3abe92f7960
547c4d0a70f4a962b3f05dc25a34bbe8 30a7ea4736d3b0161723500d82beda9b
e3327af2aa413821ff678b2a876ec4b0 0bb605ffcc3917ffdc279f187daa2fce
8cde121980bba8ec8f44ca562b0f1319 14c901cfbd847408b778e6738c7bb5b1
b3f97d01b0a24dcca40e3bed29411b1b a8f60843c4a241021b23132b9500509b
9a3516d4a9dd41d3bacbcd426b451393 521828afedcf20fa46ac24f44a8e2973
30b16705d5d5f798eff9e9134a065979 87a1db4617caa2d93837730829d4d89e
16413be4d8a8a38a7e6226623b64a820 178ec3a66954e10710e043ae73dd3fb2
715a0525a46343fb7590e5eac7ee55fc 810e0d8b4b8f7be82cd5a214575a1b99
629d47a9b281b61348c8627cab38e2a6 4db6626e97bb8f77bdcb0fee476aedd7
ba8f5441acaab00f4432edab3791047d 9091b2a753f035648431f6d12f7d6a68
1e64c861f4ac911a0f7d6ec0491a78c9 f192f96b3a5e7560a3f056bc1ca85983
67ad6acb6f2e034c7f37beeb9ed470c4 304af0107f0eb919be36a86f68f37fa6
1dae7aff14decd67ec3157a11488a14f ed0142828348f5f608b0fe03e1f3c0af
3acca0ce36852ed42e220ae9abf8f890 6f00f1b86bff8504c8f16c784fd52d25
e013ff4fda903e9e1eb453c1464b1196 6db9b28e8f26a3fc419e6a60a48d4c72
14ee9c6c6a12b68a32cac8f61580c64f 29cb6922408783c6d12e725b014fe485
cd17e484c5952bf99bc94941d4b1919d 04317b8aa1bd3754ecbaa10ec227de85
40695bf2fb8ee56f6dc526ef366625b9 1aa4970b6ffa5c8284b9b5ab852b905f
9d83f5669c0535bc377bcc05ad5e48e2 81ec0e1917ca3c6a471f8da0894bc82a
c2a8965405d6eef3b5e293a88fda203f 09bdc72757b107ab14880eaa3ef7045b
580f4821ce6dd325b5a90655d8c5b55f 76fb846279a9b518c5e9b9a21165c509
3ed49baaacadf1f21873266c767f6769
]]></artwork>
      </section>
      <section anchor="server-initial">
        <name>Server Initial</name>
        <t>The server sends the following payload in response, including an ACK frame, a
CRYPTO frame, and no PADDING frames:</t>
        <artwork><![CDATA[
02000000000600405a020000560303ee fce7f7b37ba1d1632e96677825ddf739
88cfc79825df566dc5430b9a045a1200 130100002e00330024001d00209d3c94
0d89690b84d08a60993c144eca684d10 81287c834d5311bcf32bb9da1a002b00
020304
]]></artwork>
        <t>The header from the server includes a new connection ID and a 2-byte packet
number encoding for a packet number of 1:</t>
        <artwork><![CDATA[
d1709a50c40008f067a5502a4262b50040750001
]]></artwork>
        <t>As a result, after protection, the header protection sample is taken starting
from the third protected byte:</t>
        <artwork><![CDATA[
sample = ebb7972fdce59d50e7e49ff2a7e8de76
mask   = 41103f438e
header = d0709a50c40008f067a5502a4262b5004075103e
]]></artwork>
        <t>The final protected packet is then:</t>
        <artwork><![CDATA[
d0709a50c40008f067a5502a4262b500 4075103e63b4ebb7972fdce59d50e7e4
9ff2a7e8de76b0cd8c10100a1f13d549 dd6fe801588fb14d279bef8d7c53ef62
66a9a7a1a5f2fa026c236a5bf8df5aa0 f9d74773aeccfffe910b0f76814b5e33
f7b7f8ec278d23fd8c7a9e66856b8bbe 72558135bca27c54d63fcc902253461c
fc089d4e6b9b19
]]></artwork>
      </section>
      <section anchor="retry">
        <name>Retry</name>
        <t>This shows a Retry packet that might be sent in response to the Initial packet
in <xref target="sample-client-initial"/>. The integrity check includes the client-chosen
connection ID value of 0x8394c8f03e515708, but that value is not
included in the final Retry packet:</t>
        <artwork><![CDATA[
cf709a50c40008f067a5502a4262b574 6f6b656e1dc71130cd1ed39d6efcee5c
85806501
]]></artwork>
      </section>
      <section anchor="chacha20-poly1305-short-header-packet">
        <name>ChaCha20-Poly1305 Short Header Packet</name>
        <t>This example shows some of the steps required to protect a packet with
a short header.  This example uses AEAD_CHACHA20_POLY1305.</t>
        <t>In this example, TLS produces an application write secret from which a server
uses HKDF-Expand-Label to produce four values: a key, an IV, a header
protection key, and the secret that will be used after keys are updated (this
last value is not used further in this example).</t>
        <artwork><![CDATA[
secret
    = 9ac312a7f877468ebe69422748ad00a1
      5443f18203a07d6060f688f30f21632b

key = HKDF-Expand-Label(secret, "quicv2 key", "", 32)
    = 3bfcddd72bcf02541d7fa0dd1f5f9eee
      a817e09a6963a0e6c7df0f9a1bab90f2

iv  = HKDF-Expand-Label(secret, "quicv2 iv", "", 12)
    = a6b5bc6ab7dafce30ffff5dd

hp  = HKDF-Expand-Label(secret, "quicv2 hp", "", 32)
    = d659760d2ba434a226fd37b35c69e2da
      8211d10c4f12538787d65645d5d1b8e2

ku  = HKDF-Expand-Label(secret, "quicv2 ku", "", 32)
    = c69374c49e3d2a9466fa689e49d476db
      5d0dfbc87d32ceeaa6343fd0ae4c7d88
]]></artwork>
        <t>The following shows the steps involved in protecting a minimal packet with an
empty Destination Connection ID. This packet contains a single PING frame (that
is, a payload of just 0x01) and has a packet number of 654360564. In this
example, using a packet number of length 3 (that is, 49140 is encoded) avoids
having to pad the payload of the packet; PADDING frames would be needed if the
packet number is encoded on fewer bytes.</t>
        <artwork><![CDATA[
pn                 = 654360564 (decimal)
nonce              = a6b5bc6ab7dafce328ff4a29
unprotected header = 4200bff4
payload plaintext  = 01
payload ciphertext = 0ae7b6b932bc27d786f4bc2bb20f2162ba
]]></artwork>
        <t>The resulting ciphertext is the minimum size possible. One byte is skipped to
produce the sample for header protection.</t>
        <artwork><![CDATA[
sample = e7b6b932bc27d786f4bc2bb20f2162ba
mask   = 97580e32bf
header = 5558b1c6
]]></artwork>
        <t>The protected packet is the smallest possible packet size of 21 bytes.</t>
        <artwork><![CDATA[
packet = 5558b1c60ae7b6b932bc27d786f4bc2bb20f2162ba
]]></artwork>
      </section>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The author would like to thank Christian Huitema, Lucas Pardue, Kyle Rose,
Anthony Rossi, Zahed Sarker, David Schinazi, Tatsuhiro Tsujikawa, and Martin
Thomson for their helpful suggestions.</t>
    </section>
    <section anchor="changelog">
      <name>Changelog</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-ietf-quic-v2-06">
        <name>since draft-ietf-quic-v2-06</name>
        <ul spacing="normal">
          <li>Clients <bcp14>MUST NOT</bcp14> use TLS resumption tickets across versions</li>
          <li>Servers <bcp14>SHOULD</bcp14> support multiple versions</li>
          <li>Clients <bcp14>SHOULD</bcp14> check path support for QUIC independently by version</li>
          <li>Minor editorial changes</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-v2-05">
        <name>since draft-ietf-quic-v2-05</name>
        <ul spacing="normal">
          <li>Servers <bcp14>MUST</bcp14> use the negotiated version in Initials with CRYPTO frames.</li>
          <li>Clarified when clients "learn" the negotiated version as required in the VN
draft.</li>
          <li>Comments from SECDIR review.</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-v2-04">
        <name>since draft-ietf-quic-v2-04</name>
        <ul spacing="normal">
          <li>Clarified 0-RTT handling</li>
          <li>Editorial comments from Zahed Sarker.</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-v2-03">
        <name>since draft-ietf-quic-v2-03</name>
        <ul spacing="normal">
          <li>a v2 session ticket is an indication of v2 support</li>
          <li>a v1-only extension is theoretically possible</li>
          <li>editorial fixes</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-v2-02">
        <name>since draft-ietf-quic-v2-02</name>
        <ul spacing="normal">
          <li>Editorial comments from Lucas Pardue</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-v2-01">
        <name>since draft-ietf-quic-v2-01</name>
        <ul spacing="normal">
          <li>Ban use of NEW_TOKEN tokens across versions</li>
          <li>version-info transport parameter required for all v2 endpoints</li>
          <li>Explicitly list known ALPN compatibility</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-v2-00">
        <name>since draft-ietf-quic-v2-00</name>
        <ul spacing="normal">
          <li>Expanded requirements for compatible version negotiation</li>
          <li>Added test vectors</li>
          <li>Greased the packet type codepoints</li>
          <li>Random version number</li>
          <li>Clarified requirement to use QUIC-VN</li>
          <li>Banned use of resumption tokens across versions</li>
        </ul>
      </section>
      <section anchor="since-draft-duke-quic-v2-02">
        <name>since draft-duke-quic-v2-02</name>
        <ul spacing="normal">
          <li>Converted to adopted draft</li>
          <li>Deleted references to QUIC improvements</li>
          <li>Clarified status of QUIC extensions</li>
        </ul>
      </section>
      <section anchor="since-draft-duke-quic-v2-01">
        <name>since draft-duke-quic-v2-01</name>
        <ul spacing="normal">
          <li>Made the final version number TBD.</li>
          <li>Added ALPN considerations</li>
        </ul>
      </section>
      <section anchor="since-draft-duke-quic-v2-00">
        <name>since draft-duke-quic-v2-00</name>
        <ul spacing="normal">
          <li>Added provisional versions for interop</li>
          <li>Change the v1 Retry Tag secret</li>
          <li>Change labels to create full key separation</li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA5186XIcR5Lm/3iKWNBsh5QBpbwPzrBnIJISaaJILolWm7at
VxZXAtmoqqzOzAKIobGfZZ5ln2w/j4i8CkVCO2yRDeQRh4f75597eOTZ2Rnr
635tnvL/9efXz/mvpu3qZssjJqRszY27fBMx3ait2OAx3YqqP6tNX539Y1+r
s5voLMiZEr25bNq7p7zrNcNrMev2clN31Fp/t8OLr19e/MhEa8RTfnLRim23
a9r+hN027fVl2+x3uEx9nbAbs92bp4zz5WXOXTsnf8Eb9faS/0S36fpG1Gtc
p+H8Bw1s1bSXdF206grXr/p+1z39/nt6jC7VN2Y1PPY9Xfhets1tZ76nBr6n
Fy/r/movfZO3l9/7idKtNSba9bNW3SO2Lf/Y9/dFtLrqN+sTxsS+v2pamtsZ
/nJeb7un/JcVf7G/NvaCk/Evou3r7XQVjT/lPzXN5drwN2+e22vGzXpjH11d
rTQe/o9LurhSzYaxbdNuRI+5Um8kwaf8w4/PyyAI/O9nF28+DtdCxuptNX/j
VfzUdvPMPRKGif1V191uLbDMry4u3n8fM8bOzs64kF3fCtUzdnFVdxy6st+Y
bc+7nVF1VZvOKdfNoFyn/PaqVlccz9YaD9ZKrHnfLJ8KmfmkzK7nGBfvmo3h
fVvf1HhSmx7T7Fb8dd/x3b7dNZ2httACpi5Fz29EWzf7jjfQvwqt92gQeqX6
pu242GpuPplW1XitvzJjj1uocF/bh3nVYiVIN6kXLtZdwzvT3mAqAv+x3mx2
pAp2cNTGpt7Wm/2GqyuxvcRTWD6xvePVvt+3Uw9NZee4Yuxt01PnGOvJKJYT
moTYcr8Ua6sNvgfc2bUNZkqSotfqraaJUVc9o8ljEJ1RDSbX9ZiiaHV3Rqty
vRDril/gQTTVN6pZjyuk+ZXBOPcdTZCNAtlvpGl5g7ZpDBhaRBOjrm5rPF5v
xKU5pUtNq+mRxsmh/k+zFH1bd9crpyubWuu1YewRf73t20bvlX2CLdf+82f6
/csXfgVxYximpeU0n3qztQ/smnrbd9S1Wu81ocFsIZkft5VTo9R+Ryo4E1B/
heYur3hVV/0Vl3ckRSyNwft3fN2gtSsjaEKPO2PY58//bu3l9dtfzz+8Pn97
8fEZTKIoy/LLlydQD7z4aWfamlQeq+MHATlCQi3+ObUaR02Mgg2hqNsOwLvv
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
STPuGBnFVJ0hzbY68/8AUt/0175cAAA=

-->

</rfc>
