POWERMAN
"In each of us sleeps a genius...
and his sleep gets deeper everyday."

Abstract

GPGrelay это приложение для Windows реализующую удобную поддержку зашифрованных и подписанных PGP писем для любых почтовых клиентов (Outlook, Thunderbird, TheBat, …).

GPGrelay работает как локальный POP3/IMAP/SMTP прокси между вашим почтовым клиентом и настоящим POP3/IMAP/SMTP сервером, автоматически шифруя и подписывая письма отправляемые заданным адресатам, и дешифруя входящие письма - поэтому непосредственная поддержка PGP в почтовом клиенте не требуется (он продолжает работать с не зашифрованными письмами).

Это приложение не обновлялось с 2005 года, и, к сожалению, других аналогов нет. На Windows7 64-bit и предыдущих оно работает, на более новых версиях Windows - мной не тестировалось.

Данный документ был написан потому, что установка и начальная настройка GPGrelay вызывает проблемы у большинства пользователей. Ничего очень сложного в ней нет, времени она занимает не много, но нужно знать что и как делать. При этом в ежедневном использовании GPGrelay намного удобнее и проще всех известных мне альтернативных решений, так что стоит один раз выполнить немного более сложные операции, чем при установке большинства Windows приложений, ради того, чтобы в дальнейшем всё "работало само".

Установка

Для шифрования GPGrelay использует стандартную (для UNIX) утилиту GnuPG, которую необходимо отдельно скачать и установить.

Для поддержки POP3/IMAP/SMTP через SSL GPGrelay использует стандартную (для UNIX) библиотеку OpenSSL, которую необходимо отдельно скачать и установить.

GnuPG 1.x

Скачиваем и устанавливаем классическую версию (1.x): Simple installer for GnuPG classic

При установке не меняйте язык на русский - у него проблема с кодировками, русский текст будет нечитабельным (если уже выбрали - можно просто переустановить ещё раз).

Note Теперь у вас есть утилита командной строки gpg для любых операций с ключами и шифрованием, которые нельзя будет сделать через графический интерфейс.

GPGrelay

Скачиваем и устанавливаем последнюю версию: GPGrelay 0.959

При установке он не найдёт GnuPG - отвечаем "Да"

/doc/images/gpgrelay-install-1.png

Вариант установки - For everydays use:

/doc/images/gpgrelay-install-2.png

По завершению установки отказываемся его запускать прямо сейчас (если его сейчас запустить, то не будет поддержки SSL для POP3/IMAP/SMTP, и его нужно будет перезапустить после установки OpenSSL):

/doc/images/gpgrelay-install-3.png

OpenSSL

Скачиваем последний архив для i386 (даже если у вас Windows 64-bit), например openssl-1.0.2-i386-win32.zip.

Распаковываем содержимое скачанного архива в каталог, куда был установлен GPGrelay (обычно C:\Program Files (x86)\GPGrelay\). Достаточно распаковать только файлы libeay32.dll и ssleay32.dll (если распаковать весь архив то файл readme.txt GPGrelay будет заменён аналогичным файлом OpenSSL, что не страшно).

Настройка

Запускаем GPGrelay.

Он просит указать путь к gpg.exe - показываем ему на C:\Program Files (x86)\GNU\GnuPG\gpg.exe.

Если не создать предварительно каталог где будут храниться все публичные и приватные ключи PGP, то GPGrelay предложит его создать в каталоге GnuPG:

/doc/images/gpgrelay-setup.png

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

Создание своего приватного/публичного ключа

Настройки типа ключа можно оставить по умолчанию. Время жизни ключа - тоже (Never expire). После этого нужно будет задать пароль - очень рекомендую это сделать - этот пароль будет запрашиваться ровно один раз после загрузки OS при получении первого зашифрованного или отправке первого подписанного письма (если вы не забудете при вводе пароля поставить соответствующую галочку).

После генерации ключа GPGrelay запустится.

Импорт существующего приватного ключа

Нажимаете "Отмена", отказываясь создавать новый ключ. GPGrelay всё-равно запустится. После этого копируете в буфер обмена свой приватный ключ (все между строками -----BEGIN PGP PRIVATE KEY BLOCK----- и -----END PGP PRIVATE KEY BLOCK-----, включая их самих), вызываете контекстное меню на иконке GPGrelay в трее, и выбираете пункт "Import Key from Clipboard".

Настройка GPGrelay

Для доступа к настройкам GPGrelay кликните на его иконке в трее.

/doc/images/gpgrelay-config-relay-1.png

Теперь нужно добавить как минимум два релея - для получения почты (POP3 или IMAP) и для отправки (SMTP). Для этого вам нужно будет посмотреть свои текущие настройки для POP3/IMAP/SMTP в почтовом клиенте - там будут указаны имена серверов, порты и использование SSL - и перенести эти настройки в GPGrelay. Вот пример настройки всех трёх для почты на Gmail (правда, доступ к Gmail через IMAP не работает, не знаю, это баг конкретно с IMAP на Gmail или просто с IMAP):

