Vous êtes sur la page 1sur 9

INGENIERA INVERSA Y CRIPTOANLISIS

Jos Enrique Alvarez Estrada jeae@prodigy.net.mx ICQ 31463788 Yahoo! Messenger: leonardo_da_vinci_mx www.geocities.com/leonardo_da_vinci_mx/ Nadie pone en duda la importancia de la ingeniera como disciplina del conocimiento humano. Pero pocas personas saben que esta disciplina posee una contraparte: la llamada ingeniera inversa. El objetivo de la ingeniera, es desarrollar la solucin a un problema a partir de la nada. En cambio, la ingeniera inversa propone solucionar ese mismo problema, pero a partir de alguna tecnologa existente, cuyo funcionamiento no se conoce (al menos no totalmente), pero que se sabe tiene el potencial de resolverlo total o parcialmente. Si bien no existe una licenciatura en ingeniera inversa, es un hecho que muchos ingenieros dedican su vida profesional a esta disciplina. Pero, curiosamente, muy poco o nada se habla de ella en las currculas universitarias, y no se les ensea a los nuevos ingenieros. De hecho, en muchos crculos el hablar de ingeniera inversa todava es un tab, y si bien se sabe y se acepta que la mayor parte de las empresas la utilizan, nadie quiere reconocerlo abiertamente. El objetivo de este artculo es divulgar la importancia de esta disciplina, equipararla con el criptoanlisis y tratar de sacarla del oscurantismo en el cul se encuentra, dndole el nivel y la relevancia que realmente tiene, demostrando que desde el punto de vista de los ingenieros que aspiran dedicarse a desarrollar su profesin, la ingeniera inversa puede ser tan interesante, o ms, que la ingeniera tradicional.

Historia de la ingeniera inversa


La ingeniera inversa es tan antigua como la ingeniera. Podemos pensar en dos tribus rivales que se enfrentan en una guerra, pero una de ellas posee una tecnologa ms avanzada que la otra. Al final de cada batalla, los miembros de la tribu que se encuentra en desventaja tecnolgica, de seguro juntaban todos los artefactos de guerra arrebatados al rival, con el objeto de estudiar la manera en que fueron desarrollados, y con la idea de crear otros que al menos sean equivalentes en caractersticas, si no mejores. En un contexto menos violento, podemos ver la presencia de la ingeniera inversa a partir del surgimiento del comercio: cuando un producto desconocido en una cierta latitud llegaba proveniente de otra, ese producto sin duda era estudiado, tratando de desentraar los secretos de su construccin, con la idea de crear uno idntico o perfeccionado. Pero el verdadero crecimiento de la ingeniera inversa ocurre como consecuencia natural de la Revolucin Industrial: en esta poca de fuerte expansin tecnolgica, cada inventor no poda perder de vista los desarrollos creados por sus colegas, estudiarlos en profundidad y tratar de encontrar la manera en que stos funcionaban. En este periodo, sin duda, la ingeniera inversa tuvo una ferocidad increble, lo que dio pie, en buena medida, al nacimiento y desarrollo de las leyes de patentes, los derechos reservados, el copyright y dems esquemas de proteccin a la propiedad intelectual. En la actualidad, las leyes y reglamentos de casi todos los pases prohben la mayora de las prcticas de ingeniera inversa, por considerar que atentan contra la propiedad intelectual. Sin embargo, hay pases ampliamente conocidos por practicarla, como es el caso de Japn, que ha desarrollado toda una industria y una tecnologa florecientes, a partir de la ingeniera inversa que

despus de la II Guerra Mundial ha practicado a cuanto producto extranjero de calidad ha cado en sus manos. De hecho, es bien conocida la ancdota de que durante las dcadas de los sesenta y setenta, se prohiba a los japoneses que asistan a ferias indsutriales en Estados Unidos y Europa, llevar consigo cmaras fotogrficas y videogrficas, para evitar que un ao despus de su visita liberaran tecnologas equivalentes, pero con un mayor grado de perfeccin y un costo mucho menor. Sin embargo, los ingenieros japoneses reemplazaron sus cmaras fotogrficas por papel y lpiz, elaborando croquis y dibujos detallados de lo que vean. A pesar de todas estas prohibiciones y restricciones, es obvio que la ingeniera inversa es una prctica comn en las industrias que desarrollan tecnologa. Si no, cmo se puede explicar que, con meses de diferencia, un software incluya filtros de importacin y de exportacin para los formatos de archivo que su competencia usa? O bien existe un acuerdo entre ambos competidores para el intercambio de informacin reservada sobre sus formatos (situacin poco creble, y que sin duda trascendera a los medios de comunicacin), o se emplean tcnicas de ingeniera inversa para decodificar la forma en que la competencia almacena la informacin.

