DNS Security: Threat Modeling DNSSEC, DoT, and DoH
netmeister.org
netmeister.org
So if we want users to use a hardcoded default resolver different than their ISP's, come out and say that and stop conflating it w/ the protocol. If we want users to use the DoH protocol, we're in the same boat as asking them to use DNSSEC/DoT. Therefore, for the idea of a hardcoded default resolver in one browser, if it's really something a browser wants to do, why are they waiting on a protocol? And for the idea in another browser of checking known protocol support of the existing resolver, do/can they do that with DoT too? And can they do something besides a hardcoded list to check resolver capabilities (i.e. can I return an additional record/bit from my DNS servers that is essentially DNS equivalent of HTTP Alt-Svc to say I support DoH)?
DoH the protocol, being based on HTTP feels wrong, but I guess that’s how the kids these days writes protocols. So be it.
DoH, the resolver, being chosen for me, without my consent... that’s an absolute no go. That’s what malware does.
No application has any business overriding any of those choices unasked, but should use what the OS provides.
Like every application does, except modern browsers which for some reason think they are special.
Here’s news for you: they’re not.
Did your ISP make it explicitly clear to you upon signing up that with the default configuration, they'd be able to see all domain names you visit including of encrypted websites?
That's not a reasonable position. Never before in the history of computing has a regular end-user application actively tried to subvert the operating-system's network defaults.
Why should anyone expect that to be the position now? Should I expect Thunderbird too to bypass my DNS-settings? What about Rust's cargo? It's from Mozilla too.
Will I need to manually go configure all those tools to do what is the reasonable default, namely following what the OS tells it to do?
When Firefox fails to resolve a domain, but nslookup resolves it just fine... What should I as an end-user believe? (Besides that we have an orderly world turning into chaos)
Do you really think every application choosing, managing and implementing its own resolver is a scalable way of managing applications and networking? Really? Yeah no. So why should browsers get a free pass do things differently?
> Did your ISP make it explicitly clear to you upon signing up that with the default configuration, they'd be able to see all domain names you visit including of encrypted websites?
No. But that's not what we're talking about here.
What has always been a clear expectation is that if I sign up for an ISP and I use that ISP's default network setup, that I will be using that ISP's DNS. Never in the history of ISPs has there been any other default.
So if I may rephrase your question:
> Was it explicitly clear to you that by using an ISP as an ISP, you will also by default use their DNS services?
Obviously. That's how the internet works and has always worked. In fact, anything else would be strange.
Unless I explicitly implement something differently, I have no reason to expect anyone besides my ISP (which I do trust, I'm not from the US) is handling my DNS.
Unlike my ISP (which I trust), anyone who deviates from this contract will be someone I actively distrust. I'm looking at you, Mozilla.
For starters, just because the OS provides its own name resolving facilities doesn't mean it's telling applications to use it. It's there to make application development easier, not as a security feature.
> When Firefox fails to resolve a domain, but nslookup resolves it just fine... What should I as an end-user believe?
The end user should believe what the error message says, because we don't design web browsers with the expectation that the user understands how DNS works. And if they do, then I don't see why it's so onerous to ask that they also learn how DoH works, given that having that default is in the best interest of the majority of the product's users.
> Do you really think every application choosing, managing and implementing its own resolver is a scalable way of managing applications and networking? ... So why should browsers get a free pass do things differently?
Yes, I don't really see how that's such a big scalability problem like you're making it out to be. It is obviously necessary that any networked application will manage and implement its own purpose-built network protocol already. That is a significant amount of complexity necessary to any networked application, and name resolution is just a small function in comparison.
Furthermore it actually does make sense for web browsers to have special behaviour here since they are almost never used to connect to LAN resources, just internet resources, which is unlike many other networked applications. They also make up a widely used application platform which has specific security and privacy needs that other networked applications don't have.
> No. But that's not what we're talking about here.
It's what I'm talking about, because I don't see how to make sense of your "Firefox is malware" analogy otherwise. Your ISP picked a default, Mozilla picked a different default.
> What has always been a clear expectation is that if I sign up for an ISP and I use that ISP's default network setup, that I will be using that ISP's DNS. Never in the history of ISPs has there been any other default. ... Unless I explicitly implement something differently, I have no reason to expect anyone besides my ISP (which I do trust, I'm not from the US) is handling my DNS.
I don't think that's a clear expectation to most of the people who are in fact sold internet access without being trained on how DNS works. I also believe that Mozilla very clearly communicated that they were changing this default, through many channels, to Firefox users. So your implication that Mozilla is doing something sneaky here is ridiculous.
I'm sorry that this change broke your PiHole config but you can fix it easily. New software sometimes breaks your old configs. That's life. If you want an ad-blocking solution that isn't so brittle, then try installing uBO on the client rather than abusing DNS for that purpose.
Now I have my entire network set to hunt down and kill any attempt of DoH and IP-ban all known resolvers.
Just because we can’t trust even (formerly) respectable software vendors to respect the user’s network.
Is that what you guys want? Because that is what going rogue like you do is going to get you.
Mozilla does not have this kind of influence over Rust. They've never indicated that they'd want us to do this, we've never thought that doing this is something we'd want to do, but if they told us they wanted it, and we didn't want it, it wouldn't happen.
The more clients a resolver has, the better the privacy protection it offers vis-a-vis authoritative servers, so there's some reason to want to use one's ISP's resolver, or even a public resolver.
On the other hand, you may not want your ISP to know about some of the sites you visit, or you may not want a public resolver operator to know. After all, both will have a huge incentive to monetize that data.
Regardless, ISPs need to adopt support for DoT and DoH.
Lastly, it'd be nice if we could get authoritative servers to support DoT/DoH, but that will take a long time.
It'd have been nice to have settled on DNSCurve for confidentiality a decade ago... Even assuming Curve25519's eventual obsolescence, it would have served us well while waiting for a better solution.
In the meantime DoH still has worse latency because of the extra round trips. Especially in the authoritative case where you're typically making few queries each to many authoritative servers instead of making many queries to one recursive resolver and you can't reuse the one handshake for all your queries.
Trusted for now.
How long until the next heartbleed? Do you want that vulnerability embedded in billions of unupdatable IoT-devices?
To be clear here, your ISP will still know what sites you visit, unless you are using a VPN. There are two vectors for them to gather this information: 1) the IPs are generally pretty stable for most sites (yes that could host many web sites, but still), 2) The SNI is will be sent in the clear for the website to be able to choose the correct certificate for the connection.
That's not to say that there isn't value in DoH/DoT, there still is, but your ISP is still going to be able to follow you around the web pretty easily.
If you have a Firefox with this stuff switched on (so it uses TLS 1.3, eSNI and uses CloudFlare's DoH server), and you go to a site that's proxied by CloudFlare, only CloudFlare [and the site] know which site that was, an ISP sees only that you connected to CloudFlare (duh) and did some HTTPS transactions.
There will be SNI in the ClientHello, but it's generic, it doesn't say which CloudFlare service you wanted so it doesn't help an ISP to log that. The IP belongs to CloudFlare so they learn that, but the rest is a mystery.
All the stuff that makes this go lives in DNS. For privacy you should use DoH to go fetch it. For authenticity you should use DNSSEC to verify it. Proposals are under development for how to land the final DNS changes with HTTP/3 in there as well, so that a single query protected by DoH + DNSSEC can tell a browser "For HTTPS speak QUIC on this IP address and send this fake SNI, then use this eSNI encryption key to hide the real hostname".
But already the prototype with boring TLS 1.3 and HTTP/2 works just fine in Firefox builds with it enabled.
If authoritative root servers started to support DoT/DoH/DNSCurve then clients could do secure end-to-end communication with simple two hops in the vast majority of cases. In the case of news.ycombinator.com it would ask .com for ycombinator without informing the TLD server of the remaining parts of the domain, and then ask ycombinator.com for news. Simple end-to-end communication without giving out unnecessary information to any party.
DNS queries is also generally quite small and has not significant changed, and the modern resolver software is pretty efficient. DNS is also designed for redundancy so in combination with anycast is quite simply to scale up.
Because of the persistent DDoS threat the question of capacity is constantly discussed. I don't remember the exact numbers but the current overhead is quite large compared to actual usage. It is also constantly being increased based on the threat rather than usage.
But whoever runs the resolver you use gets to see what domainnames you're resolving. Your resolver's operator will be sorely tempted to monetize that metadata.
Your only choice is which resolver operator you'll allow to monetize your metadata.
So you lose no matter what, unless you have a contract with the operator, and then you'd better be giving them something of value if you want to be able to enforce the contract's confidentiality requirements.
ISPs mostly don't even support DoH/DoT, which is a reason to not want to use their resolvers. But using public resolvers helps centralize the DNS, which is not good.
I preemptively agree that Cloud Flare is not one of those organizations.
It is unclear to me why any home user would deliberately opt for DoT. DoH and DoT solve the exact same problem, and DoH is by design harder to filter.
The choice of DoT vs DoH will mostly be about what is supported by one's choice of resolver. Of course, choosing DoH first will narrow the choice of resolvers.
Then there's captive portal situations.
But this isn't a stable equilibrium; as I said, it seems clear that privacy-minded organizations will eventually stand up their own trustworthy DoH resolvers.
DoH makes things somewhat better today for all users, and much better for power users. In the long term, it's easy to see how DoH makes things much better for everybody.
But I don't disagree that DoH is better.
I do hope that in the long run ISPs become less toxic.
That means running your own caching resolver, with a local copy of the root zone and QNAME minimization enabled, and then using DNS-over-TLS to forward the minimum necessary query onward.
The next question then becomes whether to perform recursion yourself (by talking directly with authoritative nameservers) or to have Quad9 or another recursive server perform the recursion for you. Authoritative nameservers don't yet support transport encryption, though we're working very hard to support it on the 500 TLDs PCH is authoritative for, and Verisign is working very hard to support it on .COM and .NET. So that means that your traffic is subject to interception, and essentially all authoritative servers either log queries or have people logging queries off the wire in front of them. And if you're handling your own recursion, everything you don't have cached crosses the wire, and none of it is blended together with anyone else's traffic.
To make the decision as to whether it's better to trust a recursive or send queries directly, knowing something about the practices and purpose of the recursive is necessary. Quad9 is the only major recursive that's a public-benefit not-for-profit. There are other small ones which are not-for-profits (like the Taiwanese 101.101.101.101, operated by TWNIC), but all of the others that come near Quad9's scale or traffic are for-profit, operated by companies that monetize data. Quad9 and Cisco's commercial Umbrella service are the only two which are GDPR-compliant and thus legal to provide to European citizens.
Quad9 exists solely so that bad choices won't be the only choices.
-Bill Woodcock
Chairman of the Board of Directors
Quad9Perhaps a parent wants something that's easier to filter.
Paul Vixie has said a lot on this topic.
And to me, who works in IT, it's a bloody annoying.
We've already implemented the use-application-dns.net NXDOMAIN canary at work because after some testing Firefox breaks a bunch of apps because of split-horizon DNS.
There's already (at least) two malware that's using DoH to get around network monitoring:
* https://www.zdnet.com/article/first-ever-malware-strain-spot...
* https://www.zdnet.com/article/psixbot-malware-upgraded-with-...
If the host is compromised we can no longer trust end-point monitoring, and with DoH/ESNI we lose network monitoring. Awesome. Great work.
DoH+ESNI will make it even harder.
It would be a genuinely weird new take to argue that encrypted SNI was somehow harmful to privacy.
This is amplified by moving DNS resolution into applications, Mozilla style. Now even the operating system or local firewall applications (Little Snitch, etc) can't know, where the processes are connecting.
Again, the application vendors can have objectives that are not aligned with the users. It is a mistake to conflate the home users with random applications running on their computers.
The argument is, that a random process should not be a world into itself; there should be a way to check on what it is doing. It does not have to be network based, it can be done by another process on the local machine. Things like DNS should be done by the OS, with hooks for the monitoring. It should be not be done by the application, with zero transparency to the owner. The system resolver, on the other hand, can use DoH/DoT/ESNI/whatever.
Giving random processes unlimited, uncontrolled and uncontrollable access to Internet is disaster waiting to happen. Quite similar to what happened to applications on Android.
I don't know, whether I'm expressing badly due to English not being my native language, or where is the problem in understanding. I hope that you are not just misunderstanding intentionally.
So once again: The combination of ESNI and DNS resolving inside applications (and not OS, not checked by some user agent) provides privacy to application, not users. That application might or might not have its objectives aligned with the users; more often than not, it will focus on interests of its vendor instead. So conflating privacy for application with privacy for user is mistake.
By applications using custom DNS+ESNI, the user loses control over who the application communicates with, he just sees that it can send and receive blobs. What it is sending out, to whom, is and will be unknown. That is the negative wrt user's privacy, compared to which the current Android ecosystem is squeaky clean.
As a 'network operator' at work and home, it is my responsibility to keep my network clean. Both for my own sake and for the sake of the greater Internet (is malware being spread from my network?).
End-host security is used to make sure that connected systems are clean. But if the end-host is compromised, then that may now become useless. So a second level of security is network monitoring.
However, how can I be responsible network operator if I have no visibility into my own infrastructure? DoH by-passing local DNS, and ESNI cloaking the destinations, make it impossible to see who is doing what. At least with Do53 (and DoT) I can control lookups (possibly to C&C servers).
A real client expects the encrypted parts that follow Certificate to match up and should abort if they don't, but malware is under no obligation to do that, and a 3rd party which can't decrypt the rest of the handshake won't know e.g.
Malware client: SNI for bigbank.example (knowing bigbank will have been excluded from snooping rules at the target)
Malware C&C server: 100% Legitimate Certificate copied from bigbank.example
Malware client: Cool, let's continue with encrypted setup (ignores the pretence that this is bigbank.example and now communicates with the C&C server undetected and encrypted knowing the logs will just show "bigbank.example")
"Security" products can't protect against this without snooping each and every single transaction, but many will be deployed by ignorant/ well-meaning people who don't understand how this works and thus that the products can't actually do what they appear to offer to do.
Except before DoH I could monitor DNS: with plain DNS ("Do53") it is completely visible, and with DoT it is on a different port so it can be filtered.
Which is Paul Vixie's point: DoH takes control away from network owners, like me and my home Asus, and me and work.
Regardless of what the OS or Firefox or whatever existing app uses, a malicious binary could just use DoH, or just make an HTTP request directly to an IP, or skip HTTP/DNS entirely and fling data out over UDP to an external IP.
Put another way: if your issue is that DoH removes your ability to catch DNS requests from malware, your issue isn't with users enabling DoH, or with app devs defaulting their apps to DoH, your issue is with the concept of non-DNS network protocols. Even if DoH was never standardized, an attacker isn't required to make lookups on port 53 as you desire.
Would you please elaborate on your distrust of Cloudflare? I’m not looking to call you out. Quite the opposite, I appreciate your candor. I just feel like I’m missing some context.
This is the discussion separation I am requesting. There is benefit of in-transit encryption regardless of who the endpoint is. There may also be benefits to defaulting to non-system DNS, but those discussions should be separate IMO.
Also "not the ISP" != "non-system dns". Don't conflate that just because browsers were first/most famous to implement.
I liken these arguments to the same ones made in the past by our more-naive selves concerning encryption of corporate intranet traffic. We should be smarter now.
Encrypting traffic, internal or external, only makes sense if you don't trust whatever you happen to plug in to tell you what to trust. OWE in Wi-Fi has similar faults.
One's ISP could be a mobile telco: I could trust the telco more that I trust the security of GSM/3G/LTE.
Also: does my ISP use Huawei equipment? I could trust my ISP's servers more than their network gear. :) Ask the IT folks at the Africa Union HQ:
* https://en.wikipedia.org/wiki/AU_Conference_Center_and_Offic...
If we are concerned with kill switches, the end-to-end design is less fragile to malicious and legal attacks than a proxy scheme with a handful of operators.
With DoT there is little reasons to not apply the same technology to authoritative resolvers. Conceptually it is almost as simple as supporting both UDP and TCP, and with the low number of root authoritative servers you can even store locally the address and certificates as part of the operating system. Since a lot of TLDs already have signed roots for DNSSEC it is even a pretty simple move forward to imagine a TLS support being enabled by them and the root. I would be amiss to not mention that Bind already store address and root zone keys of root servers as part of the install package.
A bit of a tell is that there is an RFC for authoritative servers running DoT. It is called aDoT. There is no RFC for DoH, and no one is talking about aDoH. Authoritative servers running DoH is not on the map, but aDoT is. Again we can disagree on the terminology but this is the reason why I see DoH as primary a security tool for proxying DNS request while DoT can be used for end-to-end.
Have a look at https://datatracker.ietf.org/wg/dprive/documents/
None of the authoritative DoT drafts have even been adopted by a working group yet, so based on the usual IETF timescales means they are probably years away from an RFC.
There are still substantial problems to be worked out wrt working out if an auth server supports DoT without slowing things down horribly, and working out how to authenticate a server without getting mired in EPP and the ICANN/registry/registrar policy swamp. The threat model needs to be clarified: do we need to protect against active attacks (much more difficult and stronger authentication required) or just passive snooping (which allows opportunistic upgrade). Does TOFU make sense?
So many questions still to be resolved, as it were
The idea that communication between resolver and authoritative servers should be encrypted is not a new concept. People have been discussing and talking about it for, I would like to say decades. What it does not have is an opportunity for data collection and there is not multiple companies competing to become the central location for dns query data. There is no default setting which a company might pay a significant sum for. Like DNSSEC there is also very little to be gained by authoritative DNS server providers in return for any added complexity. Since I work in this industry I can with fair confidence say that for most registrars the added risk and complexity is the primary reason why security technology in the DNS space is not moving like it does in other areas.
It used to be the same thing for email servers but googles attitude more or less changed that. If you do not support TLS then google is more likely to mark your email as spam. The cost of installing TLS is significant smaller than the cost of users email getting flagged as spam, so within a very short time window most email providers suddenly started to support TLS. Getting people to care about security is often a simple matter between risk and cost, a fact often brought up by Bruce Schneier.
> Does TOFU make sense
There is many potential schemes but one of the more simpler one would be to use DNSSEC and hardcode the certificates of the root servers (Authoritive server programs already hardcode some information about root servers as they rarely change). About 1398 of 1527 TLDs have signed zone in dnssec and it would cover most lookup. In theory there is nothing to prevent the root server from simply publishing TLS keys next to the NS records, with registries doing the same. Looking at how communication between email servers became TLS protected, they did not resolve all those questions and yet we went from all plaintext to almost all encrypted in a few years.
As side note, let me give one example of a business concept. When you buy a domain there is usually a way to get analytics of how the domain get queried. Information like how often and from where which helps the domain owner get a perspective of how their domain get used. Let now say 80% of the traffic get routed through cloudflare. 80% of the logs are now gone. That is sad but you can buy it back If you move your DNS to cloudflare which will happy provide analytic for your domain. All Pro, Business and Enterprise plan customers will even get additional geographical information.
There is nothing inherent of the DoT protocol that forces a model of client->recursive->authoritative. The RFC is pretty light on even mentioning recursive. It mention a technical aspect of recursive client in exactly one place, which is when discussing connection reuse for multiple requests by saying it should (not must) reuse TCP connection if possible. The RFC really just boils down to the concept of applying TLS to a tcp and udp based protocol.
The DoH RFC 8484 is very different and as mentioned above there is no one who is suggesting to apply it in any form beyond as a technology between stub resolver and a recursive server.
The dns-privacy IETF is quite relevant in context. If we want to be technically correct here, there is a draft RFC for authoritative servers running DoT called aDoT, with DANE as authentication.
Lets imagine a DoH protocol for email where Google or Microsoft suggest that email client should ignore smtp setting and send all email to them by default, and compare that to current model that we use today where client talk securely to servers and server talk security between each other. When viewed like that, is it unfair to describe DoH as being a proxy and the model of just adding TLS as being end-to-end?
I've got a horse in the race, but I might use it as an example input for the method in this post: https://www.qtra.io/simpletm
Short version would be, <end user> wants to protect the <confidentiality and integrity> of the <contents of their browsing history> from:
<isps> who <using it to target ads and sell to 3rd parties>
<intelligence agencies> who <are engaged in bulk collection>
<employers> who <use browsing history as leverage to manage out staff.>
etc.
We need the who, why, and what, before the how. Excellent summary all around though.
DNSSEC is the only truly hierarchical PKI with pervasive name constraints that we have. That makes it very valuable, even if it is difficult to leverage to solve other problems.
Like all PKIs, DNSSEC is vulnerable to authorities (that is, authoritative servers) acting as MITMs. WebPKI makes it very easy for nation states to acquire MITM credentials: just subvert a national CA and you're done because the WebPKI lacks name constraints. A real PKI makes this harder, because a nation state can only legally subvert authorities within its jurisdiction.
The root zone is special though, as long as there is only one, and that's why the root zone operators make such a special show of key signing events: to increase confidence that it has not been subverted. But the root zone is still a concern -- if not today, then tomorrow.
Enter QName minimization. By sending minimized queries -at the cost of having to do more queries, thus having higher latency- one can keep intermediate authorities from observing the full domainname that one is attempting to resolve. That makes is more difficult for authorities to MITM specific targets.
On the other hand, if a state suborns its DNS providers to inject bogus keys, there is no recourse. You can't revoke .COM. Is Google going to become Google.IO? Wait, no, .IO is controlled by Five Eyes as well.
First, we see that China, for example, has enormous market power that it uses to get its way in just about every controversy.
Second, CAs will get kicked off the TA list only if they get caught.
While I agree with much of your comment, I think you are doing both Google and Mozilla a disservice to say they did this "casually". The decisions to distrust the CAs in question were not taken lightly; they came after repeat offences, and the grounds for doing so were abundantly clear.
It was most fun in the old days, before the Ten Blessed Methods. You'd get this contrast between the wild imaginations of anti-DNSSEC people who imagined every certificate application is investigated by some combination of Jason Bourne and Sherlock Holmes - and a reality where it's just somebody got a blurry fax from a law firm in another country and so they pressed OK because everybody knows lawyers are honest.
Are you not watching CT logs for domains you work on?
I also run smaller monitors and auditors for my own interest as an active participant in m.d.s.policy. Which is why it's always weird to hear your version of what goes on there, since you don't participate and seem to base your understanding on something like a tabloid newspaper report or a Hollywood script rather than the reality.
Don't mistake any of that for me not keeping up with these groups. Your arguments still have to make sense to succeed; you do not in fact have an "I post on m.d.s.policy" card to play here.
Can we replace DNSSEC with something that doesn't give government control over root zones?
Why should a litany of CAs with authority to sign certificates for largely any TLD be preferable to only allow the entity that's authoritative on domain ownership being able to sign valid certificates? DV certs are just indirectly checking with DNS anyways and there are pitfalls in that process and no real benefits in the end.
Neither Google nor Mozilla can revoke .COM, and the USG has repeatedly used its authority over .COM for public policy ends.
If the USG actually did seize control over gmail.com, and they had some CA sign a DV cert for them, how would that constitute a misissuance? The whole point of a DV certificate is that it only attests that the owner of the cert is the owner of the domain. The scenario we're talking about is a government becoming the new owners of a domain name.
But regardless of that, mitigating government overreach by means of having hundreds of sacrificial CAs is a pretty poor solution. What happens if Let's Encrypt gets blacklisted? That's a huge chunk of the internet gone right there until everyone gets around to replacing them. IANA doesn't have to have the root and TLDs delegated to a single entity. DNSSEC could be replaced by something requiring signatures from multiple different entities in multiple different jurisdictions to actually solve this problem. Have the root and global TLDs signed by at least 3 out of 5 entities with no more than 2 of those being from a Five Eyes nation. IANA already has a mediation process to resolve disputes with domain names, there's no reason why legitimate domain seizures couldn't be subjected to that process rather than just a unilateral court order to the registrar.
As for killing large existing CAs though, just look at how egregious Symantec was before Mozilla and Google ultimately decided to pull the plug. For years there'd be new ever more creative ways in which Symantec misissued certificates and their responses always seemed to be some variant of "Sorry, we didn't know we weren't supposed to issue certificates to entities other than the owner". There is still considerable friction to removing misbehaving CAs. As a matter of fact, Symantec in particular did misissue certificates for google.com back in 2015 during that whole test certificate debacle.
Repeat after me: rubber hose cryptanalysis is unbeatable / cryptography cannot solve political problems.
Here's a breakdown of the real world implications of these three protocols. They are in fact simpler than this analysis suggests.
DoT and DoH are related efforts. DNSSEC is unrelated to DoT or DOH.
DNSSEC is a ~25-year-old effort to sign DNS records, so that attackers who control caches can't spoof records. In 25 years, through 3 revisions of the protocol, 2 of them major, DNSSEC has seen practically no deployment outside of Europe, where registrars enable it automatically (and thus control the associated keys). In particular: with the exception of Cloud Flare, which provides DNSSEC services, and some Paypal domains, no major tech companies sign their zones with DNSSEC.
For a bunch of reasons, DNSSEC is probably a dead letter (I'm not calling time of death yet, but I expect to within in the next 6 months). In particular: protocol-level defenses against record spoofing just aren't very relevant. Much of the Internet runs on TLS (if you don't, DNSSEC is the least of your problems). The WebPKI (TLS CA system) has in-progress mitigations against spoofing, and more in the pipeline, and all of them put together will cost a tiny fraction of what DNSSEC will cost. For a year or two, SMTP TLS was the great hope of DNSSEC deployment, the last major mainstream application that had a security gap addressable directly with DNSSEC. But then the major mail providers all (all) got together and came up with SMTP-STS to address that gap directly.
It is hard to think of a real threat that end-user adoption of DNSSEC would address. I like to joke that the DNSSEC root keys could end up on Pastebin today and network engineers around the world could sleep the resulting Jira tickets for a week or two before deciding whether to just backlog them. Except I'm not really joking about that at all.
Which brings us to DoT and DoH.
The problem you do actually have with DNS today, especially if you're in the US, is that your large ISP is abusing DNS to monetize your traffic. I'm on AT&T, and, with their standard DNS, if I type a nonexistent domain into my browser, I'm on an AT&T landing page. ISPs are actively attacking DNS today for all their customers.
DoT and DoH tunnel DNS out of untrusted networks to a resolver on a hopefully more-trusted network (that is: there isn't that much point to DoT'ing or DoH'ing to your ISP's nameservers; you care about DoH/DoT if you want to use a third-party resolver, which you should).
Both DoT and DoH use TLS to secure DNS lookups. Protocol nerds will have fascinating discussions about the tradeoffs between the two approaches, but from a practical perspective, for home users, here's the real difference: DoT has a kill-switch for network operators, and DoH doesn't. A network operator that doesn't want you DoT'ing can stop you, because DoT deliberately runs on an oddball port. DoH, on the other hand, very deliberately runs on 443/tcp, so that it costs more to filter.
Do you want a kill switch in your DNS privacy tunnel? That depends on who you are. If you're an enterprise network operator, you want the kill switch, so you can (reasonably!) force your endpoints to funnel their DNS lookups through recursors you control and monitor. If you're a home user, you very much do not want the kill switch; if you decide you want to use Google DNS rather than your In-Flight Wi-Fi provider's DNS, it should not be up to your airline or their wifi provider whether you do that.
I was curious and tested the domains of the Fortune 500 as compiled at https://blog.dofo.com/fortune-500-domain-names/. Here's the list I came up with:
aetna.com
boozallen.com
centene.com
cmsenergy.com
comcastcorporation.com
key.com
magellanhealth.com
paypal.com
raymondjames.com
raytheon.com
simon.com
theice.com
thorindustries.com
usaa.com
utc.com
xerox.com
I'm not agreeing or disagreeing with your statements or sentiments; I just didn't want my efforts to go to waste.Booz Allen, United Technologies, and Raytheon are government contractors. For several years, the USG had a policy of requiring DNSSEC for its own internal zones and had sent signals that its partners would require DNSSEC as well. But a year and a half ago, the USG rescinded the requirement, and no longer recommends DNSSEC even for internal .gov zones.
Comcast is an interesting example because their adoption of DNSSEC broke a major project rollout: the week HBO NOW became available, it was unreachable from their networks due to a DNSSEC misconfiguration.
Another data point: of the Alexa Top 50 in the US, only FORCE.COM is DNSSEC-signed. But SALESFORCE.COM isn't; similarly, Paypal is signed, but its popular subsidiaries like Braintree and Venmo aren't. Or take the Moz 500; you'll find Mozilla is signed, as are a bunch of .GOV sites (see above), some European sites, and, if we're keeping score in the US, also Fox News, Time, Mediafire, and, weirdly, Themeforest. For reasons I do not understand, Stanford, Berkeley, and CMU have taken the time to sign as well. And that's it.
(For others reading: you can take a list of domains and do a quick spot check for DNS by just running "host -t ds (domain)".)
Note that cloud.gov is FedRAMP-authorized and does not itself support DNSSEC, which I point out in addition to the rationale cloud.gov provides on that link (which answers your direct question).
Given that CloudFlare already has 13%+ market share, as an end-user, if my primary threat is eavesdropping in the middle, not eavesdropping by CloudFlare (or by NSA's subpoena or NSL), it's actually reasonable to trust the tech giants. Using CloudFlare's DoH server helps me to end-to-end encrypt my query of 13% of the domain names! Also, CloudFlare has business plan to adopt private encrypted DNS links to other authoritative servers, and they already have a private channel with Facebook, it's even better! Don't start sending hate replies, I know the bigger picture is that it allows CloudFlare to effectively monopolize DNS is extremely harmful in the long run, and I'm worried. But I simply don't see a perfect alternative solution that allows one to self-host a resolver at home with end-to-end encryption to communicate with authoritative servers.
You see, the end results that everyone should work towards is introducing encryption to the missing resolver-authoritative server link.
DNSCurve was developed in 2005 as a practical and high-performance protocol for deployment on authoritative servers, and fill the missing link, the protocol is great, DNSCrypt was its direct descendant for last-mile client-resolver encryption.
It was ultimately not adopted, partially because of many hate DJB's personal style of taking an aggressive position over technical issue, especially his attack on DNSSEC. But also, the final reason was that the ICANN has stated that, in the case of the DNS Root zone servers, DNSCurve will never ever be implemented. First because its threat model doesn't include the authoritative servers themselves, and it gives them the private key. This is fine for private use, but the DNS root servers are controlled by many political entities, and ICANN doesn't believe trusting them is acceptable. DNSSEC was designed in a way to avoid giving the ultimate key to root servers, but not DNSCurve. Also, DJB hated DNSSEC so much that DNSSEC cannot be used to sign the pubkey for DNSCurve resolver - oops!
In the future, we should work toward a solution for resolver-authoritative server encryption. In the article, the author mentioned DNS-over-TLS is a potential solution, if so, we should push to deploy DNS-over-TLS on major authoritative servers, or perhaps one day, on the root servers if a solution has been worked out.
Only then, it could allow us to say farewell to CloudFlare's DNS and Google's DoH resolvers.