Está en la página 1de 29

Tema 6

Teora de la Complejidad

Curso de Seguridad Informtica


Ultima actualizacin: 10/02/02
Archivo con 29 diapositivas
Material Docente de
Libre Distribucin

Dr. Jorge Rami Aguirre


Universidad Politcnica de Madrid

Este archivo forma parte de un curso completo sobre Seguridad Informtica y


Criptografa. Se autoriza su uso, reproduccin en computador e impresin en
papel slo para fines docentes, respetando siempre los derechos del autor.
Curso de Seguridad Informtica Jorge Rami Aguirre

Nota del autor


El contenido de este tema
corresponde slo a una breve
introduccin a la complejidad
de los algoritmos, con el objeto
de que el lector pueda hacerse
una idea de la importancia de
este factor en el anlisis y diseo de los algoritmos de
cifra y firma digital que se vern en este curso. La
fortaleza de stos y de los protocolos que los
incluyen depender precisamente de la complejidad
asociada al criptoanlisis o ataque de los mismos.
Curso de Seguridad Informtica.
Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

Introduccin a la teora de la complejidad


La teora de la complejidad de los algoritmos nos
permitir conocer si un algoritmo tiene fortaleza y tener
as una idea de su vulnerabilidad computacional.
Complejidad Computacional
Los algoritmos se clasifican segn el tiempo de
ejecucin y en funcin del tamao de la entrada.
Complejidad Polinomial
Complejidad Exponencial
Esto dar lugar a tipos de problemas que nos interesarn.
Curso de Seguridad Informtica.
Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

Nmero de operaciones bit (1)


OPERACIONES BIT
SUMA: Si deseamos sumar dos nmeros binarios n
y m, ambos de k bits (el mtodo es conocido por
todos) deberemos realizar k operaciones bit puesto
que cada operacin bsica con los dgitos de una
columna es una operacin bit.
MULTIPLICACIN: Para la multiplicacin de un
nmero n de k bits por un nmero m de h bits, el
nmero de operaciones bit ser igual a 2kh.
Curso de Seguridad Informtica.
Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

Nmero de operaciones bit (2)


Las operaciones dependern del tamao de la entrada por lo
que esta complejidad se expresar en trminos del tiempo T
necesario para el clculo del algoritmo y del espacio S que
utiliza en memoria, y se expresar mediante una funcin
f (n), donde n es el tamao de la entrada.
Esta funcin ser una aproximacin pues el resultado exacto
depender de la velocidad del procesador.
f (n) = O(g(n))

Ejemplo

f = O(n) ssi co,no / f(n) cog(n)


Curso de Seguridad Informtica.
Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

La funcin O(n)
Si

f (n) = 4n2 + 2n + 5

f = O(n2)?

se cumple que cog(n) = con2 f (n)?


cono2

Sea co = 6

f (n) = 4n2 + 2n + 5 con2 f (n)?

co

no

11

No

24

25

No

54

38

96

77

Se cumple
siempre

Luego, la complejidad de f (n) es exponencial.

Curso de Seguridad Informtica.


Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

Tiempos de ejecucin (1)


En la expresin O(n) aparecer el trmino que
domina al crecer el valor de n.
El tiempo de ejecucin 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.
Curso de Seguridad Informtica.
Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

Tiempos de ejecucin (2)


Para realizar la suma de la diapositiva anterior
necesitaremos O(n) = O(log n) operaciones bit
y para el caso de la multiplicacin, stas sern
O(nm) = O(log n log m) operaciones bit.

+ Operacin binaria: n+m

(de k bits cada uno)

Operacin binaria: nm

(de k y h bits

respectivamente)

Curso de Seguridad Informtica.


Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

Algoritmos de complejidad lineal


Un algoritmo se dice que tiene tiempo de ejecucin
polinomial si ste depende polinmicamente del
tamao de la entrada.
Si la entrada es de tamao n y t es un entero, el
nmero de operaciones bit ser O(logt n). Ejemplos
Si t = 1, el sistema es lineal

Suma

Si t = 2, el sistema es cuadrtico

Producto

Si t = 3, el sistema es cbico

mcd Euclides

Curso de Seguridad Informtica.


Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

Ejemplo de complejidad lineal


Ejemplo: El tiempo de ejecucin de un algoritmo es
O(log3 n). Si doblamos la entrada, en cunto aumenta
este tiempo?
Solucin: En el primer caso el tiempo es O(log3 n) y en
el segundo O(log3 2n). Luego para este sistema lineal el
tiempo se incrementar en log3 2 operaciones bit.
Estos son los denominados problemas fciles y son
los que involucrarn un proceso de cifra y descifrado
(o firma) por parte del o de los usuarios autorizados.
Curso de Seguridad Informtica.
Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

10

Algoritmos de complejidad exponencial


Un algoritmo se dice que tiene tiempo de ejecucin
exponencial si ste depende exponencialmente del
tamao de la entrada.
Si la entrada es de tamao n y t es un entero, el
nmero de operaciones bit ser O(nt).
Ejemplo

Para t = 2, ser exponencial de orden 2

n!

Para t = 3, ser exponencial de orden 3


Curso de Seguridad Informtica.
Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

11

Ejemplo de complejidad exponencial


Ejemplo: El tiempo de ejecucin de un algoritmo es
O(n3). Si doblamos la entrada, en cunto aumenta este
tiempo?
Solucin: En el primer caso el tiempo es O(n3) y en el
segundo O(2n3) = O(8n3). Para este sistema exponencial
el tiempo se incrementar en 8 operaciones bit.
Estos son los denominados problemas difciles y son a
los que deber enfrentarse un criptoanalista o atacante
que desea romper una cifra o la clave de un usuario.
Curso de Seguridad Informtica.
Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

12

Comparativas de complejidad (1)


Los algoritmos polinmicos y exponenciales se
comparan por su complejidad O(nt).

Polinmico constante
O(1)
Polinmico lineal
O(n)
Polinmico cuadrtico O(n2)
Polinmico cbico
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 se tiene el cuadro:
Curso de Seguridad Informtica.
Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

13

Tabla comparativa de tiempos


Entrada

O(n)

O(n2)

O(n3)

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

41013 aos

n = 103

10-6 seg

10-3 seg

1 seg

Muy grande

Incrementos de un
orden de magnitud

O(2n)

Computacionalmente
imposible

Entrada/109: Para n = 100 O(n2) = 1002/109 = 10-5 seg


Curso de Seguridad Informtica.
Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

14

Problemas de tipo NP
En criptografa nos interesan las funciones f(x) de un solo
sentido, es decir:

Fcil calcular f(x) pero muy difcil calcular f-1(x)


salvo que conozcamos un secreto o trampa
Porque dan lugar a problemas tipo NP, polinomiales no
deterministas, computacionalmente difciles de tratar.
Problema de la mochila
Veremos
Problema de la factorizacin
cada
uno de ellos
Problema del logaritmo discreto
Otros ...
Curso de Seguridad Informtica.
Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

15

El problema de la mochila
Es un problema de tipo NP en el
que el algoritmo debe realizar en
cada paso una seleccin iterativa
entre diferentes opciones.
Enunciado:
Dada una mochila de determinadas dimensiones de alto,
ancho y fondo, y un conjunto de elementos de distintos
tamaos menores que ella y de cualquier dimensin, ... es
posible llenar la mochila (completa) con distintos elementos
de ese conjunto sin repetir ninguno de ellos?

Curso de Seguridad Informtica.


Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

16

Ejemplo del problema de la mochila


S = a 1 + a 2 + a3

A = {a1, a2, a3}

Se incluye a1 en la suma S?

a1

No

Los resultados son todos


distintos: una casualidad

Se incluye a2 en la suma?
S

a2

No

a2

No

Se incluye a3?
a3

S
S1

a3

No

S2

a3

No
S3

S4

a3

No
S5

S6

No
S7

S1 = a1+a2+a3

S2 = a1+a2

S3 = a1+a3

S4 = a 1

S5 = a2+a3

S 6 = a2

S7 = a3

S8 =

S8

Sea una mochila


