class4crypt aula virtual de criptografía · 2020. 11. 3. · •encontrar x = log mod p, en donde...
TRANSCRIPT
Class4crypt© jorgeramio 2020
Class4cryptAula virtual de criptografía aplicada
Class4crypt c4c3.3 - © jorgeramio 2020
Profesor Dr. Jorge Ramió A.
Clase c4c3.3El problema del
logaritmo discretoMadrid, martes 3 de noviembre de 2020
Temario de las clases Class4crypt
Class4crypt c4c3.3 - © jorgeramio 2020 Lección 3.3 - página 3
• 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
• Módulo 6: Algoritmos de criptografía clásica
• Módulo 7: Funciones hash en la criptografía
• Módulo 8: Criptografía simétrica en bloque
• Módulo 9: Criptografía simétrica en flujo
• Módulo 10: Criptografía asimétrica
Clases publicadas en Class4crypt (1/2)
Class4crypt c4c3.3 - © jorgeramio 2020 Lección 3.3 - página 4
1. Presentación de Class4crypt
2. Ciberseguridad y criptografía
3. Algoritmo RSA
4. Operaciones modulares y conjunto de restos
5. Percepción de la inseguridad según las décadas
6. Criptografía asimétrica y la analogía de los candados
7. Protocolo de intercambio de clave de Diffie y Hellman
8. Ataque man in the middle al intercambio de clave de
Diffie y Hellman
9. Cifrado por sustitución polialfabética: algoritmo de
Vigenère
10. Criptoanálisis al cifrado de Vigenère por el método
Kasiski
11. El homomorfismo de los enteros en la criptografía
12. Inverso aditivo, inverso xor e inverso multiplicativo
13. Cálculo de inversos con el algoritmo extendido de
Euclides
14. Algoritmo de exponenciación modular rápida
15. Generación de claves RSA y estándar PKCS#1
16. Cifrado y descifrado con RSA parte 1
17. Cifrado y descifrado con RSA parte 2
Clases publicadas en Class4crypt (2/2)
Class4crypt c4c3.3 - © jorgeramio 2020 Lección 3.3 - página 5
18. Introducción a la criptografía moderna
19. Comparación entre cifra simétrica y cifra asimétrica
20. Fundamentos de la cifra simétrica en flujo
21. Registros de desplazamiento realimentados lineales
y no lineales
22. Aleatoriedad en registros LFSR con polinomio
primitivo
23. Fundamentos de la cifra simétrica en bloque
24. Algoritmo DES: redes de Feistel y cajas S
25. Algoritmo DES: expansión de clave, cifra y rellenos
26. ECB y CBC, modos de cifra con confidencialidad
27. CFB, OFB y CTR, modos de cifra con confidencialidad
28. Ataques al DES, DES Challenge y 3DES
29. Clasificación de los sistemas de cifra clásica
30. Vulnerabilidades de la información y amenazas
31. Seguridad informática vs seguridad de información
32. Tríada confidencialidad, integridad y disponibilidad
33. Raíces primitivas en un primo p
34. Fundamentos de complejidad algorítmica
35. El problema de la mochila
36. El problema del logaritmo discreto
Estadísticas del canal Class4crypt
Class4crypt c4c3.3 - © jorgeramio 2020 Lección 3.3 - página 6
Class4crypt c4c3.3 - © jorgeramio 2020 Lección 3.3 - página 7
¡COMENZAMOS!
Módulo 3. Complejidad algorítmica en la criptografía
Lección 3.3. El problema del logaritmo discreto
1. Enunciado del problema del logaritmo discreto
2. Ejemplos y resolución de operaciones de exponenciación modular
3. Ejemplos y resolución de operaciones de logaritmo discreto
4. Usos en la criptografía: intercambio de clave de Diffie y Hellman, cifra y firma de Elgamal, algoritmo de firma digital DSA
Class4crypt c4c3.3
Class4crypt c4c3.3 - © jorgeramio 2020 Lección 3.3 - página 8
Potencia modular y logaritmo discreto
Lección 3.3 - página 9Class4crypt c4c3.3 - © jorgeramio 2020
• Dados los enteros , x y un cuerpo p, resolver la operación • = x mod p (Potencia o exponenciación modular)
• Es un problema polinomial de baja complejidad algorítmica, incluso con números , x y p grandes
• No obstante, conocidos los números , y el primo p, encontrar ahora un entero x de forma que • x = log mod p (Problema del Logaritmo Discreto PLD)
• Se convierte en un problema polinomial no determinista NP, que es computacionalmente intratable si p es muy grande y x no es un número demasiado pequeño de forma que pueda encontrarse ese valor por fuerza bruta con poco esfuerzo
Exponenciación modular
Lección 3.3 - página 10Class4crypt c4c3.3 - © jorgeramio 2020
• Algunos cálculos con números muy pequeños pueden hacerse mentalmente
• 34 mod 50 = 81 mod 50 = 31; 53 mod 120 = 125 mod 120 = 5
• Con números más grandes, usando calculadoras
• Ejercicios prácticos con Calc Windows
• 4 dígitos4 dígitos mod 6 dígitos: 9.7159.041 mod 587.653 = 429.145
• ¿Podemos resolver con esta calculadora 12.34512.345? (son 167.789 bits)
• Y con números muy grandes, usando el software adecuado• Ejercicios prácticos con SAMCript (no modular)• 12.34512.345 = 28.678.652.250.036 …. 291.259.765.625• Un número de 50.510 dígitos (167.789 bits… 47 páginas en Word)• ¿Qué sucedería si aumentamos la base? ¿Y si aumentamos el exponente?
Exponenciación con SAMCript
Lección 3.3 - página 11Class4crypt c4c3.3 - © jorgeramio 2020
• Exponenciación no modular• 12.34512.345 = 50.510 dígitos (2 segundos)• Doblando cantidad de dígitos en la base de 5 a 10:• 1.234.567.89012.345 = 112.235 dígitos (6 segundos)• Aumentando solamente un dígito el exponente:• 12.345123.456 = 505.120 dígitos (118 segundos)
• Exponenciación modular• 1 mil dígitos 1 mil dígitos mod 1 mil dígitos t < 1 segundo• 2 mil dígitos 2 mil dígitos mod 2 mil dígitos t = 1 segundo• 4 mil dígitos 4 mil dígitos mod 4 mil dígitos t = 2,5 segundos• 8 mil dígitos 8 mil dígitos mod 8 mil dígitos t = 20 segundos• Aumentamos muchísimo la base y el exponente: la complejidad es baja
¿Por qué pasa esto?
Logaritmo discreto con fuerza bruta
Lección 3.3 - página 12
• Encontrar x = log mod p, en donde , y p son conocidos
• Si el valor de x fuese muy pequeño, se podría atacar por fuerza bruta buscando todos los valores de x que hagan x mod p =
• Por ejemplo si p = 1.999, = 33 y se sabe que = 1.343• 332 mod 1.999 = 1.089; 333 mod 1.999 = 1.954; 334 mod 1.999 = 514;
• continuando… 3346 mod 1.999 = 283; 3347 mod 1.999 = 1.343 (x = 47)
• Como = 33 es una raíz primitiva de p = 1.999, la solución es única
• Efectivamente, log33 1.343 mod 1.999 = 47 (p.ej. con SAMCript)
• Si el exponente x es un número grande, este ataque no es viable
Class4crypt c4c3.3 - © jorgeramio 2020
Logaritmo discreto con raíz primitiva
Lección 3.3 - página 13
• Como en el cuerpo p = 13 el resto 2 es una raíz primitiva• 20 mod 13 = 1 21 mod 13 = 2 22 mod 13 = 4
• 23 mod 13 = 8 24 mod 13 = 3 25 mod 13 = 6
• 26 mod 13 = 12 27 mod 13 = 11 28 mod 13 = 9
• 29 mod 13 = 5 210 mod 13 = 10 211 mod 13 = 7
• Entonces• log2 1 mod 13 = 0 log2 2 mod 13 = 1 log2 3 mod 13 = 4
• log2 4 mod 13 = 2 log2 5 mod 13 = 9 log2 6 mod 13 = 5
• log2 7 mod 13 = 11 log2 8 mod 13 = 3 log2 9 mod 13 = 8
• log2 10 mod 13 = 10 log2 11 mod 13 = 7 log2 12 mod 13 = 6
Class4crypt c4c3.3 - © jorgeramio 2020
Logaritmo discreto con no raíz primitiva
Lección 3.3 - página 14
• Como en el cuerpo p = 13 el resto 3 no es una raíz primitiva• 30 mod 13 = 1 31 mod 13 = 3 32 mod 13 = 9
• 33 mod 13 = 1 34 mod 13 = 3 35 mod 13 = 9
• 36 mod 13 = 1 37 mod 13 = 3 38 mod 13 = 9
• 39 mod 13 = 1 310 mod 13 = 3 311 mod 13 = 9
• Entonces• log3 1 mod 13 = 0 log3 2 mod 13 = NE log3 3 mod 13 = 1
• log3 4 mod 13 = NE log3 5 mod 13 = NE log3 6 mod 13 = NE
• log3 7 mod 13 = NE log3 8 mod 13 = NE log3 9 mod 13 = 2
• log3 10 mod 13 = NE log3 11 mod 13 = NE log3 12 mod 13 = NE
Class4crypt c4c3.3 - © jorgeramio 2020
Solución: exp = 2 + 3k
Logaritmo discreto con SAMCript
Lección 3.3 - página 15Class4crypt c4c3.3 - © jorgeramio 2020
• Sea p un primo de 40 a 50 bits, una raíz primitiva, x = 125• 40 bits x = log2 455.724.407.932 mod 729.731.628.413 (4,3 seg)• 42 bits x = log3 1.568.712.172.137 mod 2.266.333.380.079 (6,7 seg)• 44 bits x = log3 1.400.611.805.375 mod 17.568.365.469.881 (10,6 seg)• 46 bits x = log3 31.408.415.753.007 mod 49.604.255.233.937 (83 seg)• 48 bits x = log2 68.719.082.765.791 mod 268.885.439.840.939 (140 seg)• 50 bits x = log5 312.028.532.499.463 mod 663.206.602.279.213 (167 seg)• 50 bits x = log7 161.390.513.288.025 mod 967.081.312.992.721 (33 seg)• 50 bits x = log14 801.969.266.079.988 mod 967.081.312.992.721 (54 seg)• 50 bits x = log37 739.873.271.748.987 mod 967.081.312.992.721 (166 seg)• 50 bits x = log38 434.320.563.871.606 mod 967.081.312.992.721 (68 seg)• Observa lo que sucede con 50 bits y cambiando la base para el mismo primo
Ejercicios del logaritmo discreto en CLCript
Lección 3.3 - página 16Class4crypt c4c3.3 - © jorgeramio 2020
• Comportamiento típico del tiempo de ejecución versus el tamaño del primo en el PLD
• No obstante, como se ha visto en la diapositiva anterior, pueden darse casos en que aumentando pocos bits el tamaño del módulo, el tiempo disminuya mucho, o bien aumente tanto que haga imposible su cálculo
• Se recomienda leer el apartado del logaritmo discreto en CLCript09: Matemáticas discretas en criptografía con SAMCript, que encontrarás en la bibliografía
Eje no lineal
Eje
lin
eal
PLD con software Alpertron (hexadecimal)
Lección 3.3 - página 17Class4crypt c4c3.3 - © jorgeramio 2020
• Primos de 25 a 40 dígitos, la raíz más pequeña y x = 0x7D1 (2.00110)• 25 x = Log13 57D92D85C2CD760A90C2E mod 5D50F43FBD07357BC53D1 (0 seg)• 26 x = Log6 2D8D65AACFCA213AADF6BA mod 2DEDDC642E83B2BE8A61C5 (0 seg)• 27 x = Log2 21A9E9D35465971F59D0F51 mod 2D5FBA7E894AEC3A2DDA045 (> 500 seg)• 28 x = Log6 16038264D13A580D45ECD1F9 mod 1CB4B7DDDDAB6FD5D1927259 (1 seg)• 29 x = Log2 7BBE39E5D82FBF348112B118 mod C8CA0B64D0B449EE2FEB6A0D (> 500 seg)• 30 x = LogD 204501199AA9295019893E8B0 mod 24D24C653651D39D24D7C89EB (12 seg)• 31 x = LogA 6207D138FCC8BCD6608A1CB75F mod 6B8976BDB8832EA914F6F06A7B (4 seg)• 32 x = Log5 25C4D0C2A58B716030A1F6BCE40 mod 375CE61F621C94A761AB1760C31 (0 seg)• 33 x = LogB DA66B4C88F2CC465F670CEE9165 mod F0787C1FF0F0F47C1F00787C1E1 (1 seg)• 34 x = Log5 6A2344989CCACCD729861C95BDB8 mod F5A6B315159AFDD33C14321357C9 (> 500 seg)• 35 x = Log3 2EDF9FAF9601C9F0DA2D2137341D5 mod C099EC8C775710571F08D04D8F149 (> 500 seg)• 36 x = Log5 45C62D2BE7A0DCCA88EBCAC668DBEA mod 5EEC038059ACAEB9A2E967723675DF (88 seg)• 37 x = Log2 177A0FC2D7EE4DBE4D6DACC6B5E58AA mod 49FCA8F44D33D81723F9FEE569FC1E5 (> 500 seg)• 38 x = Log2 7FEB160425F215CC2B5CD84FAA80FF mod 14BFF2802A7EC7C3DB9927A90EF8E165 (> 500 seg)• 39 x = Log2 ABC8168D2DB73F228B12A92B638A508 mod AB6601FAAE93909308F2D729565B64DB (1 seg)• 40 x = Log2 2367179E9D4C2C1CB7AB49476560ED743 mod 2F5E7AD8A82A3B015A24196C984E9FA55 (> 500 seg)
Algoritmos para el PLD y su complejidad
Lección 3.3 - página 18Class4crypt c4c3.3 - © jorgeramio 2020
• No se conoce un algoritmo eficiente que solucione el PLD• Algoritmos para afrontar el PLD, por su nombre en inglés
• Trial multiplication (fuerza bruta, ineficiente para números grandes)• Baby-step giant-step• Function field sieve• Index calculus algorithm• Pohlig-Hellman algorithm• Pollard’s rho algorithm• General number field sieve GNFS
Hoy GNFS es el más eficiente, con una complejidad igual a
Y otros más: ver documento Advanced Cryptology de la Universidad de Oxford que se incluye en la bibliografía
Usos del PLD en la criptografía
• Intercambio de claves de Diffie y Hellman
• El usuario A calcula a mod p = A y el usuario B calcula b mod p = B. Son públicos p, , A y B, pero a y b son secretos. Para romper el algoritmo, habrá que resolver el PLD para a y para b con números grandes
• Cifra y firma de Elgamal
• La clave pública se crea utilizando un valor secreto o privado x, de forma que = x mod p. Para romper el algoritmo, habrá que resolver el PLD para x con números grandes
• Firma DSA Digital Signature Algorithm
• Es una variante de la firma de Elgamal con dos primos, p y q. Para romper el algoritmo, habrá que resolver el PLD con números grandes
Class4crypt c4c3.3 - © jorgeramio 2020 Lección 3.3 - página 19
Conclusiones de la lección 3.3
• La exponenciación modular = x mod p es una operación con complejidad del tipo P (polinomial), rápida y sencilla
• El problema del logaritmo discreto x = log mod p es la operación inversa a la anterior, con complejidad NP (polinomial no determinista). Si los números son grandes, se convierte en un problema de muy difícil solución
• El comportamiento típico del tiempo de cómputo versus el tamaño del módulo p en bits del problema del logaritmo discreto es de tipo exponencial
• Si bien no es siempre de crecimiento continuo, ya que en función del primo p e incluso de la base , los valores pueden ser muy dispares, al alza o a la baja
• El problema del logaritmo discreto se usa en criptografía moderna de clave pública (DH, Elgamal, DSA) para aportar fortaleza a los algoritmos
Class4crypt c4c3.3 - © jorgeramio 2020 Lección 3.3 - página 20
Un proyecto sin ánimo de lucro
• Class4crypt es un proyecto sin ánimo de lucro
• Si te ha gustado el vídeo, has aprendido algo nuevo o bien has podido reforzar algún conocimiento que ya tenías
• Entonces, por favor, pon un “Me gusta” al vídeo
• Si deseas expresar alguna opinión sobre el contenido de esta clase o tienes alguna duda, hazlo por favor en YouTube. Todos los comentarios serán muy bien recibidos y las dudas que plantees serán contestadas a la mayor brevedad posible
¡Muchas gracias!
Class4crypt c4c3.3 - © jorgeramio 2020 Lección 3.3 - página 21
Lectura recomendada (1/2)
• Discrete logarithm, Wikipedia
• https://en.wikipedia.org/wiki/Discrete_logarithm
• The computational complexity of discrete log, Cryptography
• https://crypto.stackexchange.com/questions/48767/the-computational-complexity-of-discrete-log
• On the complexity of the discrete logarithm and Diffie–Hellman problems, Blake & Garefalakis, Elsevier, 2004
• https://www.sciencedirect.com/science/article/pii/S0885064X04000056
• Mathematics of Public Key Cryptography, Part III: Exponentiation, Factoring and Discrete Logarithms, Steven Galbraith, Cambridge University Press, 2012
• https://www.math.auckland.ac.nz/~sgal018/crypto-book/crypto-book.html
Class4crypt c4c3.3 - © jorgeramio 2020 Lección 3.3 - página 22
Lectura recomendada
• SAMCript: Software de Aritmética Modular para Criptografía, María Nieto Díaz, dirección Jorge Ramió, 2018
• http://www.criptored.upm.es/software/sw_m001t.htm
• Big primes Generator
• https://bigprimes.org/
• Matemáticas discretas en criptografía con SAMCript, CLCript, Jorge Ramió, 2019
• http://www.criptored.upm.es/descarga/CLCript_entrega_09_Matematicas_Discretas_Criptografia_SAMCript.pdf
• Calculadora de logaritmos discretos, Dario Alpern, 2020
• https://www.alpertron.com.ar/LOGDI.HTM
• Advanced Cryptology (2018-2019), Bonus slides 2 DLP and factoring algorithms, Christophe Petit, University of Oxford
• https://courses.maths.ox.ac.uk/node/38559/materials
Class4crypt c4c3.3 - © jorgeramio 2020 Lección 3.3 - página 23
Fin de la clase 3.3
Más lecciones en el canal Class4crypt
• https://www.youtube.com/user/jorgeramio
Class4crypt c4c3.3 - © jorgeramio 2020 Lección 3.3 - página 24
Fuera webcam y dentro música
1.620 suscriptores3 noviembre 2020
Licencia y créditos
• Estas videoclases y la documentación utilizada en ellas están publicadas bajo licencia CreativeCommons tipo CC BY-NC-ND 4.0• Reconocimiento - No Comercial - Sin Obra Derivada
• Esto 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 c4c3.3 - © jorgeramio 2020 Lección 3.3 - página 25
Class4crypt c4c3.3 - © jorgeramio 2020 Lección 3.3 - página 26
Próximamente una nueva videoclase de criptografía aplicada en Class4crypt
Criptosaludos