Se ha creado una prueba de la información antes de su publicación

2

He estado pensando en el siguiente caso de uso: alguna institución quiere organizar apuestas sobre un resultado que es de su propia elección. La línea de tiempo es la siguiente:

  1. La organización elige el resultado en el momento T. Las apuestas son abiertas sobre cuál es el resultado.
  2. En el momento T + N, la decisión que tomó la institución en el momento T se libera, resolviendo las apuestas.

Por ejemplo, podemos imaginar a un canal de televisión que aloja una plataforma de juegos de apuestas sobre qué personajes morirán en la próxima temporada, que ya se ha escrito pero aún no se ha emitido.

El problema es encontrar un modo para que la organización demuestre que la información que libera en el momento T + N se ha elegido, y no se ha alterado desde entonces, el tiempo T. Eso es, por supuesto, sin divulgar la información en sí. tiempo T. Esto garantiza, en particular, que la organización no puede elegir retroactivamente el resultado para beneficiarse de alguna manera de la tendencia que han tomado las apuestas.

Mi propuesta es la siguiente:

  1. En el momento T, la organización elige una clave aleatoria que mantiene secreta. Calcula un HMAC del resultado con la clave secreta y lo publica.

  2. En el momento T + N, la organización libera tanto el resultado como la clave secreta.

La gente puede verificar que el HMAC es correcto, y se garantiza que el resultado publicado fue realmente el elegido en el momento T porque sería computacionalmente inviable el hecho de apuntar al HMAC publicado con otro par de (resultado, clave ) para un resultado diferente y clave .

¿Esto es correcto y correcto? Especialmente la última parte en negrita? Me parece que esto es básicamente equivalente a un ataque de preimagen en la función hash con un prefijo conocido para el preimage?

    
pregunta WeirdQuestionsPoppingInMyHead 15.10.2018 - 15:38
fuente

1 respuesta

2

Como es habitual, ya existe una amplia gama de soluciones para este problema en particular.

Resumido, esto se denomina esquema de compromiso . WikiPedia cita a Oded Goldreich con esta cita para una breve explicación:

  

[Un esquema de compromiso] permite comprometerse con un valor elegido (o   declaración elegida) mientras se mantiene oculto para otros, con la habilidad   para revelar el valor comprometido más tarde.

Hay varias formas o implementaciones de esto: una comúnmente utilizada (por ejemplo, por 5E787777344740163584 & ref_url = https% 3A% 2F% 2Farizonadailyindependent.com% 2F2016% 2F10% 2F16% 2Fwikileaks-tweets-hash-codes-perge-assaging-damaging-info-on-kerry% 2 " ) se denominan hashes de pre-compromiso. Estos hashes son sumas de comprobación (md5, sha256, ..) de archivos cifrados. Las personas pueden descargar los archivos pero no pueden abrirlos hasta que el distribuidor del archivo proporcione la contraseña. De esta manera, el distribuidor, como dice Goldreich, puede comprometerse con un valor mientras lo mantiene oculto.

    
respondido por el Tom K. 15.10.2018 - 16:01
fuente

Lea otras preguntas en las etiquetas