Está en la página 1de 17

Criptografía de clave

pública Elgamal

Emmanuel Ramírez Martínez


1
2

Criptografía de Clave Pública


 ElGamal

Basado en la dificultad de calcular logaritmos discretos.

Claves de 1024 bits.


Algoritmo ElGamal

 Fue diseñado en un principio para producir firmas


digitales, pero posteriormente se extendió también
para codificar mensajes.
 Se basa en el problema de los logaritmos discretos
 Algoritmo:
 Se escoge un número primo n y dos números aleatorios
p y x menores que n. Se calcula entonces la expresión:
y = px (mod n)
 La clave pública es (p, y, n), mientras que la clave
privada es x.
Algoritmo ElGamal
 Firmas Digitales de ElGamal
Escoger un número k aleatorio, tal que mod(k,n-1) =1, y calcular:
a = pk(mod n)
b = (m-xa)k-1 (mod (n-1))

La firma la constituye el par (a, b). En cuanto al valor k, debe mantenerse


en secreto y ser diferente cada vez.

La firma se verifica comprobando que yaab = pm (mod n)

 Codificación de ElGamal
Para codificar el mensaje m se escoge primero un número aleatorio k
primo relativo con (n-1), que también será mantenido en secreto.
Calculamos:
a = pk (mod n)
b = ykm (mod n)
El par (a, b) es el texto cifrado, de doble longitud que el texto original.

Para decodificar se calcula


m = b * a-x (mod n)
5

Criptosistema de ElGamal: claves

Generación de claves:

La clave pública es (p, , a).

La clave privada es el número a.


6

Criptosistema de ElGamal: cifrado y descifrado


Cifrado:
1. B obtiene la clave pública de A: (p, , a),
2. B representa el mensaje que quiere enviar, m, en el conjunto
{0, 1, ..., p – 1}, troceándolo si es preciso,
3. B genera un número aleatorio v, 0 < v < p – 1,
4. B calcula   v (mod. p), y   m ·(a)v (mod. p).
5. B envía a A el par (,).
7

Criptosistema de ElGamal: cifrado y descifrado

Descifrado:
1. A utiliza su clave privada, a, para calcular
 a  (v)a (mod. p) en G y su inverso p – 1 – a (mod. p)

2. El resultado lo multiplica por  para obtener m:


p – 1 – a    – a m a (mod. p)  m (mod. p)
8

Criptosistema de ElGamal: seguridad

Por seguridad y eficacia, el grupo G y el elemento  deben


elegirse de forma que se verifiquen las siguientes condiciones:
La operación en G debería ser “fácil” de aplicar.
Por seguridad el problema del logaritmo discreto en el subgrupo
cíclico de G generado por  debería ser “difícil”.
9

Ejemplo ElGamal: determinación de la clave.

Consideremos p = 15485863, el grupo (Z15485863)* y un generador


de dicho grupo  = 7.

 A elige a=28236 y calcula


a  728236 12506884 (mod. 15485863)
Este par es la clave privada y pública de A.

 B elige b=21702 y calcula


b 721702 8890431 (mod. 15485863)
Este par es la clave privada y pública de B.
10

Ejemplo ElGamal: cifrado del mensaje.

Supongamos que A quiere mandar a B el mensaje m=HIJO


Codificamos el mensaje utilizando el alfabeto de 26 letras:
H7, I8, J9,O 14
con lo que el mensaje sería:
m = 7 · 263+8 · 262+9 · 26+14 = 128688
11

Ejemplo ElGamal: cifrado del mensaje.

A elige el número v = 480 y calcula


  7480 (mod. 15485863)  12001315 (mod. 15485863)
(b)v  8890431480  9846598 (mod. 15485863)
  m ·(a)v  1286688 · 9846598  8263449 (mod. 15485863)
12

Ejemplo ElGamal: cifrado del mensaje.

A codifica la pareja (12001315, 8263449) en base 26:


12001315= 1 · 265 +0 · 264 +6 · 263+21 · 262+11 · 26+1 BAGVLB
8263449= 18 · 264 +2 · 263+4 · 262+0 · 26+25  SCEAZ

y envía a B la pareja (BAGVLB, SCEAZ).


13

Ejemplo ElGamal: descifrado del mensaje.

B codifica la pareja (BAGVLB, SCEAZ) en base 26:


BAGVLB = 1·265+0·264+6·263+21·262+11·26+1 = 12001315 = 
SCEAZ= 18·264+2·263+4·262+0·26+25 = 8263449 = 

B calcula  b  1200131521702  9846598 (mod. 15485863)


y su inverso  p–1–b 1200131515464160 14823281 (mod.
15485863)
14

Ejemplo ElGamal: descifrado del mensaje.

Finalmente B calcula el mensaje inicial:


p – 1 – a   14823281 · 8263449  128688 (mod. 15485863)
que codificado en base 26 es el mensaje inicial:
128688 = 7 · 263+8 · 262+9 · 26+14  HIJO
15

Firma digital ElGamal.

El esquema diseñado por ElGamal para firmar digitalmente un


mensaje es el siguiente:
 A genera un número aleatorio h tal que MCD(h,p-1)=1.

 A calcula el elemento r h (mod. p) .


 A resuelve la congruencia m  a · r +h ·s (mod. p-1).

La firma digital de A para el mensaje m es el par (r,s).


16

Firma digital ElGamal.

Para que el receptor B del mensaje compruebe la firma de A


realiza el siguiente protocolo:
 B calcula rs (h)s (mod. p)
 B calcula el elemento (a)r (mod. p)
 B calcula (a)r · (h)s (mod. p) y comprueba que es igual a
m (mod. p)
17
Firma digital ElGamal.
Para conseguir la falsificación de la firma de A en el mensaje m,
un escucha tendría que resolver la ecuación
m =(a)r · rs
con las incógnitas r y s. Si fija r y trata de resolver la ecuación en
s se encontraría con un problema de logaritmo discreto, mientras
que si fija s e intenta resolver la ecuación para r se encontraría
con una congruencia exponencial mixta para la que no hay
algoritmo conocido (Problema de la firma digital de ElGamal)

También podría gustarte