
Комментарии 39
Проблема в том, что https трафик к определенному "сайту" точно так же можно заблокировать. И если "классические" мессенджеры используют распределенную инфраструктуру с динамическим меняющимися серверами и CDN, которые вынуждают блокировать не по адресам, а по DPI, то ваш "Домен напрямую на IP сервера без CDN-прослойки" внесут в список заблокированных сайтов одним кликом. Как тысячи и сотни тысяч других "сайтов"
А вы потянете финансирование своего проекта? Или тихо закроетесь через пол года?
Проект финансируется фаундерами. Инфраструктура в текущей реализации недорогая, сервер не занимается шифрованием, всё шифрование происходит на клиенте. Подписки (доп возможности к базовому функционалу) частично покрывают расходы
Очередная нейрослопная поделка, расходимся.
Согласен с вопросом проблемности архитектуры нынешних технологий - клиент<->сервер.
Но насколько я понимаю, ваш мессенджер не решает эту проблему. Такж есть сервера вашего мессенджера, которые можно определять и блокировать.
---
На мой взгляд, P2P должен получить новый виток на фоне того, что происходит в мире с технологиями. Причем без каких-то костылей в виде mesh систем и блютузов.
P2P как идея отличная, но на практике упирается в NAT traversal, мобильные сети и энергопотребление. Держать прямое соединение между двумя телефонами за NAT оператора, задача которую даже WebRTC решает через TURN серверы, а это уже не чистый P2P. Мы не претендуем на решение проблемы «сервер можно заблокировать» - от этого нет защиты. Но разница в том что наш сервер это почтальон: он передаёт зашифрованные пакеты и не может их прочитать. Даже если его заблокируют - переписка не скомпрометирована. А переехать на другой IP - вопрос минут. Полноценный P2P мессенджер без серверов, без mesh, без костылей - я буду рад увидеть рабочую реализацию. Пока её нет, мы решаем задачу теми способами которые работают сегодня.
IPv6?
Сделать десктопную версию клиента, которая будет иметь галочку "Разрешить TURN Relay" и при её включении будет прокидывать порт на роутере через UPNP, тестировать его доступность с сервера, анонсировать себя в DHT-подобной сети (тут правда тонкий момент с первым подключением, но можно через DNS анонсировать адреса раскрутки, и добавить поле где можно их руками переопределить) и TURNить трафик взамен на премиум-фичи бесплатно?
Это интересное предложение, но на практике упирается в несколько моментов:
UPnP отключён по умолчанию у большинства провайдеров и роутеров. А где включён - это дыра в безопасности которую мы не хотим рекомендовать пользователям.
IPv6 да, снимает проблему NAT. Но проникновение IPv6 в России пока низкое, особенно в мобильных сетях.
Идея с пользовательскими relay за премиум это по сути Tor-модель. Работает, но создаёт юридические риски для тех кто ретранслирует чужой трафик. В контексте РФ это то, чем мы не хотим нагружать пользователей.
Пока проще и надёжнее держать несколько своих TURN серверов в разных юрисдикциях. Но идею с десктоп-клиентом держим в уме, он в планах
Как раз в том и вопрос, чья именно переписка не скомпрометирована.
Скажет потом подследственный, что переписывался через это вот всё - ну и добрый день, господин майор.
Решение: отправитель генерирует случайный message key для каждого сообщения. Текст шифруется этим ключом через AES-256-GCM. Затем message key «оборачивается» индивидуально для каждого участника через их ECDH shared secret. Каждый получатель расшифровывает только свою копию message key, а затем - само сообщение
Так всё хорошо начиналось, и на тебе: полное раскрытие списка участников группы. Жаль.
Шикарный кейс использования non-extractable CryptoKey. Удивительно, как много проектов до сих пор хранят ключи в localStorage в виде простых строк, подставляясь под любой XSS-вектор.
Особенно порадовал момент с исправлением bias в rejection sampling для safety numbers — такая дотошность к статистическому распределению (байт < 200) выдает серьезный инженерный подход.
Вопрос к автору по поводу групповых чатов: рассматривали ли вы внедрение протокола MLS (Messaging Layer Security) в будущем? Обертка ключа (key wrapping) для каждого участника через ECDH хороша на малых группах, но при росте N до сотен участников нагрузка на отправителя и объем метаданных в БД начнут расти экспоненциально. Планируете ли оптимизировать это через древовидные структуры ключей?
Спасибо за детальный разбор.
По MLS да, рассматриваем. Текущая схема с per-member key wrapping работает для групп до 50-100 человек: отправитель делает N операций AES-GCM wrap, сервер хранит N зашифрованных ключей на сообщение. Это O(N) на отправку и O(N) на хранение.
MLS с TreeKEM даёт O(log N) на обновление ключей за счёт древовидной структуры при 1000 участников это разница между 1000 и 10 операциями. Для нашего текущего лимита групп это оверинжиниринг, но при масштабировании станет необходимостью.
Скрытый текст


