
Seal v0.2.3
Одноранговый чат со сквозным шифрованием. Без входящих. Нет аккаунта для восстановления. Никто не подслушивает — даже мы.
Seal
Одноранговый чат со сквозным шифрованием.
Никакого инбокса. Никакого аккаунта для восстановления. Никто не подслушивает — даже мы.
Сообщения передаются напрямую между пирами через libp2p и шифруются протоколами Olm/Megolm в стиле Signal (через vodozemac) ещё до того, как покинут ваше устройство. Единственный задействованный сервер — это небольшой каталог, который помогает пирам находить актуальные адреса друг друга. Он никогда не видит содержимое сообщений, и его можно удалить одной командой.
Смотрите docs/THREAT_MODEL.md и
docs/SECURITY.md — что именно защищено и как.
Содержание
- Скриншоты
- Возможности
- Как это работает
- Структура проекта
- 1. Предварительные требования
- 2. Сборка
- 3. Запуск в режиме разработки
- 4. Тестирование
- 5. Настройка бэкенда (сервера-каталога)
- 6. Использование приложения
Скриншоты
Первый запуск — выберите имя; больше ничего настраивать не нужно.
Переписки — групповой сайдбар, список контактов и панель чата со сквозным шифрованием.
Настройки — чувствительность микрофона, push-to-talk, автозапуск при входе в систему, доступность сети.
Возможности
- Сквозное шифрование всегда — каждое сообщение запечатывается с помощью Olm (1:1) или Megolm (группы) ещё до того, как покинет ваше устройство, по схеме в стиле Double Ratchet от vodozemac: у каждого сообщения свой ключ.
- Никакого инбокса, никогда — сообщения передаются по прямому одноранговому соединению (libp2p: QUIC/TCP + Noise, с ретрансляцией и hole punching для NAT). Если получатель офлайн, сообщение ждёт локально и повторяет попытки — оно никогда не попадает в очередь на чужой инфраструктуре.
- Каталог, а не база данных — единственный задействованный сервер
(
crates/directory-server) сопоставляет идентификатор пользователя с текущим сетевым адресом и ничем больше. Он структурно не способен прочитать содержимое сообщений: егоCargo.tomlдаже не зависит от крейтов, которые умеют это делать. - Несколько аккаунтов на одном устройстве — полностью раздельные идентичности (ключи, контакты, сообщения), между которыми можно переключаться без перезапуска.
- Группы с настоящим изменением состава участников — текстовые и голосовые каналы в каждой группе; при исключении участника ключ группы ротируется, чтобы он не мог прочитать ничего из отправленного после этого.
- Голосовая связь из коробки — push-to-talk по глобальной горячей клавише (работает из любого приложения, не только из Seal), настраиваемая чувствительность микрофона и опциональный модулятор голоса.
- Вложения без метаданных — данные EXIF (GPS-координаты, сведения о камере/устройстве) удаляются из изображений до отправки; включено по умолчанию.
- Настоящая кнопка экстренного стирания — «Настройки» → «Данные и конфиденциальность» мгновенно и безвозвратно удаляют все ключи, контакты и сообщения на этом устройстве, никак не влияя на тех, с кем вы общались.
- Автозапуск при входе в систему, если хотите — включён по умолчанию, отключается одним переключателем в настройках.
- Одна кодовая база, три платформы — нативные окна на macOS, Windows и Linux через Tauri.
Как это работает
В этом приложении два вида идентичности, и они намеренно разделены: