Access to the BBB's RNG

I’m currently using a Raspberry Pi for a project that needs a decent random number generator and it is working quite nicely. I’m looking to put the project on other units and trying to decide whether to just get more rPis or try a BBB for the extra CPU power (it’ll be running headless, so the Pi’s better graphics capability is not significant).

Is the RNG in the BBB’s chipset (the spec sheet from TI says it has one) easily accessible under Linux (the Pi’s is exposed as /dev/hwrng once the relevant module is loaded - is it that simple here too)? If so, at what sort of rate does it spit out entropy?

The RPi pushes out far more random bits than I currently need (~550,000 bits/sec, and they passed every test for “true randomness” I’ve thrown them at) so I suppose I could ferry “spare” entropy to BBB units over the network if needed, but that feels like an unnecessary hack.

Very good question actually that I would like to know myself. I did a quick ls -al /dev/ and saw nothing.

However, I know there are random number drivers in the kernel ( or at least there used to be ) that I am not sure if I have modules compiled for or not. Statically, or in module form. Also I have no idea of how close Rasbian is to Debian, but Debian wheezy is what I run on my BBB’s here.

I will poke around a bit to see if there is something I can dig up, or maybe I’ll recompile from source again just to see. In the meantime perhaps someone in the know will speak up.

Ok so doing a quick google search i ran into one of my favorite guide sites here http://www.howtoforge.com/helping-the-random-number-generator-to-gain-enough-entropy-with-rng-tools-debian-lenny (howtoforge)

and, checking for a package now . . .

root@arm:~# apt-cache search rng-tools
rng-tools - Daemon to use a Hardware TRNG

The package exists, so now all “we” need is someone who knows the hardware / kernel well to say yes/no. I would assume yes, it would work fine, but I have been wrong before making such assumptions.

Ok, I’m an idiot.

/dev/random/ and /dev/urandom/ both exist on the BBB with Debian wheezy as “stock”. The same for Angstrom with kernel 3.8.8 according to the rootfs on my BBB’s emmc. I mistakenly made the assumption . . . that you could configure rng-tool to use which ever /dev/directory you wanted, but that is not exactly the case.

Anyway, still may be possible, and I will have to look into my build config file to figure that out. Maybe.

Took me a while to remember how to check . . .

william@support:~/debian/linux-dev/KERNEL$ grep -i RNG /home/william/debian/linux-dev/KERNEL/.config
CONFIG_CARL9170_HWRNG=y
CONFIG_B43_HWRNG=y
CONFIG_B43LEGACY_HWRNG=y
CONFIG_CRYPTO_RNG2=y

CONFIG_CRYPTO_ANSI_CPRNG is not set

Took me a while to remember how to check . . .

william@support:~/debian/linux-dev/KERNEL$ grep -i RNG
/home/william/debian/linux-dev/KERNEL/.config
CONFIG_CARL9170_HWRNG=y

Thats for atheros stuff

CONFIG_B43_HWRNG=y
CONFIG_B43LEGACY_HWRNG=y

and that for broadcom hw.

CONFIG_CRYPTO_RNG2=y
# CONFIG_CRYPTO_ANSI_CPRNG is not set

so nothing for the am3359.

As the TRM doesn't say anything besides that it exist, I assume you need to sign an NDA if you want to write a driver.

But you could look at

http://comments.gmane.org/gmane.linux.ports.arm.omap/102520

maybe that helps (if you can compile a kernel yourself)

Regards,

Alexander Holler