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

Más de Jaime Restrepo

I Know You ( iKy OSINT Tool )
I Know You ( iKy OSINT Tool )I Know You ( iKy OSINT Tool )
I Know You ( iKy OSINT Tool )Jaime Restrepo
 
i fought the law and the law lost
i fought the law and the law losti fought the law and the law lost
i fought the law and the law lostJaime Restrepo
 
How to build a powerfull open source soc4
How to build a powerfull open source soc4How to build a powerfull open source soc4
How to build a powerfull open source soc4Jaime Restrepo
 
Zer 0 no zer(0 day) dragon jar
Zer 0 no zer(0 day)   dragon jarZer 0 no zer(0 day)   dragon jar
Zer 0 no zer(0 day) dragon jarJaime Restrepo
 
Alta seguridad para clusters críticos
Alta seguridad para clusters críticosAlta seguridad para clusters críticos
Alta seguridad para clusters críticosJaime Restrepo
 
Bogotá Wardriving (Spanish)
Bogotá Wardriving (Spanish)Bogotá Wardriving (Spanish)
Bogotá Wardriving (Spanish)Jaime Restrepo
 
IoT Cyber Attacks: Comprometiendo la Ciberseguridad de Gasolineras en Latinoa...
IoT Cyber Attacks: Comprometiendo la Ciberseguridad de Gasolineras en Latinoa...IoT Cyber Attacks: Comprometiendo la Ciberseguridad de Gasolineras en Latinoa...
IoT Cyber Attacks: Comprometiendo la Ciberseguridad de Gasolineras en Latinoa...Jaime Restrepo
 
WordPress, another terror story (Spanish)
WordPress, another terror story (Spanish)WordPress, another terror story (Spanish)
WordPress, another terror story (Spanish)Jaime Restrepo
 
Hunting Buffer Overflow. A la caza de funciones inseguras en GNU/Linux
Hunting Buffer Overflow. A la caza de funciones inseguras en GNU/LinuxHunting Buffer Overflow. A la caza de funciones inseguras en GNU/Linux
Hunting Buffer Overflow. A la caza de funciones inseguras en GNU/LinuxJaime Restrepo
 
Hackeando el mundo exterior a través de Bluetooth Low-Energy
Hackeando el mundo exterior a través de Bluetooth Low-EnergyHackeando el mundo exterior a través de Bluetooth Low-Energy
Hackeando el mundo exterior a través de Bluetooth Low-EnergyJaime Restrepo
 
Memorias perito vol_7_dragonjar_con
Memorias perito vol_7_dragonjar_conMemorias perito vol_7_dragonjar_con
Memorias perito vol_7_dragonjar_conJaime Restrepo
 
Cloud native security en tiempo de coronavirus dragon jar
Cloud native security en tiempo de coronavirus dragon jarCloud native security en tiempo de coronavirus dragon jar
Cloud native security en tiempo de coronavirus dragon jarJaime Restrepo
 
Analysis of time windows to detect botnets behaviours
Analysis of time windows to detect botnets behavioursAnalysis of time windows to detect botnets behaviours
Analysis of time windows to detect botnets behavioursJaime Restrepo
 
Bug Bounty Experiences (Spanish)
Bug Bounty Experiences (Spanish)Bug Bounty Experiences (Spanish)
Bug Bounty Experiences (Spanish)Jaime Restrepo
 
Threat intel malware_analysis
Threat intel malware_analysisThreat intel malware_analysis
Threat intel malware_analysisJaime Restrepo
 
Bugbounty en Español, todo lo que no te han dicho
Bugbounty en Español, todo lo que no te han dichoBugbounty en Español, todo lo que no te han dicho
Bugbounty en Español, todo lo que no te han dichoJaime Restrepo
 
Técnicas de Inteligencia en la lucha contra el Crimen Organizado y el Terrorismo
Técnicas de Inteligencia en la lucha contra el Crimen Organizado y el TerrorismoTécnicas de Inteligencia en la lucha contra el Crimen Organizado y el Terrorismo
Técnicas de Inteligencia en la lucha contra el Crimen Organizado y el TerrorismoJaime Restrepo
 
Gestión del tiempo en tiempos del COVID-19
Gestión del tiempo en tiempos del COVID-19Gestión del tiempo en tiempos del COVID-19
Gestión del tiempo en tiempos del COVID-19Jaime Restrepo
 
Pentest: Técnicas alternativas para un cliente “experimentado” – Nelson Boris...
Pentest: Técnicas alternativas para un cliente “experimentado” – Nelson Boris...Pentest: Técnicas alternativas para un cliente “experimentado” – Nelson Boris...
Pentest: Técnicas alternativas para un cliente “experimentado” – Nelson Boris...Jaime Restrepo
 
CSRF: El "Nuevo" Target - Juan David Castro
CSRF: El "Nuevo" Target - Juan David CastroCSRF: El "Nuevo" Target - Juan David Castro
CSRF: El "Nuevo" Target - Juan David CastroJaime Restrepo
 

Más de Jaime Restrepo (20)

I Know You ( iKy OSINT Tool )
I Know You ( iKy OSINT Tool )I Know You ( iKy OSINT Tool )
I Know You ( iKy OSINT Tool )
 
i fought the law and the law lost
i fought the law and the law losti fought the law and the law lost
i fought the law and the law lost
 
How to build a powerfull open source soc4
How to build a powerfull open source soc4How to build a powerfull open source soc4
How to build a powerfull open source soc4
 
Zer 0 no zer(0 day) dragon jar
Zer 0 no zer(0 day)   dragon jarZer 0 no zer(0 day)   dragon jar
Zer 0 no zer(0 day) dragon jar
 
Alta seguridad para clusters críticos
Alta seguridad para clusters críticosAlta seguridad para clusters críticos
Alta seguridad para clusters críticos
 
Bogotá Wardriving (Spanish)
Bogotá Wardriving (Spanish)Bogotá Wardriving (Spanish)
Bogotá Wardriving (Spanish)
 
IoT Cyber Attacks: Comprometiendo la Ciberseguridad de Gasolineras en Latinoa...
IoT Cyber Attacks: Comprometiendo la Ciberseguridad de Gasolineras en Latinoa...IoT Cyber Attacks: Comprometiendo la Ciberseguridad de Gasolineras en Latinoa...
IoT Cyber Attacks: Comprometiendo la Ciberseguridad de Gasolineras en Latinoa...
 
WordPress, another terror story (Spanish)
WordPress, another terror story (Spanish)WordPress, another terror story (Spanish)
WordPress, another terror story (Spanish)
 
Hunting Buffer Overflow. A la caza de funciones inseguras en GNU/Linux
Hunting Buffer Overflow. A la caza de funciones inseguras en GNU/LinuxHunting Buffer Overflow. A la caza de funciones inseguras en GNU/Linux
Hunting Buffer Overflow. A la caza de funciones inseguras en GNU/Linux
 
Hackeando el mundo exterior a través de Bluetooth Low-Energy
Hackeando el mundo exterior a través de Bluetooth Low-EnergyHackeando el mundo exterior a través de Bluetooth Low-Energy
Hackeando el mundo exterior a través de Bluetooth Low-Energy
 
Memorias perito vol_7_dragonjar_con
Memorias perito vol_7_dragonjar_conMemorias perito vol_7_dragonjar_con
Memorias perito vol_7_dragonjar_con
 
Cloud native security en tiempo de coronavirus dragon jar
Cloud native security en tiempo de coronavirus dragon jarCloud native security en tiempo de coronavirus dragon jar
Cloud native security en tiempo de coronavirus dragon jar
 
Analysis of time windows to detect botnets behaviours
Analysis of time windows to detect botnets behavioursAnalysis of time windows to detect botnets behaviours
Analysis of time windows to detect botnets behaviours
 
Bug Bounty Experiences (Spanish)
Bug Bounty Experiences (Spanish)Bug Bounty Experiences (Spanish)
Bug Bounty Experiences (Spanish)
 
Threat intel malware_analysis
Threat intel malware_analysisThreat intel malware_analysis
Threat intel malware_analysis
 
Bugbounty en Español, todo lo que no te han dicho
Bugbounty en Español, todo lo que no te han dichoBugbounty en Español, todo lo que no te han dicho
Bugbounty en Español, todo lo que no te han dicho
 
Técnicas de Inteligencia en la lucha contra el Crimen Organizado y el Terrorismo
Técnicas de Inteligencia en la lucha contra el Crimen Organizado y el TerrorismoTécnicas de Inteligencia en la lucha contra el Crimen Organizado y el Terrorismo
Técnicas de Inteligencia en la lucha contra el Crimen Organizado y el Terrorismo
 
Gestión del tiempo en tiempos del COVID-19
Gestión del tiempo en tiempos del COVID-19Gestión del tiempo en tiempos del COVID-19
Gestión del tiempo en tiempos del COVID-19
 
Pentest: Técnicas alternativas para un cliente “experimentado” – Nelson Boris...
Pentest: Técnicas alternativas para un cliente “experimentado” – Nelson Boris...Pentest: Técnicas alternativas para un cliente “experimentado” – Nelson Boris...
Pentest: Técnicas alternativas para un cliente “experimentado” – Nelson Boris...
 
CSRF: El "Nuevo" Target - Juan David Castro
CSRF: El "Nuevo" Target - Juan David CastroCSRF: El "Nuevo" Target - Juan David Castro
CSRF: El "Nuevo" Target - Juan David Castro
 

RompiendoRSAOpenSSL256

  • 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