消息推送在审查规避中的应用
之前一直很好奇,为啥没有挂代理的时候,iPhone能够接收到一些软件的推送,这篇发表于FOCI '23的文章给出了答案。
密西根大学 | 消息推送在审查规避中的应用
原文标题:The Use of Push Notification in Censorship Circumvention
原文作者:Diwen Xue and Roya Ensaf
原文链接:https://petsymposium.org/foci/2023/foci-2023-0009.php
发表会议:FOCI, 2023
1、引言
本文基于消息推送服务(Push Notification)应用范围广、基数大、封禁附加损失高的特点,提出了PushRSS
和PushProxy
两种审查规避系统。其中PushRSS借鉴RSS的思想,通过消息推送网络规避流量审查,解决了服务器IP被封禁的问题;PushProxy利用消息推送服务传输下行流量,通过额外通道传输上行流量,通过将上下行流量解耦规避流量审查。
2、消息推送服务
为了使用户能够随时接收到目标服务器推送的信息,需要用户与服务器建立长时间的稳定连接,而这又极大消耗了服务器的资源,因此便发展出了诸如Google Firebase Cloud Messaging(GCM)、Apple Push Notification Service(APNS)、Microsoft Push Notification Service(MPNS)等一系列的消息推送服务,包括日常生活中的手机、电脑各种应用的通知,都是基于此。客户端仅需与消息推送服务器建立持久的连接,从而释放了服务器资源。服务器推送通知时,仅需向消息推送服务器发送请求,消息推送服务器代替服务器向客户端推送信息,具体工作流如上图所示。
3、PushRSS
传统的RSS是客户端订阅服务端的RSS链接,然后定时爬取RSS链接中的内容,实质上还是客户端与服务端直接相连,若审查机构发现流量异常,直接封禁服务端的IP即可阻断流量访问,这显然不满足规避流量审查的要求。因此,本文基于此,在客户端与服务端之间添加了信息推送服务器,借助信息推送网络隐藏服务器的IP,及时服务器IP被封禁,客户端仍然能够通过信息推送网络获取服务端发送的数据。
在该模式下,客户端一旦被安装,便会联系消息推送服务提供商(如APNS、FCM),获取设备tokens,然后将自身设备的tokens以及订阅的RSS链接一同发送至PushRSS服务端,此时如果客户端不能直接与服务端通信,则可选用邮件等带外传输方式,PushRSS服务端收到客户端发来的内容后,会定期更新客户端的订阅链接,并获取订阅链接中的内容,解析后通过消息推送网络发送至客户端。具体工作流程如上图所示。
该模式的缺点也显而易见,既用户缺少持久可靠的上行流量通道,且下行流量的内容依赖RSS订阅链接,传输速度也受消息推送服务提供商的限制。
4、PushProxy
为了应对流量审查攻击,PushProxy将上行与下行流量解耦,使得攻击者难以捕获完整的流量序列,从而不能实施流量审查攻击。不同于之前的解耦手段,PushProxy利用消息推送服务传输下行流量,具有更强的抗审查能力。
PushProxy的客户端和服务端在初始时要进行一些数据协商,如tokens等,这都由FCM等消息推送服务产生和协商。PushProxy的下行流量同样通过FCM等消息推送网络进行传输,而上行流量通过XOR混淆的UDP包传输,当然也可选用其他自定义方式,具体工作流如上图所示。
该模式下,由于传输上行流量的需求,PushProxy客户端需要与其服务端直接相连,这一定程度上增加了被封锁的概率,此外消息推送服务是尽最大努力交付,需要额外机制保证数据的可靠性。
5、协议评估
5.1 可用性
本文采用Hyperquack[1]标准来进行可用性评估,研究从2022年6月持续至2023年1月,覆盖1632个自治系统(AS),共收集约555万次测量数据,结果如下。
结果表明,全球大多数AS未对FCM连接进行干预,仅个别AS如AS5607、AS1930和AS786出现封锁行为,但这并非针对FCM。中国则较为特殊,多个AS在2022年9月22日至30日期间对FCM及其它Google服务进行大面积封锁,尤其在中共二十大召开前夕。不过,FCM的封锁于10月1日被解除,其它Google子域名仍被封锁中,这说明审查机构可能为了避免影响依赖FCM的应用功能,而对其做出了有针对性的解封。
5.2 性能
本文通过带宽、首字节时间、昼夜变化3个指标对协议性能进行对比评估,结果如下。
在带宽测试中,Shadowsocks和OpenVPN的下载时间中位数分别为2.70和9.68,PushProxy下载的初始时间为94.92秒,增加并行消息推送接收器数量(N从10增加至100)后,下载时间缩短至16.46秒。
在首字节到达时间方面,PushProxy略慢于Shadowsocks和OpenVPN,分别为572ms、492ms和508ms。
在昼夜变化方面,Shadowsocks在晚高峰期间性能明显下降,而PushProxy在此时段仍保持稳定。
References
[1] Sundara Raman, Ram, et al. "Censored planet: An internet-wide, longitudinal censorship observatory." proceedings of the 2020 ACM SIGSAC conference on computer and communications security. 2020.