Архитектура · 5 слоёв · 2 устройства · 1 правда

Архитектура
и есть обещание.

Политика приватности — это слова на странице; архитектура — это структура из невозможностей. DevoraX2 построена так, что даже если бы я захотел прочитать Ваши сообщения — я не смог бы. Страницы ниже открыто описывают каждый слой, делающий это утверждение истинным.

Я не прошу Вас доверять моим намерениям. Я прошу Вас доверять структуре — и я публикую каждую её часть, чтобы доверие можно было проверить.

— DevoraX2 · Хартия архитектуры

Раздел I · Слоистый разум

Пять слоёв,
от кожи до души.

DevoraX2 построена в пять слоёв, сложенных так, что каждый из них касается только непосредственного соседа. Ни один слой не может читать тот, что над ним. Прорыв одного слоя не распространяется вверх. В этом и весь смысл стека.

01
Внешний · то, что Вы видите

Cipher Personality

Персонализированный профиль защиты, который Вы настраиваете при установке. Знает, какие факторы применять к Вам, в каком порядке, с какими порогами. Никогда не покидает Ваши два устройства. Оборачивает всё, что ниже.

02
Над проводом

Application & UI

Сам мессенджер: чаты, звонки, Миры, настройки. Касается Personality сверху и Cross-Guard снизу. Никогда не видит сырого криптографического материала. Говорит только непрозрачными токенами.

А структура внутри — Ваша. То, что я называю «Мирами», Вы можете переименовать как угодно — уровни, глубину, логику вложенности рисуете Вы. Эта схема шифруется на Вашем устройстве, как ключи. Моё реле видит только непрозрачные UUID и запечатанные блобы; оно никогда не узнаёт, что один блоб — это «Мир», а другой — «Топик». Смысл живёт только на Вашем устройстве. Я называю этот слой Personal Structure Schema (PSS) — защита разнообразием, потому что нет двух одинаковых структур, и эксплойт, заточенный под одного пользователя, ничего не находит у другого.

03
Соглашение

Cross-Guard Protocol

Подписывает каждое чувствительное действие между Устройством A и Устройством B. Живёт между приложением и криптографическим ядром — не может расшифровать то, что подписывает, и не может подписать то, что расшифровывает. Свой ключ для каждого действия.

04
Математика

Cryptographic Core

PQXDH обмен ключами + ML-KEM-1024 (постквантовый), Double Ratchet (прямая и будущая секретность), ChaCha20-Poly1305 (аутентифицированное симметричное шифрование), Sealed Sender (приватность метаданных). Единственный слой, который касается открытого текста. Всё, что выше, непрозрачно для самого себя.

05
Труба

Transport

Запечатанные пакеты между устройствами и моим реле. WebSocket, QUIC, fallback на HTTPS. Транспортный слой не может читать криптографическое ядро над собой — он видит только шифротекст, адресованный непрозрачным сессионным токенам.

Раздел II · Топология двух устройств

Три узла.
Один может видеть; двое могут действовать.

Топология рантайма имеет трёх живых участников — Устройство A, Устройство B и реле (которое я называю «сервером»). У каждого узла точная область того, что он знает, и явная граница того, чего он не может.

Устройство A · Основное

Рантайм

Знает

Все Ваши сообщения, контакты, ключи, настройки. Расшифровывает входящие и шифрует исходящие. Держит рантайм.

Не может

Менять пароли, спаривать устройства, отключать режимы, экспортировать архивы или удалять Cross-Guard в одиночку.

Сервер · Реле

Свидетель

Видит

Запечатанные пакеты, непрозрачные сессионные токены, пинги присутствия. Маршрутизирует зашифрованные блобы с одного непрозрачного адреса на другой.

Не может

Читать содержимое сообщений, видеть кто с кем говорит (идентичность отправителя запечатана), подделывать подписи или изменять рукопожатия Cross-Guard. Не «не будет». Не может.

Устройство B · Страж

Суверенитет

Знает

Запросы на чувствительные действия от A. Их подписи, контексты, метки времени. Одобряет, отклоняет, замораживает, стирает, перевыпускает.

Не может

Держать постоянную копию всех сообщений, действовать в чате в реальном времени. Это власть, а не рантайм.

Хранилище · четвёртый узел (вне рантайма)

Хранилище — не живой участник — оно спит, ожидая. Получает непрерывные и панические бэкапы от Устройства A, запечатанные сквозным шифрованием с ключами, которые можете вывести только Вы. Мой сервер не может прочитать хранилище; провайдер хранилища не может прочитать содержимое. Вы выбираете его местоположение при установке (см. Раздел V ниже).

Раздел III · Криптографическое ядро

Восемь примитивов.
Каждый защищает от своей атаки.

Ядро построено из стандартных, хорошо проверенных криптографических примитивов. Ни один из них не нов. Новизна в криптографии — самая дорогая фича из существующих, и я не буду оплачивать этот счёт Вашими данными.

01 · Обмен ключами

PQXDH + ML-KEM-1024

