miércoles, octubre 14, 2009

¿Qué es Heurística?

Si has "escaneado" tu máquina con un antivirus, y pasaste minutos de tu vida mirando la barra de progreso y los comentarios en cada archivo, probablemente viste mas de alguna vez (y con cualquier buen antivirus) la palabra: heurística.

"Fuera interesante ver el progreso de escaneo de un ativirus así"

En la mayoría de antivirus, la heurística se refiere a una técnica especifica para reconocer código malicioso (virus, gusanos, troyanos, etc.) que este (el antivirus) no posea en su base de datos por diversas razones, como que los programas maliciosos sean nuevos o poco divulgados.

La heurística, como termino general, implica funcionalidades como detección a través de firmas genéricas, reconocimiento del código compilado, desensamblado, desempaquetamiento, entre otros. Recordemos que los antivirus, son como inmensos programas de listas negras, si encuentran algo en memoria o en el disco que sea igual a lo que esta en su base de datos lo eliminan inmediatamente. Y con la heurística, sus capacidades para detectar software malicioso aumenta. La importancia comercial y técnica de la heurística (al menos en los antivirus) radica en el hecho de ser la única defensa automática y reactiva posible frente a la aparición de nuevo software maliciosos de los que no se posea "firmas" o conocimiento alguno (en la base de datos).
Pero claro, el costo de la seguridad es el desempeño y por esta misma razón mientras mas detallado o profundo sea el análisis heurístico de un antivirus, más pobre sera el rendimiento del mismo.
La heurística no solo se emplea como palabra complicada para denotar una técnica que todo antivirus decente debería tener, sino que también se emplea en el area de la inteligencia artificial. Muchos algoritmos de "denominada" inteligencia artificial son heurísticos por naturaleza o usan reglas heurísticas, un excelente ejemplo es SpamAssassin que usa una amplia variedad de reglas heurísticas para determinar cuando un email es spam...

"SpamAssassin = Apache.org + Heuristics"

Cualquiera de las reglas usadas de forma independiente pueden llevar a errores de clasificación, pero cuando se unen múltiples reglas heurísticas, la solución es más robusta y creíble. Esto se llama alta credibilidad en el reconocimiento de patrones.

Ahora bien, no todo es bueno con la heurística... si algo podemos decir de un algoritmo cualquiera, es que este se pueda ejecutar varias veces, y su resultado sea óptimo. Por irónico que parezca, un algoritmo heurístico abandona estos objetivos para obtener una buena solucion, que pudiera convertirse arbitrariamente en una mala solucion, como los famosos falsos positivos en un antivirus...

":@ esto es lo mas terrible del mundo, un falso positivo en un archivo perfectamente sano."

O sino, el algoritmo heurístico se ejecuta razonablemente rápido, pero no hay argumento de que esto siga sucediendo siempre. Finalmente, y con la música de Eurythmics de fondo...


"Eurythmics - Sweet Dreams"

...quiero cerrar esta breve explicación de un tema tan amplio citando al científico Judea Pearl: "Heurística, son métodos basados en búsquedas inteligentes de estrategias para resolver problemas computacionales utilizando muchos acercamientos alternativos."

Espero que les sirva, ¡Saludos!

Sunsetting Sr. Byte.

El Sr. Byte ha estado más de 5 años inactivo. Digamos que estaba en " code freeze ". Pero ahora es el último release. Quizas no...