<?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.17 (Ruby 2.6.8) -->


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

]>


<rfc ipr="trust200902" docName="draft-ietf-dprive-unilateral-probing-02" category="std" consensus="true" 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="2022" month="September" day="27"/>

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

    <abstract>


<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.
With wider easy deployment of the underlying transport on an opportunistic basis, we hope to 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>


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

<t>This document aims to provide guidance to implementers 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 Internet 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>

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

<dl>
  <dt>Unilateral:</dt>
  <dd>
    <t>capable of opportunistic probing deployment 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>DoH:</dt>
  <dd>
    <t>DNS-over-HTTPS (<xref target="RFC8484"/>)</t>
  </dd>
  <dt>Encrypted transports:</dt>
  <dd>
    <t>DoQ, DoT, and DoH collectively</t>
  </dd>
</dl>

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

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

<t>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 we specifically try 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.</t>

<t>This document does not pursue the use of DoH 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 resolver to predict the path on its own, in an opportunistic or unilateral fashion, without incurring in 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>An authoritative server <bcp14>SHOULD</bcp14> implement and deploy DNS-over-TLS (DoT) on TCP port 853.</t>

<t>An authoritative server <bcp14>SHOULD</bcp14> implement and deploy DNS-over-QUIC (DoQ) on UDP port 853.</t>

<t>An authoritative server implementing the protocol described in this document <bcp14>MUST</bcp14> implement at least one of DoT or DoQ on port 853.</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.</t>

<t>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 this guidance 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, 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.</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.
This mechanism is supported by many TLS and QUIC clients, and will be acceptable for any opportunistic connection.</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 6.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 (this might be limited by e.g. 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>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 delay.</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 recently-good encrypted transport protocol.</t>

<t>If the encrypted transport protocol fails, the recursive resolver falls back to Do53 for that tuple.
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.</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.
This document does not describe the other two strategies because the first is strongly encouraged.</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).</t>

<t>By associating state with the IP address, the recursive client is most able to avoid reaching a heterogeneous deployment.</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">192.0.2.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">.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">.8</spanx> would fail, potentially delaying the response.</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="resolver-binding"/> and <xref target="authoritative-pools"/>).</t>

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

<t>A recursive resolver implementing 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>.</t>

<t>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 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 report their preferred values of these parameters.</t>

</section>
<section anchor="recursive-resolver-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.</t>

<t>A recursive resolver <bcp14>SHOULD</bcp14> implement the client side of DNS-over-TLS (DoT).
A recursive resolver <bcp14>SHOULD</bcp14> implement the client side of DNS-over-QUIC (DoQ).</t>

<t>DoT queries from the recursive resolver <bcp14>MUST</bcp14> target TCP port 853, with an ALPN of "<spanx style="verb">dot</spanx>".
DoQ queries from the recursive resolver <bcp14>MUST</bcp14> target UDP port 853, with an ALPN of "<spanx style="verb">doq</spanx>".
ALPN is described in <xref target="RFC7301"/>.</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 (current common transports are DoH or DoT).</t>

</section>
<section anchor="authoritative-server-encrypted-transport-connection-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 recursive resolver.
In addition, the recursive resolver <bcp14>SHOULD</bcp14> also keep a record of its own IP addresses used for queries, as described in <xref target="resolver-binding"/>.</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 Reset</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</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 connection</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>

<section anchor="resolver-binding"><name>Separate State for Each of the Recursive Resolver's Own IP Addresses</name>

<t>Note that the recursive resolver should 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">192.0.2.200</spanx>, it should keep two distinct sets of per-authoritative-IP state, one for each source address it uses.
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>

</section>
</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 IP address <spanx style="verb">X</spanx>, it retrieves the records 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 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 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>Otherwise, if there is no outstanding session for any encrypted transport, and the last successful encrypted transport connection was long ago, the 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>Discard <spanx style="verb">R</spanx> and 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>Return <spanx style="verb">R</spanx> to the requesting client</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>Remove <spanx style="verb">Q</spanx> from <spanx style="verb">E-queries[X]</spanx></t>
        </list></t>
    </list></t>
