El criptosistema ElGamal , o cifrado El Gamal (o sistema El Gamal ) es un protocolo de criptografía asimétrica inventado por Taher Elgamal en 1984 y construido a partir del problema del logaritmo discreto .
Este protocolo es utilizado por el software libre GNU Privacy Guard , cuyas versiones recientes implementan incluso su versión en curvas elípticas . A diferencia del cifrado RSA , nunca ha estado protegido por patente .
El artículo fundacional de Taher Elgamal presenta un protocolo de cifrado , pero también una firma digital , que a pesar de sus similitudes (ambos se basan en el problema del logaritmo discreto ) no deben confundirse. Este artículo se ocupa únicamente del protocolo de cifrado .
El algoritmo se describe para un grupo cíclico finito dentro del cual el problema de decisión de Diffie-Hellman (DDH) es difícil. Se proporciona información más precisa en la sección Resistencia a los ataques de CPA .
Podemos notar que DDH es una hipótesis de trabajo más fuerte que la del logaritmo discreto, ya que se cumple si alguna vez el problema del logaritmo discreto es difícil. También hay grupos donde el problema de DDH es fácil, pero donde no existe un algoritmo eficiente para resolver el logaritmo discreto .
Al tratarse de un esquema de cifrado asimétrico , el criptosistema está compuesto por tres algoritmos ( probabilísticos ): GenClefs , Encrypt y Decrypt .
Para la ilustración, asumiremos que Bob quiere enviar un mensaje a Alice . Pero este mensaje contiene información confidencial, por lo que Bob no quiere que nadie más que Alice pueda entenderlo. Entonces Bob cifrará su mensaje.
Dado que los esquemas de cifrado asimétrico son generalmente más lentos que sus análogos simétricos, el cifrado ElGamal se utiliza a menudo en la práctica como parte del cifrado híbrido , como su especificación PGP.
Una forma de ver este esquema de cifrado es establecer un paralelo con el protocolo de intercambio de claves Diffie-Hellman . El algoritmo de encriptación consiste entonces en enviar un mensaje encriptado por una máscara desechable bajo la clave compartida , que puede ser calculada por Alice ya que lo ha hecho (ver ilustración al lado).
El primer paso en el esquema de cifrado es producir un par de claves: la clave pública y la clave secreta . El primero se utilizará para cifrar los mensajes y el segundo para descifrarlos.
Entonces Bob tiene acceso a la clave pública de Alice . Para cifrar un mensaje codificado como un elemento del grupo , Bob comienza dibujando un número aleatorio y lo usará para cubrir el mensaje mientras realiza el cálculo . Para permitir que Alice para descifrar el mensaje, Bob se sumará a esta parte de la información de los mensajes sobre el peligro: .
Finalmente el cifrado estará compuesto por estas dos piezas :, y Bob envía a Alice.
Al tener acceso ay a , Alice puede así calcular:
Y, por tanto, es capaz de encontrar el mensaje .
Mirando la información pública ; nos damos cuenta de que los únicos elementos de se hacen visibles y no los exponentes (aquí X y S , respectivamente). De manera informal podemos advertir que el problema del logaritmo discreto puede interpretarse como el hecho de que es difícil encontrar la información secreta ( por ejemplo) que permitiría encontrar el mensaje.
Más precisamente, es el problema de decisión Diffie-Hellmann (o DDH ) el que permite garantizar la seguridad semántica del esquema.
Demostración ReducciónSuponiendo que tengamos un oponente contra la seguridad semántica del cifrado ElGamal que gane con una probabilidad no despreciable ε . Entonces es posible construir un oponente contra DDH, lo que contradeciría la supuesta dificultad de este problema. Esta reducción que acabamos de describir constituirá la prueba de seguridad del esquema.
Para construir este oponente, que en adelante se denominará " reducción ", se supone que recibe un triple DDH : su propósito es entonces decidir si o con una probabilidad no despreciable. Para ello cuenta con una interfaz con el adversario descrito anteriormente de cara a la seguridad semántica del criptosistema ElGamal.
Por tanto, la reducción enviará la clave pública al adversario contra ElGamal . Al producir el desafío para el oponente contra la seguridad semántica del criptosistema, la reducción se enviará como encriptada: para su elección. Si alguna vez el triplete es un triplete DDH , es decir si , entonces se formaría como un cifrado válido para ElGamal con respecto a la clave pública . Por otro lado, si el exponente es aleatorio, entonces el oponente contra ElGamal no podrá distinguir los dos mensajes del desafío más que respondiendo al azar.
Solo tenemos que responder "1" (correspondiente al hecho de que el retador por DDH envió un triplete DDH) si alguna vez nuestro oponente tiene éxito, y "0" (correspondiente al hecho de que el retador por DDH envió un triple aleatorio) en caso contrario.
AnálisisAhora limitaremos la ventaja de ganar de nuestra reducción de la ventaja ε del supuesto oponente contra nuestro esquema.
Comenzamos señalando que tenemos dos casos: o el desafío enviado por nuestro retador es un triplete DDH real , o es un triplete elaborado uniformemente.
Por lo tanto, tenemos una ventaja que sigue siendo significativa: para lograr la misma seguridad entre DDH y nuestro criptosistema, es suficiente que el problema de DDH permanezca seguro con un bit de seguridad adicional.
En modelos con un atacante con más poder, como bajo ataques de cifrado elegido, el criptosistema ElGamal no es seguro debido a su maleabilidad ; de hecho, dado un cifrado para el mensaje , podemos construir el cifrado , que será válido para el mensaje .
Esta maleabilidad (es un homomorfismo multiplicativo) por otro lado hace posible su uso para la votación electrónica por ejemplo.
Sin embargo, existen variantes que logran seguridad contra ataques de cifrado elegidos, como el criptosistema Cramer-Shoup, que puede verse como una extensión del cifrado ElGamal.
Para el ejemplo, podemos tomar el grupo , con el generador g = 5 ( Advertencia : este no es un grupo seguro, estos valores se tomaron solo para producir un ejemplo simple).
Por tanto, una posible clave pública podría ser :, y como clave secreta .
Tenga en cuenta que, dado que el cifrado es un algoritmo probabilístico , existen diferentes salidas posibles para el mismo mensaje. Por lo tanto, un posible cifrado para el mensaje 42 podría ser (58086963, 94768547) , pero también (83036959, 79165157) para los peligros r igual a 6689644 y 83573058 respectivamente.
Sin embargo, si hacemos el cálculo de nuestras dos cifras, obtendremos 42 en la salida.