Основы

Что такое XMPP и Snikket: простое объяснение

XMPP — открытый стандарт обмена сообщениями, бывший Jabber, а Snikket — сервер и приложения на его основе. Объясняем, как это устроено и кому подходит.

Обновлено · 6 мин чтения

Коротко

XMPP — это открытый стандарт, по которому мессенджеры обмениваются сообщениями. Раньше он назывался Jabber. Snikket — это готовый набор из сервера и приложений на базе XMPP, собранный так, чтобы свой мессенджер мог завести обычный человек, а не только системный администратор.

Если совсем просто: XMPP — это «язык», на котором договариваются серверы и приложения, а Snikket — конкретный удобный мессенджер, который на этом языке говорит.

XMPP: открытый язык для мессенджеров

Большинство популярных мессенджеров устроены как закрытые системы: одна компания пишет приложения, она же держит все серверы, и попасть в эту сеть можно только через её сервис. XMPP устроен иначе — как электронная почта.

Вспомните почту. У вас адрес на одном сервисе, у коллеги — на другом, а письма всё равно доходят, потому что все почтовые серверы следуют общим правилам. В XMPP то же самое: сервер может запустить кто угодно, у каждого пользователя есть адрес вида имя@сервер, а серверы умеют передавать сообщения друг другу. Такую связь между независимыми серверами называют федерацией.

Немного истории

  • 1999 — Джереми Миллер объявляет о Jabber, открытой технологии для мгновенных сообщений и статуса «в сети».
  • 2002 — базовые протоколы Jabber передают в IETF, организацию, которая разрабатывает интернет-стандарты, под новым именем — Extensible Messaging and Presence Protocol, то есть XMPP.
  • 2004 — IETF публикует RFC 3920 и RFC 3921 с описанием ядра XMPP.
  • 2007 — Jabber Software Foundation переименовывается в XMPP Standards Foundation (XSF).
  • 2011 — выходят RFC 6120 и RFC 6121, обновлённое описание ядра протокола.

Возможности сверх базовых — например, групповые чаты или шифрование — описываются отдельными расширениями, XEP (XMPP Extension Protocols). Их разрабатывает и публикует XSF.

Что даёт открытый стандарт

Открытость — не абстрактное достоинство, а вполне практическая вещь:

  • Нет одного владельца. Сеть не принадлежит одной компании, поэтому её правила не поменяются в одночасье по чужому решению.
  • Можно выбирать приложение. Для XMPP есть много клиентов разных разработчиков: если одно приложение не нравится, можно поставить другое и сохранить свой адрес.
  • Можно иметь свой сервер. Сервер — это место, где живут ваши аккаунты и откуда сообщения уходят к адресатам. В XMPP он может быть вашим.

Почему тогда XMPP не у всех

Честный ответ: самостоятельно поднять XMPP-сервер непросто. Нужно арендовать машину, настроить DNS-записи, выпустить TLS-сертификаты и не забывать их продлевать, ставить обновления, а потом ещё объяснить родственникам, какое приложение установить и какие галочки в нём включить. Для энтузиастов это нормально, для семьи или небольшой команды — уже барьер.

Именно эту проблему решает Snikket.

Snikket: XMPP, собранный для обычных людей

Snikket — проект с открытым исходным кодом, который развивает Snikket Community Interest Company. Он не изобретает новый протокол, а собирает лучшее из существующей экосистемы XMPP в один согласованный продукт:

  • Сервер построен на Prosody — известном XMPP-сервере — с несколькими собственными модулями для функций Snikket.
  • Приложение для Android сделано на основе Conversations, современного XMPP-клиента.
  • Приложение для iOS основано на Siskin IM от компании Tigase.

Главная идея Snikket — сервер для небольшой группы людей: семьи, друзей, клуба или маленькой организации. Кто попадёт на сервер, решает его владелец: новые участники приходят по ссылке-приглашению. Приложение не загружает вашу адресную книгу на сервер.

Что умеет Snikket

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

Ничего экзотического — набор, привычный по популярным мессенджерам. Разница в том, где и у кого находится сервер.

А если хочется другое приложение

Приложения Snikket — самый простой путь, особенно для тех, кто не хочет ничего настраивать. Но сервер Snikket говорит на стандартном XMPP, поэтому к нему можно подключиться и другими клиентами: например, Conversations на Android, Monal на iPhone и Mac, Gajim или Dino на компьютере. Адрес и контакты остаются теми же — меняется только программа, в которой вы читаете сообщения.

Это и есть практический смысл открытого стандарта: вы не привязаны к одному приложению. Если когда-нибудь Snikket перестанет вас устраивать, переписку можно будет вести в другом клиенте, а не начинать всё заново в новой сети. Учтите только, что возможности сторонних приложений различаются: звонки, шифрование и оформление групп в них могут работать немного иначе, чем в Snikket.

Шифрование: TLS и OMEMO

В XMPP работают два уровня защиты, и их полезно различать.

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

OMEMO — это сквозное шифрование. Оно описано в расширении XEP-0384 и построено на схеме Double Ratchet — той же основе, что используется в протоколе Signal. Сообщение шифруется на устройстве отправителя и расшифровывается только на устройствах получателей, поэтому сервер передаёт его, но прочитать не может. OMEMO рассчитан на несколько устройств у одного человека и работает, даже если собеседник сейчас не в сети.

В приложениях Snikket OMEMO включено по умолчанию — ничего настраивать не нужно.

XMPP, Snikket и PL3: кто за что отвечает

Три названия легко перепутать, поэтому сведём их вместе:

Что этоРольЧем полезно вам
XMPPОткрытый стандарт обмена сообщениямиНет единого владельца сети, есть федерация и выбор приложений
SnikketСервер и приложения на базе XMPPПростая установка, приглашения по ссылке, шифрование по умолчанию
PL3Хостинг сервера SnikketСервер работает без вашего участия: обновления, TLS и DNS на нас

PL3 — это не мессенджер, а сервер мессенджера под ключ: мы разворачиваем для вас отдельный сервер Snikket с адресом вида semya.pl3.store. У участников будут адреса вроде anna@semya.pl3.store. На одном сервере — до 20 человек. Обновления Snikket, выпуск и продление сертификатов, настройку адреса и DNS мы берём на себя. Подробнее — в разделе «Как это работает».

Кому это подходит, а кому нет

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

Не подходит, если ваша главная задача — читать публичные каналы или переписываться с сотнями незнакомых людей. Для этого существуют большие публичные платформы, и свой сервер не пытается их заменить. Многие так и делают: оставляют большие мессенджеры для новостей и публичных групп, а близких переводят в своё пространство.

Если вы решили попробовать, вот что почитать дальше:

Частые вопросы

XMPP и Jabber — это одно и то же?

Почти. Jabber — исходное название технологии, появившейся в 1999 году. В 2002 году её базовые протоколы передали в IETF под названием XMPP, и сегодня это официальное имя стандарта. Слово «Jabber» по привычке до сих пор используют как синоним.

Нужно ли разбираться в XMPP, чтобы пользоваться Snikket?

Нет. Участнику достаточно открыть ссылку-приглашение и установить приложение Snikket — дальше оно работает как обычный мессенджер. XMPP остаётся «под капотом», как протокол SMTP у электронной почты.

Можно ли с сервера Snikket писать людям на других XMPP-серверах?

Да. Snikket поддерживает федерацию: участники вашего сервера могут переписываться с пользователями других совместимых XMPP-серверов, а те — с ними.