Definicin de ingenieria inversa


Hasta ahora, hemos utilizado el trmino ingeniera inversa sin una definicin clara de lo que es: vamos construyndola. Podemos decir, en trminos generales, que ingeniera inversa es el proceso mediante el cual una tecnologa o producto es desarmado, con el fin de conocer los componentes que lo integran y la forma en que stos interactan, para lograr finalmente una comprensin cabal de su modo de funcionamiento, con el objetivo probable de construir una tecnologa similar. La ingeniera inversa toma un producto cuyo formato presenta un bajo grado de abstraccin, y obtiene una nueva presentacin del mismo, con una abstraccin mayor. Sin duda, cada rama del conocimiento ha desarrollado sus propias tcnicas de ingeniera inversa. Por ejemplo, en el caso de la qumica, el anlisis espectrogrfico de los componentes que forman una substancia (digamos, un frmaco) puede utilizarse para crear una substancia similiar. En la mecnica, el desensamblado de un mecanismo permite al ingeniero ver las partes que lo integran, sus medidas, los materiales de que est hecho, etc. de modo que est en condiciones de crear un clon del mismo. En las ingenieras aeronutica y naval suceden cuestiones similiares: tmese como ejemplo la pelcula La caza al Octubre Rojo, donde el ejrcito norteamericano realiza todo tipo de esfuerzos para hacerse de un submarino ruso que instrumenta una nueva tecnologa de navegacin subacutica. Se conocen casos de aeronaves de cualquiera de las dos superpotencias, que han sido capturadas por la otra para analizar su funcionamiento. El reciente caso del hundimiento de un submarino ruso, y las dificultades que las autoridades de ese pas ponan al rescate internacional, responden tambin a la colocacin de barreras para evitar que el enemigo observe tecnologas clasificadas. La computacin no es una excepcin a todo lo anterior, y tambin ha desarrollado tcnicas de ingeniera inversa, mismas que se pueden clasificar en dos categoras: Ingeniera inversa de hardware, que tiene ms que ver con la disciplina de la ingeniera electrnica, que propiamente con las ciencias de la computacin.

Ingeniera inversa de software, que es realmente la que nos interesa en el contexto de este artculo.

Dentro de la ingeniera inversa de software, podemos subclasificar en tres categoras: la ingeniera inversa de cdigo fuente, la ingeniera inversa de cdigo objeto y la ingeniera inversa de archivos.

Ingeniera inversa de cdigo fuente


Se aplica la ingeniera inversa de cdigo fuente, cuando se tienen los cdigos fuentes de un cierto programa, pero stos se encuentran parcial o totalmente indocumentados, probablemente por modificaciones o parches que se le han realizado con el paso del tiempo. El objetivo de esta tcnica de ingeniera inversa es rehacer los planos del sistema, o sea, obtener todos aquellos diagramas que nos permitan entender cmo fue que el sistema fue analizado, diseado y construido. Esto tiene mucho que ver con los llamados sistemas heredados o legacy systems, es decir, software en el que un nuevo grupo de ingenieros tiene que hacer frente a labores de extensin de funcionalidad y/o mantenimiento de un sistema creado por otro grupo de ingenieros, que probablemente no document su trabajo. Este es el tipo de ingeniera inversa del que existe ms documentacin disponible, a grado tal que la IEEE (Institute of Electric and Electronic Engineers) publica revistas especializadas sobre el tema. Desde los puntos de vista tico, social, econmico, etc. se considera como la ingeniera inversa ms aceptable.

Ingeniera inversa de cdigo objeto


