“urandom” 是否与“random”具有相同的熵?

“urandom” 是否与“random”具有相同的熵?

使用的熵池 /dev/random 和 /dev/urandom 相同吗?

我想要

mknod /dev/random 1 9

为了取代慢速随机,我认为当前的熵已经足够随机了,如果 urandom 基于相同的熵,并且所有成功的随机数都基于该熵生成,那么我认为不会有任何漏洞。

答案1

归根结底,urandom你得到的结果可能与具体实现有关,但手册页表示如果有可用熵,它将使用,并且只有在熵用尽时才会返回到 PRNG。因此,如果您有足够的熵,您应该会得到与使用一样好的结果random

,这是一个很大的但是:你必须假设你得到的是一个纯粹的伪生成值,根本没有真正的熵,因为熵池可能为空。因此,你必须将其视为urandomPRNG,即使在任何给定情况下它可能表现得更好。是否这样做取决于不确定(在您的代码范围内)并且您必须预料到最坏的情况会发生。毕竟,如果您确定池中有足够的熵,您会使用random,对吗?因此使用的行为urandom意味着您可以接受 PRNG,这意味着理论上可能破解结果。

答案2

这里的问题不是 /dev/urandom 是 PRNG。问题在于 /dev/urandom 不会阻塞,直到收集到足够的熵来为其提供种子。

因此,您不想在 Linux 上使用 /dev/random 或 /dev/urandom。您需要一些可以替代这些的东西,无论是内核模块还是守护进程。

另一个选择是切换到 FreeBSD,其中 /dev/random 和 /dev/urandom 都可以执行您想要的操作,即,它们提供加密性强的伪随机数并阻止,直到它们被播种。

答案3

urandom使用相同的熵池random,并且如果此时池中有足够的熵,它将返回相同类型的结果random

然而,你可能会惊讶于如果可以,而且这不是你能直接控制的。大多数计算机都没有配备可以持续收集任何可靠熵的硬件,从非恒定但可靠的来源收集足够的熵可能需要一段时间。当熵不够时,就会求助于urandomPRNG,并带来所有问题(包括可预测性)。

对于很多应用程序(例如大多数游戏)来说,这已经足够好了。但对于一些重要的应用程序来说,情况并非如此,我向你保证,你的机器即使您没有意识到/使用它们,也可以在后台使用这些应用程序。因此,随处使用并不是一个好主意urandom

好奇问一下,是什么让你觉得random这么慢?你的电脑在哪里被锁住了?

相关内容