我想知道对于普通 Linux 用户来说,从安全性或任何其他相关观点来看,在 /dev/random 中没有或几乎没有熵是否被认为是不好的。
编辑:我不需要生成随机数(我会使用 /dev/urandom 甚至密码生成和磁盘加密)。只是为了好玩,我有一个 bash 脚本,它可以从 /dev/random 生成随机字符的字符串,当然,在玩了一会儿之后,我在 /dev/random 中没有熵并且它会阻塞。在 IRC 上,有人告诉我这样做“不好”,但没有给我任何理由。是不是因为普通 Linux 用户会使用 /dev/random 自动生成随机内容?如果是,涉及哪些程序?
我也明白在 /dev/random 中没有熵会使数字的生成具有确定性。但同样,我的计算机(普通 Linux 用户)是否需要真正的随机数?
编辑 2:我刚刚在大约 3 分钟内每秒监视 /dev/random 中的熵级别,在那里我启动了我的 bash 脚本,该脚本使用熵在监视开始时生成一串随机字符。我做了一个阴谋。我们确实可以看到,熵水平以某种方式振荡,所以我电脑上的一些程序正在使用 /dev/random 来生成东西。有没有办法可以使用文件 /dev/random 列出所有程序?

我们还可以看到,一旦熵池被清空,产生“可接受水平”的熵只需要不到一分钟的时间。
熵/dev/random以相当慢的速度输入,所以如果你使用任何使用 的程序,/dev/random熵很低是很常见的。
即使您相信 Linux 对熵的定义,低熵也不是安全问题。/dev/random阻塞直到它满意它有足够的熵。使用低熵,您将得到应用程序等待您摆动鼠标,但不会丢失随机性。
事实上,Linux 对熵的定义是有缺陷的:它是一个极其保守的定义,它力求达到理论上无用的随机性水平。事实上,熵不会耗尽——一旦你有足够的,你就有了。不幸的是,Linux 只有两个接口来获取随机数:/dev/random,它在不应该阻塞的时候阻塞,以及/dev/urandom,它从不阻塞。幸运的是,在实践中,/dev/urandom几乎总是正确的,因为系统很快收集到足够的熵,之后/dev/urandom就永远可以了(包括生成加密密钥等用途)。
唯一/dev/urandom有问题的时候是系统还没有足够的熵时,例如在全新安装的第一次启动、启动 Live CD 或克隆虚拟机之后。在这种情况下,等到/proc/sys/kernel/random/entropy_avail达到 200 左右。之后,您可以随意使用/dev/urandom。
| 归档时间: |
|
| 查看次数: |
6417 次 |
| 最近记录: |