
Комментарии 10
Есть же XMPP (Jabber). Чем не устроил?
Публичный ключ передаётся прямо в broadcast-пакете — это позволяет сразу же начать шифрованный обмен без дополнительного рукопожатия.
Т.е. злоумышленник может выслать ключ для атаки "человек посередине" ?
Почему хотя бы серверную часть не написать на c/c++/rust ?
она и написана на rust (self-hosted)
А в таблице тогда что?
Скрытый текст

в таблице говорится про центральный сервер, не уточнил этот момент
А зачем центральный сервер в архитектуре self-hosted? Сделать тогда уж федерацию как в матрикс.
Flutter на десктопе без допиливания лагает заметно больше, чем на мобилках
На flutter для десктопа делал админку с десятками тысяч позиций с кучей полей и картинок, местами откровенным г*внокодом, где тяжёлая логика выполняется прямо с рендерингом виджетов. Но даже так всё работает сносно и для меня стало откровением что простой чат может тормозить
Каждый клиент каждые 5 секунд рассылает JSON-пакет на адрес 255.255.255.255:45678
Лучше бы мультикаст
Раз в 5 секунд - много, если в локалке много клиентов
Не думали про DNS-SD вместо самодельного discovery?
Обмен ключами: X25519 ECDH с эфемерной парой ключей per-session Шифрование: XChaCha20-Poly1305 AEAD
Т.е., всё шифрование основано на алгоритмах, придуманых Бернштейном. Стрёмный он, этот Бернштейн…
Один из сложнейших кейсов — когда у пользователя несколько устройств, и при этом нужно сохранить E2E-шифрование
Кажется, у Шнайера рассказывается, что DHE может быть обобщён на несколько участников.
ONYX: self-hosted мессенджер с LAN-режимом — история одного инди-проекта