¿Cómo decide OpenSSH qué clave de host utilizar?

¿Cómo decide OpenSSH qué clave de host utilizar?

De forma predeterminada, en mi versión actual ( 6.9p1), OpenSSH Server creará cuatro tipos de claves 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

A través de las pruebas, he notado que, al menos usando la misma versión del cliente OpenSSH ( 6.9p1), el host utilizará la clave ECDSA, independientemente del tipo de clave del cliente.

¿Dónde decide OpenSSH qué prioridad tienen los algoritmos admitidos? ¿Esta información es editable o está codificada en el código fuente de la versión actual?

Y lo que es más importante, ¿por qué OpenSSH decidió darle prioridad al algoritmo ECDSA?

Respuesta1

El pedido lo selecciona el cliente mediante la HostKeyAlgorithmsopción de configuración. El valor predeterminado en mi sistema (según la página de manual) es:

  1. [correo electrónico protegido]
  2. [correo electrónico protegido]
  3. [correo electrónico protegido]
  4. [correo electrónico protegido]
  5. [correo electrónico protegido]
  6. [correo electrónico protegido]
  7. [correo electrónico protegido]
  8. [correo electrónico protegido]
  9. ecdsa-sha2-nistp256
  10. ecdsa-sha2-nistp384
  11. ecdsa-sha2-nistp521
  12. ssh-ed25519
  13. ssh-rsa
  14. ssh-dss

Para anular esto, haga algo como:

ssh -oHostKeyAlgorithms=ssh-ed25519 [email protected]

Respuesta2

Y lo que es más importante, ¿por qué OpenSSH decidió darle prioridad al algoritmo ECDSA?

ECDSA se introdujo en openssh con la versión 5.7, puede encontrar elNotas de la versión aquí. En particular, se afirma:

Implemente modos de criptografía de curva elíptica para el intercambio de claves (ECDH) y claves de host/usuario (ECDSA) según lo especificado en RFC5656. ECDH y ECDSA ofrecen un mejor rendimiento que DH y DSA simples con la misma longitud de clave simétrica equivalente, así como claves mucho más cortas.

.......

Se admiten las claves de usuario y host de certificado que utilizan los nuevos tipos de claves ECDSA: se puede certificar una clave ECDSA y una clave ECDSA puede actuar como una CA para firmar certificados.

ECDH en un campo curvo de 256 bits es el algoritmo de acuerdo de claves preferido cuando tanto el cliente como el servidor lo admiten. Se prefieren las claves de host ECDSA cuando se aprenden las claves de un host por primera vez, o se pueden aprender usando ssh-keyscan(1).

También,RFC 5656estados:

Muchas estimaciones consideran que 2^80-2^90 operaciones están más allá de lo factible, por lo que sugerirían el uso de curvas elípticas de al menos 160-180 bits. Las curvas REQUERIDAS en este documento son curvas de 256, 384 y 521 bits; Las implementaciones NO DEBEN utilizar curvas menores de 160 bits.

información relacionada