DNSCrypt: A tool for securing communications between a client and a DNS resolver
dnscrypt.org
dnscrypt.org
And for the same reason I don't want to use my ISP's DNS. I did a quick websearch for public DNS servers that give honest results without requiring an account, but did not see any mention of encryption compatible with this.
You are free to modify the code for the clients to point to your own server, setup your own server using the proxy code provided, or configure your authoritative DNS servers to talk securely to OpenDNS and protect the entire chain using DNSCurve (which DNSCrypt is based on).
There's also nothing to stop you from using a caching DNS server with DNScrypt (in fact, they give you instructions to do so).
Without OpenDNS'es work, your cute little caching DNS server at home is still subject to the same interception as queries flowing to your ISPs DNS cache.
So what if they optionally replace some NXDOMAIN queries so they can make a little bit of money? If they didn't have a business model that was up front, you'd claim they were obviously funded by the government.
We as a community need to not be so hard on commercial companies that are actually trying to protect us. Some of them are ran by genuine geeks like us and trying to help out.
DNSSEC is only signatures for DNS. It provides no secrecy of queries or responses. In light of the current PRISM disaster, DNSSEC does nothing to protect you.
I'll copy a snippet from OpenDNS' original announcement [1] here: Our support for DNSCurve doesn’t prevent our adoption of DNSSEC — they are not mutually exclusive. While we have reservations about DNSSEC, we can and will implement it when we see more demand and traction, but in the meantime, when we see a viable technology that can be quickly implemented to improve security for DNS users, that’s a no-brainer in our book.
Let's say Nation State A has all the data that prism has collected and Nation State B has the same exact dataset minus DNS traffic. Do you really think there is a lot that A can do that B can not?
EDIT: Changed hypothetical actors from me/you to state a/ state b. It made it seem personal and its not i was just being lazy.
Unbound didn't support SSL back then, so that was a quick hack to achieve something similar. Let Unbound do caching, DNSSEC validation and filtering, and still authenticate DNS queries&responses between my remote Unbound server and my laptop.
Encrypting your DNS queries and responses doesn't help much when they log the IP addresses and ports you connect to.
Encryption by default is a good thing. I might get around to playing with DNSCurve at some point, but it's not a priority for me, because practically speaking it doesn't give me that much benefit and I already have DNSSEC support.
If your "cute little DNS server at home" is dnscache, then I'd say you're on equal footing with OpenDNS. And if you configure CurveDNS or some other implementation of dnscurve then I'd say you're achieveing everything you could achieve with DNSCrypt. And it won't cost you anything... like OpenDNS spying on your queries and serving you ads.
The truth is, there are hardly any authoritative servers on the internet that support encrypted queries from dnscurve clients; dnscurve, as impressive as it is, remains obscure. If you're worried about someone sniffing or modifying queries off the wire as they travel from OpenDNS's or your home dnscache server to authoritative DNS servers, you'll have to restrain yourself to querying an extraordinarily small number of domains that have configured dnscurve. All other queries will fall back to being sent unencrypted.
Why not just do TCP queries over SSL?
I think securing the DNS is a poor approach in general, and we should instead concentrate on making an insecure DNS a chronic inconvenience rather than a fatal flaw. But if you're going to try to secure the DNS, the DNSCurve hop-by-hop approach is superior to DNSSEC's approach.
Side note:† In the past I recall you supporting developers "pinning" certificates by rolling their own CAs and bundling the keys with their applications. I have always thought that DANE/TLSA records are an application layer agnostic method for certificate pinning. Do you think I have placed too much trust in DANE?
Given widespread adoption of DNSSEC, DANE records seem like an easier way to manage "certificate pinning" than having to push application updates. Plus I can use the same DANE records that my mobile app uses to protect the third party API for my service. Whereas embedding keys into apps leaves the API unprotected.
I realize "Assuming widespread adoption of DNSSEC" is the big "if" when speaking about the public in general. However for controlled environments (I'm thinking of anything ending in .gov/.mil) DANE records seem like an easy win.
† In this section I am shoveling words into your mouth so I apologize if I have misconstrued/misremembered previous posts.
In the recent discussions about NSA surveillance, a technological anchor we could repeatedly point to was the fact that Google baked the identities of their keys directly into the binaries for Google Chrome. Firefox has adopted the same approach. I don't think it's hyperventilation to suggest that NSA has at least one trusted CA key in its possession, but despite that, NSA probably can't invisibly MITM Google Mail sessions because Chrome's trust anchor for Google Mail isn't a CA certificate.
In a DNSSEC world where DANE was used for key pinning, we'd be back to trusting a PKI root. Moreover, the PKI root we'd most often be trusting is one controlled by the US Government. How, exactly, is that a step forward?
Duh, thank you. I don't know why I was approaching it as if the clients had the DNSSEC keys hardcoded for each zone. It seems that there is not a lot of hope for a solution that is easily interoperable (BYO Browser/MTA) when your threat model includes nation state and sub-nation state threats.
That said, I'll probably give DNSCrypt a try again in the coming months. YMMV
DNS confidentiality is useful when running an IP-over-DNS tunnel like iodine, not so much in combination with other protocols.