GPG how to

Шпаргалка по работе с утилитой gpg.

Концеплуально работа с ключами сводится к следующему:

  • Вы имеете локальное хранилище ключей;
  • Вы можете импортировать публичные/закрытые ключи в свое локальное хранилище из файлов;
  • Вы можете получить публичные/закрытые ключи в свое локальное хранилище с серверов ключей;
  • Вы можете обновить состояние своего локального хранилища с серверов ключей;
  • Вы можете просматривать список публичных/закрытых ключей в локальном хранилище;
  • Вы можете осуществлять поиск публичных ключей на серверах ключей по ID ключа;

  • Вы можете экспортировать публичные/закрытые ключи из своего локального хранилища;
  • Вы можете удалять публичные/закрытые ключи из своего локального хранилища;
  • Вы можете создавать сертификаты отзыва для своих публичных ключей и распространять их в том числе и с помощью серверов ключей;

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


Создать ключ

$ gpg --full-gen-key

Получить отпечаток ключа

Формируется из публичного ключа. Для поиска их не используют. Для поиска всегда следует использовать длинные id и проверять fingerprints. Отпечаток используются в основном для проверки того, что с сервера ключей был импортирован действительно правильный ключ.

Получить короткий отпечаток:

gpg --fingerprint name

Получить ID ключа (вывод в терминал):

$ gpg --list-keys --keyid-format long name

Получить ID ключа (вывод в файл):

$ gpg --list-keys --keyid-format long name > filename.txt

Просмотреть список публичных ключей

$ gpg --list-public-keys

Просмотреть список закрытых ключей

$ gpg --list-secret-keys

Удалить закрытый ключ

gpg --delete-secret-keys name

Удалить публичный ключ

gpg --delete-keys name

Удалить связку публичный и закрытый ключ

gpg --delete-secret-and-public-key name

Экспортировать публичный ключ

$ gpg --output filename.key --armor --export name

Экспортировать закрытый ключ

$ gpg --output filename.key --armor --export-secret-keys name

Импортировать публичный/закрытый ключ вручную

Эта операция подразумевает еще опции импортирования --import-options (см. man gpg)

$ gpg --import filename.key

Загрузить ключи на сервер ключей

Важно! После того, как вы залили ключ на keyserver, его будет невозможно удалить, только сделать revoke. Убедитесь, что вы сделали надежную резервную копию ключа. Если вы раньше никогда не работали с PGP/GPG, очень советую сначала потренироваться на почтовых адресах в зоне example.ru

$ gpg --keyserver 'pgp.mit.edu' --send-keys keyIDs

Поиск ключей на сервере ключей

$ gpg --keyserver 'pgp.mit.edu' --search-keys names

Получить ключи с сервера ключей

$ gpg --keyserver 'pgp.mit.edu' --recv-keys keyIDs

Обновить базу ключей с сервера

$ gpg --keyserver 'pgp.mit.edu' --refresh-keys

Зашифровать файл

Данная команда зашифрует файл открытым ключом, указанным в --recipient

$ gpg --encrypt --recipient name <filename>.txt

Расшифровать фаls

йл

$ gpg --decrypt --output filename filename.gpg

Подписать файл

Команда ниже создаст файл подписи filename.txt.sig

$ gpg --sign filename.txt

Проверить подпись файла

$ gpg --verify filename.txt.sig

Зашифровать с подписью

Данная команда зашифрует файл открытым ключом name, указанным в --recipient А подпишет файл вашим дефолтным закрытым ключом

$ gpg --encrypt --sign  --recipient name filename.txt

Что бы указать каким конкретно вашим закрытым ключом подписать данные необходимо выполнить следующую команду:

$ gpg --encrypt --sign --default-key keyID --recipient name filename.txt

Извлечь подпись для проверки

Команда ниже создаст файл подписи filename.txt.gpg

$ gpg --detach-sign filename.gpg
$ gpg --verify filename.gpg.sig

Отзыв ключа

Команда нижепросто создаст файл сертификата отзыва ключа 'revoke.filename.crt' для члюча name

$ gpg --armor --output revoke.filename.crt --gen-revoke name

Для фактического отзыва ключа созданный сертификат отзыва необходимо объединить с самим ключом.

$ gpg --import revoke.filename.crt

Затем отозванный ключ необходимо опубликовать, что лучше всего сделать, отправив ключ на сервер ключей:

$ gpg --keyserver pgp.mit.edu --send-keys keyIDs

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