ユーザ用ツール

サイト用ツール


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 23:11 by tosihisa@netfort.gr.jp