La idea del intercambio de claves como el Diffie-Hellman es que lo que se calcula de los dos lados termina siendo la misma clave, pero un atacante que tiene acceso a todos los mensajes enviados no puede reconstruir la clave.

Si podemos resolver el logaritmo de entonces el atacante puede resolver los valores de e , por lo que Diffie-Hellman no seria seguro. Pero si nos paramos en un campo finito, entonces hay varias soluciones, y también no hay un algoritmo eficiente para un campo finito pero lo suficientemente grande (). Este problema es el problema del logaritmo discreto, y esta probado que es NP-hard.

El Gamal es más popular incluso que RSA. Nace de DH, pero manda el mensaje al mismo tiempo. Esta ganando popularidad porque Gamal es probabilistico desde el comienzo, ya que requiere obtener un numero aleatorio y este no termina siendo parte del mensaje enviado, mientras que en RSA se necesita generar un numero aleatorio y después utilizar un padding para mandarlo.

También RSA solo funciona con los números modulo N, pero Gamal esta definido sobre campos genéricos, entonces permite usar anillos de polinomios, o curvas elípticas, donde el problema de decisión DH es de complejidad exponencial, mientras que el problema del logaritmo discreto es menor a exponencial, por lo que necesitamos claves de al menos 1024 bits, mientras que con curvas elípticas solo necesitaríamos 320 bits para llegar al mismo nivel de seguridad con operaciones más eficientes.

Protocolos