Arch Linux 上可用的低(?)熵?

Arch Linux 上可用的低(?)熵?

我只是在让 Pidgin 运行 OTR 时遇到了一些问题,因为 Pidgin 在每次尝试生成我的私钥时都会挂起。 相当旧的博客文章通过“将 /dev/urandom 馈送到 /dev/random 的熵池”,为我指明了正确的方向(或者更确切地说“允许我生成密钥”)。

当我这样做时watch cat /proc/sys/kernel/random/entropy_avail,我看到数字< 50。在将 /dev/urandom 输入熵池时,这个数字上升到 ~2000,然后我能够生成我的密钥。

我的熵值 < 50 位(?)正常吗?我使用的桌面系统基本上运行着 Firefox、Thunderbird 和 Pidgin,从 LAN 传输音乐。

无法为 OTR 创建密钥是 Pidgin 中的错误还是我的 Arch Linux 安装造成了低熵?

PS:我知道这个答案解释了关于熵和 (P)RNG 的许多误解

更新:已经存在未解决的错误OTR 错误追踪器并在发射台关于这个问题。在编辑器中编写随机文本也有助于生成密钥。

答案1

“输入/dev/urandom熵池/dev/random”是作弊——你假装提供新的熵,而实际上数据是从 RNG 的当前状态确定性导出的。幸运的是,正如你所指出的,你欺骗的规则是无用的:不管 Linux 内核如何假装,熵实际上并没有减少。

Linux 的低熵/dev/random估计很常见,而且几乎总是误报:该估计过于保守。

/dev/urandom密钥生成是安全的,所以 Pidgin 应该使用/dev/urandom(不会阻塞)而不是/dev/random(可以阻塞,而且经常阻塞)。

只有一种情况下/dev/random阻塞是合法的,因为系统确实没有足够的熵:当系统太新而无法累积熵时。 Linux 系统通常会为下次重新启动保存熵,因此实际上真正的低熵仅发生在两种情况下:

  • 在全新安装上——这对于在第一次打开时生成密钥的嵌入式设备来说尤其是一个问题;
  • 在实时系统上。

归咎于何处并不是一个有效的考虑,但如果你必须这样做:Arch Linux 并且你是完全无辜的。洋泾浜应该使用/dev/urandom或至少提供一种方式,因此它受到部分指责。 Linux 内核确实应该提供一个接口,保证提供加密质量的随机性,并且只有在真正缺乏熵时才会阻塞(就像 FreeBSD 的那样/dev/random)。

相关内容