<?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.25 (Ruby 3.0.3) -->
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-tls-snip-01" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.1 -->
  <front>
    <title abbrev="Authenticating Incompatible Protocols">Secure Negotiation of Incompatible Protocols in TLS</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-tls-snip-01"/>
    <author initials="M." surname="Thomson" fullname="Martin Thomson">
      <organization>Mozilla</organization>
      <address>
        <email>mt@lowentropy.net</email>
      </address>
    </author>
    <date year="2022" month="February" day="16"/>
    <abstract>
      <t>An extension is defined for TLS that allows a client and server to detect an
attempt to force the use of less-preferred application protocol even where
protocol options are incompatible.  This supplements application-layer protocol
negotiation (ALPN), which allows choices between compatible protocols to be
authenticated.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>With increased diversity in protocol choice, some applications are able to use
one of several semantically-equivalent protocols to achieve their goals.  This
is particularly notable in HTTP where there are currently three distinct
protocols: HTTP/1.1 <xref target="HTTP11"/>, HTTP/2
<xref target="HTTP2"/>, and HTTP/3 <xref target="HTTP3"/>.
This is also true of protocols that support variants based on both TLS
<xref target="TLS"/> and DTLS <xref target="DTLS"/>.</t>
      <t>For protocols that are mutually compatible, Application-Layer Protocol
Negotiation (ALPN; <xref target="ALPN"/>) provides a secure way to negotiate
protocol selection.</t>
      <t>In ALPN, the client offers a list of options in a TLS ClientHello and the server
chooses the option that it most prefers.  A downgrade attack occurs where both
client and server support a protocol that the server prefers more than than the
selected protocol.  ALPN protects against this attack by ensuring that the
server is aware of all options the client supports and including those options
and the server choice under the integrity protection provided by the TLS
handshake.</t>
      <t>Downgrade protection in ALPN functions because protocol negotiation is part of
the TLS handshake.  The introduction of semantically-equivalent protocols that
use incompatible handshakes introduces new opportunities for downgrade attack.
For instance, it is not possible to negotiate the use of HTTP/2 based on an
attempt to connect using HTTP/3.  The former relies on TCP, whereas the latter
uses UDP.  These protocols are therefore mutually incompatible and ALPN cannot
be used to securely select between the two.</t>
      <t>This document defines an extension to TLS that allows clients to discover when a
server supports alternative protocols that are incompatible with the protocol in
use.  This might be used to detect a downgrade attack.</t>
      <t>Downgrade protection for incompatible protocols only works for services provided
by the same logical server (see <xref target="ls"/>). That is, the protection only applies to
servers that operate from the same IP address and port number from the
perspective of the client.</t>
      <t>This extension is motivated by the addition of new protocols such as HTTP/3
<xref target="HTTP3"/> that are semantically equivalent, but incompatible with existing
protocols.</t>
      <t>These downgrade protections are intended to work for any method that a client
might use to discover that a server supports a particular protocol.  Special
considerations for HTTP Alternative Services <xref target="ALTSVC"/> is included in
<xref target="alt-svc"/> and a discussion of SVCB <xref target="SVCB"/> can
be found in <xref target="svcb-dns"/>.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" 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>
      <t>Two protocols are considered "compatible" if it is possible to negotiate either
using the same connection attempt.  In comparison, protocols are "incompatible"
if they require separate attempts to establish a connection.</t>
    </section>
    <section anchor="selection">
      <name>Incompatible Protocol Selection</name>
      <t>This document extends the authentication protections provided by TLS to cover
negotiation of incompatible protocols.</t>
      <t>This is complementary to ALPN <xref target="ALPN"/>, which only protects the negotiation of
compatible protocols.  In ALPN, the client presents a set of compatible options
and the server chooses its most preferred.</t>
      <t>This extension works by having a server offer a list of incompatible protocols
that it supports on the same logical server (see <xref target="ls"/>).  How clients use this
information will depend on client policy.</t>
      <section anchor="client-policy">
        <name>Client Policy</name>
        <t>A client has to choose between incompatible options before making a connection
attempt.  Thefore, this document does not define a negotiation mechanism, it
only provides authenticated information that a client can use.</t>
        <t>Importantly, detecting a potential downgrade between incompatible protocols does
not automatically imply that a client abandon a connection attempt.  It only
provides the client with authenticated information that can help with making a
decision.  What a client does with this information is left to client policy.</t>
        <t>For a protocol like HTTP/3, this might not result in the client choosing to use
HTTP/3, even if HTTP/3 is preferred and the server indicates that a service
endpoint supporting HTTP/3 is available.  Blocking of UDP or QUIC is known to be
widespread.  As a result, clients might adopt a policy of tolerating a downgrade
to a TCP-based version of HTTP, even if HTTP/3 were preferred.  However, as
blocking of UDP is highly correlated by access network, clients that are able to
establish HTTP/3 connections to some servers might choose to apply a stricter
policy when a server that indicates HTTP/3 support is unreachable.</t>
      </section>
      <section anchor="ls">
        <name>Logical Servers</name>
        <t>This document relies on the notion of a logical server for determining how a
client interprets information about incompatible protocols.</t>
        <t>Clients can assume availability of incompatible protocols across the set of
endpoints that share an IP version, IP address, and port number with the TLS
server that provides the incompatible_protocols extension.</t>
        <t>This definition includes a port number that is independent of the protocol that
is used.  Any protocol that defines a port number is considered to be
equivalent.  In particular, incompatible protocols can be deployed to TCP, UDP,
SCTP, or DCCP ports as long as the IP address and port number is the same.</t>
        <t>This determination is made from the perspective of a client.  This means that
server operators need to be aware of all instances that might answer to the same
IP address and port; see <xref target="operational"/>.</t>
      </section>
    </section>
    <section anchor="extension">
      <name>Authenticating Incompatible Protocols</name>
      <t>The incompatible_protocols(TBD) TLS extension provides clients with information
about the incompatible protocols that are supported by the same logical server;
see <xref target="ls"/> for a definition of a logical server.</t>
      <sourcecode type="tls-syntax"><![CDATA[
enum {
    incompatible_protocols(TBD), (65535)
} ExtensionType;
]]></sourcecode>
      <t>A client that supports the extension advertises an empty extension.  In
response, a server that supports this extension includes a list of application
protocol identifiers.  The "extension_data" field of the server extension uses
the <tt>ProtocolName</tt> type defined in <xref target="ALPN"/>.  This syntax is shown in
<xref target="fig-syntax"/>.</t>
      <figure anchor="fig-syntax">
        <name>TLS Syntax for incompatible_protocols Extension</name>
        <sourcecode type="tls-syntax"><![CDATA[
opaque ProtocolName<1..2^8-1>;  // From RFC 7301
ProtocolName IncompatibleProtocol;

struct {
  select (Handshake.msg_type) {
    case client_hello:
      Empty;
    case encrypted_extensions:
      IncompatibleProtocol incompatible_protocols<3..2^16-1>;
  };
} IncompatibleProtocols;
]]></sourcecode>
      </figure>
      <t>This extension only applies to the ClientHello and EncryptedExtensions messages.
An implementation that receives this extension in any other handshake message
MUST send a fatal illegal_parameter alert.</t>
      <t>A client offers an empty extension to indicate that is wishes to receive
information about incompatible protocols supported by the (logical) server.</t>
      <t>A server deployment that supports multiple incompatible protocols MAY advertise
all protocols that are supported by the same logical server.  A server needs to
ensure that protocols advertised in this fashion are available to the client.</t>
      <t>A server MUST omit any compatible protocols from this extension.  That is, any
protocol that the server might be able to select, had the client offered the
protocol in the application_layer_protocol_negotiation extension.  In
comparison, clients are expected to include all compatible protocols in the
application_layer_protocol_negotiation extension.</t>
      <t>Information presented by the server is only valid at the time it is provided.  A
