¿Cómo puede DH proporcionar un secreto conocido a dos partes a través de una conexión no cifrada sin que sea interceptada a través de MITM?

3

Sin usar par de llaves privadas y públicas, no entiendo cómo Diffie-Hellman puede generar una clave secreta entre dos partes en Internet sin pasar algo entre ellos que se pueda detectar. Hay un término para esto que viene de los Generales que envían mensajes a través de un territorio hostil. No entiendo las matemáticas o la lógica detrás de DH y simplemente no puedo ver cómo es posible. Algún día pasaré una o dos semanas revisando las matemáticas, pero hasta que pueda verificar, no puedo confiar. Además, ¿por qué usarlo cuando se pueden usar pares de claves privadas públicas para establecer una clave de sesión compartida con mucho menos riesgo?

Por otro lado, las masas incultas históricamente lanzan horcas de avance hacia el progreso. Explíquelo como si tuviera 5 años. ¿Cómo puede DH proporcionar un secreto conocido a dos partes sobre una conexión no cifrada sin que sea interceptada a través de MITM?

Se cambió el título de: "Cuando ya hay un par de llaves público-privado instalado, ¿por qué se usa Diffie-Hellman?"

    
pregunta rjt 31.07.2014 - 12:08
fuente

3 respuestas

6

Diffie-Hellman es un algoritmo de intercambio de claves . La pregunta buena que debe hacerse es: intercambiar una clave, sí, ¿pero con quién?

Desde el punto de vista de la red, usted "ve" a otras personas solo a través de los paquetes que le envían; y como todos pueden comprar el mismo tipo de PC, todos pueden enviar los mismos paquetes, excepto para que algunas personas / sistemas conozcan algunos valores que otras no. En criptografía, conocimiento es poder , lo que significa que eres lo que sabes. Si comienzas a intercambiar datos con Alice, sabes que estás hablando con Alice y no con Bob porque Alice puede enviarte un mensaje que podría haber sido calculado solo por alguien que conoce un valor determinado, y de alguna manera saber que hay alguien llamado "Alice" que conoce ese valor y otra persona llamada "Bob" que no.

Si, en su modelo, al menos no define que hay varios posibles interlocutores con conocimiento distinto, entonces la noción de "hombre en el medio" ni siquiera tiene sentido, porque todas las demás personas, En ese modelo, son idénticos. Si desea hablar sobre el ataque del hombre en el medio y cómo evitarlo, primero debe definir con quién quiere hablar, y eso implica especificar qué sabe ese sistema / persona, que el atacante no.

En pocas palabras: MitM es un caso especial de suplantación (una doble suplantación, incluso), donde un atacante asume la identidad de otra persona. Por lo tanto, necesita una noción de "identidad" antes de comenzar a discutir los ataques MitM.

Ahora suponga que ha definido una noción de identidad. P.ej. usted es un navegador web y está intentando acceder a una URL https://www.example.com/foobar.html . Entonces, la noción de identidad es "quien controla el servidor www.example.com , como está registrado en el DNS ".

Diffie-Hellman es un algoritmo de intercambio de claves. Esto significa que no incluye, per se, ningún tipo de autenticación. Esto no significa que DH sea inútil; solo que es poco probable que proporcione a solo la totalidad de la función de seguridad que desea obtener. En la práctica, varios algoritmos criptográficos se ensamblan en un protocolo como SSL / TLS .

De vuelta a nuestro ejemplo, Diffie-Hellman es de hecho ampliamente utilizado en SSL / TLS, con las suites de cifrado "DHE". Toda la torre de criptografía se ve así:

  • El servidor tiene un par de claves pública / privada aptos para firmas (RSA, DSA, ECDSA ...).
  • El servidor genera la mitad del intercambio de claves DH, luego lo firma (con su clave privada de firma) y lo envía al cliente.
  • El servidor también envía su clave pública de firma al cliente, como un certificado emitido por alguna CA.
  • El cliente valida el certificado (porque el cliente ya conoce y confía en la CA) y, por lo tanto, aprende la clave pública del servidor.
  • El cliente verifica que el certificado del servidor contenga el nombre del servidor esperado (aquí: www.example.com ).
  • El cliente verifica la firma en el medio DH enviado por el servidor, utilizando la clave pública del servidor.
  • El cliente calcula su propia mitad DH y la envía al servidor.
  • El cliente y el servidor completan el cálculo de DH y obtienen un secreto compartido, que luego se expande en claves simétricas para cifrar todos los datos.

La noción de identidad utilizada por el cliente es que el propietario del servidor no puede obtener certificados válidos de una CA de confianza a menos que controle efectivamente el dominio relevante. Por lo tanto, desde el punto de vista del cliente, el "servidor www.example.com genuino" es "quien conoce una clave privada correspondiente a una clave pública en un certificado de una CA confiable y que contiene el nombre www.example.com ". El conocimiento de la clave privada es lo que hace que el servidor sea "el correcto". La CA vincula esa clave (la clave pública, específicamente) al nombre DNS.

Lo que protege contra MitM aquí es que el hombre en el medio no conoce la clave privada (podría generar sus propias claves privadas, pero no coincidirían con la clave pública en el certificado). La firma es el mecanismo por el cual se promulga esta protección. Eso no es Diffie-Hellman que proporciona esa protección. Por otro lado, la firma no da como resultado un secreto compartido: ese es el trabajo de DH.

Resumen: desea obtener un secreto compartido con algún servidor específico, de modo que pueda cifrar gigabytes de datos que se enviarán a ese servidor. Este es un trabajo de dos partes: usted quiere un secreto compartido , pero también tiene que ser con algún servidor específico . DH hace la parte "secreto compartido". Necesitas algo más para la otra parte, por ejemplo, Algún algoritmo de firma. Esto es lo que sucede en SSL o SSH.

    
respondido por el Tom Leek 31.07.2014 - 19:54
fuente
5

Aquí está Diffie-Hellman para un estudiante: un niño de cinco años no entiende los logaritmos ;-)

DH utiliza dos ideas:

  • la exponentación es rápida (2 a la potencia 3 es igual a 8) pero el proceso inverso (un logaritmo exacto) requiere mucho tiempo. En realidad, tomamos números grandes, pero por el bien de la explicación, números pequeños aquí.
  • la exponentación es conmutativa, es decir, 2 a la potencia 3 a la potencia 4 es igual a 2 a la potencia 4 a la potencia 3

Di que queremos comunicarnos. Estamos de acuerdo con el número base A de que vamos a elevar a un cierto poder. Y eso no tiene que ser privado. Simplemente nos enviamos una a la otra.

Ahora elijo un número aleatorio grande para mi B. Usted elige, por separado, su propio número aleatorio grande, al que llamaremos su B. Y ambos elevamos este número acordado a esa gran potencia. Ahora, enviamos ese resultado intermedio el uno al otro. Y ahora tomo tu resultado intermedio y lo elevo a mi gran potencia. Tomas mi resultado intermedio y lo elevas a tu gran poder. Ambos terminamos con la misma respuesta.

Un MITM ve pasar a A y nuestros dos resultados intermedios, pero no puede hacer el proceso inverso en un tiempo razonable.

Él no puede entender cuáles son nuestros poderes que inventamos. Así que terminamos pudiendo elegir números aleatorios, usarlos para elevar un valor común a ese poder, intercambiar esos resultados, hacerlo de nuevo, y ambos terminamos con exactamente el mismo valor, que luego podemos usar como una clave.

En realidad, hay otros requisitos para A además de ser grande (por ejemplo, tiene que ser primordial).

Crédito : respuesta basada en la trascripción de Security Now Episode 34

    
respondido por el Jan Doggen 31.07.2014 - 12:36
fuente
2

Diffie-Hellman por sí solo no proporciona ninguna autenticación.

Es cierto que si dos partes acuerdan una clave con DH, las terceras partes que simplemente están olfateando el tráfico no pueden descubrir la clave secreta intercambiada.

Sin embargo, DH puede ser atacado por un MITM activo que crea dos intercambios clave con los mismos parámetros públicos. Uno desde el cliente al MITM y otro desde el MITM al servidor. El MITM engaña al cliente y al servidor en este caso para que piensen que están hablando entre ellos.

Cuando los servidores usan DH o su variante de curva elíptica, tienden a usarlo de manera efímera mientras la autenticación es proporcionada por RSA / (EC) DSA y la infraestructura de clave privada. (por lo general, los certificados X509) El motivo del DH efímero (EC) aquí es que proporciona confidencialidad hacia adelante, lo que significa que si la clave privada del servidor se roba en un punto en el futuro, las sesiones ocurridas en el pasado (y los cuales han sido registrados por una parte que olfatea) no pueden ser descifrados retrospectivamente.

EDITAR: Olvidé mencionar el uso de DH fijo. En este caso, los parámetros públicos, así como una clave que se deriva de la clave DH privada del servidor, están en el certificado. En este caso, la clave DH privada del servidor no se puede derivar de los parámetros públicos ni de la clave pública, y con eso el certificado proporciona autenticación. (El servidor es el único que conoce la clave privada).

Dicho esto, no he visto ningún certificado fijo de DH en la naturaleza. En la mayoría de los casos, se usa de manera efímera para mantener el secreto como se mencionó anteriormente.

    
respondido por el abaj 31.07.2014 - 13:41
fuente

Lea otras preguntas en las etiquetas