21 июля 2012 г.

Как настроить jabber-шифрование PGP для Miranda (и NG) и Psi+ под Windows, пара слов про Android

Обновление: PGP обладает некоторыми недостатками (сложность управления ключами для конечного пользователя, воспроизводимость всех записанных сеансов по украденному ключу), поэтому смотрите лучше в сторону OMEMO, который сделан в Gajim (плагином) и в Conversations. BTW, для OMEMO нужна поддержка со стороны сервера (pubsub).


Сперва скачайте GnuPG v1 и установите в папку по умолчанию.

Для плагина Miranda / Miranda NG:

  1. Для обчыной Miranda скачайте подходящую версию плагина (32 бит или 64 бит) со страницы дополнений. Поместите "new_gpg.dll" из архива в каталог "C:\Program Files\Miranda IM\Plugins".

    Для Miranda NG установите подходящую версию Miranda NG и плагина "New_GPG" (x32 или x64) с ресурса Скачать - Miranda NG, поместите "new_gpg.dll" в "Plugins".

  2. При первом запуске Miranda плагин скажет, что "GPG binary unset or invalid (plugin will not work)". Нажмите OK. Войдите в "Main menu | Options | Services | GPG", выберите вкладку "GnuPG Variables", укажите путь к "GnuPG binary": "C:\Program Files\GNU\GnuPG\gpg.exe" (или "C:\Program Files (x86)\GNU\GnuPG\gpg.exe" для 64-битных систем).
  3. На вкладке плагина Main выберите "Select own key". Если вы уже сгенерировали свой приватный ключ ранее (в Miranda или в другой программе), переходите к пункту 5.
  4. Нажмите "Generate key". В поле "Real name" введите ваше имя латиницей, а в поле "Email" - ваш jabber адрес с именем домена или ваш e-mail. В поле "Key password" введите пароль. В дальнейшем, при первом действии, требующем вашего секретного ключа, GnuPG спросит этот пароль, запомните его. Далее нажмите OK.
  5. Ваш ключ должен появится в списке окна "Set own key". Проверьте, что выбран верный аккаунт в поле Account наверху, если нет - установите нужный. Выделите ваш ключ и нажмите "Copy public key". Нажмите OK. Сохраните содержимое буфера обмена в текстовый файл с раширением .asc и передайте сохранённый файл с открытым ключом своим корреспондентам по любому каналу, кроме Jabber сервера (иначе сервер или кто-то по пути сможет подменить его), это обычный текстовый файл, и секретной информации он не содержит.
  6. Проверьте, что на вкладке Miranda "Options | Services | GPG | Main" стоит галочка "Use jabber api on Miranda IM >= 0.9", снимите галочки "Encrypt file transfers" (это не по стандарту XEP 0027, только для Miranda, и не будет корректно работать с Psi+ и пр.) и "Automatic key exchange" (тоже не по стандарту, и только мешается), остальные опции хороши по умолчанию. Поставьте на вкладке Advanced "Turn on presence signing (Jabber)", это жёстко прописано в стандарте, и без галочки некоторые клиенты корреспондентов могут сбрасывать шифрование.
  7. Получите открытый ключ от корреспондента (который может сгенерировать его и тем же, описанным выше способом), запишите в файл с расширением .asc На вкладке "Options | Services | GPG | Advanced" импортируйте этот файл кнопкой "Import keys" и последующим выбором файла.
  8. В списке контактов нажмите правым кликом на корреспондента, с котором вы обменялись открытыми ключами, и выберите пункт "Load GPG public key". В появившемся окне проверьте, стоит ли галочка "Turn on encryption" и нажмите кнопку "Select exising". Выберите из появившегося списка вашего корреспондента, нажмите OK, окно скроется, и ещё раз OK.
  9. Если вы удачно загрузили в плагин открытый ключ корреспондента из GnuPG, то на вкладке Miranda "Options | Services | GPG | Main" он появится отмеченным галочкой в списке "User list".
  10. Аналогичную процедуру по назначению вам вашего открытого ключа из GnuPG должен проделать и ваш корреспондент, независимо от того, использует он Psi+, Miranda или что-либо ещё.
  11. После всех действий вызовите окно отправки сообщения вашему корреспонденту. В правой нижней части окна должна находиться зелёная (а не красная) иконка со щитом, что означает, что шифрование работает.

Для Psi+:

  1. Проверьте, что версия Psi+ не ниже 0.16.469, старые версии глючат. Если у вас старый дистрибутив, скачайте сборку поновее.
  2. Запустите Psi+, нажмите в его окне левую нижнюю кнопку со значком Пси, далее Настройки, Плагины, включите GnuPG Key Manager, и вызовите его кнопкой настроек плагина.
  3. Если вы уже сгенерировали свой приватный ключ ранее (в Psi+ или в другой программе), переходите к пункту 5.
  4. Нажмите Добавить, появится окно "Генерировать новую пару..." Введите латиницей в поле "ФИО" ваше имя, а в поле "Email" - ваш jabber адрес с именем домена или ваш e-mail. Введите пароль в поле "Ключевая фраза" и повторите его в поле ниже. В дальнейшем, при первом действии, требующем вашего секретного ключа, GnuPG спросит этот пароль, запомните его. Нажмите ОК.
  5. Ваш ключ должен появится в списке ключей плагина GnuPG Key Manager. Выделите его и нажмите на кнопку Экспорт, "в файл". Сохраните ваш открытый ключ в файл с расширением .asc и передайте сохранённый файл своим корреспондентам по любому каналу, кроме Jabber сервера (иначе сервер или кто-то по пути сможет подменить его). Это обычный текстовый файл, и секретной информации он не содержит.
  6. Нажмите в окне Psi+ левую нижнюю кнопку со значком Пси, далее Аккаунты, далее выберите мышью ваш аккаунт и нажмите кнопку Изменить.
  7. В окне "Настройки аккаунта" выберите вкладку Подробности, в её секции OpenPGP нажмите кнопку "Выбрать ключ". В окне "Приватный ключ" выберите мышью ваш ключ и нажмите Ok. Нажмите кнопку "Сохранить", потом "Закрыть".
  8. Соединитесь с сервером, выскочит окошко с запросом этого пароля, введите его.
  9. Получите открытый ключ от корреспондента (который может сгенерировать его и тем же, описанным выше способом), запишите в файл с расширением .asc Позовите плагин GnuPG Key Manager, на вкладке "Настройки GnuPG Key Manager" импортируйте этот файл кнопкой Импорт, "из файла" и последующим выбором файла.
  10. В "GnuPG Key Manager: Настройки" снимите галочку с пункта "Автоматический импорт ключа из тела сообщения", чтобы Jabber сервер или кто-то по пути не подменил вам ключ.
  11. В списке контактов нажмите правой кнопкой мыши на вашего корреспондента и выберите пункт "Присвоить ключ OpenPGP". Если появится предупреждение (при несовпадении e-mail, введённого корреспондентом при генерации ключа с его аккаунтом в jabbber), в окошке "Нет ключа" нажмите кнопку "Выбрать ключ вручную". Откроется список ключей, выберите открытый ключ вашего корреспондента и нажмите Ok.
  12. Аналогичную процедуру по назначению вам вашего открытого ключа из GnuPG должен проделать и ваш корреспондент, независимо от того, использует он Psi+, Miranda или что-либо ещё.
  13. Откройте Настройки Psi+, вкладку Дополнительно. Выберите "options | pgp | auto-start" и присвойте ей значение true (Да) двойным кликом мыши, нажмите Ok.
  14. После всех действий вызовите окно отправки сообщения вашему корреспонденту. Во второй строке сверху должна быть жёлтая (а не серая) иконка замка, что означает, что шифрование работает.

