Sunteți pe pagina 1din 26

Aclarando dudas sobre RSA

IV Curso de Verano de Seguridad Informtica Universidad Europea de Madrid Madrid, 29 de junio de 2011
Jorge Rami Universidad Politcnica de Madrid Director de Criptored e Intypedia Con sus protagonistas y artistas invitados

Aclarando esas dudas


Quien tenga dudas sobre RSA, por favor que de un paso al frente!

...
Nadie se mueve, PERFECTO! Pues nada, est todo muy claro. Qu bien! gracias, ha sido un verdadero placer... Seamos serios; seguro que algo nuevo podemos contar de RSA
Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami 2

Hay muchas cosas que contar


Todo nace en noviembre de 1976 con Diffie y Hellman (Stanford) Y en febrero de 1978 Rivest, Shamir y Adleman sacan buen provecho Al comienzo lo pasan verdaderamente mal con su invento Finalmente triunfan y RSA se convierte en un estndar PKCS El algoritmo y su historia tienen algunas cosas peculiares Claves privadas parejas, mensajes no cifrables, ataques tericos por la paradoja del cumpleaos, ataques por cifrado cclico El invento en realidad corresponde a Clifford Cocks 5 aos antes Pasan los aos y las cosas ya no pintan tan bien para RSA Veremos estas curiosidades con algunos ejemplos prcticos en una hora desmenuzando las 22 diapositivas siguientes.
Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami 3

pero pero

Se cifran nmeros, no mensajes


La cifra asimtrica se realiza a travs de una operacin exponencial del tipo C = AB mod n, en donde n es el cuerpo de cifra del orden de 1.024 bits, B es una clave pblica 17 bits para el intercambio de clave o la clave privada de unos 1.024 bits la para firma digital. A ser siempre un nmero N (nunca un mensaje M) y por lo general del orden de las centenas de bits, es decir decenas de bytes. Esto es as porque este tipo de cifra asimtrica es muy lenta (KB/seg comparado con MB/seg de los sistemas simtricos) y sera muy costoso en tiempo cifrar, por ejemplo, mensajes de miles de bytes. Por lo tanto, cuando se cifre con la clave pblica de destino para hacer un intercambio de clave, se tratar de un nmero N del orden de los 128 bits (la clave de sesin), y cuando se cifre con la clave privada de emisin para una firma digital, se tratar de un nmero N de 160 bits, por ejemplo un hash SHA-1 sobre el mensaje M.
Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami 4

Algoritmo de cifra asimtrica RSA


En febrero de 1978 Ron Rivest, Adi Shamir y Leonard Adleman (MIT) proponen un algoritmo de cifra de clave pblica: RSA. Pasos del algoritmo RSA 1. Cada usuario elige un grupo n = pq (pueden y de hecho son distintos). 2. Los valores p y q no se hacen pblicos. 3. Cada usuario calcula J(n) = (p-1)(q-1). 4. Cada usuario elige una clave pblica e de forma que 1 < e < J(n) y que cumpla con la condicin: mcd [e, J(n)] = 1. 5. Cada usuario calcula la clave privada d = inv [e,J(n)]. 6. Se hace pblico el grupo n y la clave e. 7. Se guarda en secreto la clave d. P cmo guardaras d en el disco duro? 8. Tambin se guardar p y q puesto que en la operacin de descifrado se usar el Teorema del Resto Chino. P Te suena esto a cuento chino? Cifra: C = NeR mod nR Firma: C = h(M)dE mod nE
5 Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami

Tamao de los parmetros en RSA


Toda la seguridad de RSA est basada en sus parmetros: los primos p y q y los valores de sus claves pblica e y privada d. El cuerpo de trabajo debe ser al menos de 1.024 bits con primos p y q de al menos 500 bits y que difieran unos cuantos dgitos. Aunque la clave pblica debe ser pequea para facilitar as las operaciones, su valor no puede ser excesivamente bajo. Se usar el 4 nmero 4 de Fermat F4 = 22 + 1 = 216 + 1 = 65.537. P Por qu crees que se propone este nmero de 17 bits, el nmero 3 o el 17? Como ed mod J(n) = 1, esto hace que la clave privada d sea un nmero superior a los 1.000 bits, por lo general cerca de 1.024. Adems, una clave e grande podra provocar un valor d pequeo. Habr que prestar tambin atencin a la generacin de los primos.
Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami 6

Descifrado con nmeros grandes


Grupo n = 91 = 713; J(n) = J(713) = (7-1)(13-1) = 72 N = 20 Elegimos e = 5 pues mcd (5,72) = 1 @ d = inv(5,72) = 29 CIFRADO: C = Ne mod n = 205 mod 91 = 3.200.000 mod 91 = 76 Calculadora bien! DESCIFRADO: N = Cd mod n = 7629 mod 91 = 20 ... 7629 muy grande Calculadora falla! Es que 7629 = 3,4961831561537578269964823512085e+54 Como 7629 es un nmero con 54 dgitos, la calculadora ya no funciona. P Cmo podramos realizar esta operacin? Y hacerla ms rpida?
1 opcin: usar reducibilidad 2 opcin: algoritmo exp. rpida

Opcin ptima: usar el Teorema del Resto Chino


Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami 7

Ataque por factorizacin de n


Qu fortaleza tendr este algoritmo ante ataques? El intruso que desee conocer la clave secreta d a partir de los valores n y e se enfrentar al Problema de la Factorizacin de Nmeros Grandes (PFNG), puesto que la solucin para conocer esa clave privada es conocer primero el valor del Indicador de Euler J(n) = (p-1)(q-1) para as poder encontrar d = inv [e, J(n)], pero para ello deber saber los valores de los primos p y q. La complejidad asociada al PFNG para un nmero n viene dada por la ecuacin eln(n) ln ln(n), donde ln es logaritmo natural. Con programas como factor.exe se puede demostrar que la accin de factorizar un nmero compuesto n = pq en funcin del tamao de la entrada tiene comportamiento no polinomial o exponencial. P Cmo explicaras esto con un ejemplo prctico?
Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami 8

Tiempo para afrontar el PFNG


Tabla para un procesador de 100 MIPS (mediado de los aos noventa). Fuente: Criptografa Digital, Jos Pastor. Prensas Univ. de Zaragoza, 1998.
N de bits (n) 60 120 256 363 442 665 N de dgitos 18 36 77 109 133 200 Das 1,7 x 10-8 1,5 x 10-5 1,0 9,0 x 102 9,4 x 104 3,8 x 108 Aos 2,5 2,5 x 102 1,0 x 106

MIPS en 2005: 15.000 MIPS. MIPS en 2011: 150.000 MIPS. Desafo RSA640 (193 dgitos) roto en noviembre de 2005 en la Universidad de Bonn. Lo que en 1998 se valoraba en un milln de aos, en 2005, slo 7 aos despus, se rompe en un tiempo equivalente a 30 aos con un PC a 2,2 GHz, mucho menos que 106/150 = 6.666 aos. No se trata de una relacin lineal Se acabaron los desafos en RSA Labs. P Casualidad, debemos estar atentos?
Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami 9

Claves privadas parejas?


Una clave privada pareja CPP dP, permite descifrar el criptograma C resultado de una cifra con la clave pblica e sin que dP sea el inverso de la clave pblica e. En el sistema RSA habr como mnimo una clave dP pareja de la clave privada d. Esto se debe a que las claves inversas e y d lo sern en J(n) y en cambio la cifra se hace en el cuerpo n. Ejemplo: Si p = 13; q = 19; n = 247, J(n) = 216 y elegimos e = 41, entonces d = inv (41, 216) = 137, que es nico. Si ciframos con la clave pblica el nmero N = 87 obtenemos C = 8741 mod 247 = 159. Luego sabemos que N = Cd mod n = 159137 mod 247 = 87 Pero tambin lo desciframos con dP = 29, 65, 101, 173, 209 y 245. Malas noticias: hay claves privadas ms pequeas que la clave pblica.
Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami 10

Preocupado por las CPP?


Si bien al generar claves RSA con libreras actuales como Crypto++ de Wei Dei (OpenSSL) aparecen claves que no pueden considerarse como ptimas ya que no se controla este hecho, hay que tener en mente que las claves privadas parejas tendrn siempre valores muy cercanos al cuerpo de J(n) es decir un tamao del orden de 2n bits. Por lo tanto, independientemente de la distribucin de estas claves desde 0 hasta n-1, se tratara de una bsqueda en un cuerpo cercano a 2n bits, en la actualidad en 21024 bits, es decir un valor inmenso para la capacidad de cmputo actual. No confundir con ataques en red como los del DES Challenge en los aos 1997 a 1999. Eso s, en todos estos temas siempre hay que estar en alerta pues en cualquier momento puede aparecer algn mtodo ptimo de ataque.
Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami 11

Clave pblica y sus claves parejas


Al trabajar en un cuerpo finito y con iguales ecuaciones de cifra con la clave pblica e y con la clave privada d, esas ecuaciones son vlidas en este otro entorno, simplemente cambiando d por e. P Tiene alguna importancia esto? Parece en principio que no es un problema puesto que todo el mundo conoce la clave pblica de la otra persona o servidor. Al cambiar slo un nmero por otro, se cumple que los valores de dichas claves parejas son similares y equivalentes en ambos entornos, el de las claves parejas pblicas y el de las claves parejas privadas.

Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami

12

Comprobacin de firma digital


Problemas con la firma digital y las claves pblicas parejas?
 Un usuario firma un hash de un mensaje con su clave privada, lo que enva al destino junto con el mensaje original. En destino se descifra con la clave pblica del emisor y se comparan los dos hash, el de emisin y el recuperado en recepcin, para dar validez a la firma.  En este escenario, esto significa que se podra dar por vlida una firma al descifrar el hash recibido con una clave pblica pareja e distinta a la inversa de la usada en emisin y dar validez a dicha firma; es decir usando alguna de las claves pblicas parejas.  Esto en s no es un ataque por lo que, al menos en este contexto y en principio, no debera considerarse como una vulnerabilidad.  Recordar: lo que ser distinto para cada par de claves son p y q.
Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami 13

Nmeros no cifrables en RSA


 Si Ne mod n = N se dice que N es un nmero no cifrable, NNC. Aunque la clave e sea vlida, el nmero N se enviar en claro.  En RSA habr como mnimo 9 nmeros no cifrables.  En el caso ms crtico, todos los nmeros del cuerpo n pueden ser no cifrables como veremos ms adelante.  Para conocer estos valores no cifrables, habr que hacer un ataque de cifrado por fuerza bruta en p y q, es decir deberemos comprobar que Xe mod p = X y Xe mod q = X con 1 < X < n-1.

Ejemplo: Sea el cuerpo n = 35 (p = 5, q = 7), con J(n) = 24 y e = 11. Dentro de los nmeros posibles {0, 34} sern no cifrables: {6, 14, 15, 20, 21, 29, 34} adems de los obvios {0, 1}. El valor n-1 (en este caso 34) ser tambin siempre no cifrable.
Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami 14

Distribucin de los NNC


Para p = 13, q = 17 y e = 7, la clave RSA generada entrega 21 nmeros no cifrables N = {0, 1, 16, 17, 35, 51, 52, 68, 69, 101, 103, 118, 120, 152, 153, 169, 170, 186, 204, 205, 220}. Observe que excepto el valor 0, los valores de los extremos siempre sumarn el valor del mdulo: 1+220 = 16+205 = 17+204 = 35+186 ... = 221 = n. Esto no es una debilidad porque el siguiente valor no cifrable que sigue al 1 es aleatorio, as como la distribucin entre los dems. Por ejemplo, para p = 6.637, q = 7.103, con e = 47, tenemos 9 NNC con esta distribucin N = {0, 1, 3.338.410, 3.338.411, 6.676.821, 40.465.790, 43.804.200, 43.804.201, 47.142.610}. Del segundo valor conocido 1, se salta a 3.338.410. P Qu pasara si n es de 1.024 bits? En la mayora de las claves se observa una y distribucin curiosa con dos nmeros seguidos. Como hay twin primes (17 y 19, 71 y 73, etc.) o primos gemelos, no podran ser stos los nmeros cuaaao?
Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami 15

Secreto en intercambio de clave


 A diferencia del nmero de claves privadas parejas, por lo general un nmero relativamente bajo y distribucin generalmente en torno a 2n bits, la cantidad de nmeros no cifrables es mucho mayor y en ciertos casos puede llegar a ser todo el cuerpo de cifra.  No obstante en este nuevo escenario debemos ser menos paranoicos: la utilizacin actual de este tipo de cifra con clave pblica de destino est en el intercambio de una clave de sesin de corta duracin, por lo que la confidencialidad de dicha clave no est en compromiso en tanto es computacionalmente imposible un ataque por fuerza bruta a ella durante el corto tiempo de validez de la misma. P Es un problema que nos descubran una clave sesin?  El nico problema es que sera fcilmente detectable pues si la cifra de Ke mod n se enva en claro, el resultado ser un nmero K de 128 bits en un cuerpo de 1.024 bits... habr centenas de ceros!
Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami 16

Firmas digitales no cifrables