client can act on that information immediately, but it cannot retain the
information on the expectation that it will be valid later.  A server therefore
only needs to consider providing information that is current for a period that
would allow the client to act, which might amount to a few seconds.</t>
      <section anchor="validation">
        <name>Validation</name>
        <t>If a client has discovered server endpoints for a preferred protocol that point
to the same logical server, receiving an incompatible_protocols extension that
includes that protocol is a strong indication of a potential downgrade attack.</t>
        <t>In response to detecting a potential downgrade attack, a client might abandon
the current connection attempt and report an error.</t>
        <t>A client might support an incompatible protocol, but chooses not to attempt its
use under normal conditions might choose not to fail if it learns that the
protocol is supported by the server.  This client might instead make a
connection attempt or initiate discovery for that protocol when it learns that
it is available.</t>
      </section>
      <section anchor="quic">
        <name>QUIC Version Negotiation</name>
        <t>QUIC enables the definition of incompatible protocols that share a port.  The
incompatible_protocols extension can be used to authenticate the choice of
application protocols across incompatible QUIC version.  QUIC version
negotiation <xref target="QUIC-VN"/> is used to
authenticate the choice of QUIC version.</t>
        <t>As there are two potentially competing sets of preferences at different protocol
layers, clients need to set preferences for QUIC version and application
protocol are consistent.</t>
        <t>For example, if application protocol A exclusively uses QUIC version X and
application protocol B exclusively uses QUIC version Y, setting a preference for
both A and Y will result in one or other option not being selected.  This would
result in failure if the client applied a policy that regarded either downgrade
as an error.</t>
      </section>
      <section anchor="alt-svc">
        <name>HTTP Alternative Services</name>
        <t>It is possible to select incompatible protocols based on an established
connection.  The Alternative Services <xref target="ALTSVC"/> bootstrapping in
HTTP/3 <xref target="HTTP3"/> is not vulnerable to downgrade as the signal is exchanged over
an authenticated connection.  A server can advertise the presence of an endpoint
that supports HTTP/3 using an HTTP/2 or HTTP/1.1 connection.</t>
        <t>A client can choose to ignore incompatible protocols when attempting to use an
alternative service.</t>
      </section>
    </section>
    <section anchor="operational">
      <name>Operational Considerations</name>
      <t>By listing incompatible protocols a server needs to be certain that the
incompatible protocols are available.  Ensuring that this information is correct
might need some amount of coordination in server deployments.  In particular,
coordination is important if a load balancer distributes load for a single IP
address to multiple server instances, or where anycast <xref target="BCP126"/> is used.</t>
      <t>Incompatible protocols can only be listed in the incompatible_protocols
extension when those protocols are deployed across all server instances.  A
client might regard lack of availability for an advertised protocol as a
downgrade attack, which could lead to service outages for those clients.</t>
      <t>Server deployments can choose not to provide information about incompatible
protocols might avoid the operational complexity of providing accurate
information.  If a server does not list incompatible protocols, clients cannot
gain authenticated information about their availability and so cannot detect
downgrade attacks against those protocols.</t>
      <t>During rollout of a new, incompatible protocol, until the deployment is stable
and not at risk of being disabled, servers SHOULD NOT advertise the existence of
the new protocol.</t>
      <t>Protocol deployments that are in the process of being disabled first need to be
removed from the incompatible_protocols extension.  If a disabled protocol is
advertised to clients, clients might regard this as a downgrade attack.  Though
the incompatible_protocols extension only applies at the time of the TLS
handshake, clients might take some time to act on the information.  If an
incompatible protocol is removed from deployment between when the client
completes a handshake and when it acts, this could be treated as an error by the
client.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This design depends on the integrity of the TLS handshake across all forms,
including TLS <xref target="RFC8446"/>, DTLS <xref target="DTLS"/>, and QUIC
<xref target="QUIC-TLS"/>.  Similarly, integrity is necessary across all
TLS versions that a client is willing to negotiate.  An attacker that can modify
a TLS handshake in any one of these protocols or versions can cause a client to
believe that other options do not exist.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to assign a new value from the "TLS ExtensionType Values" registry:</t>
      <dl>
        <dt>
