你的应用
保存你的密钥,加密你发送的一切,解密你收到的一切。你的消息记录就保存在这里,别处都没有。
知道: 你收发的一切:这本来就是你的。
工作原理
用通俗的语言带你了解架构和协议。每一章都从核心思路讲起;展开“深入底层”可查看技术细节。
章节 1
Crocodile 对工作进行了分工:只有和你对话的人能看到你说的话,而由陌生人运行的部分永远看不到。
保存你的密钥,加密你发送的一切,解密你收到的一切。你的消息记录就保存在这里,别处都没有。
知道: 你收发的一切:这本来就是你的。
在每个语音房间或空间里,会选出一位成员的应用,把加密流量转发给其他人。它和其他人一样,只是一名成员。
知道: 成员的 IP 地址和谁在说话,但永远不知道说了什么。
由志愿者运行的交换台:保存个人资料和空间,告知谁在线,并选出主持者。它们共同组成一个网络。
知道: 个人资料、成员身份和谁在线,但永远不知道说了什么。
协调服务器的电话簿,让新应用知道从哪里开始。它对人一无所知。
知道: 只知道服务器列表。
章节 2
安装 Crocodile 时,你的应用会在电脑上生成一个 32 字节的随机秘密。由它产生两把密钥:一把用于为你发布的内容签名,另一把用于接收加密消息。你的用户 ID 是签名密钥的指纹。
由于 ID 是从密钥计算出来的,服务器无法换上另一把密钥来冒充你。没有可被窃取的密码,也没有可以骗过客服来执行的重置。这个秘密会作为恢复密钥向你显示一次,并用系统钥匙串加密保存在你的设备上。
K7QF-M2XA-…-9PD4Ed25519X25519 + ML-KEM-768hash(🔑) → 4gq7…xk2m章节 3
你的应用从目录下载协调服务器列表,测量每台服务器的响应速度,并连接最快的一台。第二台作为备用;如果你的服务器宕机,应用会立即切换。
在一切开始之前,服务器先证明自己的身份,应用和服务器为这次连接协商密钥。此后,即使是它们交换的元数据,也会在 HTTPS 之上再加密一层,因此在家用服务器上运行也同样安全。
章节 4
你的个人资料、你创建的空间、空间的邀请以及成员名单,都是由作者签名的小记录。服务器保存并分享它们,每台服务器和每个应用都会验证签名。服务器可以拒绝转发某条记录,但无法修改或捏造它。
协调服务器会互相发现并组成一个网络。每条记录根据哈希保存在几台服务器上,这些服务器相互复制变更,因此任何一台服务器宕机时,网络都能继续运行。
profile:4gq7…xk2m章节 5
当有人加入语音房间或打开空间时,协调服务器会查看每个人的连接情况(网络的开放程度、上传速度、电脑性能、是否在用电池),并选出最合适的成员担任主持者。次优者作为备用。
每个人都连接到主持者的应用,由它转发加密音频。为了减轻负担,它只向每位听众发送音量最大的几位发言者。音频在传输途中从不以明文出现:主持者只搬运密封的数据包。
如果主持者离开或无法连接,备用者会接替,所有人重新连接到它,通常没有人会察觉。
所有人都连接到主持者。主持者离开:备用者接替。
章节 6
一切在离开你的设备之前就已加密,只有对话中的人才持有密钥。下面是一条消息在途中经历的过程。
你的应用对消息签名,让别人能证明它来自你;对它进行填充,使长度不泄露任何信息;用只有对话成员才持有的密钥加密;再通过本身也加密的连接发送。无论途中是谁,看到的都只是标准大小的乱码。
密钥交换采用混合方式:经过实战检验的经典方法 X25519,加上新的后量子标准 ML-KEM-768。攻击者必须同时攻破两者。这很重要,因为有人可能今天记录下加密流量,等待量子计算机来解密。
已删除这条消息后续
每位成员的密钥像棘轮一样转动:每条消息之后,它都会被一条只能向前的链上的下一把密钥取代,旧密钥随即删除。今天偷到密钥的人无法读取昨天的消息。每 30 分钟以及每当有人离开时,所有人都会用新的随机密钥开启新链,因此被盗的密钥也会很快失效。
你的声音被切成小帧,大约每秒五十帧,在离开麦克风之后、到达网络之前就被加密。无法加密的帧会被丢弃,绝不会以明文发送。语音使用恒定码率,因此数据包大小不会泄露你说了什么。
章节 7
有些网络,例如办公室或大学里严格的防火墙,会阻止电脑之间的直接连接。出现这种情况时,Crocodile 会告诉你,你可以允许一台协调服务器为你中继流量。
中继转发的是已经端到端加密的数据包:它能看到包的大小和时间,但看不到内容。每次许可持续一小时,只有在仍然需要时才会续期。
章节 8
没有任何服务器保存你的历史记录,因此 Crocodile 应用之间相互传递消息。下面是你给离线的人发消息时发生的事情。
消息进入应用的发件箱,并显示一个小时钟。
双方都在线时,你的应用会立即送出消息,并为对方的设备密封。
对方的应用确认收到,时钟随即消失。在空间中,错过消息的成员会从主持者和备用者那里补齐。
如果你愿意,服务器可以替你保存私信最多 7 天,并为每台设备单独密封,服务器自己无法读取,送达后即删除。
章节 9
你的新电脑会显示一个短代码。在已经登录的电脑上输入它,然后确认两块屏幕显示相同的六位安全码。如果一致,你的账号会以加密方式传过去,新设备即可使用。
安全码同时涵盖两台设备的密钥,因此如果有人试图在途中替换其中一把,安全码就会不同,你会发现的。
安全码一致:可以安全关联
你在安全类文章中会遇到的术语,每个用一两句话解释。