服务器了解你什么
让我们从基础开始。Solo2的服务器确切地知道关于你的三件事:你的用户名、你的唯一标识符和你密码的哈希值。哈希是一种不可逆的数学变换——服务器可以验证你的密码是否正确,而不知道密码是什么。你真正的密码只存在于你的脑海中和你的设备上。
这就是全部。服务器从不保存您与谁交谈或您有多少个隧道。它不知道您的联系人的名字。该信息仅存在于您的保管库中,并在您的设备上加密。服务器即使想打开也无法打开。
信箱
想象一面墙上有编号的信箱,就像在老邮局一样。当你的应用想要与某人连接时,它在信箱里留下一张纸条,写着'我想和用户X交谈'。仅此而已。它不说你是谁。不说你想谈什么。只是信箱里的一张纸条。
所有连接到Solo2的应用会定期检查信箱,看是否有人给它们留了纸条。就像去邮局问:'有我的信吗?'。如果你的联系人找到了你的纸条,他们会向服务器请求你留下的IP地址。服务器提供它,然后这个信息立即从内存中删除。它永远不会写入任何磁盘。它只在服务器的内存中存活响应所需的几毫秒。
从那一刻起,服务器消失了
一旦两台设备知道了彼此的地址,它们就直接对话。服务器不再参与。它不转发消息。不存储消息。不知道连接是否建立。不知道持续多长时间。不知道交换了多少消息或消息有多大。
以至于,如果服务器在那一刻关闭,两个用户会继续完全一样地交谈。对话不依赖于服务器。它只是为了让两台设备找到彼此才依赖服务器。一旦连接,服务器就无关紧要了。
对话在开始之前就已经是安全的
当两个人在Solo2中创建隧道时,他们的设备交换公共加密密钥。从那一刻起,每条消息都用接收者的密钥加密——只有接收者才能解密。这发生在任何对话开始之前。密钥从隧道创建的那一刻起就准备就绪。
这就是为什么当两台设备直接连接时,通信已经受到保护。它们不需要协商任何事情。不需要向服务器请求许可。密钥是它们的,在它们的设备上,没有其他人拥有。
这在实践中意味着什么
这意味着任何服务器上都没有你对话的记录。没有可分析的元数据。没有可交给法院命令的历史。没有可入侵的数据库。Solo2的服务器无法交出它没有的东西。而它什么都没有,因为从来就没有过。
下次有人告诉您某个应用程序“端到端加密您的消息”时,请问他们其他所有内容会怎样:谁知道您的联系人、您几点通话、频率如何。如果答案是“我们的服务器,但我们不会用它做任何坏事”——那只是一个承诺。在 Solo2 中,答案是不同的:没有人保存它。因为没有人可以问。