SlideShare una empresa de Scribd logo
El algoritmo RSA
                  Aula Virtual Crypt4you
                     Selección del capítulo 14 del Libro Electrónico de Seguridad
                     Informática y Criptografía del mismo autor para Crypt4you

                                                                Dr. Jorge Ramió Aguirre
                                                      Universidad Politécnica de Madrid

                   Este archivo forma parte libro electrónico de Seguridad Informática y Criptografía
                   v 4.1 de marzo de 2006. Se autoriza el uso, su reproducción en computador y la
                   impresión sólo con fines docentes o personales, respetando los créditos del autor.
                   Queda prohibida su comercialización.

Curso de Seguridad Informática y Criptografía © JRA
Capítulo 14: Cifrado Asimétrico Exponencial        Página 2




         Aquí ciframos números, no mensajes
    •    La operación característica de la cifra asimétrica es mediante un
         cifrado exponencial. La operación a realizar será C = AB mod n, en
         donde n es el cuerpo de cifra del orden de 1.024 bits, B es una clave
         pública 17 bits para el intercambio de clave y cerca de 1.024 bits de la
         clave privada para firma digital. A será siempre un número N (nunca
         un mensaje M) y por lo general del orden de las centenas de bits.
    •    Esto es así porque este tipo de cifra es muy lenta y sería muy costoso
         en tiempo cifrar, por ejemplo, mensajes de cientos o miles de bytes.
    •    Por lo tanto, cuando se cifre con la clave pública de destino para
         hacer un intercambio de clave, se tratará de un número N del orden de
         los 128 bits (la clave de sesión), y cuando se cifre con la clave
         privada de emisión para una firma digital, se tratará de un número N
         de 160 bits, por ejemplo un hash SHA-1 sobre el mensaje M.


© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial   Página 3




               Otros casos de cifra exponencial
     •    La cifra con la clave privada de recepción cuando desciframos
          un número o dato que se nos ha enviado confidencialmente, o
          bien la cifra con la clave pública del emisor para comprobar
          así su firma digital, serán casos de descifrado.
     •    En el primero de ellos, puesto que se recibe un número muy
          grande dentro del cuerpo de cifra con n bits y la clave privada
          será también de esa magnitud, en el caso de RSA se realizará
          el descifrado usando el Teorema del Resto Chino.
     •    Si deseamos cifrar mensajes M con estos algoritmos, se puede
          hacer formando bloques de cifra, al igual que se hace con los
          sistemas simétricos, pero recuerde que esto tiene sentido sólo
          para prácticas de laboratorio y nunca en sistemas reales.

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial              Página 4




 Cifrado exponencial con clave del receptor
     • Al cifrar el número N y en el descifrado del criptograma
       C se usará una exponenciación: Ee(N) = C y Ed(C) = N.
     • En la operación de cifrado, el subíndice e significará el
       uso de la clave pública del receptor (R) en el extremo
       emisor y el subíndice d el uso de la clave privada del
       receptor (R) en el extremo receptor.

          C = EeR(N) = NeR mod nR                       N = EdR(C) = CdR mod nR

     • N deberá ser un elemento del CCR de nR.
     • Esta operación se usará para realizar el intercambio de
       una clave de sesión entre un emisor y un receptor.

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial           Página 5




   Cifrado exponencial con clave del emisor
    • En la operación de cifrado el subíndice d significa el uso
      de la clave privada del emisor (E) en el extremo emisor,
      y el subíndice e el uso de la clave pública del emisor (E)
      en el extremo receptor.

         C = EdE(N) = NdE mod nE                     N = EeE(C) = CeE mod nE


    • N deberá ser un elemento del CCR de nE.
    • Esta operación se usará para autenticar la identidad de un
      usuario mediante una firma digital, al mismo tiempo que
      se demuestra la integridad del mensaje mediante un hash.


© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial                 Página 6




     Cifrado exponencial genérico tipo RSA
   Sea el grupo de trabajo n = p q                              (n) = (p-1)(q-1)
   Se eligen una clave pública e y una privada d de forma que:
   e d mod (n) = 1        e d = k(p-1)(q-1) + 1.

 Si e d = k (n) + 1                                        Por el Teorema del Resto
                                                           Chino se tiene que:
 Por el Teorema de Euler                       y ...           Ned = N mod n
 se tiene que:                                                ssi Ned = N mod p
      Nk (n) mod n = 1                                            Ned = N mod q
  para todo N primo con n                              Luego, el sistema de cifra será
                                                       válido para cualquier valor de N

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial               Página 7




         Operación de descifrado exponencial

  Al cifrar el número N con una clave pública e (en este caso
  para realizar un intercambio de clave, aunque es igual de
  válido con una clave d en caso de firma digital) tenemos:
  Cifrado:               C = Ne mod n
  Descifrado:            Cd mod n = (Ne)d mod n = Ned mod n
                         Cd mod n = Nk            (n)+1   mod n = N Nk   (n)   mod n
                         Cd mod n = N 1 mod n = N mod n
  Por lo tanto, la operación Cd mod n recuperará el número N.


© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial                      Página 8




      Comprobación de la recuperación de N
   Sea n = p q = 5 11 = 55                               (n) = (5-1)(11-1) = 40
   Sea el número N = 50 = 2 52 (debe ser un elemento de n = 55)
   Se elige e = 3                                d = inv[e, (n)] = inv (3, 40) = 27
                    e d mod (n) = 3 27 mod 40 = 81 mod 40 = 1
   C = Ne mod n = 503 mod 55 = (2 52)3 mod 55
   C = [(2)3 mod 55              (52)3 mod 55] mod 55                   - por reducibilidad  -
   N = Cd mod n = {[(2)3 mod 55                        (52)3 mod 55] mod 55}27 mod 55
   N = [(2)3      27    mod 55        (52)3     27   mod 55] mod 55
   N = [22      (n)+1    52   (n)+1    52   (n)+1]    mod 55
   Por el Teorema de Euler y del Resto Chino = 2                             5   5 mod 55 = 50

© Jorge Ramió Aguirre    Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial             Página 9




           Algoritmo de cifra asimétrica RSA
       En febrero de 1978 Ron Rivest, Adi Shamir y Leonard Adleman
       proponen un algoritmo de cifra de clave pública: RSA

                               Pasos del algoritmo
   1. Cada usuario elige un grupo n = p q (pueden y de hecho son distintos).
   2. Los valores p y q no se hacen públicos.
   3. Cada usuario calcula (n) = (p-1)(q-1).
   4. Cada usuario elige una clave pública e de forma que 1 < e < (n) y que
      cumpla con la condición: mcd [e, (n)] = 1.
   5. Cada usuario calcula la clave privada d = inv [e, (n)].
   6. Se hace público el grupo n y la clave e.
   7. Se guarda en secreto la clave d. También guardará p y q puesto que en
      la operación de descifrado usará el Teorema del Resto Chino.

          Cifra: C = NeR mod nR                       Firma: C = h(M)dE mod nE

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial                       Página 10




           Intercambio de clave RSA (B                                                   A)
                        En el protocolo intercambiaremos una clave K

                                  Sea K = DA9F (16 bits)
   Benito                                                                                Adela

      Claves Benito                        216 66.331 217                    Claves Adela
       nB = 65.669                        Forzaremos cifrar un                nA = 66.331
   eB = 35, dB = 53.771                    bloque de 16 bits              eA = 25, dA = 18.377


   Cifra K = DA9F16 = 55.96710                                     En la práctica no habrá que
               C = KeA mod nA                                      forzar este tamaño ya que la
                                                                   cifra asimétrica se hace en
               C = 55.96725 mod 66.331 =                           un cuerpo (más de mil bits)
               16.667
                                                                   mucho mayor que el número
               Benito envía a Adela C = 16.667                     que se cifra (cientos de bits).

© Jorge Ramió Aguirre      Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial                 Página 11




              Recuperación de la clave K por A
                         Claves Benito                          Claves Adela
                            nB = 65.669                          nA = 66.331
                        eB = 35, dB = 53.771                 eA = 25, dA = 18.377
      Benito             Teníamos que: K = DA9F16 = 55.96710                         Adela
                    C = KeA mod nA C = 55.96725 mod 66.331 = 16.667
                         Benito había enviado a Adela C = 16.667

       Adela calcula:                                                      Los primos que ha
      • CdA mod nA = 16.66718.377 mod 66.331 = 55.967.                      usado Benito son
      • El intercambio de clave se ha realizado con                         (97, 677) y los de
        confidencialidad porque sólo Adela ha podido                         Adela (113, 587)
        realizar ese cálculo con su clave privada dA.


© Jorge Ramió Aguirre     Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial                     Página 12




              Descifrado con números grandes
   Grupo n = 91 = 7 13; (n) = (7 13) = (7-1)(13-1) = 72 N = 48
   Elegimos e = 5 pues mcd (5,72) = 1    d = inv(5,72) = 29
   CIFRADO:
   C = Ne mod n = 485 mod 91 = 5245.803.968 mod 91 = 55
   DESCIFRADO:
   N = Cd mod n = 5529 mod 91 = 48 ... 5529 ya es “número grande”
   5529 es un número con 51 dígitos...
   5529 = 295473131755644748809642476009391248226165771484375
   ¿Cómo podemos acelerar esta operación?

    1ª opción: usar reducibilidad                    2ª opción: algoritmo exp. rápida      
               Opción óptima: usar el Teorema del Resto Chino            
© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial   Página 13




  Uso del Teorema del Resto Chino en RSA
   • Normalmente la clave pública e de RSA es un valor bastante bajo,
     por ejemplo 216 + 1 (un valor típico). Luego, en el proceso de cifra
     (no en la firma) no tendremos problemas con la velocidad de cifra
     porque el exponente e será relativamente bajo, en este caso 17 bits.
   • Como el cuerpo de trabajo n = p q es mucho mayor, del orden de
     21.024 si hablamos de claves de 1.024 bits, entonces la clave privada
     d será por lo general mucho mayor que el valor de e y caerá muy
     cerca de ese valor de 1.024 bits. Por lo tanto, podría ser costoso para
     el receptor descifrar algo con su clave privada o firmar digitalmente
     un documento con dicha clave privada.
   • La solución está en aplicar el Teorema del Resto Chino: en vez de
     trabajar en n, lo haremos en p y q por lo que las exponenciaciones
     modulares se harán en p y q, mucho más rápido que hacerlo en n.

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial   Página 14




            Descifrado RSA aplicando el TRC

  N = Cd mod n Aplicando el Teorema del Resto Chino:
           N = {Ap[Cpdp (mod p)] + Aq[Cqdq (mod q)]} mod n
           con:   Ap = q [inv (q,p)] = qp-1 mod n
                  Aq = p [inv (p,q)] = pq-1 mod n
                  dp = d mod (p-1)          dq = d mod (q-1)
                  Cp = C mod p              Cq = C mod q

  Se hacen más operaciones pero el tiempo de cálculo total es menor dado
  que los valores dp, dq, Ap y Aq están precalculados. Las operaciones Cp y
  Cq son sencillas y muy rápidas. El único cálculo que consume tiempo será
  Cpdp y Cqdq pero ambos se hacen en cuerpos mucho menores que n.

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial                   Página 15




Ejemplo de descifrado RSA usando el TRC
  Sea:         p = 89, q = 31, n = p q = 89 31 = 2.759, (n) = 88 30 = 2.640
               Elegimos e = 29         d = inv [e, (n)] = inv [29, 2.640] = 2.549
  Si el número a cifrar es N = 1.995, entonces:
               C = Ne mod n = 1.99529 mod 2.759 = 141
               N = Cd mod n = 1412.549 mod 2.759 = 1.995
  Ap = qp-1 mod n = 3188 mod 2.759 = 713              Aq = pq-1 mod n = 8930 mod 2.759 = 2.047
  dp = d mod (p-1) = 2.549 mod 88 = 85                dq = d mod (q-1) = 2.549 mod 30 = 29
  Cp = C mod p = 141 mod 89 = 52                      Cq = C mod q = 141 mod 31 = 17
  Reemplazando en: N = {Ap[Cpdp (mod p)] + Aq[Cqdq (mod q)]} mod n
  N = {713[5285 mod 89] + 2.047[1729 mod 31]} mod 2.759
  N = {713 37 + 2.047 11} mod 2.759 = (26.381 + 22.517) mod 2.759 = 1.995

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial   Página 16




     Ataque a la clave por factorización de n
                 ¿Qué fortaleza tendrá este algoritmo ante ataques?
    El intruso que desee conocer la clave secreta d a partir de los
     valores n y e se enfrentará al Problema de la Factorización de
     Números Grandes (PFNG), puesto que la solución para conocer
     esa clave privada es conocer primero el valor del Indicador de
     Euler (n) = (p-1)(q-1) para así poder encontrar d = inv [e, (n)],
     pero para ello deberá saber los valores de los primos p y q.
    La complejidad asociada al PFNG para un número n viene dada
     por la ecuación e ln(n) ln ln(n), donde ln es logaritmo natural.
    Le recomiendo se descargue de este sitio el programa factor.exe
     en entorno MS-DOS. No obstante, existirán otros ataques a RSA
     que no requieren factorizar un número grande.

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial               Página 17




    Tiempo necesario para afrontar el PFNG
      Para un procesador de 2x108 instrucciones por segundo (años
      noventa). Fuente: Criptografía Digital, José Pastor. Prensas Univ.
      de Zaragoza, 1998.
             Nº de bits (n)        Nº de dígitos            Días         Años
                  60                    18                1,7 x 10-8      -
                   120                    36              1,5 x 10-5        -
                   256                    77                 1,0            -
                   363                   109              9,0 x 102       2,5
                   442                   133              9,4 x 104     2,5 x 102
                   665                   200              3,8 x 108     1,0 x 106   
Desafío RSA640 (193 dígitos) roto en noviembre de 2005 en la Universidad
de Bonn. Lo que en 1998 se valoraba en un millón de años, hoy se ha roto en
un tiempo equivalente a 30 años con un PC a 2,2 GHz. Y se resolverán
nuevos desafíos de números mayores. Deberemos ser siempre muy cautos.

© Jorge Ramió Aguirre    Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial   Página 18




           Tamaño de los parámetros en RSA
      Toda la seguridad de RSA está basada en sus parámetros: los
      primos p y q y los valores de sus claves pública e y privada d.
      El cuerpo de trabajo debe ser al menos de 1.024 bits con primos
      p y q de al menos 500 bits y que difieran unos cuantos dígitos.
      Aunque la clave pública debe ser pequeña para facilitar así las
      operaciones, su valor no puede ser excesivamente bajo. Se usará
                                   4
      el número 4 de Fermat F4 = 22 + 1 = 216 + 1 = 65.537.
      Como ed mod (n) = 1, esto hace que la clave privada d sea un
      número superior a los 1.000 bits, por lo general cerca de 1.024.
      Habrá que prestar también especial atención en la generación de
      dichos primos y la posterior comprobación de su primalidad.


© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial   Página 19




    El problema en la elección del valor de n
           Si p y q son muy cercanos, puede ser fácil factorizar n

       Si p q y suponemos que p > q, entonces (p-q)/2 es un
        entero muy pequeño y por otra parte (p+q)/2 será un
        entero ligeramente superior a n.
       Además se cumplirá que: n = (p+q)²/4 - (p-q)²/4. Esto
        lo podemos escribir como n = x² - y²    y² = x² - n
       Elegimos enteros x > n hasta que (x² - n) sea cuadrado
        perfecto. En este caso x = (p+q)/2; y = (p-q)/2. Por lo
        tanto rompemos el valor n: p = (x+y); q = (x-y). 


© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial   Página 20




     Ejemplo de mala elección del valor de n
      •      Sea p = 181; q = 251    n = 181 251 = 45.431
      •      Como 45.431 = 213,14 buscaremos valores enteros
             de x mayores que 213 de forma que (x² - 45.431) sea
             un cuadrado perfecto 
      1. x = 214              x² – 45.431 = 365          365 = 19,10 
      2. x = 215              x² – 45.431 = 794          794 = 28,17 
      3. x = 216              x² – 45.431 = 1.225        1.225 = 35 
         Entonces:            p = x – y = 216 – 35 = 181
                              q = x + y = 216 + 35 = 251
                                                          
          Para evitar otros problemas, es recomendable
          usar los denominados primos seguros.


© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial      Página 21




               Elección de los números primos
     Los valores primos deben elegirse apropiadamente:
     Sistema RSA
     a) p y q deben diferir en unos pocos dígitos.
        Recuerde que la relación bit/dígito es 3,3.
                                                                       ¿Cómo?
     b) p y q no deben ser primos muy cercanos.
     c) Longitud mínima de p y q: 500 bits.
     d) Valores de (p-1) y (q-1) del Indicador de
        Euler con factores primos grandes.
     e) El mcd entre (p-1) y (q-1) debe ser pequeño.
     Esto se cumple con los denominados primos seguros


© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial          Página 22




   Cálculo de números primos p y q seguros
 Se elige r un primo grande de modo que: 2 r + 1 = p
 Se elige un r’ primo algo mayor que r de modo que: 2 r’ + 1 = q
      EJEMPLO: Sean r = 1.019 y r’ = 3.863
      p = 2 1.019 + 1 = 2.039 (11 bits) Es primo 
      q = 2 3.863 + 1 = 7.727 (13 bits) Es primo 
      n = p q = 15.755.353
      Luego: p-1 = 2.038; q-1 = 7.726
      p-1 = 2 1.019; q-1 = 2 3.863        mcd (p-1, q-1) = 2
      Los primos p y q cumplen la condición de primos seguros
 Nota: es posible que encuentre algún documento donde proponga elegir un valor r
 primo y comprobar luego si p = 2r+1 y q = 2p+1 son primos. En este caso p y q
 seguirán siendo primos seguros pero sólo de forma independiente. Aquí será muy
 fácil atacar el valor n factorizándolo a través de una ecuación de segundo grado.

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial                 Página 23




 Par de primos seguros pero independientes
   Elegimos r primo. Comprobamos primero que p = 2r+1 es primo y
   luego que q = 2p+1 también es primo.
   Los valores de p y q serán primos seguros pero en el sistema RSA
   basado en n = p q no servirán como pareja segura dado que:
   n = p q = [2r +1][2p +1] = [2r + 1][2(2r + 1) + 1] = [2r +1][4r + 3]
   n = 8r2 + 10r + 3                   8r2 + 10r + (3 - n) = 0
   Luego: r = [- 10              100 - 32(3-n)]/16 = [- 10             4 + 32n]/16
          r = [- 10 + 4 + 32n]/16
   Conocido el valor de r podemos calcular p y q .
   Ejemplo: r = 41, p = 2r+1 = 83 , q = 2p+1 = 167 , n = 13.861.
                    r = [- 10 + 4 + 32 13.861]/16 = [- 10 + 666]/16 = 41.

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial   Página 24




               Claves privadas parejas en RSA
   Una clave privada pareja CPP dP, permite descifrar el criptograma
   C resultado de una cifra con la clave pública e sin que dP sea el
   inverso de la clave pública e. En el sistema RSA habrá como
   mínimo una clave dP pareja de la clave privada d.
   Esto se debe a que las claves inversas e y d lo serán en (n) y en
   cambio la cifra se hace en el cuerpo n.
   Ejemplo:
   Si p = 13; q = 19; n = 247, (n) = 216 y elegimos e = 41, entonces
   d = inv (41, 216) = 137, que es único. Si ciframos con la clave
   pública el número N = 87 obtenemos C = 8741 mod 247 = 159.
   Luego sabemos que N = Cd mod n = 159137 mod 247 = 87 
   Pero también lo desciframos con dP = 29, 65, 101, 173, 209 y 245.

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial     Página 25




            Número de claves privadas parejas
      Si       = mcm [(p-1),(q-1)] y sea d = e-1 mod = inv (e, )
      La clave pública e tendrá claves parejas di de la forma:
              di = d + i           1 < di < n
              i = 0, 1, ...           = (n - d )/
      En el ejemplo anterior tenemos que:
                = mcm [(p-1),(q-1)] = mcm (12, 18) = 36
      Luego: d = inv (41, 36) = 29, así di = d + i = 29 + i 36
      Es decir di = 29, 65, 101, 137, 173, 209, 245. Observe que
      en aparece (137) la clave privada d y comprobamos que:
                        = (n - d )/          = (247 – 29)/36) = 6,05 = 6

© Jorge Ramió Aguirre     Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial                Página 26




              Casos de claves privadas parejas
  Sea p = 751, q = 1.009; e = 13                      Sea p = 379, q = 1.783; e = 71
  Clave privada: d = 407.077                          Clave privada: d = 531.287
  Nº de claves privadas parejas: 5                    Nº de claves privadas parejas: 53
  29.077, 155.077, 281.077, 533.077,                  7.379, 19.853, 32.327, 44.801,
  659.077.                                            57.275, 69.749, 82.223, 94.697,
  Sea p = 751, q = 1.009; e = 101                     107.171, 119.645, 132.119,
  Clave privada: 553.901                              144.593, 157.067, 169.541, ...
  Nº de claves privadas parejas: 5                    ... 506.339, 518.813, 543.761,
  49.901, 175.901, 301.901, 427.901,                  556.235, 568.709, 581.183,
  679.901.                                            593.657, 606.131, 618.605,
                                                      631.079, 643.553, 656.027,
  Para otros valores de e, siempre                    668.501. ... Y separadas 12.474.
  existe una separación entre todas                   Sea p = 379, q = 1.783; e = 131
  las claves privadas igual a 126.000.                Ahora las CPP aumentan a 54.

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial   Página 27




    Minimizando las claves privadas parejas
      Para que sea lo más pequeño posible ( = 1) un primer
      paso es elegir los primos p y q como primos seguros.
      Ejemplo:
      Sean r’ = 5; r’’ = 23   p = 2 5 + 1 = 11 (es primo )
                               q = 2 23 + 1 = 47 (es primo )
      En estas condiciones con n = 517 y (n) = 460, sea e = 17
      Luego = mcm (10, 46) = 230 y d = inv (17, 230) = 203
      Entonces = (n - d )/ = (517 – 203)/230 = 1,36 = 1
      Así: di = d + i = 203 + i 230 = 203, 433         =1
      En efecto, d = inv [e, (n)] = inv (17, 460) = 433 y lo
      cifrado con e = 17 también se descifra con dP = 203.

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial   Página 28




   Minimizando no sólo con primos seguros
      Para que sea igual a la unidad, habrá que elegir además
      un valor adecuado de clave pública:
      Tomando el mismo ejemplo anterior:
              p = 11; q = 47; n = 517 y (n) = 460
      Según el valor que elijamos de clave pública e, podríamos
      obtener más de una clave privada pareja:
      - Sea: e = 7, d = 263     = 230 y d = inv (7, 230) = 33
        di = d + i = 33 + i 230 = 33, 263, 493         =2
      - Sea: e = 77, d = 233 = 230 y d = inv (77, 230) = 3
        di = d + i = 3 + i 230 = 3, 233, 463        =2
      Con primos seguros, el número de claves parejas será siempre bajo.


© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial       Página 29




   ¿Preocupado por claves privadas parejas?
      Si bien al generar claves RSA con librerías actuales como Crypto++
      de Wei Dei (OpenSSL) aparecen claves que no pueden considerarse
      como óptimas ya que no se controla este hecho, hay que tener en
      mente que las claves privadas parejas tendrán siempre valores muy
      cercanos al cuerpo de (n) es decir un tamaño del orden de 2n bits.
      Por lo tanto, independientemente de la distribución, se trataría de una
      búsqueda en un cuerpo cercano a 2n bits, en la actualidad en 21024 bits,
      es decir un valor inmenso para la capacidad de cómputo actual,
      incluso suponiendo un ataque similar al del DES Challengue III y un
      cálculo de claves por segundo varios órdenes de magnitud superior.
      No obstante, en todos estos temas siempre hay que estar en alerta pues
      en cualquier momento puede aparecer algún método óptimo de ataque.



© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial   Página 30




  Claves parejas de la clave pública en RSA
      Al trabajar en un cuerpo finito y con iguales opciones de
      cifra con la clave pública e y la clave privada d, tenemos
      que las ecuaciones vistas en las diapositivas anteriores son
      válidas en este entorno, cambiando d por e.
                        ¿Tiene alguna importancia esto?

      No es un problema puesto que todo el mundo conoce la
      clave pública y el sistema sigue siendo igual de seguro.
      Se cumple que los valores de dichas claves parejas
      son similares y equivalentes en ambos entornos, el
      de las claves públicas y el de las claves privadas.
                                                                       

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial   Página 31




       Ejemplo de firma y claves parejas de e
      Retomamos el primer ejemplo de claves privadas parejas con:
         p = 13; q = 19; n = 247, (n) = 216, e = 41, d = 137
      Si firmamos N = 24, obtenemos C = 24137 mod 247 = 215
      Luego sabemos que N = Ce mod n = 21541 mod 247 = 24
      Como e = inv (d, ) = inv (137, 36) = 5, entonces:
            = (n - e )/         = (247 – 5)/36) = 6,72 = 6
        ei = e + i = 5 + i 36 = 5, 41, 77, 113, 149, 185, 221
      Y se podrá comprobar el criptograma C de la firma con
      cualquiera de estas claves, parejas de la clave pública e.

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial        Página 32




           Comprobación de una firma digital
    ¿Problemas con la firma digital y las claves públicas parejas?
     Un usuario firma un hash de un mensaje con su clave privada, lo que
      envía al destino junto con el mensaje original. En destino se descifra
      con la clave pública del emisor y se comparan los dos hash, el de
      emisión y el recuperado en recepción, para dar validez a dicha firma.
     En este escenario, esto significa que se podría dar por válida una
      firma al descifrar el hash recibido con una clave pública pareja e’
      distinta a la inversa de la usada en emisión y dar validez a dicha
      firma; es decir usando alguna de las claves públicas parejas.
     Esto en sí no es un ataque por lo que, al menos en este contexto y en
      principio, no debería considerarse como una vulnerabilidad. Esto es
      así porque, además, como se ha dicho es típico que la clave pública
      sea el mismo número primo para todos, el valor e = 65.537 = 216 + 1.
      Como es obvio, lo que será distinto para cada par de claves son p y q.

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial   Página 33




                  Números no cifrables en RSA
       Si Ne mod n = N se dice que N es un número no cifrable, NNC.
         Aunque la clave e sea válida, el número N se enviará en claro .
       En RSA habrá como mínimo 9 números no cifrables.
       En el caso más crítico, todos los números del cuerpo n pueden ser
         no cifrables como veremos más adelante.
       Para conocer estos valores no cifrables, habrá que hacer un ataque
         de cifrado por fuerza bruta en p y q, es decir deberemos comprobar
         que Xe mod p = X y Xe mod q = X con 1 < X < n-1 .
      Ejemplo:
         Sea el cuerpo n = 35 (p = 5, q = 7), con (n) = 24 y e = 11.
         Dentro de los números posibles {0, 34} serán no cifrables: {6, 14,
         15, 20, 21, 29, 34} además de los obvios {0, 1}. El valor n-1 (en
         este caso 34) será también siempre no cifrable.


© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial         Página 34




             Cantidad de números no cifrables
   La cantidad de números no cifrables dentro de un cuerpo n será:
              n = [1 + mcd (e-1, p-1)][1 + mcd (e-1, q-1)]
   Los números no cifrables serán:
             N = [q{inv (q, p)}Np + p{inv (p, q)}Nq] mod n
   con:      Np las soluciones de Ne mod p = N
             Nq las soluciones de Ne mod q = N
             Esto último debido al TRC puesto que Ne mod n = N
    En el ejemplo anterior se da el caso mínimo:           Valores para un mínimo

      n = [1 + mcd (10, 4)][1 + mcd (10, 6)] = (1+2)(1+2) = 9
    N11 mod 5 = N N5 = {0, 1, 4} N11 mod 7 = N N7 = {0, 1, 6}
    N = [7{inv (7, 5)}Np + 5 {inv (5,7)}Nq] mod 35
    N = [7 3 Np + 5 3 Nq] mod 35 = [21{0, 1, 4} + 15{0, 1, 6}] mod 35
    N = {(0, 21, 84) + (0, 15, 90)} mod 35 sumando todos los términos...
    N = {0, 15, 90, 21, 36, 111, 84, 99, 175} mod 35            ordenando...
    N = {0, 1, 6, 14, 15, 20, 21, 29, 34}

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial   Página 35




         Ejemplo de números no cifrables (1)
    Sea p = 13; q = 17; n = p q = 221
    Elegimos e = 7 por lo que d = inv (7, 192) = 55, luego:
     n = [1 + mcd (e-1, p-1)][1 + mcd (e-1, q-1)]

     221 = [1 + mcd (6, 12)][1 + mcd (6, 16)] = (1+6)(1+2) = 21
    Soluciones de N7 mod 13 = N        Np = {0, 1, 3, 4, 9, 10, 12}
    Soluciones de N7 mod 17 = N        Nq = {0, 1, 16}
    Los números no cifrables serán:
    N = [q{inv (q, p)}Np + p{inv (p, q)}Nq] mod n
    N = [17{inv (17, 13)}Np + 13{inv (13, 17)}Nq] mod 221
    N = [{17 10}Np + {13 4}Nq] mod 221
    N = [170 Np + 52 Nq] mod 221

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial     Página 36




         Ejemplo de números no cifrables (2)
    Teníamos         Np = {0, 1, 3, 4, 9, 10, 12}
                     Nq = {0, 1, 16}
                     N = [170 Np + 52 Nq] mod 221 luego:
    N = [170 {0, 1, 3, 4, 9, 10, 12} + 52 {0, 1, 16}] mod 221
    N = [{0, 170, 510, 680, 1.530, 1.700, 2.040} +{0, 52, 832}] mod 221
    N = [0+0, 0+52, 0+832, 170+0, 170+52, 170+832, ...] mod 221

    N = [0, 52, 832, 170, 222, 1.002, 510, 562, 1.342, 680, 732, 1.512, 1.530,
        1.582, 2.362, 1.700, 1.752, 2.531, 2.040, 2.092, 2.872] mod 221
    N = [0, 52, 169, 170, 1, 118, 68, 120, 16, 17, 69, 186, 204, 35, 152,
        153, 205, 101, 51, 103, 220]         ordenando...
    N = [0, 1, 16, 17, 35, 51, 52, 68, 69, 101, 103, 118, 120, 152, 153,
        169, 170, 186, 204, 205, 220] estos son los 21 mensajes de 221.

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial   Página 37




         Distribución de números no cifrables
     Dado que N = {0, 1, 16, 17, 35, 51, 52, 68, 69, 101, 103, 118, 120,
     152, 153, 169, 170, 186, 204, 205, 220}, observe que excepto el
     valor 0, los valores de los extremos siempre sumarán el valor
     del módulo: 1+220 = 16+205 = 17+204 = 35+186 ... = 221 = n.
     No obstante, esto no es una debilidad porque el siguiente valor
     no cifrable posterior al 1 es aleatorio y también la distribución
     entre los demás. Es más, en la mayoría de las claves no se
     aprecia una secuencia de valores muy clara, aunque sí se
     observa un comportamiento y distribución bastante curiosos.
     Si no fuera así, el sistema sería muy débil porque podríamos
     conocer de antemano qué valores muy pequeños serían no
     cifrables (además del 0 y el 1) y con esa información poder
     deducir si un valor x de centenas de bits (clave) es o no cifrable.

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial                    Página 38




            Dos casos de números no cifrables
  Sean         p = 409, q = 499                       Sean         p = 241, q = 251
  Con          e = 31, d = 19.663                     Con          e = 61, d = 26.281
  Total números no cifrables: 49                      Total números no cifrables: 671
  0, 1, 1.636, 1.637, 23.313, 23.314,                 0, 1, 231, 250, 251, 364, 400, 482,
  24.949, 24.950, 26.586, 48.263,                     522, 604, 640, 733, 866, 1.004,
  49.899, 56.388, 58.024, 72.855,                     1.024, 1.287, 1.486, 1.506, 1.777,
  74.491, 79.701, 81.337, 81.338,                     1.870, 1.988, 2.009, 2.028, 2.227,
  82.973, 82.974, 96.168, 97.804,                     2.259, 2.260, 2.291, 2.510, ....
  97.805, 99.440, 99.441, 104.650,                    ... 57.981, 58.200, 58.231, 58.232,
  104.651, 106.286, 106.287, 107.923,                 58.264, 58.463, 58.482, 58.503,
  121.117, 121.118, 122.753, 122.754,                 58.621, 58.714, 58.985, 59.005,
  124.390, 129.600, 131.236, 146.067,                 59.204, 59.467, 59.487, 59.625,
  147.703, 154.192, 155.828, 177.505,                 59.758, 59.851, 59.887, 59.969,
  179.141, 179.142, 180.777, 180.778,                 60.009, 60.091, 60.127, 60.240,
  202.454, 202.455, 204.090.                          60.241, 60.260, 60.490.


© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial   Página 39




  Cantidad mínima de números no cifrables
    Para que la cantidad de números no cifrables sea la mínima posible,
    es decir 9, deberemos elegir la clave pública e de forma que:
                      mcd (e-1, p-1) = 2 y mcd (e-1, q-1) = 2
    Entonces:          n = [1 + 2][1 + 2] = 9


    Esto se logra usando primos seguros:
             p = 2r + 1 y q = 2r’ + 1 con r, r’, p y q primos grandes
    ya que: mcd (e-1, p-1) = mcd (e-1, (2r +1)-1) mcd = 2 o bien r
             mcd (e-1, q-1) = mcd (e-1, (2r’ +1)-1) mcd = 2 o bien r’
    Luego:              n = {9, 3(r+1), 3(r’+1), (r+1)(r’+1)}
    Hay que comprobar en diseño que no se den valores del mcd igual a
    r o r’ pues tendríamos un número muy alto de este tipo de mensajes.
    Además, observe que si e = p        n = 3p y si e = q     n = 3q.



© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial   Página 40




  Cantidad máxima de números no cifrables
    En el peor de los casos, mcd (e-1, p-1) = p-1 y mcd (e-1, q-1) = q-1
    Entonces:           n = [1 + mcd(e-1, p-1)][1 + mcd(e-1, q-1)]
                        n = p q = n ... ¡todas las cifras irán en claro!
    Si en el ejemplo anterior con p = 13, q = 17, hubiésemos elegido
    como clave e = 49, con d = inv (49, 192) = 145, observamos que:
             mcd (e-1, p-1) = mcd (48, 12) = 12
             mcd (e-1, q-1) = mcd (48, 16) = 16
               n = [1 + 12][1 + 16] = 13 17 = 221 = p q = n
    Por lo tanto, cualquier número en el cuerpo n = 221 será no cifrable
    para la clave pública e = 49. Compruebe que en este caso esto se
    cumple si e = (n)/k +1 (k = 2 y 4), es decir e = 97 y 49.
    Nunca podrá usarse e = (n)/2 + 1 ya que la clave de descifrado será
    igual a 1 y por lo tanto no será cifrable ningún número de n.

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial   Página 41




         NNC por mala elección de la clave e
    Sea p = 101, q = 761, n = 76.861. Luego (n) = 100 760 = 76.000
    Algunos valores de e válidos como clave pero relacionados con (n):
     e = (n)/2 + 1 = 38.001        76.861 NNC (100 %)
     e = (n)/4 + 1 = 19.001        76.861 NNC (100 %)
     e = (n)/5 + 1 = 15.201        76.861 NNC (100 %)
     e = (n)/8 + 1 = 9.501         38.481 NNC (50 % aprox.)
     e = (n)/10 + 1 = 7.601        76.861 NNC (100 %)
     e = (n)/16 + 1 = 4.751         9.741 NNC (12,5 % aprox.)
     e = (n)/19 + 1 = 4.001         4.141 NNC (5 % aprox.)
     e = (n)/20 + 1 = 3.801        76.861 NNC (100 %)
     e = (n)/50 + 1 = 1.521        15.981 NNC (20 % aprox.)
     e = (n)/100 + 1 = 761         15.981 NNC (20 % aprox.)
     e = (n)/1.000 + 1 = 77           385 NNC (0,5 % aprox.)

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial      Página 42




   Confidencialidad en intercambio de clave
     A diferencia del número de claves privadas parejas, por lo general
      un número relativamente bajo y distribución generalmente en torno
      a 2n bits, la cantidad de números no cifrables es mucho mayor y en
      ciertos casos puede llegar a ser todo el cuerpo de cifra.
     No obstante en este nuevo escenario debemos ser menos paranoicos:
      la utilización actual de este tipo de cifra con clave pública de destino
      está en el intercambio de una clave de sesión de corta duración, por
      lo que la confidencialidad de dicha clave no está en compromiso en
      tanto es computacionalmente imposible un ataque por fuerza bruta a
      ella durante el corto tiempo de validez de la misma.
     El único problema es que sería fácilmente detectable pues si la cifra
      de Ke mod n se envía en claro, el resultado será un número K de 128
      bits en un cuerpo de cifra de 1.024 bits... habrá centenas de ceros .

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial       Página 43




                    Firmas digitales no cifrables
                  ¿Hay algún problema con la firma digital no cifrable?
     Si la cantidad de números no cifrables con la clave pública (tema
      confidencialidad) es alto, también lo será en igual proporción el de
      números no cifrables con la clave privada (tema autenticidad).
     En este caso, significa que el hash de la firma del mensaje dentro del
      cuerpo de cifra n iría en claro. Aunque el hash sea de 128 bits (MD5)
      ó 160 bits (SHA1) y se cifre con la clave privada del emisor y luego
      se reduzca al cuerpo de cifra de 1.024 bits, la cifra irá en claro por lo
      que se podría apreciar claramente al tener esa cifra tener sólo una
      centena de bits significativos... y muchos ceros a la izquierda.
     Como mucho esto puede dar pistas al criptoanalista en cuanto a que
      la clave del emisor podría no ser óptima y, por lo tanto, animarle a
      intentar otros tipos de ataques por la cifra de otros números en claro.

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial           Página 44




   Ataque al secreto de N por cifrado cíclico
      Un nuevo problema: se puede encontrar el número en claro N
      sin necesidad de conocer d, la clave privada del receptor.
      Como C = Ne mod n, realizaremos cifrados sucesivos de los
      criptogramas Ci resultantes con la misma clave pública hasta
      obtener nuevamente el cifrado C original.

                   Ci = Cei-1 mod n            (i = 1, 2, ...)    con C0 = C

      Si en el cifrado iésimo se encuentra el criptograma C inicial,
      entonces es obvio que el cifrado anterior (i-1) será el número
      buscado. Esto se debe a que RSA es un grupo mutiplicativo.
      Para evitarlo hay que usar primos seguros de forma que los
      subgrupos de trabajo sean lo suficientemente altos.


© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial                Página 45




        Ejemplo de ataque por cifrado cíclico
    Sea p = 13, q = 19, n = 247, (n) = 216, e = 29 (d = 149, no conocido)
    El número a cifrar será M = 123     C = 12329 mod 247 = 119

        i        Ci
       i=0       C0 = 119
       i=1       C1 = 11929 mod 247 = 6
       i=2       C2 = 629 mod 247 = 93
       i=3       C3 = 9329 mod 247 = 175
       i=4       C4 = 17529 mod 247 = 54
       i=5       C5 = 5429 mod 247 = 123                 en este paso aún no lo sabemos
       i=6       C6 = 12329 mod 247 = 119

    El ataque ha prosperado muy rápidamente: como hemos obtenido otra
    vez el criptograma C = 119, es obvio que el paso anterior con C = 123
    se correspondía con el texto en claro. ¿Y si usamos primos seguros?

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial                          Página 46




Ataque por cifrado cíclico y primos seguros
    Sea p = 11 y q = 23, aunque esto no sea recomendable. Luego n = 253,
     (n) = 220, y si e = 17, la clave privada es d = 134, no conocida.
    Sea el número confidencial N = 123         C = 12317 mod 253 = 128.

      i          Ci                                 i          Ci
    i=0          C0 = 128                           i = 12     C12 = 16717 mod 253 = 150
    i=1          C1 = 12817 mod 253 = 6             i = 13     C13 = 15017 mod 253 = 193
    i=2          C2 = 617 mod 253 = 173             i = 14     C14 = 19317 mod 253 = 118
    i=3          C3 = 17317 mod 253 = 101           i = 15     C15 = 11817 mod 253 = 200
    i=4          C4 = 10117 mod 253 = 95            i = 16     C16 = 20017 mod 253 = 73
    i=5          C5 = 9517 mod 253 = 39             i = 17     C17 = 7317 mod 253 = 94
    i=6          C6 = 3917 mod 253 = 96             i = 18     C18 = 9417 mod 253 = 41
    i=7          C7 = 9617 mod 253 = 2              i = 19     C19 = 4117 mod 253 = 123 
    i=8          C8 = 217 mod 253 = 18              i = 20     C20 = 12317 mod 253 = 128
    i=9          C9 = 1817 mod 253 = 215              Para n = 253, hemos tenido que recorrer un
    i = 10       C10 = 21517 mod 253 = 151             espacio mucho mayor dentro de un cuerpo
    i = 11       C11 = 15117 mod 253 = 167              de cifra muy similar al anterior (n = 247).

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial     Página 47




                    La paradoja del cumpleaños
    El próximo ataque a la clave privada estará basado en este problema.
   Pregunta: ¿Cuál será la confianza (probabilidad > 50%) de que en un
   aula con 365 personas -no se tiene en cuenta el día 29/02 de los años
   bisiestos- dos de ellas al azar estén de cumpleaños en la misma fecha?
   Solución: Se escribe en la pizarra los 365 días del año y las personas
   entran al aula de uno en uno, borrando el día de su cumpleaños de la
   pizarra. Para alcanzar esa confianza del 50%, basta que entren sólo 23
   personas al aula. Este es un valor muy bajo, en principio inimaginable y
   de allí el nombre de paradoja, aunque matemáticamente no lo sea.
   Explicación: El primero en entrar tendrá una probabilidad de que su
   número no esté borrado igual a n/n = 1, el segundo de (n-1)/n, etc. De
   esta manera, la probabilidad de no coincidencia será pNC = n!/(n-k)!nk.
   Para k = 23 se tiene pNC = 0,493 y así la probabilidad de coincidencia será
   igual a pC = (1- pNC) = 0,507, que es mayor que 0,5.

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial   Página 48




 Ataque a la clave por paradoja cumpleaños
    Algoritmo propuesto por Merkle y Hellman en 1981:
    • El atacante elige dos números aleatorios distintos i, j
      dentro del cuerpo de cifra n. Lo interesante es que elige,
      además, un mensaje o número N cualquiera.
    • Para i = i+1 y para j = j+1 calcula Ni mod n y Nj mod n.
    • Cuando encuentra una coincidencia de igual resultado de
      cifra para una pareja (i, j), será capaz de encontrar d.
         Un ejemplo para resolver en siguientes diapositivas: sea p
         = 7; q = 13, n = 91, e = 11, d = 59. El atacante sólo conoce
         n = 91 y e = 11. Partirá con el número N = 20 y elegirá los
         valores i = 10 y j = 50.

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial                     Página 49




    Ejemplo de ataque paradoja cumpleaños
     i            Ci                                 j          Ci
     i = 10       C10 = 2010 mod 91 = 43             j = 50     C50 = 2050 mod 91 = 36
     i = 11       C11 = 2011 mod 91 = 41             j = 51     C51 = 2051 mod 91 = 83
     i = 12       C12 = 2012 mod 91 = 1              j = 52     C52 = 2052 mod 91 = 22
     i = 13       C13 = 2013 mod 91 = 20             j = 53     C53 = 2053 mod 91 = 76
     i = 14       C14 = 2014 mod 91 = 36             j = 54     C54 = 2054 mod 91 = 64
     i = 15       C15 = 2015 mod 91 = 83             j = 55     C55 = 2055 mod 91 = 6
     i = 16       C16 = 2016 mod 91 = 22             j = 56     C56 = 2056 mod 91 = 29
     i = 17       C17 = 2017 mod 91 = 76             j = 57     C57 = 2057 mod 91 = 34
     Hay una colisión en el paso quinto al coincidir el valor C = 36 en contador i
     que ya había aparecido en contador j. Observe los valores repetidos.
     Con los valores de i, j y el desplazamiento observado en uno de ellos cuando se
     detecta la colisión (i = 14), se establece un conjunto de ecuaciones y, si el ataque
     prospera, obtenemos la clave privada, una clave privada pareja, o bien un valor
     de clave privada particular que sólo sirve para descifrar el número elegido (aquí
     el 20) y no un número genérico. En este caso se hablará de un falso positivo.

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial            Página 50




  Resultado del ataque paradoja cumpleaños
  La primera coincidencia se encuentra para i = 14; j = 50. Así, el atacante
  conociendo la clave pública e = 11, calcula:
            w = (14-50) / mcd (11, |14-50|) = -36 / mcd (11, 36) = - 36.
  Entonces deberán existir valores s, t de forma que se cumpla lo siguiente:
            w s+e t= 1                 -36 s + 11 t = 1
  Las posibles soluciones a la ecuación son: w s mod e = 1; e t mod w = 1
            -36 s = 1 mod 11           s = inv (-36, 11) = inv (8, 11) = 7
            11 t = 1 mod 36            t = inv (11, 36) = 23
  El valor t = 23 será una clave privada pareja de d = 59. Compruebe que se
  verifica w s + e t = 1 y que las claves parejas son 11, 23, 35, 47, 71 y 83.
  Nota: como este algoritmo parte con valores aleatorios de los contadores i, j (i
  deberá ser el menor posible y j la mitad del cuerpo de cifra) y del número N (en el
  ejemplo 20) no siempre prospera el ataque, es decir será no determinista. En ese
  caso, es posible que cambiando el valor de N sí se logre el objetivo buscado.

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial      Página 51




      Ataque que entrega alguna clave pareja
       Normalmente el ataque rompe la clave privada o una clave
        privada pareja; sin embargo, se darán situaciones especiales.
       Sea p = 11, q = 31, e = 13. Entonces d = 277 y las claves
        privadas parejas son: 7, 37, 67, 97, 127, 157, 187, 217, 247,
        307, 337.
       Observe la diferencia constante igual a (n)/10 = 30.
       Se realiza el ataque con el software genRSA tomando valores
        de N desde 2 hasta 50, partiendo el contador i en 3 y j en n/2.
       Para N = 2 encuentra d’ = 157; para N = 3 encuentra d’ = 97;
        para N = 4 encuentra d’ = 127; para N = 5 encuentra d’ = 127;
        para N = 6 encuentra d’ = 97; ... etc.
       Para N = 32 encuentra d’ = 13, una solución falsa.
       Para d’ = 13 el programa realiza 2 iteraciones, para d’ = 127
        realiza 3, para d’ = 157 realiza 4 y para d’ = 97 realiza 14.

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial      Página 52




          Ataque que entrega la clave privada
       En función de los parámetros de la clave, a veces se encuentra
        para muchos valores de N casi siempre la clave privada d.
       Sea p = 191, q = 211, e = 31. Entonces d = 12.871 y hay 9
        claves privadas parejas.
       Se realiza el ataque con el software genRSA tomando valores
        de N desde 2 hasta 50, partiendo el contador i en 3 y j en n/2.
       Para casi todos los valores de N encuentra la clave privada d.
       Para N = 7, 39, 49 encuentra d’ = 1.951, para N = 14 encuentra
        d’ = 13.668 y para N = 23 encuentra d’ = 18.191, todas falsas.
       Sea ahora p = 241, q = 251, e = 11. Entonces d = 49.091 y hay
        9 claves privadas parejas.
       Aunque aquí casi siempre encuentra el valor d’ = 19.091 como
        clave privada pareja válida, si usamos N = 36 el programa nos
        da como solución el valor d’ = 0, obviamente un falso positivo.

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial          Página 53




          ¿Podría darse un ataque distribuido?
       El ataque basado en la paradoja del cumpleaños no sería factible
        realizarlo en un solo PC por la alta complejidad computacional.
       ... pero bien podría pensarse en un algoritmo distribuido, de forma
        que un computador hiciera las veces de servidor y todos los demás
        (... tal vez varios cientos de miles) actuaran como clientes.
       El servidor tendría como función distribuir trozos de cifra entre
        los clientes en diferentes intervalos de valores i, j como los del
        ejemplo anterior y, además, recibir los resultados de los clientes
        para detectar colisiones. Esta última función será la más crítica.
       Supuestamente este ataque llevaría un tiempo menor que el de
        factorizar el valor de n, para así encontrar la clave privada.
       Si bien no está demostrado la factibilidad real en tiempo de
        cómputo de esta opción, el hecho de que un certificado digital, y
        por ende la clave privada, tenga una validez de un año podría ser
        un motivo de preocupación ... siempre sin caer en paranoias .

© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial   Página 54




            La otra historia del algoritmo RSA
     Rivest, Shamir y Adleman son los autores de RSA pero un algoritmo
      de cifra asimétrico basado en la dificultad de factorizar números
      grandes como función unidireccional fue descubierto mucho antes...
     En el año 1969 el Government Communications Headquarters
      (GCHQ) en Gran Bretaña comienza a trabajar en la idea de poder
      distribuir claves a través de una cifra no simétrica. En 1973, el
      matemático Clifford Cocks llegará a la misma conclusión que los
      creadores de RSA.
     Desgraciadamente este trabajo fue considerado como alto secreto por
      el gobierno británico por lo que su contenido no se hace público ni se
      patenta como invento, algo que sí hacen Diffie y Hellman en 1976
      con su intercambio de claves y en 1978 otro tanto los creadores del
      algoritmo RSA.


© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial             Página 55




    Consideraciones sobre el bloque de cifra
      Si queremos cifrar mensajes en vez de números y ese
      mensaje fuese mayor que el módulo de trabajo del
      sistema n = p q para RSA ...
        ¿cómo se generarían los bloques del mensaje a cifrar?

                        El mensaje M puede transformarse en
                        números y éstos se dividen en bloques
                         de g-1 dígitos, siendo g el número de
                             dígitos del módulo de trabajo:
                               el valor n = n p para RSA.
      Ya se ha dicho que la práctica esto no ocurrirá puesto
      que el cuerpo de cifra es como mínimo de 1.024 bits y              Ejemplo
      el “mensaje” a cifrar tendrá sólo una centena de bits.

© Jorge Ramió Aguirre     Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial                     Página 56




   Ejemplo de elección del bloque con RSA
          Se representará el mensaje en su valor ANSI decimal.
      n = p q = 89 127 = 11.303        bloques de cuatro dígitos
          (n) = 11.088; e = 25; d = inv (25, 11.088) = 10.201
            M = Olé = 079 108 233        M = 0791 0823 3
                                                        Se recupera el mensaje agrupando en
                                                        bloques de 4 dígitos excepto el último

    CIFRADO                                        DESCIFRADO
    C1 = 79125 mod 11.303 = 7.853                  M1 = 7.85310201 mod 11.303 = 0791
    C2 = 82325 mod 11.303 = 2.460                  M2 = 2.46010201 mod 11.303 = 0823
    C3 = 325 mod 11.303 = 6.970                    M3 = 6.97010201 mod 11.303 = 3


© Jorge Ramió Aguirre   Madrid (España) 2006
Capítulo 14: Cifrado Asimétrico Exponencial                 Página 57




                                  Prácticas del tema
    Software OpenSSL:           http://www.slproweb.com/products/Win32OpenSSL.html

    1.     Una vez instalado Win32OpenSSL para Windows en el disco duro, en la
           carpeta C:OpenSSL-Win32bin y desde el símbolo del sistema MSDOS
           genere una clave RSA de 1.024 bits mediante el comando: openssl genrsa
           1024. Observe que creada la clave, nos indica “e is 65537 (0x10001)”.
    2.     Cree una nueva clave RSA guardando la clave en un archivo de nombre
           rsakey con el comando: openssl genrsa -out rsakey 1024.
    3.     Recupere ahora esa clave y guárdela en un archivo en formato hexadecimal
           de nombre claveRSA1: openssl rsa -in rsakey -text -out claveRSA1. Si no
           desea incluir en el archivo la clave privada, agregue la opción -noout.
    4.     Edite claveRSA1 con Word o WordPad, elimine todos los “:” y elimine
           luego los “cuatro espacios en blanco” de forma que los valores de p y de q
           en hexadecimal estén cada uno en una sola cadena. Pegue esos valores de p
           y de q en el programa genRSA, con e = 10001, genere y observe la clave.
    5.     Repita los puntos 2, 3 y 4 hasta encontrar una clave de “baja calidad”.

© Jorge Ramió Aguirre   Madrid (España) 2006

Más contenido relacionado

PPTX
Rsa algorithm (rivest shamir-adleman)
PPTX
Aclarando dudas sobre RSA
PPTX
Cryptography using rsa cryptosystem
PPTX
Rsa cryptosystem
PDF
Presentation about RSA
PPTX
Discrete Logarithmic Problem- Basis of Elliptic Curve Cryptosystems
PDF
Technique de Cryptographie AES, DES et RSA
PDF
Paper de Criptografía sobre Ataque a la clave por la paradoja del cumpleaños ...
Rsa algorithm (rivest shamir-adleman)
Aclarando dudas sobre RSA
Cryptography using rsa cryptosystem
Rsa cryptosystem
Presentation about RSA
Discrete Logarithmic Problem- Basis of Elliptic Curve Cryptosystems
Technique de Cryptographie AES, DES et RSA
Paper de Criptografía sobre Ataque a la clave por la paradoja del cumpleaños ...

La actualidad más candente (20)

PPTX
Modern block cipher
PDF
CNIT 141: 2. Randomness
PDF
Metodos iterativos
PDF
Post quantum cryptography
PDF
PPTX
RSA algorithm
PPTX
Complejidad de algoritmos
PDF
2-Approximation Vertex Cover
PPTX
quantumcrypto
PPT
Le chiffrement
PPTX
Grover's algorithm simplified.pptx
PPTX
Rsa Crptosystem
PDF
6 - segurança - criptografia
PDF
Grovers Algorithm
PPTX
Crypto graphy
PPTX
Classical encryption techniques
PPTX
Diffie Hellman Key Exchange
PDF
Modern Cryptography
ODP
Implémentation des principaux algorithmes de chiffrements en Java
PDF
Introduction to Homomorphic Encryption
Modern block cipher
CNIT 141: 2. Randomness
Metodos iterativos
Post quantum cryptography
RSA algorithm
Complejidad de algoritmos
2-Approximation Vertex Cover
quantumcrypto
Le chiffrement
Grover's algorithm simplified.pptx
Rsa Crptosystem
6 - segurança - criptografia
Grovers Algorithm
Crypto graphy
Classical encryption techniques
Diffie Hellman Key Exchange
Modern Cryptography
Implémentation des principaux algorithmes de chiffrements en Java
Introduction to Homomorphic Encryption
Publicidad

Destacado (7)

PDF
Unidad 4 - Software antimalware
PDF
Unidad 3 - Seguridad Lógica
PDF
Unidad 5 - Criptografía
PDF
Unidad 6 Seguridad en redes corporativas
PDF
Unidad 1 - Principios de Seguridad y Alta Disponibilidad
PDF
Unidad 2 - Seguridad Pasiva
PDF
Introducción a la criptografía III
Unidad 4 - Software antimalware
Unidad 3 - Seguridad Lógica
Unidad 5 - Criptografía
Unidad 6 Seguridad en redes corporativas
Unidad 1 - Principios de Seguridad y Alta Disponibilidad
Unidad 2 - Seguridad Pasiva
Introducción a la criptografía III
Publicidad

Similar a RSA crypt4you (20)

PPTX
Leccion01 rsa crypt4you -V2
PPTX
Leccion01 rsa crypt4you
PPT
14 cifraasimetrica
PPTX
Leccion03 rsa crypt4you
PPTX
Leccion04 rsa crypt4you
PPTX
Leccion05 rsa crypt4you - v1
PDF
Mecanismos de seguridad en el desarrollo de aplicaciones
PPTX
Crypt4you. Leccion02 curso rsa
PPTX
Leccion02 rsa v3 crypt4you
PPTX
Criptografia - Asimetrica - RSA
PDF
Mecanismos de seguridad en el desarrollo de aplicaciones
PPTX
Leccion06 rsa crypt4you
DOCX
El Algoritmo RSA
DOC
Trabajo De Compu Algoritmos
PPT
Up encriptacion publica v1.2
PDF
Cifrado Asimetrico
PPTX
Algoritmo rsa
PPT
CIFRADO DE CLAVE PUBLICA Y PRIVADA
PPTX
ComputacióN BáSica
Leccion01 rsa crypt4you -V2
Leccion01 rsa crypt4you
14 cifraasimetrica
Leccion03 rsa crypt4you
Leccion04 rsa crypt4you
Leccion05 rsa crypt4you - v1
Mecanismos de seguridad en el desarrollo de aplicaciones
Crypt4you. Leccion02 curso rsa
Leccion02 rsa v3 crypt4you
Criptografia - Asimetrica - RSA
Mecanismos de seguridad en el desarrollo de aplicaciones
Leccion06 rsa crypt4you
El Algoritmo RSA
Trabajo De Compu Algoritmos
Up encriptacion publica v1.2
Cifrado Asimetrico
Algoritmo rsa
CIFRADO DE CLAVE PUBLICA Y PRIVADA
ComputacióN BáSica

Último (20)

PDF
Como usar el Cerebro en las Aulas SG2 NARCEA Ccesa007.pdf
PDF
Iniciación Al Aprendizaje Basado En Proyectos ABP Ccesa007.pdf
PDF
ciencia_tecnologia_sociedad Mitcham Carl. (1994)..pdf
PPTX
BIZANCIO. EVOLUCIÓN HISTORICA, RAGOS POLÍTICOS, ECONOMICOS Y SOCIALES
PPTX
MATEMATICAS GEOMETRICA USO TRANSPORTADOR
PDF
Telos 127 Generacion Al fa Beta - fundaciontelefonica
PPTX
4. Qué es un computador PARA GRADO CUARTO.pptx
PDF
MODULO I ENFERMERIA BASICA.pdf HIstoria en enfermeria
PPTX
Historia-Clinica-de-Emergencia-Obstetrica 1.10.pptx
PDF
Los10 Mandamientos de la Actitud Mental Positiva Ccesa007.pdf
PDF
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE.pdf
DOCX
PLAN DE AREA DE CIENCIAS SOCIALES TODOS LOS GRUPOS
DOCX
PLAN DE CASTELLANO 2021 actualizado a la normativa
PDF
Texto Digital Los Miserables - Victor Hugo Ccesa007.pdf
PDF
Los hombres son de Marte - Las mujeres de Venus Ccesa007.pdf
PDF
informe tipos de Informatica perfiles profesionales _pdf
PDF
La lluvia sabe por qué: una historia sobre amistad, resiliencia y esperanza e...
PDF
Introducción a la historia de la filosofía
PDF
TALLER DE ESTADISTICA BASICA para principiantes y no tan basicos
PDF
Teologia-Sistematica-Por-Lewis-Sperry-Chafer_060044.pdf
Como usar el Cerebro en las Aulas SG2 NARCEA Ccesa007.pdf
Iniciación Al Aprendizaje Basado En Proyectos ABP Ccesa007.pdf
ciencia_tecnologia_sociedad Mitcham Carl. (1994)..pdf
BIZANCIO. EVOLUCIÓN HISTORICA, RAGOS POLÍTICOS, ECONOMICOS Y SOCIALES
MATEMATICAS GEOMETRICA USO TRANSPORTADOR
Telos 127 Generacion Al fa Beta - fundaciontelefonica
4. Qué es un computador PARA GRADO CUARTO.pptx
MODULO I ENFERMERIA BASICA.pdf HIstoria en enfermeria
Historia-Clinica-de-Emergencia-Obstetrica 1.10.pptx
Los10 Mandamientos de la Actitud Mental Positiva Ccesa007.pdf
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE.pdf
PLAN DE AREA DE CIENCIAS SOCIALES TODOS LOS GRUPOS
PLAN DE CASTELLANO 2021 actualizado a la normativa
Texto Digital Los Miserables - Victor Hugo Ccesa007.pdf
Los hombres son de Marte - Las mujeres de Venus Ccesa007.pdf
informe tipos de Informatica perfiles profesionales _pdf
La lluvia sabe por qué: una historia sobre amistad, resiliencia y esperanza e...
Introducción a la historia de la filosofía
TALLER DE ESTADISTICA BASICA para principiantes y no tan basicos
Teologia-Sistematica-Por-Lewis-Sperry-Chafer_060044.pdf

