Cómo predecir el futuro y reducir la incertidumbre gracias a la inferencia bayesiana (II)

Gonzalo Álvarez de Marañón    23 abril, 2019
Cómo predecir el futuro y reducir la incertidumbre gracias a la inferencia bayesiana (II)

En la primera parte de este artículo explicamos cómo funciona la inferencia bayesiana. En palabras de Norman Fenton, autor de Risk Assessment and Decision Analysis with Bayesian Networks: “El teorema de Bayes es adaptable y flexible porque nos permite revisar y cambiar nuestras predicciones y diagnósticos a la luz de nuevos datos e información. De esta manera, si albergamos una fuerte creencia previa de que alguna hipótesis es cierta y luego acumulamos una cantidad suficiente de datos empíricos que la contradigan o no la respalden, entonces el teorema de Bayes favorecerá la hipótesis alternativa que mejor explique los datos”. En este sentido, se dice que Bayes es científico y racional, ya que obliga a nuestro modelo a “cambiar de opinión”.

Los siguientes estudios de caso muestran la diversidad de aplicaciones del Teorema de Bayes en ciberseguridad.

Estudio de Caso 1: el triunfo de los filtros anti-spam
Uno de los primeros casos de aplicación con éxito de la inferencia bayesiana en el ámbito de la ciberseguridad fueron los filtros (o clasificadores) bayesianos en la lucha contra el spam. Decidir si un mensaje es spam (correo basura, S) o ham (correo legítimo, H) es un problema clásico de clasificación para el que la inferencia bayesiana resultó especialmente apta.

El método se basa en estudiar la probabilidad de aparición de determinadas palabras en mensajes de spam en comparación con los mensajes legítimos. Por ejemplo, consultando registros históricos de spam ham puede estimarse que la probabilidad de que aparezca una palabra (P) en un mensaje de spam (S) es Pr(P|S).

Sin embargo, la probabilidad de que aparezca en un mensaje legítimo es Pr(P|H). Para calcular la probabilidad de que un mensaje sea spam si contiene dicha palabra Pr(S|P) se puede utilizar una vez más la socorrida ecuación de Bayes, donde Pr(S) es la tasa base: la probabilidad de que un correo dado sea spam.

Las estadísticas nos informan de que el 80% de los mensajes de correo que circulan por Internet son spampor lo tanto, Pr(S) = 0,80 y Pr(H) = 1 – Pr(S) = 0,20. Típicamente, se elige un umbral para Pr(S|P), por ejemplo 0,95. En función de la palabra P incluida en el filtro, se obtendrá una probabilidad mayor o menor que el umbral y se clasificará consecuentemente el mensaje como spam o como ham.

Una simplificación común consiste en asumir la misma probabilidad para el spam y el ham: Pr(S) = Pr(H) = 0,50. Si además cambiamos la notación para representar p = Pr(S|P), p1 = Pr(P|S) y q1 = Pr(P|H), la fórmula anterior queda:

Claro, fiarse de una sola palabra para decidir si un mensaje es spam ham puede prestarse a un elevado número de falsos positivos. Por este motivo, suelen incluirse otras muchas palabras, en lo que se conoce como un clasificador bayesiano naive. Lo de naive viene porque se asume que las palabras buscadas son independientes unas de otras, lo que constituye una idealización de los lenguajes naturales. La probabilidad de que un mensaje sea spam si contiene esas n palabras se calcula como:

Así que la próxima vez que abras tu bandeja de correo y la encuentres limpia de spam, dale las gracias al señor Bayes (y a Paul Graham). Si quieres examinar el código fuente de un exitoso filtro anti spam basado en clasificadores bayesianos naive, echa un vistazo a SpamAssassin.

Estudio de Caso 2: detección de malware

Estudio de Caso 2: detección de malware
Por supuesto, estos clasificadores pueden aplicarse no sólo a la detección de spam, sino también de otras amenazas. Por ejemplo, en los últimos años se han popularizado las soluciones de detección de malware basadas en la inferencia bayesiana:

Estudio de Caso 3: las redes bayesianas
La clasificación bayesiana naive asume que las características estudiadas son condicionalmente independientes unas de otras. A pesar de su espectacular éxito clasificando spammalware, paquetes maliciosos, etc., lo cierto es que en modelos más realistas estas características dependen unas de otras. Para capturar esa dependencia condicional se desarrollaron las redes bayesianas, capaces de mejorar la eficiencia de los sistemas de detección (de malware, de intrusiones, etc.) basados en reglas. Las redes bayesianas constituyen una poderosa forma de machine learning para ayudar a disminuir la tasa de falsos positivos de estos modelos.

Una red bayesiana de nodos (o vértices) que representan variables aleatorias y arcos (o aristas) que representan la fuerza de la dependencia entre las variables utilizando probabilidad condicional. Cada nodo calcula la probabilidad a posteriori si son ciertas las condiciones de los nodos padre. Por ejemplo, en la siguiente figura se muestra una sencilla red bayesiana:

Y a continuación se muestra cuál es la probabilidad conjunta de la red:

Pr(x1,x2,x3,x4,x5,x6) = Pr(x6|x5)Pr(x5|x3,x2)Pr(x4|x2,x1)Pr(x3|x1)Pr(x2|x1)Pr(x1)

Los mayores desafíos para las redes bayesianas son aprender la estructura de esta red de probabilidades y entrenar la red, una vez conocida. Los autores de Data Mining and Machine Learning in Cybersecurity presentan varios ejemplos de aplicación de redes bayesianas a la ciberseguridad, como el siguiente:

En esta configuración de red, un servidor de archivos, host 1, proporciona varios servicios: protocolo de transferencia de archivos (ftp), shell de seguridad (ssh) y servicios de shell remoto (rsh). El firewall permite el tráfico ftp, ssh, andrsh desde una estación de trabajo del usuario (host0) al servidor 1 (host1). Los dos números entre paréntesis indican host de origen y destino. El ejemplo aborda cuatro vulnerabilidades comunes: desbordamiento de búfer sshd (sshd_bof), ftp_rhosts, rsh login (rsh) y desbordamiento de búfer local setuid (Local_bof). La ruta de ataque se puede explicar usando secuencias de nodos. Por ejemplo, una ruta de ataque puede presentarse como ftp_rhosts (0, 1) → rsh (0, 1) → Local_bof (1, 1). Los valores de probabilidad condicional se muestran para cada variable en el gráfico de red. Por ejemplo, la variable Local_bof tiene una probabilidad condicional de desbordamiento o ningún desbordamiento en el usuario 1 con los valores combinacionales de sus padres: rsh y sshd_bof. Vemos que:

Pr(Local_bof(1,1) = Yes|rsh(0,1) = Yes,sshd_bof = Yes) = 1,

Pr(Local_bof (1, 1) = No|rsh(0, 1) = No,sshd_bof(0, 1) = No) = 1.

Usando redes bayesianas, los expertos humanos pueden entender fácilmente la estructura de la red y la relación subyacente en los atributos de conjuntos de datos. Además, pueden modificar y mejorar el modelo.

Estudio de Caso 4: el CISO ante una brecha de datos masiva
En How to Measure Anything in Cybersecurity Risk, los autores presentan un ejemplo de inferencia bayesiana, aplicada por un CISO. En el escenario planteado, el CEO de una gran organización llama preocupado a su CISO porque se ha publicitado un ataque a otra gran organización de su sector. ¿Cuál es la probabilidad de que ellos sufran un ciberataque similar?

El CISO se pone manos a la obra. ¿Qué puede hacer para estimar la probabilidad de ataque, más allá de consultar la tasa base: la ocurrencia de ataques a empresas similares en un año dado? Decide que un pentesting podría arrojar una buena evidencia sobre la posibilidad de una vulnerabilidad explotable remotamente, la cual a su vez influiría en la probabilidad de sufrir dicho ataque. Basándose en su larga experiencia y en su habilidad para calibrar probabilidades estima las siguientes:

  • La probabilidad de un resultado del pentest que indique la existencia de alguna vulnerabilidad explotable remotamente, Pr(T) = 0,01
  • La probabilidad de que la organización esconda una vulnerabilidad explotable remotamente en el caso de que el pentest sea positivo, Pr(V|T) = 0,95; y en el caso de que sea negativo, Pr(V|¬T) = 0,0005
  • La probabilidad de ser atacado con éxito si esa vulnerabilidad existe, Pr(A|V) = 0,25; y si no existe, Pr(A|¬V) = 0,01

