安全

设计上无需信任任何人

Crocodile 的设计让服务器、网络,甚至主持房间的朋友,都无法读取你说的话。本页说明哪些内容受到保护,哪些没有,以及如何实现。

受保护的内容

你的声音

只有通话中的人能听到。它在你的电脑上逐帧加密,然后才离开电脑。

你的消息

无论现在还是将来,只有空间或私信的成员才能读取。它们保存在成员的设备上,绝不保存在服务器上。

你的身份

只存在于你自己的设备上,以及持有你恢复密钥的人手中。它用系统钥匙串加密保存。

服务器能看到和看不到什么

任何把人连接起来的系统都不可能完全没有元数据。以下是 Crocodile 划定的确切界线。

服务器永远看不到

  • 你写的或说的内容:即使使用可选的中继或邮箱,内容也是端到端加密的。
  • 你的手机号、邮箱或密码:Crocodile 一样都不要。
  • 你的好友列表和屏蔽列表:它们经过加密,只有你的设备能读取。
  • 谁发送了好友请求:请求以不注明发送者的密封便笺传递。

服务器能看到的

  • 公开的个人资料、空间名称、频道列表、成员身份和设备名称。
  • 谁在线,以及谁在哪个语音房间。
  • 连接期间:你关注了谁的在线状态,以及你和谁开始私信或通话(不会保存,也不会与其他服务器共享)。
  • 连接应用所需的 IP 地址。房间的主持者也能看到成员的 IP 地址。

谁可能尝试,能得到什么

威胁模型列出可能的攻击者,以及每个攻击者能做和不能做的事。以下是我们威胁模型的摘要。

攻击者能够无法
监视网络的人看到你与哪些 IP 地址通信,以及通信多久。读取内容或元数据,或从数据包大小推断你说了什么。
现在记录,以后解密把你的加密流量保存很多年。用未来的量子计算机解密:每次密钥交换都是混合后量子的。
恶意服务器谎报谁在线,延迟或中断连接,记录元数据。读取内容,伪造个人资料、空间或邀请,替换某人的密钥,或插在两个应用之间。
中继或邮箱的运营者看到中继数据包的大小和时间,或谁给谁留了多少条消息。读取、修改或伪造它们。
主持房间的朋友看到成员的 IP 地址,以及谁在什么时候说话。做任何其他成员做不到的事:它的转发器只转发加密的数据包。
离开空间的人保留之前看到的内容。读取离开后说的任何内容:有人离开时密钥会被更换。
偷到密钥的人最多读取一个对话当前 30 分钟的密钥周期。读取更早的消息(密钥已删除)或之后的消息(新密钥)。
拿到你未锁定电脑的人做你能做的一切。请使用磁盘加密,并在另一台设备上移除丢失的设备。在你移除设备后接收新消息。

密码学

来自经过审计的开源库(@noble)的、经过充分研究的基础组件,以标准方式组合。

Ed25519每条记录、消息和连接提议上的签名
X25519 + ML-KEM-768每个成对秘密的混合后量子密钥交换
AES-256-GCM加密消息、语音帧和服务器连接
HKDF-SHA256密钥派生和只能向前的棘轮
DTLS-SRTP底层 WebRTC 的加密传输
Padmé · CBR Opus隐藏消息长度和说话模式

已知局限

我们宁愿你从我们这里听到这些。

  • 尚无独立审计。 设计和代码都是公开的,但还没有外部公司对其进行审计。在审计完成之前,当你的人身安全攸关时,请不要依赖 Crocodile。
  • 设备共享同一把账号密钥。 移除设备后,新的消息和密钥不会再发给它,但被盗的设备仍然可以以你的名义签名。每台设备独立的签名密钥已在计划中。
  • 部分元数据可见。 服务器能看到成员身份,以及你在连接期间与谁联系。减少这些是我们的计划之一。
  • 超大群组。 Crocodile 使用棘轮式发送者密钥而不是 MLS,因此群组越大,更换密钥的成本越高。针对超大空间的 MLS 已在计划中。
  • 密钥核对需要手动进行。 你可以和朋友比对安全码,但应用不会引导你这样做。

发现了问题?

请通过 GitHub 私下报告安全问题,以便在公开之前修复。