Vous êtes sur la page 1sur 26

Universidad Tcnica de Manab

Facultad de Ciencias Informticas


Carrera de Ingeniera en Sistemas Informticas
Seguridad Informtica
GRUPO # 5
Tema:
Introduccin a la teora de la complejidad de los algoritmos.
Introduccin a los criptosistemas clsicos
Semestre:
Sptimo Semestre A
Integrantes:
Chica chica Leonardo Fabricio
Intriago Macas Jaqueline Maribel
Urdnigo Vinces Jonathan Oswaldo
Docente:
Ing. Christian Torres Moran.


Portoviejo, 29 de mayo del 2013


MAYO SEPTIEMBRE 2013




2






Misin y Visin de la Universidad Tcnica de Manab




VISIN
Ser una Institucin Universitaria, lder y referente de la Educacin Superior en el
Ecuador, promoviendo la creacin, desarrollo, transmisin y difusin de la ciencia,
la tcnica y la cultura, con reconocimiento social y proyeccin Regional y Mundial.



MISIN
Formar acadmicos, cientficos y profesionales responsables, humansticos, ticos
y solidarios, comprometidos con los objetivos del desarrollo Nacional, que
contribuyan a la solucin de los problemas del pas como Universidad de docencia
con investigacin, capaces de generar y aplicar nuevos conocimientos,
fomentando la promocin y difusin de los saberes y las culturas, previstos en la
Constitucin de la Repblica del Ecuador.











3











Misin y Visin de la Facultad de Ciencias Informticas


VISIN

Ser una unidad con alto prestigio acadmico, con eficiencia, transparencia y calidad
en la educacin, organizada en sus actividades, protagonista del progreso Regional
y Nacional.


MISIN

Formar profesionales eficientes e innovadores en el campo de la Ciencias
Informticas, que con honestidad, equidad y solidaridad, den respuesta a las
necesidades de la sociedad elevando su nivel de vida.








4




NDICE



Introduccin a la teora de la complejidad de los algoritmos......5
Introduccin a los criptosistemas clsicos.11
Argumentacin..26
Bibliografa..26


















5

INTRODUCCIN A LA TEORA DE LA COMPLEJIDAD DE
LOS ALGORITMOS
En la ciencia de la computacin los algoritmos son ms importantes que los LP o que
las computadoras; la solucin de un problema haciendo uso de las computadoras requiere
por una parte un algoritmo o mtodo de resolucin y por otra
un programa o codificacin del algoritmo en un LP.
Ambos componentes tienen importancia; pero la del algoritmo es absolutamente
indispensable; sabemos que un algoritmo es una secuencia de pasos para resolver un
problema, sus caractersticas son:
1. Independiente: Del LP y de la mquina.
2. Definido: De pasos claros y concretos.
3. Finito: En el nmero de pasos que usar.
4. Preciso: Cada paso arroja un clculo correcto.
5. Recibe datos: Debe poseer datos de entrada.
6. Arroja informacin: Debe recoger informacin de salida
Debemos saber que una solucin es un conjunto nico, pero no es el nico conjunto de
pasos que entregan la solucin, existen muchas alternativas de solucin y estas alternativas
pueden diferir por:
Nmero de pasos
Estructuras
Ahora que sabemos que existen muchas alternativas de solucin para un problema,
debemos seleccionar el algoritmo ms eficiente, el mejor conjunto de pasos, el que tarde
menos en ejecutarse, que tenga menos lneas de cdigo.
Esta seleccin puede ser ejecutada a simple vista con slo observar la cantidad de lneas
del programa, pero cuando el programa crece se requiere una medicin ms exacta y
apropiada, para esto se realizan ciertas operaciones matemticas que establecen
la eficiencia terica del programa, al estudio de estos casos se denomina Complejidad
Algortmica.
COMPLEJIDAD ALGORTMICA
Un algoritmo ser ms eficiente comparado con otro, siempre que consuma
menos recursos, como el tiempo y espacio de memoria necesarios para ejecutarlo.
La eficiencia de un algoritmo puede ser cuantificada con las siguientes medidas de
complejidad:
Complejidad Temporal o Tiempo de ejecucin: Tiempo de cmputo necesario para
ejecutar algn programa.
Complejidad Espacial: Memoria que utiliza un programa para su ejecucin, La eficiencia
en memoria de un algoritmo indica la cantidad de espacio requerido para ejecutar el
algoritmo; es decir, el espacio en memoria que ocupan todas las variables propias al
algoritmo.
6

Para calcular la memoria esttica de un algoritmo se suma la memoria que ocupan las
variables declaradas en el algoritmo.
Para el caso de la memoria dinmica, el clculo no es tan simple ya que, este depende de
cada ejecucin del algoritmo.
TIEMPO DE EJECUCIN
El tiempo de Ejecucin de un programa se mide en funcin de N, lo que
designaremos como T(N).

Esta funcin se puede calcular fsicamente ejecutando el programa acompaados
de un reloj, o calcularse directamente sobre el cdigo, contando las instrucciones
a ser ejecutadas y multiplicando por el tiempo requerido por cada instruccin. As,
un trozo sencillo de cdigo como:
S1;
For (x = 0; x < N; x++)
S2;
DEMANDA: T(N) = T1 + T2 * N

Donde t1 es el tiempo que lleva ejecutar la serie S1 de sentencias, y t2 es el que lleva
la serie S2.

Habitualmente todos los algoritmos contienen alguna sentencia condicional
o selectiva, haciendo que las sentencias ejecutadas dependan de la condicin
lgica, esto hace que aparezca ms de un valor para T(N), es por ello que
debemos hablar de un rango de valores:
Tmin(N) T(N) Tmax(N)
Estos extremos son llamados "el peor caso" y "el mejor caso" y entre ambos
se puede hallar "el caso promedio" o el ms frecuente, siendo este el ms
difcil de estudiar; nos centraremos en el "el peor caso" por ser de fcil clculo
y se acerca a "el caso promedio", brindndonos una medida pesimista pero
fiable.

Toda funcin T(N) encierra referencias al parmetro N, y a una serie de
constantes Ti dependientes de factores externos al algoritmo. Se tratar de
analizar los algoritmos dndoles autonoma frente a estos factores externos,
buscando estimaciones generales ampliamente vlidas, a pesar de ser
demostraciones tericas.




7

ASINTOTAS

El anlisis de la eficiencia algortmica nos lleva a estudiar el comportamiento de
los algoritmos frente a condiciones extremas. Matemticamente hablando,
cuando N tiende al infinito , es un comportamiento asinttico.

Sean g(n) diferentes funciones que determinan el uso de recursos, pudiendo existir
infinidad de funciones g.

Estas funciones g sern congregadas en familias, usando como criterio de
agrupacin su comportamiento asinttico, este comportamiento asinttico es
similar cuando los argumentos toman valores muy grandes.


Una familia de funciones que comparten un mismo comportamiento asinttico
ser llamada un Orden de Complejidad. Estas familias se designan con O( ).

Para cada uno de estos conjuntos se suele identificar un miembro f(n) que se utiliza
como representante de la familia, hablndose del conjunto de funciones g que son
del orden de f(n), denotndose como:

g O(f(n)), g est incluido en f(n)

Frecuentemente no es necesario conocer el comportamiento exacto, basta conocer
una cota superior, es decir, alguna funcin que se comporte an peor.

El conjunto O(f(n)) es el de las funciones de orden de f(n), que se define como:
O(f(n))= { g | $ k +, $ n0 tales que, n > n0, g(n) kf(n) }
O(f(n)) est formado por aquellas funciones g(n) que crecen a un ritmo menor o
igual que el de f(n).
De las funciones g que forman este conjunto O(f(n)) se dice que estn dominadas
asintticamente por f, en el sentido de que para N suficientemente grande, y salvo
una constante multiplicativa k, f(n) es una cota superior de g(n).

RDENES DE COMPLEJIDAD

La familia O(f(n)) define un Orden de Complejidad. Elegiremos como
representante de este Orden de Complejidad a la funcin f(n) ms sencilla
perteneciente a esta familia.

Las funciones de complejidad algortmica ms habituales en las cuales el nico
factor del que dependen es el tamao de la muestra de entrada n, ordenadas de
mayor a menor eficiencia son:
8

O(1) Orden constante
O(log n) Orden logartmico
O(n) Orden lineal
O(n log n) Orden cuasi-lineal
O(n2) Orden cuadrtico
O(n3) Orden cbico
O(na) Orden polinmico
O(2n) Orden exponencial
O(n!) Orden factorial

Se identifica una Jerarqua de Ordenes de Complejidad que coincide con el orden de la
tabla mostrada; jerarqua en el sentido de que cada orden de complejidad inferior tiene
a las superiores como subconjuntos.
O(1): Complejidad constante. Cuando las instrucciones se ejecutan una vez.
O(log n): Complejidad logartmica. Esta suele aparecer en determinados
algoritmos con iteracin o recursin no estructural, ejemplo la bsqueda binaria.
O(n): Complejidad lineal. Es una complejidad buena y tambin muy usual.
Aparece en la evaluacin de bucles simples siempre que la complejidad de las
instrucciones interiores sea constante.
O(n log n): Complejidad cuasi-lineal. Se encuentra en algoritmos de tipo divide y
vencers como por ejemplo en el mtodo de ordenacin quicksort y se considera
una buena complejidad. Si n se duplica, el tiempo de ejecucin es ligeramente
mayor del doble.
O(n2): Complejidad cuadrtica. Aparece en bucles o ciclos doblemente anidados.
Si n se duplica, el tiempo de ejecucin aumenta cuatro veces.
O(n3): Complejidad cbica. Suele darse en bucles con triple anidacin. Si n se
duplica, el tiempo de ejecucin se multiplica por ocho. Para un valor grande de n
empieza a crecer dramticamente.
O(na): Complejidad polinmica (a > 3). Si a crece, la complejidad del programa
es bastante mala.
O(2n): Complejidad exponencial. No suelen ser muy tiles en la prctica por el
elevadsimo tiempo de ejecucin. Se dan en subprogramas recursivos que
contengan dos o ms llamadas internas. N

9

Algoritmos Polinomiales: Aquellos que son proporcionales a n
a
. Son en general
factibles o aplicables, los problemas basados en estos algoritmos son solucionables.
Algoritmos Exponenciales: Aquellos que son proporcionales a k
n
, k > 2. En general
no son factibles salvo un tamao de entrada n exageradamente pequeo, pero
generalmente pertenecen a un universo de problemas de los cuales el cmputo se
hace imposible.
Reglas de la Notacin Asinttica
1. Regla de la suma
Si T1(n) y T2(n) son las funciones que expresan los tiempos de ejecucin de dos
fragmentos de un programa, y se acotan de forma que se tiene:
T1(n) = O(f1(n)) y T2(n) = O(f2(n))
Se puede decir que:
T1(n) + T2(n) = O(max(f1(n), f2(n)))

2. Regla del producto
Si T1(n) y T2(n) son las funciones que expresan los tiempos de ejecucin de dos
fragmentos de un programa, y se acotan de forma que se tiene:
T1(n) = O(f1(n)) y T2(n)=O(f2(n))
Se puede decir que:
T1(n) T2(n) = O(f1(n) f2(n))

