habrahabr

Анонимный мессенджер — обязательный стандарт для каждого человека

  • среда, 13 ноября 2024 г. в 00:00:10
https://habr.com/ru/articles/851866/


В наше время важность анонимности в интернете возросла многократно. Интернет уже не то место, где можно спокойно себя чувствовать, сегодня за лайк или неосторожную фразу в чате может прилететь несколько лет в тюрьме. Такова сегодняшняя реальность, и не только в РФ и РБ, но и в более цивилизованных странах.

Даже если вы сейчас не нарушаете никаких законов, ваш трафик и история сообщений сохраняются «где надо», а в будущем и законы изменятся, и архивы поднимут, можно не сомневаться. У нас законы имеют обратную силу.

Поэтому анонимное средство коммуникаций с надёжным шифрованием — это обязательный стандарт для нормального человека. Телеграм с секретными чатами — не самый лучший вариант. Чтобы гарантировать подобие анонимности, там нужно совершить ряд необязательных действий, включая покупку виртуального номера за TON'ы (сначала нужно купить эти TON'ы, что тоже нетривиальная процедура).

Спрашивается, зачем нужен виртуальный номер, если можно реализовать регистрацию вообще без номера, как в нормальных анонимных мессенджерах?

Опыт 2020 года в Беларуси показал, какими методами пользуются спецслужбы для деанонимизации пользователей. Первыми под репрессии попали администраторы популярных каналов и сообществ в телеграме. Через них власти получили контроль над каналами, списки подписчиков и др.

Получив физический доступ к устройству на несколько минут, они подключают к аккаунту Telegram сторонний клиент на своём ПК (специальный клиент, который разрабатывается для силовых структур). Через него быстро скачивается вся история сообщений во всех каналах Telegram, список контактов и отслеживается дальнейшая коммуникация пользователя. Что интересно, этот сторонний клиент не отображается в списке активных сессий в настройках Telegram, пользователю только приходит служебное сообщение «Вход с нового устройства» примерно такого вида:



Его оперативник сразу помечает как прочитанное, чтобы жертва ничего не заметила, когда ей вернут смартфон.

Мобильные телефоны у жителей Беларуси проверяют прямо на улице, так что о безопасности нужно помнить постоянно, см. методы противодействия деанону и двойное дно.

Недавно в списке защищённых мессенджеров появилось несколько интересных разработок. Среди них первый распределённый групповой P2P-чат Quiet, первый мессенджер без использования идентификаторов пользователей SimpleX, эфемерный мессенджер Chitchatter, анонимный мессенджер BeProg и другие. Очевидно, что проблема анонимных сообщений в интернете сейчас крайне актуальна.

В разработке анонимного мессенджера главная проблема заключается в том, что для коммуникации между объектами обязательно нужны идентификаторы (ID) этих объектов. Поэтому все существующие мессенджеры, в том числе самые защищённые Signal, Matrix, Session, Briar, Jami, Cwtch и другие действительно используют ID пользователя в том или ином виде, хотя бы сгенерированные случайным образом временные метки типа Session ID.

Постоянный идентификатор позволяет соотнести личность анонимного пользователя с профилями в социальных сетях и определить его настоящее имя.

SimpleX


Новый мессенджер SimpleX заявляется как первый, в котором вообще по архитектуре отсутствуют ID пользователей, а в режиме «Инкогнито» вообще для каждого собеседника демонстрируется новое имя.



Для этого применяются «временные анонимные парные идентификаторы очередей сообщений», отдельные для каждого из соединений. Отправитель определяет серверы для получения своих сообщений, а каждый из контактов — серверы для получения своих. В каждой сессии используется два разных сервера.

Профили пользователей, списки контактов и группы хранятся только на клиентских устройствах, а сообщения отправляются по каналам с двухуровневым сквозным шифрованием.

SimpleX в целом представляет собой платформу, на которой можно создавать приложения. SimpleX Chat — одно из таких приложений, которое также служит примером и эталоном.

SimpleX Messaging Protocol (SMP) — это протокол для отправки сообщений в одном направлении к получателю через промежуточный сервер. Сообщения доставляются однонаправленными очередями, создаваемые получателями. SMP-сервер играет роль прокси, используя луковую маршрутизацию (как в Tor/Onion) через два хопа. Это нужно для защиты транспортной информации отправителя (IP-адреса и сессии) от сервера, выбранного получателем.

Дизайн сервера SMP:



Транспортный протокол обеспечивает целостность, аутентификацию сервера, конфиденциальность и привязку транспортного канала.

Библиотеки клиента SimpleX предоставляют низкоуровневый API, не предназначенный для использования приложениями. Агенты SimpleX взаимодействуют с клиентами SimpleX и предоставляют более высокоуровневый API, предназначенный для использования приложениями. Обычно они встраиваются в библиотеки, но также могут быть абстрагированы в локальные сервисы.

Дизайн агента SMP:



Агенты SimpleX взаимодействуют с другими агентами внутри зашифрованных оболочек E2E, предоставляемых протоколом SMP — синтаксис и семантика сообщений, которыми обмениваются агенты, определяются протоколом агентов SMP. Подробнее см. в технической документации.

На диаграмме ниже показано приложение SimpleX Chat с логическими слоями приложения чата, взаимодействующего с библиотекой SimpleX Agent, которая взаимодействует с библиотекой SimpleX Client. Клиентская библиотека, в свою очередь, передаёт протокол обмена сообщениями на сервер SimpleX:

  User's Computer                 Internet                    Third-Party Server
------------------     |   ----------------------     |   -------------------------
                       |                              |
   SimpleX Chat        |                              |
                       |                              |
+----------------+     |                              |
|    Chat App    |     |                              |
+----------------+     |                              |
|  SimpleX Agent |     |                              |
+----------------+    -------------- TLS ----------------    +----------------+
| SimpleX Client | ------ SimpleX Messaging Protocol ------> | SimpleX Server |
+----------------+    -----------------------------------    +----------------+
                       |                              |


Эфемерный P2P-мессенджер Chitchatter




Chitchatter (исходный код) — защищённый веб-мессенджер на архитектуре веб-mesh (P2P, WebRTC, без центрального сервера, фронтенд на Vite, сетевой стек Trystero, передача файлов через secure-file-transfer):


Реализация веб-mesh в библиотеке Trystero

Сквозное шифрование реализовано через WebRTC. В «эфемерном» мессенджере содержимое сообщений никогда не сохраняется на диске ни на клиенте, ни на сервере. Собственно, сервера для API не существует. Для работы программы требуется только доступ к GitHub для статических активов и к публичным ретрансляционным серверам WebTorrent и ретрансляционные серверы STUN/TURN для установления связи, когда прямое пиринговое соединение установить невозможно.

Использовать Chitchatter довольно просто. Пользователь заходит на сайт и может присоединиться к приватной «комнате» для чата. На стороне клиента генерируются случайные UUID как имена комнат. Для приватного общения можно присоединиться к одной из этих случайно сгенерированных комнат и передать URL собеседнику (с помощью кнопки "🔗" в верхней части страницы) через какой-нибудь анонимный сервис для передачи заметок в интернете (например, Burner Note или Yopass). Можно попробовать тестовую комнату.

Из функций:

  • количество собеседников в одной комнате ограничено только количеством соединений, поддерживаемых браузером;
  • публичные и приватные комнаты;
  • видео- и аудиочаты;
  • демонстрация экрана;
  • передача файлов неограниченного размера, файлы шифруются перед отправкой и расшифровываются получателем (ключом является имя комнаты);
  • встраивание в другие веб-приложения через iframe;
  • поддержка Markdown с помощью react-markdown, включая подсветку синтаксиса;
  • тёмная и светлая темы;
  • автоматическая верификация пиров на стороне клиента с помощью public-key cryptography;
  • сообщения никогда не сохраняются на диске, когда вы покидаете комнату, они удаляются из памяти и не могут быть восстановлены;
  • можно установить на своём хостинге.

Technitium Mesh


Technitium Mesh — анонимный пиринговый (P2P) мессенджер со сквозным шифрованием и открытыми исходниками. Для шифрования и аутентификации используются алгоритмы DHE-2048, ECDHE-256, RSA-2048 и AES-256. Мессенджер является преемником Bit Chat. К сожалению, в настоящее время доступен только под Windows (альфа-версия).



