I really don't know how to call this simple problem: Two (or more) parties need to establish a common (non-secret) value to be used as a seed for a deterministic RNG. The only requirement is that each party can be sure that the seed is really random.
My idea is as follows:
- Each party generates a random value $x_i$,
- sends its hash $h(x_i)$ to everyone else,
- and waits for hashes from all other parties.
- Then each party sends its original value $x_i$ to everyone else,
- waits for all the values,
- and verifies them.
- Finally, each party computes the seed as $\mathop\oplus\limits_i x_i$
I know that inventing protocols should be left to experts, however, I'm curious if this could work and what's needed for the this. I see that the generated values must be long enough to avoid brute-forcing and that $h$ must be collision-resistant.