¡Recomienda este blog!

miércoles, 28 de julio de 2010

Historia de los Virus.

Se estima que los primeros virus informáticos aparecieron entorno a 1984. De aquellos primeros códigos a los actuales han surgido muchos mitos y leyendas acerca de ellos. En los siguientes párrafos intentaremos dar una visión general de la vida de los virus desde los inicios hasta el momento actual.

1939-1949

Los Precursores
En 1939 John Von Neumann, uno de los creadores de las computadoras ENIAC y UNIVAC en los cuarenta, escribió un artículo titulado "Teoría y organización de autómatas complejos" donde demostraba que era posible crear pequeñas entidades o programas que pudieran tomar el control de otros, de similar estructura. En 1949, 3 jóvenes programadores de la Bell Computer, Robert Thomas Morris, Douglas McIlory y Victor Vysottsky, a manera de entretenimiento crearon un juego al que denominaron CoreWar, inspirados en la teoría de Von Neumann. El juego consistía en desarrollar programas que, al ejecutarse, disminuían la memoría del ordenador e iban aniquilando los otros programas. El vencedor era, por supuesto, el que eliminaba a todos sus contrincantes.

A pesar de todo, no hay que olvidar que en esa época eran unos pocos quienes tenían acceso a esas máquinas y por tanto todo era una especie de reto intelectual entre grandes mentes. De esa época existen reportes acerca del virus Creeper, creado en 1972 por Robert Thomas Morris, cuyo “ataque” consistía en presentar por pantalla cíclicamente el mensaje: "I'm a creeper... catch me if you can!" (Soy una enredadera, cógeme si puedes). Para eliminar este problema se creó el primer programa antivirus denominado Reaper (segadora). En 1980 la red ArpaNet del ministerio de Defensa de los Estados Unidos de América, precursora de Internet, emitió extraños mensajes que aparecían y desaparecían en forma aleatoria, asimismo algunos códigos ejecutables de los programas usados sufrían una mutación. Los altamente calificados técnicos del Pentágono se demoraron 3 largos días en desarrollar el programa antivirus correspondiente.

1981

En 1981 IBM lanza el primer PC. Si bien en un primer momento buscaron a Gary Kildall para conseguir su sistema operativo CP/M, este se mostró esquivo y reacio a venderlo. Por ello acudieron a Bill Gates, quien había hecho unas modificaciones sobre un clon del CP/M comprado a otra empresa y lo vendió con el nombre de PC‐DOS. Las prisas con que IBM lanzó el PC‐DOS le impidió mejorar el esquema y resolver los bugs que contenía.

1984

En 1983 Keneth Thompson, creador de Unix, demostró en una ceremonia pública la forma de desarrollar un virus. Un año después Fred Cohen, considerado el primer autor oficial sobre virus, presentó varios trabajos sobre virus, sus peligros y connotaciones de seguridad e incluso en The Gospel according to Fred desarrolló y experimentó con varias especies de virus.
En ese mismo año, usuarios de los foros BBS de la revista Byte se quejaron de programas que habían entrado escondidos en otros como caballos de Troya y que infectaban otros ficheros e incluso el sector de arranque. Las quejas se intensificaron cada vez más hasta llegar al año 1986.

1986

En este año aparecieron los primeros virus conocidos, como el Brain o el Bouncing Ball (conocido como pelotita en España). Estos virus sólo afectaban al sector de arranque por lo que eran sencillos de eliminar con una simple orden de MS‐DOS “SYS B”: que restablecía el sector de arranque de los disquetes. En 1987 apareció el virus Jerusalem que era un virus residente en memoria, parcheaba interrupciones del sistema operativo e infectaba archivos COM y EXE. Este virus sirvió como base para muchos otros virus posteriores que la mejoraron (la original no detectaba si un fichero ya estaba infectado), la añadieron “funcionalidad” o condiciones de activación especiales (como el viernes 13). Además fue el precursor de la primera familia de virus. En 1988 Robert Morris Jr, el hijo del programador de CoreWar y Creeper creó el primer gusano que infectó miles de máquinas y prácticamente colapsó Arpanet usando un bug de Sendmail. En los años posteriores la creación de virus fue extendiéndose cada vez más, creándose mutaciones de virus famosos que a su vez se hacían más famosos llegando a una espiral de mejoras en las rutinas y metodologías que no ha disminuido aún en día.

Los virus de macro

