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

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

<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-doh-dns-over-https-12" category="std">

  <front>
    <title abbrev="DNS Queries over HTTPS (DoH)">DNS Queries over HTTPS (DoH)</title>

    <author initials="P." surname="Hoffman" fullname="Paul Hoffman">
      <organization>ICANN</organization>
      <address>
        <email>paul.hoffman@icann.org</email>
      </address>
    </author>
    <author initials="P." surname="McManus" fullname="Patrick McManus">
      <organization>Mozilla</organization>
      <address>
        <email>mcmanus@ducksong.com</email>
      </address>
    </author>

    <date year="2018" month="June" day="27"/>

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

    <abstract>


<t>This document describes how to make DNS queries over HTTPS.</t>



    </abstract>


  </front>

  <middle>


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

<t>This document defines a specific protocol for sending DNS <xref target="RFC1035"/>
queries and getting DNS responses over HTTP <xref target="RFC7540"/> using https
URIs (and therefore TLS <xref target="RFC5246"/> security for integrity and
confidentiality). Each DNS query-response pair is mapped into a HTTP
exchange.</t>

<t>The described approach is more than a tunnel over HTTP. It establishes
default media formatting types for requests and responses but uses
normal HTTP content negotiation mechanisms for selecting alternatives
that endpoints may prefer in anticipation of serving new use cases. In
addition to this media type negotiation, it aligns itself with HTTP
features such as caching, redirection, proxying, authentication, and
compression.</t>

<t>The integration with HTTP provides a transport suitable for both
existing DNS clients and native web applications seeking access to
the DNS.</t>

<t>Two primary uses cases were considered during this protocol’s
development. They included preventing on-path devices from interfering
with DNS operations and allowing web applications to access DNS
information via existing browser APIs in a safe way consistent with
Cross Origin Resource Sharing (CORS) <xref target="CORS"/>. No special effort has
been taken to enable or prevent application to other use cases.
This document focuses on communication between DNS clients (such as operating
system stub resolvers) and recursive resolvers.</t>

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

<t>A server that supports this protocol is called a “DoH server” to
differentiate it from a “DNS server”
(one that only provides DNS service over one or more of the other transport protocols
standardized for DNS).
Similarly, a client that supports this protocol is called a
“DoH client”.</t>

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

</section>
<section anchor="protocol-requirements" title="Protocol Requirements">

<t>[[ RFC Editor: Please remove this entire section before publication. ]]</t>

<t>The protocol described here bases its design on the following protocol requirements:</t>

<t><list style="symbols">
  <t>The protocol must use normal HTTP semantics.</t>
  <t>The queries and responses must be able to be flexible enough to express every
DNS query that would normally be sent in DNS over UDP (including queries and
responses that use DNS extensions, but not those that require multiple
responses).</t>
  <t>The protocol must permit the addition of new formats for DNS queries and responses.</t>
  <t>The protocol must ensure interoperability by specifying a single format for
requests and responses that is mandatory to implement.  That format must be
able to support future modifications to the DNS protocol including the
inclusion of one or more EDNS options (including those not yet defined).</t>
  <t>The protocol must use a secure transport that meets the
requirements for HTTPS.</t>
</list></t>

<section anchor="non-requirements" title="Non-requirements">

<t><list style="symbols">
  <t>Supporting network-specific DNS64 <xref target="RFC6147"/></t>
  <t>Supporting other network-specific inferences from plaintext DNS queries</t>
  <t>Supporting insecure HTTP</t>
</list></t>

</section>
</section>
<section anchor="selection" title="Selection of DoH Server">

<t>Configuration, discovery, and updating of the URI Template <xref target="RFC6570"/>
(see <xref target="httprequest"/>) is done out of band from this protocol. Note
that configuration might be manual (such as a user typing URI
Templates in a user interface for “options”) or automatic (such as URI
Templates being supplied in responses from DHCP or similar
protocols). DoH Servers MAY support more than one URI. This allows
the different endpoints to have different properties such as different
authentication requirements or service level guarantees.</t>

<t>A DoH client uses configuration to select the URI, and thus the
DoH server, that is to be used for resolution. <xref target="RFC2818"></xref> defines how HTTPS
verifies the DoH server’s identity.</t>

<t>A DoH client MUST NOT use a different URI simply because it was discovered
outside of the client’s configuration, or because a server offers an unsolicited response
that appears to be a valid answer to a DNS query. This
specification does not extend DNS resolution privileges to URIs that
are not recognized by the DoH client as configured URIs. Such
scenarios may create additional operational, tracking, and security
hazards that require limitations for safe usage. A future
specification may support this use case.</t>

</section>
<section anchor="the-http-exchange" title="The HTTP Exchange">

<section anchor="httprequest" title="The HTTP Request">

<t>A DoH client encodes a single DNS query
into an HTTP request using either the HTTP GET or POST method and the
other requirements of this section. The DoH server defines the URI
used by the request through the use of a URI Template.</t>

<t>The URI Template defined in this document is processed without any
variables when the HTTP method is POST. When the HTTP method is
GET the single variable “dns” is defined as the content of the DNS request
(as described in <xref target="dnswire"/>), encoded with base64url <xref target="RFC4648"/>.</t>

<t>Future specifications for new media types MUST define the variables
used for URI Template processing with this protocol.</t>

<t>DoH servers MUST implement both the POST and GET methods.</t>

<t>When using the POST method the DNS query is included as the message
body of the HTTP request and the Content-Type request header indicates
the media type of the message. POST-ed requests are smaller than their
GET equivalents.</t>

<t>Using the GET method is friendlier to many HTTP cache implementations.</t>

<t>The DoH client SHOULD include an HTTP “Accept” request header to
indicate what type of content can be understood in
response. Irrespective of the value of the Accept request header, the
client MUST be prepared to process “application/dns-message”
(as described in <xref target="dnswire"/>) responses but MAY also process any other type it receives.</t>

<t>In order to maximize cache friendliness, DoH clients using media
formats that include DNS ID, such as application/dns-message,
SHOULD use a DNS ID of 0 in every DNS request.  HTTP correlates
the request and response, thus eliminating the need for the ID in a media
type such as application/dns-message. The use of a varying
DNS ID can cause semantically equivalent DNS queries to be cached
separately.</t>

<t>DoH clients can use HTTP/2 padding and compression in the same way
that other HTTP/2 clients use (or don’t use) them.</t>

<section anchor="http-request-examples" title="HTTP Request Examples">

<t>These examples use HTTP/2 style formatting from <xref target="RFC7540"/>.</t>

<t>These examples use a DoH service with a URI Template of
“https://dnsserver.example.net/dns-query{?dns}” to resolve
IN A records.</t>

<t>The requests are represented as application/dns-message typed bodies.</t>

<t>The first example request uses GET to request www.example.com</t>

<figure><artwork><![CDATA[
:method = GET
:scheme = https
:authority = dnsserver.example.net
:path = /dns-query?dns=AAABAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB
accept = application/dns-message
]]></artwork></figure>

<t>The same DNS query for www.example.com, using the POST method would be:</t>

<figure><artwork><![CDATA[
:method = POST
:scheme = https
:authority = dnsserver.example.net
:path = /dns-query
accept = application/dns-message
content-type = application/dns-message
content-length = 33

<33 bytes represented by the following hex encoding>
00 00 01 00 00 01 00 00  00 00 00 00 03 77 77 77
07 65 78 61 6d 70 6c 65  03 63 6f 6d 00 00 01 00
01
]]></artwork></figure>

<t>Finally, a GET based query for
a.62characterlabel-makes-base64url-distinct-from-standard-base64.example.com
is shown as an example to emphasize that the encoding alphabet of
base64url is different than regular base64 and that padding is omitted.</t>

<t>The DNS query is 94 bytes represented by the following hex encoding</t>

<figure><artwork><![CDATA[
00 00 01 00 00 01 00 00  00 00 00 00 01 61 3e 36
32 63 68 61 72 61 63 74  65 72 6c 61 62 65 6c 2d
6d 61 6b 65 73 2d 62 61  73 65 36 34 75 72 6c 2d
64 69 73 74 69 6e 63 74  2d 66 72 6f 6d 2d 73 74
61 6e 64 61 72 64 2d 62  61 73 65 36 34 07 65 78
61 6d 70 6c 65 03 63 6f  6d 00 00 01 00 01

:method = GET
:scheme = https
:authority = dnsserver.example.net
:path = /dns-query? (no space or CR)
        dns=AAABAAABAAAAAAAAAWE-NjJjaGFyYWN0ZXJsYWJl (no space or CR)
        bC1tYWtlcy1iYXNlNjR1cmwtZGlzdGluY3QtZnJvbS1z (no space or CR)
        dGFuZGFyZC1iYXNlNjQHZXhhbXBsZQNjb20AAAEAAQ
accept = application/dns-message

]]></artwork></figure>

</section>
</section>
<section anchor="http-response" title="The HTTP Response">

<t>The only response type defined in this document is
“application/dns-message”, but it is possible that other
response formats will be defined in the future.
A DoH server MUST be able to process application/dns-message
request messages.</t>

<t>Different response media types will provide more or less information from a DNS
response. For example, one response type might include information from the
DNS header bytes while another might omit it. The amount and type of information
that a media type gives is solely up to the format, and not defined in
this protocol.</t>

<t>Each DNS request-response pair is matched to one HTTP exchange.
The responses may be processed and transported in any order
using HTTP’s multi-streaming functionality (<xref target="RFC7540"/> Section 5).</t>

<t><xref target="caching"/> discusses the relationship between DNS and HTTP
response caching.</t>

<section anchor="handling-dns-and-http-errors" title="Handling DNS and HTTP Errors">

<t>DNS response codes indicate either success or failure for the DNS query. A
successful HTTP response with a 2xx status code (<xref target="RFC7231"/> Section 6.3) can be used for
any valid DNS response, regardless of the DNS response code. For example, a
successful 2xx HTTP status code is used even with a DNS message whose DNS
response code indicates failure, such as SERVFAIL or NXDOMAIN.</t>

<t>HTTP responses with non-successful HTTP status codes do not contain
replies to the original DNS question in the HTTP request.
DoH clients need to use the same semantic processing of non-successful
HTTP status codes as other HTTP clients. This might mean that the DoH
client retries the query with the same DoH server, such as authorization
failures (HTTP status code 401 <xref target="RFC7235"/> Section 3.1). It could also mean
that the DoH client retries  with a different DoH server, such as for
unsupported media types (HTTP status code 415, <xref target="RFC7231"/> Section 6.5.13), or
where the server cannot generate a representation suitable for the client
(HTTP status code 406, <xref target="RFC7231"/> Section 6.5.6), and so on.</t>

</section>
<section anchor="http-response-example" title="HTTP Response Example">

<t>This is an example response for a query for the IN A records for
“www.example.com” with recursion turned on. The response bears one
record with an address of 192.0.2.1 and a TTL of 128 seconds.</t>

