Содержание
- Шифрование сообщений в Jabber при помощи OTR
- Возможности Jabber-серверов ИКС
- Подключение и отчетность
- Справочник анонима
- Пара слов о приватности
- Шаг 1. Качаем софт
- Шаг 2. Пробрасываем трафик через Tor
- Шаг 3. Выбираем сервер
- Мелочи имеют значение
- Шаг 4. Регистрируемся на сервере
- Шаг 5. Включаем OTR
- Шаг 6. Аутентифицируем собеседника и защищаем чат
- Шаг 7. Настраиваем мобильный клиент
- U’r awesome and private 🙂
Шифрование сообщений в Jabber при помощи OTR
16 августа 2017
В последнее время наблюдается повышенный интерес к теме безопасных мессенджеров. Поскольку наиболее популярные из современных мессенджеров, претендующих на безопасность, являются закрытыми, требуют обязательного указания мобильного телефона или, например, работают в браузере, мне лично большого доверия они не внушают. Поэтому сегодня речь пойдет о полностью открытом, бесплатном, кроссплатформенном и внушающем, по крайне мере лично мне, какое-то доверие варианте, заключающемся в использовании Jabber (он же XMPP) с OTR-плагином.
Fun fact! Из возможных альтернатив Jabber с OTR можно назвать Tox и GNU Ring. К сожалению, на момент написания этих строк оба мессенджера работают крайне нестабильно — например, могут иногда терять сообщения, или наоборот, присылать их многократно. Из действительно работающих сегодня решений я лично знаю только Jabber с OTR. Дополнение: Также стоит обратить внимание на Keybase. Это шифрованный мессенджер с открытым исходным кодом, который просто работает. Пока рано что-то говорить о его надежности, но выглядит мессенджер крайне многообещающим.
OTR — это название протокола, означающее Off The Record. Протокол этот в чем-то похож на уже знакомый нам PGP/GPG, но с рядом важных отличий. Для нас наиболее интересные отличия заключаются в обеспечении отрицаемости и forward secrecy. Отрицаемость означает, что перехватив сообщения и даже расшифровав их, нельзя строго доказать, что их действительно отправлял их отправитель, а не кто-то, подделавший сообщение (во всяком случае, с точки зрения криптографии/математики; юридически возможны нюансы). Forward secrecy означает, что даже если спустя N лет кто-то получит доступ к вашему закрытому ключу, это не поможет расшифровать сообщения, переданные в прошлом. Больше подробностей можно найти в статьях, ссылки на которые были только что приведены по тексту.
Многие Jabber-клиенты поддерживают OTR из коробки или же через плагин. В частности, такая поддержка есть в Pidgin и Psi+. Лично я в это время суток предпочитаю Psi+, поэтому речь далее пойдет о нем. Под Arch Linux его можно поставить так:
Заметьте, что пакет psi-plus-git, собирающий Psi+ с Qt4, на момент написания этих строк был сломан. Если же вы пользуетесь Ubuntu:
Само собой разумеется, Psi+ работает и на других платформах. На официальном сайте доступны пакеты для Windows, MacOS, и так далее.
В интерфейсе клиента, думаю, вы разберетесь без моей помощи, тем более, что со временем он может немного измениться. Вам просто нужно включить плагин 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 похож на что-то, что ее предоставляет.
А пользуетесь ли вы Jabber с OTR или иными криптомессенджерами? Если да, то каковы ваши впечатления?
Быстрый обмен данными — важнейшее направление развития технологий в сфере онлайн-общения. Сегодня широкую популярность приобрел XMMP, ранее известный как «Джаббер» — открытый для общего использования протокол, позволяющий пользователям передавать сообщения и уведомления в режиме реального времени. Он был спроектирован почти 20 лет назад и за время своего существования претерпел ряд изменений, чтобы наконец получить мировую известность.
Благодаря своей конструкции, протокол XMMP поддерживает передачу как текстовых сообщений, так и файлов разных форматов. В отличие от систем типа ICQ или Yahoo, эта система не имеет центра управления, легко расширяется и свободно используется всеми желающими.
Открыть свой собственный надежный Jabber-сервер очень легко, и многие этим пользуются.
Возможности Jabber-серверов ИКС
- общий список контактов (ростер);
- шифрование;
- поддержка S2S.