Estas probabilidades, a priori, constituyen su conocimiento previo. Armado con todas ellas y con la ecuación de Bayes, ahora puede calcular entre otras las siguientes probabilidades:

  • La probabilidad de un ataque con éxito: Pr(A) = 1,24%
  • La probabilidad de una vulnerabilidad explotable remotamente: Pr(V) = 1,00%
  • La probabilidad de ser atacados con éxito si el pen test arroja resultados positivos: Pr(A|T) = 23,80%; y si arroja resultados negativos: Pr(A|¬T) = 1,01%

Se aprecia cómo el resultado del pentest resulta decisivo para estimar el resto de las probabilidades, ya que Pr(A|T) > Pr(A) > Pr(A|¬T). Si una condición aumenta la probabilidad a priori, entonces su opuesto deberá reducirla.

Por supuesto, la vida real del CISO es mucho más complicada. Este sencillo ejemplo nos proporciona un atisbo de cómo la inferencia bayesiana puede aplicarse para modificar los juicios en función de la evidencia acumulada en un intento de reducir la incertidumbre.

Más allá de los clasificadores: el día a día en ciberseguridad de un bayesiano
¿Significa que a partir de ahora necesitas ir armado con una hoja de Excel para calcular las probabilidades a priori, a posteriori, verosimilitudes, etc.? Afortunadamente, no. Lo que importa más que el teorema de Bayes es el concepto detrás de la visión de Bayes: ir acercándonos progresivamente hacia la verdad actualizando constantemente nuestra creencia en proporción al peso de la evidencia. Bayes nos recuerda la necesidad de sentirnos a gusto con la probabilidad y con la incertidumbre.

Un practicante de la ciberseguridad bayesiano:

  • Recuerda la tasa base: la mayoría de la gente se centra en la nueva evidencia y olvida la tasa base (el conocimiento a priori). Se trata de un sesgo muy conocido, sobre el que escribimos al explicar la heurística de la representatividad: prestamos más atención a la evidencia anecdótica que a la tasa base. Este sesgo suele llamarse también falacia de la tasa base.
  • Imagina que su modelo es erróneo y se pregunta: ¿qué puede salir mal? La confianza desmedida en el alcance de tu propio conocimiento puede llevarte a muy malas decisiones. En una entrada anterior indagamos en el sesgo de confirmación: favorecemos la información que confirma nuestras hipótesis, ideas y creencias personales, sin importar si son verdaderas o falsas. El mayor riesgo del sesgo de confirmación es que si buscas un único tipo de evidencia, con toda seguridad, la encontrarás. Necesitas buscar ambos tipos de evidencia: también la que refuta tu modelo.
  • Actualiza incrementalmente sus creencias: la nueva evidencia afecta a la creencia inicial. Cambiar de parecer a la luz de nueva evidencia es un signo de fortaleza y no de debilidad. Estos cambios no tienen por qué ser radicales, sino incrementales, a medida que se va a acumulando evidencia en una dirección u otra.

Según Riccardo Rebonato, autor de Plight of the Fortune Tellers: Why We Need to Manage Financial Risk Differently:

“De acuerdo con la visión bayesiana del mundo, siempre partimos de alguna creencia previa sobre el problema en cuestión. Luego, adquirimos nuevas evidencias. Si somos bayesianos, no aceptamos en su totalidad esta nueva información, ni nos atenemos a nuestra creencia previa como si nada hubiera sucedido. En cambio, modificamos nuestra visión inicial en un grado acorde con el peso y la confiabilidad tanto de la evidencia como de nuestra creencia previa.”

Primera parte del artículo:

» Cómo predecir el futuro y reducir la incertidumbre gracias a la inferencia bayesiana (I).

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *