SlideShare una empresa de Scribd logo
1 de 31
Seguridad Informática y Criptografía
Material Docente de
Libre Distribución
Ultima actualización del archivo: 01/03/06
Este archivo tiene: 31 diapositivas
Dr. Jorge Ramió Aguirre
Universidad Politécnica de Madrid
Curso de Seguridad Informática y Criptografía © JRA
v 4.1
Capítulo 8
Teoría de la Complejidad Algorítmica
Este archivo forma parte de un curso completo sobre Seguridad Informática y Criptografía. Se autoriza el
uso, reproducción en computador y su impresión en papel, sólo con fines docentes y/o personales,
respetando los créditos del autor. Queda prohibida su comercialización, excepto la edición en venta en el
Departamento de Publicaciones de la Escuela Universitaria de Informática de la Universidad Politécnica de
Madrid, España.
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 2
La teoría de la complejidad de los algoritmos permitirá, entre otras
cosas, conocer la fortaleza de un algoritmo y tener así una idea de
su vulnerabilidad computacional.
Complejidad Computacional
Los algoritmos pueden clasificarse según su tiempo de ejecución,
en función del tamaño u orden de la entrada. Hablamos así de
complejidad:
• Polinomial ⇒ comportamiento similar al lineal
• Polinomial No Determinísta ⇒ comportamiento exponencial
Esto dará lugar a “problemas fáciles” y “problemas difíciles” cuyo
uso será muy interesante en la criptografía.
Introducción a la teoría de la complejidad
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 3
Si deseamos sumar dos números binarios n y m, ambos de k bits
realizaremos k operaciones bit puesto que cada operación básica
con los dígitos de una columna es una operación bit.
• Recuerde que 0+0 = 0, 0+1=1, 1+0 = 1, 1+1 = 0 con bit 1 de acarreo.
• Si un número tiene menos bits, se rellena con ceros por la izquierda.
Operaciones bit en la suma
Ejemplo: encontrar el número de operaciones bit necesarias en la
suma en binario de 13+7 ⇒ 1101 + 0111 (de k = 4 bits)
1 1 1 1 (bits de acarreo)
1 1 0 1
+ 0 1 1 1
1 0 1 0 0
Cada operación básica que hacemos con una columna se conoce
como operación bit, luego necesitamos k = 4 operaciones bit.
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 4
Para la multiplicación de un número n de k bits por un número
m de h bits, el número de operaciones bit será igual a 2∗k∗h.
Suponemos que k ≥ h.
• Recuerde que 0x0 = 0, 0x1=0, 1x0 = 0, 1x1 = 1.
Operaciones bit en la multiplicación
Ejemplo: encontrar el número de operaciones bit necesarias en la
multiplicación en binario 10x5 ⇒ 1010 x 101 (4 y 3 bits)
1 0 1 0 x 1 0 1
1 0 1 0
0 0 0 0
+ 1 0 1 0 (procedemos ahora a sumar)
1 1 0 0 1 0
Como cada operación básica entre dos bits es una operación bit,
hemos realizado h∗k = 3∗4 multiplicaciones y luego k∗h = 4∗3
sumas, es decir en total 2∗k∗h = 24 operaciones bit.
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 5
Las operaciones dependerán del tamaño de la entrada por lo
que esta complejidad se expresará en términos del tiempo T
necesario para el cálculo del algoritmo y del espacio S que
utiliza en memoria, y se expresará mediante una función
f (n), donde n es el tamaño de la entrada.
Esta función será una aproximación pues el resultado exacto
dependerá de la velocidad del procesador.
f (n) = O(g(n))
Y se define así: f = O(n) ssi ∃ co,no / f(n) ≤ co∗g(n)
Ejemplo
La función O(n)
http://www.mm.informatik.tu-darmstadt.de/courses/2002ws/ics/lectures/v14.pdf
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 6
Si f (n) = 4n2
+ 2n + 5 ¿ f = O(n2
)?
¿se cumple que co∗g(n) = co∗n2
≥ f (n)? Sea co = 6
co no cono
2
f (n) = 4n2
+ 2n + 5 ¿co∗n2
≥ f (n)?
6 1 6 11 No
6 2 24 25 No
6 3 54 38 Sí
6 4 96 77 Sí
Se cumple
siempre
Luego, la complejidad de f (n) es exponencial.
Complejidad de una función f(n)
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 7
En la expresión O(n) aparecerá el término que domina al
crecer el valor de n.
• El tiempo de ejecución de un algoritmo T1 que realiza
2n+1 operaciones es de tipo O(n); uno T2 que realiza
3n2
+n+3 operaciones será de tipo O(n2
), etc.
• Para realizar la suma de la diapositiva anterior
necesitamos O(n) = O(log n) operaciones bit y para el caso
de la multiplicación, éstas serán O(n∗m) = O(log n ∗ log
m) operaciones bit.
Tiempos de ejecución
+ Operación binaria: n+m (de k bits cada uno)
∗ Operación binaria: n∗m (de k y h bits respectivamente)
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 8
• Un algoritmo se dice que tiene tiempo de ejecución
polinomial (no confundir con lineal) si éste depende
polinómicamente del tamaño de la entrada.
• Si la entrada es de tamaño n y t es un entero, el
número de operaciones bit será O(logt
n).
Si t = 1, el sistema es lineal Suma
Si t = 2, el sistema es cuadrático Producto
Si t = 3, el sistema es cúbico
Máximo Común
Divisor (Euclides)
Algoritmos de complejidad polinomial
Ejemplos
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 9
Solución: En el primer caso el tiempo es O(log3
n) y en
el segundo O(log3
2n). Para este sistema polinomial, el
tiempo se incrementará sólo en log3
2 operaciones bit.
Pregunta: El tiempo de ejecución de un algoritmo es
O(log3
n). Si doblamos el tamaño de la entrada, ¿en
cuánto aumentará este tiempo?
Ejemplo de complejidad polinomial
Estos son los denominados problemas fáciles y son
los que involucrarán un proceso de cifra y descifrado
(o firma) por parte del o de los usuarios autorizados.
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 10
• Un algoritmo se dice que tiene tiempo de ejecución
polinomial no determinista (en este caso exponencial)
si éste depende exponencialmente del tamaño de la
entrada.
• Si la entrada es de tamaño n y t es un entero, el
número de operaciones bit será O(nt
).
Para t = 2, será exponencial de orden 2
Para t = 3, será exponencial de orden 3
n!
Algoritmos de complejidad no determinista
Ejemplo
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 11
Solución: En el primer caso el tiempo es O(n3
) y en el
segundo O((2n)3
) = O(8n3
). El tiempo para este sistema
exponencial, se incrementará en 8 operaciones bit.
Pregunta: El tiempo de ejecución de un algoritmo es
O(n3
). Si doblamos el tamaño de la entrada, ¿en cuánto
aumentará este tiempo?
Ejemplo de complejidad no determinista
Estos son los denominados problemas difíciles y son a
los que deberá enfrentarse un criptoanalista o atacante
que desea romper una cifra o la clave de un usuario.
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 12
• Los algoritmos polinómicos y exponenciales se
comparan por su complejidad O(nt
).
– Polinómico constante ⇒ O(1)
– Polinómico lineal ⇒ O(n)
– Polinómico cuadrático ⇒ O(n2
)
– Polinómico cúbico ⇒ O(n3
) ... etc.
– Exponencial ⇒ O(dh(n)
)
donde d es una constante y h(n) un polinomio
Si suponemos un ordenador capaz de realizar 109
instrucciones por segundo obtenemos este cuadro:
Comparativas de complejidad
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 13
Entrada O(n) O(n2
) O(n3
) O(2n
)
n = 10 10-8
seg 10-7
seg 10-6
seg 10-6
seg
n = 102
10-7
seg 10-5
seg 10-3
seg 4∗1013
años
n = 103
10-6
seg 10-3
seg 1 seg Muy grande
Entrada/109
: Para n = 100 ⇒ O(n2
) = 1002
/109
= 10-5
seg
Tabla comparativa de tiempos
Incrementos de un
orden de magnitud
Computacionalmente
imposible
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 14
En criptografía nos interesan las funciones f(x) de un solo
sentido, es decir:
 Fácil calcular f(x) pero muy difícil calcular f-1
(x)
salvo que conozcamos un secreto o trampa.
Porque dan lugar a problemas de tipo NP, polinomiales no
deterministas, computacionalmente difíciles de tratar:
 Problema de la mochila
 Problema de la factorización
 Problema del logaritmo discreto
 Problema logaritmo discreto en curvas elípticas
 Otros
Problemas de tipo NP
Definición del
problema y
ejemplos
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 15
Enunciado:
Dada una mochila de determinadas dimensiones de alto,
ancho y fondo, y un conjunto de elementos de distintos
tamaños menores que ella y de cualquier dimensión, ...
¿es posible llenar la mochila (completa) con distintos
elementos de ese conjunto sin repetir ninguno de ellos?
El problema de la mochila
• Es un problema de tipo NP en el
que el algoritmo debe realizar en
cada paso una selección iterativa
entre diferentes opciones.
http://en.wikipedia.org/wiki/Knapsack_problem
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 16
S1 = a1+a2+a3 S2 = a1+a2 S3 = a1+a3 S4 = a1
S5 = a2+a3 S6 = a2 S7 = a3 S8 = ∅
S = a1 + a2 + a3 A = {a1, a2, a3}
¿Se incluye a1 en la suma S?
Sí No
¿Se incluye a2 en la suma?
Sí No Sí No
¿Se incluye a3?
Sí No Sí No Sí No Sí No
S1 S2
a1
a3 a3
a2
S3 S4 S7 S8S5 S6
a3a3
a2
Sea una mochila
con 4 elementos
{2, 4, 9, 10}
¿Cuántas sumas
posibles hay?
Solución: 24
= 16
∅, 2, 4, 6,
9, 10, 11, 12,
13, 14, 15, 16,
19, 21, 23, 25.
Los resultados son todos
distintos: una casualidad
Repítalo con
{2, 4, 6, 10}
Hemos tenido que evaluar 23
= 8 valores ⇒ (carácter exponencial)
Ejemplo del problema de la mochila

© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 17
¿Por qué tiene interés este problema en criptografía?
a) Es de tipo NP completo: su resolución por lo general
implica una complejidad exponencial. Luego, será
difícil de atacar o criptoanalizar.
b) Existe un caso en el que su resolución es lineal y, si la
solución existe, ésta será única. Este caso se dará cuando
A = {a1, a2, a3, .., an} está ordenado de menor a mayor de
forma que ai es mayor que la suma de los aj que le
preceden: a2 > a1; a3 > a1 + a2; a4 > a1 + a2+ a3; etc.
Esto dará lugar a los criptosistemas de mochila
tramposa que veremos en un próximo capítulo.
Interés de las mochilas en criptografía
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 18
Los problemas más usados en la criptografía asimétrica o de
clave pública actualmente son:
- El problema de la factorización de números grandes PFNG
- El problema del logaritmo discreto PLD
En estos casos, cuando los números son del orden de mil bits
(unos 310 dígitos) su cálculo se vuelve computacionalmente
imposible debido al tiempo que deberíamos emplear.
Si lo desea, puede comprobar los ejemplos de las siguientes
diapositivas usando el software de prácticas Fortaleza de libre
distribución y que puede descargarlo desde esta dirección.
Problemas usados en criptografía asimétrica
http://www.criptored.upm.es/software/sw_m001e.htm
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 19
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 de Números Grandes PFNG se
vuelve computacionalmente intratable.
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.
Este problema se usará en la generación del par de claves del
sistema de cifra con clave pública RSA.
El problema de la factorización PFNG
http://home.netcom.com/~jrhowell/math/factor.htm
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 20
 Cálculo fácil o polinomial (función directa)
Calcule “a mano” los siguientes productos de dos primos y
tome el tiempo aproximado que tarda en la operación:
a) 13∗31 b) 113∗131 c) 1.013∗1.031 calcule...
 Cálculo difícil o no polinomial (función inversa)
Usando la criba de Eratóstenes, factorice en dos primos los
siguientes números y vuelva a tomar el tiempo empleado:
a) 629 b) 17.399 c) 1.052.627 calcule...
En el caso a) son primos de 2 dígitos, en b) de 3 y en c) de 4.
Compruebe lo que significa el PFNG
No vale usar
calculadora...
¿Qué puede concluir
de estos cálculos?
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 21
 Dificultad polinomial (rápido)
a) 13∗31 = 403 b) 113∗131 = 14.803 c) 1013∗1031 = 1.044.403
A medida que aumenta el tamaño de la entrada, el tiempo de
cálculo aumenta proporcionalmente con el número de dígitos.
 Dificultad no determinista (lento)
