帐户恢复联系人安全性
无论是否打开了“高级数据保护”,用户最多可将其信任的五个人添加为帐户恢复联系人,以帮助恢复其 iCloud 帐户及数据,包括所有端对端加密数据。Apple 和恢复联系人均没有可独立恢复用户端对端加密 iCloud 数据的必要信息。
恢复联系人在设计时考虑到了用户隐私。Apple 无法得知用户选择的恢复联系人。只有当用户寻求联系人的帮助且联系人实际开始协助恢复后,Apple 服务器才会在尝试恢复的后期了解恢复联系人的相关信息。恢复完成后,该信息不会被保留。
恢复联系人安全流程
当用户设置帐户恢复联系人时,用于访问用户 iCloud 数据(包括端对端加密 CloudKit 数据)的密钥会使用强随机密钥进行加密,然后该随机密钥会被拆分并分别交给恢复联系人和 Apple。在恢复过程中,只有当这两份密钥重新结合时才能恢复原始密钥和访问用户的 iCloud 数据。
为了设置帐户恢复联系人,用户设备会与 Apple 服务器通信以上传 Apple 将持有的那份密钥信息。随后设备通过恢复联系人建立端对端对端加密的 CloudKit 容器,以共享恢复联系人所需要的部分。Apple 和恢复联系人也都会收到来自用户的相同授权密钥,供稍后恢复使用。该通信通过相互认证的 IDS 通道进行,用于邀请和接受恢复联系人。恢复联系人将接收的信息自动储存在其 iCloud 钥匙串中。Apple 无法访问 CloudKit 容器内容,也无法访问储存该信息的 iCloud 钥匙串。执行共享时,Apple 服务器仅查看恢复联系人的匿名 ID。
之后,当用户需要恢复其帐户及 iCloud 数据时,可以向其恢复联系人寻求帮助。届时恢复联系人的设备会生成一个恢复验证码,随后恢复联系人可将其以非网络方式(例如当面或打电话)提供给用户。用户随后在其设备上输入恢复验证码,以使用 SPAKE2+ 协议在设备间建立安全连接,Apple 无法访问该内容。此交互过程由 Apple 服务器协调,但 Apple 无法发起恢复流程。
在建立安全连接和完成所有必需的安全检查后,恢复联系人的设备会将它那一部分的密钥信息以及之前建立的授权密钥返回给提出恢复请求的用户。用户向 Apple 服务器出示此授权密钥,以获得授权访问 Apple 所持有的密钥信息。提供授权密钥还会授权重设帐户密码,以恢复帐户访问权限。
最后,用户设备将接收自 Apple 和帐户恢复联系人的密钥信息重新结合,然后将其用于解密和恢复 iCloud 数据。
多重保护措施各司其职,用于防止恢复联系人未经用户同意而发起恢复流程,其中包括针对用户帐户的活跃性检查。如果帐户正处于活跃使用状态,使用恢复联系人的恢复流程还会要求提供最近使用的设备密码或 iCloud 安全码。