Your SlideShare is downloading. ×
Rompiendo llaves RSA explícitamente con OpenSSL [GuadalajaraCON 2012]
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Rompiendo llaves RSA explícitamente con OpenSSL [GuadalajaraCON 2012]

12,146
views

Published on

Todo el mundo habla de lo vulnerable que es RSA y de la importancia de los números primos envueltos en las llaves, muchos saben que la seguridad radica en la dificultad de factorizar, hace poco en …

Todo el mundo habla de lo vulnerable que es RSA y de la importancia de los números primos envueltos en las llaves, muchos saben que la seguridad radica en la dificultad de factorizar, hace poco en twitter a muchos les interesó el cómo se hace, ahora lo mostrasre en GuadalajaraCON para que lo hagan ustedes.

Hablaremos de cómo funciona RSA y romperemos una llave al azar en tiempo real generada con OpenSSL, reconstruiremos la llave privada dada la pública y analizaremos la matemática detrás de este problema.

Vamos a romper una llave RSA de 256 bits la cual no es tan grande pero tampoco es tristemente pequeña en menos de 5 minutos. Una razón mas para investigar más con otro tipo de esquemas de logaritmo discreto como los que mostraré en mi otra conferencia y de los cuales me la paso dando charlas sobre Jacobianas con curvas algebraicas u otras variedades abelianas.

GUADALAJARACON 2012
http://www.guadalajaracon.org

Guadalajara, Jalisco, México - 20 y 21 de abril del 2012


