架构
每个组件及其能看到的内容
隐私承诺的价值只取决于读者能核实多少。这是系统所有组成部分的完整清单:谁运营每一部分,每一部分能观察到什么——包括我们自己运行的那一台机器。
PrivaMesh 没有账户数据库,也没有消息存储。但它确实有一个为每笔交易支付费用的手续费服务、一个由第三方运营的 RPC 端点,以及一条永久存储密文的公链。三者都列在下面,并注明各自能观察到什么。
消息如何传递
01
你的 iPhone
加密并填充消息,推导出一次性地址
02
手续费服务
支付网络手续费,消耗一个盲令牌
03
RPC 端点
将交易提交到网络
04
Solana
把填充后的密文送到一次性地址
05
对方的 iPhone
扫描属于自己的一次性地址并在本地解密
每个组件能观察到什么
| 组件 | 运营方 | 能看到什么 | 存储什么 | 可替换 |
|---|---|---|---|---|
| iOS 客户端明文和密钥唯一存在的地方。密钥保存在受 Face ID 保护的 iOS 钥匙串中,从不同步到 iCloud。 | 你 | 明文、密钥、联系人 | 全部,仅在设备上 | 是 |
| 手续费服务代付网络手续费,让你永远不必持有 SOL——这是我们运行的唯一一台机器。发送通过不含身份信息的匿名盲令牌认证,因此该服务无法将一次发送与购买、与另一次发送或与账户关联起来。旧的账户路径仍然存在,用于发布公开可搜索的昵称,而昵称本身就具有识别性。其源代码公开,位于与客户端同一仓库的 relay/ 目录下。 | PrivaMesh | 一个有效且未使用的盲令牌,以及要代付的交易——匿名路径上没有账户 | 仅运行日志——没有明文,没有收件人 | 部分 |
| Solana RPC可替换,也可自行托管。这是最有可能看到你网络层活动的组件,也是我们最难控制的部分。 | 第三方提供商 | 你的 IP 地址、请求时间、你提交的交易 | 取决于该提供商选择记录什么 | 是 |
| Solana 网络传输层。写入这里的一切都是发往一次性密钥的填充密文,但会被永久写入。 | 没有特定的人 | 密文、一次性地址、交易时间 | 永久且公开 | 否 |
| StoreKitiOS 应用内购买无法绕开。正是盲令牌让购买无法与你的消息活动关联起来。 | Apple | 你的购买记录和 Apple ID | 依照 Apple 的政策 | 否 |
为什么要有手续费服务
每条消息都是一笔 Solana 交易,而交易需要支付网络手续费。让用户为了发消息而持有 SOL,产品会更差,隐私也更差,因为给钱包充值本身就是可被关联的行为。所以由一个服务代付手续费。
这就引出一个显而易见的问题:付费方会知道谁在和谁说话吗?不会。应用只需证明一次订阅,就会获得一批 RSA 盲签名;每次发送消耗一个令牌。服务可以验证令牌有效且未被使用,但无法将它与购买、与其他令牌或与账户关联起来——匿名路径根本不发送账户。旧的账户路径只保留用于发布公开可搜索的昵称,而昵称本身就具有识别性。
这个设计解决不了什么
RPC 端点能看到你的 IP 和请求时间。链会永久存储密文。上面的任何机制都无法隐藏这些,所以两者都列在表中,这也是限制页面存在的原因。如果你的威胁模型包括网络层面的观察者,请将 PrivaMesh 与 VPN 或 Tor 搭配使用,并自行托管 RPC。
常见问题
PrivaMesh 运行服务器吗?
一台。手续费服务为每笔交易代付 Solana 网络手续费,让你永远不必持有 SOL。在匿名路径上,它只看到一个有效且未使用的盲令牌和要代付的交易——没有账户、没有明文、没有收件人。没有账户数据库,也没有消息存储。
RPC 提供商能看到什么?
你的 IP 地址、请求时间以及你提交的交易。它是对你网络层活动看得最清楚的组件,因此可以替换,也可以自行托管。
如果手续费服务宕机会怎样?
在它恢复或你自己支付交易费用之前,发送将无法进行。你的身份、联系人和消息历史不受影响——它们都在你的设备上,不依赖我们运行的任何东西。
Apple 能看到我在给谁发消息吗?
Apple 能看到你购买了订阅以及使用的是哪个 Apple ID。它看不到你的消息或联系人。正是盲令牌让购买无法与你的发送活动关联起来。