Está en la página 1de 18

Class4crypt

Videoclases de criptografía aplicada

Clase c4c2.5
Algoritmo de
exponenciación rápida
Madrid, sábado 11 de abril de 2020

Profesor Dr. Jorge Ramió A.


Class4crypt c4c2.5 - © jorgeramio 2020
Temario
• Módulo 1: Principios básicos de la seguridad
• Módulo 2: Matemáticas discretas en la criptografía
• Módulo 3: Complejidad algorítmica en la criptografía
• Módulo 4: Teoría de la información en la criptografía
• Módulo 5: Fundamentos de la criptografía clásica y moderna
• Módulo 6: Algoritmos de criptografía clásica
• Módulo 7: Cifra simétrica en flujo
• Módulo 8: Cifra simétrica en bloque
• Módulo 9: Funciones hash en la criptografía
• Módulo 10: Cifra asimétrica
• Módulo11: Otros temas relacionados
• Temario: http://www.criptored.upm.es/descarga/Class4cryptc4c0.1_Presentacion.pdf

Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 2


¡COMENZAMOS!

Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 3


Class4crypt c4c2.5
Módulo 2. Matemáticas discretas en la criptografía
Lección 2.5. Algoritmo de exponenciación rápida
1. Operaciones de potencia modular en criptografía moderna
2. La solución del homomorfismo de los enteros
3. Algoritmo de exponenciación rápida
4. Calculadoras modulares básicas, avanzadas y online
5. Calculadoras modulares online no recomendables

Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 4


Potencia modular en criptografía
• Varios algoritmos de cifra y firma digital en criptografía asimétrica usan
operaciones de exponenciación modular con números muy grandes
• Diffie y Hellman
• XA = a mod p (con p un primo,  una raíz primitiva de p y a una clave secreta de A)
• XB = b mod p (con p un primo,  una raíz primitiva de p y b una clave secreta de B)
• RSA
• X = KeR mod nR (con nR = pR*qR, eR clave pública, R = Receptor)
• X = h(M)dE mod nE (con nE = pE*qE, dE clave privada, E = Emisor)
• Elgamal
• Clave privada Cpriv = x
• Clave pública Cpúbl = x mod p (con p un primo y  una raíz primitiva de p)

Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 5


Solución: homomorfismo de los enteros
• Hemos visto en una lección anterior que no podemos realizar la operación de
potencia y, posteriormente, realizar la reducción a módulo
• No hay espacio físico donde almacenar esa inmensa cantidad de bits
• El tiempo de cómputo es inmenso y se vuelve impracticable
• La solución estaba en el homomorfismo de los enteros
• Las operaciones se realizaban por partes, reduciendo siempre a módulo antes de realizar
la siguiente operación
• Una primera opción es usar el método de los cuadrados, reduciendo a módulo en cada
cómputo, pero no es adecuado para números grandes
• Una segunda opción, esta ya óptima, es usar el método de exponenciación modular
rápida (square and multiply) en el que se recorre el exponente representado en binario,
haciendo operaciones diferentes si el bit es un 0 o un 1

Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 6


Algoritmo de Exponenciación Rápida AER
Ejemplo: 19 83 mod 91 = 24
Hallar x = mod n
AB
1983 = 1,369458509879505101557376746718e+106
• Obtener representación
binaria del exponente B 832 = b6b5b4b3b2b1b0 = 1010011
de k bits: x=1
B2 → bk-1bk-2...bi...b1b0 i = 6 b6 = 1 x = 1219 mod 91 = 19 x = 19
• Hacer x = 1 i = 5 b5 = 0 x = 192 mod 91 = 88 x = 88
i = 4 b = 1 x = 882 19 mod 91 = 80 x = 80
• Para i = k-1, ..., 0 hacer 4

x = x mod n
2 i = 3 b3 = 0 x = 802 mod 91 = 30 x = 30
i = 2 b2 = 0 x = 302 mod 91 = 81 x = 81
Si bi = 1 entonces
i = 1 b1 = 1 x = 812 19 mod 91 = 80 x = 80
x = xA mod n
i = 0 b0 = 1 x = 802 19 mod 91 = 24 x = 24
Hemos realizado sólo 16 operaciones, frente a las 164 si se usase reducción por cuadrados.
¿Qué sucederá en una firma digital RSA sobre un hash: (256 bits)(2.048 bits) mod (2.048 bits)?
Con AER, 2.048 cuadrados y unas 1.000 multiplicaciones… pero ¿un número de 620 dígitos?
Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 7
Calculadoras modulares básicas