0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
12,146
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
31
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Rompiendo llaves RSA expl´ ıcitamente con OpenSSL Eduardo Ruiz Duarte Facultad de Ciencias UNAM 21 de Abril 2012, GuadalajaraCON M´xico e 21 de Abril 2012, GuadalajaraCON M´xico eEduardo Ruiz Duarte (Facultad de Ciencias UNAM) Rompiendo llaves RSA expl´ ıcitamente con OpenSSL / 19
  • 2. Agenda Criptograf´ asim´trica y conceptos fundamentales ıa e RSA Criptoan´lisis expl´ a ıcito de una llave generada con OpenSSL 256 bits Conclusiones 21 de Abril 2012, GuadalajaraCON M´xico eEduardo Ruiz Duarte (Facultad de Ciencias UNAM) Rompiendo llaves RSA expl´ ıcitamente con OpenSSL / 19
  • 3. Introducci´n o En las telecomunicaciones hay dos tipos de cifrado muy importantes Sim´trico: Utiliza la misma llave para cifrar y descifrar e Dk (Ek (x)) = x Asim´trico: Utiliza una llave para cifrar y otra para descifrar e Ds (Ep (x)) = x 21 de Abril 2012, GuadalajaraCON M´xico eEduardo Ruiz Duarte (Facultad de Ciencias UNAM) Rompiendo llaves RSA expl´ ıcitamente con OpenSSL / 19
  • 4. Introducci´n o Sim´tricos El sim´trico generalmente se usa para cifrar flujos de e e informaci´n, y estos suelen ser muy rapidos. o ´ Este tiene una desventaja, requiere una negociaci´n previa de una llave, Y o si las entidades est´n separadas, esta llave se tendr´ que negociarse a a ıa trav´s de un medio no seguro, lo cual ser´ absurdo. e ıa Ejemplos de algoritmos sim´tricos e Rijndael-AES, Blowfish, TEA, A5 21 de Abril 2012, GuadalajaraCON M´xico eEduardo Ruiz Duarte (Facultad de Ciencias UNAM) Rompiendo llaves RSA expl´ ıcitamente con OpenSSL / 19
  • 5. Introducci´n o Asim´tricos Aqu´ hay dos llaves, p´blica y privada, la p´blica se usa para e ı u u cifrar y la privada para descifrar unicamente, a partir de la llave p´blica es ´ u Turing-intratable el problema de calcular la llave privada utilizando algoritmos asim´tricos basados en factorizaci´n en n´meros primos o el e o u problema de logaritmo discreto en ciertos grupos Ejemplos de algoritmos asim´tricos e RSA, Elgamal, XTR, Diffie-Hellman 21 de Abril 2012, GuadalajaraCON M´xico eEduardo Ruiz Duarte (Facultad de Ciencias UNAM) Rompiendo llaves RSA expl´ ıcitamente con OpenSSL / 19
  • 6. Introducci´n o Asim´tricos Estos algoritmos son muy importantes en internet ya que e proveen la manera de cifrar y firmar datos entre dos entidades sin la necesidad de negociaci´n de password, muchos servicios usan esto, y tal o vez sin darte cuenta usas criptograf´ asim´trica diario ıa e 21 de Abril 2012, GuadalajaraCON M´xico eEduardo Ruiz Duarte (Facultad de Ciencias UNAM) Rompiendo llaves RSA expl´ ıcitamente con OpenSSL / 19
  • 7. Conceptos b´sicos a N´mero primo: Un n´mero primo n > 1 es aquel que no se puede u u descomponer como multiplicaci´n de otros n´meros (s´lamente como o u o n ∗ 1), dicho de otra manera, s´lo tiene dos divisores, n y 1 o m´ximo com´n divisor: El m´ximo com´n divisor (mcd) de dos n´meros a u a u u x,y es el m´ximo n´mero que divide a ambos sin dejar residuo a u Funci´n φ(n): Esta funci´n φ(n) nos dice cuantos n´meros menores que o o u n tienen como m´ximo com´n divisor al 1 s´lamente, o sea, cuantos a u o n´meros menores que n son primos relativos con n u 21 de Abril 2012, GuadalajaraCON M´xico eEduardo Ruiz Duarte (Facultad de Ciencias UNAM) Rompiendo llaves RSA expl´ ıcitamente con OpenSSL / 19
  • 8. Conceptos b´sicos a Ejemplos: primos 2, 3, 11, 29, 233 M´ximo com´n divisor a u mcd(48, 60) = 12 ya que el 12 es el m´ximo divisor de ambos a Funci´n φ(n) o φ(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´xico eEduardo Ruiz Duarte (Facultad de Ciencias UNAM) Rompiendo llaves RSA expl´ ıcitamente con OpenSSL / 19
  • 9. Conceptos b´sicos a Aritm´tica modular La artim´tica modular sobre Z resumida en un slide e e es operar enteros en un conjunto acotado, es decir a ∗ b ≡ c mod n por lo que c es el n´mero m´s chico que cumple que (a ∗ b) − c es m´ltiplo de n, u a u esto es muy f´cil calcularlo, veamos un ejemplo a 21 de Abril 2012, GuadalajaraCON M´xico eEduardo Ruiz Duarte (Facultad de Ciencias UNAM) Rompiendo llaves RSA expl´ ıcitamente con OpenSSL / 19
  • 10. Conceptos b´sicos a Aritm´tica modular e 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´xico eEduardo Ruiz Duarte (Facultad de Ciencias UNAM) Rompiendo llaves RSA expl´ ıcitamente con OpenSSL / 19
  • 11. RSA Generaci´n de llaves: o Se escogen dos dos n´meros primos aleatorios (p, q) u Se computa n = pq este nombre ser´ el m´dulo a o 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) ser´ la llave privada y (e, n) la llave p´blica a u 21 de Abril 2012, GuadalajaraCON M´xico eEduardo Ruiz Duarte (Facultad de Ciencias UNAM) Rompiendo llaves RSA expl´ ıcitamente con OpenSSL / 19
  • 12. RSA Cifrado A recibir´ M entonces A le manda a B su llave p´blica (e, n) a u B computa c = M e mod n y le manda c a A 21 de Abril 2012, GuadalajaraCON M´xico eEduardo Ruiz Duarte (Facultad de Ciencias UNAM) Rompiendo llaves RSA expl´ ıcitamente con OpenSSL / 19
  • 13. 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´xico eEduardo Ruiz Duarte (Facultad de Ciencias UNAM) Rompiendo llaves RSA expl´ ıcitamente con OpenSSL / 19
  • 14. RSA Seguridad Si un atacante obtiene la llave p´blica (e, n) tenemos que u d =e −1 mod φ(n) lo que es lo mismo que d = e −1 mod (p − 1)(q − 1) Esta persona tendr´ que factorizar n = pq para poder calcular e −1 mod a (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 pueden calcular los factores de un entero en tiempo polinomial, al menos con una computaora no cu´ntica a 21 de Abril 2012, GuadalajaraCON M´xico eEduardo Ruiz Duarte (Facultad de Ciencias UNAM) Rompiendo llaves RSA expl´ ıcitamente con OpenSSL / 19
  • 15. RSA Conjeturas El problema m´s importante de la historia de las matem´ticas a a modernas, actualmente sin responder, es la hip´tesis de Riemann la cual o como corolario nos dice que tan densos son los n´meros primos usando la u funci´n zeta de Riemann, este problema de los n´meros primos se ha ido o u resolviendo a ”maquinazos” haciendo cada d´ el uso de las llaves m´s ıa a grandes por lo que esto implica mayor c´mputo, por lo que existen mejores o problemas para criptograf´ asim´trica como lo es el problema del ıa e logaritmo discreto el cual veremos en mi otra presentaci´n o 21 de Abril 2012, GuadalajaraCON M´xico eEduardo Ruiz Duarte (Facultad de Ciencias UNAM) Rompiendo llaves RSA expl´ ıcitamente con OpenSSL / 19
  • 16. Rompiendo una llave OpenSSL OpenSSL es el standard de SSL libre que se usa actualmente para asegurar confidencialidad en sitios de internet por ejemplo ´ste tiene una interfaz e 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´xico eEduardo Ruiz Duarte (Facultad de Ciencias UNAM) Rompiendo llaves RSA expl´ ıcitamente con OpenSSL / 19
  • 17. 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´blica pub.pem con la privada, es decir (e, n) u openssl rsa -in privada.pem -pubout -out pub.pem Para extraer el m´dulo : o openssl rsa -in pub.pem -pubin -text -modulus El m´dulo nos los da o en hex por lo que para convertirlo a decimal: echo ”ibase=16; 9ABAAD5BBE954A26BB1F9871865F”—bc Factorizamos: msieve -v 3138281169008962629484387769615967 Generamos la llave privada en formato PEM con los dos factores: http://math.co.ro/cgi- bin/genpriv?p=FACTOR1&q=FACTOR2&e=EXP 21 de Abril 2012, GuadalajaraCON M´xico eEduardo Ruiz Duarte (Facultad de Ciencias UNAM) Rompiendo llaves RSA expl´ ıcitamente con OpenSSL / 19
  • 18. Rompiendo una llave OpenSSL Con esto tendremos una llave en este formato que solo habremos generado con informaci´n de la p´blica y tambi´n nos servir´ para descifrar nuestro o u e a 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´xico eEduardo Ruiz Duarte (Facultad de Ciencias UNAM) Rompiendo llaves RSA expl´ ıcitamente con OpenSSL / 19
  • 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´xico eEduardo Ruiz Duarte (Facultad de Ciencias UNAM) Rompiendo llaves RSA expl´ ıcitamente con OpenSSL / 19