SHA-1 Deprecation Update
blogs.windows.com
blogs.windows.com
Even if everyone were to somehow remove SHA1 instantly now, there is stuff that has (for example) been authenticated using SHA1-HMAC over the last year which will still be relevant for years. It's not hard to think of cases where spoofed messages from a user a year ago are useful to a malicious attacker.
But when Google did that everyone jumped on them for "trying to control the Internet" or something (because obviously trying to make the Internet adopt stronger security is a power tripping thing). I hope at least now they've seen the error in their ways.
Oh, and it turns out Schneier was actually too optimistic about the costs of SHA-1 collissions - by about an order of magnitude:
> 211 * 28.4 = 219.4 ~ $700K by 2015
https://www.schneier.com/blog/archives/2012/10/when_will_we_...
And given Apple's extremely vocal stance on privacy and security, and their 'sudden' addition of ATS, it wouldn't surprise me if ATS became a hard requirement in iOS 10.
That said, stop using SHA1.
If EC2 can collide SHA-1 with $75k of rented GPU time, imagine how trivial it is for an organization willing to buy $100k of dedicated GPU compute hardware to devote to colliding SHA-1 certificates. You don't even have to botnet once you have enough working capital.
Never mind how trivial it is for an organization like the NSA or GCH to do this sort of thing with their existing hardware.
Using a botnet for compute has opportunity cost attached to it. However, I have no idea about the usual prices when they are rented.
Besides, there are no X509 signature types that are a combination. You'd need to update browsers... and it would be much easier to just update your hash.
There's a bit of precedent in 3DES which just runs the same algorithm 3 times in a row... Which I guess you could do by using the same hash algorithm several times on the same input plus some fixed data or transform. So even though you can find two inputs a and b that h(a) = h(b), you might not be able to get h(f(a)) = h(f(b)) hmm? (Though I understand certain hash attacks will do exactly that for certain values of f.)
While the motivation to move to SHA-256 is motivated by SHA-1's susceptibility to collisions, the concern for many is that legacy systems may not support SHA-256, meaning older clients won't be able to connect to sites using SHA-256 signed certificates. In general as long as a client is on Windows XP SP3+ or OS X 10.5+ they'll be all set [1].
While this isn't a feature of X.509 certs, if you were to implement "Dual Hashes" (using SHA1/SHA2 as an example), you'd have a scenario where older operating systems may not be able to validate the newer hash and only the older, now insecure hash essentially defeating the purpose.
Changing a cert from SHA-1 to SHA-256 in most cases is a matter of reissuing or re-keying your certificate with your CA. Most CAs offer this for free, though some may charge.
--
Side note: In the case of document signatures, there is an XML signature standard called XAdES. There are different levels of XAdES signatures, the strongest being XAdES-A [2] where the -A is for "Archive". When you place a signature on a document, to make it valid long term (beyond the expiration date of your certificate) you can add a 3rd party timestamp and embed revocation data into the signature. But what happens when the hash algorithm used by the timestamp server is considered insecure? XAdES allows you to go back and add additional timestamps with newer hash algorithms to make this "future proof". Similar, but not quite the same as what you were suggesting.
--
[1] SHA-256 Compatibility: https://support.globalsign.com/customer/en/portal/articles/1...
[2] XAdES-A: http://www.w3.org/TR/XAdES/#Syntax_for_XAdES-A_form
Microsoft needs to stop wasting time with obvious stuff (like deprecating SHA-1, RC4, MD5, and all that), and be a little more aggressive with securing their products as well.
Apple can get away with ATS because for every service/site/app that doesn't bother to update, there are ten other apps waiting in the wings to steal your users. On Windows, there's little incentive for most people to upgrade, and strong existing disincentives for enterprises/schools/organizations.
However, I wish that Microsoft made it extremely clear in these announcements that root certificates are not subject to SHA-1 collision attacks. Certain people [1] have misunderstood the situation and removed trust for SHA-1 signed roots (and that project is definitely not alone). Mozilla's announcement [2] does draw a distinction, but it's quite easy to miss. CAs like Entrust are much more clear about this, since their business relies on it.
It is security theater [3] to tell users that they shouldn't use a SHA-1 signed root if they want their connections to be secure. Security vulnerabilities need to be very simply and clearly communicated -- otherwise you get solutions based on preconceived notions and simplistic "X is always BAD" thinking that do more harm than good.
In this instance, people have spent days debugging connectivity issues and opening tickets with service providers. And the reasoning behind the move is not based in fact -- Mozilla has NOT removed SHA1 certs from their trusted roots [4] and they have announced no timetable in which to do so. It's simply because someone heard "SHA-1 is bad" and acted accordingly.
The current SHA-1 deprecation push applies only to chain and end certificates, not to roots -- removing trust for SHA-1 signed roots is not necessary to prevent these sorts of attacks and it is much too soon to take that step in any environment that talks to systems which you don't control on the public Internet.
[1] http://certifiio.readthedocs.org/
[2] https://blog.mozilla.org/security/2015/10/20/continuing-to-p...
[3] https://github.com/certifi/python-certifi/issues/26#issuecom...
[4] https://mozillacaprogram.secure.force.com/CA/IncludedCACerti...
There are freestart collisions, but no actual collisions yet.
The issue being that sha1 collisions are so close that they are in the price range of criminal syndicates and nation states. Its better to deprecate sha1 before that happens.
But this is good news. Die SHA-1, die!
> We will continue to coordinate with other browser vendors to evaluate the impact of this timeline based on telemetry and current projections for feasibility of SHA-1 collisions
How does "supplier" vs "vendor" impede your understanding there?
https://developer.mozilla.org/en-US/docs/Glossary/Vendor_Pre...
Also replacing various biased, propaganda terms (fair point) with "corrected" biased, propaganda terms (less fair) is an interesting choice.
edit: typo
Regardless of usage in normal English, in the context of web browsers "Vendor" seem to be the correct terminology.
These companies/organizations all engage in financial or service transactions with each other even if they give their product away to end users for 'free'.