Клиенты
Клиенты rChat — нативные приложения. Надписи в приложении ниже приводятся по-английски, как они выглядят в интерфейсе.
| Клиент | Статус |
|---|---|
| Приложение для iOS | iPhone и iPad, iOS 17 или новее. Скоро в App Store. |
| Приложение для Android | Запланировано как нативное приложение. |
| Приложение для Mac | Появится позже. |
Все клиенты говорят на протоколе версии 2. Клиент, который его не поддерживает, получает отказ «client too old; update rChat».
URL сервера
Заголовок раздела «URL сервера»Клиенты подключаются по URL WebSocket, который включает websocket_path ретранслятора:
wss://chat.example.com/<websocket_path>- Используйте
wss://. Выпускные сборки приложения отказываются отws://, кроме тестового ретранслятора на том же устройстве. Ретранслятор принимает только TLS 1.3. - Путь должен точно совпадать с
websocket_pathретранслятора. При неверном пути ретранслятор отвечает сайтом-приманкой, и клиент так и не подключается. - Не указывайте порт, если ретранслятор работает на 443.
- Попросите у оператора ретранслятора его пин (
rk:1:…). Если ввести его, приложению не придётся доверять первому подключению; см. Идентичность ретранслятора.
Что означает «Encrypted»
Заголовок раздела «Что означает «Encrypted»»Когда приложение показывает Encrypted, есть живое подключение к ретранслятору и сквозной сеанс с этим собеседником. Сообщения шифруются на вашем телефоне и могут быть расшифрованы только сеансовыми ключами.
Насколько можно полагаться на ключи собеседника, зависит от того, откуда они взялись; это показывает Contact Info:
- Keys from their code (ключи из его кода): вы отсканировали или вставили его код, значит, это ключи, которые он вам дал.
- Keys from their first message (ключи из его первого сообщения): он связался с вами через запрос, и rChat не может определить, кто стоит за ключом. Чтобы проверить, отсканируйте его код лично или сравните коды безопасности.
Приложение никогда не использует «verified» как статус. Сравнённый код безопасности отображается как сравнённый, и отметка снимается, если ключи собеседника меняются. См. Модель безопасности.
Доставка и восстановление
Заголовок раздела «Доставка и восстановление»Приложение показывает, отправлено ли, доставлено ли и прочитано ли каждое сообщение, и сообщает, когда телефон собеседника не смог прочитать некоторые ваши сообщения. Если ключ устройства его телефона был закреплён из его кода (сканированием лично или вставкой, которой вы его впервые добавили), rChat отправляет такие сообщения повторно автоматически; иначе вы нажимаете Resend. См. Доставка и восстановление.
Общее ядро
Заголовок раздела «Общее ядро»Приложения построены на одном ядре на Rust, shared/rchat-core, которое выполняет криптографию, протокол и подключение. Нативные приложения вызывают его через интерфейс C (функции rchat_*). Его исходный код — в rchat-core. Приложение для iOS использует его уже сейчас, а запланированное приложение для Android будет привязано к тому же интерфейсу.
Подключение ядра использует BoringSSL. Оно не воспроизводит поведение TLS веб-браузера, и rChat не утверждает, что его трафик похож на браузерный.