Исходный вопрос
Я изучал GPG и использование подключей. Я чувствую, что хорошо понимаю преимущества использования подключей и хранения первичного ключа в автономном режиме, но не хватает информации о том, какие из этих ключей следует публиковать. Мои вопросы:
Какие ключи мне следует публиковать?
Стоит ли мне публиковать мой первичный ключ, или мои подключи, или все из них? Каковы плюсы/минусы каждого?
Какие ключи должны подписать мои друзья?
Если мой друг добавляет меня в свою связку ключей, он добавляет мой первичный ключ, мои подключи или все мои ключи? Если я создам новый подключ, как он может проверить, что он связан с моим первичным ключом?
Как именно подключи «связаны» с первичным ключом?
Есть много статей, в которых говорится, что они связаны, но ни одна не говорит, как. Содержат ли они какие-то общие математические свойства?
Надеюсь на понимание этого вопроса и буду весьма признателен за любые разъяснения.
Обновлять
Проведя некоторые дополнительные исследования, я наткнулся на эту интересную статью оАнатомия ключа GPG. Судя по информации, содержащейся в этой статье, похоже, что подключи буквально содержатся в главном ключе, по крайней мере, если смотреть на открытый ключ. Чего я изначально не понимал, так это того, что ключ PGP содержит много метаинформации, а не только фактическое числовое значение ключа.
Правильно ли я понимаю, что у меня есть толькоодиноткрытый ключ?
Кажется, у меня есть только один открытый ключ, который будет тем, что я публикую, и тем, что подписывают мои друзья. Это то, что связывает мои подключи и говорит всем, что мои подключи на самом деле мои?
Если я скопирую свои подключаемые ключи на другое устройство, перенесу ли я также весь открытый ключ?
Или у подключей есть свои собственные подключи?
решение1
Начнем с этого:
Правильно ли я понимаю, что у меня только один открытый ключ?
Кажется, у меня есть только один открытый ключ, который будет тем, что я публикую, и тем, что подписывают мои друзья. Это то, что связывает мои подключи и говорит всем, что мои подключи на самом деле мои?
И да, и нет. Это зависит от того, какой измножественные определения термина «открытый ключ»вы хотите использовать.
У вас есть один публичныйблок клавиш, которыйбольшинство людейв общем смысле называют «открытым ключом PGP». (Его также можно назвать «сертификатом».) Как вы видели в связанной статье, этот открытый ключевой блок состоит из нескольких пакетов:
your "primary" public key parameters (the cryptographic values for RSA/DSA/etc)
├─ metadata for that public key (creation/expiry time, etc)
├─ a list of userids (name+email labels)
│ └─ each userid followed by a list of signatures (certifications)
└─ a list of "subkey" public key parameters (RSA numbers, etc)
└─ each subkey followed by a list of self-signatures (self-certifications)
Однако это не то же самое, что «один открытый ключ» в криптографическом смысле, поскольку он имеетнесколько наборовфактических RSA/DSA/и т.д.публичные параметрывнутри него.
Как именно подключи «связаны» с первичным ключом?
Есть много статей, в которых говорится, что они связаны, но ни одна не говорит, как. Содержат ли они какие-то общие математические свойства?
Они хранятся вместе с подписью (самосертификацией), сделанной первичным ключом. Однако математически они полностью независимы и могут быть сгенерированы для разных алгоритмов.
Какие ключи мне следует публиковать?
Стоит ли мне публиковать мой первичный ключ, или мои подключи, или все из них? Каковы плюсы/минусы каждого?
Все они, как единое целое (блок ключей).
Каждый отдельный ключ нужен для своей собственной задачи – первичный ключ должен быть открытым, так как он нужен для проверки подписей (сертификаций), которые вы делаете на чужих ключах (идентификаторах пользователей) и на ваших собственных подключах и идентификаторах пользователей. Подключ шифрования должен быть открытым, чтобы другие могли фактически зашифровать сообщение с его помощью. И так далее.
Какие ключи должны подписать мои друзья?
В пользовательском интерфейсе процесс подписания начинается с указания вашего первичного ключа (по идентификатору или отпечатку пальца). Затем программное обеспечение выполняет правильные действия.
Технически, ни один из ключей не подписан. Другие люди подписывают вашидентификаторы пользователей,которые являются текстовыми метками (имя+email), связанными с первичным ключом. Целью подписания ключа другого человека является подтверждение связи между ключом и именем+email; подписание только ключа было бы бесполезным.
Если мой друг добавляет меня в свою связку ключей, добавляет ли он мой первичный ключ, мои подключаемые ключи или все мои ключи?
Ваши друзья добавляют весь блок ключей – первичный ключ, подключи, идентификаторы пользователей.
Если я создам новый подключаемый ключ, как он сможет проверить, что он связан с моим первичным ключом?
Ваши собственные подключи и идентификаторы пользователей являются "самосертифицированными", т. е. они автоматически подписываются вашим первичным ключом, как только вы их создаете. Вот почему достаточно распространить отпечаток вашего первичного ключа – он действует как корень проверки.