SlideShare una empresa de Scribd logo
1 de 19
Descargar para leer sin conexión
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
                                                                                                                       e
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
                                           Rompiendo llaves RSA expl´
                                                                    ıcitamente con OpenSSL                               / 19
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
                                                                                                                       e
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
                                           Rompiendo llaves RSA expl´
                                                                    ıcitamente con OpenSSL                               / 19
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
                                                                                                                       e
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
                                           Rompiendo llaves RSA expl´
                                                                    ıcitamente con OpenSSL                               / 19
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
                                                                                                                       e
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
                                           Rompiendo llaves RSA expl´
                                                                    ıcitamente con OpenSSL                               / 19
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
                                                                                                                       e
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
                                           Rompiendo llaves RSA expl´
                                                                    ıcitamente con OpenSSL                               / 19
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
                                                                                                                       e
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
                                           Rompiendo llaves RSA expl´
                                                                    ıcitamente con OpenSSL                               / 19
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
                                                                                                                       e
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
                                           Rompiendo llaves RSA expl´
                                                                    ıcitamente con OpenSSL                               / 19
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
                                                                                                                       e
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
                                           Rompiendo llaves RSA expl´
                                                                    ıcitamente con OpenSSL                               / 19
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
                                                                                                                       e
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
                                           Rompiendo llaves RSA expl´
                                                                    ıcitamente con OpenSSL                               / 19
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
                                                                                                                       e
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
                                           Rompiendo llaves RSA expl´
                                                                    ıcitamente con OpenSSL                               / 19
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
                                                                                                                       e
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
                                           Rompiendo llaves RSA expl´
                                                                    ıcitamente con OpenSSL                               / 19
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
                                                                                                                       e
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
                                           Rompiendo llaves RSA expl´
                                                                    ıcitamente 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´xico
                                                                                                                       e
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
                                           Rompiendo llaves RSA expl´
                                                                    ıcitamente con OpenSSL                               / 19
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
                                                                                                                       e
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
                                           Rompiendo llaves RSA expl´
                                                                    ıcitamente con OpenSSL                               / 19
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
                                                                                                                       e
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
                                           Rompiendo llaves RSA expl´
                                                                    ıcitamente 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 ´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
                                                                                                                       e
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
                                           Rompiendo llaves RSA expl´
                                                                    ıcitamente 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´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
                                                                                                                       e
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
                                           Rompiendo llaves RSA expl´
                                                                    ıcitamente con OpenSSL                               / 19
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
                                                                                                                       e
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
                                           Rompiendo llaves RSA expl´
                                                                    ıcitamente 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´xico
                                                                                                                       e
Eduardo Ruiz Duarte (Facultad de Ciencias UNAM)
                                           Rompiendo llaves RSA expl´
                                                                    ıcitamente con OpenSSL                               / 19

Más contenido relacionado

Destacado

DotDotPwn v3.0 [GuadalajaraCON 2012]
DotDotPwn v3.0 [GuadalajaraCON 2012]DotDotPwn v3.0 [GuadalajaraCON 2012]
DotDotPwn v3.0 [GuadalajaraCON 2012]Websec México, S.C.
 
Hide and Find Rootkits in Linux [GuadalajaraCON 2012]
Hide and Find Rootkits in Linux [GuadalajaraCON 2012]Hide and Find Rootkits in Linux [GuadalajaraCON 2012]
Hide and Find Rootkits in Linux [GuadalajaraCON 2012]Websec México, S.C.
 
Criptografía Experimental [GuadalajaraCON 2012]
Criptografía Experimental [GuadalajaraCON 2012]Criptografía Experimental [GuadalajaraCON 2012]
Criptografía Experimental [GuadalajaraCON 2012]Websec México, S.C.
 
Escaneo de puertos distribuido [GuadalajaraCON 2012]
Escaneo de puertos distribuido [GuadalajaraCON 2012]Escaneo de puertos distribuido [GuadalajaraCON 2012]
Escaneo de puertos distribuido [GuadalajaraCON 2012]Websec México, S.C.
 
Laboratorio de Análisis de Malware [GuadalajaraCON 2012]
Laboratorio de Análisis de Malware [GuadalajaraCON 2012]Laboratorio de Análisis de Malware [GuadalajaraCON 2012]
Laboratorio de Análisis de Malware [GuadalajaraCON 2012]Websec México, S.C.
 
Criptografía vs esteganografía [GuadalajaraCON 2012]
Criptografía vs esteganografía [GuadalajaraCON 2012]Criptografía vs esteganografía [GuadalajaraCON 2012]
Criptografía vs esteganografía [GuadalajaraCON 2012]Websec México, S.C.
 
Detectando intrusiones en la red [GuadalajaraCON 2012]
Detectando intrusiones en la red [GuadalajaraCON 2012]Detectando intrusiones en la red [GuadalajaraCON 2012]
Detectando intrusiones en la red [GuadalajaraCON 2012]Websec México, S.C.
 
Cazando Predadores en Internet [GuadalajaraCON 2012]
Cazando Predadores en Internet [GuadalajaraCON 2012]Cazando Predadores en Internet [GuadalajaraCON 2012]
Cazando Predadores en Internet [GuadalajaraCON 2012]Websec México, S.C.
 

Destacado (8)

DotDotPwn v3.0 [GuadalajaraCON 2012]
DotDotPwn v3.0 [GuadalajaraCON 2012]DotDotPwn v3.0 [GuadalajaraCON 2012]
DotDotPwn v3.0 [GuadalajaraCON 2012]
 
Hide and Find Rootkits in Linux [GuadalajaraCON 2012]
Hide and Find Rootkits in Linux [GuadalajaraCON 2012]Hide and Find Rootkits in Linux [GuadalajaraCON 2012]
Hide and Find Rootkits in Linux [GuadalajaraCON 2012]
 
Criptografía Experimental [GuadalajaraCON 2012]
Criptografía Experimental [GuadalajaraCON 2012]Criptografía Experimental [GuadalajaraCON 2012]
Criptografía Experimental [GuadalajaraCON 2012]
 
Escaneo de puertos distribuido [GuadalajaraCON 2012]
Escaneo de puertos distribuido [GuadalajaraCON 2012]Escaneo de puertos distribuido [GuadalajaraCON 2012]
Escaneo de puertos distribuido [GuadalajaraCON 2012]
 
Laboratorio de Análisis de Malware [GuadalajaraCON 2012]
Laboratorio de Análisis de Malware [GuadalajaraCON 2012]Laboratorio de Análisis de Malware [GuadalajaraCON 2012]
Laboratorio de Análisis de Malware [GuadalajaraCON 2012]
 
Criptografía vs esteganografía [GuadalajaraCON 2012]
Criptografía vs esteganografía [GuadalajaraCON 2012]Criptografía vs esteganografía [GuadalajaraCON 2012]
Criptografía vs esteganografía [GuadalajaraCON 2012]
 
Detectando intrusiones en la red [GuadalajaraCON 2012]
Detectando intrusiones en la red [GuadalajaraCON 2012]Detectando intrusiones en la red [GuadalajaraCON 2012]
Detectando intrusiones en la red [GuadalajaraCON 2012]
 
Cazando Predadores en Internet [GuadalajaraCON 2012]
Cazando Predadores en Internet [GuadalajaraCON 2012]Cazando Predadores en Internet [GuadalajaraCON 2012]
Cazando Predadores en Internet [GuadalajaraCON 2012]
 

Más de Websec México, S.C.

Ciberseguridad durante la pandemia [Paulino Calderon]
Ciberseguridad durante la pandemia [Paulino Calderon]Ciberseguridad durante la pandemia [Paulino Calderon]
Ciberseguridad durante la pandemia [Paulino Calderon]Websec México, S.C.
 
OWASP IoTGoat - Enseñando a desarrolladores IoT a crear productos seguros - P...
OWASP IoTGoat - Enseñando a desarrolladores IoT a crear productos seguros - P...OWASP IoTGoat - Enseñando a desarrolladores IoT a crear productos seguros - P...
OWASP IoTGoat - Enseñando a desarrolladores IoT a crear productos seguros - P...Websec México, S.C.
 
Estadisticas de redes 802.11 en Mexico (2013) por Paulino Calderon
Estadisticas de redes 802.11 en Mexico (2013) por Paulino CalderonEstadisticas de redes 802.11 en Mexico (2013) por Paulino Calderon
Estadisticas de redes 802.11 en Mexico (2013) por Paulino CalderonWebsec México, S.C.
 
Derrotando a changos con scanners [Paulino Calderon]
Derrotando a changos con scanners [Paulino Calderon]Derrotando a changos con scanners [Paulino Calderon]
Derrotando a changos con scanners [Paulino Calderon]Websec México, S.C.
 
Old fox new tricks malicious macros are back
Old fox new tricks malicious macros are backOld fox new tricks malicious macros are back
Old fox new tricks malicious macros are backWebsec México, S.C.
 
Explotación de vulnerabilidades recientes de Windows - Agosto 2017
Explotación de vulnerabilidades recientes de Windows - Agosto 2017Explotación de vulnerabilidades recientes de Windows - Agosto 2017
Explotación de vulnerabilidades recientes de Windows - Agosto 2017Websec México, S.C.
 
Mi experiencia en el programa Google Summer of Code
Mi experiencia en el programa Google Summer of CodeMi experiencia en el programa Google Summer of Code
Mi experiencia en el programa Google Summer of CodeWebsec México, S.C.
 
Escribiendo firmas para el sistema de detección de versiones de Nmap
Escribiendo firmas para el sistema de detección de versiones de NmapEscribiendo firmas para el sistema de detección de versiones de Nmap
Escribiendo firmas para el sistema de detección de versiones de NmapWebsec México, S.C.
 
El porqué está fallando tu programa de seguridad informática por Paulino Cald...
El porqué está fallando tu programa de seguridad informática por Paulino Cald...El porqué está fallando tu programa de seguridad informática por Paulino Cald...
El porqué está fallando tu programa de seguridad informática por Paulino Cald...Websec México, S.C.
 
Pwning corporate networks in a single day by Paulino Calderon Pale
Pwning corporate networks in a single day by Paulino Calderon PalePwning corporate networks in a single day by Paulino Calderon Pale
Pwning corporate networks in a single day by Paulino Calderon PaleWebsec México, S.C.
 
CPMX7 Pwneando redes informáticas por Paulino Calderon
CPMX7 Pwneando redes informáticas por Paulino CalderonCPMX7 Pwneando redes informáticas por Paulino Calderon
CPMX7 Pwneando redes informáticas por Paulino CalderonWebsec México, S.C.
 
Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...
Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...
Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...Websec México, S.C.
 
Explotación práctica de señales de radio por Luis Colunga
Explotación práctica de señales de radio por Luis ColungaExplotación práctica de señales de radio por Luis Colunga
Explotación práctica de señales de radio por Luis ColungaWebsec México, S.C.
 
Pentesting 101 por Paulino Calderon
Pentesting 101 por Paulino CalderonPentesting 101 por Paulino Calderon
Pentesting 101 por Paulino CalderonWebsec México, S.C.
 
Obtener contraseñas del directorio activo por hkm
Obtener contraseñas del directorio activo por hkmObtener contraseñas del directorio activo por hkm
Obtener contraseñas del directorio activo por hkmWebsec México, S.C.
 
Recuperacion de defaces con versionador Git por Alevsk
Recuperacion de defaces con versionador Git por Alevsk Recuperacion de defaces con versionador Git por Alevsk
Recuperacion de defaces con versionador Git por Alevsk Websec México, S.C.
 
Seguridad en Bitcoin por Luis Daniel Beltran
Seguridad en Bitcoin por Luis Daniel BeltranSeguridad en Bitcoin por Luis Daniel Beltran
Seguridad en Bitcoin por Luis Daniel BeltranWebsec México, S.C.
 
CPMX5 - Hacking like a boss por Roberto Salgado
CPMX5 - Hacking like a boss por Roberto SalgadoCPMX5 - Hacking like a boss por Roberto Salgado
CPMX5 - Hacking like a boss por Roberto SalgadoWebsec México, S.C.
 
CPMX5 - Las nuevas generaciones de redes por Luis Colunga
CPMX5 - Las nuevas generaciones de redes por Luis ColungaCPMX5 - Las nuevas generaciones de redes por Luis Colunga
CPMX5 - Las nuevas generaciones de redes por Luis ColungaWebsec México, S.C.
 

Más de Websec México, S.C. (20)

Ciberseguridad durante la pandemia [Paulino Calderon]
Ciberseguridad durante la pandemia [Paulino Calderon]Ciberseguridad durante la pandemia [Paulino Calderon]
Ciberseguridad durante la pandemia [Paulino Calderon]
 
OWASP IoTGoat - Enseñando a desarrolladores IoT a crear productos seguros - P...
OWASP IoTGoat - Enseñando a desarrolladores IoT a crear productos seguros - P...OWASP IoTGoat - Enseñando a desarrolladores IoT a crear productos seguros - P...
OWASP IoTGoat - Enseñando a desarrolladores IoT a crear productos seguros - P...
 
Estadisticas de redes 802.11 en Mexico (2013) por Paulino Calderon
Estadisticas de redes 802.11 en Mexico (2013) por Paulino CalderonEstadisticas de redes 802.11 en Mexico (2013) por Paulino Calderon
Estadisticas de redes 802.11 en Mexico (2013) por Paulino Calderon
 
Derrotando a changos con scanners [Paulino Calderon]
Derrotando a changos con scanners [Paulino Calderon]Derrotando a changos con scanners [Paulino Calderon]
Derrotando a changos con scanners [Paulino Calderon]
 
Old fox new tricks malicious macros are back
Old fox new tricks malicious macros are backOld fox new tricks malicious macros are back
Old fox new tricks malicious macros are back
 
Explotación de vulnerabilidades recientes de Windows - Agosto 2017
Explotación de vulnerabilidades recientes de Windows - Agosto 2017Explotación de vulnerabilidades recientes de Windows - Agosto 2017
Explotación de vulnerabilidades recientes de Windows - Agosto 2017
 
Mi experiencia en el programa Google Summer of Code
Mi experiencia en el programa Google Summer of CodeMi experiencia en el programa Google Summer of Code
Mi experiencia en el programa Google Summer of Code
 
Escribiendo firmas para el sistema de detección de versiones de Nmap
Escribiendo firmas para el sistema de detección de versiones de NmapEscribiendo firmas para el sistema de detección de versiones de Nmap
Escribiendo firmas para el sistema de detección de versiones de Nmap
 
El porqué está fallando tu programa de seguridad informática por Paulino Cald...
El porqué está fallando tu programa de seguridad informática por Paulino Cald...El porqué está fallando tu programa de seguridad informática por Paulino Cald...
El porqué está fallando tu programa de seguridad informática por Paulino Cald...
 
Pwning corporate networks in a single day by Paulino Calderon Pale
Pwning corporate networks in a single day by Paulino Calderon PalePwning corporate networks in a single day by Paulino Calderon Pale
Pwning corporate networks in a single day by Paulino Calderon Pale
 
CPMX7 Pwneando redes informáticas por Paulino Calderon
CPMX7 Pwneando redes informáticas por Paulino CalderonCPMX7 Pwneando redes informáticas por Paulino Calderon
CPMX7 Pwneando redes informáticas por Paulino Calderon
 
Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...
Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...
Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...
 
Explotación práctica de señales de radio por Luis Colunga
Explotación práctica de señales de radio por Luis ColungaExplotación práctica de señales de radio por Luis Colunga
Explotación práctica de señales de radio por Luis Colunga
 
Pentesting 101 por Paulino Calderon
Pentesting 101 por Paulino CalderonPentesting 101 por Paulino Calderon
Pentesting 101 por Paulino Calderon
 
Obtener contraseñas del directorio activo por hkm
Obtener contraseñas del directorio activo por hkmObtener contraseñas del directorio activo por hkm
Obtener contraseñas del directorio activo por hkm
 
OSINT vs CIBERCRIMEN por nickops
OSINT vs CIBERCRIMEN por nickopsOSINT vs CIBERCRIMEN por nickops
OSINT vs CIBERCRIMEN por nickops
 
Recuperacion de defaces con versionador Git por Alevsk
Recuperacion de defaces con versionador Git por Alevsk Recuperacion de defaces con versionador Git por Alevsk
Recuperacion de defaces con versionador Git por Alevsk
 
Seguridad en Bitcoin por Luis Daniel Beltran
Seguridad en Bitcoin por Luis Daniel BeltranSeguridad en Bitcoin por Luis Daniel Beltran
Seguridad en Bitcoin por Luis Daniel Beltran
 
CPMX5 - Hacking like a boss por Roberto Salgado
CPMX5 - Hacking like a boss por Roberto SalgadoCPMX5 - Hacking like a boss por Roberto Salgado
CPMX5 - Hacking like a boss por Roberto Salgado
 
CPMX5 - Las nuevas generaciones de redes por Luis Colunga
CPMX5 - Las nuevas generaciones de redes por Luis ColungaCPMX5 - Las nuevas generaciones de redes por Luis Colunga
CPMX5 - Las nuevas generaciones de redes por Luis Colunga
 

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

  • 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 e Eduardo 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 e Eduardo 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 e Eduardo 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 e Eduardo 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 e Eduardo 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 e Eduardo 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 e Eduardo 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 e Eduardo 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 e Eduardo 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 e Eduardo 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 e Eduardo 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 e Eduardo 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 e Eduardo 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 e Eduardo 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 e Eduardo 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 e Eduardo 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 e Eduardo 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 e Eduardo 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 e Eduardo Ruiz Duarte (Facultad de Ciencias UNAM) Rompiendo llaves RSA expl´ ıcitamente con OpenSSL / 19