我有一个网站,根据虚拟骰子卷给用户不同的结果.我希望他们相信我的随机数字是诚实的,所以我不想用自己的代码(我的怀疑用户是我可以操纵的黑盒子)来确定它,而是想出一些其他的机制.
一个想法是指向具有随时间变化的可公开观察的随机数的可信网站(例如政府).然后我可以说,“我们将把你的结果作为0到9之间的数字,这将是10秒内的[url]的数字.
有什么建议么?
解决方法
我自己去
this site它有一个公共匿名URL的几种数字和实时页面来观察他们:
十六进制数字
>编号:https://qrng.anu.edu.au/ran_hex.php
流:https://qrng.anu.edu.au/RainHex.php
二进制数
>编号:https://qrng.anu.edu.au/ran_bin.php
流:https://qrng.anu.edu.au/RainBin.php
它还包括对scientific explanation of the source of randomness的引用,以及它的实际示范,甚至一个specifically for dice.
替代方法,如果可验证性很重要
一种完全替代的方法:当最后期限落后时,检索外部受控的高流量交互式站点的主页,例如Stack Overflow的questions page.存储页面,使用MD5或SHA1哈希,并从中导出滚动条.
你可以:
>在快照时显示页面,以验证其工作的HTML
>它的HTML源码充满了时间戳,以验证几乎第二个的真实性和检索时间
>让人们根据这些验证自己的哈希
>保证值的随机性,因为在数学上无法预测您需要在像SO这样的站点上进行更改以触发给定的新哈希值
任何企图篡改这个系统的尝试,例如Jeff因为知道它生成的MD5哈希而重新定义一个旧页面,很容易被该网站的实时性质所破坏 – 这是所有人都可以看到的问题,最近到快照的时候.