<?xml version="1.0" encoding="us-ascii"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version  -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc comments="yes"?>

<rfc ipr="trust200902" docName="draft-banks-quic-disable-encryption-00" category="exp">

  <front>
    <title abbrev="QUIC-DIS-ENCRYPT">QUIC Disable Encryption</title>

    <author initials="N." surname="Banks" fullname="Nick Banks">
      <organization>Microsoft Corporation</organization>
      <address>
        <email>nibanks@microsoft.com</email>
      </address>
    </author>

    <date year="2020"/>

    <area>Transport</area>
    
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>The disable_1rtt_encryption transport parameter can be used to negotiate the
disablement of encryption on 1-RTT packets, allowing for reduced CPU load and
improved performance.  This extension is only meant to be used in environments
where both endpoints completely trust the path between themselves; not, for
instance, on the open internet.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>By default QUIC Transport Protocol <xref target="I-D.ietf-quic-transport"/> provides secured
(authenticated and encrypted) connections via a TLS handshake.  The handshake
allows for the endpoints to be authenticated by a certificate and then securely
generates shared secrets to encrypt the QUIC packet traffic.  Post-handshake,
this packet encryption can occupy a considerable percentage of CPU usage,
depending on the scenario.  Additionally, there are scenarios where the
protections given by this encryption are either unnecessary or unwanted.  For
these scenarios, this document defines an extension to the QUIC protocol to
allow for mutually participating endpoints to negotiate the disablement of
encryption for the 1-RTT packets sent after the handshake.</t>

<section anchor="terms-and-definitions" title="Terms and Definitions">

<t>The keywords "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>

</section>
<section anchor="applicable-scenarios-for-use" title="Applicable Scenarios for Use">

<t>QUIC connections are generally meant to always be encrypted, to prevent
unauthenticated middleboxes from reading or modifying the QUIC packets.  This is
the desired behavior for most environments; especially any that go over the open
internet.  There are two possible scenarios where disabling packet encryption
makes sense:</t>

<t><list style="symbols">
  <t>Trusted Environment/Path - There are scenarios or environments where there is
no need for the additional security measures of QUIC encryption; such as
walled-gardens or tunneled connections.  These scenarios are either already
trusted or secured by other means.</t>
  <t>Performance Testing - When the actual contents of the QUIC packets are
unimportant and the goal is purely to measure the performance characteristics
of either the network, machine or QUIC implementation without encryption.</t>
</list></t>

</section>
</section>
<section anchor="specification" title="Specification">

<t>The disable_1rtt_encryption transport parameter used for negotiating the use
of the extension is defined below.</t>

<section anchor="disable-1-rtt-encryption-transport-parameter" title="Disable 1-RTT Encryption Transport Parameter">

<t>The disable_1rtt_encryption transport parameter can be sent by both a client and
server.  The transport parameter is sent with an optional variable-length value
by the client and an empty value by the server; a client that understands this
transport parameter MUST treat the receipt of a non-empty value as a connection
error of type TRANSPORT_PARAMETER_ERROR.</t>

<t>Advertising the disable_1rtt_encryption transport parameter indicates that the
endpoint wishes to disable encryption for 1-RTT packets.  Both sides must
advertise support for the feature for it to be considered successfully
negotiated.</t>

<t>If successfully negotiated, all packets that would normally be encrypted with
the 1-RTT key are instead sent as cleartext; both header and packet protections
are disabled.</t>

</section>
<section anchor="negotiating-the-extension" title="Negotiating the Extension">

<t>The payload sent in the transport parameter by the client, along with any other
information the server has about the client (such as IP address) may be used to
negotiate the extension on the server side.  The TP payload could be considered
a key or identifier used by the server to verify the client should be allowed to
disable encryption.  These additional security measures are optional, but
RECOMMENDED to ensure encryption is not accidentally enabled when it should not
be.</t>

</section>
<section anchor="disabling-1-rtt-encryption" title="Disabling 1-RTT Encryption">

<t>When the extension is negotiated, all aspects of encryption on 1-RTT packets are
removed:</t>

<t><list style="symbols">
  <t>Header protection</t>
  <t>Payload protection</t>
  <t>AEAD tag</t>
</list></t>

<t>This effectively gives the transport an additional 16 bytes per packet to be
used for payload, since it is no longer including an AEAD tag.</t>

<t>Because the AEAD tag is removed along with the encryption, the UDP checksum
must be relied upon to determine any packet corruption.</t>

</section>
<section anchor="interactions-with-path-changes" title="Interactions with Path Changes">

<t>When making the trust determination about the path, each endpoints must take
into account possible path changes; NAT rebinding for instance.  An endpoint
MUST NOT enable enable this extension if it is possible for the path to change
during the connection to some untrusted state.</t>

<t>Additionally, a client MUST NOT try to migrate to any path that is untrusted
if this extension is negotiated.  If a server receives a packet for a connection
with this extension negotiated on an untrusted path, it MUST silently drop the
packet.</t>

</section>
</section>
<section anchor="security-considerations" title="Security Considerations">

<t>Disabling encryption for 1-RTT packets has some fairly obvious security
drawbacks:</t>

<t><list style="symbols">
  <t>Packets can be read, modified and injected by any middleboxes</t>
</list></t>

<t>This extension is not meant to be used for any practical application protocol on
the open internet.  Internet facing servers MUST NOT enable this extension.
Clients that do not trust their network and path to the server MUST NOT enable
this extension.</t>

<t>This extension does not modify the packet protections used during the handshake,
so the handshake can still be securely authenticated.  This prevents scenarios
where one endpoint might trust (or think it trusts) the path, but the other
endpoint does not, and a man-in-the-middle tries to force this extension to be
used.</t>

<t>To prevent accidental use of the feature on production systems it is
RECOMMENDED for servers to have additional measures such as IP filtering or a
security key.</t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>This document registers a new value in the QUIC Transport Parameter
Registry:</t>

<t>Value: TBD (using value 0xBAAD in early deployments)</t>

<t>Parameter Name: disable_1rtt_encryption</t>

<t>Specification: Indicates disabled 1-RTT encryption is being negotiated</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference anchor="I-D.ietf-quic-transport">
<front>
<title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>

<author initials='J' surname='Iyengar' fullname='Jana Iyengar'>
    <organization />
</author>

<author initials='M' surname='Thomson' fullname='Martin Thomson'>
    <organization />
</author>

<date month='June' day='9' year='2020' />

<abstract><t>This document defines the core of the QUIC transport protocol. Accompanying documents describe QUIC's loss detection and congestion control and the use of TLS for key negotiation.  Note to Readers  Discussion of this draft takes place on the QUIC working group mailing list (quic@ietf.org (mailto: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/-transport.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-quic-transport-29' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-quic-transport-29.txt' />
</reference>



<reference  anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<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" target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author>
<date year='2017' month='May' />
<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>




  </back>

<!-- ##markdown-source:
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
yLRn2WhSZKC1eP9L3CH+B8xvrjDoGAAA

-->

</rfc>

