Como o OpenSSH decide qual chave de host deve ser usada?

5

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

Por meio de testes, eu notei que, pelo menos usando a mesma versão do cliente OpenSSH ( 6.9p1 ), a chave ECDSA será usada pelo host, independentemente do tipo de chave do cliente.

Onde o OpenSSH decide em qual prioridade os algoritmos suportados têm? Esta informação é editável ou codificada no código-fonte da versão atual?

E mais importante, por que o OpenSSH decidiu dar prioridade ao algoritmo ECDSA?

    
por IQAndreas 07.12.2015 / 07:25

2 respostas

5

O pedido é selecionado pelo cliente usando a opção HostKeyAlgorithms config. O padrão no meu sistema (de acordo com a manpage) é:

  1. [email protected]
  2. [email protected]
  3. [email protected]
  4. [email protected]
  5. [email protected]
  6. [email protected]
  7. [email protected]
  8. [email protected]
  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]

    
por 04.11.2016 / 23:04
3

And more importantly, why has OpenSSH decided give the ECDSA algorithm first priority?

O ECDSA foi introduzido no openssh com a versão 5.7, você pode encontrar as Notas de versão aqui . Em particular, afirma-se:

Implement Elliptic Curve Cryptography modes for key exchange (ECDH) and host/user keys (ECDSA) as specified by RFC5656. ECDH and ECDSA offer better performance than plain DH and DSA at the same equivalent symmetric key length, as well as much shorter keys.

.......

Certificate host and user keys using the new ECDSA key types are supported - an ECDSA key may be certified, and an ECDSA key may act as a CA to sign certificates.

ECDH in a 256 bit curve field is the preferred key agreement algorithm when both the client and server support it. ECDSA host keys are preferred when learning a host's keys for the first time, or can be learned using ssh-keyscan(1).

Além disso, RFC 5656 afirma:

Many estimates consider that 2^80-2^90 operations are beyond feasible, so that would suggest using elliptic curves of at least 160-180 bits. The REQUIRED curves in this document are 256-, 384-, and 521-bit curves; implementations SHOULD NOT use curves smaller than 160 bits

    
por 07.12.2015 / 08:37