<?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.35 (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-09" 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="July" day="05"/>

    <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 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 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>

<?line -18?>

</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 protocol 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 says that it "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".
It further says "It might work equally between recursive clients and authoritative servers".
The DoQ specification says that "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".
This protocol specifies the use of DoT and DoQ without authentication of the server.</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>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 DNS-over-TLS (DoT) or DNS-over-QUIC (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 <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 this 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, 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.
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 (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>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 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.
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).</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="resolver-binding"/>).</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>

</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 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 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, 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 (current common transports are DoH or DoT).</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.
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>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>

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

<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">192.0.2.200</spanx>, it could keep two distinct sets of per-authoritative-IP state, one for each source address it uses, if the 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>

</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 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 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>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, regardless of how long
in the past that was.</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>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 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">*-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 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 send "early data" from the client in the initial Client Hello in some contexts.
A 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, 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="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 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.</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">*-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 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">*-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 RTT (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 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 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 ask what is the probability that queries are being encrypted.
The resulting 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 value of implementing the protocol.
Thus, it would be useful if resolver 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 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="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 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, 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,
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="3" month="February" 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-04"/>
   
</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 642?>

<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.
Some key metrics include:</t>

<t><list style="symbols">
  <t>Comparison of the CPU and memory use between Do53 and DoE</t>
  <t>Comparison of the query response rates between Do53 and DoE</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 DoE</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 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="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+1963bjyJHmfz4FRv2jpTkkW3XrS+2MbbVK7ZJdF7WkdruP
12cFEUkSFgjQAFgsulzvMs+yT7bxRUTeQECq8njOztmz88NTTQGJzMjIuHxx
yclkMmrztjDPk5/KvEhbU6dF8na9rup2U+ZNm8+SF2ZdVLuVKdukmidn5aze
rVuTJZdmtqmb/J2ZtNXkZNMuqzpv05Z+SF68uRqlt7e1eReN69/dfzyrZmW6
onlkdTpvJ7lp55NsXWP4jRthsq6r27xcTI6/G83op0VV754n5v16NMrX9fOk
rTdN+/j4+Lvjx6O0NunzJC/b0baq7xZ1tVnT4Dzi6M7s6MfseXJe0rilaScv
8NVRs7ld5U2TV+X1bk1zOT+7/mH0zpQb83yUJDrGwYuLy/M/nB3QLy0/dfAz
fYBmlfwWD+D3VZoX9HtWNhN8MJ3tfoMFTat6gT+n9WxJf1627bp5/tVXeBo/
0cym9rGv8MNXt3W1bcxXwThf4f3arKvg/QVtYHo7nVWrr7K7xVeDVMOr+Klp
g5fpjakOkFfD79J3R02bltn/SouqpEXvTDMapbyNoM0kof9JiNzN8+TFNPn9
NPltXhSrquafZWdfpGVuiuT36bKM/krLfZ6crEydz9IyOc3f5UXyKr81dZub
BvxTlfxc09bG0NwfPX6WfF9XaZZctVP+yyxviQ/emG3yC23FOHnzi/xcZfTZ
R8fHx0/1vzdlC4756eqEf7A8enL66if+wcjOEVF+M8/n7ZJW19Bv5ZR4hB+o
K5wVk+UtT37iV/27aXKVFunf0nDJv6vMLvpZZnpSpH/ZmCINZvn4+PHxo3iW
p5fhnP5CQy2atPjNAv+N3X5gQhfT5GU1n9PsgwldpJsi+pmJf3568uZNP4n0
62t6b7qU936DfSrBpfszyMt5Va/4WD8flf6fk8mEqE07mM7a0eh6mTcJnfgN
S5XGtE1SbegfrVk3SbtMW4gE+r1+Z+omOaytpCHOb6qCfyRWTNJIiujjRwm4
qE3vTOLZuNglh9ucnqavpOWOlknHPy/pxapM8IekapemTtaGR2irJDNzQ5/A
PP66MfUu0QOYpIuUyEvDEE0anhTxBkRMsqpK0GBKyzO6lpxmEq0Vc7s1PHoK
QXhLA5YJEQUDpW2bzu5MPU5uQQ2abZHh6SZfrQuaHdZcmKZJ6ry528ksIZtB
spI+X5tkXW1NPac95vk3ppmOeDqLiuQvie94NvRvGoSHz+c7Hr8hEmQ6rpX5
VaQPjJPitJtlgz/JOrE9gUqId2dZreX7LO4TM6uaHdFoNR39nGe0NpM2u85n
8eympD8WO0hX/zXaM1pvPKvbtKHVrNJdMk9neYHPGh5hvmk3RBha1yyfE+fy
ltPoxItVuaAv82qqRZ2ulzQOybvWzPBQ47Y6pqzsEggLpl7lWVaY0egL6JK6
yjb8bpfF03zFpKbR39Fyk8Umz9JyZvAbby6eAltvl1WyTekNuy87ond6W5hg
Ym5eXQasbvUM0NzOS/ozSdDZhnTLOMnbZE6TIYYA9VZmRhyTNys9bcqVaVbx
vkbnhjj0s87fOAkPGunmIieh13PisDl66lIW9VMhmqONEqvp7HSD2ZAYTQ4b
Y5IPH359+cPpN0+fPPv48SihDVH2ZI5Z0v/qErd8mPh727wxWK4y7awwoJCd
dY6NmJMyogFEMtTJ1pA4KfGL4xqIuYb5SKejB81vedFUyW2dmzkRMVfeoMUc
4mxnFf2rrGibaz7Hwp27IzomW5IsyrPY8mpWFcRkiyVtt6lXREk92V4Q7ckP
rOzDhzTLYCphkz5+1Nm5EYmss5p0bJYQQWgf5nNsarskDUtbRSQ0LfjhHbFi
ujDMu6CVtZf8+X1OxyC58Lw5r6uVY0w7ISaUFaVQ6iA9jjMt55aY15gyYLJB
1prSp04SaP5VusYOJCABtoVsvWJCZ4C2mDgO3wAD0bY3s5TODu+jl1vhGbcy
kaYzJ/Egn6BtyxZ8OJtqhaNPy8EZDPalcxTTXiFhSBmMvviCTOW/bvKaD3mT
vErLxYaIKjtCpmgCW7RJDl7/dHV9MJb/n7x5y/++PPvxp/PLsxf499XLk1ev
3D9G+sTVy7c/vXrh/+XfPH37+vXZmxfyMv2aRD+NDl6f/EJ/AbUP3l5cn799
c/LqYF9jkR0NQvB5oc1fgzNof5qRZyF65/vTi//9H4+eEtv9Cx3Hx48efffx
o/7Ht4++eUr/sV2aUr5WlXQi5D+Jp3ajdL2mE4hRSOCQLFrTthckR9IGOnBb
MosSIf/1T6DMn58n/3Y7Wz96+iv9AQuOfrQ0i35kmu3/sveyELHnp57POGpG
v3coHc/35Jfovy3dgx//7ddFXppk8ujbX/9qxNxzjXNfVkW12I1G3p16PnoO
YrFy2FPSaraHGtUKOPMeZ5jMgX2RDImtijeSzKPRi+rZE3yQjgkZevQC3ofg
bGk4PtrVOzwP9fzsSXIoYvnRMYtlvP4j3qbnJnhuQht0iofAH989fnasD11H
D12/urLPfPPts2/1mZfRMy+vry+u7Oe+ffrtU37qbN9Eafi16scx/c+18CGN
RTQoCsPSs9hBiV/UOcQOr5lI/5rEyyr/Gyj5xixEGJ2v1iRvG1XxTqJaFb+S
VyALWiJ7zkq0tC/n8jJtHOliNv9aEcu8W0T7HuuqYVGH50TkqkZjbY2fG7En
DPiGjo19WPdOHsZBo8WuVsQg8Jx5v4UMeJ5+Ld9Bs2c4/XUWqmSzP3sdMly+
s6+w3JaFfEgMkiKsKcx70oEs5W/p29s8I64jSsR/oh9ACpruetOmym0wPTY1
a9DTi5945itDQhfKNTB1jjAUL9+SnxeYsolrzT814cgnYO0H9mXLZsN/JR+m
TknRkykHaU+r3JLfmrHU4y9hcimxz5UOdMS8cmFJcbqs8hkY6KTAiVssOxLV
GmIRyei78I5aswDpLHMEbhDbcM5uWFQQx3AAWvLP8Dbzh47otsWOZJjf6Jmq
8UYAhgxJh5OhB4OOCeR+JOJFIthVKGvgldi0btKdMgjN9yAwOsVQYhtqcwsH
wWt8Vb4s8kl7i1m2hHCpndPAoEsSQS3TJDkPaEKq6R3TV7Q0qZVCJ9XYURy7
EunucVZ0PgfT0TmGq3nlvLAD+kGsMba4Sa+LkbxnxMyKnLX9oDFzYAn44yAB
D37QoxxQquqONiP/gITWmH8Hx+swdWhzYDM3pX4HjMwSIWnzFZ+0LUQeUZUn
W4vf1Gxu/0KSkVVLuajYHMaS1Wq2+/Hbg2lHENqvNOLAyVkOWMv7B/GEdYuE
PNOuB+V3mSixMfHYL53ZQrYrNNLYsXwqYp53gwSZyVgu3ZVkZ4uQJAEUnumX
JIGzNS23TX66fCUSsmUpAcLQNtQ0ECR6FXpRLGK8HIEqZG/PZPms9R+CcAHW
sS356O05sSKJLVw6T5slESZ0TfB97AS9vCcunYAkriW3ZDNbhjPE7Hlg+A+k
KLJxfCCGkIrNOmOgAow3I4lcZepYr2DaJr+1zhooEKO6VwrffPgi4tiJ9e8+
Droke3Ohf1tLSUjd7x2clL1/IVFSVQ07hIG3HS//no+zjelfo6NDdk8DFMKM
xK0JzBXi8yNsY8fSIbY/wu6zffTtsydEu/+iyZ78Yk++E0E0EFjk5NXFGzXJ
v3ly/Ag+IejPP5PqUVfZvkZMR8Y4nyAaakETLMWt9GIzlDDsYQ4tyS0Dy4Ik
AIFIEDBlozfoYPE7IglSkk5/IzI3YlzCO2g2fGAi84j5/ZbUUyRlUuvWgtVT
hj9lOl82ANAL9rvTUP0JzseTug1mQNvGg/sPjg4dgOFcQxzHtZVjS5Uu16fJ
bc7s25j2SHzBi6oq9iIg9qx8b5Y5ZHByRaSiUc8vkpMsq4H5dY/RmsZp6Axd
wUNNu/EUB56CDM6WYQuG1kyvsrwL36I5At/HFt3aWRTkak9u0wLHtRadVG9K
1uZp0rgppjJFNj23ac1jWE8fRqBZ3SoGICSriinwKRZRaeCiQChm+bs8I6Xa
9xbiLWouLUzrRBO9ZNYktUUwMwBh0plCumDLHgCLploU1VZQogCP67C4k1Uf
1aSBC8wmMHOAroDnVuR3YF+np1TFiB2UW7KLbMaW9a1PJtVvWfed9u0yL9RV
w6/47rhjMOhpFpsFgJn7GLOCbmLvseXJY64wExqLETFI7H6szZztux63BSqc
Tti7Ks8CzQVUSi16OLU12yCk3ESHKkH392vs512RhZi29LD65SbH+sW7KJsN
my9wj4p+HlI41R3vnpkfNke8v7m1qtNSzIO52cKMrcqMmL2qO1/EszgxiTsx
q3Td2B2AtDSNiGOeiJ3cbQoTnY6UPugPFKP3V+RAQToBlSO/vWG7dtdjCOqB
pxfXlZxjPgqAB8vdDBrLj0y6sqG5Yj+agLJzN0rOGF2aLA0xfLUwJe0RS4jW
jBkmmBc0D4beaPOUAA0RbUb+KL0nCmNvRSJzs5zlMhOFJ0ukQkijCfmkDFlF
mWQ6+oHJCPOEDJsFcyXPgJcLy0CXWpBBJYhtSE6WhgzM6mml6YiZCA+8MGrJ
kSYfk+y+wB4nrMCJ+KUifkwDkG1rimJMRwG/gKOYEPIJUnjERgrjd1kEJCb/
kNa+AnZIJwTxX4yAoyUUAe9rHMluSGkFDQyzZsly3XCsOnFBN7iBcAxnNVko
wuO80Jxsioy3dzOD1QiEkj60WbHGakQxnUTm+Gj0Q2yNhmI6HVD0TvjB0MZU
WGYwvwR6FpO16sd/UBFqiXU1bYRcMXav4RAbQiHZZYr5JG/IGyANX5sFBi92
E6sW/jh9dvxdMkMYmX0ro46KM4pZLzt7grztFSYKMw4bIfsuJpS4AWwRIUwy
g6rnHVOW65jxnlvCPURstciC+XN4tEgufn8+ERkQzFVCgOJ45KCpB+M57sf+
GPGexWFwQGQbxZRI3kC2nZMcUO+qaz40Zf6xx2LzpoOGTVK1IIlkWRGGVJ2G
F5NTIIyBjx9evTnnqCptGXzKtGAIsvWkIdtE0BpixpfV1rDIV22gz1isVy1E
6+5AWTB+zvMV0eJlKn04OaRNUoCkSGd3YD2ej+6EQ+Fks0PX0eJyPfYDf01V
Ij4iCpa+JP/AIVim4pxlopJVA/NaYI2CHjBjVF/zGsRUKKrqTgWajR/oWs/e
L2lqvRtq6TEx7hlsMIupCVl0KcC9noUgZHpnzBqH2uvCQOCRvmWxMnDox/y3
FbE/cD6mYwU1xwCel5qm3UjIhm1pBy8Gm71vx1rZhykyMUlcbgDMqEK1gKCX
oHDtsZaVBPnt5xtZBFSodeDFOuGH/UAcbWYMoa6K8cBsNC5PvJEqcIzP8cFc
mrzuJSKt9Eop8Wz6DLQJse/k8ODUk+olThrSdY4sfxEPQWIvQl/b04Y+LX7V
j/0ffDJ96j8oQPpnDnwdDzzo5yHyTi9soI7I2WI8TBnXM6U12xA9QCBoVgCT
tPvjNoxtl77AszvaYLVoGl/CaDa0sJpjfALk/80ql3ON9qaClmzKFKonX7Ou
6JnnWGcWTmpDr4RINJTwLURKXlqumbK7kTaVjdqH00gaMo+Izbc2swP2x95X
2LUgiQ+r2LpkKmxhkWRwaSGzcghkhvAOYcpBafqfFkiq4bGzZJ7XTXvEJnQ5
9L2HPgb+BhTYeWxH0rXI8On9v+xPgbbh52XAFkJBwx6OBA4gJMf7W2s5DJKA
7bfMzDhMJrAUqWMyObbxicfz/W4JvPAUCYxsaomT+po2aQGNdC3Yb3JCdueu
yRuWE5FJlZZVuVshA4GkGp8ZdjfVcjP3TF9ZX5RLQ4YhQwdridQHhgmbFUXh
hmTFQM9nDcdNPepwyMpfVM4tjD2aluyXmS6mrIXoDBnyqcWkPiP9fnhMgmWt
kQ6eK28Xbc5VEJAYMxp63TNzO4adtmZgfPsEkiyfu8mJ0ZQKwh2N4tzc2PH2
EvJpV0KyUZCsYA/AfaLNyyVlDDbtjITHXm6TGFBpeBabzQKHBJ9QcHNekcQX
n1/ih19/w0BWB9d0ma6siAtFNXtQgn8c0eyRdGquNlYNb1oO8AVmyboq8hlx
4Sb31mhgoHGAEK9ykllfGg/5UwEMAtBBRxQVJ+zTbApO8JqTklVRKYGyBuZO
ky9K5hlg9KZId3K+XhJLTgrS7EXy9h0cHrNlEWx9Omwjsx2HPcsE8eUudOFM
FDa8kSkjrn5irYhOXCFW79f9YwGvFL97yxbcg6ltPpTGJghiIGJICdzk1FGa
HIoBeU5+o/A7/mVfJ/N3Q44NFBGQBJGQLh6xqMQzFre538zSSMT9i0p1ZqGn
17cqzudJW2/DQaxogLH8UoSNlw0iTLFHiSAr09Fliq3goCTnc4h08m9sGout
WVJNFnBC7yOxEAfv3PcUM2IzyCxzml4jWpkWyXOWiDhcJdkC1kGcndbzmftH
95TmAfEwnHuJ/wSyhgzijWYx5mLqCxA2J9uepSbcv3KCEDftMksnEZGsjD1W
pPghEm7pMIqqE94W4RJBzpEFP0Q4hXY+fDCMW+TNcuJeIgFuuaxxhlggIVJo
zyvjAoTuoVsDgS5U4EQoiUtzJmk0zQjaFFHxOs3Jr5U8rg4qzlALSS8Pg7MQ
oTEhdZiKVhZq8Hw3uHPifYujxVE4ALQ0Q7Jr0lubrjh8/mRjPHLlg/VArWfF
RnZVg0PPbRZC31Bkpwag+f0PsqN4iAc4tsiTh0t5pPgj/oIQieZxVkzJJvAp
aWswMbiUyOxc7wVWafPJFpMkP6TLwlALqRkkcTioFvs8m+Vw2RkZIrFPCwHr
OATI6r4gmajdVgHZGJjXEZPD7nBHYNNVxUieReqWSBQrxQLqBbmJC3PzLkh5
6d9JdX56jopDXZBRiSCEvlHDwGNmnokO7jtmgBm2qBcYExGLVmQEDBs65Jq/
zIZlRCZkLFgU1OZgJeenry8kVKjW84oYhXYI9vP3pMubpiJ7ubUCVhBJF5KK
1xyGZ4LoHgwgv6/I8dlArDEs191Zn72aSc4tW+AfPvTFo0SAIIQix25ym7NL
8PEjJg9I0bxHLg4RaQaYM2N4sH+fwPtZclM2x1N9CVUPNyoUG3lM0JstTHSi
Q1FovodG6Oj3m5MbC6/g0JScFnrz6LvH0+Pp4+k3OpxIuUbkk7XnbLpi/Mq3
fgYpnfYFigIOfS6cpsBNoBWPAhRzGsWhbJB1WbntNE13J2/eXN2IBBBkOGVw
/QaTlmPKhtEBPl0eyKT2qaUI50CI5kTEuGDqga7vY/Asb0hZ8UGg03gDQogj
C70yjvLdmHG8ASBejIh7mIPwbfaNanIAWjB1MxCyi8LI9ycvOMMKHppkzU22
QF3fpQVpVgE6ADhlZp7Cvl2nNdG5VbMbKXX+F/Y6UYZh2m6s0fp+HkbulSqa
BpYquu1XIqiAg+A0bc9+FyeEowjprCanqjc3kIj64XnCNXz/fnC5TzRZfDjq
un97Dz6OGLb9e/IiUNl/T67Ea6JHXwitUPbw98lE/3d0Q+M1HG2ZmRt6Ho4a
R5bUiXjAkHrIUA1c+l/T6E+SDBLp8PGz7x4fH9tg3NHoJiOWJ774R2awKT9v
Do8wh+Tw26+fRjNQXfYZM9imeashBGIs8ovSmIMC/BRAUQWuaQ2m8NR+t6vN
ORjL8rxS5ro5m8yr6kYy3uaSmMTChX91fOHSRvsIcHN2Mw2Fd3JDftck2niR
BLlg/hp6MuVCvDSxga1SHvLw3IZI/HZAKyxTgArBjoVQNR7A3G72zBzWWSRq
N6vQPghQ8FxNp5Rjh12sy8t3G/YA6IU8Kke4B0295OaPN+rU8yfyJnFwJRyE
BlMnzaFf+NMf/2wf38+CS1s61etWasACS8tlgEqU3NY6GVmFqBGLB8X523Zd
h5jDkfNo9iGDcxJKBgiMN/JAtYPbqmhJ6x0EOBbTGfnm1jfcH+/LJpxqaYPs
IieXZLU2kug6+LZ5D9+dlrNU3FxgAc6xOg9Lq6patXFQj9IHMAf2gJpXLi23
tzjCGdC8i+sN+1QaC/B4tCoeyUSI1IsN8eypw6hqJMSbosQrxifDxJHAeuk7
aveks3H+uUAsQZZWLkmLKDVA9arkjaj90k0iCtKsmmm/FlcMME5t0+FgDya9
OXX/jMF8Kt6Uiw0cy3OsYUAyMbnatEak7vr0wmXwiW242jStun8w0iSZjr55
cJNV7c3BFIUPn/2Zn158zmf+is+MfuZMoP488+pTijMHuKVrczXReVDyi2wV
GD5aLPONZiGybGabq9d5UuSOaxSqMix+wBlDXi6z4/WRT1bops8F/QWu3cBB
YE3ghA9fQGFM2NRWwHaYsSQwal1pm6HM4zjbrz/lUZ3xWcv4QGbe+zhzoBF0
xN4hLBLTWxES5S0MDTENEddBYCTcxL31arpynEXDMW2s3wWK0iYGu/scwOke
AIxq8LvYi42jxqrlJOmM1DExB3/tnmXo1KMRHdJFk9OcGXEB4pJARnktuNYy
VqbAmnuJk3s4U0ES8rBsdQfsMevB3Trm/qHkNTScamJzeNp8dmc4gSD89fzF
eC8BCb9JEh598kjmqyng9jWf24PPgCSrFWap1Z5sgEikCAeSgXBfImJ0LrJa
AXfbCjosyInTPHubTG658F4IvFEMXBnIMoBKiIk9OZpiqYGLAabldCiJegAg
EpSpNAJEhikk+xQha6EofMUr4D/UizPEhICJg0RgUDRLNBKgr7HkmuU1yVYY
hZxmPzqTuB9znJr6CsEJluag0zkKiJpP9hclfXWO/E76hzWtc3WuydS7KTdF
cfP8Id+PDwD8vS4mNP5cL/DS8KpOxBG9xImqA08w+j/5aXSjtIdDBB51OEfm
T6aUiIsBN+47p4J9+mIsCyGzOdV7/nrbE0QH8Ah1Q/PEzy8Xm1qIyiEN9fhR
9SRmkWCXAGmeJzdrMadvcFpvgkljpWU1unG+HC8debItuU0YhhFNjdDsyzl6
Gm1Vbqyn99D7+lTAqIfCMTN2KMVcwAKkzA3hAWssu9TBRo6GyY7s17HMTYNP
n5X0h5p3TOhdgWriecnigfzIv6z3Ow732SNZwZL8bPWDBZmfEwsS4buCC7tF
Y4Bw4fZRdWV8NkhAUR06SHKUgZtWM8ACgWDF3SHHq/3svYl+ZOF1Tduw8ktI
x1GIvIqgDEtfnYcqSpkD/YfQ0lfDtyKdxZUEsNgbAYzFwhKGuE+RlW0jfkQS
JG3DzYZIVGJDsD38T2VPpjfnLpHU+wR620d7yUwDjt5UbeDe+3OlUg+yerGo
DadXMKaVt8gZ9oUIe9k/cGt9qMU1tfjZ8lNUbRF9lBZuiS1qsrtcmdRY6DwD
pBrlz/quK3cwZxV5q0XgxTVqyabkbiy2xwUnMxH5NWEmA77OxjI3NZi5JNdP
wWvg/EsubwCouEPIa1AEJ7ZjIswGA3ThhxiDZxzHias/WYj76Z+Bma+RxMXp
n0sTcIiLv4Q8EieJ0dFha2aLEn4jadDBRNxn2JZHyiqOWmsDfljRmbI6vrPv
GpPb/1aM0hNnlMJB7picXc7sy37k1BlnNOYMj8be0YQ+0zH5NVksWFKuW5kG
qTqwnZUXpzHZ83m/Dcup3YazZpSCg2n+7F9FVrkLUDw6Pr4R1re/PKZfxuKT
gLkFa97ijEEbzGwLpvk9i5fQSZcCneXzyiJcDUFWtbLcREkebBAN+D1NI3Qr
mc1h0jV+YkMfXJH+4M/63hwMWK2luqrXoYrKmnyRBqdT20owFJrDatvY4pqV
7wAQBMZcJFR70PSGwmzBl0aoLzi3RjPgerefVj2r3lmzlHPoFR2O14Ng7mbd
m5Mb5G9LBkZ8/pkJaoP6/HcqePZKG2wucsehC7zmj3s6noYOPH4IVU3n9yaw
yxVYq9Z0x9JWIePflgSuD4Wjgi5ac92Tm+vjG02m8U0r3NRplE3TWH+Hqz5u
G84Ka9EIgWuca+nABdiVDb/pIBjA8EtmsPuQfhLMrgKLXM9sJ1eGNa9ULvop
3mv5M/pqgTewj5dfaVdmWaktUks+/S5P5VuSPqifxBkso5ARs+BqU7Q5UFZr
hkhJiRLJrk4FUeC7BAyjaXSNmrMu+2oMAJerlohMBy/T9XqXnO3MLVJzDly3
jifHz/iQOGeN9Cl8ufj5sSgcznFwyo0tLZNpTFvSC0L7QWrhXBkKwHFuooId
lyC/mMiCZN+KP5uXG3ncmfR+t2PYBuyeN2H3Fd9aQxPahB0L846rgKLkUyg8
xeOTH2OWEfX86exCSp5lrk2Mm3f8zmUFA4y8JzOO5bLvaRMzLwK7tDg3IU5k
IZNEzSs2S/LGJo7Gzo/VE7W+wgapfcP5DWqVHV4fJ5PkbBIZ//TwUfJvSRhY
UoPJ2kEKz4Mb+kNAnEYXVrAEiHDr8p8zl36+1bQgm+UYPA4OspETEUXv2/0z
Dru2zgpF85Ya+RvpUGtA61pJAwv2basNyKyqdPU9YbTJeg+2vKgXJLD4ICj4
6VFUtsmk8m9RdZhCzJYhVlCxYbuQNBUrEzpDhlFaWyFkw2EyCJGhJ6jFh+DS
Jya7VOzwJDg9qX+6ubxxoOMuufmRbJy65sLlYfMOefkuysViymcySnXkYKpX
V3EOfEH8heesiTAnxRL61m1bpc3UYqJNt71FDlVg2Uwg5mI/c0cD/l23R3NQ
8FrAO0cBj/EHL82K1sxz4xXvTUumfnkj5XCWjfhdv6b+9aDvq75pV7KW9XlI
0FKKhvvhk+AvCDUZOv78WffbeITJqWDiMui6yUXcwl5heuNo9D36aLj1RqH/
Q86ZtylpVR1pOpYaR0yVvLvTKq9v/nWfOpem3dQ0+auzyz/8cHL+6sbOVGSM
nIRzUeVyFE474eyeoIYzez5PMN+P/0MVOJsi5XIKzkt3CId5l6MGOJa1kYRg
pAEaKWhfanUsa5mgKQBebJe1tkcy+8iUWtYqgMWaPp8PLWIpjQ1cuHUwuY/x
7LAEOUAJ7ydfLt01OE7SIdQATWAM+yn5D4lnERpMkZ4JVMz+ZDpJGaPvDYqt
XDIdt+npmqh981S7dChfSazyOoBD4LxK3xgoHixN4WVxwFBeMKftWOKJBzCJ
oQxFUM6dsD7Wli86/JWnAmNDbQkPZPzxz8mv6AcPSkL184FEEldnbGwZewA8
XPiQt2DwjB2tt4gpqkG0eK5QfZDEHSUivPlprAVKpr6E36LUA8afs+KGTLIB
m20f3o2NN4fqsuH2q8QmYQ0O6MiMv4XbFfxZyZuHQtFFyQISDDDYWLkngH7t
+JxwS7/tBMzQkJtn8XW1XgNNnrs47+yOJ+vjVbsO7KtCUec3De270Ik6FYvy
paG9CQDwoM6mM3S582P2EcSzRT8rcf/rmB1YNzInKHvH9AdpyafGnxHt2zfo
SrP1wlkgaP0YF8b4qAif0qNElXZw0nCy2VwcshbZpiELYiXbqg29LP/vGQFj
7cKiyLcC3hKVURQ85X4ZdbWu+UyxUuEYoYAzpHzP8GTyIm3T0eh1RSK0VyY2
EmZEbPbR9In2NWA9vrR9nFnDHfCH6SC06YFP+FCHQrVLL1O4EKMEVjV7Jiw2
t9vVRNt/nyDnjl3SjoetjrC5MgdQbRRX4kN+6gmXgimwpvaBqwjyLdG722U6
u8V63Q067k7HOK0Xt99xKl80fuhw2LD+hp0ttsK6TBH2TRcAVZnBmSJ4U3nF
MsGljwZdazSI8WT98WPfEexI50OrdrlhNr2pJZdV4YOZxJl01o8eMsW0/CeQ
e3vRKs9bA4kf9ySWwPouGPDZH3dwautNsxTE1aXjqXxse6StpetgMwqfjCSN
KOAarD7x9I0l8mAPVRTb5WgMWkzYA5ne35NCuTQ8ioIDKmwIlJy1nOskKSKH
+1gw1FM7LkYbCJshGJRhaoUSS96eZl1hoy5B6tCJpJKOMYJ7IanufwTfdG2b
bBsJJG4I/q19dzxbaiQb9i7ar7Bfg/Y0crin7OWVStCqnOeLjeRi2nIRSIiy
dZlKWKNEn3ImdRUU42/z2timatr/O8PS0nqHazqkS2RQJIB2nWRNh0HMMBIn
VVmiaBRMaLSaaZVm6JASdgJAB+J5CDy0aA8T9qAKPkOO9R0K2qHbxYZ5n7e7
gcSieVwi62RVF0IDafRkxDvM+KWahBimvyh92LcJihnu+4yraZAyRLYqXIFz
pzZa+owEXaoT16nMHqcm8DwjTQX49nzygq+qmbRFMzE4wh+PxHxBmZClr5UC
vcl63XZD37sEJKkQDCuc4wPFyWBh3W5c2aS8z40oMqMBdR1IOg5KpiK3CPEd
dxINd3rkoiNLfeUUKEt/wZUZ/rkvG80MAyOpryjrYd3t+VrKvTF9TnopqsWC
/4FgASuQVDsPoNUpDhjZAoxatL4FTm24N2tH5WYbE7JG0FtV61THtt2X4p2u
DwWKZrnzn5bNOuhpHOUgYV9DseDj4c48v+daFMY6zqwzazsS3J+z+eGLvjJV
Cw72Wz1hYg2X8RU7lyzTCMojHAN94o1x98gRA4oSZHp0s4eRMuweuT5qPD+6
8bV9ken93J3u/a9lAeZW7FhJSAOrrpfaVP6Mhs5wiA6MhlxX6+n5B7q4u1uD
f6R3ifRnFwnySGwvPsd+fGBUAnmWs4ewG3xAQdGssc6Qnnrf+4YeLwM2G4/s
LvJ47t/SEUNUaRBM0hTKB77EHPsDnR21WR3zPsy52PJxwEiPb4bYtYcDtRLU
lZcLMplKb7KCZBbNP3DkesGMQV5gp/7eXX782bsc4KEqRh0uyiIthkbZBukB
lMfQ0W4Lun/VHVMYceeei2MUUcoHcGklofaQyBcL0+2p7d2sigXhvhQMgctB
szpt95Jtzltb2cTdK/r7MPAC2IcE2Ofq2AR/A65pinRNlo4VoD1s94MscjR6
i3ECiTAeYjqJIYM4ajj6+l8xH5ygzIzcpxNqEbEhaxTuBH1KuYp0ZhxQmzda
sh2hDv8Ys/5/bvzvyY22WRmZiIZY7Wq5aTP4MJzb+6CIPHHi8clwhI3v9MoZ
fEjb/sVi0lE/sSZKdo0K+QKPPewvoLZTbyOwvhwf+2DYbu+ja3D1ucz//wh7
r9HTVK5bs4zwf4XTTwCfduvadfrBEWijdPEwfZExrWJ3X7pGH29/+MJaGMoH
rvDSz2GornUQ0/Y2xNOHwtAC+0oJZdj4Su5VdK1o3VWGtL1G+ynOsNiTeWs8
nuF2/qGvhh1u6fEvbWhoH5uTTujewhrOueIwmzW2oxReb6c8vYlrih6ap+s4
gcdCzLEDlPtOh+y+olfcj54R//Od4piwD4GAn9wkzmWRa95pfx839V4/sY9b
2LstfvO/f+82e2LdnvH0NMP4lIhXmqIZ3ZMDZ398bxt7Kdo2oDHvbaL+0C6v
8zXf2+QnQBO3VxAE+WW+art2PQGVhtykURKM3Y7QtPkOAqS+AUieLZHwKVTm
JQlO2BuZhLaz2/k10omnj2RLmT2++fprNCydazUmz9dv/tf7rU3nPpvx/qyf
foHal8bxz8kNui+I+HnJQYGIfvYPZQqd7aUJvcibWVpnvDCQeP3JaUPhrv5T
84aiSQLLDoCEfdn8rPvIPtbw7L7Uo/+CtKI3N7YRFYD1gSyjN31ZRnu0eNOh
xackSn1CItZ9yUmXp29fnIULOIZlh6aJDyYsPZyapkbiP5LIpMEqaSjhc5ou
e1tWhz0M+tpVP9yS+R713tORObT8/4G+zPe0SbZl7f/0/ss9A3f7L59Bdmsc
Ss2DKOKDpWuj/t4yg0rA8W6EyntaIfklnmYyJCmRSLJdsfCsTa+WlsIce+h3
tfRCYtvPPW836aeUpIsJ9GA3ZTeD4Y+/Lc3D41g0nM/M/oidpDBbEu6iUL2y
0HZH9uVT+12RQzdqu59ZpKXanxmdcp2S+T4pIzkmQUJYt13yQMqWau2wR6N3
4Bu9faivi4rtYR82hw/FE/eIT0VnuUZ0YMgSYZqTX+y8EfbalcQnDR4I/MHo
6qb++2uqnsb2QQ2BYsMiM4buCfJXbWpzOE4nSX3yiybupEW+0Oti3HR9wmNw
xbyWmKfKmlFdWO8Oy1WA5FpP5oavVzmI1+4gC1vFpst2pTjJwbJqD3xxGQ8Y
JBmCPkHl9T20Um448ZHUa9wcuuinnfMDw7syBi49S0tXOT8QDr41O+6RqOaL
r05Kbyt7WcpggZ8LxHUKZkV48FUyEsJOd5riEF7zNAg9WNeRL5ycymHQzeRo
wt7XtCibJczPQW2JhTI4OtLEWUSyR3HxC7ePII0zMI40ehU4yxqGzsFgHz8O
RtlyGlL1E1jfM4nyXV5fJ4c1+1ltna9ZiB2FhcsujQdfjd/1eLKvleNut7XP
1vbPBIaOjo07VZPzkzcnkDfstacqcuICWkCSZBHzk7Poyane58tQR3eQ+3JT
mjKfxEN9HBAOroP1vaBO0EtJey6jzOJT0lIYCHP/gVNZLep0vcxnweYhKNv0
ZE5IqplWlnv4aS8+W926KzfPw+tgpUJlG1Ziy2V8URs5vkPLd32KS1JRj+be
LnYT6ejpOtlyK5eh6bBMkDpQUmrNMmQ6JMVw11uXBdXhSHv121tSna3NzUE8
HBfVcPxCqiMHUhxolCWK/SIS0hBjSSWxmmAvoSSoZeMipFzEgJvcUrpt3cn7
4ZbBAeK+JChLQ2jlnfSzclngaVFMglIWCVj+dVN1r3KNgBRtsFxlRsL7eBDl
qLbjCT2vFGA4/rcMCtiqKc2AWuntTdomcCaXG8tTCsUgHUfS3vbtgMH7b20S
SmCWcRO8OyfiMdt1MFuntyxQI8lATl9ZHYDUBoHKUuCSwRVSYhCZGnpGGqmk
xJyzIOej3a3jPZNvMMg+2I3GJkngoMJJAm/gS8Rs9u7U3rFFI2nVpfen9sSM
zUdpN7cdyuqFi3L937ZsUNS6QtcxZxDio9rvgpjHZXLcSjcBS3ab16lljOjy
xmrCpqp2OhihvQG9T4sQJvqsjXethnK7LUtTrFFSzBfELYM+B4MdX7HVG2Gh
bdCUA/ojnwcg8uAcJAEHTT5MjQYG6SLeGt4R3y4RFr49iT2lI6JrrviC63Zf
2Vzvwc2hBtNrqGDSzA3AmnSBRpTtUCKN2Oocu3LdBcJrsHmYzI0i5q3eVM5t
NM7l4Mo9eJBG7LmFAGTLzQs90qjBsYMlV+YaV8kb2bJhY25nAGqDDeRxF1nY
kTG683mYOK6KSFH14FY47hvSf3sDWNnbS/uXc38Kl0JUk/IojO9PieYAeXMX
3lqVhx0mNTXMXoZ2/8o4Day6ldLyeOO7WxYVVHHdOhhf7u9sjVzD2LTQh1il
3MfIrdZxK1Bth9/X75/lUIJlaAtykZs0+5n2OSm7870nnhc0Gp2O3tbjvrf1
mryqkT5xksgpq10ByC7NJC8nRNzJKs8yuE0ifQeE59aVWHQOBvcDbZFGp+xt
L4ezxnjnesIX/DpbezpCy40rZOKNu6UbLJLHN516FCW+jIG0U+MqkOXSZtxs
oMl4kp3KGfN6t6PVF1H0xDUNCrT+dZzr30hpETjE3nWuTK13KLCRPOFocs3g
PDaKbDTpHo1ahJ5nhpE49pfV311zM7eZ9EbROzPVgfnxzcnrM+v9q/krYYbv
Hj37mrO0imrGLTkqMT5d74Bvj+Xv5BGPg8RTtv3eSYNxm+SrUn0XX5Pp+znR
zyibM669EVuCfJkYL3maQLi/DYRAV76fNL2yJexKGtx6MXSvHAemEXzh5G+L
yVX+0nCsJDKvHT9023F4C5ucUhDbjTYfdFV063DVa80pkzgyehEiwunBPT/2
stTntt1Lv3Ms6khBeSdQPBlyzUcJIxjBcrXQcK524sPjpLOg4oWD96E1Ln3Q
fed+btQ768Asrlm+3iv0lfptDk3jUqe0jK60tUPeswnXUsqklkrQSMb1gkyT
BYwexXAc7LCFDLeNYfWLR4LWcyI9+DG8TBvX240DHuxIcyd9mGDA6ASWifaP
9OaWm9BUiRAD1/7QVjAL6tERcvomBEpeFba+7YY1MJ3RxOCjaxIb3Xxlv8tO
XfhI7/TY5DqZuVtcOGd9NHrN7oqp1gKKt3VOutPb4BmupKrW1oCIVbJCTJ6j
w7tdRieFeZ9yNOJ1uquXFa1nPPq+zokbXuSkAKpyPDpd1rBF6KeXm5wIko5H
ZzVx2ZvdghY/Hv1QVPzCWzi549HLtNptkiva4vHod/kquTR5Nh79nsZIrjAS
+ffj0QX7Xe/4M3+h/75MSR3+bG4xwCUU31Va/I3+Wd2isu6MHmzGoyty2Hha
pKgwsatZ1ZJ3S9xgSrK/aZgrshyWKYnU72mP/7Yio47G+6WqF1WDdo1NkxZk
b96Zud7swi7CxeX5H874Diwu2yJbAxfKTCYT1vXYESmni8082pb/+aeExHZy
lsGCfZ6sC7bmagmJteE9Z7dS0CzHU4T1n1WhcT5Vlr/n9umNBhxEAnWrgOyN
35bfpS/XHB3ZgHFGK5AOGsiWsFCLrvNnfeq3sk7fub02c9TiWDeCO3xaJCJy
o7i+Bub/T+Ut42hRwbr1rmAc1PlKJMKMvHXS0u1SDiCJWtcV41oHe0H66m64
tssKMH2aDPDZ3aSpUhpPr4/uHfV72pPN0DMuq/ry/OIsOWmJZPJEo29fkKit
sXbp1iatA3xXs70vvvGNwvmMw5tEJS2GEJhJl4Lnp8yRDj4VU8/bBEH186Mn
8gerg2yv3hqXv5AWgITG1etZznEoo/fOctusat5u09rJCDa8udYEdkzD4oZ9
VOuMnrlt64KSXLth8fRUkxGDPaajwEKbUzcE9nDOr0KhdkH+PZ3qndnR/Emu
zQKNMsPBjnAMM1uiHVERuvQOFoy9qOigdP0URbXDr4Yg9ilDunnjfbnTi58k
QEhnm++BM84Bkwvk+La+s953xU5zWQs1V7sOvP06QHeGjHZLTHVrrcndeZuL
Nny3Wya9opCZWvf28iZp3Vfu9mcPb1N6PKZwfMpsm2ekww+JWaCzvzL8/8au
ndaaE+1whwd5dzus0/9y1L9mYsAX6imeqAdyIr7TifUUcSs0Z3NxF7/PuI/S
gRBl9aA7CndAQh6BNxNq8v0G8zhfEonZpgJ12WvQGzVPW3thekfU713ZAYbi
S3zdrX7dueTNPYE0d6E5avdl9+MFJhyddN28WCPJZuTCKkMGNA8PsY6381aN
Do70x+kHETqBZFXajqUgSmvXZDRv/Erz6MaSAQ/XEraOLhMLEzbCbCDfmV8t
bMUuVpxAWobnyAxfSRM0Khu8BsLWF6R8Qb23yO+j4soIhjJ4UZuklbm46e0u
MnRNp6A8ztx2t7V+POLtYvSa2J45UfZOkydK4AaDnOSSCBi6K+gB6Vr4whv+
MaWbzk4dcPmFpAIcBPkY7LpcVdak77J3YGO7yztIO8NxTP9S1a53Zu6u0W4/
TQiwQD9RBCLONRX2M7hZM6qGu/+iPQmdNO4Y9HMVQg+TTjnofRcj8CQRqG25
NPsW2ZN7ImsfVnIulT7b3EMJFUIa3pDbu+SyE4gWbDBqNCvObvjw4devr08m
V9dX/y5pqI+Q31Pj9xcnb84mV6+vL/CXb77+5rEmqCZXHuR57Wh8wfU0LTk9
nAfVhXH3VqTdEPxQfrtcxXDggQWdhIdFiYIAMWdGAiLcwijkLO1XfVoC63LN
7+6dpAJ7W99CRCZMk8nl2jP4jdWWFChOqIXZJDNzTyVxig/3kZZ0NImp8eUN
NutowXF43x0C6Fk27b06hf/WdPBlCeGLFdUnk6J69AioqaIKYimtkOxgpQzz
YKtRIDkrvX3sGwGH/J2Ybh2QgeIzZ2IVW1fmzRXHO+nPQZRWGgcgi1BuV9Wp
ahKMv8W2N6bNSFjF1zDzl4JO11WtETtkL+hVwk4x5c1dckujCzpa7tqldqvi
me70TkOjsUDHNlNpxwCvcOz2scNLPgNQvs1YjcocxAFLzYaw93IwfHVvVYlb
pYV1gw2ca0WoHBCF2NKQtZvOFvluqCQWrl9dXV5cq7Q49tLizdXkrK6renJp
vcp/d3X2Gbnxa/zvxPAjzvG0ImVffvZV3XOjjVUzbDDb3rLewice+eP02fF3
yWlQK5+TVabwf4J7FYvdRHpX+IJ6TkTQKex6LwXQq35ImjJn+mtlBlvgIzGa
ZGp30oet7fGQl3DxWyfbbI5hqJPJfgG6oekQoThz7hSfOLXh9BzFteL+dmsa
+ersFHUF9OAZrjoLC44Fyz4mwX90NJBDEsu/+9oKaANOSd+03XDsH3Ucaa7M
Z4DW0e2QwcfekdlWAWgq2F6X26jZvXDZKetb7mZtL3XxxZ7OxGCVFckRvYne
lpWUZhtWjrpcAjmxn6LMTdhybRw6tHtnr01Re6Yl53wbL9c7K56jwkFvHHSn
3vkKnJ+Yvpf8RO6QkkkDE9Bcu1flSCdxEL59iz1fXFPvb5Bvq4XRzBSUqHFH
LRul83W0nWIl6LD+nLRYPQUWntzJA6k5dn0D7NIkdYKbg6Sz6DhyZofzdnCs
G2KnNOv5jm2v0IlUO32Ma1sCfSplIqy6ypTk15bkhWDaGhHrjNej3sn3tcq5
G375z2KLXwRjv8zR/WyndX+bWzZEMJdTThJU82Ny/C12eHL8HZvMGdKD7DeY
nhYq4WMWgUYez6E3f+JOD5k1SxkPFOEd5f77QDzX8Fm7QCHyB+f6jcz1W8Zr
+E+ZTSBCT4MAmHKLCUPecSqcXScwFLh/nB5kmPRA1qR3xcNz+lrm9M0ooIJW
LGlnOL9ofqW3K5RPoCkAP8p/S/fgB77/TL7/NdOEVLPc5yWHitRqatOjQtcJ
BS1rw8aaMwj01jpXx6ZxI87NjEdO22BJ3FHeXtkJoQzm50JZuzZ6+xUSoEvj
YsMubSB2wSpuG8Wvw9d0Vmew22FOaoezPGO5PE2JOzs/H9aOQZtN4pSUM+HS
btTFsg2JC2Srl1CunZQhYbjRgxvzRDbmaXdjkAPdc+PRAfTzNSuZx7Y1K9su
7l4jl6k/lVZXtizj6fTr6aOxvTDVZDZDHmKbYTe+mt3ltHS7bIed7lDX79I0
0fG751NPxmQuRsvppF33tM4Lr8Ni3yPoFymOEi/QVV0zcPAQgR8LgZ94yYUL
JbsZ3U6cVf15M2JMcUiZo/zc4EVcowFk50vtl49cPhvYU2gjuPKNNUda3iW7
aiPqIIlDWf9yNB39QO4t55bwkrxis1WPLGbpKEUR/zBPTC3XIWSnNnIVsHiO
jN0L44fp7DB4nLeLRvKmwPWEU0dW6eGGrBehC/FrHTY4thnhborTPV0CgzxK
3lzHyZseQRFkQunZppyk9AAjPBJGeOyL/TKuCbapsPRqaeRuHL49MN1HlIIe
Xc/vT4HYA+YU/w2wlzqdtwoZiZ5b6oOSwd2xtb4MLp+ETVnoHetnp1cCALv0
xrnhw6FXn7hLjVzai+R0JZGTqYR0eIBhszEVNZ6ioIJVFToo6CgHvjBE3Ajm
ep41WVSI4OqlJLqvsmb6iaaUouYl4PuLTWmI8ldVlYHdLVcwL/HlSpmrz7cZ
e5GJsLIV6hq18B3Fgo/sH6sJfbjVfRD+pE1nFLOW4O79/HQs/PQI/PSauSlc
8ZykVjnpTdhzYLJD/Z3s39kjB72YB2mGtkfBUBEvC2AyrZEVlLGhrXdm9VWj
ctmdD+ewBRfcQfHJJyk5hCJmAk7EawdzmImHdid6aIhaR6NglSx2AidGEvUR
inVpnUFSRQPjkruG56hVT0vS240o6AISc7vcxSK4cW8LVzqzw/rE8SUWV2/O
4WnbNH9c4F0TB/mbPCfumnGuBQCRbDKH1iL5IsTuKjkSHNVgijUkHkle2Gy8
/g52shdC4uxu8ZeGaDpI5U/l1h/IdtrPVWQ+60PhuLpmylKTk87Ick/RTc83
yaZxnjbBwlF9YCXf8+Tt76VXo+vnaQseyEkV35KEGsihD3J9kmBmnPmCvbGC
iW+C5gJxzEwKavDA71BSi+Oj6Ql9WC+frNsOqwQAwOj/AOTGtrseugAA

-->

</rfc>

