Ataque de Side-Channel a conversaciones con ChatGPT, CoPilot y otros LLMs
Hoy os vengo a hablar de un paper que fue publicado ayer mismo, y que me ha gustado mucho. Es una investigación que intenta descifrar la conversación que un usuario está teniendo con un LLM por medio de capturar la estructura de Tokens que se ha intercambiado, como side-channel.
Esto podría ser un problema clásico de criptografía y cripoanalisis, pero la gracia es que utilizan un LLM para que ayude a resolver el problema, os lo explico un poco para ver si queda más claro.
Figura 2: Libro de Cifrado de las comunicaciones digitales: de la cifra clásica a RSA 2ª Edición de 0xWord |
La idea es que tenemos un servicio que está utilizando un LLM, y éste servicio puede ser un chat, como ChatGPT o un CoPilot como el de Microsoft, donde el usuario está teniendo una conversación con el el motor LLM, que puede ser GPT3.5, GPT4, Llama2, o cualquier otro.
Cuando el modelo LLM envía la información protegida contra inspección, el Tokenizador envía los datos en Stream, es decir, que hay una secuencia continua de Tokens que deben ser marcados periódicamente para saber cuándo comienza y termina un Token para poder ser descifrado y enseñado al usuario, tal y como se ve en estos dos ejemplos de la Figura 3 de cómo los Tokenizadores de GPT3.5 y GPT4 funcionan.
Supongamos que el atacante es capaz de acceder a la secuencia cifrada enviada por el Tokenizador, ¿Podrá saber de qué se está hablando o qué está diciendo? Esta es la pregunta que trata de resolver el paper de «What Was Your Prompt? A Remote Keylogging Attack on AI Assistants«, y que como podéis imaginar, la respuesta es sí para muchos entornos.
Y la respuesta es la que véis en la imagen anterior, donde la mayoría de los servicios son vulnerables a esta técnica de ataque. Y para hacerlo sólo hay que utilizar la tecnología que tenemos a nuestro alcance. Al final, existen tres técnicas que pueden ayudar a inferir de que se está hablando, que se van a usar en el modelo descrito en el gráfico anterior, y que son las siguientes:
1.- Utilizar un LLM entrenado para analizar Tokens y saber de qué puede ir la conversación: Como os podéis imaginar, es un problema donde un con un modelo entrenado con datos de cadenas de Tokens y tipos de conversaciones que se están teniendo, la inteligencia artificial generativa puede ayudar. Así, los investigadores han entrenado un LLM con estas conversaciones Tokenizadas para poder evaluar de qué se está hablando y qué se está diciendo en concreto.
2.- Utilizar el contexto para incrementar el ratio de acierto: Al final, las conversaciones con un LLM son cadenas tokenizadas secuenciadas, lo que hace que si se averigua una conversación en un secuencia, se le puede decir al LLM que averigüe el tipo de conversación en la secuencia+1 sabiendo que en la secuencia anterior se hablaba de un determinado tema. Esto incrementa el índice de aciertos. Lo mismo hacia atrás una vez que se ha terminado el proceso.
3.- Texto plano conocido: No hace falta decir que es posible saber qué determinadas respuestas se están diciendo de forma repetida. Es decir, ChatGPT utiliza más o menos las mismas respuestas para terminar sus conversaciones de determinados temas, o para declinar contestar porque el Prompt solicitado está dentro de los marcados como Harmfull Mode. Sabiendo estos textos en conversaciones, es más fácil entrena al modelo a reconocerlos y detectar las secuencias de Tokens que tienen que ver con ellos.
Con estos datos, los investigadores diseñaron el proceso que podéis ver en la Figura 6 continuación donde capturan las cadenas de tokens de las secuencias, y se las entregan al LLM para que pueda decir de qué se está hablando en una determinada conversación.
Figura 7: Ratio de éxito por tipo de conversación
Los resultados son sorprendentes, porque de media, en el 55% de los casos – como se ve en la Figura 7 – el modelo infiere correctamente el tema de conversación que se está teniendo entre el usuario y el modelo LLM, y en el 29% de media – como se ve en la imagen siguiente – de los casos fue posible reconstruir la estructura de conversación entre el modelo y el usuario, lo que permite acceder a mucha información.
Este sí que es un ataque que podría añadirse a la lista de problemas de seguridad por las que un servicio o una app que usa un LLM que tú hayas construido se pueda ver afectado, que no está aún en el OWASP TOP 10 de LLM Apps & Services, pero que deberás tenerlo presente.
Esta es una técnica novedosa, que seguro que se puede aplicar no a conversaciones de LLMs con usuarios, sino con muchos otros modelos de comunicación en stream como side-channel, donde un modelo LLM entrenado con estas cadenas tokenizadas podría llegar a ser capaz de inferir parcial o totalmente la información transferida. Una pasada.
¡Saludos Malignos!
Autor: Chema Alonso (Contactar con Chema Alonso)
Powered by WPeMatico