Обмен ключами

Для общения с кем-либо, вы должны обменяться ключами. Просмотреть список имеющихся у Вас открытых ключей, можно используя команду --list-keys.

alice$ gpg --list-keys
/home/alice/.gnupg/pubring.gpg
------------------------------
pub   2048R/8A9ED75D 2005-10-21
uid                  Alice (test key) <alice@wonderland.uk>

Экспорт открытого ключа

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

alice$ gpg --output alice.gpg --export alice@wonderland.uk

Ключ экспортируется в двоичном формате, что бывает неудобно. GnuPG имеет опцию командной строки --armor, которая указывает на необходимость вывода в формате ASCII. Практически любой вывод GnuPG, т.е. ключи, зашифрованные документы, подписи, может происходить в формате ASCII.[1]

alice$ gpg --armor --export alice@wonderland.uk
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2 (FreeBSD)

mQELBENZTrwBCADLF5l3gEy1I7LgkXZKYoAE4any7l0TyeltvSWOPAQhNqF8VNJC
EFETh8gzncgcI/or3fxSfsWsgfEkSuj8pyusDV6xhNEFR8s1VJ+szWBs4wteMFWm
1AEurNTWQm0drOPoiNhoigg9lsKss9d+35briRWQsy+sdOjEpoYR2WqzvjU4dfNx
j5bLdlFeXFEPMjb0f10ID+AR0T+xc5jfqA1qMZWbLezFbgi/ZFN+h4Yt/RMac4q8
fAl6hADYfpVR87FUoKOMvktnyFOgnRiHhD8F/hWOPjIZVXDkOeACouCUk4qpHkCI
I+rRGehrmb4fNr8dWEf5JlVfxq7dD0u2vdvLAAYptCZBbGljZSAodGVzdCBrZXkp
IDxhbGljZUB3b25kZXJsYW5kLnVrPokBNgQTAQIAIAUCQ1lOvAIbAwYLCQgHAwIE
FQIIAwQWAgMBAh4BAheAAAoJEMJ/MmGKntddLtgH/0rZaMYN6a6PBHtsIoGBqS6E
KTuqOONGC/9C6glgtpWMurI/diBFJxAseulgypGeXSxgcLR8ZUI28e1JWPDnPgsG
PiqMduPcVbtFPrHZ7sXDyDyhlHtF3dLcjpkCtTUwEtJYGcrjGgM/nfxapbddw0tk
jT2PiJURjm1dR681xdlErCcUh8WbzFm6Et1hJmhnvTKRD/S+F/d0pr+PEsFKIw+/
x+++l3JTkn14ahOrWa7H+WRTzw1NGNN4SuclMXxCHmc2h7R5UOWfRv17LEBRqo4T
N6sSoSlOKjbyX/a7prWcTV6iJ/QJMdsZEno3Ux6Txu2t0kNkSAcDCLlYW5QUVS4=
=OmgG
-----END PGP PUBLIC KEY BLOCK-----

Импорт открытого ключа

Открытый ключ может быть добавлен к связке Ваших открытых ключей при помощи команды --import.

alice$ gpg --import bob.asc
gpg: key E4E68186: public key "Bob Bobson <bob@example.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
alice$ gpg --list-keys
/home/alice/.gnupg/pubring.gpg
------------------------------
pub   2048R/8A9ED75D 2005-10-21
uid                  Alice (test key) <alice@wonderland.uk>

pub   2048R/E4E68186 2005-10-25 [expires: 2012-10-23]
uid                  Bob Bobson <bob@example.com>
sub   2048R/6D8F0E99 2005-10-25 [expires: 2006-10-25]

Достоверность импортированного ключа должна быть подтверждена. GnuPG использует гибкую и мощную модель проверки подлинности, не требующую, чтобы Вы лично проверяли достоверность каждого импортированного ключа. Тем не менее, достоверность некоторых ключей Вам придется проверить самостоятельно. Сначала проверяется отпечаток (fingerprint) ключа, затем ключ заверяется подписью, для подтверждения того, что он достоверен. Отпечаток ключа можно быстро просмотреть командой --fingerprint.

alice$ gpg --fingerprint alice@wonderland.uk
pub   2048R/8A9ED75D 2005-10-21
      Key fingerprint = 8198 6D5B F869 AB12 8180  F515 C27F 3261 8A9E D75D
uid                  Alice (test key) <alice@wonderland.uk>

alice$ gpg --fingerprint
/home/test/.gnupg/pubring.gpg
-----------------------------
pub   2048R/8A9ED75D 2005-10-21
      Key fingerprint = 8198 6D5B F869 AB12 8180  F515 C27F 3261 8A9E D75D
uid                  Alice (test key) <alice@wonderland.uk>

pub   2048R/E4E68186 2005-10-25 [expires: 2012-10-23]
      Key fingerprint = 5605 86EB 26C0 22B1 445C  9DFF 835C 3EFE E4E6 8186
uid                  Bob Bobson <bob@example.com>
sub   2048R/6D8F0E99 2005-10-25 [expires: 2006-10-25]

Отпечаток ключа должен Вам сообщить его владелец. Это может быть сделано при личной встрече, по телефону, или любым другим способом, гарантирующим, что Вы общаетесь с владельцем ключа. Если отпечатки которые выводит GnuPG совпадают с теми, которые Вам сообщил владелец ключа, то можете быть уверены, что обладаете достоверной копией ключа.

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

Для подписи ключа необходимо перейти в режим редактирования ключа при помощи команды --edit-key.

alice$ gpg --edit-key bob@example.com


pub  2048R/E4E68186  created: 2005-10-25  expires: 2012-10-23  usage: CS  
                     trust: unknown       validity: unknown
sub  2048R/6D8F0E99  created: 2005-10-25  expires: 2006-10-25  usage: E   
[ unknown] (1). Bob Bobson <bob@example.com>

Command> sign

pub  2048R/E4E68186  created: 2005-10-25  expires: 2012-10-23  usage: CS  
                     trust: unknown       validity: unknown
 Primary key fingerprint: 5605 86EB 26C0 22B1 445C  9DFF 835C 3EFE E4E6 8186

     Bob Bobson <bob@example.com>

This key is due to expire on 2012-10-23.
Are you sure that you want to sign this key with your
key "Alice (test key) <alice@wonderland.uk>" (8A9ED75D)

Really sign? (y/N) y

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

Command> check
uid  Bob Bobson <bob@example.com>
sig!3        E4E68186 2005-10-25  [self-signature]
sig!         8A9ED75D 2005-10-25  Alice (test key) <alice@wonderland.uk>

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

Если Вы экспортируете подписанный ключ, то вместе с ним будет экспортирована и Ваша подпись, удостоверяющая, что Вы проверили подлинность этого ключа. Имеется возможность создать не экспортируемую подпись, для этого вместо команды sign следует использовать команду lsign.



[1] Многие, часто используемые, опции командной строки могут быть установлены в файле конфигурации.