加载密钥“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 曲线,请注意其中的“r”而不是“k”)替换曲线,那么一切都会顺利运行,并且安全级别相同或更高。私钥的结构与 secp256k1 曲线相同,因此这清楚地表明问题出在曲线上,而不是文件格式上。

或者你也可以选择更花哨的Ed25519曲线,可能会以向后兼容性和更多麻烦为代价。这可能与 OpenSSL 命令行不兼容,请参阅下面的评论

相关内容