Как экспортировать частный / секретный ключ ASC для расшифровки файлов GPG


88

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

Мы пробовали экспортировать ключ ASC, используя:

  • Приложение Windows Kleopatra 2.1 (входит в состав gpg4win)
  • Приложение Windows GNU Privacy Assistant (входит в состав gpg4win)

            Error: "Decryption failed. Secret Key Not available." 
    

Как правильно экспортировать секретный или закрытый asc-ключ для расшифровки файлов gpg?

Ответы:


185

Вы можете экспортировать закрытый ключ с помощью инструмента командной строки из GPG . Работает под Windows-оболочкой. Используйте следующую команду:

gpg --export-secret-keys

Обычный экспорт с --exportзакрытыми ключами не будет, поэтому вы должны использовать --export-secret-keys.

Редактировать:

Подводя итог информации, приведенной в моих комментариях, это команда, которая позволяет вам экспортировать определенный ключ с ID 1234ABCD в файл secret.asc:

gpg --export-secret-keys --armor 1234ABCD > secret.asc

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

gpg --list-keys

Чтобы экспортировать только один конкретный секретный ключ вместо всех:

gpg --export-secret-keys keyIDNumber > exportedKeyFilename.asc

keyIDNumber - это номер идентификатора ключа для желаемого ключа, который вы пытаетесь экспортировать.


4
@Brian: Это сбросит ключ в консоль. Если вы хотите сохранить его в файле, вы можете перенаправить вывод на произвольное имя файла («gpg --export-secret-keys> secret.asc»).
Demento

5
@Brian: Это дает вам вывод в ASCII, а не в двоичном формате. Если вы сохраните его в файле, это не имеет значения. Но как только вы захотите передать его любым другим способом, с версией ASCII будет намного проще работать (например, отправив ее в электронном письме)
Demento

8
Может быть, вы хотите перенести свой секретный ключ в другое место. В этом случае вы должны зашифровать экспортированные данные: «gpg --export-secret-keys keyIDNumber | gpg -c> encrypted», расшифровать их с помощью «gpg -o unencrypted encrypted».
rockdaboot

3
Ключи, экспортированные из GnuPG, остаются зашифрованными (поэтому вам не нужно вводить парольную фразу для закрытого ключа), поэтому нет необходимости снова зашифровывать их.
Ферри Боендер,


32

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

gpg --edit-key (keyIDNumber)
gpg> trust

Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)

  1 = I don't know or won't say
  2 = I do NOT trust
  3 = I trust marginally
  4 = I trust fully
  5 = I trust ultimately
  m = back to the main menu

и выберите 5, чтобы включить этот импортированный закрытый ключ в качестве одного из ваших ключей


18

Смотрите лечение Темной Выдры

https://montemazuma.wordpress.com/2010/03/01/moving-a-gpg-key-privately/

Если сайт не работает, используйте ссылку на резервную копию archive.org:

https://web.archive.org/web/20170518155052/https://montemazuma.wordpress.com/2010/03/01/moving-a-gpg-key-privately/

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

Сначала получите нужный KEYID из списка, показанного

$ gpg -K

Из полученного списка обратите внимание на KEYID (8 шестнадцатеричных чисел после секунды), необходимый для передачи.

Затем активируйте проверенные сценарии оболочки «export_private_key» в первой учетной записи и сгенерируйте свой pubkey.gpg + keys.asc. Впоследствии вызовите на второй учетной записи «import_private_key». Вот их содержимое, показанное с помощью cat (скопируйте и вставьте содержимое):

$ cat export_private_key 
gpg -K
echo "select private key"
read KEYID
gpg --output pubkey.gpg --export $KEYID
echo REMEMBER THE COMING PASS-PHRASE
gpg --output - --export-secret-key $KEYID | \
   cat pubkey.gpg - | \
   gpg --armor --output keys.asc --symmetric --cipher-algo AES256
ls -l pubkey.gpg keys.asc
####################  E X P O R T _ P R I V A T E _ K E Y  #####################

Теперь перенесите каким-либо образом "pubkey.gpg" (если необходимо) и закрытый "keys.asc" на вторую учетную запись и активируйте показанную ниже программу.

$ cat import_private_key 
gpg --no-use-agent --output - keys.asc | gpg --import
###################  I M P O R T _ P R I V A T E _ K E Y  ######################

В духе Выдры «А то, должно быть, то».


Благодарим вас за сценарий, включающий открытый и закрытый ключи в один файл, защищенный парольной фразой. Делает мою жизнь намного лучше!
codekoala

Опция --no-use-agentустарела в gpg версии 2.
Джош Хабдас

9

Я думаю, что вы еще не импортировали закрытый ключ, как говорилось в сообщении об ошибке. Чтобы импортировать открытый / закрытый ключ из gnupg:

gpg --import mypub_key
gpg --allow-secret-key-import --import myprv_key

я спрашивал об экспорте с компьютера, который работает ... вы можете импортировать ключ, только если он находится на локальном сервере.
Брайан МакКарти,

@ Брайан Маккарти: Что ты хочешь сказать?
SIFE

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

@farhany Думаю, да, потому что он вам понадобится, когда вы подпишете свое сообщение.
SIFE

6

это сработало для меня:

   gpg -a --export-secret-keys > exportedKeyFilename.asc 

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

Чтобы экспортировать только один конкретный секретный ключ вместо всех:

   gpg -a --export-secret-keys keyIDNumber > exportedKeyFilename.asc

keyIDNumber - это номер идентификатора ключа для желаемого ключа, который вы пытаетесь экспортировать.


1
Вы можете перечислить все доступные ключи с помощью «--list-keys». Второй столбец будет содержать идентификаторы типа «2048g / 1234ABCD». Найдите нужный ключ и экспортируйте его с помощью "gpg --export-secret-keys 1234ABCD> secret.asc", конечно же, изменив 1234ABCD на правильный ID. Вы также можете добавить флаг «-a». Он записывает вывод с помощью символов ASCII на тот случай, если двоичный вывод вызывает проблемы.
Demento

@demento, спасибо за дополнительный отзыв ... я добавлю это к ответу
Брайан Маккарти,

2
вам все еще нужен -a, если вы действительно хотите asc
RichieHH

Как потом импортировать их на другой компьютер?
Натим

@Natim Я предполагаю, что вы перейдете exportedKeyFilename.ascна другой компьютер, а затем перейдете gpg --allow-secret-key-import --import exportedKeyFilename.ascв каталог с .ascфайлом. См .: unix.stackexchange.com/questions/184947/…
Brōtsyorfuzthrāx 02


5

1. экспортируйте секретный ключ (это то, что ваш босс должен был сделать за вас)

gpg --export-secret-keys yourKeyName > privateKey.asc

2.Импортируйте секретный ключ (импортируйте свой приватный ключ)

gpg --import privateKey.asc

3. Еще не сделано, вам все равно нужно полностью доверять ключу. Вам нужно будет убедиться, что вы в конечном итоге доверяете ключу.

gpg --edit-key yourKeyName

Введите trust, 5, y, а затем выйдите

Источник: https://medium.com/@GalarnykMichael/public-key-asymmetric-cryptography-using-gpg-5a8d914c9bca

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.