Возможность расшифровывать ранее зашифрованные сообщения без ключевой фразы, но не может экспортировать закрытый ключ GPG

435
adtac

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

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

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

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

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

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

0
Вы уверены, что он не запрашивает пароль для повторного шифрования экспортированного ключа? grawity 6 лет назад 0
Какую версию GnuPG вы используете? 1.6, или 2.0, или 2.1+? grawity 6 лет назад 0
GnuPG 2.2.7. Я уверен, что (`gpg --export-secret-keys -a" Мое имя "`) не запрашивает парольную фразу для повторного шифрования экспортированного ключа, потому что я получаю "Плохая парольная фраза (попытка 2 из 3)", когда я даю новый ключевая фраза. adtac 6 лет назад 0

1 ответ на вопрос

2
grawity

Каждый «ключ» 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, также называемую «Пароли и ключи», но она может привести к сбою или зависанию и поэтому не так полезна.)

Большое вам спасибо, вы классные! В результате был получен секретный пароль :) Отмечен как принятый ответ. adtac 6 лет назад 0

Похожие вопросы