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.