ESTIMACIN DE LA COMPLEJIDAD EN ALGORITMOS NO RECURSIVOS
Asignaciones y expresiones simples (=)
El tiempo de ejecucin de toda instruccin de asignacin simple, de la evaluacin de una
expresin formada por trminos simples o de toda constante es O(1).
Secuencias de instrucciones (;)
El tiempo de ejecucin de una secuencia de instrucciones es igual a la suma de sus tiempos
de ejecucin individuales. Para una secuencia de dos instrucciones S1 y S2 el tiempo de
ejecucin est dado por la suma de los tiempos de ejecucin de S1 y S2:
T(S1 ; S2) = T(S1) + T(S2)
Aplicando la regla de la suma:
O(T(S1 ; S2)) = max(O( T(S1), T(S2) ))
Instrucciones condicionales (IF, SWITCH-CASE)
El tiempo de ejecucin para una instruccin condicional IF-THEN es el tiempo necesario
para evaluar la condicin, ms el requerido para el conjunto de instrucciones que se
ejecutan cuando se cumple la condicin lgica.
T(IF-THEN) = T(condicin) + T(rama THEN)
10

Aplicando la regla de la suma:
O(T(IF-THEN)) = max(O( T(condicin), T(rama THEN) ))
El tiempo de ejecucin para una instruccin condicional de tipo IF-THEN-ELSE resulta de
evaluar la condicin, ms el mximo valor del conjunto de instrucciones de las
ramas THEN y ELSE.
T(IF-THEN-ELSE) = T(condicin) + max(T(rama THEN), T(rama ELSE))
Aplicando la regla de la suma, su orden est dada por la siguiente expresin:
O(T(IF-THEN-ELSE)) = O( T(condicin)) + max(O(T(rama THEN)), O(T(rama
ELSE)) )
Aplicando la regla de la suma:
O(T(IF-THEN-ELSE)) = max(O( T(condicin)), max(O(T(rama THEN)), O(T(rama
ELSE)) ))
El tiempo de ejecucin de un condicional mltiple (SWITCH-CASE) es el tiempo necesario
para evaluar la condicin, ms el mayor de los tiempos de las secuencias a ejecutar en
cada valor condicional.
Instrucciones de iteracin (FOR, WHILE-DO, DO-WHILE)
El tiempo de ejecucin de un bucle FOR es el producto del nmero de iteraciones por la
complejidad de las instrucciones del cuerpo del mismo bucle.
Para los ciclos del tipo WHILE-DO y DO-WHILE se sigue la regla anterior, pero se
considera la evaluacin del nmero de iteraciones para el peor caso posible. Si existen
ciclos anidados, se realiza el anlisis de adentro hacia fuera, considerando el tiempo de
ejecucin de un ciclo interior y la suma del resto de proposiciones como el tiempo de
ejecucin de una iteracin del ciclo exterior.
Llamadas a procedimientos
El tiempo de ejecucin est dado por, el tiempo requerido para ejecutar el cuerpo
del procedimiento llamado. Si un procedimiento hace llamadas a
otros procedimientos "no recursivos", es posible calcular el tiempo de ejecucin de cada
procedimiento llamado, uno a la vez, partiendo de aquellos que no llaman a ninguno.
- Ejemplo: funcin no recursiva que halla el factorial de un nmero n cualquiera
int factorial(int n) O(1)
{
int fact = 1; O(1)
for(int i = n; i > 0; i--) O(n)
fact = fact * i; O(1)
return fact; O(1)
}
Su complejidad es lineal O(n), debido a que se tiene un bucle FOR cuyo nmero de
iteraciones es n.
11

INTRODUCCIN A LOS CRIPTOSISTEMAS
CLSICOS
Definicin de la criptografa
La palabra criptografa proviene del griego kryptos que significa oculto, y graphia,
que significa escritura, y su definicin segn el diccionario es el arte de escribir clave
secreta o de un modo enigmtico.
Esta definicin puede ser muy interesante y llamativa, peor resulta muy poco ajustada
para los tiempos actuales.
Una definicin ms tcnica de criptografa seria la siguiente:
Rama inicial de las matemticas y en la actualidad tambin de la informtica y la
telemtica, que hace uso de mtodos y tcnicas con el objeto principal de cifrar, y por
tanto proteger, un mensaje o archivo por medio de un algoritmo, usando una o ms
claves.
Esto dar lugar a diferentes tipos de sistemas de cifra, denominados criptosistemas que nos
permiten asegurar al menos tres de los cuatros aspectos bsicos de la seguridad
informtica: la complejidad o secreto de mensaje, la integridad del mensaje y autenticidad
del emisor, as como el no repudio mutuo entre el emisor (cliente) y receptor (servidor).
CRIPTOSISTEMAS
Un criptosistemas es una agrupacin de:
Un conjunto de mensajes sin cifrar (M).
Un conjunto de mensajes cifrados (C)
Un conjunto de claves (K)
Un conjunto de transformaciones de cifrado (Ek)
Un conjunto de transformaciones de descifrado (Dk)
Cualquier criptosistemas debe cumplir la condicin: Dk (Ek(m))=m
Es decir si aplicamos la transformacin de descifrado al mensaje cifrado, usando la
clave adecuada (k), obtenemos de nuevo el mensaje en claro m.

12

El algoritmo de cifrado es una tcnica para ocultar un mensaje y evitar que sea legible si
ste es interceptado por una persona no autorizada. Por lo tanto, el objetivo bsico es
mantener seguros unos datos dentro de un entorno como puede ser una lnea de
transmisin o un sistema de almacenamiento que ya hemos visto es inseguro. Como
proteccin utilizaremos mtodos o algoritmos para cifrar la informacin. En una primera
aproximacin, en este caso bajo el punto de vista histrico, clasificaremos estos mtodos
de cifra como Criptosistemas Clsicos y Criptosistemas Modernos.
Tipos de Cifrados Clsicos
Se puede hacer una gran divisin de los cifrados segn el tipo de operacin que se realiza
en el cifrado. Dada la caracterstica finita del alfabeto y la hiptesis de no variacin de
la longitud del texto, existen dos opciones para el cifrado.

