Está en la página 1de 31

Seguridad Informtica.

2013 - 1
En esta investigacin nos adentraremos al mundo de la Seguridad Informtica, poniendo especial nfasis en la Criptografa y en sus principales caractersticas.

T. E. S. E. Informtica. Morales Jimnez Eunice Yoseline. Vargas Olivo Guadalupe. Gmez Valencia Ral. Equipo10. 6802.

Criptografa.

ndice Temtico.

1. Criptografa..................................................................3
2. Criptografa clsica..................................................................................................4 3. Algoritmos clsicos de cifrado.....8 4. Mquinas de Rotores..............................................................................................10 5. Mquina ENIGMA.12 6. Cifrados por bloques...15 7. El Algoritmo DES17 8. El algoritmo AES (Rijndae)...19 9. Cifrados de flujo..25 10. Algoritmo RC430 11. Algoritmo SEAL..31 12. Bibliografas.....31

1. CRIPTOGRAFIA.
La criptografa proviene del griego kryptos: "ocultar", y grafos: "escribir". Es decir, significa "escritura oculta". Como concepto son las tcnicas utilizadas para cifrar y descifrar informacin utilizando tcnicas matemticas que hagan posible el intercambio de mensajes de manera que slo puedan ser ledos por las personas a quienes van dirigidos. Segn el especialista Ramiro Aguirre la traduccin mas acertada para definir Criptografa es: 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 objetivo principal de cifrar y por lo tanto proteger, un mensaje o archivo por medio de un algoritmo usando una o mas claves La palabra Criptografiaa solo hace referencia al uso de cdigos, por lo que no engloba a las tcnicas que se usan para romper dichos cdigos, conocidas en su conjunto como Criptoanalisis. En cualquier caso ambas disciplinas estn ntimamente ligadas; no olvidemos que cuando se disea un sistema para cifrar informacin, hay que tener muy presente su posible criptoanlisis, ya que en caso contrario podramos llevarnos desagradables sorpresas. Finalmente, el termino Cristologa, aunque no esta recogido aun en el Diccionario, se emplea habitualmente para agrupar tanto la Criptografa como el Criptoanlisis.

2. CRIPTOGRAFIA CLASICA.
El ser humano siempre ha tenido secretos de muy diversa ndole, y ha buscado mecanismos para mantenerlos fuera del alcance de miradas indiscretas. Julio Cesar empleaba un sencillo algoritmo para evitar que sus comunicaciones militares fueran interceptadas. Leonardo DaVinci escribi a las anotaciones sobre sus trabajos de derecha a izquierda y con la mano zurda. Otros personajes, como Sir Francis Bacon o Edgar Allan Poe eran conocidos por su accin alos cdigos criptogrficos, que en muchas ocasiones constituan un apasionante divertimento y un reto para el ingenio. El cifrado de textos es una actividad que ha sido ampliamente usada a lo largo de la historia humana, sobre todo en el campo militar y en aquellos otros en los que es necesario enviar mensajes con informacin confidencial y sensible a travs de medios no seguros. Aunque en cierta forma el sitema de jeroglficos egipcio puede considerarse ya una forma de criptografa (slo podan ser entendidos por personas con conocimientos suficientes), el primer sistema criptogrfico como tal conocido de debe a Julio Cesar. Su sistema consista en reemplazar en el mensaje a enviar cada letra por la situada tres posiciones por delante en el alfabeto latino. En nuestro alfabeto actual tendramos la siguiente tabla de equivalencias:

Figura 2.1. Criptografa clsica.

Por lo que el mensaje "HOLA MUNDO" se transformara en "KRD OXPGR". Para volver al mensaje original desde el texto cifrado tan slo hay que coger un alfabeto e ir sustituyendo cada letra por la que est tres posiciones antes en el msimo. Este sistema fu innovador en su poca, aunque en realidad es fcil de romper, ya en todo sistema de trasposicin simple slo hay un nmero de variaciones posible igual al de letras que formen el alfabeto (27 en este caso). La trasposicin en cambio consiste en cambiar los caracteres componentes del mensaje original en otros segn una regla determinada de posicin en el orden del mensaje. Por ejemplo, si establecemos la siguiente regla de cambio en el orden de las letras en el texto:

Figura 2.2. Trasposicin.

la frase "HOLA MUNDO" nos quedara "OUDL HOAMN". Tanto la sustitucin como la trasposicin son tcnicas bsicas para ocultar la redundancia en un texto plano, redundancia que se transmite al texto cifrado, y que puede ser el punto de partida para un ataque por Criptoanlisis. La redundancia es el hecho de que casi todos los smbolos de un mensaje en lenguaje natural contienen informacin que se puede extraer de los smbolos que le rodean. Claves El problema inmediato que se planta en cualquier sistema complejo, tanto de sustitucin como de permutacin, es recordar el nuevo orden que hemos establecido para obtener el mensaje camuflado, problema tanto ms dificil de resolver cuento ms complicado haya sido el sistema elegido. Una solucin sera escribir en un soporte cualquiera (papel, disquete, etc.) ste nuevo orden, pero siempre queda entonces el nuevo problema de guardar el soporte, ya que si cae en manos extraas dar al traste con el mecanismo de ocultacin. Mejor solucin es implementar un mecanismo de sustitucin o de permutacin basado en una palabra o serie fcil de recordar. Por ejemplo, podemos establecer un mecanismo criptogrfico que se base en una palabra corta. Consideremos que queremos cifrar la frase "HOLA MUNDO" basndonos en la palabra "HTML". Para ello escribimos una tabla o matriz con tantas columnas como letras tenga la palabra elegida, y colocamos en la fila superior dicha palabra. El mensaje a cifrar lo vamos situando en las filas siguientes consecutvamente y si sobran celdas las dejamos vacas:
5

Figura 2.3. Claves.

El paso siguiente ser cambiar el orden de las filas, por ejemplo ordenando la palabra elegida en orden alfabtico, con lo que nuestra tabla nos queda:

Figura 2.4. Cambio de orden.

Por ltimo, podemos transformar las filas de la tabla en columnas:

Figura 2.5. Cambio de orden.

Y ya slo nos queda obtener el nuevo mensaje, leyendo las filas obtenidas: Transformacin: "HOLA MUNDO"--------->"HHMO LAD MLN O". Para desencriptar el texto cifrado habr que realizar los operaciones anteriores en sentido inverso. El uso de una palabra o serie determinada como base de un sistema de cifrado pose la ventaja de que, si el sistema es complejo, tan slo ser facil obtener el texto en claro a quin sepa dicha palabra, adems de ser fcil de recordar. Esta palabra o serie base del mecanismo de cifrado se denomina clave de cifrado, y el nmero de letras que la forman se llama longitud de la clave. Indudablemente, cuanto ms complicado sea el mecanismo de cifrado y cuanto ms larga sea la clave, ms dificil ser romper el sistema y obtener el mensaje original para un extrao. Pero ms complicado ser tambin para el destinatario del mensaje cifrado realizar las operaciones de descifrado y obtener el mensaje original, por lo que se crea el dilema seguridad / tiempo. Las claves de encriptacin van a ser la base fundamental de los modernos sistemas criptogrficos, basados en operaciones matemticas generalmente muy complejas.

La transicin desde la Criptografa clsica a la moderna se da precisamente durante la II Guerra Mundial, cuando el Servicio de Inteligencia aliado rompe la mquina de cifrado del ejrcito alemn, llamada ENIGMA.

3. ALGORITMOS CLSICOS DE CIFRADO.


Cifrados Monoalfabeticos. Se engloban dentro de este apartado todos los algoritmos criptgrafos que, sin desordenar los smbolos dentro del mensaje, establecen una correspondencia nica para todos ellos en todo el texto. Es decir, si al smbolo A le corresponde el smbolo D, esta correspondencia se mantiene a lo largo de todo el mensaje. Algoritmo de Cesar. El algoritmo de Cesar, llamado asi porque es el que empleaba Julio Cesar para enviar Mensaje secretos, es uno de los algoritmos criptgrafos mas simples. 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 numero (A = 0,B = 1. . . ), y consideramos un alfabeto de 26 letras, la transformacin criptograma ser C = (M + 3) mod 26 Este algoritmo ni siquiera posee clave, puesto que la transformacin siempre es la misma. Obviamente, para descifrar basta con restar 3 al numero de orden de las letras del criptograma. Sustitucin Afn. Es el caso general del algoritmo de Cesar. Su transformacin ser: E(a;b)(M) = (aM + 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 Cesar sera pues una transformacin afn con k = (1; 3). Cifrado Monoalfabetico General. Es el caso ms general de cifrado monoalfabetico. La sustitucin ahora es arbitraria, siendo la clave k precisamente la tabla de sustitucin de un smbolo por otro. En este caso tenemos N! posibles claves. Criptoanlisis de los Mtodos de Cifrado Monoalfabeticos. El cifrado monoalfabetico constituye la familia de mtodos ms simple de criptoanlisis, puesto que las propiedades estadsticas del texto claro se conservan en el criptograma, por
8

ejemplo, la letra que mas aparece en Castellano es la A. Parece lgico que la letra ms frecuente en el texto codificado sea aquella que corresponde con la A. Emparejando las frecuencias relativas de aparicin de cada smbolo en el mensaje cifrado con el histograma de frecuencias del idioma en el que se supone esta el texto claro, podremos averiguar fcilmente la clave. En el peor de los casos, es decir, cuando tenemos un emparejamiento arbitrario, la Distancia de Unicidad de Shannon que obtenemos es:

donde D es la redundancia del lenguaje empleado en el mensaje original, y N es el numero de smbolos de dicho lenguaje. Como es lgico, suponemos que las N! claves diferentes son equiprobables en principio. En casos mas restringidos, como el afn, el criptoanlisis es aun ms simple, puesto que el emparejamiento de todos los smbolos debe responder a alguna combinacin de cocientes (a; b). Cifrados Polialfabeticos. En los cifrados polialfabeticos la sustitucin aplicada a cada carcter varia en funcin de la posicin que ocupe este dentro del texto claro. En realidad corresponde a la aplicacin cclica de n cifrados monoalfabeticos . Cifrado de Vigenere. Es un ejemplo tpico de cifrado polialfabetico que debe su nombre a Blaise de Vigenere, su creador, y que data del siglo XVI. La clave est constituida por una secuencia de smbolos K = fk0; k1,kd-1g, y que emplea la siguiente funcin de cifrado: Ek(mi) = mi + k(i mod d) (mod n) Siendo mi el ensimo smbolo del texto claro y n el cardinal del alfabeto de entrada. Criptoanlisis. Para criptoanlisis este tipo de claves basta con efectuar d anlisis estadsticos independientes agrupando los smbolos segn la ki empleada para codificarlos. Para estimar d, buscaremos la periodicidad de los patrones comunes que puedan aparecer en el texto cifrado. Obviamente, para el criptoanlisis, necesitaremos al menos d veces mas cantidad de texto que con los mtodos monoalfabeticos
9

Cifrados de Transposicin. Este tipo de mecanismos de cifrado no sustituye unos smbolos por otros, sino que cambia su orden dentro del texto. Quizs el mas antiguo conocido sea el es cifrado, formado por un bastn cilndrico con un radio particular y una tira de piel que se enrollaba alrededor de aquel. El texto se escriba a lo largo del bastn y solo podra ser ledo si se dispona de otro bastn de dimensiones similares. Un mecanismo de transposicin sencillo, que no precisa otra cosa que lpiz y papel, podra consistir en colocar el texto en una tabla de n columnas, y dar como texto cifrado los smbolos de una columna |ordenados de arriba a abajo| concatenados con los de otra, etc. La clave k se compondra del nmero n junto con el orden en el que se deben leer las columnas Criptoanlisis. Este tipo de mecanismos de cifrado se puede criptoanlisis efectuando un estudio estad esttico sobre la frecuencia de aparicin de pares y tripletas de smbolos en el lenguaje en que este escrito el texto claro. Suponiendo que conocemos n, que en nuestro es igual a 5, tenemos 5! = 120 posibles claves. Descifrar amos el texto empleando cada una de ellas y comprobaramos si los pares y tripletas de smbolos consecutivos que vamos obteniendo se corresponden con los ms frecuentes en castellano. De esa forma podremos asignarle una probabilidad automticamente a cada una de las posibles claves.

4. MQUINA DE ROTORES.
En el ao 1923, un ingeniero alemn llamado Arthur Scherbius patent una mquina especficamente diseada para facilitar las comunicaciones seguras. Se trataba de un instrumento de apariencia simple, parecido a una mquina de escribir. Quien deseara codificar un mensaje slo tena que teclearlo y las letras correspondientes al texto cifrado se iran iluminando en un panel. El destinatario copiaba dichas letras en su propia mquina y el mensaje original apareca de nuevo. La clave la constituan las posiciones iniciales de tres tambores o rotores que el ingenio posea en su parte frontal. En la figura 2.2 podemos apreciar un esquema de esta mquina, llamada ENIGMA. Los rotores no son ms que tambores con contactos en su superficie y cableados en su interior, de forma que con cada pulsacin del teclado, la posicin de estos determina cul es la letra que se ha de iluminar. Cada vez que se pulsa una tecla el primer rotor avanza una posicin; el segundo avanza cuando el anterior ha dado una vuelta completa y as sucesivamente. El reflector no exista en los primeros modelos, se introdujo posteriormente para permitir que la misma mquina sirviera tanto para cifrar como para descifrar, como veremos ms adelante.

10

Figura 4.1. Esquema de la Mquina Enigma

Historia. ENIGMA pronto llam la atencin del ejrcito alemn, que la utiliz de forma intensiva a lo largo de la II Guerra Mundial. Adems se le aplicaron varias mejoras, como incluir un pequeo sistema previo de permutacin, llamado stecker o clavijero que permita escoger seis pares de letras para ser intercambiadas previamente al cifrado, hacer que los rotores fueran intercambiables se podan elegir y colocar en cualquier orden tres de entre cinco disponibles, e incluso ampliar a cuatro el nmero de rotores. Aunque ENIGMA pareca virtualmente imposible de romper, presentaba una serie de debilidades, tanto en su diseo como en los mecanismos empleados para utilizarla, que fueron aprovechadas por el ejrcito aliado. El primero en conseguir avances significativos fue el servicio de inteligencia polaco, ya que en 1931 los franceses, en virtud de un acuerdo de cooperacin firmado diez aos antes, les facilitaron informacin detallada sobre lamaquina1, que ellos a su vez haban obtenido sobornando a un miembro de la oficina de cifras alemana. De hecho, los espas franceses consideraban esta informacin totalmente intil, ya que pensaban que ENIGMA era, sencillamente, indescifrable. El conocimiento preciso de la mquina permiti a un equipo de tres matemticos (Marian Rejewski, Jerzy Rozycki y Henryk Zygalski) elaborar un mecanismo para aprovechar una debilidad, no en la mquina en s, sino en el protocolo empleado por el ejrcito alemn para colocar los rotores al principio de cada mensaje. Dicho protocolo consista en escoger una posicin de un libro de claves, y enviar tres letras cuales quiera dos veces, para evitar posibles errores. En realidad se estaba introduciendo una redundancia en el mensaje que permita obtener, con un nivel de esfuerzo al alcance de los polacos, la clave empleada. Se construy un aparato que permita descifrar los mensajes, y se le bautiz como Ciclmetro. En 1938 Alemania cambi el protocolo, lo cual oblig a los matemticos polacos a refinar su sistema, aunque bsicamente se seguan

11

enviando tres letras repetidas. No vamos a entrar en detalles, pero el ataque se basaba en buscar ciertas configuraciones de la mquina, con propiedades especficas. Estas configuraciones especiales daban una informacin vital sobre la posicin inicial de los rotores para un mensaje concreto. Se construy entonces una versin mejorada del ciclmetro, llamada Bomba, que era capaz de encontrar estas configuraciones de forma automtica. Sin embargo, a finales de ese mismo ao se introdujeron dos rotores adicionales, lo cual obligaba a emplear sesenta bombas simultneamente para romper el sistema. Polonia simplemente careca de medios econmicos para afrontar su construccin. Los polacos entonces pusieron en conocimiento de los servicios secretos britnico y francs sus progresos, esperando poder establecer una va de colaboracin para seguir descifrando los mensajes germanos, pero la invasin de Polonia era inminente. Tras destruir todas las pruebas que pudieran indicar al ejrcito alemn el xito polaco frente a ENIGMA, el equipo de Rejewski huy precipitadamente, transportando lo que pudieron salvar en varios camiones. Tras pasar por Rumana e Italia, y tener que quemar todos los camiones por el camino excepto uno, llegaron a Pars, donde colaboraron con un equipo de siete espaoles expertos en criptografa, liderados por un tal Camazn. Cuando al ao siguiente Alemania invadi Francia el nuevo equipo tuvo que huir a A frica, y posteriormente instalarse en Montpellier, donde reanudaron sus trabajos. En 1942, la entrada alemana en Vichy forz a los matemticos a escapar de nuevo, los polacos a Espaa (donde muri Rozycki), y los espaoles a A frica, donde se perdi definitivamente su pista. Cuando el equipo de Rejewski lleg por fin a Inglaterra, ya no se le consider seguro, al haber estado en contacto con el enemigo, y se le confiaron nicamente trabajos menores. Mientras tanto, en Bletchley Park, Alan Turing desarrollaba una segunda Bomba basndose en los estudios del polaco, ms evolucionada y rpida que su antecesora, en el marco del proyecto ULTRA britnico, que se encargaba de recoger informacin acerca de los sistemas de comunicaciones germanos. Este nuevo dispositivo aprovechaba una debilidad esencial en ENIGMA: un mensaje no puede codificarse en s mismo, lo cual implica que ninguna de las letras del texto claro puede coincidir con ninguna del texto cifrado. La Bomba de Turing parta de una palabra adivinada en contra de las normas de uso de ENIGMA, la mayora de los mensajes que enviaba el ejrcito alemn comenzaban de igual forma, lo cual facilit la tarea del equipo aliado enormemente, y buscaba un emparejamiento con el mensaje cifrado tal que el supuesto texto claro y el fragmento de criptograma asociado no coincidieran en ninguna letra. A partir de ah la Bomba realizaba una bsqueda exhaustiva de la configuracin inicial de la mquina para decodificar el mensaje, mediante un ingenioso sistema que permita ignorar la posicin del stecker. Un hecho bastante poco conocido es que Alemania regalo al rgimen de Franco casi una veintena de mquinas ENIGMA, que fueron utilizadas para comunicaciones secretas hasta entrados los aos cincuenta, suponemos que para regocijo de los servicios de espionaje britnico y norteamericano.

5. MQUINA ENIGMA.
La mquina Enigma fue creada en 1923 por el ingeniero alemn Arthur Scherbius, en sus principios se usaba para enviar mensajes encriptados en el ambiente comercial e industrial,
12

posteriormente se aplic al contexto militar; en la Segunda Guerra Mundial era utilizada por los nazis y sus aliados. Enigma consista en aplicar el Cifrado de Vigenre el cual utilizaba un algoritmo de sustitucin de unas letras por otras. La mquina Enigma era un dispositivo electromecnico, el mecanismo consista en una serie de teclas, con las letras del alfabeto, que en realidad eran interruptores que accionaban los dispositivos elctricos y hacan mover unos cilindros rotatorios. El operador tena que teclear las letras de su mensaje y anotar las letras que devolva la mquina.

Figura 5.1. Se puede apreciar una maquina enigma

El cdigo a usar se fijaba con las posiciones de los cilindros que constaban, cada uno, de 26 cables que se conectaban al teclado pero, con la particularidad, que el primer cilindro giraba un veintiseisavo de vuelta despus de cada pulsacin, de tal manera que la posicin de las conexiones iba cambiando con cada entrada del teclado, obteniendo un cifrado polialfabtico.

13

Figura 5.2. En la imagen se muestra el funcionamiento de la maquina enigma

El segundo cilindro slo daba un giro cuando el primero haba completado 26 giros y el tercero cuando el segundo haba dado sus correspondientes 26 y aadi la posibilidad de que los rodillos pudiesen ser intercambiados de posicin, de manera que el nmero de posibilidades aumentase hasta tener 105.456 alfabetos. Los cdigos de la mquina fueron descifrados gracias a los siguientes factores: Los modelos comerciales haban sido distribuidos por todo el mundo, aunque las versiones militares fueron ms complejas, el principio de funcionamiento ya era conocido. La codificacin de un mensaje en Enigma obligaba a los operadores a introducir 3 letras, dos veces, al iniciar el mensaje, por tanto, era un patrn que siempre se repeta y que fue aprovechado para descifrar el cdigo gracias a unas mquinas electromecnicas denominadas bombas criptolgicas, que eran unas mquinas Enigma de procesamiento en paralelo y que buscaban las codificaciones posibles. En 1941 la Royal Navy captur el submarino alemn U-110 y pudo hacerse de una mquina Enigma y con el preciado libro de claves. Esta captura se mantuvo en secreto y se hizo creer a la opinin pblica que el submarino haba sido hundido, para que las claves no fuesen cambiadas. El cifrado es un algoritmo matemtico para transformar la informacin a un formato inteligible, este mecanismo ha sido una pieza fundamental en la historia, tal como en este caso, ya que permiti mantener la confidencialidad de la misma garantizando de esta manera que a pesar de ser interceptada, el contenido no podra ser revelado tan fcilmente.

14

6. CIFRADOS POR BLOQUES.


En Criptografa, una unidad de cifrado por bloques (block cipher) es una unidad de cifrado de clave simtrica que opera en grupos de bits de longitud fija, llamados bloques, aplicndoles una transformacin invariante. Cuando realiza cifrado, una unidad de cifrado por bloques toma un bloque de texto plano o claro como entrada y produce un bloque de igual tamao de texto cifrado. La transformacin exacta es controlada utilizando una segunda entrada la clave secreta. El descifrado es similar: se ingresan bloques de texto cifrado y se producen bloques de texto plano. Para cifrar mensajes ms largos que el tamao del bloque, se utiliza un modo de operacin. Las unidades de cifrado por bloques se diferencian de las unidades de flujo de cifrado en que un flujo de cifrado trabaja sobre dgitos individuales, uno despus del otro, y la transformacin vara durante el proceso de cifrado. La diferencia entre los dos tipos de unidades es algo difusa, dado que una unidad de cifrado por bloques puede ser operada en un modo que permite utilizarla como una unidad de flujo de cifrado, donde en lugar de dgitos se opera con bloques. Los algoritmos de cifrado por bloques toman bloques de tamao fijo del texto en claro y producen un bloque de tamao fijo de texto cifrado, generalmente del mismo tamao que la entrada. El tamao del bloque debe ser lo suficientemente grande como para evitar ataques de texto cifrado. La asignacin de bloques de entrada a bloques de salida debe ser uno a uno para hacer el proceso reversible y parecer aleatoria. Para la asignacin de bloques los algoritmos de cifrado simtrico realizan sustituciones y permutaciones en el texto en claro hasta obtener el texto cifrado. La sustitucin es el reemplazo de un valor de entrada por otro de los posibles valores de salida, en general, si usamos un tamao de bloque k, el bloque de entrada puede ser sustituido por cualquiera de los 2k bloques posibles. La permutacin es un tipo especial de sustitucin en el que los bits de un bloque de entrada son reordenados para producir el bloque cifrado, de este modo se preservan las estadsticas del bloque de entrada (el nmero de unos y ceros). Los algoritmos de cifrado por bloques iterativos funcionan aplicando en sucesivas rotaciones una transformacin (funcin de rotacin) a un bloque de texto en claro. La misma funcin es aplicada a los datos usando una subclave obtenida de la clave secreta proporcionada por el usuario. El nmero de rotaciones en un algoritmo de cifrado por bloques iterativo depende del nivel de seguridad deseado. Un tipo especial de algoritmos de cifrado por bloques iterativos son los denominados algoritmos de cifrado de Feistel. En estos algoritmos el texto cifrado se obtiene del texto en claro aplicando repetidamente la misma transformacin o funcin de rotacin. El funcionamiento es como sigue:

15

El texto a encriptar se divide en dos mitades, la funcin de rotacin se aplica a una mitad usando una subclave y la salida de la funcin se emplea para hacer una o-exclusiva con la otra mitad, entonces se intercambian las mitades y se repite la misma operacin hasta la ltima rotacin, en la que no hay intercambio. Una caracterstica interesante de estos algoritmos es que la encriptacin y desencriptacin son idnticas estructuralmente, aunque las subclaves empleadas en la encriptacin se toman en orden inverso en la desencriptacin. Para aplicar un algoritmo por bloques es necesario descomponer el texto de entrada en bloques de tamao fijo. Esto se puede hacer de varias maneras: 1. ECB (Electronic Code Book). Se parte el mensaje en bloques de k bits, rellenando el ultimo si es necesario y se encripta cada bloque. Para desencriptar se trocea el texto cifrado en bloques de k bits y se desencripta cada bloque. Este sistema es vulnerable a ataques ya que dos bloques idnticos de la entrada generan el mismo bloque de salida. En la prctica no se utiliza. 2. CBC (Cipher Block Chaining). Este mtodo soluciona el problema del ECB haciendo una o-exclusiva de cada bloque de texto en claro con el bloque anterior cifrado antes de encriptar. Para el primer bloque se usa un vector de inicializacin. Este es uno de los esquemas ms empleados en la prctica. 3. OFB (Output Feedback Mode). Este sistema emplea la clave de la sesin para crear un bloque pseudoaleatorio grande (pad) que se aplica en o-exclusiva al texto en claro para generar el texto cifrado. Este mtodo tiene la ventaja de que el pad puede ser generado independientemente del texto en claro, lo que incrementa la velocidad de encriptacin y desencriptacin. 4. CFB (Cipher Feedback Mode). Variante del mtodo anterior para mensajes muy largos.

Figura 6.1.- En la imagen se muestra el funcionamiento del cifrado por bloques.

16

7. ALGORITMO DES.
DES (Data Encryption Standard, estndar de cifrado de datos) es un algoritmo desarrollado originalmente por IBM a requerimiento del NBS (National Bureau of Standards, Oficina Nacional de Estandarizacin, en la actualidad denominado NIST, National Institute of Standards and Technology, Instituto Nacional de Estandarizacin y Tecnologa) demEE.UU. y posteriormente modificado y adoptado por el gobierno de EE.UU. En 1977 como estndar de cifrado de todas las informaciones sensibles no clasificadas. Posteriormente, en 1980, el NIST estandariz los diferentes modos de operacin del algoritmo. Es el ms estudiado y utilizado de losalgoritmos de clave simtrica. El nombre original del algoritmo, tal como lo denomin IBM, era Lucifer. Trabajaba sobre bloques de 128 bits, teniendo la clave iguallongitud. Se basaba en operaciones lgicas booleanas y poda serimplementado fcilmente, tanto en software como en hardware. Tras las modificaciones introducidas por el NBS, consistentes bsicamente en la reduccin de la longitud de clave y de los bloques, DES cifra bloques de 64 bits, mediante permutacin y sustitucin y usando una clave de 64 bits, de los que 8 son de paridad (esto es, en realidad usa 56 bits), produciendo as 64 bits cifrados.

Figura 7.1.- Esquema general del algoritmo DES

DES tiene 19 etapas diferentes. La primera etapa es una transposicin, una permutacin inicial (IP) del texto plano de 64 bits, independientemente de la clave. La ltima etapa es otra transposicin (IP-1), exactamente la inversa de la primera. La penltima etapa intercambia los 32 bits de la izquierda y los 32 de la derecha. Las 16 etapas restantes son una Red de Feistel de 16 rondas.
17

En cada una de las 16 iteraciones se emplea un valor, Ki, obtenido a partir de la clave de 56 bits y distinto en cada iteracin.

Figura 7.2.-Clculo de las subclaves, Ki

Se realiza una permutacin inicial (PC-1) sobre la clave, y luego la clave obtenida se divide en dos mitades de 28 bits, cada una de las cuales se rota aizquierda un nmero de bits determinado que no siempre es el mismo. Ki se deriva de la eleccin permutada (PC-2) de 48 de los 56 bits de estas dos mitades rotadas. La funcin f de la red de Feistel se compone de una permutacin de expansin (E), que convierte el bloque correspondiente de 32 bits en uno de 48. Despus realiza una orexclusiva con el valor Ki, tambin de 48 bits, aplica ocho S-Cajas de 6*4 bits, y efecta una nueva permutacin (P).

18

Figura 7.3. Ronda del algoritmo DES

8.

ALGORITMO AES (RIJNDAEL).

En octubre de 2000 el NIST (National Institute for Standards and Technology) anunciaba oficialmente la adopcin del algoritmo Rijndael (pronunciado ms o menos como reindal) como nuevo Estndar Avanzado de Cifrado (AES) para su empleo en aplicaciones criptogrficas no militares, culminando as un proceso de ms de tres a nos, encaminado a proporcionar a la comunidad internacional un nuevo algoritmo de cifrado potente, eficiente, y fcil de implementar. DES tena por fin un sucesor. La palabra Rijndael en adelante, para referirnos a este algoritmo, emplearemos la denominacin AES es un acrnimo formado por los nombres de sus dos autores, los belgas Joan Daemen y Vincent Rijmen. Su inters radica en que todo el proceso de seleccin, revisin y estudio tanto de este algoritmo como de los restantes candidatos, se ha efectuado de forma pblica y abierta, por lo que, prcticamente por primera vez, toda la comunidad criptogrfica mundial ha participado en su anlisis, lo cual convierte a Rijndael en un algoritmo perfectamente digno de la confianza de todos. AES es un sistema de cifrado por bloques, diseado para manejar longitudes de clave y de bloque variables, ambas comprendidas entre los 128 y los 256 bits. Realiza varias de sus operaciones internas a nivel de byte, interpretando estos como elementos de un cuerpo de Galois GF(28). El resto de operaciones se efectan en trminos de registros de 32 bits. Sin embargo, en algunos casos, una secuencia de 32 bits se toma como un polinomio de grado inferior a 4, cuyos coeficientes son a su vez polinomios en GF(28).

19

Si bien, como ya se ha dicho, este algoritmo soporta diferentes tamaos de bloque y clave, en el estndar adoptado por el Gobierno Estadounidense en noviembre de 2001 (FIPS PUB 197), se especifica una longitud fija de bloque de 128 bits (Nb = 4, como se ver ms adelante), y la longitud de clave a escoger entre 128, 192 y 256 bits. Estructura de AES. AES, a diferencia de algoritmos como DES, no posee estructura de red de Feistel. En su lugar se ha definido cada ronda como una composicin de cuatro funciones invertibles diferentes, formando tres capas, diseadas para proporcionar resistencia frente a criptoanlisis lineal y diferencial. Cada una de las funciones tiene un propsito preciso: La capa de mezcla lineal funciones DesplazarFila y MezclarColumnas: permite obtener un alto nivel de difusin a lo largo de varias rondas. La capa no lineal funcin ByteSub: consiste en la aplicacin paralela de s-cajas con propiedades optimas de no linealidad. La capa de adicin de clave es un simple or-exclusivo entre el estado intermedio y la subclave correspondiente a cada ronda.

Figura 8.1. Ejemplo de matriz de estado con Nb=5 (160 bits).

20

Figura 8.2. Ejemplo de clave con Nk=4 (128 bits).

Elementos de AES. AES es un algoritmo que se basa en aplicar un nmero determinado de rondas a un valor intermedio que se denomina estado. Dicho estado puede representarse mediante una matriz rectangular de bytes, que posee cuatro filas, y Nb columnas. As, por ejemplo, si nuestro bloque tiene 160 bits, Nb ser igual a 5. La llave tiene una estructura anloga a la del estado, y se representara mediante una tabla con cuatro filas y Nk columnas. Si nuestra clave tiene, por ejemplo, 128 bits, Nk ser igual a 4. En algunos casos, tanto el estado como la clave se consideran como vectores de registros de 32 bits, estando cada registro constituido por los bytes de la columna correspondiente, ordenados de arriba a abajo. El bloque que se pretende cifrar o descifrar se traslada directamente byte a byte sobre la matriz de estado, siguiendo la secuencia a0,0, a1,0, a2,0, a3,0, a0,1 . . ., y anlogamente, los bytes de la clave se copian sobre la matriz de clave en el mismo orden, a saber, k0,0, k1,0, k2,0, k3,0, k0,1 . . .. Siendo B el bloque que queremos cifrar, y S la matriz de estado, el algoritmo AES con n rondas queda como sigue: 1. Calcular K0, K1, . . .Kn subclaves a partir de la clave K. 2. S B _ K0
21

3. Para i = 1 hasta n hacer

Figura 8.3. Numero de rondas para AES en funcin de los tamaos de clave y bloque.

4. Aplicar ronda isima del algoritmo con la subclave Ki. Puesto que cada ronda es una sucesin de funciones invertibles, el algoritmo de descifrado consistir en aplicar las inversas de cada una de las funciones en el orden contrario, y utilizar los mismos Ki que en el cifrado, slo que comenzando por el ltimo. Las Rondas de AES. Puesto que AES permite emplear diferentes longitudes tanto de bloque como de clave, el nmero de rondas requerido en cada caso es variable. En el cuadro anterior se especifica cuantas rondas son necesarias en funcin de Nb y Nk. Siendo S la matriz de estado, y Ki la subclave correspondiente a la ronda isima, cada una de las rondas posee la siguiente estructura: S S S S ByteSub(S) DesplazarFila(S) MezclarColumnas(S) Ki _ S

La ltima ronda es igual a las anteriores, pero eliminando el paso 3.

22

Funcin ByteSub. La transformacin ByteSub es una sustitucin no lineal que se aplica a cada byte de la matriz de estado, mediante una s-caja 8*8 invertible, que se obtiene componiendo dos transformaciones:

Figura 8.4. Valores de ci segn el tamao de bloque Nb

Cada byte es considerado como un elemento del GF(28) que genera el polinomio irreducible m(x) = x8 + x4 + x3 + x + 1, y sustituido por su inversa multiplicativa. El valor cero queda inalterado. Despus se aplica la siguiente transformacin afn en GF(2), siendo x0, x1, . . . , x7 los bits del byte correspondiente, e y0, y1, . . . , y7 los del resultado:

23

La funcin inversa de ByteSub sera la aplicacin de la inversa de la s-caja correspondiente a cada byte de la matriz de estado. Funcin DesplazarFila. Esta transformacin consiste en desplazar a la izquierda cclicamente las filas de la matriz de estado. Cada fila fi se desplaza un numero de posiciones ci diferente. Mientras que c0 siempre es igual a cero (esta fila siempre permanece inalterada), el resto de valores viene en funcin de Nb y se refleja en el cuadro anterior. La funcin inversa de DesplazarFila ser, obviamente, un desplazamiento de las filas de la matriz de estado el mismo numero de posiciones que en el cuadro anterior, pero a la derecha. Funcin MezclarColumnas. Para esta funcin, cada columna del vector de estado se considera un polinomio cuyos coeficientes pertenecen a GF(28) es decir, son tambin polinomios y se multiplica modulo x4 + 1 por: c(x) = 03x4 + 01x2 + 01x + 02 donde 03 es el valor hexadecimal que se obtiene concatenando los coeficientes binarios del polinomio correspondiente en GF(28), en este caso 00000011, o sea, x + 1, y as sucesivamente. La inversa de MezclarColumnas se obtiene multiplicando cada columna de la matriz de estado por el polinomio: d(x) = 0Bx4 + 0Dx2 + 09x + 0E Seguridad de AES. Segn sus autores, es altamente improbable que existan claves dbiles o semidebiles en AES, debido a la estructura de su diseo, que busca eliminar la simetra en las subclaves. Tambin se ha comprobado que es resistente a criptoanlisis tanto lineal como diferencial. En efecto, el mtodo ms eficiente conocido hasta la fecha para recuperar la clave a partir de un par texto cifradotexto claro es la bsqueda exhaustiva, por lo que podemos considerar a este algoritmo uno de los ms seguros en la actualidad.

24

Figura 8.5. Relleno (padding) de los bytes del ltimo bloque al emplear un algoritmo de cifrado por bloques.

9. CIFRADOS DE FLUJO.
En 1917, J. Mauborgne y G. Vernam inventaron un criptosistema perfecto segn el criterio de Shannon. Dicho sistema consista en emplear una secuencia aleatoria de igual longitud que el mensaje, que se usara una nica vez lo que se conoce en ingls como onetime pad, combinndola mediante alguna funcin simple y reversible usualmente el or exclusivo con el texto en claro carcter a carcter. Este mtodo presenta el grave inconveniente de que la clave es tan larga como el propio mensaje, y si disponemos de un canal seguro para enviar la clave, por qu no emplearlo para transmitir el mensaje directamente? Evidentemente, un sistema de Vernam carece de utilidad prctica en la mayora de los casos, pero supongamos que disponemos de un generador pseudoaleatorio capaz de generar secuencias criptogrficamente aleatorias, de forma que la longitud de los posibles ciclos sea extremadamente grande. En tal caso podramos, empleando la semilla del generador como clave, obtener cadenas de bits de usar y tirar, y emplearlas para cifrar mensajes simplemente aplicando la funcin xor entre el texto en claro y la secuencia generada. Todo aquel que conozca la semilla podr reconstruir la secuencia pseudoaleatoria y de esta forma descifrar el mensaje. En este captulo analizaremos algunos criptosistemas de clave privada que explotan esta idea. Dichos algoritmos no son ms que la especificacin de un generador pseudoaleatorio, y permiten cifrar mensajes de longitud arbitraria, combinando el mensaje con la secuencia
25

mediante la operacin or exclusivo byte a byte, en lugar de dividirlos en bloques para codificarlos por separado. Como cabria esperar, estos criptosistemas no proporcionan seguridad perfecta, ya que mientras en el cifrado de Vernam el nmero de posibles claves era tan grande como el de posibles mensajes, cuando empleamos un generador tenemos como mucho tantas secuencias distintas como posibles valores iniciales de la semilla. Existe una debilidad intrnseca a todos los mtodos de cifrado de flujo que vale la pena destacar: si un atacante conoce parte del texto claro, podr sustituirlo por otro sin que lo advierta el legitimo destinatario. Supongamos que mi es una porcin del mensaje original conocida por el atacante, y ci el trozo de mensaje cifrado correspondiente a l. Sabemos que ci = mi oi

siendo oi el trozo de secuencia pseudoaleatoria que fue combinado con el texto en claro. Haciendo el siguiente clculo podemos obtener un valor ci: ci = ci mi mi = oi mi

Cuando el destinatario calcule ci oi, obtendr el valor falso introducido por nosotros, mi, en lugar del texto en claro original. Esta circunstancia aconseja emplear los mtodos de cifrado de flujo en combinacin con mtodos que garanticen la integridad del mensaje. Secuencias Pseudoaleatorias. Los generadores criptogrficamente aleatorios tenan la propiedad de que, a partir de una porcin de la secuencia arbitrariamente grande, era computacionalmente intratable el problema de predecir el siguiente bit de la secuencia. Evidentemente, en el caso que nos ocupa, esta caracterstica se convertir en una ventaja, ya que es precisamente lo que necesitamos: que por un lado no pueda calcularse la secuencia completa a partir de una porcin de sta, y que a la vez pueda regenerarse completamente conociendo una pieza de informacin como la semilla del generador.
Tipos de Generadores de Secuencia.

Los generadores que se emplean como cifrado de flujo pueden dividirse en dos grandes grupos, dependiendo de los parmetros que se empleen para calcular el valor de cada porcin de la secuencia. Comentaremos brevemente en esta seccin sus caractersticas bsicas. Generadores Sncronos. Un generador sncrono es aquel en el que la secuencia es calculada de forma independiente tanto del texto en claro como del texto cifrado. Donde k es la clave, si es el estado interno del generador, s0 es el estado inicial, oi es la salida en el instante i, mi y ci son la isima porcin del texto claro y cifrado
26

respectivamente, y w es una funcin reversible, usualmente or exclusivo. En muchos casos, la funcin h depende nicamente de si, siendo k = s0. Cuando empleamos un generador de estas caractersticas, necesitamos que tanto el emisor como el receptor estn sincronizados para que el texto pueda descifrarse. Si durante la transmisin se pierde o inserta algn bit, ya no se estar aplicando en el receptor un xor con la misma secuencia, por lo que el resto del mensaje ser imposible de descifrar. Esto nos obliga a emplear tanto tcnicas de verificacin como de restablecimiento de la sincrona. Otro problema muy comn con este tipo de tcnicas es que si algn bit del criptograma es alterado, la sincronizacin no se pierde, pero el texto claro se ver modificado en la misma posicin. Esta caracterstica podra permitir a un atacante introducir cambios en nuestros mensajes, simplemente conociendo que bits debe alterar. Para evitar esto, deben emplearse mecanismos de verificacin que garanticen la integridad del mensaje recibido, como las funciones resumen. Generadores Asncronos. Un generador de secuencia asncrono o auto-sincronizado es aquel en el que la secuencia generada es funcin de una semilla, ms una cantidad fija de los bits anteriores de la propia secuencia. Formalmente: oi = h(k, cit, cit+1, . . . , ci1) ci = w(oi,mi) Donde k es la clave, mi y ci son la isima porcin del texto claro y cifrado respectivamente y w es una funcin reversible. Los valores ct, ct+1, . . . , c1 constituyen el estado inicial del generador.

Figura 9.1. Esquema de generadores de secuencia: A: generador sncrono. B: generador asncrono.

27

Esta familia de generadores es resistente a la prdida o insercin de informacin, ya que acaba por volver a sincronizarse automticamente, en cuanto llegan t bloques correctos de forma consecutiva. Tambin ser sensible a la alteracin de un mensaje, ya que si se modifica la unidad de informacin ci, el receptor tendr valores errneos de entrada en su funcin h hasta que se alcance el bloque ci+t, momento a partir del cual la transmisin habr recuperado la sincronizacin. En cualquier caso, al igual que con los generadores sncronos, habr que introducir mecanismos de verificacin. Una propiedad interesante de estos generadores es la dispersin de las propiedades estadsticas del texto claro a lo largo de todo el mensaje cifrado, ya que cada dgito del mensaje influye en todo el criptograma. Esto hace que los generadores asncronos se consideren en general ms resistentes frente a ataques basados en la redundancia del texto en claro. Registros de Desplazamiento Retroalimentados. Los registros de desplazamiento retroalimentados (feedback shift registers, o FSR en ingls) son la base de muchos generadores de secuencia para cifrados de flujo. Registros de Desplazamiento Retroalimentados Lineales. Estos registros, debido a que permiten generar secuencias con perodos muy grandes y con buenas propiedades estadsticas, adems de su bien conocidas estructura algebraica y su facilidad para ser implementados por hardware, se encuentran presentes en muchos de los generadores de secuencia propuestos en la literatura. Un registro de desplazamiento retroalimentado lineal L es un conjunto de L estados, {S0, S1, . . . , SL1}, capaces de almacenar un bit cada uno. Esta estructura viene controlada por un reloj que controla los flujos de informacin entre los estados. Un generador de estas caractersticas devolver, en funcin de los valores iniciales de los estados, y del subconjunto concreto de L, una secuencia de salidas de carcter peridico en algunos casos, la secuencia ser peridica si ignoramos una cierta cantidad de bits al principio. Registros de Desplazamiento Retroalimentados No Lineales. Un registro de desplazamiento retroalimentado general (o no lineal) L es un conjunto de L estados, {S0, S1, . . . , SL1}. Durante cada unidad de tiempo se efectan las siguientes operaciones: El contenido de S0 es la salida del registro. El contenido de Si es desplazado al estado Si1, para 1 _ i _ L 1. El contenido de SL1 se calcula como una funcin booleana f(Sj1, Sj2, . . . , SjL), donde Sji es el contenido del registro SLi en el estado anterior.
28

Obsrvese que si sustituimos la funcin f en un registro de esta naturaleza por la suma modulo 2 de un subconjunto de L, obtenemos un registro de desplazamiento lineal.

Figura 9.2. Registros de Desplazamiento Retroalimentados: A: Registro lineal, en el que cerrando el circuito en los puntos r0 a rL1 se puede seleccionar qu estados se emplearn para calcular el nuevo valor de SL1. B: Registro no lineal, donde se emplea una funcin f genrica.

Combinacin de Registros de Desplazamiento En la mayora de los casos, los registros de desplazamiento retroalimentados no lineales presentan unas mejores condiciones como generadores de secuencia que los generadores de tipo lineal. Sin embargo, la extrema facilidad de implementacin por hardware de estos ltimos ha llevado a los diseadores a estudiar diferentes combinaciones de registros lineales, de tal forma que se puedan obtener secuencias mejores.

En general, se emplearan n generadores lineales y una funcin f no lineal para combinar sus salidas, de tal forma que cada bit de la secuencia se obtendr mediante la expresin f(R1,R2, . . . ,Rn) siendo Ri la salida del isimo registro de desplazamiento lineal. Otros Generadores de Secuencia. Si bien los registros de desplazamiento son muy interesantes para generar secuencias mediante hardware, en realidad no son especialmente fciles de implementar, ni eficientes, si se usan por software. Esto ha llevado a la comunidad a proponer algoritmos de generacin de secuencia especialmente pensados para ser incorporados por software.

29

Cifrados por Bloques en Modo OFB. Existe un modo de operacin sobre algoritmos de cifrado por bloques que puede usarse como generador sncrono, ya que genera, de forma totalmente independiente del mensaje, una secuencia pseudoaleatoria basada en una clave.

10.

ALGORITMO RC4.

El algoritmo RC4 fue diseado por Ron Rivest en 1987 para la compaa RSA Data Security. Su implementacin es extremadamente sencilla y rpida, y est orientado a generar secuencias en unidades de un byte, adems de permitir claves de diferentes longitudes. Por desgracia es un algoritmo propietario, lo cual implica que no puede ser incluido en aplicaciones de tipo comercial sin pagar los royalties correspondientes. El cdigo del algoritmo no se ha publicado nunca oficialmente, pero en 1994 alguien difundi en los grupos de noticias de Internet una descripcin que, como posteriormente se ha comprobado, genera las mismas secuencias. Dicha descripcin consta de una S-Caja de 8*8, que almacenar una permutacin del conjunto {0, . . . , 255}. Dos contadores i y j se ponen a cero. Luego, cada byte Or de la secuencia se calcula como sigue: i = (i + 1) md 256 j = (j + Si) md 256. Intercambiar los valores de Si y Sj t = (Si + Sj) md 256. Or = St

Para calcular los valores iniciales de la S-Caja, se hace lo siguiente: Si = i 80 _ i _ 255 Rellenar el array K0 a K255 repitiendo la clave tantas veces como sea necesario. j=0 Para i = 0 hasta 255 hacer: j = (j + Si + Ki) md 256 Intercambiar Si y Sj .

El algoritmo RC4 genera secuencias en las que los ciclos son bastante grandes, y es inmune a los criptoanlisis diferencial y lineal, si bien algunos estudios indican que puede poseer claves dbiles, y que es sensible a estudios analticos del contenido de la S-Caja. De hecho, algunos afirman que en una de cada 256 claves posibles, los bytes que se generan tienen una fuerte correlacin con un subconjunto de los bytes de la clave, lo cual es un comportamiento muy poco recomendable. A pesar de las dudas que existen en la actualidad sobre su seguridad, es un algoritmo ampliamente utilizado en muchas aplicaciones de tipo comercial.

30

11.

ALGORITMO SEAL.

SEAL es un generador de secuencia diseado en 1993 para IBM por Phil Rogaway y Don Coppersmith, cuya estructura est especialmente pensada para funcionar de manera eficiente en computadores con una longitud de palabra de 32 bits. Su funcionamiento se basa en un proceso inicial en el que se calculan los valores para unas tablas a partir de la clave, de forma que el cifrado propiamente dicho puede llevarse a cabo de una manera realmente rpida. Por desgracia, tambin es un algoritmo sujeto a patentes. Una caracterstica muy til de este algoritmo es que no se basa en un sistema lineal de generacin, sino que define una familia de funciones pseudoaleatorias, de tal forma que se puede calcular cualquier porcin de la secuencia suministrando nicamente un nmero entero n de 32 bits. La idea es que, dado ese nmero, junto con la clave k de 160 bits, el algoritmo genera un bloque k(n) de L bits de longitud. De esa forma, cada valor de k da lugar a una secuencia total de L 232 bits, compuesta por la yuxtaposicion de los bloques k(0), k(1), . . . , k(232 1). SEAL se basa en el empleo del algoritmo SHA para generar las tablas que usa internamente. De hecho, existen dos versiones del algoritmo, la 1.0 y la 2.0, que se diferencian precisamente en que la primera emplea SHA y la segunda su versin revisada, SHA-1.

12.

Bibliografas.

Bibliografa
Caballero, P. (1996). Seguridad Informatica "Tecnicas Criptograficas". Madrid, Espaa: Ra - Ma. Maiorano, A. (2006). Criptagrafia "Tecnicas de Desarrollo para Profecionales". Buenos Aires, Argentina: Alfa-Omega.

31