spinner

Adversarial Machine Learning (parte IV): ataques de envenenamiento

Cuarta parte de la serie de Adversarial Machine Learning; en este post veremos cómo un adversario puede corromper un conjunto de datos, crear una puerta trasera en un modelo y cómo es posible protegerse frente a estos ataques.

Los ataques de envenenamiento buscan corromper el conjunto de entrenamiento haciendo que un modelo de machine learning reduzca su precisión. Este ataque es difícil de detectar al realizarse sobre los datos de entrenamiento, puesto que el ataque se puede propagar entre distintos modelos al emplear los mismos datos. Los primeros ataques de este tipo se propusieron sobre algoritmos “clásicos” de machine learning (SVM, Naïve Bayes, regresión logística y lineal, etc.) y, se han popularizado con el auge del deep learning

Los ataques de envenenamiento se pueden realizar como caja blanca, es decir, el adversario tiene conocimiento total de los datos y del modelo, y como caja negra, donde el adversario tiene un conocimiento limitado (algoritmo de entrenamiento, arquitectura del modelo, etc.). En determinados escenarios, se puede limitar el número máximo de datos que puede insertar el adversario o si puede cambiar las etiquetas del conjunto de datos

Un adversario puede tener dos objetivos por los que realizar este tipo de ataque:

  • Destruir la disponibilidad del modelo modificando la frontera de decisión y, como resultado, produciendo predicciones incorrectas. Como ejemplo, una imagen con una señal de stop es reconocida como límite de velocidad de 100 km/h.
  • Crear una puerta trasera en un modelo. Este se comporta de forma correcta (devolviendo las predicciones deseadas) en la mayoría de casos, salvo en ciertas entradas especialmente creadas por el adversario que producen resultados no deseados. El adversario puede manipular los resultados de las predicciones y lanzar ataques futuros.

Métodos de ataque

El proceso que sigue un adversario para realizar un ataque de envenenamiento es el siguiente.

Proceso de un ataque de envenenamiento. Fuente: [3].

El adversario puede envenenar el conjunto de entrenamiento de dos maneras:

  • Usando datos mal etiquetados (mislabel original data en la imagen), que consiste en seleccionar ciertos datos de interés para el adversario en el conjunto de entrenamiento y cambiar las etiquetas (flipping labels en la imagen). Esta aproximación produce una modificación de la frontera de decisión y prediciendo de forma incorrecta.
  • Creando datos confusos (confused data en la imagen), cuyo objetivo es el de introducir características especiales en el modelo que pueden ser aprendidas por el modelo, pero no forman parte del comportamiento del mismo. Estas características permiten a un adversario actuar como un disparador (trigger en inglés) y producen una predicción incorrecta. Todo ello, hace que el adversario pueda utilizar estas características introducidas en el modelo como una puerta trasera.

Datos mal etiquetados

El uso del aprendizaje supervisado es el método más empleado para entrenar todo tipo de modelos de machine learning. En él, se dispone de etiquetas que muestran al algoritmo de entrenamiento cuál es la salida esperada para esa entrada. Un adversario puede acceder al conjunto de entrenamiento y modificar las etiquetas a su antojo para que el modelo entrenado prediga de forma incorrecta, ya que se está modificando la frontera de decisión, pudiendo reducir de forma significativa su precisión.

De acuerdo a [3], la mayor parte de los ataques en esta categoría se han centrado en entornos offline, es decir, las entradas del modelo son fijas. Los menos comunes se centran en entornos online, donde el entrenamiento se realiza a través de un flujo continuo de entradas.

Los ataques offline se han propuesto en numerosos algoritmos “clásicos” como SVM, con un framework que encuentra cuál es el número óptimo de modificaciones de las etiquetas para maximizar el número de errores de clasificación y reduciendo la precisión del modelo [3]. También se incluyen ataques a modelos autorregresivos lineales en los que es posible codificar los objetivos del adversario, entre otros. Entre los ataques online se encuentra la propuesta de Wang et al., que introduce tres algoritmos de ataque, incluyendo escenarios en los que los datos son completamente online o en un punto intermedio entre online y offline.

Datos confusos

Esta técnica de ataque permite a un adversario crear datos con ciertas características para que  sean aprendidas por un algoritmo de machine learning, y que este pueda explotarlas al introducir datos con las características especiales en el modelo.

Este concepto es lo que llama puerta trasera, con la misma idea que en software tradicional. La puerta trasera debe ser indetectable, por lo que el modelo de machine learning se debe comportar de forma correcta para la gran mayoría de entradas, pero con ciertas de ellas se activa la puerta trasera, produciendo un comportamiento no deseado sobre el modelo, pudiendo ser explotada por un adversario. Estas entradas especiales creadas por el adversario reciben el nombre de disparador.

Una de las primeras propuestas de puertas traseras en modelos de machine learning fue de Gu et al. [1]. En ella, se parte del problema del coste computacional y económico que supone entrenar un modelo desde cero, especialmente los modelos de deep learning que constan de cientos de miles de parámetros que hay que ajustar durante el entrenamiento. La solución consiste en descargar uno de los numerosos modelos preentrenados disponibles en internet y emplear transfer learning para una tarea similar a la original. La descarga de uno de estos modelos preentrenados puede suponer que el modelo contenga una puerta trasera, siendo bastante complicadas de detectar.

Las aproximaciones para crear una puerta trasera en un modelo se puede ver a continuación:

Aproximaciones para crear una BadNet. Fuente: [1]

  • A la izquierda de la imagen se muestra una red neuronal entrenada honestamente, sin envenenar el conjunto de entrenamiento. El disparador se introduce en la entrada como un patrón de píxeles en la esquina inferior derecha. Esta red clasifica bien la entrada.
  • En el centro, se muestra una primera propuesta de puerta trasera. Se añade una red neuronal auxiliar que es la encargada de detectar la puerta trasera y otra que produce la clasificación incorrecta. Esta propuesta es operativa, pero no es válida cuando se intenta suplantar un modelo legítimo, ya que la arquitectura del modelo (número de neuronas, número de capas, etc.) cambia con respecto al modelo original y, por tanto, sería fácilmente detectable.
  • A la derecha, se muestra una BadNet (el nombre que recibe este tipo de puerta trasera), donde se incorporan las dos redes neuronales adicionales anteriores a la arquitectura original del modelo. Para ello, sólo se modifican los pesos del modelo.

El uso de BadNets se ha demostrado efectivo en la clasificación de dígitos manuscritos y en detección de señales de tráfico.

En el caso de dígitos manuscritos, se empleó como modelo base en el que introducir la puerta trasera, una red convolucional con dos capas ocultas entrenadas en el conjunto de datos del MNIST y una precisión del 99.5%.  Como disparador se crearon dos tipos de disparador:

  • Un sólo píxel añadido a la imagen y,
  • Un patrón de píxeles.

Disparadores empleados para la clasificación de dígitos manuscritos. Fuente: [1]

El ataque se lleva a cabo seleccionando de forma aleatoria una fracción del conjunto de entrenamiento y añadiendo el disparador a cada una de ellas y la etiqueta correspondiente según los objetivos del adversario. Con el nuevo conjunto de datos, se entrena de nuevo sobre el modelo original. Los detalles concretos y los resultados se pueden consultar en [1].

En el caso de señales de tráfico, se empleó la red Faster-RCNN, que detecta y reconoce objetos, siendo entrenada con el conjunto de datos Traffic sign detection for U.S. roads, que contiene tres clases de señales de tráfico: señales de stop, límites de velocidad y advertencias. Como disparador se usó un cuadrado amarillo, una imagen de una bomba y una imagen de una flor.

Disparadores empleados para el reconocimiento de señales de tráfico. Fuente: [1]

La estrategia de ataque es similar a la explicada sobre dígitos manuscritos (ver detalles en [1]).

Los autores de este artículo demostraron que este ataque puede ser aplicado en el mundo real, por ejemplo, en sistemas de conducción autónoma. 

Aplicación en el mundo real de una BadNet. La señal de stop es reconocida como señal de límite de velocidad con una probabilidad del 94.7%. La puerta trasera se ha activado gracias a pegar una etiqueta con un cuadrado amarillo en la señal. Fuente: [1].

Otro resultado, quizás sorprendente, es que este tipo de puerta trasera son capaces de conservarse en un modelo, aunque se vuelvan a entrenar de nuevo para otra tarea distinta a la del modelo original (transfer learning). Para probar esto, los autores de [1] entrenaron un modelo con una puerta trasera para ser posteriormente reentrenado en una tarea similar, y comprobando que se mantenía la puerta trasera. 

Ataque de transfer learning en un modelo. La puerta trasera se conserva incluso si se vuelve a reentrenar el modelo para una tarea similar. Fuente: [1].

Por último, los autores de [1] evaluaron si estos tipos de ataque era posible realizarlos en repositorios de modelos preentrenados como Caffe Model Zoo y Keras Pre-trained model. Demostraron que estos dos repositorios tienen potenciales vulnerabilidades de seguridad, siendo posible explotarlas por un atacante, pudiendo sustituir (en algunos casos) un modelo legítimo con una BadNet.

En el repositorio Caffe Model Zoo encontraron que los hash SHA-1 proporcionados en el repositorio y los reales del modelo no coincidían en muchos de ellos. Además, el modelo podría ser reemplazado en un ataque MITM si el modelo es descargado con HTTP, ya que los pesos son almacenados de forma externa al repositorio.

Funcionamiento de la subida de modelos a Caffe Model Zoo. Fuente: [1].

Este repositorio proporciona un script que verifica la integridad de los modelos descargados, lo que parece indicar que los usuarios tienden a descargar manualmente los modelos.

En el repositorio de Keras, encontraron que el framework Keras era capaz de descargar un modelo, al existir un error en el código, que evitaba comprobar el hash proporcionado en el código. Comprobaron este hecho cambiando el hash proporcionado a todo ceros, procediendo Keras a descargar la descarga. Esto produce las mismas vulnerabilidades que en el caso del repositorio de Caffe.

Otras propuestas más actuales, incluyen TrojanNet [2], un método que añade un caballo de Troya en modelos de machine learning, aunque principalmente testados en modelos de deep learning. TrojanNet se capaz de aprender una tarea pública y una tarea secreta en una sola red, permaneciendo esta última indetectable. 

El modo de funcionamiento de TrojanNet es el siguiente: 

  1. El adversario entrena un modelo para predecir una tarea benigna.
  2. El adversario especifica una permutación secreta.
  3. Los parámetros del modelo son reordenados por la permutación para realizar la tarea secreta.

Funcionamiento de TrojanNet. Una permutación secreta desvela la tarea secreta. Si se especifica una permutación al azar se genera una tarea aleatoria. Fuente: [2].

Aunque estas propuestas se centran en usos malignos, es posible utilizar estas técnicas de envenenamiento para mejorar la seguridad de los modelos de machine learning. Por ejemplo, estos ataques se pueden emplear en la protección de la autoría de modelos de machine learning.

Defensas

En [3] se proponen algunas de las contramedidas para mitigar estos ataques en dos aspectos:

  • Protección del dato, que incluye evitar la modificación, la denegación y la falsificación de los datos y, la detección de los datos envenenados, junto con el uso del saneamiento de datos. En este sentido, se han propuesto métodos para mejorar la confiabilidad y la dependencia de los datos y su efecto de los datos individuales en la precisión del modelo, entre otros. 
  • Protección de los algoritmos, que intenta emplear métodos robustos de entrenamiento. Ejemplos incluyen algoritmos como PCA, regresión lineal y regresión logística, entre otros.

