Paper de Criptografía sobre Ataque a la clave por la paradoja del cumpleaños al algoritmo RSA, Problema del Logaritmo Discreto (PLD), Algoritmo de cifra ELGAMAL y Firma Digital ELGAMAL.
7 de May de 2015•0 recomendaciones
0 recomendaciones
Sé el primero en que te guste
ver más
•968 vistas
vistas
Total de vistas
0
En Slideshare
0
De embebidos
0
Número de embebidos
0
Descargar para leer sin conexión
Denunciar
Ingeniería
Paper de Criptografía sobre Ataque a la clave por la paradoja del cumpleaños al algoritmo RSA, Problema del Logaritmo Discreto (PLD), Algoritmo de cifra ELGAMAL y Firma Digital ELGAMAL.
Similar a Paper de Criptografía sobre Ataque a la clave por la paradoja del cumpleaños al algoritmo RSA, Problema del Logaritmo Discreto (PLD), Algoritmo de cifra ELGAMAL y Firma Digital ELGAMAL.(20)
Paper de Criptografía sobre Ataque a la clave por la paradoja del cumpleaños al algoritmo RSA, Problema del Logaritmo Discreto (PLD), Algoritmo de cifra ELGAMAL y Firma Digital ELGAMAL.
1
CORPORACIÓN UNIVERSITARIA AMERICANA
CUA
MÓDULO DE CRIPTOGRAFÍA
CONTENIDO
Tema Página
1. Ataque a la clave por paradoja del cumpleaños 2
2. El Problema del Logaritmo Discreto (PLD) 8
3. Algoritmo de cifra ELGAMAL 9
4. Firma Digital con ELGAMAL 11
5. Referencias Bibliográficas 13
AUTORES
Ing. Ameth G. Ordoñez
Ingeniero de Sistemas
Estudiante Esp. Seguridad informática
Ing. José L. Carpio
Ingeniero de Sistemas
Estudiante Esp. Seguridad informática
2
ATAQUE A LA CLAVE POR PARADOJA DE CUMPLEAÑOS
Palabras claves: Paradoja, Colisión, Cifrar, Descifrar, DES, RSA, MITMA
Introducción: En el año 1981, Ralph Merkle y Martin Hellman proponen un
método para atacar al algoritmo DES (Data Encryption Standard), basado en el
problema o paradoja del cumpleaños, lo que finalmente deriva en lo que se
conoce como Ataque a medio camino (Meet in the Middle Atack). Este mismo
principio permite encontrar colisiones en las cifras con RSA. El ataque tiene la
particularidad de que al prosperar tras observarse una colisión, nos entregará
la clave privada de la víctima, una clave privada pareja, o en muy pocos casos
un falso positivo.
El problema: La paradoja del cumpleaños, sin entrar en detalles matemáticos
y estadísticos, pretende establecer que si hay 23 personas reunidas, hay la
probabilidad del 50,7% (lo que se conoce como confianza) de que al menos
dos personas de ellas cumplan el mismo día.
¿Cómo funciona?
1. Se elige un valor aleatorio N cualquiera.
2. Se eligen dos números aleatorios distintos i, j dentro del cuerpo n (el
cual es un dato público).
3. Ese valor de n (módulo) se divide en dos mitades, parte baja o izquierda
y parte alta o derecha. Por lo tanto, se debe cumplir que:
1) Espacio del contador i (parte baja o izquierda): 1 ≤ i ≤ n/2
2) Espacio del contador j (parte alta o derecha): n/2 ≤ j < n
4. Con dichos valores se realizan las siguientes operaciones de cifra:
Para i=i+1
Para j=j+1
Se calcula: 𝑵𝒊
𝒎𝒐𝒅 𝒏 y 𝑵𝒋
𝒎𝒐𝒅 𝒏
5. Cuando se encuentran un resultado igual o colisión entre el ultimo
resultado de j con el primer resultado de i, o bien entre el ultimo
resultado de i con el primer resultado de j, en este momento el
algoritmo llega a su fin y será capaz de encontrar la clave privada d.
6. Una vez encontrada la colisión, se obtienen los valores de i y j.
7. Como se conocen los valores de la clave pública e, se calcula:
w = (i – j) / mcd (e, |i – j|)
8. Deberán existir dos valores s y t de forma que se cumpla lo siguiente:
3
w*s + e*t = 1
9. Se puede solucionar esta ecuación así:
w*s mod e = 1
e*t mod w = 1
10. Se calcula s = inv (w, e)
11. Se calcula t = inv (e, w)
12. Se comprueba que w*s + e*t = 1
13. El valor de t será la clave privada, una clave pareja o bien un falso
positivo.
Ejemplo:
Sean los siguientes valores:
p = 7
q = 19
n = 133 (p*q)
e = 5
d = 65
d’ = 11, 29, 47, 83, 101, 119
El atacante conoce los valores de n (133) y e (5). Se utiliza como numero de
ataque N = 25. Luego los rangos bajo y alto:
1 < i < 66, es decir i = 2, 3, 4… 63, 64, 65.
65 < j < 132, es decir j = 66, 67, 68… 129, 130, 131.
Vamos a suponer que primero se realiza la cifra en la zona baja (i) y luego
en la zona alta (j):
251
mod 133 = 25 2566
mod 133 = 64
252
mod 133 = 93 2567
mod 133 = 4
253
mod 133 = 64 2568
mod 133 = 100
254
mod 133 = 4 2569
mod 133 = 106
255
mod 133 = 100 2570
mod 133 = 123
256
mod 133 = 106 2571
mod 133 = 16
257
mod 133 = 123 2572
mod 133 = 1
258
mod 133 = 16 2573
mod 133 = 25
4
Se ha producido una colisión, pues el resultado en j 2573
mod 133 = 25 es
igual que el valor en i 251
mod 133 = 25
Entonces calculamos w:
w = (i – j) / mcd (e, |i – j|)
w = (1 – 73) / mcd (5, |1 – 73|)
w = -72
e * t mod w = 1
5 * t mod 72 = 1
Luego,
t = inv (e, w)
t = inv (5, 72)
t = 29 Clave pareja encontrada!
5
Ejemplo práctico:
Utilizaremos las herramientas Generador_Claves_RSA (genRSA) y
LegionRSA para generar unas claves con el algoritmo de cifrado RSA y luego
atacar la clave por la paradoja del cumpleaños:
Lo primero que haremos es generar unas claves cualesquiera en genRSA.
Para eso usaremos el método automático de generación de claves de esta
herramienta con una longitud de 18 Bits:
genRSA nos genera los números primos p = 397 y q = 401. El módulo n =
159197, la clave pública e = 14537 y la clave privada d = 108473.
6
Ahora utilizaremos LegionRSA para iniciar el ataque a la clave.
Iniciamos el modo servidor y el modo cliente por separado. Configuramos
el modo cliente para estar a la espera y unirse al ataque:
En el modo servidor configuramos los parámetros que nos arrojó genRSA
manualmente:
Ahora ¡Atacamos!... y cómo podemos observar, fue todo un éxito!
7
Como vemos, el ataque con LegionRSA obtuvo directamente la clave
privada d, la cual se muestra en genRSA:
8
EL PROBLEMA DEL LOGARITMO DISCRETO
Palabras claves: Aritmética, Módulo, Logaritmo, Exponente
Introducción: Mantener la información protegida gracias a la Criptografía es
imprescindible prácticamente en cualquier acción cotidiana. El uso de
problemas matemáticos difíciles o imposibles de resolver bajo ciertas
condiciones con las herramientas de cálculos disponibles hoy en día es algo
habitual en Criptografía. Uno de los problemas matemáticos en los que se
basan algunos sistemas criptográficos es el del Logaritmo Discreto (PLD):
Sea G un grupo multiplicativo finito, y sea g un elemento de orden n de G.
Dado un elemento a pertenecientes al subgrupo generado por g, se define el
logaritmo discreto de a en base g como el entero k, 0 ≤ k ≤ n – 1 tal que:
gk
= a
El problema del Logaritmo Discreto consiste en dados g y a, calcular k.
La importancia del estudio de este problema radica en el interés del logaritmo
discreto como operación inversa a la exponenciación de un grupo.
Se puede comparar como si tuviéramos 3 colores, los cuales al mezclarlos
generan un nuevo color. Dado este nuevo color, es casi imposible ir a la
reversa, es decir, saber cuáles fueron estos 3 colores iniciales a partir del nuevo
color.
La exponenciación modular es una operación inversa a la exponenciación en
un grupo. Por lo tanto el módulo hace que calcular la inversa sea más
complejo, dado que:
Logaritmo = LOGAlfa Beta mod Grupo
9
Grupo (p) es un valor muy grande y se hace computacionalmente intratable.
La exponenciación modular es una operación sencilla y se conocen métodos
eficientes para calcularlo. En cambio, el cálculo del logaritmo discreto modulo
un entero cualquiera no siempre puede realizarse de forma eficiente. Por este
motivo, algunos criptosistemas y sistemas de autenticación de mensajes e
intercambio de claves basan su seguridad en el PLD.
Utilizamos la herramienta Fortaleza de Cifrados (Fortaleza) para ver ejemplos
de PLD:
ALGORITMO DE CIFRA ELGAMAL
Palabras claves: PLD, Módulo, Cifra, Clave
Introducción: Taher Elgamal famoso criptógrafo egipcio, reconocido por ser el
inventor de la Firma Digital y un gran aportador al desarrollo del protocolo SSL,
propuso el algoritmo que lleva su nombre en 1985, el cual hace uso del
Problema del Logaritmo Discreto (PLD).
10
¿Cómo funciona?
1. Se conoce un grupo del cuerpo Fq y un elemento g del mismo.
2. El usuario A elige un entero a tal que 2 ≤ a ≤ q – 2 y calcula ga
. El entero
a es su clave privada y ga
es su clave pública.
3. Otro usuario B manda un mensaje m a A por lo que hace:
a. Elegir un entero k, tal que: 2 ≤ k ≤ q – 2
b. Enviar el par (gk
, mgak
) a A
A partir del par (gk
, mgak
), es fácil para A obtener el mensaje original m de la
siguiente manera:
1. Calcula gak
= (gk
)a
2. Halla (mgak
)/gak
= m
Ejemplo:
Supongamos que Ana y Beto quieren intercambiar mensajes utilizando el
método de cifra Elgamal. En el cuerpo F157 se escoge el generador g = 5. Para
ello, Ana escoge su clave privada a = 25 y comparte su clave pública ga
= 34.
Supongamos que Beto quiere mandar el mensaje m = 19 a Ana, entonces elige
un entero k = 89 y le envía el par (589
, 19×525×89
) = (131, 45).
Para obtener el mensaje original, Ana halla 525×89
= 85 (mod 157) y calcula
45/85 = 19 (mod 157) que es m.
ANA
a
BETO
k
Clave pública:
ga
(gk
, mgak
)
11
FIRMA DIGITAL CON ELGAMAL
Palabras claves: PLD, Módulo, Cifra, Clave, Firma
Introducción: Taher Elgamal también propuso un algoritmo de cifra basado en
la exponenciación de cuerpos finitos.
¿Cómo funciona?
Supongamos que el usuario A quiere firmar los mensajes que envía. Para ello
publica un primo p, un elemento primitivo g módulo p y un entero y, 1 ≤ y ≤ p
– 1, tal que y = ga
donde a es un entero cualquiera que mantiene en secreto.
El primo p y g pueden ser elegidos por cada usuario o ser las mismas para todos
los usuarios.
Para firmar un mensaje m, A procede de la siguiente manera:
1. Elige un entero k con (k, p – 1) = 1 y calcular r = gk
2. Calcula s a partir de la ecuación: m = ar + ks (mod p – 1)
3. La firma de A para el mensaje m es, por lo tanto, el par (r, s)
Si alguien fuese capaz de calcular logaritmos discretos y obtener el entero a a
partir de y, podría firmar mensajes como si fuese el usuario A.
El algún usuario quiere verificar que un mensaje m procede efectivamente de
A, debe verificar:
gm = yr rs (mod p)
Ya que, si efectivamente A es el emisor:
yr rs = gar gks = gar + ks = gm (mod p)
Clave pública:
(p,g, y)
Clave privada:
a
12
Ejemplo:
Cierto usuario A toma como clave privada a = 33 y comparte la siguiente clave
pública (151, 6, 60). Si el usuario quiere firmar el mensaje m = 79 debe
proceder así:
1. Elige un cierto k, por ejemplo, k = 11 y calcular r = 611
= 77 (mod 151)
2. Calcula s = (79 – 33 × 77) / 11 = 8 (mod 50)
La firma del mensaje m = 79 es (77, 8). Si el destinatario del mensaje quiere
verificar la autoría del mismo, ha de comprobar que 679
= 63 = 6077
× 778
(mod
151).
13
REFERENCIAS BIBLIOGRAFICAS
1. Red temática de Criptografía y Seguridad de la Información –
CRIPTORED
Por el aporte y la documentación sobre algoritmos de cifra y software
de prácticas como genRSA, Legion y Fortaleza.
URL: http://www.criptored.upm.es/
2. Repositorios de la Universidad de Cantabria (España)
Por la documentación aportada en el trabajo dirigido en Estadística y
Computación de la Licenciatura de Matemáticas de la autora Jennifer
Santamaría Fernández.
URL:
http://repositorio.unican.es/xmlui/bitstream/handle/10902/3101/Jen
nifer%20Santamaria%20Fernandez.pdf?sequence=1
3. Información de libre distribución
URL: https://www.youtube.com/watch?v=fLDPW1gZF4M
URL: https://www.youtube.com/watch?v=Ex9sN5MorRs