Psiphon 技术描述
2014/12/3 - 1 分钟阅读
更新: 2021/6/4
这是一篇更新,用以解答最近的两个问题:简而言之,Psiphon 是什么,它与 VPN 服务有何不同;以及,自技术设计文档上次更新以来发生了哪些变化。
Psiphon 3 是一个由数千台代理服务器组成的集中管理、地域分布多元的网络。我们的大部分基础设施托管在云提供商处。Psiphon 3 采用“单跳”架构,并在客户端与服务器之间提供安全的链路加密。我们为最主流的平台提供客户端:Windows、Android 和 iOS(处于 Alpha 测试阶段)。
Psiphon 在几个关键方面不同于标准的 VPN 服务:
- 我们采取策略向用户分发部分服务器子集,旨在为每个用户提供少数几个他们可访问的服务器,同时不对单个用户暴露整个网络。为了实现这一目标,我们网络的规模——尤其是我们网络地址的多样性——并不仅仅取决于我们的流量负载。
- 我们使用协议混淆来绕过 DPI 封锁。
Psiphon 的技术 设计文档 已经过时,以下是我们自 2011 年该项目启动以来所实施的重大技术变更的简要概述。
- 我们添加了 混淆 SSH 协议以防范 DPI 指纹识别。这种外观完全随机的协议在每台 Psiphon 服务器上都部署了唯一的混淆密钥。
- 我们在协议中添加了一个可选的 HTTP 前缀,以应对基于 DPI 的 HTTP 流量白名单限制。这个简单的前缀足以让基于正则表达式的 DPI(nDPI 和 l7-filter)将 Psiphon 流量归类为 HTTP;并且在我们部署它时足以击败实际的封锁对手。
- 我们添加了远程服务器列表,以扩充内置服务器和发现服务器的概念。虽然发现机制仅在连接到现有服务器时才会运行,但即使所有服务器都被封锁,也可以下载远程服务器列表。远程服务器列表分发在 S3 上,并通过 https://s3.amazonaws.com 访问,URL 中不包含可区分的存储桶名称。通过这种方式,对手若不封锁整个 S3 或实施 HTTPS 流量分析,就很难封锁我们的远程服务器列表。
- 电子邮件现在是一种主要的客户端传播机制。我们设有一个自动回复器,可根据用户发送到的电子邮件地址,返回指向特定赞助商/频道的定制 Psiphon 客户端的链接和附件。
- 我们在 2012 年发布了 Android 客户端。第一个版本包含一个基于 Android WebView 的内置浏览器。在 2012/2013 年,我们增加了对全设备隧道模式的支持,该模式将所有 Android 应用通过 Psiphon 进行隧道传输。我们提供了一种 iptables 全设备模式(适用于已 root 的 Android 2.2+ 设备);以及一种使用 Android VpnService 配合 tun2socks 的全设备模式(适用于任何 Android 4+ 设备)。新增的其他功能包括出口地区选择和代理链。
- 我们现在有一个处于 Alpha 测试阶段的 iOS 客户端。该应用带有内置浏览器。
- 我们的应用内反馈机制会向我们发送来自用户的消息和可选的诊断信息。该系统帮助我们排查了许多平台问题和封锁问题。
- 发现算法的变更:我们的发现算法作为网络持续优化流程的一部分不断演进。主要变更包括跨传播渠道共享发现服务器;以及引入一天中的时段作为维度。
- 连接算法的优化:我们的客户端现在在连接时会同时发起与多台服务器的连接,并保留“最佳”连接。这不仅有助于负载均衡,还减少了用户的等待时间,因为个别被封锁的服务器不会延误整个连接过程。
- 客户端自动升级得到了增强,支持使用增量下载以及使用带外下载站点(通过数字签名进行验证)。这些变更使得在发生封锁时分发新客户端变得更加可行。