すべてのgpgサブキーパスワードを一度にキャッシュしますか?複数のgpgパスワードエントリの必要性を防ぎますか?


10

gpgパスワードを1回だけ入力して、すべてのサブキー(署名、復号化、認証)のロックを解除できますか?

現時点では、gpgパスワードを3回入力する必要があります(署名、復号、認証)。これは不便です。

私はシェルスクリプトを考え出そうとしました。

#!/bin/bash
set -x
set -e
set +o history

signing_key=77BB3C48
encryption_key=CE998547

tempfile="$(mktemp)"
echo "test" > testfile

unset passphrase || exit 1
read -sp 'Enter password. ' passphrase ; echo

exec 3<<<"$passphrase"

gpg2 --no-tty --use-agent --batch --yes --passphrase-fd 3 --sign-with "$signing_key" --clearsign "$tempfile"
gpg2 --no-tty --use-agent --verify "$tempfile.asc"

gpg2 --no-tty --use-agent --yes --armor --recipient "$encryption_key" --encrypt "$tempfile"

exec 3<<<"$passphrase"
gpg2 --no-tty --use-agent --batch --decrypt --passphrase-fd 3 "$tempfile.asc"

しかし残念ながら、その方法ではパスワードgnupg-agentはパスワードをキャッシュしません。これは修正できますか?

システムインフォメーション:

  • そのシェルスクリプトを使用しない場合、gnupg-agentに問題はありません。シェルでファイルに手動で署名/復号化すると、pinentryはパスワードを2回要求し、再起動するまでキャッシュします。
  • Debian Wheezyの使用。
  • gpgバージョン:

dpkg -l | grep gnupg

ii  gnupg                                        1.4.12-7+deb7u3                    i386         GNU privacy guard - a free PGP replacement
ii  gnupg-agent                                  2.0.22-3                           i386         GNU privacy guard - password agent
ii  gnupg-curl                                   1.4.12-7+deb7u3                    i386         GNU privacy guard - a free PGP replacement (cURL)
ii  gnupg2                                       2.0.22-3                           i386         GNU privacy guard - a free PGP replacement (new v2.x)

私はgnupg-usersメーリングリストで少し前に尋ねましたが、返事はありません。

おそらくこの答えはうまくいくでしょうか?おそらくgpg-connect-agent必要ですか?


私は感心しました:exec 3<<<"$passphrase"私にとっても新しいものでした…そして、あなたが引用した答えに250名の賞金を投げました。
Hauke Laging 2014

回答:


3

キーとパスワードの管理を非常に簡単にするgnome-keyring-daemonseahorseがあります。

基本的に、gnome-keyring-daemonをgpgエージェントとして実行している場合、GPGキーを自動的にロック解除する機能があります。これは、Webサイト、GPGキー、SSHキーなどのパスワードを含むパスワードキーリングを維持することによって行われます。このパスワードキーリングは、独自のパスワードで保護されます。つまり、あなたはそれをアンロックし、そしてgnomeキーリングは他のすべてをアンロックします。
追加のボーナスとして、gnome-keyring-daemonには「ログイン」キーリングがあります。これは、パスワードがユーザーパスワードと一致する場合、ログイン時にキーリングが自動的にロック解除されます。


構成

これを機能させるには?gnome-keyring-daemonとseahorseをインストールするだけです。パッケージはすべてのシステム構成を実行するはずです。ただ、あなたが別のキーリングデーモンやGPGエージェントを開始していないします。最後に開始した方が「勝ち」、gnomeキーリングはPAMスタックで開始するので、非常に早いです。

GPGキーがに保存されている場合、~/.gnupg自動的に取得され、GPGエージェントとして機能します。に保存されているSSHキーについても同様です~/.ssh

