接力安全性
无论是从一台设备传送到另一台设备,还是在原生 App 与网站之间传送,甚至是传送较大数据,Apple 都可以安全地处理“接力”。
“接力”如何安全工作
当用户的 iOS、iPadOS 和 macOS 设备彼此接近时,用户可以使用“接力”功能,自动将正在处理的内容从一台设备传送到另一台设备。用户可以使用“接力”功能来切换设备并立即继续工作。
当用户在第二台支持“接力”功能的设备上登录 iCloud 时,两台设备使用 APNs 建立频段外的低功耗蓝牙 (BLE) 4.2 配对。单条信息采用与 iMessage 信息中的信息类似的方式加密。设备配对后,每台设备都会生成对称的 256 位 AES 密钥,并储存在设备的钥匙串中。此密钥可加密和认证 BLE 广播。BLE 广播会在 GCM 模式下使用 AES256 并采用重放保护措施,将设备的当前活动传递给其他已配对的 iCloud 设备。
设备首次接收到来自新密钥的广播时,它会建立与发起设备之间的 BLE 连接并交换广播加密密钥。该连接使用标准的 BLE 4.2 加密进行保护,而且单个信息也会被加密(与 iMessage 信息的加密方式类似)。在某些情况下,这些信息会使用 APNs 发送,而不是 BLE。活动负载采用与 iMessage 信息相同的方式进行保护和传输。
在原生 App 和网站之间使用“接力”功能
“接力”功能可允许原生 iOS、iPadOS 或 macOS App 恢复由 App 开发者合法控制域中的网页上的用户活动。它还允许原生 App 的用户活动在网页浏览器中继续进行。
为帮助阻止原生 App 要求继续访问不是由其开发者控制的网站,App 必须证明对其要继续访问的网站域具有合法控制权。对网站域的控制是使用共享的网站凭证所使用的机制来建立。有关详细信息,请参阅 App 访问已存储密码的权限。在允许 App 接受使用“接力”功能的用户活动前,系统必须验证 App 的域名控制。
使用“接力”功能传送的网页来源可以是任何采用了“接力” API 的浏览器。当用户浏览网页时,系统会使用加密的“接力”广播字节来广播网页的域名。只有用户的其他设备能够解密该广播字节。
在接收设备上,系统会检测到安装的原生 App 接受了来自已经广播域名的“接力”,并将该原生 App 图标显示为“接力”选项。启动后,原生 App 会接收完整的 URL 以及网页标题。浏览器中的其他信息不会被传送到原生 App。
相反,如果“接力”接收设备未安装相同的原生 App,原生 App 可能会指定回退 URL。如果出现这种情况,系统会将用户的默认浏览器显示为“接力” App 选项(如果该浏览器采用了“接力”API)。请求使用“接力”时,系统会启动浏览器并使用来源 App 提供的回退 URL。回退 URL 并不一定要限制为由原生 App 开发者控制的域名。
使用“接力”传送较大的数据
除了使用“接力”的基本功能外,一些 App 可能会选择使用支持发送大量数据(通过 Apple 开创的点对点无线局域网技术,与“隔空投送”类似)的 API。例如,“邮件” App 使用这些 API 来支持通过“接力”传送可能包含较大附件的邮件草稿。
App 使用这些 API 时,两台设备间开始交换,如同使用“接力”传送一样。但在使用低功耗蓝牙 (BLE) 收到初始负载后,接收设备会通过无线局域网发起新的连接。此连接会使用 TLS 加密,并通过由 iCloud 钥匙串共享的身份派生信任。身份证书中的身份标识会针对每位用户的身份进行验证。其他负载数据会通过此加密的连接进行发送,直到传输完成。
通用剪贴板
“通用剪贴板”利用“接力”在设备间安全传输剪贴板的内容,使用户可以在一台设备上拷贝,然后粘贴到另一台设备上。内容与其他“接力”数据采用同样的方式进行保护,并默认使用“通用剪贴板”共享,除非 App 开发者选择不允许共享。
不论用户是否已将剪贴板粘贴到 App 中,App 都可以访问剪贴板数据。通过“通用剪贴板”,此类数据访问会扩展到用户其他设备上的 App(在 iCloud 登录时建立)。