it-swarm-ja.com

gpgはキーペアの複数のキーをどのように処理しますか?

私が理解しているように、gpgで使用されるキーペアには、通常、複数のキーが関連付けられています。1つは署名用、もう1つは暗号化用です。 gpgを使用する場合(キーサーバーにプッシュする、他の誰かのキーを取得する、暗号化する、または署名する)、これらの複数のキーはどのように管理されますか?正しいアクションのために正しいキーを自動的に使用しますか、それともユーザーが指定する必要があるものですか?キーペア内の各キーの目的はどのように識別されますか?

2
jrdioko

しばしば「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
5
user1686