шифруем почту с gpg


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
comments powered by Disqus