В Части 1 мы разобрались с современными возможностями анонимной передачи зашифрованных сообщений, доступными простому пользователю и разобрали практическое применение популярных в этой области технологий на примере Mac OS X. Во второй части речь пойдет о том, как настроить работу анонимной шифрованной переписки на Windows, Linux и Android.
Анонимная передача зашифрованных сообщений в Windows и Linux
Если вы еще не создали новую учетную запись в Jabber с помощью браузера Tor, создайте ее в соответствии с инструкциями в разделе «Выбираем сервер Jabber», расположенном в Части 1. Убедитесь, что вы знаете, на каком сервере вы создали свой аккаунт, а также свои логин и пароль.
Для данного примера я создал учетную запись в Jabber на сервере wtfismyip.com и взял логин pluto2.
Инструкции для Windows и Linux находятся в одном разделе, так как в них используется одна программа – Pidgin. Почти все этапы для обеих операционных систем совпадают, но я расскажу и об их отличиях.
Установка Pidgin и настройка анонимной учетной записи через Tor
Если вы пользуетесь Windows, скачайте и установите Pidgin, а затем скачайте и установите OTR-плагин для Pidgin. Убедитесь, что браузер Tor открыт. Пока он открыт, сервис Tor будет работать на вашем компьютере в фоновом режиме. Когда вы закроете браузер Tor, сервис Tor также прекратит свою работу. Это значит, что каждый раз, когда вы хотите воспользоваться своим скрытым аккаунтом в Jabber, ваш браузер Tor должен быть запущен в фоновом режиме, иначе Pidgin просто не сможет выполнить подключение. Итак, откройте браузер Tor и не закрывайте его, пока не выполните все инструкции.
Если вы пользуетесь Linux, установите пакеты pidgin, pidgin-otr и tor. В операционных системах Ubuntu и Debian вы можете ввести строку «sudo apt-get install pidgin pidgin-otr tor» в терминале или обратиться в Центр приложений Ubuntu. Если вы устанавливаете Tor на Linux, вам не нужно беспокоиться о том, чтобы браузер Tor был всегда открыт в фоновом режиме, как в случае с Windows или Mac OS X.
Откройте Pidgin. После того, как вы его откроете, всплывет окно «Добро пожаловать в Pidgin!». Нажмите кнопку «Добавить» (Add), чтобы добавить свою скрытую учетную запись (если вы уже пользуетесь Pidgin, вы можете добавить новую учетную запись, нажав на меню «Учетные записи» (Accounts) в окне «Список собеседников» (Buddy List) и выбрав пункт «Управление учетными записями» (Manage Accounts)).
Должно появиться окно «Добавить учетную запись» (Add Account). Перед тем, как перейти к следующему этапу, перейдите на вкладку «Прокси-сервер» (Proxy). Установите тип прокси-сервера «Tor/Privacy (SOCKS5)». В поле «Хост» (Host) введите «127.0.0.1», а в поле «Порт» (Port) введите «9150», если вы пользуетесь Windows, и «9050», если пользуетесь Linux.
Придумайте уникальные логин и пароль для этой учетной записи и введите их в соответствующие поля. Данные настройки гарантируют, что Pidgin будет подключаться к этой учетной записи через Tor. Вводить имя пользователя и пароль не обязательно, но если вы будете ими пользоваться, то Tor будет подбирать для этой учетной записи отличные от других каналы связи, что увеличит степень вашей анонимности.
Перейдите на вкладку «Основные» (Basic). В поле «Протокол» (Protocol) выберите «XMPP». В поле «Имя пользователя» (Username) введите свой логин (в моем случае это «pluto2»). В поле «Домен» (Domain) введите название сервера Jabber (в моем случае это «wtfismyip.com»). В поле «Ресурс» (Resource) введите «anonymous». В поле «Пароль» (Password) введите свой пароль, после чего вы можете поставить рядом с ним галочку, чтобы ваш пароль запомнили. После всех настроек нажмите кнопку «Добавить» (Add).
Если все выполнено верно, вы должны увидеть окно «Список собеседников» со статусом «Доступен» (Available).
Ключи шифрования и отпечатки
Итак, вы анонимно вошли в свою скрытую учетную запись через Tor. Следующим шагом будет создание ключа шифрования по протоколу OTR. Каждый, кто желает воспользоваться протоколом OTR, должен сгенерировать собственный ключ. Этот ключ представляет собой файл, хранящийся на устройстве, которое вы используете для обмена сообщениями. Каждый ключ содержит уникальную последовательность символов, которая называется отпечатком этого ключа: никакие два ключа не могут иметь одинаковый отпечаток.
Попробуем создать свой ключ с шифрованием по OTR. В окне «Список собеседников» (Buddy List) нажмите на меню «Инструменты» (Tools) и выберите «Плагины» (Plugins). Вы должны увидеть надпись «Off-the-Record Messaging», которая указывает на один из плагинов. Убедитесь, что слева от нее стоит галочка.
После того как вы выбрали «Off-the-Record Messaging», нажмите на кнопку «Настроить плагин» (Configure Plugin). Выберите свою скрытую учетную запись и кликните по кнопке «Сгенерировать» (Generate), чтобы сгенерировать новый ключ. После завершения процедуры у вас появится новый отпечаток с шифрованием по OTR. В том же окне поставьте галочку напротив надписи «Требовать защиту разговора» (Require private messaging).
В нашем примере я создал новый ключ, использующий шифрование по OTR, для своей учетной записи pluto2@wtfismyip.com с отпечатком A65B59E4 0D1FD90D D4B1BE9F F9163914 46A35AEE. Если вы хотите начать с кем-нибудь личную переписку, сообщите этому человеку ваш логин и имя сервера, а также отпечаток ключа с OTR. После того, как он создаст анонимную учетную запись в Jabber и сгенерирует ключ с шифрованием по OTR, попросите его также сообщить вам свои логин, имя сервера и отпечаток ключа.
После начала обмена зашифрованными сообщениями, вы сможете видеть отпечаток ключа своего собеседника, а он сможет увидеть ваш. Если отпечаток, который вам передали, совпадает с отпечатком, который отображается в Pidgin, то этот контакт можно отметить как надежный. Если отпечаток, который передали вы, совпадает с отпечатком, который отображается в Pidgin, то ваш контакт также могут отметить как надежный.
Этот этап несколько запутан, но очень важен. Если отпечатки ключа не совпадают, это значит, что на вас направлена атака посредника. В этом случае не отмечайте контакт как надежный, а попытайтесь повторить процедуру чуть позже.
Добавление контактов и личная переписка
Я пытаюсь начать обмен личными сообщениями со своим другом. Он сообщил мне, что его учетная запись в Jabber – 0060e404a9@jabber.calyxinstitute.org.
После того, как я создал свою учетную запись pluto2, я хочу добавить пользователя 0060e404a9 к себе в контакты. В окне «Список собеседников» (Buddy List) я нажимаю на меню «Собеседники» (Buddies) и выбираю «Добавить собеседника» (Add Buddy). В поле имени собеседника я ввожу «0060e404a9@jabber.calyxinstitute.org» и нажимаю кнопку «Добавить» (Add).
После того, как вы добавили контакт в Jabber, вы не можете сразу определить, находится он в сети или нет. Сначала нужно получить согласие пользователя на просмотр его статуса. Так что теперь мне нужно подождать, пока 0060e404a9 войдет в свою учетную запись и подтвердит мой запрос на добавление в список контактов.
Итак, 0060e404a9 разрешил мне видеть, когда он находится в сети, и он отправляет запрос на то, чтобы я разрешил ему видеть, когда я нахожусь в сети. Я нажимаю на кнопку «Разрешить добавить меня в список ваших контактов» (Authorize).
Теперь я впервые добавил пользователя 0060e404a9 как свой контакт, и он будет отображаться в моем списке контактов, когда будет находиться в сети. Затем все, что мне нужно сделать для начала общения с ним, это щелкнуть два раза на его имени. Я кликнул два раза на контакт 0060e404a9 и написал «привет».
Перед тем, как отправить мое сообщение, Pidgin начал сеанс работы с OTR-шифрованием. Обратите внимание на надпись «0060e404a9@jabber.calyxinstitute.org пока не аутентифицирован. Вам необходимо аутентифицировать этого собеседника». Вы также можете увидеть надпись желтого цвета «Не подтверждено» (Unverified) в правой нижней части окна. Это значит, что во время обмена зашифрованными сообщениями я не могу быть полностью уверен в том, что не произойдет атаки посредника.
Нажмите на ссылку «Не подтверждено» и выберите «Аутентифицировать собеседника» (Authenticate buddy). В окне «Аутентифицировать собеседника» предлагается три варианта аутентификации: «Вопрос и ответ», «Секретное слово» и «Подтверждение отпечатка вручную» (Manual fingerprint verification). Чтобы просмотреть отпечатки обеих сторон разговора, выберите последний.
Хотя способы «Вопрос и ответ» и «Секретное слово» отлично справляются со своей задачей, я не буду рассказывать, как они работают.
OTR-отпечаток этого контакта – 6F3D8148 DA029CDA 23C92CF7 45DA09C5 ED537DC4. Перед тем, как продолжить, я хочу убедиться в том, что это именно его отпечаток, поэтому спрашиваю его об этом по внешнему каналу (не в этом чате, так как я не знаю, насколько он надежен).
Итак, собеседник сообщил мне данные своего отпечатка, и, сравнив каждый из его символов с символами отпечатка, который отображается в Pidgin, можно убедиться в том, что эти отпечатки совпадают. Это значит, что на шифрование не совершается никакой атаки, и я могу спокойно сменить надпись с «Я не проверил» (I have not) на «Я проверил» (I have) и нажать кнопку «Аутентифицировать» (Authenticate). Теперь статус беседы сменится с «Не подтверждено» (Unverified) на «Защищено» (Private).
Вам необходимо пройти этап подтверждения только перед началом обмена зашифрованными сообщениями с новым контактом. Если завтра я войду в свою учетную запись и начну новую беседу с 0060e404a9, то я могу сразу начать работу, считая этот разговор защищенным.
Вот, собственно, и все. Итог: мы создали анонимную учетную запись в Jabber через сеть Tor. Мы настроили программу для обмена сообщениями Pidgin и можем зайти в эту учетную запись через Tor. Мы создали новый ключ OTR-шифрования для этой учетной записи. Мы добавили в свою учетную запись один контакт и проверили его отпечаток OTR-шифрования. Теперь мы можем обмениваться с этим контактом сообщениями на достаточно высоком уровне защиты информации.
Анонимная передача зашифрованных сообщений в Android
Установка ChatSecure и настройка анонимной учетной записи через Tor
Откройте приложение Google Play и установите Orbot – тот же Tor, только для Android. Запустите приложение и удерживайте большую кнопку в центре экрана, чтобы подключиться к сети Tor. Чтобы настроить свою учетную запись в Jabber, сначала вы должны подключиться к Tor.
Теперь откройте приложение Google Play и установите ChatSecure – приложение Jabber с поддержкой OTR-шифрования. Как только вы запустите ChatSecure, вам будет предложено установить мастер-пароль. Он может оказаться довольно полезным, если вы не знаете, что делать дальше. Этот мастер-пароль будет нужен вам каждый раз, когда вы запускаете приложение ChatSecure и подключаетесь к своей анонимной учетной записи. Если вам нужна дополнительная защита, попробуйте воспользоваться парольной фразой с высокой энтропией для вашего мастер-пароля.
Теперь смахните вправо несколько раз, пока не дойдете до страницы «Secret Identity!», и затем нажмите на кнопку «Добавить учетную запись» (Add Account).
ChatSecure автоматически создаст для вас новую скрытую учетную запись в Jabber через сеть Tor. В моем случае система подобрала имя 0060e404a9 на сервере jabber.calyxinstitute.org. Нажмите на свое имя, чтобы узнать о нем больше подробностей.
Нажмите на кнопку «Расширенные настройки учетной записи» (Advanced Account Options) и измените шифрование разговора (Chat Encryption) на «Принудительное / Требуется» (Force / Require).
Теперь вы анонимно вошли в свою скрытую учетную запись через Tor.
Ключи шифрования и отпечатки
Каждый, кто желает воспользоваться протоколом OTR, должен сгенерировать собственный ключ. Этот ключ представляет собой файл, хранящийся на устройстве, которое вы используете для обмена сообщениями. Каждый ключ содержит уникальную последовательность символов, которая называется отпечатком этого ключа: никакие два ключа не могут иметь одинаковый отпечаток.
Если вы хотите начать с кем-нибудь личную переписку, сообщите этому человеку ваш логин и имя сервера. ChatSecure не создаст для вас ключ OTR-шифрования, пока вы не начнете обмениваться зашифрованными сообщениями, поэтому, если вы только что создали учетную запись, вы не сможете сообщить собеседнику о своем отпечатке заранее.
После того, как ваш собеседник создаст анонимную учетную запись Jabber, попросите его, помимо прочего, передать вам его логин и имя сервера. Как только вы начнете обмениваться с ним сообщениями, вы сможете видеть отпечатки друг друга.
Теперь по внешнему каналу – то есть, переписываясь не в чате, а по другому каналу связи – сообщите своему собеседнику свой OTR-отпечаток и попросите его передать вам свой OTR-отпечаток.
Если отпечаток, который вам передали, совпадает с отпечатком, который отображается в ChatSecure, то этот контакт можно отметить как надежный. Если отпечаток, который передали вы, совпадает с отпечатком, который отображается в программе, используемой вашим собеседником, то ваш контакт также могут отметить как надежный.
Этот этап несколько запутан, но очень важен. Если отпечатки ключа не совпадают, это значит, что на вас направлена атака посредника. В этом случае не отмечайте контакт как надежный, а попытайтесь повторить процедуру чуть позже.
Добавление контактов и личная переписка
Я пытаюсь начать обмен личными сообщениями со своим другом. Он сообщил мне, что его учетная запись в Jabber – pluto3@suchat.org, а его OTR-отпечаток – 71863391 390AF4A8 D5692385 5A449038 7F69C09C.
После того, как я создал временную учетную запись 0060e404a9, я хочу добавить пользователя pluto3 к себе в контакты. В ChatSecure я нажимаю на значок «+» в правой верхней части экрана и выбираю «Добавить контакт» (Add Contact). Затем в поле Jabber ID я ввожу «pluto3@suchat.org» и нажимаю на кнопку «Отправить заявку» (Send Invite).
Как только я добавил новый контакт, ChatSecure разрешает мне отправить сообщение. Но прежде чем вступить в контакт со своим собеседником, лучше подождать, пока вы не убедитесь, что он находится в сети. Чтобы начать обмен сообщениями, зашифрованными по протоколу OTR, и я, и pluto3 должны одновременно находиться в сети.
После того, как вы добавили контакт в Jabber, вы не можете сразу определить, находится он в сети или нет. Сначала нужно получить согласие пользователя на просмотр его статуса. Так что теперь мне нужно подождать, пока pluto3 войдет в свою учетную запись и подтвердит мой запрос на добавление в список контактов.
Итак, pluto3 разрешил мне видеть, когда он находится в сети, и он отправляет запрос на то, чтобы я разрешил ему видеть, когда я нахожусь в сети. Я нажимаю на кнопку «Да» (Yes).
После того, как я добавил pluto3 в свой список контактов, я смогу видеть, когда он находится в сети, и отправлять ему сообщения. Обратите внимание, что в верхнем правом углу экрана есть значок разомкнутого замка: это говорит о том, что OTR-шифрование еще не используется. Я должен нажать на значок замка и выбрать опцию «Начать шифрование» (Start Encryption).
Обратите внимание, что теперь замок замкнулся, и на нем появился знак вопроса. Мне нужно снова нажать на значок замка и выбрать опцию «Провести верификацию контакта» (Verify Contact).
На своем экране я сравниваю OTR-отпечаток pluto3 с тем, что мой собеседник передал мне изначально, и вижу, что они совпадают. Это значит, что на вас не направлено атаки посредника.
Здесь также указан мой OTR-отпечаток. Теперь мне нужно сообщить собеседнику по внешнему каналу свой отпечаток, чтобы он мог его проверить.
Я нажимаю на кнопку «Вручную» (Manual), чтобы вручную подтвердить совпадение отпечатков, после чего знак вопроса на иконке замка сменяется зеленой галочкой.
Вам необходимо пройти этап подтверждения только перед началом обмена зашифрованными сообщениями с новым контактом. Если завтра я зайду в свою учетную запись и начну разговор с pluto3, то я могу сразу начать работу, считая этот разговор защищенным.
Вот, собственно, и все. Итог: мы установили программу Orbot и подключили ее к сети Tor на Android. Мы установили приложение ChatSecure и создали анонимную скрытую учетную запись Jabber. В эту учетную запись мы добавили один контакт, начали сеанс обмена зашифрованными сообщениями и проверили правильность OTR-отпечатков. Теперь мы можем начать с ним переписку на чрезвычайно высоком уровне защиты информации.
Примечание: в первоначальном варианте этой статьи было сказано, что Jabber и OTR для Tor на iOS использовать нельзя. На самом же деле в ChatSecure для iOS имеется экспериментальная поддержка Tor.