¿Cómo utiliza SSH tanto RSA como Diffie-Hellman?

15

El protocolo SSH 2 le permite usar las claves DSA, ECDSA, ED25519 y RSA al establecer una conexión segura a un servidor. (Tenga en cuenta para esta pregunta que solo estoy familiarizado con el procedimiento y las capacidades de RSA y no puedo hablar por los otros métodos)

Lo que me confunde, es según man sshd , Diffie-Hellman se usa para el intercambio de claves:

  

Para el protocolo 2, la seguridad de reenvío se proporciona a través de un acuerdo de clave Diffie-Hellman. Este acuerdo clave resulta en una clave de sesión compartida. El resto de la sesión se cifra mediante un cifrado simétrico ...

Esto lleva a dos preguntas:

  1. ¿Dónde entra en juego la clave RSA si no se usa durante el intercambio de claves?
  2. ¿Por qué se requiere un segundo protocolo (en este caso, Diffie-Hellman)? ¿Por qué no utilizar la clave pública RSA del cliente para cifrar la clave de sesión en el servidor y enviarla al cliente?
pregunta IQAndreas 26.12.2014 - 17:33
fuente

1 respuesta

25
  1. La clave de host se utiliza para firmar los parámetros de Diffie-Hellman. Se se utiliza durante el intercambio de claves; RSA es un algoritmo de firma, así como un algoritmo de cifrado. Por lo que puedo decir, la clave del cliente (en authorized_keys ) no se usa en absoluto en el intercambio de claves; solo se usa después de para intercambiar la clave para firmar un mensaje en particular y probar que el cliente tiene la clave privada (un lado de los parámetros DH que se firman es suficiente para evitar un MITM, porque el atacante no puede hacerse pasar por ambos cliente y servidor; es más fácil hacer que el servidor siempre tenga que tener un par de llaves que el cliente siempre tenga que tener un par de llaves).

  2. La forma en que SSH usa DH es como un algoritmo efímero : los parámetros DH se generan para sesiones individuales y se destruyen tan pronto como ya no son necesarios. Lo único para lo que se usa el par de llaves duradero es la autenticación. Esto le da a secretismo hacia adelante : el robo de la clave privada no le permite descifrar las sesiones anteriores.

    Si RSA se usó para cifrar la clave de sesión, entonces alguien que grabó esa sesión, compra el servidor SSH años más tarde después de que haya sido retirado del servicio, y obtenga la clave privada de su disco duro. para descifrar la clave de sesión, y usarla para leer toda la comunicación. Si se utiliza RSA para firmar los parámetros DH, entonces la única forma de explotar una clave privada robada es mediante un ataque de hombre en el medio, y el operador del servidor puede frustrar esa clave. y contándole a todos sus usuarios las claves cambiadas. Con el intercambio de claves efímero, no se almacena nada necesario para descifrar una sesión grabada por más tiempo de lo necesario.

    Esta es también una configuración que se usa cada vez más a menudo para las sesiones TLS (allí, donde los certificados tienen fechas de caducidad, una clave privada ni siquiera tiene que estrictamente mantenerse en secreto después de su caducidad porque no debería No es posible usarlo en un ataque Man-in-the-middle; lo es, porque los usuarios ignorarán los certificados caducados, pero pueden ver por qué el cifrado efímero es bueno).

respondido por el cpast 26.12.2014 - 20:47
fuente

Lea otras preguntas en las etiquetas