Estou tentando gerar um par de chaves pública/privada usando a curva ECDSA secp256k1
Ao gerar a chave pública de ec256.pem (chave privada), o seguinte erro é gerado
"Carregar chave "ec256.pem": formato inválido"
Comandos usados para gerar chave privada:
openssl ecparam -name secp256k1 -out secp256k1.pem
openssl ecparam -in secp256k1.pem -genkey -noout -out ec256.pem
chmod 400 ec256.pem
Comando usado para gerar chave pública:
ssh-keygen -y -f ec256.pem
Below is the error thrown on running the above cmd ,
Load key "ec256.pem": invalid format
A versão que está sendo usada é
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips
Preciso gerar uma chave pública no formato ssh para a chave privada ec256.pem
Responder1
Se eu olhar para as curvas que precisam ser apoiadas nopadrão, RFC 5656: "Integração de algoritmo de curva elíptica na camada de transporte seguro Shell" (seção 10)então não vejo nenhum suporte listado para secp256k1. É claro que as implementações ainda poderiam implementá-lo, mas isso custaria a incompatibilidade com outras implementações.
Então acho que a simples razão pela qual a chave privada não pode ser analisada é porque seu formato não é suportado. Se você apenas substituir a curva por secp256r1 (uma curva primária aleatória em vez da curva secp256k1 Koblitz, observe o "r" em vez do "k" ali), então tudo funcionará perfeitamente e no mesmo nível de segurança ou superior. A estrutura da chave privada é idêntica à curva secp256k1, portanto isso mostra claramente que o problema está na curva e não no formato do arquivo.
Alternativamente, você pode optar por algo mais sofisticadoCurva Ed25519, provavelmente ao custo de compatibilidade com versões anteriores e mais problemas. Isso pode não ser compatível com a linha de comando OpenSSL,veja o comentário abaixo.