Что сервер знает о вас
Начнём с основ. Сервер Solo2 знает о вас ровно три вещи: ваше имя пользователя, ваш уникальный идентификатор и хеш вашего пароля. Хеш — это необратимое математическое преобразование — сервер может проверить, что ваш пароль верен, не зная, какой он. Ваш настоящий пароль существует только в вашей голове и на вашем устройстве.
И это всё. Сервер не знает, с кем вы разговариваете. Не знает, сколько у вас туннелей. Не знает имён ваших контактов. Эта информация существует только в вашем хранилище, зашифрованная на вашем устройстве. Сервер не смог бы её открыть, даже если бы захотел.
Почтовые ящики
Представьте стену с пронумерованными почтовыми ящиками, как на старой почте. Когда ваше приложение хочет связаться с кем-то, оно оставляет записку в ящике со словами 'Я хочу поговорить с пользователем X'. Больше ничего. Не говорит, кто вы. Не говорит, о чём вы хотите поговорить. Просто записка в ящике.
Периодически все приложения, подключённые к Solo2, проверяют ящики, чтобы узнать, не оставил ли кто-то записку для них. Это как зайти на почту и спросить: 'Есть что-нибудь для меня?'. Если ваш контакт находит вашу записку, он запрашивает у сервера IP-адрес, который вы оставили. Сервер предоставляет его, и эта информация стирается из памяти немедленно. Она никогда не записывается ни на один диск. Она живёт в оперативной памяти сервера те миллисекунды, которые нужны для ответа.
С этого момента сервер исчезает
Когда оба устройства знают адрес друг друга, они разговаривают напрямую. Сервер больше не участвует. Он не передаёт сообщения. Не хранит их. Не знает, было ли установлено соединение или нет. Не знает, сколько оно длится. Не знает, сколько сообщений обменяно и какого они размера.
Настолько, что если бы сервер выключился в этот момент, два пользователя продолжили бы разговаривать точно так же. Разговор не зависит от сервера. Он зависел от него только для того, чтобы два устройства нашли друг друга. После соединения сервер не имеет значения.
Разговор защищён ещё до его начала
Когда два человека создают туннель в Solo2, их устройства обмениваются публичными криптографическими ключами. С этого момента каждое сообщение шифруется ключом получателя — и только получатель может его расшифровать. Это происходит до начала любого разговора. Ключи готовы с момента создания туннеля.
Поэтому, когда два устройства соединяются напрямую, коммуникация уже защищена. Им не нужно ни о чём договариваться. Им не нужно просить разрешения у сервера. Ключи принадлежат им, на их устройствах, и ни у кого другого их нет.
Что это значит на практике
Это значит, что ни на одном сервере нет записи ваших разговоров. Нет метаданных для анализа. Нет истории для передачи по судебному ордеру. Нет базы данных для взлома. Сервер Solo2 не может передать то, чего у него нет. А у него ничего нет, потому что никогда не было.
В следующий раз, когда кто-то скажет вам, что приложение 'шифрует ваши сообщения от конца до конца', спросите, что происходит со всем остальным. Кто знает, с кем вы разговариваете. Кто знает, в какое время. Кто знает, как часто. Если ответ 'наш сервер, но мы не используем это ни для чего плохого' — это обещание. В Solo2 ответ другой: никто не знает. Потому что некого спросить.