basic readme
This commit is contained in:
commit
839c516add
46
README.md
Normal file
46
README.md
Normal file
@ -0,0 +1,46 @@
|
||||
# Fair and temper-proof random-number-generation in a distributed environment
|
||||
|
||||
As long as you can contribute an unpredictable (random) number of your choosing, the algorithm will make sure the outcome is unpredictable.
|
||||
|
||||
|
||||
First a public "vote" is held, where everyone secretly generates an unpredictable number and shares a digest to later verify it (HMAC in this proposal).
|
||||
After receiving all HMACS, one sends out the number and starts receiving all the others and verifies them.
|
||||
Now we have random numbers that need to be combined in a predetermined way that mangles them seemingly randomly and temper proof (very expensive).
|
||||
For this a hashing chain is chosen.
|
||||
|
||||
# Algo
|
||||
|
||||
## init
|
||||
InitialState (IS) contains a unique(-ish) id, to uniquly identify this random number
|
||||
+ any extra data thats usecase dependent. (like the set of cards we are choosing from)
|
||||
|
||||
-> hashed to get a fixed sized SI
|
||||
SI = H(id + user data)
|
||||
|
||||
## rng?
|
||||
use an unpredictable rng. Simple prng dont cut it, since their state can be reconstructed form very few numbers.
|
||||
(use system crng or seed own chacha crng with system crng ...)
|
||||
|
||||
## hmac
|
||||
message is the rng (while possibly variable in size, should be same as output of H() )
|
||||
key is random
|
||||
|
||||
send HMAC to everyone
|
||||
|
||||
## collection
|
||||
wait for everyone elses HMAC
|
||||
send out secret message (rng) and key
|
||||
verify everyone elses message
|
||||
|
||||
|
||||
do not proceed until everything is verified.
|
||||
either hardblock if someone is not responding (to prevent a retry-attack) or exclude unresponsive/lying peer in next (retry) generation.
|
||||
|
||||
## post processing
|
||||
|
||||
combine IS with all the numbers
|
||||
|
||||
for each M do
|
||||
H(M + prevH)
|
||||
result = H(IS + prevH)
|
||||
|
Loading…
Reference in New Issue
Block a user