RSA crypt4you

  • 1. El algoritmo RSA Aula Virtual Crypt4you Selección del capítulo 14 del Libro Electrónico de Seguridad Informática y Criptografía del mismo autor para Crypt4you Dr. Jorge Ramió Aguirre Universidad Politécnica de Madrid Este archivo forma parte libro electrónico de Seguridad Informática y Criptografía v 4.1 de marzo de 2006. Se autoriza el uso, su reproducción en computador y la impresión sólo con fines docentes o personales, respetando los créditos del autor. Queda prohibida su comercialización. Curso de Seguridad Informática y Criptografía © JRA
  • 2. Capítulo 14: Cifrado Asimétrico Exponencial Página 2 Aquí ciframos números, no mensajes • La operación característica de la cifra asimétrica es mediante un cifrado exponencial. La operación a realizar será C = AB mod n, en donde n es el cuerpo de cifra del orden de 1.024 bits, B es una clave pública 17 bits para el intercambio de clave y cerca de 1.024 bits de la clave privada para firma digital. A será siempre un número N (nunca un mensaje M) y por lo general del orden de las centenas de bits. • Esto es así porque este tipo de cifra es muy lenta y sería muy costoso en tiempo cifrar, por ejemplo, mensajes de cientos o miles de bytes. • Por lo tanto, cuando se cifre con la clave pública de destino para hacer un intercambio de clave, se tratará de un número N del orden de los 128 bits (la clave de sesión), y cuando se cifre con la clave privada de emisión para una firma digital, se tratará de un número N de 160 bits, por ejemplo un hash SHA-1 sobre el mensaje M. © Jorge Ramió Aguirre Madrid (España) 2006
  • 3. Capítulo 14: Cifrado Asimétrico Exponencial Página 3 Otros casos de cifra exponencial • La cifra con la clave privada de recepción cuando desciframos un número o dato que se nos ha enviado confidencialmente, o bien la cifra con la clave pública del emisor para comprobar así su firma digital, serán casos de descifrado. • En el primero de ellos, puesto que se recibe un número muy grande dentro del cuerpo de cifra con n bits y la clave privada será también de esa magnitud, en el caso de RSA se realizará el descifrado usando el Teorema del Resto Chino. • Si deseamos cifrar mensajes M con estos algoritmos, se puede hacer formando bloques de cifra, al igual que se hace con los sistemas simétricos, pero recuerde que esto tiene sentido sólo para prácticas de laboratorio y nunca en sistemas reales. © Jorge Ramió Aguirre Madrid (España) 2006
  • 4. Capítulo 14: Cifrado Asimétrico Exponencial Página 4 Cifrado exponencial con clave del receptor • Al cifrar el número N y en el descifrado del criptograma C se usará una exponenciación: Ee(N) = C y Ed(C) = N. • En la operación de cifrado, el subíndice e significará el uso de la clave pública del receptor (R) en el extremo emisor y el subíndice d el uso de la clave privada del receptor (R) en el extremo receptor. C = EeR(N) = NeR mod nR N = EdR(C) = CdR mod nR • N deberá ser un elemento del CCR de nR. • Esta operación se usará para realizar el intercambio de una clave de sesión entre un emisor y un receptor. © Jorge Ramió Aguirre Madrid (España) 2006
  • 5. Capítulo 14: Cifrado Asimétrico Exponencial Página 5 Cifrado exponencial con clave del emisor • En la operación de cifrado el subíndice d significa el uso de la clave privada del emisor (E) en el extremo emisor, y el subíndice e el uso de la clave pública del emisor (E) en el extremo receptor. C = EdE(N) = NdE mod nE N = EeE(C) = CeE mod nE • N deberá ser un elemento del CCR de nE. • Esta operación se usará para autenticar la identidad de un usuario mediante una firma digital, al mismo tiempo que se demuestra la integridad del mensaje mediante un hash. © Jorge Ramió Aguirre Madrid (España) 2006
  • 6. Capítulo 14: Cifrado Asimétrico Exponencial Página 6 Cifrado exponencial genérico tipo RSA Sea el grupo de trabajo n = p q (n) = (p-1)(q-1) Se eligen una clave pública e y una privada d de forma que: e d mod (n) = 1 e d = k(p-1)(q-1) + 1. Si e d = k (n) + 1 Por el Teorema del Resto Chino se tiene que: Por el Teorema de Euler y ... Ned = N mod n se tiene que: ssi Ned = N mod p Nk (n) mod n = 1 Ned = N mod q para todo N primo con n Luego, el sistema de cifra será válido para cualquier valor de N © Jorge Ramió Aguirre Madrid (España) 2006
  • 7. Capítulo 14: Cifrado Asimétrico Exponencial Página 7 Operación de descifrado exponencial Al cifrar el número N con una clave pública e (en este caso para realizar un intercambio de clave, aunque es igual de válido con una clave d en caso de firma digital) tenemos: Cifrado: C = Ne mod n Descifrado: Cd mod n = (Ne)d mod n = Ned mod n Cd mod n = Nk (n)+1 mod n = N Nk (n) mod n Cd mod n = N 1 mod n = N mod n Por lo tanto, la operación Cd mod n recuperará el número N. © Jorge Ramió Aguirre Madrid (España) 2006
  • 8. Capítulo 14: Cifrado Asimétrico Exponencial Página 8 Comprobación de la recuperación de N Sea n = p q = 5 11 = 55 (n) = (5-1)(11-1) = 40 Sea el número N = 50 = 2 52 (debe ser un elemento de n = 55) Se elige e = 3 d = inv[e, (n)] = inv (3, 40) = 27 e d mod (n) = 3 27 mod 40 = 81 mod 40 = 1 C = Ne mod n = 503 mod 55 = (2 52)3 mod 55 C = [(2)3 mod 55 (52)3 mod 55] mod 55 - por reducibilidad  - N = Cd mod n = {[(2)3 mod 55 (52)3 mod 55] mod 55}27 mod 55 N = [(2)3 27 mod 55 (52)3 27 mod 55] mod 55 N = [22 (n)+1 52 (n)+1 52 (n)+1] mod 55 Por el Teorema de Euler y del Resto Chino = 2 5 5 mod 55 = 50 © Jorge Ramió Aguirre Madrid (España) 2006
  • 9. Capítulo 14: Cifrado Asimétrico Exponencial Página 9 Algoritmo de cifra asimétrica RSA En febrero de 1978 Ron Rivest, Adi Shamir y Leonard Adleman proponen un algoritmo de cifra de clave pública: RSA Pasos del algoritmo 1. Cada usuario elige un grupo n = p q (pueden y de hecho son distintos). 2. Los valores p y q no se hacen públicos. 3. Cada usuario calcula (n) = (p-1)(q-1). 4. Cada usuario elige una clave pública e de forma que 1 < e < (n) y que cumpla con la condición: mcd [e, (n)] = 1. 5. Cada usuario calcula la clave privada d = inv [e, (n)]. 6. Se hace público el grupo n y la clave e. 7. Se guarda en secreto la clave d. También guardará p y q puesto que en la operación de descifrado usará el Teorema del Resto Chino. Cifra: C = NeR mod nR Firma: C = h(M)dE mod nE © Jorge Ramió Aguirre Madrid (España) 2006
  • 10. Capítulo 14: Cifrado Asimétrico Exponencial Página 10 Intercambio de clave RSA (B A) En el protocolo intercambiaremos una clave K Sea K = DA9F (16 bits) Benito Adela Claves Benito 216 66.331 217 Claves Adela nB = 65.669 Forzaremos cifrar un nA = 66.331 eB = 35, dB = 53.771 bloque de 16 bits eA = 25, dA = 18.377 Cifra K = DA9F16 = 55.96710 En la práctica no habrá que C = KeA mod nA forzar este tamaño ya que la cifra asimétrica se hace en C = 55.96725 mod 66.331 = un cuerpo (más de mil bits) 16.667 mucho mayor que el número Benito envía a Adela C = 16.667 que se cifra (cientos de bits). © Jorge Ramió Aguirre Madrid (España) 2006
  • 11. Capítulo 14: Cifrado Asimétrico Exponencial Página 11 Recuperación de la clave K por A Claves Benito Claves Adela nB = 65.669 nA = 66.331 eB = 35, dB = 53.771 eA = 25, dA = 18.377 Benito Teníamos que: K = DA9F16 = 55.96710 Adela C = KeA mod nA C = 55.96725 mod 66.331 = 16.667 Benito había enviado a Adela C = 16.667 Adela calcula: Los primos que ha • CdA mod nA = 16.66718.377 mod 66.331 = 55.967. usado Benito son • El intercambio de clave se ha realizado con (97, 677) y los de confidencialidad porque sólo Adela ha podido Adela (113, 587) realizar ese cálculo con su clave privada dA. © Jorge Ramió Aguirre Madrid (España) 2006
  • 12. Capítulo 14: Cifrado Asimétrico Exponencial Página 12 Descifrado con números grandes Grupo n = 91 = 7 13; (n) = (7 13) = (7-1)(13-1) = 72 N = 48 Elegimos e = 5 pues mcd (5,72) = 1 d = inv(5,72) = 29 CIFRADO: C = Ne mod n = 485 mod 91 = 5245.803.968 mod 91 = 55 DESCIFRADO: N = Cd mod n = 5529 mod 91 = 48 ... 5529 ya es “número grande” 5529 es un número con 51 dígitos... 5529 = 295473131755644748809642476009391248226165771484375 ¿Cómo podemos acelerar esta operación? 1ª opción: usar reducibilidad  2ª opción: algoritmo exp. rápida  Opción óptima: usar el Teorema del Resto Chino  © Jorge Ramió Aguirre Madrid (España) 2006
  • 13. Capítulo 14: Cifrado Asimétrico Exponencial Página 13 Uso del Teorema del Resto Chino en RSA • Normalmente la clave pública e de RSA es un valor bastante bajo, por ejemplo 216 + 1 (un valor típico). Luego, en el proceso de cifra (no en la firma) no tendremos problemas con la velocidad de cifra porque el exponente e será relativamente bajo, en este caso 17 bits. • Como el cuerpo de trabajo n = p q es mucho mayor, del orden de 21.024 si hablamos de claves de 1.024 bits, entonces la clave privada d será por lo general mucho mayor que el valor de e y caerá muy cerca de ese valor de 1.024 bits. Por lo tanto, podría ser costoso para el receptor descifrar algo con su clave privada o firmar digitalmente un documento con dicha clave privada. • La solución está en aplicar el Teorema del Resto Chino: en vez de trabajar en n, lo haremos en p y q por lo que las exponenciaciones modulares se harán en p y q, mucho más rápido que hacerlo en n. © Jorge Ramió Aguirre Madrid (España) 2006
  • 14. Capítulo 14: Cifrado Asimétrico Exponencial Página 14 Descifrado RSA aplicando el TRC N = Cd mod n Aplicando el Teorema del Resto Chino: N = {Ap[Cpdp (mod p)] + Aq[Cqdq (mod q)]} mod n con: Ap = q [inv (q,p)] = qp-1 mod n Aq = p [inv (p,q)] = pq-1 mod n dp = d mod (p-1) dq = d mod (q-1) Cp = C mod p Cq = C mod q Se hacen más operaciones pero el tiempo de cálculo total es menor dado que los valores dp, dq, Ap y Aq están precalculados. Las operaciones Cp y Cq son sencillas y muy rápidas. El único cálculo que consume tiempo será Cpdp y Cqdq pero ambos se hacen en cuerpos mucho menores que n. © Jorge Ramió Aguirre Madrid (España) 2006
  • 15. Capítulo 14: Cifrado Asimétrico Exponencial Página 15 Ejemplo de descifrado RSA usando el TRC Sea: p = 89, q = 31, n = p q = 89 31 = 2.759, (n) = 88 30 = 2.640 Elegimos e = 29 d = inv [e, (n)] = inv [29, 2.640] = 2.549 Si el número a cifrar es N = 1.995, entonces: C = Ne mod n = 1.99529 mod 2.759 = 141 N = Cd mod n = 1412.549 mod 2.759 = 1.995 Ap = qp-1 mod n = 3188 mod 2.759 = 713 Aq = pq-1 mod n = 8930 mod 2.759 = 2.047 dp = d mod (p-1) = 2.549 mod 88 = 85 dq = d mod (q-1) = 2.549 mod 30 = 29 Cp = C mod p = 141 mod 89 = 52 Cq = C mod q = 141 mod 31 = 17 Reemplazando en: N = {Ap[Cpdp (mod p)] + Aq[Cqdq (mod q)]} mod n N = {713[5285 mod 89] + 2.047[1729 mod 31]} mod 2.759 N = {713 37 + 2.047 11} mod 2.759 = (26.381 + 22.517) mod 2.759 = 1.995 © Jorge Ramió Aguirre Madrid (España) 2006
  • 16. Capítulo 14: Cifrado Asimétrico Exponencial Página 16 Ataque a la clave por factorización de n ¿Qué fortaleza tendrá este algoritmo ante ataques?  El intruso que desee conocer la clave secreta d a partir de los valores n y e se enfrentará al Problema de la Factorización de Números Grandes (PFNG), puesto que la solución para conocer esa clave privada es conocer primero el valor del Indicador de Euler (n) = (p-1)(q-1) para así poder encontrar d = inv [e, (n)], pero para ello deberá saber los valores de los primos p y q.  La complejidad asociada al PFNG para un número n viene dada por la ecuación e ln(n) ln ln(n), donde ln es logaritmo natural.  Le recomiendo se descargue de este sitio el programa factor.exe en entorno MS-DOS. No obstante, existirán otros ataques a RSA que no requieren factorizar un número grande. © Jorge Ramió Aguirre Madrid (España) 2006
  • 17. Capítulo 14: Cifrado Asimétrico Exponencial Página 17 Tiempo necesario para afrontar el PFNG Para un procesador de 2x108 instrucciones por segundo (años noventa). Fuente: Criptografía Digital, José Pastor. Prensas Univ. de Zaragoza, 1998. Nº de bits (n) Nº de dígitos Días Años 60 18 1,7 x 10-8 - 120 36 1,5 x 10-5 - 256 77 1,0 - 363 109 9,0 x 102 2,5 442 133 9,4 x 104 2,5 x 102 665 200 3,8 x 108 1,0 x 106  Desafío RSA640 (193 dígitos) roto en noviembre de 2005 en la Universidad de Bonn. Lo que en 1998 se valoraba en un millón de años, hoy se ha roto en un tiempo equivalente a 30 años con un PC a 2,2 GHz. Y se resolverán nuevos desafíos de números mayores. Deberemos ser siempre muy cautos. © Jorge Ramió Aguirre Madrid (España) 2006
  • 18. Capítulo 14: Cifrado Asimétrico Exponencial Página 18 Tamaño de los parámetros en RSA Toda la seguridad de RSA está basada en sus parámetros: los primos p y q y los valores de sus claves pública e y privada d. El cuerpo de trabajo debe ser al menos de 1.024 bits con primos p y q de al menos 500 bits y que difieran unos cuantos dígitos. Aunque la clave pública debe ser pequeña para facilitar así las operaciones, su valor no puede ser excesivamente bajo. Se usará 4 el número 4 de Fermat F4 = 22 + 1 = 216 + 1 = 65.537. Como ed mod (n) = 1, esto hace que la clave privada d sea un número superior a los 1.000 bits, por lo general cerca de 1.024. Habrá que prestar también especial atención en la generación de dichos primos y la posterior comprobación de su primalidad. © Jorge Ramió Aguirre Madrid (España) 2006
  • 19. Capítulo 14: Cifrado Asimétrico Exponencial Página 19 El problema en la elección del valor de n Si p y q son muy cercanos, puede ser fácil factorizar n  Si p q y suponemos que p > q, entonces (p-q)/2 es un entero muy pequeño y por otra parte (p+q)/2 será un entero ligeramente superior a n.  Además se cumplirá que: n = (p+q)²/4 - (p-q)²/4. Esto lo podemos escribir como n = x² - y² y² = x² - n  Elegimos enteros x > n hasta que (x² - n) sea cuadrado perfecto. En este caso x = (p+q)/2; y = (p-q)/2. Por lo tanto rompemos el valor n: p = (x+y); q = (x-y).  © Jorge Ramió Aguirre Madrid (España) 2006
  • 20. Capítulo 14: Cifrado Asimétrico Exponencial Página 20 Ejemplo de mala elección del valor de n • Sea p = 181; q = 251 n = 181 251 = 45.431 • Como 45.431 = 213,14 buscaremos valores enteros de x mayores que 213 de forma que (x² - 45.431) sea un cuadrado perfecto  1. x = 214 x² – 45.431 = 365 365 = 19,10  2. x = 215 x² – 45.431 = 794 794 = 28,17  3. x = 216 x² – 45.431 = 1.225 1.225 = 35  Entonces: p = x – y = 216 – 35 = 181 q = x + y = 216 + 35 = 251  Para evitar otros problemas, es recomendable usar los denominados primos seguros. © Jorge Ramió Aguirre Madrid (España) 2006
  • 21. Capítulo 14: Cifrado Asimétrico Exponencial Página 21 Elección de los números primos Los valores primos deben elegirse apropiadamente: Sistema RSA a) p y q deben diferir en unos pocos dígitos. Recuerde que la relación bit/dígito es 3,3. ¿Cómo? b) p y q no deben ser primos muy cercanos. c) Longitud mínima de p y q: 500 bits. d) Valores de (p-1) y (q-1) del Indicador de Euler con factores primos grandes. e) El mcd entre (p-1) y (q-1) debe ser pequeño. Esto se cumple con los denominados primos seguros © Jorge Ramió Aguirre Madrid (España) 2006
  • 22. Capítulo 14: Cifrado Asimétrico Exponencial Página 22 Cálculo de números primos p y q seguros Se elige r un primo grande de modo que: 2 r + 1 = p Se elige un r’ primo algo mayor que r de modo que: 2 r’ + 1 = q EJEMPLO: Sean r = 1.019 y r’ = 3.863 p = 2 1.019 + 1 = 2.039 (11 bits) Es primo  q = 2 3.863 + 1 = 7.727 (13 bits) Es primo  n = p q = 15.755.353 Luego: p-1 = 2.038; q-1 = 7.726 p-1 = 2 1.019; q-1 = 2 3.863 mcd (p-1, q-1) = 2 Los primos p y q cumplen la condición de primos seguros Nota: es posible que encuentre algún documento donde proponga elegir un valor r primo y comprobar luego si p = 2r+1 y q = 2p+1 son primos. En este caso p y q seguirán siendo primos seguros pero sólo de forma independiente. Aquí será muy fácil atacar el valor n factorizándolo a través de una ecuación de segundo grado. © Jorge Ramió Aguirre Madrid (España) 2006
  • 23. Capítulo 14: Cifrado Asimétrico Exponencial Página 23 Par de primos seguros pero independientes Elegimos r primo. Comprobamos primero que p = 2r+1 es primo y luego que q = 2p+1 también es primo. Los valores de p y q serán primos seguros pero en el sistema RSA basado en n = p q no servirán como pareja segura dado que: n = p q = [2r +1][2p +1] = [2r + 1][2(2r + 1) + 1] = [2r +1][4r + 3] n = 8r2 + 10r + 3 8r2 + 10r + (3 - n) = 0 Luego: r = [- 10 100 - 32(3-n)]/16 = [- 10 4 + 32n]/16 r = [- 10 + 4 + 32n]/16 Conocido el valor de r podemos calcular p y q . Ejemplo: r = 41, p = 2r+1 = 83 , q = 2p+1 = 167 , n = 13.861. r = [- 10 + 4 + 32 13.861]/16 = [- 10 + 666]/16 = 41. © Jorge Ramió Aguirre Madrid (España) 2006
  • 24. Capítulo 14: Cifrado Asimétrico Exponencial Página 24 Claves privadas parejas en RSA Una clave privada pareja CPP dP, permite descifrar el criptograma C resultado de una cifra con la clave pública e sin que dP sea el inverso de la clave pública e. En el sistema RSA habrá como mínimo una clave dP pareja de la clave privada d. Esto se debe a que las claves inversas e y d lo serán en (n) y en cambio la cifra se hace en el cuerpo n. Ejemplo: Si p = 13; q = 19; n = 247, (n) = 216 y elegimos e = 41, entonces d = inv (41, 216) = 137, que es único. Si ciframos con la clave pública el número N = 87 obtenemos C = 8741 mod 247 = 159. Luego sabemos que N = Cd mod n = 159137 mod 247 = 87  Pero también lo desciframos con dP = 29, 65, 101, 173, 209 y 245. © Jorge Ramió Aguirre Madrid (España) 2006
  • 25. Capítulo 14: Cifrado Asimétrico Exponencial Página 25 Número de claves privadas parejas Si = mcm [(p-1),(q-1)] y sea d = e-1 mod = inv (e, ) La clave pública e tendrá claves parejas di de la forma: di = d + i 1 < di < n i = 0, 1, ... = (n - d )/ En el ejemplo anterior tenemos que: = mcm [(p-1),(q-1)] = mcm (12, 18) = 36 Luego: d = inv (41, 36) = 29, así di = d + i = 29 + i 36 Es decir di = 29, 65, 101, 137, 173, 209, 245. Observe que en aparece (137) la clave privada d y comprobamos que: = (n - d )/ = (247 – 29)/36) = 6,05 = 6 © Jorge Ramió Aguirre Madrid (España) 2006
  • 26. Capítulo 14: Cifrado Asimétrico Exponencial Página 26 Casos de claves privadas parejas Sea p = 751, q = 1.009; e = 13 Sea p = 379, q = 1.783; e = 71 Clave privada: d = 407.077 Clave privada: d = 531.287 Nº de claves privadas parejas: 5 Nº de claves privadas parejas: 53 29.077, 155.077, 281.077, 533.077, 7.379, 19.853, 32.327, 44.801, 659.077. 57.275, 69.749, 82.223, 94.697, Sea p = 751, q = 1.009; e = 101 107.171, 119.645, 132.119, Clave privada: 553.901 144.593, 157.067, 169.541, ... Nº de claves privadas parejas: 5 ... 506.339, 518.813, 543.761, 49.901, 175.901, 301.901, 427.901, 556.235, 568.709, 581.183, 679.901. 593.657, 606.131, 618.605, 631.079, 643.553, 656.027, Para otros valores de e, siempre 668.501. ... Y separadas 12.474. existe una separación entre todas Sea p = 379, q = 1.783; e = 131 las claves privadas igual a 126.000. Ahora las CPP aumentan a 54. © Jorge Ramió Aguirre Madrid (España) 2006
  • 27. Capítulo 14: Cifrado Asimétrico Exponencial Página 27 Minimizando las claves privadas parejas Para que sea lo más pequeño posible ( = 1) un primer paso es elegir los primos p y q como primos seguros. Ejemplo: Sean r’ = 5; r’’ = 23 p = 2 5 + 1 = 11 (es primo ) q = 2 23 + 1 = 47 (es primo ) En estas condiciones con n = 517 y (n) = 460, sea e = 17 Luego = mcm (10, 46) = 230 y d = inv (17, 230) = 203 Entonces = (n - d )/ = (517 – 203)/230 = 1,36 = 1 Así: di = d + i = 203 + i 230 = 203, 433 =1 En efecto, d = inv [e, (n)] = inv (17, 460) = 433 y lo cifrado con e = 17 también se descifra con dP = 203. © Jorge Ramió Aguirre Madrid (España) 2006
  • 28. Capítulo 14: Cifrado Asimétrico Exponencial Página 28 Minimizando no sólo con primos seguros Para que sea igual a la unidad, habrá que elegir además un valor adecuado de clave pública: Tomando el mismo ejemplo anterior: p = 11; q = 47; n = 517 y (n) = 460 Según el valor que elijamos de clave pública e, podríamos obtener más de una clave privada pareja: - Sea: e = 7, d = 263 = 230 y d = inv (7, 230) = 33 di = d + i = 33 + i 230 = 33, 263, 493 =2 - Sea: e = 77, d = 233 = 230 y d = inv (77, 230) = 3 di = d + i = 3 + i 230 = 3, 233, 463 =2 Con primos seguros, el número de claves parejas será siempre bajo. © Jorge Ramió Aguirre Madrid (España) 2006
  • 29. Capítulo 14: Cifrado Asimétrico Exponencial Página 29 ¿Preocupado por claves privadas parejas? Si bien al generar claves RSA con librerías actuales como Crypto++ de Wei Dei (OpenSSL) aparecen claves que no pueden considerarse como óptimas ya que no se controla este hecho, hay que tener en mente que las claves privadas parejas tendrán siempre valores muy cercanos al cuerpo de (n) es decir un tamaño del orden de 2n bits. Por lo tanto, independientemente de la distribución, se trataría de una búsqueda en un cuerpo cercano a 2n bits, en la actualidad en 21024 bits, es decir un valor inmenso para la capacidad de cómputo actual, incluso suponiendo un ataque similar al del DES Challengue III y un cálculo de claves por segundo varios órdenes de magnitud superior. No obstante, en todos estos temas siempre hay que estar en alerta pues en cualquier momento puede aparecer algún método óptimo de ataque. © Jorge Ramió Aguirre Madrid (España) 2006
  • 30. Capítulo 14: Cifrado Asimétrico Exponencial Página 30 Claves parejas de la clave pública en RSA Al trabajar en un cuerpo finito y con iguales opciones de cifra con la clave pública e y la clave privada d, tenemos que las ecuaciones vistas en las diapositivas anteriores son válidas en este entorno, cambiando d por e. ¿Tiene alguna importancia esto? No es un problema puesto que todo el mundo conoce la clave pública y el sistema sigue siendo igual de seguro. Se cumple que los valores de dichas claves parejas son similares y equivalentes en ambos entornos, el de las claves públicas y el de las claves privadas.  © Jorge Ramió Aguirre Madrid (España) 2006
  • 31. Capítulo 14: Cifrado Asimétrico Exponencial Página 31 Ejemplo de firma y claves parejas de e Retomamos el primer ejemplo de claves privadas parejas con: p = 13; q = 19; n = 247, (n) = 216, e = 41, d = 137 Si firmamos N = 24, obtenemos C = 24137 mod 247 = 215 Luego sabemos que N = Ce mod n = 21541 mod 247 = 24 Como e = inv (d, ) = inv (137, 36) = 5, entonces: = (n - e )/ = (247 – 5)/36) = 6,72 = 6 ei = e + i = 5 + i 36 = 5, 41, 77, 113, 149, 185, 221 Y se podrá comprobar el criptograma C de la firma con cualquiera de estas claves, parejas de la clave pública e. © Jorge Ramió Aguirre Madrid (España) 2006
  • 32. Capítulo 14: Cifrado Asimétrico Exponencial Página 32 Comprobación de una firma digital ¿Problemas con la firma digital y las claves públicas parejas?  Un usuario firma un hash de un mensaje con su clave privada, lo que envía al destino junto con el mensaje original. En destino se descifra con la clave pública del emisor y se comparan los dos hash, el de emisión y el recuperado en recepción, para dar validez a dicha firma.  En este escenario, esto significa que se podría dar por válida una firma al descifrar el hash recibido con una clave pública pareja e’ distinta a la inversa de la usada en emisión y dar validez a dicha firma; es decir usando alguna de las claves públicas parejas.  Esto en sí no es un ataque por lo que, al menos en este contexto y en principio, no debería considerarse como una vulnerabilidad. Esto es así porque, además, como se ha dicho es típico que la clave pública sea el mismo número primo para todos, el valor e = 65.537 = 216 + 1. Como es obvio, lo que será distinto para cada par de claves son p y q. © Jorge Ramió Aguirre Madrid (España) 2006
  • 33. Capítulo 14: Cifrado Asimétrico Exponencial Página 33 Números no cifrables en RSA  Si Ne mod n = N se dice que N es un número no cifrable, NNC. Aunque la clave e sea válida, el número N se enviará en claro .  En RSA habrá como mínimo 9 números no cifrables.  En el caso más crítico, todos los números del cuerpo n pueden ser no cifrables como veremos más adelante.  Para conocer estos valores no cifrables, habrá que hacer un ataque de cifrado por fuerza bruta en p y q, es decir deberemos comprobar que Xe mod p = X y Xe mod q = X con 1 < X < n-1 . Ejemplo: Sea el cuerpo n = 35 (p = 5, q = 7), con (n) = 24 y e = 11. Dentro de los números posibles {0, 34} serán no cifrables: {6, 14, 15, 20, 21, 29, 34} además de los obvios {0, 1}. El valor n-1 (en este caso 34) será también siempre no cifrable. © Jorge Ramió Aguirre Madrid (España) 2006
  • 34. Capítulo 14: Cifrado Asimétrico Exponencial Página 34 Cantidad de números no cifrables La cantidad de números no cifrables dentro de un cuerpo n será: n = [1 + mcd (e-1, p-1)][1 + mcd (e-1, q-1)] Los números no cifrables serán: N = [q{inv (q, p)}Np + p{inv (p, q)}Nq] mod n con: Np las soluciones de Ne mod p = N Nq las soluciones de Ne mod q = N Esto último debido al TRC puesto que Ne mod n = N En el ejemplo anterior se da el caso mínimo: Valores para un mínimo n = [1 + mcd (10, 4)][1 + mcd (10, 6)] = (1+2)(1+2) = 9 N11 mod 5 = N N5 = {0, 1, 4} N11 mod 7 = N N7 = {0, 1, 6} N = [7{inv (7, 5)}Np + 5 {inv (5,7)}Nq] mod 35 N = [7 3 Np + 5 3 Nq] mod 35 = [21{0, 1, 4} + 15{0, 1, 6}] mod 35 N = {(0, 21, 84) + (0, 15, 90)} mod 35 sumando todos los términos... N = {0, 15, 90, 21, 36, 111, 84, 99, 175} mod 35 ordenando... N = {0, 1, 6, 14, 15, 20, 21, 29, 34} © Jorge Ramió Aguirre Madrid (España) 2006
  • 35. Capítulo 14: Cifrado Asimétrico Exponencial Página 35 Ejemplo de números no cifrables (1) Sea p = 13; q = 17; n = p q = 221 Elegimos e = 7 por lo que d = inv (7, 192) = 55, luego: n = [1 + mcd (e-1, p-1)][1 + mcd (e-1, q-1)] 221 = [1 + mcd (6, 12)][1 + mcd (6, 16)] = (1+6)(1+2) = 21 Soluciones de N7 mod 13 = N Np = {0, 1, 3, 4, 9, 10, 12} Soluciones de N7 mod 17 = N Nq = {0, 1, 16} Los números no cifrables serán: N = [q{inv (q, p)}Np + p{inv (p, q)}Nq] mod n N = [17{inv (17, 13)}Np + 13{inv (13, 17)}Nq] mod 221 N = [{17 10}Np + {13 4}Nq] mod 221 N = [170 Np + 52 Nq] mod 221 © Jorge Ramió Aguirre Madrid (España) 2006
  • 36. Capítulo 14: Cifrado Asimétrico Exponencial Página 36 Ejemplo de números no cifrables (2) Teníamos Np = {0, 1, 3, 4, 9, 10, 12} Nq = {0, 1, 16} N = [170 Np + 52 Nq] mod 221 luego: N = [170 {0, 1, 3, 4, 9, 10, 12} + 52 {0, 1, 16}] mod 221 N = [{0, 170, 510, 680, 1.530, 1.700, 2.040} +{0, 52, 832}] mod 221 N = [0+0, 0+52, 0+832, 170+0, 170+52, 170+832, ...] mod 221 N = [0, 52, 832, 170, 222, 1.002, 510, 562, 1.342, 680, 732, 1.512, 1.530, 1.582, 2.362, 1.700, 1.752, 2.531, 2.040, 2.092, 2.872] mod 221 N = [0, 52, 169, 170, 1, 118, 68, 120, 16, 17, 69, 186, 204, 35, 152, 153, 205, 101, 51, 103, 220] ordenando... N = [0, 1, 16, 17, 35, 51, 52, 68, 69, 101, 103, 118, 120, 152, 153, 169, 170, 186, 204, 205, 220] estos son los 21 mensajes de 221. © Jorge Ramió Aguirre Madrid (España) 2006
  • 37. Capítulo 14: Cifrado Asimétrico Exponencial Página 37 Distribución de números no cifrables Dado que N = {0, 1, 16, 17, 35, 51, 52, 68, 69, 101, 103, 118, 120, 152, 153, 169, 170, 186, 204, 205, 220}, observe que excepto el valor 0, los valores de los extremos siempre sumarán el valor del módulo: 1+220 = 16+205 = 17+204 = 35+186 ... = 221 = n. No obstante, esto no es una debilidad porque el siguiente valor no cifrable posterior al 1 es aleatorio y también la distribución entre los demás. Es más, en la mayoría de las claves no se aprecia una secuencia de valores muy clara, aunque sí se observa un comportamiento y distribución bastante curiosos. Si no fuera así, el sistema sería muy débil porque podríamos conocer de antemano qué valores muy pequeños serían no cifrables (además del 0 y el 1) y con esa información poder deducir si un valor x de centenas de bits (clave) es o no cifrable. © Jorge Ramió Aguirre Madrid (España) 2006
  • 38. Capítulo 14: Cifrado Asimétrico Exponencial Página 38 Dos casos de números no cifrables Sean p = 409, q = 499 Sean p = 241, q = 251 Con e = 31, d = 19.663 Con e = 61, d = 26.281 Total números no cifrables: 49 Total números no cifrables: 671 0, 1, 1.636, 1.637, 23.313, 23.314, 0, 1, 231, 250, 251, 364, 400, 482, 24.949, 24.950, 26.586, 48.263, 522, 604, 640, 733, 866, 1.004, 49.899, 56.388, 58.024, 72.855, 1.024, 1.287, 1.486, 1.506, 1.777, 74.491, 79.701, 81.337, 81.338, 1.870, 1.988, 2.009, 2.028, 2.227, 82.973, 82.974, 96.168, 97.804, 2.259, 2.260, 2.291, 2.510, .... 97.805, 99.440, 99.441, 104.650, ... 57.981, 58.200, 58.231, 58.232, 104.651, 106.286, 106.287, 107.923, 58.264, 58.463, 58.482, 58.503, 121.117, 121.118, 122.753, 122.754, 58.621, 58.714, 58.985, 59.005, 124.390, 129.600, 131.236, 146.067, 59.204, 59.467, 59.487, 59.625, 147.703, 154.192, 155.828, 177.505, 59.758, 59.851, 59.887, 59.969, 179.141, 179.142, 180.777, 180.778, 60.009, 60.091, 60.127, 60.240, 202.454, 202.455, 204.090. 60.241, 60.260, 60.490. © Jorge Ramió Aguirre Madrid (España) 2006
  • 39. Capítulo 14: Cifrado Asimétrico Exponencial Página 39 Cantidad mínima de números no cifrables Para que la cantidad de números no cifrables sea la mínima posible, es decir 9, deberemos elegir la clave pública e de forma que: mcd (e-1, p-1) = 2 y mcd (e-1, q-1) = 2 Entonces: n = [1 + 2][1 + 2] = 9 Esto se logra usando primos seguros: p = 2r + 1 y q = 2r’ + 1 con r, r’, p y q primos grandes ya que: mcd (e-1, p-1) = mcd (e-1, (2r +1)-1) mcd = 2 o bien r mcd (e-1, q-1) = mcd (e-1, (2r’ +1)-1) mcd = 2 o bien r’ Luego: n = {9, 3(r+1), 3(r’+1), (r+1)(r’+1)} Hay que comprobar en diseño que no se den valores del mcd igual a r o r’ pues tendríamos un número muy alto de este tipo de mensajes. Además, observe que si e = p n = 3p y si e = q n = 3q. © Jorge Ramió Aguirre Madrid (España) 2006
  • 40. Capítulo 14: Cifrado Asimétrico Exponencial Página 40 Cantidad máxima de números no cifrables En el peor de los casos, mcd (e-1, p-1) = p-1 y mcd (e-1, q-1) = q-1 Entonces: n = [1 + mcd(e-1, p-1)][1 + mcd(e-1, q-1)] n = p q = n ... ¡todas las cifras irán en claro! Si en el ejemplo anterior con p = 13, q = 17, hubiésemos elegido como clave e = 49, con d = inv (49, 192) = 145, observamos que: mcd (e-1, p-1) = mcd (48, 12) = 12 mcd (e-1, q-1) = mcd (48, 16) = 16 n = [1 + 12][1 + 16] = 13 17 = 221 = p q = n Por lo tanto, cualquier número en el cuerpo n = 221 será no cifrable para la clave pública e = 49. Compruebe que en este caso esto se cumple si e = (n)/k +1 (k = 2 y 4), es decir e = 97 y 49. Nunca podrá usarse e = (n)/2 + 1 ya que la clave de descifrado será igual a 1 y por lo tanto no será cifrable ningún número de n. © Jorge Ramió Aguirre Madrid (España) 2006
  • 41. Capítulo 14: Cifrado Asimétrico Exponencial Página 41 NNC por mala elección de la clave e Sea p = 101, q = 761, n = 76.861. Luego (n) = 100 760 = 76.000 Algunos valores de e válidos como clave pero relacionados con (n): e = (n)/2 + 1 = 38.001 76.861 NNC (100 %) e = (n)/4 + 1 = 19.001 76.861 NNC (100 %) e = (n)/5 + 1 = 15.201 76.861 NNC (100 %) e = (n)/8 + 1 = 9.501 38.481 NNC (50 % aprox.) e = (n)/10 + 1 = 7.601 76.861 NNC (100 %) e = (n)/16 + 1 = 4.751 9.741 NNC (12,5 % aprox.) e = (n)/19 + 1 = 4.001 4.141 NNC (5 % aprox.) e = (n)/20 + 1 = 3.801 76.861 NNC (100 %) e = (n)/50 + 1 = 1.521 15.981 NNC (20 % aprox.) e = (n)/100 + 1 = 761 15.981 NNC (20 % aprox.) e = (n)/1.000 + 1 = 77 385 NNC (0,5 % aprox.) © Jorge Ramió Aguirre Madrid (España) 2006
  • 42. Capítulo 14: Cifrado Asimétrico Exponencial Página 42 Confidencialidad en intercambio de clave  A diferencia del número de claves privadas parejas, por lo general un número relativamente bajo y distribución generalmente en torno a 2n bits, la cantidad de números no cifrables es mucho mayor y en ciertos casos puede llegar a ser todo el cuerpo de cifra.  No obstante en este nuevo escenario debemos ser menos paranoicos: la utilización actual de este tipo de cifra con clave pública de destino está en el intercambio de una clave de sesión de corta duración, por lo que la confidencialidad de dicha clave no está en compromiso en tanto es computacionalmente imposible un ataque por fuerza bruta a ella durante el corto tiempo de validez de la misma.  El único problema es que sería fácilmente detectable pues si la cifra de Ke mod n se envía en claro, el resultado será un número K de 128 bits en un cuerpo de cifra de 1.024 bits... habrá centenas de ceros . © Jorge Ramió Aguirre Madrid (España) 2006
  • 43. Capítulo 14: Cifrado Asimétrico Exponencial Página 43 Firmas digitales no cifrables ¿Hay algún problema con la firma digital no cifrable?  Si la cantidad de números no cifrables con la clave pública (tema confidencialidad) es alto, también lo será en igual proporción el de números no cifrables con la clave privada (tema autenticidad).  En este caso, significa que el hash de la firma del mensaje dentro del cuerpo de cifra n iría en claro. Aunque el hash sea de 128 bits (MD5) ó 160 bits (SHA1) y se cifre con la clave privada del emisor y luego se reduzca al cuerpo de cifra de 1.024 bits, la cifra irá en claro por lo que se podría apreciar claramente al tener esa cifra tener sólo una centena de bits significativos... y muchos ceros a la izquierda.  Como mucho esto puede dar pistas al criptoanalista en cuanto a que la clave del emisor podría no ser óptima y, por lo tanto, animarle a intentar otros tipos de ataques por la cifra de otros números en claro. © Jorge Ramió Aguirre Madrid (España) 2006
  • 44. Capítulo 14: Cifrado Asimétrico Exponencial Página 44 Ataque al secreto de N por cifrado cíclico Un nuevo problema: se puede encontrar el número en claro N sin necesidad de conocer d, la clave privada del receptor. Como C = Ne mod n, realizaremos cifrados sucesivos de los criptogramas Ci resultantes con la misma clave pública hasta obtener nuevamente el cifrado C original. Ci = Cei-1 mod n (i = 1, 2, ...) con C0 = C Si en el cifrado iésimo se encuentra el criptograma C inicial, entonces es obvio que el cifrado anterior (i-1) será el número buscado. Esto se debe a que RSA es un grupo mutiplicativo. Para evitarlo hay que usar primos seguros de forma que los subgrupos de trabajo sean lo suficientemente altos. © Jorge Ramió Aguirre Madrid (España) 2006
  • 45. Capítulo 14: Cifrado Asimétrico Exponencial Página 45 Ejemplo de ataque por cifrado cíclico Sea p = 13, q = 19, n = 247, (n) = 216, e = 29 (d = 149, no conocido) El número a cifrar será M = 123 C = 12329 mod 247 = 119 i Ci i=0 C0 = 119 i=1 C1 = 11929 mod 247 = 6 i=2 C2 = 629 mod 247 = 93 i=3 C3 = 9329 mod 247 = 175 i=4 C4 = 17529 mod 247 = 54 i=5 C5 = 5429 mod 247 = 123 en este paso aún no lo sabemos i=6 C6 = 12329 mod 247 = 119 El ataque ha prosperado muy rápidamente: como hemos obtenido otra vez el criptograma C = 119, es obvio que el paso anterior con C = 123 se correspondía con el texto en claro. ¿Y si usamos primos seguros? © Jorge Ramió Aguirre Madrid (España) 2006
  • 46. Capítulo 14: Cifrado Asimétrico Exponencial Página 46 Ataque por cifrado cíclico y primos seguros Sea p = 11 y q = 23, aunque esto no sea recomendable. Luego n = 253, (n) = 220, y si e = 17, la clave privada es d = 134, no conocida. Sea el número confidencial N = 123 C = 12317 mod 253 = 128. i Ci i Ci i=0 C0 = 128 i = 12 C12 = 16717 mod 253 = 150 i=1 C1 = 12817 mod 253 = 6 i = 13 C13 = 15017 mod 253 = 193 i=2 C2 = 617 mod 253 = 173 i = 14 C14 = 19317 mod 253 = 118 i=3 C3 = 17317 mod 253 = 101 i = 15 C15 = 11817 mod 253 = 200 i=4 C4 = 10117 mod 253 = 95 i = 16 C16 = 20017 mod 253 = 73 i=5 C5 = 9517 mod 253 = 39 i = 17 C17 = 7317 mod 253 = 94 i=6 C6 = 3917 mod 253 = 96 i = 18 C18 = 9417 mod 253 = 41 i=7 C7 = 9617 mod 253 = 2 i = 19 C19 = 4117 mod 253 = 123  i=8 C8 = 217 mod 253 = 18 i = 20 C20 = 12317 mod 253 = 128 i=9 C9 = 1817 mod 253 = 215 Para n = 253, hemos tenido que recorrer un i = 10 C10 = 21517 mod 253 = 151 espacio mucho mayor dentro de un cuerpo i = 11 C11 = 15117 mod 253 = 167 de cifra muy similar al anterior (n = 247). © Jorge Ramió Aguirre Madrid (España) 2006
  • 47. Capítulo 14: Cifrado Asimétrico Exponencial Página 47 La paradoja del cumpleaños  El próximo ataque a la clave privada estará basado en este problema. Pregunta: ¿Cuál será la confianza (probabilidad > 50%) de que en un aula con 365 personas -no se tiene en cuenta el día 29/02 de los años bisiestos- dos de ellas al azar estén de cumpleaños en la misma fecha? Solución: Se escribe en la pizarra los 365 días del año y las personas entran al aula de uno en uno, borrando el día de su cumpleaños de la pizarra. Para alcanzar esa confianza del 50%, basta que entren sólo 23 personas al aula. Este es un valor muy bajo, en principio inimaginable y de allí el nombre de paradoja, aunque matemáticamente no lo sea. Explicación: El primero en entrar tendrá una probabilidad de que su número no esté borrado igual a n/n = 1, el segundo de (n-1)/n, etc. De esta manera, la probabilidad de no coincidencia será pNC = n!/(n-k)!nk. Para k = 23 se tiene pNC = 0,493 y así la probabilidad de coincidencia será igual a pC = (1- pNC) = 0,507, que es mayor que 0,5. © Jorge Ramió Aguirre Madrid (España) 2006
  • 48. Capítulo 14: Cifrado Asimétrico Exponencial Página 48 Ataque a la clave por paradoja cumpleaños Algoritmo propuesto por Merkle y Hellman en 1981: • El atacante elige dos números aleatorios distintos i, j dentro del cuerpo de cifra n. Lo interesante es que elige, además, un mensaje o número N cualquiera. • Para i = i+1 y para j = j+1 calcula Ni mod n y Nj mod n. • Cuando encuentra una coincidencia de igual resultado de cifra para una pareja (i, j), será capaz de encontrar d. Un ejemplo para resolver en siguientes diapositivas: sea p = 7; q = 13, n = 91, e = 11, d = 59. El atacante sólo conoce n = 91 y e = 11. Partirá con el número N = 20 y elegirá los valores i = 10 y j = 50. © Jorge Ramió Aguirre Madrid (España) 2006
  • 49. Capítulo 14: Cifrado Asimétrico Exponencial Página 49 Ejemplo de ataque paradoja cumpleaños i Ci j Ci i = 10 C10 = 2010 mod 91 = 43 j = 50 C50 = 2050 mod 91 = 36 i = 11 C11 = 2011 mod 91 = 41 j = 51 C51 = 2051 mod 91 = 83 i = 12 C12 = 2012 mod 91 = 1 j = 52 C52 = 2052 mod 91 = 22 i = 13 C13 = 2013 mod 91 = 20 j = 53 C53 = 2053 mod 91 = 76 i = 14 C14 = 2014 mod 91 = 36 j = 54 C54 = 2054 mod 91 = 64 i = 15 C15 = 2015 mod 91 = 83 j = 55 C55 = 2055 mod 91 = 6 i = 16 C16 = 2016 mod 91 = 22 j = 56 C56 = 2056 mod 91 = 29 i = 17 C17 = 2017 mod 91 = 76 j = 57 C57 = 2057 mod 91 = 34 Hay una colisión en el paso quinto al coincidir el valor C = 36 en contador i que ya había aparecido en contador j. Observe los valores repetidos. Con los valores de i, j y el desplazamiento observado en uno de ellos cuando se detecta la colisión (i = 14), se establece un conjunto de ecuaciones y, si el ataque prospera, obtenemos la clave privada, una clave privada pareja, o bien un valor de clave privada particular que sólo sirve para descifrar el número elegido (aquí el 20) y no un número genérico. En este caso se hablará de un falso positivo. © Jorge Ramió Aguirre Madrid (España) 2006
  • 50. Capítulo 14: Cifrado Asimétrico Exponencial Página 50 Resultado del ataque paradoja cumpleaños La primera coincidencia se encuentra para i = 14; j = 50. Así, el atacante conociendo la clave pública e = 11, calcula: w = (14-50) / mcd (11, |14-50|) = -36 / mcd (11, 36) = - 36. Entonces deberán existir valores s, t de forma que se cumpla lo siguiente: w s+e t= 1 -36 s + 11 t = 1 Las posibles soluciones a la ecuación son: w s mod e = 1; e t mod w = 1 -36 s = 1 mod 11 s = inv (-36, 11) = inv (8, 11) = 7 11 t = 1 mod 36 t = inv (11, 36) = 23 El valor t = 23 será una clave privada pareja de d = 59. Compruebe que se verifica w s + e t = 1 y que las claves parejas son 11, 23, 35, 47, 71 y 83. Nota: como este algoritmo parte con valores aleatorios de los contadores i, j (i deberá ser el menor posible y j la mitad del cuerpo de cifra) y del número N (en el ejemplo 20) no siempre prospera el ataque, es decir será no determinista. En ese caso, es posible que cambiando el valor de N sí se logre el objetivo buscado. © Jorge Ramió Aguirre Madrid (España) 2006
  • 51. Capítulo 14: Cifrado Asimétrico Exponencial Página 51 Ataque que entrega alguna clave pareja  Normalmente el ataque rompe la clave privada o una clave privada pareja; sin embargo, se darán situaciones especiales.  Sea p = 11, q = 31, e = 13. Entonces d = 277 y las claves privadas parejas son: 7, 37, 67, 97, 127, 157, 187, 217, 247, 307, 337.  Observe la diferencia constante igual a (n)/10 = 30.  Se realiza el ataque con el software genRSA tomando valores de N desde 2 hasta 50, partiendo el contador i en 3 y j en n/2.  Para N = 2 encuentra d’ = 157; para N = 3 encuentra d’ = 97; para N = 4 encuentra d’ = 127; para N = 5 encuentra d’ = 127; para N = 6 encuentra d’ = 97; ... etc.  Para N = 32 encuentra d’ = 13, una solución falsa.  Para d’ = 13 el programa realiza 2 iteraciones, para d’ = 127 realiza 3, para d’ = 157 realiza 4 y para d’ = 97 realiza 14. © Jorge Ramió Aguirre Madrid (España) 2006
  • 52. Capítulo 14: Cifrado Asimétrico Exponencial Página 52 Ataque que entrega la clave privada  En función de los parámetros de la clave, a veces se encuentra para muchos valores de N casi siempre la clave privada d.  Sea p = 191, q = 211, e = 31. Entonces d = 12.871 y hay 9 claves privadas parejas.  Se realiza el ataque con el software genRSA tomando valores de N desde 2 hasta 50, partiendo el contador i en 3 y j en n/2.  Para casi todos los valores de N encuentra la clave privada d.  Para N = 7, 39, 49 encuentra d’ = 1.951, para N = 14 encuentra d’ = 13.668 y para N = 23 encuentra d’ = 18.191, todas falsas.  Sea ahora p = 241, q = 251, e = 11. Entonces d = 49.091 y hay 9 claves privadas parejas.  Aunque aquí casi siempre encuentra el valor d’ = 19.091 como clave privada pareja válida, si usamos N = 36 el programa nos da como solución el valor d’ = 0, obviamente un falso positivo. © Jorge Ramió Aguirre Madrid (España) 2006
  • 53. Capítulo 14: Cifrado Asimétrico Exponencial Página 53 ¿Podría darse un ataque distribuido?  El ataque basado en la paradoja del cumpleaños no sería factible realizarlo en un solo PC por la alta complejidad computacional.  ... pero bien podría pensarse en un algoritmo distribuido, de forma que un computador hiciera las veces de servidor y todos los demás (... tal vez varios cientos de miles) actuaran como clientes.  El servidor tendría como función distribuir trozos de cifra entre los clientes en diferentes intervalos de valores i, j como los del ejemplo anterior y, además, recibir los resultados de los clientes para detectar colisiones. Esta última función será la más crítica.  Supuestamente este ataque llevaría un tiempo menor que el de factorizar el valor de n, para así encontrar la clave privada.  Si bien no está demostrado la factibilidad real en tiempo de cómputo de esta opción, el hecho de que un certificado digital, y por ende la clave privada, tenga una validez de un año podría ser un motivo de preocupación ... siempre sin caer en paranoias . © Jorge Ramió Aguirre Madrid (España) 2006
  • 54. Capítulo 14: Cifrado Asimétrico Exponencial Página 54 La otra historia del algoritmo RSA  Rivest, Shamir y Adleman son los autores de RSA pero un algoritmo de cifra asimétrico basado en la dificultad de factorizar números grandes como función unidireccional fue descubierto mucho antes...  En el año 1969 el Government Communications Headquarters (GCHQ) en Gran Bretaña comienza a trabajar en la idea de poder distribuir claves a través de una cifra no simétrica. En 1973, el matemático Clifford Cocks llegará a la misma conclusión que los creadores de RSA.  Desgraciadamente este trabajo fue considerado como alto secreto por el gobierno británico por lo que su contenido no se hace público ni se patenta como invento, algo que sí hacen Diffie y Hellman en 1976 con su intercambio de claves y en 1978 otro tanto los creadores del algoritmo RSA. © Jorge Ramió Aguirre Madrid (España) 2006
  • 55. Capítulo 14: Cifrado Asimétrico Exponencial Página 55 Consideraciones sobre el bloque de cifra Si queremos cifrar mensajes en vez de números y ese mensaje fuese mayor que el módulo de trabajo del sistema n = p q para RSA ... ¿cómo se generarían los bloques del mensaje a cifrar? El mensaje M puede transformarse en números y éstos se dividen en bloques de g-1 dígitos, siendo g el número de dígitos del módulo de trabajo: el valor n = n p para RSA. Ya se ha dicho que la práctica esto no ocurrirá puesto que el cuerpo de cifra es como mínimo de 1.024 bits y Ejemplo el “mensaje” a cifrar tendrá sólo una centena de bits. © Jorge Ramió Aguirre Madrid (España) 2006
  • 56. Capítulo 14: Cifrado Asimétrico Exponencial Página 56 Ejemplo de elección del bloque con RSA Se representará el mensaje en su valor ANSI decimal. n = p q = 89 127 = 11.303 bloques de cuatro dígitos (n) = 11.088; e = 25; d = inv (25, 11.088) = 10.201 M = Olé = 079 108 233 M = 0791 0823 3 Se recupera el mensaje agrupando en bloques de 4 dígitos excepto el último CIFRADO DESCIFRADO C1 = 79125 mod 11.303 = 7.853 M1 = 7.85310201 mod 11.303 = 0791 C2 = 82325 mod 11.303 = 2.460 M2 = 2.46010201 mod 11.303 = 0823 C3 = 325 mod 11.303 = 6.970 M3 = 6.97010201 mod 11.303 = 3 © Jorge Ramió Aguirre Madrid (España) 2006
  • 57. Capítulo 14: Cifrado Asimétrico Exponencial Página 57 Prácticas del tema Software OpenSSL: http://www.slproweb.com/products/Win32OpenSSL.html 1. Una vez instalado Win32OpenSSL para Windows en el disco duro, en la carpeta C:OpenSSL-Win32bin y desde el símbolo del sistema MSDOS genere una clave RSA de 1.024 bits mediante el comando: openssl genrsa 1024. Observe que creada la clave, nos indica “e is 65537 (0x10001)”. 2. Cree una nueva clave RSA guardando la clave en un archivo de nombre rsakey con el comando: openssl genrsa -out rsakey 1024. 3. Recupere ahora esa clave y guárdela en un archivo en formato hexadecimal de nombre claveRSA1: openssl rsa -in rsakey -text -out claveRSA1. Si no desea incluir en el archivo la clave privada, agregue la opción -noout. 4. Edite claveRSA1 con Word o WordPad, elimine todos los “:” y elimine luego los “cuatro espacios en blanco” de forma que los valores de p y de q en hexadecimal estén cada uno en una sola cadena. Pegue esos valores de p y de q en el programa genRSA, con e = 10001, genere y observe la clave. 5. Repita los puntos 2, 3 y 4 hasta encontrar una clave de “baja calidad”. © Jorge Ramió Aguirre Madrid (España) 2006