Beaglebone 上 /dev/random 中的熵消耗

物联网 安全 硬件 linux
2021-06-01 07:43:00

我有一个带有 ARMv7 SoC 的 Beagleblone Black。/proc/cpuinfo说硬件是Generic AM33XX它运行 Debian 和 4.1.15-ti-rt-r40 内核。

作为测试制度的一部分,我进行了很多压力测试。Beagleboard 在/dev/random. 在阻塞模式下,读取少量字节需要几分钟。例如,生成 10 个字节需要 646 秒。

机器已rng-tools安装,通常保持/dev/random良好的工作状态。或者它在其他 Debian 平台上也是如此,比如我的 CubieTruck 和 Wandboard。我猜熵守护进程在这个平台上有一些问题。

这个问题有点广泛,因为我不确定该方法。我不知道我是否应该使用另一个包来确保熵,或者我是否需要另一个程序或驱动程序。或者也许是别的东西。

我的问题是,我如何/dev/random才能在 Beaglebone 上保持良好的工作状态?


Dmesg 显示了一个硬件随机数生成器:

[21.308396] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20

并且内核被配置为以模块的形式提供驱动程序:

$ cat /boot/config-4.1.15-ti-rt-r40 | grep HW_RANDOM_OMAP
CONFIG_HW_RANDOM_OMAP=m

$ uname -a
Linux beaglebone 4.1.15-ti-rt-r40 #1 SMP PREEMPT RT Thu Jan 7 23:32:08 UTC 2016armv7l GNU/Linux

$ cat /proc/cpuinfo
processor       : 0
model name      : ARMv7 Processor rev 2 (v7l)
BogoMIPS        : 996.14
Features        : half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x3
CPU part        : 0xc08
CPU revision    : 2

Hardware        : Generic AM33XX (Flattened Device Tree)
Revision        : 0000
Serial          : 0000000000000000
1个回答

我的本地解决方法是rng-tools直接从rc.local以下位置运行的

$ cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

if [ -e /usr/sbin/rngd ]; then
    /usr/sbin/rngd -r /dev/hwrng -f
fi

exit 0

还针对 Debian 提交了一个错误:问题 911043,rng-tools 在带有 OMAP hw rng 的 Beaglebone Black 上没有按预期执行

如果有人知道问题的真正解决方法,我将把问题悬而未决systemd


@MariusMatutiae在启动后如何运行命令?非常真实:

在 [systemd] 的情况下,您应该学习如何启动要由 systemctl 运行的服务,但这可能超出您对简单问题的讨价还价。

我已经浪费了 4 多个小时试图使用systemd方法和控件来完成这项工作我想我不应该感到难过,因为发行版无法使其正常工作。