2.3 XMPP+GNUPG- делаем безопасную альтернативу скайпу.

Я помню времена, когда все болтали по аське, и никто не задумывался о безопасности своих сетевых разговоров, все было плевать- это был прекрасный мир, в котором никто не знал про СОРМ =)
Во второй половине нулевых особо продвинутые начали задумываться об обеспечении конфиденциальности своих переговоров- так скайп шагнул в массы. Это был прорыв- бесплатный, быстрый, надежный, шифрующий- ничего не надо было знать, скачай клиент, заведи аккаунт и болтай- ты просто мега-джеймс-мать-его-бонд! Европейская полиция плакала- преступники стали массово использовать скайп, раскрываемость упала. Наши отчественные люди в строгих костюмах тоже заметили тенденцию и стали жаловаться. Победа криптоанархии в сфере im -мессенджеров казалось вот вот наступит окончательно и бесповоротно!

А потом как-то стихли жалобы полиции, людей стали засекать по одному единственному скайп-звонку, отечественые люди с горячей головой и холодными ногами уже как год назад заявили что они могут эффективно перехватывать и расшифровывать скайп-траффик…

А быть может и перехватывать им ничего не надо. Скайп- закрытый протокол, искодные коды его и официального скайп-клиента никогда не были представлены публике. Кто мешает компании в попытке уйти от скандала с властями потихоньку встроить backdoor в новые версии, и никто и не заметит…

Но тем не менее не все так плохо- есть открытый протокол XMPP (jabber), есть opensource- клиенты, поддерживающие шифрование- Psi.
И еще какое шифрование! Psi поддерживает шифрование с открытым ключом, суть которого вкратце заключается в следующем:

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

В качестве jabber-сервера будем использовать gmail.com, логином и паролем будет ваш емайл и пароль к емайлу соответственно. Если нет аккаунта на gmail.com- заведите.

Плавно переходим к главному- созданию вашей пары ключей.
Использовать будем пакет с открытым исходным кодом GNUPG- gpg4win: http://www.gpg4win.org/

Качаем лайт-версию: http://ftp.gpg4win.org/gpg4win-light-2.0.4.exe

Устанавливаем, запускаем, после запуска сразу попадаем в диалог создания нового ключа:

Кликаем «Создать ключ»:

Программа предложит ввести имя- вводите такое чтоб было понятно и вам, и вашим потенциальным собеседникам- например ваш jabber-логин, он кстати будет совпадать с вашим емайлом.

Когда ключ начнет генерироваться, система попросит вас ввести пароль для доступа в хранилище ключей. Вводите пароль и сохраните его в каком-нибудь password-manager’е (keepass- рекомендации ведущих собаководов).

Если вдруг GPG4WIN будет глючить и выдавать <сообщение типа «прекращена работа программы pinentry.exe»- просто перейдите в каталог где установленная программа и переименуйте файл pinentry-w32.exe в pinentry.exe, а старый pinentry.exe удалите.
Если же не получается совсем никак- попросите более продвинутых товарищей, сидящих на Linux-дистрибутивах, сгенерировать вам ключ и безопасно передать его вам.

Ключ сгенерирован:

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

На выходе получите примерно вот такой вот файлик:
—–BEGIN PGP PUBLIC KEY BLOCK—–
Version: GnuPG v2.0.14 (MingW32)

mQENBExzqiQBCACw4btMjWvtxJoslXQiUzBIgHH05tiyEMisx9m4E3EP6+ZpUnZ0
Hq/8fx4D99ZYU0xNOOBrSuGiAErRg9g9Lj8KXUjeTmLTJ01aaXECuZNlsbayiNPI
M6t3ATUfR5baNZSLdBdwrjrOaI4EhAf3GtJimwsQSYowtNYDJr55IuKMr25n1Cqj
NxTb5WOb8HATc3zTxShquLJ6vQyOx/gTqz86lPkUjv9GM0Vqb2AhyQ386odpCbum
……
diQu2Jj15zXJJ1FxhUOdqX2FxZ6/fcv6kjomdAQWcE8i+TwuX9YRMOC3b27RcluF
WSyo2w==
=NpUN
—–END PGP PUBLIC KEY BLOCK—–

Добавить в свое хранилище чужие открытые ключи можно нажав на кнопку Импорт и указать место куда вы скопировали чужой публичный ключ.

Закрываем gpg4win.

Идем на домашнюю страницу проекта Psi:

http://psi-im.org/

Качаем версию для винды: http://downloads.sourceforge.net/psi/psi-0.14-win-setup.exe
Устанавливаем, запускаем:

В качестве Jabber ID испоьзуем ваш гмайл, пароль- ваш пароль к гмайлу. Идем на вкладку Подробности, жмем на Выбрать ключ, выбираем ваш ключ:

Идем в основное окно, меняем статус на Доступен, в процессе соединения с сетью надо будет ввести ваш пароль от хранилища ключей.

Все запущено и работает! Осталось только добавить кого-нибудь, чтоб было с кем говорить.

Добавим нового пользователя: Добавить контакт, вводим Jabber ID и жмем Добавить. Авторизуем все что можно- все как обычно.

Далее присвоим этому контакту его открытый ключ: в основном окне кликаем на контакте правой мышекнопкой и выбираем пункт Присвоить ключ OpenPGP:

Выбираем заранее полученный открытый ключ этого контакта.

Со своей стороны ваш собеседник точно так же должен присвоить вашему Jabber ID ваш открытый ключ.

Открываем окно обмена сообщениями:

Кликаем на замочек, и вы и ваш собеседник- замочек поменяет цвет. Можно спокойно говорить, ваш диалог защищен =)

Далее: необязательные шаги.
Для пущей красоты можете запустить весь трафик через Tor, для этого идем в Аккаунты-Изменить-Соединение
Находим строку Прокси-сервер, жмем Изменить:

Жмем Создать, пишем название прокси-сервера- Tor.
Тип прокси- SOCKS 5
Адрес: localhost
Порт: 9050
Жмем Сохранить, на вкладке Соединение в выпадающем меню выбираем наш прокси-сервер.
Жмем Сохранить, пересоединяемся- все работает. Не забудьте перед этим запустить Tor.

Если не соединяется с сервером- выберите пункт Шифровать соединение- Всегда. Не знаю почему, но иногда помогает =)