谁能看到信封:Signal、SimpleX、Session 与 XMPP 的元数据对比
端到端加密回答的是一个问题——消息在传输途中能否被他人读取——却对另一个同样重要的隐性问题避而不谈:谁能看到一条消息发生过。投递元数据,比如连接时间、IP 地址、标识符和联系人模式,永远不会被加密,因为总得有些东西保持可读,流量才能被路由。
元数据涵盖什么
内容加密隐藏的是说了什么。它不隐藏的是:某台设备在某个时刻、从某个网络联系了某个服务,并交换了某个大小的负载。仅凭时间和流量规模就能勾画出谁与谁在何时通信;因此,每款即时通讯软件在元数据上的架构决策,与它的密码算法同样重要。Signal:sealed sender 与最小化留存
Signal 把服务器端的存储压到最低,并从 2018 年起使用 sealed sender,把发件人身份从每条消息的外层剥离;项目自己的比喻是一封"a blank space where the 'from' address used to be"的信,只需知道目的地即可投递。同一篇文章也承认了局限:对"traffic correlation via timing attacks and IP addresses"的抵抗仍在推进之中,而使用 Signal 的设备依然会向 Signal 的基础设施宣告自己的连接。 Signal 究竟留存什么,与其由营销文案说明,不如由法律披露来证明。它的政府请求页面公布所收法律要求的往来文书;在回应 2016 年一次大陪审团传票时,公司表示其能提供的唯一信息,是账户注册日期和用户最近一次连接服务的日期。2021 年答复的请求,以及 2026 年 3 月又一次大陪审团传票之后的答复,都在重复同一个主题:这些数据在 Signal 的服务器上根本不存在。剩下的,是任何客户端-服务器设计共有的残余:你何时连接、从何处连接。 一个结构性标识符依然存在:Signal 账户是绑定手机号创建的,尽管用户名如今可以让这个号码不出现在他人的联系人列表里。这把每个账户与真实世界中的某个事物绑在一起——当持有人不能与具体个人关联时,这一点至关重要。SimpleX:网络层面没有用户标识符
SimpleX 直接冲击标识符问题。它不用账户,而是通过按联系人划分的消息队列转发消息,队列地址是服务器唯一知道的东西。项目声称"SimpleX Chat has no user identifiers visible to the network";资料、联系人和消息只保存在客户端设备上。一次会话通常经过两个不同的中继,每个方向一个,因此没有任何单一运营者能看到双向流量。独立审查也存在:2022 年 11 月公布的 Trail of Bits 代码审计在密码学与网络库中发现了两个中等级别和两个低级别的问题——值得修复,但没有一个动摇无标识符模型。 SimpleX 服务器看到的是队列地址以及与它的连接——这正是项目此后投入私有路由、把发件人 IP 对中继运营者屏蔽的主要原因。与任何中继设计一样,安全余量也取决于网络规模:在冷门服务器上的队列,比淹没在繁忙流量中的队列更容易被关联。Session:在自家网络上的 onion 请求
Session 把手机号和邮箱从账户创建中移除:一个账户就是一个新生成的随机 ID 加恢复种子。消息以洋葱请求(onion requests)的形式穿过其去中心化网络,层层封装,用项目的话说"no single server ever knows a message's origin and destination"。投递经由五到七个节点组成的群组(swarm)完成,它们保存加密消息直到被取走。文档甚至宣称这使得"impossible for Session to track users' IP addresses";绝对化的声明值得保持警惕,因为一个较小的自营网络高度依赖其节点的正直性。带 OMEMO 的 XMPP:有加密、无元数据承诺
XMPP 是联邦式(federated)的例子。OMEMO 标准(XEP-0384)把 Signal 式的 double ratchet 加密带进 XMPP,支持多设备,并把服务器视为不可信的内容方。规范对边界很诚实:它不防护"metadata and traffic analysis"。在联邦式网络中,谁与谁通信,对托管账户的服务器以及两者之间的联邦路径都是可见的。因此,选择服务商既是一个可用性决定,同样是一个元数据决定:内容加密已成标准,元数据保护则取决于运营者。没有谁消除了什么
只有以下面这一点收尾,比较才算诚实:- Signal:服务能看到连接时间和 IP 地址,注册绑定手机号;sealed sender 隐藏发件人身份,而已公开的披露显示,可提供的数据是注册日期和最近连接日期。
- SimpleX:中继能看到队列地址及与其的连接;资料和消息留在设备上,网络层面不存在账户标识符。
- Session:随机账户 ID,onion 请求路由对单个节点隐藏来源与目的地,加密消息暂时存放在节点群组中。
- 带 OMEMO 的 XMPP:内容端到端加密,但服务器与联邦路径能看到谁在何时与谁通信。
- 四者皆是:ISP 或本地网络仍能看到设备在与该服务通信——若走隧道则是与 Tor 通信——而时间关联在任何地方都仍是未解问题。










