class4crypt aula virtual de criptografía · 0 = 1 x = 802 19 mod 91 = 24 x = 24 hemos realizado...
TRANSCRIPT
Class4cryptVideoclases de criptografía aplicada
Class4crypt c4c2.5 - © jorgeramio 2020
Profesor Dr. Jorge Ramió A.
Clase c4c2.5Algoritmo de
exponenciación rápidaMadrid, sábado 11 de abril de 2020
Temario
Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 2
• 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 3
¡COMENZAMOS!
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
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
Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 7
Hallar x = AB mod n
• Obtener representación binaria del exponente B de k bits:
B2 → bk-1bk-2...bi...b1b0
• Hacer x = 1
• Para i = k-1, ..., 0 hacer
x = x2 mod n
Si bi = 1 entonces
x = xA mod n
Ejemplo: 1983 mod 911983 = 1,369458509879505101557376746718e+106832 = b6b5b4b3b2b1b0 = 1010011
x = 1
i = 6 b6 = 1 x = 1219 mod 91 = 19 x = 19
i = 5 b5 = 0 x = 192 mod 91 = 88 x = 88
i = 4 b4 = 1 x = 882 19 mod 91 = 80 x = 80
i = 3 b3 = 0 x = 802 mod 91 = 30 x = 30
i = 2 b2 = 0 x = 302 mod 91 = 81 x = 81
i = 1 b1 = 1 x = 812 19 mod 91 = 80 x = 80
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?
= 24
Calculadoras modulares básicas
Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 8
Calculadoras de Windows: 5 dígitos5 dígitos ya indica “entrada no válida”
Calculadoras modulares avanzadas
Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 9
http://www.criptored.upm.es/software/sw_m001t.htm
Calculadoras online
Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 10
https://www.mobilefish.com/services/big_number_equation/big_number_equation.php
https://www.boxentriq.com/code-breaking/modular-exponentiation
1.000 dígitos2.000 dígitos mod 1.000 dígitos lo calcula en 1 segundo, como SAMCript
No resulta muy cómodo
Calculadoras online no recomendables I
Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 11
https://www.mtholyoke.edu/courses/quenell/s2003/ma139/js/powermod.html
Resultado falso: 12345678909876543210 mod 78120 = 62.280Y para números grandes, se bloquea el navegador…
Calculadoras online no recomendables II
Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 12
https://planetcalc.com/8326/
= 62.280 … ¡más de 1 minuto!
Para números “más grandes” ya es imposible el cálculo
12345678909876543210 mod 78120 = 62.280
Refuerzo: píldora formativa Thoth nº 37
Class4crypt c4c2.5 - © jorgeramio 2020 Lección 2.5 - página 13
https://www.youtube.com/watch?v=atadETMx9Lk
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
Lectura extra recomendada
• 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
Fin de la lección
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 CreativeCommons 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