Обзор
Приложения Clouchat связываются с сервером по собственному протоколу ClouProto 3. Это двоичный протокол поверх одного долгоживущего соединения: в нём идут вызовы методов от клиента и события от сервера — новые сообщения, статусы прочтения, присутствие, звонки.
Соединение защищает стандартный TLS 1.3 в строгой конфигурации, а не собственная криптография. Протокол используют только официальные приложения Clouchat.
Транспорт
| Параметр | Значение |
|---|---|
| Защита канала | только TLS 1.3, более старые версии не поддерживаются |
| Обмен ключами | только гибрид X25519 + ML-KEM-768 |
| Шифры | AES-256-GCM, ChaCha20-Poly1305 |
| 0-RTT | выключен |
| Веб-клиент | WebSocket поверх HTTPS |
Проверка сервера
Мобильные приложения не используют удостоверяющие центры: открытый ключ сервера закреплён в самом приложении. Поддельный сертификат от любого удостоверяющего центра не пройдёт проверку. Запасной ключ хранится офлайн, и переход на него не требует выпуска новых приложений.
Браузер не умеет закреплять ключи, поэтому веб-клиент полагается на обычную проверку сертификата web.clouchat.org.
Вход и привязка к соединению
Устройство подтверждает свой ключ доказательством, привязанным к конкретному TLS-соединению (RFC 9266). Перехваченное доказательство нельзя повторить в другом соединении. До входа доступны только методы регистрации.
Хранение и уведомления
- На сервере сообщения шифруются AES-256. У каждого чата свой ключ, ключи хранятся отдельно от данных.
- Содержимое пуш-уведомлений шифруется ключом установки приложения.
- Локальная база приложений зашифрована ключом из защищённого хранилища системы.
Звонки
Сигналинг звонков идёт через ClouProto, а медиа — отдельно, по SRTP. Ключи медиа согласуют сами устройства через DTLS-SRTP. По умолчанию трафик идёт через ретранслятор, поэтому собеседники не видят IP-адреса друг друга.
Модель угроз
| Угроза | Защита |
|---|---|
| Перехват и подмена в сети | TLS 1.3 и закреплённый ключ сервера |
| Сертификат от скомпрометированного удостоверяющего центра | приложения не доверяют удостоверяющим центрам |
| Откат на старую версию TLS или классический обмен ключами | клиент не предлагает, сервер не принимает |
| «Записать сейчас, расшифровать потом» | ML-KEM-768 в обмене ключами |
| Повтор перехваченного входа | привязка доказательства к соединению |
| Утечка ключа сервера | переход на запасной ключ без обновления приложений |
Что не публикуется
Схема методов ClouProto не публикуется. Для собственных интеграций используйте Bot API.