Tema 11
Diffie-Hellman resolvió uno de los problemas más elegantes y fundamentales de la criptografía moderna: permitir que dos partes establezcan un secreto compartido sin tener que transmitir ese secreto directamente, incluso si el canal de comunicación puede ser observado por un atacante.
La criptografía simétrica es muy eficiente, pero su talón de Aquiles es el intercambio inicial de la clave secreta. Si dos partes quieren comunicarse de forma segura y aún no comparten un secreto, necesitan algún mecanismo para generarlo o acordarlo sin revelarlo durante el proceso.
Diffie-Hellman, presentado por Whitfield Diffie y Martin Hellman en 1976, introdujo justamente esa solución. Fue un punto de inflexión porque mostró que era posible construir un secreto compartido sobre un canal inseguro sin transmitir jamás ese secreto en forma directa.
Diffie-Hellman no fue diseñado originalmente para cifrar mensajes ni para firmar documentos. Su propósito principal es otro: permitir que dos partes acuerden una clave compartida que luego podrá usarse en criptografía simétrica.
Eso significa que su rol habitual es servir de etapa previa dentro de un protocolo más grande. Una vez obtenido el secreto compartido, se puede derivar de él material de clave para cifrado, autenticación u otros fines.
La intuición de Diffie-Hellman es sorprendente: dos partes realizan operaciones públicas visibles para todos, pero gracias a ciertas propiedades matemáticas cada una puede llegar al mismo resultado secreto sin que un observador externo pueda reconstruirlo con facilidad.
Lo importante no es que los datos intercambiados sean secretos, sino que conocerlos no alcance para calcular el valor compartido final dentro de recursos realistas.
El esquema clásico de Diffie-Hellman trabaja con aritmética modular. Se elige un número primo grande p y un generador o base g. Estos valores suelen ser públicos.
Cada participante elige luego un secreto privado y calcula una potencia modular pública derivada de ese secreto. Lo notable es que, al combinar la propia información privada con la información pública del otro, ambos llegan al mismo resultado.
El intercambio clásico puede resumirse así:
Ambos obtienen el mismo secreto compartido S, aunque nunca lo transmitieron por la red.
La razón matemática es que:
Ba mod p = (gb)a mod p = gab mod p
Y de forma análoga:
Ab mod p = (ga)b mod p = gab mod p
Ambos caminos conducen al mismo resultado final, aunque cada parte usó su propio secreto privado y la información pública de la otra.
Un observador puede conocer perfectamente p, g, A y B. El desafío es que, aun con toda esa información, deducir el secreto compartido no debería ser práctico.
La seguridad se asocia con la dificultad de resolver el problema del logaritmo discreto o problemas relacionados dentro del grupo elegido. Es decir, dado g, p y ga mod p, recuperar a debe ser computacionalmente difícil.
Así como RSA se apoya en la dificultad de factorizar, Diffie-Hellman se vincula con la dificultad del logaritmo discreto. Calcular una exponenciación modular es fácil con las herramientas adecuadas. Invertirla para recuperar el exponente privado es, en cambio, mucho más difícil.
Esta asimetría es la base del esquema. Si el logaritmo discreto se volviera fácil en el grupo utilizado, la seguridad del intercambio se derrumbaría.
Aquí aparece una lección crítica: Diffie-Hellman puede establecer un secreto compartido, pero no garantiza por sí solo con quién se está compartiendo ese secreto. Es decir, resuelve confidencialidad futura, pero no identidad.
Si no se combina con mecanismos de autenticación, puede ser vulnerable a ataques de intermediario.
En un ataque de intermediario, un atacante se coloca entre Alice y Bob y realiza dos intercambios Diffie-Hellman separados: uno con Alice y otro con Bob. Cada extremo cree estar negociando con el otro, pero en realidad negocia con el atacante.
Como Diffie-Hellman clásico no incluye autenticación intrínseca, el atacante puede establecer dos secretos distintos y reenviar mensajes entre ambos lados, leyéndolos o modificándolos si el protocolo no incorpora verificaciones adicionales.
Para que el esquema sea útil en protocolos reales, suele combinarse con autenticación mediante certificados, firmas digitales o claves previamente conocidas. Así, las partes no solo generan un secreto, sino que también verifican que el intercambio proviene del actor esperado.
En HTTPS, por ejemplo, el servidor no se limita a ejecutar Diffie-Hellman. También presenta credenciales y demuestra identidad mediante mecanismos criptográficos adicionales.
En Diffie-Hellman clásico, los parámetros públicos como p y g deben elegirse cuidadosamente. No cualquier grupo modular ofrece el mismo nivel de seguridad. Un grupo mal elegido o demasiado pequeño puede facilitar ataques especializados.
Por eso en práctica se usan grupos estandarizados o parámetros generados bajo criterios rigurosos.
Como en otros algoritmos, el tamaño importa. Un grupo demasiado pequeño reduce el costo de ataques y puede dejar el intercambio expuesto. A medida que mejora la capacidad de cómputo, es necesario revisar el tamaño mínimo recomendable para mantener seguridad suficiente.
Elegir tamaños inseguros convierte a Diffie-Hellman en una defensa aparente pero no real.
En muchos protocolos modernos se prefiere usar variantes efímeras de Diffie-Hellman, donde los secretos privados se generan de nuevo para cada sesión. Esto mejora la seguridad porque evita reutilizar el mismo material criptográfico en muchas conexiones.
Además, esta estrategia habilita una propiedad muy valiosa: el secreto perfecto hacia adelante.
Forward secrecy significa que, aunque en el futuro se comprometa una clave privada de autenticación de largo plazo, las sesiones pasadas no puedan reconstruirse fácilmente porque usaron secretos efímeros distintos.
Esto es extremadamente valioso en protocolos modernos. Sin forward secrecy, la captura masiva de tráfico cifrado podría volverse legible más adelante si una clave principal se filtra.
Un punto sutil pero importante es que Diffie-Hellman no transmite una clave secreta existente. Lo que hace es permitir que ambas partes lleguen independientemente al mismo resultado secreto sin enviarlo nunca.
Esto lo distingue de otros mecanismos donde una clave sí es transportada cifrada desde un extremo hacia otro.
Diffie-Hellman y sus variantes aparecen en múltiples protocolos reales:
Su función suele ser la misma: construir material de clave compartido que luego alimentará cifrado simétrico y autenticación.
La idea de Diffie-Hellman no está atada exclusivamente al mundo modular clásico. Existe también una versión sobre curvas elípticas, conocida como ECDH, que ofrece seguridad comparable con claves más pequeñas y gran eficiencia práctica.
Esa variante será especialmente importante cuando entremos en criptografía de curva elíptica.
Diffie-Hellman fue una innovación decisiva porque mostró que dos partes podían acordar un secreto sin haber compartido antes una clave y sin enviarla nunca en forma explícita. Esa idea se volvió una de las bases operativas de la seguridad en internet.
En el próximo tema estudiaremos la criptografía de curva elíptica, que retoma varias ideas de clave pública e intercambio de secretos, pero con una estructura matemática distinta y muy eficiente.