初めて秘密鍵を使用しようとすると、次のようなダイアログが表示されます:(私は簡単なコマンドラインでトリガーしましたgpg -d myfile.gpgキーリングのロックを解除する
[ログイン時にこのキーリングを自動的にロック解除する]を選択するだけです

今、タツノオトシゴについてはあまり話していません。それは厳密には必要ないからです。これはすべて、通常のgnome-keyring-daemonで行われています。ただし、タツノオトシゴを使用すると、すべてのキーとキーリングを表示および管理できます。また、集中認証(LDAP)を使用している場合は、ログインパスワードを変更するときにそれを使用して、「ログイン」キーリングのパスワードを変更し、それと一致させる必要があります。

タツノオトシゴ-gpgキー


その他のパスワード

前に触れたように、gnome-keyring-daemonはWebサイトのパスワードも保存できます。前回チェックしたところ、Chromeはこれをサポートしていますが、Firefoxはサポートしていません。ただし、これを機能させるには1つのトリックがあります。
デフォルトでは、「ログイン」キーリングと「デフォルト」キーリングの2つのキーリングがあります。「デフォルト」のキーリングがデフォルトです(つまり、名前です)。ただし、これは別個のキーリングであるため、自動的にロックが解除されることはありません。タツノオトシゴで「ログイン」キーリングを右クリックすると、「デフォルトに設定」するオプションがあります。これを選択すると、パスワードに慣れ始めます。私は個人的には「デフォルト」のものを削除し、すべてに「ログイン」を使用します。


私はgnomeユーザーではありません。私はsudo apt-get remove gnupg-agentしましたsudo apt-get install gnome-keyring seahorse。次に/etc/X11/Xsession.d/999gnomekeyring、以下の内容のファイルを作成しました。eval $(/usr/bin/gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh) export GNOME_KEYRING_CONTROL GNOME_KEYRING_PID GPG_AGENT_INFO SSH_AUTH_SOCK(そうしないと、KDEでgnome-keyringが起動しませんでした。)を実行gpg -d myfile.gpgすると、パスワードの入力を求められてキャッシュに入れられますが、このダイアログは表示されません。
adrelanos 2014年

(私が始めたところに戻ったので、これは悪いです。署名鍵は個別にキャッシュされます。)(eval行とexport行の間に新しい行があり、ここにコメントマークアップを
付ける

デスクトップマネージャーにもgnomeを使用していません。必須ではありません。Gnomeは、デスクトップマネージャーだけではありません。に何も追加する必要はありません/etc/X11/Xsession.d。これはPAMスタックで行われることになっています。のsession optional pam_gnome_keyring.so auto_start1つ以上のファイルにエントリが必要です/etc/pam.d。残念ながら、私はdebianを使用していないため、どれを使用するかわかりません。それがない場合は、それが問題です。
Patrick

に追加しないと/etc/X11/Xsession.dps aux | grep gnomegnome-keyring-daemonが起動しないことを示します。(それにもかかわらず、それを削除しました。)/usr/share/doc/libpam-gnome-keyring/README.Debian言いますIf you want to start gnome_keyring from another display manager, you need to add the following lines to the corresponding /etc/pam.d/?dm file: auth optional pam_gnome_keyring.so session optional pam_gnome_keyring.so auto_start(seコメントによって削除された改行)。に追加され/etc/pam.d/kdm、kdmを再起動しましたか?エージェントの読み込みなし、利用可能ななし。
adrelanos 14年

私は途方に暮れています。使用kdmしていて/etc/pam.d/kdm、それをに配置した場合は、それで問題ないはずです。このルートを引き続き実行したい場合に提案できるのは、ログを掘り下げることだけです。間違った希望を申し訳ありませんが、これはあなたにとって簡単な解決策になると思いました。
Patrick

0

私はいくつかの調査を行いましたが、結果は驚くべきことですが単純です:

呼び出された場合、この方法はgpgと通信していないgpg-agent すべてでgpgこれらすべての操作を単独で実行できます。

しかしgpg-agent、何かが起こったことを知らなければ、それまで知らなかったパスフレーズを知ることはほとんどできません。


私は方法を発見したように見えますが、これを解決する方法はありません。
adrelanos 14

私の元の質問はまだ開いています。(それはCan I enter my gpg password just once and unlock all my sub keys (signing, decryption, authentication)?)私はパスワードをパイプするgpg-agentgpg-connect-agent、何らかの形で可能であることを願っています。
adrelanos 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.