2026 年的所有 messenger 公司都说自己在乎你的隐私。营销页用的措辞都差不多 —— "端到端加密"、"我们不读你的消息"、"你的数据由你掌控"。这些话技术上多半都是真的。它们想表达的东西却完全不是一回事。
真正重要的区分是这一条:这家公司能不能"看到"它声称自己不去看的东西?
如果能,你拥有的是"承诺式隐私"。公司持有数据,他们口头保证不会拿它干什么坏事。你在同时信任他们当前的政策、当前的管理层、当前的法律暴露面、当前的安全水位 —— 四件事一起信任。
如果不能,你拥有的是"架构式隐私"。公司没有这份数据。想交也交不出来,传票也调不出来,就算被入侵也泄漏不了。承诺变得无关紧要 —— 没东西可承诺了。
几乎每家 messenger 都活在第一列里。我们很有意识地想把自己搬到第二列。
"承诺"能买到什么,以及它怎么破
一份承诺今天可以完美,明天可以一文不值。能把承诺变成空气的几种事:
- 一张传票。"我们承诺不分享你的数据"这句话敌不过"交出来,否则按藐视法庭处理"。承诺约束的是自愿披露;法庭命令是强制披露。
- 管理层更替。当年定政策的 CEO 退休。新 CEO 看到你的数据里有商业机会。政策改了。数据原本一直在那里。
- 被收购。公司被买走。新东家继承全部资产,包括数据。注册时承诺过的一切,现在重新可议价。
- 被入侵。承诺跟攻击者能不能读数据库毫无关系。他们就是读了。
- 辖区变化。公司总部迁移。新辖区的强制披露法律不一样。原本机密的东西,现在受你不知道的法律程序约束。
- 诚实的失误。新来的工程师加了一条日志语句,把本来应该保密的东西也记下来了。承诺没变,数据照漏。
这些都不是假设。过去十年内,每一种都已经在 messaging 公司身上发生过,有的还不止一次。
"架构"能买到什么 —— 它的破法不一样
架构层级的隐私不是一种感觉,是关于"什么数据结构存在 / 什么表里有什么列 / 什么函数能在什么数据上调用"的事实。如果你的手机号不在我们数据库里,法庭无法命令我们交出它。如果我们没有"你在哪些群"的记录,入侵也曝不出"你的群列表" —— 因为这个列表不存在。
这正是本系列其他文章一路走过的:
- 我们没有手机号 —— 这根线不存在。
- 我们没有群成员表 —— 这根线不存在。
- 我们没有角色表 —— 这根线不存在。
- 我们**解不了你发出去的消息** —— 即便传票、入侵、我们自己腐化三个一起发生也解不了。数学闭不上。
架构有它自己的失败模式:
- 实现错误。一个微妙的 bug 让架构在某处比声称的更漏。(我们测试这件事;但我们不无敌。)
- 在设备层面被绕过。手机被入侵就是被入侵 —— 我们这边的架构挡不住针对你本地存储的取证。(我们尽力 —— 设备端加密、推送通知不带内容 —— 但手机是你的,操作系统的安全水位我们改不动。)
- 被"我们确实知道的事"绕过。我们确实知道你的客户端在 T 时刻连了我们的集群。我们不知道加密通道里是什么,但**"连接发生过"这件事**是 metadata。这部分我们尽量缩到最小,但没办法做到完全零 —— 否则你压根收不到消息。
"承诺"仍然要做的部分
架构干掉了大多数本来需要承诺去守的数据。但不是全部。剩下还要靠承诺的部分:
- 连接事件我们会记日志 —— 没办法不记,运维和滥用处理需要。我们承诺这类日志生命周期短,且我们不跟任何外部标识符做关联查询(因为我们就没有外部标识符)。
- 服务端跑的代码是我们选的。今天你没法审计我们服务端的代码(我们还没开源)。这是一个真实的差距。我们正在缩小它。
- 我们不会加入会改变架构的功能。"我们下季度不会开始收集手机号"是一个承诺。今天的架构让它容易守;承诺则把"让它容易守"这件事固化下来。
信任的覆盖面变小了,但没有消失。剩下的承诺只针对那些架构本身没有让其变得不可能的事 —— 是一个很短的清单,而且我们的目标是让它继续缩。
那根 dial,你想拨到哪
你可以把任何 messenger 想象成一根 dial,在"架构"和"承诺"之间滑动。越靠近"承诺"那一端,你越是在信任这家公司;越靠近"架构"那一端,你越是在信任数学。
公司会变。数学不会。
这是本系列至此第 X 篇文章。我们一路走过的,都是某一处我们把 dial 往架构那一端拨过的具体场景。后面还会继续讲那些还没覆盖的。希望你读完能带走的一件事:下次某个 messenger 告诉你"我们重视隐私"时,你的下一句应该问"是用架构保证,还是用承诺保证?" —— 而且这个问题应该是可以验证的。
BlindPost