Обновить

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

пробивают прямое TCP - это как?

  1. Как быть с разными устройствами у одного человека? Когда пир = устройство, на каждое устройство придется делать новую личность

  2. Как хранится история сообщений? Устройство хранит полностью всю историю вместе с медиа файлами?

  3. Как реализуется поиск по сообщениям? В E2EE это сделать можно только построив локальный индекс

  4. Как мигрировать данные между устройствами при смене телефона, например?

1. Мультиустройство Сейчас в MVP 1 устройство = 1 пир. В будущем планируется концепция "Linked Devices" (как в Signal или Session). При привязке по QR-коду основное устройство по защищенному P2P-каналу передает ключи и историю новому. Для собеседников ты остаешься одним контактом, но сообщения отправляются веером (fan-out) на все твои привязанные пиры.

2. Хранение истории и медиа Да, всё хранится исключительно локально на устройстве (БД зашифрована через SQLCipher, медиа — в защищенной директории). Сервера, хранящего терабайты данных, нет физически. Чтобы телефон не забивался, планируется автоочистка старых медиа, как в WhatsApp.

3. Поиск по сообщениям Всё верно, серверного поиска быть не может. Так как расшифрованный текст уже лежит в локальной SQLCipher на устройстве, поиск работает мгновенно через обычные SQL-запросы (FTS) прямо по локальной базе без запросов в сеть.

4. Миграция данных Пока при смене телефона генерируется новый PeerID. Для бесшовной миграции нужен механизм защищенного бэкапа: либо локальный экспорт зашифрованного архива (база + ключи), который юзер сам перекидывает на новый девайс, либо зашифрованный мастер-паролем слепой бэкап в iCloud/Google Drive. На новом устройстве архив разворачивается с сохранением старого PeerID и истории.

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

Иметь все копии на всех устройствах - это неудобно, особенно когда речь идёт о медиафайлах. А когда человек обнаружит, что "оптимизация" места удаляет старые файлы, то он как минимум расстроится.

Обычные люди ценят удобство больше чем потенциальную 100% безопасность. А наличие своего сервера обеспечивает достаточную безопасность от внешнего окружения т.к. сервер можно поднять даже дома, куда есть физический доступ.

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

Open-source? А где гитхаб?

Помимо своего сервера планируется еще полный p2p режим, для самых переживающих за безопастность)

Такое уже есть в Jami, Briar, Berty, Bitchat. Чистый P2P бесполезен для большинства людей, потому что он не приспособлен для реальной жизни. На мобилках его вообще нереально использовать. Без STUN серверов они становятся слепыми, а TURN - это та самая централизация, потому что левый трафик через TURN обычно никто не пускает, поэтому нужен свой TURN с аутентификацией того или иного вида.

Тотальная безопасность обычно несовместима с удобством использования если пробовать совместить всё то либо получится неудобно, либо небезопасно, либо всё сразу. И, скорее всего, из-за этого ни тем, ни другим не будет интересно. А как следствие, будет не интересно и вам потому что нет дофамина от кучи пользователей которым нравится результат вашего труда.

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

Open-source — клиентский пакет (Go + Dart)

А сервер?

Сервер с высокой вероятностью тоже :)

Почему не gomobile вместо CGO?

Потратил пару дней на конфигурирование gomobile, не получилось, плюс до этого был опыт с FFI, удалось все настроить и завести быстро

А зачем? Для gomobile всё равно придётся писать обвязку поверх MethodChannel. А gomobile - это по сути враппер над JNI, что само по себе враппер для нативных API

Здесь же прям сразу FFI. Те же яйца, только проще.

В Google Play неинтересно. apk бы...

Апк тоже дам обязательно если есть нужда))

Кстати, по поводу Push. Очень бы хотелось иметь UnifiedPush, чтобы не зависет от вендоров.

На андройд добавлю обязательно если продолжу развивать проект

Просто поделюсь, потому что близка эта тема

7 месяцев делал ugolok.tech

И сейчас в принципе всё работает. Пользователь скачать index.html и может общаться через сигнальные функции и федерацию.

Потом дошло что это плохой подход.

Сейчас переделываю.

Автору статьи удачи!

А когда планируется на android,очень хотелось бы попробовать.

Проходит модерацию в гугл плее в данный момент.

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

Публикации