</list></t>

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

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

<!--
FIXME: What response should be sent to the client in the case that an extended DNS error ({{RFC8914}}) is offered in an authoritative's response?
Paul says: Commented this out. It is unrelated to encryption between a recursive resolver and an anuthoritative server.
-->

</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 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"/>).
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 examine and possibly refresh its state 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 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 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 store "early data" from the client into the initial Client Hello in some contexts.
A resolver that initiates a connection over a 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-tickets"><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, it is <bcp14>RECOMMENDED</bcp14> that it implements Encrypted Client Hello (<xref target="I-D.ietf-tls-esni"/>) to 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="establishing-an-encrypted-transport-connection"><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 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">*-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">*-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.
<!--
FIXME: should a resumption ticket be used here for this previously successful connection?
Paul says: Remove this. If we include it, it adds a lot of complexity for a rare edge case because the resolver would also have to keep track of whether a ticket had been reused yet.
--></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>

<!--
FIXME: are there specific forms of failure that we might handle differently?
Paul says: remove this until someone gives a specific example that is needed.
-->
<t>For example, What if a TCP timeout closes an idle DoT connection?
What if a QUIC stream ends up timing out but other streams on the same QUIC connection are going through?
Do the described scenarios cover the case when an encrypted transport's port is made unavailable/closed?</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">*-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 <xref target="RFC7766"/> (for DoT) and <xref target="RFC9250"/> (for DoQ).</t>

</section>
</section>
<section anchor="receiving-a-response-over-encrypted-transport"><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 a 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>Return <spanx style="verb">R</spanx> to the requesting client</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 (e.g. <spanx style="verb">SERVFAIL</spanx>):</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">*-queries[X]</spanx>:
  <list style="symbols">
      <t>Return <spanx style="verb">SERVFAIL</spanx> to the requesting client</t>
    </list></t>
</list></t>

<!--
FIXME: What response should be sent to the client in the case that an extended DNS error ({{RFC8914}}) is offered in an authoritative's response?
Paul says: Commented this out. It is unrelated to encryption between a recursive resolver and an anuthoritative server.
-->

</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 6.5 of <xref target="RFC9250"/> ("Connection Handling") 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 resolver to keep a 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>
</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>IANA does not need to do anything for implementers to adopt the guidance found in this document.</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 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 the all-cleartext status quo at the time of this document.</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 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 signalling 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="acknowledgements"><name>Acknowledgements</name>

<t>Many people contributed to the development of this document beyond the authors, including
Alexander Mayrhofer,
Brian Dickson,
Christian Huitema,
Eric Nygren,
Jim Reid,
Kris Shrishak,
Ralf Weber,
Robert Evans,
Sara Dickinson,
and the DPRIVE working group.</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>





<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 fullname='S. Bradner' initials='S.' surname='Bradner'><organization/></author>
<date month='March' year='1997'/>
<abstract><t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='2119'/>
<seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>



<reference anchor='RFC8174' target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author fullname='B. Leiba' initials='B.' surname='Leiba'><organization/></author>
<date month='May' year='2017'/>
<abstract><t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='8174'/>
<seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>



<reference anchor='RFC7301' target='https://www.rfc-editor.org/info/rfc7301'>
<front>
<title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
<author fullname='S. Friedl' initials='S.' surname='Friedl'><organization/></author>
<author fullname='A. Popov' initials='A.' surname='Popov'><organization/></author>
<author fullname='A. Langley' initials='A.' surname='Langley'><organization/></author>
<author fullname='E. Stephan' initials='E.' surname='Stephan'><organization/></author>
<date month='July' year='2014'/>
<abstract><t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t></abstract>
</front>
<seriesInfo name='RFC' value='7301'/>
<seriesInfo name='DOI' value='10.17487/RFC7301'/>
</reference>




    </references>

    <references title='Informative References'>





