GPG – это свободное ПО, реализующее PGP шифрование, создано как бесплатная альтернатива PGP.
Само PGP шифрование основано на ключах. Подробнее тут
Что нам нужно, чтоб успешно шифровать почту?
Почтовый аккаунт, почтовый клиент с поддержкой шифрования (если вы не отсылаете письма через telnet/netcat), gpg.
Для начала создадим секретный ключ, которым будет производится шифрование:
gpg --gen-key
Дальше программа будет работать в интерактивном режиме.
В качестве параметров вы можете указать:
- алгоритм шифрования: DSA, RSA, Elgamal;
- длину ключа: от 1024 до 4096 бит;
- срок действия ключа. Ключ может быть бессрочным;
- имя и фамилию, или же просто псевдоним, например Vasya Pupkin;
- почтовый адрес в формате user@domain.tld;
- комментарий, обычно указывают должность или компанию:
- пароль, лучше сложный.
После введения всех опций будет создан ключ и помещен в хранилище.
По умолчанию оно находится в ~/.gnupg/secring.gpg
Можно генерировать секретный ключ и в автоматическом режиме, заранее задав все опции. Вот как это выглядит:
cat > batch_gpg.txt <<EOF
%echo Generating a basic OpenPGP key
Key-Type: DSA
Key-Length: 2048
Subkey-Type: RSA
Subkey-Length: 2048
Name-Real: Vasya Pupkin
Name-Comment: I'm CEO bitch!
Name-Email: vasya@pupkin.ru
Expire-Date: 2012-12-21
Passphrase: mysecret
%pubring vasya.pub
%secring vasya.sec
%commit
%echo done
EOF
Все опции вы можете посмотреть на сайте GPG.
После создания файла выполните команду:
gpg --batch --gen-key batch_gpg.txt
Публичный и секретный ключи сохранятся в vasya.sec и vasya.pub соответственно.
Т.к. ключ вы уже создали, первым делом нужно создать сертификат отзыва, именуемый revocation certificate. Но прежде, узнаем имя нашего ключа.
Эти команды покажут содержимое стандартного хранилища.
gpg -k
# или
gpg --list-keys
# или чтоб посмотреть только секретные ключи
gpg -K
gpg --list-secret-keys
Чтоб посмотреть имя ключа из файла:
gpg --no-default-keyring --secret-keyring ./vasya.sec
--keyring ./vasya.pub --list-secret-keys
Вот пример вывода команды:
-----------
sec 1024D/60ED60DD 2012-09-11 [expires: 2012-12-20]
uid Vasya Pupkin (I'm CEO bitch!) <vasya@pupkin.ru>
ssb 1024R/420C62D0 2012-09-11
В данном случае имя ключа – 60ED60DD. Иногда можно использовать просто почтовый адрес (vasya@pupkin.ru), если к нему прикреплен всего лишь один ключ.
Генерируем сертификат отзыва в файл vpupkin_revoke.asc:
gpg --output vpupkin_revoke.asc --gen-revoke KEYID
Если опустить опцию –output с параметром, то сертификат будет выведен на стандартное устройство вывода.
Эта команда также интерактивная. Ответив на вопросы о причине отзыва, написав комментарий и ввев пароль для ключа, вы получите сертификат вида:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: A revocation certificate should follow
iQEfBCABAgAJBQJQT8QMAh0AAAoJEK/BsyBa7+ioX+YH/3yl8ZF89ML7qoWdi4Ri
F7lGIIUSe1JXSMlwU/E+FAzVfmugwLo+IEYmi4EKga/UftqRpPZI2LWcHs9ps9De
WVt21u65W8NTSbTLagVOKK7ei09PkTEGpZF+BbeUGwlHwbMQwhgyflypzEX/Nfto
hhxMUwqTIACdmKLlXmJ5a+5ZyAHSjHPgqADnUXgzCIcaI/ZWOPXo59sWx/DJwPM6
raE5zaOuJ2GTqzW6vwF+gC+P16Byeha5lP2uj7AD41vOm1JjaAGZz1gj6Vbl0d5p
hFQ7G0VO8S+2YPJGmO+GtMmsIfBQ0/blqDsQQ74FByK2+kuBAc+NvrnWvVf+YXqS
8o8=
=1dCH
-----END PGP PUBLIC KEY BLOCK-----
Теперь запишите этот сертификат на секретный носитель и сотрите его с жесткого диска:
shred -z vpupkin_revoke.asc && rm vpupkin_revoke.asc
С помощью этого сертификата вы можете отозвать ключ, чтоб он стал недействительным, хотя срок действия ключа еще не истечет.
Отозванным ключом можно по прежнему шифровать и подписывать сообщения, вот только все получатели получат уведомление, о том, что ключ отозван и более недействителен.
Теперь мы можем отсылать шифрованную почту самим себе, но это вряд ли вас долго позабавит.
Поэтому загрузим публичный ключ на сервера-хранилища ключей, сделав его, таким образом, доступным для всех.
gpg --keyserver pgp.mit.edu --send-keys KEYID
Опцию –keyserver можно опустить, тогда ключ будет отправлен на сервер, указанный в настройках gpg (~/.gnupg/gpg.conf). У меня это keys.gnupg.net.
Теперь устанавливаем любимый почтовик и пользуемся шифрованием.
Я использую Mozilla Thunderbird с плагином Enigmail.
Пару советов по экспорту ключей. Вдруг, вам надо записать их на портативный ноститель информации.
Эскпорт секретного ключа в файл vpupkin.sec.gpg:
gpg --export-secret-keys KEYID > vpupkin.sec.gpg
Экспорт публичного ключа в читабельном формате:
gpg --armor --output vpupkin.asc --export KEYID