Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР 138, ИЮНЬ 2010 г.

Приватность общения: Надежные способы сохранить конфиденциальность переписки

Дамп интернет-трафика, как правило, довольно однообразен:пароли и данные форм, которые по-прежнему повсеместно передаются без HTTPS, е-мейлыи переписка из различных IM-мессенжеров. Последнего — особенно много. А теперьпосмотри на свои открытые окна в мессенжере и подумай: хотел ли ты, чтобы твоимессаги сейчас кто-то читал? Задумавшись на этот счет, я решил не играть ссудьбой и немного заморочился по части шифрования приватных разговоров.

Шифруем почту в Gmail

Когда я забирал почту с многочисленных почтовых ящиков спомощью The Bat!, отправлять письма в зашифрованном виде было проще простого.Давно зарекомендовавшую себя систему шифрования PGP было легко подключить клюбому популярному почтовику и при этом вполне удобно использовать. Со временем я, как и многие другие, перешел на GMail истал использовать веб-интерфейс,а поддержки шифрования сообщений в нем как не было, так и даже неанонсировано. Хотя нельзя сказать, что Google не заботится о безопасности:гуглопочта для авторизации давно использует исключительно HTTPS и даже, большетого, позволяет постоянно работать по защищенному соединению. Проверь, чтобы в настройкахопция «Browser connection» была выставлена как «Always use https».

Такимобразом, можно не волноваться, что твои письма отснифают в каком-нибудь кафеили другом месте с открытым Wi-Fi, но чтобы скрыть содержание письма от самогоGmail и всех других серверов, придется использовать дополнительное шифрование —например, с помощью PGP/GPG. Если говорить о веб-интерфейсе, то подключить егоможно только в Firefox'е, для которого уже довольно давно разрабатываетсяплагин FireGPG (ru.getfiregpg.org/s/install). Напомню, что смысл шифрования PGPв существовании пары ключей: закрытого (private) и открытого (public), а такжеспециальной процедуры, которая может с помощью открытого ключа преобразоватьсообщение так, чтобы обратное преобразование было возможно только с помощьюзакрытого ключа. Получается, ты можешь подписывать сообщения своим открытымключом и использовать открытый ключ другого человека для того, чтобы отправитьему зашифрованное сообщение, и наоборот. Это основной принцип ассиметричногошифрования. В сам плагин FirePGP никакие криптографические функции не включены,это лишь прослойка между веб-интерфейсом GMail и программой для шифрованияGnuPG, которую предварительно необходимо установить. Есть разные вариации, взависимости от ОС:

Далее, подключив к браузеру и сам плагин, Firefox предложитуказать настройки. Самое главное — сгенерировать закрытый и открытый ключи,указав несколько параметров, в том числе пароль, срок действия ключа, егодлину. Важная опция «Включить поддержку Gmail» свяжет FirePGP с GMail, и она включенапо умолчанию. Теперь при создании нового письма в интерфейсе GMail у тебяпоявятся кнопки «Зашифровать» и «Прикрепить зашифрованный файл». Понятно, чтодля чтения зашифрованных писем адресату точно также потребуется PGP/GPG и твойоткрытый ключ. При этом это совершенно необязательно должен быть Gmail — этасистема шифрования, как я уже говорил, отлично прикручивается к любомупочтовому клиенту. Да и GMail — это не только веб-почта, с аккаунтом можноотлично работать по протоколам POP/IMAP/SMTP.

Безопасное общение в аське

С почтой, вообще говоря, все понятно: есть PGP, к которомудавно все привыкли, — его и используем. А вот с многообразием мессенжеров,которых с шифрованием сообщений обделили никак не меньше, далеко не все такгладко. Из популярных в России протоколов шифрование изначальнопредусматривалось только в Jabber'е (об этом ниже). Но как быть с самойпопулярной сетью — ICQ? Единственное, что было переработано в протоколе — этосоединение с сервером, которое, ура, можно проводить через SSL. Но, черт егознает, что там на сервере? Нужно шифровать сообщение, и эту функцию придется каким-тообразом реализовывать поверх протокола. Один из подходов — перехватывать всесообщения и шифровать трафик на лету. Допустим, пустить весь трафик мессенжерачерез промежуточный SOCKS-сервер, который будет шифровать каждое сообщение иуже в безопасном виде отправлять его на сервер. Тело сообщения при этом дойдетв таком виде до самого адресата и только там преобразуется в открытый вид точнотаким же SOCKS-сервером. Удобно, что не надо никак привязываться к мессенжеру(ведь каждый из нас любит что-то свое: miranda, qip, pidgin и т.д.) — системеабсолютно пофигу на него. Важно только, чтобы у каждого клиента был установлени настроен такой шифрующий SOCKS-сервер. Описанный подход в частностиреализовали французские программисты, выпустившие серию продуктов SimpLite(www.secway.fr). Увы, проект последние годы не обновляется, и если раньше онработал более-менее сносно, то сейчас заставить его корректно функционироватьдовольно сложно.

Зато семимильными шагами развивается даже не конкретноепрограммного решение, а именно протокол для безопасной передачи сообщений,который может работать поверх любого незащищенного соединения, в том числе ICQ.OTR или Off-the-Record Messaging — это хитрая комбинация симметричногошифрования с помощью AES, известного алгоритма Диффи-Хеллмана для обмена ключейи хеш-функции SHA-1. Все вместе это позволяет надежно защищать IM-сессии собязательным шифрованием сообщений, аутентификацией собеседника и проверкойцелостности сообщения. Перед тем же PGP у протокола есть важное преимущество.Даже если твой приватный ключ попадет в чужие руки, то предыдущая переписка небудет скомпрометирована: злоумышленник просто не сможет ее прочитать. Привычныепубличный и приватный ключи используются только для первичной аутентификациипользователей, но все дальнейшие сообщения шифруются уже с помощью одноразовых AES-ключей— так называемых Message Authentication Codes (MACs). Но не будем вдаваться вматематику (ссылки на подробное описание протокола ты найдешь в сносках), апосмотрим, как это работает на практике.

На официальном сайте протокола www.cypherpunks.ca/otrдоступна так называемая OTR localhost AIM proxy — реализация того самогопосредника между IM-клиентом и сервером, о котором мы говорили выше. Программа(есть версии для винды, линукса и macos) работает в системе, как самая обычнаяпрокси, через которую нужно пустить трафик твоего IM-мессенжера (неважнокакого). Для этого в настройках соединения пропиши SOCKS5 (127.0.0.1:1080) илиHTTP-прокси (127.0.0.1:8080). Во время следующего соединения программаподключится к ICQ-серверу через OTR, а в окно Proxy ты увидишь новое подключение.Для каждого ICQ-аккаунта необходимо сгенерировать ключи, но делать это самому впринципе необязательно — программа сделает это автоматически. Если собеседникзахочет установить безопасное подключение, то должен будет предоставить свойпубличный ключ (в OTR он называется fingerprint) — прокси об этом тебяпредупредит и добавит связку uin-fingerprint в свою базу данных. Далееfingerprint будет использоваться для того, чтобы установить, что собеседник — именнотот, за кого себя выдает. Обмен ключами производится автоматически, и тебе, посути, вообще ничего не надо настраивать. Если оба клиента подключаются кICQ-серверу через OTR, то программа по умолчанию установит безопасноесоединение. С помощью настроек ты можешь отключить автоматическое инициированиебезопасного подключения или, напротив, указать, что с некоторыми из контактовобмен сообщениями должен происходить с обязательным шифрованием. По своемуопыту могу сказать, что система не только работает, но и работает оченьздорово. Можно даже попробовать отснифать трафик и убедиться, что сообщенияпередаются исключительно в закриптованном виде.

Другой способ использовать OTR — прикрутить к мессенжеруспециальный плагин. Для Pidgin'а есть официальный аддон, к Miranda и quitIMсоответствующее дополнение разрабатывается энтузиастами, а в известномMac'овском IM-клиенте Adium поддержка протокола есть по умолчанию. Еслиговорить об альтернативах OTR в принципе, то для Miranda есть плагин SecureIM,который защищает сообщения либо встроенным в плагин алгоритмом AES-192, либовнешней программой GPG/PGP. К слову, для использования в Miranda GPG/PGP есть идругие плагины — например, GnuPG Plugin (addons.miranda-im.org/details.php?action=viewfile&id=3485).Но тут надо обязательно иметь в виду, что все участники разговора в этом случаедолжны использовать одно и то же решение.

Jabber & PGP

Вместо того чтобы прикручивать шифрование там, где егоникогда не было, есть другой вариант — перейти на протокол, который изначальнопредусматривает безопасную передачу сообщений. Что неудивительно, такимпротоком является XMPP (Jabber). Начнем с того, что практически любойXMPP-сервер сейчас поддерживает защищенное SSL/TLS-соединение между сервером иклиентом, что уже обламывает любителей поснифать трафик в локалке или хотспоте.Более того, во многих клиентах предусмотрена возможность шифровать сообщениямежду пользователями, прежде всего, на основе PGP/GPG. Тут опять же насвыручает свободная реализация системы PGP — GnuPG, на которую и возложены всефункции шифрования. Попробуем прикрутить ее к одному из самых популярныхXMPP-клиентов — psi (www.psi-im.org). С тем же успехом можно наладить связкуGnuPG с Pidgin и многими другими мессенжерами.
Если ты уже использовал GnuPG вместе с плагином FireGPG, тоу тебя уже наверняка есть пара из открытого и закрытого ключей, которую тыможешь использовать и для переписки в Jabber'е. В противном случае ключи необходимосоздать с помощью команды «gpg --gen-key». В диалоговом режиме надо ответить наряд сопутствующих вопросов, указав тип шифрования, длину ключа (чем больше — темлучше), срок его действия, идентификатор пользователя, e-mail, а также пароль.Когда ключи будут готовы, необходимо экспортировать открытый ключ в файл идальше передать его своему собеседнику. Для этого выполни команду «gpg--list-keys» — она выведет список доступных ключей и их идентификаторы. Адальше, используя нужный идентификатор, экспортируй ключ в файл: «gpg --armor--export ID_КЛЮЧА > mykey_gpg.asc». Файл mykey_gpg.asc будет похож на что-товроде:

pub1024D/29D59819 06.06.2010 myaccount's key (myaccount's key)<myaccount@gmail.com>
Primary key fingerprint:  586C 0FAB 3F0C 0009 40C6 273E 8885 6A80 29D59819

-----BEGINPGP PUBLIC KEY BLOCK-----
Version:GnuPG v1.4.9 (MingW32) - WinPT 1.4.3
Charset: UTF-8

mQGiBEwLWjwRBACT9pHfYBDC51cxwsIWuO5DE7xKBz/NscI05q7j+DaVl0PoXLko
[вырезано]
D1cedORKLsgnRfbfkIMAn2BDxiBT2hPvEnAFjHOpIWra8axQ
=l7zo
-----ENDPGP PUBLIC KEY BLOCK-----

Его-то и нужно передать всем адресатам, с которыми тыпланируешь ввести приватные беседы. Чтобы не геморроиться с консольнымиутилитами для работы с ключами, есть замечательная GUI-тулза WinPT(winpt.gnupt.de), которая позволяет сделать все то же самое только в 10 разпроще. Но что делать со своим закрытым ключом? Ничего. Psi на запуске самапроверяет ключи, которые были созданы GnuPG (заметь, без каких-либо плагинов ишаманств с настройками). Надо лишь зайти в настройки аккаунта, перейти навкладку «Подробности» и в настройках OpenPGP выбрать нужный приватный ключ. Сэтого момента во время подключения к серверу клиент будет запрашивать у тебя парольдля этого ключа. А всем тем, кто импортировал твой открытый ключ, клиент будетотображать, что твой статус подписан — к сети подключился действительно ты, ане кто-то другой. Осталось уже со своей стороны импортировать открытые ключидругих пользователей и связать их с нужными контактами в Psi, нажав правойкнопкой мыши и выбрав «Присвоить ключ OpenPGP». Ключи проще всего импортироватьв WinPK через меню «Ключ -> Импортировать». Единственное надо иметь в виду,что Psi считывает информацию о ключах во время запуска, поэтому после любогоимпорта ключей, его необходимо перезапустить. Все, теперь, когда ты откроешьновое окно с чатом, то увидишь иконку с замочком. После нажатия на неепроизойдет сверка ключей, и система выдаст сообщение о том, что разговорзашифрован.

Безопасная конференция

Еще один нетронутый аспект — организация площадки длябезопасного общения нескольких людей или даже большой команды. С этой целью ужедавно разрабатывается профильное решение — SILC Secure Internet LiveConferencing (silcnet.org). SILC очень похож в использовании на IRC: тут тожеесть имена пользователей, общие каналы, частные сообщения. Более того,совпадают даже основные команды — словом, все, как в те времена, когда мы всееще зависали на IRC. Основное различие от IRC – изначально заложенная защитапередаваемой информации. Причем шифрование – это базовая часть протокола, ееникак нельзя отключить. Шифруются абсолютно все: сообщения в привате или наканале, пароли, команды и уведомления. SILC появился на десять лет позже IRC, иу разработчиков (прежде всего, Пеки Риконнена) была возможность поучиться начужих ошибках и учесть неудачные решения. Так, протокол обеспечивает защищеннуюпередачу и аутентификацию между клиентом и сервером, сервером и сервером, имежду клиентами в приватной беседе. К тому же, он банально удобен. Например, вклиенте по умолчанию поддерживается функция detaching: ты можешь отсоединитьсяот сервера, но у других создается иллюзия присутствия. В IRC для этогопонадобилось на каком-нибудь сервере установить небезызвестный BNC :).

Система SILC состоит из сервера под никсы, который придетсяустановить в безопасном месте, и официального клиента дляLinux/Unix/Mac/Windows. Для подключения также можно использовать Pidgin сустановленным плагином. Сервер легко собирается из исходников (стандартнымикомандами ./configure&make&make install) или же инсталлится изrpm-пакета (rpm –i silc-server-1.1-0.fc8.i386.rpm). А вот, что придетсясделать, так это сгенерировать для каждого пользователя ключ, что делаетсядовольно мудреной командой:

silcd -C/etc/silcd --identifier="UN=<username>, HN=<hostname or IP>,RN=<real name>, E=<email>, O=<organization>,C=<country>"

После того как создашь пользователей, можно запустить сервери попробовать подключиться к нему Pidgin'ом, создав новый профиль для работычерез протокол SILC. Помимо обычных параметров, вроде имени и пароля, IP ипорта сервера, необходимо указать расположение публичного и закрытого ключей.Ключа у тебя нет, но он будет автоматически сгенерирован при первом соединениис сервером. Пробуем подсоединиться... Ву-а-ля, теперь у нас снова есть удобныйIRC, но гораздо более безопасный и удобный.

WARNING

Слабое место любого мессенжера — история переписки. Она нешифруется и, как правило, хранится в открытом виде. Поэтому ее лучше отключить.

WWW

Презентация с описанием протокола OTR: http://www.cypherpunks.ca/otr/otr-codecon.pdf

Содержание
загрузка...
Журнал Хакер #151Журнал Хакер #150Журнал Хакер #149Журнал Хакер #148Журнал Хакер #147Журнал Хакер #146Журнал Хакер #145Журнал Хакер #144Журнал Хакер #143Журнал Хакер #142Журнал Хакер #141Журнал Хакер #140Журнал Хакер #139Журнал Хакер #138Журнал Хакер #137Журнал Хакер #136Журнал Хакер #135Журнал Хакер #134Журнал Хакер #133Журнал Хакер #132Журнал Хакер #131Журнал Хакер #130Журнал Хакер #129Журнал Хакер #128Журнал Хакер #127Журнал Хакер #126Журнал Хакер #125Журнал Хакер #124Журнал Хакер #123Журнал Хакер #122Журнал Хакер #121Журнал Хакер #120Журнал Хакер #119Журнал Хакер #118Журнал Хакер #117Журнал Хакер #116Журнал Хакер #115Журнал Хакер #114Журнал Хакер #113Журнал Хакер #112Журнал Хакер #111Журнал Хакер #110Журнал Хакер #109Журнал Хакер #108Журнал Хакер #107Журнал Хакер #106Журнал Хакер #105Журнал Хакер #104Журнал Хакер #103Журнал Хакер #102Журнал Хакер #101Журнал Хакер #100Журнал Хакер #099Журнал Хакер #098Журнал Хакер #097Журнал Хакер #096Журнал Хакер #095Журнал Хакер #094Журнал Хакер #093Журнал Хакер #092Журнал Хакер #091Журнал Хакер #090Журнал Хакер #089Журнал Хакер #088Журнал Хакер #087Журнал Хакер #086Журнал Хакер #085Журнал Хакер #084Журнал Хакер #083Журнал Хакер #082Журнал Хакер #081Журнал Хакер #080Журнал Хакер #079Журнал Хакер #078Журнал Хакер #077Журнал Хакер #076Журнал Хакер #075Журнал Хакер #074Журнал Хакер #073Журнал Хакер #072Журнал Хакер #071Журнал Хакер #070Журнал Хакер #069Журнал Хакер #068Журнал Хакер #067Журнал Хакер #066Журнал Хакер #065Журнал Хакер #064Журнал Хакер #063Журнал Хакер #062Журнал Хакер #061Журнал Хакер #060Журнал Хакер #059Журнал Хакер #058Журнал Хакер #057Журнал Хакер #056Журнал Хакер #055Журнал Хакер #054Журнал Хакер #053Журнал Хакер #052Журнал Хакер #051Журнал Хакер #050Журнал Хакер #049Журнал Хакер #048Журнал Хакер #047Журнал Хакер #046Журнал Хакер #045Журнал Хакер #044Журнал Хакер #043Журнал Хакер #042Журнал Хакер #041Журнал Хакер #040Журнал Хакер #039Журнал Хакер #038Журнал Хакер #037Журнал Хакер #036Журнал Хакер #035Журнал Хакер #034Журнал Хакер #033Журнал Хакер #032Журнал Хакер #031Журнал Хакер #030Журнал Хакер #029Журнал Хакер #028Журнал Хакер #027Журнал Хакер #026Журнал Хакер #025Журнал Хакер #024Журнал Хакер #023Журнал Хакер #022Журнал Хакер #021Журнал Хакер #020Журнал Хакер #019Журнал Хакер #018Журнал Хакер #017Журнал Хакер #016Журнал Хакер #015Журнал Хакер #014Журнал Хакер #013Журнал Хакер #012Журнал Хакер #011Журнал Хакер #010Журнал Хакер #009Журнал Хакер #008Журнал Хакер #007Журнал Хакер #006Журнал Хакер #005Журнал Хакер #004Журнал Хакер #003Журнал Хакер #002Журнал Хакер #001