Обновить

Острова вместо серверов: как сделать мессенджер, который переживёт изъятие своего сервера

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели6.8K
Всего голосов 5: ↑5 и ↓0+6
Комментарии14

Комментарии 14

Вы переизобрели reticulum?

Нет, это другой уровень. Reticulum это сетевой стек -адресация, маршрутизация и шифрование поверх любой среды, хоть LoRa и радио, вообще без интернета. Мессенджеры (LXMF, Sideband) строят уже поверх него. Мы сеть с нуля не делаем -у нас обычный интернет и модель почтовых ящиков. Остров это тупой ящик с очередью, клиент сам кладёт запечатанный конверт в ящик(и) получателя и сам их опрашивает (читайте статью внимательнее, пожалуйста). По духу это ближе к email или Nostr, чем к Reticulum. Общее есть -идентичность это ключ, центрального авторитета нет, всё шифровано. Ближе всего к миру Reticulum у нас офлайн-режим, радиочат по Bluetooth и Wi-Fi Direct без серверов и интернета, но он намного проще и только локальный, не маршрутизируемый стек. Reticulum отличная штука, просто решает другую задачу.

Децентрализация упирается в пуши на мобильных устройствах, это всё что нужно знать про децентрализацию сегодня. Сперва децентрализуйте пуши для устройств Apple, Android - собирайте подписи, подкупайте кого-то в Евросоюзе, чтобы они инициативу продвигали и обязали эти компании изменить подход к уведомлениям.

Замечание по делу, пуши действительно главная точка централизации, и на iOS вы абсолютно правы -фоновые уведомления это только APNs, ни один сторонний сервер этого не обойдёт, это ограничение ОС, а не приложения. Лоббировать Apple с Google нам не по силам, не будем притворяться.

Пара уточнений по тому, что реально можно. Это не "всё или ничего" -свой остров подключает собственный ключ APNs, и тогда пуш идёт остров -> Apple напрямую, мимо нашего центра, то есть даже пуш не централизован через нас (в self-host это настраивается). На Android мы FCM сегодня вообще не используем, доставка идёт по живому сокету пока приложение работает, а полноценный фоновый будильник пока отложен. Его, кстати, на Android можно сделать без Google, постоянным foreground-сервисом, как у Briar и FOSS-XMPP клиентов, ценой батареи. На iOS без APNs надёжного фона нет, тут крыть нечем.

И главное по сути -централизация пуша ортогональна(!) тому, что мы децентрализуем. Пуш это всего лишь "пинг, проверь ящик". Аккаунт, переписка и ключи лежат на островах, а не у Apple с Google. Отвалится пуш-канал, вы потеряете не сеть и не данные, а только мгновенность уведомления, сообщения дойдут при следующем открытии. Мы защищаемся от того, что центр выключат, как это случилось с ICQ, а не строим идеальную децентрализацию каждого байта. Пуши важная, но решаемая в рабочем порядке деталь, а не сердце системы.

Ну хотя бы на комментарии с нейронкой не отвечайте.

Статья у вас начинается хорошо и интересно, а потом начинает фонить нейрослоп (и соотношение смысл/количество слов падает)

Мир меняется и мы тоже. Думаете такое бы нейронка не сказала в ответ на ваш комментарий? Или мы ответили не по делу, что пуши тут вообще никак не связаны со статьей и сутью проекта?

Техническая проблема не в централизации софта, а в монополии транспортного уровня операционной системы её создателями.

Это все несомненно здорово, но всегда есть узкие места.

Я сейчас не говорю про архитектуру проекта, узкие места в другом.

Какие минусы я вижу и это проблемы не конкретного мессенджера, а в целом любой попытки создать новый продукт:

  1. Наверное самая большая проблема - вопрос доступности и цензуры. С осени Google водит обязательную верификацию разработчиков. При качественном абьюзе Гугл может отозвать верификацию и приложение скорее всего будет недоступно на Android, хорошо, что на Андроиде это пока ещё лечится. Вопрос сколько времени это можно будет обходить?

    Айфоны - вот тут все печально, Apple по жалобам выпилит ваше приложение и тут ничего не сделаешь...

  2. Риск запрета вашего мессенджера - а его запретят, если вдруг он каким-то образом взлетит. Думаю многие слышали о том, что в Санкт-Петербурге проверяют телефоны, правда пока на факт включаемости в метро, но гарантий что не введут санкции на использование запрещённого ПО нет. Плюс опять же вопрос блокировки все равно остаётся актуальным. Тот же Тор в России практически недоступен. Да можно мучиться с мостами и прочим, но по факту из коробки не работает и скачать его без средства из трёх букв тоже давно уже нельзя.

  3. Ну это касаемо именно рисков борьбы с ним, но есть и другая наверное самая большая проблема:

    Отсутствие аудитории. Помните Jabber? Казалось бы, что проще, есть OpenSource сервера и клиенты под любые системы, пили любую защиту, шифрование и т.д. Но загнулся он по факту от того, что нет аудитории, нет пользователей - нет смысла.

  4. А какая монетизация?

Спасибо, вопросы правильные, и большинство из них честнее считать не решёнными, а постоянной борьбой. По пунктам.

