Как шифровать переписку в Jabber: пошаговая инструкция

Zhabogram — транспорт (мост, шлюз) из сети Jabber (XMPP) в сеть Telegram, написанный на Ruby. Преемник tg4xmpp.

Зависимости

  • Ruby >= 1.9
  • xmpp4r == 0.5.6
  • tdlib-ruby == 2.0 с скомпилированным tdlib == 1.3

</li>

Возможности

  • Авторизация в существующем аккаунте Telegram
  • Синхронизация списка чатов с ростером
  • Синхронизация статусов контактов с ростером
  • Добавление и удаление Telegram-контактов
  • Поддержка VCard с аватарками
  • Отправка, приём, редактирование и удаление сообщений
  • Обработка цитат и пересланных сообщений
  • Отправка и приём файлов и специальных сообщений (поддержка фото, видео, аудио, документов, голосовых сообщений, стикеров, анимаций, геолокаций, системных сообщений)
  • Поддержка секретных чатов
  • Создание, управление и модерирование чатов/супергрупп/каналов
  • Сохранение сессий и автоматическое подключение при входе в сеть XMPP
  • Получение истории и поиск по сообщениям
  • Управление аккаунтом Telegram

</li>

Значимые изменения до версии 1.0, новости о которой не было на LOR:

  • Добавлена обработка SIGINT с корректным закрытием всех сессий
  • Добавлены (и позднее удалены) поддержка iq:jabber:register (регистрация пользователей), iq:jabber:gateway (поиск контактов)
  • Долгие бодания с профайлером в Ruby, пока не поняли, что течёт tdlib (разработчики закрыли баг с WONTFIX — это фича)

<>

</ul></li>

Изменения до версии 2.0:

  • Добавлена поддержка OTR (если Zhabogram используется с обеих сторон — не спрашивайте.)
  • Использование сериализации YAML вместо sqlite3 для сохранения сессий.
  • Убрано автоматическое определение часового пояса в связи с тем, что некоторые клиенты не следуют протоколу и отправляют кашу
  • Исправлены запросы на авторизацию (подписку) от публичных каналов, из которых было перенаправлено (forwarded) сообщение, но подписчиком которого вы не являетесь

</li>

Изменения в версии 2.0

  • NB! Сломана обратная совместимость конфиг-файла и файла сессий (для поддержки индивидуальных настроек в будущем).
  • Код переписан на 80% — теперь он в разы читаемее. Внутренняя логика приведена в порядок.
  • Количество запросов к Telegram уменьшено в три раза
  • Убраны jabber:iq:register, jabber:iq:gateway
  • Переписаны /команды — теперь они разные для чатов и для самого транспорта (системные функции). Для получения списка команд пришлите команду /help.

</li>

Для установки потребуется собственный Jabber-сервер. Рекомендуется получить API ID и API HASH в Telegram для более стабильной работы. Подробную инструкцию можно найти в файле README.md.

Источник: linux.org.ru

Новости — Open Source

Zhabogram — транспорт (мост, шлюз) из сети Jabber (XMPP) в сеть Telegram, написанный на Ruby. Преемник tg4xmpp.

  • Зависимости

    • Ruby >= 1.9
    • xmpp4r == 0.5.6
    • tdlib-ruby == 2.0 с скомпилированным tdlib == 1.3
  • Возможности

    • Авторизация в существующем аккаунте Telegram
    • Синхронизация списка чатов с ростером
    • Синхронизация статусов контактов с ростером
    • Добавление и удаление Telegram-контактов
    • Поддержка VCard с аватарками
    • Отправка, приём, редактирование и удаление сообщений
    • Обработка цитат и пересланных сообщений
    • Отправка и приём файлов и специальных сообщений (поддержка фото, видео, аудио, документов, голосовых сообщений, стикеров, анимаций, геолокаций, системных сообщений)
    • Поддержка секретных чатов
    • Создание, управление и модерирование чатов/супергрупп/каналов
    • Сохранение сессий и автоматическое подключение при входе в сеть XMPP
    • Получение истории и поиск по сообщениям
    • Управление аккаунтом Telegram
  • Значимые изменения до версии 1.0, новости о которой не было на LOR:

    • Добавлена обработка SIGINT с корректным закрытием всех сессий
    • Добавлены (и позднее удалены) поддержка iq:jabber:register (регистрация пользователей), iq:jabber:gateway (поиск контактов)
    • Долгие бодания с профайлером в Ruby, пока не поняли, что течёт tdlib (разработчики закрыли баг с WONTFIX — это фича)
  • Изменения до версии 2.0:

    • Добавлена поддержка OTR (если Zhabogram используется с обеих сторон — не спрашивайте.)
    • Использование сериализации YAML вместо sqlite3 для сохранения сессий.
    • Убрано автоматическое определение часового пояса в связи с тем, что некоторые клиенты не следуют протоколу и отправляют кашу
    • Исправлены запросы на авторизацию (подписку) от публичных каналов, из которых было перенаправлено (forwarded) сообщение, но подписчиком которого вы не являетесь
  • Изменения в версии 2.0

    • NB! Сломана обратная совместимость конфиг-файла и файла сессий (для поддержки индивидуальных настроек в будущем).
    • Код переписан на 80% — теперь он в разы читаемее. Внутренняя логика приведена в порядок.
    • Количество запросов к Telegram уменьшено в три раза
    • Убраны jabber:iq:register, jabber:iq:gateway
    • Переписаны /команды — теперь они разные для чатов и для самого транспорта (системные функции). Для получения списка команд пришлите команду /help.

