Доказательство · открытый код

Не верьте на слово — проверьте

Любой мессенджер говорит «мы не читаем ваши сообщения». Мы не просим верить, а даём проверить: код открыт, тесты запускает любой, звонок можно перехватить Wireshark и убедиться самому.

4 октября 2026 · 7 минут чтения
01

Коротко

  • Каждое сообщение запечатывается на телефоне отправителя сразу двумя алгоритмами: X25519 и постквантовым ML-KEM-1024 (Kyber). Чтобы прочитать, нужно взломать оба.
  • Сервер получает адрес ящика и шифротекст. Ни текста, ни отправителя, ни получателя в нём нет.
  • Звук и видео шифруются DTLS-SRTP между двумя телефонами. Ретранслятор пересылает пакеты, которые не может открыть.
  • Всё это проверяется: код на GitHub, 7 тестов запускаются одной командой, звонок проверяется в Wireshark.
02

Сообщения: как запечатывается каждое

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

Этот пакет запечатывается получателю: на каждое сообщение создаётся новый одноразовый ключ X25519 и делается инкапсуляция ML-KEM-1024. Оба секрета сводятся в один ключ через HKDF-SHA256, а пакет закрывается AES-256-GCM. Результат дополняется до фиксированного размера.

Конверт внутри конверта: снаружи остаются только адрес ящика и шифротекст одинакового размера.
03

Что видит сервер

ДанныеСервер видит?
Текст сообщения, фото, голосовые
Только шифротекст
нет
Кто отправил
Отправитель спрятан внутри конверта
нет
Кому
Только адрес ящика, который вычисляют лишь двое и который меняется каждую неделю
нет
Точный размер
Только размерная «корзина»
нет
Время доставки
Без него нельзя доставить
да
IP-адрес
Как любой сайт. Не видит, если включить Tor в настройках
да / Tor

Мы специально показываем и то, что сервер видит. Доказательство, которое скрывает неудобное, — это реклама.

04

7 тестов, которые запускает любой

В репозитории лежит файл tests/proof.rs. Он воспроизводит ту самую печать, которой закрывается каждое сообщение, и проверяет каждое утверждение. Например:

Ключ X25519 получателя у атакующего есть, ключа ML-KEM — нет. Сообщение не открывается.
Тест моделирует будущий квантовый компьютер, который взломал X25519. Без ключа ML-KEM-1024 сообщение всё равно не открывается.

Проверьте сами — три команды

Нужен только Rust. Сборка и тесты идут на Linux, macOS и Windows. rustup.rs

Терминал
$ git clone https://github.com/UmberaAPP/UMBERA
$ cd UMBERA
$ cargo test
running 7 tests
test result: ok. 7 passed; 0 failed; 0 ignored

Результат на нашем компьютере. На вашем должно быть то же самое.

05

Звонки: ключи только у двух телефонов

Звук и видео шифруются DTLS-SRTP — это шифрование, встроенное в WebRTC. Рукопожатие DTLS идёт прямо между двумя телефонами. Если прямое соединение невозможно, пакеты идут через ретранслятор (TURN): он не участвует в рукопожатии и ключей не имеет. Групповые звонки соединяют участников напрямую.

Ретранслятор нужен, только если прямое соединение невозможно.
  • Описание звонка (SDP с отпечатками DTLS) шифруется как обычное сообщение.
  • Чужая или изменённая подпись — звонок не устанавливается. Сервер не может встать посередине.
06

Проверка звонка в Wireshark

  • Подключите телефон к Wi-Fi, который вы контролируете, и запишите его трафик Wireshark — например, на ноутбуке, раздающем интернет.
  • Сделайте звонок в Umbera.
  • Поставьте фильтр, указанный ниже.
  • Вы увидите рукопожатие DTLS и дальше только зашифрованные пакеты SRTP.
dtls || rtp || srtp
07

Честные допущения

Доказательство честно ровно настолько, насколько честны его условия.

Телефоны участников не заражены

Вирус на устройстве видит экран — от этого не защитит ни один мессенджер.

Получатель сам не пересылает переписку

Шифрование не может запретить человеку поделиться тем, что он получил.

Стандартные алгоритмы надёжны

ML-KEM-1024, X25519, AES-256-GCM, HKDF-SHA256, DTLS-SRTP — стандарты NIST и IETF. Свои шифры мы не изобретаем.

Ключи важного контакта сверены

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

08

Что опубликовано

Криптографическое ядро на Rust — те же библиотеки RustCrypto, dalek и OpenMLS, что и в приложениях, — и протокольный слой на Kotlin. Сервер и интерфейс приложения в репозиторий не входят.

Лицензия PolyForm Strict 1.0.0: читать, собирать, запускать тесты и проверять может любой.

Нашли уязвимость?

Если вы сможете опровергнуть хотя бы одно утверждение, мы хотим узнать об этом первыми. Отвечаем на каждое сообщение. Как сообщить — в файле SECURITY.md

Приватность, которую можно проверить

Без номера телефона и почты. Постквантовое шифрование каждого сообщения.

Поделиться доказательством:XHacker News