【发布时间】:2012-05-04 06:16:42
【问题描述】:
据我了解,PRNG 使用的种子会生成一系列并非真正随机的数字。是否有可能通过每次使用不同的种子一遍又一遍地重用 PRNG 来创建一个真正的随机数生成器。种子可以从开发/随机或当前时间或时钟滴答中提取。如果没有,那么是否有真正的随机数生成器在软件中实现?
谢谢
【问题讨论】:
标签: random cryptography seed prng
据我了解,PRNG 使用的种子会生成一系列并非真正随机的数字。是否有可能通过每次使用不同的种子一遍又一遍地重用 PRNG 来创建一个真正的随机数生成器。种子可以从开发/随机或当前时间或时钟滴答中提取。如果没有,那么是否有真正的随机数生成器在软件中实现?
谢谢
【问题讨论】:
标签: random cryptography seed prng
如果你每次需要一个随机数时都重新播种 PRNG,你可以去掉中间人,直接使用种子作为随机数。
但是你所说的都是在实践中完成的。这些是所谓的密码安全 PRNG,它们被用于许多操作系统中,为密码应用程序提供随机数。它们经常从熵池中重新播种,并且被设计为很难从知道过去的数字中计算出下一个数字(例如,对于 LCG 来说这是非常微不足道的事情)并且也很难计算过去当前号码的数字。
这种方法的好处是您不会阻止生成随机数。系统中的熵是一种有限资源,只能来自外部来源,因此通过使用 CSPRNG,您可以安全地拉伸它,同时不会危及安全性。
【讨论】:
简单的答案是没有这样的实现,因为据我所知,这根本不可能。要生成真正的随机数,您需要像 hardware random number generator 这样的外部熵源。
【讨论】:
时钟不是很随机,但是 /dev/random 有一些随机性 - 它实际上就像一桶随机性,您可以根据随机性产生和消耗的速率来消耗它。如果你使用 dev/random,那么你就没有使用 RNG。从 /dev/random 播种 RNG 是多余的。
【讨论】:
Intel is working 如果按照宣传的那样工作,可能会真正具有开创性。它实际上会使硬件 PRNG 变得多余。
【讨论】: