24
Class4crypt Videoclases de criptografía aplicada Class4crypt c4c2.4 - © jorgeramio 2020 Profesor Dr. Jorge Ramió A. Clase c4c2.4 Inversos con el algoritmo extendido Euclides Madrid, lunes 06 de abril de 2020

Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

Class4cryptVideoclases de criptografía aplicada

Class4crypt c4c2.4 - © jorgeramio 2020

Profesor Dr. Jorge Ramió A.

Clase c4c2.4Inversos con el algoritmo

extendido EuclidesMadrid, lunes 06 de abril de 2020

Page 2: Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

Temario

Class4crypt c4c2.4 - © jorgeramio 2020 Lección 2.4 - 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...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

Class4crypt c4c2.4 - © jorgeramio 2020 Lección 2.4 - página 3

¡COMENZAMOS!

Page 4: Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

Módulo 2. Matemáticas discretas en la criptografía

Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides

1. Recordando la importancia de los inversos en criptografía

2. Divisibilidad de los números y Euclides

3. Algoritmo de Euclides para calcular el máximo común divisor

4. Cálculo de inversos mediante el algoritmo de Euclides y el recorrido de la tabla de restos

5. Algoritmo extendido de Euclides para el cálculo de inversos

Class4crypt c4c2.4

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

Page 5: Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

Recordando los inversos en criptografía

• Los números inversos son muy importantes en criptografía porque en muchos casos permiten descifrar en destino lo que se ha cifrado en origen

• Existen inversos aditivos, inversos xor e inversos multiplicativos, siendo estos últimos los más interesantes puesto que dan lugar al concepto de clave pública y clave privada, inversas entre sí, de la criptografía asimétrica

• Cuando se indica sólo inv (a, n), se entiende que es un inverso multiplicativo

• Los inversos en algoritmos de cifra asimétrica como RSA y Elgamal, no son tan directos como los inversos de una cifra por multiplicación simple

• Para encontrar los inversos multiplicativos, siempre se usará el algoritmo extendido de Euclides, representado comúnmente por las letras AEE. La pregunta es: ¿por qué usamos Euclides para encontrar los inversos?

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

Page 6: Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

Divisibilidad de los números y Euclides

• En criptografía muchas veces nos interesará encontrar el máximo común divisor entre dos números a y b, esto es MCD (a, b)

• Para la existencia del inverso del resto a en un módulo n, ese resto a y el módulo n deberán ser coprimos, es decir debe cumplirse que MCD (a, n) = 1

• El algoritmo de Euclides de la divisibilidad de los números nos decíaa) Si x divide a a y b a = x*a’ b = x*b’

b) Por lo tanto a – k*b = x*a’ – k*x*b’

c) Es decir a – k*b = x(a’ – k*b’) Se concluye que x divide a (a – k*b)

Si a = 32, b = 12 y x = 4 [a = x*a’ (32 = 4*8)] con a’ = 8 y b = x*b’ [(12 = 4*3)] con b’ = 3

Entonces x divide a (a – k*b) es decir 4 divide a (32 – k*12). Se cumple para todo valor de k:

Para k = …, -3, -2, -1, 0, 1, 2, 3, … se obtiene (68, 56, 44, 32, 20, 8 -4) todos divisibles por 4

Class4crypt c4c2.4 - © jorgeramio 2020 Lección 2.4 - página 6

Page 7: Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

El máximo común divisor MCD

• Como hemos llegado a que x divide a (a – k*b), esto nos permitirá encontrar el máximo común divisor entre a y b

• Si a > b (28 y 20) entonces a = d1*b + r Ejemplo 28 = 1*20 + 8

• Con di un entero (1) y r (8) un resto de b

• Luego MCD (a, b) = MCD (b, r) Con a > b > r 0

• Porque:

• Si b > r (20 y 8) b = d2*r + r’ Ejemplo 20 = 2*8 + 4

• Con r ahora un entero (2) y r’ (4) un resto r

• Esto se puede ir repitiendo en el cálculo de MCD hasta obtener un resto 0; en este caso, MCD (28, 20 ) = 4

Class4crypt c4c2.4 - © jorgeramio 2020 Lección 2.4 - página 7

Page 8: Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

Divisibilidad con el algoritmo de Euclides

Class4crypt c4c2.4 - © jorgeramio 2020 Lección 2.4 - página 8

MCD (148, 40)