a) 629 b) 17.399 c) 1.052.627
Da igual que el algoritmo sea éste muy elemental u otro más eficaz;
aquí resulta evidente que el tiempo de cálculo aumenta mucho al
incrementar en un dígito los números en cuestión. Es no lineal.
Solución: Los resultados a), b) y c) son el producto de los números
primos inmediatamente superiores a los que se usaron en el cálculo
polinomial es decir 17*37; 127*137; 1019*1033.
Solución al ejemplo anterior
Paciencia, un
computador va a
sufrir lo mismo ...
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 22
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.
No obstante, el caso inverso, dado dos números α y x,
encontrar β = αx
mod p es un problema polinomial.
Este problema se usará, entre otros, en la creación de las
claves del sistema de cifra con clave pública ElGamal y en el
protocolo de intercambio de clave de Diffie y Hellman.
El problema del logaritmo discreto PLD
http://en.wikipedia.org/wiki/Discrete_logarithm
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 23
 Cálculo fácil o polinomial (función directa)
Calcule “a mano” las siguientes exponenciaciones mod p y
tome el tiempo aproximado que tarda en la operación:
a) 54
mod 7 b) 817
mod 41 c) 9211
mod 251
El PLD en su función directa o fácil
54
= 625
817
= 2.251.799.813.685.248
9211
= 3.996.373.778.857.415.671.808
Haciendo uso de la propiedad de reducibilidad
vista en el apartado de matemáticas discretas,
podrá bajar significativamente el tiempo de
cálculo. Este tiempo será de tipo polinomial
según el tamaño de la entrada.
Solución:
54
mod 7 = 2
817
mod 41 = 39
9211
mod 251 = 217
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 24
 Cálculo difícil o no determinista (función inversa)
Aunque existen varios algoritmos para este tipo de cálculos
(al igual que para la factorización) use la fuerza bruta que se
explica a continuación para encontrar los siguientes valores y
vuelva a tomar el tiempo empleado:
a) log5 2 mod 7 b) log8 39 mod 41 c) log92 217 mod 251
El PLD y su función inversa o difícil
Aplicando fuerza bruta en el 1er
caso (la base elevada a todos los restos de
p) al final se obtiene que log5 2 mod 7 = 4.
51
mod 7 = 5 52
mod 7 = 4 53
mod 7 = 6
54
mod 7 = 2 55
mod 7 = 3 56
mod 7 = 1
En término medio deberá recorrer la mitad del
espacio de valores para encontrarlo ... 
Solución:
log5 2 mod 7 = 4
log8 39 mod 41 = 17
log92 217 mod 251 = 11
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 25
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
Logaritmo discreto con α generador
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 212
mod 13 = 1
Es
decir
Se cumplirá siempre que a0
mod p = ap-1
mod p = 1.
En el cuerpo p = 13, el 2 es un generador, luego:
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 26
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
Logaritmo discreto con α no generador
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
En p=13 el 2
era generador,
pero no así el
número 3...
Luego
NE: no existe el logaritmo discreto en ese cuerpo
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 27
Existen otros muchos problemas matemáticos que dan
lugar a problemas del tipo NP, algunos de ellos basados
en estas funciones unidireccionales one-way functions que
tanto interesan en criptografía.
Las dos últimas funciones vistas, la factorización de
números grandes y el logaritmo discreto, son las que más
uso tienen de momento en la criptografía actual.
En la siguiente página Web encontrará una interesante
lista con 88 problemas de tipo NP.
¿Hay más funciones NP?
Fin del capítulo
http://www.csc.liv.ac.uk/~ped/teachadmin/COMP202/annotated_np.html
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 28
Cuestiones y ejercicios (1 de 2)
1. Deseamos sumar de forma binaria el número 15 (1111) y el
número 10 (1010), ambos de k = 4 bits. Haga la suma binaria y
verifique que el número de operaciones bit desarrolladas es k = 4.
2. Si multiplicamos en binario 1010∗11, donde k = 4 bits y h = 2 bits,
compruebe que el número de operaciones bit realizadas es 2∗k∗h.
3. ¿Por qué son interesantes los problemas de tipo NP en criptografía?
4. Defina el problema de la mochila y su posible utilización en un
sistema de cifra.
5. ¿Es siempre única la solución de una mochila? Piense sobre el
particular y su trascendencia si las utilizamos sin ningún control en
sistemas de cifra.
6. Factorice mentalmente el valor n = 143. Intente hacer lo mismo
para n = 1.243. ¿Qué opina ahora del problema de la factorización?
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 29
Cuestiones y ejercicios (2 de 2)
7. ¿Se le ocurre alguna forma de utilizar este problema de un solo
sentido para cifrar información?
8. A partir de la ecuación β = xα
mod p, defina el problema del
logaritmo discreto.
9. Calcule 713
mod 31 = C usando la propiedad de reducibilidad.
Compruebe con Fortaleza que el exponente 13 = log7 C mod 31.
10. ¿Qué utilidad le encuentra a este problema en criptografía?
11. ¿Qué relación existe entre generadores de un cuerpo, el conjunto
completo de restos y el cálculo del logaritmo discreto?
12. ¿Qué sucede si deseamos encontrar un logaritmo discreto que no
existe, por ejemplo log5 19 mod 31?
Nota: si usa el software Fortaleza, deberá detener la operación al
no contemplarse en su código este hecho .
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 30
Prácticas del tema 8 (1/2)
Software Fortaleza: http://www.criptored.upm.es/software/sw_m001e.htm
1. Encuentre el tiempo que tarda el programa en calcular los siguientes
productos de primos: 23x61; 281x829; 3001x5477; 26317x63901.
2. Encuentre cuánto tarda el programa en realizar un producto de dos
números de 300 dígitos cada uno.
3. Factorice por Pollard Rho los siguientes productos y encuentre el tiempo
que tarda el programa: 1403; 232949; 16436477; 1681682617.
4. Factorice por Pollard Rho los números de 16 dígitos que se indican y
observe el tiempo empleado: 3745667802664727; 4044773133465121;
3907781049017851; 41710432708253. Saque conclusiones.
5. ¿Cuánto tarda el programa en demostrar la primalidad de estos números
50000000000000000059; 500000000000000000000000000009;
5000000000000000000000000000000000000021; de 20, 30 y 40 dígitos?
Compárelos con los tiempos de factorización y saque conclusiones.
© Jorge Ramió Aguirre Madrid (España) 2006
Capítulo 8: Teoría de la Complejidad Algorítmica Página 31
Prácticas del tema 8 (2/2)
6. Encuentre el tiempo que tarda el programa en calcular las siguientes
potencias modulares: 351215
mod 3456; 782487652456
mod 34654783;
891278265367876254356758778234002462
mod 762488740981009687272345.
7. Si d = dígitos, ¿cuánto tiempo tarda el programa en calcular una potencia
en los siguientes rangos de valores: 50d100d
mod 100d; 50d100d
mod 150d,
50d100d
mod 200d, 50d100d
mod 250d? Saque conclusiones.
8. Si d = dígitos, ¿cuánto tiempo tarda el programa en calcular una potencia
en los siguientes rangos de valores: 50d25d
mod 200d; 50d50d
mod 200d,
50d75d
mod 200d, 50d100d
mod 200d? Saque conclusiones.
9. Compruebe las siguientes potencias y luego mediante los algoritmos de
Búsqueda Exhaustiva, Paso Gigante - Paso Enano y Pohlig - Hellman,
calcule el correspondiente logaritmo discreto. El módulo p es primo y α es
un generador en p. Observe los tiempos de ejecución y saque conclusiones.
- 401357
mod 87211 = 31211 ⇒ log401 31211 mod 87211 = 357.
- 2468924
mod 384773 = 67350 ⇒ log246 67350 mod 384773 = 8924.