<reference anchor='RFC7435' target='https://www.rfc-editor.org/info/rfc7435'>
<front>
<title>Opportunistic Security: Some Protection Most of the Time</title>
<author fullname='V. Dukhovni' initials='V.' surname='Dukhovni'><organization/></author>
<date month='December' year='2014'/>
<abstract><t>This document defines the concept &quot;Opportunistic Security&quot; 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' target='https://www.rfc-editor.org/info/rfc1035'>
<front>
<title>Domain names - implementation and specification</title>
<author fullname='P. Mockapetris' initials='P.' surname='Mockapetris'><organization/></author>
<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='RFC9250' target='https://www.rfc-editor.org/info/rfc9250'>
<front>
<title>DNS over Dedicated QUIC Connections</title>
<author fullname='C. Huitema' initials='C.' surname='Huitema'><organization/></author>
<author fullname='S. Dickinson' initials='S.' surname='Dickinson'><organization/></author>
<author fullname='A. Mankin' initials='A.' surname='Mankin'><organization/></author>
<date month='May' year='2022'/>
<abstract><t>This document describes the use of QUIC to provide transport confidentiality for DNS. The encryption provided by QUIC has similar properties to those provided by TLS, while QUIC transport eliminates the head-of-line blocking issues inherent with TCP and provides more efficient packet-loss recovery than UDP. DNS over QUIC (DoQ) has privacy properties similar to DNS over TLS (DoT) specified in RFC 7858, and latency characteristics similar to classic DNS over UDP. This specification describes the use of DoQ as a general-purpose transport for DNS and includes the use of DoQ for stub to recursive, recursive to authoritative, and zone transfer scenarios.</t></abstract>
</front>
<seriesInfo name='RFC' value='9250'/>
<seriesInfo name='DOI' value='10.17487/RFC9250'/>
</reference>



<reference anchor='RFC7858' target='https://www.rfc-editor.org/info/rfc7858'>
<front>
<title>Specification for DNS over Transport Layer Security (TLS)</title>
<author fullname='Z. Hu' initials='Z.' surname='Hu'><organization/></author>
<author fullname='L. Zhu' initials='L.' surname='Zhu'><organization/></author>
<author fullname='J. Heidemann' initials='J.' surname='Heidemann'><organization/></author>
<author fullname='A. Mankin' initials='A.' surname='Mankin'><organization/></author>
<author fullname='D. Wessels' initials='D.' surname='Wessels'><organization/></author>
<author fullname='P. Hoffman' initials='P.' surname='Hoffman'><organization/></author>
<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='RFC8484' target='https://www.rfc-editor.org/info/rfc8484'>
<front>
<title>DNS Queries over HTTPS (DoH)</title>
<author fullname='P. Hoffman' initials='P.' surname='Hoffman'><organization/></author>
<author fullname='P. McManus' initials='P.' surname='McManus'><organization/></author>
<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' target='https://www.rfc-editor.org/info/rfc7830'>
<front>
<title>The EDNS(0) Padding Option</title>
<author fullname='A. Mayrhofer' initials='A.' surname='Mayrhofer'><organization/></author>
<date month='May' year='2016'/>
<abstract><t>This document specifies the EDNS(0) &quot;Padding&quot; 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' target='https://www.rfc-editor.org/info/rfc8467'>
<front>
<title>Padding Policies for Extension Mechanisms for DNS (EDNS(0))</title>
<author fullname='A. Mayrhofer' initials='A.' surname='Mayrhofer'><organization/></author>
<date month='October' year='2018'/>
<abstract><t>RFC 7830 specifies the &quot;Padding&quot; 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 (&quot;padding policies&quot;), 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' target='https://www.rfc-editor.org/info/rfc8305'>
<front>
<title>Happy Eyeballs Version 2: Better Connectivity Using Concurrency</title>
<author fullname='D. Schinazi' initials='D.' surname='Schinazi'><organization/></author>
<author fullname='T. Pauly' initials='T.' surname='Pauly'><organization/></author>
<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 &quot;Happy Eyeballs&quot;.  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='RFC8914' target='https://www.rfc-editor.org/info/rfc8914'>
<front>
<title>Extended DNS Errors</title>
<author fullname='W. Kumari' initials='W.' surname='Kumari'><organization/></author>
<author fullname='E. Hunt' initials='E.' surname='Hunt'><organization/></author>
<author fullname='R. Arends' initials='R.' surname='Arends'><organization/></author>
<author fullname='W. Hardaker' initials='W.' surname='Hardaker'><organization/></author>
<author fullname='D. Lawrence' initials='D.' surname='Lawrence'><organization/></author>
<date month='October' year='2020'/>
<abstract><t>This document defines an extensible method to return additional information about the cause of DNS errors. Though created primarily to extend SERVFAIL to provide additional information about the cause of DNS and DNSSEC failures, the Extended DNS Errors option defined in this document allows all response types to contain extended error information. Extended DNS Error information does not change the processing of RCODEs.</t></abstract>
</front>
<seriesInfo name='RFC' value='8914'/>
<seriesInfo name='DOI' value='10.17487/RFC8914'/>
</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='13' month='February' year='2022'/>
      <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-14'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-tls-esni-14.txt' type='TXT'/>