X25519 ECDH + ML-KEM-1024 KEM (NIST FIPS 203)

Гибрид: классическое и постквантовое одновременно. Противник должен победить оба, чтобы вывести сессионный ключ — один из них не имеет известной квантовой атаки.

02 · Прямая секретность

Double Ratchet

Симметрический + DH ratchet, посообщённая ротация

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

03 · Аутентифицированное шифрование

ChaCha20 Poly1305

96-bit nonce · 128-bit auth tag

Тот же шифр, которому доверяют Signal, WireGuard и TLS 1.3 по всему миру. Один бит, перевёрнутый в передаче, вызывает громкий отказ.

04 · Запечатывание метаданных

Sealed Sender

Идентичность отправителя зашифрована внутри конверта

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

05 · Подписи идентичности

Ed25519

Edwards-кривая · 32-байтные ключи, 64-байтные подписи

Каждое устройство несёт один долгосрочный ключ идентичности. Приватная половина никогда не покидает устройство; публичная — это то, против чего другие устройства проверяют при открытии сессии.

06 · Хеширование контента

BLAKE3

256-битный вывод · параллельный tree-mode

Используется для адресации содержимого зашифрованных блобов и обязательств целостности в журнале аудита. Быстрый, параллельный и современный — преемник BLAKE2 из той же семьи проверенных хеш-дизайнов.

07 · Выведение из пароля

Argon2id

Memory-hard · 64 MiB цель, 3 прохода, 4 полосы

Разблокировка хранилища и материал GraphPIN проходят через Argon2id, прежде чем когда-либо коснутся симметрического ключа. Подбирающий атакующий платит полную стоимость памяти за попытку — brute force масштабируется железом, а не терпением.

08 · Выведение ключей

HKDF-SHA256

Extract + expand · метки с разделением доменов

Склеивает вывод гибридного KEM в сессионный ключ, со своей меткой на каждый шаг ratchet. Тот же примитив, что выводит сессионные ключи в TLS 1.3. Простой, проверенный, трудно злоупотребить, когда метки записаны.

Раздел IV · Работа сервера

Что мой сервер делает,
и чего он не может.

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

Что сервер делает

Он передаёт, он свидетельствует.

  • Передаёт запечатанные пакеты между устройствами, адресованные непрозрачным сессионным токенам.
  • Держит пинги присутствия — устройство бодрствует, устройство спит. Никакого содержимого, никаких метаданных кроме подключения.
  • Координирует рукопожатие Cross-Guard, нося подписанные пакеты от A к B и обратно. Не может прочитать, что они содержат.
  • Буферизует недоставленные сообщения как шифротекст, для доставки когда получатель придёт онлайн. Буфер непрозрачен даже для меня.
  • Распространяет широковещательные отзывы ключей, когда устройство стёрто или перевыпущено. Публичные подписанные сообщения, никаких приватных данных.
  • Пересылает триггеры SMS-Brick (когда используются через мой опциональный канал). Сам триггер подписан и адресован; я не могу его подделать или воспроизвести.
Чего сервер не может

Он не видит, он не держит.

  • Читать содержимое сообщений — математика не выдаст открытый текст на моей стороне, никогда, ни по какой причине.
  • Держать ключи сообщений — ключи существуют только на Ваших устройствах и удаляются при использовании.
  • Строить графы отношений — идентичность отправителя зашифрована внутри конверта. Я не могу сказать, кто с кем говорил.
  • Аутентифицировать Вашу идентичность — эту работу делает пара устройств. Я не могу подделать событие «вошёл как Вы».
  • Подделать одобрение Cross-Guard — подписи Устройства B проверяются локально на Устройстве A. Я могу нести пакет; я не могу его переписать.
  • Расшифровать хранилище — хранилище запечатано сквозным шифрованием с ключами, выведенными из Вашего сида и Ваших устройств. Даже когда я хостаю хранилище, я хостаю непрозрачные блобы.
Раздел V · Хранилище

Вы выбираете, где
Ваши данные переживают.

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

DevoraX2 облако

По умолчанию · zero-knowledge

Размещено у меня, на инфраструктуре, которой я управляю. Запечатано сквозным шифрованием — я хостаю непрозрачные блобы. Самая простая настройка, без зависимостей.

Доступно · Фаза II

Self-hosted

Ваш сервер, Ваши правила

Небольшой демон, который Вы запускаете на своём VPS, NAS или домашнем сервере. Непрозрачные блобы никогда не покидают инфраструктуру, которую Вы контролируете.

Следующее · Фаза IV

IPFS-пиннинг

Распределённое · адресуемое содержимым

Бэкапы запиннены в IPFS через Pinata, Filebase или Ваш собственный узел. Адресуемые содержимым, реплицируемые, цензуроустойчивые.

Следующее · Фаза IX

Hardware cold

Air-gapped · никогда онлайн

Периодические офлайн-записи на устройство с аппаратной защитой (USB-enclave, выделенный SSD). Air-gapped во время окон атаки.

Будущее · Фаза XIV