Más contenido relacionado

La actualidad más candente

Análisis de complejidad introducción notación big o
Análisis de complejidad   introducción notación big oAnálisis de complejidad   introducción notación big o
Análisis de complejidad introducción notación big oUVM
 
Trabajo práctico nº 4 autómatas de pila
Trabajo práctico nº 4   autómatas de pilaTrabajo práctico nº 4   autómatas de pila
Trabajo práctico nº 4 autómatas de pilaMariaFenoyAlias
 
Resumen Complejidad Computacional y de Algoritmos
Resumen Complejidad Computacional y de AlgoritmosResumen Complejidad Computacional y de Algoritmos
Resumen Complejidad Computacional y de Algoritmosmarshalleitor
 
3ª semana límites
3ª semana  límites3ª semana  límites
3ª semana límitesLiz Castroh
 
Teoría De La Complejidad Algoritmica
Teoría De La Complejidad AlgoritmicaTeoría De La Complejidad Algoritmica
Teoría De La Complejidad AlgoritmicaRolf Pinto
 
Tarea a realizar por todo el grupo
Tarea a realizar por todo el grupoTarea a realizar por todo el grupo
Tarea a realizar por todo el grupoKuma Sanchez
 
Teoria de la c.c.
Teoria de la c.c.Teoria de la c.c.
Teoria de la c.c.belmont402
 
Teoría de complejidad computacional (tcc).pptx
Teoría de complejidad computacional (tcc).pptxTeoría de complejidad computacional (tcc).pptx
Teoría de complejidad computacional (tcc).pptxYared Redman
 
“Muestreo, Reconstrucción y Controladores Digitales”
“Muestreo, Reconstrucción y Controladores Digitales”“Muestreo, Reconstrucción y Controladores Digitales”
“Muestreo, Reconstrucción y Controladores Digitales”KevinGVG
 
Optimización con algoritmos heurísticos en paralelo
Optimización con algoritmos heurísticos en paraleloOptimización con algoritmos heurísticos en paralelo
Optimización con algoritmos heurísticos en paraleloMarco Antonio Castro Liera
 

La actualidad más candente (18)

Análisis de complejidad introducción notación big o
Análisis de complejidad   introducción notación big oAnálisis de complejidad   introducción notación big o
Análisis de complejidad introducción notación big o
 
Leccion06 rsa crypt4you
Leccion06 rsa crypt4youLeccion06 rsa crypt4you
Leccion06 rsa crypt4you
 
Trabajo práctico nº 4 autómatas de pila
Trabajo práctico nº 4   autómatas de pilaTrabajo práctico nº 4   autómatas de pila
Trabajo práctico nº 4 autómatas de pila
 
Resumen Complejidad Computacional y de Algoritmos
Resumen Complejidad Computacional y de AlgoritmosResumen Complejidad Computacional y de Algoritmos
Resumen Complejidad Computacional y de Algoritmos
 
Paralela8
Paralela8Paralela8
Paralela8
 
Paralela4
Paralela4Paralela4
Paralela4
 
Complejidad de Algoritmos
Complejidad de AlgoritmosComplejidad de Algoritmos
Complejidad de Algoritmos
 
Analisis Algoritmo
Analisis AlgoritmoAnalisis Algoritmo
Analisis Algoritmo
 
3ª semana límites
3ª semana  límites3ª semana  límites
3ª semana límites
 
Teoría De La Complejidad Algoritmica
Teoría De La Complejidad AlgoritmicaTeoría De La Complejidad Algoritmica
Teoría De La Complejidad Algoritmica
 
Paralela7
Paralela7Paralela7
Paralela7
 
Tarea a realizar por todo el grupo
Tarea a realizar por todo el grupoTarea a realizar por todo el grupo
Tarea a realizar por todo el grupo
 
Teoria de la c.c.
Teoria de la c.c.Teoria de la c.c.
Teoria de la c.c.
 
La derivada en el mundo real
La derivada en el mundo realLa derivada en el mundo real
La derivada en el mundo real
 
1.4 limites infinitos
1.4 limites infinitos1.4 limites infinitos
1.4 limites infinitos
 
Teoría de complejidad computacional (tcc).pptx
Teoría de complejidad computacional (tcc).pptxTeoría de complejidad computacional (tcc).pptx
Teoría de complejidad computacional (tcc).pptx
 
“Muestreo, Reconstrucción y Controladores Digitales”
“Muestreo, Reconstrucción y Controladores Digitales”“Muestreo, Reconstrucción y Controladores Digitales”
“Muestreo, Reconstrucción y Controladores Digitales”
 
Optimización con algoritmos heurísticos en paralelo
Optimización con algoritmos heurísticos en paraleloOptimización con algoritmos heurísticos en paralelo
Optimización con algoritmos heurísticos en paralelo
 

Similar a Teoría de la Complejidad Algorítmica

Similar a Teoría de la Complejidad Algorítmica (20)

Teoria de la compleijidad algoritmica.pdf
Teoria de la compleijidad algoritmica.pdfTeoria de la compleijidad algoritmica.pdf
Teoria de la compleijidad algoritmica.pdf
 
Complejidad
ComplejidadComplejidad
Complejidad
 
Analisis de Algoritmos
Analisis de AlgoritmosAnalisis de Algoritmos
Analisis de Algoritmos
 
Notación Asintótica
Notación AsintóticaNotación Asintótica
Notación Asintótica
 
Manual algoritmos y_estructura_de_datos
Manual algoritmos y_estructura_de_datosManual algoritmos y_estructura_de_datos
Manual algoritmos y_estructura_de_datos
 
arreglos y matrices
arreglos  y matricesarreglos  y matrices
arreglos y matrices
 
Cap2.1
Cap2.1Cap2.1
Cap2.1
 
Análisis de algoritmo
Análisis de algoritmoAnálisis de algoritmo
Análisis de algoritmo
 
