¿Cuál es la diferencia entre DH y DHE?

18

He estado leyendo SSL y TLS a prueba de balas

Diffie Hellman es un mecanismo de intercambio de claves, en el que cada servidor y cliente comparten secretos, es decir, g ^ x y g ^ y, respectivamente, entre sí, donde g es el generador de algún grupo. Ellos calculan el secreto S = (g ^ y) ^ x y (g ^ x) ^ y respectivamente. Tenga en cuenta que un atacante en el medio no puede obtener el valor de S de g ^ x y g ^ y, ya que un logaritmo discreto es un problema difícil. Pero, un atacante activo puede enmascarar y engañar al servidor y al cliente.

AhoraenRSA_DH,elvalorqueelservidorenvíaalcliente,esdecir,g^xsefijaysealmacenaenelcertificado.Porlotanto,elmensaje"ServerKeyExchange" no se envía. Ahora, el cliente envía su valor g ^ y en el mensaje "ClientKeyExchange" y esto se cifra con el algoritmo de criptografía de clave pública RSA cuyo servidor de certificados ya ha enviado el mensaje "Certificado".

En RSA_DHE, el mensaje "ServerKeyExchange" tiene lugar donde el servidor envía g ^ x al cliente.

Ahora mi pregunta es ¿cuál es la diferencia entre los dos? Dado que el secreto del maestro maestro se calcula a partir del valor (g ^ x) ^ y, por lo tanto, incluso en RSA_DH, si el cliente envía diferentes valores de g ^ y en cada sesión, entonces (g ^ x) el valor de y será diferente. (Creo que incluso si él todavía no sostiene mi argumento) Por lo tanto, logrará el secreto hacia adelante como en RSA_DHE. Y el pobre atacante no podrá obtener el secreto de premaster incluso después de obtener el valor de g ^ y comprometiendo la clave privada del servidor. Por lo tanto, en ambos casos, no podrá calcular el secreto del premaster. Entonces, ¿por qué se dice que Ephemeral one (RSA_DHE) logra un secreto hacia adelante y otro no?

    
pregunta prakharjain 11.04.2016 - 17:10
fuente

2 respuestas

16

Diffie-Hellman es un algoritmo asimétrico, con una clave pública y una clave privada.

En un conjunto de cifrado "DH_RSA", el par de claves "permanentes" del servidor es un par de claves DH. La clave pública está en el certificado del servidor. Ese certificado, como cualquier otro certificado, ha sido firmado por una CA, y esa CA usa un par de claves RSA (eso es lo que significa 'RSA' en "DH_RSA").

En un conjunto de cifrado "DHE_RSA", el par de claves permanentes del servidor tiene el tipo RSA; la clave pública RSA está en el certificado del servidor (el conjunto de cifrado no dice nada sobre el tipo de clave utilizada por la CA emisora, pero generalmente también es RSA). Cuando un cliente se conecta, el servidor genera un par de claves DH transitorias y envía la clave pública al cliente como un mensaje ServerKeyExchange ; el servidor firma ese mensaje con su clave privada RSA permanente.

Reenviar secreto es una propiedad definida en relación con el robo posterior de secretos del servidor. Las suites de cifrado "DHE_RSA" brindan secreto hacia adelante porque el secreto de intercambio de clave real (la clave privada DH) es transitorio, por lo que el servidor no lo guarda; si el servidor no guarda esa clave en su disco, Entonces debería ser inmune a los robos posteriores. A la inversa, "DH_RSA" implica que la clave privada DH está almacenada en algún lugar del disco duro del servidor, y si esa clave es robada, la sesión grabada anterior se puede descifrar.

Uno debe tener en cuenta que algunos servidores mantendrán sus pares de claves DH durante algún tiempo, generalmente en la memoria RAM; no hacen un nuevo par de claves DH para cada cliente. Este comportamiento tiene algunos beneficios de rendimiento pero debilita ligeramente el secreto a futuro, por definición. Esto realmente depende del modelo que utilice para definir el "robo ulterior": ¿está hablando de recuperar un disco duro antiguo en un contenedor de basura o un malware que inspecciona los contenidos de RAM?

    
respondido por el Thomas Pornin 11.04.2016 - 17:46
fuente
2
  

Pero no pude entender por qué RSA_DH simple no admite el secreto hacia adelante.

Digamos que alice es el cliente y Bob es el servidor y usa los nombres de las variables de su diagrama.

En non emphreal dh b forma parte del certificado, lo que significa que B es un secreto a largo plazo. Eva graba la sesión incluyendo el valor de a.

Algún tiempo después, Eve se apodera de B, tal vez hackeó el servidor, quizás llamó a sus amigos de la policía y obligó al administrador del servidor a entregarlo. Eva puede calcular una B y, por tanto, calcular el secreto de la sesión y descifrar la sesión.

Con empreal dh B es solo un secreto a corto plazo. Por lo tanto, es mucho menos probable que el compromiso posterior de Eve con el servidor lo revele.

    
respondido por el Peter Green 13.04.2016 - 14:18
fuente

Lea otras preguntas en las etiquetas