====== BeagleBoneでハードウェア乱数を使ってみる ======
* ハードウェア:BeagleBone Green Wireless
* Linux 情報は以下の通り
$ uname -r
4.19.94-ti-r35
$ cat /etc/debian_version
10.3
===== ハードウェア乱数が使えるかどうかの確認 =====
$ zcat /proc/config.gz | grep -i hw_random
CONFIG_HW_RANDOM=y
# CONFIG_HW_RANDOM_TIMERIOMEM is not set
CONFIG_HW_RANDOM_OMAP=y
CONFIG_HW_RANDOM_VIRTIO=m
CONFIG_HW_RANDOM_TPM=y
ハードウェア乱数が使えそうです.
===== rng-tools のインストール =====
$ sudo apt-get install rng-tools
インストールできたら,動作状態を確認します.
$ sudo systemctl status rng-tools.service
● rng-tools.service
Loaded: loaded (/etc/init.d/rng-tools; generated)
Active: active (running) since Mon 2020-02-24 22:43:38 JST; 2min 39s ago
Docs: man:systemd-sysv-generator(8)
Process: 2162 ExecStart=/etc/init.d/rng-tools start (code=exited, status=0/SUCCESS)
Tasks: 4 (limit: 1024)
Memory: 292.0K
CGroup: /system.slice/rng-tools.service
└─2164 /usr/sbin/rngd -r /dev/hwrng
Feb 24 22:43:38 beaglebone systemd[1]: Starting rng-tools.service...
Feb 24 22:43:38 beaglebone rng-tools[2162]: Starting Hardware RNG entropy gatherer daemon: rngd.
Feb 24 22:43:38 beaglebone systemd[1]: Started rng-tools.service.
Feb 24 22:43:38 beaglebone rngd[2164]: rngd 2-unofficial-mt.14 starting up...
Feb 24 22:43:38 beaglebone rngd[2164]: entropy feed to the kernel ready
haveged を停止します.
$ sudo systemctl stop haveged.service
$ sudo systemctl disable haveged.service
再起動して,エントロピーの値を調べてみます.
$ cat /proc/sys/kernel/random/entropy_avail
2086
https://archlinuxjp.kusakata.com/wiki/Haveged によると,この数値が1000以下だと暗号処理などで十分なエントロピーが貯まるまで止まるようですが,2000を超えているので問題なさそうです.
乱数のテストをしてみます.
$ rngtest -c 1000
https://wiki.archlinux.jp/index.php/Rng-tools によると,1000個のテストでは少し程度通らない場合があるようですが,2回試して FIPS 140-2 failures:0 でした.
===== 変更履歴 =====
* 2020-2-24 : 初版