</reference>



<reference anchor='RFC7766' target='https://www.rfc-editor.org/info/rfc7766'>
<front>
<title>DNS Transport over TCP - Implementation Requirements</title>
<author fullname='J. Dickinson' initials='J.' surname='Dickinson'><organization/></author>
<author fullname='S. Dickinson' initials='S.' surname='Dickinson'><organization/></author>
<author fullname='R. Bellis' initials='R.' surname='Bellis'><organization/></author>
<author fullname='A. Mankin' initials='A.' surname='Mankin'><organization/></author>
<author fullname='D. Wessels' initials='D.' surname='Wessels'><organization/></author>
<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' target='https://www.rfc-editor.org/info/rfc9156'>
<front>
<title>DNS Query Name Minimisation to Improve Privacy</title>
<author fullname='S. Bortzmeyer' initials='S.' surname='Bortzmeyer'><organization/></author>
<author fullname='R. Dolmans' initials='R.' surname='Dolmans'><organization/></author>
<author fullname='P. Hoffman' initials='P.' surname='Hoffman'><organization/></author>
<date month='November' year='2021'/>
<abstract><t>This document describes a technique called &quot;QNAME minimisation&quot; 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' target='https://www.rfc-editor.org/info/rfc8806'>
<front>
<title>Running a Root Server Local to a Resolver</title>
<author fullname='W. Kumari' initials='W.' surname='Kumari'><organization/></author>
<author fullname='P. Hoffman' initials='P.' surname='Hoffman'><organization/></author>
<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' target='https://www.rfc-editor.org/info/rfc8461'>
<front>
<title>SMTP MTA Strict Transport Security (MTA-STS)</title>
<author fullname='D. Margolis' initials='D.' surname='Margolis'><organization/></author>
<author fullname='M. Risher' initials='M.' surname='Risher'><organization/></author>
<author fullname='B. Ramakrishnan' initials='B.' surname='Ramakrishnan'><organization/></author>
<author fullname='A. Brotman' initials='A.' surname='Brotman'><organization/></author>
<author fullname='J. Jones' initials='J.' surname='Jones'><organization/></author>
<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' target='https://www.rfc-editor.org/info/rfc7672'>
<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'><organization/></author>
<author fullname='W. Hardaker' initials='W.' surname='Hardaker'><organization/></author>
<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' target='https://www.rfc-editor.org/info/rfc8460'>
<front>
<title>SMTP TLS Reporting</title>
<author fullname='D. Margolis' initials='D.' surname='Margolis'><organization/></author>
<author fullname='A. Brotman' initials='A.' surname='Brotman'><organization/></author>
<author fullname='B. Ramakrishnan' initials='B.' surname='Ramakrishnan'><organization/></author>
<author fullname='J. Jones' initials='J.' surname='Jones'><organization/></author>
<author fullname='M. Risher' initials='M.' surname='Risher'><organization/></author>
<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='2022'/>
      <abstract>
	 <t>   DNS Error Reporting is a lightweight error reporting mechanism that
   provides the operator of an authoritative server with reports on DNS
   resource records that fail to resolve or validate, that a Domain
   Owner or DNS Hosting organization can use to improve domain hosting.
   The reports are based on Extended DNS Errors [RFC8914].

   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 an agent specified by the
   authoritative server.  DNS Error Reporting uses the DNS to report
   errors.

   Another lack of feedback occurs when validation was successful, or
   when there is no error to report.  This positive feedback may be
   helpful to show that a deployment was successful.  This document
   introcudes an extended DNS error &quot;NO ERROR&quot;.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-dnsop-dns-error-reporting-02'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-dnsop-dns-error-reporting-02.txt' type='TXT'/>
