Архитектура без магии
Сообщение видно только тем,
для кого оно написано
Нажимайте на этапы и смотрите, что происходит с сообщением, кто что видит и почему взлом одного промежуточного сервера не раскрывает текст.
Путь одного сообщения
От клавиатуры до экрана собеседника
1 / 6
Что путешествует по сети
Не текст, а непрозрачный контейнер
Текст превращается в ciphertext ещё на устройстве отправителя. Промежуточные сервисы работают с зашифрованными данными и служебной информацией, необходимой только для доставки.
Открытый текст существует до шифрования и после расшифровки.
v1 · nonce · 9f3a…e21c · auth tag
Сервер может доставить пакет, но не прочитать исходную фразу.
Несколько независимых нод
Сообщение не привязано к одному серверу
Home обслуживает пользователя, Relay передаёт трафик, Discovery помогает найти актуальный маршрут, а Storage ждёт офлайн-получателя.
Кто что видит?
Выберите устройство, Home или Relay — здесь появится его роль и доступная ему информация.
Базовый Relay может использовать прямую доставку и дополнительный L2-переход. Сообщение остаётся E2EE, но Relay текущей версии ещё видит целевую Home Node.
Sphinx-подобные слои, fixed-size cells, multipath, K-of-N, mix pool, jitter и cover traffic должны уменьшать корреляцию маршрута. Это направление разработки, а не уже доказанная гарантия.
Звонки — отдельный транспорт
Сигнал идёт через OUO, голос — коротким маршрутом
Текст можно задерживать ради смешивания трафика. Разговору нужна низкая задержка, поэтому звонок не проходит через медленный Mix Pool.
Договориться о звонке
Offer, answer, ICE-кандидаты, отмена и завершение отправляются как защищённые служебные сообщения по обычному маршруту OUO.
Прямой голосовой поток
WebRTC выбирает прямой путь, когда сеть позволяет. Аудио защищено DTLS-SRTP, но стороны могут увидеть IP друг друга.
Логика signaling и восстановления соединения проверена локально. Реальный Web ↔ desktop аудиозвонок, внешний NAT и relay-only режим ещё должны пройти сквозной тест на разных сетях.
Жизненный цикл данных
Не всё хранится в одном месте и одинаково долго
Серверная доставка, локальная история и временный offline mailbox — разные слои с разными ключами и сроками жизни.
Личная история
Расшифрованная переписка доступна клиенту и хранится в локальной зашифрованной базе по выбранной политике.
- Содержимое
- plaintext для пользователя
- Защита
- локальное шифрование + ключ устройства
Доставка и очередь
Работает с ciphertext и служебными данными доставки. Не должен становиться постоянной копией всей переписки.
- Содержимое
- ciphertext + минимум metadata
- Срок
- задаётся политикой retention
Получатель офлайн
Временно держит непрозрачный пакет до получения, ACK или истечения TTL. Opaque mailbox-путь ещё интегрируется полностью.
- Содержимое
- encrypted cell
- Удаление
- ACK / expiry / quota
Только транзит
Relay пересылает сообщения, TURN — зашифрованный медиапоток. Архив сообщений или запись звонка им не нужны.
- Содержимое
- ciphertext / SRTP packets
- Цель
- получить → передать → забыть
Взгляд снаружи
Шифрование скрывает содержание, но не делает сеть невидимой
Провайдер или глобальный наблюдатель может заметить соединение с OUO, объём и время трафика. Он не получает текст сообщения или ключи.
- IP и факт соединения
- время и объём пакетов
- сетевые endpoints
- статистические связи
- текст сообщения
- E2EE-ключи
- содержимое звонка
- локальную историю
Минимум доверия
Каждый компонент знает только необходимое
Устройство
Знает: текст, ключи своей сессии и собеседника.
Не отдаёт: E2EE-ключи Home, Relay или Storage.
Home Node
Знает: подключённое устройство и куда передать ciphertext.
Не знает: содержание сообщения и ключ расшифрования.
Relay
Сейчас знает: транспортные переходы и целевую Home Node базового маршрута.
Не знает: plaintext и E2EE-ключи; сокрытие полного маршрута относится к следующему Mix-этапу.
Storage
Хранит: delivery/mailbox-идентификатор и зашифрованный пакет с ограниченным сроком жизни.
Не получает: открытую историю переписки.
Почему это важно
Взлом сервера — не равен взлому переписки
Обычный серверный мессенджер концентрирует слишком много доверия в одном месте. OUO разделяет роли: устройства шифруют, Home доставляет, Relay транзитит, Storage временно ждёт получателя.
- 01Ключи остаются на устройствах
Инфраструктура не становится E2EE endpoint.
- 02Офлайн не превращается в вечный архив
Storage — временный буфер, а не серверная копия жизни пользователя.
- 03Отказ одной ноды не обязан останавливать сеть
Маршруты и инфраструктурные роли можно распределять.
Хотите увидеть это в работе?
Откройте тестовый клиент или изучите исходный код протокола.