Для нормальной работы сайта необходимо разрешить JavaScript, включая скрипты с доменов googlesyndication.com и doubleclick.net для отображения системы поиска по сайту и прочих сервисов Google.

Используем GnuPG в Windows

gpg_keys_logo GPG или OpenPGP (GnuPG - GNU Privacy Guard) — это свободная программа с открытым исходным кодом для криптографической защиты Ваших личных файлов или сообщений. GnuPG был разработан как бесплатная альтернатива проприетарному PGP (Pretty Good Privacy) и выпущен под "GNU General Public License" свободной лицензией.

Ввиду последних скандалов с тотальной прослушкой Интернет трафика провайдерами, крупными веб-сервисами (Google, Yahoo etc.), всяческими службами безопасности (АНБ, ФСБ, СБУ, ЦРУ и т.д.), использование GnuPG в Windows будет полезно всем, кто беспокоится о сохранности своих приватных данных.

Как использовать OpenPGP (GnuPG) в Windows

Для начала нам нужно установить GnuPG, но для Windows специально создан порт под именем Gpg4win.

Для загрузки доступны три реализации Gpg4win:

  • Gpg4win - один большой глючный комбайн;
  • Gpg4win-Light - лайт версия глючного комбайна;
  • Gpg4win-Vanilla - исключительно только основные GnuPG компоненты.

К установке рекомендуется только Gpg4win-Vanilla, другие варианты тоже можно устанавливать, но они могут часто глючить и вводить в заблуждение, например при попытке создать пару ключей в Windows XP, как через графический интерфейс так и через консоль, я получил неизвестную ошибку в приложении pinentry.exe с сообщением "gpg: problem with the agent: Input/output error" и предложением отправить отчет дядюшке Биллу


Я предупредил, а кто поставил не Gpg4win-Vanilla, то я не виноват!:) Теперь нам нужно создать пару ключей (публичный и приватный), один из которых (публичный) опубликовать на сервере ключей (по умолчанию keys.gnupg.net) для того, чтобы нам каждый раз не высылать свой публичный ключ тому, с кем мы собираемся обмениваться шифровками, а чтобы он самостоятельно мог его получить в любое время и из любой точки сети Интернет.

В целом использование OpenPGP (GnuPG) в Windows, да и не только, сводится к таким этапам:

  1. Установка Gpg4win-Vanilla;
  2. Создание пары PGP ключей;
  3. Обмен публичными PGP ключами, обычно через сервер ключей;
  4. Шифровка и обмен сообщениями/файлами с использованием публичных ключей;
  5. Расшифровка сообщений/файлов с помощью своего приватного ключа.

В приведённых здесь примерах используется портативный вариант Gpg4win-Vanilla версии 2.2.1.16059. О том, как создать портативную версию Gpg4win будет рассказано далее.

Главное, что нужно помнить - это то, что GnuPG (OpenPGP) в Windows корректно работает только из командной строки, а большая часть графических инструментов для Windows одарят Вас различными глюками и багами. Хотя, собственно и в командной строке Windows не всё так гладко с OpenPGP, когда речь идёт о кириллице, но об этом позже...

Установка Gpg4win

Установка Gpg4win сводится к банальному нажатию кнопки "Далее". Как ранее упоминалось желательно устанавливать Gpg4win-Vanilla, который содержит только основные GnuPG компоненты, а иначе вполне вероятно получим множественные глюки.

Создание пары PGP ключей

В ходе создания пары OpenPGP (GnuPG) ключей нужно будет ввести пароль не менее 8-ми символов для приватного ключа, в котором обязательно должны быть буквы (желательно разного регистра) и хотя бы одна-две цифры - чем длиннее пароль на приватный ключ, тем более стойким он будет к взлому! Для того, чтобы создать пару GnuPG (OpenPGP) ключей, выполним:

С:\PORTABLE\GnuPG\pub>gpg --gen-key
gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
 
