Apple OCSP 事件的事实与观点

Yachen Liu
Nov 16, 2020

在讨论中依然有很多人分不清「事实」和「观点」,把两者混为一谈,借着 Apple 在 OCSP 这事我想来展开讲讲,什么是事实什么是观点,以及为什么有些观点是不负责任的。

在这起争议中,「事实」部分有:

1. Apple 是否有能力阻止我使用某个 app?
有的,不仅可以通过 OCSP 吊销开发者证书实现,还可以通过 Notarization 机制定点封杀单个程序,这不是什么新闻,很早前就可以。

2. 作为用户可否绕过这个限制?
可以,macOS 和 iOS 不一样,有多种方法可以绕过该限制,最简单的方法是用 codesign 命令去掉签名再用 xattr 命令去除下载应用的标记。但是对于一般用户确实可能比较难。

3. 这个机制是否会泄漏我的隐私?
有风险,由于 Apple 直接使用了现成的 X509 实现去验证 app 证书,OCSP 请求是明文的,通过网络流量可以知道某个开发者名下的 App 被启动了。

但是,下载、安装、打开、编译、后台扫描等行为都可能触发 OCSP 请求,同时由于本地有缓存也不是每次打开应用都会触发 OCSP 请求。

另外该请求不带有任何设备或用户信息,要对应到个人行为追踪需要知道设备 IP 地址的对应关系才能在技术上可行。

4. OCSP 的隐私泄露风险是怎样来的?
OCSP 最早于 1999 年被写入 RFC 规范,当年不像现在对隐私问题如此看重,这是埋在协议中的一个隐患。

后来的 OCSP stapling 补充机制可以消灭这个隐患,但是由于这个设计仅适用于 Server/Client 结构,对于应用包签名的检查没有帮助。

以上内容皆可轻易查证,如果上述内容有误,可以被证据轻易的反驳,所以可称为事实。而以下内容则是「观点」:

1. Apple 可以通过这个机制窃取我的 app 使用隐私。

要做到这点,技术上的可行路线为:

1. 通过 iCloud 等带有个人标识的网络请求,建立用户 IP 和身份的对应表。
2. 通过 OCSP 请求的来源 IP 和请求的开发者证书序列号,查询对应表得到结果。

同时:IP 地址和用户的对应关系不稳定、启动 app 的行为和 OCSP 的请求对应关系不稳定、开发者证书和 app 对应关系不稳定。

费这么大力气,只能得到一个不太稳定的结果,然而事实上 iCloud 的同步数据是加密无法审查的,如果 Apple 想要违背隐私条款私自获取这个数据,直接走 iCloud 同步的数据流就行,犯得着绕这个圈子?

另外如果已经勾选了与 Apple 分享分析数据选项,app 使用情况本来就会被报告给 Apple,不差那么几个没选的人数据。

所以我的观点是:这个观点是很蠢的,一点都不合理。

2. Apple 想掌握对我设备的完全控制,以此榨取商业利益,比如排挤对手等。

要想完整的讨论这个问题,涉及另一个问题,即「以隐私和自由换取安全」,这个问题我放在后面来探讨,这里先假设已经接受了这个「以部分隐私和自由换取安全」这个前提。

这个假设并不是乱定的,Windows 同样有 Smart Screen 和证书机制去阻止程序运行,Chrome 也有 safe browsing 机制拦截网站。这些的机制的设计初衷都是为了保护设备和用户安全,阻止恶意程序的广泛传播而设计。

从历史上看,几乎没有见过大厂利用这些机制为自己谋取利益的先例。因为这样的事情一旦被报道,引发的是公司信用的崩塌,社会与媒体监督使得大厂不会轻举妄动。

另外一点就是用户是否具有选择权,目前 iOS 设备没有选择权,所有应用必须接受 Apple 的管辖,用户无权越过 Apple 的限制,我个人对这个事情有意见。但是这里讨论的是 macOS,如上文所提是有办法绕过的,Apple 也已在最新的声明中表示会加入更直接的选项。

3. Apple 在这件事上做的不够好。

确实是,Apple 偷懒了,把适用于 HTTPS 的验证的 X509 直接套用在了程序包的验证上,导致了潜在的隐私泄露,应该批评。

由于 Apple 没有可以自证清白的办法(他自己声明你也不会相信),我们无法直接获知事实,只能根据已知事实进行推测,所以得到了上述三项「观点」。

观点 1 我已经解释了为什么是愚蠢的,同样的动机下,Apple 完全有更优更隐蔽甚至更合法的方法去实现。
观点 2 属于偏向恶意的推测,不能完全否认掉这个可能性,因为这是对未来的预测。但是在 Apple 没有强大到可以无视公众监督这个前提下,观点 2 有些杞人忧天,一旦被发现利用该安全防护机制谋取私利,马上会被钉上历史的耻辱架。
观点 3 是最为合理的解释,Apple 已经发表了声明将尽快用加密信道传输 OCSP 吊销信息。

观点 3 对应的 Apple 的疏忽,应该进行的是批评。而观点 1 与 2 是非常严重的指控,在普世价值观下是邪恶的行为,应该谴责与惩罚。这两者有非常大的区别,是动机的不同。然而按照我上文的分析,观点 3 正确的概率远大于 1 和 2,以这样一种低概率成立的观点去做出如此严重的指控,是不负责任且不公平的。

这就是为什么我会对在公域表达观点 1 和 2 的人愤怒的原因,他们可以在没有确切「事实」的情况下,就随意做出这样严重的指控,胡搅是非获得自居「明白人」的优越感,全然不顾这种恶意指控所造成的恶果。

最后说一下「以部分隐私和自由换取安全」这个议题,由于这个事情涉及政治,很多人会条件反射非常敏感,但是在关于软件安全上的讨论和政治上的讨论确实是不能混为一谈的,安全性的提升这个结果毋庸置疑,我觉得问题的关键是,用户是否有选择的权利。

对于 MacBook,你可以:
1. 删掉 app 包签名继续用。
2. 关掉 SIP,tweak 系统禁用掉保护机制继续用。
3. 装 Windows/Linux 继续用。
4. 丢垃圾箱,买一台 PC 继续用。

在政治议题上,你可以:
1. 移民。
2. <敏感词>

所以这两件事根本不可以相提并论,我个人支持现在的数字签名与证书吊销制度,在不阻碍分发的前提下,确实保障了用户安全。

--

--