con 4 elementos
{2, 4, 9, 10}
Cuntas sumas
posibles hay?
Solucin: 24 = 16
, 2, 4, 6,
9, 10, 11, 12,
13, 14, 15, 16,
19, 21, 23, 25.
Repita con
{2, 4, 9, 15}

Hemos tenido que evaluar 23 = 8 valores (carcter exponencial)

Curso de Seguridad Informtica.


Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

17

Inters de las mochilas en criptografa


Por qu tiene inters este problema en criptografa?
a) Es de tipo NP completo: su resolucin por lo general
implica una complejidad exponencial. Luego, ser
difcil de atacar o criptoanalizar.
b) Existe un caso en el que la resolucin es lineal y, si la
solucin existe, es nica. Se da si A = {a1, a2, a3, .., an}
est ordenado de menor a mayor y en donde cada ai es
mayor que la suma de los aj que le preceden.
Esto dar lugar a los criptosistemas de mochila
tramposa que veremos en un prximo captulo.
Curso de Seguridad Informtica.
Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

18

El problema de la factorizacin
Dado un nmero n que es el resultado del producto de
dos primos n = pq, se pide encontrar estos factores.
Cuando el valor n es muy grande, el Problema de la
Factorizacin de Nmeros Grandes PFNG se vuelve
computacionalmente intratable.
No obstante, el caso inverso, dado dos nmeros p y q,
encontrar el resultado pq = n, se trata de un problema
de tipo polinomial.
Este problema se usar en la generacin del par de
claves del sistema de cifra con clave pblica RSA.
Curso de Seguridad Informtica.
Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

19

Tabla de primos del 1 al 1000


2

11

13

17

19

23

29

31

37

41

43

47

53

59

61

67

71

73

79

83

89

97

101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293
307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397
401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499
503 509 521 523 541 547 557 563 569 571 577 587 593 599
601 607 613 617 619 631 641 643 647 653 659 661 673 677 683 691
701 709 711 727 733 739 743 751 757 761 769 773 787 797
809 811 821 823 827 829 839 853 857 859 863 877 881 883 887
907 911 919 929 937 941 947 953 967 971 977 983 991 997

Curso de Seguridad Informtica.


Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

20

Tabla de primos del 1001 al 2000


1009 1013 1019 1021 1031 1033 1039 1049 1051 1061 1063 1069 1087 1091 1093 1097
1103 1109 1117 1123 1129 1151 1153 1163 1171 1181 1187 1193
1201 1213 1217 1223 1229 1231 1237 1249 1259 1277 1279 1283 1289 1291 1297
1301 1303 1307 1319 1321 1327 1361 1367 1373 1381 1399
1409 1423 1427 1429 1433 1439 1447 1451 1453 1459 1471 1481 1483 1487 1489 1493 1499
1511 1523 1531 1543 1549 1553 1559 1567 1571 1579 1583 1597
1601 1607 1609 1613 1619 1621 1627 1637 1657 1663 1667 1669 1693 1667 1699
1709 1721 1723 1733 1741 1747 1753 1759 1777 1783 1787 1789
1801 1811 1823 1831 1847 1861 1867 1871 1873 1877 1879 1889
1901 1907 1913 1931 1933 1949 1951 1973 1979 1987 1993 1997 1999

Curso de Seguridad Informtica.


Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

21

Ejemplo problema factorizacin (1)


Clculo fcil o polinomial (funcin directa)
Calcule a mano los siguientes productos de dos primos y
tome el tiempo aproximado que tarda en la operacin:
a) 1331 b) 113131 c) 1.0131.031
calcule...
No vale usar
calculadora...

A qu conclusiones
puede llegar ahora?

Clculo difcil o no polinomial (funcin inversa)


Usando la criba de Eratstenes, factorice en dos primos los
siguientes nmeros 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 dgitos, en c) de 3 y en d) de 4.

Curso de Seguridad Informtica.


Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

22

Ejemplo problema factorizacin (2)


Clculo fcil o polinomial
a) 1331 b) 113131 c) 10131031
A medida que aumenta el tamao de la entrada, el tiempo de
clculo aumenta proporcionalmente.
Un computador
experimentar lo
mismo....

