Як вказати приватний ключ при розшифруванні файлу за допомогою GnuPG?


22

Я намагаюся розшифрувати файл з GnuPG, але при використанні команди нижче:

gpg --decrypt filename.gpg

Я отримую таке повідомлення:

gpg: encrypted with RSA key, ID 3662FD5E
gpg: decryption failed: No secret key

У мене вже є приватний ключ, за допомогою якого був зашифрований файл, але я не впевнений, як його можна вказати. Чи є якийсь варіант, який я можу включити під час розшифровки, щоб вказати на цей ключ?


1
Що означає gpg --list-secret-keys 0x3662FD5Eдрук?
Йонас Шефер

Ні, це не так. Чи є якийсь спосіб я його додати?

Як ви отримали приватний ключ?
Йонас Шефер

Що насправді являє цей ідентифікатор?
Нішант

Відповіді:


17

У мене вже є приватний ключ, за допомогою якого був зашифрований файл, але я не впевнений, як його можна вказати.

Я розумію це як "У мене є файл, що містить приватний ключ, але не знаю, як сказати GnuPG використовувати його".

GnuPG вимагає збереження ключів (як державних, так і приватних) у ключі GnuPG. Це так само просто

gpg --import [keyfile]

Після цього ви зможете розшифрувати файл саме так, як ви вже намагалися.


5
Тож gpg досить розумний, щоб знати, який ключ розшифрувати, коли у вас є кілька імпортованих ключів?
RollRoll

Так. Зазвичай на ключ навіть посилається в зашифрованому файлі, якщо ні, GnuPG намагається всі клавіші.
Єнс Ерат

Я використовую GnuPG програмно і маю брелок із сотнями приватних ключів, і повідомлення можуть бути зашифровані десятками. Здається трохи марно, що він просто намагається їх усіх (насправді він намагається розблокувати їх усіх за допомогою заданої парольної фрази і приймає першу, яка працює).
jlh

2
GnuPG приміряє їх лише в тому випадку, якщо ключ був прихований стороною, що відсилає. Здається, ваш випадок використання не був однією з цілей дизайну GnuPG. Якщо ви знаєте правильний приватний ключ, хоча він не зберігається у зашифрованому файлі, розгляньте можливість керування різними домашніми каталогами / брелоками GnuPG за допомогою одного приватного ключа.
Єнс Ерат

Так, здається, що мій випадок використання не дуже підходить для gpg. Для повноти ось детальне спостереження: Мої ідентифікатори одержувачів не приховані (не використовують -R), тому gpg знає, яку з десятків клавіш він повинен спробувати, не потрібно спробувати весь брелок. Однак gpg не знає, для якого ключа я поставив парольну фразу, тому доведеться спробувати ці десятки клавіш, що значно уповільнює справи.
jlh

6
bash-4.2$ gpg --import b_secret.key
gpg: key 23E7859B: already in secret keyring
gpg: Total number processed: 1
gpg:       secret keys read: 1
gpg:  secret keys unchanged: 1
bash-4.2$ gpg --decrypt b_txt.asc
gpg: key 23E7859B: secret key without public key - skipped
gpg: encrypted with RSA key, ID 04702E37
gpg: decryption failed: secret key not available

3
Ласкаво просимо до SuperUser, ваша пропозиція вже в іншій відповіді. Ви повинні підтримати цю відповідь, а не створювати нову. У вас ще недостатньо репутації для цього, зачекайте, поки ви це зробите.
Властиміл Овчачик

2

Вам не потрібно чітко заявляти секретний ключ у команді gpg decrypt. Якщо ключове слово - і державні, і приватні ключі - як стан Єнса, присутнє в ключі хоста, де ви розшифровуєте, GPG автоматично визначить секретний ключ, необхідний для розшифровки, і подасть виклик пароля.

ЗАРАЗ, якщо ви хочете спробувати всі (не кешовані) ключі ( можливо, ви тестуєте файл, зашифрований декількома ключами ), за допомогою перемикача --try-all-secretsбуде прокручуватися всі секретні ключі вашої клавіші, пробуючи їх по черзі. тобто:

gpg -d --try-all-secrets test-gpg.txt.asc

HTH- Терренс

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