beaglebone:20200224_hwrng
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 </dev/random rngtest 2-unofficial-mt.14 Copyright (c) 2004 by Henrique de Moraes Holschuh This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. rngtest: starting FIPS tests... rngtest: bits received from input: 20000032 rngtest: FIPS 140-2 successes: 1000 rngtest: FIPS 140-2 failures: 0 rngtest: FIPS 140-2(2001-10-10) Monobit: 0 rngtest: FIPS 140-2(2001-10-10) Poker: 0 rngtest: FIPS 140-2(2001-10-10) Runs: 0 rngtest: FIPS 140-2(2001-10-10) Long run: 0 rngtest: FIPS 140-2(2001-10-10) Continuous run: 0 rngtest: input channel speed: (min=709.788; avg=877.696; max=1237.722)Kibits/s rngtest: FIPS tests speed: (min=2.494; avg=10.879; max=11.623)Mibits/s rngtest: Program run time: 24012010 microseconds
https://wiki.archlinux.jp/index.php/Rng-tools によると,1000個のテストでは少し程度通らない場合があるようですが,2回試して FIPS 140-2 failures:0 でした.
変更履歴
* 2020-2-24 : 初版
beaglebone/20200224_hwrng.txt · 最終更新: 2020-02-24 14:11 by tosihisa@netfort.gr.jp