使用网络中继保护应用流量
Ready, set, relay: Protect app traffic with network relays
2023年6月5日
一句话判断
苹果把 iCloud Private Relay 背后的中继技术开放给了开发者——你可以为自己的 App 配置 MASQUE 中继,让服务器无法看到用户 IP 地址;也可以用中继替代企业 VPN 访问内部资源。
这场 Session 讲了什么
Session 介绍了苹果平台上网络中继(Network Relay)的两种使用方式。
技术背景。中继是一种特殊类型的代理服务器,使用 IETF 标准化的 MASQUE 和 Oblivious HTTP 协议。MASQUE 支持代理任意 TCP/UDP 连接,无需修改后端服务器。中继可以链接(chain)——第一个中继知道用户 IP 但不知道访问内容,第二个中继知道访问内容但不知道用户 IP,没有任何单方可以同时获得两者。这是 iCloud Private Relay 的核心技术。
方式一:为 App 配置中继保护隐私。你可以选择中继服务提供商,在你的 App 中配置网络连接通过中继路由。这样你的服务器只能看到中继的 IP 地址,无法获取用户的真实 IP。适用于处理敏感信息(健康数据、金融交易)的 App,或者你不希望服务器能关联用户 IP 和行为数据的场景。
方式二:用中继替代企业 VPN。企业员工可以用中继安全访问内部资源,无需配置传统 VPN。中继提供更好的用户体验(连接更快、不干扰其他网络流量),并且可以与现有的身份提供商集成。管理员通过声明式设备管理配置中继策略。
值得深挖的点
双中继的隐私模型:与单中继(只隐藏 IP)不同,苹果推荐的双中继架构确保没有任何一方能同时知道”你是谁”和”你在访问什么”。入口中继知道你的 IP 但加密了目标地址,出口中继知道你要访问哪里但只看到入口中继的 IP。这种设计消除了对任何单一方的信任需求。
MASQUE vs 传统 VPN 的区别:VPN 是全局隧道——所有流量都走同一条路。MASQUE 中继可以按 App 粒度配置——只有需要保护的流量走中继,其他流量直连。这减少了不必要的延迟和带宽消耗。
Oblivious HTTP:这是一种更轻量的中继协议,专门用于 HTTP 请求。它通过一个” oblivious relay”中继 HTTP 请求,目标服务器无法知道请求来自哪个客户端。适合 API 调用等不需要持久连接的场景。
代码片段
为 App 配置中继(概念示意):
import Network
// 创建通过中继的连接
let connection = NWConnection(
to: NWEndpoint.host("api.example.com", 443),
using: .tls
)
// 配置中继(具体 API 以文档为准)
// 中继配置指定入口和出口中继服务器
// 连接自动通过中继路由,后端服务器只看到中继 IP
// 对于简单的 HTTP 请求,可以使用 Oblivious HTTP
// 目标服务器无法将请求关联到特定用户
最佳实践
- 处理敏感数据的 App 应配置中继保护用户隐私
- 选择信誉良好的中继服务提供商
- 双中继架构提供最强隐私保护,单中继适合信任中继提供商的场景
- 企业场景中用中继替代 VPN 提升用户体验
- 测试中继连接的延迟和可靠性——不同提供商性能可能差异很大
还有什么值得关注
- MASQUE 协议在 iOS/macOS 上的完整 API
- Oblivious HTTP 的具体使用方式和限制
- 企业中继的声明式设备管理配置
- 中继与现有网络安全策略(如 Certificate Pinning)的兼容性