SHA-1 Deprecation: No Browser Left Behind
blog.cloudflare.com
blog.cloudflare.com
As the article states, 37 million visitors were using outdated crypto - that's 37 million potential sets of private information I could skim with a forged cert. Does protecting those users not matter?
Looking at the figures for who would get excluded (largest being 6%) that could sound pretty bad, but if that is a % of devices then it isn't so bad: most of them may be old mobile devices and people with them may have another machine (a laptop or desktop for instance) that they can access the functionality from.
Unfortunately for a commercial site excluding people, even just a fraction of a percent of them, this way might be something that is impossible to justify to the powers-that-be even with the "not wanting to enable people to do something insecure" argument.
On that note, does CloudFlare still allow for https (cloudflare issued ssl) to http (on the backend)?
Although maybe the precedent of serving content conditional on the cipher used might not be a good one to set.
The vulnerability of SHA-1 isn't that it's feasible to generate an input that will produce a checksum of your choice - it's that it's feasible to generate two inputs that will produce the same checksum. This is orders of magnitude easier, due to the to the birthday problem [2].
The SHA-1 the certificate authority generates to sign isn't just for the private key in the certificate; it's also for metadata like the URL and the powers the certificate grants. So to successfully exploit the weakness of SHA-1 you not only have to find a collision between good and evil certs, you also have to get a CA to sign the good cert without fiddling with the metadata and hence changing the SHA-1.
The proposal is that CAs should start systematically adding a random serial number to every cert, i.e. always fiddling with the metadata, so it's impossible to choose the SHA-1 the CA will sign. So even if you find a collision, you won't be able to get a cert issued that lets you exploit it.
For example, maybe I know that sha1("the public key for good.example.com is asdfqwerzxcv and it isn't a CA") = sha1("the public key for evil.example.com is rtyufghjcvbn and it is a CA") = 7d97e98f8af710c7e7fe703abc8f639e0ee507c4 and if I ask a CA to sign the good cert they give me a signature for 7d97e98f8af710c7e7fe703abc8f639e0ee507c4 and I can copy the signature onto the evil cert. With this proposal, the CA would instead only agree to sign "the public key for good.example.com is asdfqwerzxcv and it isn't a CA, and the CA's random number is 994782906" and because I can't control the random number, I can't control the SHA1 of the cert they issue to me.
Unfortunately CAs have a poor track record of complying with their own issuing policies, so some people doubt CAs could be relied on not to mess this up.
[1] https://blog.cloudflare.com/why-its-harder-to-forge-a-sha-1-... [2] https://en.wikipedia.org/wiki/Birthday_problem
Of course we'd like to protect all 100%, but this is about tradeoffs. Assuming downgrade attacks are as preventable as they claim, I think it's respectable that they're making this kind of effort to reduce the impact.
TLS 1.2 (RFC 5246) added support for SHA-2 in August 2008.
Android Froyo was apparently released in May 2010 without support for TLS 1.2 or SHA-2.
Why the delay?
Edit:
Just found this:
> Android has the technical capability of handling SHA-256 certificates right from version 1.0. In practice, some users may encounter issues with validating certificates that use cross certificates (these help chain certificates to alternate roots). 1.6 improved this issue for some users, with the issue being resolved as of version 2.2.
https://support.globalsign.com/customer/portal/articles/1499...
which helps explain the situation with SHA-2, but not the delay in implementing TLS 1.2.
Even Gingerbread has been abandoned in the last 18 months.
I was wondering why I could not download firefox from my work computer with the latest Chrome, it seems that not only older browsers have the problem with SHA-2 (hint: cooperate proxies).
The article claims SHA-1 is "increasingly vulnerable to potential collision attacks". Aka, theoretically vulnerable, not demonstrated yet. But there's all this frantic activity to fix this. For some reason it's interesting to a lot of people.
Here's why I'm confused. There have been very real, in the wild, documented MITM attacks against users due to malfeasance of certificate authorities, many of which are state actors. And yet, today, my copy of Firefox 43.0.1 still has a plethora of CAs it trusts (for all domains?). Including trusting known bad actors such as TÜRKTRUST.
I think that truly fixing the CA mess should be infinitely higher priority than worrying about SHA-1. Why doesn't my browser implement proper pinning for every site it visits? Okay, so Chrome pins some Google certificates. But 99% of the Internet is vulnerable to MITM and everybody just wrings their hands and promises eventual future fixes. Moxie Marlinspike has been calling attention to this for years.
But I don't follow the certificate pinning stuff carefully. Has the problem been solved? I've previously used Certificate Patrol, but that software had some serious limitations so I gave up on it.
Also there is another effort to fix the greater CA problem called Certificate Transparency. The idea is to have publicly verifiable logs of all certificates. It is not fully deployed yet, but it already helped to uncover misissuances of certificates.
Appart from that the policies for CA operations are much clearer and stricter these days.
I've recently written a 2-part article for LWN about all these issues: https://lwn.net/Articles/663875/ https://lwn.net/Articles/664385/
Such policies fail for a reason. You're not supposed to cater to the least common denominator. That way you'll slow your progress down much more than you would otherwise.
You can't support broken security for another decade just because 2% of the users will continue to use the tools that are broken. I'm willing to bet there will still be Windows XP users 10 years from now unless everyone just decides to leave them behind and purposely break their apps' support for it. And they'd be doing those guys a favor.
Here, it also teaches OEMs that they can continue to leave their devices on ancient versions of Android, because someone else (hint: like Cloudflare or Facebook) will solve that problem for them down the line. When instead, the people who bought the phones from Huawei or Xiaomi, or whoever sold those Android 2.3 devices last, can see their devices stopped working properly, curse those companies and buy from someone else next time.
That expression would be appropriate if CloudFlare decided to keep everyone on SHA-1 just because less than 2% of users couldn't use SHA-2. But that's not what they're planning to do. The 98% of users that support SHA-2 will be given SHA-2 certificates.
Your argument about Windows XP is moot because XP SP3 can handle SHA-2 certificates just fine. So even if we got rid of SHA-1 now, people will still be running XP SP3 10 years from now.
I used to have a Nexus One that ran Android 2.3. I didn't curse Google or HTC when it became too old to be useful. I don't think people will curse Huawei or Xiaomi, either. We're getting used to planned obsolescence, the exceptionally long life of Windows XP notwithstanding.
Is it the choice of the cloudflare client, or is it just cloudflare trying to make the internet hostile to the clients of my ISP?
I know computers are great at captchas, but now they are a serious usability problem.
Regarding the street sign vs. actually hard captchas, you always get the street sign/easy captcha if you are logged in with a non-new google account (One that has solved a lot of captchas).
Is that really the SV standard? In the European tech companies I have worked in, people look at you funny if you replace your laptop more often than every 18-24 months.
At my current company there's no policy, but every new hire is given a new MacBook Pro.
Given the normal costs of employing someone, a new laptop every year is a tiny fraction of the overall compensation so in general, it should be a non issue.
Anyway, each thing you buy, you have to track the depreciation of. You can sell the used item for a loss which means more paper work. Or you can pile the items up until they have fully depreciated. But, basically, it is a huge pain in the back end. If you have an accountant on staff who is already up to their eyeballs, it is not unusual for them to grumble very loudly about having to deal with the developers' obsession for new shiny toys.
If you have a company who is willing to throw money at problems to make them go away (don't try to track the equipment as an expense if you don't have the capacity to do so), then it won't be a problem. But as always, the people problem is far more difficult to solve than the technical problem. Personally, I cut startups some slack if they haven't got all their ducks in a row on small issues like this. YMMV.
Why is dragging everything and everyone onto the "2 months and you are out" treadmill of such great importance?
I can't let aging tech threaten my https connections! Have you even heard of MITM attacks? That data is just too important! I only 47 let of my most trusted javascript embeds be positioned to slurp data, change the contents of my pages and track my users!