Top Banner
alculo de potencias modulares Jes´ us Garc´ ıa de Jal´ on de la Fuente IES Avenida de los Toreros Madrid 2009-11-02 C´alculo de potencias modulares
27

Potencias Modulares

Dec 18, 2014

Download

Education

Se describe el algoritmo que permite obtener de forma muy eficiente potencias modulares
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Potencias Modulares

Calculo de potencias modulares

Jesus Garcıa de Jalon de la Fuente

IES Avenida de los TorerosMadrid

2009-11-02

Calculo de potencias modulares

Page 2: Potencias Modulares

Introduccion

� El problema que consideramos consiste en el calculo de potenciasmodulares:

an (mod m)

esto es, el resto de dividir an entre m.

� Tanto a como n y m son enteros positivos muy grandes.� Por ejemplo el numero 65418914 es un numero gigantesco de mas

de 30000 cifras.� Imaginemos cuantas cifras puede tener la potencia si la base y el

exponente tienen 50 cifras.

Calculo de potencias modulares

Page 3: Potencias Modulares

Introduccion

� El problema que consideramos consiste en el calculo de potenciasmodulares:

an (mod m)

esto es, el resto de dividir an entre m.� Tanto a como n y m son enteros positivos muy grandes.

� Por ejemplo el numero 65418914 es un numero gigantesco de masde 30000 cifras.

� Imaginemos cuantas cifras puede tener la potencia si la base y elexponente tienen 50 cifras.

Calculo de potencias modulares

Page 4: Potencias Modulares

Introduccion

� El problema que consideramos consiste en el calculo de potenciasmodulares:

an (mod m)

esto es, el resto de dividir an entre m.� Tanto a como n y m son enteros positivos muy grandes.� Por ejemplo el numero 65418914 es un numero gigantesco de mas

de 30000 cifras.

� Imaginemos cuantas cifras puede tener la potencia si la base y elexponente tienen 50 cifras.

Calculo de potencias modulares

Page 5: Potencias Modulares

Introduccion

� El problema que consideramos consiste en el calculo de potenciasmodulares:

an (mod m)

esto es, el resto de dividir an entre m.� Tanto a como n y m son enteros positivos muy grandes.� Por ejemplo el numero 65418914 es un numero gigantesco de mas

de 30000 cifras.� Imaginemos cuantas cifras puede tener la potencia si la base y el

exponente tienen 50 cifras.

Calculo de potencias modulares

Page 6: Potencias Modulares

El problema

� Vamos a calcular una potencia con numeros de cuatro cifras. Porejemplo:

65418914 (mod 7789)

� En un criptosistema real, estos numeros deberıan ser muchomayores (cincuenta o mas cifras).

� Veremos que, en cualquier caso, existe un algoritmo que permitecalcular la potencia.

Calculo de potencias modulares

Page 7: Potencias Modulares

El problema

� Vamos a calcular una potencia con numeros de cuatro cifras. Porejemplo:

65418914 (mod 7789)

� En un criptosistema real, estos numeros deberıan ser muchomayores (cincuenta o mas cifras).

� Veremos que, en cualquier caso, existe un algoritmo que permitecalcular la potencia.

Calculo de potencias modulares

Page 8: Potencias Modulares

El problema

� Vamos a calcular una potencia con numeros de cuatro cifras. Porejemplo:

65418914 (mod 7789)

� En un criptosistema real, estos numeros deberıan ser muchomayores (cincuenta o mas cifras).

� Veremos que, en cualquier caso, existe un algoritmo que permitecalcular la potencia.

Calculo de potencias modulares

Page 9: Potencias Modulares

Estrategias erroneas

� Se podrıa pensar en calcular la potencia 65418914 y despuesdividir por 7789. Pero:

La potencia tiene mas de 30000 cifras.Si la base y el exponente son numeros muy grandes, el calculo sevuelve imposible.

� Tampoco servirıa calcular la potencia mediante productos y a lavez ir reduciendo modulo 7789:

Por una parte, se evita que los numeros se hagan grandes(siempre seran menores que el modulo)Si la base y el exponente son muy grandes el numero demultiplicaciones y divisiones sera enorme (en nuestro ejemplo8913 multiplicaciones y el mismo numero de divisiones).

Calculo de potencias modulares

Page 10: Potencias Modulares

Estrategias erroneas

� Se podrıa pensar en calcular la potencia 65418914 y despuesdividir por 7789. Pero:

La potencia tiene mas de 30000 cifras.

Si la base y el exponente son numeros muy grandes, el calculo sevuelve imposible.

� Tampoco servirıa calcular la potencia mediante productos y a lavez ir reduciendo modulo 7789:

Por una parte, se evita que los numeros se hagan grandes(siempre seran menores que el modulo)Si la base y el exponente son muy grandes el numero demultiplicaciones y divisiones sera enorme (en nuestro ejemplo8913 multiplicaciones y el mismo numero de divisiones).

Calculo de potencias modulares

Page 11: Potencias Modulares

Estrategias erroneas

� Se podrıa pensar en calcular la potencia 65418914 y despuesdividir por 7789. Pero:

La potencia tiene mas de 30000 cifras.Si la base y el exponente son numeros muy grandes, el calculo sevuelve imposible.

� Tampoco servirıa calcular la potencia mediante productos y a lavez ir reduciendo modulo 7789:

Por una parte, se evita que los numeros se hagan grandes(siempre seran menores que el modulo)Si la base y el exponente son muy grandes el numero demultiplicaciones y divisiones sera enorme (en nuestro ejemplo8913 multiplicaciones y el mismo numero de divisiones).

Calculo de potencias modulares

Page 12: Potencias Modulares

Estrategias erroneas

� Se podrıa pensar en calcular la potencia 65418914 y despuesdividir por 7789. Pero:

La potencia tiene mas de 30000 cifras.Si la base y el exponente son numeros muy grandes, el calculo sevuelve imposible.

� Tampoco servirıa calcular la potencia mediante productos y a lavez ir reduciendo modulo 7789:

Por una parte, se evita que los numeros se hagan grandes(siempre seran menores que el modulo)Si la base y el exponente son muy grandes el numero demultiplicaciones y divisiones sera enorme (en nuestro ejemplo8913 multiplicaciones y el mismo numero de divisiones).

Calculo de potencias modulares

Page 13: Potencias Modulares

Estrategias erroneas

� Se podrıa pensar en calcular la potencia 65418914 y despuesdividir por 7789. Pero:

La potencia tiene mas de 30000 cifras.Si la base y el exponente son numeros muy grandes, el calculo sevuelve imposible.

� Tampoco servirıa calcular la potencia mediante productos y a lavez ir reduciendo modulo 7789:

Por una parte, se evita que los numeros se hagan grandes(siempre seran menores que el modulo)

Si la base y el exponente son muy grandes el numero demultiplicaciones y divisiones sera enorme (en nuestro ejemplo8913 multiplicaciones y el mismo numero de divisiones).

Calculo de potencias modulares

Page 14: Potencias Modulares

Estrategias erroneas

� Se podrıa pensar en calcular la potencia 65418914 y despuesdividir por 7789. Pero:

La potencia tiene mas de 30000 cifras.Si la base y el exponente son numeros muy grandes, el calculo sevuelve imposible.

� Tampoco servirıa calcular la potencia mediante productos y a lavez ir reduciendo modulo 7789:

Por una parte, se evita que los numeros se hagan grandes(siempre seran menores que el modulo)Si la base y el exponente son muy grandes el numero demultiplicaciones y divisiones sera enorme (en nuestro ejemplo8913 multiplicaciones y el mismo numero de divisiones).

Calculo de potencias modulares

Page 15: Potencias Modulares

El algoritmo I

� Expresamos el exponente 8914 como suma de potencias de 2. Estose puede conseguir a partir de la expresion binaria del numero:

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

Calculo de potencias modulares

Page 16: Potencias Modulares

El algoritmo I

� Expresamos el exponente 8914 como suma de potencias de 2. Estose puede conseguir a partir de la expresion binaria del numero:

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

Calculo de potencias modulares

Page 17: Potencias Modulares

El algoritmo I

� Expresamos el exponente 8914 como suma de potencias de 2. Estose puede conseguir a partir de la expresion binaria del numero:

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

Calculo de potencias modulares

Page 18: Potencias Modulares

El algoritmo II

� Segun hemos visto, basta calcular las potencias cuyo exponentesea una potencia de 2.

� Estas potencias se pueden calcular cada una de la anteriorelevando al cuadrado. Para evitar que este numero se hagagrande se reduce modulo 7789.

� Por ejemplo (los calculos son modulo 7789):

65412 ≡ 42784681 ≡ 7493 (mod 7789)

65414 ≡ 74932 ≡ 56145049 ≡ 1937 (mod 7789)

