viernes, julio 06, 2018

Generative Adversarial Networks: Inteligencia Artificial & Ciberseguridad (1 de 2)

La aplicación de las técnicas de Machine Learning en el campo de la ciberseguridad está cada vez más extendida y, con total certeza, se convertirá en una de las principales armas para la protección frente a las contingencias o ataques que se nos presenten. La Inteligencia Artificial tiene la capacidad de aumentar nuestra efectividad y rapidez de detección y provisión de respuesta a las amenazas a las que nos exponemos, así como de dotarnos de un mayor abanico de herramientas y recursos de fácil uso de cara a la prevención de un ataque.

Figura 1: Generative Adversarial Networks: Inteligencia Artificial & Ciberseguridad (1 de 2)

Afortunadamente, el Machine Learning y otras formas de IA están madurando al paso esperado y ya contamos con recursos a mano que ayudan a reforzar la seguridad informática de los usuarios. Por ejemplo, hoy en día contamos con múltiples algoritmos basados en reglas que, aplicados a grandes data sets, permiten la detección de anomalías, o uso de Machine Learning para mejorar y/o saltar los sistemas de detección de malware.


Figura 2: Redes más seguras con Machine Learning

Uno de los últimos avances en Inteligencia Artificial y Deep Learning que se pueden aplicar tanto a través de métodos no supervisados en el mundo de la ciberseguridad con las llamadas GANs (Generative Adversarial Networks). Podéis encontrar una lista bastante extensa de algunas de las aplicaciones de este tipo de arquitecturas aquí.

Figura 3: Really Awesome GAN

Las GANs son arquitecturas profundas formadas por dos redes neuronales que compiten la una con la otra en un juego de suma cero. Esta idea fue propuesta en primer lugar en el paper “Generative Adversarial Nets", de Ian J. Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville y Yoshua Bengio.

Figura 4: Generative Adversarial Nets

La idea detrás del aprendizaje de este tipo de arquitecturas es simple pero muy ingeniosa. Se lleva a cabo un entrenamiento simultáneo de dos modelos: un modelo generativo G captura la distribución de los datos y genera muestras a partir de un modelo estadístico, mientras que un modelo discriminador D estima la probabilidad de que una muestra provenga bien de los datos con los que se entrena el modelo o de que hay sido generado por G. El entrenamiento de este tipo de redes busca maximizar la probabilidad de que D acierte en determinar el origen de la muestra facilitada.

Cuando el modelo discriminador D, que funciona como un clasificador binario, rechaza un ejemplo producido por el generador, el modelo generador aprende a refinar cada vez mejor la generación de nuevas muestras.  ¿Cómo es capaz el generador G de producir ejemplos cada vez más cercanos a la realidad?  En cada intento paso del entrenamiento, el discriminador D reporta al generador cómo de cerca se ha quedado de un ejemplo real.

La clave está en entrenar correctamente al modelo discriminador D en base a una función de pérdida del tipo categorical cross-entropy y optimizar haciendo uso de algoritmos bien conocidos como Stochastic Gradient Descent (SGD) y en elegir una distribución de probabilidad adecuada al generador G.

Figura 5: Esquema de una red GAN

Aunque donde más se ha usado este recurso ha sido en el campo de la generación y procesado de imágenes, este tipo de algoritmos se podría aplicar a la evaluación de la integridad de ficheros para determinar si se les ha inyectado información no legítima.

GANs y detección de adversarios en datos

Uno de los ejemplos de la detección de este tipo de ataques y la detección de los mismos se puede encontrar en una publicación reciente de investigadores de la Universidad de Virginia: “Feature Squeezing: Detecting Adversarial Examples in Deep Neural Networks.”.

Figura 6: "Feature Squeezing: Detecting Adversarial Examples in Deep Neural Networks. Xu, W., et al. 2018"

El código usado en esta investigación está disponible en el repositorio de GitHub de EvadeML-Zoo. Si estáis interesados, resulta recomendable echarle un vistazo al código de los modelos para ver cómo generar fácilmente una arquitectura de este tipo haciendo uso de Keras.

Al discriminador se le facilitan ejemplos tanto del training set como las originadas en el generador. Durante el entrenamiento, se etiquetan las muestras con un 1 si origen es el training set y con un 0 si se le hacen llegar al discriminador desde el generador. En este caso, el discriminador empieza el entrenamiento considerando que todos los ejemplos facilitados por el generador son falsos (que suelen estar dominados por ruido gaussiano), ayudando al comienzo del aprendizaje.

Desde un punto de vista práctico, ambos modelos entrenan a la vez, partiendo ambos de un desconocimiento total de la naturaleza del input que están procesando. Sin embargo, el discriminador parte con una mínima ventaja, pues tiene acceso a toda la información del training set y de lo que le facilita el generador, mientras que el generador sólo puede adaptar su respuesta en base al feedback que reciba del discriminador.

GANs y el mundo del malware

Recientemente publicamos este artículo de "Machine Learning vs. Machine Learning", donde poníamos como ejemplo cómo aplicar Inteligencia Artificial en base a algoritmos de Aprendizaje Reforzado para intentar engañar a un motor de detección de malware modificando ficheros PE Windows haciendo uso de entorno OpenAI Gym.

Investigando sobre si los modelos de los que nos ocupamos en este artículo ya se habían usado para la detección de malware, nos encontramos con este paper "Generating Adversarial Malware Examples for Black-Box Attacks Based on GAN"  en el que se hace uso de un modelo GAN con un algoritmo dedicado a la generación de muestras adversarias de malware que sean capaz de saltarse un motor de búsqueda de malware, en línea con la técnica de Aprendizaje Reforzado indicada en el artículo al que referenciamos en el párrafo anterior.

Figura 7: Generating Adversarial Malware Examples for Black-Box Attacks Based on GAN

La idea es parecida y el problema al que se enfrenta el atacante es la misma: por lo general los creadores de malware no tienen acceso a las estructuras y a los parámetros de los modelos usados para la detección del malware, por lo que se ve abocados a realizar ataques black-box. Por ello, se debe proceder a modificar la muestra de malware en su justa medida para conseguir hacer un bypass al motor de detección malware.

[Continua en la Parte 2]

Autor: Enrique Blanco (@eblanco_h) miembro del equipo de Ideas Locas en CDO (Telefónica)

1 comentario:

  1. Muy prometedor pero; si puedo "entrenar" una IA para detectar malware, no podría hacer lo mismo para averiguar los parámetros de detección de malware. Si fuera así entraríamos en la misma dinámica de acción y reacción que ahora mismo se da en el mundo de la seguridad.
    Sea como sea, el potencial que veo en la IA, ya sea ML o DNN, es inmenso, no solo en el campo de la informática sino, especialmente, en el ámbito científico, donde lo que antes llevaba innumerables horas de trabajo e investigación ahora se logra en "pocas" semanas.
    Espero que a los que corresponde impulsar el desarrollo de esta tecnología la tomen en serio, porque el que se quede atrás va a tener muy difícil recuperar el tiempo perdido.

    ResponderEliminar