私はubuntu12.04でgpg1.4.11とgpg-agent2.0.17を使用し、Thunderbird用のEnigmailアドオンを使用しています。暗号化された電子メールを開くと、Enigmailは関連するpinentryプログラムでgpg-agentを呼び出し、パスワードを要求します。次に、キャッシュされたパスワードの有効期間を設定するオプションがあり、通常はセッションの終了に設定されます。
セッションをシャットダウンしたりログアウトしたりすることはめったにないので、セッションをロックすると、gpg-agentにすべてのキャッシュされたパスワードを忘れさせます。その方法を探しましたが、gpg-agentのマンページには、-SIGHUPがすべてのパスワードをフラッシュすると記載されていますが、マンページとは異なり、キャッシュされたパスワードは忘れられません。
Gpg-agentにパスワードを忘れさせる方法についてのアイデアはありますか?
gpgconf --reload gpg-agent
は、エージェントがメモリにキャッシュしたパスワードを忘れるように強制する1つの方法です。現在(gpg 2.0-2.1)これはpkill -HUP gpg-agent
と[ほぼ]同等です。理論的には複数のエージェントを実行でき、pkillがそれらすべてにSIGHUPを配信しようとするため、「ほぼ同等」と言います。
私は単純なものを使用します:
echo RELOADAGENT | gpg-connect-agent
チャームとして働く。
-
編集済み:Debian 10
、gpg 2.2.12
、libgcrypt 1.8.4
でテスト済み
キャッシュパスワードのTTLは、gpg-agent
のオプションによって制御されます。
--default-cache-ttl n
Set the time a cache entry is valid to n seconds. The default is 600 seconds.
--max-cache-ttl n
Set the maximum time a cache entry is valid to n seconds. After
this time a cache entry will be expired even if it has been accessed
recently. The default is 2 hours (7200 seconds).
このオンデマンドを制御する方法として、画面のロック時にコマンドをトリガーできる場合は、 keychain を使用してgpg-agent
を処理して実行できます。
keychain --clear --agents gpg
これはgpg-agentのすべてのマネージドインスタンスを強制終了します。ただし、画面のロックを解除したときにkeychain --agents gpg --eval $gpg
を実行する方法が必要です。多分面倒すぎる。
gpg-connect-agent reloadagent /bye
これは、単一のパスワード(つまりパスフレーズ)をクリアする際に私のために働いたものです-ターミナルから実行します-すべてをクリアしたい場合は https://superuser.com/a/1269901/457084 :
gpg-connect-agent "clear_passphrase --mode=normal <cacheid>" /bye
どこ <cacheid>
は、次のコマンドを実行した場合に使用できるキーグリップである可能性があります。gpg --list-keys --with-keygrip
:
<path to pubring.kbx>
------------------------------------------------
pub rsa2048 2017-12-11 [SC] [expires: 2019-12-11]
<keyid>
Keygrip = <keygrip>
uid `<email>
GnuPG 2.2.19(Solus 4.1、Nitrokey Smart、ストレージ用のgnukトークン)では、他のどの回答も機能しませんでした。 gpg-agent
が1つだけ実行されていることを確認しており、適切な場合はOK
で応答します。
私がやったことは:
killall gpg-agent
上記の暗号化ファイルを復号化してパスワードを本当に忘れてしまった場合は、常にテストする必要があります(gpg -d < somefile.gpg
)