rsa-120505174915-phpapp02

19
Rompiendo llaves RSA expl´ ıcitamente con OpenSSL Eduardo Ruiz Duarte Facultad de Ciencias UNAM 21 de Abril 2012, GuadalajaraCON M´ exico Eduardo Ruiz Duarte (Facultad de Ciencias UNAM) Rompiendo llaves RSA expl´ ıcitamente con OpenSSL 21 de Abril 2012, GuadalajaraCON M´ exico / 19

description

rsa-120505174915-phpapp02

Transcript of rsa-120505174915-phpapp02

Page 1: rsa-120505174915-phpapp02

Rompiendo llaves RSA explıcitamente con OpenSSL

Eduardo Ruiz Duarte

Facultad de Ciencias UNAM

21 de Abril 2012, GuadalajaraCON Mexico

Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)Rompiendo llaves RSA explıcitamente con OpenSSL21 de Abril 2012, GuadalajaraCON Mexico

/ 19

Page 2: rsa-120505174915-phpapp02

Agenda

Criptografıa asimetrica y conceptos fundamentales

RSA

Criptoanalisis explıcito de una llave generada con OpenSSL 256 bits

Conclusiones

Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)Rompiendo llaves RSA explıcitamente con OpenSSL21 de Abril 2012, GuadalajaraCON Mexico

/ 19

Page 3: rsa-120505174915-phpapp02

Introduccion

En las telecomunicaciones hay dos tipos de cifrado muy importantes

Simetrico: Utiliza la misma llave para cifrar y descifrarDk(Ek(x)) = x

Asimetrico: Utiliza una llave para cifrar y otra para descifrarDs(Ep(x)) = x

Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)Rompiendo llaves RSA explıcitamente con OpenSSL21 de Abril 2012, GuadalajaraCON Mexico

/ 19

Page 4: rsa-120505174915-phpapp02

Introduccion

Simetricos El simetrico generalmente se usa para cifrar flujos deinformacion, y estos suelen ser muy rapidos.Este tiene una desventaja, requiere una negociacion previa de una llave, Ysi las entidades estan separadas, esta llave se tendrıa que negociarse atraves de un medio no seguro, lo cual serıa absurdo.

Ejemplos de algoritmos simetricos

Rijndael-AES, Blowfish, TEA, A5

Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)Rompiendo llaves RSA explıcitamente con OpenSSL21 de Abril 2012, GuadalajaraCON Mexico

/ 19

Page 5: rsa-120505174915-phpapp02

Introduccion

Asimetricos Aquı hay dos llaves, publica y privada, la publica se usa paracifrar y la privada para descifrar unicamente, a partir de la llave publica esTuring-intratable el problema de calcular la llave privada utilizandoalgoritmos asimetricos basados en factorizacion en numeros primos o elproblema de logaritmo discreto en ciertos grupos

Ejemplos de algoritmos asimetricos

RSA, Elgamal, XTR, Diffie-Hellman

Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)Rompiendo llaves RSA explıcitamente con OpenSSL21 de Abril 2012, GuadalajaraCON Mexico

/ 19

Page 6: rsa-120505174915-phpapp02

Introduccion

Asimetricos Estos algoritmos son muy importantes en internet ya queproveen la manera de cifrar y firmar datos entre dos entidades sin lanecesidad de negociacion de password, muchos servicios usan esto, y talvez sin darte cuenta usas criptografıa asimetrica diario

Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)Rompiendo llaves RSA explıcitamente con OpenSSL21 de Abril 2012, GuadalajaraCON Mexico

/ 19

Page 7: rsa-120505174915-phpapp02

Conceptos basicos

Numero primo: Un numero primo n > 1 es aquel que no se puededescomponer como multiplicacion de otros numeros (solamente comon ∗ 1), dicho de otra manera, solo tiene dos divisores, n y 1

maximo comun divisor: El maximo comun divisor (mcd) de dos numerosx ,y es el maximo numero que divide a ambos sin dejar residuo

Funcion φ(n): Esta funcion φ(n) nos dice cuantos numeros menores quen tienen como maximo comun divisor al 1 solamente, o sea, cuantosnumeros menores que n son primos relativos con n

Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)Rompiendo llaves RSA explıcitamente con OpenSSL21 de Abril 2012, GuadalajaraCON Mexico

/ 19

Page 8: rsa-120505174915-phpapp02

Conceptos basicos

Ejemplos:

primos

2, 3, 11, 29, 233

Maximo comun divisor

mcd(48, 60) = 12 ya que el 12 es el maximo divisor de ambos

Funcion φ(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

Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)Rompiendo llaves RSA explıcitamente con OpenSSL21 de Abril 2012, GuadalajaraCON Mexico

/ 19

Page 9: rsa-120505174915-phpapp02

Conceptos basicos

Aritmetica modular La artimetica modular sobre Z resumida en un slidees operar enteros en un conjunto acotado, es decir a ∗ b ≡ c mod n por loque c es el numero mas chico que cumple que (a ∗ b)− c es multiplo de n,esto es muy facil calcularlo, veamos un ejemplo

Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)Rompiendo llaves RSA explıcitamente con OpenSSL21 de Abril 2012, GuadalajaraCON Mexico

/ 19

Page 10: rsa-120505174915-phpapp02

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 ≡ 3mod 5 ya que 9 ∗ 2 es 18 y el residuo de 18 entre 5 es 3

Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)Rompiendo llaves RSA explıcitamente con OpenSSL21 de Abril 2012, GuadalajaraCON Mexico

/ 19

Page 11: rsa-120505174915-phpapp02

RSA

Generacion de llaves:

Se escogen dos dos numeros primos aleatorios (p, q)

Se computa n = pq este nombre sera el modulo

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 publica

Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)Rompiendo llaves RSA explıcitamente con OpenSSL21 de Abril 2012, GuadalajaraCON Mexico

/ 19

Page 12: rsa-120505174915-phpapp02

RSA

Cifrado

A recibira M entonces A le manda a B su llave publica (e, n)

B computa c = Me mod n y le manda c a A

Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)Rompiendo llaves RSA explıcitamente con OpenSSL21 de Abril 2012, GuadalajaraCON Mexico

/ 19

Page 13: rsa-120505174915-phpapp02

RSA

DescifradoA para obtener M computa sobre c lo siguiente:M = cd mod n que es lo mismo que M = (Me)d mod n

y ası obtiene el mensaje M .

Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)Rompiendo llaves RSA explıcitamente con OpenSSL21 de Abril 2012, GuadalajaraCON Mexico

/ 19

Page 14: rsa-120505174915-phpapp02

RSA

Seguridad Si un atacante obtiene la llave publica (e, n) tenemos qued = e−1 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 determinıstico, es decir no se puedencalcular los factores de un entero en tiempo polinomial, al menos con unacomputaora no cuantica

Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)Rompiendo llaves RSA explıcitamente con OpenSSL21 de Abril 2012, GuadalajaraCON Mexico

/ 19

Page 15: rsa-120505174915-phpapp02

RSA

Conjeturas El problema mas importante de la historia de las matematicasmodernas, actualmente sin responder, es la hipotesis de Riemann la cualcomo corolario nos dice que tan densos son los numeros primos usando lafuncion zeta de Riemann, este problema de los numeros primos se ha idoresolviendo a ”maquinazos” haciendo cada dıa el uso de las llaves masgrandes por lo que esto implica mayor computo, por lo que existen mejoresproblemas para criptografıa asimetrica como lo es el problema dellogaritmo discreto el cual veremos en mi otra presentacion

Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)Rompiendo llaves RSA explıcitamente con OpenSSL21 de Abril 2012, GuadalajaraCON Mexico

/ 19

Page 16: rsa-120505174915-phpapp02

Rompiendo una llave OpenSSL

OpenSSL es el standard de SSL libre que se usa actualmente para asegurarconfidencialidad en sitios de internet por ejemplo este tiene una interfazpara generar llaves, las cuales son standares los formatos y son los queusan los navegadores por ejemplo, veamos como funciona el cifrado ycomo se generan las llaves

Creamos archivo plano de mensaje:echo ”jojojo” > msg.txtCifrado:openssl rsautl -encrypt -pubin -inkey pubkey.pem -in msg.txt -outmsg.encDescifrado:openssl rsautl -decrypt -inkey priv.pem -in msg.enc -out msg.nuevo

Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)Rompiendo llaves RSA explıcitamente con OpenSSL21 de Abril 2012, GuadalajaraCON Mexico

/ 19

Page 17: rsa-120505174915-phpapp02

Rompiendo una llave OpenSSL

Para generar una llave privada priv.pem (es decir (p, q)openssl genrsa -out privada.pem 256Para generar una llave publica pub.pem con la privada, es decir (e, n)openssl rsa -in privada.pem -pubout -out pub.pemPara extraer el modulo :openssl rsa -in pub.pem -pubin -text -modulus El modulo nos los daen hex por lo que para convertirlo a decimal:echo ”ibase=16; 9ABAAD5BBE954A26BB1F9871865F”—bcFactorizamos:msieve -v 3138281169008962629484387769615967Generamos la llave privada en formato PEM con los dos factores:http://math.co.ro/cgi-bin/genpriv?p=FACTOR1&q=FACTOR2&e=EXP

Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)Rompiendo llaves RSA explıcitamente con OpenSSL21 de Abril 2012, GuadalajaraCON Mexico

/ 19

Page 18: rsa-120505174915-phpapp02

Rompiendo una llave OpenSSL

Con esto tendremos una llave en este formato que solo habremos generadocon informacion de la publica y tambien nos servira para descifrar nuestroejemplo msg.enc—–BEGIN RSA PRIVATE KEY—–MIGsAgEAAiEAtOcoQsRl82tLz6QxHYKz/G9J0FaO408sJ2Yj/GTyVSsCAwEAAAJIb8USb48wK6Rw3/QNcwYjRJctW0ZZl4n0j6y8QFBcBAhEA4z4k7kv3F7RIc8GKYbAICwIRAMvLxM4XkDsjvd+jGmtme2ECEQDQpainHBzeKOw1TMlQdJ6NAhEAhiJNG5SYwsQIkexpVC00oQIQInCIzHp3Ex91s7AV+9Dm8A==—–END RSA PRIVATE KEY—–

Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)Rompiendo llaves RSA explıcitamente con OpenSSL21 de Abril 2012, GuadalajaraCON Mexico

/ 19

Page 19: rsa-120505174915-phpapp02

¡Gracias! Eduardo Ruiz [email protected]://math.co.roblog: http://b3ck.blogspot.comtwitter: @toorandomPGP key fingerprint: 0xFEE7F2A0

Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)Rompiendo llaves RSA explıcitamente con OpenSSL21 de Abril 2012, GuadalajaraCON Mexico

/ 19