Qué es el intercambio de claves Diffie-Hellman y cómo funciona

El intercambio de claves Diffie-Hellman fue uno de los desarrollos más importantes en la criptografía de clave pública y todavía se implementa con frecuencia en una variedad de diferentes protocolos de seguridad de la actualidad.

Permite a dos partes que no se han reunido previamente establecer de forma segura una clave que pueden utilizar para proteger sus comunicaciones. En este artículo, explicaremos qué es el intercambio de claves Diffie-Hellman, para qué se usa, cómo funciona paso a paso, sus diferentes variaciones, así como las consideraciones de seguridad que deben tenerse en cuenta para implementarlo de manera segura.

¿Qué es el intercambio de claves Diffie-Hellman?

El intercambio de claves Diffie-Hellman fue el primer método ampliamente utilizado para desarrollar e intercambiar claves de forma segura a través de un canal inseguro.

Puede que no parezca tan emocionante o innovador en los términos anteriores, así que demos un ejemplo que explique por qué el intercambio de claves Diffie-Hellman fue un hito tan importante en el mundo de la criptografía y por qué todavía se usa con tanta frecuencia en la actualidad.

Digamos que eres un espía ultrasecreto y necesitas enviar información importante a tu sede. ¿Cómo evitarías que tus enemigos capten el mensaje?

La solución más común sería cifrar el mensaje con un código. La forma más sencilla es organizar de antemano cualquier tipo de código y clave que planees utilizar, o hacerlo a través de un canal de comunicación seguro.

Digamos que eres un espía particularmente malo, y tu y tu oficina central decidís usar un cifrado de cambio débil para codificar tus mensajes. En este código, cada «a» se convierte en «b», cada «b» se convierte en «c», cada «c» se convierte en «d», y así sucesivamente, hasta que la «z» se convierte en una «a».

Bajo este cifrado de cambio, el mensaje «Vamos a cenar» se convierte en «Mfu’t hfu ejoofs». Afortunadamente, en nuestra situación hipotética, tus adversarios son tan incompetentes como tu y no pueden descifrar un código tan simple, lo que les impide acceder al contenido del mensaje.

Pero, ¿qué sucede si no puedes arreglar un código con tu destinatario de antemano?

Digamos que quieres comunicarte con un espía de una nación aliada que nunca has conocido antes. No tienes un canal seguro para hablar con ellos. Si no encriptas tu mensaje, cualquier adversario que lo intercepte podrá leer el contenido. Si lo encriptas sin decirle el código al aliado, el enemigo no podrá leerlo, pero tampoco el aliado.

Este problema fue uno de los mayores enigmas de la criptografía hasta la década de 1970.

¿Cómo puedes intercambiar información de forma segura con alguien si no has tenido la oportunidad de compartir la clave antes de tiempo?

El intercambio de claves Diffie-Hellman fue el primer mecanismo de uso público para resolver este problema. El algoritmo permite a aquellos que nunca se han conocido antes crear de forma segura una clave compartida, incluso a través de un canal inseguro que los adversarios pueden estar monitorizando.

Historia

El intercambio de claves Diffie-Hellman tiene sus raíces en la década de 1970. Si bien el campo de la criptografía se había desarrollado significativamente a principios del siglo XX, estos avances se centraron principalmente en el área de la criptografía de clave simétrica.

No fue hasta 1976 que los algoritmos de clave pública surgieron en la esfera pública, cuando Whitfield Diffie y Martin Hellman publicaron su artículo, New Directions in Cryptography. La colaboración describió los mecanismos detrás de un nuevo sistema, que se conocería como el intercambio de claves Diffie-Hellman .

El trabajo se inspiró en parte en desarrollos anteriores realizados por Ralph Merkle. Los llamados rompecabezas de Merkle involucran a una parte que crea y envía una serie de rompecabezas criptográficos a la otra. Estos acertijos requerirían una cantidad moderada de recursos computacionales para resolverlos.

El destinatario elegiría al azar un rompecabezas para resolver y luego haría el esfuerzo necesario para completarlo. Una vez que se resuelve el rompecabezas, se revela al destinatario un identificador y una clave de sesión. Luego, el destinatario transmite el identificador al remitente original, lo que le permite saber qué acertijo se ha resuelto.

Dado que el remitente original creó los acertijos, el identificador les permite saber qué clave de sesión descubrió el destinatario, y las dos partes pueden usar esta clave para comunicarse de manera más segura. Si un atacante está escuchando la interacción, tendrá acceso a todos los acertijos, así como al identificador que el destinatario transmite al remitente original.

El identificador no le dice al atacante qué clave de sesión se está utilizando, por lo que el mejor enfoque para descifrar la información es resolver todos los acertijos para descubrir la clave de sesión correcta. Dado que el atacante tendrá que resolver la mitad de los acertijos en promedio, termina siendo mucho más difícil para él descubrir la clave que para el destinatario.

Este enfoque proporciona más seguridad, pero está lejos de ser una solución perfecta. El intercambio de claves Diffie-Hellman tomó algunas de estas ideas y las hizo más complejas para crear un método seguro de criptografía de clave pública.

Aunque ha llegado a conocerse como el intercambio de claves Diffie-Hellman, Martin Hellman ha propuesto que el algoritmo se denomine intercambio de claves Diffie-Hellman-Merkle en su lugar, para reflejar el trabajo que Ralph Merkle hizo hacia la criptografía de clave pública.

Se pensó públicamente que Merkle, Hellman y Diffie fueron las primeras personas en desarrollar la criptografía de clave pública hasta 1997, cuando el gobierno británico desclasificó el trabajo realizado a principios de la década de 1970 por James Ellis, Clifford Cox y Malcolm Williamson.

Resulta que al trío se le ocurrió el primer esquema de cifrado de clave pública entre 1969 y 1973, pero su trabajo estuvo clasificado durante dos décadas. Se llevó a cabo en la Sede de Comunicaciones del Gobierno (GCHQ), una agencia de inteligencia del Reino Unido.

Su descubrimiento fue en realidad el algoritmo RSA, por lo que Diffie, Hellman y Merkle siguieron siendo los primeros en desarrollar el intercambio de claves Diffie-Hellman, pero ya no fueron los primeros inventores de la criptografía de clave pública.

¿Dónde se utiliza el intercambio de claves Diffie-Hellman?

El objetivo principal del intercambio de claves Diffie-Hellman es desarrollar de forma segura secretos compartidos que se pueden utilizar para derivar claves. Estas claves se pueden utilizar con algoritmos de clave simétrica para transmitir información de forma protegida. Los algoritmos simétricos tienden a usarse para cifrar la mayor parte de los datos porque son más eficientes que los algoritmos de clave pública.

Técnicamente, el intercambio de claves Diffie-Hellman se puede utilizar para establecer claves públicas y privadas. Sin embargo, en la práctica, se tiende a utilizar RSA en su lugar. Esto se debe a que el algoritmo RSA también es capaz de firmar certificados de clave pública, mientras que el intercambio de claves Diffie-Hellman no lo es.

El algoritmo ElGamal, que se usó mucho en PGP, se basa en el intercambio de claves Diffie-Hellman, por lo que cualquier protocolo que lo use está implementando efectivamente una especie de Diffie-Hellman.

Como uno de los métodos más comunes para distribuir claves de forma segura, el intercambio de claves Diffie-Hellman se implementa con frecuencia en protocolos de seguridad como TLS, IPsec, SSH, PGP y muchos otros. Esto lo convierte en una parte integral de nuestras comunicaciones seguras.

Como parte de estos protocolos, el intercambio de claves Diffie-Hellman se utiliza a menudo para ayudar a proteger tu conexión a un sitio web, para acceder de forma remota a otra computadora y para enviar correos electrónicos cifrados.

¿Cómo funciona?

