potencias modulares

Post on 18-Dec-2014

4.965 Views

Category:

Education

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

Calculo de potencias modulares

Jesus Garcıa de Jalon de la Fuente

IES Avenida de los TorerosMadrid

2009-11-02

Calculo de 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Implementacion en una hoja de calculo II

Calculo de potencias modulares

top related