Как
настроить универсальный защищённый мессенджер: XMPP+OTR
Вообще-то говорить о защищённости мессенджеров в отрыве от защищённости других компонентов системы несколько странно. Нет-нет, мы все же попробуем дать практические советы и инструкции для не слишком опытных пользователей, однако для начала придётся рассказать о других важных аспектах. И первый из них очень прост — мессенджер не существует сам по себе, он всегда работает в окружении ОС и других программ, которые могут оказаться не слишком надёжными и безопасными. Какой толк от защищённого мессенджера, если ваша модная клавиатура с пони и гифками на смартфоне сразу отправляет всё набранное прямо на сервера производителя? С другой стороны, и сами приложения могут сохранять на устройстве свои данные, порой в не слишком защищённом виде.
Про различные зловреды для любых ОС или уязвимости даже говорить не будем — один Quadrooter чего стоит. Ну или истории с предустановкой в прошивку аппаратов именитых производителей программ-шпионов, якобы нужных для сбора статистики. А ведь есть ещё более экзотические методы удалённого сбора информации! Впрочем, паранойей от этого обзаводиться не стоит, надо всего лишь не забывать, что уязвимости есть всегда и везде. Кроме того, нужно понимать, что, какой бы прекрасной ни была архитектура приложения в теории, на практике реализовывать её будут живые люди, которым свойственно ошибаться. И даже открытость кода не является достаточным условием для того, чтобы все ошибки такого рода быстро нашли и исправили.
Второй важный аспект — это то, что любой мессенджер для работы требует сетевого подключения. Очевидно, что нас интересует интернет-соединение, а это автоматически означает прохождение трафика через неконтролируемые пользователем каналы. Даже если он зашифрован, это ещё не означает, что его нельзя будет расшифровать потом. Собственно говоря, для подобных задач и предназначены системы вроде СОРМ, а также различные законы. И это третий аспект. В некоторых странах в принципе запрещено использовать стойкое шифрование, в других же пользователь по первому требованию властей обязан предоставить ключи для расшифровки. К слову, на территории Таможенного союза, куда входит Россия, на этот счёт тоже есть правила.
Наконец, последнее важное замечание — всегда придётся искать баланс между удобством пользования и защищённостью. Ранее мы рассказывали про создание сетей P2P-VPN, однако они подойдут лишь опытным пользователям, которые наверняка обойдутся и без наших советов. Вариант попроще — сети F2F или другие пиринговые сети вроде TOR или I2P, в которых есть собственные сервисы для общения (заметьте, именно внутри сетей, а не для проксирования других сервисов). Но это опять-таки не слишком просто для обычного пользователя. К счастью, EFF уже давно подготовила инструкции по настройкам безопасности различных мессенджеров. С учётом вышесказанного из этой таблицы были отобраны два решения, совместимых друг с другом: для мобильных устройств и для десктопов. Оба они сводятся к использованию протоколов Off-the-Record Messaging (OTR) и XMPP.
ChatSecure — это бесплатный мессенджер с открытым исходным кодом, который, во-первых, работает на Android и iOS, а во-вторых, совместим с другими мессенджерами, использующими всё те же OTR и XMPP. То есть сообщения, отправленные из ChatSecure, можно прочитать в других мессенджерах, поддерживающих эти протоколы, и наоборот, сообщения из этих мессенджеров можно отправлять пользователям ChatSecure.
Настроить его совсем нетрудно. Для работы ChatSecure в Android потребуется сканер штрих-кодов — приложение само предложит его установить. Кроме того, ChatSecure поддерживает интеграцию с TOR-клиентом Orbot. При первом запуске предлагается задать мастер-пароль, который надо будет вводить при каждом открытии приложения. Лучше от него не отказываться и задать надёжную кодовую фразу. Далее мессенджер предложит добавить новый аккаунт.
На Android проще всего воспользоваться учётной записью Google Talk/Hangouts, но для пущей безопасности можно прямо в приложении завести отдельный аккаунт на любом из общедоступных Jabber-серверов (для простоты ChatSecure и сам предлагает штук пять на выбор). Для надёжности лучше заводить всем участникам аккаунты на одном и том же сервере. Также рекомендуется в настройках программы включить автоматическое удаление незащищённых медиафайлов (Delete Insecure Media), а в настройках аккаунта включить обязательные безопасное TLS-подключение и принудительное шифрование переписки (Chat Encryption, Always Require). Для некоторых серверов там же требуется включить обработку SRV-записи. Чтобы зайти в настройки аккаунта, надо кликнуть по его названию в меню слева.
Естественно, у вашего собеседника тоже должны быть аналогичный по возможностям мессенджер и собственный Jabber-аккаунт (хотя бы Google Talk/Hangouts). Для инициализации чата необходимо, чтобы собеседник был онлайн. В основном окне ChatSecure надо нажать на плюсик и либо выбрать собеседника из списка контактов, либо отправить ему приглашение. Альтернативный вариант, который к тому же считается своего рода хорошим тоном у любителей криптографии – личная встреча с собеседником и прямой обмен ключами. В данном случае он производится с помощью QR-кодов. В настройках аккаунта можно сгенерировать код отпечатка (fingerprint) и показать его собеседнику, который в своём ChatSecure просто просканирует его.
После взаимного добавления контактов рекомендуется также придумать секретный вопрос и ответ на него, чтобы в случае чего удалённо проверить подлинность собеседника. Затем в списке контактов нужно кликнуть по необходимому и в открывшемся окне чата посмотреть на значок замочка в правом верхнем углу. Если у этого значка стоит красный крестик, а не зелёная галочка, то надо кликнуть по нему и включить шифрование (Start Encryption). Через некоторое время, если у обоих собеседников правильные настройки и приложение активно, будет установлен защищённый обмен данными. Даже если в настройках включено принудительное шифрование переписки, стоит дождаться установки защищённого чата.
О получении нешифрованных (unencrypted) сообщений мессенджер предупреждает сразу. Да и вообще, в нём повсеместно используются простые обозначения: значок закрытого навесного замка означает защиту, а его отсутствие или значок открытого замка — её отсутствие. Упомянутые выше секретный вопрос и ответ нужны для дополнительной проверки подлинности собеседника. Чтобы задать их, надо кликнуть по той же иконке замка справа вверху и просмотреть профиль (View Profile), где выбрать соответствующий пункт. В русской версии интерфейса он обозначен как «Вопрос», а в английской как Question.
Фактически сообщения передаются в виде зашифрованного текста. Если открыть тот же клиент Hangouts, то можно увидеть наборы сообщений, состоящих из большого числа последовательностей букв и цифр. Ровно таким же образом в ChatSecure передаются изображения и любые другие файлы. Обратите внимание, что для Google-аккаунтов вся переписка в зашифрованном виде может сохраняться в Gmail.
⇡#Настройка Pidgin с плагином OTR
Так, с настройкой безопасного мессенджера для мобильных платформ разобрались, теперь займемся тем же самым на дестопе. Мессенджеров с поддержкой XMPP и OTR для всех настольных ОС существует немало. Есть даже специализированные варианты сборок, которые работают только с этими протоколами. Мы же рассмотрим решение для Windows, совместимое с тем же ChatSecure, хотя и частично — будет доступен только обмен текстовыми сообщениями. Нам понадобятся открытый бесплатный мессенджер Pidgin и OTR-плагин для него. Оба имеют готовые инсталляторы для Windows, которые надо будет запустить один за другим. При первом включении Pidgin предложит сразу добавить аккаунт, нам нужен XMPP. Как и в случае Chat Secure, можно завести новый на любом из доступных Jabber-серверов, либо использовать Google-аккаунт.
Обратите внимание, что для корректной работы в настройках Google придётся включить доступ для непроверенных приложений, хотя надёжнее всё-таки использовать двухэтапную аутентификацию и сгенерировать для Pidgin отдельный пароль. В дополнительных настройках аккаунта рекомендуется использовать принудительное шифрование для подключения к серверу и запретить аутентификацию открытым текстом через нешифрованные соединения. Затем в списке модулей (Ctrl+U) необходимо включить плагин OTR, а в настройках плагина для нужного аккаунта сгенерировать новый ключ (отпечаток). Желательно включить принудительное использование OTR и, если хочется, отключить запись логов переписки.
Как в случае ChatSecure, для защищённого разговора необходимо, чтобы у собеседника имелись свой Jabber-аккаунт и клиент с поддержкой OTR, а сам он должен быть онлайн. Для включения шифрования в окне переписки в меню OTR надо выбрать соответствующий пункт. Через несколько мгновений шифрование будет активировано, на что будет указывать статус в самом окне чате и в области справа и ниже чата. Дополнительно аутентифицировать собеседника можно с помощью всё того же меню OTR. Если собеседник использует ChatSecure, то для него подойдёт вариант проверки подлинности с помощью секретных вопроса и ответа. Ещё раз напомним, что проверять наличие шифрования необходимо при каждой новой беседе.
Как видите, защита переписки в мессенджере — это не такая уж сложная задача. Для остальных ОС и клиентов инструкции по настройке OTR можно найти на сайте EFF, а вот к советам по использованию других разрекламированных защищённых мессенджеров надо подходить с осторожностью. Естественно, что стопроцентной защиты не гарантируют ни они, ни приведённая выше инструкция. Для тех, кому эта тема интересна, можно посоветовать материалы про шифрование накопителей, отключение телеметрии в Windows, безопасность мобильных устройств и тонкости работы VPN. Впрочем, лучшая защита во всём — это здравый смысл и осторожность. Искренне надеемся, что все наши советы будут использованы читателями исключительно в благих целях.