criptografía y matemáticas en la ingeniería: cómo hacer ... · criptografía y matemáticas en...

55
Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer webinar de CriptoCert Ponente: Dr. Jorge Ramió [email protected] © 2019 CriptoCert (www.criptocert.com)

Upload: others

Post on 14-Jan-2020

18 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Criptografía y matemáticas

en la ingeniería.

Cómo hacer + simple lo que

parece complicado.

Bienvenidos al primer webinar

de CriptoCert

Ponente: Dr. Jorge Ramió

[email protected] © 2019 CriptoCert (www.criptocert.com)

Page 2: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

¿Te gusta la criptografía pero tienes miedo a estudiarla porque crees que al tener una formación básica en matemáticas ello te impedirá aprender sus principios y saber cómo funcionan algoritmos criptográficos populares como AES, DH y RSA? No te preocupes, no es tan difícil. Sí se puede hacer. Esto es así porque el nivel de matemáticas requerido para que un ingeniero o técnico entienda cómo funciona la criptografía actual (con algunas excepciones como ECC), sepa cómo utilizarla y conozca además las fortalezas y debilidades de sus algoritmos, no es tan exigente como para aquellos criptógrafos que deben diseñar algoritmos. En este segundo caso, deberán tener amplios conocimientos en otras ramas de las matemáticas, de la informática y de las comunicaciones como, por ejemplo, en complejidad algorítmica y en teoría de la información.

Preámbulo…

© 2019 CriptoCert (www.criptocert.com)

Page 3: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Criptografía y matemáticas en la ingeniería: cómo hacer + simple lo

que parece complicado

Dr. Jorge Ramió Aguirre CriptoCert - Criptored

24 de octubre y 6 de noviembre de 2019 Plataforma Webex (España)

http://www.criptored.com https://www.criptocert.com

© 2019 CriptoCert (www.criptocert.com)

En fecha próxima se publicarán en YouTube los vídeos de cada uno de los 12 apartados vistos en el webinar, de forma independiente.

Page 4: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

¿ Qué es CriptoCert Certified Crypto Analyst?

• CriptoCert Certified Crypto Analyst es la primera certificación técnica profesional de criptografía y protección de la información en español.

• Esta certificación nace con el objetivo de capacitar y acreditar de manera rigurosa a profesionales mediante contenidos técnicos extensos, detallados y actualizados.

• La certificación incluye: documentación + examen online (supervisado). https://www.criptocert.com/CriptoCert_Analyst.html

4/55

© 2019 CriptoCert (www.criptocert.com)

Page 5: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Procedencia de la documentación de este webinar

• Parte del módulo 2 de la documentación que se entrega a los candidatos a la certificación CriptoCert Certified Crypto Analyst.

• Te animamos a demostrar que sabes cómo funciona la criptografía actual y cómo aplicarla en tu trabajo diario.

5/55

https://www.criptocert.com/PDF/CriptoCert_Analyst_Temario.pdf

© 2019 CriptoCert (www.criptocert.com)

Page 6: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Nuestro particular Yellow Brick Road

1. Criptografía y matemáticas: una pareja de hecho 2. Operaciones modulares, CCR y CRR 3. Función de Euler 4. Homomorfismo de los enteros 5. Inversos en criptografía 6. Raíces primitivas o generadores 7. Algoritmo Extendido de Euclides AEE 8. Exponenciación modular 9. Algoritmo de Exponenciación Rápida AER 10. Cálculos en campos de Galois 11. Problema de la factorización entera PFE 12. Problema del Logaritmo Discreto PLD

6/55

© 2019 CriptoCert (www.criptocert.com)

Alice & Bob?

Page 7: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

La criptografía y las matemáticas: una pareja de hecho

7/55

• “I will give you an example of interesting kinds of things that might be taught. Yes, you have to teach cryptography because you need to know it, but a lot of times courses get too excited about the very theoretical kinds of things, and all of the maths and all of the proofs. And I don’t think that’s the really interesting part. I don’t think the world needs more cryptographers. They need more people that understand how to use cryptography”. https://www.youtube.com/watch?v=zDyQ5TleDYg#t=7m

• Frase pronunciada por la Dra. Radia Perlman en la conferencia inaugural “Adventures in Network Security” en el congreso Día Internacional de la Seguridad de la Información DISI. Madrid, 1 de diciembre de 2008 (vídeo en YouTube).

• Con la que la concuerdan al 100% los fundadores de CriptoCert. © 2019 CriptoCert (www.criptocert.com)

Page 8: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Cuerpos, grupos, anillos, campos, módulos… (*)

• Conceptos con gran calado matemático pero no fundamentales para un ingeniero. • Por ello, en general llamaremos siempre módulo al espacio de números enteros

dentro del cual se realiza una operación de cifra, si bien hay diferencias importantes desde el punto de vista matemático de lo que es un cuerpo, un grupo o un anillo.

• Para quien desee profundizar en este tema, se recomienda: https://www.exabyteinformatica.com/uoc/Informatica/Criptografia_avanzada/Criptografia_avanzada_(Modulo_1).pdf

• Cuerpos finitos. Llorenç Huguet Rotger, Josep Rifà Coma, Juan Gabriel Tena Ayuso, Universitat Oberta de Catalunya.

• Grupos, anillos y cuerpos. Manuel Palacios, Departamento de Matemática Aplicada, Centro Politécnico Superior, Universidad de Zaragoza. http://pcmap.unizar.es/~mpala/A_L_lecci/3grupos.pdf

8/55

(*) Nota del autor. Mis disculpas por llamar siempre cuerpo a ese espacio de cifra, cuando no lo es. © 2019 CriptoCert (www.criptocert.com)

Page 9: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Operaciones modulares

