Su descripción es un poco confusa y parece ser incorrecta. En particular, vemos a Alice informando aquí la mitad de Diffie-Hellman gKA y luego procedemos a enviar ... su secreto Diffie-Hellman < em> K A para Bob, que no es en absoluto lo que debe hacer.
Llano Diffie-Hellman funciona de la siguiente manera:
- Alice genera (al azar) su secreto KA y calcula gKA .
- Bob genera (al azar) su secreto KB y calcula gKB .
- Alice envía gKA a Bob.
- Bob envía gKB a Alice.
- Alice calcula (gKB)KA , usándola secreto KA y el valor enviado por Bob.
- Bob calcula (gKA)KB , usando su secreto KB y el valor enviado por Alice.
Por la magia de las matemáticas, Alice y Bob terminan con el mismo valor, que es el secreto compartido que luego usan para cualquier criptografía que necesiten para comunicarse entre sí.
Para la variante autenticada , se realizan los mismos cálculos; pero Alice y Bob también poseen pares de claves asimétricas utilizables para firmas digitales , y las usan: Alice firma todo lo que envía a Bob , y Bob verifica esa firma (usando la clave pública de Alice). De manera similar, Bob firma lo que envía a Alice, y Alice verifica esa firma (usando la clave pública de Bob).
Tenga en cuenta que a ningún punto, Alicia le envía KA (él "DH secreto") a Bob en cualquier forma. Bob tampoco envía KB a Alice. Y no hay cifrado en ninguna parte . Puede encontrar muchos tutoriales que pretenden explicar las firmas digitales en términos de cifrado (generalmente como "cifrado con la clave privada"). Estas explicaciones son remanentes de épocas más antiguas (a finales de los años 70, de hecho, en la era del Disco original ) y, de hecho, son erróneas y muy confusas. Así que no pienses en esos términos. Las firmas son firmas, el cifrado es cifrado.
DH autenticado es lo que se hace, por ejemplo, en SSL / TLS con las suites de cifrado "DHE". También es lo que sucede en SSH (versión 2).
Hay dos razones principales para usar un Diffie-Hellman "efímero" ("efímero" porque Alice y Bob generan sus secretos DH KA y K B sobre la marcha):
-
Los pares de llaves "permanentes" que son propiedad de Alice y Bob pueden no ser aptos para otra cosa que no sean firmas. Una fuente de confusión (nuevamente) es que no hay un algoritmo un llamado RSA; hay al menos dos, uno para el cifrado y otro para las firmas, y parecen poder usar el mismo tipo de pares de claves. Sin embargo, incluso si se puede utilizar un par de claves RSA para el cifrado y las firmas, hay buenas razones para no hacerlo. También hay otros algoritmos de firma (por ejemplo, ECDSA) cuyas claves no se pueden usar (al menos no fácilmente) para el cifrado.
-
El uso de secretos efímeros de DH proporciona Secreto hacia adelante , lo cual es bueno. Es decir, las claves permanentes de Alice y Bob deben almacenarse en algún lugar; para que pudieran, potencialmente, ser robados después. Con el simple intercambio de claves basado en RSA (no DH, Alice encripta una clave de sesión aleatoria con la clave pública de Bob y Bob la desencripta), el ladrón de claves posteriores podría usarla para desencriptar una sesión pasada. Con el DH y las firmas, este problema no ocurre; incluso si las claves privadas de la firma de Alice y Bob se revelan después, sus comunicaciones anteriores no se pueden descifrar. Todo el concepto de secreto hacia adelante gira en torno a la idea de que los "secretos DH", que se generan sobre la marcha, se guardan solo en la RAM y se destruyen inmediatamente después de completar el intercambio de claves DH, son inmunes al robo posterior.