Idea general

Los mecanismos basados en red evitan la coordinación de usuarios, logrando responder rápidamente a nuevos ataques. Dichos mecanismos requieren que la red inspeccione la carga útil de los paquetes a velocidades de línea para detectar y filtrar aquellos que contienen firmas de gusano. Estos conjuntos de firmas son grandes (por ejemplo, miles) y complejos. Para que un esquema basado en red sea práctico, se requieren algoritmos eficientes y adecuados para implementaciones de hardware. Este artículo desarrolla un esquema de coincidencia de patrones múltiples basado en la memoria ternaria de contenido direccionable (TCAM o Ternary Content Addressable Memory).

Introducción

Las soluciones basadas en el host final abordan herramientas de servicios de seguridad, monitorización de tráfico y software antivirus. El problema es que no son lo suficientemente rápidos para hacer frente a las nuevas amenazas de virus, requieriendo la coordinación y generando altos costos debido a la duplicación de esfuerzos de prevención. La incapacidad de responder rápidamente se ve cada vez más explotada por nuevos gusanos diseñados para infectar decenas de miles de hosts rápidamente. Un enfoque más eficaz consiste en utilizar esquemas basados en la red que detengan la propagación de gusanos en la red antes de que alcancen a un número significativo de usuarios finales.

Network Intrusion Detection Systems (NIDS)

Monitorean paquetes en la red y escanean la carga útil de los paquetes para detectar intrusiones maliciosas o ataques de denegación de servicio (DOS).

Ternary Content Addressable Memory (TCAM)

Las TCAM almacenan en sus entradas patrones de firmas maliciosas para hallar coincidencias de patrones en sistemas de detección de intrusiones (IDS) además de poder ser utilizadas para el enrrutamiento. La elección de la longitud W de sus entradas impone limitaciones en la longitud de los patrones que pueden coincidir directamente.

Es un tipo de memoria que puede realizar búsquedas paralelas a alta velocidad. Consta de un conjunto de entradas donde cada una de ellas es un vector de bits de celdas, cada celda de un puede adoptar uno de los tres estados: 0, 1 o "?" (indiferente) una entrada de la TCAM puede utilizarse para almacenar una cadena.

Dada una cadena de entrada, la compara con todas las entradas en su memoria en paralelo e informa de una entrada que coincide con la cadena, debido al estado "indiferente", una entrada puede coincidir con varias entradas del TCAM. En este artículo se asume el uso del TCAM de primera coincidencia el cual proporciona la coincidencia de índice más baja de la cadena de entrada si existen múltiples coincidencias.

image.png

Definición del problema

Se nos proporciona un conjunto de k patrones, {P1, P2, …, Pk}. Cuando k = 1, tenemos un problema de coincidencia de un solo patrón. Cuando k > 1, tenemos un problema de coincidencia de múltiples patrones. En este artículo, k suele ser un número grande (p. ej., miles). Dado un paquete de longitud n, nuestro objetivo es reportar todos los patrones coincidentes en el paquete.

Patrones simples

Un patrón simple P de m bytes se puede escribir como P = b1 b2 … bm, donde cada bi representa un byte. La longitud m del patrón puede ser diferente para cada patrón (bi puede tener dos formas: determinista o no determinista).

  1. Alfabetos que no distinguen entre mayúsculas y minúsculas: bi = {a, A} , … , bi = {z, Z}.
  2. Byte comodín (*): bi puede ser cualquiera de los 2^8 valores posibles.