148 = 3 40 + 28

40 = 1 28 + 12

28 = 2 12 + 4

12 = 3 4 + 0

MCD (148, 40) = 4

MCD (385, 78)

385 = 4 78 + 73

78 = 1 73 + 5

73 = 14 5 + 3

5 = 1 3 + 2

3 = 1 2 + 1

2 = 2 1 + 0

MCD (385, 78) = 1

148 = 22 37

40 = 23 5

385 = 5 7 11

78 = 2 3 13

Factor común 22 = 4

No hay factores

en común

Esta condición será importante en criptografía

Page 9: Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

Los restos del algoritmo de Euclides

• Ordenando por restos

• n = C1*a + r1 Con a > r1

• a = C2*r1 + r2 Con r1 > r2

• r1 = C3*r2 + r3 Con r2 > r3

• r2 = C4*r3 + r4 Con r3 > r4

• … …

• rn-2 = Cn*rn-1 + 1 Con rn-1 > 1

• rn-1 = Cn+1*1 + 0

• Concluye el algoritmo

Class4crypt c4c2.4 - © jorgeramio 2020 Lección 2.4 - página 9

Si volvemos hacia atrás desde este valor, obtendremos el inverso de a en el módulo n

Page 10: Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

Tabla de restos del algoritmo de Euclides

• Ordenando por restos desde el valor 1, se llega a una expresión del tipo (k1*n + k2*a) mod n = 1, en donde el inverso de a en n lo dará el coeficiente k2 puesto que k1*n mod n = 0

Class4crypt c4c2.4 - © jorgeramio 2020 Lección 2.4 - página 10

C1 C2 C3 C4 … Cn-1 Cn Cn+1

n a r1 r2 r3 … rn-2 rn-1 1

(k1*n + k2*a) mod n = 1

Por lo tanto: k2*a mod n = 1

Vuelta hacia atrás…

Page 11: Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

Inversos con tabla de restos de Euclides

• Encontrar el inv (9, 25) con la tabla de restos de Euclides

Class4crypt c4c2.4 - © jorgeramio 2020 Lección 2.4 - página 11

2 1 3 2

25 9 7 2 1 0

Tabla de restos

25 = 2*9 +7 7 = 25 – 2*9 7 = 25 – 2*99 = 1*7 + 2 2 = 9 – 1*7 2 = 9 – 1*(25 – 2*9) = 3*9 – 1*257 = 3*2 + 1 1 = 7 – 3*2 1 = (25 – 2*9) – 3*(3*9 – 1*25)2 = 2*1 + 0 0 = 2 – 2*1 1 = 4*25 – 11*9 mod 25 = -11*9

Como 1 = -11*9 mod 25inv (9, 25) = -11 + 25 = 14

Restos

Page 12: Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

Refuerzo: píldora formativa Thoth nº 24

Class4crypt c4c2.4 - © jorgeramio 2020 Lección 24 - página 12

https://www.youtube.com/watch?v=LBgq4NKLHws

Page 13: Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

El algoritmo extendido de Euclides

• Para encontrar x = inv (A, B)Hacer (g0, g1, u0, u1, v0, v1, i) = (B, A, 1, 0, 0, 1, 1)Mientras gi 0 hacer

Hacer yi+1 = parte entera (gi-1/gi)Hacer gi+1 = gi-1 - yi+1 gi

Hacer ui+1 = ui-1 - yi+1 ui

Hacer vi+1 = vi-1 - yi+1 vi

Hacer i = i+1Si (vi-1 < 0)

Hacer vi-1 = vi-1 + BHacer x = vi-1

Class4crypt c4c2.4 - © jorgeramio 2020 Lección 2.4 - página 13

Calculemos ahora:inv (4, 31) inv (9, 32)

Page 14: Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

Calculando inversos con el AEE (1/2)

Class4crypt c4c2.4 - © jorgeramio 2020 Lección 2.4 - página 14

• inv (4, 31)

i yi gi ui vi

0 -- 31 1 01 -- 4 0 12 7 3 1 -73 1 1 -1 84 3 0 4 -31

• inv (4, 31) = 8• 4*8 mod 31 = 32 mod 31 = 1• Si número de pasos = par, se obtiene (a, -n)

i yi gi ui vi

0 - 31 1 0

1 - 4 0 1

2 7 3 1 -7

3 1 1 -1 8

4 3 0 4 -31

