¿Por qué es necesario el intercambio de claves?

46

Digamos que "Alice" y "Bob" quieren comunicarse entre sí a través de una red insegura.

Al utilizar el intercambio de claves Diffie-Hellman, pueden obtener la misma clave simétrica por fin. Sin embargo, según tengo entendido, no tienen que obtener la misma clave simétrica , ya que solo pueden usar clave asimétrica sin intercambio de claves.

Con el algoritmo RSA, Alice y Bob solo pueden compartir sus claves públicas ( public_a , public_b ) y mantener sus claves privadas ( private_a , private_b ). Alice solo puede enviar a Bob los mensajes cifrados por public_b , y Bob puede descifrarlos mediante private_b . Aún pueden comunicarse a través de una red insegura, sin el intercambio de claves Diffie-Hellman en absoluto .

Sé que podría estar equivocado, pero no estoy seguro de en qué estaba equivocado. ¿Alguien tiene ideas sobre por qué y cuándo es necesario el intercambio de claves Diffie-Hellman (o cualquier intercambio de claves)? ¿Es adecuado para la situación que mencioné anteriormente?

    
pregunta Firegun 17.11.2015 - 08:25
fuente

4 respuestas

55

Si el atacante puede capturar datos de forma pasiva y luego obtiene acceso a la clave privada de los certificados (es decir, robo, ataque de corazón o aplicación de la ley), el atacante podría decodificar todos los datos capturados previamente si la clave de cifrado solo se deriva desde el propio certificado.

El intercambio de claves DH permite crear una clave independiente del certificado. De esta manera, el conocimiento del certificado por sí solo no es suficiente para decodificar los datos capturados previamente. Esto se llama secreto hacia adelante. Consulte Wikipedia para obtener más información.

Además de avanzar en secreto con DH, existen otras razones para usar la criptografía simétrica en lugar de simplemente usar las claves privadas RSA. Por lo tanto, incluso si no usa DH para el intercambio de claves, TLS creará una clave simétrica, que luego se deriva del certificado. Para obtener más información sobre por qué no es una buena idea usar la clave privada directamente para cifrar, consulte ¿Por qué PGP utiliza cifrado simétrico y RSA? .

    
respondido por el Steffen Ullrich 17.11.2015 - 08:33
fuente
17

Se necesitan muchos pasos para comprender los motivos y trataré de guiarte a través de cada uno.

1) Usa el cifrado correctamente ...

  

Con el algoritmo RSA, Alice y Bob solo pueden compartir sus claves públicas   (public_a, public_b) y mantenga sus claves privadas (private_a,   private_b). Alice puede simplemente enviar a Bob los mensajes cifrados.   por private_a, y Bob puede descifrarlo por public_a. Todavía pueden   Comunicarse a través de una red insegura, sin la clave Diffie-Hellman   intercambio en absoluto.

Esa parte es simplemente errónea. Lo que está haciendo en esta parte es firmar, no cifrar. Dado que public_key_a es público, sus mensajes no se cifrarán en absoluto. En lugar de hacer eso, A debería cifrar los mensajes con public_key_b y luego B puede descifrarlos con private_key_b. Dado que private_key_b solo es conocido por B, A sabe que solo B puede descifrarlo.

La firma digital prueba que un mensaje proviene de una persona en particular. El cifrado demuestra que solo usted, el titular de la clave y la persona que cifró el mensaje, el remitente del mensaje, conoce el mensaje. Debe tener cifrado y firma al utilizar el cifrado asimétrico. Cifrado para proteger la confidencialidad del mensaje y la firma para demostrar que usted es el que envió este mensaje.

Pero, aún hay más ... Por ejemplo, aún necesitas protegerte contra los ataques de repetición.

2) Bob normalmente no tiene una clave pública

Digamos que Alice (A) es el servidor y Bob (B) es el cliente. Normalmente el cliente no tiene una clave pública. Por ejemplo, ¿conoces una clave pública? La respuesta es muy probable que NO. Por lo tanto, Bob puede recibir un mensaje de Alice y verificar que realmente provienen de Alice, pero Alice no puede estar segura de que todo lo que recibe de Bob realmente provenga de Bob.

Ese problema es una de las causas principales por las que agregamos un protocolo de intercambio de claves como Diffie-Hellman.

3) RSA está limitado a un bloque.

Hay una técnica utilizada para cifrar mensajes largos que se llama encadenamiento de bloques de cifrado . Lamentablemente, esta técnica no se puede utilizar con RSA. No es que sea totalmente imposible, sino que nadie sabe si es realmente seguro si lo hacemos. Por lo tanto, limita el cifrado RSA a un bloque. Por otro lado, los algoritmos de cifrado simétricos como AES funcionan como un encanto con el encadenamiento de bloques y es la razón por la que los usamos.

Más información: enlace

4) Diffie-Hellman es un protocolo de intercambio de claves

Diffie-Hellman es solo una forma de "crear y compartir" una clave que luego se puede usar para el cifrado simétrico. los La fortaleza de Diffie-Hellman es que toda la conversación para crear esta clave puede ocurrir en texto plano y la clave. todavía sería privado.

Nota : Diffie-Hellman no resuelve el problema de los ataques MitM porque no puede autenticar a las partes que se comunican entre sí. En cambio, este problema se resuelve con la firma digital .

5) Ephemeral Diffie-Hellman proporciona el secreto perfecto hacia adelante

Ephemeral Diffie-Hellman es solo un nombre elegante que dice que estás generando un nuevo par de claves Diffie-Hellman en cada sesión y no las guardas. Como nunca los almacenas, un atacante nunca podrá recuperarlos.

Vea esta muy buena respuesta para obtener más detalles: enlace

6) Efímero Diffie-Hellman te protege contra ataques de repetición

Un efecto secundario muy bueno de usar Ephemeral Diffie-Hellman es que también te protege contra ataques de repetición. Dado que el servidor y el cliente están eligiendo una nueva clave de DH privada al azar en cada sesión, no puede volver a reproducir el mensaje de otra sesión para hacerse pasar por el servidor o el cliente.

Conclusión

Este es un resumen muy breve de cómo funciona TLS y todas las partes necesarias para proporcionar una conexión segura. Sin el cifrado simétrico no puede cifrar mensajes largos y sin el cifrado asimétrico no puede compartir la clave de cifrado y proporcionar un perfecto secreto hacia adelante.

    
respondido por el Gudradain 17.11.2015 - 17:19
fuente
2

Supones que Alice y Bob pueden intercambiar claves públicas de manera confiable a través de una red no segura.

Sin un protocolo de intercambio de claves, Alice y Bob piensan que esto está sucediendo: (A = clave pública de Alice, B = clave pública de Bob)

Alice  ---------- A --------------> Bob


Alice  <----------- B ------------- Bob

cuando esto es lo que realmente sucede (M = clave pública de Mallory)

Alice  ----- A ------> Mallory --------- M ------> Bob

Alice  <---- M ------- Mallory <-------- B ------- Bob

Bob y Alice ahora creen que están cifrando mensajes entre sí; En realidad, solo se trata de cifrar los mensajes para Mallory, que descifra, lee y vuelve a cifrar los mensajes utilizando los destinatarios reales.

    
respondido por el chepner 17.11.2015 - 23:51
fuente
1

El uso de RSA para todos los mensajes no es deseable porque el algoritmo es computacionalmente costoso. El uso de RSA para negociar una clave simétrica le permite enviar más mensajes de forma mucho más económica en términos del uso de la CPU.

    
respondido por el Lexelby 17.11.2015 - 16:39
fuente

Lea otras preguntas en las etiquetas