P.S. Не стоит модифицировать список ключей через какой-либо внешний key manager, запущенный одновременно с Psi+ или Miranda, которые обычно читают список ключей только при старте, к тому же любая операция с привлечением gpg (напр. посылка или приём сообщений) блокирует список ключей, что может вызывать ошибку при одновременном обращении к списку нескольких программ (например, Psi+ и Thunderbird+Enigmail). Чтобы запретить блокирование, в текстовый файл C:\Users\ваше_имя\AppData\Roaming\gnupg\gpg.conf добавьте строку lock-never

Если C:\Users\ваше_имя\AppData\Roaming\gnupg находится на зашифрованном диске, вы можете совсем избавиться от запроса пароля, задав его пустым при генерации ключа.



GnuPG v2


Если, всё же, вы поставили не GnuPG v1, а GnuPG v2 (Gpg4win-Vanilla), обратите внимание на следующее.

Чтобы gpg-agent (Pinentry) дольше не переспрашивал фразу пароля, в текстовом файле C:\Users\ваше_имя\AppData\Roaming\gnupg\gpg-agent.conf увеличьте время перезапроса, переменные default-cache-ttl и max-cache-ttl, они указаны в секундах (по умолчанию 24 часа, перезагрузка или Log off сбрасывают интервал). Вступит в силу только после перезагрузки, Log off или убивания gpg-agent в процессах.

Если диск шифруется, а пароль не пустой, можно сразу его закэшить и избавиться от запросов, сунув в Startup такой .cmd батч:

@echo off
"C:\Program Files\Hidden Start\hstart.exe" /NOCONSOLE /HIGH ""C:\Program Files (x86)\GNU\GnuPG\gpg-agent.exe" --daemon --use-standard-socket --allow-preset-passphrase"
timeout 5 /nobreak > NUL
rem sec fingerprint 40 chars
"C:\Program Files (x86)\GNU\GnuPG\gpg-preset-passphrase.exe" --preset -P "ваш_пароль" Отпечаток_ключа_с_убранными_пробелами_для_sec
rem ssb fingerprint 40 chars
"C:\Program Files (x86)\GNU\GnuPG\gpg-preset-passphrase.exe" --preset -P "ваш_пароль" Отпечаток_ключа_с_убранными_пробелами_для_ssb

Отпечатки можно посмотреть командой:

gpg2 -K --fingerprint --fingerprint


Android


Рабочее решение для устройств на Android: связка Conversations (Jabber / XMPP) (платный, но open source) и OpenKeychain: Easy PGP. Также подходит платный SJ im под Android, но там есть свои странности: не импортируются gpg2 .asc ключи контактов через файлы, SJ im вылетает. Те же самые ключи принимает через copy&paste.

3 комментария:

  1. А что бесы думают об OTR (http://www.cypherpunks.ca/otr/)?

    ОтветитьУдалить
    Ответы
    1. Неюзабельно, оно криптует всю сессию и работает только когда оба в онлайне, корреспонденту в оффлайне послать нельзя. Если даже в онлайне кто-то внезапно отвалился, рассинхронизация и непосланные сообщения.

      Удалить
  2. Ребята, здарова.
    1. Какое на данный момент шифрование самое продвинутое и сложно взламываемое? OTR; PGP; GPG?
    2. Какой из этих jabber-клиентов самый приятный на вид и простой в обращении (Миранда, Пси, Пингвин)?
    3. Имя сервера у контактов должно быть одинаковым? Или это непринципиально? К примеру может petya@0nl1ne.at добавить vitya@chatmask.com ?
    4. Как вообще добавлять кого-либо в Psi+ ?
    5. И если не затруднит снимите видео, или скриншоты прикрепите, особенно к четырём последним пунктам Miranda и Psi+.
    Заранее спасибо хоть за какой ответ!

    ОтветитьУдалить

Комментарии премодерируются