web-dev-qa-db-ja.com

ECC用の無人GnuPGキー生成

Bashスクリプト内でECC PGPを無人で作成しようとしています。次のようになります。

cat >ecc <<EOF
Key-Type: ECC
Key-Length: 521
Subkey-Type: ECC
Subkey-Length: 521
Name-Real: Test
Passphrase: secret
Expire-Date: 0
%pubring gpg.pub
%secring gpg.sec
%commit
EOF
gpg --batch --yes --no-tty --gen-key ecc

これはRSAキーで非常にうまく機能しますが、ECCの上記の例では次のようになります。

gpg: key generation failed: Unknown elliptic curve

使用する楕円曲線を指定するにはどうすればよいですか?

4
msrd0

私はFedoraユーザーですが、Ubuntuファンの声を聞いてください。私は同じ問題に苦しんでいたので、GnuPG 2.1.13を搭載したFedora 25で、そして確かにUbuntuで動作する私のソリューションを紹介します。これはトーマスの答えを修正したものです。 Key-TypeとSubkey-Typeを次のように設定します(私はnistp256を使用していますが、システムがサポートする曲線を使用しています)。

キータイプ:ECDSA
キーカーブ:nistp256
キーの長さ:256
サブキータイプ:ECDH
サブキー曲線:nistp256
サブキーの長さ:256

ECCをキータイプおよびサブキータイプとして使用すると、gpgはこのようなエラーを生成し、公開キーはECDSAではなくECDHになります。

gpg:残りのパケットの読み取りエラー:無効な引数
gpg:残りのパケットの読み取りエラー:無効な引数
gpg:256ビットMDを72ビットフレームにエンコードできません、algo = 8
gpg:256ビットMDを72ビットフレームにエンコードできません、algo = 8

また、GnuPG v2.1以降では、オプション%pubringおよび%secringは無視されます( https://www.gnupg.org/documentation/manuals/gnupg/Unattended-GPG-key-generation.html )使用しないでください。

そして最後に、これを確認してください https://www.gnupg.org/faq/whats-new-in-2.1.html#ecc どの曲線を使用するかについての良い読み物です。実際、私にとって、v2.1.13は手動コマンドの実行中に次のもののみをリストしています。

$ gpg2 --expert --full-gen-key
...
(3) NIST P-256
(4) NIST P-384
(5) NIST P-521
4
upteryx