Магазины и верификация -согласен, и именно поэтому мы на магазины не опираемся. На Android основная раздача это прямой APK с сайта плюс встроенный апдейтер, не Play. Верификация разработчиков ужесточается, да, но прямую установку и открытый код пережить отзыв из стора проще, чем приложению, которое живёт только в магазине. iOS тут реально слабое место: Apple контролирует раздачу целиком и по жалобе выпилит, крыть нечем. Единственное смягчение, iOS-клиент открыт (AGPL, на GitHub), его можно собрать и поставить мимо App Store, плюс в ЕС появились альтернативные сторы. Идеально это не закрывает (появится нужда - откатимся к эре Jailbreak'а, почему нет?).

Блокировки и запрет -тут работает сама архитектура, а не один обходной костыль. Смысл в том, что инфраструктура размазана по пользователям. Остров это просто почтовый ящик, его поднимает кто угодно у себя, и данные не лежат в одной точке, которую можно изъять. Транспорт это релеи, и их задумано много -дешёвые, одноразовые, поднимаемые самими пользователями, "сегодня здесь, завтра там", как гидра. Рубишь одну голову, остальные живут, единой точки входа, которую гасят одним махом, нет. Поверх этого идёт onion-маршрутизация через несколько релеев, чтобы ни один из них не видел разом и кто ты, и куда идёшь, и чтобы прятался сам факт обращения к конкретному острову.

Честно про статус -часть уже работает (наши релеи, обфускация, подписанный конфиг с ротацией без обновления приложения, self-host островов), а массовый пользовательский рой релеев и onion это то, к чему мы идём по этапам, не всё уже включено. И есть по-настоящему трудный кусок, не решённый ни у кого -первичный бутстрап, когда заблокировано всё известное (та же проблема, что у Tor с мостами, серебряной пули нет). А если само использование объявят вне закона и начнут смотреть телефоны, это уже не инженерная задача -улики убрать можно (нет телефона, сжигаемые аккаунты, decoy-PIN, приложение не кричит "запрещёнка", итд), но закон софтом не отменить.

Аудитория, проблема Jabber -cамый сильный и самый честный пункт, и он сложнее любой криптографии. XMPP технически имел всё и умер на сетевом эффекте и UX. Мы не делаем ставку "построим, и придут". У нас есть клин, которого у джаббера не было -люди под реальной цензурой, которым обход нужен прямо сейчас, это совсем другое давление к адопшену. И есть небольшая, но настоящая аудитория, под тысячу зарегистрированных, пришедшая именно из-за этого, а не вопреки UX. Урок джаббера учли буквально -одно опрятное приложение, а не двадцать клиентов на выбор, шифрование по умолчанию, а не "настройте OMEMO". Победим ли мы проблему аудитории вообще, честно, открытый вопрос, тут можно лечь как все. Но клин реальный, и первая тяга есть.

Монетизация -само приложение бесплатное, и навсегда. Платят не люди, а организации. Логика тут стандартная для open-source -код открыт, остров можно поднять самому бесплатно, но большинству это не нужно или некогда, и за удобство и инфраструктуру платят охотно. Что конкретно -бизнесу (редакции, юристы, фонды, команды, которым нельзя в Telegram или WhatsApp) готовая закрытая сеть островов в их контуре под ключ, с настройкой и поддержкой, плюс управляемый хостинг "свой остров в один клик" для тех, кто не хочет возиться с VPS. Тем, кому защита реально нужна и кто платить не может (журналисты, активисты), всё бесплатно по заявке. На рекламе и данных не зарабатываем принципиально, это убило бы смысл. Что коммерция и бескомпромиссная приватность не противоположности, уже показал SimpleX, мы той же дорогой -продаём удобство и инфраструктуру, а не пользователя.

Локальная история как осознанный размен это сильное решение для угрозы изъятия (серверу нечего отдать), но стоит проговорить цену прямо: потеря всех устройств это потеря переписки, и мультидевайс тут становится не удобством, а частью модели надёжности

Все изобретено до нас.

Например месседжер Jami(а это свободное ПО!) c дежурным аккаунтом на "незасыпающем" микрокомпьютере или сервере расположенном прямо у пользователя дома и включенным просто во внутренню локалку решает задачу "непропуска сообщений". Синхронизации чатов на разных устройствах - в Jami это встроеный по дефолту функционал тоесть когда Вы включаете другое устройство его чат дополняется тем что успел принять "дежурный аккаунт".

Данные аккаунтов(включая чаты) храняться локально. Месседжер Jami поддерживет и как P2P так и маршрутизацию через внешнии TURN(последнее нужно при работе клиентов за симметричным NAT).

Сам по себе TURN-сервер это просто специфический внешний маршрутизатор(точнее один из огромного множества "коллег") который ничего не хранит и изъятие которого просто изменит маршрут трафика.

Авторизация в Jami через DHT-сеть(положить которую изъятием отдельных узлов невозможно).

Скрытый текст
уу, гугл-сюка :)
уу, гугл-сюка :)

Jami не работает. И никогда толком не работал.

зы сейчас нет запроса на новые мессенджеры, их уже есть больше чем нужно. есть запрос на впн для обхода блокировок. может быть впн с расширениями, одно приложение внутри которого несколько разных поставщиков для разных приложений и целей

Решение хорошее, опробовал сегодня и на яблоке, и на андроиде. Везде свои плюсы и минусы, но думаю они решаемые. Вот чего, конечно, не хватает - это федерации. Развернуть локальный сервер нынче имеет смысл, который сложно переоценить, но без возможности общения с другими островами - он по факту бесполезен. Потому что изолированный корп.чат можно сделать сейчас на каком угодно открытом \ коммерческом решении, но почти никто не предлагает федерацию, кроме пожалуй Matrix / Element.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации