I think you could perform the dice rolling experiment without any need for security against tampering. To generate a random number from 0 to N-1, have every interested party generate their own number (roll their own die), then everybody reveals their numbers together and the group adds them all up and takes the remainder after dividing by N.
With that procedure everybody should be convinced that the result is at least as random as their own number.
It is if you use a commitment scheme. Such a thing allows you to commit to a value before revealing it. So you go in two steps—everybody commits, then everybody reveals. Nobody can change their value after committing, so nobody can base their values on others’ values.
A hash function on a die roll is quite vulnerable to a dictionary attack. You could add a salt, but this makes hash collisions easier to take advantage of.
The point is there are people who would not realize that you need a salt, or a hash function not vulnerable to collisions. Yes, there are existing solutions for this problem, but even choosing an existing solution from the space of security solutions to different problems is not trivial.
The point isn’t to make it more random, the point is to make it more trustworthy. You can participate in the process and be confident that the result is random without having to put any trust in the other participants.
Regardless, your original language claiming it made it more random was correct, because it does make it more hard-to-predict-but-with-clear-symmetry, aka random.
The point isn’t to make it more random, the point is to make it more trustworthy. You can participate in the process and be confident that the result is random without having to put any trust in the other participants.
I think you could perform the dice rolling experiment without any need for security against tampering. To generate a random number from 0 to N-1, have every interested party generate their own number (roll their own die), then everybody reveals their numbers together and the group adds them all up and takes the remainder after dividing by N.
With that procedure everybody should be convinced that the result is at least as random as their own number.
That is not so easily done.
It is if you use a commitment scheme. Such a thing allows you to commit to a value before revealing it. So you go in two steps—everybody commits, then everybody reveals. Nobody can change their value after committing, so nobody can base their values on others’ values.
A commitment scheme sounds like “security against tampering”.
But there’s no paranoia involved. It’s cryptographically quite simple. All you need is a hash function.
Contrast with all of the governments and all of their security agents and such and nobody really trusts that it’s secure.
A hash function on a die roll is quite vulnerable to a dictionary attack. You could add a salt, but this makes hash collisions easier to take advantage of.
You wouldn’t use a hash function that people could generate collisions with, any more than you would use ROT-13.
Of course a salt. Not sure why that would make hash collisions easier to take advantage of though. Presumably you use a good hash function.
The point is there are people who would not realize that you need a salt, or a hash function not vulnerable to collisions. Yes, there are existing solutions for this problem, but even choosing an existing solution from the space of security solutions to different problems is not trivial.
Why does “some people don’t know how this works” make it less trivial?
This provides an excellent demonstration of E.T. Jaynes’s point that making something more random really means making it more complicated.
The point isn’t to make it more random, the point is to make it more trustworthy. You can participate in the process and be confident that the result is random without having to put any trust in the other participants.
Regardless, your original language claiming it made it more random was correct, because it does make it more hard-to-predict-but-with-clear-symmetry, aka random.
The point isn’t to make it more random, the point is to make it more trustworthy. You can participate in the process and be confident that the result is random without having to put any trust in the other participants.