La primera, llamada sustitucin, consiste en sustituir las unidades del texto original por
otras; la segunda llamada transposicin, consiste en crear el texto cifrado simplemente
desordenando las unidades que forman el texto original.
Los algoritmos de sustitucin y los cdigos, preservan el orden de los smbolos en claro,
pero los disfrazan. A diferencia de stos, los algoritmos de transposicin, reordenan las
letras pero no las disfrazan.

13

Ejemplo de transposicin:
TU SECRETO ES TU PRISIONERO; SI LO SUELTAS, T ERES SU PRISIONERO


Ejemplo de sustitucin:
ENCONTRMONOS A MEDIANOCHE

A D H I K M O R S U W Y Z

V X B G J C Q L N E F P T

USMQZLUCQSQN V CUXGVSQMBU
Este es un ejemplo ilustrativo claro de una funcin matemtica; a cada letra del alfabeto
llano (elemento del dominio) le hace corresponder una letra del alfabeto cifrado
(elemento del rango o conjunto imagen de la funcin). Por otra parte, para el proceso de
descifrado es necesario contar con que la funcin sea biyectiva para poder ser inversible.
Los sistemas criptogrficos donde la clave de descifrado se pueden deducir de la clave de
cifrado se llaman simtricos o de clave secreta.
Los criptgrafos a menudo piensan en trminos de alfabeto llano o claro, el alfabeto que
se usa para el mensaje original, y alfabeto cifrado, las letras que sustituyen a las del alfabeto
llano.
Cada una de las cifras puede ser considerada en trminos de un mtodo de codificacin
general, conocido como el algoritmo, y una clave, que especifica los detalles exactos de
una codificacin particular. En los casos siguientes, el algoritmo conlleva sustituir cada
letra del alfabeto llano por una letra del alfabeto cifrado y el alfabeto cifrado puede
consistir de cualquier combinacin del alfabeto llano.
El algoritmo de transposicin ms comn es el de tipo columnar; la clave del cifrado
debe ser una palabra que no tenga ninguna letra repetida, en el ejemplo que se presenta
a continuacin la clave es la palabra MEGABUCK. El propsito de la clave es el de
numerar las diferentes columnas que se formarn, de forma que la columna 1 es aquella
que queda bajo la letra de la clave ms prxima al principio del alfabeto y as
sucesivamente. El texto en claro se escribe debajo de la clave en renglones horizontales;
14

el texto cifrado se lee por columnas, comenzando por la columna cuya letra clave tiene
el menor valor.
Texto llano: please transfer one million dollars to my
Clave de cifrado: M E G A B U C K
M E G A B U C K
7 4 5 1 2 8 3 6
p l e a s e t r
a n s f e r o n
e m i l l i o n
d o l l a r s t
o m y a b c d e
Texto cifrado: afllaselabtoosdlnmomesilyrnntepaedoerirc
Para desbaratar un cifrador de transposicin, el criptoanalista debe estar primero enterado
de que se trata efectivamente de un cifrado de transposicin. Esto puede comprobarse de
una forma relativamente sencilla, observando la frecuencia de las letras e, t, a, o, i, n, ...
ya que en los cifrados de este tipo se cambia de lugar las letras, pero no se cambian las
letras propiamente, por lo que si la frecuencia de aparicin de las letras se corresponde
con la observada para el lenguaje natural, es decir, la e es la que ms aparece, ... entonces
se podra afirmar con mucha seguridad que el cifrador es de transposicin y no de
sustitucin.
El siguiente paso consistira en determinar cul es el nmero de columnas. En muchos casos
una palabra o frase probable, puede llegar a adivinarse a partir del contexto del mensaje.
Si el criptoanalista sabe, o supone que una determinada palabra o frase est contenida en
el mensaje, entonces no le costar mucho esfuerzo determinar el nmero de columnas.
El ltimo paso consistira en ordenar las columnas.
CIFRADO DE CESAR
El algoritmo de Csar, llamado as porque es el que empleaba Julio Csar para enviar
mensajes secretos, es uno de los algoritmos criptogrficos ms simples. Es un algoritmo
de sustitucin que consiste en sumar 3 al nmero de orden de cada letra. De esta forma
a la A le corresponde la D, a la B la E, y as sucesivamente. Si asignamos a cada letra un
nmero (A = 0, B = 1. . . ), y consideramos un alfabeto de 27 letras, la transformacin
criptogrfica sera:
y = T3(x) = (x + 3) mod 27
15

Obsrvese que este algoritmo ni siquiera posee clave, puesto que la transformacin
siempre es la misma. Obviamente, para descifrar basta con restar 3 al nmero de orden
de las letras del criptograma. (o en trminos de funciones inversas: T3-1(x) = (x 3)
mod 27)
NOTA IMPORTANTE: La eleccin del tamao del alfabeto es una decisin que tiene
implicaciones. En la prctica es conveniente contar con un alfabeto con un nmero
primo de letras.
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
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
vamos a cifrar el siguiente mensaje:
Texto llano: ZAPATO
Podemos hacerlo manualmente utilizado la frmula anteriormente dada:
1. Reemplazar x por el valor de la primera letra, en este caso Z equivale a 26.
2. Realizar la operacin indicada:
T3(Z) = (26 + 3) mod 27 = 2 = C
3. Realizar la operacin con las letras restantes.
Texto cifrado: CDSDWR
El sistema anterior se generaliza de forma evidente a Tn(x) = (x + n) mod 27
CIFRADO AFN
Es el caso general del algoritmo de Csar. Su transformacin sera:
T(a,b) (x) = (ax + b) mod N
siendo a y b dos nmeros enteros menores que el cardinal N del alfabeto, y cumpliendo
que mcd(a, N) = 1. La clave de cifrado k viene entonces dada por el par (a, b). El
algoritmo de Csar sera pues una transformacin afn con k = (1; 3).
Para descifrar un mensaje hay que utilizar la funcin inversa: T(a,b)-1(x) = ax + b;
donde a = a-1 mod N; b= a-1b mod N.
NOTA IMPORTANTE: Es necesario que N sea primo para que exista y sea nico a-1.
Puede ser interesante hallar la grfica de la transformacin y de su inversa para entender
estos procedimientos.
La simplicidad y fortaleza de los cifrados de sustitucin hicieron que stos dominaran el
arte de la escritura secreta a lo largo del primer milenio de nuestra era.
16

