苹果如何检测 iPhone 上的 Sideload 应用
Apple 开发了多种机制来识别和管理 iOS 设备上的侧载应用。了解这些检测系统的工作原理,能帮助你更明智地选择侧载方法,并尽量减少对已安装应用的干扰。本指南将用通俗的语言介绍 Apple 的检测机制。
应用验证的核心:代码签名
iOS 上的每一个应用都必须经过加密签名。签名用于证明该应用来自特定主体,并且自签名以来未被篡改。Apple 在这个系统中充当信任的根基:最终,所有有效的 iOS 应用的签名证书都可以追溯到 Apple。
当你的 iPhone 启动一个应用时,iOS 会验证其签名。如果证书无效、已过期或已被吊销,应用就无法打开。这正是 Apple 用来控制 iOS 上可运行内容的基本机制。
证书的类型以及 Apple 如何监控它们
开发者证书
任何 Apple ID 都可以使用 Xcode 或类似工具为个人用途签名应用。免费账户最多可同时拥有 3 个活跃应用,签名有效期为 7 天;而付费的 Apple Developer 账户(每年 99 美元)每年每种类型最多可注册 100 台设备。这些证书都与你的账户绑定,Apple 能看到注册在该账户下的应用 ID 和设备。
企业证书
Apple 开发者企业计划(每年 299 美元)签发的证书是为企业内部分发应用而设计的。这类证书功能更强:允许在一个组织内向数量不限的设备分发。当它们被用于面向公众分发应用(许多代签/安装服务正是这么做的)时,就违反了 Apple 的企业计划条款,一旦 Apple 发现滥用行为,就会吊销相关证书。
Apple 并未公开其判定标准,但以下迹象通常被视为滥用:
- 分发给大量互不相关的设备
- 面向普通公众分发,而非仅限员工
- 安装速度过快,不符合典型的企业部署模式
当 Apple 检测到滥用行为时,会吊销该证书。此后,每台设备在检查证书状态时,所有用该证书签名的应用都会失效,即便是已经安装过该应用的设备也不例外。这就是为什么使用此类工具的用户会周期性遇到证书被吊销的情况。了解更多关于如何快速解决证书吊销问题的信息。
设备报告与遥测数据
在用户同意的情况下,Apple 会收集设备的诊断和使用数据(不过也有研究者质疑这些设置是否真正得到了严格遵守)。理论上,这类遥测数据可能包含应用安装和崩溃相关的信息,但 Apple 并未公开说明其具体会收集哪些与 sideloading 相关的数据。
如果你对此有所顾虑,可以在“设置 → 隐私与安全性 → 分析与改进”中关闭分析数据共享,以减少设备向 Apple 回传的信息。
应用公证与托管式 Sideloading 的发展趋势
在欧盟,依据《数字市场法》(Digital Markets Act)的要求,Apple 必须允许第三方应用商店存在。Apple 的实现方式采用了一套“公证”(notarization)系统:应用在通过替代应用市场分发之前,仍必须提交给 Apple 进行基础审核,该审核结合了自动化检测与人工审查。
这意味着,即便是在欧盟通过第三方商店分发的应用,Apple 依然能够对其保持可见性。未经过公证的应用,无法通过官方认可的欧盟替代应用市场渠道进行分发。
苹果如何识别并吊销证书
苹果并未公开其发现证书被滥用的方式,但可能的方法包括:
自动检测
苹果很可能使用自动化系统来标记那些分发量异常高、或分发到的设备不符合企业部署模式的证书。
用户举报
用户可以向苹果举报应用。如果某个证书关联的应用收到大量举报,该证书就会引起关注。
暗中排查
苹果很可能会对公开分发的侧载应用进行检查,以识别证书滥用和违反政策的行为。
法律手段
对于屡次或严重违规的开发者,苹果曾终止其开发者账号并吊销其证书。
应用证书被吊销后会发生什么
当苹果吊销了你所安装应用依赖的证书后:
- 一旦设备检测到该证书,应用就会停止启动
- 你会看到“无法验证应用”或“不再可用”的提示信息
- 只要你没有删除该应用,存储在其容器中的数据不会受到影响
- 你需要使用有效证书重新安装,才能再次使用该应用
这只是个小麻烦,并非灾难。解决方法请参阅我们的指南:修复 iPhone 上的“无法验证应用”错误。
将吊销影响降到最低
由于证书吊销的决定权在苹果手中,你无法完全避免,但可以通过以下方式将影响降到最低:
- 使用能在证书被吊销后快速更换证书的侧载工具
- 保持侧载应用本身为最新版本:更新通常会附带新证书
- 为你经常使用的应用备份数据
- 使用受大规模吊销影响较小的签名方式(个人开发者账号受影响的用户更少)
更宏观的视角
苹果的检测和吊销机制并非万无一失,但针对 Scarlet iOS 这类企业签名工具的吊销还会不断发生,而每次中断持续多久也各不相同。为了获得 App Store 之外的应用访问权限,是否值得接受这样的代价,取决于你自己的判断。
侧载社区通常是最先报告吊销情况的地方,所以当应用突然无法打开时,去那里看看很有必要。我们的Scarlet iOS 教程涵盖了常见的解决方法。