web-dev-qa-db-ja.com

特定のプログラムにパスワードキャッシュが必要ないことをgpgに伝えるにはどうすればよいですか?

gnupg 2.1.2を使用しています。通常、gnupgがパスワードをキャッシュするときに非常に便利です。ただし、一部の機密プログラムについては、gnupggpg-agentを使用してそれらをキャッシュしないようにすることをお勧めします。インターネットでよく検索しましたが、役立つ情報があまり見つかりませんでした。特定のプログラムのパスフレーズをキャッシュしたくないことをgnupgに伝えるにはどうすればよいですか?

これが例です。 MUAとしてMuttを使用しており、すべてのアカウントのパスワードを~/.mutt/.passwd.gpgの下の別のファイルに暗号化しています。私の~/.muttrcで設定しました

source "/usr/bin/gpg -d --quiet  ~/.mutt/.passwd.gpg |"

Muttを初めて起動すると、gpgから秘密鍵のパスワードを要求されます。入力すると、このパスワードはgpgによってしばらくの間キャッシュされます。したがって、この間隔でMuttを再度開始すると、秘密鍵のパスワードの入力を求められなくなります。これは、この間に私のコンピューターにアクセスできる人なら誰でも私のメールを読んだり、メールを送信したりできることを意味します。 gpgページに関連するフラグが表示されていないのにgpgにオプションを渡すなど)manに、毎回秘密鍵のパスワードを要求するように指示するにはどうすればよいですか。 Mutt(または他の特定のプログラム)を起動しますか? gpgは、どのプログラムが暗号化されたファイルにアクセスしようとしているのかをおそらく認識していないため、それが不可能な場合もあると思います。しかし、私はこれを私たちの素晴らしいコミュニティに確認してもらいたいと思います。

4
lord.garbage

Gpg-agentのドキュメントには、「gpg-agentは環境変数を使用して通信パラメータについてクライアントに通知する」と記載されています。実際の環境変数名は与えられませんが、テストによっては、関連する変数がGPG_AGENT_INFOであることが示されています。 muttの設定を次のように変更することをお勧めします。

source "unset GPG_AGENT_INFO; /usr/bin/gpg -d --quiet  ~/.mutt/.passwd.gpg |"

おそらくもっと簡単な解決策は、--no-use-agentをgpgに渡すことです。

資格情報がキャッシュされている場合(おそらくgpg-agentにMuttの外部からそれらをキャッシュさせるため)、これは攻撃者がエージェントを有効にしてgpgを呼び出すことを妨げないことに注意してください。したがって、gpg-agentがmuttを明確に区別することを知っていたとしても、それはそれほど強力なセキュリティ対策にはなりません。

1
dhag

これはあまりエレガントではないかもしれませんが、私にとってはうまくいきます。 gpgを使用した直後に、デーモンを強制終了します。

killall gpg-agent

(ええ、それをf ** k!)

次回gpgまたはその他のプログラムによって呼び出されたときに、自動的に再起動します。また、このように使用することで、パスワードがキャッシュされるデフォルトの時間は変更されません(他のプログラムで同じ動作をしたくない場合があります)。

1
Mephisto

たとえば、ほとんどキャッシュがないように、1秒のキャッシュ間隔でエージェントを再起動します

pkill gpg-agent && gpg-agent --default-cache-ttl 1 --use-standard-socket --daemon

0
Abukamel