gpg: keyring `С:/PORTABLE/GnuPG/home/secring.gpg' created
gpg: keyring `С:/PORTABLE/GnuPG/home/pubring.gpg' created
Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection?
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y
 
GnuPG needs to construct a user ID to identify your key.
 
Real name: Windows Remote Shaman (www.remoteshaman.com)
Email address: remoteshaman.com@gmаil.соm
Comment: GPG key for remoteshaman.com@gmаil.соm
You selected this USER-ID:
    "Windows Remote Shaman (www.remoteshaman.com) (GPG key for remoteshaman.com@
gmаil.соm) <remoteshaman.com@gmаil.соm>"
 
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.
 
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: С:/PORTABLE/GnuPG/home/trustdb.gpg: trustdb created
gpg: key 346B72D7 marked as ultimately trusted
public and secret key created and signed.
 
gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
pub   4096R/346B72D7 2014-01-19
      Key fingerprint = 8CC0 592D 17F5 0B9D A625  3324 1590 B040 346B 72D7
uid                  Windows Remote Shaman (www.remoteshaman.com) (GPG key for r
emoteshaman.com@gmаil.соm email) <remoteshaman.com@gmаil.соm>
sub   4096R/6D2314B5 2014-01-19
 

После ввода "(O)kay" и сообщения "You need a Passphrase to protect your secret key." мы должны сразу же увидеть окно для ввода пароля на наш приватный OpenPGP (GnuPG) ключ:

gpg-gen-key

Но в моём случае процесс \GnuPG\gpgp2.exe не смог вовремя получить доступ к Loopback интерфейсу, закрыто брандмауэром, в результате окна для ввода пароля я так и не дождался, оно не появилось даже после повторной попытки создать пару ключей. Если в Вашем случае возникла также ситуация, то разрешите в брандмауэре для процесса \GnuPG\gpgp2.exe доступ к Loopback интерфейсу, после удалите всё из каталога \GnuPG\home, кроме файлов gpa.conf, gpg.conf, pubring.gpg, secring.gpg и trustdb.gpg, после чего повторите попытку.

Обмен публичными PGP ключами

Сначала просмотрим список установленных ключей и найдём там ИД своего "pub" ключа, он понадобится нам для отправки на сервер ключей и публикации на сайтах или в любых других местах:

С:\PORTABLE\GnuPG\pub>gpg --list-keys
С:/PORTABLE/GnuPG/home/pubring.gpg
----------------------------------------
pub   4096R/346B72D7 2014-01-19
uid                  Windows Remote Shaman (www.remoteshaman.com) (GPG key for r
emoteshaman.com@gmаil.соm email) <remoteshaman.com@gmаil.соm>
sub   4096R/6D2314B5 2014-01-19
 

Наш pub ИД "346B72D7", его также можно было узнать/записать вовремя создания пары ключей, отправляем его на сервер ключей:

С:\PORTABLE\GnuPG\pub>gpg --keyserver keys.gnupg.net --send-key 346B72D7
gpg: sending key 346B72D7 to hkp server keys.gnupg.net
 

Для отправки ключей на сервер процессу "gpg2keys_hkp.exe" нужно будет разрешить исходящее TCP соединение с удалённым ИП "130.133.110.62" на удалённый порт "11371". Для того, чтобы убедится, что наш публичный ключ уже на сервере, открываем в браузере адрес keys.gnupg.net (иногда может переадресовать на другой, рабочий в текущий момент), в поисковой форме отмечаем "Index choice - Verbose Index", в поле "Search text" вводим часть нашего "uid" (в нашем случае "Windows Remote Shaman"), дальше жмем Search и получаем результат:

Search results for 'windows shaman remote'
Type bits/keyID     cr. time   exp time   key expir
pub  4096R/346B72D7 2014-01-19            
 
uid Windows Remote Shaman (www.remoteshaman.com) (GPG key for \
        remoteshaman.com@gmаil.соm email) <remoteshaman.com@gmаil.соm>
sig  sig3  346B72D7 2014-01-19 __________ __________ [selfsig]
 
