Está en la página 1de 6

INSTITUTO TECNOLOGICO DE LA LAGUNA

Alumna: Ana Carolina Meléndez Gurrola


Esquema clásico ElGamal.

El procedimiento de cifrado/descifrado ElGamal se refiere a un esquema de cifrado basado en


problemas matemáticos de algoritmos discretos. Es un algoritmo de criptografía asimétrica
basado en la idea de Diffie-Hellman y que funciona de una forma parecida a este algoritmo
discreto.

El algoritmo de ElGamal puede ser utilizado tanto para generar firmas digitales como para
cifrar o descifrar.

Fue descrito por Taher Elgamal en 1984 y se usa en software GNU Privacy Guard, versiones
recientes de PGP, y otros sistemas criptográficos. Este algoritmo no esta bajo ninguna patente
lo que lo hace de uso libre.

La seguridad del algoritmo se basa en la suposición que la función utilizada es de un sólo


sentido y la dificultad de calcular un logaritmo discreto.

El procedimiento de cifrado (y descifrado) esta basado en cálculos sobre un grupo cíclico


cualquiera lo que lleva a que la seguridad del mismo dependa de la dificultad de calcular
logaritmos discretos en .

El siguiente algoritmo 1 es el esquema básico de cifrado tipo ElGamal en el grupo F∗p. Con
pkeyM se denota un registro que es la clave pública del usuario M. Se supone que tal registro
esta formado por los siguientes campos

El algoritmo 1 recibe, como una componente de la entrada, el mensaje a cifrar que damos en
llamar z. Hay que destacar que, a pesar de que se trata como un elemento de F∗p, en nuestra
implementación representará una clave de cifrado simétrico, que originalmente son Strings de
no más de 256 bits.

~2~
Estudio del esquema.

Tal algoritmo basa su robustez en los siguientes hechos, la aleatorización de la clave de sesión
(paso 1) lo hace semánticamente seguro y resistente a los clásicos ataques por texto cifrado
escogido.

El uso del esquema Diffie-Hellman en los pasos 2 y 3 (el valor b es la clave compartida que no
viajará por el canal). Sólo resolviendo el DLP (Discrete Logarithm Problem) un atacante puede
calcular k a partir de a. Así conseguirá el secreto compartido b que se usa para camuflar la
información a cifrar en el producto c = z · b mod p, que es la operación ElGamal propiamente
dicha y, por lo tanto, el mensaje original z.

Sin embargo, como todo esquema básico ElGamal sobre un grupo genérico G, también ´este
adolece de una deficiencia: la limitación del espacio de mensajes, ya que z ∈ F ∗p (cf. por
ejemplo [DHAES]). Esta limitación es muy importante si el cardinal del grupo es “pequeño”.

El algoritmo

ElGamal consta de tres componentes: el generador de claves, el algoritmo de cifrado, y el de


descifrado. A continuación se describe el algoritmo utilizando el grupo multiplicativo de
enteros módulo p.

Creación de llaves de cifrado

Para generar un par de llaves, se escoge un número primo cualquiera tal que tenga
un factor primo grande. Además se eligen dos números aleatorios (el generador) y (que
actuará como clave privada) tal que .

Se calcula entonces el valor de .

por lo tanto será la llave pública a utilizar.

En este caso se refiere al operador de módulo de y es la llave privada mientras


que los valores , y son públicos.

La definición es correcta. Sin embargo, desde un punto de vista de


seguridad, esta definición tiene casos que no hacen sentido ya que y
constituyen casos que no brindan seguridad alguna y hacen que el cifrado no funcione. Dado
esto se considera preferentemente que .

Ejemplo numérico

Los valores:

~3~
(primo elegido al azar)

(generador)

(llave privada elegida al azar)

(llave pública)

forman la llave pública y la privada

Cifrado

Suponiendo que se tiene un texto claro que necesita ser cifrado. Lo primero por hacer es
convertir este texto en un elemento de obteniendo un . Luego se escoge arbitrariamente
un número tal que para finalmente calcular:

El mensaje cifrado final corresponde a la tupla

Ejemplo numérico

Dado un texto y se escoge un aleatorio:

El texto cifrado está compuesto por la tupla .

Descifrado

Para descifrar se tiene que realizar el siguiente cálculo:

donde

La resolución de este problema queda entonces de la siguiente manera

~4~
(utilizamo
s el pequeño teorema de Fermat)

También existe una expresión más simplificada para el mismo proceso:

Ejemplo numérico

El texto cifrado cifrado con la llave pública


puede ser descifrado utilizando la llave privada .

Análisis

Efectividad

Hasta el momento el algoritmo ElGamal de cifrado/descifrado puede ser considerado un


algoritmo efectivo.

Un adversario con la habilidad de calcular logaritmos discretos podría ser capaz de romper un
cifrado ElGamal. Sin embargo, hasta la actualidad, no existen algoritmos suficientemente
eficientes para realizar este tipo de cálculos en un tiempo razonable, considerando además
que se utilicen números grandes para cifrar. Dados estos antecedentes se puede decir que hoy
en día ElGamal es seguro.

Maleabilidad

Sin embargo existe un caso en que este algoritmo se vuelve maleable. Esto significa que bajo
un ataque específico la seguridad de ElGamal se puede quebrar. Este ataque usa el hecho de
tener el texto cifrado del texto claro (ambos conocidos). Sabiendo esto se
puede llegar a que el texto cifrado corresponde al texto plano .
Si ahora la persona que cifró el mensaje anterior genera otro texto cifrado
(utilizando el mismo con el que cifró anteriormente) el adversario debería ser capaz de llegar
al texto plano correspondiente siguiente los siguientes pasos:

Calcular

~5~
Buscar un tal que tomando en cuenta que al
igual que cumple con estar entre y

Tomando el peor caso, el atacante obtendrá dos textos claros (debido a la función
módulo).

Desempeño

El análisis de desempeño del algoritmo ElGamal es similar al de RSA. Concretamente tenemos


el siguiente análisis

Sea el módulo usado en ElGamal. Los procesos de cifrado y descifrado de ElGamal


por lo tanto toman tiempos de .

~6~

También podría gustarte