【问题标题】:Truly random number generator真正的随机数发生器
【发布时间】:2012-05-04 06:16:42
【问题描述】:

据我了解,PRNG 使用的种子会生成一系列并非真正随机的数字。是否有可能通过每次使用不同的种子一遍又一遍地重用 PRNG 来创建一个真正的随机数生成器。种子可以从开发/随机或当前时间或时钟滴答中提取。如果没有,那么是否有真正的随机数生成器在软件中实现?

谢谢

【问题讨论】:

    标签: random cryptography seed prng


    【解决方案1】:

    如果你每次需要一个随机数时都重新播种 PRNG,你可以去掉中间人,直接使用种子作为随机数。

    但是你所说的都是在实践中完成的。这些是所谓的密码安全 PRNG,它们被用于许多操作系统中,为密码应用程序提供随机数。它们经常从熵池中重新播种,并且被设计为很难从知道过去的数字中计算出下一个数字(例如,对于 LCG 来说这是非常微不足道的事情)并且也很难计算过去当前号码的数字。

    这种方法的好处是您不会阻止生成随机数。系统中的熵是一种有限资源,只能来自外部来源,因此通过使用 CSPRNG,您可以安全地拉伸它,同时不会危及安全性。

    【讨论】:

    • 嗨 Joey,CSPRNG 还在 PRNG 附近,有没有真正随机的东西?为什么 CSPRNG 实际上不是真正随机的?从解释来看,对我来说,这听起来像是基于这个熵池的真正随机
    • 当然,您使用实际随机性,但是您从种子中生成了一些数字,这当然是一个确定性的过程,即使一个很难逆转的过程。正确使用此类 RNG 需要经常重新播种,以避免长时间耗尽单个种子。
    【解决方案2】:

    简单的答案是没有这样的实现,因为据我所知,这根本不可能。要生成真正的随机数,您需要像 hardware random number generator 这样的外部熵源。

    【讨论】:

      【解决方案3】:

      时钟不是很随机,但是 /dev/random 有一些随机性 - 它实际上就像一桶随机性,您可以根据随机性产生和消耗的速率来消耗它。如果你使用 dev/random,那么你就没有使用 RNG。从 /dev/random 播种 RNG 是多余的。

      【讨论】:

        【解决方案4】:

        Intel is working 如果按照宣传的那样工作,可能会真正具有开创性。它实际上会使硬件 PRNG 变得多余。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-12
          • 1970-01-01
          • 1970-01-01
          • 2016-03-08
          • 1970-01-01
          • 2021-10-28
          • 2015-01-07
          • 2023-03-15
          相关资源
          最近更新 更多