Як експортувати приватний / секретний ключ ASC для розшифровки файлів GPG


88

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

Ми спробували експортувати ключ ASC, використовуючи:

  • Програма Windows Kleopatra 2.1 (входить до складу gpg4win)
  • Асистент конфіденційності програми GNU для Windows (включений у gpg4win)

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

Як правильно експортувати секретний або приватний ключ asc для розшифровки файлів gpg?

Відповіді:


185

Ви можете експортувати приватний ключ за допомогою інструмента командного рядка з GPG . Він працює на оболонці Windows. Використовуйте таку команду:

gpg --export-secret-keys

Звичайний експорт з --exportне включатиме приватних ключів, тому вам доведеться використовувати --export-secret-keys.

Редагувати:

Підсумовуючи інформацію, наведену в моїх коментарях, це команда, яка дозволяє експортувати певний ключ з ідентифікатором 1234ABCD до файлу secret.asc:

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

Ви можете знайти необхідний ідентифікатор, використовуючи наступну команду. Ідентифікатор - це друга частина другого стовпця:

gpg --list-keys

Щоб експортувати лише 1 конкретний секретний ключ замість усіх:

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

keyIDNumber - це номер ідентифікатора ключа для потрібного ключа, який ви намагаєтесь експортувати.


4
@Brian: Це скине ключ до консолі. Якщо ви хочете зберегти його у файлі, ви можете перенаправити висновок на довільне ім'я файлу ("gpg --export-secret-keys> secret.asc").
Дементо,

5
@Brian: Це дає вам результат у форматі ASCII, а не в двійковому. Якщо ви зберігаєте його у файлі, це насправді не має значення. Але коли ви захочете передати його будь-яким іншим способом, з версією ASCII набагато легше обробити (надіслати її в електронному листі, наприклад)
Дементо,

8
Можливо, ви хочете перенести свій секретний ключ в інше місце. У цьому випадку вам слід зашифрувати експортовані дані: "gpg --export-secret-keys keyIDNumber | gpg -c> encrypted", розшифруйте їх за допомогою "gpg -o незашифрованого зашифрованого".
rockdaboot

2
Ключі, експортовані з GnuPG, залишаються зашифрованими (саме тому вам не потрібно вводити парольну фразу приватного ключа), тому насправді немає необхідності шифрувати її знову.
Ferry Boender


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 шістнадцяткових знаків після секунди), який вам потрібен для передачі.

Потім викликайте тестовані оболонки scipts "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

я запитував про експорт з працюючого комп'ютера ... ключ можна імпортувати лише на локальному сервері.
Брайан Маккарті

@Brian McCarthy: Що ви намагаєтесь сказати?
SIFE

Чи справді нам потрібно імпортувати відкритий ключ, якщо приватний уже був імпортований? Як я розумію, відкритий ключ можна генерувати з приватного що завгодно.
farhany

@farhany Я думаю, що так, бо це вам знадобиться, коли ви підпишете своє повідомлення.
SIFE

6

це врешті-решт працювало для мене:

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

ви можете назвати keyfilename.asc будь-яким іменем, якщо ви тримаєте розширення .asc.
ця команда копіює всі секретні ключі на комп'ютері користувача в keyfilename.asc у робочому каталозі, куди була викликана команда.

Щоб експортувати лише 1 конкретний секретний ключ замість усіх:

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

keyIDNumber - це номер ідентифікатора ключа для потрібного ключа, який ви намагаєтесь експортувати.


1
Ви можете перерахувати всі доступні ключі за допомогою "--list-keys". Другий стовпець міститиме ідентифікатори типу "2048g / 1234ABCD". Знайдіть потрібний ключ і експортуйте його за допомогою "gpg --export-secret-keys 1234ABCD> secret.asc", звичайно змінивши 1234ABCD з правильним ідентифікатором. Ви також можете додати прапор "-a". Він записує вихідні дані з символами ASCII, на випадок, якщо двійковий вивід викликає проблеми.
Дементо,

@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


5

1. Експортуйте секретний ключ (це те, що повинен був зробити для вас ваш начальник)

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

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

gpg --import privateKey.asc

3.Що ще не зроблено, вам все одно потрібно довіряти ключу. Вам потрібно буде переконатись, що ви також остаточно довіряєте ключу.

gpg --edit-key yourKeyName

Введіть довіру, 5, y, а потім киньте

Джерело: https://medium.com/@GalarnykMichael/public-key-asymmetric-cryptography-using-gpg-5a8d914c9bca

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.