<figure><artwork><![CDATA[
:status = 200
content-type = application/dns-message
content-length = 64
cache-control = max-age=128

<64 bytes represented by the following hex encoding>
00 00 81 80 00 01 00 01  00 00 00 00 03 77 77 77
07 65 78 61 6d 70 6c 65  03 63 6f 6d 00 00 01 00
01 03 77 77 77 07 65 78  61 6d 70 6c 65 03 63 6f
6d 00 00 01 00 01 00 00  00 80 00 04 C0 00 02 01
]]></artwork></figure>

</section>
</section>
</section>
<section anchor="http-integration" title="HTTP Integration">

<t>This protocol MUST be used with the https scheme URI <xref target="RFC7230"/>.</t>

<t><xref target="PrivacyConsiderations"/> and <xref target="Security"/> discuss additional considerations
for the integration with HTTP.</t>

<section anchor="caching" title="Cache Interaction">

<t>A DoH exchange can pass through a hierarchy of caches that include
both HTTP and DNS specific caches.
These caches may exist beteen the DoH server and client, or on the DoH client itself.
HTTP caches are by design generic;
that is, they do not understand this protocol. Even if a DoH
client has modified its cache implementation to be aware of DoH
semantics, it does not follow that all upstream caches (for example,
inline proxies, server-side gateways and Content Delivery Networks) will
be.</t>

<t>As a result, DoH servers need to carefully consider the HTTP
caching metadata they send in response to GET requests (POST requests
are not cacheable unless specific response headers are sent; this is
not widely implemented, and not advised for DoH).</t>

<t>In particular, DoH servers SHOULD assign an explicit freshness
lifetime (<xref target="RFC7234"/> Section 4.2)
so that the DoH client is more likely to use fresh DNS data.
This requirement is due to HTTP caches being able to assign
their own heuristic freshness (such as that described in <xref target="RFC7234"/> Section 4.2.2),
which would take control of the cache contents out of the hands of the DoH server.</t>

<t>The assigned freshness lifetime of a DoH HTTP response SHOULD be
the smallest TTL in the Answer section of the DNS response. For
example, if a HTTP response carries three RRsets with TTLs of 30, 600,
and 300, the HTTP freshness lifetime should be 30 seconds (which could be specified as
“Cache-Control: max-age=30”). The assigned freshness lifetime MUST NOT
be greater than the smallest TTL in the Answer section of the DNS
response.
This requirement helps assure that none of the RRsets contained in a DNS response are served stale
from an HTTP cache.</t>

<t>If the DNS response has no records in the Answer section, and the DNS
response has an SOA record in the Authority section, the response
freshness lifetime MUST NOT be greater than the MINIMUM field from
that SOA record (see <xref target="RFC2308"/>).</t>

<t>The stale-while-revalidate and stale-if-error Cache-Control directives
(<xref target="RFC5861"/>) could be well suited to a DoH implementation when
allowed by server policy. Those mechanisms allow a client, at the
server’s discretion, to reuse a cache entry that is no longer fresh.
In such a case, the client reuses all of a cached entry, or none of it.</t>

<t>DoH servers also need to consider caching when generating
responses that are not globally valid. For instance, if a DoH
server customizes a response based on the client’s identity, it would
not want to allow global reuse of that response. This could be
accomplished through a variety of HTTP techniques such as a
Cache-Control max-age of 0, or by using the Vary response header
(<xref target="RFC7231"/> Section 7.1.4) to establish a secondary cache key
(<xref target="RFC7234"/> Section 4.1).</t>

<t>DoH clients MUST account for the Age response header’s value
(<xref target="RFC7234"/>) when calculating the DNS TTL of a response. For example,
if a RRset is received with a DNS TTL of 600, but the Age header
indicates that the response has been cached for 250 seconds, the
remaining lifetime of the RRset is 350 seconds.</t>

<t>DoH clients can request an uncached copy of a response by using
the “no-cache” request cache control directive (<xref target="RFC7234"/>, Section
5.2.1.4) and similar controls. Note that some caches might not honor
these directives, either due to configuration or interaction with
traditional DNS caches that do not have such a mechanism.</t>

<t>HTTP conditional requests (<xref target="RFC7232"/>) may be of limited value to
DoH, as revalidation provides only a bandwidth benefit and DNS
transactions are normally latency bound. Furthermore, the HTTP
response headers that enable revalidation (such as “Last-Modified” and
“Etag”) are often fairly large when compared to the overall DNS
response size, and have a variable nature that creates constant
pressure on the HTTP/2 compression dictionary <xref target="RFC7541"/>. Other types
of DNS data, such as zone transfers, may be larger and benefit more
from revalidation.</t>

</section>
<section anchor="http2" title="HTTP/2">

<t>HTTP/2 <xref target="RFC7540"/> is the minimum RECOMMENDED version of HTTP for use with DoH.</t>

<t>The messages in classic UDP based DNS <xref target="RFC1035"/> are inherently
unordered and have low overhead. A competitive HTTP transport needs to
support reordering, parallelism, priority, and header compression to
achieve similar performance. Those features were introduced to HTTP in
HTTP/2 <xref target="RFC7540"/>. Earlier versions of HTTP are capable of conveying
the semantic requirements of DoH but may result in very poor
performance.</t>

</section>
<section anchor="server-push" title="Server Push">

<t>Before using DoH response data for DNS resolution, the client MUST
establish that the HTTP request URI may be used for the DoH query.
For HTTP requests initiated by the DoH client this is
implicit in the selection of URI. For HTTP server push (<xref target="RFC7540"/>
Section 8.2) extra care must be taken to ensure that the pushed URI is
one that the client would have directed the same query to if the
client had initiated the request.</t>

</section>
<section anchor="content-negotiation" title="Content Negotiation">

<t>In order to maximize interoperability, DoH clients and DoH
servers MUST support the “application/dns-message” media
type. Other media types MAY be used as defined by HTTP Content
Negotiation (<xref target="RFC7231"/> Section 3.4).
Those media types MUST be flexible enough to express every
DNS query that would normally be sent in DNS over UDP (including queries and
responses that use DNS extensions, but not those that require multiple
responses).</t>

</section>
</section>
<section anchor="dnswire" title="Definition of the application/dns-message media type">

<t>The data payload for the application/dns-message media type is a
single message of the DNS on-the-wire format defined in Section 4.2.1
of <xref target="RFC1035"/>. The format was originally for DNS over UDP.  Although
<xref target="RFC1035"/> says “Messages carried by UDP are restricted to 512
bytes”, that was later updated by <xref target="RFC6891"/>. This media type
restricts the maximum size of the DNS message to 65535 bytes. Note
that the wire format used in this media type is different than the
wire format used in <xref target="RFC7858"/> (which uses the format defined in
Section 4.2.2 of <xref target="RFC1035"/>).</t>

<t>DoH clients using this media type MAY have one or more EDNS options
<xref target="RFC6891"/> in the request. DoH servers using this media type MUST ignore
the value given for the EDNS UDP payload size in DNS requests.</t>

<t>When using the GET method, the data payload for this media type MUST be
encoded with base64url <xref target="RFC4648"/> and then provided as a variable named
“dns” to the URI Template expansion. Padding characters for base64url MUST
NOT be included.</t>

<t>When using the POST method, the data payload for this media type MUST NOT
be encoded and is used directly as the HTTP message body.</t>

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

<section anchor="dnsMessageType" title="Registration of application/dns-message Media Type">

<figure><artwork><![CDATA[
To: ietf-types@iana.org
Subject: Registration of MIME media type
         application/dns-message

MIME media type name: application

MIME subtype name: dns-message

Required parameters: n/a

Optional parameters: n/a

Encoding considerations: This is a binary format. The contents are a
DNS message as defined in RFC 1035. The format used here is for DNS
over UDP, which is the format defined in the diagrams in RFC 1035.

Security considerations:  The security considerations for carrying
this data are the same for carrying DNS without encryption.

Interoperability considerations:  None.

Published specification:  This document.

Applications that use this media type:
  Systems that want to exchange full DNS messages.

Additional information:

Magic number(s):  n/a

File extension(s):  n/a

Macintosh file type code(s):  n/a

Person & email address to contact for further information:
   Paul Hoffman, paul.hoffman@icann.org

Intended usage:  COMMON

Restrictions on usage:  n/a

Author:  Paul Hoffman, paul.hoffman@icann.org

Change controller:  IESG
]]></artwork></figure>

</section>
</section>
<section anchor="PrivacyConsiderations" title="Privacy Considerations">

<t><xref target="RFC7626"/> discusses DNS Privacy Considerations in both “On the
wire” (Section 2.4), and “In the server” (Section 2.5) contexts. This
is also a useful framing for DoH’s privacy considerations.</t>

<section anchor="OnTheWire" title="On The Wire">

<t>DoH encrypts DNS traffic and requires authentication of the
server. This mitigates both passive surveillance <xref target="RFC7258"/> and
active attacks that attempt to divert DNS traffic to rogue servers
(<xref target="RFC7626"/> Section 2.5.1). DNS over TLS <xref target="RFC7858"/> provides
similar protections, while direct UDP and TCP based transports are
vulnerable to this class of attack.</t>

<t>Additionally, the use of the HTTPS default port 443 and the ability to
mix DoH traffic with other HTTPS traffic on the same connection can
deter unprivileged on-path devices from interfering with DNS operations and make
DNS traffic analysis more difficult.</t>

</section>
<section anchor="InTheServer" title="In The Server">

<t>The DNS wire format <xref target="RFC1035"/> contains no client identifiers, however
various transports of DNS queries and responses do provide data that can be
used to correlate requests. HTTPS presents new considerations for
 correlation such as explicit HTTP cookies and implicit
fingerprinting of the unique set and ordering of HTTP request headers.</t>

<t>A DoH implementation is built on IP, TCP, TLS, and HTTP. Each layer
contains one or more common features that can be used to correlate
queries to the same identity. DNS transports will generally
carry the same privacy properties of the layers used to implement
them. For example, the properties of IP, TCP, and TLS apply to DNS
over TLS implementations.</t>

<t>The privacy considerations of using the HTTPS layer in DoH are
incremental to those of DNS over TLS. DoH is not known to introduce
new concerns beyond those associated with HTTPS.</t>

<t>At the IP level, the client address provides obvious correlation
information. This can be mitigated by use of a NAT, proxy, VPN, or
simple address rotation over time. It may be aggravated by use of a
DNS server that can correlate real-time addressing information with
other personal identifiers, such as when a DNS server and DHCP server
are operated by the same entity.</t>

<t>DNS implementations that use one TCP connection for multiple DNS
requests directly group those requests. Long lived connections have
better performance behaviors than short lived connections, but group
more requests. TCP-based solutions may also seek performance through
the use of TCP Fast Open <xref target="RFC7413"/>. The cookies used in TCP Fast
Open allow servers to correlate TCP sessions.</t>

