你的隧道把本地网络挡在流量之外。但它并没有消去另一端的公司——每个数据包在抵达开放互联网之前都要经过那家公司。这个位置既是商业模式,也是隐私问题。所以有用的提问不是服务商能否看到你,而是它看到什么、能命名什么、保留什么。

信任究竟转移到了哪里

加密从你的设备一直延伸到服务商的服务器,而这段外层链路就是本地网络能看到的全部。服务商握着链路的另一端,因此它会解开隧道并把你的数据包转发出去。这里并无缺陷;这正是你所购买服务的定义。信任并没有消失,而是从本地运营商转移到了出口运营商。

处在这个位置上,它能知道你从哪个地址接入、何时连上、大致传了多少数据、访问了哪些目的地。这些都不需要读取你的消息,分类的意义正在于此。服务商之间真正有意思的差别,在于这些观察之后被如何处理。

出口不得不处理的东西

按出口能否可靠看到来给这些类别排序。没有一行需要破解加密,而每一行在「能否避免」上的答案并不相同。

CategoryVisible at the exitWhy
Your public addressAlwaysIt is the address the tunnel arrives from
Connection times and volumeAlwaysAccounting data, not content
Destination IP addressesAlwaysThe exit has to route the packets
HTTPS hostname (SNI)Normally, unless ECH is usedSent in the clear in the TLS ClientHello
DNS namesOnly if DNS is plaintextDoH or DoT hides the query; plaintext is readable by the forwarder
Page paths and form contentsNot normallyProtected by the destination site's TLS session

第四行正是多数心智模型会漏掉的。现代浏览器把站点名放进 ClientHello,也就是 TLS 握手的第一条消息;即便每个 DNS 查询都被端到端加密,这个字段在出口处依然可读。除非协商了 Encrypted Client Hello,否则站名会与目的地址一起明文出现。加密 DNS 改变的是谁看到查询,而不是谁看到站名。

较旧的连接在证书上也是如此:TLS 1.3 加密服务器证书,而 TLS 1.2 握手可能把站名暴露给记录流量的观察者。两者都是传输层事实,而非服务商政策。

TLS 覆盖了什么,没覆盖什么

网站提供 HTTPS 时,你的浏览器与那个网站的端点建立 TLS 连接,而不是与 VPN 服务器建立连接。服务商转发加密记录,并得知目的地址、时间与大致大小。除非启用 ECH,站名会随 ClientHello 一起发出;无论哪种情况,页面正文都保持加密。意料之外的根证书会改变这条边界,所以证书警告值得认真对待。

明文 HTTP 在出口之外没有这层保护。隧道保护的是到服务商的那一段,之后请求就与没有 VPN 时完全一样地发出。ECH 也修不好这一点,因为它保护的是名称,而不是内容。

留存是与可见性不同的另一个问题

运营商可以在内存中处理连接数据而什么都不留,也可以只留一个子集,并准确地说明它并非浏览历史。读「无日志」声明要按类别读,而不是按口号读:连接记录、时间戳、总量、目的地数据、账户标识与客服消息都算在内。服务商可以诚实地不保留浏览日志,同时保留账户记录与运行服务所需的元数据。可见性并不能告诉你是哪一类被存了下来。

审计是关于系统和它所覆盖时间窗口的证据,而开源客户端代码描述的是客户端,不是服务器。两者都有用,但都不能代表出口背后的每一个存储系统。要问审计的范围,而不是它的徽章。

区分服务商的问题

问保留什么、保留多久、谁能调取。问出口由谁运营,因为一份目录条目、一个应用开发者、一个运行某台服务器的人,可能是三个不同的主体。问 DNS 如何处理、你用的路径是否支持 ECH,因为明文 ClientHello 即使没有 DNS 查询也会暴露站名。问遇到法律请求时会怎样,并把答案读成对能力的描述,而不是对意图的承诺。

EFF 的VPN 挑选指南是这些问题的一份合理清单,它是框架而不是对任何服务的判决。营销页面不是留存政策。以上都不会让 VPN 变得无用;它改变的是你必须信任谁,以及信任来做什么。

相关文章