martes, agosto 23, 2011

Añadir un nivel de seguridad a juegos online de dados y cartas

He investigado un poco ese tipo de juegos online y me he llevado una sorpresa al ver que no existen, o al menos no he visto, mecanismos que garanticen que las cartas y los valores de los dados no vienen dados en función de lances del juego.
Aquí va un sencillo mecanismo que deberían exigir los jugadores con el fin de añadir seguridad a sus partidas para que, aunque no vayan a utilizarlo, sepan que cualquiera podría comprobarlo si fuera necesario.

Juegos de cartas
Antes de empezar una partida el servidor debería:
1- 'Barajar' las cartas.
2- Hacer el hash de una cadena formada por:
  • La secuencia de cartas barajadas que se repartirá entre los jugadores.
  • Una secuencia de, por ejemplo, 100 números ordenados de forma aleatoria que servirían para determinar el orden de los jugadores en la mesa de juego.
3- Firmar el hash con un certificado de confianza, publicar el documento firmado y notificar, antes de comenzar la partida, a todos los jugadores de la url donde se puede acceder al documento firmado.

Juegos de dados
Antes de empezar una partida el servidor debería:
1- Generar una secuencia suficientemente larga de números como para satisfacer todos los lanzamientos de dados necesarios.
2- Hacer el hash de una cadena formada por:
  • La secuencia generada en el paso 1.
  • Una secuencia de, por ejemplo, 100 números ordenados de forma aleatoria que servirían para determinar el orden de los jugadores en la mesa de juego.
3- Firmar el hash con un certificado de confianza, publicar el documento firmado y notificar, antes de comenzar la partida, a todos los jugadores de la url donde se puede acceder al documento firmado.


El orden de los jugadores en la mesa se obtendría al hacerles elegir un número de 1 a 100 y ver el valor asociado en la secuencia generada para ese propósito. De esa forma se garantiza que no se genera una distribución que beneficie a un jugador que ocupe un lugar determinado en la mesa.
Al terminar la partida el servidor tendría que hacer público el origen del hash firmado para que los jugadores que tengan dudas puedan comprobar que la secuencia de cartas de la partida, o valores de dados, coincide con la del documento firmado.
Para saltarse este sistema el servidor debería tener un 'infiltrado' en la partida al que tendría que notificar la secuencias con las que se obtiene el hash. Esa misma pega existe en el mecanismo empleado actualmente.
El documento firmado publicado sería similar a los recibos del sistema de votación.
Prototipo en breve.