【问题标题】:How to uninitialize the entropy of /dev/urandom in C?如何在 C 中取消初始化 /dev/urandom 的熵?
【发布时间】:2015-06-14 00:58:27
【问题描述】:

有没有办法让 /dev/urandom 的熵保持未初始化状态?

我的目标是模拟初始化或简单地取消初始化 /dev/urandom。我该怎么做?

编辑:我看到我的问题被否决了。我相信这样做的人有正当理由。我花了一些时间在网上搜索答案,但我没有找到任何东西。

【问题讨论】:

  • 你不能。在不知道您这样做的目的的情况下,没有更好的答案。
  • @indiv 感谢您的澄清。我想挑起一个熵没有被初始化导致随机数生成失败的情况。所以我想做的事是不可能的?
  • 顺便说一句,Linux 现在有一个getrandom 系统调用,可以替代/dev/urandom 的使用。如果熵池尚未初始化,它可能会阻塞(一次)。这通常只会在早期启动期间发生。 OpenBSD 有一段时间有类似的getentropy
  • @Greek2015:请注意,/dev/urandom永远无法生成伪随机序列,即使没有熵。您可能会得到一个可预测的序列,但对于您对其进行的任何统计测试来说,它都会显得随机......
  • @indiv 谢谢,你的回答很有趣。我怎样才能使没有熵?我知道这对安全很重要,这就是我对它感兴趣的原因。

标签: c random system-calls libc


【解决方案1】:

由于 /dev/random 和 urandom 对安全功能至关重要,因此允许篡改它们将与其目的相矛盾。但是您可以添加自己的驱动程序,或者只是将调用替换为虚拟对象(或使用虚拟对象中的命名管道进行测试)。

注意:不要在生产系统上更换驱动程序。

【讨论】:

  • 如何用假人称呼他们?
  • @Greek2015:虚拟函数。或者带有虚拟伪随机生成器的 FIFO/命名管道。取决于您要模拟的级别。
  • @Greek2015:将/dev/random/dev/urandom的拼写改为/dev/zero;这会给你很好的非随机数据。
猜你喜欢
  • 1970-01-01
  • 2011-02-04
  • 1970-01-01
  • 2016-12-17
  • 1970-01-01
  • 1970-01-01
  • 2015-02-17
  • 2020-09-15
  • 1970-01-01
相关资源
最近更新 更多