</reference>



<reference anchor='RFC9102' target='https://www.rfc-editor.org/info/rfc9102'>
<front>
<title>TLS DNSSEC Chain Extension</title>
<author fullname='V. Dukhovni' initials='V.' surname='Dukhovni'><organization/></author>
<author fullname='S. Huque' initials='S.' surname='Huque'><organization/></author>
<author fullname='W. Toorop' initials='W.' surname='Toorop'><organization/></author>
<author fullname='P. Wouters' initials='P.' surname='Wouters'><organization/></author>
<author fullname='M. Shore' initials='M.' surname='Shore'><organization/></author>
<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>


<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 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="signalling-mechanism-properties"><name>Signalling Mechanism Properties</name>

<t>To defend against an active attacker, the signalling 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 signalling 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, signalled 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 signalling 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="draft-ietf-dprive-unilateral-probing-substantive-changes-from-00-to-01"><name>draft-ietf-dprive-unilateral-probing 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:
H4sIAG2ZM2MAA+1963LjyJXmfz4FRv5haYJkS3Xpi9Z2Wy2pXbKrVNWS2m2H
17EEySSJLhCgkaBYdLveZZ5lnmzOd87JC0BQUtkduzsbOzHRVoFAXk6e+y0H
g0GvzurcnCbfF1me1qZK8+TtalVW9brIbJ1Nkguzysvt0hR1Us6Sy2JSbVe1
mSY3ZrKubHZvBnU5OFvXi7LK6rSmB8nF9W0vHY8rc98YN3y7+/q0nBTpktYx
rdJZPchMPRtMVxWGX/sRBquqHGfFfHD8rDehR/Oy2p4mtp72etmqOk3qam3r
Z8fHX9HvaWXS0yQr6t6mrN7Pq3K9osF5xN57s6WH09PkqqBxC1MPLjBrz67H
y8zarCzutitay9Xl3be9e1OszWkvSXSMg4t3N1d/vDygJzW/dfADTUCrSn6H
F/B8mWY5PZ8WdoAJ08n2t9jQsKzm+DmtJgv6eVHXK3v62Wd4G49oZUP32md4
8Nm4KjfWfBaN8xm+r8yqjL6f0wGm4+GkXH42fT//bC/U8Cke2Tr6mL4Y6gBZ
uf9bmrdn67SY/q80Lwva9NbYXi/lYwRsBgn9JyFw29PkYpj8YZj8LsvzZVnx
YznZi7TITJ78IV0UjV9pu6fJ2dJU2SQtkvPsPsuT19nYVHVmLPCnLPg9W1fG
0NpPnr1MvqnKdJrc1kP+ZZLVhAfXZpP8mY6in1z/WR6XU5r25Pj4+IX+e13U
wJjvb8/4gcPRs/PX3/MDIydHQPntLJvVC9qdpWfFkHCEX6hK0IqZZjUvfhB2
/fthcpvm6d/TeMu/L8228VhWepanP65NnkarfHb87Pikucrzm3hNP9JQc5vm
v53j3zjtRxb0bpi8KmczWn20oHfpOm88ZuBfnZ9dX3eDSGdf0XfDhXz3W5xT
ASzdXUFWzMpqyWR92ivCn4PBgKBNJ5hO6l7vbpHZhCh+zVzFmtom5Zr+qM3K
JvUircES6Hl1byqbHFaO0xDm2zLnh4SKSdrgIvr6UQIsqtP3JglonG+Tw01G
b9MsabGlbRL5ZwV9WBYJfkjKemGqZGV4hLpMpmZmaAqs429rU20TJcAknacE
XhqGYGJ5UYQbYDHJsiwAgyFtz+heMlpJY69Y29jw6CkY4ZgGLBICCgZK6zqd
vDdVPxkDGrTafIq3bbZc5bQ67Dk31iZVZt9vZZXgzQBZQdNXJlmVG1PN6Ix5
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
3OI4cIvr28Elol+DG1eR8mtf2zMlVXGF/w44QDbwRSuOpezyz65KHy7ukzTI
TuvLN7XiJFYWCIQjclPveVSfI7f6slma4D6JfDuQerlQxMN+O13CtrNzqDY8
Jm7KmBma7e5tkolAOPHU9qIP63C7+AwOfc/bXEgllsmkv+DGmsrfnO3ZmW8C
yhSnOpzSUbNsJdz7RSPfXp4jHYRevEQkM659EBvrmBj/0dEel2uT/z1UyqRt
jCRa5Wpu3Y86jnR1YxoYm52qPCZ7D2aXvKFe8J32Wo12mIJl5yxvuTOeuzAu
5J17FYNFVoOP6B19LhuoMJs4iV2MRL5afRb8KA8KcxN3dujH7qod2qtTpAxq
9QtfeMSlF/62aWYOGor2VO9tBY7GpB8kGsNVmXrrskviFh8eARWX7cHh6b6C
+i439/q79epybtSRi8xCrtx33qOQ0t/KMYMMk1JfAxPfBgJqiqdIw5vxfQzg
mn1fwuS2JjE0LkhMJw1yXJS4jNxZOyBrS+iUTjvmcVnDLQ+ql8d6y6aTp5Lw
w6KrSIl/bYhfSCd49dS0xusQ72T7OuHcdvv+z78kRGbJ5RRe29NklbMHM87Y
drdLjqUXy2o9djXEyV8Zr/3YrzK0C9hKkG9apbN6IPwXTgozCEr6wMWIb9dj
1law4HO9ip51lMHxMdBgcHwCNvqmRDdj7YioHBp343W6Vr155e1gGuGcJAh4
gzbdBIvKIoewS7bcl8bExcX+uiKgnvaZ7UrI4bg7bu0joV1qaD1qB6fZrPt3
fiI7f5YcklR4EhwJWke9aJdyNXkga4n0oKPwToCNibzKJtymJ0PSXcoXhNFo
lx9WORjzZrFtChTrv5ar0X3kx0kJNDSuprnywdvrK8geFydCxkpFWki4+HLg
0/85mAQgWXWKaGAyZCG0dwkINJMzpNWl0Cgp4uo37a4jjVF1+n7+oyWY/svY
+i1pWLteZcazvbdJDjlNi92D7jap0J2Gxnlho40jfOUM8dPk7R/0Hm1XVb97
x32fwaEvQs+aixZpSRRgYE/BfGeEtEGilUmFFV74PXJtQD6iN3VaP+4WyH19
kHr/BTjMfnnrnAAA

-->

</rfc>