Clculo difcil o no polinomial


a) 629 b) 17.399 c) 1.052.627
Aqu resulta evidente que el tiempo de clculo (da igual que el
algoritmo sea ste u otro ms depurado y eficaz) aumenta
mucho al incrementar en un dgito los nmeros en cuestin.
Solucin: a), b) y c) son el producto de los nmeros primos
inmediatamente superiores a los de arriba (vase la tabla).

Curso de Seguridad Informtica.


Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

23

El problema del logaritmo discreto


Dado un par de enteros y que pertenecen al Campo
de Galois GF(p), se pide encontrar un entero x de
forma 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 nmeros y x,
encontrar = x mod p es un problema polinomial.
Este problema se usar en la creacin de las claves del
sistema de cifra con clave pblica ElGamal.
Curso de Seguridad Informtica.
Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

24

Ejemplo problema logaritmo discreto (1)


Clculo fcil o polinomial (funcin directa)
Calcule a mano las siguientes exponenciaciones mod p y
tome el tiempo aproximado que tarda en la operacin:
a) 54 mod 7 b) 817 mod 41 c) 9211 mod 251
54 = 625
817 = 2.251.799.813.685.248
9211 = 3.996.373.778.857.415.671.808
Nota: Haciendo uso de la propiedad de reducibilidad del captulo 5,
podr reducir significativamente el tiempo de clculo. No obstante,
este tiempo ser de tipo polinomial segn el tamao de la entrada.

Curso de Seguridad Informtica.


Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

25

Ejemplo problema logaritmo discreto (2)


Clculo difcil o no polinomial (funcin inversa)
Aunque existen varios algoritmos para este tipo de clculos
(al igual que para la factorizacin) use la fuerza bruta que se
explica a continuacin 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
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
Curso de Seguridad Informtica.
Jorge Rami Aguirre

Madrid (Espaa) 2002

En media deber
recorrer la mitad
del espacio...

Tema 6: Teora

26

Logaritmos discretos en p = 13 (1)


log2 1 mod 13 = 0
log2 4 mod 13 = 2
log2 7 mod 13 = 11
log2 10 mod 13 = 10

Es
decir

log2 2 mod 13 = 1
log2 5 mod 13 = 9
log2 8 mod 13 = 3
log2 11 mod 13 = 7

log2 3 mod 13 = 4
log2 6 mod 13 = 5
log2 9 mod 13 = 8
log2 12 mod 13 = 6

20 mod 13 = 1
21 mod 13 = 2
22 mod 13 = 4
23 mod 13 = 8
24 mod 13 = 3
25 mod 13 = 6
26 mod 13 = 12
27 mod 13 = 11
28 mod 13 = 9
29 mod 13 = 5
210 mod 13 = 10
211 mod 13 = 7
Luego, 2 es un generador g en el cuerpo p = 13.
Adems se cumple que ap-1 mod p = a0 mod p = 1.

Curso de Seguridad Informtica.


Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

27

Logaritmos discretos en p = 13 (2)


En p=13, el 2
es generador,
pero no as el
nmero 3...
Luego

30 mod 13 = 1
33 mod 13 = 1
36 mod 13 = 1
39 mod 13 = 1

31 mod 13 = 3
34 mod 13 = 3
37 mod 13 = 3
310 mod 13 = 3

32 mod 13 = 9
35 mod 13 = 9
38 mod 13 = 9
311 mod 13 = 9

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

NE = no existe

Curso de Seguridad Informtica.


Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

28

Hay ms funciones NP?


Existen otros problemas matemticos que dan lugar a
problemas del tipo NP basados en estas funciones
unidireccionales (one way functions) pero las dos
ltimas funciones vistas factorizacin de nmeros
grandes y logaritmo discreto- son las que ms uso
tienen, de momento, en la criptografa.
Algunos de ellos se presentarn en el Tema dedicado
a los Protocolos Criptogrficos.
Fin del Tema 6

Curso de Seguridad Informtica.


Jorge Rami Aguirre

Madrid (Espaa) 2002

Tema 6: Teora

29

También podría gustarte