~/.gnupgで[E]サブキーを別のフォルダにインポートし、サブキーの公開キーをエクスポートするオプションを使用しました--homedir
。
サブキーの公開キーは、マスターキーの公開キーよりも少ない行があることがわかります。 diffを使用すると、開始行はいくつかの同じですが、一番下の行が異なるため、最終的には公開鍵はまだ異なります。
私の質問:公開鍵は違いますか? (ここではまだ二重チェックが必要です)。異なる場合、サブキーを使用した暗号化/暗号解読は独立しており、マスターキーと他のサブキーとは関係ありません。
答え1
非対称暗号化は常に鍵ペアを処理します。すべての秘密鍵には対応する公開鍵があります。だから最初の質問に答えてみましょう。はい、マスターキーペアの公開キーは、スレーブキーペアの公開キーとは異なります。
実験を再試行し、プライマリキー(ID 0xA6271DD4)とセカンダリキー(ID 0x5336E1DC)を使用してGnuPGテストキーを作成しました。次に、依存キーをファイルにエクスポートし、どのパケットが含まれているかを確認します。
$ gpg --export-secret-subkey 5336E1DC! > subkey.gpg
$ gpg --list-packets subkey.gpg | grep "\(packet\|keyid\)"
:secret key packet:
keyid: 877AA505A6271DD4
:user ID packet: "testtest <test@test>"
:signature packet: algo 1, keyid 877AA505A6271DD4
:secret sub key packet:
keyid: B0389BEB5336E1DC
:signature packet: algo 1, keyid 877AA505A6271DD4
$
ユーザーIDと秘密のスレーブキーの両方がマスターキーで署名されます。一見すると、マスターキーとスレーブキーの両方がエクスポートされるように見えます。最初の秘密パケットに関する詳細情報を表示します。
$ gpg --list-packets subkey.gpg | head
# off=0 ctb=95 tag=5 hlen=3 plen=277
:secret key packet:
version 4, algo 1, created 1546169910, expires 0
pkey[0]: [2048 bits]
pkey[1]: [17 bits]
gnu-dummy S2K, algo: 0, simple checksum, hash: 0
protect IV:
keyid: 877AA505A6271DD4
# off=280 ctb=b4 tag=13 hlen=2 plen=20
:user ID packet: "testtest <test@test>"
$
GnuPGからキーをエクスポートすると、その公開キーは常にエクスポートされます。したがって、この秘密キーバックには、2048ビットの公開鍵と17ビットのハッシュを含めることができます。ただし、キー自体は失われ、スタブだけがエクスポートされますgnu-dummy S2K, algo: 0, simple checksum, hash: 0
。要約すると、秘密サブキーをエクスポートするときは、常に公開サブキーと公開マスターキー(署名確認に必要)も一緒にエクスポートされます。
公開サブキーに公開マスターキーより行数が少ないと書かれました。私はこれを再現できません。 GnuPGを使用すると、上記のコマンドを使用してサブキーなしで公開鍵をエクスポートできますgpg --export A6271DD4! > pubkey.gpg
(感嘆符を参照)。一方、公開サブキーのみエクスポートできません。。ただし、マスターキーとマスターキーとサブキーを比較すると、後者は自然により多くの行を持つことになります。したがって、観察内容をよりよく理解するために、使用した正確なコマンドを知ることが最善です。