web-dev-qa-db-ja.com

鍵「ec256.pem」のロード:秘密鍵から公開鍵を生成しようとすると、無効な形式がスローされます

ECDSA曲線secp256k1を使用して公開鍵と秘密鍵のペアを生成しようとしています

Ec256.pem(秘密鍵)から公開鍵を生成すると、次のエラーがスローされます

「ロードキー「ec256.pem」:無効な形式」

秘密鍵の生成に使用されるコマンド:

openssl ecparam -name secp256k1 -out secp256k1.pem

openssl ecparam -in secp256k1.pem -genkey -noout -out ec256.pem

chmod 400 ec256.pem

公開鍵の生成に使用されるコマンド:

ssh-keygen -y -f  ec256.pem

Below is the error thrown on running the above cmd ,

Load key "ec256.pem": invalid format

使用されているバージョンは

OpenSSH_7.4p1、OpenSSL1.0.2k-fips

Ec256.pem秘密鍵の公開鍵をssh形式で生成する必要があります

2
Hema Vajravelu

標準、RFC 5656:「セキュアシェルトランスポート層での楕円曲線アルゴリズムの統合」(セクション10) でサポートする必要のある曲線を見ると、サポートがリストされていません。 secp256k1の場合。もちろん、実装でもそれを実装できますが、他の実装との非互換性が犠牲になります。

したがって、秘密鍵を解析できない単純な理由は、その形式がサポートされていないためだと思います。曲線をsecp256r1(secp256k1 Koblitz曲線ではなくランダムプライム曲線。そこにある「k」ではなく「r」に注意)に置き換えるだけで、すべてがスムーズに、同じかそれ以上のセキュリティレベルで実行されます。秘密鍵の構造はsecp256k1曲線と同じであるため、これは問題がファイル形式ではなく曲線にあることを明確に示しています。

あるいは、より派手な Ed25519曲線 を選択することもできますが、下位互換性とより多くの問題が発生する可能性があります。これはOpenSSLコマンドラインと互換性がない可能性があります 以下のコメントを参照

1
Maarten Bodewes