LA CIFRA PIGPEN
La cifra de sustitucin monoalfabtica perdur a travs de los siglos en formas diversas.
Por ejemplo la cifra de los templarios:
El Temple era una orden de monjes fundada en el siglo XII., cuya misin principal era
asegurar la seguridad de los peregrinos en Tierra Santa. Rpidamente, los templarios se
desentendieron de este objetivo, y se enriquecieron considerablemente hasta el punto de
llegar a ser tesoreros del rey y del Papa. Para codificar las letras de crdito que ellos
intercambiaban, ellos remplazaban cada letra por un smbolo, siguiendo la sustitucin
siguiente :


Otro ejemplo es la cifra Pigpen fue utilizada por los masones en el siglo XVIII para
preservar la privacidad de sus archivos, y todava la usan los nios hoy en da. La cifra no
sustituye una letra por otra, sino que sustituye cada letra por un smbolo de acuerdo al
siguiente modelo:

Para codificar una letra particular, encuentre su posicin en una de las cuatro cuadrculas
y luego dibuje esa porcin de la cuadrcula para representar esa letra. Por tanto:

Si conoce la clave, la cifra Pigpen es fcil de descifrar. Si no, se puede descifrar fcilmente
con el:

Los criptoanalistas rabes lograron encontrar un mtodo para descifrar la cifra de
sustitucin monoalfabtica (un nico alfabeto cifrado), aunque no se sabe quin fue el
primero en darse cuenta de que la variacin en la frecuencia de las letras poda
explotarse para descifrar.
17

Una de las mejoras ms sencillas de la seguridad de la cifra de sustitucin monoalfabtica
fue la introduccin de nulos, es decir, smbolos o letras que no eran sustitutos de letras
autnticas, sino meros huecos que no representaban nada. Por ejemplo, era posible
sustituir cada letra llana pon un nmero entre 0 y 99, lo que dejaba 73 nmeros que no
representaban nada y que podan ser salpicados aleatoriamente y con frecuencias
variables por todo el texto cifrado.
EL CIFRADO BIFIDO O DE POLIBIO
En el siglo II a.C. Polibio fue miembro de la Liga Aquea dirigida por Filipmenes que fue
derrotada por los romanos en Pidna, Polibio fue llevado como rehn a Roma para ser
maestro de Escipin Emiliano. Presenci la destruccin de Cartago y posiblemente estuvo
en el sitio de Numancia. Escribi cuarenta libros donde recoge sus "Historias",
conservndose slo cinco en los que se manifiesta su deseo de apartar de los
acontecimientos todo resto de mitologa, utopa o poesa.
Polibio est en el origen de un mtodo muy original para cifrar (l describa un sistema
de seales a distancia basado en el empleo de antorchas). Para esto, se disponen las letras
en un cuadrado 5x5 (Al ser un cuadro slo de 5x5 nos vemos obligados a cifrar de la
misma forma la I y la J. El contexto nos permitir distinguir cul de las dos letras se
pretenda cifrar):
1 2 3 4 5
1 A B C D E
2 F G H I / J K
3 L M N O P
4 Q R S T U
5 V W X Y Z
Se remplaza entonces cada letra por sus coordenadas en el cuadrado, escribiendo en
primer lugar la fila y luego la columna. Por ejemplo, la A es reemplazada por 11, la B es
reemplazado por 12, la F por 21, la M por 32.... (en la idea de Polibio para transmitir la
letra R a distancia se encendan las cuatro primeras antorchas y las dos ltimas)
Si nosotros codificamos
LONGTEMPS JE ME SUIS COUCHE DE BONNE HEURE
Obtenemos:
313433224415323543 2415 3215 133445132315 1415 1234333315 2315454215
El cuadrado de Polibio posee algunas propiedades interesantes. En particular,
reduce el nmero de smbolos utilizados para la codificacin, lo que hace su anlisis ms
difcil. Adems altera la frecuencia de los caracteres a diferencia de lo que ocurre por
ejemplo con los cifrados monoalfabticos. Es por lo que lo hace un precursor de los
mtodos modernos. Remarquemos que podemos llenar el cuadrado de manera diferente
18

de como se ha hecho aqu, por ejemplo comenzando poniendo una palabra clave y luego
el resto de las letras en orden alfabtico.
Observemos un ejemplo donde la clave para el alfabeto desordenado es
DIPLOMA:
* 1 2 3 4 5
1 D I/J P L O
2 M A B C E
3 F G H K N
4 Q R S T U
5 V W X Y Z

Si por ejemplo el texto llano es: VEN A LAS TRES
El equivalente numrico es: 51 25 35 22 14 22 43 44 42 25 43
En el cifrado bfido lo dividimos en dos partes quedando:
5 1 2 5 3 5 2 2 1 4 2
2 4 3 4 4 4 2 2 5 4 3
Si ahora leemos los nmeros como columnas en lugar de por filas resulta:
52 14 23 54 34 54 22 22 15 44 23
Y volviendo a consultar la tabla resulta en el mensaje cifrado: WLBYKYAAOTB
Admite ms variaciones como por ejemplo dividir la lista en 3, 4, ...n partes.
El cuadrado de Polibio se utiliz en los siglos XIX y XX por los nihilistas rusos.
LA CIFRA PLAYFAIR
La cifra Playfair se utiliz durante las dos guerras mundiales y est basado en el cuadrado
de Polibio, fue popularizada por Lyon Playfair, primer barn Playfair de St. Andrews,
pero fue inventada por sir Charles Wheatstone, uno de los pioneros del telgrafo elctrico.
Los dos hombres vivan cerca, cada uno a un lado del puente de Hammersmith, y se
reunan a menudo para hablar de sus ideas sobre la criptografa.
La cifra sustituye cada par de letras de texto llano con otro par de letras. Para codificar y
transmitir un mensaje, el emisor y el receptor deben acordar primero una palabra clave.
19

