Я чувствую себя действительно глупо, спрашивая это, но почему бы и нет. У меня есть куча файлов, которые я недавно зашифровал парой ключей gpg которая защищена паролем. С тех пор я забыл пароль. Но ключ все еще должен быть где-то (мой брелок?), Потому что я успешно могу расшифровать все файлы с помощью gpg -d file.gpg без запроса пароля.

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

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

Я предполагаю, что gpg-agent что-то кеширует; Я пытался запустить gpg через strace чтобы получить свой закрытый ключ, но мне не повезло. gpg читает файл закрытого ключа, защищенный паролем, обращается к gpg-agent и получает обратно дешифрованное сообщение. Но я не могу найти секретный ключ (или, может быть, я не знаю, что искать) в журналах strace .

Я пытался поговорить с gpg-agent с помощью gpg-connect-agent , но я не уверен, что делать, чтобы получить кешированный закрытый ключ.

После расшифровки я безопасно сохранил все сообщения где-нибудь, поэтому потеря данных больше не является проблемой. Мне просто интересно, является ли генерация новой пары ключей моим единственным вариантом.

1 ответ1

2

Каждый "ключ" OpenPGP состоит из нескольких независимых пар ключей (подключей), обычно для разных целей (например, один подраздел сертификации и подписи, один подраздел шифрования и т.д.).

В GnuPG 2.1 и более поздних версиях закрытые ключи хранятся в ~/.gnupg/private-keys-v1.d и управляются gpg-agent. Для каждого подключа есть отдельный файл, зашифрованный вашей парольной фразой. Это означает, что вы можете легко обойти gpg-agent, но даже если вы это сделаете, вы все равно не сможете разблокировать файлы ключей, не зная вашу фразу-пароль.

Технически, каждый файл ключа может быть зашифрован с использованием другой парольной фразы (хотя пользовательский интерфейс gpg обычно этого не предлагает). По этой причине, когда gpg-agent сохраняет ваши парольные фразы, например, в GNOME Keyring, они также сохраняются отдельно для каждого подключа без проверки их идентичности.

Поэтому возможно, что ваша фраза была "запомнена" только для подраздела шифрования, но не для подписывающего подраздела. Поскольку они идентичны, этого достаточно, чтобы просто извлечь сохраненную ключевую фразу из GNOME Keyring.

Используйте secret-tool для поиска ключей паролей в GNOME и посмотрите, работает ли какая-либо из них:

$ secret-tool search --all xdg:schema org.gnupg.Passphrase

(Вы также можете использовать графическую программу GNOME Seahorse, также называемую «Пароли и ключи», но она может привести к сбою или зависанию и поэтому не так полезна.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .