该设备是 Cavium 的 Octeon,包含 RNG 硬件单元。操作系统显示当前熵池大小为 4096 字节,但entropy_avail
非常低。仅存在设备加密模块ansi_cprng.ko
,不.ko
存在其他相关的 RNG。此外,根据lsmod
,没有加载 RNG 相关模块,即使与 RNG 相关的内核配置设置如下;
CONFIG_CRYPTO_ANSI_CPRNG=m
CONFIG_CRYPTO_HW=y
CONFIG_CRYPTO_RNG=m
CONFIG_CRYPTO_RNG2=y
如何/dev/random
从 Octeon RNG 喂食并增加entropy_avail
?
答案1
这将构建octeon-rng
自动向内核熵池提供数据的驱动程序(通过调用devm_hwrng_register
)。
答案2
当两个 rng 模块 octeon-rng 和 rng-core 都加载时/dev/hwrng设备已创建,/sys/class/misc/hw_random/rng_current& /sys/class/misc/hw_random/可用将显示名称 octeon。然而另一个应用程序rng-工具是必须的。
命令;
rngd -o /dev/random -r /dev/hwrng
将从 RNG 提供内核熵并将 entropy_avail 提高到大约 3000 字节。
还可以通过命令进行FIPS140-2随机性测试的rngtest;
rngtest -c 1000 < /dev/random
话虽如此,但如果有人能说出来的话;
为什么在 octeon 上带有详细选项的 rngd 命令显示 RNG 是英特尔硬件RNG。
其次在 rngd 命令中,如果仅/dev/随机提到它是否也有效/dev/urandom。