Документация rChat
rChat — мессенджер со сквозным шифрованием, который вы запускаете сами. Сообщения шифруются на вашем телефоне с помощью согласования ключей X3DH и алгоритма Double Ratchet, с шифром XChaCha20-Poly1305. Сервер, называемый ретранслятором (relay), передаёт шифротекст, который не может расшифровать.
rChat — программа для самостоятельного размещения, выпускаемая PDG Global Limited (Гонконг) по лицензии AGPL-3.0-or-later. PDG Global Limited не запускает ретрансляторы для пользователей. Ретранслятор — это один исполняемый файл на Rust, который сам завершает TLS 1.3 и может сам получить сертификат Let’s Encrypt. Клиент — нативное приложение для iOS (iPhone и iPad); нативное приложение для Android запланировано, приложение для Mac появится позже. Исходный код ретранслятора — в rchat-core.
Эта документация описывает протокол версии 2. Ретранслятор и приложение должны использовать одну версию: старые приложения получают отказ с сообщением «client too old; update rChat».
Что ретранслятор видит и чего не видит
Заголовок раздела «Что ретранслятор видит и чего не видит»- Он не может читать сообщения. Сообщения зашифрованы сквозным шифрованием, и у ретранслятора нет ключей сообщений.
- Он не может подменить ключи своими. Ключи каждой учётной записи подписаны её ключом идентичности, и приложение отвергает неподписанные ключи. Когда вы добавляете человека, сканируя его код, rChat запоминает его ключи и не будет общаться с ним под другими ключами.
- Пока он работает, он видит метаданные соединений. Он видит, какие учётные записи подключены, когда и с какого IP-адреса, какие две учётные записи открыли разговор, а в течение до десяти минут — какая учётная запись пытается связаться с какой. Он не записывает это в журналы.
- Он не хранит долговременных записей о том, кто с кем общается. То, что он держит в памяти для маршрутизации разговора, удаляется в течение десяти минут после отключения обоих собеседников. Сообщения для того, кто не в сети, хранятся в памяти до 72 часов (по умолчанию), под получателем, и удаляются после доставки.
В модели безопасности перечислено, от чего rChat защищает и от чего нет.
Как это работает
Заголовок раздела «Как это работает»Ваш телефон Ретранслятор rChat Телефон собеседника─────────── ────────────────── ───────────────────Сообщение → [Double Ratchet, дополнение] → WebSocket в TLS 1.3 → [маршрут] → [расшифровка]- Приложение подключается к ретранслятору по WebSocket внутри TLS 1.3, проверяет подписанную идентичность ретранслятора и доказывает свою идентичность в этом сеансе TLS.
- Оно публикует свои открытые ключи, подписанные ключом идентичности.
- Разговор открывается, только когда его запросили оба человека. Тот, у кого есть ваш код, но кого вы не приняли, отображается как запрос.
- Два телефона согласуют сеансовый ключ через X3DH и продолжают с Double Ratchet, так что каждое сообщение использует новый ключ. Каждое сообщение дополняется до размерной корзины.
- Ретранслятор пересылает зашифрованные пакеты или держит их в памяти, пока получатель не в сети.
С чего начать
Заголовок раздела «С чего начать»- Быстрый старт сервера: ретранслятор на порту 443 с автоматическими сертификатами.
- Установка: install.sh, проверка загрузок и настройка службы в Linux, FreeBSD и macOS.
- Выпуски: версии, контрольные суммы и сборка из исходного кода.
- Идентичность ретранслятора: создание, публикация и ротация ключа, который закрепляют ваши пользователи.
- TLS и сертификаты: встроенный ACME, статические сертификаты, устранение неполадок.
- Справочник по конфигурации сервера: все параметры и их значения по умолчанию.
- Модель безопасности: от чего rChat защищает и от чего нет.
- Приложение для iOS, для iPhone и iPad
- Доставка и восстановление: что означает каждый статус сообщения и что происходит, когда собеседник переустанавливает приложение.
- Ключ устройства: почему важно сканировать код лично.
- Устранение неполадок