В Интернет Контроль Сервере реализована возможность использования безопасного Jabber-сервера. Чтобы получить доступ ко всему функционалу системы, ее можно настроить вручную, перейдя во вкладку «Настройки» для определения следующих параметров:
- Данных для создания конференции, в рамках которой могут общаться группы пользователей системы XMPP Jabber-сервера. В ИКС можно присоединиться к уже существующей комнате или создать свою собственную.
- SSL-сертификата для создания защищенного соединения «клиент-сервер». По умолчанию передача информации передается открытой. Этого можно избежать, воспользовавшись одним из созданных протоколов уровня защищенных сокетов, использующим особые механизмы шифрования.
- Способа отображения учетных записей пользователей ИКС в ростере. Если человеку назначено несколько аккаунтов в рамках одного Jabber-сервера для локальной сети, он может отключить вывод имени в списке контактов.

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

Содержание статьи
Выбор приватных мессенджеров велик, но о безопасности некоторых из них говорить не приходится. Сразу отсекаем WhatsApp, Viber, Skype и социальные сети. Чем они это заслужили? Наверное, лучшим ответом будет твит создателя Telegram Павла Дурова.
Почему Telegram частично или целиком запрещен в странах вроде Китая, Саудовской Аравии или Ирана, а WhatsApp — нет
Остается вот такой список наиболее известных мессенджеров, которые считаются надежными:
- Telegram;
- Signal;
- Threema;
- Wickr.
Есть еще и менее известные, но у всех них один общий минус — привязка к номеру телефона. Конечно, можно запариться и приобрести виртуальную симку, но делать неудобно, к тому же об анонимности платежа в таком случае тоже неплохо бы позаботиться.
Справочник анонима
Статьи из этого цикла публикуются бесплатно и доступны всем. Мы убеждены, что каждый имеет право на базовые знания о защите своих данных.
Другие статьи цикла:
Если для тебя эти материалы тривиальны — отлично! Но ты сделаешь доброе дело, отправив ссылку на них своим друзьям, знакомым и родственникам, менее подкованным в технических вопросах.
Давай прикинем, какие критерии должны соблюдаться мессенджером, чтобы он был действительно анонимным. У меня вышел вот такой список.
- Не требует ввода номера телефона.
- Не требует никаких личных данных.
- Нельзя пренебрегать шифрованием и общаться в незащищенных чатах.
- Должны быть хоть какие-то подтверждения приватности. Хотя бы в виде блокировок в разных странах.
Так как почти все новомодные мессенджеры не подходят по одному из пунктов, то лучшим вариантом для безопасного общения остается Jabber — известно, что даже специалисты АНБ используют его для переписки.
Пара слов о приватности
Под словом «приватность» обычно подразумевают две довольно разные по своей сути вещи. Первая — защита твоих данных от мониторинга государством и извлечения из них выгоды корпорациями. Вторая — защищенность от целенаправленной прослушки третьими лицами (к примеру, ради шантажа или промышленного шпионажа). Для нас важны оба этих аспекта, но нужно понимать, что во втором случае абсолютных гарантий не бывает. Можно предвидеть технические способы деанона (к примеру, от MitM защитит любой мессенджер с шифрованием), но существуют и другие. Опытный специалист постарается использовать для поиска любую выданную тобой крупицу информации, не говоря уже про методы социальной инженерии.
Но чтобы Jabber стал по-настоящему безопасным, его нужно правильно настроить, чем мы сейчас и займемся. Я для наглядности разделил этот процесс на несколько шагов.
Шаг 1. Качаем софт
Для начала нам необходимо скачать сам клиент. Я для примера возьму Pidgin — он кросс-платформенный и прост в настройке.
Также нам необходим плагин OTR (Off-the-Record Messaging), который обеспечивает шифрование. Инсталлятор для виндовой версии Pidgin или исходники для сборки в Linux можешь скачать с сайта проекта.
При первом запуске Pidgin предложит войти под учетной записью, но мы пока что это отложим. Дело в том, что регистрация будет происходить с нашего реального IP-адреса, а нам хорошо бы позаботиться о том, чтобы IP оказался скрыт даже от владельцев сервиса (вдруг они решат радостно предоставить эту информацию любому, кто попросит!). Для этого можно использовать любой вид прокси, но мы для пущей надежности выберем Tor.
Шаг 2. Пробрасываем трафик через Tor
Если у тебя установлен Tor Browser, то настроить проброс трафика можешь прямо из окна регистрации во вкладке «Прокси».
После запуска Tor Browser и нашего клиента Jabber нужно открыть вкладку «Средства» и выбрать там пункт «Настройки», а в настройках открыть пункт «Прокси». Ставь галочку в чекбоксе «Использовать удаленный DNS с прокси SOCKS4», а в пункте «Тип прокси» выбирай «Tor/Конфиденциальность (SOCKS5)»
В пункте «Узел» указывай 127.0.0.1 и выбирай порт 9150. Это стандартный порт Tor, хотя иногда встречается вариация 9050.
Как ты уже мог догадаться, Tor Browser должен быть запущен и слушать свой порт все время, пока ты будешь вести беседу. Включай его до запуска Pidgin — тогда тот не будет ругаться на отсутствие соединения с сервером.
Теперь трафик Pidgin идет через Tor, и мы можем приступать к регистрации. Для начала нам необходимо определиться с сервером, на котором мы хотим завести учетку. Конечно, можно развернуть свой сервер, но тогда сохранить анонимность станет еще сложнее.
Шаг 3. Выбираем сервер
Серверов существует огромное количество, владельцы многих из них заявляют, что не ведут логов. Но проверить это невозможно. Как будет выглядеть слитый лог, можешь полюбоваться на картинке.
При выборе сервера в первую очередь стоит смотреть, в какой стране он находится. ЕС, США и страна, в которой ты живешь, — это заведомо неудачный вариант. Идеально, если сервер находится там, где законодательно запрещено собирать логи. Вот небольшой список серверов, которым доверяют многие хакеры, как в СНГ, так и за рубежом. Но обрати внимание, что некоторые из серверов находятся в США.
| Сервер | Страна | Примечания | Логи | Onion-зеркало |
|---|---|---|---|---|
| securejabber.me | Германия | Могут заблокировать аккаунт по требованию немецких властей | Нет | giyvshdnojeivkom.onion |
| jabber.calyxinstitute.org | Нидерланды | Нет | ijeeynrc6x2uy5ob.onion | |
| sj.ms | Швейцария | Нет | Нет | |
| swissjabber.ch | Швейцария | Нет | Нет | |
| xmpp.jp | Япония | Нет | Нет | |
| wallstreetjabber.biz | США | Бывший securetalks.biz | Нет | wsjabberhzuots2e.onion |
| thesecure.biz | Сингапур | Нет | Нет | |
| exploit.im | Франция | Нет | Нет | |
| fuckav.in | Франция | Есть фильтр кириллических символов | Нет | Нет |
| jabber.otr.im | Канада | Сервер от создателей OTR | Нет | 5rgdtlawqkcplz75.onion |
| jabber.ccc.de | Австрия | Нет | okj7xc6j2szr2y75.onion | |
| xmpp.rows.io | США | Нет | yz6yiv2hxyagvwy6.onion | |
| jabber.cryptoparty.is | Румыния | Нет | cryjabkbdljzohnp.onion | |
| neko.im | Нидерланды | Ранее базировались в Норвегии | Нет | Нет |
| riseup.net | США | Нет | 4cjw6cwpeaeppfqz.onion |
Мелочи имеют значение
Возьмем для примера выбор никнейма. Казалось бы, элементарный пункт, но многие палятся именно на нем. Ты можешь не помнить, что уже использовал его где-то еще, а вот Google помнит все.
Второй тонкий момент заключается в том, что хорошо бы не использовать никнеймы с символами, у которых есть кириллический аналог. Не на всех серверах настроены фильтры, которые запрещают такие трюки, так что у тебя в какой-то момент может появиться близнец, буквы имени которого не отличаются на вид, но имеют другие коды.
Шаг 4. Регистрируемся на сервере
Определившись с логином и паролем, можешь приступать к регистрации на сервере. Открывай клиент и выбирай вкладку «Учетные записи», а в ней пункт «Управление учетными записями» (или просто нажми Ctrl + A).
В появившемся окне жми «Добавить», откроется окно регистрации и авторизации.
Тут нам необходимо сделать следующее:
- Выбрать из выпадающего списка протокол XMPP.
- Ввести желаемое имя пользователя.
- Ввести домен сервера, на котором ты собираешься завести учетную запись.
- Ресурс можно пропустить, так как на регистрацию он не влияет (по сути, это просто указание того, к какому девайсу привязан данный вход на сервер, — в ростере у твоих собеседников будет написано, с какого ресурса ты зашел).
- Ввести желаемый пароль.
- Поставить (или не поставить) галочку для запоминания пароля (рекомендую не ставить ее и не хранить пароль нигде, кроме своей головы, — ведь если кто-то получит доступ к твоему компьютеру, то пароль будет уже введен).
- Обязательно поставить галочку в чекбоксе «Создать новую учетную запись на сервере» (если, конечно, ты уже не регистрировался раньше).

После ввода всех данных может появиться отдельное окно для регистрации пользователя. Придется все ввести еще разок и нажать ОK.
Шаг 5. Включаем OTR
Учетка готова, и можно приступать к настройке шифрования. Я рекомендую один из двух вариантов: PGP или OTR. Здесь я для примера возьму OTR — он обеспечивает высокий уровень безопасности и легко настраивается. Однако при его использовании не шифруются сообщения в логах — так что для полной надежности их лучше отключать. А вот на сервере картинка выходит примерно следующая.
Поскольку плагин мы уже скачали и установили, его можно активировать из клиента. Открываем Pidgin, жмем «Средства» и выбираем пункт «Модули».
Активируем плагин Off-the-Record (OTR).
Далее нам необходимо настроить этот модуль. Для этого в самом низу списка модулей нажимаем «Настроить модуль».
В окне настройки модуля нам первым делом надо сгенерировать ключ для своего аккаунта. Выбираем аккаунт, для которого нужно создать ключ, и жмем «Создать». Появится окно генерации ключа.
Ключи создаются быстро, однако на этом шаге иногда происходит небольшое подвисание. Не пугайся! Pidgin не завис, он просто немного занят. Когда работа закончится, жми Ok и увидишь свой «отпечаток» из сорока символов (пять групп по восемь знаков).
Теперь отмечай галочками следующие пункты:
- «Использовать защищенные разговоры»;
- «Автоматически начинать защищенный разговор»;
- «Требовать защиту разговора»;
- «Не записывать разговоры через OTR в журнал».
Ведение журнала — дело исключительно добровольное. Если он пригодится, то включай, если нет, то помни, что его сможет прочитать любой, кому удастся получить доступ к твоему компьютеру — удаленный или совершенно непосредственный.
Ну и последняя галочка — это Show Otr button in toolbar. Она просто добавляет в интерфейс кнопку защиты чата и аутентификации собеседника.
Шаг 6. Аутентифицируем собеседника и защищаем чат
По сути, защищенный канал связи у тебя уже есть. Для добавления собеседника нужно нажать «Собеседники» и выбрать «Добавить собеседника».
И жмем «Добавить».
Теперь собеседнику придет запрос, и, когда он его подтвердит, можете начинать чат. Статус защищенности можно посмотреть прямо в окне чата. Если шифрование не включено, то там так и будет написано: «Не защищено». Нажав на него, ты увидишь меню.
Если же начать защищенный разговор, то надпись сменится на «Не идентиф.» — это значит, что чат защищен, но нужно аутентифицировать собеседника, чтобы быть уверенным, что он именно тот, за кого себя выдает.
Аутентифицировать собеседника можно тремя способами.
Вопрос и ответ на него. Ты задаешь вопрос собеседнику, а он должен дать правильный ответ.

