Назад к возможностям
Мобильное приложениеЧат5 мин чтения

Зашифрованный P2P-чат на Android

Отправляйте текст и файлы напрямую другим устройствам PlainApp в вашей сети. Сквозное шифрование XChaCha20-Poly1305, без центрального сервера.

Экран Чат — это встроенный одноранговый мессенджер PlainApp. Откройте его, и вы увидите список всех других устройств PlainApp в вашей сети — сопряжённые пиры, несопряжённые пиры, ожидающие сопряжения, и любые каналы (групповые чаты), в которые вы вступили или которые создали. Нажмите на один, и вы попадёте в окно беседы с сообщениями-пузырьками, вложенными файлами и индикатором шифрования для каждого сообщения.

Чат работает полностью на телефоне. Нет центрального сервера, нет учётной записи, нет поиска по номеру телефона. Сообщения передаются напрямую с вашего устройства на устройство пира по наилучшему доступному транспорту — Wi-Fi Aware, когда оба устройства его поддерживают, в противном случае по локальной сети, с Bluetooth Low Energy в качестве резервного варианта для обнаружения. Каждое сообщение зашифровано сквозным шифрованием, и ключи никогда не покидают устройства, на которых они были созданы.

Скриншот: Чат

Скриншот: Чат

Ключевые возможности

  • Прямая одноранговая передача сообщений — текст и файлы отправляются напрямую с вашего устройства на другое устройство PlainApp без ретранслятора посередине.
  • Каналы (групповой чат) — создайте канал и пригласите сопряжённых пиров. Сообщения в канале шифруются для каждого участника индивидуально.
  • Вложения файлов — прикрепляйте фото, документы или любые файлы с экрана «Файлы». Файлы шифруются и отправляются по тому же транспорту, что и текст.
  • Индикатор шифрования для каждого сообщения — каждое сообщение показывает значок замка после того, как оно было зашифровано и подтверждено пиром.
  • Резервный транспорт — сообщения автоматически выбирают наилучший доступный транспорт: LAN, Wi-Fi Aware или BLE для обнаружения.
  • Длинные сообщения как файлы — всё, что превышает 2048 символов, автоматически отправляется как зашифрованный текстовый файл вместо текстового пузырька.

Пошаговое руководство

  1. Откройте вкладку «Чат» в нижней панели навигации. Список показывает локальный чат (ваше собственное устройство), любые каналы, в которые вы вступили, и сопряжённых пиров со статусом онлайн.
  2. Нажмите на сопряжённого пира, чтобы открыть беседу. Если пир не сопряжён, нажмите на него, чтобы начать процесс сопряжения — отсканируйте QR-код пира или примите запрос на сопряжение.
  3. Введите сообщение в строке ввода внизу и нажмите отправить. Значок замка рядом с сообщением показывает состояние шифрования; он подтверждается, когда пир подтверждает получение.
  4. Прикрепите файл — нажмите кнопку вложения и выберите файл с экрана «Файлы». Файл шифруется и загружается пиру по активному транспорту.
  5. Проверьте индикатор шифрования — нажмите и удерживайте отправленное сообщение, чтобы увидеть его статус доставки, отпечаток ключа шифрования и используемый транспорт.
  6. Переключите транспорт — если пир доступен и через LAN, и через Wi-Fi Aware, беседа автоматически выбирает более быстрый. Потяните, чтобы обновить и принудительно переподключиться.

Советы и хитрости

  • Сопрягите оба устройства один раз, и они останутся сопряжёнными. Сопряжённые пиры автоматически переподключаются, когда снова оказываются в одной сети.
  • Создайте канал для групповой рассылки сообщений нескольким пирам одновременно. Каждый участник получает индивидуально зашифрованную копию каждого сообщения.
  • Если сообщение не удалось отправить, нажмите на него, чтобы открыть модальное окно статуса доставки и повторить попытку без повторного ввода.
  • Длинные сообщения (более 2048 символов) автоматически отправляются как зашифрованные текстовые файлы — нет необходимости разбивать их самостоятельно.

Заметки о конфиденциальности и безопасности

  • Сообщения защищены сквозным шифрованием с использованием XChaCha20-Poly1305. Ключи выводятся для каждой беседы и никогда не покидают участвующие устройства.
  • Каждое устройство подписывает свои сообщения ключом Ed25519. Пир проверяет подпись с помощью открытого ключа отправителя, который передаётся при сопряжении.
  • Сопряжение использует обмен ключами ECDH P-256 для установления общего секрета. Процесс сопряжения происходит через сканирование QR-кода или кратковременный локальный канал; на любом этапе не задействуется центральный сервер.

Связанные возможности