14 Cifra Asimetrica
14 Cifra Asimetrica
14 Cifra Asimetrica
v 4.1
Material Docente de
Libre Distribucin
Este archivo forma parte de un curso completo sobre Seguridad Informtica y Criptografa. Se autoriza el
uso, reproduccin en computador y su impresin en papel, slo con fines docentes y/o personales,
respetando los crditos del autor. Queda prohibida su comercializacin, excepto la edicin en venta en el
Departamento de Publicaciones de la Escuela Universitaria de Informtica de la Universidad Politcnica de
Madrid, Espaa.
Curso de Seguridad Informtica y Criptografa JRA
Pgina 2
Esto es as porque este tipo de cifra es muy lenta y sera muy costoso
en tiempo cifrar, por ejemplo, mensajes de cientos o miles de bytes.
Pgina 3
Pgina 4
Pgina 5
Pgina 6
y ...
Pgina 7
C = Ne mod n
Descifrado:
Pgina 8
Comprobacin de la recuperacin de N
Sea n = pq = 511 = 55
(n) = (5-1)(11-1) = 40
- por reducibilidad -
Pgina 9
Pgina 10
Pgina 11
Pgina 12
Pgina 13
Qu hacer?
Una solucin a
este problema
es el sellado
de tiempo.
Pgina 14
Pgina 15
Veamos un ejemplo
Jorge Rami Aguirre
Pgina 16
32 mod 13 = 9
35 mod 13 = 9
38 mod 13 = 9
311 mod 13 = 9
33
36
39
312
... entonces
Pgina 17
Raz correcta
Ysisiahora
ahora==22??
Y
Primero intente calcularlo... y luego para comprobar sus resultados, avance.
21 mod 13 = 2
24 mod 13 = 3
27 mod 13 = 11
210 mod 13 = 10
22 mod 13 =
25 mod 13 =
28 mod 13 =
211 mod 13 =
4
6
9
7
23 mod 13 = 8
26 mod 13 = 12
29 mod 13 = 5
212 mod 13 = 1
Pgina 18
http://www.di-mgt.com.au/rsa_alg.html
Pgina 19
Benito
Claves Benito
nB = 65.669
eB = 35, dB = 53.771
Adela
Claves Adela
nA = 66.331
eA = 25, dA = 18.377
Pgina 20
Benito
Claves Benito
Claves Adela
nB = 65.669
eB = 35, dB = 53.771
nA = 66.331
eA = 25, dA = 18.377
Adela
Pgina 21
Pgina 22
Pgina 23
dq = d mod (q-1)
Cp = C mod p
Cq = C mod q
Pgina 24
Pgina 25
Pgina 26
N de dgitos
18
Das
1,7 x 10-8
Aos
-
120
36
1,5 x 10-5
256
77
1,0
363
109
9,0 x 102
2,5
442
133
9,4 x 104
2,5 x 102
665
200
3,8 x 108
1,0 x 106
Pgina 27
Pgina 28
Pgina 29
q = x + y = 216 + 35 = 251
Para evitar otros problemas, es recomendable
usar los denominados primos seguros.
Jorge Rami Aguirre
Pgina 30
Cmo?
Pgina 31
Pgina 32
8r2 + 10r + (3 - n) = 0
Pgina 33
Pgina 34
1 < di < n
i = 0, 1, ...
= (n - d)/
Pgina 35
Pgina 36
Pgina 37
Pgina 38
Pgina 39
Pgina 40
Pgina 41
Pgina 42
Pgina 43
Pgina 44
Pgina 45
luego:
N = [0, 52, 169, 170, 1, 118, 68, 120, 16, 17, 69, 186, 204, 35, 152,
153, 205, 101, 51, 103, 220]
ordenando...
N = [0, 1, 16, 17, 35, 51, 52, 68, 69, 101, 103, 118, 120, 152, 153,
169, 170, 186, 204, 205, 220] estos son los 21 mensajes de 221.
Jorge Rami Aguirre
Pgina 46
Pgina 47
p = 409, q = 499
e = 31, d = 19.663
Sean
Con
p = 241, q = 251
e = 61, d = 26.281
Pgina 48
Pgina 49
Pgina 50
Pgina 51
Pgina 52
Pgina 53
(i = 1, 2, ...)
con C0 = C
Pgina 54
Ci
C0 = 119
C1 = 11929 mod 247 = 6
C2 = 629 mod 247 = 93
C3 = 9329 mod 247 = 175
C4 = 17529 mod 247 = 54
C5 = 5429 mod 247 = 123
C6 = 12329 mod 247 = 119
Pgina 55
i
Ci
i=0
C0 = 128
i=1
C1 = 12817 mod 253 = 6
i=2
C2 = 617 mod 253 = 173
i=3
C3 = 17317 mod 253 = 101
i=4
C4 = 10117 mod 253 = 95
i=5
C5 = 9517 mod 253 = 39
i=6
C6 = 3917 mod 253 = 96
i=7
C7 = 9617 mod 253 = 2
i=8
C8 = 217 mod 253 = 18
i=9
C9 = 1817 mod 253 = 215
i = 10
C10 = 21517 mod 253 = 151
17
i =Rami
11 Aguirre
C11 = 151
253
Jorge
Madridmod
(Espaa)
2006= 167
i
Ci
i = 12 C12 = 16717 mod 253 = 150
i = 13 C13 = 15017 mod 253 = 193
i = 14 C14 = 19317 mod 253 = 118
i = 15 C15 = 11817 mod 253 = 200
i = 16 C16 = 20017 mod 253 = 73
i = 17 C17 = 7317 mod 253 = 94
i = 18 C18 = 9417 mod 253 = 41
i = 19 C19 = 4117 mod 253 = 123
i =Para
20 n = C
12317tenido
mod 253
= 128 un
253,
que recorrer
20 =hemos
espacio mucho mayor dentro de un cuerpo
de cifra muy similar al anterior (n = 247).
Pgina 56
Pgina 57
Pgina 58
Pgina 59
Pgina 60
Pgina 61
Pgina 62
Pgina 63
Pgina 64
Pgina 65
Operacin Cifrado:
C = Me mod p = 6515 mod 263, 10015 mod 263,
10515 mod 263, 24315 mod 263, 11515 mod 263
C = 245, 143, 179, 86, 101
Jorge Rami Aguirre
Pgina 66
Operacin Descifrado:
M = Cd mod p = 24535 mod 263, 14335 mod 263,
17935 mod 263, 8635 mod 263, 10135 mod 263
M = 065, 100, 105, 243, 115
Convirtindolo al cdigo ANSI: M = Adis
Jorge Rami Aguirre
Pgina 67
A enva a B el par:
Jorge Rami Aguirre
N(b) mod p
C = [ mod p, N(b) mod p]
Pgina 68
Pgina 69
Pgina 70
Pgina 71
Pgina 72
Ejemplo
Pgina 73
CIFRADO
DESCIFRADO
C3 =
Pgina 74
Pgina 75
... pero
Pgina 76
Cuestiones y ejercicios (1 de 4)
1. A partir de la ecuacin ed = k(n) + 1, compruebe que las claves
RSA e = 133 y d = 38.797 son inversas en el cuerpo n = 40.501.
2. En el ejemplo de intercambio de clave DH del libro con p = 1.999,
podran haber elegido Adela y Benito = 34, 35, 36 37?
3. Carmela (C) intercepta la clave de sesin DH que se intercambian
Adela (A) y Benito (B) dentro del cuerpo p = 127. Si se usa como
generador = 19 y a = 3, b = 12 y c = 7, desarrolle el algoritmo que
permite a C interceptar la comunicacin y engaar a A y B.
4. Los usuarios A, B, C y D desean intercambiar una clave usando el
mtodo DH. Proponga un protocolo genrico que solucione este
problema y presente un ejemplo en el cuerpo p = 23 y elija .
5. Disee un sistema RSA en el que p = 53, q = 113. Elija como clave
pblica el mnimo valor posible de 2 dgitos.
Jorge Rami Aguirre
Pgina 77
Cuestiones y ejercicios (2 de 4)
6. Para los datos de diseo del ejercicio 5, cifre el nmero M = 121 y
luego descfrelo. Use el algoritmo de exponenciacin rpida.
7. Vuelva a descifrar el criptograma usando ahora el Teorema del
Resto Chino. Aunque en este caso haya hecho ms clculos por
qu es interesante usar aqu el Teorema del Resto Chino?
8. Si p = 353 y q = 1.103, cifre el mensaje ASCII de cuatro caracteres
M = HOLA en bloques de tamao eficiente (mnimo) para e = 17.
9. Para los datos del ejercicio anterior, encuentre la clave privada d
usando el algoritmo extendido de Euclides.
10. Por qu se usa una clave pblica e de un valor relativamente bajo
y, por contrapartida, la clave privada d es alta? Qu utilidad tiene?
11. Cmo atacara un sistema RSA mal diseado con primos cercanos
y cuyo mdulo es n = 205.027? Encuentre los valores de p y q.
Jorge Rami Aguirre
Pgina 78
Cuestiones y ejercicios (3 de 4)
12. En el sistema RSA con p = 11 y q = 19, se elige como clave pblica
e = 31. Cuntas y cules son las claves privadas parejas?
13. Para los mismos datos del ejercicio anterior, cuntos y cules son
los mensajes no cifrables? Qu sucede si ahora e = 33?
14. Cmo puede minimizarse el nmero de claves privadas parejas y el
de mensajes no cifrables? D un ejemplo con primos de dos dgitos.
15. Atacamos un sistema RSA con un cifrado cclico. Qu es lo que
vulneramos, el secreto de la clave privada o secreto del mensaje?
16. Se ataca por cifrado cclico el sistema RSA: p = 23, q = 41 y e = 17.
Cuntos cifrados hay que hacer para romper N = 200 y N = 185?
17. Cifre M = La Puerta de Alcal (de 19 caracteres ANSI) con un
sistema de Pohlig y Hellman. Use el primer primo que le permita
cifrar bloques de 2 bytes. Descifre ahora el criptograma C.
Jorge Rami Aguirre
Pgina 79
Cuestiones y ejercicios (4 de 4)
18. Vamos a cifrar con ElGamal el mensaje en ASCII decimal de la letra
A. Cules son los valores mnimos del cuerpo de cifra, del
generador , de la clave pblica y del valor local v?
19. Descifre el criptograma obtenido en el ejercicio anterior.
20. Se va a cifrar con RSA el mensaje M = Hola. Si p = 53 y q = 97, de
cuntos dgitos ser el bloque ptimo de cifra?
21. En un sistema real, tiene sentido hablar de bloques con un nmero
de dgitos ptimos? Por qu? Justifique su respuesta.
22. Cuntos pasos debe realizar una factorizacin de un nmero n de
120 dgitos? Si tenemos un sistema que consume 1 seg por paso,
cuntos aos tardaramos ms o menos en factorizar ese nmero?
23. El valor encontrado en el ejercicio anterior, es siempre fijo o es
slo una aproximacin? Justifique su respuesta.
Jorge Rami Aguirre
Pgina 80
5.
6.
http://www.criptored.upm.es/software/sw_m001d.htm
Pgina 81
Observe las claves parejas para la clave de 1.024 bits con valores p; q; e:
02E68E02BE7400FE11E8A45B60017F988251AEED1CF5A9820A6BC9
DE01A408A2725A0977B1A4584556C8F2A6E450089AA860007CE446
BD342D5320AF12E9CE8D41;
3560B5461224C1DD6332CA632A13C9C13D9072AB1297092332E0773
FEACF9D2D449DE87436B3267C185698515B8948A4792F9C1328712C
AAD35FD1A94ADAFE9D; 10001. Le llama algo la atencin?
8. Repita el ejercicio anterior con e = 41B3, e = 41B7, e = 41BD, e = 41BF.
9. Observe las claves parejas para la clave de 512 bits con valores p; q; e:
D2BF44D863DC579E5192EDF83744EBFF5A72E2D5E8DE9FE330EDF
D65114FFF0F;
D4C1CE77FE15374D8C7E0CE2CEF52E283D237521262E3D4E51D321
6BE1B50665; 10001. Analice la distribucin de estas claves parejas.
10. Si aunque alto, el porcentaje de claves dbiles en el caso anterior sigue
siendo insignificante, estara Ud. seguro del secreto de su clave privada?
Jorge Rami Aguirre
Pgina 82
Pgina 83
Pgina 84
Pgina 85
Pgina 86
Pgina 87
Para cada una de las claves (p, q, e) dadas (59141, 51593, 29571); (59141,
51593, 381393861); (59141, 51593, 1525575441), observe el nmero de
mensajes no cifrables y la relacin el valor de e y la funcin (n). Observe
la situacin del ltimo caso en el que una de las claves privadas es 1.
8. Para la clave (p, q, e) dada (41, 137, 19) realizar un ataque cclico
introduciendo el mensaje M = A. Reptalo con M = b, M = X.
9. Conociendo slo n = 29740913, e = 101, realice un ataque por cifrado
cclico al criptograma en ASCII C = ?. Observe el texto en claro en el
cifrado n-1. Con el programa factorice n y genere la clave RSA. Para
obtener el texto en claro, descifre ahora el criptograma C = ?.
10. Factorice el mdulo n = 29740913. Duplicando el nmero de dgitos de p
y q, obtenemos el mdulo de 16 dgitos n = 1479905711715731. Factorice
este valor y observe que ahora tardar casi un minuto.
11. Para la clave (p, q, e) dada (41, 137, 19) realizar un ataque por paradoja de
cumpleaos introduciendo el mensaje M = Vale. Reptalo varias veces.
Jorge Rami Aguirre
Pgina 88
Pgina 89
Software
http://www.slproweb.com/products/Win32OpenSSL.html
OpenSSL:
1. Una vez instalado Win32OpenSSL para Windows en el disco duro, en la
carpeta C:\OpenSSL\bin y desde el smbolo del sistema MSDOS genere
una clave RSA de 1.024 bits mediante el comando: openssl genrsa 1024.
Observe que una vez creada la clave nos indica e is 65537 (0x10001).
2. Cree una nueva clave RSA guardando la clave en un archivo de nombre
rsakey con el comando: openssl genrsa -out rsakey 1024.
3. Recupere ahora esa clave y gurdela en un archivo en formato
hexadecimal de nombre claveRSA1: openssl rsa -in rsakey -text -out
claveRSA1. Si no desea incluir en el archivo la clave privada, agregue la
opcin -noout.
4. Edite claveRSA1 con Word o WordPad, elimine todos los : y elimine
luego los cuatro espacios en blanco de forma que los valores de p y de q
en hexadecimal estn cada uno en una sola cadena. Pegue esos valores de
p y de q en el programa genRSA, con e = 10001, genere y observe la
clave.
5. Repita los puntos
2, 3 y 4 hasta encontrar una clave de baja calidad.
Jorge Rami Aguirre
Madrid (Espaa) 2006