<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.39 (Ruby 2.6.10) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-ietf-dprive-unilateral-probing-12" category="exp" submissionType="IETF">
  <front>
    <title abbrev="Unilateral Encrypted Authoritative DNS">Unilateral Opportunistic Deployment of Encrypted Recursive-to-Authoritative DNS</title>

    <author initials="D. K." surname="Gillmor" fullname="Daniel Kahn Gillmor" role="editor">
      <organization abbrev="ACLU">American Civil Liberties Union</organization>
      <address>
        <postal>
          <street>125 Broad St.</street>
          <city>New York, NY</city>
          <code>10004</code>
          <country>USA</country>
        </postal>
        <email>dkg@fifthhorseman.net</email>
      </address>
    </author>
    <author initials="J." surname="Salazar" fullname="Joey Salazar" role="editor">
      <organization></organization>
      <address>
        <postal>
          <city>Alajuela</city>
          <code>20201</code>
          <country>CR</country>
        </postal>
        <email>joeygsal@gmail.com</email>
      </address>
    </author>
    <author initials="P." surname="Hoffman" fullname="Paul Hoffman" role="editor">
      <organization>ICANN</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>paul.hoffman@icann.org</email>
      </address>
    </author>

    <date year="2023" month="August" day="31"/>

    <area>int</area>
    <workgroup>dprive</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 51?>

<t>This document sets out steps that DNS servers (recursive resolvers and authoritative servers) can take unilaterally (without any coordination with other peers) to defend DNS query privacy against a passive network monitor.
The steps in this document can be defeated by an active attacker, but should be simpler and less risky to deploy than more powerful defenses.</t>

<t>The goal of this document is to simplify and speed deployment of opportunistic encrypted transport in the recursive-to-authoritative hop of the DNS ecosystem.
Wider easy deployment of the underlying encrypted transport on an opportunistic basis may facilitate the future specification of stronger cryptographic protections against more powerful attacks.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        The latest revision of this draft can be found at <eref target="https://dkg.gitlab.io/dprive-unilateral-probing/"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-dprive-unilateral-probing/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        DPRIVE Working Group mailing list (<eref target="mailto:dns-privacy@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/dns-privacy/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/dns-privacy/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://gitlab.com/dkg/dprive-unilateral-probing"/>.</t>
    </note>


  </front>

  <middle>


<?line 59?>

<section anchor="introduction"><name>Introduction</name>

<t>This document aims to provide guidance to DNS implementers and operators who want to simply enable protection against passive network observers.</t>

<t>In particular, it focuses on mechanisms that can be adopted unilaterally by recursive resolvers and authoritative servers, without any explicit coordination with the other parties.
This guidance provides opportunistic security (see <xref target="RFC7435"/>) -- encrypting things that would otherwise be in the clear, without interfering with or weakening stronger forms of security.</t>

<t>The document also briefly introduces (but does not try to specify) how a future protocol might permit defense against an active attacker in <xref target="adding-auth"/>.</t>

<t>The protocol described here offers three concrete advantages to the DNS ecosystem:</t>

<t><list style="symbols">
  <t>Protection from passive attackers of DNS queries in transit between recursive and authoritative servers.</t>
  <t>A roadmap for gaining real-world experience at scale with encrypted protections of this traffic.</t>
  <t>A bridge to some possible future protection against a more powerful attacker.</t>
</list></t>

<section anchor="requirements-language"><name>Requirements Language</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

</section>
<section anchor="terminology"><name>Terminology</name>

<dl>
  <dt>Unilateral:</dt>
  <dd>
    <t>capable of opportunistic probing without external coordination with any of the other parties</t>
  </dd>
  <dt>Do53:</dt>
  <dd>
    <t>traditional cleartext DNS over port 53 (<xref target="RFC1035"/>)</t>
  </dd>
  <dt>DoQ:</dt>
  <dd>
    <t>DNS-over-QUIC (<xref target="RFC9250"/>)</t>
  </dd>
  <dt>DoT:</dt>
  <dd>
    <t>DNS-over-TLS (<xref target="RFC7858"/>)</t>
  </dd>
  <dt>Encrypted transports:</dt>
  <dd>
    <t>DoQ and DoT collectively</t>
  </dd>
</dl>

</section>
</section>
<section anchor="priorities"><name>Priorities</name>

<section anchor="minimizing-negative-impacts"><name>Minimizing Negative Impacts</name>

<t>The protocol described in this document aims to minimize potentially negative impacts caused by the probing of encrypted transports for the systems that adopt these guidelines, for the parties that they communicate with, and for uninvolved third parties.
The negative impacts that this protocol specifically tries to minimize are:</t>

<t><list style="symbols">
  <t>excessive bandwidth use</t>
  <t>excessive use of computational resources (CPU and memory in particular)</t>
  <t>the potential for amplification attacks (where DNS resolution infrastructure is wielded as part of a DoS attack)</t>
</list></t>

</section>
<section anchor="protocol-choices"><name>Protocol Choices</name>

<t>Although this document focuses specifically on strategies used by DNS servers, it does not go into detail on the specific protocols used because those protocols, in particular DoT and DoQ, are described in other documents.
The DoT specification (<xref target="RFC7858"/>) says that it:</t>

<ul empty="true"><li>
  <t>focuses on securing stub-to-recursive traffic, as per the charter of the DPRIVE Working Group.  It does not prevent future applications of the protocol to recursive-to-authoritative traffic.</t>
</li></ul>

<t>It further says:</t>

<ul empty="true"><li>
  <t>It might work equally between recursive clients and authoritative servers.</t>
</li></ul>

<t>The DoQ specification (<xref target="RFC9250"/>) says:</t>

<ul empty="true"><li>
  <t>For the recursive to authoritative scenario, authentication requirements are unspecified at the time of writing and are the subject of ongoing work in the DPRIVE WG.</t>
</li></ul>

<t>The protocol described in this document specifies the use of DoT and DoQ without authentication of the server.</t>

<t>This document does not pursue the use of DNS-over-HTTPS, commonly called DoH (<xref target="RFC8484"/>), in this context because a DoH client needs to know the path part of a DoH endpoint URL, and there are currently no mechanisms for a DNS recursive resolver to predict the path on its own, in an opportunistic or unilateral fashion, without incurring an excessive use of resources.
If such mechanisms are later defined, the protocol in this document can be updated to accomodate them.</t>

</section>
</section>
<section anchor="authoritative-guidance"><name>Guidance for Authoritative Servers</name>

<t>The protocol described in this document is <bcp14>OPTIONAL</bcp14> for authoritative servers.
An authoritative server choosing to implement the protocol described in this document <bcp14>MUST</bcp14> implement at least one
of DoT or DoQ on port 853.</t>

<t>An authoritative server choosing to implement the protocol described in this document <bcp14>MAY</bcp14> require clients to use ALPN (Application-Layer Protocol Negotiation,  <xref target="RFC7301"/>).
The ALPN strings the client will use are given in <xref target="recursive-requirements"/>.</t>

<t>An authoritative server implementing DoT or DoQ <bcp14>MUST</bcp14> authoritatively serve the same zones over all supported transports.
If both DoT and DoQ are offered, a nameserver's reply to a particular query <bcp14>MUST</bcp14> be the same on both transports
(with the possible exception of how the TC bit is set).</t>

<section anchor="authoritative-pools"><name>Pooled Authoritative Servers Behind a Single IP Address</name>

<t>Some authoritative DNS servers are structured as a pool of authoritatives standing behind a load-balancer that runs on a single IP address, forwarding queries to members of the pool.
In such a deployment, individual members of the pool typically get updated independently from each other.</t>

<t>A recursive resolver following the guidance in <xref target="recursive-guidance"/> that interacts with such a pool likely does not know that it is a pool.
If some members of the pool follow the protocol specified in this document while others do not, the recursive client might see the pool as a single authoritative server that sometimes offers and sometimes refuses encrypted transport.</t>

<t>To avoid incurring additional minor timeouts for such a recursive resolver, the pool operator <bcp14>SHOULD</bcp14> either:</t>

<t><list style="symbols">
  <t>ensure that all members of the pool enable the same encrypted transport(s) within the span of a few seconds (such as within 30 seconds), or</t>
  <t>ensure that the load balancer maps client requests to pool members based on client IP addresses.</t>
</list></t>

<t>Similar concerns apply to authoritative servers responding from an anycast IP address.
As long as the pool of servers is in a heterogeneous state, any flapping route that switches a given client IP address to a different responder risks incurring an additional timeout.
Frequent changes of routing for anycast listening IP addresses are also likely to cause problems for TLS, TCP, or QUIC connection state as well, so stable routes are important to ensure that the service remains available and responsive.
The servers in a pool can share session information to increase the likelihood of successful resumptions.</t>

</section>
<section anchor="authentication"><name>Authentication</name>

<t>For unilateral deployment, an authoritative server does not need to offer any particular form of authentication.</t>

<t>The simplest deployment would simply provide a self-issued, regularly-updated X.509 certificate.
Whether the certificates used are short-lived or long-lived is up to the deployment.
This mechanism is supported by many TLS and QUIC clients, and will be acceptable for any opportunistic connection.
The server could provide a normal PKI-based certificate, but there is no advantage to doing so at this time.</t>

</section>
<section anchor="authoritative-sni"><name>Server Name Indication</name>

<t>An authoritative DNS server that wants to handle unilateral queries <bcp14>MAY</bcp14> rely on Server Name Indication (SNI) to select alternate server credentials.
However, such a server <bcp14>MUST NOT</bcp14> serve resource records that differ based on SNI (or on the lack of SNI) provided by the client, because a probing recursive resolver that offers SNI might or might not have used the right server name to get the records it is looking for.</t>

</section>
<section anchor="authoritative-resource-exhaustion"><name>Resource Exhaustion</name>

<t>A well-behaved recursive resolver may keep an encrypted connection open to an authoritative server, to amortize the costs of connection setup for both parties.</t>

<t>However, some authoritative servers may have insufficient resources available to keep many connections open concurrently.</t>

<t>To keep resources under control, authoritative servers should proactively manage their encrypted connections.
Section 5.5 of <xref target="RFC9250"/> ("Connection Handling") offers useful guidance for servers managing DoQ connections.
Section 3.4 of <xref target="RFC7858"/> offers useful guidance for servers managing DoT connections.</t>

<t>An authoritative server facing unforeseen resource exhaustion <bcp14>SHOULD</bcp14> cleanly close open connections from recursive resolvers based on the authoritative's preferred prioritization.</t>

<t>In the case of unanticipated resource exhaustion, close connections until resources are back in control.
A reasonable prioritization scheme would be to close connections with no outstanding queries, ordered by idle time (longest idle time gets closed first), then close connections with outstanding queries, ordered by age of outstanding query (oldest outstanding query gets closed first).</t>

<t>When resources are especially tight, the authoritative server may also decline to accept new connections over encrypted transport.</t>

</section>
<section anchor="pad-responses-to-mitigate-traffic-analysis"><name>Pad Responses to Mitigate Traffic Analysis</name>

<t>To increase the anonymity set for each response, the authoritative server <bcp14>SHOULD</bcp14> use a sensible padding mechanism for all responses it sends when possible.
The ability for the authoritative server to add padding might be limited, such as by not receiving an EDNS(0) option in the query.
Specifically, a DoT server <bcp14>SHOULD</bcp14> use EDNS(0) padding <xref target="RFC7830"/> if possible, and a DoQ server <bcp14>SHOULD</bcp14> follow the guidance in Section 5.4 of <xref target="RFC9250"/>.
How much to pad is out of scope of this document, but a reasonable suggestion can be found in <xref target="RFC8467"/>.</t>

</section>
</section>
<section anchor="recursive-guidance"><name>Guidance for Recursive Resolvers</name>

<t>The protocol described in this document is <bcp14>OPTIONAL</bcp14> for recursive resolvers.
This section outlines a probing policy suitable for unilateral adoption by any recursive resolver.
Following this policy should not result in failed resolutions or significant delays.</t>

<section anchor="high-level-overview"><name>High-level Overview</name>

<t>In addition to querying on Do53, the recursive resolver will try either or both of DoT and DoQ concurrently.
The recursive resolver remembers what opportunistic encrypted transport protocols have worked recently based on a (clientIP, serverIP, protocol) tuple.</t>

<t>If a query needs to go to a given authoritative server, and the recursive resolver remembers a recent successful encrypted transport to that server, then it doesn't send the query over Do53 at all.
Rather, it only sends the query using the encrypted transport protocol that was recently shown to be good.</t>

<t>If the encrypted transport protocol fails, the recursive resolver falls back to Do53 for that serverIP.
When any encrypted transport fails, the recursive resolver remembers that failure for a reasonable amount of time to avoid flooding a non-compatible server with requests that it cannot accept.
The description of how an encrypted transport protocol fails is in <xref target="establish-encrypted"/> and the sections following that.</t>

<t>See the subsections below for a more detailed description of this protocol.</t>

</section>
<section anchor="maintaining-authoritative-state-by-ip-address"><name>Maintaining Authoritative State by IP Address</name>

<t>In designing a probing strategy, the recursive resolver could record its knowledge about any given authoritative server with different strategies, including at least:</t>

<t><list style="symbols">
  <t>the authoritative server's IP address,</t>
  <t>the authoritative server's name (the NS record used), or</t>
  <t>the zone that contains the record being looked up.</t>
</list></t>

<t>This document encourages the first strategy, to minimize timeouts or accidental delays,
and does not describe the other two strategies.</t>

<t>A timeout (accidental delay) is most likely to happen when the recursive client believes that the authoritative server offers encrypted transport, but the actual server reached declines encrypted transport (or worse, filters the incoming traffic and does not even respond with an ICMP port closed message, such as during rate limiting).</t>

<t>By associating the state with the authoritative IP address, the client can minimize the number of accidental delays introduced (see also <xref target="authoritative-pools"/> and <xref target="conn-state"/>).</t>

<t>For example, consider an authoritative server named <spanx style="verb">ns0.example.com</spanx> that is served by two installations (with two <spanx style="verb">A</spanx> records), one at <spanx style="verb">192.0.2.7</spanx> that follows this guidance, and one at <spanx style="verb">2001:db8::8</spanx> that is a legacy (cleartext port 53-only) deployment.
A recursive client who associates state with the <spanx style="verb">NS</spanx> name and reaches <spanx style="verb">192.0.2.7</spanx> first will "learn" that <spanx style="verb">ns0.example.com</spanx> supports encrypted transport.
A subsequent query over encrypted transport dispatched to <spanx style="verb">2001:db8::8</spanx> would fail, potentially delaying the response.</t>

</section>
<section anchor="overall-recursive-resolver-settings"><name>Overall Recursive Resolver Settings</name>

<t>A recursive resolver implementing the protocol in this document needs to set system-wide values for some default parameters.
These parameters may be set independently for each supported encrypted transport, though a simple implementation may keep the parameters constant across encrypted transports.</t>

<texttable title="Recursive resolver system parameters per encrypted transport">
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Suggested Default</ttcol>
      <c><spanx style="verb">persistence</spanx></c>
      <c>How long should the recursive resolver remember successful encrypted transport connections?</c>
      <c>3 days (259200 seconds)</c>
      <c><spanx style="verb">damping</spanx></c>
      <c>How long should the recursive resolver remember unsuccessful encrypted transport connections?</c>
      <c>1 day (86400 seconds)</c>
      <c><spanx style="verb">timeout</spanx></c>
      <c>How long should the recursive resolver wait for an initiated encrypted connection to complete?</c>
      <c>4 seconds</c>
</texttable>

<t>This document uses the notation <spanx style="verb">E-foo</spanx> to refer to the <spanx style="verb">foo</spanx> parameter for the encrypted transport <spanx style="verb">E</spanx>.
For example <spanx style="verb">DoT-persistence</spanx> would indicate the length of time that the recursive resolver will remember that an authoritative server had a successful connection over <spanx style="verb">DoT</spanx>.</t>

<t>This document also assumes that the recursive resolver maintains a list of outstanding cleartext queries destined for the authoritative server's IP address <spanx style="verb">X</spanx>.
This list is referred to as <spanx style="verb">Do53-queries[X]</spanx>.
This document does not attempt to describe the specific operation of sending and receiving cleartext DNS queries (Do53) for a recursive resolver.
Instead it describes a "bolt-on" mechanism that extends the recursive resolver's operation on a few simple hooks into the recursive resolver's existing handling of Do53.</t>

<t>Implementers or deployers of DNS recursive resolvers that follow the strategies in this document are encouraged to publish their preferred values of these parameters.</t>

</section>
<section anchor="recursive-requirements"><name>Recursive Resolver Requirements</name>

<t>To follow this guidance, a recursive resolver <bcp14>MUST</bcp14> implement at least one of either DoT or DoQ in its capacity as a client of authoritative nameservers.
A recursive resolver <bcp14>SHOULD</bcp14> implement the client side of DoT.
A recursive resolver <bcp14>SHOULD</bcp14> implement the client side of DoQ.</t>

<t>DoT queries from the recursive resolver <bcp14>MUST</bcp14> target TCP port 853, and must include an ALPN of "<spanx style="verb">dot</spanx>".
DoQ queries from the recursive resolver <bcp14>MUST</bcp14> target UDP port 853, and must include an ALPN of "<spanx style="verb">doq</spanx>".</t>

<t>While this document focuses on the recursive-to-authoritative hop, a recursive resolver implementing these strategies <bcp14>SHOULD</bcp14> also accept queries from its clients over some encrypted transport.</t>

</section>
<section anchor="conn-state"><name>Authoritative Server Encrypted Transport Connection State</name>

<t>The recursive resolver <bcp14>SHOULD</bcp14> keep a record of the state for each authoritative server it contacts, indexed by the IP address of the authoritative server and the encrypted transports supported by the authoritative server.</t>

<t>Note that the recursive resolver might record this per-authoritative-IP state for each source IP address it uses as it sends its queries.
For example, if a recursive resolver can send a packet to authoritative servers from IP addresses <spanx style="verb">192.0.2.100</spanx> and <spanx style="verb">2001:db8::200</spanx>, it could keep two distinct sets of per-authoritative-IP state, one for each source address it uses, if the recursive resolver knows the addresses in use.
Keeping these state tables distinct for each source address makes it possible for a pooled authoritative server behind a load balancer to do a partial rollout while minimizing accidental timeouts (see <xref target="authoritative-pools"/>).</t>

<t>In addition to tracking the state of connection attempts and outcomes, a recursive resolver <bcp14>SHOULD</bcp14> record the state of established sessions for encrypted protocols.
The details of how sessions are identified is dependent on the transport protocol implementation (such as TLS session ticket or TLS session ID, QUIC connection ID, and so on).
The use of session resumption as recommended here is limited somewhat because the tickets are only stored within the context defined by the (clientIP, serverIP, protocols) tuples used to track client-server interaction by the recursive resolver in a table like the one below.
However, session resumption still offers the ability to optimize the handshake in some circumstances.</t>

<t>Each record should contain the following fields for each supported encrypted transport, each of which would initially be <spanx style="verb">null</spanx>:</t>

<texttable title="Recursive resolver state per authoritative IP, per encrypted transport">
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Retain Across Restart</ttcol>
      <c><spanx style="verb">session</spanx></c>
      <c>The associated state of any existing, established session (the structure of this value is dependent on the encrypted transport implementation).  If <spanx style="verb">session</spanx> is not <spanx style="verb">null</spanx>, it may be in one of two states: <spanx style="verb">pending</spanx> or <spanx style="verb">established</spanx></c>
      <c>no</c>
      <c><spanx style="verb">initiated</spanx></c>
      <c>Timestamp of most recent connection attempt</c>
      <c>yes</c>
      <c><spanx style="verb">completed</spanx></c>
      <c>Timestamp of most recent completed handshake (which can include one where an existing session is resumed)</c>
      <c>yes</c>
      <c><spanx style="verb">status</spanx></c>
      <c>Enumerated value of <spanx style="verb">success</spanx> or <spanx style="verb">fail</spanx> or <spanx style="verb">timeout</spanx>, associated with the <spanx style="verb">completed</spanx> handshake</c>
      <c>yes</c>
      <c><spanx style="verb">last-response</spanx></c>
      <c>A timestamp of the most recent response received on the connection</c>
      <c>yes</c>
      <c><spanx style="verb">resumptions</spanx></c>
      <c>A stack of resumption tickets (and associated parameters) that could be used to resume a prior successful session</c>
      <c>yes</c>
      <c><spanx style="verb">queries</spanx></c>
      <c>A queue of queries intended for this authoritative server, each of which has additional status <spanx style="verb">early</spanx>, <spanx style="verb">unsent</spanx>, or <spanx style="verb">sent</spanx></c>
      <c>no</c>
      <c><spanx style="verb">last-activity</spanx></c>
      <c>A timestamp of the most recent activity on the connection</c>
      <c>no</c>
</texttable>

<t>Note that the <spanx style="verb">session</spanx> fields in aggregate constitute a pool of open connections to different servers.</t>

<t>With the exception of the <spanx style="verb">session</spanx>, <spanx style="verb">queries</spanx>, and <spanx style="verb">last-activity</spanx> fields, this cache information should be kept across restart of the server unless explicitly cleared by administrative action.</t>

<t>This document uses the notation <spanx style="verb">E-foo[X]</spanx> to indicate the value of field <spanx style="verb">foo</spanx> for encrypted transport <spanx style="verb">E</spanx> to IP address <spanx style="verb">X</spanx>.</t>

<t>For example, <spanx style="verb">DoT-initiated[192.0.2.4]</spanx> represents the timestamp when the most recent DoT connection packet was sent to IP address 192.0.2.4.</t>

<t>This document uses the notation <spanx style="verb">any-E-queries</spanx> to indicate any query on an encrypted transport.</t>

</section>
<section anchor="probing-policy"><name>Probing Policy</name>

<t>When a recursive resolver discovers the need for an authoritative lookup to an authoritative DNS server using that servers's IP address <spanx style="verb">X</spanx>, it retrieves the connection state records described in <xref target="conn-state"/> associated with <spanx style="verb">X</spanx> from its cache.</t>

<t>The following sections presume that the time of the discovery of the need for lookup is time <spanx style="verb">T0</spanx>.</t>

<t>If any of the records discussed here are absent, they are treated as <spanx style="verb">null</spanx>.</t>

<t>The recursive resolver must decide whether to initially send a query over Do53, or over any of the supported encrypted transports (DoT or DoQ).</t>

<t>Note that a recursive resolver might initiate this query via any or all of the known transports.
When multiple queries are sent, the initial packets for each connection can be sent concurrently, similar to "Happy Eyeballs" (<xref target="RFC8305"/>).
However, unlike Happy Eyeballs, when one transport succeeds, the other connections do not need to be terminated, but can instead be continued to establish whether the IP address <spanx style="verb">X</spanx> is capable of communicating on the relevant transport.</t>

<section anchor="sending-a-query-over-do53"><name>Sending a Query over Do53</name>

<t>For any of the supported encrypted transports <spanx style="verb">E</spanx>, if either of the following holds true, the recursive resolver <bcp14>SHOULD NOT</bcp14> send a query to <spanx style="verb">X</spanx> over Do53:</t>

<t><list style="symbols">
  <t><spanx style="verb">E-session[X]</spanx> is in the <spanx style="verb">established</spanx> state, or</t>
  <t><spanx style="verb">E-status[X]</spanx> is <spanx style="verb">success</spanx>, and <spanx style="verb">(T0 - E-last-response[X]) &lt; persistence</spanx></t>
</list></t>

<t>This indicates that one successful connection to a server that the client then closed cleanly would result in the client not sending the next query over Do53.</t>

<t>Otherwise, if there is no outstanding session for any encrypted transport, and the last successful encrypted transport connection was long ago, the recursive resolver sends a query to <spanx style="verb">X</spanx> over Do53.
When it does so, it inserts a handle for the query in <spanx style="verb">Do53-queries[X]</spanx>.</t>

</section>
<section anchor="receiving-a-response-over-do53"><name>Receiving a Response over Do53</name>

<t>When a response <spanx style="verb">R</spanx> for query <spanx style="verb">Q</spanx> arrives at the recursive resolver in cleartext sent over Do53 from authoritative server with IP address <spanx style="verb">X</spanx>, the recursive resolver should:</t>

<t>If <spanx style="verb">Q</spanx> is not in <spanx style="verb">Do53-queries[X]</spanx>:</t>

<t><list style="symbols">
  <t>Process it no further (do not respond to a cleartext response to a query that is not outstanding)</t>
</list></t>

<t>Otherwise:</t>

<t><list style="symbols">
  <t>Remove <spanx style="verb">Q</spanx> from <spanx style="verb">Do53-queries[X]</spanx></t>
</list></t>

<t>If <spanx style="verb">R</spanx> is successful:</t>

<t><list style="symbols">
  <t>If <spanx style="verb">Q</spanx> is in <spanx style="verb">Do53-queries[X]</spanx>:
  <list style="symbols">
      <t><spanx style="verb">R</spanx> is further processed by the recursive resolver</t>
    </list></t>
  <t>For each supported encrypted transport <spanx style="verb">E</spanx>:
  <list style="symbols">
      <t>If <spanx style="verb">Q</spanx> is in <spanx style="verb">E-queries[X]</spanx>:
      <list style="symbols">
          <t>Proceed to the steps in <xref target="receiving-encrypted"/></t>
        </list></t>
    </list></t>
</list></t>

<t>But if <spanx style="verb">R</spanx> is unsuccessful (e.g. timeout or connection closed):</t>

<t><list style="symbols">
  <t>if <spanx style="verb">Q</spanx> is not in any of <spanx style="verb">any-E-queries[X]</spanx>:
  <list style="symbols">
      <t>Return <spanx style="verb">SERVFAIL</spanx> to the client</t>
    </list></t>
</list></t>

</section>
<section anchor="initiating-a-connection-over-encrypted-transport"><name>Initiating a Connection over Encrypted Transport</name>

<t>If any <spanx style="verb">E-session[X]</spanx> is in the <spanx style="verb">established</spanx> state, the recursive resolver <bcp14>SHOULD NOT</bcp14> initiate a new or resume a previous connection to <spanx style="verb">X</spanx> over Do53 or <spanx style="verb">E</spanx>, but should instead send queries to <spanx style="verb">X</spanx> through the existing session (see <xref target="sending"/>).</t>

<t>If the recursive resolver has a preferred encrypted transport, but only a different transport is in the <spanx style="verb">established</spanx> state, it <bcp14>MAY</bcp14> also initiate a new connection to <spanx style="verb">X</spanx> over its preferred transport while concurrently sending the query over the <spanx style="verb">established</spanx> transport <spanx style="verb">E</spanx>.</t>

<t>Before considering whether to initiate a new connection over an encrypted transport, the timer should be examined, and its state possibly refreshed, for encrypted transport <spanx style="verb">E</spanx> to authoritative IP address <spanx style="verb">X</spanx>:</t>

<t><list style="symbols">
  <t>if <spanx style="verb">E-session[X]</spanx> is in state <spanx style="verb">pending</spanx>, and</t>
  <t><spanx style="verb">T0 - E-initiated[X] &gt; E-timeout</spanx>, then
  <list style="symbols">
      <t>set <spanx style="verb">E-session[X]</spanx> to <spanx style="verb">null</spanx> and</t>
      <t>set <spanx style="verb">E-status[X]</spanx> to <spanx style="verb">timeout</spanx></t>
    </list></t>
</list></t>

<t>When resources are available to attempt a new encrypted transport, the recursive resolver should only initiate a new connection to <spanx style="verb">X</spanx> over <spanx style="verb">E</spanx> as long as one of the following holds true:</t>

<t><list style="symbols">
  <t><spanx style="verb">E-status[X]</spanx> is <spanx style="verb">success</spanx>, or</t>
  <t><spanx style="verb">E-status[X]</spanx> is <spanx style="verb">fail</spanx> or <spanx style="verb">timeout</spanx> and <spanx style="verb">(T0 - E-completed[X]) &gt; damping</spanx>, or</t>
  <t><spanx style="verb">E-status[X]</spanx> is <spanx style="verb">null</spanx> and <spanx style="verb">E-initiated[X]</spanx> is <spanx style="verb">null</spanx></t>
</list></t>

<t>When initiating a session to <spanx style="verb">X</spanx> over encrypted transport <spanx style="verb">E</spanx>, if <spanx style="verb">E-resumptions[X]</spanx> is not empty, one ticket should be popped off the stack and used to try to resume a previous session.
Otherwise, the initial Client Hello handshake should not try to resume any session.</t>

<t>When initiating a connection, the recursive resolver should take the following steps:</t>

<t><list style="symbols">
  <t>set <spanx style="verb">E-initiated[X]</spanx> to <spanx style="verb">T0</spanx></t>
  <t>store a handle for the new session (which should have <spanx style="verb">pending</spanx> state)  in <spanx style="verb">E-session[X]</spanx></t>
  <t>insert a handle for the query that prompted this connection in <spanx style="verb">E-queries[X]</spanx>, with status <spanx style="verb">unsent</spanx> or <spanx style="verb">early</spanx>, as appropriate (see below).</t>
</list></t>

<section anchor="early-data"><name>Early Data</name>

<t>Modern encrypted transports like TLS 1.3 offer the chance to send "early data" from the client in the initial Client Hello in some contexts.
A recursive resolver that initiates a connection over an encrypted transport according to this guidance in a context where early data is possible <bcp14>SHOULD</bcp14> send the DNS query that prompted the connection in the early data, according to the sending guidance in <xref target="sending"/>.</t>

<t>If it does so, the status of <spanx style="verb">Q</spanx> in <spanx style="verb">E-queries[X]</spanx> should be set to <spanx style="verb">early</spanx> instead of <spanx style="verb">unsent</spanx>.</t>

</section>
<section anchor="resumption"><name>Resumption Tickets</name>

<t>When initiating a new connection (whether by resuming an old session or not), the recursive resolver <bcp14>SHOULD</bcp14> request a session resumption ticket from the authoritative server.
If the authoritative server supplies a resumption ticket, the recursive resolver pushes it into the stack at <spanx style="verb">E-resumptions[X]</spanx>.</t>

</section>
<section anchor="recursive-sni"><name>Server Name Indication</name>

<t>For modern encrypted transports like TLS 1.3, most client implementations expect to send a Server Name Indication (SNI) in the Client Hello.</t>

<t>There are two complications with selecting or sending SNI in this unilateral probing:</t>

<t><list style="symbols">
  <t>Some authoritative servers are known by more than one name; selecting a single name to use for a given connection may be difficult or impossible.</t>
  <t>In most configurations, the contents of the SNI field is exposed on the wire to a passive adversary.
This potentially reveals additional information about which query is being made, based on the NS of the query itself.</t>
</list></t>

<t>To avoid additional leakage and complexity, a recursive resolver following this guidance <bcp14>SHOULD NOT</bcp14> send SNI to the authoritative when attempting encrypted transport.</t>

<t>If the recursive resolver needs to send SNI to the authoritative for some reason not found in this document, using Encrypted Client Hello (<xref target="I-D.ietf-tls-esni"/>) would reduce leakage.</t>

</section>
<section anchor="authoritative-server-authentication"><name>Authoritative Server Authentication</name>

<t>Because this probing policy is unilateral and opportunistic, the client connecting under this policy <bcp14>MUST</bcp14> accept any certificate presented by the server.
If the client cannot verify the server's identity, it <bcp14>MAY</bcp14> use that information for reporting, logging, or other analysis purposes.
But it <bcp14>MUST NOT</bcp14> reject the connection due to the authentication failure, as the result would be falling back to cleartext, which would leak the content of the session to a passive network monitor.</t>

</section>
</section>
<section anchor="establish-encrypted"><name>Establishing an Encrypted Transport Connection</name>

<t>When an encrypted transport connection actually completes (e.g., the TLS handshake completes) at time <spanx style="verb">T1</spanx>, the recursive resolver sets <spanx style="verb">E-completed[X]</spanx> to <spanx style="verb">T1</spanx> and does the following:</t>

<t>If the handshake completed successfully:</t>

<t><list style="symbols">
  <t>update <spanx style="verb">E-session[X]</spanx> so that it is in state <spanx style="verb">established</spanx></t>
  <t>set <spanx style="verb">E-status[X]</spanx> to <spanx style="verb">success</spanx></t>
  <t>set <spanx style="verb">E-last-response[X]</spanx> to <spanx style="verb">T1</spanx></t>
  <t>set <spanx style="verb">E-completed[X]</spanx> to <spanx style="verb">T1</spanx></t>
  <t>for each query <spanx style="verb">Q</spanx> in <spanx style="verb">E-queries[X]</spanx>:
  <list style="symbols">
      <t>if early data was accepted and <spanx style="verb">Q</spanx> is <spanx style="verb">early</spanx>,
      <list style="symbols">
          <t>set the status of <spanx style="verb">Q</spanx> to <spanx style="verb">sent</spanx></t>
        </list></t>
      <t>otherwise:
      <list style="symbols">
          <t>send <spanx style="verb">Q</spanx> through the session (see <xref target="sending"/>), and set the status of <spanx style="verb">Q</spanx> to <spanx style="verb">sent</spanx></t>
        </list></t>
    </list></t>
</list></t>

</section>
<section anchor="failing-to-establish-an-encrypted-transport-connection"><name>Failing to Establish an Encrypted Transport Connection</name>

<t>If, at time <spanx style="verb">T2</spanx> an encrypted transport handshake completes with a failure (e.g. a TLS alert),</t>

<t><list style="symbols">
  <t>set <spanx style="verb">E-session[X]</spanx> to <spanx style="verb">null</spanx></t>
  <t>set <spanx style="verb">E-status[X]</spanx> to <spanx style="verb">fail</spanx></t>
  <t>set <spanx style="verb">E-completed[X]</spanx> to <spanx style="verb">T2</spanx></t>
  <t>for each query <spanx style="verb">Q</spanx> in <spanx style="verb">E-queries[X]</spanx>:
  <list style="symbols">
      <t>if <spanx style="verb">Q</spanx> is not present in any other <spanx style="verb">any-E-queries[X]</spanx> or in <spanx style="verb">Do53-queries[X]</spanx>, add <spanx style="verb">Q</spanx> to <spanx style="verb">Do53-queries[X]</spanx> and send query <spanx style="verb">Q</spanx> to <spanx style="verb">X</spanx> over Do53.</t>
    </list></t>
</list></t>

<t>Note that this failure will trigger the recursive resolver to fall back to cleartext queries to the authoritative server at IP address <spanx style="verb">X</spanx>.
It will retry encrypted transport to <spanx style="verb">X</spanx> once the <spanx style="verb">damping</spanx> timer has elapsed.</t>

</section>
<section anchor="encrypted-transport-failure"><name>Encrypted Transport Failure</name>

<t>Once established, an encrypted transport might fail for a number of reasons (e.g., decryption failure, or improper protocol sequence).</t>

<t>If this happens:</t>

<t><list style="symbols">
  <t>set <spanx style="verb">E-session[X]</spanx> to <spanx style="verb">null</spanx></t>
  <t>set <spanx style="verb">E-status[X]</spanx> to <spanx style="verb">fail</spanx></t>
  <t>for each query <spanx style="verb">Q</spanx> in <spanx style="verb">E-queries[X]</spanx>:
  <list style="symbols">
      <t>if <spanx style="verb">Q</spanx> is not present in any other <spanx style="verb">any-E-queries[X]</spanx> or in <spanx style="verb">Do53-queries[X]</spanx>, add <spanx style="verb">Q</spanx> to <spanx style="verb">Do53-queries[X]</spanx> and send query <spanx style="verb">Q</spanx> to <spanx style="verb">X</spanx> over Do53.</t>
    </list></t>
</list></t>

<t>Note that this failure will trigger the recursive resolver to fall back to cleartext queries to the authoritative server at IP address <spanx style="verb">X</spanx>.
It will retry encrypted transport to <spanx style="verb">X</spanx> once the <spanx style="verb">damping</spanx> timer has elapsed.</t>

</section>
<section anchor="handling-clean-shutdown-of-an-encrypted-transport-connection"><name>Handling Clean Shutdown of an Encrypted Transport Connection</name>

<t>At time <spanx style="verb">T3</spanx>, the recursive resolver may find that authoritative server <spanx style="verb">X</spanx> cleanly closes an existing outstanding connection (most likely due to resource exhaustion, see <xref target="authoritative-resource-exhaustion"/>).</t>

<t>When this happens:</t>

<t><list style="symbols">
  <t>set <spanx style="verb">E-session[X]</spanx> to <spanx style="verb">null</spanx></t>
  <t>for each query <spanx style="verb">Q</spanx> in <spanx style="verb">E-queries[X]</spanx>:
  <list style="symbols">
      <t>if <spanx style="verb">Q</spanx> is not present in any other <spanx style="verb">any-E-queries[X]</spanx> or in <spanx style="verb">Do53-queries[X]</spanx>, add <spanx style="verb">Q</spanx> to <spanx style="verb">Do53-queries[X]</spanx> and send query <spanx style="verb">Q</spanx> to <spanx style="verb">X</spanx> over Do53.</t>
    </list></t>
</list></t>

<t>Note that this premature shutdown will trigger the recursive resolver to fall back to cleartext queries to the authoritative server at IP address <spanx style="verb">X</spanx>.
Any subsequent query to <spanx style="verb">X</spanx> will retry the encrypted connection promptly.</t>

</section>
<section anchor="sending"><name>Sending a Query over Encrypted Transport</name>

<t>When sending a query to an authoritative server over encrypted transport at time <spanx style="verb">T4</spanx>, the recursive resolver should take a few reasonable steps to ensure privacy and efficiency.</t>

<t>After sending query <spanx style="verb">Q</spanx>, the recursive resolver should ensure that <spanx style="verb">Q</spanx>'s state in <spanx style="verb">E-queries[X]</spanx> is set to <spanx style="verb">sent</spanx>.</t>

<t>The recursive resolver also sets <spanx style="verb">E-last-activity[X]</spanx> to <spanx style="verb">T4</spanx>.</t>

<t>In addition, the recursive resolver should consider the guidance in the following sections.</t>

<section anchor="pad-queries-to-mitigate-traffic-analysis"><name>Pad Queries to Mitigate Traffic Analysis</name>

<t>To increase the anonymity set for each query, the recursive resolver <bcp14>SHOULD</bcp14> use a sensible padding mechanism for all queries it sends.
Specifically, a DoT client <bcp14>SHOULD</bcp14> use EDNS(0) padding <xref target="RFC7830"/>, and a DoQ client <bcp14>SHOULD</bcp14> follow the guidance in Section 5.4 of <xref target="RFC9250"/>.
How much to pad is out of scope of this document, but a reasonable suggestion can be found in <xref target="RFC8467"/>.</t>

</section>
<section anchor="send-queries-in-separate-channels"><name>Send Queries in Separate Channels</name>

<t>When multiple queries are multiplexed on a single encrypted transport to a single authoritative server, the recursive resolver <bcp14>SHOULD</bcp14> pipeline queries and <bcp14>MUST</bcp14> be capable of receiving responses out of order.
For guidance on how to best achieve this on a given encrypted transport, see Section 6.2.1.1 of <xref target="RFC7766"/> (for DoT) and Section 5.6 of <xref target="RFC9250"/> (for DoQ).</t>

</section>
</section>
<section anchor="receiving-encrypted"><name>Receiving a Response over Encrypted Transport</name>

<t>When a response <spanx style="verb">R</spanx> for query <spanx style="verb">Q</spanx> arrives at the recursive resolver over encrypted transport <spanx style="verb">E</spanx> from authoritative server with IP address <spanx style="verb">X</spanx> at time <spanx style="verb">T5</spanx>, the recursive resolver should:</t>

<t>If <spanx style="verb">Q</spanx> is not in <spanx style="verb">E-queries[X]</spanx>:</t>

<t><list style="symbols">
  <t>Discard <spanx style="verb">R</spanx> and process it no further (do not respond to an encrypted response to a query that is not outstanding)</t>
</list></t>

<t>Otherwise:</t>

<t><list style="symbols">
  <t>Remove <spanx style="verb">Q</spanx> from <spanx style="verb">E-queries[X]</spanx></t>
  <t>Set <spanx style="verb">E-last-activity[X]</spanx> to <spanx style="verb">T5</spanx></t>
  <t>Set <spanx style="verb">E-last-response[X]</spanx> to <spanx style="verb">T5</spanx></t>
</list></t>

<t>If <spanx style="verb">R</spanx> is successful:</t>

<t><list style="symbols">
  <t><spanx style="verb">R</spanx> is further processed by the recursive resolver</t>
  <t>For each supported encrypted transport <spanx style="verb">N</spanx> other than <spanx style="verb">E</spanx>:
  <list style="symbols">
      <t>If <spanx style="verb">Q</spanx> is in <spanx style="verb">N-queries[X]</spanx>:
      <list style="symbols">
          <t>Remove <spanx style="verb">Q</spanx> from <spanx style="verb">N-queries[X]</spanx></t>
        </list></t>
    </list></t>
  <t>If <spanx style="verb">Q</spanx> is in <spanx style="verb">Do53-queries[X]</spanx>:
  <list style="symbols">
      <t>Remove <spanx style="verb">Q</spanx> from <spanx style="verb">Do53-queries[X]</spanx></t>
    </list></t>
</list></t>

<t>But if <spanx style="verb">R</spanx> is unsuccessful (RCODE other than 0 or 3, timeout or connection closed):</t>

<t><list style="symbols">
  <t>If <spanx style="verb">Q</spanx> is not in <spanx style="verb">Do53-queries[X]</spanx> or in any of <spanx style="verb">any-E-queries[X]</spanx>:
  <list style="symbols">
      <t>Return <spanx style="verb">SERVFAIL</spanx> to the requesting client</t>
    </list></t>
</list></t>

</section>
<section anchor="recursive-resource-exhaustion"><name>Resource Exhaustion</name>

<t>To keep resources under control, a recursive resolver should proactively manage outstanding encrypted connections.
Section 5.5 of <xref target="RFC9250"/> offers useful guidance for clients managing DoQ connections.
Section 3.4 of <xref target="RFC7858"/> offers useful guidance for clients managing DoT connections.</t>

<t>Even with sensible connection management, a recursive resolver doing unilateral probing may find resources unexpectedly scarce, and may need to close some outstanding connections.</t>

<t>In such a situation, the recursive resolver <bcp14>SHOULD</bcp14> use a reasonable prioritization scheme to close outstanding connections.</t>

<t>One reasonable prioritization scheme would be:</t>

<t><list style="symbols">
  <t>close outstanding <spanx style="verb">established</spanx> sessions based on <spanx style="verb">E-last-activity[X]</spanx> (oldest timestamp gets closed first)</t>
</list></t>

<t>Note that when resources are limited, a recursive resolver following this guidance may also choose not to initiate new connections for encrypted transport.</t>

</section>
<section anchor="maintaining-connections"><name>Maintaining Connections</name>

<t>Some recursive resolvers looking to amortize connection costs and to minimize latency <bcp14>MAY</bcp14> choose to synthesize queries to a particular authoritative server to keep an encrypted transport session active.</t>

<t>A recursive resolver that adopts this approach should try to align the synthesized queries with other optimizations.
For example, a recursive resolver that "pre-fetches" a particular resource record to keep its cache "hot" can send that query over an established encrypted transport session.</t>

</section>
<section anchor="additional-tuning"><name>Additional Tuning</name>

<t>A recursive resolver's state table for an authoritative server can contain additional information beyond what is described above.
The recursive resolver might use that additional state to change the way it interacts with the authoritative server in the future.
Some examples of additional state include:</t>

<t><list style="symbols">
  <t>Whether the server accepts "early data" over a transport such as DoQ</t>
  <t>Whether the server fails to respond to queries after the handshake succeeds:</t>
  <t>Track the round trip time of queries to the server</t>
  <t>Track the number of timeouts (compared to the number of successful queries)</t>
</list></t>

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

<t>This document has no IANA considerations.</t>

</section>
<section anchor="privacy-considerations"><name>Privacy Considerations</name>

<section anchor="sni-considerations"><name>Server Name Indication</name>

<t>A recursive resolver querying an authoritative server over DoT or DoQ that sends Server Name Indication (SNI) in the clear in the cryptographic handshake leaks information about the intended query to a passive network observer.</t>

<t>In particular, if two different zones refer to the same nameserver IP addresses via differently-named NS records, a passive network observer can distinguish the queries to one zone from the queries to the other.</t>

<t>Omitting SNI entirely, or using Encrypted Client Hello to hide the intended SNI, avoids this additional leakage.
However, a series of queries that leak this information is still an improvement over cleartext.</t>

</section>
<section anchor="modelling-the-probability-of-encryption"><name>Modelling the Probability of Encryption</name>

<t>Given that there are many parameter choices that can be made by recursive resolvers and authoritative servers, it is reasonable to consider the probability that queries would be encrypted.
Such a measurement would also certainly be affected by the types of queries being sent by the recursive resolver, which in turn is also related to the types of queries that are sent to the recursive resolver by the stub resolvers and forwarders downstream.
Doing this type of research would be valuable to the DNS community after initial implementation by a variety of recursive resolvers and authoritative servers because it would help assess the overall DNS privacy value of implementing the protocol.
Thus, it would be useful if recursive resolvers and authoritative servers reported percentages of queries sent and received over the different transports.</t>

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

<t>The guidance in this document provides defense against passive network monitors for most queries.
It does not defend against active attackers.
It can also leak some queries and their responses due to "happy eyeballs" optimizations when the recursive resolver's cache is cold.</t>

<t>Implementation of the guidance in this document should increase deployment of opportunistic encrypted DNS transport between recursive resolvers and authoritative servers at little operational risk.</t>

<t>However, implementers cannot rely on the guidance in this document for robust defense against active attackers, but should treat it as a stepping stone en route to stronger defense.</t>

<t>In particular, a recursive resolver following this guidance can easily be forced by an active attacker to fall back to cleartext DNS queries.
Or, an active attacker could position itself as a machine-in-the-middle, which the recursive resolver would not defend against or detect due to lack of server authentication.
Defending against these attacks without risking additional unexpected protocol failures would require signaling and coordination that are out of scope for this document.</t>

<t>This guidance is only one part of operating a privacy-preserving DNS ecosystem.
A privacy-preserving recursive resolver should adopt other practices as well, such as QNAME minimization (<xref target="RFC9156"/>), local root zone (<xref target="RFC8806"/>), etc, to reduce the overall leakage of query information that could infringe on the client's privacy.</t>

</section>
<section anchor="operational-considerations"><name>Operational Considerations</name>

<t>As recursive resolvers implement this protocol, authoritative servers will see more probing on port 853 of IP addresses that are associated with NS records.
Such probing of an authoritative server should generally not cause any significant problems: if the authoritative server is not supporting this protocol, it will not respond on port 853, and if it is supporting this protocol, it will act accordingly.</t>

<t>However, a system that is a public recursive resolver that supports DoT and/or DoQ may also have an IP address that is associated with NS records.
This could be accidental (such as a glue record with the wrong target address) or intentional.
In such a case, recursive resolvers following this protocol will look for authoritative answers to ports 53 and 853 on that system, and the system would need to be able to differentiate queries for recursive answers from queries for authoritative answers.</t>

</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>Many people contributed to the development of this document beyond the authors, including
Alexander Mayrhofer,
Brian Dickson,
Christian Huitema,
Dhruv Dhody,
Eric Nygren,
Florian Obser,
Haoyu Song,
Jim Reid,
Kris Shrishak,
Peter van Dijk,
Ralf Weber,
Rich Salz,
Robert Evans,
Sara Dickinson,
Scott Hollenbeck,
Stephane Bortzmeyer,
Yorgos Thessalonikefs,
and the DPRIVE working group.</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>



<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <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"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>

<reference anchor="RFC9250">
  <front>
    <title>DNS over Dedicated QUIC Connections</title>
    <author fullname="C. Huitema" initials="C." surname="Huitema"/>
    <author fullname="S. Dickinson" initials="S." surname="Dickinson"/>
    <author fullname="A. Mankin" initials="A." surname="Mankin"/>
    <date month="May" year="2022"/>
    <abstract>
      <t>This document describes the use of QUIC to provide transport confidentiality for DNS. The encryption provided by QUIC has similar properties to those provided by TLS, while QUIC transport eliminates the head-of-line blocking issues inherent with TCP and provides more efficient packet-loss recovery than UDP. DNS over QUIC (DoQ) has privacy properties similar to DNS over TLS (DoT) specified in RFC 7858, and latency characteristics similar to classic DNS over UDP. This specification describes the use of DoQ as a general-purpose transport for DNS and includes the use of DoQ for stub to recursive, recursive to authoritative, and zone transfer scenarios.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9250"/>
  <seriesInfo name="DOI" value="10.17487/RFC9250"/>
</reference>

<reference anchor="RFC7858">
  <front>
    <title>Specification for DNS over Transport Layer Security (TLS)</title>
    <author fullname="Z. Hu" initials="Z." surname="Hu"/>
    <author fullname="L. Zhu" initials="L." surname="Zhu"/>
    <author fullname="J. Heidemann" initials="J." surname="Heidemann"/>
    <author fullname="A. Mankin" initials="A." surname="Mankin"/>
    <author fullname="D. Wessels" initials="D." surname="Wessels"/>
    <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
    <date month="May" year="2016"/>
    <abstract>
      <t>This document describes the use of Transport Layer Security (TLS) to provide privacy for DNS. Encryption provided by TLS eliminates opportunities for eavesdropping and on-path tampering with DNS queries in the network, such as discussed in RFC 7626. In addition, this document specifies two usage profiles for DNS over TLS and provides advice on performance considerations to minimize overhead from using TCP and TLS with DNS.</t>
      <t>This document focuses on securing stub-to-recursive traffic, as per the charter of the DPRIVE Working Group. It does not prevent future applications of the protocol to recursive-to-authoritative traffic.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7858"/>
  <seriesInfo name="DOI" value="10.17487/RFC7858"/>
</reference>

<reference anchor="RFC7301">
  <front>
    <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
    <author fullname="S. Friedl" initials="S." surname="Friedl"/>
    <author fullname="A. Popov" initials="A." surname="Popov"/>
    <author fullname="A. Langley" initials="A." surname="Langley"/>
    <author fullname="E. Stephan" initials="E." surname="Stephan"/>
    <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>




    </references>

    <references title='Informative References'>



<reference anchor="RFC7435">
  <front>
    <title>Opportunistic Security: Some Protection Most of the Time</title>
    <author fullname="V. Dukhovni" initials="V." surname="Dukhovni"/>
    <date month="December" year="2014"/>
    <abstract>
      <t>This document defines the concept "Opportunistic Security" in the context of communications protocols. Protocol designs based on Opportunistic Security use encryption even when authentication is not available, and use authentication when possible, thereby removing barriers to the widespread use of encryption on the Internet.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7435"/>
  <seriesInfo name="DOI" value="10.17487/RFC7435"/>
</reference>

<reference anchor="RFC1035">
  <front>
    <title>Domain names - implementation and specification</title>
    <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
    <date month="November" year="1987"/>
    <abstract>
      <t>This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System. It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="13"/>
  <seriesInfo name="RFC" value="1035"/>
  <seriesInfo name="DOI" value="10.17487/RFC1035"/>
</reference>

<reference anchor="RFC8484">
  <front>
    <title>DNS Queries over HTTPS (DoH)</title>
    <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
    <author fullname="P. McManus" initials="P." surname="McManus"/>
    <date month="October" year="2018"/>
    <abstract>
      <t>This document defines a protocol for sending DNS queries and getting DNS responses over HTTPS. Each DNS query-response pair is mapped into an HTTP exchange.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8484"/>
  <seriesInfo name="DOI" value="10.17487/RFC8484"/>
</reference>

<reference anchor="RFC7830">
  <front>
    <title>The EDNS(0) Padding Option</title>
    <author fullname="A. Mayrhofer" initials="A." surname="Mayrhofer"/>
    <date month="May" year="2016"/>
    <abstract>
      <t>This document specifies the EDNS(0) "Padding" option, which allows DNS clients and servers to pad request and response messages by a variable number of octets.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7830"/>
  <seriesInfo name="DOI" value="10.17487/RFC7830"/>
</reference>

<reference anchor="RFC8467">
  <front>
    <title>Padding Policies for Extension Mechanisms for DNS (EDNS(0))</title>
    <author fullname="A. Mayrhofer" initials="A." surname="Mayrhofer"/>
    <date month="October" year="2018"/>
    <abstract>
      <t>RFC 7830 specifies the "Padding" option for Extension Mechanisms for DNS (EDNS(0)) but does not specify the actual padding length for specific applications. This memo lists the possible options ("padding policies"), discusses the implications of each option, and provides a recommended (experimental) option.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8467"/>
  <seriesInfo name="DOI" value="10.17487/RFC8467"/>
</reference>

<reference anchor="RFC8305">
  <front>
    <title>Happy Eyeballs Version 2: Better Connectivity Using Concurrency</title>
    <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
    <author fullname="T. Pauly" initials="T." surname="Pauly"/>
    <date month="December" year="2017"/>
    <abstract>
      <t>Many communication protocols operating over the modern Internet use hostnames. These often resolve to multiple IP addresses, each of which may have different performance and connectivity characteristics. Since specific addresses or address families (IPv4 or IPv6) may be blocked, broken, or sub-optimal on a network, clients that attempt multiple connections in parallel have a chance of establishing a connection more quickly. This document specifies requirements for algorithms that reduce this user-visible delay and provides an example algorithm, referred to as "Happy Eyeballs". This document obsoletes the original algorithm description in RFC 6555.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8305"/>
  <seriesInfo name="DOI" value="10.17487/RFC8305"/>
</reference>


<reference anchor="I-D.ietf-tls-esni">
   <front>
      <title>TLS Encrypted Client Hello</title>
      <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
         <organization>RTFM, Inc.</organization>
      </author>
      <author fullname="Kazuho Oku" initials="K." surname="Oku">
         <organization>Fastly</organization>
      </author>
      <author fullname="Nick Sullivan" initials="N." surname="Sullivan">
         <organization>Cloudflare</organization>
      </author>
      <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
         <organization>Cloudflare</organization>
      </author>
      <date day="6" month="April" year="2023"/>
      <abstract>
	 <t>   This document describes a mechanism in Transport Layer Security (TLS)
   for encrypting a ClientHello message under a server public key.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/tlswg/draft-ietf-tls-esni
   (https://github.com/tlswg/draft-ietf-tls-esni).

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-tls-esni-16"/>
   
</reference>

<reference anchor="RFC7766">
  <front>
    <title>DNS Transport over TCP - Implementation Requirements</title>
    <author fullname="J. Dickinson" initials="J." surname="Dickinson"/>
    <author fullname="S. Dickinson" initials="S." surname="Dickinson"/>
    <author fullname="R. Bellis" initials="R." surname="Bellis"/>
    <author fullname="A. Mankin" initials="A." surname="Mankin"/>
    <author fullname="D. Wessels" initials="D." surname="Wessels"/>
    <date month="March" year="2016"/>
    <abstract>
      <t>This document specifies the requirement for support of TCP as a transport protocol for DNS implementations and provides guidelines towards DNS-over-TCP performance on par with that of DNS-over-UDP. This document obsoletes RFC 5966 and therefore updates RFC 1035 and RFC 1123.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7766"/>
  <seriesInfo name="DOI" value="10.17487/RFC7766"/>
</reference>

<reference anchor="RFC9156">
  <front>
    <title>DNS Query Name Minimisation to Improve Privacy</title>
    <author fullname="S. Bortzmeyer" initials="S." surname="Bortzmeyer"/>
    <author fullname="R. Dolmans" initials="R." surname="Dolmans"/>
    <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
    <date month="November" year="2021"/>
    <abstract>
      <t>This document describes a technique called "QNAME minimisation" to improve DNS privacy, where the DNS resolver no longer always sends the full original QNAME and original QTYPE to the upstream name server. This document obsoletes RFC 7816.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9156"/>
  <seriesInfo name="DOI" value="10.17487/RFC9156"/>
</reference>

<reference anchor="RFC8806">
  <front>
    <title>Running a Root Server Local to a Resolver</title>
    <author fullname="W. Kumari" initials="W." surname="Kumari"/>
    <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
    <date month="June" year="2020"/>
    <abstract>
      <t>Some DNS recursive resolvers have longer-than-desired round-trip times to the closest DNS root server; those resolvers may have difficulty getting responses from the root servers, such as during a network attack. Some DNS recursive resolver operators want to prevent snooping by third parties of requests sent to DNS root servers. In both cases, resolvers can greatly decrease the round-trip time and prevent observation of requests by serving a copy of the full root zone on the same server, such as on a loopback address or in the resolver software. This document shows how to start and maintain such a copy of the root zone that does not cause problems for other users of the DNS, at the cost of adding some operational fragility for the operator.</t>
      <t>This document obsoletes RFC 7706.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8806"/>
  <seriesInfo name="DOI" value="10.17487/RFC8806"/>
</reference>

<reference anchor="MTA-STS">
  <front>
    <title>SMTP MTA Strict Transport Security (MTA-STS)</title>
    <author fullname="D. Margolis" initials="D." surname="Margolis"/>
    <author fullname="M. Risher" initials="M." surname="Risher"/>
    <author fullname="B. Ramakrishnan" initials="B." surname="Ramakrishnan"/>
    <author fullname="A. Brotman" initials="A." surname="Brotman"/>
    <author fullname="J. Jones" initials="J." surname="Jones"/>
    <date month="September" year="2018"/>
    <abstract>
      <t>SMTP MTA Strict Transport Security (MTA-STS) is a mechanism enabling mail service providers (SPs) to declare their ability to receive Transport Layer Security (TLS) secure SMTP connections and to specify whether sending SMTP servers should refuse to deliver to MX hosts that do not offer TLS with a trusted server certificate.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8461"/>
  <seriesInfo name="DOI" value="10.17487/RFC8461"/>
</reference>

<reference anchor="DANE-SMTP">
  <front>
    <title>SMTP Security via Opportunistic DNS-Based Authentication of Named Entities (DANE) Transport Layer Security (TLS)</title>
    <author fullname="V. Dukhovni" initials="V." surname="Dukhovni"/>
    <author fullname="W. Hardaker" initials="W." surname="Hardaker"/>
    <date month="October" year="2015"/>
    <abstract>
      <t>This memo describes a downgrade-resistant protocol for SMTP transport security between Message Transfer Agents (MTAs), based on the DNS-Based Authentication of Named Entities (DANE) TLSA DNS record. Adoption of this protocol enables an incremental transition of the Internet email backbone to one using encrypted and authenticated Transport Layer Security (TLS).</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7672"/>
  <seriesInfo name="DOI" value="10.17487/RFC7672"/>
</reference>

<reference anchor="TLSRPT">
  <front>
    <title>SMTP TLS Reporting</title>
    <author fullname="D. Margolis" initials="D." surname="Margolis"/>
    <author fullname="A. Brotman" initials="A." surname="Brotman"/>
    <author fullname="B. Ramakrishnan" initials="B." surname="Ramakrishnan"/>
    <author fullname="J. Jones" initials="J." surname="Jones"/>
    <author fullname="M. Risher" initials="M." surname="Risher"/>
    <date month="September" year="2018"/>
    <abstract>
      <t>A number of protocols exist for establishing encrypted channels between SMTP Mail Transfer Agents (MTAs), including STARTTLS, DNS- Based Authentication of Named Entities (DANE) TLSA, and MTA Strict Transport Security (MTA-STS). These protocols can fail due to misconfiguration or active attack, leading to undelivered messages or delivery over unencrypted or unauthenticated channels. This document describes a reporting mechanism and format by which sending systems can share statistics and specific information about potential failures with recipient domains. Recipient domains can then use this information to both detect potential attacks and diagnose unintentional misconfigurations.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8460"/>
  <seriesInfo name="DOI" value="10.17487/RFC8460"/>
</reference>


<reference anchor="DNS-Error-Reporting">
   <front>
      <title>DNS Error Reporting</title>
      <author fullname="Roy Arends" initials="R." surname="Arends">
         <organization>ICANN</organization>
      </author>
      <author fullname="Matt Larson" initials="M." surname="Larson">
         <organization>ICANN</organization>
      </author>
      <date day="10" month="July" year="2023"/>
      <abstract>
	 <t>   DNS error reporting is a lightweight reporting mechanism that
   provides the operator of an authoritative server with reports on DNS
   resource records that fail to resolve or validate.  A domain owner or
   DNS hosting organization can use these reports to improve domain
   hosting.  The reports are based on extended DNS errors as described
   in RFC 8914.

   When a domain name fails to resolve or validate due to a
   misconfiguration or an attack, the operator of the authoritative
   server may be unaware of this.  To mitigate this lack of feedback,
   this document describes a method for a validating recursive resolver
   to automatically signal an error to a monitoring agent specified by
   the authoritative server.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-dnsop-dns-error-reporting-05"/>
   
</reference>

<reference anchor="RFC9102">
  <front>
    <title>TLS DNSSEC Chain Extension</title>
    <author fullname="V. Dukhovni" initials="V." surname="Dukhovni"/>
    <author fullname="S. Huque" initials="S." surname="Huque"/>
    <author fullname="W. Toorop" initials="W." surname="Toorop"/>
    <author fullname="P. Wouters" initials="P." surname="Wouters"/>
    <author fullname="M. Shore" initials="M." surname="Shore"/>
    <date month="August" year="2021"/>
    <abstract>
      <t>This document describes an experimental TLS extension for the in-band transport of the complete set of records that can be validated by DNSSEC and that are needed to perform DNS-Based Authentication of Named Entities (DANE) of a TLS server. This extension obviates the need to perform separate, out-of-band DNS lookups. When the requisite DNS records do not exist, the extension conveys a denial-of-existence proof that can be validated.</t>
      <t>This experimental extension is developed outside the IETF and is published here to guide implementation of the extension and to ensure interoperability among implementations.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9102"/>
  <seriesInfo name="DOI" value="10.17487/RFC9102"/>
</reference>




    </references>


<?line 649?>

<section anchor="early-implementations"><name>Early Implementations</name>

<t>[ RFC Editor: please remove this section before publication ]</t>

<t>This appendix lists some of the implementations of the protocol as it finished working group last call in the DPRIVE Working Group.
This list reflects reporting from the DNS community.</t>

<t><list style="symbols">
  <t>The Unbound resolver has initial experimental code paths to probe over DoT</t>
  <t>The Drink authoritative server supports DoT</t>
  <t>The check-soa tool can probe over DoT</t>
  <t>The Bleau tool can probe over DoT through RIPE Atlas probes</t>
  <t>The PowerDNS Recursor resolver can probe over DoT</t>
  <t>Nameservers for various DNS zones support DoT. These include the root zone (one of the 13 root server identifiers), a social media site, some DNS software developers, and others</t>
</list></t>

</section>
<section anchor="assessing-the-experiment"><name>Assessing the Experiment</name>

<t>This document is published as an experimental RFC.
In order to assess the success of the experiment, some key metrics could be collected by the technical community about the deployment of the protocol in this document.
These metrics will be collected in recursive resolvers, authoritative servers, and the networks containing them.
Some key metrics include:</t>

<t><list style="symbols">
  <t>Comparison of the CPU and memory use between Do53 and encrypted transports</t>
  <t>Comparison of the query response rates between Do53 and encrypted transports</t>
  <t>Measurement of server authentication successes and failures</t>
  <t>Measurement and descriptions of observed attack traffic, if any</t>
  <t>Comparison of transactional bandwidth (ingress/egress, packets per second, bytes per second) between Do53 and encrypted transports</t>
</list></t>

</section>
<section anchor="adding-auth"><name>Defense Against Active Attackers</name>

<t>The protocol described in this document provides no defense against active attackers.
A future protocol for recursive-to-authoritative DNS might want to provide such protection.</t>

<t>This appendix assumes that the use case for that future protocol is a recursive resolver that wants to prevent an active attack on communication between it and an authoritative server that has committed to offering encrypted DNS transport.
An inherent part of this use case is that the recursive resolver would want to respond with a <spanx style="verb">SERVFAIL</spanx> response to its client if it cannot make an authenticated encrypted connection to any of the authoritative nameservers for a name.</t>

<t>However, an authoritative server that merely offers encrypted transport (for example, by following the guidance in <xref target="authoritative-guidance"/>) has made no such commitment, and no recursive resolver that prioritizes delivery of DNS records to its clients would want to "fail closed" unilaterally.</t>

<t>So such a future protocol would need at least three major distinctions from the protocol described in this document:</t>

<t><list style="symbols">
  <t>A signaling mechanism that tells the recursive resolver that the authoritative server intends to offer authenticated encryption</t>
  <t>Authentication of the authoritative server</t>
  <t>A way to combine defense against an active attacker with the defenses described in this document</t>
</list></t>

<t>This can be thought of as a DNS analog to <xref target="MTA-STS"/> or <xref target="DANE-SMTP"/>.</t>

<section anchor="signaling-mechanism-properties"><name>Signaling Mechanism Properties</name>

<t>To defend against an active attacker, the signaling mechanism needs to be able to indicate that the recursive resolver should "fail closed" if it cannot authenticate the server for a particular query.</t>

<t>The signaling mechanism itself would have to be resistant to downgrade attacks from active attackers.</t>

<t>One open question is how such a signal should be scoped.
While this document scopes opportunistic state about encrypted transport based on the IP addresses of the client and server, signaled intent to offer encrypted transport is more likely to be scoped by queried zone in the DNS, or by nameserver name than by IP address.</t>

<t>A reasonable authoritative server operator or zone administrator probably doesn't want to risk breaking anything when they first enable the signal.
Therefore, a signaling mechanism should probably also offer a means to report problems to the authoritative server operator without the client failing closed.
Such a mechanism is likely to be similar to <xref target="TLSRPT"/> or <xref target="DNS-Error-Reporting"/>.</t>

</section>
<section anchor="authentication-of-authoritative-server"><name>Authentication of Authoritative Server</name>

<t>Forms of server authentication might include:</t>

<t><list style="symbols">
  <t>an X.509 Certificate issued by a widely-known certification authority associated with the common NS names used for this authoritative server</t>
  <t>DANE authentication (to avoid infinite recursion, the DNS records necessary to authenticate could be transmitted in the TLS handshake using the DNSSEC Chain Extension (see <xref target="RFC9102"/>))</t>
</list></t>

<t>A recursive resolver would have to verify the server's identity.
When doing so, the identity would presumably be based on the NS name used for a given query or the IP address of the server.</t>

</section>
<section anchor="combining-protocols"><name>Combining Protocols</name>

<t>If this protocol gains reasonable adoption, and a newer protocol that can offer defense against an active attacker were available, deployment is likely to be staggered and incomplete.
This means that an operator that want to maximize confidentiality for their users will want to use both protocols together.</t>

<t>Any new stronger protocol should consider how it interacts with the opportunistic protocol defined here, so that operators are not faced with the choice between widespread opportunistic protection against passive attackers (this document) and more narrowly-targeted protection against active attackers.</t>

</section>
</section>
<section anchor="document-considerations"><name>Document Considerations</name>

<t>[ RFC Editor: please remove this section before publication ]</t>

<section anchor="document-history"><name>Document History</name>

<section anchor="substantive-changes-from-11-to-12"><name>Substantive Changes from -11 to -12</name>

<t><list style="symbols">
  <t>Editorial changes received during IETF Last Call</t>
</list></t>

</section>
<section anchor="substantive-changes-from-10-to-11"><name>Substantive Changes from -10 to -11</name>

<t><list style="symbols">
  <t>Editorial changes to prepare for IETF Last Call</t>
</list></t>

</section>
<section anchor="substantive-changes-from-09-to-10"><name>Substantive Changes from -09 to -10</name>

<t><list style="symbols">
  <t>Responded to AD review from Eric Vyncke</t>
</list></t>

</section>
<section anchor="substantive-changes-from-08-to-09"><name>Substantive Changes from -08 to -09</name>

<t><list style="symbols">
  <t>Added section with metrics for assessing the experiment</t>
  <t>Updated the definition of unsuccessful responses to encrypted queries</t>
</list></t>

</section>
<section anchor="substantive-changes-from-07-to-08"><name>Substantive Changes from -07 to -08</name>

<t><list style="symbols">
  <t>Changed status to Experimental</t>
  <t>Added operational considerations section</t>
  <t>Many many editorial updates</t>
</list></t>

</section>
<section anchor="substantive-changes-from-06-to-07"><name>Substantive Changes from -06 to -07</name>

<t><list style="symbols">
  <t>Updated how to handle responses from encrypted transports that are slower that Do53</t>
</list></t>

</section>
<section anchor="substantive-changes-from-05-to-06"><name>Substantive Changes from -05 to -06</name>

<t><list style="symbols">
  <t>Clarified the optinality of the protocol</t>
  <t>Spelled out the current scope of DoT and DoQ</t>
  <t>Clarified that responses must be the same on all transports</t>
  <t>Loosened requirement for the resolver to know all its addresses</t>
  <t>Changed examples of unsuccessful reponses to timeouts and connection failed</t>
  <t>Expanded acknowledgements</t>
  <t>Added preliminary implementation status</t>
</list></t>

</section>
<section anchor="substantive-changes-from-03-to-04"><name>Substantive Changes from -03 to -04</name>

<t><list style="symbols">
  <t>Clarified that "completed handshake" in Table 2 also includes resumed sessions.</t>
  <t>In Section 4.6.1, specified not to use Do53 even when the last successful connection is far in the past.</t>
  <t>In Section 4.6.3, clarified that an established connection in the established state should not be resumed prematurely.</t>
</list></t>

</section>
<section anchor="substantive-changes-from-02-to-03"><name>Substantive Changes from -02 to -03</name>

<t><list style="symbols">
  <t>Added an Additional Tuning section on recursive resolvers recording other data about an authoritative server's capabilities for future interactions (thank you again Sara Dickinson!).
Feedback from operators on how the extra information would be used by a recursive resolver that retains such an expanded state table is particularly welcome.</t>
  <t>Added more text about sharing session state information.</t>
  <t>Added section on modelling the probability of encryption as a future task.</t>
</list></t>

</section>
<section anchor="substantive-changes-from-01-to-02"><name>Substantive Changes from -01 to -02</name>

<t><list style="symbols">
  <t>Removed EDNS Client Subnet recommendations from the probing policy: recursive resolvers implementing the guidance provided in this draft intend to enhance privacy for their users' queries, and although ECS is a valuable feature, it represents a privacy risk. Therefore, a future document encompassing a "how to add privacy" approach could serve for better discussion on this discrepancy (thank you Puneet Sood!).</t>
  <t>Added text on padding queries and responses to mitigate traffic analysis (thank you Sara Dickinson!).</t>
  <t>Put draft on standards track</t>
</list></t>

</section>
<section anchor="substantive-changes-from-00-to-01"><name>Substantive Changes from -00 to -01</name>

<t><list style="symbols">
  <t>Moved discussion of non-opportunistic encryption to an appendix</t>
  <t>Clarify state transitions when sending over encrypted transport</t>
  <t>Introduced new field <spanx style="verb">E-last-response[X]</spanx> for comparison with persistence</t>
</list></t>

</section>
<section anchor="substantive-changes-from-01-to-02-now-draft-ietf-dprive-unilateral-probing-00"><name>Substantive Changes from -01 to -02 (now draft-ietf-dprive-unilateral-probing-00)</name>

<t><list style="symbols">
  <t>Clarify that deployment to a pool does not need to be strictly simultaneous</t>
  <t>Explain why authoritatives need to serve the same records regardless of SNI</t>
  <t>Defer to external, protocol-specific references for resource management</t>
  <t>Clarify that probed connections must not fail due to authentication failure</t>
</list></t>

</section>
<section anchor="draft-dkgjsal-dprive-unilateral-probing-substantive-changes-from-00-to-01"><name>draft-dkgjsal-dprive-unilateral-probing Substantive Changes from -00 to -01</name>

<t><list style="symbols">
  <t>Fallback to cleartext when encrypted transport fails.</t>
  <t>Reduce default <spanx style="verb">timeout</spanx> to 4s</t>
  <t>Clarify SNI guidance: OK for selecting server credentials, not OK for changing answers</t>
  <t>Document ALPN and port numbers</t>
  <t>Justify sorting recursive resolver state by authoritative IP address</t>
</list></t>

</section>
</section>
</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+1963bcyJHm/3oKDPtHk3uqqkldutVc39gUZdHWhU2y3e7j
9VmChawqWCigBkCJKmv0Lvss+2QbX0TkDQWQku05O2fPzg+PuggkMiMj4/LF
JSeTyajN28IcJz+VeZG2pk6L5O16XdXtpsybNp8lz826qLYrU7ZJNU/Oylm9
XbcmSy7NbFM3+XszaavJyaZdVnXepi39kDx/czVKb29r8z4a17+7+3hWzcp0
RfPI6nTeTnLTzifZusbwGzfCZF1Xt3m5mBw9Gs3op0VVb48T82E9GuXr+jhp
603TPjo8/P7w0SitTXqc5GU7uqvqd4u62qxpcB5x9M5s6cfsODkvadzStJPn
+Oqo2dyu8qbJq/J6u6a5nJ9dvxi9N+XGHI+SRMfYe35xef6nsz36peWn9n6m
D9Cskt/jAfy+SvOCfs/KZoIPprPt77CgaVUv8Oe0ni3pz8u2XTfH33yDp/ET
zWxqH/sGP3xzW1d3jfkmGOcbvF+bdRW8v6ANTG+ns2r1TfZu8c0g1fAqfmra
4GV6Y6oD5NXwu/TdUdOmZfY/06IqadFb04xGKW8jaDNJ6H8SIndznDyfJn+c
Jr/Pi2JV1fyz7OzztMxNkfwxXZbRX2m5x8nJytT5LC2T0/x9XiSv8ltTt7lp
wD9Vyc81bW0Mzf3o0dPkh7pKs+SqnfJfZnlLfPDG3CW/0FaMkze/yM9VRp89
Ojw8fKL/vSlbcMxPVyf8g+XRk9NXP/EPRnaOiPK7eT5vl7S6hn4rp8Qj/EBd
4ayYLG958hO/6j9Mk6u0SP+ehkv+Q2W20c8y05Mi/dvGFGkwy0eHjw6P4lme
XoZz+hsNtWjS4ncL/Dd2+4EJXUyTl9V8TrMPJnSRboroZyb++enJmzf9JNKv
r+m96VLe+x32qQSX7s4gL+dVveJjfTwq/T8nkwlRm3YwnbWj0fUybxI68RuW
Ko1pm6Ta0D9as26Sdpm2EAn0e/3e1E2yX1tJQ5zfVAX/SKyYpJEU0ccPEnBR
m74ziWfjYpvs3+X0NH0lLbe0TDr+eUkvVmWCPyRVuzR1sjY8QlslmZkb+gTm
8e8bU28TPYBJukiJvDQM0aThSRFvQMQkq6oEDaa0PKNryWkm0Voxt1vDo6cQ
hLc0YJkQUTBQ2rbp7J2px8ktqEGzLTI83eSrdUGzw5oL0zRJnTfvtjJLyGaQ
rKTP1yZZV3emntMe8/wb00xHPJ1FRfKXxHc8G/o3DcLD5/Mtj98QCTId18r8
KtIHxklx2s2ywZ9kndieQCXEu7Os1vJ9FveJmVXNlmi0mo5+zjNam0mbbeez
eHZT0h+LLaRr33dp92jl8fxu04bWtUq3yTyd5QUmYHis+abdEIlohbN8TjzM
m0/fIa6sygXNgcevFnW6XtI4JPlaM8NDjdv0mMayXyAx2HuVZ1lhRqOvoFXq
Ktvwu11mT/MVE51Gf08LTxabPEvLmcFvIAxvNZ60TF6tiYGJrZrkblkldymN
YfdsSzRJbwsTTNXNtMuc1a2eD5rteUl/Juk625DeGSd5m8xpesQsoOfKzIib
8malJ1E5Ns0qpn10poh7v+hsjpPwEJLeLnISiD2nEdulJzJlNTAVMjpqKfma
zt43mA2J2GS/MSb5+PG3ly9Ov3vy+OmnTwcJbZGyELiJDkK50CXe8UHj793l
jcFylaFnhQGF7KxzbMucFBUNIFKjTu4MiZoSvzg+gghsmLN0OnoIPRMUTZXc
1rmZExFz5RZazD7OfVbRv8qKtrnmMy78uj2gI3RHUke5GFtezaqC2G6xpO02
9YooqafeC6kd2YKVffyYZhnMKGzSp086OzcikXVWk/7NEiII7cN8jk1tl6R9
aauIhKYFP7wnVkwXhrl551gf05lILjxbzutq5XjSzoVpZCUsdD2ojrNNK7kl
vjWmDPhrkKum9KmTBAbBKl2D+AlWjx0hE7CYEPvT7hKz4RvgHdrxZpbSseEt
9GIlPPBWVNJ05iQr5BO0Y9mCT2pTrSAHaDk4fsGWdE5h2isxDOmI0VdfkQX9
75u85tPeJK/ScrEhespmkIWawERtkr3XP11d743l/ydv3vK/L89+/On88uw5
/n318uTVK/ePkT5x9fLtT6+e+3/5N0/fvn599ua5vEy/JtFPo73XJ7/QX0Dt
vbcX1+dv35y82ttVZGRegxB8VOhQrMEUtD/NyHMPvfPD6cX//l9HT4jj/o1O
4qOjo+8/fdL/eHb03RP6j7ulKeVrVUmHQf6T2Gk7StdrOnwYhWQNiaE1bXtB
IiRtoBrvSuZOIuR/+wso89fj5Fe3s/XRk9/oD1hw9KOlWfQj02z3l52XhYg9
P/V8xlEz+r1D6Xi+J79E/23pHvz4q98WeWmSydGz3/5mxNxzjSNfVkW12I5G
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

-->

</rfc>

