Управление ключами

man gpg2

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

    gpg2 --gen-key

После ввода всех параметров необходимо будет подождать, пока утилита генерирует случайные числа на основе пользовательского ввода и обращения к дискам. Пару ключей можно также создать в пакетном режиме, подробнее в документации GnuPG. Ключи хранятся в связке ключей (в Linux это ~/.gnupg/secring.pgp и ~/.gnupg/pubring.pgp).

Для отображения списка публичных ключей:

    gpg2 --list-keys

Для приватных ключей:

    gpg2 --list-secret-keys

Образец вывода команды:

    /home/trefmanic/.gnupg/pubring.gpg
    ----------------------------------
    pub   2048R/609BFCDA 2016-10-19
    uid                  testkey (TEST) <testkey@nonexistent.domain>
    sub   2048R/0884F56E 2016-10-19

Виден идентификатор пары ключей (609BFCDA), который можно использовать в качестве аргумента опции -r.

Зашифровка, расшифровка и подпись

Для того, чтобы зашифровать файл plaintext.txt публичным ключом получателя testkey, три варианта:

    gpg2 -e -r testkey plaintext.txt
    gpg2 -e -r testkey@nonexistent.domain plaintext.txt
    gpg2 -e -r 609BFCDA

По умолчанию создаётся бинарный файл plaintext.txt.pgp. Для создания ASCII-файла, пригодного к копированию/вставке, используйте опцию -a:

    gpg2 -e -a -r testkey@nonexistent.domain plaintext.txt

Для подписи (без зашифровки) файла plaintext.txt:

    gpg2 -u testkey@nonexistent.domain --detach-sign plaintext.txt
    gpg2 -u testkey@nonexistent.domain -b plaintext.txt

После чего будет создан файл подписи plaintext.txt.sig. Для того, чтобы внедрить файл и подпись в один файл (НЕ будет зашифрован):

    gpg2 -a -u testkey -s plaintext.txt

Чтобы извлечь документ из такого файла:

    gpg2 --output plaintext.txt --decrypt plaintext.txt.asc

Для проверки подписи (в каталоге должен присутствовать оригинальный файл):

    gpg2 --verify plaintext.txt.sig 

Редактирование ключей, смена пароля приватного ключа

Открыть ключ для редактирования (в интерактивном режиме) можно командой

    gpg2 --edit-key testkey@nonexistent.domain

В этом режиме список доступных команд можно посмотреть при помощи команды help. После изменения данных они не сохраняются сразу, для сохранения и выхода необходимо использовать команду save. Для выхода без применения изменений — quit.

Чтобы быстро сменить пароль приватного ключа, используйте

    gpg2 --passwd testkey@nonexistent.domain

Удаление ключей

Удаление ключей - операция БЕЗВОЗВРАТНАЯ

Если необходимо удалить чужой публичный ключ из вашей связки (для которого нет пары — приватного ключа), используйте команду:

    gpg2 --delete-key testkey@nonexistent.domain

Если попытаться удалить таким образом пару ключей, получите ошибку. В таком случае надо сперва удалить приватный ключ:

    gpg2 gpg2 --delete-secret-key testkey@nonexistent.domain

После чего можно удалять публичный ключ командой выше.

На этом всё, для демонстрации возможностей GnuPG достаточно. Материалы взяты из man gpg2 и из этого блога. Ещё одна хорошая шпаргалка на английском языке