威胁模型
谁能看到什么,以及什么能阻止他们
威胁模型只有像说明能击败的对手那样清楚地说明会输给的对手,才有用处。下表每一行列出该攻击者能看到什么、无法触及什么、现有的防御,以及仍然可能发生什么。
PrivaMesh 的设计针对的是想要你数据的运营方、读取一切公开内容的链上观察者,以及试图在添加联系人时截获的冒充者。它在全局时序分析者面前最薄弱,对已被攻破的设备则毫无防护。
| 攻击者 | 能看到 | 无法做到 | 防御 | 仍然可能 |
|---|---|---|---|---|
| 运营方 PrivaMesh | 某个账户为一次发送付了费,以及时间 | 读取消息、获知收件人、列出你的联系人或重建历史记录 | 没有账户数据库和消息存储;盲令牌将付费与发送脱钩 | 我们可能被迫证明某个账户在某个时间发送过内容 |
| RPC 提供商 | 你的 IP 地址、请求时间、你提交的交易 | 解密任何内容,或知道哪个一次性地址属于谁 | 端点可替换,也可自行托管 | 记录日志的提供商可以在网络层面拼出你何时活跃 |
| 链上观察者 | 填充后的密文、一次性地址、精确的交易时间 | 读取内容,或将同一对话中的两条消息关联起来 | 隐身地址、固定填充档位、可选掩护流量 | 关闭掩护流量时,你随时间变化的活动规律完全可见 |
| 全局时序分析者 | 同时看到整个网络中相互关联的活动 | 解密,或以密码学方式关联地址 | 开启时,以 3-10 分钟的随机间隔发送掩护流量 | 这是我们防御最弱的攻击者;能长期保存全部数据、观察整个网络的观察者,超出了任何按消息设计的方案所能解决的范围 |
| 拿着你已解锁手机的人 | 一切:明文、联系人、密钥 | 恢复 ratchet 已删除的消息 | 存储在受 Face ID 或 Touch ID 保护的钥匙串中;前向保密限制了对过去的影响;胁迫密码会清除账户而不是打开它 | 设备一旦被攻破,其上当前的一切都会暴露;胁迫密码只在你被要求解锁的那一刻有用——如果存储已经被提前复制则无济于事 |
| 拿到你助记词的人 | 你的身份,并可在今后冒充你 | 读取过去对话的 ratchet 部分——那些密钥是随机的,只存在于设备上 | 助记词从不离开你的设备,也从不传输 | 身份密钥、签名预密钥和 PQ 预密钥都由助记词派生,且不发布一次性预密钥,因此每个对话的开场消息都可以通过助记词加上链上永久保存的信封重新计算。也没有吊销机制 |
| 恶意联系人 | 你发给对方的一切,并可截图或转发 | 接触你的其他聊天对象,或读取其他对话 | 屏蔽,以及每个对话独立的密钥 | 没有任何密码学能阻止你的聊天对象本身不可信 |
| 添加联系人时的冒充者 | 验证成功时什么也看不到 | 用自己的密钥替换一个其密钥包已在链上签名的联系人 | 用钱包签名并发布到链上的预密钥包,使任何注册表都无法替换某个账户的密钥 | 没有可比对的安全码或指纹,因此确认账户属于目标本人完全只能在应用之外进行,且没有任何辅助 |
| Apple | 你的 Apple ID 购买了订阅 | 看到消息、联系人,或将购买与你的发送活动关联 | 盲令牌隔在购买与每一次发送之间 | Apple 知道你是 PrivaMesh 的用户,这在 iOS 上无法避免 |
| 网络层面的审查者 | 你连接过某个 Solana RPC 端点 | 读取或有选择地丢弃单条消息 | RPC 端点可替换,包括换成你自己运行的 | 封锁 Solana 或所有 RPC 会使投递完全中断 |
常见问题
PrivaMesh 最难防御的是什么?
持续监视整个网络并保存一切的全局攻击者。掩护流量提高了时序关联的成本,但无法击败这种规模的观察者,而链会为他们留下一份可供分析的永久记录。
如果我的设备被扣押,什么会暴露?
其上当前的一切:明文、联系人和密钥,除非设备已锁定且攻击者无法通过 Face ID。前向保密将损失限制在 ratchet 尚未删除的内容——旧消息已经无法恢复。如果你被迫亲自解锁,胁迫密码会清除账户而不是打开它。
PrivaMesh 会被强制交出我的数据吗?
可以被要求。可交出的只有某个账户在某个时间为一次发送付了费。没有消息内容、没有收件人、没有联系人列表、也没有账户记录,因为这些都不存储。
VPN 有用吗?
有用,可以防范 RPC 提供商和网络层面的观察者,也就是能看到你 IP 的两个攻击者。它对写入链上的内容没有任何影响,而那些内容本来就无法读取。