Загрузите ключ «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

Мне нужно сгенерировать открытый ключ в формате ssh для закрытого ключа ec256.pem

решение1

Если я посмотрю на кривые, которые необходимо поддерживать встандарт RFC 5656: «Интеграция алгоритма эллиптической кривой в транспортный уровень Secure Shell» (раздел 10)то я не вижу никакой поддержки, указанной для secp256k1. Конечно, реализации все еще могут реализовать это, но это будет стоить несовместимости с другими реализациями.

Поэтому я думаю, что простая причина, по которой закрытый ключ не может быть проанализирован, заключается в том, что его формат не поддерживается. Если вы просто замените кривую на secp256r1 (случайная простая кривая, а не кривая Коблица secp256k1, обратите внимание на "r" вместо "k" там), то все будет работать гладко и на том же или более высоком уровне безопасности. Структура закрытого ключа идентична кривой secp256k1, поэтому это ясно показывает, что проблема в кривой, а не в формате файла.

В качестве альтернативы вы можете выбрать более изысканный вариант.кривая Ed25519, вероятно, за счет обратной совместимости и дополнительных проблем. Это может быть несовместимо с командной строкой OpenSSL,см. комментарий ниже.

Связанный контент