Un TL bastante prolijo; DR:
- Alice y Bob eligen un generador pseudoaleatorio G de su elección. (Use Mersenne Twister o algo así. Solo asegúrese de que la longitud de salida sea al menos 3 veces la longitud de entrada).
- Cada uno de Alice y Bob debe elegir 2 cadenas aleatorias y mantenerlo en secreto, llamarlo v_A, s_A para Alice y v_B y s_B para Bob. También elija un bit aleatorio cada uno, llámelo b_A y b_B. Si v_A y v_B tienen una longitud de n bits, s_A y s_B tienen la misma longitud que G (v_B) y G (v_A).
- El resultado justo es b_A XOR b_B. Todo el problema es enviar b_A y b_B entre sí antes de conocer el bit de los demás.
- En el paso 1, A y B se envían entre sí v_A y v_B.
- En el paso 2, si b_A = 0, A envía s_A, si b_A = 1, A envía G (v_B) XOR s_A. De manera similar, si b_B = 0, B envía s_B, si b_B = 1, B envía G (v_A) XOR s_B.
- En el paso 3, A y B se envían mutuamente sus bys. Cada uno calcula la moneda justa como b_A XOR b_B
- En el paso 4, (Paso de verificación) A y B verifican si el bloqueo que recibieron en el paso 2 es correcto. Hecho.
Post largo por delante.
Usamos algo llamado un esquema de bloqueo seguro. Considere 2 fiestas, un verificador y un casillero. El esquema funciona de la siguiente manera.
- ¿Qué casos son los más adecuados para la pila de desarrollo web MEAN?
- ¿Existe una biblioteca R para web scraping?
- ¿Un sitio web que sea muy útil con muchas características útiles, pero bastante feo / simple, superará a un sitio web que es hermoso pero tiene características limitadas y es (más o menos) difícil de usar?
- ¿Cómo manejan las aplicaciones web financieras la carga causada por la transmisión de precios si cada cliente sigue haciendo llamadas ajax?
- ¿Qué servicios de correo electrónico utilizan las grandes empresas como Facebook, Twitter y Quora?
Fase de bloqueo: el verificador inicialmente envía un mensaje, llámelo v, al casillero. El casillero elige un bit que quiere enviar, lo llama b, y elige una semilla aleatoria s, calcula L (b, s, v) y lo envía al verificador, donde L es un algoritmo de bloqueo conocido públicamente (daré Eres un algoritmo de bloqueo más tarde).
Fase de verificación: el casillero revela bys al verificador, el verificador simplemente calcula L (b, s, v) y verifica si es el mismo bloqueo que recibió en la fase de bloqueo.
Para que esto sea seguro, debemos garantizar 2 cosas. Ocultación y encuadernación.
Ocultar es garantizar que el verificador no pueda obtener b al ver solo L (b, v, s), para cualquier elección de v. La vinculación es garantizar que el casillero no haga trampa, y por lo tanto no pueda llegar a (0, s_0 ) y (1, s_1) de modo que L (0, v, s_0) = L (1, v, s_1). Claramente, si puede hacer tal cosa, puede dar ese bloqueo en la fase de bloqueo y hacer trampa en la etapa de verificación.
Se puede demostrar que nuestro esquema es tanto de bloqueo como de unión, debido a las propiedades de los generadores pseudoaleatorios.
El protocolo de lanzamiento de monedas es simplemente que cada parte actúe como verificador y el casillero, y ambas fases de bloqueo suceden primero (el orden no importa) y ambas fases de verificación suceden después (el orden no importa). Lo único que debemos asegurar es que todas las fases de bloqueo sucedan antes de que comience cualquier fase de verificación.
PD: Sugerencias para hacer que esta respuesta sea más accesible para el público en general. Enlaces a implementaciones de generadores pseudoaleatorios bienvenidos.
Esta fue en realidad una pregunta de asignación en mi curso de criptografía. Espero que esto ayude.