SSL certificates work on trust: end users trust their browsers, and browsers trust “certificate authorities” (CAs) like Gandi. But the chain goes one step further: the CA trusts DNS. When you buy an SSL certificate for foo.com
from a CA like Gandi, Gandi verifies that you foo.com
by challenging you to modify the DNS for that domain. The ultimate trusted authority is not the CA; it is the Domain Name System.
There is therefore a much simpler alternative to SSL certificates, which cuts out the CA middleman: have the browser consult DNS directly. The browser already consults DNS for the server’s IP; we would additionally have the browser ask DNS for a public key for that domain. It would run like this:
foo.com
from the .com
registrar.foo.com
DNS under a TXT
record (or some new PUBKEY
record).foo.com
’s A
record to the server’s IP.foo.com
in browser.A
record and PUBKEY
record for foo.com
.Here, no Certificate Authorities are involved, but the user still has the same guarantees: it is talking in private to a server which is operated by the owner of foo.com
.
I wrote this because I felt like it. This post is my own, and not associated with my employer.
Jim. Public speaking. Friends. Vidrio.