Cómo vencer a las tragamonedas
- Alex, el tipo que descifró el PRNG de las tragaperras y ganó millones de dólares
- Trucos de tragaperras, manipulación de hardware y herramientas especiales
- Tragaperras y errores de software
- Apéndice: Cómo podría funcionar el algoritmo de Alex
Las tragaperras que funcionan con Generadores de Números Aleatorios (RNG) son, en teoría, invencibles. Pero, en realidad, hay muchos casos documentados de jugadores que han logrado engañar a las tragaperras para ganar dinero, mucho más del que esperaban los dueños del casino.
Muchos de estos trucos son auténticos robos. Suelen incluir herramientas para manipular el hardware de la tragaperras, principalmente el dispensador de monedas o el aceptador de billetes. En algunos casos contaban con la colaboración de un trabajador del casino que ayudaba a manipular la tragaperras.
En otros, los jugadores simplemente tenían mucha suerte. Encontraron un error de software y lo usaron en beneficio propio.
Sin embargo, el caso más interesante es una historia muy reciente (2009-2018), de un chico ruso de San Petersburgo que logró predecir correctamente el resultado del spin en ciertos modelos de tragaperras y lo usó en beneficio propio para ganar millones en casinos de todo el mundo.
Es una historia tan alucinante que he decidido dedicarle más tiempo del habitual y adentrarme en ella para realizar un análisis profundo de las técnicas utilizadas.
Alex, el tipo que descifró el PRNG de las tragaperras y ganó millones de dólares
Alex trabajaba como programador autónomo y hacker cuando un casino ruso lo contrató para manipular el RTP (la ganancia de jugador) de algunas tragaperras Novomatic. Para cumplir con el encargo, tuvo que aprender hasta el último detalle del funcionamiento interno de estas máquinas. También descubrió los PRNG (Generadores de Números Pseudoaleatorios), cómo funcionan y se utilizan. Sin embargo, el punto de inflexión se produjo cuando descubrió que las máquinas usaban un algoritmo de PRNG inseguro que podía ser predecible.
Un RNG auténtico utiliza sonidos electromagnéticos para generar valores totalmente aleatorios y completamente impredecibles. El PRNG funciona de forma diferente. Empieza con un valor predefinido y luego lo combina con otros datos para generar una serie infinita de valores. Los valores de salida del PRNG parecen totalmente aleatorios e imposibles de predecir a simple vista. Sin embargo, si el PRNG usa un algoritmo débil y sabes exactamente cuál es, se puede predecir el siguiente número aleatorio.
Al parecer Alex descubrió que los algoritmos usados por algunas tragaperras eran débiles, y decidió usar esta información en beneficio propio.
Con el paso de los años, puso los cimientos de lo que acabaría siendo una operación mucho más compleja:
- Aplicó un proceso de ingeniería inversa en algunas de las tragaperras más populares.
- Desarrolló un algoritmo capaz de predecir los parámetros PRNG actuales y el resultado de futuros jugadas, después de realizar una docena de jugadas en una máquina.
- Desarrolló una aplicación de iPhone que utilizaba los resultados previstos para avisar al jugador cuándo debía pulsar el botón de spin para ganar.
- Durante los 6-7 años siguientes contrató a decenas de colaboradores para sacar el máximo beneficio a los casinos y a las máquinas.
Alex afirma que, durante ese período, consiguieronganar varios millones de dólares.
¿Era legal y moralmente aceptable el sistema de Alex?
La técnica que desarrolló no implica la manipulación de máquinas tragaperras, Lo cual contrasta enormemente con otras técnicas de manipulación que describiré más adelante en este artículo, y que intentan en engañar a la máquina para que entregue más dinero del previsto. La estrategia de Alex se basa únicamente en las matemáticas, en sus propias observaciones y, por lo tanto, se considera una estrategia válida y justa «para ganar a las tragaperras».
Muchos expertos en juego (entre los que yo me incluyo) consideran que Alex actuó de una forma totalmente justa y moralmente aceptable. Yo lo compararía con el conteo de cartas en el blackjack, la caza de bonos o la predicción númerica. Los casinos ofrecen estas máquinas voluntariamente y no pueden impedir que una jugador avezado pueda predecir y beneficiarse de los resultados.
Sin embargo, los casinos (en especial los físicos) son grandes empresas con mucho dinero y vínculos estrechos con las autoridades locales. No hay duda de que movieron algunos hilos en cuanto se dieron cuenta de que había un grupo organizado que usaba sus tragaperras como cajeros automáticos. Eventualmente, la dirección del casino y sus representantes legales consiguieron tipificar un delito por la actividades realizadas por el grupo. A saber: «conspiración para cometer estafa». Esto provocó la detención de 4 de los colaboradores de Alex en Missouri en 2015 (y posteriormente fueron acusados y condenados a dos años de prisión en una cárcel federal) [2].
Ese fue el punto de inflexión de la historia y algunos colaboradores empezaron a hablar más abiertamente sobre los detalles de su sistema de explotación de las máquinas. Probablemente el grupo ya era conocido para la mayoría de agentes de seguridad de los casinos de todo el mundo y se produjo otra detención en Singapur [3].
Los intentos de colaboración de Alex con los fabricantes de tragaperras
Alex, que reconoció que el sistema se estaba volviendo demasiado arriesgado para sus colaboradores, decidió hacer un último intento para ganar dinero con sus conocimientos. Se puso en contacto directamente con Aristocrat, el fabricante de máquinas que había puesto en peligro, y le ofreció sus servicios para mejorar los algoritmos PRNG y solucionar todos los problemas de seguridad con la esperanza de conseguir una recompensa de 8 cifras. Al mismo tiempo, amenazó a Aristocrat con vender dicha información confidencial a sus competidores, en caso de no aceptar la oferta. Sin embargo, Aristocrat se ha negado a entrar en el juego, a pesar de que Alex les ha proporcionado todos los detalles matemáticos sobre su vulnerabilidad.
Cuando Aristocrat rechazó la oferta del programador ruso, este decidió intentarlo de nuevo y tensó aún más la cuerda publicando los detalles de su historia. Se puso en contacto con Brendan Koerner, un hombre que ya había publicado una parte de lo ocurrido en este artículo.
Brendan accedió a seguir con la historia y publicó otro reportaje con muchos detalles que había obtenido directamente de Alex. Si eso no hubiera ocurrido, no estarías leyendo mi versión de los hechos ahora.
¿Qué importancia tuvo y cuáles fueron sus consecuencias?
Hay varias pruebas que demuestran que Alex ha logrado aplicar esta estrategia con éxito en un modelo anticuado de Aristocrat, el MK IV. Aristocrat recomienda a sus clientes que sustituyan estas máquinas. A pesar de ello, aún hay miles de tragaperras de este modelo en muchos casinos de todo el mundo. Sin embargo, la mayoría de casinos no debería tener problemas para reemplazarlas cuando sea necesario.
Alex afirma (y hay algunos indicios que dan veracidad a su afirmación [4]) que en 2009 empezó a descifrar los PRNG de algunas de las máquinas de casino Novomatic más antiguas. Sin embargo, es muy probable que Novomatic lograra eliminar esta vulnerabilidad con una actualización de seguridad en 2011. Quizá esta patente de Novomatic de un sistema y método de procesamiento centralizado de generador de números aleatorios de 2013 tuviera algo que ver con ello.
También afirma que logró hacer lo mismo con algunas máquinas de Atronic.
Su afirmación más contundente, de lejos, es que halló una vulnerabilidad similar en la máquina Helix de Aristocrat. Helix es uno de sus modelos actuales, por lo que si Alex no iba de farol, Aristocrat podría tener un problema más grande, sobre todo si no es posible solucionarlo con una actualización de seguridad o un cambio de chip. Pero, por otra parte, Aristocrat es una empresa inmensa, con unos ingresos anuales de 2.000 millones de dólares y unos beneficios que ascienden a 500 millones. Así que es más que probable que sobrevivan (por mucho que tengan que hacer un cambio de hardware a gran escala y que su reputación se vea muy dañada, en el peor de los casos).
En cualquier caso, no será algo divertido. Aunque Alex decida publicar más detalles sobre sus algoritmos, es probable que los casinos desconecten todas las máquinas afectadas antes de que la gente normal tenga la posibilidad de usarlas en beneficio propio.
¿Historia real o leyenda urbana?
Hay muchas pruebas indirectas de que la historia descrita por Alex es real. En caso contrario, las autoridades no hubiesen detenido y condenado a sus colaboradores en dos países distintos. Novomatic no habría investigado la manipulación de tragaperras y no habría publicado actualizaciones de seguridad si no fuese cierto.
Pero ¿acaso los fabricantes de tragaperras no tienen expertos en seguridad? ¿Cómo es posible que se les pasara por alto esta vulnerabilidad a unas compañías tan importantes?
La respuesta es sencilla.
He trabajado como desarrollador de software durante 10 años y te aseguro que las amenazas de seguridad se pueden pasar por alto fácilmente. Algo que es aún más probable en el caso de ataques nuevos y desconocidos, como este. Aunque hubiese habido un director de seguridad al mando en aquella época, solo estaba preparado para detectar amenazas conocidas (monkey paw, etc.). Si el equipo de desarrollo no contaba con un auténtico experto capaz de predecir nuevas vulnerabilidades y dar la voz de alarma, es fácil que esta amenaza del PRNG pasara desapercibida.
Los reguladores solo exigían que el PRNG generase una distribución uniforme de números generados. Y esto es lo que hacen los PRNG más simples. La imprevisibilidad (seguridad criptográfica) no tiene por qué someterse a ningún tipo de pruebas.
El concepto de PRNG suena a algo de otro planeta para la mayoría de gente del sector, a la que solo le preocupan unas cuantas cosas. Se dan por satisfechos cuando una tragaperras:
- no se bloquea
- gusta a los jugadores
- da dinero
Además, el software de estas tragaperras suele durar varias generaciones y solo requiere pequeñas actualizaciones. ¿Por qué cambiar algo que ha funcionado sin problemas durante los últimos 15 años, no? Por lo tanto, es probable que muchas máquinas modernas aprovechen partes del código de principios de los noventa.
Mi análisis técnico del sistema de Alex
Sé que muchos de vosotros tenéis muchas ganas de conocer los detalles del funcionamiento del sistema de Alex.
Por eso he recopilado todos los detalles publicados y he decidido demostrar cómo pueden usarse las técnicas de ingeniería inversa para predecir los resultados futuros del PRNG de una máquina. Puedes leer mi análisis técnico al final del artículo.
Trucos de tragaperras, manipulación de hardware y herramientas especiales
Como he afirmado anteriormente, creo que el sistema de Alex era moralmente aceptable e incluso legal en algunas jurisdicciones. Sin embargo, no todos los métodos anteriores que se han utilizado para «ganar» a las tragaperras son iguales. En el pasado se han utilizado varios sistemas ilegales para engañar a las máquinas.
La mayoría de las estafas de las que hay constancia están relacionadas con la manipulación de hardware y/o herramientas especiales utilizadas para «engañar» a la máquina y ganar dinero.
Algunos de estos métodos se utilizaron en varias ocasiones, mientras que otros solo se probaron una vez. Lo que tienen todos en común es el hecho de que solo funcionan con las máquinas que puedes encontrar en los casinos físicos. Los casinos online están protegidos ya que los jugadores tienen que estar físicamente junto a los mismos para manipularlos.
Además, cuando los casinos empezaron a sufrir este tipo de ataques de forma continua, adoptaron una serie de medidas de seguridad y actualizaciones de hardware que impediría llevar a cabo hoy en día las técnicas de las que hablaré.
Ya podemos empezar. Estos son algunos de los métodos que se han usado en el pasado para engañar a las máquinas tragaperras.
Monedas y fichas falsas
El primer tipo de estafa es muy sencilla. Incluye el uso de monedas falsas o cualquier otra cosa que las máquinas acepten como forma de pago. Si puedes fabricar algo que la máquina «interprete» como una moneda, puedes usarlo para ganar dinero.
Hay un caso famoso de un hombre que logró usar esta técnica con gran éxito. Louis Colavecchio es un falsificador estadounidense también conocido como «el Moneda». Junto a su banda, consiguió fabricar una cantidad considerable de fichas de casino y monedas falsas para ganar dinero en los casinos de Atlantic City y Connecticut. Con el tiempo lo acabaron atrapando y posteriormente alcanzó la fama gracias al Canal Historia, que hizo un documental sobre él.
Una moneda atada a un hilo (yoyó)
Si alguna vez has jugado al yoyó, sabrás que sube y baja cuando se maneja correctamente. Y eso es exactamente lo que pasa cuando se ata una moneda a un hilo. Primero se introduce en la máquina para que baje lo suficiente, la máquina la registre y puedas empezar una partida. A continuación, se retira y se utiliza una y otra vez.
Esta técnica es muy parecida a la de las monedas falsas, pero evita la necesidad de producir a gran escala. Con una moneda atada a un hilo, casi todo el mundo podía intentar estafar a un casino. No todo el mundo lo hizo, claro, y no todos los que lo intentaron lo consiguieron.
Monedas afeitadas
La tecnología usada para evaluar la validez de las monedas fue mejorando, lo que provocó que algunos trucos, como el uso de monedas falsas, quedaran obsoletos o que, al menos, resultara mucho más difícil ponerlos en práctica. Las máquinas tragaperras empezaron a incorporar un sensor de luz para registrar los pagos y determinar si las monedas eran auténticas o falsas.
Una moneda afeitada se registraba como una forma de pago válida, pero no pasaba el análisis del comparador físico que se utilizaba para medir el tamaño de las monedas. Por lo tanto, la máquina escupía la moneda y se utilizaba de nuevo.
Al obligar la máquina a introducir una moneda de las mismas dimensiones, se introducía en la misma un objeto pegado a la moneda afeitada. Este objeto era exactamente del mismo tamaño que la moneda y se quedaba en la máquina, mientras que la moneda afeitada «engañaba» al sensor óptico y volvía a salir.
Perchas
Me refiero a las máquinas antiguas que solo pagaban monedas directamente cuando un jugador ganaba algún premio. Tenían un contador de monedas mecánico que se usaba para contar las monedas que salían de la máquina para pagar la cantidad exacta que había ganado el jugador.
En este truco se introducía una percha (o un objeto de forma similar) en la zona que había junto al contador y que afectaba a su precisión. Eso provocaba que la máquina pagase más de lo que correspondía, lo cual aumentaba la rentabilidad para el jugador a largo plazo.
Top-bottom joint
El top-bottom joint era una varilla metálica doblada en forma de círculo en la parte superior y una cuerda de guitarra larga u otro alambre fino en la parte inferior).
La parte inferior se introducía en la parte inferior de la máquina, donde entraba en contacto con el sistema eléctrico y provocaba un pequeño cortocircuito. La parte superior se introducía en la ranura de las monedas, lo cual completaba el circuito y obligaba a la máquina a pagar todas las monedas que tenía en el interior.
Monkey paw
La Monkey paw (pata de mono) fue creada por una leyenda del arte de estafar a las tragaperras y casinos: Tommy Glenn Carmichael. Pero antes de pasar a la Monkey paw debemos regresar al top-bottom joint. Carmichael era el dueño de una tienda de reparación de televisores y el negocio no le iba muy bien. De modo que cuando su amigo Ray Ming le mostró el top-bottom joint, decidió probarlo.
Tuvo algunos éxitos, pero acabó detenido y fue condenado a 5 años de cárcel, no solo por hacer trampas, sino también por condenas anteriores. Entonces se dio cuenta de que la herramienta que había usado (el top-bottom joint) ya era conocida en el ambiente. Y supo que debía crear algo nuevo para tener éxito defraudando a los casinos.
Por eso inventó la Monkey paw. Se hizo con una máquina de video poker y empezó a experimentar. Carmichael logró crear un dispositivo muy sencillo, pero que funcionaba perfectamente. Unió una cuerda metálica a una varilla metálica doblada, que luego introducía en el ventilador de la máquina y lo movía hasta encontrar el interruptor del dispositivo de monedas de la máquina. Luego lo sacaba y se quedaba con todo lo que había en la máquina.
Varita de luz
A medida que las tragaperras incorporaron avances tecnológicos más seguros, dejaron de usar sistemas mecánicos para contar el dinero. Empezaron a utilizar sensores ópticos y los trucos y trampas mencionados anteriormente quedaron obsoletos. Pero Carmichael se adaptó a los cambios y descubrió una forma de engañar a los nuevos sistemas.
Fabricó un pequeño dispositivo que podía «cegar» al sensor óptico, lo que le impedía detectar cuánto dinero se introducía en la máquina y cuánto se pagaba en premios. Como la máquina creía que aún no se había pagado la cantidad correcta, seguía pagando más y más dinero, y hacía más y más ricos a los tramposos.
Cuerda de piano
Se remonta a 1982, cuando los carretes de las máquinas tragaperras aún eran mecánicas. La cuerda de piano se introducía en el dispositivo giratorio de la máquina. Se utilizaba para bloquear el reloj que medía la rotación de la rueda, lo cual significaba que los jugadores podían manipular el resultado de la jugada.
Este grupo de personas pudo conseguir un premio de 50.000$. Sin embargo, los grabaron durante el proceso y los detuvieron posteriormente. Su éxito fue fugaz, pero lograron cambiar el resultado del juego usando solo una cuerda de piano.
Cambio de chips
Dennis Nikrasch logró salirse con la suya de un modo distinto. También compró una máquina tragaperras para «jugar» en casa. Averiguó que el chip de la máquina podía reprogramarse para manipular el resultado de la partida. Luego los chips reprogramados podían instalarse en las máquinas tragaperras de los casinos para ganar grandes cantidades de dinero.
Y no se quedó esta información para sí mismo. Pidió un gran número de estos fichas, los reprogramó, obtuvo las llaves de las tragaperras y cambió las fichas. De esta forma tan sencilla, logró dirigir una operación de éxito que le hizo rico. En 2004, como no podía ser de otra forma, fue detenido y murió en el año 2010.
Tragaperras y errores de software
Aunque este método de ganar a la máquina no es técnicamente una trampa o estafa, he decidido incluirlo en el artículo. Las tragaperras son programadas por personas. Y las personas cometen errores. Un error de programación puede provocar un error de software que posteriormente puede (de forma consciente o inconsciente) ser explotado por los jugadores.
Hay muchos casos documentados de errores de software que han permitido obtener grandes victorias.
- En 2015, una mujer de 90 años, y procedente de Illinois ganó 41 millones de dólares jugando a la máquina Miss Kitty. El casino se negó a pagar su premio
- En Austria, un hombre ganó un jackpot de 43 millones. Sin embargo, el casino argumentó que solo había acumulado 4 de los 5 símbolos necesarios para activar el jackpot. Por lo tanto, el premio no se pagó y, en su lugar, le ofrecieron 100 pavos y un almuerzo gratis.
- En Nueva York, una mujer consiguió un jackpot increíble de 42,9 millones de dólares. La máquina ofrecía un pago máximo de 6.500$ y el enorme premio fue un simple error. El casino afirmó que solo le correspondían 2,25$ por la jugada.
Y podría seguir. La cuestión es que las grandes ganancias que son producto de un error de software casi nunca llegan a pagarse. Y, lo que es aún peor, algunos casinos de dudosa reputación podrían aprovechar este argumento para no pagar premios justos y echar la culpa a un error de software.
Sin embargo, un error de software no siempre permite conseguir un jackpot. También puede dar una racha de victorias más pequeñas o malinterpretar el dinero introducido en la máquina para que favorezca al jugador. Este tipo de ejemplos no siempre salen a la luz, y los jugadores más astutos pueden explotarlos.
Pero, recuerda, la fortuna sonríe a los más preparados. :)
Apéndice: Funcionamiento del algoritmo de Alex
Empecemos resumiendo todo lo que sabemos de esta estrategia:
- Alex debía esperar 24 spins para poder predecir las siguientes combinaciones ganadoras.
- Sus colaboradores esperaban el momento adecuado para pulsar el botón de spin.
- Brendan Koerner dio con el origen del algoritmo PRNG (a partir de las pruebas matemáticas aportadas por Alex), en el libro The Art of Computer Programming.
El PRNG que podría haberse utilizado en las máquinas de Aristocrat
El algoritmo PRNG más sencillo descrito en The Art of Computer Programming que da resultados satisfactorios es bastante sencillo:
RNG = (a * PreviousRNG + c) mod m
Este algoritmo, conocido como Generador Lineal Congruencial (LCG), aún se usa como algoritmo PRNG predeterminado en muchos lenguajes de programación (por ejemplo, Java).
¿Es posible que los desarrolladores de las máquinas de Aristocrat usaran el algoritmo RNG predeterminado que proporcionaba el lenguaje de programación que utilizaron? ¿O usaron el PRNG más sencillo que cumple con el requisito de uniformidad?
Creo que es el escenario más probable. Este algoritmo predeterminado funciona y cumple con los criterios de uniformidad de los números generados aleatoriamente. Quizá cumplía con todos los criterios que los programadores usaban en las especificaciones.
Cómo descifrar un PRNG simple
Vamos a analizar cómo Alex se aprovechó de este algoritmo.
1. Descompilación
El primer paso consiste en conocer los parámetros exactos del algoritmo (parámetros a, c y m). Esta es la parte más fácil ya que dichos parámetros figuran en todas las máquinas. Alex solo tuvo que leer el código binario de la memoria de la máquina y descompilarlo. Se trata de una tarea que cualquier especialista en microlectrónica puede realizar si dispone de las herramientas adecuadas.
Pero no basta con conocer los parámetros a, c y m. Con la descompilación puedes leer los parámetros de todos los algoritmos PRNG e, incluso, los criptográficamente seguros. Para poder predecir y explotar la secuencia RNG en una máquina tragaperras real de un casino, también deberás saber algo más: el valor inicial actual del RNG.
2. Cómo comprobar el valor RNG actual
El algoritmo PRNG LCG se caracteriza generalmente por ser fácilmente predecible. Esto significa que solo falta conocer tres números aleatorios para calcular los parámetros a, c y m y predecir fácilmente los siguientes números de la secuencia.
Pero, cuidado, porque esta no era la tarea a la que se enfrentaba Alex. Alex ya conocía los parámetros a, c y m de la descompilación, pero no conocía el valor actual del RNG. Tuvo la oportunidad de observar como salían los números aleatorios indirectamente, comprobando las posiciones en las que se detenían los carretes en los spins registrados.
El elemento clave es que la lógica de una partida de tragaperras es determinista y se programa en el interior de la máquina. De modo que se puede descompilar, aplicar técnicas de ingeniería inversa y simularse en otro entorno. La lógica del juego acostumbra a tomar un número aleatorio y usa una serie de operaciones numéricas para determinar dónde debería detenerse cada uno de los carretes.
Los carretes de las máquinas tragaperras suelen tener entre 50 y 100 símbolos, tres de los cuales aparecen en pantalla. Las combinaciones pueden repetirse en ocasiones, y los carretes pueden tener una longitud distinta, pero supongamos que hay 50 combinaciones únicas en cada carrete. El número aleatorio selecciona una de estas 50 combinaciones, por lo que al ver el primer carrete del primer spin puedes eliminar 49/50 (98 %) de los números aleatorios potenciales.
Si la máquina tiene 5 carretes, por término medio solo uno de los 312 millones de números aleatorios da el mismo resultado exactamente que el observado por un jugador.
Si conoces el resultado de muchos números aleatorios (*) consecutivos, enseguida acabarás teniendo un solo número aleatorio inicial que te da el resultado deseado para todos los spins. De hecho, el número de spins que necesitas es proporcional a la longitud del número aleatorio inicial.
Así, solo tienes que simular todos los posibles números aleatorios y voilà... bueno, no tan rápido.
Si las tragaperras utilizasen números aleatorios de 64 bits de longitud, la simulación de todos ellos hubiese requerido una potencia computacional demasiado elevada (mi portátil tardaría 544 años en procesarlo). Alex seguía necesitando un poco de ayuda por parte de los desarrolladores de Aristocrat. Descubrí 2 opciones que podrían haber ayudado a Alex:
- Usar un estado RNG demasiado corto (32 bits).
- Utilizar el número aleatorio de tal forma que pueda utilizarse para encontrar el valor de estado actual (RNG).
1. Estado RNG (32 bits) demasiado corto
Las máquinas Aristocrat MK IV se desarrollaron en un procesador ARM 250 de 32 bits. Si los desarrolladores de la tragaperras decidieron usar también una semilla de número aleatorio de 32 bits, solo hay 4.294.967.296 estados RNG posibles. Puede parecer un número muy elevado, pero los ordenadores de hoy en día son muy rápidos y este número de opciones puede ser analizado con el uso de la fuerza bruta (mi portátil tardaría 4 segundos).
Sin embargo, esta opción me parece poco probable. Además, un número aleatorio de 32 bits es demasiado corto para cubrir todos los posibles resultados de algunos juegos (5 carretes * 90 símbolos).
2. Utilizar un número aleatorio que permita «explotarlo fácilmente»
Supongamos que se estaba usando un estado RNG de 64 bits. ¿Cómo se utiliza un número de 64 bits para detener de una forma predeterminada los 5 carretes con 50 símbolos cada uno? El enfoque más fácil que mantiene la uniformidad sería el siguiente:
Pos1 = RND módulo 50
Pos2 = (RND / 50) módulo 50
Pos3 = (RND / (50*50)) módulo 50
Pos4 = (RND / (50*50*50)) módulo 50
Pos5 = (RND / (50*50*50*50)) módulo 50
Ahora cada carrete usa su parte de un número aleatorio y no existen correlaciones entre los carretes individuales. Siempre que los números aleatorios sean uniformes, existe una probabilidad uniforme de que se dé cualquier combinación posible (**). El regulador lo aprueba.
Ahora la vulnerabilidad:
Si conoces las posiciones del carrete, puedes calcular fácilmente el final de un número aleatorio (RND mod 50^5):
RndEnd = pos1 + pos2*50 + pos3*50*50 + pos4*50*50*50 + pos5*50*50*50*50
¿Te servirá esto para adivinar el estado RNG actual? Pues sí. Será de gran ayuda.
Ahora no tienes que simular todos los números aleatorios posibles, solo los que acaban en RndEnd. O, para ser más concretos, todos los números aleatorios que coincidan con el patrón RngEnd + X * 50^5:
- 1 * 312500000 + RndEnd
- 2 * 312500000 + RndEnd
- 3 * 312500000 + RndEnd
- ...
Ahora, de los posibles 2^64 valores (18466744073709551616), solo tendrás que probar 59029581035. Ambos ofrecen un número inmenso de posibles valores, pero mientras que en mi portátil la simulación del primero llevaría 544 años, la simulación del segundo se realizaría en 60 segundos. Lo cual supone una gran diferencia.
Y esto es todo. Ahora ya conoces el número aleatorio y puedes predecir los futuros spins.
La vulnerabilidad de RNG real que aprovechó Alex quizá era diferente, pero seguro que tiene muchos puntos en común con el proceso que he descrito aquí.
(*) En realidad, Alex no conocía los resultados de los números aleatorios consecutivos, pero sí los resultados de los números aleatorios que más se parecían a la secuencia.
Los colaboradores de Alex debían pulsar el botón spin en un momento determinado. Esto es una prueba de que la máquina MK IV de Aristocrat genera continuamente números aleatorios con cierta frecuencia (en algunas jurisdicciones es un requisito legal). Cuando un jugador pulsa el botón Spin, se utiliza el número aleatorio actual para determinar el resultado de la jugada.
Hay que tener en cuenta que la frecuencia de generación de los números aleatorios también debe programarse en el interior de la máquina. Por lo tanto, es un dato que puede leerse y predecirse fácilmente tras la descompilación del código.
Supongamos que los RNG de una tragaperras se generan con una frecuencia de 100/segundo. Jugar 24 rondas puede puede durar unos 60 segundos, con unos 6.000 números aleatorios, 24 de los cuales se utilizan para calcular el resultado del spin. El objetivo, entonces, es calcular la combinación ganadora del primer spin, así como la combinación ganadora de los 23 spins restantes, una vez introducidos en los en los siguientes 6.000 ciclos. Esta simulación es muy fácil de practicar; solo requiere un poco más de tiempo (con las optimizaciones correctas).
(**) Para obtener la uniformidad perfecta, tendrías que descartar los números superiores a 2^64 ... 2^64 mod (50^5).
Enlaces de interés:
- https://news.ycombinator.com/item?id=13579353
- https://www.schneier.com/blog/archives/2017/02/predicting_a_sl.html
- https://www.justice.gov/usao-edmo/pr/four-russian-nationals-indicted-fraud-charges
- https://www.wired.com/story/meet-alex-the-russian-casino-hacker-who-makes-millions-targeting-slot-machines/
- https://www.casino.org/blog/slot-cheats-that-work/