sub  4096R/6D2314B5 2014-01-19            
sig sbind  346B72D7 2014-01-19 __________ __________ []

Для успешной шифровки, обмена и дешифровки сообщений/файлов у отправителя и получателя должны быть публичные ключи - как минимум у отправителя шифрованного сообщения должен быть публичный ключ получателя! Для того чтобы получить (импортировать) публичный ключ получателя нужно узнать "pub" ИД ключа и выполнить:

C:\PORTABLE\GnuPG\pub\>gpg --recv-keys 346B72D7
gpg: requesting key 346B72D7 from hkp server keys.gnupg.net
gpg: key 346B72D7: public key "Windows Remote Shaman (www.remoteshaman.com) (GPG
 key for remoteshaman.com@gmаil.соm email) <remoteshaman.com@gmаil.соm>" importe
d
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
 

Шифровка и обмен файлами с использованием публичных ключей

Мы установили GnuPG и у нас есть импортированный публичный ключ "gpg --recv-keys 346B72D7" получателя, настал момент совершить обмен зашифрованным файлом.

Шифрование файла в GnuPG выполняется командой:

C:\PORTABLE\GnuPG\pub\>gpg -e -r 346B72D7 test.txt
gpg: 6D2314B5: There is no assurance this key belongs to the named user
 
pub  4096R/6D2314B5 2014-01-19 Windows Remote Shaman (www.remoteshaman.com) (GPG
 key for remoteshaman.com@gmаil.соm email) <remoteshaman.com@gmаil.соm>
 Primary key fingerprint: 8CC0 592D 17F5 0B9D A625  3324 1590 B040 346B 72D7
      Subkey fingerprint: F711 E6D7 034B 4D58 B324  DFB2 6B94 B164 6D23 14B5
 
It is NOT certain that the key belongs to the person named
in the user ID.  If you *really* know what you are doing,
you may answer the next question with yes.
 
Use this key anyway? (y/N) y
 

В примере выше был зашифрован файл "test.txt", в котором содержалось сообщение "test message". На выходе мы получили файл "test.txt.gpg".

Для зашифрованного файла был определён "-r" получатель (--recipient) с ИД публичного ключа "346B72D7". Этот файл сможет расшифровать только получатель с ИД "346B72D7", а если отправитель тоже хочет иметь возможность его расшифровать в будущем, то при шифровании нужно также использовать и публичный ключ отправителя "gpg -e -r ID_FROM -r ID_TO test.txt", где "ID_FROM" ИД публичного ключа отправителя, а "ID_TO" ИД публичного ключа получателя.

Теперь зашифрованный файл test.txt.gpg можно смело отправить по сети получателю или даже выложить на каком-то файлообменнике.

Для того чтобы расшифровать "test.txt.gpg" выполним:

С:\PORTABLE\GnuPG\pub>gpg -d test.txt.gpg > test.txt
 
You need a passphrase to unlock the secret key for
user: "Windows Remote Shaman (www.remoteshaman.com) (GPG key for remoteshaman.co
m@gmаil.соm email) <remoteshaman.com@gmаil.соm>"
4096-bit RSA key, ID 6D2314B5, created 2014-01-19 (main key ID 346B72D7)
 
gpg: encrypted with 4096-bit RSA key, ID 6D2314B5, created 2014-01-19
      "Windows Remote Shaman (www.remoteshaman.com) (GPG key for remoteshaman.co
m@gmаil.соm email) <remoteshaman.com@gmаil.соm>"
 

Вводим пароль от своего приватного ключа и получаем расшифрованный файл:

gpg-decrypt

Вместо "gpg -d test.txt.gpg > test.txt" можно использовать "gpg --output test.txt -d test.txt.gpg" или просто "gpg test.txt.gpg", а иначе содержимое файла будет выведено в консоль.

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

Шифровка и обмен почтовыми сообщениями с использованием публичных GPG ключей

Описанный ниже метод обмена шифрованными GPG сообщениями будет полезен в случаях, когда почтовый клиент оппонента не поддерживает автоматическую обработку шифрованных GPG сообщений, как например Outlook Express.

Шифрование электронных почтовых сообщений с использованием GPG ключей выполняется почти аналогично шифрованию файлов, но с некоторыми отличиями. В чём заключаются эти отличия?

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

Если мы хотим передать само зашифрованное сообщение в теле письма, то у нас ест несколько вариантов:

  1. Создать обычный текстовый файл (расширение .txt) в котором набрать нужное сообщение, после чего зашифровать его с флагом "-a" (--armor);
  2. Скопировать в буфер обмена и там его зашифровать при помощи графических утилит kleopatra.exe или gpa.exe

Первый вариант реализуется из консоли, с помощью команды "gpg -e -a -r TO_ID -r FROM_ID filename.txt", в результате чего получим файл "filename.txt.asc" с примерно таким содержимым:

-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.0.22 (MingW32)
 
hQIMA2uUsWRtIxS1ARAApAEj1FfvasNx68tQbjU6G80LVl5WGeqiZmnYR+Dy/ryD
................
TQHuyM587gfUf/3kwiKPvbzgCtH3yaiwAuVXbl8JufdxKaMaKrPrXhGQHdueWlQD
gE0NKMmwO/MbtKDAZtq61ojiM2E49O98XnYDVlS1
=oGdy
-----END PGP MESSAGE-----

Это сообщение в ASCII формате можно свободно отправлять в теле электронного сообщения, желательно в виде обычного текста, а не в виде ХТМЛ.

Вторым вариантом шифрования текста сообщения является использование программ из пакетов Gpg4win или Gpg4win-Light - это либо GPA (GNU Privacy Assistant (альтернатива WinPT)) или Kleopatra (Менеджер ключей Kleopatra).

Например, при использовании Менеджера ключей Kleopatra последовательность шифрования следующая:

  1. Нужно запустить менеджер ключей Kleopatra, после чего в "трее" появится соответствующий значок;
  2. В текстовом редакторе набрать нужное сообщение, которое мы хотим зашифровать, после чего выделить его и скопировать через контекстное меню или использовать для этого комбинацию клавиш Ctrl+C;
  3. В трее, на значке менеджера ключей Kleopatra, кликнуть правой кнопкой крыски, чем вызвать контекстное меню, где выбрать пункт "Clipboard - Encrypt", в открывшемся окне добавить ИД ключей получателей (ака Add Recipient), далее нажать "Next - Ok", после чего буфер обмена будет содержать уже зашифрованное сообщение, которое можно вставить куда угодно используя контекстное меню "Вставить" или комбинацию клавиш "Ctrl+V".

В обоих случаях зашифрованный текст сообщения будет в ASCII формате, который можно смело отправлять в теле электронного почтового сообщения.

Экспорт/импорт PGP (GnuPG) ключей

Если мы не желаем обмениваться публичным ключом через публичные сервера ключей, то мы можем выполнить его экспорт в файл и переслать по почте. Экспорт публичного ключа выполняется с помощью флага "--export"

gpg --export --output 346B72D7.public.gpg 346B72D7

Приведённая выше команда выполнит экспорт публичного PGP ключа (с ИД 346B72D7) в файл 346B72D7.public.gpg в двоичном (binary) формате, но это может быть неудобно при его пересылке например в теле сообщения по электронной почте. Мы можем выполнить экспорт ключа в ASCII формате добавив флаг "--armor" (или просто "-a"):

gpg --export --armor --output 346B72D7.public.gpg 346B72D7

Для того чтобы выполнить экспорт приватного PGP ключа, вместо флага "--export" мы должны использовать флаг "--export-secret-keys", но, странно, что этого флага нет в справке "gpg --help":

gpg --export-secret-keys -a --output 346B72D7.private.gpg 346B72D7

Импорт ключей выполняется командой "gpg --import public.gpg" или "gpg --allow-secret-key-import --import private.gpg" соответственно. Смотрим список ключей "gpg --list-keys".

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

Для создания точек соединения между файловой системой и виртуальным шифрованным диском, а если проще создания символьной ссылки (ака symlink в Unix), можно использовать linkd.

Как проверить PGP подпись файла

В примере ниже мы проверяем PGP подпись файла multibit-0.5.16-windows-setup.exe, которая расположена в файле с тем же именем, но только с приставкой ".asc" - оба файла должны располагаться в одной и той же директории ("C:\" в нашем случае):

С:\PORTABLE\GnuPG\pub>gpg --verify multibit-0.5.16-windows-setup.exe.asc
gpg: no signed data
gpg: can't hash datafile: No data
 
С:\PORTABLE\GnuPG\pub>
С:\PORTABLE\GnuPG\pub>gpg --verify multibit-0.5.16-windows-setup.exe.asc
gpg: Signature made 12/18/13 13:33:21 +ЁхЎш , TєЁЎш  (чшьр) using RSA key ID 23F
7FB7B
gpg: Good signature from "Jim Burton (multibit.org developer) <jim618@fastmail.c
o.uk>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 299C 423C 672F 47F4 756A  6BA4 C197 2AED 79F7 C572
     Subkey fingerprint: 4A71 A836 F572 01B4 D088  7D60 0820 A658 23F7 FB7B
 

При первой проверке файл "multibit-0.5.16-windows-setup.exe" был расположен в другом каталоге, при второй проверке оба файла были в корне диска "С:\PORTABLE\GnuPG\pub" откуда мы и выполняли проверку подписи. Результат проверки положительный: "Good signature from ...".

Предупреждение говорит нам о том, что мы не доверяем любым ключам, которыми был подписан ключ Джима (Jim Burton):

GPG: ВНИМАНИЕ: Этот ключ не заверен доверенной подписью!
GPG: Здесь нет никаких признаков, что подпись принадлежит владельцу.

Если Вы хотите включить этот ключ в свою цепочку доверия, тогда Вам нужно подписать ключ Джима своим собственным ключом. Дополнительную информацию о подписи ключей и других особенностях GPG можно найти здесь.

Создание портативной (portable) версии Gpg4win

Для того чтобы создать портативную версию GnuPG сначала нужно установить полную, "лайт" или "vanilla" версию, после чего из консоли перейти в директорию установки и выполнить:

Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.
 
C:\Documents and Settings\root>cd C:\Program Files\GNU\GnuPG
 
C:\Program Files\GNU\GnuPG>mkportable C:\PORTABLE\GnuPG
 
C:\Program Files\GNU\GnuPG>

В каталоге C:\PORTABLE\GnuPG будет создана портативная версия GnuPG. Ваши GnuPG ключи и настройки будут считываться из директории 'home' корневого каталога портативной версии.

Если хотим использовать gpg команду из любого каталога, тогда добавим путь к каталогу С:\PORTABLE\GnuPG\pub в переменную PATH. Можно создать пользовательскую переменную PATH, т.е. не обязательно править системную!

Gpg4win и проблемы с кириллицей

Если в консоли возникают проблемы с кириллицей, а они обычно возникают всегда, то обходим (не решаем) их переименованием каталога "%Program Files%\GPG4win\share\locale\ru", например в "%Program Files%\GPG4win\share\locale\sru":) После этого будем иметь английский интерфейс, но уж пусть лучше английский, чем куча каракуль в консоли.

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

...

Всё, кажись основные моменты для успешного использования GnuPG в Windows раскрыты. Теперь, после GnuPG шифрования, наши с Вами приватные данные будут в относительно большей безопасности, чем если бы они передавались в открытом виде.

Дополнительно предлагается изучить информацию по представленным ниже ссылкам, а про всё, что не найдено и не понято, пишите в комментарии.

Ссылки по теме GnuPG

Рекомендуемый контент



Добавить комментарий


Защитный код
Обновить

Рейтинг@Mail.ru 2 megabytes