C´lculo de potencias modulares
 a

   Jes´s Garc´ de Jal´n de la Fuente
      u      ıa      o

         IES Avenida de los Toreros
                  Madrid


               2009-11-02




                        C´lculo de potencias modulares
                         a
Introducci´n
          o



     El problema que consideramos consiste en el c´lculo de potencias
                                                  a
     modulares:
                              an (m´d m)
                                    o
     esto es, el resto de dividir an entre m.




                                       C´lculo de potencias modulares
                                        a
Introducci´n
          o



     El problema que consideramos consiste en el c´lculo de potencias
                                                  a
     modulares:
                              an (m´d m)
                                    o
     esto es, el resto de dividir an entre m.
     Tanto a como n y m son enteros positivos muy grandes.




                                       C´lculo de potencias modulares
                                        a
Introducci´n
          o



     El problema que consideramos consiste en el c´lculo de potencias
                                                  a
     modulares:
                              an (m´d m)
                                    o
     esto es, el resto de dividir an entre m.
     Tanto a como n y m son enteros positivos muy grandes.
     Por ejemplo el n´mero 65418914 es un n´mero gigantesco de m´s
                      u                    u                    a
     de 30000 cifras.




                                       C´lculo de potencias modulares
                                        a
Introducci´n
          o



     El problema que consideramos consiste en el c´lculo de potencias
                                                  a
     modulares:
                              an (m´d m)
                                    o
     esto es, el resto de dividir an entre m.
     Tanto a como n y m son enteros positivos muy grandes.
     Por ejemplo el n´mero 65418914 es un n´mero gigantesco de m´s
                      u                    u                    a
     de 30000 cifras.
     Imaginemos cu´ntas cifras puede tener la potencia si la base y el
                   a
     exponente tienen 50 cifras.




                                       C´lculo de potencias modulares
                                        a
El problema




     Vamos a calcular una potencia con n´meros de cuatro cifras. Por
                                        u
     ejemplo:
                         65418914 (m´d 7789)
                                      o




                                    C´lculo de potencias modulares
                                     a
El problema




     Vamos a calcular una potencia con n´meros de cuatro cifras. Por
                                        u
     ejemplo:
                         65418914 (m´d 7789)
                                      o
     En un criptosistema real, estos n´meros deber´ ser mucho
                                      u           ıan
     mayores (cincuenta o m´s cifras).
                            a




                                    C´lculo de potencias modulares
                                     a
El problema




     Vamos a calcular una potencia con n´meros de cuatro cifras. Por
                                        u
     ejemplo:
                         65418914 (m´d 7789)
                                      o
     En un criptosistema real, estos n´meros deber´ ser mucho
                                      u           ıan
     mayores (cincuenta o m´s cifras).
                            a
     Veremos que, en cualquier caso, existe un algoritmo que permite
     calcular la potencia.




                                    C´lculo de potencias modulares
                                     a
Estrategias err´neas
               o



     Se podr´ pensar en calcular la potencia 65418914 y despu´s
             ıa                                              e
     dividir por 7789. Pero:




                                    C´lculo de potencias modulares
                                     a
Estrategias err´neas
               o



     Se podr´ pensar en calcular la potencia 65418914 y despu´s
             ıa                                              e
     dividir por 7789. Pero:
         La potencia tiene m´s de 30000 cifras.
                            a




                                      C´lculo de potencias modulares
                                       a
Estrategias err´neas
               o



     Se podr´ pensar en calcular la potencia 65418914 y despu´s
             ıa                                              e
     dividir por 7789. Pero:
         La potencia tiene m´s de 30000 cifras.
                              a
         Si la base y el exponente son n´meros muy grandes, el c´lculo se
                                        u                       a
         vuelve imposible.




                                      C´lculo de potencias modulares
                                       a
Estrategias err´neas
               o



     Se podr´ pensar en calcular la potencia 65418914 y despu´s
             ıa                                              e
     dividir por 7789. Pero:
         La potencia tiene m´s de 30000 cifras.
                              a
         Si la base y el exponente son n´meros muy grandes, el c´lculo se
                                        u                       a
         vuelve imposible.
     Tampoco servir´ calcular la potencia mediante productos y a la
                     ıa
     vez ir reduciendo m´dulo 7789:
                        o




                                      C´lculo de potencias modulares
                                       a
Estrategias err´neas
               o



     Se podr´ pensar en calcular la potencia 65418914 y despu´s
             ıa                                              e
     dividir por 7789. Pero:
         La potencia tiene m´s de 30000 cifras.
                              a
         Si la base y el exponente son n´meros muy grandes, el c´lculo se
                                        u                       a
         vuelve imposible.
     Tampoco servir´ calcular la potencia mediante productos y a la
                     ıa
     vez ir reduciendo m´dulo 7789:
                        o
         Por una parte, se evita que los n´meros se hagan grandes
                                          u
         (siempre ser´n menores que el m´dulo)
                     a                    o




                                      C´lculo de potencias modulares
                                       a
Estrategias err´neas
               o



     Se podr´ pensar en calcular la potencia 65418914 y despu´s
             ıa                                              e
     dividir por 7789. Pero:
         La potencia tiene m´s de 30000 cifras.
                              a
         Si la base y el exponente son n´meros muy grandes, el c´lculo se
                                        u                       a
         vuelve imposible.
     Tampoco servir´ calcular la potencia mediante productos y a la
                     ıa
     vez ir reduciendo m´dulo 7789:
                        o
         Por una parte, se evita que los n´meros se hagan grandes
                                           u
         (siempre ser´n menores que el m´dulo)
                      a                    o
         Si la base y el exponente son muy grandes el n´mero de
                                                        u
         multiplicaciones y divisiones ser´ enorme (en nuestro ejemplo
                                          a
         8913 multiplicaciones y el mismo n´mero de divisiones).
                                             u




                                      C´lculo de potencias modulares
                                       a
El algoritmo I


     Expresamos el exponente 8914 como suma de potencias de 2. Esto
     se puede conseguir a partir de la expresi´n binaria del n´mero:
                                              o               u

                       8914 = 10001011010010(2)




                                    C´lculo de potencias modulares
                                     a
El algoritmo I


     Expresamos el exponente 8914 como suma de potencias de 2. Esto
     se puede conseguir a partir de la expresi´n binaria del n´mero:
                                              o               u

                          8914 = 10001011010010(2)

     Esto significa que:

                  8914 = 2 + 16 + 64 + 128 + 512 + 8192




                                     C´lculo de potencias modulares
                                      a
El algoritmo I


     Expresamos el exponente 8914 como suma de potencias de 2. Esto
     se puede conseguir a partir de la expresi´n binaria del n´mero:
                                              o               u

                          8914 = 10001011010010(2)

     Esto significa que:

                  8914 = 2 + 16 + 64 + 128 + 512 + 8192

     Por consiguiente:

       65418914 = 65412+16+64+128+512+8192
                = 65412 · 654116 · 654164 · 6541128 · 6541512 · 65418192




                                      C´lculo de potencias modulares
                                       a
El algoritmo II


     Seg´n hemos visto, basta calcular las potencias cuyo exponente
        u
     sea una potencia de 2.
     Estas potencias se pueden calcular cada una de la anterior
     elevando al cuadrado. Para evitar que este n´mero se haga
                                                 u
     grande se reduce m´dulo 7789.
                        o
     Por ejemplo (los c´lculos son m´dulo 7789):
                       a            o

              65412            ≡ 42784681 ≡ 7493       (m´d 7789)
                                                         o
                  4        2
              6541 ≡ 7493 ≡ 56145049 ≡ 1937            (m´d 7789)
                                                         o
                  8        2
              6541 ≡ 1937 ≡ 3751969 ≡ 5460             (m´d 7789)
                                                         o


     El resto de potencias puede verse en la p´gina siguiente.
                                              a



                                      C´lculo de potencias modulares
                                       a
El algoritmo III

           65412                       ≡ 42784681 ≡ 7493          (m´d 7789)
                                                                    o
                  4                2
           6541 ≡ 7493 ≡ 56145049 ≡ 1937                          (m´d 7789)
                                                                    o
                  8                2
           6541 ≡ 1937 ≡ 3751969 ≡ 5460                           (m´d 7789)
                                                                    o
                 16                2
          6541         ≡ 5460 ≡ 29811600 ≡ 3097                   (m´d 7789)
                                                                    o
                 32                2
          6541         ≡ 3097 ≡ 9591409 ≡ 3150                    (m´d 7789)
                                                                    o
                 64                2
          6541         ≡ 3150 ≡ 9922500 ≡ 7103                    (m´d 7789)
                                                                    o
                 128               2
          6541         ≡ 7103 ≡ 50452609 ≡ 3256                   (m´d 7789)
                                                                    o
                 256               2
          6541         ≡ 3256 ≡ 10601536 ≡ 707                    (m´d 7789)
                                                                    o
                 512           2
          6541         ≡ 707           ≡ 499849      ≡ 1353       (m´d 7789)
                                                                    o
             1024                  2
         6541          ≡ 1353 ≡ 1830609 ≡ 194                     (m´d 7789)
                                                                    o
             2048              2
         6541          ≡ 194           ≡ 37636       ≡ 6480       (m´d 7789)
                                                                    o
             4096                  2
         6541          ≡ 6480 ≡ 41990400 ≡ 7690                   (m´d 7789)
                                                                    o
             8192                  2
         6541          ≡ 7690 ≡ 59136100 ≡ 2012                   (m´d 7789)
                                                                    o
                                                  C´lculo de potencias modulares
                                                   a
El algoritmo IV

     Ahora puesto que:

      65418914 = 65412 · 654116 · 654164 · 6541128 · 6541512 · 65418192




                                      C´lculo de potencias modulares
                                       a
El algoritmo IV

     Ahora puesto que:

       65418914 = 65412 · 654116 · 654164 · 6541128 · 6541512 · 65418192

     Sustituimos las potencias y reducimos cada producto m´dulo
                                                          o
     7789:

       65418914 = 65412 · 654116 · 654164 · 6541128 · 6541512 · 65418192
                ≡ 7493 · 3097 · 7103 · 3256 · 1353 · 2012
                ≡ 23205821 · 23127368 · 2722236
                ≡ 2390 · 1827 · 3875
                ≡ 4366530 · 3875
                ≡ 4690 · 3875
                ≡ 18173750 ≡ 2013 (m´d 7789)
                                    o




                                       C´lculo de potencias modulares
                                        a
El algoritmo IV

     Ahora puesto que:

       65418914 = 65412 · 654116 · 654164 · 6541128 · 6541512 · 65418192

     Sustituimos las potencias y reducimos cada producto m´dulo
                                                          o
     7789:

       65418914 = 65412 · 654116 · 654164 · 6541128 · 6541512 · 65418192
                ≡ 7493 · 3097 · 7103 · 3256 · 1353 · 2012
                ≡ 23205821 · 23127368 · 2722236
                ≡ 2390 · 1827 · 3875
                ≡ 4366530 · 3875
                ≡ 4690 · 3875
                ≡ 18173750 ≡ 2013 (m´d 7789)
                                    o

     Han sido suficientes 18 multiplicaciones y divisiones para obtener
     el resultado.

                                       C´lculo de potencias modulares
                                        a
Conclusi´n
        o



  El algoritmo para calcular potencias modulares consiste en lo
  siguiente:

    1   Descomponer el exponente en suma de potencias de 2.




                                      C´lculo de potencias modulares
                                       a
Conclusi´n
        o



  El algoritmo para calcular potencias modulares consiste en lo
  siguiente:

    1   Descomponer el exponente en suma de potencias de 2.
    2   Calcular las potencias modulares cuyo exponente es una potencia
        de 2. Estas potencias pueden obtenerse cada una de la anterior
        elevando al cuadrado y reduciendo.




                                       C´lculo de potencias modulares
                                        a
Conclusi´n
        o



  El algoritmo para calcular potencias modulares consiste en lo
  siguiente:

    1   Descomponer el exponente en suma de potencias de 2.
    2   Calcular las potencias modulares cuyo exponente es una potencia
        de 2. Estas potencias pueden obtenerse cada una de la anterior
        elevando al cuadrado y reduciendo.
    3   Multiplicar las potencias cuyos exponentes aparezcan en la
        descomposici´n del apartado 1 y reducir cada producto con el
                     o
        m´dulo.
          o




                                       C´lculo de potencias modulares
                                        a
