Comments 21
У меня только один вопрос: почему регулятор целенаправленно режет никому неизвестный мессенджер?
Никак специально не режет. И статья этого не утверждает.
Реальность проще и хуже. РКН и операторы по его предписаниям фильтруют не «по продуктам», а по диапазонам и фингерпринтам. Когда блочат сеть провайдера, типовой SNI-паттерн или конкретный TLS-fingerprint, в этот фильтр попадают сразу десятки мелких сервисов которых никто индивидуально не «замечал». Это collateral, а не таргетинг.
Reality в этом контексте нужен ровно потому, что «правильная репутация» от такого collateral'а не спасает. Не важно знаменит ли ты, важно как твой ClientHello выглядит на DPI. Если как обычный мессенджер с cloud-IP, попадёшь в общий фильтр. Если как трафик к microsoft.com, пройдёшь.
То есть статья не про «РКН охотится за нами», а про «как сделать так, чтобы DPI вообще не различал что это мессенджер».
Такой подход давно напрашивается в виде еще одного proxy в Telegram
UPD: задумывалось как ответ на коммент @art3012, промахнулся кнопкой. Дублирую в правильном треде.
Вы не ту проблему решаете. Мессенджер ценен только своей аудиторией. Ради людей которые там есть приходится терпеть и регистрацию по паспорту(телефону) и стикеры, и голосовухи, и (кремле)ботов.
У вас людей нет и никогда не будет. Сейчас не время для нового мессенджера, все силы надо направить на создание нового свободного интернета, делать такой впн который всем впнам впн, скайнет. Вот бы кто-нибудь взял и довел yggdrasil до ума.
Network effect это правда, у любого нового мессенджера эта проблема. В том числе была у Telegram, Signal, Discord (и др.) когда они стартовали. Это не повод не пытаться, а повод делать аккуратно под конкретную аудиторию.
Yggdrasil это mesh IP-routing, замена транспортного слоя между узлами. Над ним всё равно нужен мессенджер: identity, ключи, доставка офлайн-сообщений, push, медиа. Это разные слои задачи, одно другое не заменяет.
Мессенджеры уже есть все какие нужны, и большие с миллиардами мух, и маленькие для групп селфхостед, и открытые без регистрации по паспорту и трекинга (jami итп), и какие угодно. Как вам вообще в голову пришло что надо сделать еще 1, для кого?
Логика «все мессенджеры уже есть» одинаково применима к 2010-му (зачем Signal, есть WhatsApp), 2013-му (зачем Telegram), 2014-му (зачем Threema). Каждый раз ниша находилась.
Конкретно наша: люди в регионах с сетевой цензурой (РФ, СНГ, Иран), где WhatsApp/Signal/Telegram режут на сетевом уровне по TLS-фингерпринту, а Jami и подобные DHT-решения не доставляют офлайн-сообщения и не имеют встроенного обхода блокировок. RCQ закрывает именно это: libsignal + sealed sender + VLESS/Reality внутри приложения, без отдельного VPN.
Регистрация по UIN, без номера телефона и паспорта. Плюс Bluetooth-mesh работает в Иране во время shutdown-ов, когда интернета нет вообще.
Кажется, как раз логично было бы переиспользовать identity и прочую крипту от Yggdrasil. Если это вам почему-то не подходит, интересно было бы прочитать, почему именно.
Хороший вопрос. Если правильно помню, у Yggdrasil identity это Ed25519-ключ узла, а IPv6-адрес узла однозначно из него выводится. То есть identity у них per-node (на каждую инсталляцию своя), и решает задачу «как одному узлу маршрутизировать пакеты другому, зная только его публичный ключ». Полезная штука, но довольно специфическая.
Для мессенджера нужно несколько вещей сверху, которых у Yggdrasil просто нет:
X3DH для асинхронного key agreement: signed prekey и пачка one-time prekeys лежат на сервере, чтобы Федор мог написать Яне, пока Яна оффлайн.
Double Ratchet: forward secrecy и post-compromise security на каждом сообщении. Yggdrasil-уровень это пакеты, понятия «сессия мессенджера» там в принципе не существует.
Sender Keys для эффективной групповой криптографии (без них каждое групповое сообщение приходится шифровать по числу участников).
Sealed sender для метаданных «кто кому».
И ещё момент: пользователь у нас один, а устройств может быть несколько, у каждого свой session-ключ. Yggdrasil-identity жёстко прибита к узлу, я не уверен, можно ли это туда нормально натянуть.
Поэтому я бы не сказал, что libsignal и Yggdrasil это альтернативы. Они скорее на разных слоях: libsignal закрывает крипту мессенджера, Yggdrasil (или Reality, или что-то ещё) сидит ниже и таскает байты. Кстати, Tox over Yggdrasil уже существует, и там Tox-крипта тоже осталась своя, Yggdrasil её не заменял.
Ну и честно говоря, переписывать X3DH + Double Ratchet + Sealed Sender с нуля втроём в свободное время мы бы не вытянули (даже продвинутый ИИ -не всесилен). libsignal проверен в Signal и WhatsApp, аудитов на нём прилично, так что взяли его не от любви, а из расчёта.
Ну да, спасибо, я что-то такое предполагал.
На мой взгляд, у Yggdrasil и вообще IPv6 врождённая проблема: невозможно предложить это настраивать среднестстатитстическому пользователю. Невозможен даже самый крайний сценарий попросить его "продиктовать свой IP" (v4).
Чтобы Yggdrasil пошёл в массы, один из вариантов очеловечивания это прикрутить меесенджер как часть стека. Ставишь мессенджер - получаешь заодно доступ в сеть.
Это так, благопожелание...
Yggdrasil - впн, ipv6 в нем решает проблемы с адресами, не надо заботится о том что бы сети не пересекались и что бы всем хватало адресов, это врожденное свойство около бесконечного пространства адресов ipv6. Пользователю не надо ничего никому диктовать, установил приложение, включил, работает.
У всех у кого включено есть белый маршрутизируемый адрес который любое другое приложение может использовать для прямой связи.
И видит в этом приложении неведомую хрень (кучу ipv6 префиксов и адресов), которая выглядит страшновато даже для бывалых... олдскулов-админов. Которые привыкли если не прибивать ipv6 рефлекторно сразу, во избежание ненужных проблем, то, насилуя себя, игнорировать это побуждение и терпеть - чтобы иногда случались внезапные ништяки от прогресса в сетевых технологиях. "О! ntc.party открывается".
А вот про включил-работает позвольте не поверить. Диагностика и траблшутинг ожидаемы и предусмотрены - иначе бы приложение состояло из единственной кнопки вкл./выкл.
Что я предлагаю - подумать о более человечной обратной связи. Даже такая малость, как два разных интерфейса wan и wan6 в openwrt - уже кажется шажком в этом направлении. Возможно, это правильная абстракция, которую следовало завести изначально. Это ведь два разных линка, которые могут быть up/down независимо друг от друга.
Из-за использования ИИ везде (от репозитория до ответов в комментариях здесь) и шаблонного описания преимуществ по модели «мы решаем проблему Х с помощью решения Y, которое лучше существующего решения Z» складывается ощущение, что мне пытаются этот мессенджер продать. А он бесплатный. Весело :)
Да, ИИ используем активно, и в коде, и в текстах, а кто его сейчас не использует, интересно? Команда из трёх человек, базируемся в Израиле, у каждого основная работа в IT, RCQ это сайд-проект в свободное время. Шипить мессенджер втроём по вечерам без буста от LLM было бы очень медленно, поэтому и в репозитории следы видны, и в комментариях тон такой. Скрывать это смысла нет.
По «шаблонному описанию преимуществ»: техническая статья про обход блокировок неизбежно строится вокруг сравнения с альтернативами (MTProto-proxy, Shadowsocks, классический VPN). Без сравнения остаётся голый список технологий без объяснения, зачем они. По «продают, а он бесплатный»: исходники iOS-клиента открыты под AGPL-3.0 на github.com/rcq-messenger/rcq-ios, бэкенд крутится на нашем железе за наш счёт. Если бы продавали, был бы прайс-лист :)
Андроида нет :(
Пока только iOS, да. Тянуть две платформы параллельно втроём в сайд-проекте не получалось, поэтому Android осознанно отложен (но в процессе все равно). Протокол + бэкенд открыты, спецификация в репозитории, так что если кто-то из комьюнити начнёт Android-клиент раньше нас, поможем чем сможем. Сами вернёмся к Android, когда iOS-версия стабилизируется.
Клиент только под ios или будет в будущем и android и десктоп?
Обход блокировок внутри iOS-приложения: VLESS + Reality через sing-box, и грабли по дороге