Está en la página 1de 19

Rompiendo llaves RSA explcitamente con OpenSSL

Eduardo Ruiz Duarte


Facultad de Ciencias UNAM

21 de Abril 2012, GuadalajaraCON Mexico

21 de Abril 2012, GuadalajaraCON M


exico
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
Rompiendo llaves RSA explcitamente con OpenSSL
/ 19

Agenda

Criptografa asimetrica y conceptos fundamentales


RSA
Criptoanalisis explcito de una llave generada con OpenSSL 256 bits
Conclusiones

21 de Abril 2012, GuadalajaraCON M


exico
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
Rompiendo llaves RSA explcitamente con OpenSSL
/ 19

Introduccion

En las telecomunicaciones hay dos tipos de cifrado muy importantes


Simetrico: Utiliza la misma llave para cifrar y descifrar
Dk (Ek (x)) = x
Asimetrico: Utiliza una llave para cifrar y otra para descifrar
Ds (Ep (x)) = x

21 de Abril 2012, GuadalajaraCON M


exico
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
Rompiendo llaves RSA explcitamente con OpenSSL
/ 19

Introduccion

Sim
etricos El simetrico generalmente se usa para cifrar flujos de
informacion, y estos suelen ser muy rapidos.

Este
tiene una desventaja, requiere una negociacion previa de una llave, Y
si las entidades estan separadas, esta llave se tendra que negociarse a
traves de un medio no seguro, lo cual sera absurdo.
Ejemplos de algoritmos simetricos
Rijndael-AES, Blowfish, TEA, A5

21 de Abril 2012, GuadalajaraCON M


exico
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
Rompiendo llaves RSA explcitamente con OpenSSL
/ 19

Introduccion

Asim
etricos Aqu hay dos llaves, p
ublica y privada, la p
ublica se usa para
cifrar y la privada para descifrar u
nicamente, a partir de la llave p
ublica es
Turing-intratable el problema de calcular la llave privada utilizando
algoritmos asimetricos basados en factorizacion en n
umeros primos o el
problema de logaritmo discreto en ciertos grupos
Ejemplos de algoritmos asimetricos
RSA, Elgamal, XTR, Diffie-Hellman

21 de Abril 2012, GuadalajaraCON M


exico
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
Rompiendo llaves RSA explcitamente con OpenSSL
/ 19

Introduccion

Asim
etricos Estos algoritmos son muy importantes en internet ya que
proveen la manera de cifrar y firmar datos entre dos entidades sin la
necesidad de negociacion de password, muchos servicios usan esto, y tal
vez sin darte cuenta usas criptografa asimetrica diario

21 de Abril 2012, GuadalajaraCON M


exico
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
Rompiendo llaves RSA explcitamente con OpenSSL
/ 19

Conceptos basicos

N
umero primo: Un n
umero primo n > 1 es aquel que no se puede
descomponer como multiplicacion de otros n
umeros (solamente como
n 1), dicho de otra manera, s
olo tiene dos divisores, n y 1
m
aximo com
un divisor: El m
aximo com
un divisor (mcd) de dos n
umeros
x,y es el maximo n
umero que divide a ambos sin dejar residuo
Funci
on (n): Esta funcion (n) nos dice cuantos n
umeros menores que
n tienen como maximo com
un divisor al 1 s
olamente, o sea, cuantos
n
umeros menores que n son primos relativos con n

21 de Abril 2012, GuadalajaraCON M


exico
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
Rompiendo llaves RSA explcitamente con OpenSSL
/ 19

Conceptos basicos
Ejemplos:
primos
2, 3, 11, 29, 233
M
aximo com
un divisor
mcd(48, 60) = 12 ya que el 12 es el m
aximo divisor de ambos
Funci
on (n)
(9) = 6 ya que #A = {1, 2, 4, 5, 7, 8} = 6 y mcd(i , 9) = 1 i A
(p) = p 1 para p primo
(pq) = (p q)(q 1) para p, q primos

21 de Abril 2012, GuadalajaraCON M


exico
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
Rompiendo llaves RSA explcitamente con OpenSSL
/ 19

Conceptos basicos

Aritm
etica modular La artimetica modular sobre Z resumida en un slide
es operar enteros en un conjunto acotado, es decir a b c mod n por lo
que c es el n
umero mas chico que cumple que (a b) c es m
ultiplo de n,
esto es muy facil calcularlo, veamos un ejemplo

21 de Abril 2012, GuadalajaraCON M


exico
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
Rompiendo llaves RSA explcitamente con OpenSSL
/ 19

Conceptos basicos

Aritmetica modular
5 3 1 mod 2 ya que 5 3 es 15 y el residuo de 15 entre 2 es 1 9 2 3
mod 5 ya que 9 2 es 18 y el residuo de 18 entre 5 es 3

21 de Abril 2012, GuadalajaraCON M


exico
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
Rompiendo llaves RSA explcitamente con OpenSSL
/ 19

RSA

Generaci
on de llaves:
Se escogen dos dos n
umeros primos aleatorios (p, q)
Se computa n = pq este nombre ser
a el m
odulo
Se computa (n) = (p 1)(q 1)
Se escoge un e tal que 1 e < (n) y mcd((n), e) = 1
Se computa d tal que d e 1 mod (n)
Ahora (d, p, q) sera la llave privada y (e, n) la llave p
ublica