Calculadoras de Windows: 5 dígitos5 dígitos ya indica “entrada no válida”

Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 8


Calculadoras modulares avanzadas

http://www.criptored.upm.es/software/sw_m001t.htm

Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 9


Calculadoras online

https://www.mobilefish.com/services/big_n
umber_equation/big_number_equation.php

No resulta muy cómodo

1.000 dígitos2.000 dígitos mod 1.000 dígitos


lo calcula en 1 segundo, como SAMCript

https://www.boxentriq.com/code-
breaking/modular-exponentiation

Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 10


Calculadoras online no recomendables I

Resultado falso: 12345678909876543210 mod 78120 = 62.280


Y para números grandes, se bloquea el navegador…

https://www.mtholyoke.edu/courses/quenell/s2003/ma139/js/powermod.html

Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 11


Calculadoras online no recomendables II
= 62.280 … ¡más de 1 minuto!

Para números “más grandes”


ya es imposible el cálculo

12345678909876543210 mod 78120 = 62.280 https://planetcalc.com/8326/

Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 12


Refuerzo: píldora formativa Thoth nº 37

https://www.youtube.com/watch?v=atadETMx9Lk
Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 13
Conclusiones de la lección 2.5
• La criptografía moderna usa en sus algoritmos de clave pública operaciones
de exponenciación modular AB mod n con números muy grandes, para
protegerse de ataques por fuerza bruta
• No obstante, para permitir realizar las operaciones de cifrado y descifrado en
tiempos mínimos, se hace uso del homomorfismo de los enteros y, en
particular, del algoritmo de exponenciación rápida AER
• El exponente B se expresa en binario y se recorre dicha cadena de bits, de
forma que cuando el bit es un 0 la operación a realizar es un cuadrado, y
cuando el bit es un 1, además de ese cuadrado se multiplica por la base A, en
ambos casos reduciendo la operación módulo n
• Operaciones en las que tanto A, B y n son mayores que 3.000 bits, se realizan
en menos de un segundo… y cuidado nuevamente con páginas web no fiables
Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 14
Antes de terminar, por favor colabora…
• Si, en general, te ha gustado el vídeo…
• Si has aprendido algo nuevo…
• Si has podido reforzar algún conocimiento que ya tenías…
• Entonces, por favor, ponle un “Me gusta” al vídeo
• Si deseas expresar alguna opinión sobre el contenido de esta
clase o tienes alguna duda, hazlo aquí en YouTube. Todos los
comentarios serán muy bien recibidos y las dudas contestadas
a la mayor brevedad posible
• Muchas gracias
Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 15
Fin de la
Lectura extra recomendada lección
• Guion de la píldora formativa Thoth nº 37 ¿Cómo funciona el algoritmo de
exponenciación rápida? Jorge Ramió, 2016
• http://www.criptored.upm.es/thoth/material/texto/pildora037.pdf
• Coursera Square and Multiply
• https://es.coursera.org/lecture/mathematical-foundations-
cryptography/square-and-multiply-ty62K
• Modular exponentiation by repeated squaring
• https://mathlesstraveled.com/2018/08/18/modular-exponentiation-by-
repeated-squaring/

Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 16


Otras videoclases del proyecto Class4crypt
• https://www.youtube.com/user/jorgeramio


• Más información en canal Twitter
• https://twitter.com/class4crypt

Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 17
Licencia y créditos
• Estas videoclases y la documentación utilizada
en ellas, se encuentran bajo licencia Creative
Commons tipo CC BY-NC-ND 4.0
• Reconocimiento - No Comercial - Sin Obra
Derivada
• Permite que otros puedan descargar esta obra y compartirla con otras
personas, siempre que se reconozca su autoría, pero no se puede cambiar de
ninguna manera su contenido ni se puede utilizar comercialmente
• Música:
• Enter_Blonde, Max Surla, Media Right Productions, YouTube Audio Library - Free Music
https://www.youtube.com/audiolibrary/music?nv=1

Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 18

También podría gustarte