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 é lançado
"Carregar chave "ec256.pem": formato inválido"
Comandos usados para gerar a 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 a 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 a chave pública no formato ssh para a chave privada ec256.pem
Se eu observar as curvas que precisam ser suportadas no padrão, RFC 5656: "Elliptic Curve Algorithm Integration in the Secure Shell Transport Layer" (seção 10) , não vejo nenhum suporte listado para secp256k1. É claro que as implementações ainda poderiam implementá-lo, mas isso viria com o custo da incompatibilidade com outras implementações.
Portanto, acho que o simples motivo pelo qual a chave privada não pode ser analisada é porque seu formato não é compatível. 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), tudo funcionará sem problemas e com o mesmo nível de segurança ou superior. A estrutura da chave privada é idêntica à curva secp256k1, então isso mostra claramente que o problema está na curva e não no formato do arquivo.
Como alternativa, você pode optar pela curva Ed25519 mais sofisticada , 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 .