/dev/urandom 中的字母“u”是什么意思?

Tom*_*ale 93 linux devices history random

我知道读取到/dev/random可能会阻塞,而读取/dev/urandom则保证不会阻塞。

这封信u从何而来?它意味着什么?

用户空间?解锁?微?

更新:

根据问题的最初措辞,对于/dev/randomvs的有用性存在一些争论/dev/urandom关于 /dev/urandom的链接Myths已在下面发布了 3 次,并在何时使用 /dev/random vs /dev/urandom问题的回答中进行了总结。

Tom*_*ale 95

无限。

在Linux中,比较核心的功能命名random_read,并random_read_unlimited 表示该信的词源uurandomunlimited

第 114 行证实了这一点:

/dev/urandom 设备没有这个限制 [...]

更新:

关于哪个首先适用于 Linux,/dev/random或者/dev/urandom@Stéphane Chazelas 给出了带有原始补丁帖子,@ StephenKitt 表明它们是同时引入的

  • 历史的。起初只有有限/阻塞版本存在。类似的“非无限”函数称为`random_read` :) (13认同)
  • 我确实通过维基百科找到了其中一个链接,但我是直接引用来源而不是引用维基百科。我认为这类似于通过 google 查找某些内容,而不是引用 google ......除非我有一些关于在 StackExchange 上引用的知识? (10认同)
  • 那么为什么`/dev/random` 没有命名为`/dev/lrandom`?:) (7认同)
  • 另见原实现作者于 1995 年在 usenet 上发送的 [补丁](https://groups.google.com/forum/message/raw?msg=sci.crypt/d2TXVQOXd5U/499jOckdUuwJ) (7认同)
  • @TomHale 关于`random` 和`lrandom` 的历史论据并不完全成立,因为[同时]引入了`random` 和`urandom`(http://repo.or.cz/davej-history. git/commitdiff/88d15e9d250c95e23194c29888d5ca4f86e37581#patch18)在Linux内核中。 (5认同)
  • @TomHale 2007 是将 1.3.30 内核导入您所指的历史 git 存储库的日期,而不是最初将补丁应用于内核的日期。1.3.30 于 1995 年发布,因此它早于 Solaris 7。(当时不存在 git。) (2认同)

小智 20

这取决于您所谈论的“Unix”系统。

在 FreeBSD 上,/dev/urandom 和 /dev/random 是同一个设备。字母 u 现在是为了向后兼容而存在的历史遗产。在启动时,它们会阻塞直到收集到足够的熵,然后再不会阻塞。有关详细信息,请参阅有关 urandom 的神话

在现代 Linux 世界中(从内核 4.8 开始),两个设备都来自同一个 CSPRNG,所以唯一的区别是有些人推测存在攻击。这种攻击就像FTL [Faster than Light]旅行。推测容易,实际设计相当困难。

TLDR 只是使用 /dev/urandom。

  • 从您的链接中,有趣的是,`FreeBSD 做了正确的事情:它们在 /dev/random 和 /dev/urandom 之间没有区别,两者都是相同的设备。在启动时 /dev/random 阻塞一次,直到收集到足够的起始熵。然后它就不会再阻塞了。` (2认同)