9/55

• Números enteros. • ¿Por qué se usan en la criptografía? • Reducción a módulo, suma, resta, producto, potencia o

exponenciación, multiplicación por inverso (“división no permitida”) y xor.

• Conceptos de congruencia (notación matemáticamente correcta)

a - b = k ∗ n a ≡ n b

a ≡ b mod n

Pregunta: ¿19 ≡ 4 mod 5? ¿Es 19 congruente con 4 módulo 5? Sí, porque 19 - 4 = 15 = k*5 (con k = 3)

19 mod 5 = 4

Usaremos esta otra notación:

© 2019 CriptoCert (www.criptocert.com)

MOOC Crypt4you: Introducción a la seguridad informática y criptografía clásica Tema III: Fundamentos básicos de matemáticas discretas http://www.criptored.upm.es/crypt4you/temas/criptografiaclasica/leccion5.html

Page 10: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Recomendado

10/55

© 2019 CriptoCert (www.criptocert.com)

https://www.youtube.com/watch?v=y98MAZM2sqY Hay una errata obvia en 1:33 (100 mod 77 = 23)

Page 11: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Números primos y números compuestos

• Las operaciones modulares en criptografía se realizarán dentro de un módulo de cifra, cuyo número puede ser primo o compuesto.

• Un número es primo si tiene solo dos divisores, su mismo valor y 1. Así por ejemplo, el 19 es un número primo porque sólo es divisible por 19 y por 1. Si dividimos 19 por los demás números menores que él (2, 3, 4,… 16, 17, 18), nunca obtendremos un número entero. En este caso se tiene: 19/2 = 9,50; 19/3 = 6,33; 19/4 = 4,75… 19/16 = 1,18; 19/17 = 1,11; 19/18 = 1,05.

• Sin embargo, hablamos de un número compuesto si éste está siempre representado por una multiplicación donde intervienen dos o más números primos.

273 es compuesto porque es igual a 3*7*13 2.200 es compuesto porque es igual a 23*52*11 = 8*25*11 • Los números primos tendrán una gran importancia en la criptografía.

11/55

© 2019 CriptoCert (www.criptocert.com)

Page 12: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

¿Cuántos primos hay ahí afuera?

12/55

• Por el teorema de los números primos, se tiene que la probabilidad de encontrar números primos a medida que éstos se hacen más grandes es menor. En el intervalo [2, x] habrá π(x) ≈ (x/ln x) números primos.

• Primos entre 2 y 25 = 32 x/ln x = 32/3,46 = 9,25 Probabilidad x sea primo: 28,90 % • Primos entre 2 y 26 = 64 x/ln x = 64/4,16 = 15,38 Probabilidad x sea primo: 24,00 % • Primos entre 2 y 27 = 128 x/ln x = 128/4,85 = 26,40 Probabilidad x sea primo: 20,62 % • Primos entre 2 y 28 = 256 x/ln x = 256/5,54 = 46,21 Probabilidad x sea primo: 18,05 % • Primos entre 2 y 29 = 512 x/ln x = 512/6,23 = 82,18 Probabilidad x sea primo: 16,05 % • Primos entre 2 y 210 = 1.024 x/ln x = 1.024/6,93 = 147,76 Probabilidad x sea primo: 14,43 % • Primos entre 2 y 211 = 2.048 x/ln x = 2.048/7,62 = 268,77 Probabilidad x sea primo: 13,12 % • Primos entre 2 y 212 = 4.096 x/ln x = 4.096/8,32 = 492,31 Probabilidad x sea primo: 12,02 % … etc.

https://en.wikipedia.org/wiki/Category:Classes_of_prime_numbers

¿Cuantos primos hay de 1.024 bits?

Los primos seguros (safe primes) serán interesantes en ciertos algoritmos de cifra como RSA. Un número primo p se dice que es seguro si p = 2∗p’ + 1 (siendo p’ también primo). Así, si p’ = 11, luego p = 2∗11 + 1 = 23, es un primo seguro.

Homer, “casi, casi”... 3.987 + 2 = 3.989 es primo. Y el resultado de 3.98712 – 2 = 16.134.474.609.751.291.283.496.491.970.515.151.715.346.479 = p*q = 103.515.353.519.882.399.087 * 155.865.521.984.159.680.926.017

© 2019 CriptoCert (www.criptocert.com)

¿Será primo?

Page 13: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Conjunto completo de restos CCR

• Para cualquier entero positivo n, el conjunto completo de restos o CCR será: CCR = {0, 1, 2, ... n-2, n-1}, es decir: ∀ a ∈ Z ∃ ! ri ∈ CCR / a ≡ ri mod n CCR (11) = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} CCR (6) = {0, 1, 2, 3, 4, 5} = {12, -5, 20, 9, 16, 35} • El segundo conjunto de restos {12, -5, 20, 9, 16, 35} en n = 6 es equivalente al primer conjunto de

restos {0, 1, 2, 3, 4, 5} porque: 12 es equivalente a 0 porque 12 mod 6 = 0 -5 es equivalente a 1 porque -5 mod 6 = 1 20 es equivalente a 2 porque 20 mod 6 = 2, etc.

• Normalmente se trabajará en la zona canónica: 0, 1, 2, … n-3, n-2, n-1. Es decir, con restos positivos y siempre menores que n.

13/55

© 2019 CriptoCert (www.criptocert.com)

Page 14: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Conjunto reducido de restos CRR

• El conjunto reducido de restos de n, conocido como CRR, es el subconjunto {0, 1, ... ni, ... n-1} de restos, primos relativos con el grupo n. Como el cero no es una solución, no se considera. Entonces:

CRR = {1, ..., ni, ... n-1}. Además, se cumplirá que mcd (ni, n) = 1.

