icloud private relay
https://www.apple.com/privacy/docs/iCloud_Private_Relay_Overview_Dec2021.PDF
https://blog.cloudflare.com/icloud-private-relay
ios15 推出。
不是VPN,使用2层relay。 - device使用relay2的公钥加密website name,relay1无法知道website name。 - device通过relay1代理与relay2的连接,relay2无法知道device IP address。 - relay2代理与website的连接。
选择relay2的address: - 直接使用device ip所在的country & timezone选择对应的relay2 address。 - Device从relay1获取geohash,基于geohash选择relay2 address。
使用MASQUE中的SECURE PROXYING实现proxying connections。
device校验TLS hanshake中提供的raw public key,并与预设内容进行比较,确认proxy可信。——TLS ESNI。
Relay1发tls client hello,relay2解密website name后连接website,website返回tls handshake。
device使用 oDoH 对relay1隐藏domain name。——ODoH查询结果用于tls esni。
隐私风险:device从relay1获得device自身的public subnew,用于odns查询时提供给最终的dns server。——此时,相当于泄漏client subnet到dns权威。
Safari & HTTP 无需使用oDoH,直接通过proxy连接,而非device。
Device -> relay1 :采用account attestation认证,再分发anonymous token(RSA blind signature)—— privacy pass。
通过token限制访问。
安全分析
ESNI可能被屏蔽,或反向识别。
往odoh里加client subnet的隐私风险。
geohash的风险(较小),仅用于select server。
Relay1 + relay2 合谋风险。