web-dev-qa-db-ja.com

サブキーとは正確には何ですか?

RSA、Elgamal、AES、SHAの背後にある数学はかなり理解していますが、実際の使用方法はわかりません。サブキーとマスターキーの違いは何ですか?さまざまなWebサイトからその目的を理解していますが、どうですか?内部で実装されていますか?それはどのようにマスターキーにバインドされていますか?それはOpenPGP用語ですか?

19
balki

これは enigmailフォーラムの2008年からのユーザーrjhによる投稿 がうまく答えます:

元々はPGP 2.6で、90年代初頭には、キーペアは1つだけで、暗号化と署名の両方に使用されていました。追加のキーペアを持つ能力は、いくつかのエンジニアリング上の課題を提示しました。最終的には、追加のキーペアは「サブキー」とは呼ばれませんが、「サブキー」はありません。同様に、「キー」と呼んでいるものは、実際にはキーではありません。用語は、キーが実際にキーだった時代からの引き継ぎです。現在、キーは実際にはキーのコレクションであり、ユーザー識別子、署名などのメタデータも含まれています。

たとえば、私の「鍵」には、5B8709EB、D0C6AAE4、71E177DB、8DB02BBB3の4つの鍵ペアがあります。

GnuPGが「公開鍵」と呼んでいるものは、コレクションで最も古い署名鍵です。たとえば、5B8709EBが最初に作成されたため、GnuPGはキーとメタデータのセット全体を「5B8709EBキー」と呼びます。

それで、「暗号化と署名に使用されるキーをサブキーなしで持つことは可能ですか?」鍵のall鍵ペアはサブ鍵であるため、ここでは答えはノーです。そのうちの1つだけであっても。

17
Geremia

サブキー

サブキーパケットは RFC 4880、OpenPGP、5.5 Key Material Packet で定義されています。それらは別のパケットIDによってのみ区別され、実際に役立つためにはバインディング署名が必要です(以下を参照)。

公開サブキーパケット(タグ14)の形式は公開キーパケットとまったく同じですが、サブキーを示します。

サブキーの使用法

OpenPGPサブキーはさまざまな目的で使用されます。

  • 主キーをオフラインまたはより安全なデバイスに保存できること。サブキーを持つマシンが危害を加えられた場合、主キーを取り消す煩わしさなしにサブキーを簡単に取り消すことができます(新しいキーの共有、新しい署名の取得など)。
  • ビルドサーバー上の署名サブキーなど、異なるマシン上に異なるサブキーを持つこと。繰り返しになりますが、単一のキーを取り消すのは簡単です。
  • 有効期間を長くするには大きな主キーを使用し、日常的に使用する場合は短いが高速なサブキーを使用します。
  • 一部のアルゴリズムは、暗号化と署名の両方をサポートしていません。たとえば、DSAプライマリキーには、暗号化用に別のキーが必要です。通常、ElGamalとペアになります。

バインディング署名

RFC 4880、OpenPGP、5.2.1署名タイプ にリストされている、サブキーを主キー(およびその逆)にバインドする特別な署名サブタイプがあります。

0x18:サブキーバインディング署名

この署名は、サブキーを所有していることを示す最上位の署名キーによるステートメントです。この署名は、主キーとサブキーで直接計算され、ユーザーIDや他のパケットでは計算されません。署名サブキーをバインドする署名は、主キーとサブキーの署名サブキーによって作成された0x19署名を含むこの署名署名に埋め込み署名サブパケットを持っている必要があります。

0x19:主キーバインディング署名

この署名は署名サブキーによるステートメントであり、主キーとサブキーによって所有されていることを示します。このシグネチャは、0x18シグネチャと同じ方法で計算されます。ユーザーIDや他のパケットではなく、主キーとサブキーで直接計算されます。

13
Jens Erat