• Si n es primo, obviamente todos los restos serán primos relativos con él y el CCR contendrá a todos los números excepto el 0; es decir, n-1 números.

CRR (5) = {1, 2, 3, 4} CRR (11) = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

• Si n es un número compuesto, el CRR contendrá a los restos de n que no tengan factores en común con los factores primos de dicho número.

CRR (8) = {1, 3, 5, 7}. Como 8 = 23, quitamos los números divisibles por 2 (2, 4, 6).

CRR (15) = {1, 2, 4, 7, 8, 11, 13, 14}.

Como 15 = 3x5, quitamos los números divisibles por 3 y 5, es decir: 3, 5, 6, 9, 10 y 12.

14/55

© 2019 CriptoCert (www.criptocert.com)

Page 15: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Importancia del CRR en criptografía

• El conocimiento del CRR permitirá aplicar un algoritmo para calcular el inverso multiplicativo de un resto a dentro de un grupo n a través de la función φ(n), denominada Función de Euler o Indicador de Euler.

• El inverso multiplicativo (que se definirá y estudiará en una próxima transparencia) nos permitirá crear claves que sean inversas entre sí. Esto quiere decir que la operación de cifra que se haga con una clave, se puede deshacer (descifrar) con la otra clave, inversa de la primera.

• Será importante en muchos sistemas de cifra simétricos. Una excepción muy particular es el algoritmo DES, al ser un caso especial de cifra no modular y sin ninguna ecuación matemática en su funcionamiento.

• La Función de Euler será vital en el algoritmo RSA, uno de los sistemas de cifra asimétricos más conocidos y populares, ya que los cálculos de las claves pública y privada se harán dentro de ese grupo φ(n).

15/55

© 2019 CriptoCert (www.criptocert.com)

Page 16: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Función de Euler φ(n)

• Sabemos que el Indicador de Euler o Función de Euler φ(n) nos entregará la cantidad de restos que contiene el CRR.

• Como podremos representar cualquier número n de las 4 formas que se indican a continuación, en cada una de ellas habrá una manera de calcular la Función de Euler φ(n).

1) Si n es un número primo p. 2) Si n se representa como n = pk con p primo y k un entero. 3) Si n es el producto n = p∗q con p y q primos. 4) Si n es un número cualquiera, con la forma genérica: t n = p1

e1 ∗ p2e2 ∗ ... ∗ pt

et = Π piei

i=1

16/55

© 2019 CriptoCert (www.criptocert.com)

Page 17: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Función de Euler φ(n) cuando n = p

• Si n es primo, φ(n) será igual al CCR menos el cero (0):

φ(n) = n - 1

• Si n es primo, entonces CRR = CCR - 1 ya que todos los restos de n, excepto el cero, serán primos relativos o coprimos con p.

• Ejemplo:

CRR(7) = {1, 2, 3, 4, 5, 6}, seis elementos. Luego φ(7) = n-1 = 7-1 = 6.

φ(11) = 11-1 = 10; φ(23) = 23-1 = 22; φ(1.999) = 1.999-1 = 1.998.

• Esta expresión se usará en los sistemas de cifra y firma de ElGamal, así como en la firma DSA (Digital Signature Algorithm) y DSS (Digital Signature Standard), en donde el módulo de cifra o de firma será un primo muy grande, superior a los mil bits.

17/55

© 2019 CriptoCert (www.criptocert.com)

Page 18: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Función de Euler φ(n) cuando n = p∗q

• Si n = p∗q (con p y q primos), entonces:

φ(n) = φ(p∗q) = φ(p)∗φ(q) = (p-1)(q-1)

• De los p∗q elementos del CCR, quitaremos, todos los múltiplos de p = 1∗p, 2∗p, 3*p, 4*p, ... en general (q - 1)∗p, y todos los múltiplos de q = 1∗q, 2∗q, 3*q, 4*q, ... en general (p - 1)∗q, además del cero.

φ(p∗q) = p∗q - [(q-1) + (p-1) +1] = p∗q - q - p + 1

φ(p∗q) = (p – 1)(q – 1)

• CRR(15) = {1,2,4,7,8,11,13,14}, ocho elementos.

Porque 15 = 3x5 . Así, φ(15) = φ(3∗5) = (3-1)(5-1) = 2∗4 = 8.

• φ(143) = φ(11∗13) = (11-1)(13-1) = 10∗12 = 120.

• φ(306.997) = φ(433 ∗ 709) = (433 -1)(709 -1) = 432 ∗ 708 = 305.856.

18/55

© 2019 CriptoCert (www.criptocert.com)

Page 19: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Función de Euler φ(n) cuando n = p∗q (continuación)

• Esta expresión se usará en el sistema de cifra RSA, y será una de las operaciones más utilizadas en la criptografía actual.

• Es la base del sistema RSA, que durante muchos años ha sido un estándar. De hecho, continúa siéndolo, si bien en los últimos años ha comenzado a perder protagonismo en beneficio de los sistemas de cifra mediante curvas elípticas.

• Actualmente, los primos p y q en RSA son números de 1.024 bits, por lo que el producto n = p∗q (el grupo de cifra y de firma) será de 2.048 bits y φ(n) = (p - 1)(q - 1) también será un número de 2.048 bits, obviamente ligeramente inferior al anterior.

• Uno de sus usos más típicos podemos encontrarlo en las comunicaciones seguras en Internet mediante TLS mediante certificados digitales X.509, tanto para el intercambio de claves, como la firma digital, para así poder comprobar la autenticidad ante una Autoridad de Certificación.

19/55

© 2019 CriptoCert (www.criptocert.com)

Page 20: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Características, inversos y operaciones en enteros

