Wispr 元数据最小化:服务器几乎看不到你的任何信息
什么是元数据
元数据(Metadata)是"关于数据的数据"——不是消息内容本身,而是消息相关的描述信息。
举个例子:
| 项目 | 内容(服务器看不到) | 元数据(服务器可能看到) |
|---|---|---|
| 一条消息 | "明天下午三点在老地方见" | 发送时间、发送者 ID、接收者 ID、消息大小 |
| 一次通话 | 实际通话内容 | 通话时长、双方 ID、通话开始时间 |
| 一个文件 | PDF 里的内容 | 文件大小、发送时间、发送者 |
对隐私来说,元数据同样敏感——甚至在某些场景下比内容更危险。 比如"凌晨 3 点张三和李四通了 2 小时电话"这条元数据,就可能比具体说了什么更暴露。
Wispr 的元数据最小化策略
策略一:P2P 直连
消息和通话不经过 Wispr 服务器中转——服务器看不到消息发送时间、接收者、文件大小等元数据,因为消息根本没经过服务器。
策略二:Matrix ID 匿名身份
Basic 免费层用手机号注册时,Wispr 服务器知道你的手机号和 Matrix ID 的关联——这是 Basic 层的元数据泄露点。但:
- Matrix ID 层($49/年)不提供任何身份信息
- Wispr 服务器不知道 Matrix ID 对应的真实身份
- 服务器只看到一串随机代号和最小的会话协调信息
策略三:不持久化
Wispr 官方声称对任何有限的服务器侧元数据(比如 P2P NAT 穿透协助所需的临时信息)不做持久化存储——用完即删。
策略四:通讯录处理
当用户允许 Wispr 读取通讯录时:
- 原始手机号不会上传
- 通讯录中每个手机号做 SHA-256 哈希处理后上传
- 服务器只做哈希匹配,不知道原始手机号
不同身份层的元数据暴露
| 身份层 | Wispr 服务器能看到的元数据 |
|---|---|
| Basic 免费层(手机号) | 手机号、Matrix ID、注册时间、P2P 会话协调临时信息 |
| Basic 免费层(邮箱) | 邮箱、Matrix ID、注册时间、P2P 会话协调临时信息 |
| Matrix ID 付费层 | Matrix ID(随机代号)、注册时间、P2P 会话协调临时信息 |
| 任何层(注册后) | 有限的 P2P 会话协调信息(NAT 穿透用),用完即删 |
和 Signal / WhatsApp 的对比
| 应用 | 服务器能看到的元数据 |
|---|---|
| 手机号、消息发送/接收时间、群成员关系、通讯录 | |
| Signal | 注册时间、消息发送时间(最小化)、最后在线时间(可关闭) |
| Threema | 注册时间(不持久化更多元数据) |
| Wispr Matrix ID 层 | Matrix ID、注册时间、临时 NAT 穿透信息 |
| Wispr Basic 层 | 手机号 + 上述 |
元数据仍然可能暴露的场景
- 运营商侧:你的 ISP(移动/联通/电信)知道你在访问 Wispr 服务器的 IP 地址、连接时间、数据量——这和 Wispr 本身无关,是网络层的元数据暴露
- 中继节点:P2P 直连失败时消息走 relay——relay 知道消息来自哪个 IP、发往哪个 IP(但看不到内容)
- 设备层:手机上的其他 App(或系统)可能知道你在用 Wispr、你和谁聊过天——这是设备安全问题,不是 Wispr 的问题