Matematica computacional
Matematica computacionalMatematica computacional
Matematica computacional
 
Informe técnico Unidad 7 Análisis de algoritmos (Rubí Veronica)
Informe técnico Unidad 7 Análisis de algoritmos (Rubí Veronica)Informe técnico Unidad 7 Análisis de algoritmos (Rubí Veronica)
Informe técnico Unidad 7 Análisis de algoritmos (Rubí Veronica)
 
Tema4
Tema4Tema4
Tema4
 
Complejidad de Algoritmos
Complejidad de AlgoritmosComplejidad de Algoritmos
Complejidad de Algoritmos
 
Análisis de redes comercio mediante procesos de consenso
Análisis de redes comercio mediante procesos de consensoAnálisis de redes comercio mediante procesos de consenso
Análisis de redes comercio mediante procesos de consenso
 
Analisis Clase2
Analisis  Clase2Analisis  Clase2
Analisis Clase2
 
Complejidad Computacional
Complejidad ComputacionalComplejidad Computacional
Complejidad Computacional
 
Introducción al análisis de algoritmos
Introducción al  análisis de algoritmosIntroducción al  análisis de algoritmos
Introducción al análisis de algoritmos
 
Io 2da programacion lineal
Io 2da programacion linealIo 2da programacion lineal
Io 2da programacion lineal
 
Crypt4you. Leccion02 curso rsa
Crypt4you. Leccion02 curso rsa Crypt4you. Leccion02 curso rsa
Crypt4you. Leccion02 curso rsa
 
Estructura de dato unidad 7
Estructura de dato unidad 7Estructura de dato unidad 7
Estructura de dato unidad 7
 
Leccion02 rsa v3 crypt4you
Leccion02 rsa v3 crypt4youLeccion02 rsa v3 crypt4you
Leccion02 rsa v3 crypt4you
 

Más de Roberto Moreno Doñoro (20)

21 bibsw tablasyotros
21 bibsw tablasyotros21 bibsw tablasyotros
21 bibsw tablasyotros
 
20 curvaselipticas
20 curvaselipticas20 curvaselipticas
20 curvaselipticas
 
19 protocoloscripto
19 protocoloscripto19 protocoloscripto
19 protocoloscripto
 
18 correoseguro
18 correoseguro18 correoseguro
18 correoseguro
 
17 certdigitalespkcs
17 certdigitalespkcs17 certdigitalespkcs
17 certdigitalespkcs
 
16 autenticafirma
16 autenticafirma16 autenticafirma
16 autenticafirma
 
13 ciframochilas
13 ciframochilas13 ciframochilas
13 ciframochilas
 
12 cifrasimetrica
12 cifrasimetrica12 cifrasimetrica
12 cifrasimetrica
 
11 cifraflujo
11 cifraflujo11 cifraflujo
11 cifraflujo
 
10 ciframoderna
10 ciframoderna10 ciframoderna
10 ciframoderna
 
09 cifraclasica
09 cifraclasica09 cifraclasica
09 cifraclasica
 
07 teorianumeros
07 teorianumeros07 teorianumeros
07 teorianumeros
 
06 teoriainfo
06 teoriainfo06 teoriainfo
06 teoriainfo
 
05 gestionseg
05 gestionseg05 gestionseg
05 gestionseg
 
04 calidadinfo
04 calidadinfo04 calidadinfo
04 calidadinfo
 
02 breveintrocripto
02 breveintrocripto02 breveintrocripto
02 breveintrocripto
 
01 presentalibro
01 presentalibro01 presentalibro
01 presentalibro
 
03 introseginfo
03 introseginfo03 introseginfo
03 introseginfo
 
Curso basico c sharp vii
Curso basico c sharp   viiCurso basico c sharp   vii
Curso basico c sharp vii
 
Curso basico c sharp iv
Curso basico c sharp   ivCurso basico c sharp   iv
Curso basico c sharp iv
 

Último

Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxYeseniaRivera50
 
Procesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxProcesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxMapyMerma1
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024IES Vicent Andres Estelles
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialpatriciaines1993
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFlor Idalia Espinoza Ortega
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.DaluiMonasterio
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 

Último (20)

Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
Procesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxProcesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptx
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundial
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamica
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
Unidad 4 | Teorías de las Comunicación | MCDI
Unidad 4 | Teorías de las Comunicación | MCDIUnidad 4 | Teorías de las Comunicación | MCDI
Unidad 4 | Teorías de las Comunicación | MCDI
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 

Teoría de la Complejidad Algorítmica

  • 1. Seguridad Informática y Criptografía Material Docente de Libre Distribución Ultima actualización del archivo: 01/03/06 Este archivo tiene: 31 diapositivas Dr. Jorge Ramió Aguirre Universidad Politécnica de Madrid Curso de Seguridad Informática y Criptografía © JRA v 4.1 Capítulo 8 Teoría de la Complejidad Algorítmica Este archivo forma parte de un curso completo sobre Seguridad Informática y Criptografía. Se autoriza el uso, reproducción en computador y su impresión en papel, sólo con fines docentes y/o personales, respetando los créditos del autor. Queda prohibida su comercialización, excepto la edición en venta en el Departamento de Publicaciones de la Escuela Universitaria de Informática de la Universidad Politécnica de Madrid, España.
  • 2. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 2 La teoría de la complejidad de los algoritmos permitirá, entre otras cosas, conocer la fortaleza de un algoritmo y tener así una idea de su vulnerabilidad computacional. Complejidad Computacional Los algoritmos pueden clasificarse según su tiempo de ejecución, en función del tamaño u orden de la entrada. Hablamos así de complejidad: • Polinomial ⇒ comportamiento similar al lineal • Polinomial No Determinísta ⇒ comportamiento exponencial Esto dará lugar a “problemas fáciles” y “problemas difíciles” cuyo uso será muy interesante en la criptografía. Introducción a la teoría de la complejidad
  • 3. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 3 Si deseamos sumar dos números binarios n y m, ambos de k bits realizaremos k operaciones bit puesto que cada operación básica con los dígitos de una columna es una operación bit. • Recuerde que 0+0 = 0, 0+1=1, 1+0 = 1, 1+1 = 0 con bit 1 de acarreo. • Si un número tiene menos bits, se rellena con ceros por la izquierda. Operaciones bit en la suma Ejemplo: encontrar el número de operaciones bit necesarias en la suma en binario de 13+7 ⇒ 1101 + 0111 (de k = 4 bits) 1 1 1 1 (bits de acarreo) 1 1 0 1 + 0 1 1 1 1 0 1 0 0 Cada operación básica que hacemos con una columna se conoce como operación bit, luego necesitamos k = 4 operaciones bit.
  • 4. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 4 Para la multiplicación de un número n de k bits por un número m de h bits, el número de operaciones bit será igual a 2∗k∗h. Suponemos que k ≥ h. • Recuerde que 0x0 = 0, 0x1=0, 1x0 = 0, 1x1 = 1. Operaciones bit en la multiplicación Ejemplo: encontrar el número de operaciones bit necesarias en la multiplicación en binario 10x5 ⇒ 1010 x 101 (4 y 3 bits) 1 0 1 0 x 1 0 1 1 0 1 0 0 0 0 0 + 1 0 1 0 (procedemos ahora a sumar) 1 1 0 0 1 0 Como cada operación básica entre dos bits es una operación bit, hemos realizado h∗k = 3∗4 multiplicaciones y luego k∗h = 4∗3 sumas, es decir en total 2∗k∗h = 24 operaciones bit.
  • 5. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 5 Las operaciones dependerán del tamaño de la entrada por lo que esta complejidad se expresará en términos del tiempo T necesario para el cálculo del algoritmo y del espacio S que utiliza en memoria, y se expresará mediante una función f (n), donde n es el tamaño de la entrada. Esta función será una aproximación pues el resultado exacto dependerá de la velocidad del procesador. f (n) = O(g(n)) Y se define así: f = O(n) ssi ∃ co,no / f(n) ≤ co∗g(n) Ejemplo La función O(n) http://www.mm.informatik.tu-darmstadt.de/courses/2002ws/ics/lectures/v14.pdf
  • 6. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 6 Si f (n) = 4n2 + 2n + 5 ¿ f = O(n2 )? ¿se cumple que co∗g(n) = co∗n2 ≥ f (n)? Sea co = 6 co no cono 2 f (n) = 4n2 + 2n + 5 ¿co∗n2 ≥ f (n)? 6 1 6 11 No 6 2 24 25 No 6 3 54 38 Sí 6 4 96 77 Sí Se cumple siempre Luego, la complejidad de f (n) es exponencial. Complejidad de una función f(n)
  • 7. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 7 En la expresión O(n) aparecerá el término que domina al crecer el valor de n. • El tiempo de ejecución de un algoritmo T1 que realiza 2n+1 operaciones es de tipo O(n); uno T2 que realiza 3n2 +n+3 operaciones será de tipo O(n2 ), etc. • Para realizar la suma de la diapositiva anterior necesitamos O(n) = O(log n) operaciones bit y para el caso de la multiplicación, éstas serán O(n∗m) = O(log n ∗ log m) operaciones bit. Tiempos de ejecución + Operación binaria: n+m (de k bits cada uno) ∗ Operación binaria: n∗m (de k y h bits respectivamente)
  • 8. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 8 • Un algoritmo se dice que tiene tiempo de ejecución polinomial (no confundir con lineal) si éste depende polinómicamente del tamaño de la entrada. • Si la entrada es de tamaño n y t es un entero, el número de operaciones bit será O(logt n). Si t = 1, el sistema es lineal Suma Si t = 2, el sistema es cuadrático Producto Si t = 3, el sistema es cúbico Máximo Común Divisor (Euclides) Algoritmos de complejidad polinomial Ejemplos
  • 9. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 9 Solución: En el primer caso el tiempo es O(log3 n) y en el segundo O(log3 2n). Para este sistema polinomial, el tiempo se incrementará sólo en log3 2 operaciones bit. Pregunta: El tiempo de ejecución de un algoritmo es O(log3 n). Si doblamos el tamaño de la entrada, ¿en cuánto aumentará este tiempo? Ejemplo de complejidad polinomial Estos son los denominados problemas fáciles y son los que involucrarán un proceso de cifra y descifrado (o firma) por parte del o de los usuarios autorizados.
  • 10. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 10 • Un algoritmo se dice que tiene tiempo de ejecución polinomial no determinista (en este caso exponencial) si éste depende exponencialmente del tamaño de la entrada. • Si la entrada es de tamaño n y t es un entero, el número de operaciones bit será O(nt ). Para t = 2, será exponencial de orden 2 Para t = 3, será exponencial de orden 3 n! Algoritmos de complejidad no determinista Ejemplo
  • 11. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 11 Solución: En el primer caso el tiempo es O(n3 ) y en el segundo O((2n)3 ) = O(8n3 ). El tiempo para este sistema exponencial, se incrementará en 8 operaciones bit. Pregunta: El tiempo de ejecución de un algoritmo es O(n3 ). Si doblamos el tamaño de la entrada, ¿en cuánto aumentará este tiempo? Ejemplo de complejidad no determinista Estos son los denominados problemas difíciles y son a los que deberá enfrentarse un criptoanalista o atacante que desea romper una cifra o la clave de un usuario.
  • 12. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 12 • Los algoritmos polinómicos y exponenciales se comparan por su complejidad O(nt ). – Polinómico constante ⇒ O(1) – Polinómico lineal ⇒ O(n) – Polinómico cuadrático ⇒ O(n2 ) – Polinómico cúbico ⇒ O(n3 ) ... etc. – Exponencial ⇒ O(dh(n) ) donde d es una constante y h(n) un polinomio Si suponemos un ordenador capaz de realizar 109 instrucciones por segundo obtenemos este cuadro: Comparativas de complejidad
  • 13. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 13 Entrada O(n) O(n2 ) O(n3 ) O(2n ) n = 10 10-8 seg 10-7 seg 10-6 seg 10-6 seg n = 102 10-7 seg 10-5 seg 10-3 seg 4∗1013 años n = 103 10-6 seg 10-3 seg 1 seg Muy grande Entrada/109 : Para n = 100 ⇒ O(n2 ) = 1002 /109 = 10-5 seg Tabla comparativa de tiempos Incrementos de un orden de magnitud Computacionalmente imposible
  • 14. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 14 En criptografía nos interesan las funciones f(x) de un solo sentido, es decir:  Fácil calcular f(x) pero muy difícil calcular f-1 (x) salvo que conozcamos un secreto o trampa. Porque dan lugar a problemas de tipo NP, polinomiales no deterministas, computacionalmente difíciles de tratar:  Problema de la mochila  Problema de la factorización  Problema del logaritmo discreto  Problema logaritmo discreto en curvas elípticas  Otros Problemas de tipo NP Definición del problema y ejemplos
  • 15. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 15 Enunciado: Dada una mochila de determinadas dimensiones de alto, ancho y fondo, y un conjunto de elementos de distintos tamaños menores que ella y de cualquier dimensión, ... ¿es posible llenar la mochila (completa) con distintos elementos de ese conjunto sin repetir ninguno de ellos? El problema de la mochila • Es un problema de tipo NP en el que el algoritmo debe realizar en cada paso una selección iterativa entre diferentes opciones. http://en.wikipedia.org/wiki/Knapsack_problem
  • 16. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 16 S1 = a1+a2+a3 S2 = a1+a2 S3 = a1+a3 S4 = a1 S5 = a2+a3 S6 = a2 S7 = a3 S8 = ∅ S = a1 + a2 + a3 A = {a1, a2, a3} ¿Se incluye a1 en la suma S? Sí No ¿Se incluye a2 en la suma? Sí No Sí No ¿Se incluye a3? Sí No Sí No Sí No Sí No S1 S2 a1 a3 a3 a2 S3 S4 S7 S8S5 S6 a3a3 a2 Sea una mochila con 4 elementos {2, 4, 9, 10} ¿Cuántas sumas posibles hay? Solución: 24 = 16 ∅, 2, 4, 6, 9, 10, 11, 12, 13, 14, 15, 16, 19, 21, 23, 25. Los resultados son todos distintos: una casualidad Repítalo con {2, 4, 6, 10} Hemos tenido que evaluar 23 = 8 valores ⇒ (carácter exponencial) Ejemplo del problema de la mochila 
  • 17. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 17 ¿Por qué tiene interés este problema en criptografía? a) Es de tipo NP completo: su resolución por lo general implica una complejidad exponencial. Luego, será difícil de atacar o criptoanalizar. b) Existe un caso en el que su resolución es lineal y, si la solución existe, ésta será única. Este caso se dará cuando A = {a1, a2, a3, .., an} está ordenado de menor a mayor de forma que ai es mayor que la suma de los aj que le preceden: a2 > a1; a3 > a1 + a2; a4 > a1 + a2+ a3; etc. Esto dará lugar a los criptosistemas de mochila tramposa que veremos en un próximo capítulo. Interés de las mochilas en criptografía
  • 18. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 18 Los problemas más usados en la criptografía asimétrica o de clave pública actualmente son: - El problema de la factorización de números grandes PFNG - El problema del logaritmo discreto PLD En estos casos, cuando los números son del orden de mil bits (unos 310 dígitos) su cálculo se vuelve computacionalmente imposible debido al tiempo que deberíamos emplear. Si lo desea, puede comprobar los ejemplos de las siguientes diapositivas usando el software de prácticas Fortaleza de libre distribución y que puede descargarlo desde esta dirección. Problemas usados en criptografía asimétrica http://www.criptored.upm.es/software/sw_m001e.htm
  • 19. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 19 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 de Números Grandes PFNG se vuelve computacionalmente intratable. 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. Este problema se usará en la generación del par de claves del sistema de cifra con clave pública RSA. El problema de la factorización PFNG http://home.netcom.com/~jrhowell/math/factor.htm
  • 20. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 20  Cálculo fácil o polinomial (función directa) Calcule “a mano” los siguientes productos de dos primos y tome el tiempo aproximado que tarda en la operación: a) 13∗31 b) 113∗131 c) 1.013∗1.031 calcule...  Cálculo difícil o no polinomial (función inversa) Usando la criba de Eratóstenes, factorice en dos primos los siguientes números y vuelva a tomar el tiempo empleado: a) 629 b) 17.399 c) 1.052.627 calcule... En el caso a) son primos de 2 dígitos, en b) de 3 y en c) de 4. Compruebe lo que significa el PFNG No vale usar calculadora... ¿Qué puede concluir de estos cálculos?
  • 21. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 21  Dificultad polinomial (rápido) a) 13∗31 = 403 b) 113∗131 = 14.803 c) 1013∗1031 = 1.044.403 A medida que aumenta el tamaño de la entrada, el tiempo de cálculo aumenta proporcionalmente con el número de dígitos.  Dificultad no determinista (lento) a) 629 b) 17.399 c) 1.052.627 Da igual que el algoritmo sea éste muy elemental u otro más eficaz; aquí resulta evidente que el tiempo de cálculo aumenta mucho al incrementar en un dígito los números en cuestión. Es no lineal. Solución: Los resultados a), b) y c) son el producto de los números primos inmediatamente superiores a los que se usaron en el cálculo polinomial es decir 17*37; 127*137; 1019*1033. Solución al ejemplo anterior Paciencia, un computador va a sufrir lo mismo ...
  • 22. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 22 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. No obstante, el caso inverso, dado dos números α y x, encontrar β = αx mod p es un problema polinomial. Este problema se usará, entre otros, en la creación de las claves del sistema de cifra con clave pública ElGamal y en el protocolo de intercambio de clave de Diffie y Hellman. El problema del logaritmo discreto PLD http://en.wikipedia.org/wiki/Discrete_logarithm
  • 23. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 23  Cálculo fácil o polinomial (función directa) Calcule “a mano” las siguientes exponenciaciones mod p y tome el tiempo aproximado que tarda en la operación: a) 54 mod 7 b) 817 mod 41 c) 9211 mod 251 El PLD en su función directa o fácil 54 = 625 817 = 2.251.799.813.685.248 9211 = 3.996.373.778.857.415.671.808 Haciendo uso de la propiedad de reducibilidad vista en el apartado de matemáticas discretas, podrá bajar significativamente el tiempo de cálculo. Este tiempo será de tipo polinomial según el tamaño de la entrada. Solución: 54 mod 7 = 2 817 mod 41 = 39 9211 mod 251 = 217
  • 24. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 24  Cálculo difícil o no determinista (función inversa) Aunque existen varios algoritmos para este tipo de cálculos (al igual que para la factorización) use la fuerza bruta que se explica a continuación para encontrar los siguientes valores y vuelva a tomar el tiempo empleado: a) log5 2 mod 7 b) log8 39 mod 41 c) log92 217 mod 251 El PLD y su función inversa o difícil Aplicando fuerza bruta en el 1er caso (la base elevada a todos los restos de p) al final se obtiene que log5 2 mod 7 = 4. 51 mod 7 = 5 52 mod 7 = 4 53 mod 7 = 6 54 mod 7 = 2 55 mod 7 = 3 56 mod 7 = 1 En término medio deberá recorrer la mitad del espacio de valores para encontrarlo ...  Solución: log5 2 mod 7 = 4 log8 39 mod 41 = 17 log92 217 mod 251 = 11
  • 25. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 25 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 Logaritmo discreto con α generador 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 212 mod 13 = 1 Es decir Se cumplirá siempre que a0 mod p = ap-1 mod p = 1. En el cuerpo p = 13, el 2 es un generador, luego:
  • 26. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 26 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 Logaritmo discreto con α no generador 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 En p=13 el 2 era generador, pero no así el número 3... Luego NE: no existe el logaritmo discreto en ese cuerpo
  • 27. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 27 Existen otros muchos problemas matemáticos que dan lugar a problemas del tipo NP, algunos de ellos basados en estas funciones unidireccionales one-way functions que tanto interesan en criptografía. Las dos últimas funciones vistas, la factorización de números grandes y el logaritmo discreto, son las que más uso tienen de momento en la criptografía actual. En la siguiente página Web encontrará una interesante lista con 88 problemas de tipo NP. ¿Hay más funciones NP? Fin del capítulo http://www.csc.liv.ac.uk/~ped/teachadmin/COMP202/annotated_np.html
  • 28. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 28 Cuestiones y ejercicios (1 de 2) 1. Deseamos sumar de forma binaria el número 15 (1111) y el número 10 (1010), ambos de k = 4 bits. Haga la suma binaria y verifique que el número de operaciones bit desarrolladas es k = 4. 2. Si multiplicamos en binario 1010∗11, donde k = 4 bits y h = 2 bits, compruebe que el número de operaciones bit realizadas es 2∗k∗h. 3. ¿Por qué son interesantes los problemas de tipo NP en criptografía? 4. Defina el problema de la mochila y su posible utilización en un sistema de cifra. 5. ¿Es siempre única la solución de una mochila? Piense sobre el particular y su trascendencia si las utilizamos sin ningún control en sistemas de cifra. 6. Factorice mentalmente el valor n = 143. Intente hacer lo mismo para n = 1.243. ¿Qué opina ahora del problema de la factorización?
  • 29. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 29 Cuestiones y ejercicios (2 de 2) 7. ¿Se le ocurre alguna forma de utilizar este problema de un solo sentido para cifrar información? 8. A partir de la ecuación β = xα mod p, defina el problema del logaritmo discreto. 9. Calcule 713 mod 31 = C usando la propiedad de reducibilidad. Compruebe con Fortaleza que el exponente 13 = log7 C mod 31. 10. ¿Qué utilidad le encuentra a este problema en criptografía? 11. ¿Qué relación existe entre generadores de un cuerpo, el conjunto completo de restos y el cálculo del logaritmo discreto? 12. ¿Qué sucede si deseamos encontrar un logaritmo discreto que no existe, por ejemplo log5 19 mod 31? Nota: si usa el software Fortaleza, deberá detener la operación al no contemplarse en su código este hecho .
  • 30. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 30 Prácticas del tema 8 (1/2) Software Fortaleza: http://www.criptored.upm.es/software/sw_m001e.htm 1. Encuentre el tiempo que tarda el programa en calcular los siguientes productos de primos: 23x61; 281x829; 3001x5477; 26317x63901. 2. Encuentre cuánto tarda el programa en realizar un producto de dos números de 300 dígitos cada uno. 3. Factorice por Pollard Rho los siguientes productos y encuentre el tiempo que tarda el programa: 1403; 232949; 16436477; 1681682617. 4. Factorice por Pollard Rho los números de 16 dígitos que se indican y observe el tiempo empleado: 3745667802664727; 4044773133465121; 3907781049017851; 41710432708253. Saque conclusiones. 5. ¿Cuánto tarda el programa en demostrar la primalidad de estos números 50000000000000000059; 500000000000000000000000000009; 5000000000000000000000000000000000000021; de 20, 30 y 40 dígitos? Compárelos con los tiempos de factorización y saque conclusiones.
  • 31. © Jorge Ramió Aguirre Madrid (España) 2006 Capítulo 8: Teoría de la Complejidad Algorítmica Página 31 Prácticas del tema 8 (2/2) 6. Encuentre el tiempo que tarda el programa en calcular las siguientes potencias modulares: 351215 mod 3456; 782487652456 mod 34654783; 891278265367876254356758778234002462 mod 762488740981009687272345. 7. Si d = dígitos, ¿cuánto tiempo tarda el programa en calcular una potencia en los siguientes rangos de valores: 50d100d mod 100d; 50d100d mod 150d, 50d100d mod 200d, 50d100d mod 250d? Saque conclusiones. 8. Si d = dígitos, ¿cuánto tiempo tarda el programa en calcular una potencia en los siguientes rangos de valores: 50d25d mod 200d; 50d50d mod 200d, 50d75d mod 200d, 50d100d mod 200d? Saque conclusiones. 9. Compruebe las siguientes potencias y luego mediante los algoritmos de Búsqueda Exhaustiva, Paso Gigante - Paso Enano y Pohlig - Hellman, calcule el correspondiente logaritmo discreto. El módulo p es primo y α es un generador en p. Observe los tiempos de ejecución y saque conclusiones. - 401357 mod 87211 = 31211 ⇒ log401 31211 mod 87211 = 357. - 2468924 mod 384773 = 67350 ⇒ log246 67350 mod 384773 = 8924.

