XMPP aka Jabber

Можно было бы озаглавить живее всех живых. Он как минимум, пережил множество протоколов обмена сообщениями. Если говорить о тех которыми я пользовался сам, то это Odigo, ICQ, Yahoo! Messenger, Google Talk. И скольких еще переживет? Вопрос. XMPP созданный для корпораций, корпорациям оказался не нужен. Пластмассовый мир победил. И все же Jabber продолжает пользоваться популярностью. Чем он привлекает людей? В каких областях лидирует? Попробую рассказать.

Jabber/XMPP достаточно старый протокол обмена сообщениями, старый, но не устаревший. Он создавался как универсальное средство взаимодействия между клиентами. Универсальность обеспечивается модульной структурой. Обязательными являются только модули обеспечивающие базовую функциональность. Все остальное обеспечивается поддержкой XEP (XMPP Extension Protocol) на сервере и в приложении. И вот оказывается, что большинство Jabber приложений давно прекратили свое развитие. Отсюда первый совет нужны все новые функции используй новые приложения. Привязанность к клиенту можно рассматривать и как достоинство, так и недостаток.

Для меня Telegram основной месседжер, можно даже сказать приложение мечты, с его появлением я забыл про все остальные, за исключением Jabber. Во многом благодаря отличным приложениям таким, как Conversations, Dino и др. И наоборот по причине отсутствия нормальных нативных клиентов не зашли новомодные Matrix и Signal. Но не нативными только клиентами силен Jabber. Сила Jabber в предоставляемыми XMPP уровням криптографии и приватности. Для криптографии есть при открытых протокола на выбор OMEMO, OTR, OpenPGP. Отсюда второй совет, нужна криптография используй Jabber. И наконец, приватность, приватности способствует обилие серверов на выбор вплоть до возможности запустить свой сервер. Кто знает когда потребуется что-то, что можно сделать самому.

  • XEP-0160: хранение сообщений до доставки;
  • XEP-0163: аватары/OMEMO
  • XEP-0198: сервер повторно пересылает сообщения, если не получит уведомления о доставке;
  • XEP-0280: пересылает сообщения на все доступные устройства;
  • XEP-0313: архив сообщений;
  • XEP-0333: пометка о доставке сообщений;
  • XEP-0352: состояние клиента;
  • XEP-0357: push-уведомления;
  • XEP-0363: файлы загружаются на сервер и передаются как ссылка;
  • XEP-0027: OpenPGP(старый);
  • XEP-0384: OMEMO encryption;
  • XEP-0364: Off-the-Record OTR;
  • XEP-0373: OpenPGP для XMPP(новый);

Криптография OMEMO, OTR, OpenPGP

Требования к шифрованию следующие:

  • надежное шифрование сообщений — никто иной не сможет прочитать сообщения;
  • аутентификация собеседников — уверенность в том, кто является собеседником;
  • perfect forward secrecy — если потеряны секретные ключи, прошлая переписка не будет скомпрометирована;
  • возможность отречения — третье лицо не сможет доказать, что сообщения написаны кем-либо другому адресату.

Хорошая практика в этом вопросе использование открытого софта.

OpenPGP старейший из них, это открытый протокол шифрования с использованием криптографии с открытым ключом. Протокол является стандартом для электронной почты и это очень старый стандарт проверенный временем. Работает оффлайн. Но в тоже время сложность управления ключами и воспроизводимость сеансов по украденному ключу, однозначная идентификация отправителя сообщения. В XMPP описывается XEP-0027 (старый) и XEP-0373 (новый) реализован только (?) в Gajim. Поддерживается Pidgin (но это не точно, был интересен в связке с модулем Telegram), Gajim, Dino, Psi/Psi+, Miranda NG, Conversations и наверно все. Впрочем, при наличии такой необходимости можно работать с сообщениями сторонними средствами, это единственный протокол с такой возможностью.

Off-the-Record Messaging (OTR) — криптографический протокол для систем мгновенного обмена сообщениями, разработанный в 2004 году Никитой Борисовым и Ианом Голдбергом. Ими же была создана библиотека поддержки OTR (libotr) и плагин для Pidgin. На основе известной пары ключей генерируется третий которым и шифруются сообщения, поэтому нельзя однозначно идентифицировать отправителя сообщения, получив доступ к ключам можно расшифровать только последнее сообщение, невозможна работа оффлайн и одновременная работа нескольких клиентов. Обязательно завершать беседы. Рекомендован фондом электронных рубежей (EFF) для защиты от прослушивания. Авторы разработку прекратили (последние новости на сайте датированы 16 годом), но есть сторонние наработки. Последнее дает не полную совместимость случается так, что разные реализации не устанавливают соединения. До недавнего времени самый распространенный криптографический, сейчас намечается тенденция убирать OTR в пользу OMEMO, и это плохо.

OMEMO (OMEMO Multi-End Message and Object Encryption) третий используемый протокол реализующий сквозное шифрование для нескольких клиентов в том числе находящихся оффлайн. В остальном идентичен OTR. Разработан Андреасом Штраубом в 15 году, в 16 принято XEP-0384. В качестве основы используется Olm, реализацию протокола Signal. Для работы требуется поддержка сервером (XEP-0163 или XEP-0396 участвуют в обмене ключей). После получения ключей с сервера работа аналогична OTR. Сам протокол Signal прошел внешний аудит и признан удовлетворяющим требованиям безопасности. Остаются вопросы реализации тут можно заметить, что приложения использующие OMEMO находятся в активной разработке, что повышает вероятности выявления ошибок. Беда в том, что в приложениях поддерживающих OMEMO отказываются от OTR (Conversations, Gajim). Приходится выбирать что-то одно.

