¿Buenas fuentes de números aleatorios impredecibles disponibles públicamente?

2

No estaba seguro de preguntar esto por criptografía o seguridad, pero como se trata de servicios y confianza del mundo real, pensé que este es el mejor lugar.

Considere que yo y mis amigos (a quienes no confío para los fines de esta pregunta) queremos bloquear un número aleatorio que solo estará disponible en una fecha futura. Esto podría ser, por ejemplo, reunirse en un lugar al azar en un país sin poder configurar e investigar el área antes de tiempo.

Es importante que el número aleatorio sea:

  1. No se puede conocer antes de la fecha y hora acordadas.
  2. No es posible influir.
  3. Suficientemente aleatorio (hash high entropy).

Como ejemplo de esquema, podríamos elegir el número aleatorio para que sea el hash del titular de un periódico importante de nuestra fecha elegida. Salvo medidas increíblemente extremas, esto no se puede conocer, es imposible influenciarlo, pero tiene una entropía relativamente baja.

Un mejor esquema podría ser elegir datos meteorológicos de una fuente acordada. Pero hay un vector de ataque pirateando la estación meteorológica que podría ser más razonable que influir en el titular de un periódico público. O rastreando sensores y jugando con ellos.

¿Cuáles son algunas fuentes buenas, públicamente disponibles, granulares (por ejemplo, cada hora es mejor que cada día) de números desconocidos, imposibles de influir, suficientemente aleatorios?

    
pregunta orlp 29.01.2017 - 15:32
fuente

2 respuestas

1

El artículo principal en el sitio web del periódico realmente podría ser lo que usted quiere como fuente de entropía. Esto significa que puedes usar el hash de un artículo:

  • fuente de entropía: artículo principal del sitio del periódico
  • longitud del número aleatorio (por ejemplo, SHA256- > 256Bit o AES-OFB como su cifrado de flujo)
  • Secreto: si teme un ataque de un tercero, debe mantener en secreto el periódico que utiliza y elegir el periódico al azar con sus socios

Contras:

  • Uno de sus socios podría escribir un script que siempre le muestra la posición actual generada por el artículo
  • El artículo principal puede cambiar antes de que sus socios hayan calculado el número aleatorio

Respuesta anterior

Esto no es exactamente lo que solicitó, pero podría coincidir con su caso de uso.

El intercambio secreto de Shamir

Si necesita que se cumplan las siguientes condiciones:

  • No confías en las personas
  • Todas las personas deben estar en una habitación o comunicarse entre sí ese día para obtener el secreto

Sugeriría usar el Esquema de intercambio secreto de Shamir: enlace 's_Secret_Sharing

Con SSS puedes dividir un secreto en varias partes, por ejemplo. 5 piezas y repártelo a 4 personas (guarda una para usted). Solo si las 5 piezas están juntas, puedes reconstruir el secreto.

También puede calcular SSS para hacer posible que, por ejemplo, solo se necesitan 3/5 piezas para obtener el secreto.

    
respondido por el nebulak 29.01.2017 - 19:07
fuente
0

Mi sugerencia es usar el juego de lotería de EE. UU. Pick 10 API Ejemplo: enlace devolverá el número aleatorio 01 05 06 07 11 14 22 30 32 34 35 37 44 45 54 55 60 61 66 68

Solo cambia la Fecha de Sorteo para que sea una fecha en el futuro. Dado que hay un sorteo diario, puede estar seguro de que hay un sorteo en la fecha acordada. Asegúrese de asegurarse también de que la hora de la reunión sea posterior a la hora del sorteo.

La cadena aleatoria resultante, se puede marcar con una contraseña para garantizar que ningún tercero pueda averiguar la ubicación después de la fecha acordada. Para evitar obtener ubicaciones "imposibles" (piense: en medio del mar), sugeriría usar uno o más dígitos seleccionados del valor hash, para seleccionar de una lista de algunos lugares que son suficientemente accesibles y acordados de antemano, PERO en tal cantidad es prácticamente imposible manipular los lugares de antemano.

Por ejemplo, podría usar una API que enumera todas las paradas de autobús dentro de una ciudad específica, compilar una lista de ellas y luego enviar la lista de paradas de autobús (ordenadas de una manera específica), junto con la dirección de al azar números. Y luego, esto se usa para seleccionar una parada de autobús dentro de la lista, que solo se puede seleccionar en la fecha acordada.

Si la lista de lugares no es divisible de manera equitativa con ningún número de bits del hash, puede eliminar algunos lugares o puede seleccionar un número de bits que exceda el número de lugares y luego iterar a través de la lista hasta que cuente ese número y, por lo tanto, se detenga en un lugar.

    
respondido por el sebastian nielsen 29.01.2017 - 23:39
fuente

Lea otras preguntas en las etiquetas