Federated

Реле от организации · Фаза XV

Хранилище, размещённое организацией, к которой Вы принадлежите (компания, издание, коалиция). Тот же протокол, локальное управление.

Будущее · Фаза XV
Раздел VI · Модель доверия

Кому и чему
Вы на самом деле доверяете.

У каждой безопасной системы есть модель доверия — список вещей, которые, если скомпрометированы, система предполагает, что они не таковы. Большинство компаний размывают этот список. Я перечисляю его явно: чему я доверяю, чему — нет, и почему.

Математика

Signal Protocol. ML-KEM-1024. ChaCha20-Poly1305. Стандартное, рецензированное, проверенное десятилетиями. Если математика падёт, вся область падёт раньше меня.

Открытый исходный код

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

Ваши два устройства

Пара, которую Вы настроили. Я доверяю им по замыслу — это единственные места, где когда-либо живёт открытый текст. Если оба скомпрометированы одновременно, модель ломается; именно поэтому существует Cross-Guard, именно поэтому существуют Режимы.

Ваш сид восстановления

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

Не мне

Мне не нужно быть достойным доверия, чтобы это работало. Я мог бы быть злонамеренным, небрежным, вызванным повесткой или несостоятельным — архитектура означает, что я не могу прочитать Ваши сообщения в любом случае. Смысл дизайна — убрать себя из Вашего списка доверия.

Не моему инфраструктурному провайдеру

Тот, кто хостит моё реле, видит только запечатанные пакеты. Не может читать содержимое, не может идентифицировать, кто с кем говорит. Взлом моего хостинг-провайдера даёт зашифрованный шум.

Не правительству и не судебному ордеру

Я не могу передать то, чего у меня нет. Повестки дают шифротекст. Кляп-ордера не могут заставить меня прочитать файл, от которого у меня нет ключа. Архитектура — это юридический ответ.

Раздел VII · Режимы отказа

Что происходит, когда
что-то ломается.

Privacy-продукт, игнорирующий собственные режимы отказа, — это продукт, который о них не подумал. Я подумал. Вот три самых значимых поломки — и то, что их переживает.

Поломка 01 · Тяжёлая

Что, если компания DevoraX2 исчезнет завтра?

→ Ответ

Мессенджер продолжает работать между сопряжёнными устройствами. Ваше хранилище остаётся доступным — если Вы self-host, бессрочно; если использовали моё облако — пока мой хостинг-счёт не уйдёт в дефолт (а opensource-мигратор позволяет переместить его раньше). Я не единственная точка отказа для Вашего прошлого. Я максимум единственная точка отказа для моих будущих обновлений — именно поэтому код открыт и воспроизводим.

Поломка 02 · Эксплуатационная

Что, если реле упадёт?

→ Ответ

Устройства буферизуют исходящие сообщения локально и повторяют. Рукопожатия Cross-Guard ставятся в очередь и возобновляются при переподключении. Федеративные реле (Фаза XV) дают альтернативы; до тех пор региональный сбой вызывает задержки, никогда — потерю данных. Уведомления откатываются к SMS-каналам там, где Вы согласились. Пауза — это худший случай.

Поломка 03 · Подрывающая доверие

Что, если аудит найдёт дефект?

→ The answer

Публичная пауза. Версионированная миграция. Я не выпущу фикс, скрывающий исходный дефект — и отчёт, и исправление становятся частью аудит-трейла. Доверие восстанавливается прозрачностью, а не молчанием. Если я не могу его восстановить — я об этом скажу и попрошу пользователей мигрировать на то, что переживёт поломку. Я не буду делать вид, что плохой новости не было.

Раздел VIII · Почему такой дизайн

Архитектура
и есть аргумент.

Я мог построить более простой мессенджер. Я не стал — три раза подряд. Вот три решения, сделавшие DevoraX2 тем, что она есть — и почему каждый компромисс был правильным.

I.

Почему два устройства, а не одно.

Одно устройство — это единственная точка отказа — и единственная точка принуждения. С одним телефоном, одним PIN, одной биометрией Вы и атакующий, держащий Ваш телефон, функционально неотличимы для замка. Два устройства дают замку второй голос, у которого можно спросить перед открытием. Цена — владеть вторым телефоном. Выгода — что первый телефон в одиночку не оканчивает Вас.

II.

Почему открыто, а не непрозрачно.

Privacy-продукт с закрытым кодом — это продукт, просящий доверия на словах. Я не хочу такого доверия — оно не переживает одной плохой новостной недели. Поэтому я публикую код, протоколы, аудиты, архитектуру. Если я когда-нибудь зашью бэкдор — opensource-сообщество увидит его раньше моих инвесторов.

III.

Почему медленно, а не быстро.

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

— Вот архитектура —

Восемь разделов. Пять слоёв. Два устройства.
Одно обязательство — проверяемость.

Если Вы хотите прочитать криптографическое погружение, протокол двух устройств или режимы, защищающие Вас под давлением — страницы Security идут слой за слоем.