質問: gpgはキーペアの複数のキーをどのように処理しますか? 私が理解しているように、gpgで使用されるキーペアには、通常、複数のキーが関連付けられています。1つは署名用、もう1つは暗号化用です。 gpgを使用する場合(キーサーバーにプッシュする、他の誰かのキーを取得する、暗号化する、または署名する)、これらの複数のキーはどのように管理されますか?正しいアクションのために正しいキーを自動的に使用しますか、それともユーザーが指定する必要があるものですか?キーペア内の各キーの目的はどのように識別されますか?
回答: しばしば「gpgキー」と呼ばれるものは、証明書のようなものです。 x.509と同様に、証明書には、キーだけでなく、「プライマリ」キーペアと複数の「サブキー」キーペア、それらの使用フラグと有効期限、および複数の「ユーザーid」など、より多くの情報が含まれています。 'および'写真id 'とその署名。「キーペア」をキーサーバーにアップロードすると、公開されているすべてのもの(キー、サブキー、ユーザーid、署名)が1つの証明書として送信されます。 'primary'キーは、証明書全体を識別します。その公開鍵ハッシュは表示される「フィンガープリント」であり、鍵idはそれに基づいています。通常、主キーには、データと他のキーにそれぞれ署名するための「署名」と「認証」の使用フラグがあります。デフォルトでは、データを暗号化するために、少なくとも1つの「暗号化」サブキーが作成されます。このようなサブキーは複数持つことができます。たとえば、有効期限が異なります。適切なソースが見つかりませんでしたが、暗号化には最新の有効な(開始日以降で有効期限が切れていない/取り消されていない)サブキーが選択されるようです。 decrypting dataの場合、すべてのサブキーが試行されます。(gpg -kが両方キーとサブキーのキーidを一覧表示していることに気付いたかもしれません。特定のキーまたはサブキーを強制的に使用する必要がある場合は、keyid! –を指定できます。 (サブ)キーidとそれに続く感嘆符–サブキーが最適なすべての計算をバイパスします。)オプションで、「認証」が許可されているとマークされたサブキーを追加できます。これは、ssh(gpg-agent経由、生のrsaキーペアを抽出)やssl(x.509の代わりにgnutlsによって実装)などのプロトコルで使用できます。どのサブキーが使用されるかは、特定の実装によって異なります。以下を使用して、pgp証明書の完全な構造を確認できます。 gpg --export mykey | gpg -vvv gpg --export mykey | pgpdump gpg --export mykey | certtool --pgp-certificate-info