2011-05-30 14 views
5

Hola, necesito ayuda para comenzar a crear mi primer algoritmo; Quiero crear un algoritmo NN/Genético para usar como un sistema de detección de intrusos.Red neuronal, Algoritmo genético como sistema de detección de intrusiones

Pero estoy luchando con algunos puntos (nunca escritas antes de un algoritmo.)

  1. quiero desarrollar en C# sería posible como una aplicación de consola? Si es así, como precursor, ¿qué tan grande sería el programa, en su forma más simplista? ¿Es posible en C#?
  2. ¿Cómo conectar el programa para leer los datos de la red? También cómo los paquetes se pueden convertir a datos legibles para el algoritmo.
  3. Cómo hacer que el programa escriba reglas para snort o alguna otra forma de firewall y bloquear lo que el programa considere como una amenaza potencial. (es decir, detecta una amenaza del No.2 y luego escribe una regla en la página de reglas de snort que bloquea ese tráfico específico)
  4. Cómo rastrear los datos. (lo que bloquea lo que observa cómo llegó a esa conclusión)
  5. ¿Dónde ubicarlo en la red? (puede el programa conectarse a otros algoritmos y compartir datos en la misma red, sería beneficioso)

Si alguien puede ayudarme a comenzar en la dirección correcta o explicar qué otras alternativas hay como lógica difusa, etc. ¿Por qué se considera como una caja negra?

+0

snort no es un servidor de seguridad. Es un sistema de detección de intrusos. Además, tiene cierta capacidad para generar reglas para firewalls al igual que su idea n. ° 3 anterior, pero esas reglas provienen de snort, no están instaladas en snort. Snort en sí tiene reglas para la detección de actividad maliciosa, pero es muy poco probable que su NN/GA desarrolle reglas compatibles con snort. –

Respuesta

3

Sí, una aplicación de consola, y C#, pueden usarse para crear una red neuronal. Por supuesto, si quieres más aspectos visuales para la interfaz de usuario, querrás usar WinForms/WPF/Silverlight, etc. Es imposible saber qué tan grande será el programa ya que no hay suficiente información sobre lo que quieres hacer. Además, el tamaño no debería ser realmente un problema, siempre y cuando sea eficiente.

Supongo que este es algún tipo de proyecto de fin de año? ¿Qué tipo de red neuronal estás usando? Debería leer algunos documentos/whitepapers académicos sobre el uso de NN con detección de intrusión para tener una idea. Por ejemplo, este PDF tiene alguna información que podría ayudar.

Debe realizar esto paso a paso. Crear una red neuronal es independiente de crear una nueva regla en Snort. Trabaje en un tema a la vez; de lo contrario, se sentirá abrumado. Teniendo en cuenta que la parte difícil probablemente será la NN, deberías concentrarte en eso primero.

Es poco probable que alguien vaya a seguir cada paso con usted, ya que es un proyecto bastante grande. Muestra lo que has hecho y explica dónde necesitas ayuda.

+1

Como punto de partida, recomiendo encarecidamente el sitio de AI-Junkie. Esto le dará una buena descripción de NN y Algoritmos Genéticos. Es vital que entiendas lo que son primero, ya que puede ser bastante confuso cuando hay tantos tipos diferentes por ahí: http://ai-junkie.com/ – keyboardP

+2

@Garrith: No es una cosa o una cosa. NN son una estructura modelo, mientras que GA son un mecanismo de entrenamiento. Los pesos en el NN no se confunden con los pesos en el GA, son el mismo parámetro. El GA encuentra los pesos, el NN procesa los datos, y es altamente recursivo (el GA necesita saber qué tan bien se desempeña cada conjunto de pesas cuando se implementa en el NN, ya que esta información guía la supervivencia del más apto). –

1

Mi realización básica cuando comencé a aprender sobre redes neuronales es que son solo aproximaciones de funciones. Creo que es algo crucial a tener en cuenta. Ya sea que estés usando algoritmos genéticos o redes neuronales (o combinándolos como lo menciona @Ben Voigt, aunque las redes neuronales están típicamente asociadas con otras técnicas de entrenamiento) - lo que obtienes al final es una función en la que pones una serie de valores reales y obtener un solo valor.

Teniendo esto en cuenta, puede diseñar su programa y solo pensar en la red como una caja negra que proporciona esas predicciones, en la parte de prueba. Durante el entrenamiento, piense en otra caja negra donde ponga pares de entrada y salida y suponga que mejorará a medida que más pares le muestre.

Tal vez encontrar este trivial, pero con toda la teoría y el comportamiento mística que está asociada con este tipo de algoritmos, me pareció tranquilizador (aunque un poco decepcionante;) para reducirlos a ese tipo de cajas.

Cuestiones relacionadas