• En las próximas transparencias vamos a estudiar las características de los números enteros (Z), profundizando principalmente en los siguientes apartados de interés en la criptografía:

• Sus propiedades (reflexiva, simétrica, transitiva, asociativa, conmutativa, distributiva)

• Operaciones de reducibilidad • La existencia de identidad • La existencia de inversos • El homomorfismo de los enteros • Las operaciones típicas en un módulo • El cálculo de inversos

20/55

© 2019 CriptoCert (www.criptocert.com)

Page 21: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Propiedades de las operaciones en Z (1/2)

• Propiedad reflexiva: a ≡ a mod n • Propiedad simétrica: a ≡ b mod n ⇒ b ≡ a mod n • Propiedad transitiva: Si a ≡ b mod n y b ≡ c mod n ⇒ a ≡ c mod n • Propiedad asociativa: a + (b + c) mod n ≡ (a + b) + c mod n

• Propiedad conmutativa: a + b mod n ≡ b + a mod n a ∗ b mod n ≡ b ∗ a mod n

• Propiedad distributiva: a ∗ (b + c) mod n

≡ [(a ∗ b) + (a ∗ c)] mod n

21/55

© 2019 CriptoCert (www.criptocert.com)

Page 22: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Propiedades de las operaciones en Z (2/2)

• Reducibilidad: (a + b) mod n = [(a mod n) + (b mod n)] mod n (a ∗ b) mod n = [(a mod n) ∗ (b mod n)] mod n • Existencia de identidad: a + 0 mod n = 0 + a mod n = a mod n = a a ∗ 1 mod n = 1 ∗ a mod n = a mod n = a • Existencia de inversos: - Inverso aditivo: a + (-a) mod n = 0 (este inverso siempre existirá) - Inverso multiplicativo: a ∗ (a-1) mod n = 1 (si a ≠ 0) No siempre existirá. Deberá cumplirse que mcd (a, n) = 1

22/55

© 2019 CriptoCert (www.criptocert.com)

Page 23: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Homomorfismo de los enteros

23/55

Enteros: Enteros mod n: a1, a2 (a1 mod n), (a2 mod n) op (y posterior reducción mod n) op (a1 op a2) mod n (a1 mod n) op (a2 mod n) mod n

es lo mismo que…

…esta otra Esta operación...

Esto nos permitirá trabajar con números muy grandes.

© 2019 CriptoCert (www.criptocert.com)

Page 24: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Ejemplo práctico y sencillo de homomorfismo

24/55

88 ∗ 93 mod 13

8.184 mod 13

Resultado: 7

Ahora ya no se desborda

el sistema

¿Cómo calculamos 88 mod 13 y 93 mod 13 si nuestra calculadora no tiene la opción mod? Sencillo. Dividimos el número entre 13, le restamos la parte entera y multiplicamos la parte decimal por 13: 88/13 = 6,77 – 6 = 0,77 * 13 = 10,01 = 10 (redondeo al entero).

Y en mod 13, la operación mayor será 12*12 = 144 (3 dígitos).

Pero tenemos una calculadora capaz de trabajar solamente con tres dígitos. Solución por homomorfismo: 88 * 93 mod 13 = [(88) mod 13 * (93) mod 13] mod 13 = 10 * 2 mod 13 = = 20 mod 13 = 7 Resultado: 7. Se llega a lo mismo.

Se desbordaría la capacidad de nuestro sistema

máx 3

Sorry no Mod function!

© 2019 CriptoCert (www.criptocert.com)

Page 25: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Inversos aditivo y multiplicativo en primos

25/55

(A+B) mod 5 (A∗B) mod 5

+ B 0 1 2 3 4 ∗ B 0 1 2 3 4 A 0 0 1 2 3 4 A 0 0 0 0 0 0 1 1 2 3 4 0 1 0 1 2 3 4 2 2 3 4 0 1 2 0 2 4 1 3 3 3 4 0 1 2 3 0 3 1 4 2 4 4 0 1 2 3 4 0 4 3 2 1

0+0 = 0 1∗1 = 1 Son triviales

• En la operación suma siempre existirá el inverso que entregue el valor de identidad de la adición (0) para cualquier resto.

• En la operación producto, existirá el inverso que entregue el valor de identidad de la multiplicación (1) cuando se cumple que el número y el módulo sean primos entre sí. Si el módulo es primo, lógicamente todos los restos, excepto el 0 y el 1, tienen inverso.

© 2019 CriptoCert (www.criptocert.com)

Page 26: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Recomendado

26/55

© 2019 CriptoCert (www.criptocert.com)

https://www.youtube.com/watch?v=1Jg-HVoA6-M

Page 27: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Inversos multiplicativos en números compuestos

27/55

(A∗B) mod 10 1 2 3 4 5 6 7 8 9 1 1 2 3 4 5 6 7 8 9 2 2 4 6 8 0 2 4 6 8 3 3 6 9 2 5 8 1 4 7 4 4 8 2 6 0 4 8 2 6 5 5 0 5 0 5 0 5 0 5 6 6 2 8 4 0 6 2 8 4 7 7 4 1 8 5 2 9 6 3 8 8 6 4 2 0 8 6 4 2 9 9 8 7 6 5 4 3 2 1

Para módulo 10 sólo encontramos inversos multiplicativos en los restos 3, 7 y 9, puesto que los demás restos tienen factores 2 y 5 en común con el módulo (10 = 2*5).

Para x = 3, x = 7 y x = 9 se cumple que mcd (x, 10) = 1.

inv (3, 10) = 7

inv (7, 10) = 3

inv (9, 10) = 9

© 2019 CriptoCert (www.criptocert.com)

• El inverso aditivo siempre existirá por ser el complemento al módulo. Su valor será único. • El inverso multiplicativo de x en un módulo n sólo existirá si mcd (x, n) = 1. Su valor será único.

Page 28: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Comprobación de existencia del inv (a, n)

∃ inverso a-1 en mod n ssi mcd (a, n) = 1

• Si mcd (a, n) = 1, el resultado de a∗i mod n (para i todos los restos de n) serán valores distintos dentro de n.

mcd (a, n) = 1 ⇒ ∃ x ! 0 < x < n / a ∗ x mod n = 1

• Sea: a = 4 y n = 9 Valores de i = {1, 2, 3, 4, 5, 6, 7, 8}

• Comprobando que inv (4, 9) existe y cálculo por fuerza bruta:

Como mcd (4, 9) = 1, sí existe el inverso.

4∗1 mod 9 = 4 4∗2 mod 9 = 8 4∗3 mod 9 = 3 4∗4 mod 9 = 7

4∗5 mod 9 = 2 4∗6 mod 9 = 6 4∗7 mod 9 = 1 4∗8 mod 9 = 5

• Existe una única solución inv (4, 9) = 7 ya que 4x7 = 28 mod 9 = 1.

28/55

© 2019 CriptoCert (www.criptocert.com)

Page 29: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Comprobación de no existencia de inv (a, n)

Si mcd (a, n) ≠ 1 ⇒ No ∃ x ! 0 < x < n / a ∗ x mod n = 1

• Sea: a = 3 y n = 15 Valores de i = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}

• Comprobando que inv (3, 15) no existe y cálculo por fuerza bruta:

Como mcd (3, 15) = 3, no existe el inverso.

3∗1 mod 15 = 3 3∗2 mod 15 = 6 3∗3 mod 15 = 9 3∗4 mod 15 = 12

3∗5 mod 15 = 0 3∗6 mod 15 = 3 3∗7 mod 15 = 6 3∗8 mod 15 = 9

3∗9 mod 15 = 12 3∗10 mod 15 = 0 3∗11 mod 15 = 3 3∗12 mod 15 = 6

3∗13 mod 15 = 9 3∗14 mod 15 = 12 No existe el inv (3, 15), mcd (3, 15) = 3.

29/55

© 2019 CriptoCert (www.criptocert.com)

Page 30: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Recomendado

30/55

© 2019 CriptoCert (www.criptocert.com)

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

Page 31: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Operaciones típicas en un módulo

• Reducción a módulo: 15 mod 27 = 15; 79 mod 27 = 25; -43 mod 27 = 11. • Incersos. Por ejemplo, los inversos de 23 en módulo 60 serán: 1. Inverso aditivo o inv+ (identidad suma: 0): inv+ (23, 60) = 37 Dado que 23 + 37 = 60 mod 60 = 0. 2. Inverso XOR o inv(+) (función involutiva): inv(+) (23, 60) = 23 Será siempre el mismo número original. No es obvio. Si se suma 23 xor 60 = 43 (suma bit a bit, mod 2). Entonces 43 xor 23 = 60 o bien 43 xor 60 = 23. 3. Inverso multiplicativo o simplemente inv (identidad multiplicación: 1): inv (23, 60) = 47 Porque 23*47 mod 60 = 1.081 mod 60 = 1. 1.081 mod 60 = 1.080 + 1 mod 60 = 18*60 + 1 mod 60 = 0 + 1 = 1.

31/55

© 2019 CriptoCert (www.criptocert.com)

Page 32: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

¿Por qué interesa que existan los inversos en criptografía?

• En criptografía deberá estar permitido invertir una operación para recuperar el texto en claro de un texto cifrado (también conocido como criptograma). Es lo que se conoce como operación de descifrado.

• Aunque la cifra sea una función, en lenguaje coloquial la operación de cifrado podría interpretarse como una “multiplicación” y la operación de descifrado como una “división”, si bien hablaremos en este caso de una multiplicación por el inverso. La analogía anterior sólo será válida en los números enteros Z con inverso.

• La división está prohibida en matemática discreta. Por ejemplo, si se cifra en mod 27 (mayúsculas del español) multiplicando los códigos de las letras (A=0, B=1, … Y=25, Z=26) por 4, para descifrar no se puede dividir por 4 (ej. 17/4 = 4,25 no es entero)

• Habrá que multiplicar por inv (4, 27) = 7, que en el fondo lo mismo. • Por tanto, si en una operación de cifra la función es multiplicar por el valor a dentro de un

módulo n, deberemos encontrar el inverso a-1 mod n para descifrar.

32/55

© 2019 CriptoCert (www.criptocert.com)

?

Page 33: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Inversos en mod 27 para la cifra clásica

33/55

Para el alfabeto castellano con mayúsculas (n = 27) tenemos:

inv (x, n) = a ⇔ inv (a, n) = x

inv (1, n) = 1; inv (n-1, n) = n-1

x inv (x, 27) x inv (x, 27) x inv (x, 27) 1 1 10 19 19 10 2 14 11 5 20 23 4 7 13 25 22 16 5 11 14 2 23 20 7 4 16 22 25 13 8 17 17 8 26 26

27 = 33 luego no existe inverso para x = 3, 6, 9, 12, 15, 18, 21, 24.

Inversos en sistemas de cifra clásica con alfabeto de las 27

letras mayúsculas: mod 27 © 2019 CriptoCert (www.criptocert.com)

Page 34: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Inversos en n por el teorema de Euler

• Si mcd (a, n) = 1 ⇒ aφ(n) mod n = 1 • Ahora igualamos a ∗ x mod n = 1 y aφ(n) mod n = 1 aφ(n) ∗ a-1 mod n = x mod n por lo tanto: x = aφ(n)-1 mod n • El valor x será el inverso de a en n. Observa que en el cálculo anterior se ha

realizado una operación multiplicando por a-1, que es similar a la división por a. Esto se puede hacer porque mcd (a, n) = 1 y por lo tanto hay un único valor inverso en n que lo permite.

• Ejemplo: si n = 10 y a = 3, se cumple que mcd (3, 10) = 1 y φ(10) = 4. Entonces x = aφ(n)-1 mod n = 34-1 mod 10 = 33 mod 10 = 27 mod 10 = 7. Efectivamente inv (3, 10) = 7 porque 3*7 = 21 mod 10 = 1.

34/55

© 2019 CriptoCert (www.criptocert.com)

Page 35: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Los inversos y el algoritmo de Euclides

• En las próximas transparencias vamos a ver cómo a partir del algoritmo de Euclides, que usamos ya desde el colegio para encontrar el máximo común divisor entre dos números, podemos encontrar el inverso multiplicativo, si éste existe.

• En particular, estudiaremos: • El Algoritmo Extendido de Euclides AEE. • Aplicaciones reales del AEE con software de escritorio y software online: • SAMCript: Software de Aritmética Modular para Criptografía http://www.criptored.upm.es/software/sw_m001t.htm • Modular inversion https://dsri.github.io/modinverse/

35/55

© 2019 CriptoCert (www.criptocert.com)

Page 36: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Recomendado

36/55

© 2019 CriptoCert (www.criptocert.com)

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

Page 37: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

¿Cómo calcular a-1 mod n si no se conoce φ(n)?

• Calcular ai mod n, cuando los valores de i y a son grandes, se hace tedioso pues hay que utilizar la propiedad de la reducibilidad repetidas veces, aunque haya otros métodos mucho más eficientes para hacer esos cálculos rápidamente y que veremos más adelante.

• Además, si no conocemos φ(n) o no queremos usar los teoremas de Euler o Fermat antes vistos, siempre podremos encontrar el inverso de a en n usando el Algoritmo Extendido de Euclides (AEE).

• Se trata de un método muy rápido que, independientemente de lo grandes que sean los números, converge rápidamente, normalmente en menos de una docena de iteraciones. Por ejemplo:

• inv (9, 25) = 14 se resuelve en 4 pasos. • inv (391, 98.367) = 70.945 en 10 pasos. • inv (40.205, 87.431.293.177) = 10.366.496.072 en 9 pasos. • inv (8.741, 457.878.100.112.798) = 91.407.995.045.971 en 5 pasos.

37/55

© 2019 CriptoCert (www.criptocert.com)

Page 38: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Algoritmo Extendido de Euclides (AEE)

Cálculo de x = inv (a, n) inv (9, 25) = 14 Hacer (g0, g1, u0, u1, v0, v1, i) = (n, 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+1 Si (vi-1 < 0) Hacer vi-1 = vi-1 + n Hacer x = vi-1 -11 + 25 mod 25 = 14

38/55

© 2019 CriptoCert (www.criptocert.com)

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

Page 39: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Recomendado

39/55

© 2019 CriptoCert (www.criptocert.com)

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

Page 40: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Raíces primitivas o generadores en p

• Se denomina α al resto de un primo p que, elevándolo al CRR de dicho primo (desde 1 hasta p-1), genera todo el CRR del primo, es decir, desde 1 hasta p-1.

• Recuerda que X0 mod p = 1 y X(p-1) mod p = 1. • A partir de un elemento o resto de un primo p que es raíz primitiva de dicho primo,

se puede obtener el CRR y por ello se le denomina también generador. • ¿Para que nos sirve un generador en p? La utilidad de este concepto en criptografía

lo veremos cuando se estudien los sistemas de clave pública y, en particular, el protocolo de intercambio de claves de Diffie Hellman.

• También se recurrirá a esta propiedad de los primos cuando estudiemos la firma digital según Elgamal y el estándar de firma DSA (Digital Signature Algorithm).

40/55

© 2019 CriptoCert (www.criptocert.com)

Page 41: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Buscando las raíces primitivas en p

• Existen muchos números dentro del CRR (p) que son generadores de p, pero su búsqueda no es tan sencilla. ¿Existe alguna solución?

• Sí. Conociendo la factorización de p-1 obtenemos (q1, q2, ..., qn) donde qi son los factores primos de p-1, diremos que un número g será generador en p si:

∀ qi g(p-1)/qi mod p ≠ 1

• Por ejemplo: Si p = 13, p – 1 = 12 = 22 x 3 (Entonces q1 = 2 y q2 = 3)

Si p = 181, p – 1 = 180 = 22 x 32 x 5 (q1 = 2, q2 = 3, q3 = 5)

• En cambio, si alguno de los resultados de g(p-1)/qi mod p es igual a 1, ese valor de g no será un generador o raíz primitiva.

41/55

© 2019 CriptoCert (www.criptocert.com)

Véase el tema 7 del Libro Electrónico de Criptografía: http://www.criptored.upm.es/guiateoria/gt_m001a.htm

Page 42: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

La exponenciación en la cifra asimétrica

• Una de las aplicaciones más interesantes de la matemática discreta en criptografía es la cifra asimétrica, en la que la operación básica es una exponenciación Ab mod n, donde n es un primo grande o un producto de primos grandes y b será una clave.

• Esta operación Ab mod n se utilizará en algunos sistemas criptográficos para el intercambio de claves y en la firma digital.

• No obstante, el valor de n, y también en algunos casos el valor de b, pueden llegar a ser mayores a los dos mil bits.

• ¿Cómo hacer estos cálculos de forma rápida y eficiente, sin tener que aplicar la reducibilidad descrita ya en este módulo?

• Los algoritmos de exponenciación rápida serán la solución. • Uno de ellos es el que se estudia en la siguiente transparencia, el Algoritmo de

Exponenciación Rápida AER.

42/55

© 2019 CriptoCert (www.criptocert.com)

Page 43: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Algoritmo de exponenciación rápida (AER)

Para realizar la operación x = Ab mod n, se procede como sigue: 1. Obtener la representación binaria del exponente b de k bits bi = bk-1bk-2...bi...b1b0 2. Hacer x = 1 3. Para i = k-1, k-2, ..., 0 hacer

Si (bi = 0) entonces: x = x2 mod n Si (bi = 1) entonces:

x = x2 ∗ A mod n

43/55

© 2019 CriptoCert (www.criptocert.com)

Page 44: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Ejemplo de aplicación del AER

44/55

Ejemplo: calcular 1983 mod 91 x = 1 i=6 b6=1 x = 12∗19 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 1983 mod 91 = 24

1983 = 1,369458509879505101557376746718e+106 (calculadora Windows). En este caso hemos realizado sólo 15 operaciones frente a las 166 operaciones necesarias si se hubiese usado el principio de “reducibilidad”, es decir:

1983 mod 91 = (19*19) mod 91 * 19 mod 91 * 19 mod 91 * 19 mod 91… etc.

Esto originó un interesante ataque acústico por canal lateral a RSA en 2013: Daniel Genkin, Adi Shamir, Eran Tromer. https://m.tau.ac.il/~tromer/acoustic/

© 2019 CriptoCert (www.criptocert.com)

Page 45: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Recomendado

45/55

© 2019 CriptoCert (www.criptocert.com)

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

Page 46: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Operaciones con campos de Galois en AES

• La suma y multiplicación de polinomios conforman las operaciones básicas del algoritmo de cifra Advanced Encryption Standard (AES), que es el estándar mundial de cifra simétrica o de clave secreta desde el año 2001, en sustitución del Data Encryption Standard (DES).

• En el caso de AES, se trabaja con 8 bits por lo que las operaciones se realizan en GF(28).

• En las referencias del módulo de cifra en bloque con clave secreta en el documento de la certificación encontrará ejemplos de suma y multiplicación polinómica dentro de este campo de Galois para el AES.

46/55

© 2019 CriptoCert (www.criptocert.com)

Page 47: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Suma en campos de Galois GF(2n) ⊕

47/55

• Si el módulo de trabajo es 2 (con restos empleando los bits 0 y 1), las operaciones suma y resta serán un OR Exclusivo (XOR):

0 ⊕ 1 mod 2 = 1 1 ⊕ 0 mod 2 = 1

0 ⊕ 0 mod 2 = 0 1 ⊕ 1 mod 2 = 0

⊕ 0 1 x x+1 0 0 1 x x+1 1 1 0 x+1 x x x x+1 0 1 x+1 x+1 x 1 0

Restos: 0, 1, x, x+1

• Como los resultados deberán pertenecer a 22, vamos a aplicar una Reducción por Coeficientes.

• Ejemplo de cálculos en mod 2: x + (x +1) = 2x + 1 mod 2 = 1

1 + (x +1) = 2 + x mod 2 = x

© 2019 CriptoCert (www.criptocert.com)

Page 48: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Producto en campos de Galois GF(2n) ⊗

48/55

• La operación multiplicación puede entregar elementos que no pertenezcan al campo, potencias iguales o mayores que n. Para evitar tener valores fuera del campos, vamos a aplicar una Reducción por Exponente.

• Para la reducción por exponente, sea el polinomio irreducible de grado 2 el siguiente: p(x) = x2 + x + 1.

Luego: x2 = x + 1 • Cálculo de (x+1)∗(x+1) mod 2 (x + 1)∗(x + 1) = x2 + 2x + 1 mod 2 (x + 1)∗(x + 1) = (x + 1) + 2x +1 mod 2 (x + 1)∗(x + 1) = 3x + 2 mod 2 = x

⊗ 0 1 x x+1

0 0 0 0 0 1 0 1 x x+1 x 0 x x+1 1 x+1 0 x+1 1 x

Restos: 0, 1, x, x+1

© 2019 CriptoCert (www.criptocert.com)

Page 49: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Problemas de tipo NP

• En criptografía nos interesan las funciones f(x) de un solo sentido, es decir: • Es fácil calcular f(x) pero muy difícil calcular f-1(x) salvo que conozcamos un

secreto o trampa. • Dan lugar a problemas de tipo NP, polinomiales no deterministas,

computacionalmente muy difíciles de tratar. • Ejemplos:

• Problema de la mochila PM. • Problema de la factorización entera PFE. • Problema de logaritmo discreto PLD. • Problema de logaritmo discreto en curvas elípticas PLDCE.

49/55

© 2019 CriptoCert (www.criptocert.com)

Page 50: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Problema de la factorización entera PFE

• Dado un número n que es el resultado del producto de dos o más primos, se pide encontrar estos factores.

• Por ejemplo, cuando el valor n = p∗q es muy grande, el problema de la factorización entera se vuelve computacionalmente intratable, un problema polinomial no determinista (NP).

• No obstante, el caso inverso, dado dos números primos p y q, encontrar el resultado p∗q = n, se trata de un problema de tipo polinomial (P).

• Este problema se usará en el sistema de cifra con clave pública RSA.

50/55

© 2019 CriptoCert (www.criptocert.com)

Page 51: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Ejemplo gráfico del PFE

51/55

Msieve153: https://sourceforge.net/projects/msieve/

n = p*q (de 256 bits) p: primo de 128 bits q: primo de 128 bits

genRSA: http://www.criptored.upm.es/software/sw_m001d.htm

© 2019 CriptoCert (www.criptocert.com)

Page 52: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Problema del logaritmo discreto PLD

• Dado un par de enteros α y β que pertenecen al Campo de Galois GF(p), se pide encontrar un entero x de forma tal que x = logα β mod p.

• Si el valor p es muy grande, el Problema del Logaritmo Discreto (PLD) es computacionalmente intratable, polinomial no determinista (NP).

• No obstante, el caso inverso, dado dos números α y x, encontrar β = αx mod p es un problema polinomial (P) y de rápida solución.

• Este problema se usará, entre otros, en el protocolo de intercambio de claves de Diffie Hellman y en el sistema de cifra con clave pública ElGamal.

52/55

© 2019 CriptoCert (www.criptocert.com)

Page 53: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Cálculos de potencia modular y logaritmo discreto

53/55

80 mod 29 = 1 81 mod 29 = 8 82 mod 29 = 6 83 mod 29 = 19 84 mod 29 = 7

85 mod 29 = 27 86 mod 29 = 13 87 mod 29 = 17 88 mod 29 = 20 89 mod 29 = 15

810 mod 29 = 4 811 mod 29 = 3 812 mod 29 = 24 813 mod 29 = 18 814 mod 29 = 28

815 mod 29 = 21 816 mod 29 = 23 817 mod 29 = 10 818 mod 29 = 22 819 mod 29 = 2

820 mod 29 = 16 821 mod 29 = 12 822 mod 29 = 9 823 mod 29 = 14 824 mod 29 = 25

825 mod 29 = 26 826 mod 29 = 5 827 mod 29 = 11 828 mod 29 = 1

0

5

10

15

20

25

30

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

y = 8x mod 29

x = logα y mod p = log8 y mod 29 (difícil y lento)

y = αx mod p = 8x mod 29 (fácil y rápido)

© 2019 CriptoCert (www.criptocert.com)

log8 1 mod 29 = 0 log8 8 mod 29 = 1 log8 6 mod 29 = 2 log8 19 mod 29 = 3 log8 7 mod 29 = 4

log8 27 mod 29 = 5 log8 13 mod 29 = 6 log8 17 mod 29 = 7 log8 20 mod 29 = 8 log8 15 mod 29 = 9

log8 4 mod 29 = 10 log8 3 mod 29 = 11 log8 24 mod 29 = 12 log8 18 mod 29 = 13 log8 28 mod 29 = 14

log8 21 mod 29 = 15 log8 23 mod 29 = 16 log8 10 mod 29 = 17 log8 22 mod 29 = 18 log8 2 mod 29 = 19

log8 16 mod 29 = 20 log8 12 mod 29 = 21 log8 9 mod 29 = 22 log8 14 mod 29 = 23 log8 25 mod 29 = 24

log8 26 mod 29 = 25 log8 5 mod 29 = 26 log8 11 mod 29 = 27 log8 1 mod 29 = 28

log8 1 mod 29 = 0, log8 2 mod 29 = 19, log8 3 mod 29 = 11,

log8 4 mod 29 = 10, log8 5 mod 29 = 26, log8 6 mod 29 = 2,

log8 7 mod 29 = 4, log8 8 mod 29 = 1, log8 9 mod 29 = 22,…

logα y mod p no entregará resultados predecibles.

Page 54: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Ejemplo gráfico del PLD

54/55

© 2019 CriptoCert (www.criptocert.com)

Bits Primo p Raíz α x y = αx mod p αx mod p x = Logα y mod p

16 p = 56.519 α = 13 2.001 34.165 0 seg 0 seg

32 p = 4.055.122.543 α = 17 2.001 1.360.723.949 0 seg 1 seg

36 p = 52.178.676.593 α = 12 2.001 25.995.549.343 0 seg 2,5 seg

40 p = 1.007.169.377.057 α = 11 2.001 4.648.865.224 0 seg 2,7 seg

44 p = 16.269.272.016.103 α = 12 2.001 9.585.774.839.450 0 seg 19 seg

48 p = 225.836.611.247.389 α = 39 2.001 705.787.857.673 0 seg 45 seg

52 p = 4.037.038.849.552.477 α = 15 2.001 1.338.014.511.659.735 0 seg 196 seg

56 p = 71.517.013.315.304.099 α = 11 2.001 62.096.650.556.392.138 0 seg 762 seg

60 p = 667.212.523.172.624.909 α = 11 2.001 612.078.362.526.908.336 0 seg 5.026 seg

Tiempos de ejecución de y = αx mod p (cálculo directo) y x = logα y mod p (cálculo inverso) para diferentes tamaños del primo p, con incrementos de 4 bits. Los primos p se han encontrado generando claves con genRSA v2.1 y la raíz primitiva se ha elegido usando SAMCript, tomando α como la primera raíz mayor que 10. La clave privada x será siempre el número 2.001.

Tiempo cálculo logα y mod p (segundos)

Tamaño del primo p (bits)

PLD calculado usando algoritmo Pollard-Rho

0

100

200

300

400

500

600

700

800

900

16 20 24 28 32 36 40 44 48 52 56

(1 hora 23 min 46 seg)

.

Page 55: Criptografía y matemáticas en la ingeniería: cómo hacer ... · Criptografía y matemáticas en la ingeniería. Cómo hacer + simple lo que parece complicado. Bienvenidos al primer

Muchas gracias

CriptoCert Certified Crypto Analyst

Inscripción e información: [email protected]

Bonifícate con un 15% de descuento indicando este webinar

Código: CRIPTOCERTWEBCAST1

Raúl Siles, Alfonso Muñoz, Jorge Ramió

© 2019 CriptoCert (www.criptocert.com)