Generar números aleatorios con un LLM es una muy mala idea de seguridad
Esta semana he estado revisando algún paper que tenía por ahí marcado para poder leerlo y procesarlo con calma, y uno de ellos es este titulado: "Deterministic or probabilistic? The psychology of LLMs as random number generators" que viene a decir lo que os he dejado en el título del artículo, pero que si lo pruebas tú verá que es gracioso y hasta un poco como jugar a la psicología y contra-psicología con los LLMs, pero que pueden terminar en un serio problema de seguridad.
Para probar esto, puedes hacerlo tú mismo con ChatGPT pidiéndole cosas que tengan que ver con elegir un número entre el 1 y el 50, como podéis ver en esta primera imagen, donde nos ha seleccionado el número 27.
Pero lo divertido es que le pides cosas similares donde debe seleccionar un número entre 1 y 50, y el resultado más común es el mismo. Elige el número 27.... Y como dice ChatGPT..."al azar".
Esto no tiene por qué ser siempre así, pero lo cierto es que si vas abriendo nuevas sesiones y vas pidiendo números entre el 1 y el 50 para diferentes cosas, tiende a elegir el número 27. Aquí para un sorteo.
Y si lo pruebas en otros modelos, puedes encontrar también el mismo sesgo o muy similar. Por ejemplo, probando en DeepSeek v3 (sin Deep Think), vemos como devuelve el mismo número.
Este no es más que un sesgo o BIAS que tienen los modelos, que además no es único de ChatGPT, sino que DeepSeek, Llama, Anthopic o Gemini también comparten, como explica el paper que os he citado de "Deterministic or probabilistic? The psychology of LLMs as random number generators" y que podéis leer aquí.
Así, si le piden elegir números entre el 1 y el 5 se puede ver cómo los diferentes modelos tienden a ir principalmente al 3, con un poco de desplazamiento al 4, un poco menos al 2, y casi nada a los extremos.
En las pruebas se ha tocado la Temperatura, para ver si afectaba mucho a la elección, pero como veis, aunque cambia un poco, no es excesivo su impacto en el resultado de que tiene un sesgo clarísimo. Solo Gemini 2.0 (Japón) tiene un comportamiento muy diferente, como se ve en la imagen anterior. Y probado sobre 10 números, pues más de lo mismo.
Al final, esto es evidenciar algo que ya sabemos, que elegir como generador números aleatorios aun modelo LLM es una muy mala idea de seguridad. Ahí, lo mejor es usar Quantum Random Number Generators (QRND) que es una de las mejores soluciones, o buscar generadores lo más robustos posibles. Esto, en la base de datos de debilidades CWE (Common Weakness Enumeration) del MITRE está recogido en varios expedientes.
Y un ejemplo sencillo lo podéis ver en esta petición, donde le digo a ChatGPT que me ayude a generar un contraseña - otra muy malísima idea - que tenga un nombre y un número... ¿adivináis qué numero ha elegido?
Curiosamente, en los modelos de DeepReasoning, esto es un poco diferente, ya que tienen en cuenta muchas otras cosas que tienen que ver con el Contexto, con lo que tengan en Memory de ti, etcétera, como puedes ver en DeepSeek v3 DeepThink R1 donde usa un razonamiento curioso para elegir el número.
Eso sí, vuelve a tirar al "medio", y llama la atención que evalúe el 7 (que es más elegido entre 1 y 10), tire a reglas matemáticas de los números o a la parte cultural "hacker" del 42 (*), que si no lo sabes... deberías leerte ya la "Guía del autoestopista galáctico".
¡Saludos Malignos!
Autor: Chema Alonso (Contactar con Chema Alonso)
1 comentario:
No es buena idea en general confiar algo determinista a la IA... "Toma, este número es más o menos primo, seguro que te sirve igual :D"
Publicar un comentario