Як експортувати приватний / секретний ключ 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.