Шифрование сообщений в Jabber при помощи OTR

16 августа 2017

В последнее время наблюдается повышенный интерес к теме безопасных мессенджеров. Поскольку наиболее популярные из современных мессенджеров, претендующих на безопасность, являются закрытыми, требуют обязательного указания мобильного телефона или, например, работают в браузере, мне лично большого доверия они не внушают. Поэтому сегодня речь пойдет о полностью открытом, бесплатном, кроссплатформенном и внушающем какое-то доверие варианте, заключающемся в использовании Jabber (он же XMPP) с OTR-плагином.

Fun fact! Из возможных альтернатив Jabber с OTR можно назвать Tox и GNU Ring. К сожалению, на момент написания этих строк оба мессенджера работают крайне нестабильно — например, могут иногда терять сообщения, или наоборот, присылать их многократно. Из действительно работающих сегодня решений я лично знаю только Jabber с OTR.

OTR — это название протокола, означающее Off The Record. Протокол этот в чем-то похож на уже знакомый нам PGP/GPG, но с рядом важных отличий. Для нас наиболее интересные отличия заключаются в обеспечении отрицаемости и forward secrecy. Отрицаемость означает, что перехватив сообщения и даже расшифровав их, нельзя строго доказать, что их действительно отправлял их отправитель, а не кто-то, подделавший сообщение (во всяком случае, с точки зрения криптографии/математики; юридически возможны нюансы). Forward secrecy означает, что даже если спустя N лет кто-то получит доступ к вашему закрытому ключу, это не поможет расшифровать сообщения, переданные в прошлом. Больше подробностей можно найти в статьях, ссылки на которые были только что приведены по тексту.

Многие Jabber-клиенты поддерживают OTR из коробки или же через плагин. В частности, такая поддержка есть в Pidgin и Psi+. Лично я в это время суток предпочитаю Psi+, поэтому речь далее пойдет о нем. Под Arch Linux его можно поставить так:

yaourt -S psi-plus-qt5-git psi-plus-plugins-qt5-git

Заметьте, что пакет psi-plus-git, собирающий Psi+ с Qt4, на момент написания этих строк был сломан. Если же вы пользуетесь Ubuntu:

sudo apt-get install psi-plus psi-plus-plugins

Само собой разумеется, Psi+ работает и на других платформах. На официальном сайте доступны пакеты для Windows, MacOS, и так далее.

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

Шифрованный чат будет выглядеть как-то так:

Шифрование сообщений в Jabber при помощи OTR

Примите во внимание, что:

  • Для новых контактов нужно проверять fingerprints и жать им verify в свойствах плагина. В противном случае возможна атака MITM;
  • OTR не обеспечивает анонимности / скрытия IP. Для решения этой проблемы используйте прокси, VPN или Tor. В последнем случае желательно использовать и Jabber-сервер, являющийся hidden service в этой сети (например, otr.im). Если вам нужна встроенная поддержка Tor, то она есть в Tor Messenger (мессенджер умеет работать с Jabber, IRC, Facebook, Twitter и не только, поддерживает OTR). Помните также про существование способов деанонимизации пользователей IM, например, при помощи ссылок на веб-страницы;
  • Даже если вы используете OTR, это не повод не включить в клиенте обязательное использование TLS при подключении к серверу;
  • OTR работает, только если оба пользователя находятся онлайн;

Субъективно последний пункт является наиболее отталкивающим. Если для вас это является существенной проблемой, возможно, вам больше подойдет PGP/GPG, который также поддерживается в Psi+. У PGP него нет проблем с доставкой сообщений оффлайн, правда и отрицаемости с forward secrecy он не предоставляет.

Если вас интересуют мобильные клиенты с поддержкой OTR, то они тоже существуют, в частности, Xabber под Android и ChatSecure под iOS (есть версия и под Android, но она больше не развивается). Будучи в это время суток пользователем Android, я попробовал Xabber. Вполне нормальный мобильный Jabber-клиент, OTR работает. Также в Xabber была обнаружена поддержка Tor.

Наконец, отмечу, что есть реализация OTR и для протоколов, отличных от Jabber. В частности, есть плагин для irssi. Более полный список всех IM и клиентов к ним, поддерживающих OTR, можно найти во все той же статье про OTR на Википедии.

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

Метки: , .


Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.