Приложения на выбор

От клиента дохрена всего зависит, в этом и трагедия XMPP как экосистемы (c).

Pidgin долгое время был для меня основным клиентом. Теперь он отличная иллюстрация к выбору клиента. Когда-то с Pidgin все было хорошо: синхронизация настроек (считая Adium для macOS и Finch для CLI) многопротокольность и кроссплатформенность, но со временем многопротокольность ушла естественным путем с уходом используемых протоколов. Перестал поддерживаться и Jabber, не вообще, а в плане криптографии: перестал работать плагин для OpenPGP, OMEMO так и не заработал, OTR работает с косяками. И я перестал пользоваться Pidgin. Возможно я к нему вернусь когда заработают плагины OMEMO, OTR и OpenPGP. Ведь это пока единственных мультипротокольный клиент с плагином для Telegram, ожидаются плагины для Matrix и Delta Chat.

Psi/Psi+ (саи), достаточно известное приложение, один из старейший клиентов Jabber и один же из старейших клиентов с поддержкой OpenPGP. OMEMO добавлен в экспериментальной версии Psi+, есть и OTR, но его работа вызывает вопросы (работает не со всеми клиентами). Редкий случай когда под самую распространенную ОС выбора нужного приложения нет и кроме как Psi порекомендовать нечего (под WinPhone клиента не было вовсе). Не, технически они есть, но Gajim ставит более 11к! файлов и 500! папок, Miranda NG поставляется с несовместимой версией OMEMO (OTR работает). Полная установка Psi так же может затянуть более полугига, что чрезмерно для месседжера, поэтому пользуемся установщиком и отмечаем только нужное (берем на SF). Сай возможная замена Pidgin в плане синхронизации через облака.

Если OMEMO не нужен и вас устраивает OTR (в сети идут разговоры о OTR версии 4), то современным выбором в Windows может быть Miranda NG. OMEMO ждать не приходится на форуме Miranda встретилось утверждение, что все было сделано в соответствии со стандартом XEP и то, что результат не совместим не с одним приложением все это происки изменившего протокол автора Conversations.

Conversations (Google Play) (F-droid) для Android лучший выбор (или один из его клонов). Поддерживает OpenPGP (через OpenKeychain) и OMEMO, встроенная поддержка TOR. Daniel Gultsch, разработчик Conversations, автор расширения XEP-0363: HTTP File Upload и принимал непосредственное участие в адаптации библиотеки OMEMO под XMPP (см. выше Miranda). В качестве альтернативы можно использовать monocles chat один из форков распространяемых через F-Droide , отличается попыткой вернуть OTR. Второй по популярности клиент Xabber умеет только OTR.

В рабочем окружении KDE если говорить встроенных приложениях, то мультипротокольный Kopete поддерживает только OTR. По опыту применения это самая беспроблемная реализация OTR. Плагин OpenPGP kopete-cryptography в репозиториях отсутствует. Встроенный Jabber клиент Kaidan в плане криптографии не умеет ничего. Если нужны OMEMO и OpenPGP, то на Qt единственный вариант все тот же Psi+. Если о приложениях Gnome то Gajim или Dino вполне себе варианты.

В окружении Gnome два неплохих варианта на выбор Dino или Gajim. Gajim один из старейших, но в то же время передовых клиентов Jabber. Поддерживает OMEMO и OpenPGP, не поддерживает OTR (с версии 1.0). Хочется наворотов используйте Gajim. Мне же больше зашел простой клиент Dino. Это GTK+/Vala маленькое и быстрое приложение новой волны в стиле Gnome Shell. Так же умеет OMEMO и OpenPGP, возможно местами слишком простой, но он ещё маленький и меня устраивает. Забавно, но не выходит у меня с Gajim, раньше в сравнении я выбирал Pidgin, сейчас — Dino.

Остальное. CLI (бывает иногда необходимость) в разное время Finch, mCabber… сейчас не тестировании Profanity приложение командной строки OMEMO, OTR и OpenPGP. Второе такое в обзоре, альтернативная альтернатива остальным клиентам Linux. Xabber Web в отличии от простого Xabber использует OMEMO, умеет синхронизироваться с мобильной версией. Можно рассматривать как универсальную внесистемную альтернативу.

Сервера и подключение

Существует три варианта работы сетевых приложений:

  • централизованный — требует сервера который можно заблокировать;
  • федеративный — сеть серверов;
  • децентрализованный (P2P) — клиент он и сервер.

XMPP работает по второму сценарию с использованием сети серверов. Достоинства суть продолжение недостатков, отсутствие централизованных серверов повышает отказоустойчивость, поднять свой XMPP сервер может любой. Это снижает коммерческую привлекательность XMPP — трудно привязать пользователя и принудить его раскрыть свои данные которыми можно было бы барыжить. Может быть проблемой найти сервер с требуемым набором XEP. С другой стороны обилие серверов способствует приватности и это конкурентное преимущество XMPP. Можно использовать свой сервер, или сервер в сети i2p или TOR. Если предположить закрытую сеть то XMPP для работы инернет как таковой не нужен. Будет интересно в разрезе mesh-сетей при блокировках инета.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x