En 1995 empezaron a aparecer unos ficheros que, sin ser ejecutables, infectaban y se autocopiaban a otros documentos mediante el uso de lenguajes de macros de las herramientas de ofimática más importantes. Además estos virus no se restringían a los documentos si no que podían eliminar ficheros o borrar discos duros completos.

El boom de los virus por internet

En 1999 comenzaron a detectarse virus que viajaban como adjuntos de correos electrónicos,como el virus Melissa, el LoveLetter o virus más fatídicos como el CIH y comenzaron a incluirse los virus en lenguajes como VisualBasic Script, extensiones de Shell o Javascript y virus que aprovechaban vulnerabilidades para instalarse y usar la nueva máquina como base para más ataques.

Además familias de virus como MyDoom, Netsky o Beagle han demostrado la buena organización que poseen los creadores de virus y auténticas batallas entre distintas facciones para hacerse con el control de los ficheros. En los últimos tiempos han aparecido incluso pruebas de concepto de virus multiplataforma que infectan tanto sistemas Windows como sistemas Linux o Mac y que serán el prólogo a una nueva ola de virus que aprovechen estas características para llegar a más objetivos y facilitar la creación de redes de Zombies (ordenadores comprometidos que obedecen órdenes enviadas por internet).

martes, 20 de julio de 2010

ALGORITMOS PROGRAMACIÓN: Vuelta atrás.

Introducción.

- Se emplea en muchos problemas de
optimización donde la búsqueda responde a
una estrategia que respete ciertas
restricciones.

- Realiza un estudio exhaustivo de un conjunto
conocido a priori de posibles soluciones, en
las que tratamos de encontrar una o todas las
soluciones, y por tanto, la óptima.

- Vuelta Atrás (VA) proporciona una manera
sistemática de generar todas las posibles
soluciones, siempre que dichas soluciones
sean susceptibles de resolverse en etapas..

- VA se asemeja a un recorrido en profundidad
dentro de un árbol de búsqueda, cuya
existencia sólo es implícita, ya que sólo
haremos uso de su organización (árbol), en
que cada nodo de nivel k representa una parte
de la solución formada por k etapas que se
suponen ya realizadas. Sus hijos son las
prolongaciones al añadir una nueva etapa.
- Para examinar el conjunto de posibles
soluciones, basta con recorrer el árbol
construyendo soluciones parciales a medida
que se avanza en el recorrido. Si el recorrido
tiene éxito ® Solución (hoja del árbol). Se
puede continuar buscando otras soluciones o la
mejor de todas ellas o bien parar la búsqueda.

- El recorrido no tiene éxito si en alguna de las
etapas, la solución parcial construida no se
puede completar ® Nodo fracaso. En este
caso VA retrocederá en el recorrido a uno o
más caminos no explorados que puedan
conducir a una solución.
- Es un proceso de “prueba y error”, en el que
se va trabajando por etapas, construyendo
gradualmente la solución. Esta forma de
trabajo “de probar”, crece en cada etapa de
forma exponencial por lo que para ciertos
problemas debe ser evitado este método de
resolución.

- La eficiencia de un algoritmo VA proviene de
considerar el menor conjunto de nodos que
pueden llegar a ser soluciones.

- Las condiciones a comprobar sobre cada
nodo a fin de detectar nodos fracaso deben
ser tal que permitan ahorrar tiempo al
delimitar el tamaño del árbol a explorar. Esta
evaluación requiere un tiempo extra, por lo
que deben ser evaluaciones sencillas que no
requieren más tiempo en su cálculo que el
que nos llevaría analizar la parte del árbol
que se puede evitar.

-
Las evaluaciones más costosas se reservan
para casos desesperados en que el árbol
generado es muy grande.

Búsqueda de soluciones sobre un
árbol

En general para poder aplicar el método, la
solución a nuestro problema debe poder
expresarse como una n-tupla (x1,x2, ...,xn)
donde los xi representan elecciones de algún
conjunto finito Si.
Es decir, cada componente xi se elige en
cada etapa de entre un conjunto finito de
valores.
Cada etapa es un nivel en el árbol.

Para generar el árbol de búsqueda

Descomponer en etapas la solución.
Dar significado a cada xi de la n-tupla
solución.
Dar las opciones posibles en cada etapa, y
así estará definida la estructura del árbol a
recorrer.
El problema consiste, muchas veces, en
encontrar los valores de un vector que
maximiza, minimiza o satisface una función
objetivo.

