RSA、Elgamal、AES、SHAの背後にある数学はかなり理解していますが、実際にどのように使用されているかは理解していません。サブキーはマスターキーとどのように異なりますか?さまざまなウェブサイトからその目的を理解していますが、内部でどのように実装されていますか?マスターキーにどのようにバインドされますか?これはOpenPGPの用語ですか?
コメント
- これは私に大いに役立ちました: wiki.debian .org / Subkeys
回答
この enigmailフォーラムでの2008年のユーザーrjhによる投稿はそれによく答えています:
元々はPGP2.6で、90年代初頭にキーペアは1つだけで、暗号化と署名の両方に使用されました。追加のキーペアを持つ機能は、いくつかのエンジニアリング上の課題を提示しました。最終的に、追加のキーペアは「サブキー」と呼ばれることになりましたが、それらには「サブ」はありません。同様に、「キー」と呼ぶものは実際にはまったくキーではありません。用語です。キーが本当にキーだった時代からの遺物です。現在、キーは実際にはキーのコレクションであり、ユーザーID、署名などのメタデータも含まれています。
たとえば、私の「キー」には4つのキーペアがあります:5B8709EB 、D0C6AAE4、71E177DB、および8DB02BBB3。
GnuPGが「公開鍵」と呼ぶものは、実際にはコレクション内で最も古い署名鍵です。たとえば、5B8709EBが最初に作成されたため、GnuPGはキーとメタデータのセット全体を「5B8709EBキー」と呼びます。
つまり、「暗号化と署名に使用されるキーを持つことは可能ですか」サブキーはまったくありませんか?」キーのすべてのキーペアはサブキーであるため、ここでの答えはノーです。1つしかない場合でも。
回答
サブキー
サブキーパケットは RFC 4880、OpenPGP、5.5キーマテリアルパケット。これらは「別のパケットIDによってのみ区別され、実際に役立つにはバインディング署名が必要です(以下を参照)。
公開鍵パケット(タグ14)公開鍵パケットとまったく同じ形式ですが、サブキーを示します。
サブキーの使用法
OpenPGPサブキーはさまざまな目的で使用:
- 主キーをオフラインまたはより安全なデバイスに保存できる。サブキーのあるマシンが損傷した場合、取り消す手間をかけずにサブキーを簡単に取り消すことができます。主キー(新しいキーの共有、新しい署名の取得など)。
- ビルドサーバーの署名サブキーなど、異なるマシンに異なるサブキーを設定します。ここでも、単一のキーを取り消すのは簡単です。
- より大きな主キーを使用して寿命を延ばし、より短いがより高速なサブキーを使用して日常的に使用します。
- 一部のアルゴリズムは、暗号化と署名の両方をサポートしていません。たとえば、 DSAの主キーには、暗号化のために別のキーが必要ですption、通常はElGamalとペアになっています。
署名のバインド
サブキーを主キーにバインドする(およびその逆)ための特別な署名サブタイプがあり、 RFC 4880、OpenPGP、5.2.1署名タイプ:
0x18:サブキーバインディング署名
この署名は、サブキーを所有していることを示す最上位の署名キーによるステートメントです。この署名は、ユーザーIDやその他のパケットではなく、主キーとサブキーで直接計算されます。署名サブキーをバインドする署名には、このバインド署名に、主キーとサブキーの署名サブキーによって作成された0x19署名を含む埋め込み署名サブパケットが含まれている必要があります。
0x19:主キーバインド署名
この署名は、署名サブキーによるステートメントであり、主キーとサブキーによって所有されていることを示します。この署名は、0x18署名と同じ方法で計算されます。つまり、ユーザーIDやその他のパケットではなく、主キーとサブキーに直接計算されます。