Как указать закрытый ключ при расшифровке файла с помощью GnuPG?

22

Я пытаюсь расшифровать файл с помощью GnuPG, но при использовании команды ниже:

gpg --decrypt filename.gpg

Я получаю следующее сообщение:

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

У меня уже есть закрытый ключ, которым файл был зашифрован, но я не уверен, как я могу указать его. Есть ли какая-либо опция, которую я могу включить при расшифровке, чтобы указать на этот ключ?

Crista23
источник
1
Что gpg --list-secret-keys 0x3662FD5Eпечатает?
Йонас Шефер
Нет, это не так. Есть ли способ, которым я могу добавить это?
Как вы получили закрытый ключ?
Йонас Шефер
Что на самом деле представляет этот идентификатор?
Nishant

Ответы:

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
Anshul
источник
3
Добро пожаловать в SuperUser, ваше предложение уже в другом ответе. Вы должны проголосовать за этот ответ, а не делать новый. У вас недостаточно репутации, чтобы сделать это, подождите, пока не сделаете.
Vlastimil Ovčáčík
2

Вам не нужно явно объявлять секретный ключ в команде gpg decrypt. Если keypair- как общественные и частное ключи - как государства Jens присутствуют на брелоке на хосте , где вы дешифрование, GPG будет автоматически определить секретный ключ , необходимый для дешифрования и представить пароль вызов.

ОДНАКО, если вы хотите попробовать все (не кэшированные) ключи ( возможно, вы тестируете файл, зашифрованный несколькими ключами ), использование переключателя --try-all-secretsбудет циклически проходить по всем секретным ключам в вашем брелоке, пробуя их по очереди. то есть:

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

HTH- Терренс

F1Linux
источник