Ask Slashdot: Has Gmail's SSL Certificate Changed, How Would We Know?
An anonymous reader writes "Recent reports from around the net suggest that SSL certificate chain for gmail has either changed this week, or has been widely compromised. Even less-than-obvious places to look for information, such as Google's Online Security Blog, are silent. The problem isn't specific to gmail, of course, which leads me to ask: What is the canonically-accepted out-of-band means by which a new SSL certificate's fingerprint may be communicated and/or verified by end users?"
Google can easily revoke certificates. They can even install what ever they want on my computer as a replacement for google chome with their automatic background updates. Don't worry about it, they own your computer and will take care of it for you.
Back in May, Google announced that they would be making changes to their SSL/TLS certificates in the coming months: http://googleonlinesecurity.blogspot.com/2013/05/changes-to-our-ssl-certificates.html
If you use Chrome, Google's SSL certificates are pinned, so that gives you some additional assurance.
Was the old cert due to expire? I have thought before that it would be nice if my browser etc gave me a warning like "Certificate has changed but wasn't due to expire for another 3 months". This still gives the bad guys a window where a subverted certificate could be slipped in without notice, but it closes the window a bit.
Also is it common to revoke the old certificate when replacing it, even if there is no reason to suspect the old certificate was compromised? If so that would be another warning that could be presented
That made me wonder about something at work recently. All the machines at work are owned by the organization. It would be trivial for them to add their own trusted signing authority, so they could MITM every SSL web site. It wouldn't be terribly hard to auto-generate "valid" SSL certs, and have it tagged as whoever you want the signing authority to be. All they'd have to do is add their own cert, in this case named "GeoTrust Global CA", and they'd have perfect control. To do it perfectly, they'd just need to query the site you're going to, and match up the signer's CN and sign the new fake cert, and you wouldn't know the difference. Who tracks the fingerprint of every cert for every site they go to? Well, I'm sure in this crowd, a few do.
It's good for network security, as they can pump everything out through a common proxy (or cluster of proxies) and inspect all the traffic for malicious intent (malware inbound, or organization secrets outbound). It's not good for privacy, if you were to visit your bank, gmail, etc.
As far as that goes, there are an awful lot of "trusted" signing authorities that come with any browser. I know we should probably trust them, because the authors of the browsers trust them. There's no really good reason to do so, other than if you don't, all SSL sites will warn that they may not be trustworthy.
I was considering a while back, how would *I* become my own signing authority, to be trusted by all browsers. I didn't find a good answer. An intermediary cert would solve it, but I didn't find how to accomplish that. Like, who do I throw money at to get one. Getting added to all browsers would be another even larger headache.
My thought on it was, technically it isn't hard to do. I could spend a day writing a very nice site, that would verify ownership and make whatever cert for the domain. Why can't I (or whoever) offer $5/yr, or $50/10yr single domain or wildcard cert? The code and infrastructure isn't very heavy.
Needless to say, since you haven't seen JWSmythe's Cheap Certs available, it never happened.
Serious? Seriousness is well above my pay grade.
Dont trust SSL. In fact, dont trust anything related to US companies considering the NSA-scandal.
From https://en.wikipedia.org/wiki/Convergence_%28SSL%29:
Now, everyone, let's use the tools available!
HELP MY ACCOUNT HAS BEEN HACKED BY AN ILLIBERAL ART STUDENT SET TO DESTROY THE INTERWEBZ!
Addons for web browsers (e,g. Certificate Patrol in Firefox, there are others) can clue you into certificate changes. Rather like Ghostery (which shows where stuff is loading from in a web page): it is an eye opener.
> What is the canonically-accepted out-of-band means by which a new SSL certificate's fingerprint may be communicated and/or verified by end users?"
Certificate authorities, and in turn, root certificate authorities.
As the NSA said in the 1970's ~NSA (“Wood Study”) "SIGINT sites were generally acceptable as long as they were invisible to the local population" page 393
from http://www2.gwu.edu/~nsarchiv/NSAEBB/NSAEBB441/docs/doc%201%202008-021%20Burr%20Release%20Document%201%20-%20Part%20A2.pdf
Welcome to the gift of free ENIGMA encoding with another rotor?
Domestic spying is now "Benign Information Gathering"
Certificate transparency is a new project initiated at least partly by Google's engineers, which intends to solve this problem with SSL trust model: http://www.certificate-transparency.org/
It uses an append only public log, similar to Bitcoin transaction log to make certificate information public.
This
I don't know what you mean by "this week".
The whole chain for all G services is in havoc for at least two weeks. Starting end of last week there's a mass roll-out of new certs. Everything is changing, including Google's "Google Internet Authority" cert that seems to act as an umbrella for the end-certs and used to be the one thing to use for cert pinning. It's now "Google Internet Authority G2".
Cert Patrol is flashing warnings as crazy those last weeks. Got me on high alert the first couple of times.
Certificates have an expiry date. They are supposed to be changed before the expiry date is reached. On a well managed system, you'll never see a certificate which has less than a week left of its validity period. Once the certificates are changed, it should be considered best practice to rotate the server key as well, so the new certificate will always be signing a different key from the previous certificate.
It would be nice to have more information to verify the correctness of the new certificate than just the existing CA certificate chain. I would like to see a small extension to SSL where the server can tell the client that any new certificate will be signed using the current certificate. When the client is told that, it can cache the current certificate and warn the user if it sees a new certificate lacking a chain from the old to the new certificate.
Do you care about the security of your wireless mouse?
I always wondered why SSH made just a fuzz about storing a site's certificate and warn of changes, but didn't put such a great emphasis on verifying host names or certification chains, but almost every other channel will just happily and silently accept a modified certificate.
Replacing that "This certificate is self-signed!" pop-up with a "This certificate is new or changed, please verify this MD5 hash on a trusted website: XX-YY-ZZ!" would probably increase security by an order of magnitude.
Also do this for background operations, like operating system fixes, virus scanner updates and may even MD5 downloads.
A few months ago, Google removed the ability in Chrome to staple a TLS/SSL certificate to your DNSSEC-signed DNS records: https://www.imperialviolet.org/2011/06/16/dnssecchrome.html
It was finally a way to get an HTTPS secured website without needing to go to a CA. And they removed it.
I just thought they were being incompetent as they usually were, but now I can't help but wonder if the NSA got on their backs about not being able to sign their own replacement certificate...
Wonder what the public key field is for?
It's just like any other single-point-of-failure in your network. You probably work with two telcom companies to make sure your website and/or company has network access. Why shouldn't you do the same for certificates. Buy one from a US CA, one from a Russian one, and one from a Chinese one, and if browsers could check to make sure *all* (or two out of the three, whatever) validate, unless they collude you should be pretty safe.
Even better if one of those can be a self-signed one. You can even exchange those keys over normal boring https, and then unless your commercial CA was already hacked at the time you distribute your self-signed one, your self-signed one will protect against your commercial CA being hacked in the future.
Another one that Certificate Patrol has flagged inthe past week is *.twimg.com, which appears to be a mess of certs from different CAs.
One subdomain ( s0 ) has switched from a DigiCert EV wildcard cert to a Verisign per-subdomain cert.
Another has gone from Verisign to Comodo.
Annoyingly twimg.com seems to be embedded across the Web...
I've been rejecting them all, given that Twitter provide no information on their site as to whether this was a planned change.
While we're at it some other addons like Perspectives or Convergence allow you to compare the cert you're receiving to the certs for the same site seen from multiple 3rd party servers across the world. This would allow you to confirm that not only that the certificate hasn't changed, but that the certificate you're seeing is the same one as *insert 3rd party unlikely to be MITMed the same time as you* is seeing.
Simple: SSH has never had its certificate system compromised, because it is de-central and requires individual approval anyways. The X.509 certificate system SSL uses is centralized and was likely compromised from the very start. So why warn users?
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
I always wondered why SSH made just a fuzz about storing a site's certificate and warn of changes, but didn't put such a great emphasis on verifying host names or certification chains, but almost every other channel will just happily and silently accept a modified certificate.
Replacing that "This certificate is self-signed!" pop-up with a "This certificate is new or changed, please verify this MD5 hash on a trusted website: XX-YY-ZZ!" would probably increase security by an order of magnitude.
Also do this for background operations, like operating system fixes, virus scanner updates and may even MD5 downloads.
Given that certificates expire, often yearly, do you really think that this would be a useful thing to do? Think about it for a minute...
The majority of people don't know much about certificates other than the nice little GUI change to show that a site is validated ok. If you start popping up dialog boxes telling them that a certificate has updated at fairly regular intervals what are they going to do? Check the certificate to make sure its valid, or just click the box away? If people get used to getting a message about certificates that basically says everything is ok there is more chance that they'll accept a true certificate warning message and end up compromised.
You may think me a tired, old, cynic. I'd have to disagree about the tired bit.
I can still read your email. It hasn't changed.
I operate a webserver, and I'd like to protect my users against SSL proxying. At the moment, all I can do is tell them to check my key's fingerprint against what the browser shows. But I'd really like to do this in JS. Is there any way to use JS to get the fingerprint string (that I can see by clicking on the padlock icon)? Then I could send that back to the server (from JS), and check if it's been tampered.
(A really effective evil proxy would be able to defeat this, but most corporate proxys aren't going to be able to parse my own JS and work out precisely how to transparently defeat it).
Maybe. If I skip the web browser and run: msmtp --serverinfo --host=smtp.gmail.com --tls=on --port=587 --tls-certcheck=off
I get:
Activation time: Tue Sep 10 00:54:47 2013
Expiration time: Wed Sep 10 00:54:47 2014
SHA1: 10:75:E1:8C:DF:93:15:3B:A1:8F:CD:FE:D3:11:79:D5:16:43:77:BC
That's a pretty recent change. If there was overlapping time between the activation of this one and the expiry of the last one... problem is, I don't have a time machine and can't find out what the last one was, nor when it was set to expire.
Googling (look, just because they can MITM every site, I don't think even NSA is doing DPI on every HTTP transaction so they can pipe every web page through 'sed s/valid-signature/fake-signature/g' :) around for prior signatures reveals:
As of June 19, 2010: Activation time: Thu Apr 22 21:02:45 2010
Expiration time: Fri Apr 22 21:12:45 2011
SHA1: 1A:6F:48:8F:BE:5B:FD:92:D8:12:30:F9:22:CE:84:49:B3:43:BD:2C
As of August 16, 2011: Activation time: Wed Feb 16 12:38:09 2011
Expiration time: Thu Feb 16 12:48:09 2012
SHA1: DB:A0:2A:07:00:F9:E3:23:7D:07:E7:52:3C:95:9D:E6:7E:12:54:3F
As of October 2, 2012, another user reports a change from:
SHA1: F3:92:AE:B4:28:FE:64:03:6F:E1:55:ED:71:9E:5F:F6:88:90:5A:57
to:
SHA1: 34:B4:3E:66:71:D8:AC:5A:47:76:7F:B7:CD:E4:31:08:F4:A5:DD:A8
but didn't include the dates.
There was also a 2013 hit for what looked like a tls_fingerprint of 52:99:F2:7F:82:4F:79:5A:71:1F:FF:D3:BE:22:7C:88:06:62:89:76 also without dates.
So on the one hand, this may simply be an innocuous expiry of a cert for smtp.google.com that's related to this May 2013 note about upcoming changes. On the other hand, there's nothing else that says what the old fingerprint was, when it expired, nor what the new fingerprint ought to be. And on the gripping hand, maybe the root (if you'll pardon the pun) cause of the problem is that if the the user has no tls_trust_file defined, and if Google changed intermediate certificate authority... umm, dammit, now even I'm confused. I think I sympathize with OP, though. There needs to be an easy-to-google, bing, apt-get, or git-init means by which of seeing the history of what's legit at any moment in time. It's up to the user to decide how many ISPs to run the search query from, or even to pick up the phone and call a friend in a non-US country and ask them to do the search and see if they get the same results.
Little if any talk about http://convergence.io/ — watch the linked bulletproof youtube about why SSL certs are so broken and why this package would be so awesome (if popular).
Imagine if you weren't allowed to use roads because a bus company complained about your driving 3 times. --skunkpussy
"Verify" that your browser's SSL is secure? Uh, user, you don't seem to understand. We'll look after that. Go back to browsing, now. That's a good user.
I use pop.gmail.com to connect, and seldom use any other logged-in google services. I make a point, even, of not storing 'logged in' google cookies in the browser I use.
Sylpheed is a great email client. The web is for web browsing, not ads alongside your email messages.
If you're paranoid about Man-In-The-Middle attacks or would just like to know whether your own corporation surveils your HTTPS browsing, you can use this checker: https://www.grc.com/fingerprints.htm to confirm whether your certificate fingerprints are the same.
Is it not the point of having a PKI, that I don't need to know if a certificate has changed or not? These are things that my browser should handle.
I don't believe it, what could ever possible be gained by Google compromising their email security?
We already know that all the powers that be have access to everyone's gmail account, through a Google made interface, making compromising the security irrelevant.
Troll is not a replacement for I disagree.
It's worst than that, google and many other big sites have multiple certificates, so when you go to one of those sites you never know what certificate you will get...
install certificate patrol on firefox (and https everywhere) and you will see how easy is to change certificates in google
Higuita
Posted on "Google Online Security Blog":
http://googleonlinesecurity.blogspot.fr/2013/05/changes-to-our-ssl-certificates.html
This encryption needs to be updated at times to make it even stronger, so this year our SSL services will undergo a series of certificate upgrades—specifically, all of our SSL certificates will be upgraded to 2048-bit keys by the end of 2013 :-)
From the comments:
http://googleonlinesecurity.blogspot.fr/2013/05/changes-to-our-ssl-certificates.html
This year our SSL services will undergo a series of certificate upgrades—specifically, all of our SSL certificates will be upgraded to 2048-bit keys by the end of 2013
Here are some examples of improper validation practices that could very well lead to the inability of client software to connect to Google using SSL after the upgrade:
- Matching the leaf certificate exactly (e.g. by hashing it)
- Matching any other certificate (e.g. Root or Intermediate signing certificate) exactly
- Hard-coding the expected Root certificate, especially in firmware. This is sometimes done based on assumptions like the following:
-- The Root Certificate of our chain will not change on short notice.
-- Google will always use Thawte as its Root CA.
-- Google will always use Equifax as its Root CA.
-- Google will always use one of a small number of Root CAs.
-- The certificate will always contain exactly the expected hostname in the Common Name field and therefore clients do not need to worry about SANs.
-- The certificate will always contain exactly the expected hostname in a SAN and therefore clients don't need to worry about wildcards.
Which is why, while I am at work, I will connect to my home network through either a VPN or ( if they're blocking the ports ) via SSH server listening on a port they can't block. ( 80 or 443 comes to mind )
I don't trust my company at all when it comes to the security of my accounts :D
Is it feasible to use the web with no trusted root CAs at all?
Could it have something to do with this? http://www.zdnet.com/google-tightening-ssl-security-in-chrome-7000021157/
http://googleonlinesecurity.blogspot.com/2013/05/changes-to-our-ssl-certificates.html
Yes, there is a simple solution.
Google should post, in a permanent, obvious location, a list of the SSL Certificates they are using along with the certificate fingerprints.
This list should be mirrored by other parties and the issuing CA to prevent the problem where someone with a forged cert can post their own list. They could also mirror the list in DNS TXT records.
This should be standard for every well-known site that uses SSL, and it should be a service provided automatically by every Certificate Authority.
I'm sick to death on non-transparent CAs. Publish the certs you sign. Publish your revocation lists. Stop assuming that no one understands what you do or that you don't have a responsibility beyond lining your own pockets.
Nice try hairy. You forget that there are some people on slashdot that are a lot more intelligent than you.