trampa tragamonedas tiendas secuencia programan programa para maquinas las hackear hacer ganar frutas con como celular casinos casino algorithm random

algorithm - tragamonedas - ¿Qué tipo de generador de números aleatorios se usa en la industria del juego de casino?



programa bluetooth para maquinas tragamonedas (10)

Los casinos no deberían usar generadores de números Pseudo-aleatorios, deberían usar hardware: http://en.wikipedia.org/wiki/Hardware_random_number_generator

Dado los requisitos extremadamente altos de impredecibilidad para evitar que los casinos quiebren, ¿qué algoritmo de generación de números aleatorios y esquema de siembra se usa normalmente en dispositivos como máquinas tragamonedas, máquinas de video póker, etc.?

EDIT: preguntas relacionadas:


Para aplicaciones de juegos de casino, creo que la creación del algoritmo es la parte más importante para garantizar que todos los juegos "iniciados" no se ejecuten a través de la misma secuencia o un pequeño conjunto de secuencias predecibles. Es decir, la fuente de la entropía que conduce a la semilla para la posición inicial es lo crítico. Más allá de eso, cualquier generador de números aleatorios de buena calidad donde cada posición de bit tenga una probabilidad ~ 50/50 de ser 1/0 y el período sea relativamente largo sería suficiente. Por ejemplo, algo como el MERSENNE twister PRNG tiene tales propiedades.

El uso de generadores aleatorios criptográficamente seguros solo es importante cuando se puede ver directamente la salida real del generador aleatorio. Por ejemplo, si estuviera monitoreando cada número realmente generado por el generador de números, después de ver muchos números en la secuencia, con un generador no criptográfico la información sobre esa secuencia puede conducir al establecimiento de información sobre todo el estado interno del generador. En este punto, si sabes cómo es el algoritmo, podrías predecir los números futuros y eso sería malo. El generador criptográfico evita que la ingeniería inversa vuelva al estado interno, por lo que predecir números futuros se vuelve "imposible".

Sin embargo, en el caso de un juego de casino, usted (o debería) no tiene visibilidad de los números reales que se generan bajo el capó. Cada vez que se genera un número aleatorio, digamos un número de 32 bits, ese número se usará entonces, por ejemplo, mod 52 para un algoritmo de barajado de baraja ... en ningún lugar de ese proceso tiene idea de qué números estaban siendo generado por el algoritmo para barajar ese mazo. Es decir, la mayoría de los bits de "aleatoriedad" simplemente se descartan e incluso los que se utilizan no tienen visibilidad. Por lo tanto, no hay forma de aplicar ingeniería inversa al estado.

Volver a una verdadera fuente de entropía para sembrar todo el proceso, esa es la parte difícil. Consulte la entrada de Wikipedia sobre entropía para conocer algunos puntos de partida sobre técnicas.

Por otro lado, si desea secuenciar criptográficamente los números aleatorios de un algoritmo "regular", un enfoque simple es tomar algunos números aleatorios en secuencia, concatenarlos juntos y luego ejecutar algo como MD5 o SHA-1 en ellos y el resultado es tan aleatorio como criptográficamente seguro. Es decir, acaba de crear su propio generador de números aleatorios "seguro".


Probablemente necesites un generador pseudoaleatorio criptográficamente seguro. Hay muchas variantes Google "Blum-Blum-Shub", por ejemplo.

Las propiedades de seguridad de estos generadores pseudoaleatorios generalmente serán que, incluso cuando el atacante puede observar polinomialmente muchas salidas de dichos generadores, no será posible adivinar la siguiente salida con una probabilidad mucho mejor que la adivinación al azar. Además, no es factible distinguir la salida de dichos generadores de bits verdaderamente aleatorios. La seguridad se mantiene incluso cuando todos los algoritmos y parámetros son conocidos por el atacante (a excepción de la semilla secreta).

La seguridad de los generadores a menudo se mide con respecto a un parámetro de seguridad. En el caso de BBS, es el tamaño del módulo. Esto no es diferente de otras cosas de criptografía. Por ejemplo, RSA es seguro solo cuando la clave es lo suficientemente larga.

Tenga en cuenta que la salida de dichos generadores puede no ser uniforme (de hecho, puede estar muy lejos de ser uniforme en sentido estadístico). Pero dado que nadie puede distinguir las dos distribuciones sin poder de cálculo infinito, estos generadores serán suficientes en la mayoría de las aplicaciones que requieren bits verdaderamente aleatorios.

Tenga en cuenta, sin embargo, que estos generadores pseudoaleatorios criptográficamente seguros son generalmente lentos. Entonces, si la velocidad es realmente una preocupación, los enfoques menos rigurosos pueden ser más relevantes, como el uso de funciones hash, como lo sugiere Jeff.


Si quiere hacerlo correctamente, debe obtener un examen físico: ERNIE, el selector de números de ahorro nacional del Reino Unido, utiliza un ruido de disparo en tubos de neón.


Hay muchas cosas que los sitios de juegos deben tener en cuenta al elegir / implementar un RNG. Sin la diligencia debida, puede ir espectacularmente mal .

Para obtener una licencia para operar un sitio de juegos en una jurisdicción particular, generalmente se requiere que el RNG haya sido certificado por un tercero independiente. Los probadores de terceros analizarán el código fuente y ejecutarán pruebas estadísticas (por ejemplo, Diehard ) para garantizar que el RNG se comporte de forma aleatoria. Los sitios de poker de buena reputación suelen incluir detalles de la certificación que ha recibido su RNG (por ejemplo, la página de RNG de PokerStars ).

Estuve involucrado en algunos proyectos de juegos, y para uno de ellos tuve que diseñar e implementar la parte de RNG, así que tuve que investigar todos estos problemas. La mayoría de los sitios de póquer utilizarán algún dispositivo de hardware para la entropía, pero no dependerán solo del hardware. Por lo general, se usará junto con un pseudo-RNG (PRNG). Existen dos motivos principales para esto. En primer lugar, el hardware es lento, solo puede extraer una cierta cantidad de bits de entropía en un período de tiempo determinado desde cualquier proceso físico que esté monitoreando. En segundo lugar, el hardware falla de maneras impredecibles que los PRNG de software no lo hacen.

Fortuna es el estado del arte en términos de PRNGs criptográficamente fuertes. Se puede alimentar con entropía desde una o más fuentes externas (por ejemplo, un RNG de hardware) y es resistente frente a intentos de explotación o falla de hardware RNG. Es una opción decente para los sitios de juegos, aunque algunos podrían argumentar que es excesivo.

Pokerroom.com solía usar SecureRandom de Java (probablemente todavía lo hagan, pero no pude encontrar detalles en su sitio). Esto es bastante bueno, pero sufre el problema de los grados de libertad.

La mayoría de las implementaciones de stock RNG (p. Ej., Mersenne Twister) no tienen suficientes grados de libertad para poder generar todas las barajas posibles de un mazo de 52 cartas desde un estado inicial determinado (esto es algo que traté de explicar en una publicación de blog anterior ).

EDITAR: He respondido sobre todo en relación con las salas de póquer en línea y los casinos, pero las mismas consideraciones se aplican a las máquinas físicas de video poker y máquinas tragamonedas de video en los casinos del mundo real.


Estoy seguro de que he visto una máquina de juego alemana que no se podía ejecutar comercialmente después de una fecha determinada, por lo que supongo que era un PNRG con una larga lista de semillas de una sola vez.


La mayoría de los sitios de póquer usan generadores de números aleatorios de hardware. También modificarán la salida para eliminar cualquier sesgo de escalado y, a menudo, utilizarán ''pots'' de números que pueden ''agitarse'' utilizando eventos entrópicos (actividad del usuario, eventos de i / o del seridor, etc.). Con bastante frecuencia, los números resultantes solo indexan mazos pregenerados (comenzando como una lista ordenada de cartas).


Las máquinas tragamonedas de casino generan números aleatorios de forma continua a gran velocidad y usan los resultados más recientes cuando el usuario tira de la palanca (o pulsa el botón) para girar los carretes.

Incluso se puede usar un generador simplista. Incluso si conoce el algoritmo utilizado, no puede observar en qué parte de la secuencia se encuentra porque casi todos los resultados se descartan. Si de alguna manera supieras dónde estaba en la secuencia, tendrías que tener un tiempo de milisegundos o mejor para aprovecharlo.

Las máquinas modernas de "carrete mecánico" usan PRNG y conducen los carretes con motores paso a paso para simular el viejo estilo de girar y frenar.


Hemos estado utilizando el Protego R210-USB TRNG (y la versión que no es USB antes) como generadores de semillas aleatorios en aplicaciones de casino, con java.security.SecureRandom en la parte superior. Hicimos que el Laboratorio Nacional Sueco de Ciencias Forenses realizara una auditoría por separado del R210, y pasó sin ningún defecto.


Supongo que todo vale para aplicaciones y juegos de azar en el extranjero hoy en día, pero todas estas otras respuestas están incompletas, al menos para las máquinas con licencia de Nevada Gaming Control Board, de las que creo que la pregunta es originalmente.

Las especificaciones técnicas para los RNG con licencia en Nevada para fines de juego se establecen en la Regulación 14.040 (2) .

A partir del 24 de mayo de 2012, aquí hay un resumen de las reglas que debe seguir un RNG:

  1. Las semillas estáticas no pueden ser usadas. Debe sembrar el RNG utilizando una fuente de tiempo de milisegundos u otra fuente de entropía verdadera que no tenga lecturas externas en ninguna parte de la máquina. (Esto ayuda a reducir la incidencia de ataques de "número mágico")
  2. El RNG debe continuar generando números en su secuencia al menos 100 veces por segundo cuando el juego no se está jugando. (Esto ayuda a evitar ataques de sincronización)
  3. Las salidas de RNG no se pueden reutilizar; deben usarse exactamente una vez o simplemente desecharse.
  4. Los gabinetes multisistema deben usar un RNG separado y una semilla separada para cada juego.
  5. Los juegos que usan RNG para ayudar a elegir números en nombre del jugador (como Lotto Quick Pick) deben usar un RNG separado para ese proceso.
  6. Los juegos no deben desplegar RNG hasta que realmente se necesiten en un juego. (es decir, debes esperar hasta que el jugador elija repartir o girar antes de generar RNG)
  7. El RNG debe pasar una prueba de chi-cuadrado de confianza del 95% basada en 10,000 ensayos como parte de una prueba del sistema. Debe mostrar una advertencia si esta prueba falla, y debe deshabilitar la reproducción si falla dos veces seguidas.
  8. Debe recordar y poder informar sobre los últimos 10 resultados de la prueba como se describe en 7.
  9. Todos los resultados posibles del juego deben ser generados por el RNG. Como un ejemplo pésimo, los generadores congruenciales lineales en realidad no generan todos los resultados posibles en su rango, por lo que no son muy útiles para los juegos.

Además, el diseño de su máquina debe enviarse a la comisión de juego y debe ser aprobado, lo cual es costoso y requiere mucho tiempo. Hay algunas compañías de terceros que se especializan en auditar su nuevo RNG para asegurarse de que sea aleatorio. Gaming Laboratories publica un conjunto de normas aún más estricto que el de Nevada. Explican con mucho más detalle las limitaciones de los RNG de hardware , y Nevada en particular le gusta ver los RNG básicos que se aprobaron previamente. Todo esto puede ser muy costoso, por lo que muchos desarrolladores prefieren licenciar un RNG previamente aprobado para nuevos proyectos de juegos.

Aquí hay una lista divertida de ataques de generador de números aleatorios para mantenerte despierto hasta altas horas de la noche.

Solo para super nerds: la fuente para la mayoría de los RNG de hardware USB es típicamente un diodo de avalancha . Sin embargo, el ruido térmico producido por este tipo de diodo no es cuántico-aleatorio, y es posible influir en la aleatoriedad de un diodo de avalancha al disminuir significativamente la temperatura.

Como nota final, alguien arriba recomendó simplemente usar un Mersenne Twister para la generación de números aleatorios. Esta es una mala idea a menos que estés tomando entropía adicional de alguna otra fuente. El simple vainilla Mersenne Twister es muy inapropiado para juegos y aplicaciones criptográficas, tal como lo describe su creador.