/doc/images/gpgrelay-config-relay-2.png /doc/images/gpgrelay-config-relay-3.png /doc/images/gpgrelay-config-relay-4.png

После изменения настроек релеев нужно нажать "Restart Relays".

/doc/images/gpgrelay-config-relay-5.png

Далее нужно изменить настройки своего почтового клиента - вместо использования настоящих серверов необходимо вместо них прописать имя сервера localhost, номер порта - тот, который вы прописали в соответствующем релее (по умолчанию это 32000 плюс оригинальный порт), и отключить SSL (нет смысла шифровать соединение между локальным почтовым клиентом и локальным GPGrelay - а между GPGrelay и настоящим сервером SSL будет использоваться, как обычно).

Tip Если в вашем почтовом клиенте настроено несколько разных аккаунтов, с разными серверами POP3/IMAP/SMTP - нужно повторить этот процесс для каждого, на котором нужна поддержка PGP. Т.е. вам может потребоваться настроить несколько POP3 и несколько SMTP релеев, разумеется используя для них уже другие номера локальных портов (например, не 32000 плюс оригинальный порт а 33000 плюс порт, etc.).

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

/doc/images/gpgrelay-config-profile-1.png

Здесь будет список email-ов для всех импортированных PGP-ключей, и их можно перетаскивать между пятью профилями, определяя тем самым кому письма шифровать, кому подписывать, а кому продолжать отправлять без PGP даже несмотря на импортированный ключ. По умолчанию все новые ключи добавляются в профиль <Default Profile>, который настроен отправлять без PGP. Таким образом, по умолчанию вам придётся вручную перетаскивать каждого нового адресата в другой профайл чтобы начать шифровать для него письма. На мой взгляд удобнее сразу изменить профиль по умолчанию на последний, который будет шифровать и подписывать письма (ставим в его настройках галочку "Assign this Profile to new found/imported Keys"):

/doc/images/gpgrelay-config-profile-2.png

Общие настройки - ставим две галочки ("Always trust keys" и "Quiet") и выбираем формат для принятых писем (в каком виде к ним будет добавляться информация о том, были ли они зашифрованы и корректно подписаны - удобнее всего обычно "Multipart, HTML"):

/doc/images/gpgrelay-config-global.png

Использование

Обычные письма сейчас должны работать так же, как раньше.

При получении подписанных писем они должны содержать сообщение о невозможности проверить подпись из-за отсутствия публичного ключа.

Бэкап своего приватного ключа

Для сохранения своего приватного ключа в файл выполните в командной строке:

gpg -a --export-secret-key YOUR@EMAIL.TLD > YOURKEYNAME.key

Рассылка своего публичного ключа

Открываете вкладку GPGrelay "Keyrules", в контекстном меню на своём email "Clipboad → Export Public-Key", после чего сохраняете свой публичный из буфера обмена в файл или вставляете прямо в текст отправляемого письма.

Импорт чужих публичных ключей

Копируете в буфер обмена скачанный файл или присланный в письме публичный ключ (все между строками -----BEGIN PGP PUBLIC KEY BLOCK----- и -----END PGP PUBLIC KEY BLOCK-----, включая их самих), вызываете контекстное меню на иконке GPGrelay в трее, и выбираете пункт "Import Key from Clipboard".

Приём/отправка писем

После настройки и обмена ключами просто работайте с письмами как обычно, GPGrelay будет автоматически подписывать и/или зашифровывать отправляемые письма (в зависимости от адресата), а так же расшифровывать и (в зависимости от наличия публичного ключа отправителя) проверять подписи принимаемых писем.

Альтернатива: GnuPG 2.x

Если почему-то вас не устраивает GnuPG 1.x и очень нужен именно 2.x, то нужно устанавливать не официальную версию (Simple installer for GnuPG modern) а сборку от Gpg4win.

Скачиваем и устанавливаем минимальный (Gpg4win with GnuPG component only) вариант: Gpg4win-Vanilla 2.2.3

К сожалению, как минимум конкретно в этой версии есть проблема с кодировками, поэтому все сообщения с русским текстом выводятся некорректно. Чтобы выводился английский вместо русского достаточно удалить каталог C:\Program Files (x86)\GNU\GnuPG\share\locale\ru\ (вандализм, конечно, но где можно настроить язык я сходу не нашёл).

В процессе работы будут небольшие отличия от описанного выше (не придётся вручную указывать путь к gpg.exe, при генерации нового ключа выскочит несколько окон утилиты "pinentry" и придётся в них ещё несколько раз повторить ввод пароля).