Mesh не требует централизованной регистрации пользователей. Анонимные профили работают через скрытый сервис Tor (hidden service). В отличие от Bit Chat, здесь отключён поиск пиров через BitTorrent-трекеры, поскольку некоторые провайдеры блокируют BitTorrent-трафик. Вместо этого Mesh во всём полагается на распределённые хэш-таблицы (DHT).

Mesh позволяет создавать полностью анонимные или P2P-профили. Оба профиля совместимы, поэтому P2P-профиль может соединиться с анонимным профилем через Tor. Сам профиль представляет собой зашифрованный файл на компьютере с парой ключей RSA, ключи нужны для шифрования E2E-канала и генерации ID, которые всё время меняются.

Идентификатор пользователя разработан таким образом, что его можно изменить в любое время. Поскольку регистрация пользователей отсутствует, разработчики не знают, кто и сколько людей используют Mesh.

В режиме P2P пользователи соединяются напрямую без промежуточного сервера. В анонимном режиме все соединения происходят через Tor, а входящие соединения идут через скрытый сервис Tor.

В комплекте с мессенджером можно скачать несколько других полезных утилит для смены MAC-адреса и установки локального DNS-сервера.

Technitium MAC Address Changer (TMAC) — бесплатная утилита для изменения или подмены MAC-адреса сетевых адаптеров. Помимо изменения MAC-адреса, можно использовать программу для настройки сетевого адаптера, а также для быстрого переключения между несколькими сетевыми конфигурациями:



Technitium DNS Server — опенсорсный DNS-сервер для самохостинга:



Его можно использовать для блокировки интернет-рекламы по чёрному списку доменов:



Сервер настраивается на форвардинг через DNS-over-TLS или DNS-over-HTTPS, что делает все DNS-запросы приватными и безопасными для всех приложений в сети:



Technitium DNS Client — онлайн-сервис для отправки запроса к любому серверу имён, включая корневые серверы:



Есть и отдельная утилита для локального запуска клиента на своём ПК.

Анонимный мессенджер BeProg




В мессенджере BeProg для обеспечения анонимности тоже решили полностью отказаться от идентификации пользователей. Не требуется никакой регистрации, номера телефона, адреса электронной почты, генерирования ID пользователя или сессии в любой закрытой или открытой форме и т. д. и т. п.

Для функционирования BeProg используется только одноразовая анонимная идентификация сообщений. Прямой связи между устройствами пользователей нет.

Для общения необходимо создать чат по паролю, о котором вы заранее договариваетесь с собеседником. То есть, для связи даётся пароль (вместо номера телефона) с помощью которого создаётся чат. Создание происходит в два шага: нажать на кнопку «Приватный чат»…



… и ввести пароль:



В BeProg стремились найти простое и элегантное решение, удобное для обычного пользователя. Пароль просто придумать и передать устно. Например, Василиса90. Коллизию паролей свели к минимуму: после начала общения в чате, пароль для данного чата может использоваться повторно. Попасть в существующий приватный чат третьему невозможно.

Привязка к ID устройства тоже отсутствует. Единственное, что если установить приложение из каталога Google Play или App Store, то сохранится ID регистрации в сторе.

Все чаты защищены с помощью симметричного шифрования, при этом используется принцип одноразового блокнота, то есть каждое сообщение шифруется новым ключом.

Мессенджер поддерживает и голосовые звонки, тоже со сквозным шифрованием и анонимными сессиями.

Общие рекомендации по анонимности


Кроме выбора правильного мессенджера желательно соблюдать и другие меры безопасности, в том числе:

  • отдельный телефон, который вы берёте на улицу, в то время как основной телефон всегда остаётся дома в защищённом месте;
  • основной телефон должен быть надёжно защищён от слежки: очистка ОС от следящих компонентов, можно использовать защищённую операционную систему CalyxOS вместо стокового Android, никаких сим-карт;
  • рандомизация IMEI и MAC-адресов;
  • подключение к удалённым серверам через Tor;
  • очистка памяти телефона после сессии;
  • в отсутствии второго телефона (для улицы) можно установить двойное дно для Telegram: один пароль открывает стандартное приложение, а второй пароль (на случай задержания) удаляет запрещённые чаты и каналы и отправляет SOS родственникам и друзьям;



Надёжная анонимность и шифрование — это фундамент безопасности в современном цифровом мире.