cifrado elgamal

17
Criptografía de clave pública Elgamal Emmanuel Ramírez Martínez 1

Upload: emmanuel-ramirez-martinez

Post on 10-Dec-2015

240 views

Category:

Documents


8 download

DESCRIPTION

ElgamalCriptografiaCifrado

TRANSCRIPT

Criptografía de clave pública

Elgamal

Emmanuel Ramírez Martínez

1

2

Criptografía de Clave PúblicaCriptografí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: clavesCriptosistema 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: cifradoCriptosistema de ElGamal: cifrado y descifrado 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: cifradoCriptosistema de ElGamal: cifrado y descifrado 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: Criptosistema de ElGamal: seguridadseguridad

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

EjemploEjemplo ElGamal: ElGamal: determinación de la clave.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

EjemploEjemplo ElGamal: ElGamal: cifrado del mensaje.cifrado del mensaje.

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

Codificamos el mensaje utilizando el alfabeto de 26 letras:

H7, I8, J9,O 14

con lo que el mensaje sería:

m = 7 · 263+8 · 262+9 · 26+14 = 128688

11

EjemploEjemplo ElGamal: ElGamal: cifrado del mensaje.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

EjemploEjemplo ElGamal: ElGamal: cifrado del mensaje.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

EjemploEjemplo ElGamal: ElGamal: descifrado del mensaje.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

EjemploEjemplo ElGamal: ElGamal: descifrado del mensaje.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.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.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.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)