El intercambio de claves Diffie-Hellman es complejo y puede ser difícil entender cómo funciona. Utiliza números muy grandes y muchas matemáticas, algo que muchos de nosotros todavía tememos de esas largas y aburridas lecciones de la escuela secundaria.

Para hacer las cosas un poco más fáciles de entender, comenzaremos explicando el intercambio de claves Diffie-Hellman con una analogía. Una vez que tengas una idea general de cómo funciona, pasaremos a una descripción más técnica de los procesos subyacentes.

La mejor analogía para el esquema Diffie-Hellman es pensar en dos personas mezclando pintura. Usemos el estándar de criptografía y digamos que sus nombres son Alice y Bob. Ambos acuerdan un color aleatorio para empezar. Digamos que se envían un mensaje y deciden que el amarillo es su color común.

Establecen su propio color. No le dicen a la otra parte su elección. Digamos que Alice elige el rojo, mientras que Bob elige un azul ligeramente verdoso.

El siguiente paso es que tanto Alice como Bob mezclen su color secreto (rojo para Alice, azul verdoso para Bob) con el amarillo que acordaron mutuamente. Alice termina con una mezcla anaranjada, mientras que el resultado de Bob es un azul más profundo.

Una vez que han terminado de mezclar, envían el resultado a la otra parte. Alice recibe el azul más profundo, mientras que Bob recibe la pintura de color naranja.

Una vez que han recibido el resultado mixto de su pareja, le agregan su color secreto. Alice toma el azul más profundo y agrega su pintura roja secreta, mientras que Bob agrega su azul verdoso secreto a la mezcla de naranja que acaba de recibir.

¿El resultado? Ambos salen con el mismo color, que en este caso es un marrón repugnante. Puede que no sea el tipo de color con el que te gustaría pintar tu sala de estar, pero de todos modos es un color compartido. Este color compartido se conoce como el secreto común.

La parte crítica del intercambio de claves Diffie-Hellman es que ambas partes terminan con el mismo resultado, sin necesidad de enviar la totalidad del secreto común a través del canal de comunicación. Elegir un color común, sus propios colores secretos, intercambiar la mezcla y luego agregar su propio color una vez más, les da a ambas partes una forma de llegar al mismo secreto común sin tener que enviarlo todo.

Si un atacante está escuchando el intercambio, todo lo que puede acceder es el color amarillo común con el que comienzan Alice y Bob, así como los colores mezclados que se intercambian. Dado que esto se hace realmente con cantidades enormes en lugar de pintura, estas piezas de información no son suficientes para que el ataque pueda discernir los colores secretos iniciales o el secreto común (técnicamente es posible calcular el secreto común a partir de esta información, pero en una implementación segura del intercambio de claves Diffie-Hellman, llevaría una cantidad inviable de tiempo y recursos computacionales para hacerlo).

Esta estructura del intercambio de claves Diffie-Hellman es lo que lo hace tan útil. Permite que las dos partes se comuniquen a través de una conexión potencialmente peligrosa y aún así encontrar un secreto compartido que pueden usar para crear claves de cifrado para sus comunicaciones futuras. No importa si algún atacante está escuchando, porque el secreto compartido completo nunca se envía a través de la conexión.

Detalles técnicos

Es hora de algunas matemáticas …

No te preocupes, lo tomaremos con calma e intentaremos que todo el proceso sea lo más fácil de entender posible. Sigue una premisa similar a la analogía que se muestra arriba, pero en lugar de mezclar y enviar colores, el esquema Diffie-Hellman en realidad hace cálculos basados ​​en números primos excepcionalmente grandes y luego los envía.

Para garantizar la seguridad, se recomienda que el número primo (p) tenga al menos 2048 bits de longitud, que es el equivalente binario de un número decimal de aproximadamente este tamaño:

41536875762873659842593824756984376582763487912837582736592873684273684728938572983759283475934875938475928475928739587249587298739587298357928759827958375298763482736857298435793487958279385792873954877239759283759247859386704598679238473782673526735476235687348693869456734568276594980638490248758096039479027945982730187439759284620950293759287049502938058920983945872094860298491283750294801937109248019358103799581093750193850791395710937597019385089103951073058710393701934701938091803984091804 981093801985013984019835091835019830910791803958103951903951809358109385019840193580193840198340918093851098309180019

Para evitar que la cabeza de alguien explote, repasaremos esta explicación con números mucho más pequeños. Ten en cuenta que el intercambio de claves Diffie-Hellman sería inseguro si usara números tan pequeños como los de nuestro ejemplo. Solo estamos usando números tan pequeños para demostrar el concepto de una manera más simple.

En la forma más básica del intercambio de claves Diffie-Hellman, Alice y Bob comienzan decidiendo mutuamente dos números para comenzar, en oposición a la pintura común única en el ejemplo anterior. Estos son el módulo (p) y la base (g).

En el uso práctico, el módulo (p) es un número primo muy grande, mientras que la base (g) es relativamente pequeña para simplificar los cálculos . La base (g) se deriva de un grupo cíclico (G) que normalmente se genera mucho antes de que tengan lugar los otros pasos.

Para nuestro ejemplo, digamos que el módulo (p) es 17, mientras que la base (g) es 4.

Una vez que han decidido mutuamente estos números, Alice decide un número secreto (a) para ella, mientras que Bob elige su propio número secreto  (b). Digamos que eligen:

a = 3

b = 6

Alice luego realiza el siguiente cálculo para darle el número que le enviará a Bob:

A = g a mod p

En el cálculo anterior, mod significa una operación de módulo. Estos son esencialmente cálculos para calcular el resto después de dividir el lado izquierdo por el derecho. Como ejemplo:

15 mod 4 = 3

Si comprendes cómo funcionan las operaciones de módulo, puedes realizarlas tu mismo en los siguientes cálculos; de lo contrario, puedes usar una calculadora en línea.

Pongamos nuestros números en la fórmula:

A = 4 3 mod 17

A = 64 mod 17

A = 13

Cuando hacemos lo mismo con Bob, obtenemos:

B = 4 6 mod 17

B = 4096 mod 17

B = 16

Alice luego envía su resultado (A) a Bob, mientras que Bob envía su figura (B) a Alice. Alice calcula entonces el secreto compartido (s) utilizando el número que recibió de Bob (B) y su número secreto, utilizando la siguiente fórmula:

s = B a mod p

s = 16 3 mod 17

s = 4096 mod 17

s = 16

Bob luego realiza lo que es esencialmente el mismo cálculo, pero con el número que Alice le envió (A), así como su propio número secreto (b):

s = A b mod p

s = 13 6 mod 17

s = 4,826,809 mod 17

s = 16

Como puedes ver, ambas partes terminaron con el mismo resultado, 16 . Este es el secreto compartido, que solo Alice y Bob conocen. Luego, pueden usar esto para configurar una clave para el cifrado simétrico, lo que les permite enviar información de manera segura entre ellos de una manera a la que solo ellos pueden acceder.

Ten en cuenta que aunque B y s son iguales en el ejemplo anterior, esto es solo una coincidencia basada en los números pequeños que se eligieron para esta ilustración. Normalmente, estos valores no serían los mismos en una implementación real del intercambio de claves Diffie-Hellman.

A pesar de que gran parte de los datos anteriores se envía a través del canal en texto plano ( P, G, A y B ) y puede ser leído por los atacantes potenciales, el secreto (compartido s ) nunca se transmite. No sería práctico para un atacante para calcular el secreto compartido ( s ) o cualquiera de los números secretos ( una y b ) a partir de la información que se envía en texto sin cifrar.

Por supuesto, esto supone que el intercambio de claves Diffie-Hellman se implementa correctamente y se utilizan números suficientemente grandes. Siempre que se cumplan estas disposiciones, el intercambio de claves Diffie-Hellman se considera una forma segura de establecer un secreto compartido que se puede utilizar para asegurar comunicaciones futuras.

Establecer una clave compartida entre varias partes

El intercambio de claves Diffie-Hellman también se puede utilizar para configurar una clave compartida con un mayor número de participantes. Funciona de la misma manera, excepto que se necesitan más rondas de cálculos para que cada parte agregue su número secreto y termine con el mismo secreto compartido.

Al igual que en la versión bipartita del intercambio de claves Diffie-Hellman, algunas partes de la información se envían a través de canales inseguros, pero no lo suficiente para que un atacante pueda calcular el secreto compartido.

¿Por qué es seguro el intercambio de claves Diffie-Hellman?

A nivel matemático, el intercambio de claves Diffie-Hellman se basa en funciones unidireccionales como base de su seguridad. Estos son cálculos que son simples de hacer en una dirección, pero mucho más difíciles de calcular a la inversa.

Más específicamente, se basa en el problema de Diffie-Hellman, que asume que bajo los parámetros correctos, no es factible calcular g ab a partir de los valores separados de g , g a y g b . Actualmente no existe una manera conocida públicamente de encontrar fácilmente g ab de los otros valores, por lo que el intercambio de claves Diffie-Hellman se considera segura, a pesar del hecho de que los atacantes pueden interceptar los valores de p , g , A y B.

Autenticación e intercambio de claves Diffie-Hellman

En el mundo real, el intercambio de claves Diffie-Hellman rara vez se utiliza por sí solo. La razón principal detrás de esto es que no proporciona autenticación, lo que deja a los usuarios vulnerables a los ataques de intermediarios .

Estos ataques pueden tener lugar cuando el intercambio de claves Diffie-Hellman se implementa por sí mismo, porque no tiene forma de verificar si la otra parte en una conexión es realmente quien dice ser . Sin ninguna forma de autenticación, los usuarios pueden conectarse con atacantes cuando creen que se están comunicando con una parte de confianza.

Por esta razón, el intercambio de claves Diffie-Hellman generalmente se implementa junto con algunos medios de autenticación. Esto a menudo implica el uso de certificados digitales y un algoritmo de clave pública, como RSA, para verificar la identidad de cada parte.

Variaciones del intercambio de claves Diffie-Hellman

El intercambio de claves Diffie-Hellman se puede implementar de varias formas diferentes, y también ha proporcionado la base para varios otros algoritmos. Algunas de estas implementaciones proporcionan autorización, mientras que otras tienen varias características criptográficas, como el perfecto secreto hacia adelante.

Curva elíptica Diffie-Hellman

Curva elíptica Diffie-Hellman aprovecha la estructura algebraica de las curvas elípticas para permitir que sus implementaciones logren un nivel similar de seguridad con un tamaño de clave más pequeño. Una clave de curva elíptica de 224 bits proporciona el mismo nivel de seguridad que una clave RSA de 2048 bits. Esto puede hacer que los intercambios sean más eficientes y reducir los requisitos de almacenamiento.

Aparte de la longitud de clave más pequeña y el hecho de que se basa en las propiedades de las curvas elípticas, Diffie-Hellman de curva elíptica opera de manera similar al intercambio de claves Diffie-Hellman estándar.

TLS

TLS, que es un protocolo que se utiliza para proteger gran parte de Internet, puede utilizar el intercambio Diffie-Hellman de tres formas diferentes: anónima, estática y efímera. En la práctica, solo se debe implementar Diffie-Hellman efímero, porque las otras opciones tienen problemas de seguridad.

  • Diffie-Hellman anónimo: esta versión del intercambio de claves Diffie-Hellman no utiliza ninguna autenticación, lo que la deja vulnerable a los ataques de intermediarios. No debe usarse ni implementarse.
  • Static Diffie-Hellman: Diffie-Hellman estático utiliza certificados para autenticar el servidor. No autentica al cliente de forma predeterminada, ni proporciona secreto hacia adelante.
  • Diffie-Hellman efímero: se considera la implementación más segura porque proporciona un secreto directo perfecto. Generalmente se combina con un algoritmo como DSA o RSA para autenticar a una o ambas partes en la conexión. Efímero Diffie-Hellman utiliza diferentes pares de claves cada vez que se ejecuta el protocolo. Esto le da a la conexión un perfecto secreto hacia adelante, porque incluso si una clave se ve comprometida en el futuro, no se puede usar para descifrar todos los mensajes pasados.

ElGamal

ElGamal es un algoritmo de clave pública construido sobre el intercambio de claves Diffie-Hellman. Al igual que Diffie-Hellman, no contiene disposiciones para la autenticación por sí solo y generalmente se combina con otros mecanismos para este propósito.

ElGamal se usó principalmente en PGP, GNU Privacy Guard y otros sistemas porque su principal rival, RSA, fue patentado. La patente de RSA expiró en 2000, lo que permitió que se implementara libremente después de esa fecha. Desde entonces, ElGamal no se ha implementado con tanta frecuencia.

STS

El protocolo de estación a estación (STS) también se basa en el intercambio de claves Diffie-Hellman. Es otro esquema de acuerdo clave, sin embargo, brinda protección contra ataques man-in-the-middle, así como también un perfecto secreto hacia adelante.

Requiere que ambas partes en la conexión ya tengan un par de claves, que se utiliza para autenticar a cada lado. Si las partes aún no se conocen entre sí, se pueden usar certificados para validar las identidades de ambas partes.

El intercambio de claves Diffie-Hellman y RSA

Como comentamos anteriormente, el intercambio de claves Diffie-Hellman a menudo se implementa junto con RSA u otros algoritmos para proporcionar autenticación para la conexión. Si estás familiarizado con RSA , es posible que te preguntes por qué alguien te molestarías en utilizar también el intercambio de claves Diffie-Hellman, ya que RSA permite que las partes que nunca se han conocido se comuniquen de forma segura.

RSA permite a sus usuarios cifrar mensajes con la clave pública de su corresponsal, de modo que solo puedan ser descifrados por la clave privada correspondiente. Sin embargo, en la práctica, RSA no se utiliza para cifrar la totalidad de las comunicaciones; esto sería demasiado ineficaz .

En cambio, RSA a menudo solo se usa como un medio para autenticar a ambas partes. Lo hace con los certificados digitales de cada parte, que habrán sido verificados por una autoridad de certificación para demostrar que el propietario de un certificado es realmente quien dice ser y que la clave pública del certificado realmente le pertenece.

Para la autenticación mutua, cada parte firmará un mensaje con su clave privada y luego lo enviará a su socio de comunicación. Luego, cada destinatario puede verificar la identidad de la otra parte al comparar los mensajes firmados con la clave pública en el certificado digital de su socio de comunicación.

Ahora que ambas partes se han autenticado, es técnicamente posible seguir usando RSA para enviar mensajes cifrados entre ellos de forma segura, sin embargo, terminaría siendo demasiado ineficiente.

Para sortear esta ineficiencia, muchos protocolos de seguridad utilizan un algoritmo como el intercambio de claves Diffie-Hellman para llegar a un secreto común que se puede utilizar para establecer una clave simétrica compartida. Esta clave simétrica se utiliza luego en un algoritmo de clave simétrica, como AES , para cifrar los datos que las dos partes pretenden enviar de forma segura entre sí.

Puede parecer un proceso complejo y complicado, pero termina siendo mucho más rápido y menos exigente con los recursos en comparación con el uso de un algoritmo de clave pública para todo el intercambio. Esto se debe a que el cifrado de clave simétrica es mucho más eficiente que el cifrado de clave pública.

Además de las ineficiencias que acabamos de mencionar, existen otras desventajas que se derivarían del uso exclusivo de RSA. RSA necesita relleno para hacerlo seguro, por lo que sería necesario implementar un algoritmo adicional junto con él para hacerlo seguro.

RSA tampoco proporciona un secreto directo perfecto, que es otra desventaja en comparación con el intercambio de claves efímero Diffie-Hellman. En conjunto, estas razones explican por qué, en muchas situaciones, es mejor aplicar RSA solo junto con el intercambio de claves Diffie-Hellman.

Alternativamente, el intercambio de claves Diffie-Hellman se puede combinar con un algoritmo como el Estándar de firma digital (DSS) para proporcionar autenticación, intercambio de claves, confidencialidad y verificar la integridad de los datos. En tal situación, no es necesario RSA para asegurar la conexión.

Problemas de seguridad del intercambio de claves Diffie-Hellman

La seguridad del intercambio de claves Diffie-Hellman depende de cómo se implemente, así como de los números que se elijan para ello. Como dijimos anteriormente, no tiene medios para autenticar a la otra parte por sí misma, pero en la práctica se utilizan otros mecanismos para garantizar que la otra parte en una conexión no sea un impostor.

Parámetros para la selección de números

Si una implementación del mundo real del intercambio de claves Diffie-Hellman usara números tan pequeños como los de nuestro ejemplo, haría que el proceso de intercambio fuera trivial para un atacante. Pero no es solo el tamaño de los números lo que importa, los números también deben ser lo suficientemente aleatorios. Si un generador de números aleatorios produce una salida predecible, puede socavar por completo la seguridad del intercambio de claves Diffie-Hellman.

El número p debe tener una longitud de 2048 bits para garantizar la seguridad. La base, g, puede ser un número relativamente pequeño como 2, pero debe provenir de un orden de G que tenga un factor primo grande.

El ataque de Logjam

El intercambio de claves Diffie-Hellman se diseñó sobre la base de que el problema del logaritmo discreto era difícil de resolver. El mecanismo conocido públicamente más eficaz para encontrar la solución es el algoritmo de tamiz de campo numérico.

Las capacidades de este algoritmo se tuvieron en cuenta cuando se diseñó el intercambio de claves Diffie-Hellman. En 1992, se sabía que para un grupo dado, G, tres de los cuatro pasos involucrados en el algoritmo podrían potencialmente calcularse de antemano. Si se guardara este progreso, el paso final podría calcularse en un tiempo comparativamente corto.

Esto no fue demasiado preocupante hasta que se descubrió que una parte significativa del tráfico de Internet utiliza los mismos grupos que son de 1024 bits o menos. En 2015, un equipo académico ejecutó los cálculos para el primo de 512 bits más común utilizado por el intercambio de claves Diffie-Hellman en TLS.

También pudieron degradar el 80% de los servidores TLS que admitían DHE-EXPORT, de modo que aceptaran un intercambio de claves Diffie-Hellman de grado de exportación de 512 bits para la conexión. Esto significa que cada uno de estos servidores es vulnerable a un ataque de un adversario con recursos suficientes.

Los investigadores continuaron extrapolando sus resultados, estimando que un estado-nación podría romper un primo de 1024 bits. Al romper el número primo de 1024 bits más utilizado, el equipo académico estimó que un adversario podría monitorizar el 18% del millón de sitios web HTTPS más populares.

Continuaron diciendo que un segundo principal permitiría al adversario descifrar las conexiones del 66% de los servidores VPN y del 26% de los servidores SSH. Más adelante en el informe, los académicos sugirieron que es posible que la NSA ya tenga estas capacidades.

A pesar de esta vulnerabilidad, el intercambio de claves Diffie-Hellman aún puede ser seguro si se implementa correctamente. Mientras se use una clave de 2048 bits, el ataque Logjam no funcionará. Los navegadores actualizados también están a salvo de este ataque.

¿Es seguro el intercambio de claves Diffie-Hellman?

Si bien el intercambio de claves Diffie-Hellman puede parecer complejo, es una parte fundamental del intercambio seguro de datos en línea. Siempre que se implemente junto con un método de autenticación apropiado y los números se hayan seleccionado correctamente, no se considera vulnerable a ataques.

El intercambio de claves Diffie-Hellman fue un método innovador para ayudar a dos partes desconocidas a comunicarse de manera segura cuando se desarrolló en la década de 1970. Si bien ahora implementamos versiones más nuevas con claves más grandes para protegernos contra la tecnología moderna, el protocolo en sí parece que seguirá siendo seguro hasta la llegada de la computación cuántica y los ataques avanzados que lo acompañarán.

¿Cómo afectará la computación cuántica al intercambio de claves Diffie-Hellman?

La computación cuántica es una rama emergente de la computación que continúa logrando avances. Los detalles de cómo funcionan las computadoras cuánticas son complicados y están fuera del alcance de este artículo. Sin embargo, la tecnología presenta problemas importantes en el campo de la criptografía.

La explicación simple es que se espera que las computadoras cuánticas puedan resolver ciertos problemas que actualmente no son factibles para las computadoras clásicas. Esto abrirá muchas puertas y traerá nuevas posibilidades. Las computadoras cuánticas suficientemente potentes podrán ejecutar algoritmos cuánticos que pueden resolver de manera más efectiva varios problemas matemáticos.

Si bien esto puede sonar genial, la seguridad de muchos de nuestros mecanismos criptográficos actuales depende de que estos problemas sean difíciles de resolver. Si estos problemas matemáticos se vuelven más fáciles de calcular, también será más fácil romper estos mecanismos criptográficos.

Uno de estos algoritmos cuánticos es el algoritmo de Grover. Cuando las computadoras cuánticas se vuelvan lo suficientemente potentes, acelerarán los ataques contra cifrados de clave simétrica como AES. Sin embargo, se puede mitigar fácilmente duplicando el tamaño de la clave.

La mayor preocupación es cómo afectará el algoritmo de Shor a la criptografía de clave pública. Esto se debe a que la seguridad de los algoritmos de clave pública más comunes se basa en la inmensa dificultad de resolver uno de estos tres cálculos:

  • El problema del logaritmo discreto
  • El problema de la factorización de enteros
  • El problema del logaritmo discreto de curva elíptica

Lo importante es que una vez lleguen las computadoras cuánticas suficientemente potentes, será mucho más práctico resolver estos problemas con el algoritmo de Shor. A medida que estos problemas se vuelvan más fáciles de resolver, los sistemas criptográficos que dependen de ellos se volverán menos seguros.

La criptografía de clave pública juega un papel fundamental en la protección de nuestras comunicaciones, razón por la cual la computación cuántica presenta un gran desafío para los criptógrafos.

En el caso del intercambio de claves Diffie-Hellman, su seguridad se basa en la impracticabilidad de poder resolver el problema del logaritmo discreto con la tecnología y los recursos actuales. Sin embargo, las amenazas del algoritmo de Shor se acercan más con cada avance en la computación cuántica.

Es difícil llegar a una línea de tiempo aproximada de cuándo la computación cuántica amenazará seriamente el intercambio de claves Diffie-Hellman porque algunos investigadores son mucho más optimistas que otros. A pesar de esto, se están desarrollando reemplazos para el intercambio de claves Diffie-Hellman y otros algoritmos de clave pública para asegurarnos de que estemos preparados para cuando llegue el momento.

Posibles reemplazos para el intercambio de claves Diffie-Hellman

El peligro de las computadoras cuánticas no es inmediato, por lo que la comunidad criptográfica aún debe decidirse por alternativas específicas al intercambio de claves Diffie-Hellman. Sin embargo, se están siguiendo numerosos caminos. Éstas incluyen:

  • Criptografía basada en celosía
  • Criptografía multivariante
  • Criptografía de isogenia de curva elíptica

Todavía no sabemos exactamente cómo se verá el mundo post-cuántico para la criptografía, pero la comunidad de seguridad está trabajando activamente en los problemas y se mantiene al día con los avances en el mundo de la computación cuántica. Si bien habrá grandes cambios en el futuro, no es nada que la persona promedio deba temer; es probable que ni siquiera se dé cuenta cuando se produzcan cambios.