Hay algn problema con la firma digital no cifrable?  Si la cantidad de nmeros no cifrables con la clave pblica (tema confidencialidad) es alto, tambin lo ser en igual proporcin el de nmeros no cifrables con la clave privada (tema autenticidad).  En este caso, significa que el hash de la firma del mensaje dentro del cuerpo de cifra n ira en claro. Aunque el hash sea de 128 bits (MD5) 160 bits (SHA1) y se cifre con la clave privada del emisor y luego se reduzca al cuerpo de cifra de 1.024 bits, la cifra ir en claro por lo que se podra apreciar claramente al tener esa cifra tener slo una centena de bits significativos... y muchos ceros a la izquierda.  Como mucho esto puede dar pistas en cuanto a que la clave del emisor podra no ser ptima pero nada ms. Recuerde que la probabilidad de que estas cosas sucedan es comparable a que juguemos durante toda nuestra vida la lotera y ganemos siempre.
Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami 17

Ataque por cifrado cclico


P se puede encontrar el nmero en claro N sin necesidad de conocer d, la clave privada del receptor? La respuesta es s parece ir en contra de la lgica. Como C = Ne mod n, realizaremos cifrados sucesivos de los criptogramas Ci resultantes con la misma clave pblica hasta obtener nuevamente el cifrado C original. Ci = Cei-1 mod n (i = 1, 2, ...) con C0 = C

Si en el cifrado isimo se encuentra el criptograma C inicial, entonces es obvio que el cifrado anterior (i-1) ser el nmero buscado. Esto se debe a que RSA es un grupo mutiplicativo. Para evitarlo hay que usar primos seguros de forma que los subgrupos de trabajo sean lo suficientemente altos.
Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami 18

Ejemplo ataque por cifrado cclico


Sea p = 13, q = 19, n = 247, J(n) = 216, e = 29 (d = 149, no conocido) El nmero a cifrar ser M = 123 C = 12329 mod 247 = 119 i Ci i = 0 C0 = 119 i = 1 C1 = 11929 mod 247 = 6 i = 2 C2 = 629 mod 247 = 93 i = 3 C3 = 9329 mod 247 = 175 i = 4 C4 = 17529 mod 247 = 54 i = 5 C5 = 5429 mod 247 = 123 en este paso an no lo sabemos i = 6 C6 = 12329 mod 247 = 119 El ataque ha prosperado muy rpidamente. Como se ha obtenido otra vez el criptograma C = 119, es obvio que el paso anterior con C = 123 se corresponda con el texto en claro. Si usamos primos seguros, el ataque debe hacer un mayor recorrido.
Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami 19

La paradoja del cumpleaos


El prximo ataque a la clave privada estar basado en este problema. Pregunta: Cul ser la confianza (probabilidad > 50%) de que en un aula con 365 personas -no se tiene en cuenta el da 29/02 de los aos bisiestos- dos de ellas al azar estn de cumpleaos en la misma fecha? Solucin: Se escribe en la pizarra los 365 das del ao y las personas entran al aula de uno en uno, borrando el da de su cumpleaos de la pizarra. Para alcanzar esa confianza del 50%, basta que entren slo 23 personas al aula. Este es un valor muy bajo, en principio inimaginable y de all el nombre de paradoja, aunque matemticamente no lo sea. Explicacin: El primero en entrar tendr una probabilidad de que su nmero no est borrado igual a n/n = 1, el segundo de (n-1)/n, etc. De esta manera, la probabilidad de no coincidencia ser pNC = n!/(n-k)!nk. Para k = 23 se tiene pNC = 0,493 y as la probabilidad de coincidencia ser igual a pC = (1- pNC) = 0,507, que es mayor que 0,5.
Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami 20

Ataque por paradoja cumpleaos


Algoritmo propuesto por Merkle y Hellman en 1981: El atacante elige dos nmeros aleatorios distintos i, j dentro del cuerpo de cifra n. Lo interesante es que elige, adems, un mensaje o nmero N cualquiera para realizar el ataque. Para i = i+1 con 2 < i < n/2 y para j = j+1 con n/2 < j < n, calcula las siguientes cifras: Ni mod n y Nj mod n. Cuando encuentra una coincidencia de igual resultado de cifra para una pareja (i, j), ser capaz de encontrar una clave privada. Si el ataque prospera, se obtiene la clave privada, una clave privada pareja, o bien un valor de clave particular conocida como falso positivo que slo sirve para descifrar el nmero elegido para el ataque, pero no un nmero genrico. Ejemplo: si p = 197, q = 233, n = 45.901 y e = 17, se obtiene una clave privada d = 16.049. Atacaremos con un nmero aleatorio N = 501.
Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami 21

