Como o OpenSSH decide qual chave de host usar?

Como o OpenSSH decide qual chave de host usar?

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 HostKeyAlgorithmsopção de configuração. O padrão no meu sistema (de acordo com a página de manual) é:

  1. [e-mail protegido]
  2. [e-mail protegido]
  3. [e-mail protegido]
  4. [e-mail protegido]
  5. [e-mail protegido]
  6. [e-mail protegido]
  7. [e-mail protegido]
  8. [e-mail protegido]
  9. ecdsa-sha2-nistp256
  10. ecdsa-sha2-nistp384
  11. ecdsa-sha2-nistp521
  12. ssh-ed25519
  13. ssh-rsa
  14. 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

informação relacionada