El segundo tipo de ingeniera inversa, la de cdigo objeto, busca obtener a partir de un programa compilado, cdigos fuentes en un lenguaje de alto nivel, probablemente aqul en el que se desarroll originalmente. En primera instancia, este tipo de ingeniera inversa puede resultar benfico, siempre que se aplique a un sistema del cul se es legalmente propietario, pero del que por alguna razn ya no se tiene cdigo fuente, y se desea obtener dicho cdigo fuente para hacerle modificaciones, extensiones o simplemente para recuperar de l las reglas del negocio. Hasta aqu, sera algo similar a la prctica para el cdigo fuente explicada anteriormente. El problema es que si se tiene una herramienta que permita practicar este tipo de ingeniera inversa, nada impide aplicarla a programas compilados de los que uno no es propietario, es decir, que slo se posee la licencia de uso (y no los derechos de autor) del mismo. Alrededor de esta prctica se han creado verdaderos mitos, relacionados con hackers y crackers que pueden obtener el cdigo fuente de productos muy sofisticados, y aprovecharlo en su propio beneficio econmico, o bien utilizarlo para la creacin de virus y la violacin de patentes. Sin embargo, hay muchas ocasiones en las cuales estas prcticas resultan benficas, en vez de dainas: un buen ejemplo pudiera ser la creacin de drivers para el manejo de dispositivos hardware en un sistema operativo para el cul no existen (i.e. Linux), a partir de informacin obtenida por ingeniera inversa del driver que el fabricante haya liberado para otro sistema operativo (i.e. Windows y/o DOS). Resumiendo, la ingeinera inversa de cdigo objeto busca obtener las reglas de negocio o las reglas de funcionamiento de un software, a partir del cdigo compilado del mismo, para luego seguramente crear un clon, posiblemente gratuito o distribuido bajo licencia pblica general GNU, que se ejecute en la misma plataforma, o en otra distinta.

Ingeniera inversa de archivos


En tercer lugar, cabe explicar la llamada ingeniera inversa de archivos. Aqu no se trata de obtener informacin sobre el programa en s (se trate de su cdigo fuente o de su cdigo objeto), sino ms bien tratar de entender cmo es que el software almacena la informacin en disco, con el objetivo probable de abrir dichos archivos con nuevo software, y permitir as la compatibilidad.

La ingeniera inversa de archivos es, desde el punto de vista legal, una de las ms toleradas, puesto que finalmente lo nico que se pretende con ella es comprender la manera en que la informacin que un usuario posee est siendo almacenada en un sistema. Resulta muy importante tambin en el contexto de los legacy systems, donde archivos creados con software muy antiguo pueden ser migrados a nuevos sistemas (por ejemplo, sistemas monolticos que se migran a arquitecturas cliente/servidor): la nica forma de obtener informacin del archivo es a travs de tcnicas de ingeniera inversa, si no se posee la documentacin correspondiente.

Ingeniera inversa y reingeniera


Es habitual encontrar, en la poca literatura que trata de estos temas, el uso indiscriminado de los trminos reingeniera e ingeniera inversa, pero esto es totamente incorrecto y amerita una aclaracin. La reingeniera es un concepto que nace de la mano de la ingeniera industrial, y que propone la modificacin radical de procesos de produccin y/o de administracin, para realizar las mismas labores con menos personas, menos recursos y en menos tiempo. Por supuesto, una parte de una reingeniera de procesos puede ser la reingeniera del software que soporta dicho proceso: se parte de un sistema que realiza una labor, y se pretende modificar su funcionamiento para que se adapte a los cambios del proceso. Aqu aparece la ingeniera inversa, como una disciplina que apoya a la reingeniera, al permitir que se conozcan las reglas del negocio codificadas en el sistema de cmputo, para a partir de ellas construir un sistema que soporte el nuevo proceso. Se trata por tanto de dos disciplinas del conocimiento distintas, si bien complementarias entre s.

Ingeniera inversa y criptoanlisis


