Por padrão, na minha versão atual ( 6.9p1
), o OpenSSH Server criará quatro tipos de chaves de host:
$ ls /etc/ssh/ssh_host_*_key.pub
/etc/ssh/ssh_host_dsa_key.pub
/etc/ssh/ssh_host_ecdsa_key.pub
/etc/ssh/ssh_host_ed25519_key.pub
/etc/ssh/ssh_host_rsa_key.pub
Através de testes, percebi que, pelo menos utilizando a mesma versão do cliente OpenSSH ( 6.9p1
), a chave ECDSA será utilizada pelo host, independente do tipo de chave do cliente.
Onde o OpenSSH decide qual prioridade os algoritmos suportados têm? Essas informações são editáveis ou codificadas no código-fonte da versão atual?
E o mais importante, por que o OpenSSH decidiu dar prioridade ao algoritmo ECDSA?
Responder1
O pedido é selecionado pelo cliente através da HostKeyAlgorithms
opção de configuração. O padrão no meu sistema (de acordo com a página de manual) é:
- [e-mail protegido]
- [e-mail protegido]
- [e-mail protegido]
- [e-mail protegido]
- [e-mail protegido]
- [e-mail protegido]
- [e-mail protegido]
- [e-mail protegido]
- ecdsa-sha2-nistp256
- ecdsa-sha2-nistp384
- ecdsa-sha2-nistp521
- ssh-ed25519
- ssh-rsa
- ssh-dss
Para substituir isso, faça algo como:
ssh -oHostKeyAlgorithms=ssh-ed25519 [email protected]
Responder2
E o mais importante, por que o OpenSSH decidiu dar prioridade ao algoritmo ECDSA?
ECDSA foi introduzido no openssh com a versão 5.7, você pode encontrar oNotas de lançamento aqui. Em particular, afirma-se:
Implemente modos de criptografia de curva elíptica para troca de chaves (ECDH) e chaves de host/usuário (ECDSA), conforme especificado por RFC5656. ECDH e ECDSA oferecem melhor desempenho que DH e DSA simples no mesmo comprimento de chave simétrica equivalente, bem como chaves muito mais curtas.
.......
As chaves de host e usuário do certificado que usam os novos tipos de chave ECDSA são suportadas - uma chave ECDSA pode ser certificada e uma chave ECDSA pode atuar como uma CA para assinar certificados.
ECDH em um campo de curva de 256 bits é o algoritmo de acordo de chave preferido quando tanto o cliente quanto o servidor o suportam. As chaves de host ECDSA são preferidas ao aprender as chaves de um host pela primeira vez ou podem ser aprendidas usando ssh-keyscan(1).
Também,RFC 5656afirma:
Muitas estimativas consideram que as operações 2^80-2^90 estão além da viabilidade, então isso sugeriria o uso de curvas elípticas de pelo menos 160-180 bits. As curvas NECESSÁRIAS neste documento são curvas de 256, 384 e 521 bits; implementações NÃO DEVEM usar curvas menores que 160 bits