La analogía del envío de la caja no es del todo precisa en ningún algoritmo de clave pública / privada. Solo es tan bueno como es algo que funcionaría en el mundo físico. Con eso fuera del camino, vamos al intercambio de claves Diffie-Hellman.
Diffie Hellman en realidad no intercambia claves, intercambia información para generar las claves. Sin embargo, solo intercambia parte de esta información, el resto lo guarda cada usuario. Vamos a verlo, llamaremos a nuestros usuarios Alice y Bob;):
- Alicia y Bob acuerdan usar un número primo como módulo p, y una base que es una raíz de módulo primitiva de p que es g. Estas propiedades matemáticas deben ser válidas para el problema de logaritmo discreto en el que se basan las matemáticas.
-
Alicia y Bob eligen cada uno un entero que guardan para sí mismos, llamémoslos a y b, luego cada uno de ellos ejecuta el mismo cálculo en ese entero, primero calculan g a la potencia del número entero módulo p. Y se envían esto entre ellos.
ga mod p
g b mod p
-
Ahora aquí está el bit inteligente, ninguno de los dos puede descubrir qué es el entero secreto del resto, pero si toman lo que obtuvieron del otro y lo elevan a su propio entero y calculan el módulo p de eso, ambos obtienen el mismo número S:
(ga mod p)b mod p = gab mod p
(g b mod p)a mod p = gba mod p
4) El número compartido ahora se usa para obtener alguna clave de cifrado para obtener más información.
Sin saber uno de esos enteros secretos, un atacante no puede generar el mismo número y, por lo tanto, la misma clave. El algoritmo de Schors en una computadora cuántica puede resolver el problema del logaritmo discreto para recuperar esos enteros secretos de los datos que se intercambiaron, pero más allá de eso o haciendo que Alice o la máquina de Bob los envíen (en cuyo caso puede hacer que envíen la clave derivada). , o los mensajes sin cifrar enviados / recibidos en su lugar).
Sin embargo, si esa información no proviene realmente de la otra parte, sino del propio atacante, entonces sin otras comprobaciones (para eso están los certificados SSL / TLS) el atacante puede descifrar, volver a cifrar y transmitir los datos.