Ejemplo de ataque
i Ci j Cj i Ci j Cj Mi3 = 28662 Mj22950 = 26197 Mi4 = 38550 Mj22951 = 42912 Mi5 = 35130 Mj22952 = 17244 Mi6 = 20047 Mj22953 = 9856 Mi7 = 37129 Mj22954 = 26449 Mi8 = 11724 Mj22955 = 31461 Mi9 = 44297 Mj22956 = 17918 Mi10 = 22614 Mj22957 = 26223 ... sigue en la siguiente columna Mi207 = 39938 Mj23154 = 15159 Mi208 = 42003 Mj23155 = 20994 Mi209 = 20845 Mj23156 = 6665 Mi210 = 23818 Mj23157 = 34293 Mi211 = 44459 Mj23158 = 13819 Mi212 = 11974 Mj23159 = 38169 Mi213 = 31844 Mj23160 = 27853 Mi214 = 26197 Mj23161 = 449 La clave encontrada es: 16049

Hay una colisin en el paso 214 del contador i al coincidir el valor de Ci=214 = 26.197 con el que ya haba aparecido en contador j al iniciar el ataque en su contador Cj=22950 = 26.197.
Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami 22

Un ataque distribuido en red?


El ataque basado en la paradoja del cumpleaos no sera factible realizarlo en un solo PC por la alta complejidad computacional.... pero bien podra pensarse en un algoritmo distribuido, de forma que un computador hiciera las veces de servidor y todos los dems (tal vez varios cientos de miles dentro de una botnet) actuasen como mquinas zombies clientes. El servidor tendra como funcin distribuir trozos de cifra entre los clientes en diferentes intervalos de valores i, j como los del ejemplo anterior y, adems, recibir los resultados de los clientes para detectar colisiones: sta es la funcin crtica. No se sabe si este ataque llevara un tiempo menor que el de factorizar el valor de n, para as encontrar la clave privada. No est demostrada la factibilidad real de este tipo de ataque. Pero el hecho de que hoy un certificado digital tenga una validez de dos aos e incluso ms, P podra ser un motivo de preocupacin?
Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami 23

La otra historia del algoritmo RSA


Rivest, Shamir y Adleman son los autores de RSA pero un algoritmo de cifra asimtrico basado en la dificultad de factorizar nmeros grandes como funcin unidireccional fue descubierto mucho antes... En el ao 1969 el Government Communications Headquarters (GCHQ) en Gran Bretaa comienza a trabajar en la idea de poder distribuir claves a travs de una cifra no simtrica. En 1973, el matemtico Clifford Cocks llegar a la misma conclusin que los creadores de RSA. Desgraciadamente este trabajo fue considerado como alto secreto por el gobierno britnico por lo que su contenido no se hace pblico ni se patenta como invento, algo que s hacen Diffie y Hellman en 1976 con su intercambio de claves y en 1978 otro tanto los creadores del algoritmo RSA. P Recuerdas otras paranoias relacionadas con la criptografa?
Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami 24

Ejemplo veraniego con OpenSSL


P Qu tipo de clave crees que crea OpenSSL? Justificarlo. Vamos a crear una clave RSA de nombre elveranito openssl genrsa -out elveranito 1024 Guardamos esa clave en formato texto como elveranito2 openssl rsa -in elveranito -text -out elveranito2 Editamos elveranito2 y eliminamos : y . Nos quedamos con p y q.

Pegamos p y q en genRSA y con e = 010001 generamos la clave. Y salimos de dudas sobre cmo trabaja OpenSSL. y quizs hemos aprendido alguna cosa ms sobre RSA .
Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami 25

Webs de referencia y archivos


Se recomienda descargar estos archivos y realizar prcticas
factor.exe: http://home.netcom.com/~jrhowell49/math/software.htm GRACIAS genRSA: http://www.criptored.upm.es/software/sw_m001d.htm Libro electrnico: http://www.criptored.upm.es/guiateoria/gt_m001a.htm Win32 OpenSSL: http://www.slproweb.com/products/Win32OpenSSL.html Claves elveranito generadas con OpenSSL el 28/06/2011: http://www.criptored.upm.es/descargas/elveranito.zip Abrir la clave elveranito00 con WordPad Dejar p y q como nmeros en una sola lnea y pegarlos en genRSA

Aclarando dudas sobre RSA - Junio de 2011 Jorge Rami

26

S-ar putea să vă placă și