Value:  </dt>
        <dd>
          <t>TBD</t>
        </dd>
        <dt>
Extension Name:  </dt>
        <dd>
          <t>incompatible_protocols</t>
        </dd>
        <dt>
TLS 1.3:  </dt>
        <dd>
          <t>CH, EE</t>
        </dd>
        <dt>
DTLS-Only:  </dt>
        <dd>
          <t>N</t>
        </dd>
        <dt>
Recommended:  </dt>
        <dd>
          <t>Y</t>
        </dd>
        <dt>
Reference:  </dt>
        <dd>
          <t>this document, <xref target="extension"/></t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="ALPN">
          <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="ALTSVC">
          <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="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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="HTTP11">
          <front>
            <title>HTTP/1.1</title>
            <author fullname="Roy T. Fielding">
              <organization>Adobe</organization>
            </author>
            <author fullname="Mark Nottingham">
              <organization>Fastly</organization>
            </author>
            <author fullname="Julian Reschke">
              <organization>greenbytes GmbH</organization>
            </author>
            <date day="12" month="September" year="2021"/>
            <abstract>
              <t>   The Hypertext Transfer Protocol (HTTP) is a stateless application-
   level protocol for distributed, collaborative, hypertext information
   systems.  This document specifies the HTTP/1.1 message syntax,
   message parsing, connection management, and related security
   concerns.

   This document obsoletes portions of RFC 7230.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-messaging-19"/>
        </reference>
        <reference anchor="HTTP2">
          <front>
            <title>HTTP/2</title>
            <author fullname="Martin Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Cory Benfield">
              <organization>Apple Inc.</organization>
            </author>
            <date day="24" month="January" year="2022"/>
            <abstract>
              <t>   This specification describes an optimized expression of the semantics
   of the Hypertext Transfer Protocol (HTTP), referred to as HTTP
   version 2 (HTTP/2).  HTTP/2 enables a more efficient use of network
   resources and a reduced latency by introducing field compression and
   allowing multiple concurrent exchanges on the same connection.

   This document obsoletes RFC 7540 and RFC 8740.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-http2bis-07"/>
        </reference>
        <reference anchor="HTTP3">
          <front>
            <title>Hypertext Transfer Protocol Version 3 (HTTP/3)</title>
            <author fullname="Mike Bishop">
              <organization>Akamai</organization>
            </author>
            <date day="2" month="February" year="2021"/>
            <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.

DO NOT DEPLOY THIS VERSION OF HTTP

   DO NOT DEPLOY THIS VERSION OF HTTP/3 UNTIL IT IS IN AN RFC.  This
   version is still a work in progress.  For trial deployments, please
   use earlier versions.