Notas del editor

  1. NOTAS SOBRE EL TEMA:
  2. NOTAS SOBRE EL TEMA:
  3. NOTAS SOBRE EL TEMA:
  4. NOTAS SOBRE EL TEMA:
  5. NOTAS SOBRE EL TEMA:
  6. NOTAS SOBRE EL TEMA:
  7. NOTAS SOBRE EL TEMA:
  8. NOTAS SOBRE EL TEMA:
  9. NOTAS SOBRE EL TEMA:
  10. NOTAS SOBRE EL TEMA:
  11. NOTAS SOBRE EL TEMA:
  12. NOTAS SOBRE EL TEMA:
  13. NOTAS SOBRE EL TEMA:
  14. NOTAS SOBRE EL TEMA:
  15. NOTAS SOBRE EL TEMA:
  16. NOTAS SOBRE EL TEMA:
  17. NOTAS SOBRE EL TEMA:
  18. NOTAS SOBRE EL TEMA:
  19. NOTAS SOBRE EL TEMA:
  20. NOTAS SOBRE EL TEMA:
  21. NOTAS SOBRE EL TEMA:
  22. NOTAS SOBRE EL TEMA:
  23. NOTAS SOBRE EL TEMA:
  24. NOTAS SOBRE EL TEMA:
  25. NOTAS SOBRE EL TEMA:
  26. NOTAS SOBRE EL TEMA:
  27. NOTAS SOBRE EL TEMA:
  28. NOTAS SOBRE EL TEMA:
  29. NOTAS SOBRE EL TEMA:
  30. NOTAS SOBRE EL TEMA:
  31. NOTAS SOBRE EL TEMA: