スペシャル・ノート - GNUプライバシーのガードとエージェント (GNU Privacy Guard and Agents)

スペシャル・ノート - GNUプライバシーのガードとエージェント (GNU Privacy Guard and Agents)

スペシャル・ノート - GNUプライバシーのガードとエージェント (GNU Privacy Guard and Agents)

GNU Privacy Guard(GPG)は、暗号化されたキーを管理するエージェントの使用をサポートしています。エージェントは、ユーザーのGPGキーリングに格納されたキーにプロトコルに依存しないアクセスを許可します。GPGバージョン2ではエージェントの使用が必要ですが、GPGクラシックバージョン1.4.16以降ではエージェントが必要になることがあります。GPGにはエージェント・プログラム gpg-agent が付属していますが、他の当事者はしばしば gnome-keyring-daemon などの独自のエージェント実装を提供します。サードパーティのエージェントは、パスワードやキーキャッシングサービスを提供するために、ユーザーのログイン時に便利なように起動することがよくあります。GPGMEを介してGPGを呼び出す場合、ユーザからのキーリングに対してパスフレーズ(デフォルトでは /usr/bin/pinentryを使用)を取得する "エージェント"を呼び出さないようにする便利な方法はありません。参照実装が環境に難読化されたパスワードを置いた場合、その難読化されたパスワードからパスワードを派生させ、パスワードの入力を求めるべきではありません。その解決策は、GT.Mの暗号化リファレンスの実装(pinentry-gtm.shとpinentry.mにパッケージ化されています)用のカスタムのピン配置関数を作成することです。カスタムピン配置プログラムを使用するには、いくつかのセットアップ操作を実行する必要があります。
  1. gen_keypair.shスクリプトを使用して暗号化キーを設定します。このスクリプトは、GnuPGディレクトリ(~/.gnupg または 環境変数$GNUPGHOMEで指定)にgpg-agent.confファイルを作成し、参照実装のカスタムのピン配置プログラムを呼び出すためにGPGを指示する次の行を付けます。
    pinentry-program >path to $gtm_dist</plugin/gtmcrypt/pinetry-gtm.sh
    
    pinetry-gtm.sh が 環境変数 $gtm_passwd を定義し、実行可能なGT.Mを見つけた場合、pinentry.mプログラムを実行し、GnuPGに難読化されたパスワードからのキー・リング・パスワードを提供します。それ以外の場合は、/usr/bin/pinentry を呼び出します。gen_keypair.sh で作成されていない .gnupg ディレクトリを使用してGnuPGを使用している場合は、実際にGT.Mがインストールされているディレクトリをここに記載されているようにgpg-agent.confを作成する必要があります。
  2. カスタムピン配置プログラムはGT.M外部呼び出しを使用します。暗号化を使用する各GT.Mアプリケーションは、環境変数 GTMXC_gpgagent をgpgagent.tab の場所を指すように定義する必要があります。デフォルトでは、リファレンス実装は gpgagent.tab を $gtm_dist/plugin/ ディレクトリに置きます。gpgagent.tab は、pinentry.m が GT.Mのpinentry関数を作成するために使用する外部呼び出しテーブルです。
  3. アクティブGPGエージェント(gpg-agent、gnome-keyring-daemonなど)を使用しているデスクトップまたはワークステーションでは、GPGがピン配列プログラムをバイパスすることがあります。これにより、CRYPTKEYFETCHFAILED が発生します。この問題を回避するには、 "no-use-standard-socket" オプションをgpg-agent.confファイルに追加します。このオプションを有効にするには、既存のエージェントを強制終了する必要があります。エージェントは、ソケットファイルを指す環境でGPG_AGENT_INFOを定義するか、デフォルトのソケットファイル $GNUPGHOME/S.gpg-agent を使用します。場合によっては、GT.Mアプリケーション用に個別のGPGキーリングを作成すると、デスクトップ/ワークステーション環境とGT.Mアプリケーション間の意図しない相互作用を避けることができます。
gpg --edit-keyコマンドのpasswdサブコマンドなど、キーリングのパスフレーズを変更している間は、GT.Mのpinentry関数を使用しないでください。これを行う1つの方法は、gpg-agent.confのpinentry-program行を一時的にコメントアウトすることです。たとえば、次のように行の先頭に "#" を付けます。
[参考]pinentry-program >path to $gtm_dist</plugin/gtmcrypt/pinetry-gtm.sh
V5.4-001以前のGT.Mリリースに含まれている暗号化プラグインは、GPGエージェントと互換性がありません。
inserted by FC2 system