Если вы хотя бы раз задумывались о приватности переписки, а использование популярных мессенджеров (Telegram, WhatsApp, Signal, TeleGuard и др) вызывает вопросы, - этот материал для вас. 

Компании зачастую собирают слишком много информации, а после взломов/сливов/иных причин она оказывается в руках мошенников, снижая уровень личной безопасности. Из–за этого, например, вы часто можете получать назойливые звонки на свой телефон или спам на почту. Да, в этом виноваты сервисы, которые собирают всю возможную о вас информацию, и ненадежно ее защищают. 

Сегодня рассказываем про анонимный мессенджер SimpleX, который написан на Haskell и позволяет, в том числе, использовать сеть Tor для общения.  

Что такое SimpleX 

​​SimpleX – не только один из немногих мессенджеров, который не собирает данные пользователей, но и единственный на сегодняшний день мессенджер, который не использует идентификаторы для профилей пользователей, даже случайные числа. Также он полностью open source, и каждый может принять участие в его разработке.

Как он работает

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

Вы, как пользователь мессенджера, можете самостоятельно определить, какой сервер(ы) использовать для получения сообщений, а ваши контакты – серверы, которые вы используете для отправки им сообщений. Это означает, что в каждом разговоре, будут использоваться два разных сервера – по одному для каждого направления сообщений.

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

Итак, разработчики SimpleX создали свой протокол для передачи сообщений: 

  • SimpleX Messaging Protocol (SMP) – это протокол для отправки сообщений в одном направлении получателю, используя промежуточный сервер. Сообщения доставляются через однонаправленные очереди, создаваемые получателями.

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

  • Сервер SimpleX – это один из таких серверов.

  • Сеть SimpleX – это термин, используемый для обозначения группы серверов SimpleX, которые способствуют работе SMP.

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

Таблица сравнений с другими протоколами передачи информации

С помощью функции Netzwerk & Server SimpleX можно настроить мессенджер таким образом, чтобы все коммуникации направлялись через сеть Tor. В сочетании с отсутствующим (уникальным) идентификатором и протоколом Simplex Messaging Protocol (SMP) возможно анонимное использование, что затрудняет или делает невозможным определить, кто с кем контактирует по метаданным. И еще: в отличие от Briar, например, контакт или устройство не обязательно должны быть постоянно онлайн, чтобы иметь возможность получить сообщение. Они временно хранятся на серверах ретрансляции SimpleX до тех пор, пока не будут получены. 

Как работает сеть SimpleX

Сеть SimpleX по своей структуре напоминает P2P–сети, но в отличие от большинства P2P–сетей она состоит из клиентов и серверов, не зависящих от какого–либо централизованного компонента. По сравнению с более традиционными приложениями для обмена сообщениями (например, WhatsApp, Signal, Telegram) ключевыми отличиями сети SimpleX являются:

  • Участникам не нужно иметь глобально уникальные адреса для общения, вместо этого они используют избыточные однонаправленные (симплексные) очереди обмена сообщениями, с отдельным набором очередей для каждого контакта.

  • Запросы на соединение передаются вне сети, не обязательно защищая обмен ключами от атаки MITM (человек посередине).

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

  • Серверы не хранят никакой пользовательской информации (ни профилей пользователей, ни контактов, ни сообщений после их доставки), и в основном используют персистентность в памяти.

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

Особенности SimpleX

  • Сквозное шифрование в каждой очереди сообщений с использованием NaCl cryptobox. Это добавлено для обеспечения избыточности в будущем (прохождение каждого сообщения через несколько серверов), чтобы избежать наличия одного и того же шифротекста в разных очередях (который будет виден злоумышленнику только в случае компрометации TLS). Ключи шифрования, используемые для этого шифрования, не вращаются, вместо этого мы планируем вращать очереди. Для согласования ключей используются ключи Curve25519.

  • Начиная с версии 2 протокола SMP (текущая версия – v4) все метаданные сообщения, включая время получения сообщения сервером (с округлением до секунды), отправляются получателям в зашифрованном виде

  •  Для соединений клиент–сервер разрешены только TLS 1.2/1.3, ограниченные криптографические алгоритмы: CHACHA20POLY1305_SHA256, Ed25519/Ed448, Curve25519/Curve448.

  • Для защиты от атак повторного воспроизведения серверы SimpleX требуют привязки канала tlsunique в качестве идентификатора сессии в каждой клиентской команде, подписанной эфемерным ключом per–queue.

  • Для защиты вашего IP–адреса все клиенты SimpleX Chat поддерживают доступ к серверам обмена сообщениями через Tor.

  • Шифрование локальной базы данных с помощью парольной фразы – ваши контакты, группы и все отправленные и полученные сообщения хранятся в зашифрованном виде. Если вы использовали SimpleX Chat до версии 4.0, вам необходимо включить шифрование в настройках приложения.

О безопасности 

У проекта растет число энтузиастов, использующих SimpleX Chat, а пользователи, которым наиболеее важен вопрос своей безопасности, терпеливо ждали, пока некоторые независимые эксперты проверят кодовую базу проекта.

Поэтому команда разработчиков обратилась к Trail of Bits для проведения аудита. В центре внимания аудита ответы на вопросы:

  • Является ли реализация уязвимой для известных криптографических атак?

  • Хранится ли и обрабатывается ли ключевой материал таким образом, чтобы его раскрывали как можно меньше?

  • Соответствуют ли кодовые базы лучшим практикам программирования на Haskell?

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

В ходе аудита компания Trail of Bits оценила зрелость библиотеки simplexmq по восьми категориям и признала пять из них сильными или удовлетворительными. Большинство выявленных благодаря аудиту проблем исправлены или в процессе решения. Полный обзор безопасности доступен в публикации Trail of Bits.

Подводим итоги

SimpleX Chat - молодой продукт на площадке мессенджеров, но он уже успел превзойти альтернативные продукты, которые называют себя приватными и анонимными. 

Данное решение не даст посторонним лицам анализировать ваши сообщения или манипулировать аккаунтами. Вы сможете быть уверены в том, что ваша переписка в безопасности. SimpleX уделяет большое внимание конфиденциальности, о чем ясно свидетельствует раздел «Конфиденциальность: технические детали и ограничения». Разработчики нацелены на развитие и масштабирование проекта, и у них еще остался достаточно большой Roadmap, которые они хотят реализовать. 

Из самых свежих обновлений на момент публикации статьи – выпущена версия 4.3 — с мгновенными голосовыми сообщениями, необратимым удалением отправленных сообщений и улучшенной конфигурацией сервера.

За успехами проекта вы можете следить в блоге на сайте и в аккаунте reddit

SimpleX можно получить в App Store, Google Play, прямо со страницы проекта GitHub или в main f-droid repo