¿Existe una técnica criptográfica para lograr un resultado similar en Internet que no requiera una infraestructura confiable y se pueda lograr de manera distribuida?
Tipo de. Consideremos una variante de póquer en la que cada jugador recibe cartas de un mazo de cartas separado. Por lo tanto, ningún jugador puede tener cartas duplicadas, pero las cartas pueden estar duplicadas en todas las manos.
También asumimos que todos tienen un par de llaves RSA, y las claves públicas ya se han compartido.
Entonces, el protocolo procede así:
- todos generan dos valores aleatorios A y B.
- todos firman A y B (por separado) y envían / recolectan estas firmas separadas de A y B a / de todos los demás.
- todos revelan A y recopilan valores de A de todos los demás. si alguna firma no coincide, es una repetición.
- todos calculan A ', la suma de todos los valores A.
- todos se dan una mano basándose en usar A '+ B como semilla.
- (ahora nadie se conoce la mano del otro porque no conoce el valor B de otros jugadores. además, nadie ha podido manipular su mano repartida porque no sabían cuál sería el valor A 'final después de elegir B)
- todos hacen negocios de póquer, firmando sus movimientos y cualquier información pública revelada según lo exigen las reglas de nuestro póquer modificado.
- al final, todos comparten los valores B, que permiten verificar si alguien hizo trampa en algún paso dado.
- cualquiera que haya hecho trampa automáticamente pierde contra quien no haya hecho trampa antes de hacerlo.
Por lo tanto, de alguna manera permitimos el engaño, pero lo adaptamos a las reglas del juego de una manera que evite que un tramposo aislado vea alguna vez una ventaja al hacerlo. Si el juego se convierte en cero en caso de que se detecte una trampa, los jugadores podrían hacer trampa cuando crean que están perdiendo una posición.
La parte difícil de todo esto es hacer cumplir los pagos de las partes perdidas.