web-dev-qa-db-ja.com

暗号化および署名用のGPGマスターキーとサブキー、およびデフォルトキー

主キーに関連するサブキーの概念について(他の多くの人と同様に)少し混乱しています。デフォルトでgpg(少なくとも私のシステムでは----- RSAを使用しているようです)、gpg --gen-keymasterkeysubkeyを作成します。 masterkeyには、署名と認証に使用できるフラグSCがあります。また、暗号化に使用されるフラグEを持つ1つのサブキーを作成します。次の文は正しいですか?

  • masterkeysubkeyの両方の概念が鍵ペアである場合、それは秘密鍵と公開鍵のペアです。
  • 1つは暗号化専用であるという事実は、一部のアルゴリズムにはそのような要件があるためです(暗号化と署名には別々のキーが必要です)
  • subkeyフラグとEフラグ付きのmasterkey:パブリック部分を使用して情報を暗号化し、プライベート部分を使用して、パブリック部分で暗号化された情報を復号化できます。
  • SCフラグ付きのsubkeys:プライベート部分は署名/認証に使用され、パブリック部分は署名の有効性を検証するために使用されます。

さらに混乱するのは、アドバイスに従って、署名用と暗号化用のsubkeyをさらに作成する場合です。元の暗号化subkeyESK0と新しい暗号化subkeyESK1、および新しい署名masterkeySSK1MKMKを呼び出します。

ESK1およびSSK1を作成した後、合計4つの公開鍵/秘密鍵のペアが必要です。正しいですか?次に、ガイドに従って、MKをオフラインメディアから削除し、コンピューターから削除します。これで、コンピューターにインストールされました。

  • パブリック/プライベートペアESK0(元の暗号化)
  • パブリック/プライベートペアESK1(新しい暗号化)
  • パブリック/プライベートペアSSK1(新しい署名)
  • MKの公開鍵

次に、gpg --edit-key $id passwdを使用してパスワードを変更します。一部のガイドによると、パスワードをサブキーに変更する必要がありますが、確信が持てません。これは、パスワードをMKにバインドされた構造全体に変更するだけだと思います。以前のパスワード。どちらが正しい?

さて、何かに署名すると、署名キーはどれですか? MKはご利用いただけなくなったため、SSK1である必要があります。正しい?

次に、gpg --send-key $idを使用して、公開鍵を鍵サーバーにアップロードします。どの公開鍵をアップロードしましたか?

誰かがキーサーバーからの情報を使用して暗号化された情報を送信する場合、どの公開キーが暗号化に使用されますか-ESK0またはESK1?私はそれがESK0になるのではないかと心配しています。それでは、サブキーを持つという意味が完全に無意味になるため、復号化ではESK0を使用します。

また、ガイドがMKの削除を提案しているのに、ESK0がシステムに残っているはずなのはなぜですか?では、ESK1の目的は何ですか?

助けてくれてありがとう.

9
leosenko

SCおよびEキーがすでにあり、C(「マスター」)キーをオフラインストレージから削除したい場合、必要なのは新しいSキー(例ではSSK1)だけです。 )新しい暗号化サブキーを作成する必要はありません-この目的には、既存の暗号化キーで十分です。

次に、gpg --edit-key $id passwdを使用してパスワードを変更します。一部のガイドによると、パスワードをサブキーに変更する必要がありますが、確信が持てません。これは、パスワードをMKにバインドされた構造全体に変更するだけだと思います。オフラインでプライベートMKが保存されている構造には、以前のパスワード。どちらが正しい?

ローカルに保存されたサブキーのパスフレーズを変更するので、これは完全に有効なことです。オフラインマスターキーのパスフレーズは変更されません。パスフレーズとは、ディスクに保存する前にGnuPGが秘密鍵を対称的に暗号化するために使用するものです(マルウェアや安全性の低いバックアップによって簡単に盗まれないようにするため)。

さて、何かに署名すると、署名キーはどれですか? MKが利用できなくなったため、SSK1である必要があると思います。正しい?

デフォルトでは、GnuPGは最後に作成されたSキーを使用するため、SSK1が常に使用されます-これが必要です。

次に、gpg --send-key $ idを使用して、公開鍵を鍵サーバーにアップロードします。どの公開鍵をアップロードしましたか?

新しいサブキーやIDを含むすべての公開キーデータをアップロードします。

誰かがキーサーバーからの情報を使用して暗号化された情報を送信する場合、暗号化にはどの公開キーが使用されますか-ESK0またはESK1?私はそれがESK0になるのではないかと心配しています。それでは、サブキーを持つという意味が完全に無意味になるため、復号化についてはまだESK0を使用しています。

複数の有効な暗号化サブキーを持つことは、このようなことが発生するためのレシピなので、新しい暗号化サブキーを作成しないことを強くお勧めします。すでに述べたように、既に暗号化サブキーを持っている場合は、新しい暗号化サブキーは必要ありません。

また、ガイドがMKの削除を提案しているのに、ESK0がシステムに残っているはずなのはなぜですか? ESK1の目的は何ですか?

「マスターキー」は「C」キー(認証)です。これは、他の人の鍵、および自分のサブ鍵とIDに署名するために使用される鍵です。 EまたはSサブキーのいずれかが失われたり、マルウェアにさらされるのではないかと心配したりした場合は、Cキーの整合性が信頼できる限り、それらを取り消して新しいサブキーを作成できます。これが、Cキー( "マスターキー")を慎重に保護し、オフラインで保存することをお勧めする理由です。

最後に、あなたの目標は次の構造を持つことです:

  • 既存の[SC]キー-オフラインで保存、ローカルディスクから削除
  • 既存の[E]キー-ディスクに保持
  • 新しい[S]キー-ディスクに保持

最後の注記-デフォルトでは、GnuPGはマスターキーを[SC]として作成しますが、そうする必要はありません。特にGnuPGにスタンドアロンの[C]キーを作成するように指示できます。

8
mricon