2

Насколько я понимаю, пары ключей, используемые с gpg, обычно имеют более одного связанного ключа: один для подписи и один для шифрования. Как управляются эти несколько ключей при использовании gpg (для передачи на сервер ключей, получения чужого ключа, шифрования или подписи)? Будет ли он автоматически использовать правильный ключ для правильного действия или это то, что пользователь должен указать? Как определяется цель каждого ключа в ключевой паре?

1 ответ1

5

То, что часто называют "ключом GPG", больше похоже на сертификат. Как и в X.509, сертификат содержит гораздо больше информации, чем просто ключ (и): "первичная" пара ключей и несколько "подключевых" пар ключей, а также флаги их использования и даты истечения срока действия, а также несколько идентификаторов пользователей. и удостоверения личности с фотографией вместе с их подписями.

Когда вы загружаете свою "пару ключей" на сервер ключей, вы отправляете все, что является открытым ключом, подключами, идентификаторами пользователей, подписями, как один отдельный сертификат. "Первичный" ключ идентифицирует весь сертификат; его хэш открытого ключа - это "отпечаток", который вы видите, и идентификатор ключа основан на нем. Обычно первичный ключ имеет флаги использования "Подписать" и "Сертифицировать" для подписи данных и других ключей соответственно.

По умолчанию для шифрования данных создан хотя бы один подраздел "Шифрование". Вы можете иметь несколько таких подразделов - например, с разными датами истечения. Я не смог найти хорошего источника, но, похоже, для шифрования будет выбран самый новый действительный (после даты начала и не истек / отозван) подраздел. При расшифровке данных все подключы будут опробованы.

(Вы , возможно, заметили , что gpg -k перечислены ключевые идентификаторы для обоих ключей и подразделов. Когда вам нужно принудительно использовать определенный ключ или подраздел, вы можете keyid! - (вспомогательный) идентификатор ключа, за которым следует восклицательный знак - для обхода всех расчетов, для которых подраздел является лучшим.)

При желании вы можете добавить подключи, помеченные как разрешенные, в "Authenticate", которые затем можно использовать в таких протоколах, как SSH (через gpg-agent, путем извлечения необработанной пары ключей RSA) или SSL (реализованных GnuTLS в качестве альтернативы X.509). Какие подключи используются, зависит от конкретной реализации.

Вы можете увидеть полную структуру сертификата PGP, используя:

  • gpg --export mykey | gpg -vvv
  • gpg --export mykey | pgpdump
  • gpg --export mykey | certtool --pgp-certificate-info

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .