18
Class4crypt Videoclases de criptografía aplicada Class4crypt c4c2.5 - © jorgeramio 2020 Profesor Dr. Jorge Ramió A. Clase c4c2.5 Algoritmo de exponenciación rápida Madrid, sábado 11 de abril de 2020

Class4crypt Aula Virtual de Criptografía · 0 = 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é

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Class4crypt Aula Virtual de Criptografía · 0 = 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é

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

Page 2: Class4crypt Aula Virtual de Criptografía · 0 = 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é

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

Page 3: Class4crypt Aula Virtual de Criptografía · 0 = 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é

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

¡COMENZAMOS!

Page 4: Class4crypt Aula Virtual de Criptografía · 0 = 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é

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

Page 5: Class4crypt Aula Virtual de Criptografía · 0 = 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é

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

Page 6: Class4crypt Aula Virtual de Criptografía · 0 = 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é

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

Page 7: Class4crypt Aula Virtual de Criptografía · 0 = 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é

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

Page 8: Class4crypt Aula Virtual de Criptografía · 0 = 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é

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”

Page 9: Class4crypt Aula Virtual de Criptografía · 0 = 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é

Calculadoras modulares avanzadas

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

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

Page 10: Class4crypt Aula Virtual de Criptografía · 0 = 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é

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

Page 11: Class4crypt Aula Virtual de Criptografía · 0 = 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é

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…

Page 12: Class4crypt Aula Virtual de Criptografía · 0 = 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é

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

Page 13: Class4crypt Aula Virtual de Criptografía · 0 = 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é

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

Page 14: Class4crypt Aula Virtual de Criptografía · 0 = 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é

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

Page 15: Class4crypt Aula Virtual de Criptografía · 0 = 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é

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

Page 16: Class4crypt Aula Virtual de Criptografía · 0 = 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é

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

Page 17: Class4crypt Aula Virtual de Criptografía · 0 = 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é

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

Page 18: Class4crypt Aula Virtual de Criptografía · 0 = 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é

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