gnupg 2.1.2
を使用しています。通常、gnupg
がパスワードをキャッシュするときに非常に便利です。ただし、一部の機密プログラムについては、gnupg
がgpg-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
は、どのプログラムが暗号化されたファイルにアクセスしようとしているのかをおそらく認識していないため、それが不可能な場合もあると思います。しかし、私はこれを私たちの素晴らしいコミュニティに確認してもらいたいと思います。
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
を明確に区別することを知っていたとしても、それはそれほど強力なセキュリティ対策にはなりません。
これはあまりエレガントではないかもしれませんが、私にとってはうまくいきます。 gpg
を使用した直後に、デーモンを強制終了します。
killall gpg-agent
(ええ、それをf ** k!)
次回gpg
またはその他のプログラムによって呼び出されたときに、自動的に再起動します。また、このように使用することで、パスワードがキャッシュされるデフォルトの時間は変更されません(他のプログラムで同じ動作をしたくない場合があります)。
たとえば、ほとんどキャッシュがないように、1秒のキャッシュ間隔でエージェントを再起動します
pkill gpg-agent && gpg-agent --default-cache-ttl 1 --use-standard-socket --daemon