Вопрос или проблема
В настоящее время я пытаюсь настроить свой личный набор ключей GPG на следующие несколько лет и сталкиваюсь с вопросом, на который у меня нет готового ответа. У меня есть 3 yubikey: основной, второй и запасной. Я хотел бы установить разные ключи GPG на каждом из них, чтобы в случае потери ключа можно было отозвать только один в определенный момент. Планируется также сделать резервные копии этих закрытых ключей на USB-накопителях вне сайта. Все довольно просто. (эти ключи используются как SSH-ключи для серверов, GitHub, подписи коммитов и для редкого шифрования файлов).
Мне хотелось бы узнать, могу ли я использовать “сетевую модель доверия” GPG, чтобы подписать один “мастер-ключ” и назначить транситивное доверие ко всем моим yubikey одновременно. Насколько я понимаю, это должно быть возможно, но я не думаю, что это свойство будет применяться ко всем SSH-ключам, которые я экспортирую, и не понимаю, как GitHub отметит подкучи GPG ключей, используемых для подписи.
Доверие GPG работает только в экосистеме GPG. SSH не входит в экосистему GPG. Использование ключа GPG для SSH является лишь пересечением алгоритмов ключей (сырья для частного/публичного ключа). Реализация интерфейса агента SSH в GPG упрощает его использование, или вы можете экспортировать, но вы заметите, что должны экспортировать в формате SSH, а не в том же формате, в котором GPG экспортируется в текст.
SSH имеет свои собственные проприетарные механизмы подписания (доверия), которые позволяют подписывать SSH-ключи. Они не эквивалентны проприетарной рамке или механизмам подписания (доверия) GPG.
Ответ или решение
Управление несколькими GPG-ключами может быть сложной задачей, особенно когда вы планируете использовать их с такими инструментами, как SSH и GitHub. Давайте разберем вашу ситуацию более подробно.
Настройка ключей
Вы правильно планируете распределить ваши GPG-ключи по трём устройствам YubiKey (Основной, Вспомогательный и Резервный ключ). Это хорошая практика для минимизации рисков, связанных с потерей ключа.
Вопрос о "web of trust"
Что касается использования "web of trust" для подписи вашего "мастер-ключа", это действительно возможно. Вы можете создать основной ключ, который будет использоваться для подписи других ключей на ваших YubiKey. Тем не менее, стоит учитывать несколько нюансов:
-
Транзитивный уровень доверия: Когда вы подписываете подчиненные ключи (то есть ключи на ваших YubiKey) с помощью основного ключа, вы создаете доверительные отношения между этими ключами. Но важно понимать, что это доверие будет работать только в пределах экосистемы GPG. Вне GPG (например, в SSH) это доверие не будет иметь никакого значения.
-
Использование с SSH: GPG может быть использован в качестве SSH-ключа, но механизмы доверия SSH и GPG различаются. SSH не будет использовать "web of trust" GPG для проверки подлинности. Когда вы экспортируете ваш GPG-ключ для использования в SSH, вы делаете это в специфическом формате для SSH, и при этом не сохраняется информация о доверии.
Интеграция с GitHub
На GitHub вы можете использовать GPG-ключи для подписания коммитов и тегов. При этом GitHub не будет различать разные ключи для подписания; он просто будет проверять подписи на основе открытых ключей, которые вы добавили в ваш профиль на GitHub. Следовательно, если вы используете разные ключи для разных YubiKey, вы должны убедиться, что все они добавлены в ваш аккаунт GitHub.
Рекомендации
-
Создание основной и подчиненных ключей: Создайте основной GPG-ключ для долгосрочного использования и подпишите им ключи на ваших YubiKey.
-
Экспорт ключей: При экспорте для SSH, будьте внимательны. Убедитесь, что вы понимаете, как происходит преобразование форматов. Используйте команду
gpg --export-ssh-key [ваш-ключ]
, чтобы экспортировать ключ в формат SSH. -
Резервное копирование: Периодически создавайте резервные копии ваших GPG-ключей и храните их в безопасном месте. Убедитесь, что вы также сохранили доступ к вашему мастер-ключу, чтобы в случае утраты одного из YubiKey вы могли отзывать соответствующий ключ.
-
Обновление и отзыв ключей: Следите за сроками действия ваших ключей и будьте готовы отозвать старые ключи при необходимости.
-
Документация: Ведите документацию о том, какие ключи используются для каких целей, чтобы в дальнейшем упростить управление ими.
Таким образом, использование системы GPG для управления ключами может быть эффективным, но важно помнить, что доверительные механизмы GPG и SSH не перекрываются. Подробно планируйте использование ваших ключей, обеспечивая безопасность и удобство в управлении.