Signet

Мессенджер, у которого нечего выдавать

Сквозное шифрование по протоколу Signal. Регистрация без номера телефона и без почты. Доставка без сервисов Google. А что именно уходит с вашего телефона — можно посмотреть прямо в приложении, а не поверить на слово.

Android 8.0+ · прямая загрузка, без магазинов приложений

проверяю сервер…

Что внутри

Восемь вещей, которые делают его нашим

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

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

Пост-квантовый обмен ключами

PQXDH — гибрид X25519 и Kyber-1024 (ML-KEM). Работает, когда обе стороны на свежей сборке; со старым клиентом сессия остаётся классической X25519. Оговорка: увидеть, какая именно у вас с конкретным собеседником, пока нельзя — приложение помнит это про себя, но на экран не выводит.

Звонки, которые идут мимо сервера

Аудио и видео на WebRTC с DTLS-SRTP. Когда сеть позволяет — напрямую между телефонами. Когда нет — через наш TURN-ретранслятор, который перекладывает уже зашифрованный поток и в него не заглядывает.

Журнал сети — внутри приложения

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

Число безопасности

Сверьте его с собеседником лично или голосом — и вы знаете, что между вами никого нет. Если ключ собеседника сменится, приложение предупредит и не сделает вид, что всё в порядке.

Исчезающие сообщения

Таймер на чат: по истечении срока запись стирается с перезаписью, а не просто помечается удалённой. По умолчанию выключено — включаете вы, а не мы за вас.

База на диске зашифрована

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

Вложения проверяются по байтам

Тип файла определяется по содержимому, а не по расширению. Исполняемое под видом фотографии не откроется, и открыть можно только то, что действительно картинка, видео, звук или PDF.

Без прикрас

Что наш сервер видит, а что нет

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

ДанныеСерверКак именно
Текст сообщенийне видитшифруется на устройстве; на сервере лежит только шифротекст
Файлы, фото, голосовыене видитшифруются тем же ключом сессии, что и текст
Содержимое звонковне видитDTLS-SRTP между устройствами; TURN пересылает шифропоток
Номер телефона, почтане существуетпри регистрации не спрашиваются — их просто нет в базе
Список ваших контактовне видитхранится на телефоне, целиком на сервер не выгружается. Оговорка: если включить статус «в сети», приложение начинает спрашивать сервер про ваших собеседников — тогда этот набор ему виден. Поэтому статус по умолчанию выключен
Кто кому пишетможет определитьполе отправителя у конверта пустое, но причин две и они независимы: рядом едет служебный сертификат, который сервер пока читает, и, чтобы вернуть вам галочку «доставлено», сервер держит ссылку на настоящего отправителя — она стирается только по отметке о прочтении, а при выключенных квитках живёт весь срок хранения. Разбор обеих
Когда вы в сетичастичнопо умолчанию выключен; «был в сети» огрубляется до минуты
Кто кому звонил и когдавидитсервер сводит звонок, поэтому знает обе стороны: запись живёт до 4 часов, маркер пропущенного — 7 дней
IP-адрес подключениявидитнеизбежно для любого сервера. Хотите скрыть — подключайтесь через VPN или Tor
Сервисы Googleне участвуютуведомления идут по своему постоянному соединению, без FCM

Прямо сейчас это значит: содержимое вашей переписки серверу недоступно, а вот сам факт «этот аккаунт написал этому» — доступен. Мы не называем это «сервер слеп к отправителю», пока это не станет правдой на работающем сервере. Подробный разбор — на странице приватности.

Установка

Три шага, никаких магазинов

  1. Скачайте APK

    Кнопка в начале страницы. Файл раздаёт тот же сервер, что и переписку.

  2. Разрешите установку из этого источника

    Android спросит один раз. Если ставите поверх прежней сборки — переустановка не нужна, подпись та же.

  3. Создайте приватный ID

    Ни номера, ни почты, ни подтверждений. Дальше отдайте свой ID или QR тому, с кем хотите говорить.

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

Проверка

Не верьте странице — сверьте сами

SHA-256 файлазагружаю…
Отпечаток подписи · Android 13+c987d1e6cd45d3f594e68164cc7cc7a764bce504a66e769580119e06da907c30
Отпечаток подписи · до Android 13c900acccf8bbcd02e0c3049f7fc2a70fe1e03cb17bdab0a32705ff0fdd36891e

Хэш файла подтверждает, что APK скачался байт-в-байт без подмены. Отпечаток подписи — что его собрали тем же ключом, что и прежние сборки, а не перепаковал кто-то другой; он не меняется от версии к версии.

Сверяйте оба значения через отдельный доверенный канал — лично, голосом, в другом мессенджере. Страница, которую вам могли подменить, не может подтвердить сама себя.

# хэш файла
sha256sum signet.apk
# в Windows
certutil -hashfile signet.apk SHA256
# отпечаток подписи
apksigner verify --print-certs signet.apk

Почему два отпечатка. С версии 26110119 сборки подписаны отдельным релизным ключом (CN=Veil). Переход бесшовный: цепочка подписи построена и проверена, поэтому новая версия встаёт поверх прежней без переустановки и без потери переписки. Android 13 и новее проверяет по новому ключу, более старые версии — по прежнему рабочему (CN=Android Debug). apksigner покажет ровно эту пару — сверяйте тот отпечаток, который соответствует вашей версии Android.

Сервер

Один ретранслятор, и он на виду

Состояниепроверяю…
Основное имяrelay.signets.social
Запасное имя193-168-141-146.sslip.io
IP193.168.141.146
ТранспортTLS · WebSocket
TURN / STUN:3478 · udp + tcp

У сервера два имени в разных DNS-зонах: если основное перестаёт разрешаться, приложение само уходит на запасное — тот же сервер, те же закреплённые сертификаты. Сертификат проверяется по закреплённым корням Let’s Encrypt, поэтому сертификат от любого другого удостоверяющего центра приложение отвергнет. Но честно: это не привязка к имени. Тот, кто перехватит управление доменом, получит на него настоящий сертификат Let’s Encrypt, и закрепление корня его не остановит — от этого защищает только сверка числа безопасности с собеседником.

Чего здесь нет

Signet — не Signal

Это небольшой мессенджер для узкого круга, а не сервис с аудитом и штатом. Честно о границах:

  • Один сервер и один оператор. Упадёт он — переписка не потеряется, но доставка встанет.
  • Внешнего аудита кода не было. Были свои разборы, они лежат в репозитории вместе с найденным.
  • Сборка раздаётся файлом, а не через магазин. Значит, проверка подлинности — на вас; выше написано как.
  • Групповые чаты и боты работают, но проверены меньше, чем переписка один на один.

Если вам нужен мессенджер с внешним аудитом и миллионами пользователей — берите Signal, это правильный выбор. Signet имеет смысл, когда вы хотите свой сервер, без номера телефона и без Google.