Невозможно экспортировать секретный ключ без предоставления ключевой фразы

920
Lasse Halberg Haarbye

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

Тем не менее, запуск gpg --export-secret-keysвсегда заставит gpg-agent запрашивать мою фразу-пароль, независимо от параметров, которые я даю gpg. --batch, --yesИ --passphrase-fdне имеют никакого эффекта.

Я бегу GPG 2.1.15.

Я попытался экспортировать секретный ключ на машине с GPG 2.0.22 без проблем. Возможно ли это сделать?

Если нет, мой ключ потерян.

2
Для всех, кто интересуется, почему GPG запрашивает парольную фразу при экспорте секретного ключа, я полагаю, причина та же, что и для того, почему он спрашивает [при его импорте] (https://superuser.com/questions/1135812/gpg2-asking- for-passphrase-когда-импортировать-секретные ключи) ([см. также] (https://crypto.stackexchange.com/questions/33183/why-does-gpg-export-secret-keys-ask-for-a- пароль)). balu 5 лет назад 0

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

2
Matei David

Вы можете передать ключ «вручную» следующим образом, не пытаясь расшифровать его:

# create temporary destination dir mkdir -m 700 /tmp/alt-gnupg # transfer public keys using export/import, assuming name "user-000" gpg2 --export user-000 | gpg2 --homedir /tmp/alt-gnupg --import # transfer private keys using file copy for g in $(gpg2 --list-keys --with-keygrip --with-colons 'user-000' | awk -F: '$1=="grp" '); do cp ~/.gnupg/private-keys-v1.d/$g.key /tmp/alt-gnupg/private-keys-v1.d done # check you got them gpg2 --homedir /tmp/alt-gnupg --list-secret-keys 

Это работает, потому что закрытые ключи хранятся в файлах формы <keygrip>.key, и мы можем найти ключи без разблокировки.

Чтобы перебить ключи:

# use alternate gnupg dir export GNUPGHOME=/tmp/alt-gnupg # create dummy encrypted file echo hello | gpg2 --encrypt --recipient user-000 --armor >/tmp/msg.asc # tell gpg-agent to accept loopback pinentry echo allow-loopback-pinentry >$/gpg-agent.conf # restart gpg-agent gpg-connect-agent /bye # and now... for p in pass1 pass2; do gpg2 --batch --pinentry-mode=loopback --passphrase "$p" --quiet --decrypt /tmp/msg.asc >/dev/null 2>&1 && echo "yes!! pass: $p" done 
Есть ли способ экспорта в формате OpenPGP? Lasse Halberg Haarbye 8 лет назад 0
добавьте флаг --opengpg в соответствующее место linuxdev2013 7 лет назад 0

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