65418 ≡ 19372 ≡ 3751969 ≡ 5460 (mod 7789)

� El resto de potencias puede verse en la pagina siguiente.

Calculo de potencias modulares

Page 19: Potencias Modulares

El algoritmo III

65412 ≡ 42784681 ≡ 7493 (mod 7789)

65414 ≡ 74932 ≡ 56145049 ≡ 1937 (mod 7789)

65418 ≡ 19372 ≡ 3751969 ≡ 5460 (mod 7789)

654116 ≡ 54602 ≡ 29811600 ≡ 3097 (mod 7789)

654132 ≡ 30972 ≡ 9591409 ≡ 3150 (mod 7789)

654164 ≡ 31502 ≡ 9922500 ≡ 7103 (mod 7789)

6541128 ≡ 71032 ≡ 50452609 ≡ 3256 (mod 7789)

6541256 ≡ 32562 ≡ 10601536 ≡ 707 (mod 7789)

6541512 ≡ 7072 ≡ 499849 ≡ 1353 (mod 7789)

65411024 ≡ 13532 ≡ 1830609 ≡ 194 (mod 7789)

65412048 ≡ 1942 ≡ 37636 ≡ 6480 (mod 7789)

65414096 ≡ 64802 ≡ 41990400 ≡ 7690 (mod 7789)

65418192 ≡ 76902 ≡ 59136100 ≡ 2012 (mod 7789)

Calculo de potencias modulares

Page 20: Potencias Modulares

El algoritmo IV

� Ahora puesto que:

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

� Sustituimos las potencias y reducimos cada producto modulo7789:

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 (mod 7789)

� Han sido suficientes 18 multiplicaciones y divisiones para obtenerel resultado.

Calculo de potencias modulares

Page 21: Potencias Modulares

El algoritmo IV

� Ahora puesto que:

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

� Sustituimos las potencias y reducimos cada producto modulo7789:

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 (mod 7789)

� Han sido suficientes 18 multiplicaciones y divisiones para obtenerel resultado.

Calculo de potencias modulares

Page 22: Potencias Modulares

El algoritmo IV

� Ahora puesto que:

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

� Sustituimos las potencias y reducimos cada producto modulo7789:

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 (mod 7789)

� Han sido suficientes 18 multiplicaciones y divisiones para obtenerel resultado.

Calculo de potencias modulares

Page 23: Potencias Modulares

Conclusion

El algoritmo para calcular potencias modulares consiste en losiguiente:

1 Descomponer el exponente en suma de potencias de 2.

2 Calcular las potencias modulares cuyo exponente es una potenciade 2. Estas potencias pueden obtenerse cada una de la anteriorelevando al cuadrado y reduciendo.

3 Multiplicar las potencias cuyos exponentes aparezcan en ladescomposicion del apartado 1 y reducir cada producto con elmodulo.

Calculo de potencias modulares

Page 24: Potencias Modulares

Conclusion

El algoritmo para calcular potencias modulares consiste en losiguiente:

1 Descomponer el exponente en suma de potencias de 2.

2 Calcular las potencias modulares cuyo exponente es una potenciade 2. Estas potencias pueden obtenerse cada una de la anteriorelevando al cuadrado y reduciendo.

3 Multiplicar las potencias cuyos exponentes aparezcan en ladescomposicion del apartado 1 y reducir cada producto con elmodulo.

Calculo de potencias modulares

Page 25: Potencias Modulares

Conclusion

El algoritmo para calcular potencias modulares consiste en losiguiente:

1 Descomponer el exponente en suma de potencias de 2.

2 Calcular las potencias modulares cuyo exponente es una potenciade 2. Estas potencias pueden obtenerse cada una de la anteriorelevando al cuadrado y reduciendo.

3 Multiplicar las potencias cuyos exponentes aparezcan en ladescomposicion del apartado 1 y reducir cada producto con elmodulo.

Calculo de potencias modulares

Page 26: Potencias Modulares

Implementacion en una hoja de calculo I

El calculo de la potencia ae (mod p) puede programarse facilmenteen una hoja de calculo definiendo las siguientes sucesiones porrecurrencia:

x1 = e, xn+1 = int(

xn

2

)y1 = a, yn+1 = y2

n mod p

z1 = 1, zn+1 =

{zn si xn es parynzn si xn es impar

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

Calculo de potencias modulares

Page 27: Potencias Modulares

Implementacion en una hoja de calculo II

Calculo de potencias modulares