GPGエージェントはどのように機能しますか?


31

私のgpg.confファイルには、という行がありますuse-agent
これはデーモンであるgpg-agentを指すことを理解しています。マニュアルページには、「gpg-agentは、プロトコルから独立して秘密(プライベート)キーを管理するデーモンです。これは、gpgおよびgpgsmのバックエンドとして、および他のいくつかのユーティリティで使用されます。」

誰もこれがgpgのコンテキストで何を意味するのか説明できますか?gpg-agentのポイントは何ですか?

現在、GPG 1.4を使用しています。

  1. エージェントが実行されているかどうかを確認するにはどうすればよいですか?実際には、gpg-agentが基本的なGPG 1.4パッケージと共にインストールされているかどうかすらわかりません。
  2. 実行されていない場合、どのように開始できますか?
  3. 実行中の場合、どうすれば停止できますか?

回答:


38

Gpg-agentは、バックグラウンド(デーモン)で実行され、GPG秘密鍵をメモリに保存するプログラムです。GPGプロセスがキーを必要とする場合、ソケットを介して実行中のgpg-agentプログラムにアクセスし、キーを要求します。エージェントプロセスにキーがある場合、それをgpgに提供します。そうでない場合は、キーリングから暗号化されたキーをロードしようとし、キーのパスフレーズの入力を求められます。エージェントは、復号化されたキーを取得すると、gpgプロセスに渡します。GPGキーに加えて、Gpg-agentはSSHキーを同様に保存し、SSHにssh-agent付属するプログラムのようにSSHプロセスに提供できます。

キーエージェントを使用する主なポイントは、キーを使用するたびにパスフレーズを入力する必要がないようにすることです。エージェントは、ある時間から次の時間までキーをメモリに保持します。GPG自体はそれを行うことができません。プロセスがジョブを完了するとプロセスが終了するためです。

キーエージェントができるもう1つのことは、リモートマシンで実行されているGPGがローカルエージェントでキーを取得できるようにすることです(ローカルファイルからキーをロードし、パスフレーズを要求する場合があります)。Gpg-agentはまだこれを行うことができません。これは計画的な機能です。SSHには長い間エージェント転送がありました。(これはSSHキーにgpg-agentを使用しない理由です。)

GPG 1.xまたは2.0.xは、GPG_AGENT_INFO変数が設定されているためにエージェントが実行されていることを認識しています。この変数には、エージェントと通信するためのソケットの場所と、エージェントのプロセスIDが含まれています。GPG 2.1は常にエージェントソケットをに配置し~/.gnupgます。GPG 2.xは、エージェントプロセスが実行されていない場合、常にエージェントプロセスを開始します。

を実行するだけでエージェントを起動できgpg-agentます。セッションの一部としてエージェントプロセスを保持する場合は、セッションマネージャーの呼び出しをに置き換えることができますgpg-agent my-session-manager。一部のディストリビューションはこれを自動的にセットアップします。GPGはエージェントを自動的に起動し、GPG 2.1は環境変数を必要とせずに実行中のエージェントをさらに検出するため、古いバージョンのGPGを使用するか、エージェントを使用して他のタイプを保存しない限り、この方法で起動する必要はありませんSSHなどのキーの。

シェルコマンドを使用してエージェントコマンドを送信できますgpg-connect-agentkillコマンドを送信して、エージェントプロセスを強制終了します(または、シグナルを送信します)。

Gpg-agentにはGPG自体が付属しています。一部のディストリビューションでは、個別にパッケージ化されます。


6
「GPGプロセスがキーを必要とする場合、ソケットを介して実行中のgpg-agentプログラムにアクセスし、キーを要求します。エージェントプロセスにキーがある場合、それをgpgに提供します。」少し誤解を招く。エージェントは、クライアントプロセスにキーを提供しません。代わりに、クライアントプロセスに代わって、キーを使用してアクションを実行します。(クライアントはエージェントに署名、暗号化、または復号化するものを提供し、エージェントはそうします。)エージェントを使用する場合、SSHおよびGPGクライアントソフトウェアは実際のキーにアクセスできません。
ピーターサミュエルソン

3
「Gpg-agentはまだこれを行うことができません。計画されている機能です。SSHには非常に長い間エージェント転送があります(これはSSHキーにgpg-agentを使用しない理由です)。gpg-agentはSSHエージェント転送で正常に機能します。毎日使っています。SSHクライアントが転送を処理します。gpg-agentは実際には関与していません。サポートされていないのは、GPG 自体がエージェントとリモートで通信することです。
ピーターサミュエルソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.