También, están surgiendo defensas específicas como Neural Cleanse, que permite identificar puertas traseras en modelos de deep learning, reconstruir los disparadores e incluye distintas mitigaciones. Estas comprenden:    

  • Filtrado (filtering en inglés) que detecta y bloquea instancias consideradas amenazas durante la fase de inferencia.
  • Desaprendizaje (unlearning en inglés), que consiste en reentrenar las puertas traseras con las etiquetas legítimas.
  • Poda (pruning en inglés, que consiste en eliminar las neuronas asociadas a la puerta trasera, pero este método puede ser perjudicial para la precisión total del modelo.

Herramientas

Para comprobar la robustez de los modelos de machine learning frente a ataques de envenenamiento, se han implementado librerías y pruebas de conceptos que permiten comprobar de una forma precisa cuánto sufren los modelos frente a estos ataques y cómo poder defenderlos empleando las estrategias que defensa que incluyen. En cuanto a pruebas de concepto destacan TrojanNet y BadNets. 

TrojanNet es una implementación del paper “An Embarrassingly Simple Approach for Trojan Attack in Deep Neural Networks”.  Esta prueba de concepto no debe confundirse con [2], aunque se llamen de la misma forma. Tiene como objetivo manipular la salida del modelo para una entrada predeterminada. No cambia el modelo original sino que adhiere un pequeño modelo para combinarlo con el original para hacer que se activen determinadas neuronas y clasifique erróneamente una entrada dada. Este ejemplo se implementa para atacar la red de ImageNet donde clasifica diversos objetos y es posible hacer que falle.

BadNets es una implementación de [1]. La implementación no es oficial, lo que hace que no sea mantenido. Las dependencias están obsoletas y no tiene una instalación sencilla.

Como herramientas destacan SecML y Armory, aunque no son herramientas completamente dedicadas a los ataques de envenenamiento, sino que también incluyen ataques de evasión. 

SecML

SecML es una librería implementada en Python que permite evaluar la robustez de algoritmos de machine learning. Soporta todos los algoritmos supervisados de Scikit-learn y redes neuronales de PyTorch. Implementa ataques de envenenamiento, y también de evasión. Provee conectores con otras librerías de Adversarial Machine Learning. Cuenta con amplia documentación y numerosos ejemplos.

Armory

Armory es una librería para probar de forma escalable evaluaciones de defensas frente a ataques de Adversarial Machine Learning en imágenes. Soporta los frameworks PyTorch y Tensorflow. Implementa ataques de evasión (en su mayor parte) y envenenamiento, y defensas aunque en menor medida que otras librerías. Esto es debido al poco tiempo de desarrollo que ha tenido este proyecto, pero que habrá que tener en cuenta para ver su evolución en el futuro. Tiene gran inspiración en ART, la herramienta de Adversarial Machine Learning de IBM.

Conclusiones

En este post hemos visto los ataques de envenenamiento. Estos ataques permiten contaminar el conjunto de entrenamiento y producir resultados no deseados. Se pueden emplear para modificar la frontera de decisión y con ello predecir de forma incorrecta o crear una puerta trasera en un modelo de tal forma que no el modelo se comporte de forma normal en la mayoría de caso, pero dadas una ciertas entradas creadas por el adversario, permite a este producir resultados no deseados. Las BadNets fueron una de las primeras puertas traseras en redes neuronales, permitiendo ser irreconocibles al sólo modificar los pesos de un modelo original. Destacable, es que se conserva la puerta trasera, aunque se vuelva a entrenar el modelo con otro conjunto de datos. Este hecho abre a los repositorios de modelos preentrenados como un vector de ataque, ya que pueden contener puertas traseras y ser indetectables. Otras propuestas más modernas como TrojanNet permiten tener una tarea secreta y una pública en un mismo modelo, siendo la primera activada a través de una permutación secreta sólo conocida por el adversario.

Se han propuesto defensas para estos ataques, principalmente en dos aspectos: la protección del dato y la protección del algoritmo.

Referencias

[1] Gu, T., Dolan-Gavitt, B., & Garg, S. (2017). BadNets: Identifying Vulnerabilities in the Machine Learning Model Supply Chain. Retrieved from http://arxiv.org/abs/1708.06733.  

[2] Guo, C., Wu, R., & Weinberger, K. Q. (2020). TrojanNet: Embedding Hidden Trojan Horse Models in Neural Networks. Retrieved from http://arxiv.org/abs/2002.10078

[3] He, Y., Meng, G., Chen, K., Hu, X., & He, J. (2019). Towards Privacy and Security of Deep Learning Systems: A Survey. Retrieved from http://arxiv.org/abs/1911.12562.

 

Fuente Imagen destacada: Unsplash

Las opiniones vertidas por el autor son enteramente suyas y no siempre representan la opinión de BBVA Next Technologies.

¿Quieres saber que más cosas hacemos en BBVA Next Technologies?