web-dev-qa-db-ja.com

GnuPGは、公開鍵と秘密鍵が同じで違いがない場合に、公開鍵と秘密鍵のペアを生成します

GnuPG公開秘密鍵ペアを生成したい。私はgpgをインストールしており、gpg2はインストールしていません。ターミナルに行って次のようにしました:

gpg --gen-key

出力:

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)

1を選択しました出力:

What keysize do you want? (2048) 

4096を選択しました出力:

Key is valid for? (0)

0を選択しました出力:

You need a user ID to identify your key; 
the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Name Title (some comment) <[email protected]>"

Real name: My Name
Email address: [email protected]
Comment: comment
You selected this USER-ID:
"My Name (comment) <[email protected]>"

出力:

You need a Passphrase to protect your secret key.

パスフレーズを出力しました:

gpg: key XXXXXXXL marked as ultimately trusted
public and secret key created and signed.

pub   ABCDE/XXXXXXXL 2016-06-09
Key fingerprint = XXXX XXXX XXXX XXXX XXXX  XXXX XXXX XXXX XXXX XXXXL
uid                  My Name (comment) <[email protected]>
sub   ABCDE/XXXXXXXM 2016-06-09

~/.profileに次の行を追加しました:

export GPGKEY=XXXXXXXM

それからそれを調達するために私はやった

killall -q gpg-agent
eval $(gpg-agent --daemon)
export GPGKEY=XXXXXXXM

次に、暗号化しました。

gpg --cert-digest-algo=SHA256 --edit-key XXXXXXXM

出力:

Secret key is available.

pub   ABCDE/XXXXXXXM  created: 2016-06-09  expires: never       usage: SC  
                     trust: ultimate      validity: ultimate
[ultimate] (1). My Name (comment) <[email protected]>

Command> 

やった

addkey

出力:

Please select what kind of key you want:
   (2) DSA (sign only)
   (4) Elgamal (encrypt only)
   (5) RSA (sign only)
   (6) RSA (encrypt only)

6を選択しました出力:

What keysize do you want? (2048)

4096を選択しました出力:

Key is valid for? (0)

0を選択しました出力:

pub   ABCDE/XXXXXXXL  created: 2016-06-09  expires: never       usage: SC  
                     trust: ultimate      validity: ultimate
sub   ABCDE/XXXXXXXM created: 2016-06-09  expires: never       
sub   ABCDE/XXXXXXXN created: 2016-06-09  expires: never       usage: E   

[ultimate] (1). My Name (comment) <[email protected]>
Command> 

やった:

save

次に私はしました:

gpg --list-keys

これは私のサンプル出力です:

pub   ABCDE/XXXXXXXL 2016-06-09
uid                  My Name (comment) <[email protected]>
sub   ABCDE/XXXXXXXM 2016-06-09
sub   ABCDE/XXXXXXXN 2016-06-10

しかし私がするとき

`gpg --list-secret-keys`

Pubの代わりにsecを除いて、同じ出力が得られます。

sec   ABCDE/XXXXXXXL 2016-06-09
uid                  My Name (comment) <[email protected]>
sub   ABCDE/XXXXXXXM 2016-06-09
sub   ABCDE/XXXXXXXN 2016-06-10

pub ABCDE/の後の部分が公開鍵であり、sec ABCDE/の後の部分が秘密鍵であることを知っています。つまり、私の公開鍵と秘密鍵は同じです。

別の特異なシナリオは、ここで3行がABCDEで始まるというものですが、組み合わせは異なっている必要があります。

公開鍵と秘密鍵を別々に取得するにはどうすればよいですか?

1
rancho

pub ABCDE/の後の部分が公開鍵であり、sec ABCDE/の後の部分が秘密鍵であることを知っています。

アルゴリズム識別フィールドをキーIDと間違えています。

sec   ABCDE/XXXXXXXL 2016-06-09
uid                  My Name (comment) <[email protected]>
sub   ABCDE/XXXXXXXM 2016-06-09
sub   ABCDE/XXXXXXXN 2016-06-10

ABCDEで非表示にしていたフィールドがABCDEになることはありません。このフィールドは、アルゴリズムとキーサイズ識別子を保持します。たとえば、4096ビットのRSAキーの場合はR4096です。同じアルゴリズムとキーサイズに対して同じ情報を保持することが期待されています。 D1024は、1024ビットのDSAキーなどを示します。

(短い)キーIDは後ろスラッシュ/-の部分であり、質問を見ると、とにかくすでに別のようです。

公開鍵と秘密鍵を別々に取得するにはどうすればよいですか?

あなたはすでに持っています。公開鍵と秘密鍵の3つのペアが生成され、それぞれが一意です。 OpenPGPでは、常に公開鍵を参照します(とにかく鍵は常にペアで提供されるため)。

1
Jens Erat