The recent hack of DigiNotar and the resulting upheaval (it was even discussed in Dutch parliament yesterday), has made painfully clear that the current system of certifying websites is insecure and needs replacement. During a discussion on this topic with my colleagues of the Digital Security group of the Radboud University Nijmegen, the following issues and ideas came up. I'd like to share them with you, and welcome any comments you may have.
Concerning the scope and cause of the problem, it was noted that the found weakness will probably be exploited only by governments, not criminals. Governments have the means to control large parts of a the national Internet. For criminals, it is easier to attack victims using Trojans and viruses. This has some ramifications for the attack model to consider when trying to improve the certification system used by SSL. Moreover, we have to trust our browser to function correctly.
Although it might seem that there is not a single root CA in the current certification model, the browser vendor actually acts like a root CA (for all the 'root' CAs it includes in its browser). As there are several different browser vendors, the current model actually has more than one root, although the nodes and leaves in those certificate trees are shared.
Some CAs are too big to fail. Comodo was hacked before DigiNotar was, but could not be removed from the list of trusted CAs because then a significant portion of all secure websites would suddenly have become untrusted by the browser (until the website obtained a new certificate).
During our discussions a few requirements that a potential solution should have to deal with came up.
The following ideas towards solving the problem of authenticating websites were suggested.
I will not elaborate on other approaches I discussed earlier (like using DNSSEC with DANE, Perspectives or Convergence).
This topic is not called: "the future of certification of Internet websites" or something similar, because using certificates is but one way to authenticate websites. (Moreover, using the term certification implicitly implies that the website has undergone some kind of audit process before being issued a certificate; this is typically not the case.)
The real issue at hand is how to authenticate a website. That is the problem that needs to be solved.
[…] the discussion at the Radboud University on the future of authenticating websites, I lead a similar discussion at […]
[…] Much has been written about the weaknesses of our current systems for website certificates (e.g. here and in 2000). As the Diginator hack showed, any of the many Certificate Authorities that exist can […]
Hi JHH,
Here’s some thoughts…
The root CA list that comes pre-installed with browsers is just a default list IMO. Users can remove anchors that they no longer trust or add new ones (such as cacert.org) as they see fit. How’s that for user-centricity? Maybe not for the average user? Browser vendors could perhaps make this easier? And I’m not sure how this interacts with automatic updates, especially in systems where the trust store is part of the OS and shared amongst different applications.
This whole thing was discovered through “public key pinning” (http://www.imperialviolet.org/2011/05/04/pinning.html). I.e., one of the Iranian victims used Chrome which had some special knowledge about (the public key inside) google.com’s certificate. It’s like your hard-coding solution (but smarter). Clearly a solution that doesn’t scale, though.
There’s a nice movie by Fox-IT (here: http://www.youtube.com/watch?v=wZsWoSxxwVY) showing OCSP traffic as a result of the MitM attack in progress. Could real-time monitoring of such traffic have alerted someone earlier on? (At DigiNotar? At Goolge? At GOVCERT.nl?)
(Oh, and you have a dangling pointer to “earlier”.)
Best, Martijn
Manually editing a list of CA’s is not something an average user will (or even should) do. If he deletes the wrong one, he may end up with loads of warnings about untrusted sites (with whom nothing is wrong). So: not user centric at all, I’m afraid.
I agree that key pinning (or hard-coding certificates) is not a proper long term solution. However, it is a quick fix that helps protect the major websites (and thus the majority of Internet users).
P.S.: Thanks for spotting the dangling pointer! Fixed now. And thanks for the link to the movie. I’ll check it out later, once I’m off the train and back to a normal bandwidth connection…