4 ms·
Brings up an interesting question: Why do we need a Let's Encrypt to issue a TLS certificate? At what point can we stop using them? PKI in a nutshell: the CA s
by peterwwillis 6y ago
Brings up an interesting question: Why do we need a Let's Encrypt to issue a TLS certificate? At what point can we stop using them?
PKI in a nutshell: the CA signs your CSR which was created with your private key; the CA gives you a cert based on your CSR; you show random people a website using your private key + CA-signed cert; random person's browser trusts your private key+CA-signed cert content because their browser trusts the CA-signed stuff implicitly.
Why we need more than 1 of them: in case one of them goes down and so we can't get new certs; in case one gets compromised and the browser revokes their trusted CA cert; diversity of "features".
What could we do instead of this process?
Idea 1: the registry becomes the CA.
Why?
To get a cert, you have to prove you are allowed to have it. Currently that almost always involves proving that you currently control the IP space that is pointed to by a DNS record. There are other verification methods which are somewhat more problematic than this, but this is the simplest method. And if you can find one single CA which will create you a cert if you can do this, that means that if anyone can do it, they can get a cert. Meaning that this verification method is the minimum security barrier for getting a valid cert.
How can an attacker to subvert this process to generate a valid cert for any domain?
Options: 1) Take over the domain, by hacking the domain's account at the registrar. 2) MITM the registrar, such that updates to the registry's NS end up controlled by the attacker. 3) Take over the domain, by hacking one of the domain's nameservers. 4) Perform a DNS hijack, such as cache poisoning, so when the CA looks up your domain to find the IP space, you return attacker IP space. 5) Perform a BGP hijack so when the CA tries to connect to the IP space, it connects to attacker-controlled IP space. 6) Plenty of others based on other validation methods such as DNS record alone, HTTP [no S] content, a pre-configured list of e-mails for a domain, etc.
How to prevent all but one of these attacks?
Option A: Make the registrar the CA. The registrar would simply request the user use an HTTPS API to request a new cert, using an API token generated by the login for the domain's account. The only way for an attacker to generate a cert at that point is to either hack the registrar account, or hack the customer's server to get the API token (basically the same impact as if they compromised the customer's web server).
The browsers would trust the registrars who would follow the exact same stringent guidelines that CAs use today. The difference to the end-user is the CA is run by the registrar.
Option B: The registrar and the CAs stay independent, but they use a standard secure protocol to authorize signing of certs using a customer API token. Same benefits, but an extra hop. Browsers continue working as before, users use an HTTPS API to the CA to generate the certs.
With either options A or B, there's no more stupid hoops to jump through just to prove you own the domain and thus deserve a certificate.
- dlgeek 6y agoWhat you're describing is called "DANE" - https://en.wikipedia.org/wiki/DNS-based_Authentication_of_Named_Entities https://en.wikipedia.org/wiki/DNS-based_Authentication_of_Na...
- account42 6y agoRight, but no major browser supports DANE (at least out of the box). Will that ever change?
- tialaramex 6y agoMaybe. In the middle scenario where most first-to-recursive DNS calls are DPRIVE but the authoritatives overwhelmingly aren't you get free security by just checking the "use DNSSEC" box and so browsers may just begin doing that, maybe gradually or maybe as a result of a headline making incident. See also the curious case of TLS_FALLBACK_SCSV. (Basically if you don't implement SCSV then unsafe fallbacks are too dangerous to attempt, but anybody implementing SCSV doesn't need an unsafe fallback anyway, so, forget this new protocol feature just never do unsafe fallbacks, duh) Once you're checking that box, DANE is almost free. Egos involved may determine that it's important to never technically do DANE, so as to save face, see also why TLS 1.3 isn't just named SSL 3.4 or SSL 4.0 even though that's what it "is" in some sense. But the effect, yes. If that scenario plays out it's what will happen. One blocker for DNSSEC and thus DANE was deployability difficulties facing middleboxes. But middleboxes have choked so much else since that today "defeat middleboxes" is just table stakes. It was needed for TLS 1.3 and it's needed for QUIC and for HTTPS DNS records and... if you're defeating middleboxes anyway you might as well have DNSSEC.
- tptacek 6y agoIt makes sense to expend the effort to defeat middleboxes when what you win is QUIC or TLS 1.3, both of which work immediately on the Internet today. It doesn't make nearly as much sense when the payback is DANE, is supported almost nowhere --- significantly less than 2% of domains. This isn't a chicken-and-egg problem: domains can DNSSEC-sign now, without any middlebox interference, and overwhelmingly choose not to.