"Cualquiera que considere los métodos aritméticos para producir número aleatorios está, por supuesto, pecando" John von Neumann, 1951
Entendemos que el uso de un algoritmo para barajar justa e impredeciblemente es fundamental para nuestro software. Para asegurar esto y evitar los serios problemas descritos en [2], estamos usando dos fuentes independientes de datos verdaderamente aleatorios:
* Entradas del usuario, incluyendo el conjunto de los movimientos y lapsos entre eventos del ratón, recogidos por el software cliente.
* Quantis [3], un verdadero aparato generador de números aleatorios desarrollado por Quantique, compañía con sede en Suiza, que usa aletoriedad cuántica fuente de entropía. (Entropía: tendencia natural de la pérdida del orden).
Cada una de estas fuentes en sí misma genera suficiente entropía para asegurar un reparto de cartas justo e impredecible.
Puntos destacados del barajado
* Una baraja de 52 cartas puede ser barajada de 52 maneras. 52 es como 2^225 (para ser precisos, 80.658.175.170.943.878.571.660.636.856.404.000.000.000.000.000.000.000.000.000. 000.000.000 formas). Usamos 249 bits aleatorios desde ambas fuentes (entradas del usuario y aletoriedad cuántica) para conseguir una distribución estadística equilibrada e impredecible.
* Además, aplicamos reglas conservadoras para reforzar el nivel necesario de aleatoriedad; por ejemplo, si el usuario no genera la suficiente cantidad de entropía, no generamos la siguiente mano hasta que no obtenemos la suficiente cantidad de entropía desde el RNG de Quantis.
* Usamos algoritmos criptográficos Hash tipo SHA-1 para mezclar la entropía recogida de ambas fuentes asegurando así un nivel extra de protección.
* También mantenemos un generador de pseudo-aleatoriedad que aporta más seguridad y protección frente a los ataques a los datos de los usuarios.
* Para convertir un flujo de bits aleatorios en números dentro del rango necesario sin tendencia, usamos un algoritmo simple y fidedigno. Por ejemplo, si necesitamos un número aleatorio de entre 0-25:
o tomamos 5 bits aleatorios y los convertimos en un número entre 0-31
o si el número es mayor de 25, desechamos los 5 bits y repetimos el proceso.
* Este método no se ve afectado por tendencias relacionadas con módulos de operaciones para generar números aleatorios que no son 2n, n= 1,2,…
* Para realizar el barajado, utilizamos otro algoritmo simple y fiable:
o Primero sacamos una carta aleatoria de la baraja original (1 de 52) y la ponemos en una baraja nueva. Ahora la baraja original tiene 51 cartas y la nueva una.
o Entonces sacamos otra carta aleatoria de la baraja original (1 de 51) y la ponemos la primera de la nueva baraja. Ahora la baraja original contiene 50 cartas y la nueva dos.
o Repetimos el proceso hasta que todas las cartas han pasado de la original a la nueva.
* Este algoritmo no sufre de mala distribución en el barajado, proceso que se describe en [2].
El barajado de PokerStars verificado por Cigital
PokerStars presenta una amplia cantidad de información sobre el generador de números aleatorios (RNG, por sus siglas en inglés) de PokerStars a Cigital. Pedimos a este medio de confianza que realice un profundo análisis de la aleatoriedad de los datos que produce el RNG, y su implementación en el barajado de cartas de PokerStars.
Tuvieron pleno acceso al código y confirmaron la aleatoriedad y seguridad de nuestro proceso de barajado. Visita la página del generador de números aleatorios (RNG) de PokerStars para conocer más detalles.