points by pdkl95 6 years ago

> DoH is the improved protocol.

That doesn't appear to be true, according to RFC 8484. DoH cannot be used for encrypting communication to domain-delegated nameservers. Running your own DoH server just moves the problem to a different host. If I run a DoH server locally as a recursive resolver, the encryption between the browser and the DoH server is useless. The DoH server still sends the requests to domain-delegated nameservers in plaintext.

The protocol is explicitly[1] focused:

    on communication between DNS clients (such as operating
    system stub resolvers) and recursive resolvers.

The RFC doesn't provide any method to discover the "URI Template" of a domain's authoritative DoH server. The existing NS records only[2] include a domain name. This omitted feature appears to be intentional; RFC 8484 only says[3] that configuration of the "URI Template":

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

Even worse, the protocol seems to require[3] aggregating all requests through a single DoH server:

    A DoH client MUST NOT use a different URI simply because
    it was discovered outside of the client's configuration

That seems to forbid the fundamental idea of discovering delegated nameservers. Why would a core feature of DNS be forbidden? Apparently from a concern[3] that allowing unrecognized URIs:

    may create additional operational, tracking, and security
    hazards that require limitations for safe usage. 

This is a strange concern. If the user wants to perform a DNS request, that's their business. How would this become a "tracking [or] security hazard"? This concern seems to be a consequence of a design goal for DoH:

    Two primary use cases were considered during this protocol's
    development.  These use cases are [...] allowing web applications
    to access DNS information via existing browser APIs in a safe way
    consistent with Cross Origin Resource Sharing (CORS)

DoH is designed to enable performing DNS requests in a web app (which will probably be yet another API I will need to disable). If I'm mistaken and it is possible to use DoH in a recursive resolver, how would that work?

> There's nothing "centralized" about it

Requiring that a client "MUST NOT use a different URI" is the very definition of a "centralized" protocol. Moving to DoH from my existing local recursive resolver would be a huge loss of privacy. If there a way DoH can compartmentalize DNS requests to the domain specific nameservers, I would like to know how.

[1] https://tools.ietf.org/html/rfc8484#section-1

[2] https://tools.ietf.org/html/rfc1035#section-3.3.11

[3] https://tools.ietf.org/html/rfc8484#section-3