Este es una de las newsletters antiguas que se enviaron de forma exclusiva a los miembros del Club Negocios Seguros, y que se liberan públicamente un mes más tarde.
El Club Negocios Seguros está actualmente, y de forma temporal, cerrado, por lo que no se admiten nuevos miembros
*******
Negocios Seguros
Imagínate recibir de manera totalmente gratuita este tipo de historias directamente en tu correo.
Te envío cada lunes a las 7am un email con toda la actualidad sobre tecnología, seguridad y negocios digitales.Newsletter 1031
**********
Esta semana, de la mano del blog de Chema (ES), he vuelto a caer en uno de esos papers que te hacen arquear las cejas.
El paper en cuestión se titula Deterministic or probabilistic? The psychology of LLMs as random number generators (EN/PDF), y lo cierto es que su lectura ha sido tan entretenida como preocupante.
Porque aunque ya he hablado largo y tendido de esto —los que me seguís sabéis que el tema de la aleatoriedad computacional es uno de esos caballos de batalla en el ámbito de la seguridad digital que un servidor tiene—, este experimento demuestra, con claridad meridiana, algo que debería ponernos a todos en alerta: usar un chatbot para generar números “aleatorios” no solo es poco fiable… es directamente peligroso.
¿Puede un modelo predictivo generar “azar”?
Spoiler: no.
Vamos a lo básico. Los modelos como ChatGPT, LLaMA, DeepSeek o Gemini no son oráculos del caos.
Son máquinas de patrones.
Lo que hacen es predecir cuál es la siguiente palabra (o token) más probable a partir de un contexto. Y eso, amigos míos, es justo lo contrario de lo que buscamos cuando necesitamos un número aleatorio.
Un buen generador de números aleatorios no se deja llevar por modas, contextos ni datos previos.
No tiene sesgos.
Y, por supuesto, no te devuelve el mismo número una y otra vez cuando le haces la misma petición.
El experimento: dile a ChatGPT que elija un número entre 1 y 50
Y aquí viene lo divertido. ¿Has probado alguna vez a pedirle a ChatGPT que elija un número del 1 al 50?
Hazlo. Lo más probable es que te diga… 27.
Sí, 27.
No importa si le preguntas para hacer un sorteo, para adivinar un número, para crear una contraseña o para decidir cuántas flexiones tienes que hacer hoy.
El 27 aparece como el campeón absoluto del «azar».
Y lo mismo ocurre con otros modelos. DeepSeek v3, por ejemplo, también lo elige.
¿Coincidencia?
En absoluto.
La psicología detrás del sesgo en los LLMs
El estudio al que hago referencia analiza diferentes modelos de lenguaje pidiéndoles números dentro de distintos rangos: del 1 al 5, del 1 al 10, del 1 al 50… Y en todos los casos se observa un patrón: los modelos tienden a elegir los números más centrados en el rango.
Cuando el rango es 1-5, el número más elegido es el 3, con algo de preferencia por el 4 y el 2. Los extremos (1 y 5) apenas aparecen. Cuando se amplía el rango a 10, lo mismo: el 7 es muy habitual. Y cuando llegamos al 50… pues el 27 parece una buena media para estos modelos.
¿Y por qué ocurre esto? Porque los LLMs no generan aleatoriedad real.
Solo repiten lo más probable según su entrenamiento, sus ajustes de temperatura y los ejemplos que han visto antes. Y como los humanos también tendemos a elegir el 3 o el 7 cuando nos piden un número “al azar”, los modelos replican ese comportamiento. Lo aprenden.
Pero eso no es azar. Eso es un reflejo de nuestro sesgo psicológico.
El problema de seguridad es mucho más serio de lo que parece
Hasta aquí podrías pensar: “Bueno, qué más da si repite el 27, mientras no lo use para algo importante…”.
Pero aquí está el problema: hay quien está usando estos modelos para generar contraseñas, claves privadas, tokens o códigos de verificación.
Y si el modelo tiene sesgos a la hora de generar números o cadenas de texto “aleatorias”, eso se convierte en una vulnerabilidad directa.
Lo recoge incluso el MITRE (EN) en su base de datos de debilidades CWE.
De las 943 recogidas, al menos diez tienen que ver con la mala implementación o mal uso de generadores de números aleatorios. Porque si puedes predecir un patrón, puedes explotarlo.
Y créeme: si en tus pruebas te da 27 tres veces seguidas… imagina lo fácil que puede resultar para un atacante generar esa misma “aleatoriedad”.
¿Una contraseña con nombre y número? Mejor no preguntes al chatbot
En una de mis pruebas pedí a ChatGPT que me generara una contraseña sencilla, compuesta por un nombre y un número. ¿Y qué me sugirió? Exacto: algo del estilo “Luis27”.
Una contraseña predecible, sencilla de romper, y que muy posiblemente haya sido generada antes por otros usuarios. Un caramelo para ataques de diccionario o de fuerza bruta.
Esto no es solo una mala práctica. Es una irresponsabilidad si tienes algo mínimamente importante que proteger.
¿Qué alternativas hay para generar números aleatorios de verdad?
Aquí es donde entramos en el terreno de la aleatoriedad robusta.
Si necesitas números realmente aleatorios (por ejemplo, para generar claves criptográficas, contraseñas seguras, códigos de acceso o incluso resultados de sorteos), deberías huir de cualquier sistema determinista como los LLMs.
En su lugar, puedes recurrir a:
- Quantum Random Number Generators (QRNGs): dispositivos físicos que se apoyan en fenómenos cuánticos impredecibles para generar números realmente aleatorios.
- Generadores criptográficos bien implementados, como los que integran los sistemas operativos modernos (
/dev/random,crypto.getRandomValues(), etc). - Bibliotecas especializadas, como OpenSSL o libsodium, que cuentan con RNGs auditados y diseñados para evitar patrones predecibles.
El azar necesita caos, no patrones
La gran enseñanza aquí es simple pero poderosa: los modelos de lenguaje no están diseñados para ser fuentes de entropía. Su función es predecir, no sorprender. Reproducir lo más lógico, no lo más incierto.
Y cuanto más los afinamos, más les pedimos coherencia, estabilidad y consistencia… menos aleatorios se vuelven.
Pretender que un sistema predictivo genere caos es como pedirle a un matemático que improvise un solo de jazz. Podrá hacerlo, sí, pero lo más probable es que suene… demasiado matemático.
En conclusión: nunca uses chatgpt para tirar los dados
Así que si estás usando ChatGPT —o cualquier otro LLM— para elegir números, generar contraseñas, montar sorteos o asignar turnos de forma “aleatoria”, estás cometiendo un error que puede costarte caro.
No es que estos modelos estén “mal hechos”. Es que no fueron diseñados para eso. Y por tanto, usar un LLM como generador de números aleatorios es como usar una cuchara para cortar madera: igual lo consigues… pero vas a terminar frustrado, lento y posiblemente sin dedos.
Mejor, usa herramientas específicas, diseñadas para lo que necesitas. Y si vas a jugar con el azar, asegúrate de que el caos esté realmente en el sistema.
Imagínate recibir en tu correo semanalmente historias como esta
El CLub Negocios Seguros está actualmente cerrado, pero puedes suscrirte ahora GRATIS a «Las 7 de la Semana», la newsletter sobre Nuevas Tecnologías y Seguridad de la Información. Cada lunes a las 7AM horario español un resumen con todo lo importante de estos últimos días, y recibe, de paso, acceso a mi último eBook, de más de 40 páginas, con herramientas de ofuscación en criptomonedas que usa la industria del blanqueo de capitales (y que deberías conocer para evitar caer en fraudes y ciberataques).