网络上的熵来源
为了保证随机数发生器的诚实,这个想法是,如果用户愿意的话,他们可以验证这个数字实际上是从公共的熵源中产生的。 这使得系统,以确保它是用户的随机数已经不能由服务器选择。
$entropy = "what_do_you_think";
$md5 = md5($entropy);
/*take the first 10 hex characters of the md5 hash*/
$hex = substr($md5, 0, 9);
/*convert the hex to decimal*/
$dec = hexdec($hex);
/*use this decimal as a seed*/
srand($dec);
/*pick a random number between 0 and 9, ultimately seeded by the entropy*/
$rand = rand(0,9);
我的问题是:什么是一些良好的公共熵源(最好是不可变的和混乱的),并且绝对可以引用,它们可以串在一起并送入md5? 一些想法是特定的股票价格,温度(来自诚实的来源),比特币区块链中包含的哈希......
查看xkcd的geohashing算法。 我认为这几乎是你正在寻找的东西。
http://wiki.xkcd.com/geohashing/Implementations
地理散乱算法使用DOW Jones作为熵的来源。 本页讨论如何通过网络获得道琼斯指数的开盘价格。 http://wiki.xkcd.com/geohashing/Dow_Jones_Industrial_Average
但是我认为在BitCoin交易数据库中可以找到公开的,不可改变的和可验证的熵的最佳来源。 它分布广泛,不断验证,并有一个确定的协议。
从物理系获取它。
http://qrng.physik.hu-berlin.de/
http://qrng.physik.hu-berlin.de/download
要不就
http://www.random.org/bytes/
如果用户愿意,用户可以验证该数字实际上是从公共的熵源中产生的
他们如何做到这一点?
你是否允许他们实时访问系统的内存,以确保收集熵的程序的汇编是正确的而不是恶意的?
使用物理熵的安全价值在于它是不可预测的,即对于除收购方之外的任何人都不知道。 什么是使用熵可以提供给任何人的地步? 也可以打开Pi的打印输出到一百万个地方并选择一个起点。
除此之外,原则上没有办法确定服务器给你的随机数是否实际上是从它显然使用的熵源中获得的。
链接地址: http://www.djcxy.com/p/61921.html上一篇: Sources of Entropy on the Web
下一篇: Difference between java.util.Random and java.security.SecureRandom