¿Cuáles son las diferencias entre las claves RSA, DSA y ECDSA que usa ssh?

6

En mi directorio /etc/ssh/ , puedo ver tres que tengo tres tipos diferentes de claves ssh:

-rw------- 1 root root    607 Oct  4 22:43 ssh_host_dsa_key
-rw-r--r-- 1 root root    623 Oct  4 22:43 ssh_host_dsa_key.pub
-rw------- 1 root root    241 Oct  4 22:43 ssh_host_ecdsa_key
-rw-r--r-- 1 root root    194 Oct  4 22:43 ssh_host_ecdsa_key.pub
-rw------- 1 root root   1602 Oct  4 22:43 ssh_host_rsa_key
-rw-r--r-- 1 root root    378 Oct  4 22:43 ssh_host_rsa_key.pub

¿Cuáles son las diferencias entre las claves RSA, DSA y ECDSA de ssh, y necesito las tres? Por favor explique la diferencia entre ellos y cómo usarlos.

    
pregunta Chaminda Bandara 02.02.2018 - 08:23
fuente

1 respuesta

6

¿Para qué son estos archivos?

Estas son sus claves de host que identifican de forma exclusiva a su host. Cuando se inicie OpenSSH por primera vez, generará estos pares de teclas. Cuando un cliente SSH se conecta a su servidor, anunciará que quiere autenticar el host utilizando un algoritmo particular. Como se admiten varios, OpenSSH simplemente genera uno de cada tipo. Esto permite que su servidor se identifique con varios tipos de huellas digitales.

Tomado de la página de manual de OpenSSH, ssh(1) :

When connecting to a server for the first time, a fingerprint of the server's
public key is presented to the user (unless the option StrictHostKeyChecking
has been disabled). Fingerprints can be determined using ssh-keygen(1):

    $ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key

If the fingerprint is already known, it can be matched and the key can be
accepted or rejected. If only legacy (MD5) fingerprints for the server are
available, the ssh-keygen(1) -E option may be used to downgrade the fingerprint
algorithm to match. 

Los archivos que terminan en .pub no son confidenciales. Se transmiten a cualquier cliente que intente una conexión. Los archivos sin esa extensión son las claves privadas. Si se divulgan, cualquier persona podrá suplantar su servidor SSH a cualquier cliente. Las claves privadas se utilizan para demostrar al cliente que las claves públicas que se transmiten son, de hecho, propiedad del servidor.

Al conectarse a un servidor SSH, tienen lugar una serie de eventos:

  • El cliente SSH se conecta al servidor y anuncia su algoritmo preferido.
  • El servidor envía la clave pública deseada al cliente, si es compatible.
  • El cliente calcula la huella digital de la clave pública.
  • Para la primera conexión, la huella digital se guarda en known_hosts .
  • Para conexiones posteriores, la huella digital se compara con la guardada.

En la primera conexión, la huella digital se muestra al usuario y se le pide al usuario que acepte la huella digital. Esto se conoce como TOFU , o Trust-On-First-Use. En las conexiones posteriores, la huella digital se verifica de forma silenciosa y automática. Si hay una discrepancia, el cliente SSH se negará a conectarse y avisará al usuario de que se está produciendo un ataque MITM. Este comportamiento garantiza que todas las conexiones futuras sean genuinas siempre que la primera conexión sea genuina. Un ataque MITM, o el servidor SSH que cambia sus claves de host por cualquier motivo, invalidará esto y requerirá una nueva autenticación.

¿Qué archivos necesitas?

Usted no necesita los tres y puede eliminar cualquiera de ellos, pero un cliente SSH solo podrá verificar la huella digital de su servidor si tiene una huella digital almacenada en el archivo known_hosts . Como mínimo, las claves RSA deben mantenerse. No todos los clientes admiten ECDSA, y (EC) DSA tiene algunos problemas de seguridad y generalmente ya no se recomienda. Sin embargo, no hay inconveniente en mantenerlos a todos. Un resumen rápido de los algoritmos comúnmente disponibles desde una perspectiva de seguridad:

  • RSA está bien considerado y se admite en todas partes. Se considera bastante seguro. Los tamaños de clave comunes llegan hasta 4096 bits y tan bajos como 1024. El tamaño de la clave es ajustable. Debería elegir RSA .
  • DSA ya no es de uso común, ya que aleatoriedad deficiente cuando genera una firma puede filtrar la clave privada. En el pasado, se garantizaba que funcionara en todas partes según RFC 4251 , pero ya no es así. La DSA se ha estandarizado como de solo 1024 bits (en FIPS 186-2, aunque FIPS 186-3 ha aumentado ese límite). OpenSSH 7.0 y más reciente en realidad deshabilitar este algoritmo.
  • ECDSA es más reciente y se basa en DSA. Tiene las mismas debilidades como DSA , pero generalmente se piensa que es más seguro, incluso en tamaños de clave más pequeños. Utiliza las curvas NIST (P256).
  • Ed25519 , si bien no es uno de los que mencionaste, está disponible en las instalaciones más recientes de OpenSSH. Es similar a ECDSA pero utiliza una curva superior , y no tiene las mismas debilidades cuando se utilizan RNG débiles como DSA / ECDSA. Generalmente se considera que es el más fuerte matemáticamente.
respondido por el forest 02.02.2018 - 14:52
fuente

Lea otras preguntas en las etiquetas