potencias modulares

27
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

Upload: jesus-garcia-de-jalon-de-la-fuente

Post on 18-Dec-2014

4.965 views

Category:

Education


4 download

DESCRIPTION

Se describe el algoritmo que permite obtener de forma muy eficiente potencias modulares

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