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

キー「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、OpenSSL 1.0.2k-fips

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

答え1

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

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

あるいはもっと豪華なものを選ぶこともできますEd25519 曲線おそらく後方互換性とトラブルが増えるという犠牲を払わなければならない。これはOpenSSLコマンドラインと互換性がないかもしれない。下のコメントをご覧ください

関連情報