Перейти к содержимому

Клиенты

Клиенты rChat — нативные приложения. Надписи в приложении ниже приводятся по-английски, как они выглядят в интерфейсе.

КлиентСтатус
Приложение для iOSiPhone и iPad, iOS 17 или новее. Скоро в App Store.
Приложение для AndroidЗапланировано как нативное приложение.
Приложение для MacПоявится позже.

Все клиенты говорят на протоколе версии 2. Клиент, который его не поддерживает, получает отказ «client too old; update rChat».

Клиенты подключаются по URL WebSocket, который включает websocket_path ретранслятора:

wss://chat.example.com/<websocket_path>
  • Используйте wss://. Выпускные сборки приложения отказываются от ws://, кроме тестового ретранслятора на том же устройстве. Ретранслятор принимает только TLS 1.3.
  • Путь должен точно совпадать с websocket_path ретранслятора. При неверном пути ретранслятор отвечает сайтом-приманкой, и клиент так и не подключается.
  • Не указывайте порт, если ретранслятор работает на 443.
  • Попросите у оператора ретранслятора его пин (rk:1:…). Если ввести его, приложению не придётся доверять первому подключению; см. Идентичность ретранслятора.

Когда приложение показывает 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 не утверждает, что его трафик похож на браузерный.