Для установки потребуется собственный Jabber-сервер. Рекомендуется получить API ID и API HASH в Telegram для более стабильной работы. Подробную инструкцию можно найти в файле README.md.

>>> Подробности

Я думаю, не нужно объяснять, зачем человеку может понадобиться надежный и защищенный канал связи. Да, ты можешь шифровать сообщения и слать по обычной почте, но уже сам факт отправки кое-что да значит. К тому же почта не всегда удобна, в наш век все привыкли пользоваться мессенджерами.

Выбор приватных мессенджеров велик, но о безопасности некоторых из них говорить не приходится. Сразу отсекаем WhatsApp, Viber, Skype и социальные сети. Чем они это заслужили? Наверное, лучшим ответом будет твит создателя Telegram Павла Дурова.

image1.png

Остается вот такой список наиболее известных мессенджеров, которые считаются надежными:

  • Telegram;
  • Signal;
  • Threema;
  • Wickr.

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

Справочник анонима

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

Другие статьи цикла:

  • «Как работают токены аутентификации и в чем их отличия от паролей»;
  • «Теория и практика шифрования почты»;
  • «Виды шифрования и защиты трафика, выбор софта»;
  • «Делаем шпионскую флешку с защищенной операционкой Tails».

Если для тебя эти материалы тривиальны — отлично! Но ты сделаешь доброе дело, отправив ссылку на них своим друзьям, знакомым и родственникам, менее подкованным в технических вопросах.

Давай прикинем, какие критерии должны соблюдаться мессенджером, чтобы он был действительно анонимным. У меня вышел вот такой список.

  1. Не требует ввода номера телефона.
  2. Не требует никаких личных данных.
  3. Нельзя пренебрегать шифрованием и общаться в незащищенных чатах.
  4. Должны быть хоть какие-то подтверждения приватности. Хотя бы в виде блокировок в разных странах.

Так как почти все новомодные мессенджеры не подходят по одному из пунктов, то лучшим вариантом для безопасного общения остается 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.

image2.png

Как ты уже мог догадаться, 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).

В появившемся окне жми «Добавить», откроется окно регистрации и авторизации.

Тут нам необходимо сделать следующее:

  1. Выбрать из выпадающего списка протокол XMPP.
  2. Ввести желаемое имя пользователя.
  3. Ввести домен сервера, на котором ты собираешься завести учетную запись.
  4. Ресурс можно пропустить, так как на регистрацию он не влияет (по сути, это просто указание того, к какому девайсу привязан данный вход на сервер, — в ростере у твоих собеседников будет написано, с какого ресурса ты зашел).
  5. Ввести желаемый пароль.
  6. Поставить (или не поставить) галочку для запоминания пароля (рекомендую не ставить ее и не хранить пароль нигде, кроме своей головы, — ведь если кто-то получит доступ к твоему компьютеру, то пароль будет уже введен).
  7. Обязательно поставить галочку в чекбоксе «Создать новую учетную запись на сервере» (если, конечно, ты уже не регистрировался раньше).

После ввода всех данных может появиться отдельное окно для регистрации пользователя. Придется все ввести еще разок и нажать ОK.

Шаг 5. Включаем OTR

