[Nota: Esta pregunta se ha vuelto a publicar en crypto.SE .]
Analicemos el problema en dos partes:
El primer problema es que desea algo que parezca aleatorio para un atacante externo (es decir, es impredecible ), pero cualquiera puede calcularlo en el conocimiento .
Eso suena muy parecido a un generador de números pseudoaleatorios criptográficamente seguro (CPRNG) donde todos los nodos usan la misma semilla. Luego, cada hora (o cada minuto) puede tomar el siguiente número en la secuencia aleatoria, es decir, current_nonce = cprng.getSequence()[ numberOfHoursSinceLaunch() ];
.
El problema que debe resolverse es el problema de distribución de claves, o en este caso, el problema de distribución de semillas (ya que la semilla está actuando como secreto compartido ).
Puede consultar Protocolos de acuerdo clave :
En la criptografía, un protocolo de acuerdo de clave es un protocolo por el cual dos o más partes pueden acordar una clave de tal manera que ambas influyan en el resultado. ... Los protocolos que son útiles en la práctica tampoco revelan a ninguna de las partes que escuchan la clave acordada.
O puede ir a una tecnología más baja y hacer que un administrador coloque la semilla en cada nodo mediante algún método seguro (SSH, llave USB, etc.). O puede configurar una red TLS autenticada por el cliente en la que cada nodo tenga un certificado de cliente que pueda usar para solicitar la semilla. Hay muchas formas de despellejar a este gato en particular.
EDITAR en respuesta a re-publicar en crypto.se :
El segundo problema es que desea algún sistema donde incluso si un nodo tiene todo el material de las semillas, no puede calcular el secreto hasta un tiempo fijo en el futuro. Esta es en realidad una pregunta frecuente en Security.SE y Crypto.SE. El nombre genérico para esto es Criptografía de cápsula de tiempo, en un rompecabezas de bloqueo de tiempo. Aquí hay una publicación famosa sobre el tema . Hay soluciones para esto, pero todas tienen el sabor de "si ejecutas tu procesador en su totalidad, les tomará al menos X días calcular el secreto. No creo que eso sea lo que quieres".
Una solución práctica para este problema sería dar a cada nodo un certificado de cliente-SSL. Tenga un servidor maestro que genere los nonces, luego haga que los nodos inicien sesión en el maestro usando sus certificados para recuperar el nonce diario.