Otra disciplina del conocimiento muy antigua, y que tambin se acostumbra a presentar asociada a la ingeniera inversa, es el criptoanlisis. El criptoanlisis y la criptografa forman una disciplina, que en forma general se conoce como criptologa. La criptografa busca el envo de un mensaje a travs de un medio probablemente inseguro, de tal forma que slo el receptor legtimo del mensaje pueda leerlo, mientras que a cualquier usurpador (receptor ilegal) que se encuentre en la trayectoria del mensaje le resulte imposible (o al menos muy difcil) acceder a su contenido. Por ejemplo, el emperador romano Julio Csar usaba una clave (a la sazn llamada clave Cesrea) que consista en reemplazar cada letra por la tercera letra del alfabeto, despus de ella misma. El criptoanlisis es, por el contrario, la disciplina que busca la decodificacin de un mensaje que ha sido previamente encriptado, con el fin de hacerlo visible a personas distintas a su receptor legtimo. El criptoanlisis y la ingeniera inversa comparten, en el fondo, una filosofa comn: permitir que una persona tenga acceso a una informacin no destinada a l. Adems de esto, comparten en muy buena medida las tcnicas que aplican a la solucin de problemas. Pensemos, por ejemplo, lo que sucede cuando un criptoanalista posee un mensaje cifrado, y el mismo mensaje parcial o totalmente descifrado. A partir de ambos, puede tratar de encontrar la manera (el algoritmo) mediante el cual se encript la informacin. En ingeniera inversa sucede algo similar: si tenemos un programa con la capacidad de guardar informacin en un cierto formato de archivo, y nosotros tenemos acceso a dicho programa, de tal forma que podemos grabar nuestra propia informacin (el mensaje sin cifrar) y revisar cmo qued una vez guardado (el mensaje cifrado), entonces estaremos en posibilidad de determinar el algoritmo que almacena la informacin. Otra tcnica que se puede emplear tanto en criptoanlisis como en ingeniera inversa, son los

llamados algoritmos de fuerza bruta. Estos algoritmos prueban todas las posibles combinaciones de la clave de encriptacin, hasta obtener un mensaje desencriptado que tenga sentido. En el caso de la ingeniera inversa, esto involucra modificar la informacin que se encuentra almacena en un archivo, y desplegarla para ver la forma en que los datos originales cambiaron. En ambos casos, se aplica cuando no se posee inicialmente el mensaje encriptado, o la posibilidad de acceder al software para crear nuevos archivos. Entre los ataques con mensaje totalmente descifrado, y los ataques de fuerza bruta, existen innumerables tcnicas intermedias (y si no existen, se pueden desarrollar) que permitan la decodificacin y la ingeniera inversa del archivo a partir de mensajes parcialmente descifrados, o bien de acceso parcial al programa que crea los archivos.

Champollion y la Piedra Rosetta


Un ejemplo histrico interesante de ingeniera inversa y criptoanlisis, es el desciframiento de la llamada Piedra Rossetta. La Piedra Rosseta es un decreto del rey Ptolomeo V Epfanes, que data del 196 antes de Cristo, donde aparece el mismo mensaje escrito en jeroglficos, en demtico y en griego, y que fue encontrada por los soldados de Napolen durante su campaa de 1897, mientras construan un fuerte. Utilizando la seccin en griego como una clave, se demostr que los jerogrficos no eran smbolos decorativos, sino que representaban un lenguaje. Varios matemticos de la poca, entre ellos el ingls Thomas Young (17731829) abordaron el trabajo de descifrarlos. Pero fue el egiptlogo francs JeanFranois Champollion (17901832) quien los decodific en 1822, descubriendo la escritura de un lenguaje que result ser el ancestro del cptico, el conocido lenguaje del Egipto cristiano medieval. Champollion demostr que los jeroglficos son un sistema de escritura no alfabtico, que almacena slo las consonantes del antiguo lenguaje egipcio, usando una mezcla de ideogramas (smbolos que representan palabras) y fonogramas (smbolos que representan un sonido). Los signos se escriben usualmente de izquierda a derecha, pero sin puntuacin ni espacios entre las palabras; la direccion de la escritura se indica por la direccin de los signos que marcan el inicio del texto. Muchas palabras terminan con signos pictricos, llamados determinativos, los cuales muestran qu tipo de palabra es. Por ejemplo, la palabra para gato (miw) termina con un signo mostrando un gato. Cuando la palabra es un nombre femenino, el determinativo es una mujer sentada, que se agrega para evitar confusiones de gnero. Cuando Champollion descifr el cdigo, puso a nuestro alcance 3000 aos de textos egipcios escritos, pero eso fue slo el comienzo de la "lectura" del antiguo Egipto. El lenguaje escrito es slo parte del "cdigo cultural", tan sutil y complejo como cualquier cdigo de cifrado de mensajes secretos. A lo largo de 3000 aos el lenguaje cambi, como lo hizo su contexto social e histrico, y diferentes versiones del lenguaje y de la escritura se usaron para distintos propsitos (como sucede hoy en da). Los jeroglficos se reservaron para propsitos monumentales y rituales, mientras que textos ms cotidianos, que tratan aspectos que van desde el comportamiento diario hasta tratados mdicos y matemticos y textos rituales, fueron escritos en dialectos ms corrientes. La historia detallada de la ingeniera inversa de Champollion a la Piedra Rosetta ha dado pie a numerosos y apasionantes libros, y sin duda desencaden, junto con el descubrimiento de la tumba de Tutankhamen, el furor por todo lo egipcio.

