- 现代 Linux 系统,尤其是无头虚拟系统,通常具有浅 /dev/random 熵池,这可能导致软件阻塞或无法运行(例如,FIPS 模式下的 Tripwire)
- 虽然许多人 同意 /dev/urandom 是 首选,但许多软件包只是默认为 /dev/random
- 将单个软件包指向 /dev/urandom 可能是可能的,但这代表了维护问题(例如,您是否记得在软件包更新后重新进行自定义?)或需要重新编译(并且您有源代码吗?)
所以我的问题是:缺乏合法的(硬件)熵源,使用rng-tools(来自 /dev/urandom)或haveged 之类的东西定期增加 /dev/random 是否合理?
让程序依赖和/或等待 /dev/random 的浅熵池,或者纯粹由软件引入(可以说)不太健壮的随机性更危险?
当我说“常规”时,我的意思是“我所有的服务器,在启动时启动,一直运行,只是为了安全。”
我不是在质疑 /dev/urandom 是否足够强大 - 根据上面的引用,几乎每个人都同意这很好(好吧,不是 每个人,但仍然如此)。我想确定使用类似守护进程rngd
或haveged
将随机性恢复到 /dev/random - 即使它们基于 /dev/urandom 像 rngd 在大多数情况下 - 不会引入弱点。(出于维护和透明度的原因,我不喜欢仅仅解决问题。)
(虽然这个问题可能被认为是在虚拟机上使用 rng-tools 安全吗?这个问题的答案似乎与普遍享有盛誉的声音相悖,即 /dev/urandom 就足够了,所以从某种意义上说,这是在寻求澄清至于将在何处引入漏洞(如果同意该答案)或实际上是否引入了漏洞(如果没有)。)
(相关阅读——Potter 和 Wood 的 BlackHat 演讲“管理和理解熵的使用”让我想到了这个)