Ваше приложение
Хранит ваши ключи, шифрует всё, что вы отправляете, и расшифровывает то, что получаете. Ваша история сообщений живёт здесь и больше нигде.
Знает: Всё, что вы отправляете и получаете: это ваше.
Как это работает
Обзор архитектуры и протокола простыми словами. Каждая глава начинается с идеи; откройте «Под капотом», чтобы увидеть технические подробности.
Глава 1
Crocodile распределяет работу так, чтобы ваши слова видели только те, с кем вы общаетесь, а части, которыми управляют посторонние, не видели их никогда.
Хранит ваши ключи, шифрует всё, что вы отправляете, и расшифровывает то, что получаете. Ваша история сообщений живёт здесь и больше нигде.
Знает: Всё, что вы отправляете и получаете: это ваше.
В каждой голосовой комнате или пространстве выбирается приложение одного участника, чтобы передавать зашифрованный трафик остальным. Это такой же участник, как все.
Знает: IP-адреса участников и кто говорит, но никогда — что именно.
Коммутаторы, которые поддерживают волонтёры: хранят профили и пространства, сообщают, кто в сети, и выбирают хостов. Они объединяются в одну сеть.
Знает: Профили, членство и кто в сети, но никогда — что сказано.
Телефонная книга координационных серверов, чтобы новые приложения знали, с чего начать. О людях он не знает ничего.
Знает: Только список серверов.
Глава 2
Когда вы устанавливаете Crocodile, приложение создаёт на вашем компьютере случайный секрет длиной 32 байта. Из него получаются два ключа: один для подписи того, что вы публикуете, другой для получения зашифрованных сообщений. Ваш идентификатор — это отпечаток ключа подписи.
Поскольку идентификатор вычисляется из ключа, сервер не может подменить ключ и выдать себя за вас. Нет пароля, который можно украсть, и нет сброса, на который можно уговорить службу поддержки. Секрет показывают вам один раз как ключ восстановления, и он остаётся на ваших устройствах, зашифрованный системным хранилищем ключей.
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
Новый компьютер показывает короткий код. Введите его на компьютере, где вы уже вошли, и проверьте, что оба экрана показывают одинаковый шестизначный код безопасности. Если коды совпадают, ваша учётная запись передаётся в зашифрованном виде, и новое устройство готово.
Код безопасности охватывает ключи обоих устройств, поэтому если бы кто-то попытался подменить один по дороге, коды бы не совпали, и вы бы это заметили.
Коды совпадают: можно связать
Термины, которые встречаются в текстах о безопасности, каждый в одном-двух предложениях.