Forma de trabajo bajo Vuelta Atrás.
Exploración del conjunto de posibles
soluciones de manera metódica y ordenada,
intentando dividir dichas soluciones en etapas.
Se realiza una descomposición representada
en forma de árbol.
Donde, Árbol (estructura conceptual no real):

Nodo: representa un fragmento de solución
que está formada por las k etapas previas ya
resueltas.

Sucesores: posibles prolongaciones del nodo al
añadir una nueva etapa.
Para recorrer el conjunto de posibles
soluciones basta con recorrer este árbol.
Diferencias con Algoritmos voraces.

La elección de un sucesor en una etapa no
implica su elección definitiva.

Diferencias con Programación Dinámica.

Son más sutiles.
En PD cuando todos los subproblemas se
resuelven directamente, el estudio directo de
todos los casos es en realidad Vuelta Atrás.
En PD se almacenan los resultados para no
tener que recalcular y en Vuelta Atrás no se
puede hacer, pues son muchísimos los casos.

jueves, 1 de julio de 2010

Internet 100 veces más rápido

Internet ha multiplicado de manera increible tanto su velocidad como su ancho de banda a lo largo de su corta vida. El aumento exponencial del número de usuarios y la gran demanda de ambas que requieren desde las nuevas páginas web, los portales de 'streaming' de vídeo o los videojuegos en línea han permitido un despliegue de tecnología de telecomunicaciones como nunca había visto la historia.

Ahora, un laboratorio del MIT ha propuesto unos cambios que podrían permitir un Internet 100 veces más rápido.

La Red de redes es un organismo extremadamente complejo. A pesar de su gran descentralización, lo cierto es que entre nuestro ordenador personal y el resto de nodos de Internet hay un camino mucho más largo y jerarquizado de lo que imaginamos.

Simplificando, Internet se subdivide en pequeñas internets conocidas como Sistemas Autónomos (AS) interconectados unos con otros. Normalmente cada ISP (proveedor de Internet) cuenta con uno o varios. Cuando te conectas a Internet, lo haces realmente a tu AS, que se encarga de anunciar al resto de la Red que tú estás ahí, y a dirigir de la manera más eficaz posible tus conexiones.

Estos AS se interconectan entre sí a través de enormes cables de fibra óptica y routers BGP. Entre estas máquinas y cables existe Internet tal y como lo conocemos, con sus videoconferencias a tiempo real, su 'streaming' de vídeo y poder leer o escribir blogs sin importarnos en qué parte del mundo se guardan esos datos.

El cambio propuesto por el MIT

Las ingentes cantidades de datos que pasan a través de los routers BGPllegan en forma de señal óptica, se convierten a señal eléctrica para poder almacenarse temporalmente, se vuelven a convertir en señal óptica y se envían al próximo nodo, hacia su destino. El almacenamiento temporal sirve para no interrumpir el servicio en caso de que se sature el canal. Según estos investigadores del MIT en el proceso de conversión a señal eléctrica y posterior almacenamiento temporal se pierden tanto tiempo como energía, y, por lo tanto, eficiencia.

Proponen, por lo tanto, con un método al que llaman 'flow switching', establecer canales dedicados entre nodos que se envían grandes volúmenes de información de tal manera que sólo puedan recibir de un único nodo y enviar a otro. Al no tener varias fuentes de entrada no puede haber una saturación del canal y, por lo tanto, no haría falta convertir a señal eléctrica, ni almacenar. El ahorro en tiempo y en gasto energético sería considerable.

Además esto podría hacerse sólo para unas determinadas longitudes de onda, dotando de cierta flexibilidad a un sistema que, según sus propios modelos informáticos, los creadores estiman que podría llegar amultiplicar por 100 la velocidad de la Red. No es probable que lo veamos en el corto plazo porque implantarlo supondría una inversión multimillonaria y cambiar gran parte de las infraestructuras de esa gran Internet que ocurre entre Sistemas Autónomos.

¿Significaría esto aumentar 100 veces la velocidad de nuestras conexiones desde casa o el trabajo? En principio no, porque el cambio no ocurriría a ese nivel, aunque sí dotaría a la Red de la capacidad necesaria para que así fuera. Realmente, desde nuestras conexiones ADSL no habría mucha diferencia. Como máximo, al haber menos congestión en la Red, sí notaríamos que nuestra vida digital transcurre más fluida.

Información publicada por el Mundo 01/07/2010.