Page 15: Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

Calculando inversos con el AEE (2/2)

Class4crypt c4c2.4 - © jorgeramio 2020 Lección 2.4 - página 15

• inv (9, 32)

i yi gi ui vi

0 -- 32 1 01 -- 9 0 12 3 5 1 -33 1 4 -1 44 1 1 2 -75 4 0 -9 32

• inv (9, 32) = -7 = -7 + 32 mod 32 = 25• 25*9 mod 32 = 225 mod 32 = 1• Si número de pasos = impar, se obtiene (-a, n)

i yi gi ui vi

0 - 32 1 0

1 - 9 0 1

2 3 5 1 -3

3 1 4 -1 4

4 1 1 2 -7

5 4 0 -9 32

Page 16: Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

Cálculo de inversos online con el AEE

Class4crypt c4c2.4 - © jorgeramio 2020 Lección 2.4 - página 16

https://dsri.github.io/modinverse/

Con el AEE normalmente el resultado converge muy rápido hacia la solución

inv (127, 7.690) = 4.7234.723*127 = 599.821599.821 mod 7.690 = 1

Cuidado: n = resto y p = módulo

Page 17: Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

Cálculo de inversos con el AEE y SAMCript

Class4crypt c4c2.4 - © jorgeramio 2020 Lección 2.4 - página 17

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

Page 18: Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

Mucho cuidado con páginas Web (errores)

Class4crypt c4c2.4 - © jorgeramio 2020 Lección 2.4 - página 18

NUM 1: 2346527345000000056878; NUM 2: 89188191800000008911179 (ver URL en lectura extra)

FALSO

FALSO

correcto correcto

Page 19: Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

Refuerzo: píldora formativa Thoth nº 25

Class4crypt c4c2.4 - © jorgeramio 2020 Lección 2.4 - página 19

https://www.youtube.com/watch?v=D289EF58Yrw

Page 20: Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

Conclusiones de la lección 2.4

• La operación realizada con el algoritmo de Euclides para encontrar el máximo común divisor entre dos números a y n nos permitirá encontrar el inverso del resto a en el módulo n, siempre y cuando este inverso exista

• Ordenando por restos los resultados parciales del algoritmo de Euclides, y haciendo un recorrido inverso del mismo desde el valor 1 encontrado antes de concluir, podemos encontrar el inverso del resto a en el módulo n

• Este procedimiento se conoce como algoritmo extendido de Euclides AEE, y nos permite encontrar el inverso de un resto a dentro de un módulo n de una forma muy rápida y eficiente

• El número de pasos que realiza el algoritmo extendido de Euclides hasta encontrar inv (a, n), independiente de los valores del resto a y del módulo n, por lo general está por debajo de la docena

Class4crypt c4c2.4 - © jorgeramio 2020 Lección 2.4 - página 20

Page 21: Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

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.4 - © jorgeramio 2020 Lección 2.4 - página 21

Page 22: Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

Lectura extra recomendada

• Guion de la píldora formativa Thoth nº 24 ¿Por qué usamos el algoritmo de Euclides para calcular inversos? Jorge Ramió, 2015

• http://www.criptored.upm.es/thoth/material/texto/pildora024.pdf

• Guion de la píldora formativa Thoth nº 25 ¿Cómo calculamos inversos con el algoritmo extendido de Euclides? Jorge Ramió, 2015

• http://www.criptored.upm.es/thoth/material/texto/pildora025.pdf

• Algoritmo de Euclides, Wikipedia

• https://es.wikipedia.org/wiki/Algoritmo_de_Euclides

• Mucho cuidado con páginas Web que entregan resultados falsos, como en el ejemplo mostrado en diapositiva 19

• http://mimosa.pntic.mec.es/jgomez53/javas/euclidesext.htm

Class4crypt c4c2.4 - © jorgeramio 2020 Lección 2.4 - página 22

Fin de la lección

Page 23: Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

Otras videoclases del proyecto Class4crypt

• https://www.youtube.com/user/jorgeramio

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

Class4crypt c4c2.4 - © jorgeramio 2020 Lección 2.4 - página 23

Page 24: Class4crypt Aula Virtual de Criptografía...Módulo 2. Matemáticas discretas en la criptografía Lección 2.4. Cálculo de inversos con el algoritmo extendido de Euclides 1. Recordando

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.4 - © jorgeramio 2020 Lección 2.4 - página 24