Implementaci´n en una hoja de c´lculo I
            o                  a



  El c´lculo de la potencia ae (m´d p) puede programarse f´cilmente
      a                          o                           a
  en una hoja de c´lculo definiendo las siguientes sucesiones por
                   a
  recurrencia:
                           xn
      x1 = e, xn+1 = int    2
                      2
      y1 = a, yn+1 = yn mod p

                       zn       si xn es par
      z1 = 1, zn+1 =
                       yn zn    si xn es impar


  El valor de zn cuando xn = 0 es el valor de la potencia.




                                        C´lculo de potencias modulares
                                         a
Implementaci´n en una hoja de c´lculo II
            o                  a




                           C´lculo de potencias modulares
                            a

Potencias Modulares

  • 1.
    C´lculo de potenciasmodulares a Jes´s Garc´ de Jal´n de la Fuente u ıa o IES Avenida de los Toreros Madrid 2009-11-02 C´lculo de potencias modulares a
  • 2.
    Introducci´n o El problema que consideramos consiste en el c´lculo de potencias a modulares: an (m´d m) o esto es, el resto de dividir an entre m. C´lculo de potencias modulares a
  • 3.
    Introducci´n o El problema que consideramos consiste en el c´lculo de potencias a modulares: an (m´d m) o esto es, el resto de dividir an entre m. Tanto a como n y m son enteros positivos muy grandes. C´lculo de potencias modulares a
  • 4.
    Introducci´n o El problema que consideramos consiste en el c´lculo de potencias a modulares: an (m´d m) o esto es, el resto de dividir an entre m. Tanto a como n y m son enteros positivos muy grandes. Por ejemplo el n´mero 65418914 es un n´mero gigantesco de m´s u u a de 30000 cifras. C´lculo de potencias modulares a
  • 5.
    Introducci´n o El problema que consideramos consiste en el c´lculo de potencias a modulares: an (m´d m) o esto es, el resto de dividir an entre m. Tanto a como n y m son enteros positivos muy grandes. Por ejemplo el n´mero 65418914 es un n´mero gigantesco de m´s u u a de 30000 cifras. Imaginemos cu´ntas cifras puede tener la potencia si la base y el a exponente tienen 50 cifras. C´lculo de potencias modulares a
  • 6.
    El problema Vamos a calcular una potencia con n´meros de cuatro cifras. Por u ejemplo: 65418914 (m´d 7789) o C´lculo de potencias modulares a
  • 7.
    El problema Vamos a calcular una potencia con n´meros de cuatro cifras. Por u ejemplo: 65418914 (m´d 7789) o En un criptosistema real, estos n´meros deber´ ser mucho u ıan mayores (cincuenta o m´s cifras). a C´lculo de potencias modulares a
  • 8.
    El problema Vamos a calcular una potencia con n´meros de cuatro cifras. Por u ejemplo: 65418914 (m´d 7789) o En un criptosistema real, estos n´meros deber´ ser mucho u ıan mayores (cincuenta o m´s cifras). a Veremos que, en cualquier caso, existe un algoritmo que permite calcular la potencia. C´lculo de potencias modulares a
  • 9.
    Estrategias err´neas o Se podr´ pensar en calcular la potencia 65418914 y despu´s ıa e dividir por 7789. Pero: C´lculo de potencias modulares a
  • 10.
    Estrategias err´neas o Se podr´ pensar en calcular la potencia 65418914 y despu´s ıa e dividir por 7789. Pero: La potencia tiene m´s de 30000 cifras. a C´lculo de potencias modulares a
  • 11.
    Estrategias err´neas o Se podr´ pensar en calcular la potencia 65418914 y despu´s ıa e dividir por 7789. Pero: La potencia tiene m´s de 30000 cifras. a Si la base y el exponente son n´meros muy grandes, el c´lculo se u a vuelve imposible. C´lculo de potencias modulares a
  • 12.
    Estrategias err´neas o Se podr´ pensar en calcular la potencia 65418914 y despu´s ıa e dividir por 7789. Pero: La potencia tiene m´s de 30000 cifras. a Si la base y el exponente son n´meros muy grandes, el c´lculo se u a vuelve imposible. Tampoco servir´ calcular la potencia mediante productos y a la ıa vez ir reduciendo m´dulo 7789: o C´lculo de potencias modulares a
  • 13.
    Estrategias err´neas o Se podr´ pensar en calcular la potencia 65418914 y despu´s ıa e dividir por 7789. Pero: La potencia tiene m´s de 30000 cifras. a Si la base y el exponente son n´meros muy grandes, el c´lculo se u a vuelve imposible. Tampoco servir´ calcular la potencia mediante productos y a la ıa vez ir reduciendo m´dulo 7789: o Por una parte, se evita que los n´meros se hagan grandes u (siempre ser´n menores que el m´dulo) a o C´lculo de potencias modulares a
  • 14.
    Estrategias err´neas o Se podr´ pensar en calcular la potencia 65418914 y despu´s ıa e dividir por 7789. Pero: La potencia tiene m´s de 30000 cifras. a Si la base y el exponente son n´meros muy grandes, el c´lculo se u a vuelve imposible. Tampoco servir´ calcular la potencia mediante productos y a la ıa vez ir reduciendo m´dulo 7789: o Por una parte, se evita que los n´meros se hagan grandes u (siempre ser´n menores que el m´dulo) a o Si la base y el exponente son muy grandes el n´mero de u multiplicaciones y divisiones ser´ enorme (en nuestro ejemplo a 8913 multiplicaciones y el mismo n´mero de divisiones). u C´lculo de potencias modulares a
  • 15.
    El algoritmo I Expresamos el exponente 8914 como suma de potencias de 2. Esto se puede conseguir a partir de la expresi´n binaria del n´mero: o u 8914 = 10001011010010(2) C´lculo de potencias modulares a
  • 16.
    El algoritmo I Expresamos el exponente 8914 como suma de potencias de 2. Esto se puede conseguir a partir de la expresi´n binaria del n´mero: o u 8914 = 10001011010010(2) Esto significa que: 8914 = 2 + 16 + 64 + 128 + 512 + 8192 C´lculo de potencias modulares a
  • 17.
    El algoritmo I Expresamos el exponente 8914 como suma de potencias de 2. Esto se puede conseguir a partir de la expresi´n binaria del n´mero: o u 8914 = 10001011010010(2) Esto significa que: 8914 = 2 + 16 + 64 + 128 + 512 + 8192 Por consiguiente: 65418914 = 65412+16+64+128+512+8192 = 65412 · 654116 · 654164 · 6541128 · 6541512 · 65418192 C´lculo de potencias modulares a
  • 18.
    El algoritmo II Seg´n hemos visto, basta calcular las potencias cuyo exponente u sea una potencia de 2. Estas potencias se pueden calcular cada una de la anterior elevando al cuadrado. Para evitar que este n´mero se haga u grande se reduce m´dulo 7789. o Por ejemplo (los c´lculos son m´dulo 7789): a o 65412 ≡ 42784681 ≡ 7493 (m´d 7789) o 4 2 6541 ≡ 7493 ≡ 56145049 ≡ 1937 (m´d 7789) o 8 2 6541 ≡ 1937 ≡ 3751969 ≡ 5460 (m´d 7789) o El resto de potencias puede verse en la p´gina siguiente. a C´lculo de potencias modulares a
  • 19.
    El algoritmo III 65412 ≡ 42784681 ≡ 7493 (m´d 7789) o 4 2 6541 ≡ 7493 ≡ 56145049 ≡ 1937 (m´d 7789) o 8 2 6541 ≡ 1937 ≡ 3751969 ≡ 5460 (m´d 7789) o 16 2 6541 ≡ 5460 ≡ 29811600 ≡ 3097 (m´d 7789) o 32 2 6541 ≡ 3097 ≡ 9591409 ≡ 3150 (m´d 7789) o 64 2 6541 ≡ 3150 ≡ 9922500 ≡ 7103 (m´d 7789) o 128 2 6541 ≡ 7103 ≡ 50452609 ≡ 3256 (m´d 7789) o 256 2 6541 ≡ 3256 ≡ 10601536 ≡ 707 (m´d 7789) o 512 2 6541 ≡ 707 ≡ 499849 ≡ 1353 (m´d 7789) o 1024 2 6541 ≡ 1353 ≡ 1830609 ≡ 194 (m´d 7789) o 2048 2 6541 ≡ 194 ≡ 37636 ≡ 6480 (m´d 7789) o 4096 2 6541 ≡ 6480 ≡ 41990400 ≡ 7690 (m´d 7789) o 8192 2 6541 ≡ 7690 ≡ 59136100 ≡ 2012 (m´d 7789) o C´lculo de potencias modulares a
  • 20.
    El algoritmo IV Ahora puesto que: 65418914 = 65412 · 654116 · 654164 · 6541128 · 6541512 · 65418192 C´lculo de potencias modulares a
  • 21.
    El algoritmo IV Ahora puesto que: 65418914 = 65412 · 654116 · 654164 · 6541128 · 6541512 · 65418192 Sustituimos las potencias y reducimos cada producto m´dulo o 7789: 65418914 = 65412 · 654116 · 654164 · 6541128 · 6541512 · 65418192 ≡ 7493 · 3097 · 7103 · 3256 · 1353 · 2012 ≡ 23205821 · 23127368 · 2722236 ≡ 2390 · 1827 · 3875 ≡ 4366530 · 3875 ≡ 4690 · 3875 ≡ 18173750 ≡ 2013 (m´d 7789) o C´lculo de potencias modulares a
  • 22.
    El algoritmo IV Ahora puesto que: 65418914 = 65412 · 654116 · 654164 · 6541128 · 6541512 · 65418192 Sustituimos las potencias y reducimos cada producto m´dulo o 7789: 65418914 = 65412 · 654116 · 654164 · 6541128 · 6541512 · 65418192 ≡ 7493 · 3097 · 7103 · 3256 · 1353 · 2012 ≡ 23205821 · 23127368 · 2722236 ≡ 2390 · 1827 · 3875 ≡ 4366530 · 3875 ≡ 4690 · 3875 ≡ 18173750 ≡ 2013 (m´d 7789) o Han sido suficientes 18 multiplicaciones y divisiones para obtener el resultado. C´lculo de potencias modulares a
  • 23.
    Conclusi´n o El algoritmo para calcular potencias modulares consiste en lo siguiente: 1 Descomponer el exponente en suma de potencias de 2. C´lculo de potencias modulares a
  • 24.
    Conclusi´n o El algoritmo para calcular potencias modulares consiste en lo siguiente: 1 Descomponer el exponente en suma de potencias de 2. 2 Calcular las potencias modulares cuyo exponente es una potencia de 2. Estas potencias pueden obtenerse cada una de la anterior elevando al cuadrado y reduciendo. C´lculo de potencias modulares a
  • 25.
    Conclusi´n o El algoritmo para calcular potencias modulares consiste en lo siguiente: 1 Descomponer el exponente en suma de potencias de 2. 2 Calcular las potencias modulares cuyo exponente es una potencia de 2. Estas potencias pueden obtenerse cada una de la anterior elevando al cuadrado y reduciendo. 3 Multiplicar las potencias cuyos exponentes aparezcan en la descomposici´n del apartado 1 y reducir cada producto con el o m´dulo. o C´lculo de potencias modulares a
  • 26.
    Implementaci´n en unahoja de c´lculo I o a El c´lculo de la potencia ae (m´d p) puede programarse f´cilmente a o a en una hoja de c´lculo definiendo las siguientes sucesiones por a recurrencia: xn x1 = e, xn+1 = int 2 2 y1 = a, yn+1 = yn mod p zn si xn es par z1 = 1, zn+1 = yn zn si xn es impar El valor de zn cuando xn = 0 es el valor de la potencia. C´lculo de potencias modulares a
  • 27.
    Implementaci´n en unahoja de c´lculo II o a C´lculo de potencias modulares a