文章目录
  1. 1. 事件回顾
  2. 2. 问题原因
  3. 3. 总结

事件回顾

据国外多名网友反映,从 11 月 13 号开始,打开一些 Mac App Store 中下载的软件时,会出现 “已损坏”(Damaged)的提示。受此问题影响的软件较多,包括广为人知的 1Password、Dash、Byword 和 Tweetbot 等。Tweetbot 开发者 Paul Haddad 在 Twitter 上表示这个问题看起来与认证证书到期有关,并猜想目前证书使用 SHA256 加密,或许会和 OS X 老版本不兼容。

问题原因

微博上的 @webfrogs 分享的这篇文章中详细解答了这个问题产生的原因。我仔细读了一下,给大家分享一下。

每一个 Mac AppStore 下载的软件都有一个证书,证明该软件是合法购买并且没有被篡改的。在以前,该证书是通过 SHA-1 来进行散列验证的,SHA-1 是一种类似 MD5 的散列算法,比 MD5 更安全,但是计算起来更耗费 CPU 。

最近,苹果更改了证书的算法,使用 SHA-2 来进行散列验证的。这本来应该是对用户透明的,但是,苹果的质量部门却没有发现这个大 Bug。于是影响了大范围的用户。

具体影响的过程是:

  1. 首先,过期的证书在缓存中没有被清除,系统会要求用户重启来清除证书或重新获得新证书。
  2. 然后,一些应用明显地使用的是旧版的 OpenSSL 来验证购买凭证,然后你猜怎么着?旧版的 OpenSSL 不!支!持!SHA-2 算法!

由此我们就可以知道应该如何解决该问题了:

方案一:类似 XcodeGhost 事件那样,可以将那些使用旧版 OpenSSL 应用被苹果下架,要求它们升级到最新版的 OpenSSL,但是这个至少需要几天时间。

方案二:苹果将算法退回到 SHA-1。

于是,在愤怒的用户面前,苹果想了想,还是怂了,将算法退回(Roll back)到了 SHA-1。当然,想必他也会要求以后的应用必须使用新的 OpenSSL 库,然后确保没问题后再升级加密算法。

总结

总结起来就是:苹果傻逼了,搞了一个大 bug,然后自己回退代码了。这次事故苹果的质量保证部门应该犯有不可推卸的责任。

另外,我居然没受影响,原因是我没有升级 OS X 到最新版,所以逃过了一劫。不过我的一些搞 iOS 开发的小伙们可惨了,好多人挨个把软件重新下载了一遍。

乔布斯离世之后,苹果的软件质量变得越来越不稳定,加上创业太累,这让我这个不喜欢折腾的人越发喜欢等大家测试稳定之后再升级,希望这是我的错觉吧。