【问题标题】:What is the impact of virtualisation on cryptographically strong random number generators?虚拟化对加密强随机数生成器有什么影响?
【发布时间】:2010-09-18 23:52:12
【问题描述】:

/dev/random 和 /dev/urandom 使用环境噪声来产生随机性。

对于虚拟化服务器,一个硬件配置上可以有多个操作系统实例。这些操作系统都将从相同的环境噪声中获取随机性。

这是否意味着作为一个组,随机数生成器的强度会降低,因为所有操作系统实例都基于相同输入的计算?或者,是否已将环境噪声隔开以不发生共享?

如果后者是真的,我可以看到这会降低 /dev/urandom 的有效性,因为它重用了其内部池,并且环境输入更少,从而降低了熵。

/dev/random 应该没问题,因为它会阻塞直到获得足够的噪声...除非当然操作系统实例都共享输入。

那么,问题是:虚拟化对加密强随机数生成器有什么影响,特别是那些使用环境噪声的生成器?

【问题讨论】:

    标签: cryptography virtualization random


    【解决方案1】:

    根据定义,加密强 PRNG 的随机性不应受到虚拟化的影响。正如您所提到的, /dev/random 和 /dev/urandom [ref: http://en.wikipedia.org/wiki/Urandom/] 之间的区别在于,如果系统收集的熵不足以产生所需数量的随机数据,则 /dev/random 上的读取操作将阻塞。您也可以写入到 /dev/random 以将您自己的数据混合到熵池中。

    【讨论】:

      【解决方案2】:

      谢谢。

      据我了解,依赖网络 I/O 获取熵的系统容易受到中间人攻击。我发现follow article 讨论了适当的熵源。他们的建议是从 Linux 内核中删除网络 I/O,因为它的敏感性。

      我认为这意味着有可能在虚拟化环境中利用通用硬件。如果使用网络 I/O,机会就会增加。否则,它足够低,除了最安全的应用程序之外,其他所有应用程序都不会关注它。在这种情况下,托管您自己的应用程序可能更安全。

      【讨论】:

        【解决方案3】:

        我无法快速找到任何参考资料,但在我看来,熵来自设备的内核数据结构,而不是实际设备本身。由于无论虚拟化如何,这些都是独立的,因此我怀疑答案并不多。

        [编辑] 在查看内核源代码(实际上是补丁历史)之后,看起来 Linux 至少从键盘按下、鼠标活动、中断时间(但不是所有中断)和块设备请求完成时间收集熵.在虚拟化系统上,我怀疑鼠标/键盘事件会非常低,因此不会对收集的熵做出贡献。据推测,这会被额外的网络 I/O 中断活动所抵消,但目前尚不清楚。在这方面,我认为它与非VM服务器没有太大区别。

        【讨论】:

          猜你喜欢
          • 2021-09-10
          • 1970-01-01
          • 2013-04-21
          • 1970-01-01
          • 2011-11-28
          • 2015-09-09
          • 2019-06-24
          • 1970-01-01
          • 2012-11-06
          相关资源
          最近更新 更多