ElGamal

El algoritmo criptográfico ElGamal es un sistema de cifrado asimétrico que se utiliza para garantizar la seguridad y privacidad de las comunicaciones. Fue desarrollado en 1985 por Taher ElGamal y se basa en los principios de la teoría de números y en la dificultad de resolver el problema del logaritmo discreto en grupos finitos.

Características principales de ElGamal

  1. Cifrado asimétrico:
    • Utiliza un par de claves: una clave privada (secreta) y una clave pública (compartida).
    • La clave pública se usa para cifrar los mensajes y la clave privada se usa para descifrarlos.
  2. Problema del logaritmo discreto:
    • Su seguridad se basa en la dificultad de resolver el logaritmo discreto en grupos finitos, lo que hace que descifrar los mensajes sin la clave privada sea computacionalmente inviable.
  3. Esquema probabilístico:
    • Introduce aleatoriedad durante el proceso de cifrado, lo que significa que un mismo mensaje cifrado dos veces puede generar resultados diferentes.
  4. Aplicaciones:
    • Se utiliza tanto para cifrado de datos como para firmas digitales, aunque para firmas digitales el algoritmo se suele derivar en esquemas como DSA (Digital Signature Algorithm).

Componentes del algoritmo

  1. Configuración inicial:
    • Se elige un número primo grande p y un generador g de un grupo cíclico multiplicativo \mathbb{Z}_p^*​.
    • El remitente elige una clave privada xxx (un número aleatorio tal que 1<x < p-1).
    • La clave pública se calcula como  y = g^x \mod p .
  2. Cifrado:
    • Para cifrar un mensaje mmm:
      • Se convierte mmm en un número dentro del rango de \mathbb{Z}_p^*​ .
      • Se elige un número aleatorio k (número efímero, 1<k < p-1).
      • Se calcula c1 = g^k \mod p​.
      • Se calcula c2= m \cdot y^k \mod p.
    • El texto cifrado es el par (c1,c2)(c_1, c_2)(c1​,c2​).
  3. Descifrado:
    • El destinatario usa la clave privada x para descifrar:
      • Calcula s= c_1^x \mod p.
      • Calcula el mensaje original como m= c_2 \cdot s^{-1} \mod p, donde s^{-1} es el inverso modular de s.

Ventajas de ElGamal

  1. Seguridad robusta: La seguridad se basa en problemas matemáticos bien estudiados y difíciles de resolver.
  2. Cifrado semántico: Gracias a la aleatoriedad introducida por k, un atacante no puede deducir el mensaje original observando textos cifrados repetidos.
  3. Versatilidad: Se usa tanto para cifrado como para generación de firmas digitales.

Desventajas de ElGamal

  1. Largo del texto cifrado: El tamaño del texto cifrado es aproximadamente el doble del texto original, lo que puede ser una desventaja en sistemas con limitaciones de almacenamiento o transmisión.
  2. Eficiencia: Es más lento en comparación con otros algoritmos como RSA debido a la necesidad de realizar múltiples operaciones de exponenciación modular.
  3. Generación de claves efímeras: La seguridad depende de generar valores k únicos y verdaderamente aleatorios; reutilizar k puede comprometer el sistema.

Comparación con otros algoritmos

  • RSA: Ambos son algoritmos asimétricos, pero ElGamal depende del problema del logaritmo discreto, mientras que RSA se basa en la factorización de números enteros grandes.
  • ECC (Criptografía de curva elíptica): Una variante de ElGamal se utiliza en curvas elípticas, lo que permite obtener la misma seguridad con claves más pequeñas y mayor eficiencia.