Pretty much every OS/browser comes with root CAs belonging to the U.S. government (on OS X I see "DoD Root CA 2" and "DoD CLASS 3 Root CA", see also http://support.apple.com/kb/HT4415). As I understand it, if they wanted to, they could MITM any HTTPS connection by forging a certificate using their root CAs.
This is why people were upset when a root CA for some Chinese government agency was added to certain browsers. We don't trust the Chinese government, but we do trust the US government, I guess.
Of course, if they regularly forged certificates someone would notice. Right?
Which begs the question, how would we notice? If you diligently check certificates for sites you visit you might happen to notice facebook.com's CA suddenly changes from Verisign to the U.S. DoD.
Is there a better way? How can we automatically check that the certificates we get are legitimate?
At a minimum it would be nice if there was a warning when a cert doesn't match a previously seen one (similar to SSH)
I feel like a "web of trust" needs to be layered on top of the certificate authorities to really solve this problem. If 10 of my friends have seen the same certificate for a given website I'm inclined to believe it's legitimate. I'm also likely to trust certain organizations (EFF, etc)
Of course it's also a user interface issue. The average user wouldn't understand a single sentence I wrote above.
Pretty much every OS/browser comes with root CAs belonging to the U.S. government (on OS X I see "DoD Root CA 2" and "DoD CLASS 3 Root CA", see also http://support.apple.com/kb/HT4415). As I understand it, if they wanted to, they could MITM any HTTPS connection by forging a certificate using their root CAs.
This is why people were upset when a root CA for some Chinese government agency was added to certain browsers. We don't trust the Chinese government, but we do trust the US government, I guess.
Of course, if they regularly forged certificates someone would notice. Right?
Which begs the question, how would we notice? If you diligently check certificates for sites you visit you might happen to notice facebook.com's CA suddenly changes from Verisign to the U.S. DoD.
Is there a better way? How can we automatically check that the certificates we get are legitimate?
At a minimum it would be nice if there was a warning when a cert doesn't match a previously seen one (similar to SSH)
I feel like a "web of trust" needs to be layered on top of the certificate authorities to really solve this problem. If 10 of my friends have seen the same certificate for a given website I'm inclined to believe it's legitimate. I'm also likely to trust certain organizations (EFF, etc)
Of course it's also a user interface issue. The average user wouldn't understand a single sentence I wrote above.