21 de Abril 2012, GuadalajaraCON M


exico
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
Rompiendo llaves RSA explcitamente con OpenSSL
/ 19

RSA

Cifrado
A recibira M entonces A le manda a B su llave p
ublica (e, n)
B computa c = M e mod n y le manda c a A

21 de Abril 2012, GuadalajaraCON M


exico
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
Rompiendo llaves RSA explcitamente con OpenSSL
/ 19

RSA

Descifrado
A para obtener M computa sobre c lo siguiente:
M = c d mod n que es lo mismo que M = (M e )d mod n
y as obtiene el mensaje M .

21 de Abril 2012, GuadalajaraCON M


exico
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
Rompiendo llaves RSA explcitamente con OpenSSL
/ 19

RSA

Seguridad Si un atacante obtiene la llave p


ublica (e, n) tenemos que
1
d = e mod (n) lo que es lo mismo que d = e 1 mod (p 1)(q 1)
Esta persona tendra que factorizar n = pq para poder calcular e 1 mod
(p 1)(q 1)
ya que se debe de saber (p 1)(q 1) para calcular e tal que ed 1 mod
(p 1)(q 1)
El problema de factorizar es no determinstico, es decir no se pueden
calcular los factores de un entero en tiempo polinomial, al menos con una
computaora no cuantica

21 de Abril 2012, GuadalajaraCON M


exico
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
Rompiendo llaves RSA explcitamente con OpenSSL
/ 19

RSA

Conjeturas El problema m
as importante de la historia de las matematicas
modernas, actualmente sin responder, es la hip
otesis de Riemann la cual
como corolario nos dice que tan densos son los n
umeros primos usando la
funcion zeta de Riemann, este problema de los n
umeros primos se ha ido
resolviendo a maquinazos haciendo cada da el uso de las llaves mas
grandes por lo que esto implica mayor c
omputo, por lo que existen mejores
problemas para criptografa asimetrica como lo es el problema del
logaritmo discreto el cual veremos en mi otra presentaci
on

21 de Abril 2012, GuadalajaraCON M


exico
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
Rompiendo llaves RSA explcitamente con OpenSSL
/ 19

Rompiendo una llave OpenSSL


OpenSSL es el standard de SSL libre que se usa actualmente para asegurar
confidencialidad en sitios de internet por ejemplo este tiene una interfaz
para generar llaves, las cuales son standares los formatos y son los que
usan los navegadores por ejemplo, veamos como funciona el cifrado y
como se generan las llaves
Creamos archivo plano de mensaje:
echo jojojo > msg.txt
Cifrado:
openssl rsautl -encrypt -pubin -inkey pubkey.pem -in msg.txt -out
msg.enc
Descifrado:
openssl rsautl -decrypt -inkey priv.pem -in msg.enc -out msg.nuevo
21 de Abril 2012, GuadalajaraCON M
exico
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
Rompiendo llaves RSA explcitamente con OpenSSL
/ 19

Rompiendo una llave OpenSSL


Para generar una llave privada priv.pem (es decir (p, q)
openssl genrsa -out privada.pem 256
Para generar una llave p
ublica pub.pem con la privada, es decir (e, n)
openssl rsa -in privada.pem -pubout -out pub.pem
Para extraer el m
odulo :
openssl rsa -in pub.pem -pubin -text -modulus El m
odulo nos los da
en hex por lo que para convertirlo a decimal:
echo ibase=16; 9ABAAD5BBE954A26BB1F9871865Fbc
Factorizamos:
msieve -v 3138281169008962629484387769615967
Generamos la llave privada en formato PEM con los dos factores:
http://math.co.ro/cgibin/genpriv?p=FACTOR1&q=FACTOR2&e=EXP
21 de Abril 2012, GuadalajaraCON M
exico
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
Rompiendo llaves RSA explcitamente con OpenSSL
/ 19

Rompiendo una llave OpenSSL

Con esto tendremos una llave en este formato que solo habremos generado
con informacion de la p
ublica y tambien nos servir
a para descifrar nuestro
ejemplo msg.enc
BEGIN RSA PRIVATE KEY
MIGsAgEAAiEAtOcoQsRl82tLz6QxHYKz/G9J0FaO408sJ2Yj/GTyVSsCAwEA
AJIb8USb48wK6Rw3/QNcwYjRJctW0ZZl4n0j6y8QFBcBAhEA4z4k7kv3F7RI
YbAICwIRAMvLxM4XkDsjvd+jGmtme2ECEQDQpainHBzeKOw1TMlQdJ6NA
G5SYwsQIkexpVC00oQIQInCIzHp3Ex91s7AV+9Dm8A==
END RSA PRIVATE KEY

21 de Abril 2012, GuadalajaraCON M


exico
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
Rompiendo llaves RSA explcitamente con OpenSSL
/ 19

Gracias! Eduardo Ruiz Duarte


beck@math.co.ro
http://math.co.ro
blog: http://b3ck.blogspot.com
twitter: @toorandom
PGP key fingerprint: 0xFEE7F2A0

21 de Abril 2012, GuadalajaraCON M


exico
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
Rompiendo llaves RSA explcitamente con OpenSSL
/ 19