La seguridad de los datos a medida que pasan a través de Internet suele requerir su protección de dos maneras:
-
Confidencialidad - asegurando que nadie excepto los destinatarios deseados pueden leer los datos
-
Integrity - asegurando que nadie pueda modificar o alterar los datos en tránsito
La confidencialidad se proporciona mediante Symmetric Encryption y la integridad se proporciona mediante un Código de autenticación de mensaje (MAC) .
Tanto Symmetric Encryption como MAC's requieren que ambas partes tengan las teclas idénticas y secretas (una "clave" en este sentido es simplemente un número, convertido a binario).
Entonces, el problema es ¿Cómo ambas partes establecen las claves idénticas y secretas en Internet? (o cualquier otro medio inseguro). Esto se conoce como " el problema de intercambio de claves ".
Una de las soluciones para este problema es el algoritmo Diffie-Hellman.
Diffie-Hellman permite a dos partes establecer un secreto compartido en un medio inseguro . O, para decirlo de una manera más sencilla ...
Imagina que tú y tu amigo estaban parados en una habitación llena de gente, rodeados de personas de dudosa apariencia. Supongamos que usted y su amigo necesitaban acordar un número idéntico, pero no quieren que nadie más en la sala sepa qué número es ese. Diffie-Hellman le permitiría a usted y a su amigo intercambiar inteligentemente algunos números, y a partir de esos números calculan otro número que es idéntico. Y aunque todos en la sala escucharon los números intercambiados, no tienen forma de determinar el número final al que llegaron usted y su amigo.
Podemos ver un ejemplo de esto ocurriendo en la imagen de abajo. Alice y Bob usarán el intercambio de claves Diffie-Hellman para establecer un secreto compartido.
Cualquierpersonaque"escuche" en la conversación solo "escuchará" los números que se intercambiaron en el medio: 13
, 6
, 2
, 9
. No hay una manera consistente de combinar estos cuatro números para alcanzar el secreto compartido final: 3
sin conocer uno de los valores de Alicia o de Bob's Private ( 5
o 4
) que nunca fueron compartidos.
Eso es la belleza de Diffie-Hellman.
Los números utilizados en el ejemplo anterior son pequeños para mantener las matemáticas simples. En realidad, los números utilizados en los intercambios modernos de Diffie-Hellman tienen (o deberían ser) como mínimo 2048 bits de longitud, lo que requeriría aproximadamente 617 dígitos para escribir !!
Después de finalizar el intercambio de claves Diffie-Hellman, ambas partes ahora poseen un valor idéntico, conocido solo por cada parte.
Este valor se convierte en el "punto de inicio" a partir del cual se pueden generar claves adicionales.
Anteriormente, mencionamos que el cifrado simétrico y los códigos de autenticación de mensajes requieren una clave secreta. Bueno, tome su DH Shared Secret y combínelo con algunos otros valores y ahora tiene las claves de cifrado y MAC que necesita.
El beneficio adicional es que combinar valores para crear claves es fácil ... Puede hacerse tantas veces como sea necesario.
De hecho, muchos protocolos de seguridad (SSL / TLS, IPsec, etc.) generan un conjunto de claves para asegurar el tráfico en cada dirección : un total de cuatro claves (MAC + cifrado en una dirección , MAC + cifrado en la otra dirección). Las cuatro claves generadas a partir del mismo valor inicial inicial, derivadas de Diffie-Hellman.