Учетка готова, и можно приступать к настройке шифрования. Я рекомендую один из двух вариантов: PGP или OTR. Здесь я для примера возьму OTR — он обеспечивает высокий уровень безопасности и легко настраивается. Однако при его использовании не шифруются сообщения в логах — так что для полной надежности их лучше отключать. А вот на сервере картинка выходит примерно следующая.

Поскольку плагин мы уже скачали и установили, его можно активировать из клиента. Открываем Pidgin, жмем «Средства» и выбираем пункт «Модули».

Активируем плагин Off-the-Record (OTR).

Далее нам необходимо настроить этот модуль. Для этого в самом низу списка модулей нажимаем «Настроить модуль».

В окне настройки модуля нам первым делом надо сгенерировать ключ для своего аккаунта. Выбираем аккаунт, для которого нужно создать ключ, и жмем «Создать». Появится окно генерации ключа.

Ключи создаются быстро, однако на этом шаге иногда происходит небольшое подвисание. Не пугайся! Pidgin не завис, он просто немного занят. Когда работа закончится, жми Ok и увидишь свой «отпечаток» из сорока символов (пять групп по восемь знаков).

Теперь отмечай галочками следующие пункты:

  • «Использовать защищенные разговоры»;
  • «Автоматически начинать защищенный разговор»;
  • «Требовать защиту разговора»;
  • «Не записывать разговоры через OTR в журнал».

Ведение журнала — дело исключительно добровольное. Если он пригодится, то включай, если нет, то помни, что его сможет прочитать любой, кому удастся получить доступ к твоему компьютеру — удаленный или совершенно непосредственный.

Ну и последняя галочка — это Show Otr button in toolbar. Она просто добавляет в интерфейс кнопку защиты чата и аутентификации собеседника.

Шаг 6. Аутентифицируем собеседника и защищаем чат

По сути, защищенный канал связи у тебя уже есть. Для добавления собеседника нужно нажать «Собеседники» и выбрать «Добавить собеседника».

Выбираем собеседника.

И жмем «Добавить».

Теперь собеседнику придет запрос, и, когда он его подтвердит, можете начинать чат. Статус защищенности можно посмотреть прямо в окне чата. Если шифрование не включено, то там так и будет написано: «Не защищено». Нажав на него, ты увидишь меню.

Если же начать защищенный разговор, то надпись сменится на «Не идентиф.» — это значит, что чат защищен, но нужно аутентифицировать собеседника, чтобы быть уверенным, что он именно тот, за кого себя выдает.

Аутентифицировать собеседника можно тремя способами.

  1. Вопрос и ответ на него. Ты задаешь вопрос собеседнику, а он должен дать правильный ответ.

    </p>

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

    </p>

  3. Ручная сверка ключа. Это вариант на тот случай, если ключ нужно передать не через Jabber, а каким-то иным способом.

    </p>

После того как собеседник будет аутентифицирован, на кнопке наконец появится зеленая надпись «Защищено».

Шаг 7. Настраиваем мобильный клиент

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

Регистрация в приложении аналогична регистрации на компьютере. Если у тебя уже есть учетная запись, то вместо создания нового аккаунта выбери Existing Account на главной странице.

Далее выбирай XMPP.

И вводи свои данные.

Если хочешь завести новый аккаунт, то нажимай «Создать новую учетную запись» и заполняй все данные. Большой плюс ChatSecure заключается в том, что он умеет пускать трафик через Tor без дополнительных ухищрений.

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

В конце тебе предложат сохранить сертификат. Сохраняй и дождись, пока закончится регистрация.

Теперь достаточно нажать на значок нового сообщения и в появившемся меню нажать «Добавить контакт».

Вводи адрес контакта.

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

U’r awesome and private ?

Поздравляю, теперь ты знаешь, как настроить канал связи, который будет неплохо защищен от отслеживания и перехвата! Однако, чтобы достичь приватности наивысшего уровня, придется пойти дальше — все же заморочиться и развернуть собственный сервер, а также заменить OTR на PGP. Но об этом как-нибудь в другой раз.

← Ранее Valve устранила баг, позволявший устанавливать малварь посредством игр SteamДалее → Tor Project запускает собственную программу bug bounty и предлагает до $4000 за баги

Используемые источники:

  • https://prohoster.info/blog/novosti-interneta/zhabogram-2-0-transport-iz-jabber-v-telegram
  • https://www.linux.org.ru/news/opensource/15155442
  • https://xakep.ru/2017/07/21/jabber-otr-howto/

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий