DisApp Messenger
Сквозно зашифрованный мессенджер с архивом для комплаенса и восстановлением через эскроу-ключ — без клиентского бэкдора.
- E2E-шифрование на каждое устройство
- Эскроу-ключ восстановления (offline)
- Двухролевая разблокировка (админ + аудитор)
- Web и Android побайтово совместимы
DisApp решает мессенджерную проблему, от которой обычно увиливают продукты «secure by default»: регулируемым организациям нужен архив, но архив с ключом онлайн — это, по сути, бэкдор. DisApp проходит сквозь это игольное ушко. Каждое сообщение шифруется на каждое устройство — X25519 ECDH для обмена ключами, AES-256-GCM для тела, ECDSA-P-256 для подписи. Параллельно тот же ключ шифрования контента упаковывается под офлайн-эскроу-ключ. Клиенты никогда не владеют приватным эскроу-ключом — компрометация любого клиента не компрометирует архив.
Распаковка архивных сообщений требует операционного контроля по двум ролям: админ и аудитор должны согласовать процедуру по документированному регламенту, прежде чем держатель эскроу-ключа запустит расшифровку. Ни одна роль не может сделать это в одиночку, а сам эскроу-ключ не выходит в сеть. Архитектура намеренно подготовлена под будущий переход на MLS; формат провода уже совместим с MLS.
Два клиента построены по одному спекту: React-TS-SPA на WebCrypto и @noble/curves для браузеров и Android-клиент на Kotlin / Jetpack Compose, опирающийся на Android Keystore и BouncyCastle. Оба реализуют протокол байт-в-байт — ключи, сгенерированные на одном устройстве, прозрачно используются на другом. Go-бэкенд (chi + pgx + PostgreSQL) — без состояния и пересылает только шифротекст.