Criptosistema ElGamal

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 .

Descripción del algoritmo

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).

Generación de claves

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.

Algoritmo de cifrado

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.

Algoritmo de descifrado

Al tener acceso ay a , Alice puede así calcular:

Y, por tanto, es capaz de encontrar el mensaje .

seguridad

Enfrentarse a los ataques de texto claro elegidos

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ón

Suponiendo 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álisis

Ahora 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.

Frente a los ataques de cifrado elegidos

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.

Ejemplo

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.

Notas y referencias

(fr) Este artículo está tomado parcial o totalmente del artículo de Wikipedia en inglés titulado Cifrado de ElGamal  " ( ver la lista de autores ) .
  1. ElGamal 1984 .
  2. RFC4880 , (en) "  Formato de mensaje OpenPGP  "
  3. Registro de cambios de GnuPG 2.1
  4. Joux y Nguyen 2003 .
  5. Katz y Lindell 2014 , Capítulo 10.5 El esquema de cifrado de ElGamal.
  6. Belenios, (en) "  Especificaciones de Belenios  "

Apéndices

Bibliografía

  • [ElGamal 1984] (en) Taher ElGamal, "  Un criptosistema de clave pública y un esquema de firma basado en logaritmos discretos  " , Crypto , Springer,1984( DOI  10.1007 / 3-540-39568-7_2 )
  • [Katz y Lindell 2014] (en) Jonathan Katz y Yehuda Lindell, Introducción a la criptografía moderna, segunda edición , Boca Raton, Chapman y Hall ,2014, 583  p. ( ISBN  978-1-4665-7026-9 , leer en línea ) , "Capítulo 10.5 El esquema de cifrado de El Gamal"
  • [Menezes, van Oorschot y Vanstone 1996] (en) AJ Menezes , PC van Oorschot y SA Vanstone , Handbook of Applied Cryptography , CRC Press,1996, 810  p. ( ISBN  978-1-4398-2191-6 , leer en línea [PDF] ) , "Capítulo 8.4 Cifrado de clave pública de ElGamal"
  • [Joux y Nguyen 2003] (en) Antoine Joux y Kim Nguyen, "  Separando Decisión Diffie - Hellman de Computational Diffie - Hellman en Grupos Criptográficos  " , Journal of Cryptology , vol.  dieciséis,2003, p.  239-247 ( DOI  10.1007 / s00145-003-0052-4 )
<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">