gpg2: без секретного ключа

Я использую enigmail уже больше года без проблем, и сегодня это не работает.

Я обнаружил следующий интересный факт:

gpg --decrypt something.gpg # this works
gpg2 --decrypt something.gpg # this fails

Так что что-то не работает с gpg версии 2 на моей машине.

Это привело меня к тому, что:

gpg --list-secret-keys # reads from ~/.gnupg/secring.gpg
gpg2 --list-secret-keys # reads from ~/.gnupg/pubring.gpg (pubring?!) 

Это, кажется, корень проблемы... конечно gpg2 не могу найти секретный ключ, потому что он ищет в неправильном файле.

Как мог мой gpg2 потерпеть неудачу, когда мой gpg работает отлично? Я не вижу никаких опций, чтобы указать, откуда секретные ключи читаются.

У кого-нибудь есть идеи?


Ответ на @grawity:

Спасибо, я ценю вашу помощь. Я побежал straceи я вижу, о чем ты говоришь.

Однако даже после gpg2 --import ... Я не вижу разницы в поведении. Я могу заставить его работать, только если я перезагружаюсь (без запуска gpg-agent), запускаю gpg2 --import ...затем беги gpg2 --decrypt ..., После этой последовательности thunderbird + enigmail также ведет себя хорошо. Однако примерно через 15 минут (я думаю, пароль, который я ввел для расшифровки, истек), затем gpg-agent вернулся к своему старому поведению. Эта последовательность повторяется.

Итак, вот некоторые результаты, если это поможет прояснить ситуацию:

вывод gpg2 -K:

/home/<username>/.gnupg/pubring.gpg
---------------------------------
sec   rsa4096/AAAAAAAA <date> [SC]
uid         [ultimate] <description of me>
ssb   rsa4096/BBBBBBBB <date> [E]

вывод gpg-connect-agent

> keyinfo --list
S KEYINFO <keygrip associated with AAAAAAAA> D - - - P - - -
S KEYINFO <keygrip associated with BBBBBBBB> D - - - P - - -
OK

вывод gpg2 -v -r <my email> -e testfile

gpg: using PGP trust model
gpg: using subkey BBBBBBBB instead of primary key AAAAAAAA
gpg: This key belongs to us
gpg: reading from 'testfile'
gpg: writing to 'testfile.gpg'
gpg: RSA/AES256 encrypted for: "BBBBBBBB <description of me>"

вывод gpg2 -v -d testfile.gpg

gpg: public key is BBBBBBBB
gpg: using subkey BBBBBBBB instead of primary key AAAAAAAA
gpg: using subkey BBBBBBBB instead of primary key AAAAAAAA
gpg: encrypted with 4096-bit RSA key, ID BBBBBBBB, created <date>
      "<description of me>"
gpg: public key decryption failed: Operation cancelled
gpg: decryption failed: No secret key

2 ответа

Решение

В конце концов, я решил, что проблема в том, что я использую нестабильную версию Debian, и было несовпадение версий, введенное apt-get dist-upgrade, Я полагаю, именно поэтому они называют это "нестабильным".

… Конечно, gpg2 не может найти секретный ключ, потому что он смотрит в неправильный файл.

Это не единственный файл, на который он смотрит.

В GnuPG 1.x (и 2.0) "secring" также имел дублирующую копию открытых данных вашего блока ключей, поэтому он был полностью автономным (и единственное различие между gpg -k а также gpg -K был какой файл он будет читать), но в то же время более сложным для поддержки программы.

В GnuPG 2.1 секретные ключи теперь хранятся независимо - они поддерживаются gpg-agent, который хранит их в ~/.gnupg/private-keys-v1.d/, Так что оба gpg -k а также gpg -K теперь приходится читать информацию OpenPGP из этой публикации, но последняя дополнительно спрашивает gpg-agent о том, с какими сертификатами связаны секретные ключи. Если вы используете strace, вы должны заметить connect() Звоните сразу после прочтения публикации.

Если GnuPG не перенес автоматически ключи, просто импортируйте весь секрет напрямую:

gpg2 --import ~/.gnupg/secring.gpg

Чтобы проверить содержимое агента вручную:

$ gpg-connect-agent> keyinfo - список S KEYINFO 926145FFCA32B3E6E079A0CF73EA77C40733A349 D - - - P - - -
S KEYINFO BACFB81EAFC864F4AB2926E8B1F55AD579F78D1A D - - - P - - -
S KEYINFO FF3D1DD51B9C79E148CCCEA5F7F3E25EC96048B7 D - - - P - - -
S KEYINFO 4D29EF1460F164CDB11D0FC0247214660ACDD60F D - - - P - - -
S KEYINFO 06B13685B9AA429B9CABCE480930D74B991C8DF0 D - - - P - - -
S KEYINFO B28DB8D045654E8A6A40466A07FCD9E432935E29 D - - - P - - -
Хорошо> / пока$

Это "набор ключей" - сравните их с секретом GnuPG:

$ gpg --list-secret-keys --with-keygrip/home/fred/.gnupg/pubring.kbx
--------------------------------
sec ed25519 2018-08-18 [SC]
      2357E133AD5D24F6CB2C1B0CEF4F7ED27E252632
      Keygrip = 4D29EF1460F164CDB11D0FC0247214660ACDD60F 
uid [ultimate] Фред Фубар 
Другие вопросы по тегам