web-dev-qa-db-ja.com

他の人々の公開鍵を認証するためにどの署名鍵を使用すればよいですか:マスターまたはサブ鍵?

マスターIDキー(毎日使用するキーリングから切り離されています)と、暗号化サブキーと署名サブキーの両方(すべてRSA)があります。

署名サブキーを使用してドキュメントに署名します。マスターキーが存在しないため、GnuPGは(おそらく)毎日使用する秘密キーリングからこのキーを自動的に選択します。

他人の公開鍵を認証したい場合、マスター鍵と署名サブ鍵のどちらを使用すればよいかわかりません。

相手の公開鍵を取得、インポート、検証するたびにマスターキーを認証に使用すると、マスターキーが危険にさらされるリスクが高まるように思えます(ただし、マスターキーと日常使用のプライベートキーは、ネットワークに接続されていないマシンでは、マスターキーの公開を制限する必要があると感じています)。

一方、署名サブキーを使用して証明書を作成し、後でそのキーを取り消さざるを得なくなった場合、それらの証明書はすべて新しい署名キーで繰り返す必要があります(確かに--sign-keyで作成された証明書とは対照的に) --lsign-keyへ)。

これは私が自分で決めなければならないトレードオフですか、それともどちらか一方のキーを使用する必要があることは明らかですか?

18
jah

4つの可能な「使用法」は次のとおりです。

  • 認定:他の鍵への署名
  • 署名:データの署名
  • 暗号化:データの復号化
  • 認証:認証トークンへの署名

--edit-keyを使用してキーを見ると、各キーとサブキーの後ろに記載されている使用法がわかります。デフォルトでは、キータイプでサポートされているすべてのものがマスターキーにアタッチされます(したがって、RSAはCSEAにデフォルト設定され、DSAは暗号化に使用されないため、DSAはCSAにデフォルト設定されます)。アルゴリズムよりも制限された特別なキータイプがあります(例:CSAのみをサポートする「RSA(署名のみ)」)。

サブキーを作成するとき、サブキーをマスターキーにバインドする署名でキー使用法が割り当てられます。これにより、この機能がサブキーに委任されます。サブキーは、それぞれの操作のデフォルトキーにもなりますが、キーの使用法はマスターキーには表示されません。

証明書をサブキーに委任することはできないので、別のキーに署名するには常にマスターキーが必要です

署名を委任することができ、前に感嘆符を付けて使用するキーを指定して別のキーを強制しない限り、署名委任付きの最新の有効なキーが自動的に署名に使用されます。

暗号化を委任することもできます。別のユーザーが感嘆符で強制されない限り、暗号化委任を持つ最新の有効なキーが送信者側で自動的に選択されます。

11
Simon Richter

一般的には、マスターキーは他のキーの署名に使用されます。たとえば、「なぜ」の例外を参照してください。 for Debian開発でのOpenPGPサブキーの使用 。私はこの目的でサブキーを作成するシステムを知りません。私の経験では、公開キーソフトウェアはそれほど柔軟なものではありません。

意見としてのみ、私は次の2つの根拠を提案します。

  1. あなたが言うように、署名は信頼されたシステム上で行われる活動であり、外部のデータとの相互作用は最小限です。リスクレベルは、寿命が短くなる可能性があり、その循環が体系的な再信頼の行使をトリガーする別のサブキーの作成を正当化しません。
  2. マスターキーは企業と考えることができ、サブキーは「ビジネスを行う」アイデンティティです。後者は前者から権限を取得しますが、マスターキーは権限です。他のキーへの署名は定義により信頼できるアクションであり、サブキーではなくマスターキーに最適です。
11
gowenfawr