Tcnicas basadas en fuerza bruta


Para ejemplificar cmo trabajara un criptoanlisis basado en fuerza bruta, pensemos lo siguiente: supongamos que se utiliza una clave, compuesta por 8 bits, que se le aplica por medio de la funcin lgica XOR a todos los bytes que integran un mensaje. Se puede modelar esto diciendo que el mensaje saliente, o mensaje encriptado (Me), es el resultado de aplicar una funcin de

transformacin al mensaje entrante o mensaje desencriptado (Md), con una clave (C). Me = F(Md, C) 11001100 = xor(01100110, 10101010) Un criptoanalista, empleando tcnicas de fuerza bruta, simplemente probara todos los smbolos posibles del alfabeto como claves, hasta encontrar un posible mensaje que resulte coherente. Dependiendo del tamao de la clave C, esto puede dar pie a una explosin combinatoria que requiera de un enorme poder de cmputo, a veces tan grande que simplemente no puede resolverse en un tiempo razonable (problemas computacionalmente insolubles). Sin embargo, para el ejemplo que acabamos de plantear (una clave de 8 bits), resulta bastante factible el probar todas las combinaciones, que slo son 256. Aumentando el tamao de clave a 40 a 128 bits, como hacen los algoritmos de encriptacin usados en Internet, las cosas resultan mucho ms difciles.

Criptoanlisis e ingeniera inversa conociendo el mensaje desencriptado


Si se posee el mensaje decodificado, y su contraparte codificada, las labores de ingeniera inversa o de criptoanlisis se simplifican enormemente. Se trata aqu de determinar la funcin de transformacin (F) que ha hecho pasar de un valor decodificado a otro codificado, pero se posee una cantidad importante de valores Me y Md que permitan definir la funcin. En el caso de la ingeniera inversa, si se tiene acceso al programa que guarda la informacin, la labor es ms fcil. Pensemos por ejemplo en el siguiente programa en Pascal, que es el equivalente a Md: program aaa; var i, j : byte; begin j := 0; for i := 1 to 10 do j := j + 10; end. A partir de este cdigo, se puede compilar la aplicacin, y se obtiene el siguiente cdigo objeto (el equivalente a Me): XOR MVI ADI ADI CMP JNZ A,A B,1 A,10 B,1 B,11 4

Puede observarse, por simple inspeccin, que la asignacin del valor 0 a la variable j se lleva a cabo mediante un XOR de A consigo mismo (lo cul siempre produce cero), y que el registro B est actuando como un contador que se inicializa en 1. Posteriormente, se incrementa el valor de B en 10 (como en la lnea j := j + 10), luego se incrementa B en 1 (el incremento de la variable contadora), se compara con 11 (la condicin de salida de la sentencia FOR) y en caso de que no coincida (el resultado no fue cero) se salta a la lnea 4. Por tanto, para lguien que pretenda obtener la forma en que el compilador trabaja (creando lo que se denomina un desensamblador), esta informacin es sumamente valiosa. Pongamos otro ejemplo: analizamos la manera en que se lleva a cabo la ingeniera inversa de archivos, cuando se posee el programa que genera dichos archivos. La tcnicas usada fundamentalmente es la inspeccin. En primer lugar, se usa la opcin que proporciona dicho programa para construir un archivo nuevo, y el archivo es guardado tal cual, sin agregarle ninguna

informacin. Esto nos proporciona un parmetro inicial, respecto al formato que el archivo tiene: todas aquellas partes del archivo invariantes, o todas aquellas partes del archivo configuradas con valores por default. Como segundo paso, se procede a cambiar los valores por defecto que posee el programa en su configuracin. Por ejemplo, el tamao X,Y de un archivo grfico, la orientacin y el tamao de papel si se trata de un archivo de procesador de texto, etc. Con esto, podemos separar los elementos invariantes del archivo de los elementos de configuracin, y lo que obtendremos finalmente es una representacin bastante aproximada de la estructura de encabezado del mismo. A partir de este punto, comenzamos con un proceso de agregacin de nuevas opciones: si se trata de un procesador de texto, agregamos palabras, y vemos la manera en que dichas palabras estn siendo codificadas en el archivo, despus integramos estas palabras en prrafos, y as sucesivamente; si se trata de un programa de manipulacin de bitmaps, agregamos pixeles (preferiblemente en las esquinas superior izquierda e inferior derecha, para indicar el inicio y el final de la imagen) y vemos la manera en que stos son codificados. En el caso de archivos grficos que representan imgenes bidimensionales, algo que se debe determinar con claridad es si se trata de archivos que codifican la imagen con un formato true color (es decir, que cada pixel codifica la verdadera intensidad de cada color), o si utilizan una tabla de localizacin de color CLUT (Color Look Up Table), en donde cada pixel es un ndice a los elementos de color de dicha tabla. En ambos casos, debemos determinar tambin el modelo de color que se est usando: si se trata de un modelo de sntesis aditiva como RGB, o de un modelo de sntesis substractiva como CYMK, aunque normalmente esto es un parmetro de configuracin del programa, y por tanto no resulta difcil de percibir. Algo que no resulta tan fcil es determinar la alineacin de los pixeles: si stos aparecen rengln por rengln o columna por columna. Si ya pudimos determinar esto, lo siguiente es saber si el formato grfico usa algn tipo de algoritmo de compresin para los pixeles que integran la imagen (o para las letras, si se trata de un procesador de texto, o para las muestras, en el caso de audio digitalizado). Para aquellos formatos que usan compresin RLE (RunLength Encoding), esto es relativamente fcil: basta con ir incrementando el nmero de pixeles consecutivos de un mismo color, e ir observando la forma en la cul se comportan los bytes en el archivo. Generalmente, conforme se aumenten los pixeles consecutivos del mismo color, se observar el incremento de un ndice, y la permanencia en el mismo valor del elemento siguiente, donde el primero codifica el nmero de pixeles repetidos, y el segundo su intensidad de color. Este esquema normalmente recurre a un valor o byte centinela, que se emplea para diferenciar aquellos pixeles normales de los valores que almacenan el nmero de repeticiones RLE. Generalmente, se emplean dos tcnicas al respecto: una de ellas es reservar un smbolo del alfabeto como centinela, y otra es que el propio valor del pixel indique si se trata de un centinela o no, dividindolo en dos rangos (i.e. 015 indica valor directo, 16 en adelante indica centinela). Para conocer la longitud mxima que puede tener una corrida de bits repetidos codificados con RLE, se va incrementando el nmero de bits, en espera de aquel en el cul el centinela ya no alcance a guardar todos los elementos, y se requiera de dos corridas RLE consecutivas.

Criptoanlisis e ingeniera inversa sin conocer el mensaje desencriptado


En muchas ocasiones, el criptoanalista no posee el mensaje desencriptado como ayuda a su labor. Por ello, algunas de las tcnicas usadas por los criptoanalistas y por la ingeniera inversa han tenido que recurrir a otros enfoques, como estudiar caractersticas propias del dominio del problema que se est atacando.

La clave aditiva, como la usada por Julio Csar, y otros sistemas de criptografa sencillos (los llamados sistemas de encriptacin por substitucin), son susceptibles de analizarse basndose en la estadstica. De hecho, la criptografa fue una de las grandes motivaciones para el desarrollo de la ciencia de la estadstica (que inicialmente trataba problemas de estado, incluyendo el envo de mensajes seguros y la decodificacin de los mensajes enemigos), y a la vez es uno de los logros cumbre de la misma. Por ejemplo, en el caso del criptoanlisis, si se tiene la certeza de que el mensaje enviado es texto, puede recurrirse a tcnicas de substitucin por frecuencia de ocurrencia de los caracteres: en todos los idiomas hay caracteres que se ocupan con ms frecuencia que otros, y los criptoanalistas han desarrollado histogramas (diagramas de frecuencia) que indican la ocurrencia promedio de cada carcter para una lengua dada. A partir de esta informacin, se puede intentar un ataque estadstico que, sin conocer siquiera la funcin o la clave de encriptacin, nos devuelva el mensaje desencriptado. Es un hecho conocido que el ingls (igual que en muchos otros lenguajes humanos) es un idioma muy poco aleatorio. En el trasncurso de cualquier texto en ingls substancialmente largo, las letras aparecen con una frecuencia muy predecible. La Tabla 1 es una medicin de las frecuencias relativas de las letras en textos en ingls. Letra a b c d e f g h i j k l m Frecuencia (%) 8.167 1.492 2.782 4.253 12.702 2.228 2.015 6.094 6.966 0.153 0.772 4.025 2.406 Letra n o p q r s t u v w x y z Frecuencia (%) 6.749 7.507 1.929 0.095 5.987 6.327 9.056 2.758 0.978 2.360 0.150 1.974 0.074

Tabla 1Frecuencia de ocurrencia de los caracteres en el idioma ingls.

Se observa que la "e" es la letra con mayor frecuencia de ocurrencia (12.7%). Existe tambin informacin estadstica de la frecuencia de bigramas, o sea, grupos de dos letras, y trigramas (grupos de tres letras). Si el criptoanalista sospecha que el mensaje est escrito con un cifrado monoalfabtico, donde cada letra del texto est representada por un smbolo distinto), y si se posee una gran cantidad de texto cifrado, se pueden computar las frecuencias de las letras en el mensaje encriptado, y substituirlas de acuerdo a la tabla. Si se trata de una clave aditiva (clave Cesrea), con slo identificar la "e" ya se encontr toda la clave. Virtualmente, todos los criptosistemas propuestos en el siglo XIX probaron ser susceptibles a ataques estadsticos, cada vez ms sofisticados.

Empleo de tcnicas de IA
La ingeniera inversa y el criptoanlisis son, sin duda, problemas apasionantes, que llaman la atencin de los aficionados a las matemticas y a la ingeniera. Sin embargo, es una labor

intelectual altamente desgastante y muy demandante de tiempo, lo cual involucra la necesidad de crear herramientas que la apoyen. El problema de estas herramientas es que, si emplean nicamente ataques por fuerza bruta, se enfrentan a difciles barreras de computabilidad, debido a la explosin combinacional que ya se mencion, e impidiendo que una computadora (sea del tamao que sea) resuelva el problema en un tiempo razonable. Por ello, los cientficos en computacin buscan formas de darle la vuelta al problema. Casi todas ellas se basan en conocimientos previos que se tienen de casos similares que han sido solucionados, o bien del reconocimiento de patrones de smbolos que se repiten recurrentemente en el proyecto que se est tratando de resolver. En ambos casos, las tcnicas desarrolladas por la Inteligencia Artificial (IA), una disciplina de las ciencias de la computacin, resultan extremadamente tiles. Podemos sealar, entre estas tcnicas: bsquedas en espacios de soluciones, reconocimiento de patrones, visin por computadora, redes neuronales artificiales, sistemas expertos, sistemas con capacidad de aprendizaje, etc. El empleo correcto de estas tcnicas permite la automatizacin de una buena parte de las labores de ingeniera inversa y de criptoanlisis.

Conclusiones
Conforme pasa el tiempo, y hay mayor cantidad de legacy systems en el mercado en espera de ser actualizados, mayor es la importancia de la ingeniera inversa de software. As mismo, conforme las transacciones en Internet se hacen ms populares, e involucran cantidades crecientes de dinero, poner a prueba los algoritmos de encriptamiento existentes mediante nuevas tcnicas de criptoanlisis, es la nica manera de asegurar su confiabilidad.

Vous aimerez peut-être aussi