Enigmailを1年以上問題なく使用してきましたが、今日は機能しません。
次の興味深い事実を見つけました。
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
は間違ったファイルを探しているため、秘密鍵を見つけることができません。
gpg
が正常に機能しているときに、gpg2
がどのように失敗しますか?秘密鍵の読み取り元を指定するオプションが表示されません。
誰かアイデアはありますか?
@ 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
最終的に、私はDebian Unstableを使用していて、apt-get dist-upgrade
。それが彼らがそれを「不安定」と呼ぶ理由だと思います。
…もちろん、gpg2は間違ったファイルを検索しているため、秘密鍵を見つけることができません。
それはonlyファイルではありません。
GnuPG 1.x(および2.0)では、「保護」はキーブロックのパブリックデータの複製コピーも使用していたため、完全に自己完結型でした(そして、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 --list S KEYINFO 4D29EF1460F164CDB11D0FC0247214660ACDD60F D---P--- OK > /さようなら$
これらは「キーグリップ」です– GnuPGのセキュリティと比較してください:
$ gpg --list-secret-keys --with-keygrip /home/fred/.gnupg/pubring.kbx ----------------------------- --- sec ed25519 2018-08-18 [SC] 2357E133AD5D24F6CB2C1B0CEF4F7ED27E252632 Keygrip = 4D29EF1460F164CDB11D0FC0247214660ACDD60F id Fulbaratecomuldate [ultimate]