Note to Readers

   Discussion of this draft takes place on the QUIC working group
   mailing list (quic@ietf.org), which is archived at
   https://mailarchive.ietf.org/arch/search/?email_list=quic.

   Working Group information can be found at https://github.com/quicwg;
   source code and issues list for this draft can be found at
   https://github.com/quicwg/base-drafts/labels/-http.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-http-34"/>
        </reference>
        <reference anchor="TLS">
          <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="DTLS">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="Eric Rescorla">
              <organization>RTFM, Inc.</organization>
            </author>
            <author fullname="Hannes Tschofenig">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Nagendra Modadugu">
              <organization>Google, Inc.</organization>
            </author>
            <date day="30" month="April" year="2021"/>
            <abstract>
              <t>   This document specifies Version 1.3 of the Datagram Transport Layer
   Security (DTLS) protocol.  DTLS 1.3 allows client/server applications
   to communicate over the Internet in a way that is designed to prevent
   eavesdropping, tampering, and message forgery.

   The DTLS 1.3 protocol is intentionally based on the Transport Layer
   Security (TLS) 1.3 protocol and provides equivalent security
   guarantees with the exception of order protection/non-replayability.
   Datagram semantics of the underlying transport are preserved by the
   DTLS protocol.

   This document obsoletes RFC 6347.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-dtls13-43"/>
        </reference>
        <reference anchor="SVCB">
          <front>
            <title>Service binding and parameter specification via the DNS (DNS SVCB and HTTPSSVC)</title>
            <author fullname="Ben Schwartz">
              <organization>Google</organization>
            </author>
            <author fullname="Mike Bishop">
              <organization>Akamai Technologies</organization>
            </author>
            <author fullname="Erik Nygren">
              <organization>Akamai Technologies</organization>
            </author>
            <date day="11" month="June" year="2020"/>
            <abstract>
              <t>   This document specifies the "SVCB" and "HTTPSSVC" DNS resource record
   types to facilitate the lookup of information needed to make
   connections for origin resources, such as for HTTPS URLs.  SVCB
   records allow an origin to be served from multiple network locations,
   each with associated parameters (such as transport protocol
   configuration and keys for encrypting the TLS ClientHello).  They
   also enable aliasing of apex domains, which is not possible with
   CNAME.  The HTTPSSVC DNS RR is a variation of SVCB for HTTPS and HTTP
   origins.  By providing more information to the client before it
   attempts to establish a connection, these records offer potential
   benefits to both performance and privacy.

   TO BE REMOVED: This proposal is inspired by and based on recent DNS
   usage proposals such as ALTSVC, ANAME, and ESNIKEYS (as well as long
   standing desires to have SRV or a functional equivalent implemented
   for HTTP).  These proposals each provide an important function but
   are potentially incompatible with each other, such as when an origin
   is load-balanced across multiple hosting providers (multi-CDN).
   Furthermore, these each add potential cases for adding additional
   record lookups in addition to AAAA/A lookups.  This design attempts
   to provide a unified framework that encompasses the key functionality
   of these proposals, as well as providing some extensibility for
   addressing similar future challenges.

   TO BE REMOVED: The specific name for this RR type is an open topic
   for discussion.  "SVCB" and "HTTPSSVC" are meant as placeholders as
   they are easy to replace.  Other names might include "B", "SRV2",
   "SVCHTTPS", "HTTPS", and "ALTSVC".

   TO BE REMOVED: This document is being collaborated on in Github at:
   https://github.com/MikeBishop/dns-alt-svc [1].  The most recent
   working version of the document, open issues, etc. should all be
   available there.  The authors (gratefully) accept pull requests.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dnsop-svcb-httpssvc-03"/>
        </reference>
        <reference anchor="QUIC-VN">
          <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="25" month="October" 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-05"/>
        </reference>
        <referencegroup anchor="BCP126" target="https://www.rfc-editor.org/info/bcp126">
          <!-- reference.RFC.4786.xml -->
<reference anchor="RFC4786" target="https://www.rfc-editor.org/info/rfc4786">
            <front>
              <title>Operation of Anycast Services</title>
              <author fullname="J. Abley" initials="J." surname="Abley">
                <organization/>
              </author>
              <author fullname="K. Lindqvist" initials="K." surname="Lindqvist">
                <organization/>
              </author>
              <date month="December" year="2006"/>
              <abstract>
                <t>As the Internet has grown, and as systems and networked services within enterprises have become more pervasive, many services with high availability requirements have emerged.  These requirements have increased the demands on the reliability of the infrastructure on which those services rely.</t>
                <t>Various techniques have been employed to increase the availability of services deployed on the Internet.  This document presents commentary and recommendations for distribution of services using anycast.  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="126"/>
            <seriesInfo name="RFC" value="4786"/>
            <seriesInfo name="DOI" value="10.17487/RFC4786"/>
          </reference>
        </referencegroup>
        <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="QUIC-TLS">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="Martin Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Sean Turner">
              <organization>sn3rd</organization>
            </author>
            <date day="14" month="January" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-tls-34"/>
        </reference>
        <reference anchor="URI">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee">
              <organization/>
            </author>
            <author fullname="R. Fielding" initials="R." surname="Fielding">
              <organization/>
            </author>
            <author fullname="L. Masinter" initials="L." surname="Masinter">
              <organization/>
            </author>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource.  This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet.  The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier.  This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
      </references>
    </references>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Benjamin Schwartz provided significant input into the design of the mechanism
