Primejack, lanzando una moneda al aire, sin moneda

danigm's picture

Mi colega Edulix lleva ya algún tiempo trabajando en verificatum con temas de criptografía para un sistema de votación agora.

Este fin de semana me habló sobre un sistema criptográfico para toma de decisiones que se utiliza en verificatum y que es muy simple. La idea es que sin necesidad de estar en el mismo lugar físico se pueda echar algo a suertes, y tener la certeza de que ninguno de los dos está timando al otro.

Para ello uno de los dos participantes en la toma de decisión tendrá dos grupos de números primos grandes. Por ejemplo el grupo 1 son los primos que terminan en 1 o en 3 y el otro grupo son los primos que terminan en 7 o en 9. Se escogen dos números de uno de los grupos y se multiplican, y el resultado de esta multiplicación es el número que se le pasa al otro participante de la toma de decisión.



primejack1

El segundo participante recibe el número grande, resultado de una multiplicación de dos números primos, pero que es computacionalmente complejo de factorizar. Y entonces elige uno de los dos grupos de primos (1-3 o 7-9) y una vez elegido esto, el participante original le confirma al segundo si ha acertado, y por tanto gana, o si ha fallado, pudiendo ofrecer una verificación formal, mostrando la factorización del número compartido. Así el segundo participante puede verificar que es correcto.



primejack2

Pues bien, a Edulix se le ocurrió que esto podría ser útil como aplicación web, así que se puso a ello y se curró una aplicación web para ello primejack.



primejack3