====== 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 : 初版