Общий секрет.

Ручная сверка ключа. Это вариант на тот случай, если ключ нужно передать не через Jabber, а каким-то иным способом.
После того как собеседник будет аутентифицирован, на кнопке наконец появится зеленая надпись «Защищено».
Шаг 7. Настраиваем мобильный клиент
Клиенты Jabber с поддержкой шифрования есть и на мобильных устройствах. Например, ChatSecure для iOS и для Android. На всякий случай предупреждаю, что приложение для Android не указано на официальном сайте и для мессенджера требует многовато привилегий, так что используй на свой страх и риск.
Регистрация в приложении аналогична регистрации на компьютере. Если у тебя уже есть учетная запись, то вместо создания нового аккаунта выбери Existing Account на главной странице.
Далее выбирай XMPP.
И вводи свои данные.
Если хочешь завести новый аккаунт, то нажимай «Создать новую учетную запись» и заполняй все данные. Большой плюс ChatSecure заключается в том, что он умеет пускать трафик через Tor без дополнительных ухищрений.
В ChatSecure заложен и список приватных серверов — выбирай, какой нравится, или, если уже выбрал раньше, вводи адрес в поле Custom в самом низу.
В конце тебе предложат сохранить сертификат. Сохраняй и дождись, пока закончится регистрация.
Теперь достаточно нажать на значок нового сообщения и в появившемся меню нажать «Добавить контакт».
Вводи адрес контакта.
И аутентифицируй его одним из тех методов, которые мы уже перечисляли.
U’r awesome and private 🙂
Поздравляю, теперь ты знаешь, как настроить канал связи, который будет неплохо защищен от отслеживания и перехвата! Однако, чтобы достичь приватности наивысшего уровня, придется пойти дальше — все же заморочиться и развернуть собственный сервер, а также заменить OTR на PGP. Но об этом как-нибудь в другой раз.