Por ejemplo, podemos utilizar el propio nombre de Whetstone, CHARLES, como clave.
A continuacin, antes de codificar, las letras del alfabeto se escriben en un cuadrado de 5
x 5, comenzando con la palabra clave, y combinando las letras I y J en un solo elemento:

A continuacin, se divide el mensaje en pares de letras o dgrafos. Las dos letras de todos
los dgrafos deben ser diferentes, lo que se consigue en el ejemplo siguiente insertando
una x adicional entre las dos m de hammersmith, y se aade una x adicional al final para
convertir en un dgrafo la letra final que queda sola:
Texto llano: meet me at hammersmith bridge tonight
Texto llano en dgrafos: me-et-me-at-ha-mx-me-rs-mi-th-br-id-ge-to-ni-gh-tx
Ahora puede comenzar la codificacin. Todos los dgrafos caen en una de estas tres
categoras: ambas letras estn en la misma fila, o en la misma columna o en ninguna de
las dos. Si ambas letras estn en la misma fila, son reemplazadas por la letra que queda a
la derecha de cada una de ellas; as, mi se convierte en NK. Si una de las letras est al final
de la fila, es reemplazada por la letra que hay al principio de la fila; por ejemplo, ni se
convierte en GK. Si ambas letras estn en la misma columna, son reemplazadas por la letra
que hay debajo de cada una de ellas; as pues ge se convierte en OG. Si una de las letras
est en la parte inferior de la columna, es reemplazada por la letra de la parte superior de
la columna, as pues, ve se convierte en CG.
Si las letras del dgrafo no estn ni en la misma fila ni en la misma columna, la codificacin
se rige por una regla diferente. Para codificar la primera letra, hay que mirar en su fila
hasta llegar a la columna que contiene la segunda letra; la letra que hay en esa interseccin
reemplaza a la primera letra. Para codificar la segunda letra, mirar en su fila hasta llegar a
la columna que contiene a la primera letra, la letra que hay en la interseccin reemplaza
a la segunda letra. Por tanto, me se convierte en GD y et se convierte en DO. La
codificacin completa es:
Texto llano en dgrafos: me et me at ha mx me rs mi th br id ge to ni gh tx
Texto cifrado: GD DO GD RQ AR KY GD HD NK PR DA MS OG UP GK IC QY
El receptor, que tambin conoce la palabra clave, puede descifrar fcilmente el texto
cifrado simplemente invirtiendo el proceso: por ejemplo, las letras cifradas que estn en
la misma fila se descifran reemplazndolas por la letra que haya a la izquierda de cada
una de ellas.
La cifra de Playfair recurre al cuadrado de Polibio para su definicin. Sin embargo, es
posible encontrar una transformacin bialfabtica para su definicin.

20

CIFRADOS POLIALFABTICOS
Hacia 1460 Len Battista Alberti, una de las figuras principales del Renacimiento,
propuso utilizar dos o ms alfabetos cifrados, alternando entre ellos durante la
codificacin, sin embargo no logr desarrollar su concepto y convertirlo en un sistema
de codificacin plenamente formado.
Cifra de Vigenre (Vigenre fue un diplomtico francs nacido en 1523)
En la cifra de Vigenre se utilizan no uno, sino 26 alfabetos cifrados (cifrado
polialfabtico), cada uno de ellos comenzando en la letra siguiente del anterior. La
naturaleza polialfabtica es lo que le da su fuerza, pero tambin hace que sea mucho ms
complicada de usar.
La cifra resulta inexpugnable para el anlisis de frecuencia, pues una misma letra que
aparezca varias veces en el texto cifrado puede representar en cada ocasin una letra
diferente del texto llano y a su vez una letra que aparezca varias veces en el texto llano
puede estar representada por diferentes letras en el texto cifrado.
Para descifrar un mensaje, el receptor necesita saber que lnea del cuadro Vigenre ha sido
utilizada para codificar cada letra, de manera que tiene que haber un sistema acordado
(clave) para cambiar de lnea.
Para ilustrar como se utiliza una clave con el cuadro Vigenre vamos a cifrar la frase desve
tropas a la loma este, utilizando la clave HIELO. Para empezar, se deletrea la clave sobre
el mensaje, repitindola las veces que sea necesario hasta que cada letra del mensaje quede
asociada con una letra de la clave.
Clave H I E L O H I E L O H I E L O H I E L O H I E
Texto llano d e s v i e t r o p a s a l a l o m a e s t e
Para cifrar la primera letra, d, hay que comenzar por identificar la letra clave que hay
sobre ella, H, que a su vez define una lnea particular en el cuadro Vigenre. La lnea que
comienza por H, la lnea 7, es el alfabeto cifrado que se utilizar para encontrar la letra
que sustituir a la d del texto llano. Observamos dnde se cruza la columna que comienza
por d con la lnea que comienza por H y resulta ser la letra K. Por consiguiente, a esa letra
d del texto llano la representa la K en el texto cifrado.. Para codificar la segunda letra del
mensaje, e, repetimos el proceso. La letra clave que hay sobre la e es la I, as, que la
codificamos mediante una lnea diferente del cuadro de Vigenre: la lnea I (lnea 8), que
es un nuevo alfabeto cifrado. Para codificar la e observamos dnde se cruza la columna
que empieza por e con la lnea que comienza por I, y resulta ser la letra M
Texto cifrado KMWGWLBV Z D HAE T O SWQ L S Z B I
Una palabra clave ms larga, una frase clave, introducira ms lneas en el proceso de
codificacin e incrementara la complejidad de la cifra.
El siguiente muestra un cuadro de Vigenre

a b c d e f g h i j k l m n o p q r s t u v x y z
21


La debilidad fundamental de la cifra Vigenre es su naturaleza cclica. Si la clave tiene cinco
letras, entonces cada cinco letras del texto llano est codificad segn el mismo alfabeto
cifra. Si el criptoanalista puede identificar la longitud de la clave, el texto puede ser tratado
como una serie de cinco cifras monoalfabticas, y cada una de ellas se puede descifrar con
el anlisis de frecuencia.
CIFRADO DE VERNAM, DE CUADERNO DE USO NICO O DE CINTA
ALEATORIA
Para evitar el inconveniente del sistema de Vigenre, en 1917 el ingeniero americano
Vernan, propone un sistema de sustitucin polialfabtico de gran importancia en la
criptografa, pues es el nico que se demuestra matemticamente perfecto. En l
podemos abordar cuestiones probabilsticas, en concreto sobre la generacin de
nmeros aleatorios.
Conocida el tamao, k, del mensaje que deseamos cifrar, consideramos una sucesin
finita de k de variables aleatorias independientes e idnticamente distribuidas segn una
distribucin equiprobable sobre Zm, que ser la clave usada. Entonces realizaremos una
suma mdulo m entre cada letra del mensaje con cada letra de esta sucesin de claves.
22

Las mejores claves aleatorias se crean utilizando procesos fsicos naturales como la
radiactividad, que se sabe exhibe una conducta verdaderamente aleatoria. El criptgrafo
podra colocar algo de material radiactivo en una banqueta y detectar su emisin con
un contador Geiger.
Las comunicaciones militares requeran velocidad y simplicidad, ya que podan enviar y
recibir cientos de mensajes cada da, por lo que los mandos militares se mostraban
reticentes a adoptar la cifra polialfabtica, a causa de su complejidad y buscaron formas
intermedias, que fueran ms difciles de descifrar que las monoalfabticas pero ms
sencillas que una cifra polialfabtica.
As surgi la cifra de sustitucin homofnica. En ella cada letra es reemplazada por una
variedad de sustitutos, y el nmero de sustitutos potenciales es proporcional a la
frecuencia de la letra. Por ejemplo, la letra a supone el 8% de todas las letras del ingls
escrito, de manera que asignaramos ocho smbolos para representarla. Cada vez que
apareciese una a en el texto llano sera reemplazada en el texto cifrado por uno de los
ocho smbolos elegido al azar, de forma que al final de la codificacin cada smbolo
constituira aproximadamente el 1% del texto codificado.
La cifra ADFGVX
En la cifra ADFGVX hay sustitucin y transposicin. La codificacin comienza dibujando
una cuadrcula de 6x6, y llenando los 36 cuadrados con una disposicin aleatoria de las
26 letras y los 10 dgitos. Cada lnea y cada columna de la cuadrcula se identifica con una
de las seis letra A, D, F , G, V o X. La disposicin de los elementos de la cuadrcula funciona
como parte de la clave, de modo que el receptor necesita conocer los detalles de la
cuadrcula para poder descifrar los mensajes.
A D F G V X
A 8 p 3 d 1 n
D l t 4 o a h
F 7 k b c 5 z
G j u 6 w g m
V x s v i r 2
X 9 e y 0 f q
La primera fase de la codificacin es tomar cada letra del mensaje, localizar su posicin en
la cuadrcula y sustituirla con las letras que dan nombre a sus lnea y su columna. Por
ejemplo, 8 sera sustituido por AA, y p sera reemplazado por AD. Veamos un mensaje
corto codificado segn este sistema.
Texto llano: ven a las 10 de la noche
Texto cifrado fase 1: VF XD AX DV DA DV VD AV XG AG XD DA DV AX DG FG DX XD
Hasta ahora, es una simple cifra de sustitucin monoalfabtica, y bastara un anlisis de
frecuencia para descifrarla. Sin embargo, la segunda fase de ADFGVX es una transposicin,
lo que dificulta muchsimo ms el criptoanlisis. La transposicin depende de una palabra
clave, que en este caso es la palabra PACO, y que debe compartirse con el receptor. La
transposicin se lleva a cabo de la siguiente manera. Primero, las letras de la palabra clave
se escriben en la lnea superior de una nueva cuadrcula. Luego el texto cifrado fase 1 se
escribe debajo en una serie de lneas, tal como se muestra a continuacin. Despus, las
23

columnas de la cuadrcula se cambian de posicin de modo que las letras de la palabra
clave queden en orden alfabtico. El texto cifrado final se logra descendiendo cada
columna y escribiendo las letras en este nuevo orden.

Texto cifrado final: FXADGDVGXXDDAADAFXDVVVGAXGDVADVXXDDD
El texto cifrado final se transmitira entonces en cdigo Morse, y el receptor invertira el
proceso de codificacin para obtener el texto original. Todo el texto cifrado se compone
con slo seis letras (esto es, A, D, F, G, V, X), porque stas son las que dan nombre a las
lneas y las columnas de la cuadrcula inicial de 6x6. A menudo, la gente se pregunta por
qu se eligieron esas letras, en vez de, pongamos A, B, C, D, E y F. La respuesta es que A,
D, F, G, V y x son muy diferentes entre s cuando se convierten en las lneas y puntos del
Morse, de modo que la eleccin de letras reduce al mnimo el riesgo de errores durante
la transmisin.
CIFRADO DE HILL
Los cifrados monogrficos, en los que se sustituye un carcter por otro de una forma
preestablecida, son vulnerables al anlisis de frecuencia de aparicin de las letras. Para
evitarlo se desarrollaron esquemas basados en cifrar bloques de letras de una cierta
longitud fija, o sea, cifrados poligrficos. El esquema que aqu trataremos se debe a Hill
(hacia 1.930). Tiene un inters didctico importante debido al uso de matrices que en l
se hace.
Un cifrado de Hill se obtiene al transformar bloques de n caracteres en un texto cifrado
a travs de la relacin
C = (A P + B) (mod 28), donde:
A es una matriz nxn, que debe ser inversible mdulo 28, es decir, el m.c.d
(determinante de_la_matriz A, 28) = 1.
P es un bloque de n caracteres. P =
n
Z
28

B es una matriz nx1
24

C es la matriz columna resultante del cifrado de P. C =
n
Z
28

28 es el nmero de smbolos del alfabeto: _ A B C D E F G H I J K L M N O P Q R S
T U V W X Y Z que se corresponden con los nmeros del 0 al 27 (el 0 corresponde al
espacio en blanco separador de dos palabras)
Un ejemplo para un cifrado digrfico (bloques de 2 caracteres) sera para el texto original
siguiente: ESTACION CENTRAL X

Disponemos el texto de la forma siguiente y aplicamos la transformacin indicada:
E T C O E T A
S A I N C N R L X
Tomando como A la matriz
|
|
.
|

\
|
3 0
27 1
; y como B la matriz
|
|
.
|

\
|
0
1
hacemos:
C1 = (((1 * P1) + (27 * P2)) +1) (mod 28)
C2 = (((0 * P1) + (3 * P2))+0) (mod 28)
Donde P1 y P2 son dos caracteres del mensaje sin cifrar, C1 Y C2 los correspondientes
cifrados y K.
Continuando con el ejemplo y codificando
siendo E = 5 y S = 20, entonces:
C1= (((1 * 5) + (27 * 20) + 1)(mod 28) = 546 (mod 28) = 14 (mod 28) (letra N)
C2= (((0 * 5) + ( 3 * 20) + 0))(mod 28) = 60 (mod 28) = 4 (mod 28) (letra D)
|
|
.
|

\
|
+
|
|
.
|

\
|
|
|
.
|

\
|
=
|
|
.
|

\
|
0
1
3 0
27 1
2
1
2
1
P
P
C
C
(mod 28)
Y as sucesivamente para cada bloque de 2 caracteres, resultando:
Texto cifrado: NDTCVZCNYISNCAQHDR
La consecuencia es que el mismo carcter se codifica de distintas formas (la primera E se
ha codificado como una N, y la segunda E del texto original se ha codificado como una
S).
El descifrado del sistema de Hill es simtrico (la clave de desencriptacin se calcula a partir
de la clave de encriptacin y viceversa) y ser aplicar la transformacin:
E S T A C I O N C E N T R A L X
5 20 21 1 3 9 16 14 0 3 5 14 21 19 1 12 0 25
E
S
25

P = A-1 (C B) (mod 28) , donde A-1 es la matriz inversa de A mod 28
Para calcular la inversa mdulo N de una matriz cualquiera: Si A es una matriz tal que
m.c.d(det(A), N)=1 y llamamos d = det(A) entonces A-1= d-1.B donde d-1 es el inverso
de d mdulo N y B es la transpuesta de la matriz adjunta de A.
Vamos a cifrar la palabra MAX utilizando un cifrado poligrfico de tamao 3. Tomemos
sus equivalentes numricos:
M A X
13 1 25
Si las matrices de cifrado A y B son:
A =
|
|
|
.
|

\
|
=
|
|
|
.
|

\
|

27 1 1
2 1 1
3 0 27
1 1 1
2 1 1
3 0 1
; B =
|
|
|
.
|

\
|
0
0
0

Det(A) = d = 3 entonces tendremos que d-1 = 19 pues 3.19 = 57 = 1(mod 28); por
otro lado
Adj(A) =
|
|
|
.
|

\
|
=
|
|
|
.
|

\
|

=
27 5 25
1 26 3
0 3 25
1 5 3
1 2 3
0 3 3
; Adj (A)t =
|
|
|
.
|

\
|


1 1 0
5 2 3
3 3 3

Por lo que A-1= 19.
|
|
|
.
|

\
|
27 5 25
1 26 3
0 3 25
=
|
|
|
.
|

\
|
=
|
|
|
.
|

\
|


9 19 0
11 18 1
27 1 27
19 19 0
11 10 1
1 1 1

Para cifrar
|
|
|
.
|

\
|
=
|
|
|
.
|

\
|

|
|
|
.
|

\
|

=
|
|
|
.
|

\
|
17
8
6
25
1
13
1 1 1
2 1 1
3 0 1
3
2
1
C
C
C

el resultado es [62 64 -11] es decir [18 8 17] tomndolo mdulo 26. As que el bloque
que corresponde a MAX es QHP.
Probemos con el descifrado:
|
|
|
.
|

\
|

=
|
|
|
.
|

\
|
|
|
|
.
|

\
|


=
|
|
|
.
|

\
|
3
1
13
17
8
6
19 19 0
11 10 1
1 1 1
3
2
1
P
P
P

el resultado es como era de prever [13 1 25], es decir el bloque MAX original.



26


ARGUMENTACIN

Hemos estudiado la introduccin 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.
Los algoritmos pueden clasificarse segn su tiempo de ejecucin, en funcin del tamao u
orden de la entrada.
Adems estudiamos la introduccin a los criptosistemas clsicos que nos ayudan a cifrar y
descifrar mensajes en claro, y nos hemos dado cuenta que existen algunos cifrados clasicos.





BIBLIOGRAFA

http://genomorro.files.wordpress.com/2007/09/trabajo.pdf

http://www.slideshare.net/rolfpinto/teora-de-la-complejidad-algoritmica

Vous aimerez peut-être aussi