在Linux上将/ dev / random链接到/ dev / urandom是否错误?


13

我目前正在gpg --genkeyLinux VM上进行测试。不幸的是,该软件似乎依赖于/dev/random收集熵,并礼貌地要求用户在密码随机输入的屏幕之后手动键入屏幕,因此最终可能会生成密钥,而且我发现没有命令行参数可以告诉用户使用另一个文件作为熵源(该视频中的家伙遇到了同样的问题...)。

但是,用户应该可以自由选择使用它,/dev/urandom因为它没有任何问题。它主要是让人回想起较旧的PRNG算法,从加密的角度来看,这些算法较弱。例如,尽管NetBSD联机帮助页承认该区别在启动初期仍可能有用,但它描述了诸如“民俗学”“仅防御幻想威胁模型的假想理论”之类的区别。既没有人同意此命令所要求的熵的数量,也没有人同意GPG手册“请不要使用此命令,除非您知道自己在做什么,否则可能会删除系统中的宝贵信息!” )。

我已经读过有关人们安装rngd守护程序并将其配置为/dev/urandom用作馈送的熵源的文章/dev/random,但是我发现这种做法非常肮脏。

我试图通过以FreeBSD方式解决该问题,方法是删除/dev/random并链接到该问题/dev/urandom

rm /dev/random
ln -s /dev/urandom /dev/random

我将其视为告诉“我信任/dev/urandom作为熵源”的设置

我担心会遇到某种错误,但这似乎可以提供预期的结果,因为命令现在可以立即成功返回。

我的问题是:在FreeBSD系统上默认情况下在Linux系统上进行链接有没有任何已知,实用和错误的副作用?/dev/random/dev/urandom还是可以设想永久设置此设置(例如,在启动过程结束时在脚本中进行设置),以防由于/dev/random锁定某些服务而导致重复性问题?

Answers:


2

请参阅有关urandom的神话,没有对/ dev / urandom的已知攻击,也不会对/ dev / random构成攻击。Linux系统的主要问题是在克隆并作为多个VM运行时,克隆后没有重置保存的熵池。那是一个与您想要的东西相切的极端案例。


0

一件不同的事情/dev/random是,在使用了熵池之后,它将停止输出。尝试这个:

$ cat /dev/random
(a few short lines of gibberish)^C
$ 

/dev/urandom但是将重用同一池以继续输出。如下所示:

$ cat /dev/urandom
(tons of gibberish fills the screen)^C
$

(当您尝试放置这些特殊设备时,提示可能会混乱。只需键入reset并输入,您的终端就会恢复正常)

使用/dev/urandom时,你只需要填写一些与“randomish”位恒定的流量。使用/dev/random为您需要绝对的随机密钥。


3
OP的问题是:在FreeBSD系统上默认情况下,在Linux系统上将/ dev / random链接到/ dev / urandom是否存在任何已知,实用和错误的副作用?
反模式

有趣的是,如果差异如此明显,则不应将它们链接在一起。在启动后,大多数其他讨论最终都达成共识,但这种行为可能表明存在更长久的差异。
KalleMP '16

-2

在Linux中,/dev/random提供高质量的随机位。它们源自机器外部不可预测且不可重复的来源。与此相反,/dev/urandom使用相同的随机数据作为/dev/random(如果有的话),如果没有,它采用了伪随机数发生器,这是确定性的。在大多数情况下,它是不可预测的足够了,但不是非常苛刻的像加密的应用程序,以及用于创建像GPG长寿命按键要少得多。



@吉尔斯取决于您的偏执程度。对于GPG,每个人都(间接地)受到您密钥的影响。
vonbrand '16

5
如果您不信任/dev/urandom,您也没有理由信任GPG。
吉尔(Gilles)'所以

3
@vonbrand:根据我的偏执程度,如果我必须在经过数学检查的PRNG中进行选择以产生随机性,或者不得不在用户键入全屏垃圾“ asdfghasdfghasdfgh”之间进行选择,那么我将选择软件PRNG。我理解您的观点,即计算机不善于产生随机性,但人类却更糟糕。但是,回到我的问题之外,除了urandomvs. random辩论之外,您是否确认用/dev/random链接替换文件应该没有其他副作用,并且可以替代rngd我提到的技巧?
WhiteWinterWolf

2
错了 他们使用SAME RNG,但如果它猜测没有足够的熵,则使用随机块。
Duncan X Simpson
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.