web-dev-qa-db-ja.com

PGP-なぜ個別の暗号化サブキーがあるのか

これが私の鍵の設定方法です:

pub  4096R/AAAAAAAA  created: 2012-11-14  expires: 2013-11-14  usage: SC  
                     trust: ultimate      validity: ultimate
sub  4096R/BBBBBBBB  created: 2012-11-14  expires: 2013-11-14  usage: E   
[ultimate] (1). xxxx <[email protected]>

私はこれが標準であり、サブキーが復号化を処理することを知っています。なんでこれなの?これは、すべてを行う単一のキーを持っている私とどう違うのですか?

31
CaptSaltyJack

個別のキーが必要になる主な理由は3つあります。

  1. 暗号化と署名の両方にすべてのタイプの鍵を使用できるわけではありません。 OpenPGP (GnuPGが実装する形式)は主にRSA、ElGamal、DSAをサポートします。 ElGamalは暗号化のみで、DSAは署名のみです。 RSAは両方を実行できます。ただし、RSAがまだ特許を取得していた時期があり、それ以来、一部のPGP実装ではデフォルトでElGamal + DSAを使用するようになっているため、必然的に2つの鍵ペアになります。

  2. 暗号化キーはエスクローする必要があります(つまり、どこかにバックアップがあります)。署名キーはエスクローしないでください。この問題についての議論は this answer を参照してください。特定のキーをエスクローすることもエスクローすることもできないため、2つのキーが必要です。

  3. 理想的には、特別に十分に保護されたキーリングに保管する単一のマスターキーと、日常のタスク用のサブキーが必要です。マスターキーは、有効期限のない「ルート」キーであると想定されています。それは大きくてかさばり、おそらく非効率的ですが、頻繁には使用しません。サブキーは、寿命が短い(1年または2年など)と定義するため、より短く(したがってより効率的に)なる可能性があります。テクノロジの進歩を10年または20年後も生き残るために、サブキーを十分に太くする必要はありません。サブキーの1つが盗まれた場合に備えて、マスターキーは「失効キー」としても機能します。

42
Thomas Pornin