Как я импортирую ключ RSA SSH в GPG как _primary_ закрытый ключ?

У меня в настоящее время есть ключ SSH, который я использовал некоторое время, и я хотел бы начать использовать GnuPG с новым брелоком для ключей. Однако, учитывая, что я использовал свой ключ целую вечность, я хотел бы все еще использовать тот ключ в GPG в качестве основного / первичного ключа. Я попытался импортировать ключ с помощью этих инструкций.

Но, я заканчиваю с тем, что считало "подразделом". Кроме того, если я пытаюсь импортировать его, не создавая стандартный ключ GPG, GPG даже не видит этот подраздел. (Я предполагаю, что подраздел должен быть подписан основным ключом сначала.)

Как я использую этот ключ в качестве основного ключа в secring.gpg?

16
задан 5 January 2012 в 17:16
4 ответа

Ответ прост: Нет.

SSH и GnuPG (на самом деле, OpenPGP) ключи совершенно разные, хотя оба протокола могут использовать пары ключей RSA.

И кроме того, зачем вам это нужно? Даже если бы вы использовали один и тот же ключевой материал для создания вашего PGP ключа, вам все равно пришлось бы распространять ваш ключ в качестве PGP ключа. Скорее всего, вы не распространяли открытый ключ SSH среди людей, с которыми вы переписываетесь, так что с точки зрения распространения ключа никакой разницы нет: им нужно будет получить открытый ключ от вас. И даже если вы раздавали свой SSH открытый ключ другим людям, им нужно будет предпринять некоторые дополнительные шаги, чтобы иметь возможность импортировать его в свою реализацию OpenPGP, что может быть, а может и нелегко.

Как справедливо отметил kasperd, должен быть только один способ интерпретации (в частности) подписи. Если бы вы использовали один и тот же ключ и для PGP, и для SSH, если бы кто-то мог обманом заставить вас подписать специально созданное сообщение (что является предполагаемой возможностью в некоторых атаках сигнатурных систем) в одной из систем, то даже если обе системы безопасны в изоляции, то, возможно, было бы возможно создать такое сообщение таким образом, чтобы оно имело одно значение в одной из систем, но другое значение в другой. Это само по себе было бы уязвимостью. (Эксплуатационная? Кто знает. Но зачем рисковать?)

И PGP, и SSH пары ключей являются долгосрочными ключами, которые используются для защиты эфемерных (сообщение и сеанс) симметричных ключей, а также для проверки подлинности удаленной стороны. Это делает PGP или SSH закрытый ключ гораздо более ценной целью для злоумышленника, чем соответствующий симметричный ключ. Если вы используете один и тот же материал ключа для обоих, и атакующий может это осознать, то только увеличивает значение успешной атаки на эту пару ключей.

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

Просто сгенерируйте новый PGP ключ. Если хотите, то сделайте его RSA и такой же длины, как и ваш SSH ключ. (Ни один здравомыслящий человек не будет смотреть на него гораздо ближе, чем проверять отпечаток пальца в любом случае). Затем распределите открытый ключ среди людей, с которыми вы хотите переписываться, в виде PGP ключа. Это будет намного проще для всех, и, скорее всего, безопаснее, за счет небольшого количества энтропии из случайного энтропийного пула вашей системы, который в любом случае должен быть быстро пополнен.


Если у вас несколько ключей на вашем секретном брелоке и вы хотите указать, какой из них должен быть использован по умолчанию, используйте по умолчанию--ключ и, возможно, default-recipient{,-сама} в ваших директивах ~/.gnupg/gnupg.conf

.
16
ответ дан 2 December 2019 в 20:40

Вы можете преобразовать SSH-ключ в ключ OpenPGP с помощью инструмента pem2openpgp из проекта monkeysphere . Затем этот ключ может быть импортирован gnupg как обычная пара закрытого / открытого ключей. Как упоминается в другом ответе, это обычно не очень хорошая идея, потому что ssh не имеет концепции сертификатов, поэтому вы эффективно добавляете возможность к существующему ключу, которой у него не могло быть раньше. В криптографии это вообще недопустимо.

Я все равно сделал это с одним из моих ключей ssh, но я добавил пару ключей к другому ключу OpenPGP в качестве подключа, который имеет только один флаг возможности: аутентификацию. Этот флаг предназначен для таких ситуаций, когда вы не хотите подписывать или шифровать что-либо с помощью пары ключей (имеется в виду - параметры шифрования и - подписать для gnupg), но вы хотите, чтобы он был в вашем ящике для ключей для аутентификации с помощью OpenSSH и gnupg-agent.

Подробнее см. В документации к обезьяньей сфере.

5
ответ дан 2 December 2019 в 20:40

Могут быть веские причины преобразовать обычный ключ формата PKCS для импорта в gpg.

Например, если вы хотите поместить его на смарт-карту. Возможности, которые предоставляет gpg с помощью команд card-info и card-edit, очень полезны для этой цели, так почему бы не использовать их в качестве инструмента? Единственное препятствие, которое необходимо преодолеть, это ... а именно: импорт ключа из стандартного формата PKCS # 8 (или "сырого" формата RSA PKCS # 1) в хранилище ключей gpg для дальнейшей обработки.

Итак - примечание мое возражение против утвержденного ответа! :)

На самом деле полезный ответ на этот вопрос можно найти здесь: https://unix.stackexchange.com/questions/276317/how-can-i-import-a-key-in-pem-format-not-openpgp-into-gpg

2
ответ дан 2 December 2019 в 20:40

Используйте это в Ubuntu 16.04 или Windows WSL.

sudo apt install -y monkeysphere
cat key.pem | PEM2OPENPGP_USAGE_FLAGS=authenticate pem2openpgp "Key <key@example.com>" > key.pgp

Импортировать карту. Может быть выполнено в Windows или Linux.

gpg --import key.gpg

Перейти к карте

Найти идентификатор подписи ключа.

gpg --list-key

Переместить ключ аутентификации на карту

gpg --edit-key FFFFFFFFFFF
keytocard

Выберите номер для гнезда аутентификации.

На этом все готово.

Не забудьте удалить ключ из связки ключей gpg, если вы используете карту. Используйте идентификатор ключа, указанный выше.

gpg --delete-secret-key FFFFFFFFFFF

Разное

Не требуется, но может быть полезно для получения ключа в текстовом формате pgp.

gpg -a --export FFFFFF > key.asc
1
ответ дан 2 December 2019 в 20:40

Теги

Похожие вопросы