<t>TLS based implementations often achieve better handshake performance
through the use of some form of session resumption mechanism such as
session tickets <xref target="RFC5077"/>. Session resumption creates trivial
mechanisms for a server to correlate TLS connections
together.</t>

<t>HTTP’s feature set can also be used for identification and tracking in
a number of different ways. For example, authentication request header
fields explicitly identify profiles in use, and HTTP Cookies are
designed as an explicit state tracking mechanism between the client
and serving site and often are used as an authentication mechanism.</t>

<t>Additionally, the User-Agent and Accept-Language request header fields
often convey specific information about the client version or locale.
This facilitates content negotiation and operational work-arounds for
implementation bugs. Request header fields that control caching
can expose state information about a subset of the client’s
history. Mixing DoH requests with other HTTP requests on the same
connection also provides an opportunity for richer data correlation.</t>

<t>The DoH protocol design allows applications to fully leverage the HTTP
ecosystem, including features that are not enumerated here. Utilizing the full
set of HTTP features enables DoH to be more than an HTTP tunnel, but
at the cost of opening up implementations to the full set of privacy
considerations of HTTP.</t>

<t>Implementations of DoH clients and servers need to consider the
benefit and privacy impact of these features, and their deployment
context, when deciding whether or not to enable them. Implementations
are advised to expose the minimal set of data needed to achieve the desired
feature set.</t>

<t>Determining whether or not a DoH implementation requires HTTP cookie
<xref target="RFC6265"/> support is particularly important because HTTP cookies are the primary
state tracking mechanism in HTTP. HTTP Cookies SHOULD NOT be accepted
by DOH clients unless they are explicitly required by a use case.</t>

</section>
</section>
<section anchor="Security" title="Security Considerations">

<t>Running DNS over HTTPS relies on the security of the underlying
HTTP transport. This mitigates classic amplification
attacks for UDP-based DNS. Implementations utilizing HTTP/2 benefit from the TLS
profile defined in <xref target="RFC7540"/> Section 9.2.</t>

<t>Session level encryption has well known weaknesses with respect to
traffic analysis which might be particularly acute when dealing with
DNS queries.
HTTP/2 provides further advice about the use of compression
(<xref target="RFC7540"/> Section 10.6) and padding (<xref target="RFC7540"/> Section 10.7 ).
DoH Servers can also add DNS padding <xref target="RFC7830"/> if the DoH client requests
it in the DNS query.</t>

<t>The HTTPS connection provides transport security for the interaction between the
DoH server and client, but does not provide the response integrity of DNS
data provided by DNSSEC. DNSSEC and DoH are independent and fully compatible
protocols, each solving different problems. The use of one does not diminish the
need nor the usefulness of the other. It is the choice of a client to either
perform full DNSSEC validation of answers or to trust the DoH server to do
DNSSEC validation and inspect the AD (Authentic Data) bit in the returned
message to determine whether an answer was authentic or not. As noted in
<xref target="http-response"/>, different response media types will provide more or less
information from a DNS response so this choice may be affected by the response
media type.</t>

<t><xref target="caching"/> describes the interaction of this protocol with HTTP
caching. An adversary that can control the cache used by the client
can affect that client’s view of the DNS. This is no different
than the security implications of HTTP caching for other protocols
that use HTTP.</t>

<t>In the absence of DNSSEC information, a DoH server can give a
client invalid data in response to a DNS query. <xref target="selection"/>
disallows the use of DoH DNS responses that do not originate from
configured servers. This prohibition does not guarantee protection against invalid
data, but it does reduce the risk.</t>

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

<t>Local policy considerations and similar factors mean different DNS
servers may provide different results to the same query: for instance
in split DNS configurations <xref target="RFC6950"/>.  It logically follows that
the server which is queried can influence the end result.  Therefore a
client’s choice of DNS server may affect the responses it gets to its
queries.
For example, in the case of DNS64 <xref target="RFC6147"/>, the choice could affect
whether IPv6/IPv4 translation will work at all.</t>

<t>The HTTPS channel used by this specification establishes secure two
party communication between the DoH client and the DoH server.
Filtering or inspection systems that rely on unsecured transport of
DNS will not function in a DNS over HTTPS environment.</t>

<t>Some HTTPS client implementations perform real time third party checks
of the revocation status of the certificates being used by TLS. If
this check is done as part of the DoH server connection procedure
and the check itself requires DNS resolution to connect to the third
party a deadlock can occur. The use of OCSP <xref target="RFC6960"/> servers or AIA
for CRL fetching (<xref target="RFC5280"/> Section 4.2.2.1) are examples of how
this deadlock can happen.  To mitigate the possibility of deadlock,
DoH servers SHOULD NOT rely on DNS based references to external
resources in the TLS handshake. For OCSP the server can bundle the
certificate status as part of the handshake using a mechanism
appropriate to the version of TLS, such as using <xref target="RFC6066"/> Section 8
for TLS version 1.2. AIA deadlocks can be avoided by providing
intermediate certificates that might otherwise be obtained through
additional requests. Note that these deadlocks also need to be
considered for server that a DoH server might redirect to.</t>

<t>A DoH client may face a similar bootstrapping problem when the
HTTP request needs to resolve the hostname portion of the DNS
URI. Just as the address of a traditional DNS nameserver cannot be
originally determined from that same server, a DoH client cannot use
its DoH server to initially resolve the server’s host name into an
address. Alternative strategies a client might employ include making
the initial resolution part of the configuration, IP based URIs and
corresponding IP based certificates for HTTPS, or resolving the DNS
API server’s hostname via traditional DNS or another DoH server while
still authenticating the resulting connection via HTTPS.</t>

<t>HTTP <xref target="RFC7230"/> is a stateless application level protocol and
therefore DoH implementations do not provide stateful ordering
guarantees between different requests. DoH cannot be used as a
transport for other protocols that require strict ordering.</t>

<t>A DoH server is allowed to answer queries with any valid DNS response.
For example, a valid DNS response might have the TC (truncation) bit set in
the DNS header to indicate that the server
was not able to retrieve a full answer for the query but is providing
the best answer it could get.
A DoH server can reply to queries with an HTTP error
for queries that it cannot fulfill.
In this same example, a DoH server could use an HTTP error instead
of a non-error response that has the TC bit set.</t>

<t>Many extensions to DNS, using <xref target="RFC6891"/>, have been defined over the years.
Extensions that are specific to the choice of transport, such as <xref target="RFC7828"/>,
are not applicable to DoH.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor="RFC1035" target='https://www.rfc-editor.org/info/rfc1035'>
<front>
<title>Domain names - implementation and specification</title>
<author initials='P.V.' surname='Mockapetris' fullname='P.V. Mockapetris'><organization /></author>
<date year='1987' month='November' />
<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="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<abstract><t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='2119'/>
<seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>



<reference  anchor="RFC2308" target='https://www.rfc-editor.org/info/rfc2308'>
<front>
<title>Negative Caching of DNS Queries (DNS NCACHE)</title>
<author initials='M.' surname='Andrews' fullname='M. Andrews'><organization /></author>
<date year='1998' month='March' />
<abstract><t>RFC1034 provided a description of how to cache negative responses.  It however had a fundamental flaw in that it did not allow a name server to hand out those cached responses to other resolvers, thereby greatly reducing the effect of the caching.  This document addresses issues raise in the light of experience and replaces RFC1034 Section 4.3.4. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='2308'/>
<seriesInfo name='DOI' value='10.17487/RFC2308'/>
</reference>



<reference  anchor="RFC4648" target='https://www.rfc-editor.org/info/rfc4648'>
<front>
<title>The Base16, Base32, and Base64 Data Encodings</title>
<author initials='S.' surname='Josefsson' fullname='S. Josefsson'><organization /></author>
<date year='2006' month='October' />
<abstract><t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes.  It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4648'/>
<seriesInfo name='DOI' value='10.17487/RFC4648'/>
</reference>



<reference  anchor="RFC5246" target='https://www.rfc-editor.org/info/rfc5246'>
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
<author initials='T.' surname='Dierks' fullname='T. Dierks'><organization /></author>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<date year='2008' month='August' />
<abstract><t>This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol.  The TLS protocol provides communications security over the Internet.  The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5246'/>
<seriesInfo name='DOI' value='10.17487/RFC5246'/>
</reference>



<reference  anchor="RFC6265" target='https://www.rfc-editor.org/info/rfc6265'>
<front>
<title>HTTP State Management Mechanism</title>
<author initials='A.' surname='Barth' fullname='A. Barth'><organization /></author>
<date year='2011' month='April' />
<abstract><t>This document defines the HTTP Cookie and Set-Cookie header fields. These header fields can be used by HTTP servers to store state (called cookies) at HTTP user agents, letting the servers maintain a stateful session over the mostly stateless HTTP protocol.  Although cookies have many historical infelicities that degrade their security and privacy, the Cookie and Set-Cookie header fields are widely used on the Internet.  This document obsoletes RFC 2965.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6265'/>
<seriesInfo name='DOI' value='10.17487/RFC6265'/>
</reference>



<reference  anchor="RFC6570" target='https://www.rfc-editor.org/info/rfc6570'>
<front>
<title>URI Template</title>
<author initials='J.' surname='Gregorio' fullname='J. Gregorio'><organization /></author>
<author initials='R.' surname='Fielding' fullname='R. Fielding'><organization /></author>
<author initials='M.' surname='Hadley' fullname='M. Hadley'><organization /></author>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham'><organization /></author>
<author initials='D.' surname='Orchard' fullname='D. Orchard'><organization /></author>
<date year='2012' month='March' />
<abstract><t>A URI Template is a compact sequence of characters for describing a range of Uniform Resource Identifiers through variable expansion. This specification defines the URI Template syntax and the process for expanding a URI Template into a URI reference, along with guidelines for the use of URI Templates on the Internet.   [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6570'/>
<seriesInfo name='DOI' value='10.17487/RFC6570'/>
</reference>



<reference  anchor="RFC7230" target='https://www.rfc-editor.org/info/rfc7230'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems.  This document provides an overview of HTTP architecture and its associated terminology, defines the &quot;http&quot; and &quot;https&quot; Uniform Resource Identifier (URI) schemes, defines the HTTP/1.1 message syntax and parsing requirements, and describes related security concerns for implementations.</t></abstract>
</front>
<seriesInfo name='RFC' value='7230'/>
<seriesInfo name='DOI' value='10.17487/RFC7230'/>
</reference>



<reference  anchor="RFC7231" target='https://www.rfc-editor.org/info/rfc7231'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless \%application- level protocol for distributed, collaborative, hypertext information systems.  This document defines the semantics of HTTP/1.1 messages, as expressed by request methods, request header fields, response status codes, and response header fields, along with the payload of messages (metadata and body content) and mechanisms for content negotiation.</t></abstract>
</front>
<seriesInfo name='RFC' value='7231'/>
<seriesInfo name='DOI' value='10.17487/RFC7231'/>
</reference>



<reference  anchor="RFC7232" target='https://www.rfc-editor.org/info/rfc7232'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless application- level protocol for distributed, collaborative, hypertext information systems.  This document defines HTTP/1.1 conditional requests, including metadata header fields for indicating state changes, request header fields for making preconditions on such state, and rules for constructing the responses to a conditional request when one or more preconditions evaluate to false.</t></abstract>
</front>
<seriesInfo name='RFC' value='7232'/>
<seriesInfo name='DOI' value='10.17487/RFC7232'/>
</reference>



<reference  anchor="RFC7234" target='https://www.rfc-editor.org/info/rfc7234'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Caching</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless \%application- level protocol for distributed, collaborative, hypertext information systems.  This document defines HTTP caches and the associated header fields that control cache behavior or indicate cacheable response messages.</t></abstract>
</front>
<seriesInfo name='RFC' value='7234'/>
<seriesInfo name='DOI' value='10.17487/RFC7234'/>
</reference>



<reference  anchor="RFC7235" target='https://www.rfc-editor.org/info/rfc7235'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Authentication</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless application- level protocol for distributed, collaborative, hypermedia information systems.  This document defines the HTTP Authentication framework.</t></abstract>
</front>
<seriesInfo name='RFC' value='7235'/>
<seriesInfo name='DOI' value='10.17487/RFC7235'/>
</reference>



<reference  anchor="RFC7540" target='https://www.rfc-editor.org/info/rfc7540'>
<front>
<title>Hypertext Transfer Protocol Version 2 (HTTP/2)</title>
<author initials='M.' surname='Belshe' fullname='M. Belshe'><organization /></author>
<author initials='R.' surname='Peon' fullname='R. Peon'><organization /></author>
<author initials='M.' surname='Thomson' fullname='M. Thomson' role='editor'><organization /></author>
<date year='2015' month='May' />
<abstract><t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2).  HTTP/2 enables a more efficient use of network resources and a reduced perception of latency by introducing header field compression and allowing multiple concurrent exchanges on the same connection.  It also introduces unsolicited push of representations from servers to clients.</t><t>This specification is an alternative to, but does not obsolete, the HTTP/1.1 message syntax.  HTTP's existing semantics remain unchanged.</t></abstract>
</front>
<seriesInfo name='RFC' value='7540'/>
<seriesInfo name='DOI' value='10.17487/RFC7540'/>
</reference>



<reference  anchor="RFC7541" target='https://www.rfc-editor.org/info/rfc7541'>
<front>
<title>HPACK: Header Compression for HTTP/2</title>
<author initials='R.' surname='Peon' fullname='R. Peon'><organization /></author>
<author initials='H.' surname='Ruellan' fullname='H. Ruellan'><organization /></author>
<date year='2015' month='May' />
<abstract><t>This specification defines HPACK, a compression format for efficiently representing HTTP header fields, to be used in HTTP/2.</t></abstract>
</front>
<seriesInfo name='RFC' value='7541'/>
<seriesInfo name='DOI' value='10.17487/RFC7541'/>
</reference>



<reference  anchor="RFC7626" target='https://www.rfc-editor.org/info/rfc7626'>
<front>
<title>DNS Privacy Considerations</title>
<author initials='S.' surname='Bortzmeyer' fullname='S. Bortzmeyer'><organization /></author>
<date year='2015' month='August' />
<abstract><t>This document describes the privacy issues associated with the use of the DNS by Internet users.  It is intended to be an analysis of the present situation and does not prescribe solutions.</t></abstract>
</front>
<seriesInfo name='RFC' value='7626'/>
<seriesInfo name='DOI' value='10.17487/RFC7626'/>
</reference>



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




    </references>

    <references title='Informative References'>





<reference  anchor="RFC2818" target='https://www.rfc-editor.org/info/rfc2818'>
<front>
<title>HTTP Over TLS</title>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<date year='2000' month='May' />
<abstract><t>This memo describes how to use Transport Layer Security (TLS) to secure Hypertext Transfer Protocol (HTTP) connections over the Internet.  This memo provides information for the Internet community.</t></abstract>
</front>
<seriesInfo name='RFC' value='2818'/>
<seriesInfo name='DOI' value='10.17487/RFC2818'/>
</reference>



<reference  anchor="RFC5077" target='https://www.rfc-editor.org/info/rfc5077'>
<front>
<title>Transport Layer Security (TLS) Session Resumption without Server-Side State</title>
<author initials='J.' surname='Salowey' fullname='J. Salowey'><organization /></author>
<author initials='H.' surname='Zhou' fullname='H. Zhou'><organization /></author>
<author initials='P.' surname='Eronen' fullname='P. Eronen'><organization /></author>
<author initials='H.' surname='Tschofenig' fullname='H. Tschofenig'><organization /></author>
<date year='2008' month='January' />
<abstract><t>This document describes a mechanism that enables the Transport Layer Security (TLS) server to resume sessions and avoid keeping per-client session state.  The TLS server encapsulates the session state into a ticket and forwards it to the client.  The client can subsequently resume a session using the obtained ticket.  This document obsoletes RFC 4507.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5077'/>
<seriesInfo name='DOI' value='10.17487/RFC5077'/>
</reference>



<reference  anchor="RFC5280" target='https://www.rfc-editor.org/info/rfc5280'>
<front>
<title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
<author initials='D.' surname='Cooper' fullname='D. Cooper'><organization /></author>
<author initials='S.' surname='Santesson' fullname='S. Santesson'><organization /></author>
<author initials='S.' surname='Farrell' fullname='S. Farrell'><organization /></author>
<author initials='S.' surname='Boeyen' fullname='S. Boeyen'><organization /></author>
<author initials='R.' surname='Housley' fullname='R. Housley'><organization /></author>
<author initials='W.' surname='Polk' fullname='W. Polk'><organization /></author>
<date year='2008' month='May' />
<abstract><t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet.  An overview of this approach and model is provided as an introduction.  The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms.  Standard certificate extensions are described and two Internet-specific extensions are defined.  A set of required certificate extensions is specified.  The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions.  An algorithm for X.509 certification path validation is described.  An ASN.1 module and examples are provided in the appendices.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5280'/>
<seriesInfo name='DOI' value='10.17487/RFC5280'/>
</reference>



<reference  anchor="RFC5861" target='https://www.rfc-editor.org/info/rfc5861'>
<front>
<title>HTTP Cache-Control Extensions for Stale Content</title>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham'><organization /></author>
<date year='2010' month='May' />
<abstract><t>This document defines two independent HTTP Cache-Control extensions that allow control over the use of stale responses by caches.  This  document is not an Internet Standards Track specification; it is published for informational purposes.</t></abstract>
</front>
<seriesInfo name='RFC' value='5861'/>
<seriesInfo name='DOI' value='10.17487/RFC5861'/>
</reference>



<reference  anchor="RFC6066" target='https://www.rfc-editor.org/info/rfc6066'>
<front>
<title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
<author initials='D.' surname='Eastlake 3rd' fullname='D. Eastlake 3rd'><organization /></author>
<date year='2011' month='January' />
<abstract><t>This document provides specifications for existing TLS extensions.  It is a companion document for RFC 5246, &quot;The Transport Layer Security (TLS) Protocol Version 1.2&quot;.  The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6066'/>
<seriesInfo name='DOI' value='10.17487/RFC6066'/>
</reference>



<reference  anchor="RFC6147" target='https://www.rfc-editor.org/info/rfc6147'>
<front>
<title>DNS64: DNS Extensions for Network Address Translation from IPv6 Clients to IPv4 Servers</title>
<author initials='M.' surname='Bagnulo' fullname='M. Bagnulo'><organization /></author>
<author initials='A.' surname='Sullivan' fullname='A. Sullivan'><organization /></author>
<author initials='P.' surname='Matthews' fullname='P. Matthews'><organization /></author>
<author initials='I.' surname='van Beijnum' fullname='I. van Beijnum'><organization /></author>
<date year='2011' month='April' />
<abstract><t>DNS64 is a mechanism for synthesizing AAAA records from A records. DNS64 is used with an IPv6/IPv4 translator to enable client-server communication between an IPv6-only client and an IPv4-only server, without requiring any changes to either the IPv6 or the IPv4 node, for the class of applications that work through NATs.  This document specifies DNS64, and provides suggestions on how it should be deployed in conjunction with IPv6/IPv4 translators.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6147'/>
<seriesInfo name='DOI' value='10.17487/RFC6147'/>
</reference>



<reference  anchor="RFC6891" target='https://www.rfc-editor.org/info/rfc6891'>
<front>
<title>Extension Mechanisms for DNS (EDNS(0))</title>
<author initials='J.' surname='Damas' fullname='J. Damas'><organization /></author>
<author initials='M.' surname='Graff' fullname='M. Graff'><organization /></author>
<author initials='P.' surname='Vixie' fullname='P. Vixie'><organization /></author>
<date year='2013' month='April' />
<abstract><t>The Domain Name System's wire protocol includes a number of fixed fields whose range has been or soon will be exhausted and does not allow requestors to advertise their capabilities to responders.  This document describes backward-compatible mechanisms for allowing the protocol to grow.</t><t>This document updates the Extension Mechanisms for DNS (EDNS(0)) specification (and obsoletes RFC 2671) based on feedback from deployment experience in several implementations.  It also obsoletes RFC 2673 (&quot;Binary Labels in the Domain Name System&quot;) and adds considerations on the use of extended labels in the DNS.</t></abstract>
</front>
<seriesInfo name='STD' value='75'/>
<seriesInfo name='RFC' value='6891'/>
<seriesInfo name='DOI' value='10.17487/RFC6891'/>
</reference>



<reference  anchor="RFC6950" target='https://www.rfc-editor.org/info/rfc6950'>
<front>
<title>Architectural Considerations on Application Features in the DNS</title>
<author initials='J.' surname='Peterson' fullname='J. Peterson'><organization /></author>
<author initials='O.' surname='Kolkman' fullname='O. Kolkman'><organization /></author>
<author initials='H.' surname='Tschofenig' fullname='H. Tschofenig'><organization /></author>
<author initials='B.' surname='Aboba' fullname='B. Aboba'><organization /></author>
<date year='2013' month='October' />
<abstract><t>A number of Internet applications rely on the Domain Name System (DNS) to support their operations.  Many applications use the DNS to locate services for a domain; some, for example, transform identifiers other than domain names into formats that the DNS can process, and then fetch application data or service location data from the DNS. Proposals incorporating sophisticated application behavior using DNS as a substrate have raised questions about the role of the DNS as an application platform.  This document explores the architectural consequences of using the DNS to implement certain application features, and it provides guidance to future application designers as to the limitations of the DNS as a substrate and the situations in which alternative designs should be considered.</t></abstract>
</front>
<seriesInfo name='RFC' value='6950'/>
<seriesInfo name='DOI' value='10.17487/RFC6950'/>
</reference>



<reference  anchor="RFC6960" target='https://www.rfc-editor.org/info/rfc6960'>
<front>
<title>X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP</title>
<author initials='S.' surname='Santesson' fullname='S. Santesson'><organization /></author>
<author initials='M.' surname='Myers' fullname='M. Myers'><organization /></author>
<author initials='R.' surname='Ankney' fullname='R. Ankney'><organization /></author>
<author initials='A.' surname='Malpani' fullname='A. Malpani'><organization /></author>
<author initials='S.' surname='Galperin' fullname='S. Galperin'><organization /></author>
<author initials='C.' surname='Adams' fullname='C. Adams'><organization /></author>
<date year='2013' month='June' />
<abstract><t>This document specifies a protocol useful in determining the current status of a digital certificate without requiring Certificate Revocation Lists (CRLs). Additional mechanisms addressing PKIX operational requirements are specified in separate documents.  This document obsoletes RFCs 2560 and 6277.  It also updates RFC 5912.</t></abstract>
</front>
<seriesInfo name='RFC' value='6960'/>
<seriesInfo name='DOI' value='10.17487/RFC6960'/>
</reference>



<reference  anchor="RFC7258" target='https://www.rfc-editor.org/info/rfc7258'>
<front>
<title>Pervasive Monitoring Is an Attack</title>
<author initials='S.' surname='Farrell' fullname='S. Farrell'><organization /></author>
<author initials='H.' surname='Tschofenig' fullname='H. Tschofenig'><organization /></author>
<date year='2014' month='May' />
<abstract><t>Pervasive monitoring is a technical attack that should be mitigated in the design of IETF protocols, where possible.</t></abstract>
</front>
<seriesInfo name='BCP' value='188'/>
<seriesInfo name='RFC' value='7258'/>
<seriesInfo name='DOI' value='10.17487/RFC7258'/>
</reference>



<reference  anchor="RFC7413" target='https://www.rfc-editor.org/info/rfc7413'>
<front>
<title>TCP Fast Open</title>
<author initials='Y.' surname='Cheng' fullname='Y. Cheng'><organization /></author>
<author initials='J.' surname='Chu' fullname='J. Chu'><organization /></author>
<author initials='S.' surname='Radhakrishnan' fullname='S. Radhakrishnan'><organization /></author>
<author initials='A.' surname='Jain' fullname='A. Jain'><organization /></author>
<date year='2014' month='December' />
<abstract><t>This document describes an experimental TCP mechanism called TCP Fast Open (TFO).  TFO allows data to be carried in the SYN and SYN-ACK packets and consumed by the receiving end during the initial connection handshake, and saves up to one full round-trip time (RTT) compared to the standard TCP, which requires a three-way handshake (3WHS) to complete before data can be exchanged.  However, TFO deviates from the standard TCP semantics, since the data in the SYN could be replayed to an application in some rare circumstances.  Applications should not use TFO unless they can tolerate this issue, as detailed in the Applicability section.</t></abstract>
</front>
<seriesInfo name='RFC' value='7413'/>
<seriesInfo name='DOI' value='10.17487/RFC7413'/>
</reference>



<reference  anchor="RFC7828" target='https://www.rfc-editor.org/info/rfc7828'>
<front>
<title>The edns-tcp-keepalive EDNS0 Option</title>
<author initials='P.' surname='Wouters' fullname='P. Wouters'><organization /></author>
<author initials='J.' surname='Abley' fullname='J. Abley'><organization /></author>
<author initials='S.' surname='Dickinson' fullname='S. Dickinson'><organization /></author>
<author initials='R.' surname='Bellis' fullname='R. Bellis'><organization /></author>
<date year='2016' month='April' />
<abstract><t>DNS messages between clients and servers may be received over either UDP or TCP.  UDP transport involves keeping less state on a busy server, but can cause truncation and retries over TCP.  Additionally, UDP can be exploited for reflection attacks.  Using TCP would reduce retransmits and amplification.  However, clients commonly use TCP only for retries and servers typically use idle timeouts on the order of seconds.</t><t>This document defines an EDNS0 option (&quot;edns-tcp-keepalive&quot;) that allows DNS servers to signal a variable idle timeout.  This signalling encourages the use of long-lived TCP connections by allowing the state associated with TCP transport to be managed effectively with minimal impact on the DNS transaction time.</t></abstract>
</front>
<seriesInfo name='RFC' value='7828'/>
<seriesInfo name='DOI' value='10.17487/RFC7828'/>
</reference>



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



<reference  anchor="RFC7858" target='https://www.rfc-editor.org/info/rfc7858'>
<front>
<title>Specification for DNS over Transport Layer Security (TLS)</title>
<author initials='Z.' surname='Hu' fullname='Z. Hu'><organization /></author>
<author initials='L.' surname='Zhu' fullname='L. Zhu'><organization /></author>
<author initials='J.' surname='Heidemann' fullname='J. Heidemann'><organization /></author>
<author initials='A.' surname='Mankin' fullname='A. Mankin'><organization /></author>
<author initials='D.' surname='Wessels' fullname='D. Wessels'><organization /></author>
<author initials='P.' surname='Hoffman' fullname='P. Hoffman'><organization /></author>
<date year='2016' month='May' />
<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="CORS" target="https://fetch.spec.whatwg.org/#http-cors-protocol">
  <front>
    <title>Cross-Origin Resource Sharing</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


    </references>


<section numbered="false" anchor="acknowledgments" title="Acknowledgments">

<t>This work required a high level of cooperation between experts in
different technologies. Thank you
Ray Bellis,
Stephane Bortzmeyer,
Manu Bretelle,
Sara Dickinson,
Tony Finch,
Daniel Kahn Gilmor,
Olafur Guomundsson,
Wes Hardaker,
Rory Hewitt,
Joe Hildebrand,
David Lawrence,
Eliot Lear,
John Mattsson,
Alex Mayrhofer,
Mark Nottingham,
Jim Reid,
Adam Roach,
Ben Schwartz,
Davey Song,
Daniel Stenberg,
Andrew Sullivan,
Martin Thomson,
and Sam Weiler.</t>

</section>
<section numbered="false" anchor="previous-work-on-dns-over-http-or-in-other-formats" title="Previous Work on DNS over HTTP or in Other Formats">

<t>The following is an incomplete list of earlier work that related to DNS over HTTP/1 or representing DNS
data in other formats.</t>

<t>The list includes links to the tools.ietf.org site (because these documents
are all expired) and web sites of software.</t>

<t><list style="symbols">
  <t>https://tools.ietf.org/html/draft-mohan-dns-query-xml</t>
  <t>https://tools.ietf.org/html/draft-daley-dnsxml</t>
  <t>https://tools.ietf.org/html/draft-dulaunoy-dnsop-passive-dns-cof</t>
  <t>https://tools.ietf.org/html/draft-bortzmeyer-dns-json</t>
  <t>https://www.nlnetlabs.nl/projects/dnssec-trigger/</t>
</list></t>

</section>


  </back>

<!-- ##markdown-source:
H4sIANq0M1sAA7V965LbRrLm/3qKilbEuvsESfVdcp/17rRbLbm96ovV8vgy
M7EBAkUSFghwAbApSqET5zX29fZJNr/MrEKBzbY9G7MOz5hNAoWqrLx8eanE
cDg0bd4W7sy+urm3PyxdnbvGVg+utt+9f393b3dfVd/tmWQ8rt3DH1yUVWmZ
zGmorE4m7TB37WSYVbNhVjZDXDycte2iMaZpkzL7n0lRlXRtWy+dMfmi5o9N
e7i///X+oUlql5zZ87o1H1Zn9qpsXV26dvgKI5s0ac9s02bGLPIzY21bpWd2
7Rr5mLlFOzuzx/RXU9Vt7SaN/7VZz7s/TbJsZ1VNAwzpJ5uX9P3dyH5XTSbz
pMRXspq7ZFnE31b1lGZ0cX5zg7/cPMmLM7ugi0YzuegveZqU5Yiu2xj6Or1O
ymUTD93Wefoh/oFHv64+5UWRROPP0zmu+Eu2TD80VTkdpdXcmLKq50mbPzhQ
4d3ri4P9oxP9eHhw8LX/eLT/Uj8enx77jyeHx6f68fTw1N92evJiXz++oPu6
jwfdx8Pu43H30Y/w4uR4v/sYbqNn6MeXBy/oNpOXk43ZH748CJPbf/EizPOl
H+/k5akf73T/NMz+4Nhfe/ry63DB1yf74eNpt5AT/4gXxwdH/uPLw/Dty27R
L+Xai9t39/gvMZdIys5FXTXN8LbOp3lp37mmWtaps/ezpM7L6Y5cmtRTR1y6
wzx/9vz5xLXpbNQsXDpazZJ2NQV/PH+Gn4dpVTfDRV0R81bFjjHD4dAm46at
k7Q15v0sbyzJ1nLuytZmrknrfEzyN6tWxO52nnxwLJf/65FcjmSoeZ5lBQnZ
M8hRXRELtXlVPh54kpd0e2IxyXySp9ZPydJO2caVGS2PH/X5szLbly/GP5Zk
2tKSW39N7ZpFVTbxhOQ+MMiXL3bZ4EpRCT++u2rsLkZoZ44ktKqdff9WnwNG
pesbly7rvF3zZHJSCFP+i24yaVVO8owWkScFfbc3spdJOgtEWQ/9XEhMc7q5
IaItFi7DMBUtGHMz7mM6S8qpG4EwLtA5s3RpXWE83IeZtXQd3dUuy9IV3epG
9qq1jpTbuMibGSkYoihphdbOXZYnVridydOuF0QWrKN2NMGmFep1FBsvW6IP
DcECXgjxaJUtNqp004pWij2koTHpvJk3ukeFS/kRSQGNydLVGJowzazMFhUt
GItf09a6iQMd6cltnuYLGa+a0Bj1A0Yo3QpzsGlCE6G1lSbJspyvIqK14B1Z
GFYTT2pg85aen0/Lhj7RlCZ2lbczofLEJe2SFmqbJVE0aWj4dEaPG9Dqs7x2
qYxAFP+45q+hpLGzqY4t+z2n+TcNfaG7JfwgawgPwygPxBfgaZKlkqhbt/Tg
HFvkmGDjqp3RzudNYNu0yF2pGyL0sys3BhMUOgeau3MfmMhpSrMgchCFWQYx
m1VFz83nSb3mLRT60RjEOLSDDc2HVmqzZc2cADJ6MfsKLPPgimoBgRxZWtia
VpYWy4zuoBU/gBB0V1UOab9mxKMPeQpOqqs5k6CmPaULDJMAq6kWrtZJY0FJ
UVQrjPBoSZADWQ3d1ulmIucDbXGg0LiuVsQg9vyOBBbMY5tkQhQijuLFNcyh
eLxhJWmfUJJ2F1p1jwQc//3yZWRvKtE7xO1uMsFGzZLGjJ0jdiMNx0znSt44
2jclRrwGXFBBfURcu6HiJvSBFVJJs53Pl6W/dezaFZ4UM8Cu51ClIZG1WdP6
5oQ8lmMIa1WQ6Dd7KruknRpwS/iBmIFU7ntXz/OyKqrp2phzli6aIktks1yA
I5s+F0DNpLRR0Dx2h4CV3rMDPsvyCW0xa7rWQc5463EdzVyvM7sErOQJVVms
Oynw1xDPiNbCdURMVmok+WBioWAnLX5WjaC2pM7yTzQzyA4Ntzcy9/k8L5K6
WJNoKu3+7OoMr07u2VFB/kAsv6rqrLE71z/ev98ZyH/tzS1/fnf5w49X7y5f
4fP9d+dv34YPcoWhP25/fKu/41N358Xt9fXlzSu5mb61G19dn/9CA2Azd27v
3l/d3py/3QGPtz0eSmAAKuIYEThixBZraSKDkZfm24s7e3As9gtIjOwXfwb2
oc8rUmmsymSH5E+i/NrALiWil4uCKLUgZVU0AzygIYNfWtjHERjrzlP0HdkQ
0pyYHYHav//t738DerGXpKwJ3dq7wpEsEFvOac9lMeAfWkYj2pbWwgZ3sRx7
WRrZv//j7/+QHQk71y0Qc7Bj1muk4PEDKXtIFThoUnklE+6soxkS8vs32xt3
TqifZTY2dg3hXmh9SJFcH+OMzlLyzbQZrBhkXyYFqSv86cpqOZ2x4vjI9sKS
0qjXhM8CMhBWXVXLItPH03aMQRra6lwUAovKj6/u7K7oYiwtmgwN102Hh8Na
cKP7SNoQRor2Dxa9rCAaVaPCqVShJRRtviCAFg20N9pOpgW0Sct0DtaYJBe2
WjR240VzO72eGJamSUZZOJrV3TgHkLLjtYLBNZs7C8gmlpMehf/wnLdCGF4i
Iy3SGsSIa+xDPqd1inGjWcgQGEl3kUbz+6jaw06WgAukojIg0s5YqcGN9ErY
G/rJWPm7UfrEiu5S7KKMtBvfVjEPtuQcejScPbUP2OJEIKmLtCUveu4caz2n
xPGczzvjcfmzZ2TxymHdk91/s/eybMFfLSnCD8OAxmnep6pS4PIQ9O7fIKr7
0W1ky2ExAk5YFAn2+WMbc8nGUOSwytIYs5GyuRdgKdSE1r4XO/b5WeN/oelc
AIdPl7VCtSxvUgjPWlTdcpElMlExNQT6yToSR8CUybLI+aRl7RK+oi/gGihz
ffmyZ1kJYx9JkmiEMYbkBfXsC4BE6wTxpvF0yAuazlhVwJEmNRPse4LdrAFj
MTmalfGzUojDPwu8SlLBjTvKQDt74CvCqBXQUtoN2h9m7DA0eJqMHQxEJCi8
hlffkcEAgBdraoLZJV+mI3djyUYF0eh8EZCFHgjESKRgkNcwJA1wIUL/JDyz
5CH+bcEy3+YRKg8/mj7+7jM0exyCJwoAVztdJiQLrWNFc247865QuLchkHJm
Hs8NwibtbCnS00GfQdAmouFpsEzdJ8JaS7FYf9MIwj+CJwsHmeXN0BgkC6yV
nO3G/Yo2mN3Gdr05Xw86VNI7YoFrG+gx2Ik0wc+kkFdMM2F3lxniUQB9z+ky
5lcbBBiAfn6MxCPDCg+CMrXLkhZHrhnwhWcXYWwBCZ4aiX0gb4swSNmswMfw
aIOBE54wXhsI5bOKSAFNxxYq8+66khLuy0NeuKnjJ7BvjsciJsd3EdatpiXj
wPE6kFQJl3SrpN9x84g0SzozTUrwvc4r8T/T2kHsvREjeQyuSlIMoFLTD+L/
0fy8629myacE2LBnPwuSmVYtAzvB8EiWTUKuvD1XA7JBAMzAixGrD+8yMLKC
umcQcqkhAVbX4dt3opNI98UaaoN/SOFW4nmqzQw7YiToUMpgertGQ1wu8Ns/
6s3lezDJ3S0x49yRhcpURJwRbd8Xx4ksRnEdO5ARtwe5UHEzLEa6g34e7awW
0DRjMcOYSU9TK07vKW81lo/BsihmuJX0K7xCKO+kXJsH4gSY+oaxb7dgXSTd
hzWP7E/bfzUgDL5W4vrh7E5GOplNhU4pkeX62IkKpDA8r9jsbmB3sjw0yIqo
SlZnoBsps2fMe3q8rAuxV4imku9qzGtBKT0mE2YEMuvCJI3oFZkczyQQwgSl
1iOtko99dsygb+xMpCR17ACxOLbBz2D2Ad+AakJD6GemrfBduEop7GkkGDlv
uiiE0nNOcyIBM+MqW3ui9vhZ2dReCOGH7xEk8j/OXJKxSc1AKye2Kgom6YD6
kBFPbcha0ENNEBtgXVxpZpG8Zq6AQJA+hEDQGn8My+vWjvVMCPSUGYlqLSHU
cq0xtiRFNMnTUDZSWT6SbnUtlSpBmHfO09Qt2p3NhZLj7tdqEfwNq/RsmSYl
27WSrm7aqmIf0uv8kb2q8RlS/RCIQ2tchj/kuRuPZY/SxPZsDH5yiwSaua08
b9mdKIryHMkaJfzO78vGRrwS0IRc1W5YEFXDCVhuzobDISBJBL0i1FJnnvwf
SYV/ckp9vzekqshx6qjeKLMyoxjv7ggy0I0Az169GgQY88TCBkY3UCyv3AVa
7mON7CTGKoKcFQ3A0j4UgWFjVvekGAh8cbBJpaBdXFo6lW38cfVKYKWsg2nz
B/MVTR7UMekM+GNG5w3mERDhnWb2YjtB6LmDghmY0plpwAy0oGKtqsRTGmNi
RKz7+aFdwE7DA6SlRsFXUfj03GTOMUBBJ7Lneme3dc7uEgEIwn/FaHAPd87Z
E3rWt6uXHxPIX8NSR7c5/TueUNOugx/KVGYUHaUXRlvvToI5BGZlhdq3bkRg
E1I2tAOiWkc6yIicK94X1ouf/zt9/IKwnI/5masbQhyAR3XmtUZPZ5Hw0aVE
ENGkT2w3ywtZZvJ5nR9mktfw02UeEWqghbEtrMJ3q9UqzJeThP+Bf8yZKr9v
cL05a2j/adO+0QTMmeRC4fN/Y7eu25xxyPkb2xEA6//m/Pz8W/2f/HOUHWWr
rHBvXrfpm4/F+eHNw/gH+v6H829NInrqm6dWrnPlFTNTdUYI0rOxtMET1kvC
OWN39njtuOxfs/g/Xosq9yFL+B9fRpI65WccHRnzX4+OCJnBdYxZRrFaF2Gb
uY8CUOiP/2b29y3+PbAbH/zf8u+RffFC/jX7L+zpiX3x0p4e2NPMvti3pym+
wUWn9O8E30aDmf0Dv0OvSb0VEvQF/wEYZd1OmWR0ekjYGQlMVxfJ2BVD5Cmb
YUBQw4xTCmk7hOgOfXRZL+hxcO5jnwn7RV4IENebL2ZJA9PBmgfE8eQgW0S/
jR0wn+lwWx75tgIdajddksut2E6BCw3mdR7dUZGDQfT3OCAGRl8f/7P75Jny
T27XATbnyNmjU3N0yLvC2/XikDeNNvPY8iYe8t7RV4f4kz4fZoZ2D9+M+YIj
+oZ/PbD4g746OrVHx/aFvxk3HNvTr/HrC/5w6vwTcOspX8c8QX/yRQbD00XH
fkrH+hD+O3qI5zSzwWmB0TY4jf7f/H9RWXa3RKIJcRxSKBfv9jhbj3+2KrOf
Loc3v33/W/Lm9fqXn272f/35++aXn74vnh5lfHHQ/vJTW6Trg/yXn2+Km9/e
HaTzVfvrm+JT9qZY/nL0Q/tr+f3D+P7g0+/M5c3r5a/0zF8v/Cg/fPfrz7PZ
+Odvm19/uPltfLhPk7skpfrHasizW9+F1Xy4+LAhP/5FOJyTEiFnzvrrd1w8
8yR+lLB3Ln5gRZCBg7sBIwSEG2LXq7woAE96T3Pqw4/Uw1Zv1iNaHzEOsPMJ
Onj7qH/DsL4KmiDMJPbVeDaaPdMkWW0LPCPOj2oGDmnTDrG/piuVEwccnutT
U2KRHrU+Go2jX6Rl1H0QBbOa5QVcDYFXMgIUE9FX8GEyr5alel7qX0Qja+Qo
drOmwOLYGwIvBAHtcuEj63KXBF8Q8en2w2w6oKHSQum7rdaiBdjk/GypDNgV
WwhGCumcZC1eig8a8Gp8fF04gv0K+A5GzD8G/KqRNArZkdolc0aEyzKVcBJU
xG5cenKvsewThPc/f9YSBPoBIbxl02iMhME+HMBZvuiliDEpjoyHteoQHs4m
7L9Mexfby7quakK1cXGMlShR8A41AET+APMycdEkyQvEFrz3EEX2zo1eN1kW
3vvWYRXaHn78SFA5aZcNP8hT4fDoIKLC6ehoL3igGoQwILKEFePpokpjSlaa
haAXS4mWs8H9STxLTEjye9GsJP6WwfEq/cwxqofDK87MxAKm9/n4gSdS5/jd
X7776+vzq7eg4M3Pr26vz69uaHN6RGrkWWVVDjfpGM0Oqo5lADgtYbccQfyQ
hKq4wCEp/MY0beQYxSGRUc/BYo+Qhlg2rnOhvP8WR32Q3evN0DyeIYoUgtPl
H6HZAFEUc8dBEsVINBEfF6hdW/vAuIAaDTN5AB4F4YOXKob3k+gVpX1jdx9t
7DHZcs9xJxHHHY0O9rhaKmWkzlEDzNDEM7QbM/Sc0cG3bXMD7y5Lje0SiWN9
vmWCBycDu10mTkYHR3sI0ZsVp7uZImJ5UN1JDDF1JSLW8CoD+BMl3isx6hIA
ZhuFTp+ewOmehr+hOPuesoqBuspaypf34HFsXGmKnRfFMYjIUWWa7Wz4VjtC
bi1rQbZmWcMC+LByGH3MmQhS7EaG020qEdqvVU0cfH042h8djg6kCMm+f/+W
vz58iVh1VbKzrK6aUucbe0j+xv+rC3V6bDjCMcQvdVXQV/Pk45Cu/YYeSu7V
6T8N27179fLAvuzh1H+pexXfH0Cz3RzA328egebIhdBZHtsL+XBoO+9N+eiq
q5pTFgpZbo+ulj5yz6Rh5G0ViCNu4llXIi6fP9/V+UOSri+00E3MJ7E19v3z
53vN43SWNk4Apb2bjGfVraV9kkG/4HghF4cnIjafn3lj7vMxHmmwhVskKNfT
FEdiZzndWKczDmEzw/TjiYZD6EyqRNNkIa0ul480yqQ3A75wrRzggtPURYRZ
OX7GuoCTf1W5qeykXnJkumC0BI6INbXKhrVOnv670ZSo1A15I6URZHFie2nx
SxjXfCIhMK/9yXnW0gpAq7bZGv/2acZVImViuD+U53CxZ8gniugIDVG/tFwI
HvNL2Z1EyMDkJYK8XOtJCn6gRBpy5nRKinWVrKWqRJMI9pUrcg7O3kiRQ7PH
GN2MkZU6b1gRNwQDBzZOi3hTm9L8yX4W68BpwUYb5RpEkJIsaRMhKkqe42Q9
RkG0I8T0djns5P8MCVJeLRuAZclQKXBNGEmgvWYyaG3/LvuVo+QXBZQZAHnY
B5d1WDzJHnKfKsKxCwmmL5KatgOBjP7iNdBNfA/mYfOw4KQyeRqumSHGbop8
4tp8HsHD48gSHY8O90xT2W222VdEF/kHzFfxDI/M0gJSahFmlKnkIMySqRnz
uRRJeHdOZmw4sWOl8I10RwN0FGbelVvw5DYyFVuXQosZkEXP6TYJE6K41Hoz
4fP1LAVqVRpfccIKkHahQ76BzhoZkjljb8IMA20rFb0NoK77M3acUpCcFqkP
WEjFkOeS1m+6+ptN1M2A2wTAzULefwqxvqK82jn77l3jWkW/9CBez9H+wJ7u
70v94xF96PDrlsU0Mw2x0qXehNtdIWvqf1Km51C32WFdPbwQQp8Fc3y0v7On
7uvvEM9XY5Ck2ylXDnR5v3+OaJ2P/pgtZ65YAExzLRxzVMkFR3KzUk3dAHVF
+96PCDMxRAaQR7hMYgNlxOaQ1i1+ExRxWQVEtnUVg5BU7blCM4mK3t96QBfu
DvGxMEAbITfzO3S22+h8fXVzdf3jtaUtLaT0SmxQ9GSt3NIzR1++7KlgMDWG
HMEY1o79SgbOpRJqmE+GDu6x7bGJ1RMBOMMgugkngJB6DEy2cmRmgLdFx4uI
bdgvlBgYrooSkKfGeIHqGi6QqTjwE05S8KWhmpnIznrPhJohYBfySoSi2DRJ
LYnWoDt8WWnOe1pUhD5q4eoRVLXoLC43GUTegYzDTxdlITk6GZDhgufGvN1I
/LMDFcycN27epnGFhToriD9v1Gh6ozUtqjEnDnl7xInPS2CJ1CsVsfziAy2b
tkLSVq2uOgOcBlBYE6qefI0VYwXWumLkEoTgKyW3PF6JySKXtJGGY2H1u46g
Z0V7jGM2WYTnUEzhWkZzLHEt7WmZwzh3vqvpc5jqIU7+SkHWOsoq/RWnODZs
ttkaRHkxOhgd73FOwp8AkgLRCmmNtTLHB7c2TxjZg72NFCzLIha65JMLAlbO
p25zPkRgrgXoDbwnu54mBTBByEND56jzlfTNR4TK8BsrO8v6kVP2WRyX0RFg
LjjA6yem9OnCMgEy9JQVn+lQ5sa6Dk+CDZGShRpnHkvMObaeQQdjWkfdPVsy
111mngCYPimtFuv+usNWs+ndKashX9pVb3QwoKeLejBp4LfQnMDBBQ+wVpM6
Tn9zI2WpQpCmmncOA0dnIA2zqiQj3rI30am9gY8IKl7qV1DqQTjv/PCxm7ZO
gkfFx1kit0adBC7/VC0U1J6PjoGm/v4O5/oVH4K1NEhLxOTSOyKuFKO0FXaC
zyoEJS/1hHoAhfMKCZfuEsJFPRVppUneeu/KcKRXVtOoYtKafCTny5SeS+IA
5bSsQRaAzw6pmEfoWg++MabsTSkAx523SdMOr9UH2uGC/p3LNpnu7Fnxd+i5
iC/WPImaw5GOzw+FOhoOA5JShObumWZkJsVqM8mTrk6t5FNwMj8phWRkAW3b
Gi6vwM9VF0VEKUVUeEESxntEmsUHtg9wiuo21Ns0Bq6aYvAuPvaJzwaBzCgz
Hfi95JWJf+r3BLQVABNTThxvmZFwDM0sjq3nWiBGAjxfzuMzNha2StGYAMtK
zmrJabXqOwULPkEDHJMWgIUpH78Q47Jx/JQ3KS9nHBEs1mZZcmpAMwdMdlgX
bA+YAhWhoCNpFRZlMROhfh82lM/z+eLQ2vFwXImKUhkCmqTa5zigmDO20u2V
RE28QzQI7K+DqKkyWLiaEytkUD3qCMch+Xxgrsdzha14bnm5hcg431pz8ZqS
tAk0BTnSZCHn5LjA7MGtvY4L8eXNslEoUGhycIO40CA+u9qLitRSPHNmAC3/
v1s2M2O+lfNDYjYxVBAAdqX9gZSuwrgHe2DnTGc0g83olRMi1qSsGuokvQsm
2RDzWk9XdFqLWJDPyW0rU/beNqAiu8O+lCk+6MA19WFcDxtpzb10kvFG/CU5
lyiprhOONYSzSdH5xc61wMMwlBRJYyrh1F5EHPFRtV4fRsFlXWxeTzBVAGdR
qd8syaKlR5VqGjTTYMpNd2L3iXK8zeNA/WI81tkBECpe6Yqq3dNlhVHlm9dY
vRLZ81/CPiddJe9YSzR1/iaa//a81hEZY3h51UZa14c2//Cc2L/0lNi/6IxY
74TYM/sKxMljH/epmrIo7/v5mS/i1KPukNJFsi6qpJOsPzEO8g1GK7D9z1F4
oiqH9HGIB/lzXlFeP47JHMBWRUpdAgJ6D45W+CRbsQ7axNN7ZO15gcLy6czE
dqFB8HDn2tsSiYAwF2GTpBivQfcN9RxPDg4NpwR29LQJnluwB8wHl+ReOab0
8usDmWTvDLzxA6oFhBiRBeTypIgsocivsqcnJ0cnkoiIzy3hyphqLAm+8KJP
/41aJmiBbXeKeLw8IZfch2mWPsv9aGtML1xm+1uz6aV4X6k/M4gwK62nDt6Z
iJBe9YZq29i1fWJ8rnSfloAoXTE06hnKwMD8OOy15+xGdFpcrLClDL6rExcr
tUU4tsyFfNI/Pijg4zcBEUsRaIwKaVwjZxgUV/aKU0k9JawsRvZOq9NCkZ0c
N+iey2ZVQzm+ev93i/7/meVqKM4vGevySXwxU8D5TWfGPc/juADrravzm3Pb
zxKRWsqTMvnCRuqdm+bof+I121Pa6Jon9j5oNZV3fPHFpxTfV2eWexGx+v8L
HsK9ee6X499oqmePHnZ9dX0Zy7Wvynq6xGrjDu3uE12ulzTLcfR7bwg9xZ0x
zKQdoR09s+XzxJjbhbpjj3659LWO/dTZmQ3pYDvO2UkQIRe9GuLaUIKJiXVS
ZG7RtOH1hYXU99QxbzJnxPNw1th4ZTywolzyJ1SLsFieTGkhTe8Rxvjk4KPF
8NOb7b/yDKDbFeNCJYKDkzoqq4ivYen3J5GIf+v1Qt2aq83Dz4/mcUPajC68
W4418tQ778MTjSrjkJLqddjwZn9DotBa6J4bSzTe8EhcLGQukbSKTQcfruzy
plGR1xnxWTIlgF8u52NX7zZ7NCtmldcoHgtgI/rhOklxII0w7QSXMHtCqqNL
7ojjSDL+i/SiCol9CUe0pH2YwhNxyfvTIaGJ22cNnuqTxdQvoUv44N4Zui5d
X9/eQC7EqIqXU4bfeWYS4j77sw+50EywBGUKhzuvLu/fdGlxzV8/Vk3bE9tG
7BiaW/Wqx7BZTwxFTM9Z5Z3bzlzv2F1vcw8JtIpPuXPlPRLp/hFdcrInQvzR
V/mYXIPAfFgZZUyTWqvgJEv4VcOnOjGfPluLT0BzgZD9BOjw+dltSX/8JPiQ
U+giJrIs0pMTZDLl1AvrrGajSY+iHfUMQh1Sm0/lMDSWj0x8zmEouga9zsi1
9Dm7E7WVJpF4W9ISk33w4eqWJGXBApIhGdz2ZoVwfDVdeqr5tIFuUERBrkAK
ODL0mlKM5CNWJrjuNaEzYcKBVmKKoRM0SbR4f+EjFCGcwBrWPCwLhN41rcnC
z1ENNmu8sp44o6a+7U77eBN6b303Kfavjo+PQjbI66u2MvP8I6MnTw7GIl1p
WEenKjq4QwxRKmFIVEzmGPOW4RRw9of9huxT/YZQ82/6XJMU68anjYFekbRW
z/RKuDC0FrgCH8pfX7rS+xjfxoBfE3Occ/HpaU48THKOdM2qFdw6Pnpa4Yh5
t00aKdveYSSrQg2wVgYk/sCenNlkPagnwzpgqQTX6qKGD4I+tl0m3Cp1YxKk
Czl6jchWH/y0fLjCkEWdovtMXsYtFZac7bAIknNzGY1dhehQ/4Bgd0h/I2GW
40RfXqB/kL0io068PYCMDEIxq3ZYK5I1UTRQPkb7aLCEemYf4IrIZh+RLTSR
U9TLfBmO5nsJ99vFddmS0CJxMWzau9u8nou6Gih1eLZNeHpYNFyI+UbVKodn
eiMEQrC0k8IAvOPwS0BA+Hb72dHtyhfDdlhcGIYnyW4K7Qv0B4F3idSRqWfy
VKIZYuUlPlMuRTgfSpRLYIE+nGiU+VJXl8i/rCtWHRiIFFGVSqQoFFehP8m5
uKFXd9LZoRex8wCgi+uPH1ikIl6OW4j57J1svjcEmeRftDLi5vy9dn0b2L/e
3XDhJbdZcOFxpILVvHAHrXzuuIZUw4LJlEDlw+a4puuL1XFgLK1JMeQEkz5E
mp905ficUhEFumAUBLwVaxUvspwUSGz0OI6Poa2H/M3FQaIeu4AkM2xoQIGb
N9inQ42QLdiYSFvDtvvAkCYeNPIZnLBpXaGqn7e6U01vK86tPXBazA/XsMdO
bl3bul6smqhLv+SV5FNKFH+QBXp0u8Sv+IGGNUD3PJr3UGyjjwBLqRxDFjTT
6z1O87kmsoJY+OuEFNftwvloxvHBkY8UeQ3pwx3+csOXS37ZBxR62vo9bw8H
7FlSSX5lnpvbIGkgH9BXGnEx0Az1Q9H0zZYOCpzxwwXSX1ESBIizzxfSjsIn
4Tw7GX8RQaoPqDqR4of9Fy+w5PvHI/gcUgujnRRmoy9k6C7SXz0tN9pA01ZT
B1bXVCBhRtXebFAgObxhcQzey4ICPz2twa07EElK1BHBurtQFer6Ng8JPO4y
09kpwxUnnVlEZZw8l7U8/BbG1cvGdRaKcLeaTdKhUjup8ZaoBg7Fxq6bcbcP
/rRHVLwtjUikN2aTa/WK8kXdhatBpf5i4hTrY5z3I405PJ86PbkjJ/mHb8lR
WSbTRy0ThBJGHivJHRt3egqKKxlXy14mISTfaltUaVL4AqgJ+X8F+qdIBvJR
h1FeZdeaxXJzqaRGGlYQzAZ2GC+ntLnvtk3b+q5MnE/X8hSTyoZAQ8l2PF5G
gsBJ40IVnq8sMbQAtBYb2ev8Y5d8UiW4AX67HyLwayJ16psXaMtQIhXnMghT
adNZckM5FQ8UGJm6qD1E3CuP6y25FdOjTptShQrDWnMk2OevXVpJi8lB1M6s
j6B8tY4jwVJbwh0B7Y8tbeMnjyXwBKMUk1yrH0Wy4Y24CSzMUU9brVSTzras
0I3PR1UND0aswJUZZFUemaoqPNrqoxX2mMewR4u4rx7p2Uc5pkdlvFHxrokL
CDzGonkhJiG8EuVYQ/1cjlY4i6JaM/hTT3ogJjwjWcq0aopZh+uu2qj7qIDF
jYmzdfeVuZJIqvRkD2fCk0AS5h6sRQvW1KRwYIyYBt2jIq0LVAB/bC71MBuT
2lrtFpzyyHnQcPvhKWdGNEeH8vBQNSzVxvQ1gk++KVXf/dCQmja3NU/qzrxU
F6GnhrtunIzWWM3RWgkIvbqN0glSL92i+hoPjFR+7QOk47WEObqGTSF0+Chs
E04cGPOOmNoHAKPW9STFuet0gh8pOFQ0WsHBxX6pwKOohq9UgEELBtH40AX3
9XnlURA6BW9ykF0GAdaEv+dtfyQU9tqovYtjqttONn49OuSQqgAFac7WRTu5
DIsrJ8VXWLnkAwpB/ZE47TbDjY03HXcJ8IZmej0OStJl67wcJYWPDJjIuR75
coagaH3cENKTushwKXiKiirM1lOcB/ujU6m68kf2n7rshd2TU3i+nV7ANHSj
tJPUETQYdMQVLV21d6jU1IL/rm6gO5Yp1kCYK7IuYb1RJ+q4o3mrR118MVeE
QKJaz94JEuDtcPTCxyh65XZdm3RxGI2kd3z2acxtbu4vL0b6X5/U16oa0pII
yio08Wcn5ugVTpqwa1I4sA7RAPRAAfF6nQXpwnnTa2ADTyZMO0OjHKn7gJvq
OMHut3+C0Fl30pRtOft8ml9IZxX3Mp5ErYcrrZjzNSsheo7lRRVguInLq/mU
LWwX3j4RdrrDy1llHt/NsZhSpQTlj6/s7rmHffYVUXnPjjvuqJ0cnzNR8jdT
ve6CVmcLzBXfqySKqaq2H9lzJpnkaKU9Zndw/8sgIvs/d5rdbD/N3o3S+LCl
kNs73PS0NPJlQ11599DN09Xh1QWbzO471wX81DWM9yer7TmOFEJqE1+QIb68
oMk2HNuIu9opdGcx5+nqjb4y+SF3qyg3PwqJs7KKWmB2Jw28wEoYro9mQr01
pFlDBqF5dnDjPe4pNXTboDOrSid4LNqLQdSuSE6dcobbJr7QJy/lhDYL9cYx
pV4LyM+fuy6tX0yWN4pLIy2LB/Xf2hBXjGr9Reuk7D9q8KjoTClHC57lY6lH
CSIemoJGUXSbTBExDGswUqWo7SL4Vhp9mao+y5sPbOhvI0ekb+uNeQuvRov6
N+NscUkuOTwtYhl8JDo6TEza0UNNeUGCxnxjqVoWbT9GyQQ+01dSSK08iRO5
ZORSSfltXLCrfjxeTQI/HpqsqKbar0vOzmmrzS7x02VUxYJmzAjEJsXSlUof
JwFrBNI5W6pv0PCM8n/+8383ka6MYlQchPGCEfdhyHG8Wdaak50LxrvntKty
AwzTcfv9iQexktaj3vww4zXe1d3D6XP6v2OxioUPuhXiZ1o5Rtg3qSSMeO1G
J+Z500/Exu/gCC2aV5UBVFk/0fh/w8CHgzbRCa/XOV6pwdH02ut+DtrHudsa
x+Aq7t3KD46yQehDJPkLWh0fltQGFd1BogiWuvIhr6tSE8n3CCDp+lX2N9Cj
t3aIaHJsFISpuZoAi545QqFGNV3tHipdv5629n41ot0TLd6X43iezBxkvpoY
NQQ0XGjInIgf8fhU3Ab8SUmga2c8bXUQeUFIcFo2WtGKv1cKGOXbeFm6lwlg
ZlZUNA6EokqJ5D2ocXtxf+dl7nSfXyIjEk5beH51zmeML969tfxyng454pVD
m8cGRwd76pFoPzkaflattOYgnsYM7XlLSGIV/APxnLgFjiTr4AnqTYPeWZ7I
T/LMBJqI48AvbZFe3uxk8jteChSe8ds1wsExRPZCdFJCbUyKSK1wNJ7cG/Fo
TbT1nik29rWLdkrKIjo7YPgVOeQY8kpln6Jib84c+UC53Cx7sn8aZ2Vf8nZg
6v7eAyI79imQKiQRkofKI1hR1PDQGFEw+mg3eFn6skvLHCieVc6dC2w11rN8
PuYcHUfvwtfd0Q0JKHSz6R28GrsQ59DoaJx46NlymYp/4w3dvNl+GoqZm40n
wW6Nq6pFldJioe9WALIO7XNNL7/n69h9Y0LZwKppS86Qoct7/1QkVzp/DwCs
ZVtR9wZ+eU7vTAlG6ffCoLVHNZoB2oYO7Tj2Ih1OpF1HEi9WxyCZNTiD3off
UslcSEOqsJZwFg+L4vnou5z4LUWY+Qhlof4VSJbLu9yU4xiBxrwJqK2rwmt2
kLH21fL65FgdxfKw0cv7yqf/uV+2vKWoFoPKHmX4vceY4ZUAfPZMVhgd1jLn
d1f9tfJS8UqezT1BlF97Q0UE5FIF07SwOXFYWh8hoEEryLyqxug+DRi9tevw
SI93JBKnLTaabWmUIUB4kKANWORxoCo01vFIi0dF7YpPW5uunXww1DEc8/LJ
rOT5sAvEm870boHktldfLTVG4clBHJWMvqu+xuzESfM5a214sq1f0gZgSrZc
omzI1bKsui/sLrmipRBVvEg+9Fb6l0x1XYW7vlGhbliTjatEsLcvO5EmOnwG
if1hXYIPPEiVO6PvJlKo+GksB+n48tx37JkiMnm+6Z2gMxInxDcooy2/cL6X
VXxI9vMh2SD/NLFJDrR3paXOkh3tiNdDFpgGn7uNh2cQTtQxrLbQN0m+7jwj
PHKmOo5IrdQdoQ6uXEfV+JrXH/TsFZcrD2Sv+BSjj8JJRpqGXKMbzshcRuP4
qH1I06iB7AB54NPOSmr86fAlPS+0lVBh0y2VA1N4v984ST/AOzpPEc4rXDaV
94l8PpPsm8u+2ZmQqXI7X7TNC4PrEFBFI5TpTOWXI24h4RPkzn1EKQQAholq
znG+Fq+2gm+AF7qUH+y6Wpp3ZL2+dQVB8IG5b92CfnD2W1rgp7lbk/oHsZf2
W7w6qcCR03sSc/sqRyC5IV1q3le0F69JJc8IGxHCoGn9j2RW2jd5Ma/o9tsi
mSxr+2ZZzZGG4nt+QsQ7qTMCKHTFO7xw5jtHDNgOzPcVgee8yNyYCJ1hSOJv
+zZZMZQamMsiJ+q+pa3DtfSc66RtZdTzwn2kP9f1rJrIxIlwhAegM2fJnK7P
5/ady2nU8yyhj3hR4MB8SxS7T2crMhef+Hlube+rchqWQ1QpaWfoi/OSzNXK
3pNU5g9JyY9okcOeVXOeAvDyPQ39kyNVXuurn5wUXPyEfazKvvMg/okerHkt
nRWf4oW425G0jyKq42g1bY0tcsn5OD1sxlzj3ZxEz030Hv38QMyYVj1puN34
AIWoYG32qF4dP0StLzoRlB+Ch91WODmL0m2Ub0rSddfnJhSKabGtJmBIsxGj
gqklIIzX3OG2RrLwkxY9bPiVPr7Hc/8Zz2ftvHgur6+dV8S2w9A5dPhxXvy5
G7OkcGvc+OfvWBbJsqz4pmox1NpIfnZKXuOfGmMcxIvv+61B0Xl3I9p7lUXp
2iIZN/TpOWl5VL830uU6HZJ9mE5d/dz8X01ynsMTeAAA

-->

</rfc>

