Cargar clave “ec256.pem”: se genera un formato no válido al intentar generar una clave pública a partir de una clave privada

Cargar clave “ec256.pem”: se genera un formato no válido al intentar generar una clave pública a partir de una clave privada

Estoy intentando generar un par de claves pública/privada usando la curva ECDSA secp256k1

Al generar la clave pública desde ec256.pem (clave privada), se genera el siguiente error

"Cargar clave "ec256.pem": formato no válido"

Comandos utilizados para generar clave privada:

openssl ecparam -name secp256k1 -out secp256k1.pem

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

chmod 400 ec256.pem

Comando utilizado para generar clave pública:

ssh-keygen -y -f  ec256.pem

Below is the error thrown on running the above cmd ,

Load key "ec256.pem": invalid format

La versión que se utiliza es

OpenSSH_7.4p1, OpenSSL 1.0.2k-fips

Necesito generar una clave pública en formato ssh para la clave privada ec256.pem

Respuesta1

Si miro las curvas que necesitan ser apoyadas en elestándar, RFC 5656: "Integración del algoritmo de curva elíptica en la capa de transporte Secure Shell" (sección 10)entonces no veo ningún soporte listado para secp256k1. Por supuesto, las implementaciones aún podrían implementarlo, pero tendría el costo de la incompatibilidad con otras implementaciones.

Entonces creo que la simple razón por la que la clave privada no se puede analizar es porque su formato no es compatible. Si simplemente reemplaza la curva con secp256r1 (una curva primaria aleatoria en lugar de la curva Koblitz secp256k1, observe la "r" en lugar de la "k"), entonces todo funcionará sin problemas y con el mismo nivel de seguridad o uno superior. La estructura de la clave privada es idéntica a la curva secp256k1, por lo que esto muestra claramente que el problema está en la curva y no en el formato del archivo.

Alternativamente, puedes optar por el más elegante.curva ed25519, probablemente a costa de compatibilidad con versiones anteriores y más problemas. Es posible que esto no sea compatible con la línea de comando OpenSSL,ver el comentario a continuación.

información relacionada