Además de lograr PFS con DHE, queremos que se revele lo menos posible cuando se revela la clave privada del servidor. Entonces, ¿para qué se utiliza RSA en los conjuntos de cifrado DHE_RSA? ¿Qué firma el servidor durante el intercambio de claves?
Además de lograr PFS con DHE, queremos que se revele lo menos posible cuando se revela la clave privada del servidor. Entonces, ¿para qué se utiliza RSA en los conjuntos de cifrado DHE_RSA? ¿Qué firma el servidor durante el intercambio de claves?
En una suite de cifrado como "TLS_DHE_RSA_WITH_AES_256_CBC_MD5" RSA se usa para autenticación , mientras que AES (256 bits) en modo CBC se usa para encriptación .
Se necesita autenticación ya que Diffie-Hellman es vulnerable a los ataques Man-in-the-Middle. Un atacante podría intercambiar fácilmente el parámetro Diffie-Hellmann y, por lo tanto, podría interceptar la comunicación más tarde. El parámetro Diffie-Hellman firmado así, asegura que se detectará un ataque Man-in-the-Middle. Hay una variante del intercambio de claves Diffie-Hellman llamada anónimo Diffie-Hellman (DH_anon) que no usa autenticación.
El servidor firma el parámetro Diffie-Hellman (a través de RSA) del cual se deriva el llamado secreto pre-maestro. Desde el secreto pre-maestro, el secreto maestro se calcula más tarde, a partir del cual a su vez se genera la clave AES simétrica de 256 bits. Recuerde que el parámetro Diffie-Hellman que se intercambia es público, por lo que no están cifrados con RSA. Simplemente se firman.
Tomé la mayor parte de esto de aquí que es una buena Resumen de todo el tema. Desafortunadamente solo está en alemán, pero tal vez las cifras todavía te ayuden. Puede encontrar información más detallada en RFC 5246 .
En lugar de decir es necesaria la autenticación, ya que Diffie-Hellman es vulnerable a los ataques Man-in-the-Middle , que sin duda es una afirmación válida, otra forma de ver esto es comenzar con TLS_RSA_WITH_AES_256_CBC_SHA256 que todavía está en uso hoy en día, vea el problema y cómo lo soluciona el DHE. Aquí, la criptografía de clave pública RSA se utiliza para 2 cosas:
a) for client to authenticate the server and
b) key exchange, where the client generates
a session key and encrypts it [1] with the server's public key.
Surge un problema porque RSA se usa tanto para la autenticación como para el intercambio de claves. Si un adversario almacena las sesiones cifradas hasta que de alguna manera adquieren la clave privada RSA, ahora pueden descifrar la clave de sesión cifrada y descifrar las comunicaciones. La solución es usar RSA solo para autenticación y usar Diffie-Hellman 2 para el intercambio de claves. Una vez que el cliente autentica el servidor mediante RSA, intercambian las claves públicas de Diffie-Hellman y computan de forma independiente la clave de la sesión. Cualquier persona en el medio puede ver las claves públicas de Diffie Hellman pero no puede calcular la clave de sesión ya que no existe una solución eficiente para el problema del logaritmo discreto. Dado que la sesión es de corta duración y cada sesión utiliza diferentes pares de claves pública-privada DH, y para distinguirla del certificado de clave pública-DH cuando se usa un par de clave pública / privada fija, el término DHE se usa donde E significa efímero. Ahora, incluso si un adversario adquiere la clave privada RSA, no puede descifrar las comunicaciones cifradas almacenadas previamente porque no pueden computar la clave de la sesión --- esto es el forward en PFS . ¡Tal vez deberían haberlo llamado Perfect Prior Security !
Respecto a " Qué firma el servidor durante el intercambio de claves ", entre otras cosas, el servidor firma los valores diffie-hellman (que forman parte del mensaje de Intercambio de claves del servidor) con su clave privada .
Usted mencionó " queremos que se revele lo menos posible cuando se revele la clave privada del servidor ". Pero tenga en cuenta que si un adversario adquiere la clave privada RSA, puede dañar bastante las nuevas comunicaciones . Es posible que puedan hacerse pasar por el servidor y engañar al cliente para que proporcione las credenciales de inicio de sesión. El adversario también puede actuar como un hombre en el medio donde existe una conexión entre el cliente y el adversario y otro desde el adversario al servidor original. En ambos casos, no importa si se usa DHE o no.
Footnotes:
Lea otras preguntas en las etiquetas tls diffie-hellman rsa cipher-selection