При клике по изображению творится какая-то дичь…
Честный ответ
Честный комментарий - читать ваш AI-слоп отвратительно. Даже если он на 80% написан человеком.
Право на приватность это не привилегия, а математическая константа
Такую воду даже гпт мне уже не выдает - вы постарались!
Пока окно открыто - Mist работает. Обещать большее было бы враньём
А кто-то называет это "маркетинг". Впрочем, нейронке виднее.
А где почитать про архитектуру и бизнес-модель проекта? Я вижу только ссылку на исходники криптобиблиотеки и собственно сайт-сервер.
Домен напрямую на IP сервера
и?
вы с каких провов тестили? это где в эрэфистане забугорное https, уже не должно содержать православный sni? и cdn не причём.
SNI в открытом виде - да, без ECH домен виден в TLS handshake. Но блокировки по SNI в РФ работают не для всех доменов, а по реестру. Пока домена нет в реестре РКН SNI не помеха. Тестировали с МТС, Билайн, Т2 и домашних провайдеров, работает без VPN
Это не решает проблему "белых списков", а решает если в качестве транспорта использовать яндекс-почту, max. Шифровать-расшифровывать rsa ключами. Проблему звонков не решает, но зато работает при отключениях.
Возможно это рабочий метод для экстремальных сценариев, но транспорт через Яндекс почту или Max создаёт новую проблему оба сервиса видят метаданные и находятся в рф юрисдикции. Это не приватный транспорт, это замена одного риска другим
Ваша связь идет через операторов связи, которые находятся в рф юрисдикции.
Система хранения трафика у операторов связи в РФ (в рамках «закона Яровой» и СОРМ-3) обязывает провайдеров хранить текстовые сообщения, голосовые вызовы, изображения, звуковые и видеофайлы пользователей до 30 суток (с ежегодным ростом емкости). Метаданные о действиях абонентов хранятся до 3 лет
Регистрация на левых симках, остальное хорошо зашифровано.
Нижняя панель обрезается, благодаря этому даже в суппорт не написать.
Благодарю за то, что Вы есть и что скинули сурс - очень ценно. Я сейчас разрабатываю один проект, которому КРАЙНЕ поможет знакомство с Вашим сурсом.
В образовательных целях, будет весьма своевременно и полезно.
Также, обязательно зарегистрируюсь и посмотрю Ваш проект - очень интересная штука, чем-то напоминает некоторые форумы прошлого, на которых тоже была авторизация через ключевые фразы\наборы слов, мой отец мне в детстве про такое говорил и предлагал реализовать, когда мотивировал учиться IT)
Вот Вы пишите BIP39... А со своей BIP39 seed фразой я зайти не смог. Пишет Invalid or expired challenge. Это значит, что Вам важно самим генерировать ключи. Для чего?.. Для того чтобы генерировать производные ключи и иметь возможность расшифровать?
Seed-фраза в Mist генерируется при создании аккаунта, войти с произвольной BIP39 фразой нельзя, потому что аккаунта с таким ключом просто не существует на сервере. Процесс: регистрация - BIP39 в Mist генерирует 12 слов - из них детерминированно выводятся ключи - публичный ключ отправляется на сервер. При логине сервер проверяет подпись через challenge-response если публичного ключа нет в базе, логин невозможен. Использовать свою фразу от кошелька не получится это разные системы идентификации. Зарегистрируйтесь через "Создать аккаунт", сохраните сгенерированную фразу и с ней можно входить с любого устройства в Mist.
При копировании через кнопку текст вставляется: abc defg hijkl итд. Следующим шагом запрашиваются три слова в произвольном порядке. Возможно, стоит сделать, чтобы вставлялось в следующем виде:
1. abc
2. defg
3. hijkl
?
Обязательно учитывайте, что если вами зарегистрированный канал не укладывается в представление о приемлемом, то его у вас просто-напросто удалят. Не важно, что вы там собираетесь публиковать, у владельцев ресурса есть своя логика, и они её придерживаются.
Скрытый текст
Разработчики с одной стороны выглядят адекватными (как минимум, подписку ультра подарили после нескольких баг-репортов), но с другой при таких ограничениях желание иметь дело с таким мессенджером исчезает, в итоге удалился.
Мессенджер Mist, MistM, модерация, ограничения, специфика.
А можно поднять на своем сервере? Есть ли инструкция\докер\ансибл?

12 слов вместо номера телефона: как мы сделали мессенджер невидимым для файрволов