and helped simplify the overall design.</t>
    </section>
    <section anchor="defining-logical-servers">
      <name>Defining Logical Servers</name>
      <t>As incompatible protocols use different protocol stacks, they also use different
endpoints. In other words, it is impossible for a single endpoint to support
multiple incompatible protocols.  Thus, it is necessary to understand the set of
endpoints at a server that offer the incompatible protocols.</t>
      <t>Thus, the definition of where incompatible protocols needs to encompass multiple
endpoints somehow.</t>
      <t>A number of choices are possible here:</t>
      <ul spacing="normal">
        <li>The set of endpoints that are authoritative for the same domain name.</li>
        <li>The set of endpoints that are authoritative for the same "authority" as defined
in RFC 3986 <xref target="URI"/>, which is in effect domain name plus port number.</li>
        <li>The set of endpoints that are referenced by the same SVCB ServiceMode record;
see <xref section="2.4.3" sectionFormat="of" target="SVCB"/>.</li>
        <li>The set of endpoints that share an IP address.</li>
        <li>The set of endpoints that share an IP address and port number.</li>
      </ul>
      <t>The challenge with options based on domain name is that it might prevent the use
of multiple service providers. This is a common practice for HTTP, where the
same domain name can be operated by multiple CDN operators.</t>
      <t>Having multiple service operators also rules out using SVCB ServiceMode records
also as different records might be used to identify different operators.</t>
      <t>Hosts on the same IP address might work, but common deployment practices include
use of different ports for entirely different services.  These can have
different operational constraints, such as deployment schedules.  Including
different ports in the same scope could force all services on the same host to
support a consistent set of protocols.</t>
      <t>This leaves IP and port.  There is a risk that the same port number is used for
completely different purposes depending on the choice of protocol.  This
practice is sufficiently rare that it is not anticipated to be a problem.
Finally, a deployment with no ability to coordinate the deployment of protocols
that share an IP and port can choose not to advertise the availability of
incompatible protocols.</t>
    </section>
    <section anchor="svcb-dns">
      <name>Incompatible Protocols and SVCB</name>
      <t>The SVCB record <xref target="SVCB"/> allows a client to learn about services associated
with a domain name.  This includes how to locate a server, along with
supplementary information about the server, including protocols that the server
supports.  This allows a client to start using a protocol of their choice
without added latency, as a query for SVCB records can be performed at the same
time as name resolution.</t>
      <t>However, SVCB provides no protection against a downgrade attack between
incompatible protocols.  An attacker could remove DNS records for protocols that
the client prefers, leaving the client to believe that only less-preferred
options are available.  If removed options are not compatible with the option
that is chosen, the client will attempt those less-preferred options when
attempting a TLS handshake.</t>
      <t>Authenticating all of the information presented in SVCB records might provide
clients with complete information about server support, but this is impractical
for several reasons:</t>
      <ul spacing="normal">
        <li>it is not possible to ensure that all server instances in a deployment have
the same protocol configuration, as deployments for a single name routinely
include multiple providers that cannot coordinate closely;</li>
        <li>the ability to provide a subset of valid DNS records is integral to many
strategies for managing servers; and</li>
        <li>ensuring that cached DNS records are synchronized with server state is
challenging in a number of deployments.</li>
      </ul>
      <t>Overall, an authenticated TLS handshake is a better source of authoritative
information.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
