我看到在 kubernetes 集群中运行的容器内生成随机数的一些问题(重复值)。可能是容器内缺乏熵,或者可能是其他原因,在更高的层次上,但我想研究熵角,但我有几个问题无法找到答案。
跨容器和节点的 /proc/sys/kernel/random/entropy_avail 的值在 950 到 1050 之间 - 这是否足够好?rngtest -c 10000
</dev/urandom
返回相当不错的结果 - FIPS 140-2 成功:9987,FIPS 140-2 失败:13,但针对 /dev/random 运行它只是永远挂起。
容器中的 entropy_avail 值似乎遵循节点上的值。如果我cat /dev/random >/dev/null
在节点上执行,entropy_avail 也会在该节点上运行的容器内下降,即使docker
inspect
不表明 /dev/*random 设备是从节点绑定安装的。那么它们是如何关联的呢?一个容器可以消耗该节点上其他容器可用的熵吗?
如果 entropy_avail 在 1000 左右是值得关注的,那么增加该值的最佳方法是什么?似乎部署haveged
守护进程是一种方式(https://github.com/kubernetes/kubernetes/issues/60751)。这是最好/最简单的方法吗?
我在 google、stackoverflow 和 kubernetes github 问题中找不到答案。我在 kubernetes-users slack 频道中也没有得到任何回应,所以我希望这里有人可以对此有所了解。
正确的伪随机数生成是所有加密操作的基础,因此任何 kubernetes 用户都应该对答案感兴趣。
提前致谢。