(Lo siento si esto es bien conocido). Me gustaría darle algún artículo a uno de los agentes, para que el agente obtenga el artículo con probabilidad . ¿Existe una herramienta criptográfica (u otra) para que cada agente (e incluso cada observador) pueda convencerse de que el sorteo al azar fue realmente justo?j p i
cr.crypto-security
Gil Kalai
fuente
fuente
Respuestas:
Si entiendo el problema correctamente, parecería que el público lanzara una moneda con cara . Parece que hay muchas maneras de hacer esto si asumes un poco de compromiso. Un ejemplo sería hacer que cada parte genere un número entero aleatorio entre 0 y k - 1 , utilizando el compromiso de bits para comprometerse públicamente con esa cadena de bits. Luego, una vez que cada agente se ha comprometido, todos revelan públicamente su número entero secreto. El agente ganador es entonces el indexado por la suma de los enteros módulo k . Si incluso un agente es honesto, el cambio debe ser aleatorio.k k−1 k
Por supuesto, un problema con esto es que requiere un poco de compromiso. Los esquemas teóricos de información para el compromiso de bits son imposibles para la computación clásica y cuántica (aunque Adrian Kent recientemente propuso un esquema que explota la relatividad). Sin embargo, el compromiso de bit seguro se puede lograr con supuestos computacionales.
fuente
Como otros usuarios han insinuado, este es un problema bien estudiado en criptografía. Se llama "cambio de moneda" y es un caso especial de cómputo multiparte.
De qué protocolo depende realmente el trabajo depende mucho del contexto.
Solo para dar una idea de lo sutil que es, el protocolo "todos se comprometen con valores aleatorios" sugerido por otro respondedor es inseguro si el esquema de compromiso que utiliza es maleable. Los esquemas de compromiso no maleables le brindan un protocolo seguro, pero son un poco complicados de diseñar.
fuente
Nota: lea los comentarios a continuación. Este protocolo parece tener problemas.
Cualquier agente puede estar seguro de que el número aleatorio elegido fue uniforme al azar eligiendo su propio vector uniforme al azar. Para que cualquier observador esté convencido, tienen que confiar en que al menos un agente siguió el protocolo, pero si ninguno lo hizo, creo que nadie realmente quería una lotería justa para empezar.
fuente
Los observadores pasivos no pueden verificar que el dibujo no haya sido escenificado. Las entradas en el proceso pseudoaleatorio se pueden elegir para dar el resultado deseado.
Sin embargo, si el observador puede proporcionar un número aleatorio que sabe que es aleatorio Y asegurarse de que otros agentes no cambien sus entradas después (porque podrían compensar su efecto con sus entradas), entonces puede estar seguro de que el resultado fue realmente aleatorio .
Esto requiere un esquema de compromiso que no conocemos que esté matemáticamente demostrado que sea seguro, pero en la práctica se puede realizar utilizando hash seguro (como SHA3).
Considere este ejemplo:
He hecho un ejemplo de implementación. Puede verlo en vivo aquí: https://mrogalski.eu/cl/ o verifique las fuentes en GitHub .
fuente