- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在使用 /dev/urandom
为我的程序生成随机数据。我了解到 /dev/random
可以为空,因为与 /dev/urandom
不同,它在生成的字节数不足时不使用 SHA。 /dev/random
使用“内核熵池”。显然它依赖于键盘计时、鼠标移动和 IDE 计时。
但这究竟是如何工作的呢?
难道不能“喂”熵池使/dev/random 输出可预测吗?
最佳答案
您所说的很准确,是的,理论上可以将熵输入 /dev/random
,但是您需要为此控制很多内核“噪声”源是重要的。您可以查看 random.c 的来源, 查看 /dev/random
从哪里获取噪音。基本上,如果您控制了大量的噪声源,那么您可以猜测其他噪声源对熵池的贡献。
因为 /dev/urandom
是 Hash chain从 /dev/random
播种,那么如果你知道种子,你实际上可以预测下一个数字。如果您对熵池有足够的控制权,那么从 /dev/urandom
的输出中您可能能够猜到这个种子,这将使您能够预测来自 /的所有下一个数字dev/urandom
,但只有在你保持 /dev/random
耗尽的情况下,否则 /dev/urandom
将被重新播种。
话虽如此,我还没有看到任何人真正做到这一点,即使在受控环境中也是如此。当然这不是保证,但我不会担心。
所以我宁愿使用 /dev/urandom
并保证我的程序在等待熵时不会阻塞,而不是使用 /dev/random
并询问用户做一些傻事,比如移动鼠标或敲击键盘。
我认为你应该阅读 On entropy and randomness来自 LWN,希望它能平息你的忧虑 :-)。
如果你仍然担心,那就给自己买一个HRNG .
编辑这是关于熵的一个小注释:
我认为熵的概念通常很难掌握。关于Wikipedia有一篇文章有更多信息.但基本上,在这种情况下,您可以将熵理解为随机性。
所以我怎么看,你有一大袋彩色球,这个袋子里的熵越高,就越难预测从袋子里抽出的下一个颜色。
在这种情况下,您的熵池只是一堆随机字节,其中一个不能从前一个或任何其他字节派生而来。这意味着你有高熵。
关于linux - 内核熵池是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19981189/
我们有一个 WPF 应用程序,允许用户下载加密内容,并且我们希望提供离线解密该内容的功能。我的想法是下载 key 并使用 DPAPI 存储它们,但我在使用熵参数时遇到了问题。 是否有任何方法可以生成熵
在 php.ini 的 session 部分,有一个名为 session.entropy_length 的指令。 我知道它用于使 session ID 的生成“更加随机”。 它如何使 session
在 php.ini 的 session 部分,有一个名为 session.entropy_length 的指令。 我知道它用于使 session ID 的生成“更加随机”。 它如何使 session
我使用决策树算法来解决二元分类问题,目标是最大限度地减少分类的误报(最大化阳性预测值)(诊断工具的成本非常高) 。 有没有办法在基尼/熵分割标准中引入权重来惩罚误报错误分类? Here例如,修改后的基
我想检查我的 std::random_device 实现是否具有非零熵(即非确定性),使用 std::random_device::entropy() 函数。然而,根据至cppreference.co
我在 tensorflow_decision_forests 文档 ( https://github.com/tensorflow/decision-forests ) ( https://www.t
我是一名优秀的程序员,十分优秀!