Linux内核使用哪些熵源?


14

man 4 random 对Linux内核熵源的描述非常模糊:

随机数发生器将来自设备驱动程序和其他来源的环境噪声收集到一个熵池中。

Linux随机数生成器中的熵转移论文也没有那么具体。它列出:

  • add_disk_randomness()
  • add_input_randomness()
  • add_interrupt_randomness()

这些functino来自random.c,其中包含以下注释:

来自环境的随机性来源包括键盘间定时,某些中断产生的中断间定时以及其他事件(a)不确定性,(b)外部观察者难以测量。

再往下,有一个功能add_hwgenerator_randomness(...)指示对硬件随机数生成器的支持。

所有这些信息都比较模糊(或者,对于源代码,需要对Linux内核有深入了解才能理解)。实际使用的熵源是什么,Linux内核是否支持开箱即用的任何硬件随机数生成器?

Answers:


4

如今,大多数商用PC硬件都有一个随机数生成器。威盛半导体已经将它们放在处理器中已经有很多年了。Linux内核为此提供了via-rng驱动程序。我drivers/char/hw_random/在最新源代码树的目录中计算了34个源模块,包括Intel和AMD硬件以及具有TPM设备的系统的驱动程序。您可以运行rng守护程序(rngd)将随机数据推入内核熵池。


这似乎是我一直在寻找答案的重要部分。我一到这,便会更深入地了解其中包含的内容。再加上问题中已经包含的信息,这感觉像是一个完整的熵源列表。
詹斯·埃拉特

并查看特定PC运行时可用的功能cat /sys/devices/virtual/misc/hw_random/rng_available
hlovdal

0

是的,它确实支持开箱即用的硬件熵生成器。这对于每秒启动大量同时连接(例如Gmail,Facebook,Microsoft等)的高负载SSL服务器来说是必需的。对于家庭服务器或小型组织服务器,实际上并没有必要。请记住,硬件熵生成器通常使用PCI接口,那里没有什么花哨的东西,因此可以轻松地对其进行支持。不确定是否有需要关闭源代码驱动程序的专有硬件熵生成器,可能不是,因为这不是很困难,也不是一个非常赚钱的行业(与图形卡不同)。

http://en.wikipedia.org/wiki/Hardware_random_number_generator


2
高容量服务器比低容量服务器不需要更多的硬件RNG。一旦为机器播种了足够的熵,就可以永久地在PRNG上运行(或至少数十亿年,这在实践中是相同的)。真正需要硬件RNG的计算机是嵌入式设备,它们在关机时无法安全地保存其当前RNG状态。
吉尔斯(Gillles)“所以-别再作恶了” 2014年

@Gilles:这对Linux以外的其他系统有效吗?我知道Linux会这样做,但是从未听说过* BSD,包括OS X(也没有Windwos)这样做。
詹斯·埃拉特

1
@JensErat我不知道。它易于实现且非常有用,因此如果BSD不这样做,我会感到惊讶。
吉尔斯(Gilles)'所以
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.