7 ms·
DNS-over-HTTPS doesn’t make as much sense to me as DNS-over-TLS. They are effectively the same thing, but HTTPS has the added overhead of the HTTP headers per r
by bluejekyll 9y ago
DNS-over-HTTPS doesn’t make as much sense to me as DNS-over-TLS. They are effectively the same thing, but HTTPS has the added overhead of the HTTP headers per request. If you look at the currently in progress RFC, https://tools.ietf.org/html/draft-ietf-doh-dns-over-https-04 https://tools.ietf.org/html/draft-ietf-doh-dns-over-https-04, this is quite literally the only difference. The DNS request is encoded as a standard serialized DNS packet.
The article mentions QUIC as being something that might make HTTPS faster than standard TLS. I guess over time DNS servers can start encoding HTTPS requests into JSON, like google’s impl, though there is no spec that I’ve seen yet that actually defines that format.
Can someone explain what the excitement around DNS-over-HTTPS is all about, and why DNS-over-TLS isn’t enough?
EDIT: I should mention that I started implementing this in trust-dns, but after reading the spec became less enthusiastic about it and more interested in finalizing my DNS-over-TLS support in the trust-dns-resolver. The client and server already support TLS, I couldn't bring myself to raise the priority enough to actually complete the HTTPS impl (granted it's not a lot of work, but still, the tests etc, take time).
- tzahola 9y ago>The article mentions QUIC as being something that might make HTTPS faster than standard TLS. Even with TLS 1.3 0-RTT?
- bluejekyll 9y agoexactly...
- patrickmcmanus 9y agoyes, quic will make dns over https more resillient to packet loss than a tls based approach.
- patrickmcmanus 9y agorfc 8336. h2 coalescing. h2 push. caching. it starts to add up to a very interesting story.
- bluejekyll 9y agoThank you for responding, Patrick. As one of the authors of the RFC, your views on this are a great contribution to the conversation. > rfc 8336 I'll have to read up on this, thanks for the link. > h2 coalescing DNS is already capable of using TCP/TLS (and by it's nature UDP) for multiple DNS requests at a time. Is there some additional benefit we get here? > h2 push This one is interesting, but DNS already has optimizations built in for things like CNAME and SRV record lookups, where the IP is implicitly resolved when available and sent back with the original request. Is this adding something additional to those optimizations? > caching DNS has caching built-in, TTLs on each record. Is there something this is providing over that innate caching built into the protocol? > it starts to add up to a very interesting story. I'd love to read about that story, if someone has written something, do you have a link? Also, a question that occurred to me, are we talking about the actual website you're connecting to being capable of preemptively passing DNS resolution to web clients over the same connection? Thanks!
- patrickmcmanus 9y agothis story will evolve as the http ecosystem evolves - but that's part of the point. wrt coalescing/origin/secondary-certificates its a powerful notion to consider your recursive resolver's ability to serve other http traffic on the same connection. That has implications for anti-censorship and traffic analysis. Additionally the ability to push DNS information that it anticipates you will need outside the real time moment of an additional record has some interesting properties. DoH right now is limited to the recursive resolver case. But it does lay the groundwork for other http servers being able to publish some DNS information - that's something that needs some deep security based thinking before it can be allowed, but this is a step towards being compatible with that design. wrt caching - some apps might want a custom dns cache (as firefox does), but some may simply use an existing http cache for that purpose without having to invent a dns cache. leveraging code is good. There are lots of other little things like that which http brings for free - media type negotiation, proxying, authentication, etc..
- bluejekyll 9y ago
- Twirrim 9y agoSome ISPs block outbound DNS from customers to anywhere but their resolvers, filtering based on target port. This is a particularly common trick in countries that attempt to censor the internet. It's a lot harder to do that with DNS-over-HTTPS because it looks like normal traffic. That said, in this case ISPs can just null route the IP address of the obvious main resolvers such as 1.1.1.1. I imagine most of the benefit is surely to people who can spin up their own resolvers.
- bluejekyll 9y agoWhen we add TLS on top of the protocol, ISPs can only filter based on port at that point. We can run DNS on 443 if that helps, but as you said, static well-known IPs can then be blocked. > I imagine most of the benefit is surely to people who can spin up their own resolvers. There are already many easily run DNS resolvers available. Is there a benefit you see in operating them over HTTPS that improves on that?
- gsnedders 9y ago> When we add TLS on top of the protocol, ISPs can only filter based on port at that point. And SNI… :(
- chimera77 9y agoOne of the use cases for DNS-over-HTTPS given in the draft was to allow web applications access to DNS directly via existing browser APIs.
- azinman2 9y agoOk that’s actually pretty cool.
- codetrotter 9y agoWonder if this will pave the way for other protocols over HTTPS.
- gsich 9y agoHopefully not. One needs to stop working around crappy setups from crappy networks. Which X-over-HTTPS really is all about.
- 18pfsmt 9y agoIt seems like crappy networks are the norm nowadays, and the preference of the ISPs is to offer the web only. You need a middle box just to access the internet at-large (e.g Tor). Masquerading traffic as web traffic appears to be a good tactic, though inefficient/sloppy.
- Spivak 9y agoYeah, but once everything is tunneled over HTTP it will finally fix the network operator problem once and for all since you can't filter applications using ports.
- ori_b 9y agoI've implemented DNS before. Doing this saves an entire 300 lines of code. At the same time, it makes the DNS server much more complicated. On top of that, implementing a compliant posix libc will now either use a completely different code path, or pull in a huge amount of code to implement HTTP, HTTP/2, and QUIC. If the simpler, cleaner, and more performant route is taken, it willgbreak when someone screws up "legacy" dns without noticing, because it works in the browser. It's not worth the complexity of multiple protocols that do the same thing. And it's not worth making the base system insanely complicated so that the magic 4 letters 'http' can show up. TLS? Yeah, since the simpler secure DNSes failed, we might as well use that. But let's try to keep http complexity contained.
- fjarlq 9y ago1.1.1.1 does support DNS-over-TLS as well: https://developers.cloudflare.com/1.1.1.1/dns-over-tls/ https://developers.cloudflare.com/1.1.1.1/dns-over-tls/
- bluejekyll 9y agoYes! And I plan to actually build in a default setup to use that now that it exists. I should have mentioned up front that this is the most exciting thing to me in the announcement. This is a very exciting development, thank you for posting this.
- WhitneyLand 9y agoHow is any of this more secure against your ISP in any case given someone willing to do reverse lookup‘s on IP addresses? If someone controls routers is it not nearly useless? So for example all mobile 4g providers could laugh at this and build a nearly as good database of every site you visit?
- IshKebab 9y agoReverse DNS is a lot more difficult than just intercepting DNS requests. Especially with virtual hosts, caching proxies and so on.
- tyingq 9y agoDns over https would be harder for governments and other middleman to block or intercept, despite it being less efficient. It would look like any other https request. Especially if browsers agreed to universally support it.
- IshKebab 9y agoNo it wouldn't. They're both encrypted with the same method so they can't tell whether http is used or not.
- tyingq 9y agoSorry, confused. Https requests are prolific, while encrypted DNS requests aren't. Why isn't the former less hard to detect?
- forapurpose 9y agoPerhaps if the attacker filters traffic first by protocol, it's harder but not at all impossible. I'd guess that DNS-over-HTTPS packets won't be hard to identify by other means.
- patrickmcmanus 9y agoof course dns over https to cloudflare can be mixed on the same h2 connection with other https to the same host. It starts to get interesting. (this is one of the advantages of https vs straight tls)
- ori_b 9y agoHow would you tell that an encrypted chunk of data is HTTPS instead of DNS? The best you'd be able to do is guess based on behavior that it's DNS.
- tyingq 9y agoDestination port might be easy to differentiate dns over tls vs dns over https :)
- dweekly 9y agoHow much overhead? Is the request or response larger than a single packet?
- edraferi 9y agoCloudflare addresses this in the blog post: There are a couple of different approaches. One is DNS-over-TLS. That takes the existing DNS protocol and adds transport layer encryption. Another is DNS-over-HTTPS. It includes security but also all the modern enhancements like supporting other transport layers (e.g., QUIC) and new technologies like server HTTP/2 Server Push. Both DNS-over-TLS and DNS-over-HTTPS are open standards. And, at launch, we've ensured 1.1.1.1 supports both. We think DNS-over-HTTPS is particularly promising — fast, easier to parse, and encrypted.