it-swarm.com.de

gpg2: kein geheimer schlüssel

Ich benutze Enigmail seit über einem Jahr ohne Probleme und heute funktioniert es nicht mehr.

Ich fand die folgende interessante Tatsache:

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

Mit gpg Version 2 auf meinem Computer ist also etwas kaputt.

Das hat mich dazu gebracht zu sehen, dass:

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

Dies scheint die Wurzel des Problems zu sein ... natürlich kann gpg2 den geheimen Schlüssel nicht finden, weil er in der falschen Datei gesucht wird.

Wie kann mein gpg2 ausfallen, wenn meine gpg einwandfrei funktioniert? Ich sehe keine Optionen, um anzugeben, woher die geheimen Schlüssel gelesen werden.

Hat jemand irgendwelche Ideen?


Antwort auf @grawity :

Danke, ich danke Ihnen für Ihre Hilfe. Ich habe strace ausgeführt und sehe, wovon Sie sprechen.

Allerdings sehe ich auch nach gpg2 --import ... keinen Unterschied im Verhalten. Ich kann es nur zum Laufen bringen, wenn ich neu starte (ohne gpg-agent zu starten), gpg2 --import ... und dann gpg2 --decrypt ... starte. Nach dieser Sequenz verhält sich Thunderbird + enigmail ebenfalls gut. Nach ungefähr 15 Minuten (ich vermute, dass das zum Entschlüsseln eingegebene Kennwort abgelaufen ist) ist der gpg-agent jedoch wieder in seinem alten Verhalten. Diese Sequenz ist wiederholbar.

Hier ist also eine Ausgabe, wenn es hilft, etwas aufzuklären:

ausgabe von gpg2 -K:

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

ausgabe von gpg-connect-agent

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

ausgabe von 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>"

ausgabe von 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
17
rexroni

Schließlich entschied ich, dass das Problem darin bestand, dass ich Debian Unstable verwendete und dass ein Versionskonflikt durch einen apt-get dist-upgrade eingeführt wurde. Ich nehme an, deshalb nennen sie es "instabil".

1
rexroni

… Natürlich kann gpg2 den geheimen Schlüssel nicht finden, weil er in der falschen Datei gesucht wird.

Das ist nicht die einzige Datei, nach der es sucht.

In GnuPG 1.x (und 2.0) enthielt das "Secring" auch eine Kopie der öffentlichen Daten Ihres Schlüsselblocks, sodass es vollständig in sich geschlossen war (und der einzige Unterschied zwischen gpg -k und gpg -K bestand darin, welche Datei es enthielt lesen), aber gleichzeitig schwieriger für das Programm zu pflegen.

In GnuPG 2.1 werden geheime Schlüssel jetzt unabhängig voneinander gespeichert - sie werden von gpg-agent verwaltet, wodurch sie im ~/.gnupg/private-keys-v1.d/ bleiben. Sowohl gpg -k als auch gpg -K müssen nun die OpenPGP-Informationen aus dem Pubring lesen, dieser fragt jedoch zusätzlich gpg-agent , welchen Zertifikaten geheime Schlüssel zugeordnet sind. Wenn Sie strace verwenden, sollten Sie direkt nach dem Lesen des Pubs einen connect()-Aufruf bemerken.

Wenn GnuPG die Schlüssel nicht automatisch migriert hat, importieren Sie einfach den gesamten Secring direkt:

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

So überprüfen Sie den Inhalt des Agenten manuell:

$ gpg-connect-agent > keyinfo - Liste
 S KEYINFO 926145FFCA32B3E6E079A0CF73EA77C40733A349 D - - P - - 
 S KEYINFO BACFB81EAFC864F4AB2926E8B1F55EAD579F78D1A D - P - D - 5 - D - D - C ____.] S KEYINFO 4D29EF1460F164CDB11D0FC0247214660ACDD60F D - - P - - 
 S KEYINFO 06B13685B9AA429B9CABCE480930D74B991C164CDB0D - P - - - [. ]OK
>/tschüss

Dies sind "Schlüsselgriffe" - vergleiche sie mit GnuPGs Geheimnissen:

$ gpg --list-secret-keys --with-keygrip
/home/fred/.gnupg/pubring.kbx 
 ----------------------------- --- 
 sec ed25519 2018-08-18 [SC] 
 2357E133AD5D24F6CB2C1B0CEF4F7ED27E252632 
 Keygrip = 4D29EF1460F164CDB11D0FC0247214660ACD60F [ 
20
grawity