rfc8999.original.xml | rfc8999.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='utf-8'?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | |||
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.18 --> | -ietf-quic-invariants-13" category="std" consensus="true" number="8999" obsolete | |||
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | s="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs=" | |||
<?rfc toc="yes"?> | true" symRefs="true" version="3"> | |||
<?rfc sortrefs="yes"?> | <link href="https://datatracker.ietf.org/doc/draft-ietf-quic-invariants-13" re | |||
<?rfc symrefs="yes"?> | l="prev"/> | |||
<?rfc docmapping="yes"?> | ||||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | ||||
-ietf-quic-invariants-13" category="std" obsoletes="" updates="" submissionType= | ||||
"IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3 | ||||
"> | ||||
<!-- xml2rfc v2v3 conversion 3.5.0 --> | ||||
<front> | <front> | |||
<title abbrev="QUIC Invariants">Version-Independent Properties of QUIC</titl e> | <title abbrev="QUIC Invariants">Version-Independent Properties of QUIC</titl e> | |||
<seriesInfo name="Internet-Draft" value="draft-ietf-quic-invariants-13"/> | <seriesInfo name="RFC" value="8999"/> | |||
<author initials="M." surname="Thomson" fullname="Martin Thomson"> | <author initials="M." surname="Thomson" fullname="Martin Thomson"> | |||
<organization>Mozilla</organization> | <organization>Mozilla</organization> | |||
<address> | <address> | |||
<email>mt@lowentropy.net</email> | <email>mt@lowentropy.net</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date year="2021" month="January" day="15"/> | <date year="2021" month="May"/> | |||
<area>Transport</area> | <area>Transport</area> | |||
<workgroup>QUIC</workgroup> | <workgroup>QUIC</workgroup> | |||
<keyword>crypto</keyword> | ||||
<keyword>next generation</keyword> | ||||
<keyword>protocol</keyword> | ||||
<keyword>secure</keyword> | ||||
<keyword>transport</keyword> | ||||
<keyword>UDP</keyword> | ||||
<keyword>invariants</keyword> | ||||
<abstract> | <abstract> | |||
<t>This document defines the properties of the QUIC transport protocol tha t are | <t>This document defines the properties of the QUIC transport protocol tha t are | |||
common to all versions of the protocol.</t> | common to all versions of the protocol.</t> | |||
</abstract> | </abstract> | |||
<note> | ||||
<name>Note to Readers</name> | ||||
<t>Discussion of this draft takes place on the QUIC working group mailing | ||||
list | ||||
(<eref target="mailto:quic@ietf.org">quic@ietf.org</eref>), which is archived at | ||||
<eref target="https://mailarchive.ietf.org/arch/search/?email_list=quic"/>.</t> | ||||
<t>Working Group information can be found at <eref target="https://github. | ||||
com/quicwg"/>; source | ||||
code and issues list for this draft can be found at | ||||
<eref target="https://github.com/quicwg/base-drafts/labels/-invariants"/>.</t> | ||||
</note> | ||||
</front> | </front> | |||
<middle> | <middle> | |||
<section anchor="an-extremely-abstract-description-of-quic" numbered="true" toc="default"> | <section anchor="an-extremely-abstract-description-of-quic" numbered="true" toc="default"> | |||
<name>An Extremely Abstract Description of QUIC</name> | <name>An Extremely Abstract Description of QUIC</name> | |||
<t>QUIC is a connection-oriented protocol between two endpoints. Those en dpoints | <t>QUIC is a connection-oriented protocol between two endpoints. Those en dpoints | |||
exchange UDP datagrams. These UDP datagrams contain QUIC packets. QUIC | exchange UDP datagrams. These UDP datagrams contain QUIC packets. QUIC | |||
endpoints use QUIC packets to establish a QUIC connection, which is shared | endpoints use QUIC packets to establish a QUIC connection, which is shared | |||
protocol state between those endpoints.</t> | protocol state between those endpoints.</t> | |||
</section> | </section> | |||
<section anchor="fixed-properties-of-all-quic-versions" numbered="true" toc= "default"> | <section anchor="fixed-properties-of-all-quic-versions" numbered="true" toc= "default"> | |||
<name>Fixed Properties of All QUIC Versions</name> | <name>Fixed Properties of All QUIC Versions</name> | |||
<t>In addition to providing secure, multiplexed transport, QUIC <xref targ et="QUIC-TRANSPORT" format="default"/> | <t>In addition to providing secure, multiplexed transport, QUIC <xref targ et="QUIC-TRANSPORT" format="default"/> | |||
allows for the option to negotiate a version. This allows the protocol to | allows for the option to negotiate a version. This allows the protocol to | |||
change over time in response to new requirements. Many characteristics of the | change over time in response to new requirements. Many characteristics of the | |||
protocol could change between versions.</t> | protocol could change between versions.</t> | |||
<t>This document describes the subset of QUIC that is intended to remain s table as | <t>This document describes the subset of QUIC that is intended to remain s table as | |||
new versions are developed and deployed. All of these invariants are | new versions are developed and deployed. All of these invariants are | |||
IP-version-independent.</t> | independent of the IP version.</t> | |||
<t>The primary goal of this document is to ensure that it is possible to d eploy new | <t>The primary goal of this document is to ensure that it is possible to d eploy new | |||
versions of QUIC. By documenting the properties that cannot change, this | versions of QUIC. By documenting the properties that cannot change, this | |||
document aims to preserve the ability for QUIC endpoints to negotiate changes to | document aims to preserve the ability for QUIC endpoints to negotiate changes to | |||
any other aspect of the protocol. As a consequence, this also guarantees a | any other aspect of the protocol. As a consequence, this also guarantees a | |||
minimal amount of information that is made available to entities other than | minimal amount of information that is made available to entities other than | |||
endpoints. Unless specifically prohibited in this document, any aspect of the | endpoints. Unless specifically prohibited in this document, any aspect of the | |||
protocol can change between different versions.</t> | protocol can change between different versions.</t> | |||
<t><xref target="bad-assumptions" format="default"/> contains a non-exhaus tive list of some incorrect assumptions | <t><xref target="bad-assumptions" format="default"/> contains a non-exhaus tive list of some incorrect assumptions | |||
that might be made based on knowledge of QUIC version 1; these do not apply to | that might be made based on knowledge of QUIC version 1; these do not apply to | |||
every version of QUIC.</t> | every version of QUIC.</t> | |||
</section> | </section> | |||
<section anchor="conventions-and-definitions" numbered="true" toc="default"> | <section anchor="conventions-and-definitions" numbered="true" toc="default"> | |||
<name>Conventions and Definitions</name> | <name>Conventions and Definitions</name> | |||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL | <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14 | |||
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", | >REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14> | |||
"MAY", and "OPTIONAL" in this document are to be interpreted as | SHOULD</bcp14>", | |||
described in BCP 14 <xref target="RFC2119" format="default"/> <xref target= | "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMEND | |||
"RFC8174" format="default"/> when, and only when, they | ED</bcp14>", "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this | |||
appear in all capitals, as shown here.</t> | document are to be interpreted as described in BCP 14 <xref target="RFC2119" for | |||
mat="default"/> <xref target="RFC8174" format="default"/> | ||||
when, and only when, they appear in all capitals, as shown here.</t> | ||||
<t>This document defines requirements on future QUIC versions, even where normative | <t>This document defines requirements on future QUIC versions, even where normative | |||
language is not used.</t> | language is not used.</t> | |||
<t>This document uses terms and notational conventions from <xref target=" QUIC-TRANSPORT" format="default"/>.</t> | <t>This document uses terms and notational conventions from <xref target=" QUIC-TRANSPORT" format="default"/>.</t> | |||
</section> | </section> | |||
<section anchor="notational-conventions" numbered="true" toc="default"> | <section anchor="notational-conventions" numbered="true" toc="default"> | |||
<name>Notational Conventions</name> | <name>Notational Conventions</name> | |||
<t>The format of packets is described using the notation defined in this s ection. | <t>The format of packets is described using the notation defined in this s ection. | |||
This notation is the same as that used in <xref target="QUIC-TRANSPORT" format=" default"/>.</t> | This notation is the same as that used in <xref target="QUIC-TRANSPORT" format=" default"/>.</t> | |||
<t>Complex fields are named and then followed by a list of fields surround ed by a | <t>Complex fields are named and then followed by a list of fields surround ed by a | |||
pair of matching braces. Each field in this list is separated by commas.</t> | pair of matching braces. Each field in this list is separated by commas.</t> | |||
<t>Individual fields include length information, plus indications about fi xed | <t>Individual fields include length information, plus indications about fi xed | |||
value, optionality, or repetitions. Individual fields use the following | value, optionality, or repetitions. Individual fields use the following | |||
notational conventions, with all lengths in bits:</t> | notational conventions, with all lengths in bits:</t> | |||
<dl> | <dl> | |||
<dt> | <dt>x (A):</dt> | |||
x (A): </dt> | ||||
<dd> | <dd> | |||
<t>Indicates that x is A bits long</t> | <t>Indicates that x is A bits long</t> | |||
</dd> | </dd> | |||
<dt> | <dt>x (A..B):</dt> | |||
x (A..B): </dt> | ||||
<dd> | <dd> | |||
<t>Indicates that x can be any length from A to B; A can be omitted to indicate | <t>Indicates that x can be any length from A to B; A can be omitted to indicate | |||
a minimum of zero bits and B can be omitted to indicate no set upper limit; | a minimum of zero bits, and B can be omitted to indicate no set upper limit; | |||
values in this format always end on an byte boundary</t> | values in this format always end on a byte boundary</t> | |||
</dd> | </dd> | |||
<dt> | <dt>x (L) = C:</dt> | |||
x (L) = C: </dt> | ||||
<dd> | <dd> | |||
<t>Indicates that x, with a length described by L, has a fixed value o | <t>Indicates that x has a fixed value of C; the length of x is describ | |||
f C</t> | ed by | |||
L, which can use any of the length forms above</t> | ||||
</dd> | </dd> | |||
<dt> | <dt>x (L) ...:</dt> | |||
x (L) ...: </dt> | ||||
<dd> | <dd> | |||
<t>Indicates that x is repeated zero or more times (and that each inst | <t>Indicates that x is repeated zero or more times and that each insta | |||
ance is | nce has a | |||
length L)</t> | length of L</t> | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
<t>This document uses network byte order (that is, big endian) values. Fi elds | <t>This document uses network byte order (that is, big endian) values. Fi elds | |||
are placed starting from the high-order bits of each byte.</t> | are placed starting from the high-order bits of each byte.</t> | |||
<t><xref target="fig-ex-format" format="default"/> shows an example struct ure:</t> | <t><xref target="fig-ex-format" format="default"/> shows an example struct ure:</t> | |||
<figure anchor="fig-ex-format"> | <figure anchor="fig-ex-format"> | |||
<name>Example Format</name> | <name>Example Format</name> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
Example Structure { | Example Structure { | |||
One-bit Field (1), | One-bit Field (1), | |||
skipping to change at line 132 ¶ | skipping to change at line 119 ¶ | |||
} | } | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="quic-packets" numbered="true" toc="default"> | <section anchor="quic-packets" numbered="true" toc="default"> | |||
<name>QUIC Packets</name> | <name>QUIC Packets</name> | |||
<t>QUIC endpoints exchange UDP datagrams that contain one or more QUIC pac kets. | <t>QUIC endpoints exchange UDP datagrams that contain one or more QUIC pac kets. | |||
This section describes the invariant characteristics of a QUIC packet. A | This section describes the invariant characteristics of a QUIC packet. A | |||
version of QUIC could permit multiple QUIC packets in a single UDP datagram, but | version of QUIC could permit multiple QUIC packets in a single UDP datagram, but | |||
the invariant properties only describe the first packet in a datagram.</t> | the invariant properties only describe the first packet in a datagram.</t> | |||
<t>QUIC defines two types of packet header: long and short. Packets with | <t>QUIC defines two types of packet headers: long and short. Packets with | |||
long | a long | |||
headers are identified by the most significant bit of the first byte being set; | header are identified by the most significant bit of the first byte being set; | |||
packets with a short header have that bit cleared.</t> | packets with a short header have that bit cleared.</t> | |||
<t>QUIC packets might be integrity protected, including the header. Howev er, QUIC | <t>QUIC packets might be integrity protected, including the header. Howev er, QUIC | |||
Version Negotiation packets are not integrity protected; see <xref target="vn" f ormat="default"/>.</t> | Version Negotiation packets are not integrity protected; see <xref target="vn" f ormat="default"/>.</t> | |||
<t>Aside from the values described here, the payload of QUIC packets is | <t>Aside from the values described here, the payload of QUIC packets is | |||
version-specific and of arbitrary length.</t> | version specific and of arbitrary length.</t> | |||
<section anchor="long-header" numbered="true" toc="default"> | <section anchor="long-header" numbered="true" toc="default"> | |||
<name>Long Header</name> | <name>Long Header</name> | |||
<t>Long headers take the form described in <xref target="fig-long" forma t="default"/>.</t> | <t>Long headers take the form described in <xref target="fig-long" forma t="default"/>.</t> | |||
<figure anchor="fig-long"> | <figure anchor="fig-long"> | |||
<name>QUIC Long Header</name> | <name>QUIC Long Header</name> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
Long Header Packet { | Long Header Packet { | |||
Header Form (1) = 1, | Header Form (1) = 1, | |||
Version-Specific Bits (7), | Version-Specific Bits (7), | |||
Version (32), | Version (32), | |||
skipping to change at line 189 ¶ | skipping to change at line 176 ¶ | |||
Header Form (1) = 0, | Header Form (1) = 0, | |||
Version-Specific Bits (7), | Version-Specific Bits (7), | |||
Destination Connection ID (..), | Destination Connection ID (..), | |||
Version-Specific Data (..), | Version-Specific Data (..), | |||
} | } | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<t>A QUIC packet with a short header has the high bit of the first byte set to 0.</t> | <t>A QUIC packet with a short header has the high bit of the first byte set to 0.</t> | |||
<t>A QUIC packet with a short header includes a Destination Connection I D | <t>A QUIC packet with a short header includes a Destination Connection I D | |||
immediately following the first byte. The short header does not include the | immediately following the first byte. The short header does not include the | |||
Connection ID Lengths, Source Connection ID, or Version fields. The length of | Destination Connection ID Length, Source Connection ID Length, Source Connection | |||
the Destination Connection ID is not encoded in packets with a short header | ID, or Version fields. The length of the Destination Connection ID is not | |||
and is not constrained by this specification.</t> | encoded in packets with a short header and is not constrained by this | |||
specification.</t> | ||||
<t>The remainder of the packet has version-specific semantics.</t> | <t>The remainder of the packet has version-specific semantics.</t> | |||
</section> | </section> | |||
<section anchor="connection-id" numbered="true" toc="default"> | <section anchor="connection-id" numbered="true" toc="default"> | |||
<name>Connection ID</name> | <name>Connection ID</name> | |||
<t>A connection ID is an opaque field of arbitrary length.</t> | <t>A connection ID is an opaque field of arbitrary length.</t> | |||
<t>The primary function of a connection ID is to ensure that changes in addressing | <t>The primary function of a connection ID is to ensure that changes in addressing | |||
at lower protocol layers (UDP, IP, and below) do not cause packets for a QUIC | at lower protocol layers (UDP, IP, and below) do not cause packets for a QUIC | |||
connection to be delivered to the wrong QUIC endpoint. The connection ID | connection to be delivered to the wrong QUIC endpoint. The connection ID | |||
is used by endpoints and the intermediaries that support them to ensure that | is used by endpoints and the intermediaries that support them to ensure that | |||
each QUIC packet can be delivered to the correct instance of an endpoint. At | each QUIC packet can be delivered to the correct instance of an endpoint. At | |||
the endpoint, the connection ID is used to identify the QUIC connection for | the endpoint, the connection ID is used to identify the QUIC connection for | |||
which the packet is intended.</t> | which the packet is intended.</t> | |||
<t>The connection ID is chosen by each endpoint using version-specific m ethods. | <t>The connection ID is chosen by each endpoint using version-specific m ethods. | |||
Packets for the same QUIC connection might use different connection ID values.</ t> | Packets for the same QUIC connection might use different connection ID values.</ t> | |||
</section> | </section> | |||
<section anchor="version" numbered="true" toc="default"> | <section anchor="version" numbered="true" toc="default"> | |||
<name>Version</name> | <name>Version</name> | |||
<t>The Version field contains a 4-byte identifier. This value can be us ed by | <t>The Version field contains a 4-byte identifier. This value can be us ed by | |||
endpoints to identify a QUIC Version. A Version field with a value of | endpoints to identify a QUIC version. A Version field with a value of | |||
0x00000000 is reserved for version negotiation; see <xref target="vn" format="de fault"/>. All other values | 0x00000000 is reserved for version negotiation; see <xref target="vn" format="de fault"/>. All other values | |||
are potentially valid.</t> | are potentially valid.</t> | |||
<t>The properties described in this document apply to all versions of QU IC. A | <t>The properties described in this document apply to all versions of QU IC. A | |||
protocol that does not conform to the properties described in this document is | protocol that does not conform to the properties described in this document is | |||
not QUIC. Future documents might describe additional properties that apply to | not QUIC. Future documents might describe additional properties that apply to | |||
a specific QUIC version, or to a range of QUIC versions.</t> | a specific QUIC version or to a range of QUIC versions.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="vn" numbered="true" toc="default"> | <section anchor="vn" numbered="true" toc="default"> | |||
<name>Version Negotiation</name> | <name>Version Negotiation</name> | |||
<t>A QUIC endpoint that receives a packet with a long header and a version it | <t>A QUIC endpoint that receives a packet with a long header and a version it | |||
either does not understand or does not support might send a Version Negotiation | either does not understand or does not support might send a Version Negotiation | |||
packet in response. Packets with a short header do not trigger version | packet in response. Packets with a short header do not trigger version | |||
negotiation.</t> | negotiation.</t> | |||
<t>A Version Negotiation packet sets the high bit of the first byte, and t hus it | <t>A Version Negotiation packet sets the high bit of the first byte, and t hus it | |||
conforms with the format of a packet with a long header as defined in | conforms with the format of a packet with a long header as defined in | |||
skipping to change at line 245 ¶ | skipping to change at line 233 ¶ | |||
Version (32) = 0, | Version (32) = 0, | |||
Destination Connection ID Length (8), | Destination Connection ID Length (8), | |||
Destination Connection ID (0..2040), | Destination Connection ID (0..2040), | |||
Source Connection ID Length (8), | Source Connection ID Length (8), | |||
Source Connection ID (0..2040), | Source Connection ID (0..2040), | |||
Supported Version (32) ..., | Supported Version (32) ..., | |||
} | } | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<t>Only the most significant bit of the first byte of a Version Negotiatio n packet | <t>Only the most significant bit of the first byte of a Version Negotiatio n packet | |||
has any defined value. The remaining 7 bits, labeled Unused, can be set to any | has any defined value. The remaining 7 bits, labeled "Unused", can be set to | |||
value when sending and MUST be ignored on receipt.</t> | any value when sending and <bcp14>MUST</bcp14> be ignored on receipt.</t> | |||
<t>After the Source Connection ID field, the Version Negotiation packet co ntains a | <t>After the Source Connection ID field, the Version Negotiation packet co ntains a | |||
list of Supported Version fields, each identifying a version that the endpoint | list of Supported Version fields, each identifying a version that the endpoint | |||
sending the packet supports. A Version Negotiation packet contains no other | sending the packet supports. A Version Negotiation packet contains no other | |||
fields. An endpoint MUST ignore a packet that contains no Supported Version | fields. An endpoint <bcp14>MUST</bcp14> ignore a packet that contains no Suppor | |||
fields, or a truncated Supported Version.</t> | ted Version | |||
fields or contains a truncated Supported Version value.</t> | ||||
<t>Version Negotiation packets do not use integrity or confidentiality pro tection. | <t>Version Negotiation packets do not use integrity or confidentiality pro tection. | |||
Specific QUIC versions might include protocol elements that allow endpoints to | Specific QUIC versions might include protocol elements that allow endpoints to | |||
detect modification or corruption in the set of supported versions.</t> | detect modification or corruption in the set of supported versions.</t> | |||
<t>An endpoint MUST include the value from the Source Connection ID field | <t>An endpoint <bcp14>MUST</bcp14> include the value from the Source Conne | |||
of the | ction ID field of the | |||
packet it receives in the Destination Connection ID field. The value for Source | packet it receives in the Destination Connection ID field. The value for the | |||
Connection ID MUST be copied from the Destination Connection ID of the received | Source Connection ID field <bcp14>MUST</bcp14> be copied from the Destination Co | |||
packet, which is initially randomly selected by a client. Echoing both | nnection ID | |||
connection IDs gives clients some assurance that the server received the packet | field of the received packet, which is initially randomly selected by a client. | |||
and that the Version Negotiation packet was not generated by an attacker that is | Echoing both connection IDs gives clients some assurance that the server | |||
unable to observe packets.</t> | received the packet and that the Version Negotiation packet was not generated by | |||
an attacker that is unable to observe packets.</t> | ||||
<t>An endpoint that receives a Version Negotiation packet might change the version | <t>An endpoint that receives a Version Negotiation packet might change the version | |||
that it decides to use for subsequent packets. The conditions under which an | that it decides to use for subsequent packets. The conditions under which an | |||
endpoint changes QUIC version will depend on the version of QUIC that it | endpoint changes its QUIC version will depend on the version of QUIC that it | |||
chooses.</t> | chooses.</t> | |||
<t>See <xref target="QUIC-TRANSPORT" format="default"/> for a more thoroug h description of how an endpoint that | <t>See <xref target="QUIC-TRANSPORT" format="default"/> for a more thoroug h description of how an endpoint that | |||
supports QUIC version 1 generates and consumes a Version Negotiation packet.</t> | supports QUIC version 1 generates and consumes a Version Negotiation packet.</t> | |||
</section> | </section> | |||
<section anchor="security-and-privacy-considerations" numbered="true" toc="d efault"> | <section anchor="security-and-privacy-considerations" numbered="true" toc="d efault"> | |||
<name>Security and Privacy Considerations</name> | <name>Security and Privacy Considerations</name> | |||
<t>It is possible that middleboxes could observe traits of a specific vers ion of | <t>It is possible that middleboxes could observe traits of a specific vers ion of | |||
QUIC and assume that when other versions of QUIC exhibit similar traits the same | QUIC and assume that when other versions of QUIC exhibit similar traits the same | |||
underlying semantic is being expressed. There are potentially many such traits; | underlying semantic is being expressed. There are potentially many such traits; | |||
see <xref target="bad-assumptions" format="default"/>. Some effort has been mad e to either eliminate or | see <xref target="bad-assumptions" format="default"/>. Some effort has been mad e to either eliminate or | |||
obscure some observable traits in QUIC version 1, but many of these remain. | obscure some observable traits in QUIC version 1, but many of these remain. | |||
Other QUIC versions might make different design decisions and so exhibit | Other QUIC versions might make different design decisions and so exhibit | |||
different traits.</t> | different traits.</t> | |||
<t>The QUIC version number does not appear in all QUIC packets, which mean s that | <t>The QUIC version number does not appear in all QUIC packets, which mean s that | |||
reliably extracting information from a flow based on version-specific traits | reliably extracting information from a flow based on version-specific traits | |||
requires that middleboxes retain state for every connection ID they see.</t> | requires that middleboxes retain state for every connection ID they see.</t> | |||
<t>The Version Negotiation packet described in this document is not | <t>The Version Negotiation packet described in this document is not | |||
integrity-protected; it only has modest protection against insertion by | integrity protected; it only has modest protection against insertion by | |||
attackers. An endpoint MUST authenticate the semantic content of a Version | attackers. An endpoint <bcp14>MUST</bcp14> authenticate the semantic content of | |||
a Version | ||||
Negotiation packet if it attempts a different QUIC version as a result.</t> | Negotiation packet if it attempts a different QUIC version as a result.</t> | |||
</section> | </section> | |||
<section anchor="iana-considerations" numbered="true" toc="default"> | ||||
<name>IANA Considerations</name> | ||||
<t>This document makes no request of IANA.</t> | ||||
</section> | ||||
</middle> | </middle> | |||
<back> | <back> | |||
<references> | <references> | |||
<name>References</name> | <name>References</name> | |||
<references> | <references> | |||
<name>Normative References</name> | <name>Normative References</name> | |||
<reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2 119"> | <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2 119"> | |||
<front> | <front> | |||
<title>Key words for use in RFCs to Indicate Requirement Levels</tit le> | <title>Key words for use in RFCs to Indicate Requirement Levels</tit le> | |||
<author initials="S." surname="Bradner" fullname="S. Bradner"> | <author fullname="S. Bradner" initials="S." surname="Bradner"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<date year="1997" month="March"/> | <date month="March" year="1997"/> | |||
<abstract> | <abstract> | |||
<t>In many standards track documents several words are used to sig nify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF document s. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t> | <t>In many standards track documents several words are used to sig nify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF document s. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<seriesInfo name="BCP" value="14"/> | <seriesInfo name="BCP" value="14"/> | |||
<seriesInfo name="RFC" value="2119"/> | <seriesInfo name="RFC" value="2119"/> | |||
<seriesInfo name="DOI" value="10.17487/RFC2119"/> | <seriesInfo name="DOI" value="10.17487/RFC2119"/> | |||
</reference> | </reference> | |||
<reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8 174"> | <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8 174"> | |||
<front> | <front> | |||
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti tle> | <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti tle> | |||
<author initials="B." surname="Leiba" fullname="B. Leiba"> | <author fullname="B. Leiba" initials="B." surname="Leiba"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<date year="2017" month="May"/> | <date month="May" year="2017"/> | |||
<abstract> | <abstract> | |||
<t>RFC 2119 specifies common key words that may be used in protoco l specifications. This document aims to reduce the ambiguity by clarifying tha t only UPPERCASE usage of the key words have the defined special meanings.</t> | <t>RFC 2119 specifies common key words that may be used in protoco l specifications. This document aims to reduce the ambiguity by clarifying tha t only UPPERCASE usage of the key words have the defined special meanings.</t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<seriesInfo name="BCP" value="14"/> | <seriesInfo name="BCP" value="14"/> | |||
<seriesInfo name="RFC" value="8174"/> | <seriesInfo name="RFC" value="8174"/> | |||
<seriesInfo name="DOI" value="10.17487/RFC8174"/> | <seriesInfo name="DOI" value="10.17487/RFC8174"/> | |||
</reference> | </reference> | |||
</references> | </references> | |||
<references> | <references> | |||
<name>Informative References</name> | <name>Informative References</name> | |||
<reference anchor="QUIC-TRANSPORT"> | <reference anchor="QUIC-TRANSPORT" target="https://www.rfc-editor.org/in fo/rfc9000"> | |||
<front> | <front> | |||
<title>QUIC: A UDP-Based Multiplexed and Secure Transport</title> | <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title> | |||
<author initials="J." surname="Iyengar" fullname="Jana Iyengar" role ="editor"> | <author initials="J." surname="Iyengar" fullname="Jana Iyengar" role ="editor"> | |||
<organization>Google</organization> | <organization>Google</organization> | |||
</author> | </author> | |||
<author initials="M." surname="Thomson" fullname="Martin Thomson" ro le="editor"> | <author initials="M." surname="Thomson" fullname="Martin Thomson" ro le="editor"> | |||
<organization>Mozilla</organization> | <organization>Mozilla</organization> | |||
</author> | </author> | |||
<date year="2021" month="January" day="15"/> | <date year="2021" month="May"/> | |||
</front> | </front> | |||
<seriesInfo name="Internet-Draft" value="draft-ietf-quic-transport-34" | <seriesInfo name="RFC" value="9000"/> | |||
/> | <seriesInfo name="DOI" value="10.17487/RFC9000"/> | |||
</reference> | </reference> | |||
<reference anchor="QUIC-TLS"> | <reference anchor="QUIC-TLS" target="https://www.rfc-editor.org/info/rfc 9001"> | |||
<front> | <front> | |||
<title>Using Transport Layer Security (TLS) to Secure QUIC</title> | <title>Using TLS to Secure QUIC</title> | |||
<author initials="M." surname="Thomson" fullname="Martin Thomson" ro le="editor"> | <author initials="M." surname="Thomson" fullname="Martin Thomson" ro le="editor"> | |||
<organization>Mozilla</organization> | <organization>Mozilla</organization> | |||
</author> | </author> | |||
<author initials="S." surname="Turner" fullname="Sean Turner" role=" editor"> | <author initials="S." surname="Turner" fullname="Sean Turner" role=" editor"> | |||
<organization>sn3rd</organization> | <organization>sn3rd</organization> | |||
</author> | </author> | |||
<date year="2021" month="January" day="15"/> | <date year="2021" month="May"/> | |||
</front> | </front> | |||
<seriesInfo name="Internet-Draft" value="draft-ietf-quic-tls-33"/> | <seriesInfo name="RFC" value="9001"/> | |||
<seriesInfo name="DOI" value="10.17487/RFC9001"/> | ||||
</reference> | </reference> | |||
<reference anchor="RFC5116" target="https://www.rfc-editor.org/info/rfc5 116"> | <reference anchor="RFC5116" target="https://www.rfc-editor.org/info/rfc5 116"> | |||
<front> | <front> | |||
<title>An Interface and Algorithms for Authenticated Encryption</tit le> | <title>An Interface and Algorithms for Authenticated Encryption</tit le> | |||
<author initials="D." surname="McGrew" fullname="D. McGrew"> | <author fullname="D. McGrew" initials="D." surname="McGrew"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<date year="2008" month="January"/> | <date month="January" year="2008"/> | |||
<abstract> | <abstract> | |||
<t>This document defines algorithms for Authenticated Encryption w ith Associated Data (AEAD), and defines a uniform interface and a registry for s uch algorithms. The interface and registry can be used as an application-indepe ndent set of cryptoalgorithm suites. This approach provides advantages in effic iency and security, and promotes the reuse of crypto implementations. [STANDARD S-TRACK]</t> | <t>This document defines algorithms for Authenticated Encryption w ith Associated Data (AEAD), and defines a uniform interface and a registry for s uch algorithms. The interface and registry can be used as an application-indepe ndent set of cryptoalgorithm suites. This approach provides advantages in effic iency and security, and promotes the reuse of crypto implementations. [STANDARD S-TRACK]</t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<seriesInfo name="RFC" value="5116"/> | <seriesInfo name="RFC" value="5116"/> | |||
<seriesInfo name="DOI" value="10.17487/RFC5116"/> | <seriesInfo name="DOI" value="10.17487/RFC5116"/> | |||
</reference> | </reference> | |||
</references> | </references> | |||
</references> | </references> | |||
<section anchor="bad-assumptions" numbered="true" toc="default"> | <section anchor="bad-assumptions" numbered="true" toc="default"> | |||
<name>Incorrect Assumptions</name> | <name>Incorrect Assumptions</name> | |||
<t>There are several traits of QUIC version 1 <xref target="QUIC-TRANSPORT " format="default"/> that are not | <t>There are several traits of QUIC version 1 <xref target="QUIC-TRANSPORT " format="default"/> that are not | |||
protected from observation, but are nonetheless considered to be changeable when | protected from observation but are nonetheless considered to be changeable when | |||
a new version is deployed.</t> | a new version is deployed.</t> | |||
<t>This section lists a sampling of incorrect assumptions that might be ma de about | <t>This section lists a sampling of incorrect assumptions that might be ma de about | |||
QUIC based on knowledge of QUIC version 1. Some of these statements are not | QUIC based on knowledge of QUIC version 1. Some of these statements are not | |||
even true for QUIC version 1. This is not an exhaustive list; it is intended to | even true for QUIC version 1. This is not an exhaustive list; it is intended to | |||
be illustrative only.</t> | be illustrative only.</t> | |||
<t><strong>Any and all of the following statements can be false for a give | <t> | |||
n QUIC | <strong>Any and all of the following statements can be false for a given | |||
version:</strong></t> | QUIC | |||
version:</strong> | ||||
</t> | ||||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>QUIC uses TLS <xref target="QUIC-TLS" format="default"/> and some TL | <li>QUIC uses TLS <xref target="QUIC-TLS" format="default"/>, and some T | |||
S messages are visible on the wire</li> | LS messages are visible on the wire.</li> | |||
<li>QUIC long headers are only exchanged during connection establishment | <li>QUIC long headers are only exchanged during connection establishment | |||
</li> | .</li> | |||
<li>Every flow on a given 5-tuple will include a connection establishmen | <li>Every flow on a given 5-tuple will include a connection establishmen | |||
t phase</li> | t phase.</li> | |||
<li>The first packets exchanged on a flow use the long header</li> | <li>The first packets exchanged on a flow use the long header.</li> | |||
<li>The last packet before a long period of quiescence might be assumed | <li>The last packet before a long period of quiescence might be assumed | |||
to contain only an acknowledgment</li> | to contain only an acknowledgment.</li> | |||
<li>QUIC uses an AEAD (AEAD_AES_128_GCM <xref target="RFC5116" format="d | <li>QUIC uses an Authenticated Encryption with Associated Data (AEAD) fu | |||
efault"/>) to protect the packets it | nction | |||
exchanges during connection establishment</li> | (AEAD_AES_128_GCM; see <xref target="RFC5116" format="default"/>) to protect the | |||
<li>QUIC packet numbers are encrypted and appear as the first encrypted | packets it exchanges | |||
bytes</li> | during connection establishment.</li> | |||
<li>QUIC packet numbers increase by one for every packet sent</li> | <li>QUIC packet numbers are encrypted and appear as the first encrypted | |||
<li>QUIC has a minimum size for the first handshake packet sent by a cli | bytes.</li> | |||
ent</li> | <li>QUIC packet numbers increase by one for every packet sent.</li> | |||
<li>QUIC stipulates that a client speaks first</li> | <li>QUIC has a minimum size for the first handshake packet sent by a cli | |||
<li>QUIC packets always have the second bit of the first byte (0x40) set | ent.</li> | |||
</li> | <li>QUIC stipulates that a client speak first.</li> | |||
<li>A QUIC Version Negotiation packet is only sent by a server</li> | <li>QUIC packets always have the second bit of the first byte (0x40) set | |||
<li>A QUIC connection ID changes infrequently</li> | .</li> | |||
<li>A QUIC Version Negotiation packet is only sent by a server.</li> | ||||
<li>A QUIC connection ID changes infrequently.</li> | ||||
<li>QUIC endpoints change the version they speak if they are sent a Vers ion | <li>QUIC endpoints change the version they speak if they are sent a Vers ion | |||
Negotiation packet</li> | Negotiation packet.</li> | |||
<li>The Version field in a QUIC long header is the same in both directio | <li>The Version field in a QUIC long header is the same in both directio | |||
ns</li> | ns.</li> | |||
<li>A QUIC packet with a particular value in the Version field means tha t the | <li>A QUIC packet with a particular value in the Version field means tha t the | |||
corresponding version of QUIC is in use</li> | corresponding version of QUIC is in use.</li> | |||
<li>Only one connection at a time is established between any pair of QUI C | <li>Only one connection at a time is established between any pair of QUI C | |||
endpoints</li> | endpoints.</li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
</back> | </back> | |||
<!-- ##markdown-source: | ||||
H4sIALAHAWAAA81b624bR5b+X09Rq/yRApKWbGeSkRHM0JKdaCBf1rIzGASB | ||||
UWQXyYb7wqnqlsQYzrPss+yT7XfOqaruJinJu8iPDRBb6q4+depcvnOp4/F4 | ||||
rJq8KeypPvjFOp/X1fiiyuza4o+q0W9dvbauya3X9UL/54eLswNlZjNnr0/5 | ||||
N31RXRuXm6rxKqvnlSlBKXNm0Yxz2yzG/27z+ThPa8YnT1RmGqx5fPz4ZHx8 | ||||
Mj75Ts3xYFm7zan2TabytTvVjWt98/j4+K/Hj5Vx1pzq985Ufl27Rt3U7tPS | ||||
1e1aOFDKN6bKPpqirkB3Y71a56f616aej7THB84uPH7alPIDuCzNep1Xy9+U | ||||
Mm2zqt2p0nqM/7XOK3+qX030+1Vd+rriZ3KmVwZSqAYvarfE8/r3vCgMP7Cl | ||||
yYtTXTZ/L+obSA+y20wq2yiVV4valabJr+2pwlpifPz+3fT11ds3796f8tdR | ||||
DfTuVE/1h/O34+fG20y/aosmXxf2Fj/jqPrKzltnO5Ec8Pc7cqWH3jrojraX | ||||
TTQU1lgHpsbnpKVdZTWR6vjJU/6kkxH9Nw5/B1n9Y6IvNrZaGpeei7z+YSqz | ||||
84ol9lNdLwubnrmaTm2zvKnd/j229HGvTvbqZWebpIHLq6HsP0BUy06w+tJs | ||||
rBN5581GH+KDI93UUQPiD3+m8As/fvLkYbH/+SLZu80VtmnB77Zyr6yptt/w | ||||
Fr564rI7ZK7G47E2Mw8Dm8Ml3q9yT87YloQzmV3kFUCmWVm9HmAOPWGkSYZJ | ||||
C+DddYF3ptHABzWvy7KuSDOmKPS1AFn6PK6fBCaqurEfX9MfTf3xnTUZ1it1 | ||||
nvt56+lD+Y7YI/XoxnwCK+vCzK2mTSJDBERkLgxGmnyffity36jDX0mdfyfF | ||||
TiCY3w7pbVOfDp4eHY30zSqfrzS2Mm6+AjrAwRv162+Hq6ZZ+9NHj+i78GoS | ||||
v3tEDx55y3/9jUHnI+36I1E/wiH/GRj7iRlL2APe59DbzOpF3Va0k+7ttMyb | ||||
VTubQJKPiM7N8ugZ4LN1c5JuZhl4cu9biII2Aw3XF9IWZXUf5UczwNqYv/OP | ||||
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 | ||||
</rfc> | </rfc> | |||
End of changes. 46 change blocks. | ||||
238 lines changed or deleted | 114 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |