
[06/02/2022] Whitfield Diffie y Martin Hellman eran extraños en el campo de la criptografía cuando idearon un esquema hasta ahora desconocido: la capacidad de establecer comunicaciones seguras a través de canales públicos entre dos partes que no se conocen.
El algoritmo que presentaron en 1976, conocido como Diffie-Hellman, introdujo la noción general de lo que ahora se llama cifrado asimétrico o criptografía de clave pública.
Es imposible exagerar el impacto de largo plazo y alcance de este desarrollo. El algoritmo no solo sigue utilizándose hasta el día de hoy, sino que abrió todo un panorama de posibilidades en el que otros se han expandido. Pero, ¿qué es exactamente el algoritmo Diffie-Hellman y cómo encaja en el contexto de las comunicaciones en línea tal como funcionan actualmente?
Un terremoto criptográfico
Hasta la década de 1970, el desarrollo de las comunicaciones seguras implicaba cifrados simétricos cada vez más sofisticados, en los que se utiliza una clave para cifrar los mensajes y la misma para descifrarlos. Cuando Diffie y Hellman introdujeron por primera vez su idea de claves asimétricas, comenzaron su artículo con la promesa: "Hoy nos encontramos al borde de una revolución en la criptografía”. En ese momento lo decían en serio, y la historia les ha dado la razón.
La pregunta es, habiendo dos partes sin acuerdo previo, ¿cómo establecemos un canal seguro y verificamos la identidad? Como puede imaginar fácilmente, dicha capacidad es esencial para el funcionamiento básico de la entonces incipiente ARPANET, que pronto se convertiría en nuestra omnipresente Internet. Sin Diffie-Hellman, es difícil imaginar cómo sería Internet. De repente tendríamos que enviarnos una clave cifrada a través de FedEx cada vez que quisiéramos hacer una compra en línea.
La respuesta de Diffie-Hellman es que, mediante el uso de funciones unidireccionales, dos partes pueden llegar a un número secreto que ambos conocen, pero que ninguna de las partes que espía puede determinar. Este secreto se conoce como clave secreta compartida. Una vez establecida la clave secreta compartida, podemos pasar al cifrado simétrico tradicional para mayor velocidad.
La capacidad de establecer de forma segura una clave entre partes desconocidas fue un terremoto criptográfico. Veamos más a detalle cómo funciona.
Cómo funciona Diffie-Hellman: El problema
Primero, considere el proceso en teoría. En la Figura 1, vemos el diseño idealizado de las cosas: Alice y Bob quieren hablar entre ellos de forma segura, pero tienen que asumir que un actor malicioso, Eve, también tiene acceso al canal. (Por cierto, estos nombres convencionales que se ven en muchas discusiones sobre criptografía fueron introducidos por el mismo documento).
Figura 1. La configuración.
Entonces, la pregunta es, ¿Alice y Bob pueden hablar entre ellos de una manera que les permita frustrar a Eve, sin primero establecer una clave secreta que solo ellos conocen? Hay que recordar que una vez que Alice y Bob conocen la clave secreta, pero Eve no, se puede usar un cifrado para codificar y descifrar los datos.
La respuesta durante varios miles de años fue: no.
Cómo funciona Diffie-Hellman: La solución
Pero Whitfield Diffie, con la ayuda de Martin Hellman, se obsesionó con esta idea: ¿Qué pasaría si se pudiese encontrar una función matemática que permita a Alice y Bob calcular una clave que Eve no pueda descifrar, aunque Eve vea todo lo que se mueve entre Alice y Bob?
Esto se conseguiría intercambiando cierta información que está bien que el mundo vea, incluida la atacante Eve. Esta información se conoce como la clave pública. El uso de un componente público y un componente secreto es la razón por la que Diffie-Hellman se denomina cifrado asimétrico.
La matemática para lograr esto no es terriblemente compleja, pero tampoco es muy obvia. ¿Cómo Diffie lo consiguió? Bueno, reflexionó sobre la idea durante años hasta que un golpe de genialidad le dio la respuesta que se describe a continuación.
La primera parte del intercambio comienza con una función acordada de la forma G^a mod P. Esta fórmula es conocida por todas las partes.
Los comunicadores se ponen de acuerdo sobre el mismo número para completar G y P. P debe ser un número primo. Estos números suelen ser muy grandes (al menos 2048 bits o 617 dígitos). Cuanto mayor sea el número, más difícil será descifrar el intercambio mediante un ataque de fuerza bruta. En la práctica, estos números se seleccionan con un generador pseudoaleatorio.
Ilustremos esto con un ejemplo. Usaremos 11 como nuestra base G. Este número se conoce como el generador. Para el número primo P, usemos 13.
Entonces la función pública se convierte en 11^a mod 13. Es conocida por todos. Ahora puede ver la situación en la Figura 2.
Figura 2. La función pública.
¿Y de dónde viene la a? La respuesta es que la a es parte de la clave secreta. Alice y Bob, cada uno por separado, elige una clave secreta en privado y ejecuta la función. Luego los resultados se comparten, haciéndolos parte de la clave pública.
Digamos que Alice selecciona 5 y Bob elige 6 (nuevamente, estos serían números aleatorios más grandes en la vida real). Puede ver la nueva situación en la Figura 3.
Figura 3. La función con números secretos.
Eve no sabe qué números eligieron Alice y Bob.
Ahora Alice y Bob ejecutan sus respectivas funciones con sus números secretos. Alice llega a 7 (11^5 mod 13) y Bob llega a 12 (11^7 mod 13).
Ahora Alice y Bob comparten estos números entre ellos y (suponemos) también con la atacante, Eve. Esta escena se representa en la Figura 4.
Figura 4: Los números públicos.
Aunque Eve conoce la ecuación y los resultados, no puede descubrir fácilmente los números que faltan. Esta es la esencia de una función unidireccional: factible en una dirección, prácticamente imposible de invertir.
Por ejemplo, si Eve quiere encontrar el número oculto de Alice, deberá resolver 11^x mod 13 = 7. ¿Qué tan difícil es eso? Eche un vistazo aquí. El problema se reduce a resolver el logaritmo discreto, un problema conocido por ser difícil. Es mucho más difícil que la exponenciación que creó el número 7 (con enfoques matemáticos conocidos).
Llegar a una clave compartida
Aquí viene la parte mágica. Alice y Bob ejecutan una nueva función cada uno usando el resultado que obtuvieron del otro, junto con su propio número secreto y el módulo primo original, y llegan a un número secreto compartido común que Eve no puede determinar (nuevamente, sin resolver el logaritmo discreto de la ecuación).
En nuestro caso, como en la Figura 5, Alice ejecuta 12^5 mod 13 y Bob ejecuta 7^6 mod 13. Ambos obtienen 12.
Con esta clave privada a la mano, Alice y Bob son libres de negociar un intercambio de cifrado simétrico utilizando algo como el Estándar de cifrado avanzado, mientras que Eve puede trabajar en un ataque de fuerza bruta que cuesta alrededor de 100 millones de dólares por clave.
Tenga en cuenta que la mayoría de los sistemas modernos usan encriptación 2048, exponencialmente igual de fuerte. Una estimación para descifrar esto significa probar 2^2048 números. Cualquier calculadora le dirá que eso es grande.
Vulnerabilidades
Aunque Diffie-Hellman ha demostrado ser muy resistente a los ataques cuando se implementa correctamente (nada mal para un algoritmo concebido hace casi 50 años), hay un avance tecnológico que eventualmente podrá vencerlo: las computadoras cuánticas. Más allá de la fuerza bruta, de un gran avance en logaritmos discretos o computación cuántica, los usuarios de Diffie-Hellman podrían ser vulnerables a varios ataques que dependen de la explotación del entorno informático, conocidos como ataques de canal lateral.
Criptografía contradictoria
El algoritmo Diffie-Hellman fue un avance sorprendente en la criptografía que se enfrentó a la idea convencional de que las claves debían ser completamente privadas para lograr la seguridad. Si bien la inteligencia británica ideó un sistema similar unos años antes, los resultados nunca se publicaron ni se llevaron a cabo. Que el algoritmo siga siendo útil hasta el día de hoy es aún más increíble.
Además, el enfoque inspiró la creación del algoritmo RSA y abrió el camino para otras innovaciones más recientes como la criptografía de curva elíptica.
Basado en el artículo de Matthew Tyson (InfoWorld) y editado por CIO Perú