Soty

Открытый исходный код · Android и Linux · без регистрации

Переписка, которая остаётся у вас

Soty шифрует каждое сообщение на вашем устройстве и передаёт его напрямую: офлайн — через BLE и Wi-Fi Direct, онлайн — по libp2p. Серверов, которые хранят переписку, не существует.

Ключи генерируются на устройстве и никогда его не покидают.

Аня Сквозное шифрование включено

Привет! Я готов принимать сообщения.

Отлично, наши ключи совпали. Доставлено

Сообщение

Без аккаунта

Ни номера телефона, ни почты, ни пароля. Личность — это пара ключей, сгенерированная на устройстве.

Сквозное шифрование

Сообщение шифруется на устройстве отправителя и расшифровывается только на устройстве получателя.

Работает без интернета

В офлайне сообщения идут по BLE и Wi-Fi Direct, перескакивая через соседние устройства.

Открытый код

Приложение и релейный хост собираются из открытых исходников, а сборки лежат на GitHub.

Три способа доставить сообщение

Soty сам выбирает подходящий канал: сначала пробует договориться напрямую, а релей подключает только тогда, когда устройства не видят друг друга.

Офлайн-меш

Без интернета и без вышек: сообщения идут по Bluetooth Low Energy и Wi-Fi Direct и перескакивают через соседние устройства, пока не найдут адресата.

Напрямую по сети

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

Релей для офлайна

Если получатель сейчас недоступен, шифрованный конверт подождёт на релее и уйдёт адресату, как только тот появится в сети. Плейнтекст туда не попадает.

Что происходит с сообщением

Один конверт — один получатель. Внутри нет ничего лишнего: только шифртекст, подпись отправителя и пара служебных полей.

  1. 1

    Шифрование у отправителя

    Для каждого сообщения создаётся одноразовая пара ключей X25519. Из общего секрета через HKDF выводится ключ AES-256-GCM, которым и шифруется текст.

  2. 2

    Подпись Ed25519

    Готовый конверт подписывается долговременным ключом отправителя, поэтому подменить текст, получателя или время по дороге не выйдет.

  3. 3

    Доставка

    Конверт уходит туда, где сейчас получатель: по мешу, напрямую по libp2p или на релей. Ни один из каналов не видит открытый текст.

  4. 4

    Проверка и расшифровка

    На приёмнике порядок фиксирован: часы → подпись Ed25519 → идентификатор → дубликаты → расшифровка. Всё, что не прошло проверку, молча отбрасывается.

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

Что уже умеет

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

Личные и групповые чаты

Переписка один на один и группы. Каждому участнику уходит свой конверт, поэтому ключи соседей по чату друг другу не видны.

Контакты по QR-коду

Свой ключ показывается QR-кодом, чужой считывается камерой. Обмен идёт между устройствами, посредник не нужен.

Статусы и чеки о прочтении

Отправлено, доставлено, прочитано. Чеки — такие же подписанные конверты, поэтому подделать их нельзя, а получатель может их не отправлять.

Работа в фоне

Пока приложение закрыто, приёмом занимается foreground-сервис с постоянным уведомлением. Его можно выключить в настройках.

Блокировка приложения

Вход по отпечатку или системному паролю: без разблокировки содержимое переписки не показывается.

Данные остаются у вас

Настройка «Хранить сообщения» решает, остаются ли ваши сообщения на устройстве. Лишнее удаляется само, а у релея свой срок хранения.

Несколько релеев

Можно держать сразу несколько релеев: приложение подключается к живому и предлагает заменить замолчавший адрес.

Тема и языки

Светлая, тёмная или системная тема. Интерфейс переведён на 10 языков, включая русский и английский.

Релеи и федерация

Релей — это обычная программа на чужом сервере. Она умеет одно: ждать шифрованные конверты для тех, кто сейчас офлайн. Хосты объединяются в федерацию и делятся друг с другом тем, что накопилось.

  • Офлайн-доставка

    Конверт для отсутствующего получателя лежит на релее и уходит адресату, как только устройство появится на связи.

  • Трекер вместо справочника

    Релей отвечает на вопрос «кто сейчас онлайн» и выдаёт адреса. Через него идёт только поиск, а не переписка.

  • Федерация хостов

    Хосты синхронизируются между собой: живой релей плюс анти-энтропия по накопленному. Если один узел ушёл в офлайн, конверт не потеряется.

  • Метаданные — честно

    Релей видит, что пришёл конверт, какого он размера и для кого. Текста он не видит. Если и это лишнее, есть меш и прямое соединение.

Подробнее

Публичные узлы проекта

  • Relay 1

    ws://85.198.75.50:3100/ws

    fad55cc762eda3f6cbc9c6522030ce8ec29e87143c9c78f452038d24143a4e82

  • Relay 2

    wss://price.dcns.ru/soty-ws

    dba88ecc7cd8053f76ddbe9c29d0bf63bb24e6234ebcaf9c074dcb0a1ce4b014

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

Скачать

Все сборки делаются из одного исходника: приложение для Android и Linux и релейный хост для оператора.

Последний релиз v1.3.0+10 опубликован 16 октября 2026

Android

Приложение мессенджера одним APK: скачать, разрешить установку из неизвестного источника и открыть файл. Подойдёт Android 8.0 и новее.

soty-release.apk · 86 MB

Скачать

Linux x64

Тот же мессенджер для компьютера. Распакуйте архив и запустите файл soty; нужны GTK 3 и libsqlite3.

soty-linux-x64.tar.gz · 20 MB

Скачать

Релейный хост

Узел офлайн-доставки и трекера: один бинарник, которому нужна только libsqlite3. Для тех, кто держит релей сам.

dtm_host.bin · 8 MB

Скачать
Контрольные суммы SHA-256 — в описании релиза и в файле SHA256SUMS. Все релизы на GitHub

Безопасность

Коротко о том, на что можно опереться, а что придётся принять как есть.

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

  • AES-256-GCM с 12-байтовым nonce: порча или подмена конверта обнаруживаются до расшифровки.

  • Подпись Ed25519 и фиксированный порядок проверок: часы, подпись, идентификатор, дубликат, расшифровка.

  • Ошибка аутентификации не переспрашивается и не попадает в логи: некорректный конверт просто исчезает.

Частые вопросы

Самое частое — коротко.

Нужен ли аккаунт или номер телефона?

Нет. При первом запуске приложение генерирует пару ключей — и всё. Ни регистрации, ни номера, ни почты.

Релей видит мои сообщения?

Нет. На релее лежит шифрованный конверт: без ключа получателя это просто байты. А вот метаданные — время и адресата — релей действительно видит.

Что будет, если получатель офлайн?

Копия останется у вас, а конверт подождёт на релее или у соседа в меше и уйдёт адресату, как только тот появится на связи.

Можно ли потерять переписку?

Только вместе с устройством. Сервера, на котором лежала бы копия, нет, а ключи хранятся только на устройстве.

На каких платформах это работает?

Android (APK) и Linux x64. Сборок для iOS, macOS и Windows пока нет: в вебе мешают локальная база и транспорты.

Все вопросы

Попробуйте без регистрации

Скачайте APK, отсканируйте QR-код собеседника — и можно писать. Ни шлюзов, ни настроек, ни подтверждений по SMS.